Git Context Controller (GCC) - Manages agent memory as a versioned file system under .GCC/. This skill should be used when working on multi-step projects that benefit from structured memory persistence, milestone tracking, branching for alternative approaches, and cross-session context recovery. Triggers on /gcc commands or natural language like 'commit this progress', 'branch to try an alternative', 'merge results', 'recover context'.
GCC transforms agent memory from a passive token stream into a structured, versioned file system under .GCC/. Inspired by Git, it provides four operations — COMMIT, BRANCH, MERGE, CONTEXT — to persist milestones, explore alternatives in isolation, synthesize results, and recover historical context efficiently.
On first use, check if .GCC/ exists in the project root. If not, run scripts/gcc_init.sh to create the directory structure:
.GCC/
├── main.md # Global roadmap and objectives
├── metadata.yaml # Infrastructure state (branches, file tree, config)
├── commit.md # Commit history for main branch
├── log.md # OTA execution log for main branch
└── branches/ # Isolated workspaces for experiments
└── <branch-name>/
├── commit.md
├── log.md
└── summary.md
For detailed file format specifications, read references/file_formats.md.
GCC behavior is controlled via metadata.yaml:
proactive_commits: true — Automatically suggest commits after completing coherent sub-tasksproactive_commits: false — Only commit when explicitly requestedToggle with: "enable/disable proactive commits" or by editing metadata.yaml.
Persist a milestone on the current branch.
Triggers: /gcc commit <summary>, "commit this progress", "save this milestone", "checkpoint"
Procedure:
commit.md to determine the next commit numbercommit.md with:
[C004])summary.md if on a branch, or from main.md)log.md recording the commit actionmetadata.yaml file tree if files were created/modifiedmain.mdProactive behavior: When proactive_commits: true, suggest a commit after:
Create an isolated workspace for exploring an alternative approach.
Triggers: /gcc branch <name>, "branch to try...", "explore alternative...", "experiment with..."
Procedure:
.GCC/branches/<branch-name>/ directorysummary.md with: purpose, parent branch, creation date, key hypothesescommit.md and log.md for the branchmetadata.yaml to register the new branchmain.md Active Branches sectionlog.mdFrom this point, all COMMITs and OTA logs go to the branch-specific files until a MERGE or explicit branch switch.
Integrate a completed branch back into the main flow.
Triggers: /gcc merge <branch>, "merge results from...", "integrate the experiment", "branch X is done"
Procedure:
summary.md and commit.md to understand outcomescommit.md summarizing:
main.md:
metadata.yaml: set branch status to merged or abandonedlog.mdRetrieve historical memory at different resolution levels.
Triggers: /gcc context <flag>, "what did we do on...", "recover context", "show me the history", "where were we"
Flags:
--branch [name] — Read summary.md and latest commits for a specific branch (or current branch if no name). Provides high-level understanding of what happened and why.
--log [n] — Read last N entries (default 20) from the current branch's log.md. Provides fine-grained OTA traces for debugging or resuming interrupted work.
--metadata — Read metadata.yaml to recover project structure: file tree, dependencies, active branches, configuration.
--full — Read main.md for the complete project roadmap, all milestones, and active branches. Use for cross-session recovery or handoff to another agent.
When no flag is specified, default to --branch for the current active branch.
Throughout all work (not just during explicit commands), maintain the OTA execution log:
Append entries to the active branch's log.md. Keep a maximum of 50 entries; when exceeding, remove the oldest entries. Each entry includes a sequential ID, timestamp, and branch name.
Log OTA entries at meaningful decision points — not every single action, but significant observations, strategy changes, and outcomes.
When starting a new session on an existing project with .GCC/:
metadata.yaml to understand project state and active branchesmain.md for the global roadmap and objectives| User says | Command |
|---|---|
| "save/checkpoint/persist this" | COMMIT |
| "try a different approach" | BRANCH |
| "that experiment worked, integrate it" | MERGE |
| "where were we?" / "what's the status?" | CONTEXT --full |
| "what happened on branch X?" | CONTEXT --branch X |
| "show recent activity" | CONTEXT --log |
| "what files do we have?" | CONTEXT --metadata |
| "enable/disable auto-commits" | Toggle proactive_commits in metadata.yaml |