mcpField
G
gcc

gcc

github.com/faugustdevエージェントワークフロー6583 回インストール14 週間前に更新
リポジトリ

gcc について

GCCは、コーディングエージェント向けのGit連携コンテキスト索引ツールです。コミットハッシュ、意図、任意の決定メモを記録し、必要に応じてGitから履歴を再構成します。Git worktreeを使うモードと、Gitなしのプロジェクト向けモードがあります。

主な機能

  1. 01簡潔な索引へのコンテキスト記録
  2. 02Gitコミットからの履歴再構成
  3. 03分離されたworktreeとブランチの管理
  4. 04意図を添えたマイルストーンのコミット
  5. 05aiyoucliメモリへの任意同期

活用シーン

  1. 01セッション間でプロジェクト状況を復元
  2. 02コミットの判断理由を記録
  3. 03実験を分離して結果を統合
  4. 04期限切れworktreeと索引項目の整理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/faugustdev/git-context-controller --skill gcc

インストール後、Claude Code で/gccを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
CONTRIBUTING.md
README.md
LICENSE
examples/
sample_session.md
references/
file_formats.md
scripts/
gcc_commit.sh
gcc_context.sh
gcc_cleanup.sh
gcc_bridge.sh
gcc_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 モード):

  1. scripts/gcc_commit.sh "<intent>" ["<note>"] を実行します
  2. 変更をステージし、コミットして、ハッシュを取得し、index.yaml に追加します
  3. bridge_to_aiyoucli: auto の場合、aiyoucli のメモリに渡します

手順(スタンドアロンモード):

  1. scripts/gcc_commit.sh "<intent>" を実行します
  2. log.md に OTA エントリーを追加します

積極的な提案:proactive_commits: true の場合、次の作業後にコミットを提案します。

  • 関数、モジュール、または一貫した作業単位を完了したとき
  • バグを修正し、その修正を検証したとき
  • 結論を得て、調査・探索フェーズを終えたとき
BRANCH

分離されたワークスペースを作成します。Git モードでは、実際の Git ワークツリーを使用します。

トリガー:/gcc branch <name>、「別の方法を試す」、「…を試す」

手順(Git モード):

  1. git worktree add ../gcc-wt-<name> -b <name>
  2. TTL とともに、index.yaml の worktrees: 配下に登録します
  3. エージェントはワークツリーのディレクトリで作業します

手順(スタンドアロンモード):

  1. summary.md と log.md を含む .GCC/branches/<name>/ を作成します
  2. index.yaml のタイムラインに登録します
MERGE

ブランチを統合します。Git モードでは、実際の Git マージを行います。

トリガー:/gcc merge <branch>、「実験を統合する」、「ブランチ X の作業が完了した」

手順(Git モード):

  1. メインのワークツリーに cd します
  2. git merge <branch> を実行します
  3. 意図と学びをメモとして、統合エントリーをタイムラインに追加します
  4. git worktree remove ../gcc-wt-<name> を実行します
  5. ワークツリーのステータスを merged に更新します

手順(スタンドアロンモード):

  1. ブランチのサマリーとコミットを読み取ります
  2. 統合内容をメインのタイムラインに追加します
  3. ブランチのステータスを更新します
CONTEXT

過去のメモリを取得します。逐語的に保存されるのではなく、Git から再構築されます。

トリガー:/gcc context、「どこまで進みましたか?」、「現在の状況は?」

フラグ:

  • --summary — 各エントリーを 1 行で表示します。最も低コストなオプションです(追加トークンは約 0)。手早く状況を把握する場合に使用します。
  • --last N — 直近の N 件のエントリーを、Git から完全に再構築して表示します。セッション復旧時のデフォルトです。
  • --hash <hash> — 特定のコミットを詳しく確認します(差分、メッセージ、ファイル)。
  • --decisions — メモ付きのエントリー(却下した代替案、トレードオフ)のみを表示します。
  • --full — すべてを表示します。必要な場合にのみ使用してください。
CLEANUP

インデックスとワークツリーを保守します。

トリガー:/gcc cleanup、「古いワークツリーを整理する」

手順:

  1. scripts/gcc_cleanup.sh を実行して、期限切れのワークツリーを処理します
  2. scripts/gcc_cleanup.sh --prune-index 50 を実行して、古いエントリーを削除します

セッションをまたいだ復旧

.GCC/ があるプロジェクトで新しいセッションを開始する場合:

  1. scripts/gcc_context.sh --summary を実行して、すばやく状況を把握します
  2. さらに詳しい情報が必要な場合は、scripts/gcc_context.sh --last 5 を実行します
  3. 期限切れのワークツリーがないか、scripts/gcc_cleanup.sh --dry-run を確認します
  4. 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

コメント