gcc について
GCCは、コーディングエージェント向けのGit連携コンテキスト索引ツールです。コミットハッシュ、意図、任意の決定メモを記録し、必要に応じてGitから履歴を再構成します。Git worktreeを使うモードと、Gitなしのプロジェクト向けモードがあります。
主な機能
- 01簡潔な索引へのコンテキスト記録
- 02Gitコミットからの履歴再構成
- 03分離されたworktreeとブランチの管理
- 04意図を添えたマイルストーンのコミット
- 05aiyoucliメモリへの任意同期
活用シーン
- 01セッション間でプロジェクト状況を復元
- 02コミットの判断理由を記録
- 03実験を分離して結果を統合
- 04期限切れworktreeと索引項目の整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ faugustdev/ git-context-controller --skill gccインストール後、Claude Code で/gccを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreCONTRIBUTING.mdREADME.mdLICENSEexamples/sample_session.mdreferences/file_formats.mdscripts/gcc_commit.shgcc_context.shgcc_cleanup.shgcc_bridge.shgcc_init.sh詳細
Git Context Controller(GCC)v2
概要
GCC は、エージェントのメモリを冗長な Markdown から、軽量な Git ベースのインデックスへと変換します。Git がすでに把握している情報を重複して保存する代わりに、GCC は ハッシュ+意図+任意の判断メモ のみを保存します(エントリーあたり約 50 トークンで、従来の約 500 トークンから削減)。完全なコンテキストは、必要に応じて git show で再構築します。
2 つのモードがあります。
- git mode:実際のコミット、軽量な
index.yaml、ワークツリーによる分離、aiyoucli ブリッジ - standalone mode:Git のないプロジェクト向けの Markdown フォールバック(v1 互換)
初期化
初回使用時に .GCC/ が存在するか確認します。存在しない場合は、初期化スクリプトを実行します。
scripts/gcc_init.sh # auto-detects git/standalone
scripts/gcc_init.sh --upgrade # migrate v1 → v2
Git モードの構成
.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/
index.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: []
重要な原則:hash は Git の真実を指すポインターです。intent はその理由です。note は、Git では記録できない判断(却下した代替案、トレードオフ)にのみ使用します。
スクリプト
gcc_init.sh
GCC v2 を初期化します。Git リポジトリを自動検出します。
scripts/gcc_init.sh # new project
scripts/gcc_init.sh --upgrade # migrate v1 → v2 (backs up old files)
gcc_commit.sh
実際の Git コミットを実行し、軽量なエントリーをインデックスに追加します。
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
インデックスのハッシュからコンテキストを再構築します。
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
コミットデータを aiyoucli のベクトルメモリに渡します。aiyoucli を利用できない場合は何もせず終了します。
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 に基づくワークツリーのクリーンアップと、インデックスの整理を行います。
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
コマンド
COMMIT
マイルストーンを保存します。Git モードでは、実際のコミットを実行します。
トリガー:/gcc commit <summary>、「この進捗をコミット」、「チェックポイント」
手順(Git モード):
scripts/gcc_commit.sh "<intent>" ["<note>"]を実行します- 変更をステージし、コミットして、ハッシュを取得し、
index.yamlに追加します bridge_to_aiyoucli: autoの場合、aiyoucli のメモリに渡します
手順(スタンドアロンモード):
scripts/gcc_commit.sh "<intent>"を実行しますlog.mdに OTA エントリーを追加します
積極的な提案:proactive_commits: true の場合、次の作業後にコミットを提案します。
- 関数、モジュール、または一貫した作業単位を完了したとき
- バグを修正し、その修正を検証したとき
- 結論を得て、調査・探索フェーズを終えたとき
BRANCH
分離されたワークスペースを作成します。Git モードでは、実際の Git ワークツリーを使用します。
トリガー:/gcc branch <name>、「別の方法を試す」、「…を試す」
手順(Git モード):
git worktree add ../gcc-wt-<name> -b <name>- TTL とともに、
index.yamlのworktrees:配下に登録します - エージェントはワークツリーのディレクトリで作業します
手順(スタンドアロンモード):
summary.mdとlog.mdを含む.GCC/branches/<name>/を作成しますindex.yamlのタイムラインに登録します
MERGE
ブランチを統合します。Git モードでは、実際の Git マージを行います。
トリガー:/gcc merge <branch>、「実験を統合する」、「ブランチ X の作業が完了した」
手順(Git モード):
- メインのワークツリーに
cdします git merge <branch>を実行します- 意図と学びをメモとして、統合エントリーをタイムラインに追加します
git worktree remove ../gcc-wt-<name>を実行します- ワークツリーのステータスを
mergedに更新します
手順(スタンドアロンモード):
- ブランチのサマリーとコミットを読み取ります
- 統合内容をメインのタイムラインに追加します
- ブランチのステータスを更新します
CONTEXT
過去のメモリを取得します。逐語的に保存されるのではなく、Git から再構築されます。
トリガー:/gcc context、「どこまで進みましたか?」、「現在の状況は?」
フラグ:
--summary— 各エントリーを 1 行で表示します。最も低コストなオプションです(追加トークンは約 0)。手早く状況を把握する場合に使用します。--last N— 直近の N 件のエントリーを、Git から完全に再構築して表示します。セッション復旧時のデフォルトです。--hash <hash>— 特定のコミットを詳しく確認します(差分、メッセージ、ファイル)。--decisions— メモ付きのエントリー(却下した代替案、トレードオフ)のみを表示します。--full— すべてを表示します。必要な場合にのみ使用してください。
CLEANUP
インデックスとワークツリーを保守します。
トリガー:/gcc cleanup、「古いワークツリーを整理する」
手順:
scripts/gcc_cleanup.shを実行して、期限切れのワークツリーを処理しますscripts/gcc_cleanup.sh --prune-index 50を実行して、古いエントリーを削除します
セッションをまたいだ復旧
.GCC/ があるプロジェクトで新しいセッションを開始する場合:
scripts/gcc_context.sh --summaryを実行して、すばやく状況を把握します- さらに詳しい情報が必要な場合は、
scripts/gcc_context.sh --last 5を実行します - 期限切れのワークツリーがないか、
scripts/gcc_cleanup.sh --dry-runを確認します - git から完全なコンテキストを再構成して作業を再開します
コスト:v1 のすべての markdown を読み込む場合の約2500トークンに対し、要約では約50トークンです。
aiyoucli との統合
設定で bridge_to_aiyoucli: auto が指定されている場合:
- 各コミットは
gcc_bridge.shを介して、aiyoucli のベクトルメモリに自動的に送られます - 名前空間
gccに保存され、ブランチでタグ付けされます - コミットを横断したセマンティック検索が可能になります:「以前、似たようなことをしたのはいつですか?」
- aiyoucli がインストールされていない場合、ブリッジは通知なくスキップされます
手動で同期する場合:scripts/gcc_bridge.sh --sync
自然言語との対応
| ユーザーの発言 | コマンド |
|---|---|
| 「これを保存/チェックポイント/永続化して」 | COMMIT |
| 「別の方法を試して」 | BRANCH |
| 「その実験はうまくいったので、統合して」 | MERGE |
| 「どこまで進んだ?」/「現在の状況は?」 | CONTEXT --summary |
| 「最近のアクティビティを表示して」 | CONTEXT --last 10 |
| 「X について何を決めた?」 | CONTEXT --decisions |
| 「コミット abc を詳しく調べて」 | CONTEXT --hash abc |
| 「古いものを整理して」 | CLEANUP |
| 「メモリに同期して」 | bridge --sync |