--- name: gcc description: "Git Context Controller (GCC) v2 — Lean agent memory backed by real git. Stores hash + intent + optional decision notes instead of verbose markdown. Auto-bridges to aiyoucli vector memory when available. Dual mode: git-backed (lean index.yaml) or standalone (markdown fallback). Triggers on /gcc commands or natural language like 'commit this progress', 'branch to try an alternative', 'merge results', 'recover context'." --- # Git Context Controller (GCC) v2 ## Overview GCC transforms agent memory from verbose markdown into a lean, git-backed index. Instead of duplicating what git already knows, GCC stores only **hash + intent + optional decision notes** (~50 tokens vs ~500 per entry). Full context is reconstructed on demand via `git show`. Two modes: - **git mode**: Real commits, lean `index.yaml`, worktree isolation, aiyoucli bridge - **standalone mode**: Markdown fallback for projects without git (v1 compatible) ## Initialization On first use, check if `.GCC/` exists. If not, run the init script: ```bash scripts/gcc_init.sh # auto-detects git/standalone scripts/gcc_init.sh --upgrade # migrate v1 → v2 ``` ### Git mode structure ``` .GCC/ ├── index.yaml # Single source of truth (timeline, worktrees, decisions) ├── branches/ # Branch-specific notes (only when needed) ├── worktrees/ # Worktree tracking └── .bridge-log # Tracks what's been synced to aiyoucli ``` ### Standalone mode structure ``` .GCC/ ├── index.yaml # Timeline in standalone mode ├── main.md # Global roadmap (v1 compat) ├── log.md # OTA execution log (v1 compat) └── branches/ ``` ## index.yaml Format ```yaml version: 2 mode: git # or "standalone" created: "2026-03-28T00:00:00Z" config: proactive_commits: true worktree_ttl: 24h bridge_to_aiyoucli: auto # auto | off | manual current_branch: main timeline: - id: C001 hash: 85c8539 intent: "release prep" branch: main date: "2026-02-25T21:40:00Z" - id: C002 hash: a3f1b22 intent: "auth middleware rewrite" note: "descartamos passport.js — too opinionated for our use case" branch: main date: "2026-02-26T10:00:00Z" worktrees: - name: refactor-auth path: ../gcc-wt-refactor-auth branch: refactor-auth created: "2026-03-28T10:00:00Z" ttl: 24h status: active decisions: [] ``` **Key principle**: `hash` is the pointer to git truth. `intent` is why. `note` is only for decisions git can't capture (rejected alternatives, trade-offs). ## Scripts ### gcc_init.sh Initialize GCC v2. Auto-detects git repo. ```bash scripts/gcc_init.sh # new project scripts/gcc_init.sh --upgrade # migrate v1 → v2 (backs up old files) ``` ### gcc_commit.sh Execute a real git commit and append lean entry to index. ```bash scripts/gcc_commit.sh "implement retry logic" scripts/gcc_commit.sh "release prep" "descartamos semantic-release por overhead" scripts/gcc_commit.sh --staged "hotfix: null check" # only staged files ``` ### gcc_context.sh Reconstruct context from index hashes. ```bash scripts/gcc_context.sh # last 5 entries with git details scripts/gcc_context.sh --last 10 # last 10 scripts/gcc_context.sh --hash abc123 # full details for specific commit scripts/gcc_context.sh --summary # one-line per entry (cheap, no git calls) scripts/gcc_context.sh --decisions # only entries with notes scripts/gcc_context.sh --full # everything ``` ### gcc_bridge.sh Feed commit data to aiyoucli vector memory. Silent no-op if aiyoucli unavailable. ```bash scripts/gcc_bridge.sh --status # check bridge connectivity scripts/gcc_bridge.sh --sync # sync all unsynced entries # Called automatically by gcc_commit.sh when bridge_to_aiyoucli: auto ``` ### gcc_cleanup.sh TTL-based worktree cleanup and index pruning. ```bash scripts/gcc_cleanup.sh # interactive cleanup scripts/gcc_cleanup.sh --dry-run # show what would be cleaned scripts/gcc_cleanup.sh --force # clean without asking scripts/gcc_cleanup.sh --prune-index 50 # keep last 50 timeline entries ``` ## Commands ### COMMIT Persist a milestone. In git mode, executes a real commit. **Triggers**: `/gcc commit `, "commit this progress", "checkpoint" **Procedure (git mode)**: 1. Run `scripts/gcc_commit.sh "" [""]` 2. This stages changes, commits, captures hash, appends to index.yaml 3. If `bridge_to_aiyoucli: auto`, feeds to aiyoucli memory **Procedure (standalone mode)**: 1. Run `scripts/gcc_commit.sh ""` 2. Appends OTA entry to log.md **Proactive behavior**: When `proactive_commits: true`, suggest a commit after: - Completing a function, module, or coherent unit of work - Fixing a bug and verifying the fix - Finishing a research/exploration phase with conclusions ### BRANCH Create an isolated workspace. In git mode, uses real git worktrees. **Triggers**: `/gcc branch `, "try a different approach", "experiment with..." **Procedure (git mode)**: 1. `git worktree add ../gcc-wt- -b ` 2. Register in index.yaml under `worktrees:` with TTL 3. Agent works in worktree directory **Procedure (standalone mode)**: 1. Create `.GCC/branches//` with summary.md, log.md 2. Register in index.yaml timeline ### MERGE Integrate a branch back. In git mode, real git merge. **Triggers**: `/gcc merge `, "integrate the experiment", "branch X is done" **Procedure (git mode)**: 1. `cd` to main worktree 2. `git merge ` 3. Append synthesis entry to timeline with intent + learnings as note 4. `git worktree remove ../gcc-wt-` 5. Update worktree status to `merged` **Procedure (standalone mode)**: 1. Read branch summary and commits 2. Append synthesis to main timeline 3. Update branch status ### CONTEXT Retrieve historical memory. Reconstructed from git, not stored verbatim. **Triggers**: `/gcc context`, "where were we?", "what's the status?" **Flags**: - `--summary` — One-line per entry. Cheapest option (~0 extra tokens). Use for quick orientation. - `--last N` — Last N entries with full git reconstruction. Default for session recovery. - `--hash ` — Deep dive into specific commit (diff, message, files). - `--decisions` — Only entries with notes (rejected alternatives, trade-offs). - `--full` — Everything. Use sparingly. ### CLEANUP Maintain the index and worktrees. **Triggers**: `/gcc cleanup`, "clean up old worktrees" **Procedure**: 1. Run `scripts/gcc_cleanup.sh` to handle expired worktrees 2. Run `scripts/gcc_cleanup.sh --prune-index 50` to trim old entries ## Cross-Session Recovery When starting a new session on a project with `.GCC/`: 1. Run `scripts/gcc_context.sh --summary` for quick orientation 2. If more detail needed, run `scripts/gcc_context.sh --last 5` 3. Check `scripts/gcc_cleanup.sh --dry-run` for expired worktrees 4. Resume work with full context reconstructed from git **Cost**: ~50 tokens for summary vs ~2500 tokens loading all v1 markdowns. ## aiyoucli Integration When `bridge_to_aiyoucli: auto` in config: - Every commit is automatically fed to aiyoucli vector memory via `gcc_bridge.sh` - Stored with namespace `gcc`, tagged by branch - Enables semantic search across commits: "when did I do something similar?" - If aiyoucli is not installed, bridge is silently skipped Manual sync: `scripts/gcc_bridge.sh --sync` ## Natural Language Mapping | 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 --summary | | "show recent activity" | CONTEXT --last 10 | | "what did we decide about X?" | CONTEXT --decisions | | "deep dive into commit abc" | CONTEXT --hash abc | | "clean up old stuff" | CLEANUP | | "sync to memory" | bridge --sync |