Files
msd-core/docs/ja-JP/ARCHITECTURE.md
Tom Boucher f2decefede fix(#3010): post-install message and docs use /gsd-update --reapply (#3012)
* fix(#3010): post-install message and docs use /gsd-update --reapply

PR #2824 consolidated 86 skills into ~58, removing the standalone
/gsd-reapply-patches command and folding it into a flag on /gsd-update
(/gsd-update --reapply). The 1.39.1 hotfix (#2954) updated help.md
but missed three other surfaces that still recommended the dead form:

1. bin/install.js reportLocalPatches() — runtime emitter shown after
   every install with backed-up patches. All branches updated:
   - claude/opencode/kilo/copilot: /gsd-update --reapply
   - gemini: /gsd:update --reapply
   - codex: $gsd-update --reapply
   - cursor: gsd-update --reapply (mention the skill name)

2. get-shit-done/workflows/update.md — Step 4 prose and the
   check_local_patches block both referenced /gsd-reapply-patches.
   Replaced with /gsd-update --reapply (with backticks around the
   command per CR feedback for copy/paste UX).

3. Localized docs (en/ja-JP/ko-KR/zh-CN) — 14 files across
   ARCHITECTURE.md / COMMANDS.md / FEATURES.md / INVENTORY.md /
   USER-GUIDE.md / manual-update.md still listed the removed command.

Tests:
- bug-3010-reapply-patches-references.test.cjs (4 tests): scans
  bin/install.js's reportLocalPatches body, every workflow file, and
  every doc (excluding CHANGELOG history and help.md's deprecation
  notice) for the removed command form, and verifies each runtime
  branch emits the consolidated form via captured console output.
- tests/copilot-install.test.cjs:1081-1115 — stale assertions that
  hard-coded the removed string updated to assert /gsd-update --reapply.

Verification: 115/115 pass across both files.

Co-authored-by: Patrick Clery <patrick@patrickclery.com>
Closes #3010

* test(#3010): broaden dead-command scan + tighten runtime exact-match

CodeRabbit follow-up findings on #3012:

1. Workflow + docs scans only matched "/gsd-reapply-patches", missing
   the gemini ("/gsd:reapply-patches") and codex ("$gsd-reapply-patches")
   spellings. A regression that re-introduced either form in localized
   docs would have passed silently. Extracted a DEAD_COMMAND_PATTERNS
   array + findDeadCommands() helper used by both scans, so all three
   removed forms are checked uniformly. Match output also reports which
   spellings hit, for faster diagnosis.

2. reportLocalPatches runtime test asserted output.includes('update --reapply'),
   which is too loose — a malformed prefix like '/gsd:update --reapply' on
   the claude branch would have passed. Replaced with an exact
   {runtime → expected token} map covering all 7 branches:
     claude/opencode/kilo/copilot → /gsd-update --reapply
     gemini → /gsd:update --reapply
     codex → $gsd-update --reapply
     cursor → gsd-update --reapply
   Negative assertion also runs DEAD_COMMAND_PATTERNS against output for
   every runtime, so dead forms can't slip in regardless of branch.

Verification: 4/4 pass on bug-3010-reapply-patches-references.test.cjs.

* test(#3010): add prefix-absence guard for cursor runtime (CR follow-up)

CodeRabbit (Minor): the cursor expected token "gsd-update --reapply" is
a substring of every prefixed form ("/gsd-update --reapply" for claude/
opencode/kilo/copilot, "\$gsd-update --reapply" for codex). The positive
output.includes(expectedToken) check therefore can't distinguish correct
cursor output from a regression where the installer emits a prefixed
form for cursor — both pass the substring check.

Add an explicit prefix-absence assertion for cursor that fails if any
of /, \$, or : appears immediately before "gsd-update --reapply" in
output. The gemini form ("/gsd:update --reapply") doesn't share the
substring (gsd:update vs gsd-update) so it's already caught by the
positive includes failing on cursor's expected bare token.

Verification: 4/4 pass.

---------

Co-authored-by: Patrick Clery <patrick@patrickclery.com>
2026-05-02 09:38:34 -04:00

30 KiB
Raw Blame History

GSD アーキテクチャ

コントリビューターおよび上級ユーザー向けのシステムアーキテクチャ文書です。ユーザー向けドキュメントは機能リファレンスまたはユーザーガイドをご覧ください。


目次


システム概要

GSDは、ユーザーとAIコーディングエージェント(Claude Code、Gemini CLI、OpenCode、Kilo、Codex、Copilot、Antigravity、Trae、Cline、Augment Code)の間に位置するメタプロンプティングフレームワークです。以下の機能を提供します:

  1. コンテキストエンジニアリング — タスクごとにAIが必要とするすべてを提供する構造化アーティファクト
  2. マルチエージェントオーケストレーション — 専門エージェントをフレッシュなコンテキストウィンドウで起動する軽量オーケストレーター
  3. 仕様駆動開発 — 要件 → 調査 → 計画 → 実行 → 検証のパイプライン
  4. 状態管理 — セッションやコンテキストリセットをまたいだ永続的なプロジェクトメモリ
┌──────────────────────────────────────────────────────┐
│                      USER                            │
│            /gsd-command [args]                        │
└─────────────────────┬────────────────────────────────┘
                      │
┌─────────────────────▼────────────────────────────────┐
│              COMMAND LAYER                            │
│   commands/gsd/*.md — Prompt-based command files      │
│   (Claude Code custom commands / Codex skills)        │
└─────────────────────┬────────────────────────────────┘
                      │
┌─────────────────────▼────────────────────────────────┐
│              WORKFLOW LAYER                           │
│   get-shit-done/workflows/*.md — Orchestration logic  │
│   (Reads references, spawns agents, manages state)    │
└──────┬──────────────┬─────────────────┬──────────────┘
       │              │                 │
┌──────▼──────┐ ┌─────▼─────┐ ┌────────▼───────┐
│  AGENT      │ │  AGENT    │ │  AGENT         │
│  (fresh     │ │  (fresh   │ │  (fresh        │
│   context)  │ │   context)│ │   context)     │
└──────┬──────┘ └─────┬─────┘ └────────┬───────┘
       │              │                 │
┌──────▼──────────────▼─────────────────▼──────────────┐
│              CLI TOOLS LAYER                          │
│   get-shit-done/bin/gsd-tools.cjs                     │
│   (State, config, phase, roadmap, verify, templates)  │
└──────────────────────┬───────────────────────────────┘
                       │
┌──────────────────────▼───────────────────────────────┐
│              FILE SYSTEM (.planning/)                 │
│   PROJECT.md | REQUIREMENTS.md | ROADMAP.md          │
│   STATE.md | config.json | phases/ | research/       │
└──────────────────────────────────────────────────────┘

設計原則

1. エージェントごとにフレッシュなコンテキスト

オーケストレーターが起動するすべてのエージェントは、クリーンなコンテキストウィンドウ(最大200Kトークン)を取得します。これにより、AIがコンテキストウィンドウに蓄積された会話で埋め尽くされることによる品質低下(コンテキストの劣化)が排除されます。

2. 軽量オーケストレーター

ワークフローファイル(get-shit-done/workflows/*.md)は重い処理を行いません。以下の役割に徹します:

  • gsd-tools.cjs init <workflow> でコンテキストを読み込む
  • 焦点を絞ったプロンプトで専門エージェントを起動する
  • 結果を収集し、次のステップにルーティングする
  • ステップ間で状態を更新する

3. ファイルベースの状態管理

すべての状態は .planning/ 内に人間が読めるMarkdownとJSONとして保存されます。データベースもサーバーも外部依存もありません。これにより:

  • コンテキストリセット(/clear)後も状態が維持される
  • 人間とエージェントの両方が状態を確認できる
  • チームでの可視性のためにgitにコミットできる

4. 未設定 = 有効

ワークフローの機能フラグは 未設定 = 有効 のパターンに従います。config.json にキーが存在しない場合、デフォルトで true になります。ユーザーは機能を明示的に無効化します。デフォルトを有効化する操作は不要です。

5. 多層防御

複数のレイヤーで一般的な障害モードを防止します:

  • 実行前に計画が検証される(plan-checkerエージェント)
  • 実行時にタスクごとにアトミックなコミットが生成される
  • 実行後の検証でフェーズ目標との整合性を確認する
  • UATが最終ゲートとして人間による検証を提供する

コンポーネントアーキテクチャ

コマンド(commands/gsd/*.md)

ユーザー向けのエントリーポイントです。各ファイルにはYAMLフロントマター(name、description、allowed-tools)とワークフローをブートストラップするプロンプト本文が含まれています。コマンドは以下の形式でインストールされます:

  • Claude Code: カスタムスラッシュコマンド(/gsd-command-name)
  • OpenCode / Kilo: スラッシュコマンド(/gsd-command-name)
  • Codex: スキル($gsd-command-name)
  • Copilot: スラッシュコマンド(/gsd-command-name)
  • Antigravity: スキル

コマンド総数: 44

ワークフロー(get-shit-done/workflows/*.md)

コマンドが参照するオーケストレーションロジックです。以下を含むステップバイステップのプロセスが記述されています:

  • gsd-tools.cjs init によるコンテキスト読み込み
  • モデル解決を伴うエージェント起動の指示
  • ゲート/チェックポイントの定義
  • 状態更新パターン
  • エラーハンドリングとリカバリー

ワークフロー総数: 46

エージェント(agents/*.md)

フロントマターで以下を指定する専門エージェント定義:

  • name — エージェント識別子
  • description — 役割と目的
  • tools — 許可されたツールアクセス(Read、Write、Edit、Bash、Grep、Glob、WebSearchなど)
  • color — 視覚的な区別のためのターミナル出力色

エージェント総数: 16

リファレンス(get-shit-done/references/*.md)

ワークフローとエージェントが @-reference で参照する共有知識ドキュメント:

  • checkpoints.md — チェックポイントタイプの定義とインタラクションパターン
  • model-profiles.md — エージェントごとのモデルティア割り当て
  • verification-patterns.md — 各種アーティファクトの検証方法
  • planning-config.md — 設定スキーマの全体像と動作
  • git-integration.md — gitコミット、ブランチ、履歴のパターン
  • questioning.md — プロジェクト初期化のためのドリーム抽出フィロソフィー
  • tdd.md — テスト駆動開発の統合パターン
  • ui-brand.md — 視覚的な出力フォーマットパターン

テンプレート(get-shit-done/templates/)

すべてのプランニングアーティファクト用のMarkdownテンプレートです。gsd-tools.cjs template fill および scaffold コマンドにより、事前構造化されたファイルを作成するために使用されます:

  • project.md、requirements.md、roadmap.md、state.md — コアプロジェクトファイル
  • phase-prompt.md — フェーズ実行プロンプトテンプレート
  • summary.md(+ summary-minimal.md、summary-standard.md、summary-complex.md)— 粒度対応のサマリーテンプレート
  • DEBUG.md — デバッグセッション追跡テンプレート
  • UI-SPEC.md、UAT.md、VALIDATION.md — 専門検証テンプレート
  • discussion-log.md — ディスカッション監査証跡テンプレート
  • codebase/ — ブラウンフィールドマッピングテンプレート(スタック、アーキテクチャ、規約、懸念事項、構造、テスト、統合)
  • research-project/ — リサーチ出力テンプレート(SUMMARY、STACK、FEATURES、ARCHITECTURE、PITFALLS)

フック(hooks/)

ホストAIエージェントと統合するランタイムフック:

フック イベント 目的
gsd-statusline.js statusLine モデル、タスク、ディレクトリ、コンテキスト使用量バーを表示
gsd-context-monitor.js PostToolUse / AfterTool コンテキスト残量35%/25%でエージェント向け警告を注入
gsd-check-update.js SessionStart GSDの新バージョンをバックグラウンドで確認
gsd-prompt-guard.js PreToolUse .planning/ への書き込みにプロンプトインジェクションパターンがないかスキャン(アドバイザリー)
gsd-workflow-guard.js PreToolUse GSDワークフローコンテキスト外でのファイル編集を検出(アドバイザリー、hooks.workflow_guard によるオプトイン)

CLIツール(get-shit-done/bin/)

17のドメインモジュールを持つNode.js CLIユーティリティ(gsd-tools.cjs):

モジュール 責務
core.cjs エラーハンドリング、出力フォーマット、共有ユーティリティ
state.cjs STATE.md の解析、更新、進行、メトリクス
phase.cjs フェーズディレクトリ操作、小数番号付け、プランインデックス
roadmap.cjs ROADMAP.md の解析、フェーズ抽出、プラン進捗
config.cjs config.json の読み書き、セクション初期化
verify.cjs プラン構造、フェーズ完了度、リファレンス、コミット検証
template.cjs テンプレート選択と変数置換による穴埋め
frontmatter.cjs YAMLフロントマターのCRUD操作
init.cjs ワークフロータイプごとの複合コンテキスト読み込み
milestone.cjs マイルストーンのアーカイブ、要件マーキング
commands.cjs その他コマンド(slug、タイムスタンプ、todos、スキャフォールディング、統計)
model-profiles.cjs モデルプロファイル解決テーブル
security.cjs パストラバーサル防止、プロンプトインジェクション検出、安全なJSON解析、シェル引数バリデーション
uat.cjs UATファイル解析、検証デット追跡、audit-uatサポート

エージェントモデル

オーケストレーター → エージェントパターン

Orchestrator (workflow .md)
    │
    ├── Load context: gsd-tools.cjs init <workflow> <phase>
    │   Returns JSON with: project info, config, state, phase details
    │
    ├── Resolve model: gsd-tools.cjs resolve-model <agent-name>
    │   Returns: opus | sonnet | haiku | inherit
    │
    ├── Spawn Agent (Task/SubAgent call)
    │   ├── Agent prompt (agents/*.md)
    │   ├── Context payload (init JSON)
    │   ├── Model assignment
    │   └── Tool permissions
    │
    ├── Collect result
    │
    └── Update state: gsd-tools.cjs state update/patch/advance-plan

エージェント起動カテゴリ

カテゴリ エージェント 並列実行
リサーチャー gsd-project-researcher, gsd-phase-researcher, gsd-ui-researcher, gsd-advisor-researcher 4並列(stack、features、architecture、pitfalls); advisorはdiscuss-phase中に起動
シンセサイザー gsd-research-synthesizer 逐次(リサーチャー完了後)
プランナー gsd-planner, gsd-roadmapper 逐次
チェッカー gsd-plan-checker, gsd-integration-checker, gsd-ui-checker, gsd-nyquist-auditor 逐次(検証ループ、最大3回反復)
エグゼキューター gsd-executor ウェーブ内は並列、ウェーブ間は逐次
ベリファイアー gsd-verifier 逐次(全エグゼキューター完了後)
マッパー gsd-codebase-mapper 4並列(tech、arch、quality、concerns)
デバッガー gsd-debugger 逐次(インタラクティブ)
オーディター gsd-ui-auditor 逐次

ウェーブ実行モデル

execute-phase では、プランが依存関係に基づいてウェーブにグループ化されます:

Wave Analysis:
  Plan 01 (no deps)      ─┐
  Plan 02 (no deps)      ─┤── Wave 1 (parallel)
  Plan 03 (depends: 01)  ─┤── Wave 2 (waits for Wave 1)
  Plan 04 (depends: 02)  ─┘
  Plan 05 (depends: 03,04) ── Wave 3 (waits for Wave 2)

各エグゼキューターには以下が与えられます:

  • フレッシュな200Kコンテキストウィンドウ
  • 実行対象の特定のPLAN.md
  • プロジェクトコンテキスト(PROJECT.md、STATE.md)
  • フェーズコンテキスト(CONTEXT.md、利用可能な場合はRESEARCH.md)

並列コミットの安全性

同一ウェーブ内で複数のエグゼキューターが実行される場合、2つの仕組みで競合を防止します:

  1. --no-verify コミット — 並列エージェントはpre-commitフックをスキップします(ビルドロックの競合を引き起こす可能性があるため。例:Rustプロジェクトでのcargo lockファイルの競合)。オーケストレーターは各ウェーブ完了後に git hook run pre-commit を1回実行します。

  2. STATE.md ファイルロック — すべての writeStateMd() 呼び出しはロックファイルベースの相互排他(STATE.md.lock、O_EXCL によるアトミック作成)を使用します。これにより、2つのエージェントがSTATE.mdを読み取り、異なるフィールドを変更し、最後の書き込みが他方の変更を上書きする読み取り-変更-書き込みの競合状態を防止します。古いロックの検出(10秒タイムアウト)とジッター付きのスピンウェイトを含みます。


データフロー

新規プロジェクトフロー

User input (idea description)
    │
    ▼
Questions (questioning.md philosophy)
    │
    ▼
4x Project Researchers (parallel)
    ├── Stack → STACK.md
    ├── Features → FEATURES.md
    ├── Architecture → ARCHITECTURE.md
    └── Pitfalls → PITFALLS.md
    │
    ▼
Research Synthesizer → SUMMARY.md
    │
    ▼
Requirements extraction → REQUIREMENTS.md
    │
    ▼
Roadmapper → ROADMAP.md
    │
    ▼
User approval → STATE.md initialized

フェーズ実行フロー

discuss-phase → CONTEXT.md (user preferences)
    │
    ▼
ui-phase → UI-SPEC.md (design contract, optional)
    │
    ▼
plan-phase
    ├── Phase Researcher → RESEARCH.md
    ├── Planner → PLAN.md files
    └── Plan Checker → Verify loop (max 3x)
    │
    ▼
execute-phase
    ├── Wave analysis (dependency grouping)
    ├── Executor per plan → code + atomic commits
    ├── SUMMARY.md per plan
    └── Verifier → VERIFICATION.md
    │
    ▼
verify-work → UAT.md (user acceptance testing)
    │
    ▼
ui-review → UI-REVIEW.md (visual audit, optional)

コンテキスト伝播

各ワークフローステージは後続のステージに供給されるアーティファクトを生成します:

PROJECT.md ────────────────────────────────────────────► All agents
REQUIREMENTS.md ───────────────────────────────────────► Planner, Verifier, Auditor
ROADMAP.md ────────────────────────────────────────────► Orchestrators
STATE.md ──────────────────────────────────────────────► All agents (decisions, blockers)
CONTEXT.md (per phase) ────────────────────────────────► Researcher, Planner, Executor
RESEARCH.md (per phase) ───────────────────────────────► Planner, Plan Checker
PLAN.md (per plan) ────────────────────────────────────► Executor, Plan Checker
SUMMARY.md (per plan) ─────────────────────────────────► Verifier, State tracking
UI-SPEC.md (per phase) ────────────────────────────────► Executor, UI Auditor

ファイルシステムレイアウト

インストールファイル

~/.claude/                          # Claude Code (global install)
├── commands/gsd/*.md               # 37 slash commands
├── get-shit-done/
│   ├── bin/gsd-tools.cjs           # CLI utility
│   ├── bin/lib/*.cjs               # 15 domain modules
│   ├── workflows/*.md              # 42 workflow definitions
│   ├── references/*.md             # 13 shared reference docs
│   └── templates/                  # Planning artifact templates
├── agents/*.md                     # 15 agent definitions
├── hooks/
│   ├── gsd-statusline.js           # Statusline hook
│   ├── gsd-context-monitor.js      # Context warning hook
│   └── gsd-check-update.js         # Update check hook
├── settings.json                   # Hook registrations
└── VERSION                         # Installed version number

他のランタイムでの同等パス:

  • OpenCode: ~/.config/opencode/ または ~/.opencode/
  • Kilo: ~/.config/kilo/ または ~/.kilo/
  • Gemini CLI: ~/.gemini/
  • Codex: ~/.codex/(コマンドの代わりにスキルを使用)
  • Copilot: ~/.github/
  • Antigravity: ~/.gemini/antigravity/(グローバル)または ./.agent/(ローカル)

プロジェクトファイル(.planning/)

.planning/
├── PROJECT.md              # プロジェクトビジョン、制約、決定事項、発展ルール
├── REQUIREMENTS.md         # スコープ付き要件(v1/v2/スコープ外)
├── ROADMAP.md              # ステータス追跡付きフェーズ分解
├── STATE.md                # 生きたメモリ:位置、決定事項、ブロッカー、メトリクス
├── config.json             # ワークフロー設定
├── MILESTONES.md           # 完了済みマイルストーンのアーカイブ
├── research/               # /gsd-new-project によるドメインリサーチ
│   ├── SUMMARY.md
│   ├── STACK.md
│   ├── FEATURES.md
│   ├── ARCHITECTURE.md
│   └── PITFALLS.md
├── codebase/               # ブラウンフィールドマッピング(/gsd-map-codebase から)
│   ├── STACK.md
│   ├── ARCHITECTURE.md
│   ├── CONVENTIONS.md
│   ├── CONCERNS.md
│   ├── STRUCTURE.md
│   ├── TESTING.md
│   └── INTEGRATIONS.md
├── phases/
│   └── XX-phase-name/
│       ├── XX-CONTEXT.md       # ユーザー設定(discuss-phase から)
│       ├── XX-RESEARCH.md      # エコシステムリサーチ(plan-phase から)
│       ├── XX-YY-PLAN.md       # 実行プラン
│       ├── XX-YY-SUMMARY.md    # 実行結果
│       ├── XX-VERIFICATION.md  # 実行後の検証
│       ├── XX-VALIDATION.md    # ナイキストテストカバレッジマッピング
│       ├── XX-UI-SPEC.md       # UIデザインコントラクト(ui-phase から)
│       ├── XX-UI-REVIEW.md     # ビジュアル監査スコア(ui-review から)
│       └── XX-UAT.md           # ユーザー受け入れテスト結果
├── quick/                  # クイックタスク追跡
│   └── YYMMDD-xxx-slug/
│       ├── PLAN.md
│       └── SUMMARY.md
├── todos/
│   ├── pending/            # キャプチャされたアイデア
│   └── done/               # 完了済みtodo
├── threads/               # 永続コンテキストスレッド(/gsd-thread から)
├── seeds/                 # 将来に向けたアイデア(/gsd-plant-seed から)
├── debug/                  # アクティブなデバッグセッション
│   ├── *.md                # アクティブセッション
│   ├── resolved/           # アーカイブ済みセッション
│   └── knowledge-base.md   # 永続的なデバッグ知見
├── ui-reviews/             # /gsd-ui-review からのスクリーンショット(gitignore対象)
└── continue-here.md        # コンテキスト引き継ぎ(pause-work から)

インストーラーアーキテクチャ

インストーラー(bin/install.js、約3,000行)は以下を処理します:

  1. ランタイム検出 — インタラクティブプロンプトまたはCLIフラグ(--claude、--opencode、--gemini、--kilo、--codex、--copilot、--antigravity、--all)
  2. インストール先の選択 — グローバル(--global)またはローカル(--local)
  3. ファイルデプロイ — コマンド、ワークフロー、リファレンス、テンプレート、エージェント、フックをコピー
  4. ランタイム適応 — ランタイムごとにファイル内容を変換:
    • Claude Code: そのまま使用
    • OpenCode: コマンド/エージェントをOpenCode互換のフラットコマンド + サブエージェント形式に変換
    • Kilo: OpenCode変換パイプラインをKiloの設定パスで再利用
    • Codex: コマンドからTOML設定 + スキルを生成
    • Copilot: ツール名をマッピング(Read→read、Bash→executeなど)
    • Gemini: フックイベント名を調整(PostToolUse の代わりに AfterTool)
    • Antigravity: Googleモデル同等品によるスキルファースト
  5. パス正規化 — ~/.claude/ パスをランタイム固有のパスに置換
  6. 設定統合 — ランタイムの settings.json にフックを登録
  7. パッチバックアップ — v1.17以降、ローカルで変更されたファイルを /gsd-update --reapply 用に gsd-local-patches/ へバックアップ
  8. マニフェスト追跡 — クリーンアンインストールのために gsd-file-manifest.json を書き込み
  9. アンインストールモード — --uninstall ですべてのGSDファイル、フック、設定を削除

プラットフォーム対応

  • Windows: 子プロセスでの windowsHide、保護ディレクトリへのEPERM/EACCES対策、パスセパレーターの正規化
  • WSL: WindowsのNode.jsがWSL上で実行されていることを検出し、パスの不一致について警告
  • Docker/CI: カスタム設定ディレクトリの場所に CLAUDE_CONFIG_DIR 環境変数をサポート

フックシステム

アーキテクチャ

Runtime Engine (Claude Code / Gemini CLI)
    │
    ├── statusLine event ──► gsd-statusline.js
    │   Reads: stdin (session JSON)
    │   Writes: stdout (formatted status), /tmp/claude-ctx-{session}.json (bridge)
    │
    ├── PostToolUse/AfterTool event ──► gsd-context-monitor.js
    │   Reads: stdin (tool event JSON), /tmp/claude-ctx-{session}.json (bridge)
    │   Writes: stdout (hookSpecificOutput with additionalContext warning)
    │
    └── SessionStart event ──► gsd-check-update.js
        Reads: VERSION file
        Writes: ~/.claude/cache/gsd-update-check.json (spawns background process)

コンテキストモニターの閾値

コンテキスト残量 レベル エージェントの動作
> 35% Normal 警告なし
≤ 35% WARNING 「新しい複雑な作業の開始を避けてください」
≤ 25% CRITICAL 「コンテキストがほぼ枯渇、ユーザーに通知してください」

デバウンス:繰り返し警告の間隔は5回のツール使用。重大度のエスカレーション(WARNING→CRITICAL)はデバウンスをバイパスします。

安全性の特性

  • すべてのフックはtry/catchでラップされ、エラー時はサイレントに終了
  • stdin タイムアウトガード(3秒)でパイプの問題によるハングを防止
  • 古いメトリクス(60秒超)は無視される
  • ブリッジファイルの欠落は適切に処理される(サブエージェント、新規セッション)
  • コンテキストモニターはアドバイザリーのみ — ユーザーの設定を上書きする命令的なコマンドは発行しない

セキュリティフック(v1.27)

Prompt Guard(gsd-prompt-guard.js):

  • .planning/ ファイルへのWrite/Edit時にトリガー
  • プロンプトインジェクションパターン(ロールオーバーライド、指示バイパス、systemタグインジェクション)をスキャン
  • アドバイザリーのみ — 検出をログに記録するが、ブロックはしない
  • フックの独立性のため、パターンはインライン化(security.cjs のサブセット)

Workflow Guard(gsd-workflow-guard.js):

  • .planning/ 以外のファイルへのWrite/Edit時にトリガー
  • GSDワークフローコンテキスト外での編集を検出(アクティブな /gsd- コマンドやTaskサブエージェントがない場合)
  • 状態追跡される変更には /gsd-quick や /gsd-fast の使用をアドバイス
  • hooks.workflow_guard: true によるオプトイン(デフォルト: false)

ランタイム抽象化

GSDは統一されたコマンド/ワークフローアーキテクチャを通じて複数のAIコーディングランタイムをサポートしています:

ランタイム コマンド形式 エージェントシステム 設定場所
Claude Code /gsd-command Task起動 ~/.claude/
OpenCode /gsd-command サブエージェントモード ~/.config/opencode/
Kilo /gsd-command サブエージェントモード ~/.config/kilo/
Gemini CLI /gsd-command Task起動 ~/.gemini/
Codex $gsd-command スキル ~/.codex/
Copilot /gsd-command エージェント委譲 ~/.github/
Antigravity スキル スキル ~/.gemini/antigravity/

抽象化ポイント

  1. ツール名マッピング — 各ランタイムは独自のツール名を持つ(例:ClaudeのBash → Copilotのexecute)
  2. フックイベント名 — Claude Codeは PostToolUse、Geminiは AfterTool を使用
  3. エージェントフロントマター — 各ランタイムは独自のエージェント定義形式を持つ
  4. パス規約 — 各ランタイムは異なるディレクトリに設定を保存
  5. モデル参照 — inherit プロファイルにより、GSDはランタイムのモデル選択に委譲

インストーラーはインストール時にすべての変換を処理します。ワークフローとエージェントはClaude Codeのネイティブ形式で記述され、デプロイ時に変換されます。