gcc

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'.

24,269 stars

Best use case

gcc is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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'.

Teams using gcc should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/git-context-controller/SKILL.md --create-dirs "https://raw.githubusercontent.com/davila7/claude-code-templates/main/cli-tool/components/skills/git/git-context-controller/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/git-context-controller/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How gcc Compares

Feature / AgentgccStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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'.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Git Context Controller (GCC)

## Overview

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.

## Initialization

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`.

## Configuration

GCC behavior is controlled via `metadata.yaml`:

- `proactive_commits: true` — Automatically suggest commits after completing coherent sub-tasks
- `proactive_commits: false` — Only commit when explicitly requested

Toggle with: "enable/disable proactive commits" or by editing `metadata.yaml`.

## Commands

### COMMIT

Persist a milestone on the current branch.

**Triggers**: `/gcc commit <summary>`, "commit this progress", "save this milestone", "checkpoint"

**Procedure**:
1. Read the current branch's `commit.md` to determine the next commit number
2. Append a new entry to `commit.md` with:
   - Sequential ID (e.g., `[C004]`)
   - Date (UTC ISO 8601)
   - Current branch name
   - Branch purpose (from `summary.md` if on a branch, or from `main.md`)
   - Previous progress summary (1-2 sentences from last commit)
   - This commit's contribution (detailed technical description with files touched)
3. Append an OTA entry to `log.md` recording the commit action
4. Update `metadata.yaml` file tree if files were created/modified
5. If on main branch, update milestones section in `main.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
- Any point where losing context would mean re-doing significant work

### BRANCH

Create an isolated workspace for exploring an alternative approach.

**Triggers**: `/gcc branch <name>`, "branch to try...", "explore alternative...", "experiment with..."

**Procedure**:
1. Create `.GCC/branches/<branch-name>/` directory
2. Create `summary.md` with: purpose, parent branch, creation date, key hypotheses
3. Create empty `commit.md` and `log.md` for the branch
4. Update `metadata.yaml` to register the new branch
5. Update `main.md` Active Branches section
6. Log the branch creation in the parent branch's `log.md`

From this point, all COMMITs and OTA logs go to the branch-specific files until a MERGE or explicit branch switch.

### MERGE

Integrate a completed branch back into the main flow.

**Triggers**: `/gcc merge <branch>`, "merge results from...", "integrate the experiment", "branch X is done"

**Procedure**:
1. Read the branch's `summary.md` and `commit.md` to understand outcomes
2. Append a synthesis commit to main's `commit.md` summarizing:
   - What was tried
   - What was learned
   - What is being integrated (or why the branch is being abandoned)
3. Update `main.md`:
   - Add milestone entry with branch results
   - Remove from Active Branches
   - Update objectives if applicable
4. Update `metadata.yaml`: set branch status to `merged` or `abandoned`
5. Log the merge in main's `log.md`

### CONTEXT

Retrieve 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.

## OTA Logging

Throughout all work (not just during explicit commands), maintain the OTA execution log:

1. **Observation**: What was noticed or discovered
2. **Thought**: Reasoning about what to do next
3. **Action**: What action was taken

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.

## Cross-Session Recovery

When starting a new session on an existing project with `.GCC/`:

1. Read `metadata.yaml` to understand project state and active branches
2. Read `main.md` for the global roadmap and objectives
3. Read the active branch's latest commits and log entries
4. Resume work with full context of what was accomplished and what remains

## 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 --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 |

Related Skills

async-python-patterns

24269
from davila7/claude-code-templates

Comprehensive guidance for implementing asynchronous Python applications using asyncio, concurrent programming patterns, and async/await for building high-performance, non-blocking systems.

slack-automation

24269
from davila7/claude-code-templates

Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.

linear-automation

24269
from davila7/claude-code-templates

Automate Linear tasks via Rube MCP (Composio): issues, projects, cycles, teams, labels. Always search tools first for current schemas.

jira-automation

24269
from davila7/claude-code-templates

Automate Jira tasks via Rube MCP (Composio): issues, projects, sprints, boards, comments, users. Always search tools first for current schemas.

gitops-workflow

24269
from davila7/claude-code-templates

Complete guide to implementing GitOps workflows with ArgoCD and Flux for automated Kubernetes deployments.

github-automation

24269
from davila7/claude-code-templates

Automate GitHub repositories, issues, pull requests, branches, CI/CD, and permissions via Rube MCP (Composio). Manage code workflows, review PRs, search code, and handle deployments programmatically.

github-actions-templates

24269
from davila7/claude-code-templates

Production-ready GitHub Actions workflow patterns for testing, building, and deploying applications.

zustand-store-ts

24269
from davila7/claude-code-templates

Create Zustand stores following established patterns with proper TypeScript types and middleware.

zod-validation-expert

24269
from davila7/claude-code-templates

Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.

tanstack-query-expert

24269
from davila7/claude-code-templates

Expert in TanStack Query (React Query) — asynchronous state management. Covers data fetching, stale time configuration, mutations, optimistic updates, and Next.js App Router (SSR) integration.

tailwind-design-system

24269
from davila7/claude-code-templates

Build production-ready design systems with Tailwind CSS, including design tokens, component variants, responsive patterns, and accessibility.

sveltekit

24269
from davila7/claude-code-templates

Build full-stack web applications with SvelteKit — file-based routing, SSR, SSG, API routes, and form actions in one framework.