| 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'. |
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)
On first use, check if .GCC/ exists. If not, run the init script:
scripts/gcc_init.sh # auto-detects git/standalone
scripts/gcc_init.sh --upgrade # migrate v1 → v2.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
.GCC/
├── index.yaml # Timeline in standalone mode
├── main.md # Global roadmap (v1 compat)
├── log.md # OTA execution log (v1 compat)
└── branches/
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).
Initialize GCC v2. Auto-detects git repo.
scripts/gcc_init.sh # new project
scripts/gcc_init.sh --upgrade # migrate v1 → v2 (backs up old files)Execute a real git commit and append lean entry to index.
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 filesReconstruct context from index hashes.
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 # everythingFeed commit data to aiyoucli vector memory. Silent no-op if aiyoucli unavailable.
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: autoTTL-based worktree cleanup and index pruning.
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 entriesPersist a milestone. In git mode, executes a real commit.
Triggers: /gcc commit <summary>, "commit this progress", "checkpoint"
Procedure (git mode):
- Run
scripts/gcc_commit.sh "<intent>" ["<note>"] - This stages changes, commits, captures hash, appends to index.yaml
- If
bridge_to_aiyoucli: auto, feeds to aiyoucli memory
Procedure (standalone mode):
- Run
scripts/gcc_commit.sh "<intent>" - 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
Create an isolated workspace. In git mode, uses real git worktrees.
Triggers: /gcc branch <name>, "try a different approach", "experiment with..."
Procedure (git mode):
git worktree add ../gcc-wt-<name> -b <name>- Register in index.yaml under
worktrees:with TTL - Agent works in worktree directory
Procedure (standalone mode):
- Create
.GCC/branches/<name>/with summary.md, log.md - Register in index.yaml timeline
Integrate a branch back. In git mode, real git merge.
Triggers: /gcc merge <branch>, "integrate the experiment", "branch X is done"
Procedure (git mode):
cdto main worktreegit merge <branch>- Append synthesis entry to timeline with intent + learnings as note
git worktree remove ../gcc-wt-<name>- Update worktree status to
merged
Procedure (standalone mode):
- Read branch summary and commits
- Append synthesis to main timeline
- Update branch status
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 <hash>— Deep dive into specific commit (diff, message, files).--decisions— Only entries with notes (rejected alternatives, trade-offs).--full— Everything. Use sparingly.
Maintain the index and worktrees.
Triggers: /gcc cleanup, "clean up old worktrees"
Procedure:
- Run
scripts/gcc_cleanup.shto handle expired worktrees - Run
scripts/gcc_cleanup.sh --prune-index 50to trim old entries
When starting a new session on a project with .GCC/:
- Run
scripts/gcc_context.sh --summaryfor quick orientation - If more detail needed, run
scripts/gcc_context.sh --last 5 - Check
scripts/gcc_cleanup.sh --dry-runfor expired worktrees - Resume work with full context reconstructed from git
Cost: ~50 tokens for summary vs ~2500 tokens loading all v1 markdowns.
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
| 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 |