diff --git a/.changeset/lucid-docs-rebrand.md b/.changeset/lucid-docs-rebrand.md new file mode 100644 index 000000000..64a5882ea --- /dev/null +++ b/.changeset/lucid-docs-rebrand.md @@ -0,0 +1,5 @@ +--- +type: Changed +pr: 605 +--- +**Public documentation rebranded to GSD Core and restructured around Diataxis** — the root README and `docs/` are reorganised into tutorials, how-to guides, reference, and explanation, with new how-to guides, schema references (STATE.md / CONTEXT.md / PLAN.md / planning artifacts), and full cross-linking; legacy `gsd-build` references are updated to `open-gsd`, and the localised doc trees (ja-JP, ko-KR, pt-BR, zh-CN) are regenerated to match. Internal filesystem paths are unchanged. (#605) diff --git a/README.ja-JP.md b/README.ja-JP.md index 0a9a8683c..449483459 100644 --- a/README.ja-JP.md +++ b/README.ja-JP.md @@ -1,16 +1,12 @@ -> ⚠️ This is an active fork. See the [English README](README.md) for the full notice about the original repo. -
# GSD Core **Git. Ship. Done.** -[English](README.md) · [Português](README.pt-BR.md) · [简体中文](README.zh-CN.md) · **日本語** +[English](README.md) · [Português](README.pt-BR.md) · [简体中文](README.zh-CN.md) · **日本語** · [한국어](README.ko-KR.md) -**Claude Code、OpenCode、Gemini CLI、Kilo、Codex、Copilot、Cursor、Windsurf、Antigravity、Augment、Trae、Cline向けの軽量かつ強力なメタプロンプティング、コンテキストエンジニアリング、仕様駆動開発システム。** - -**コンテキストロット(Claudeがコンテキストウィンドウを消費するにつれ品質が劣化する現象)を解決します。** +**Claude Code、OpenCode、Gemini CLI、Kilo、Codex、Copilot、Cursor、Windsurf などに対応した、軽量なメタプロンプティング・コンテキストエンジニアリング・仕様駆動開発システムです。** [![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) [![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) @@ -19,830 +15,88 @@ [![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE) -
- -```bash -npx @opengsd/gsd-core@latest -``` - -**Mac、Windows、Linuxで動作します。** - -
- -![GSD Install](assets/terminal.svg) - -
- -*「自分が何を作りたいか明確に分かっていれば、これが確実に作ってくれる。嘘じゃない。」* - -*「SpecKit、OpenSpec、Taskmasterを試してきたが、これが一番良い結果を出してくれた。」* - -*「Claude Codeへの最強の追加ツール。過剰な設計は一切なし。文字通り、やるべきことをやってくれる。」* - -
- -**Amazon、Google、Shopify、Webflowのエンジニアに信頼されています。** - -[なぜ作ったのか](#なぜ作ったのか) · [仕組み](#仕組み) · [コマンド](#コマンド) · [なぜ効果的なのか](#なぜ効果的なのか) · [ユーザーガイド](docs/ja-JP/USER-GUIDE.md) -
--- -## なぜ作ったのか +## GSD Core とは -私はソロ開発者です。コードは自分で書きません — Claude Codeが書きます。 - -仕様駆動開発ツールは他にもあります。BMAD、Spekkitなど。しかしどれも必要以上に複雑にしているように見えます(スプリントセレモニー、ストーリーポイント、ステークホルダーとの同期、振り返り、Jiraワークフローなど)。あるいは、何を作ろうとしているのかの全体像を本当には理解していません。私は50人規模のソフトウェア会社ではありません。エンタープライズごっこをしたいわけではありません。ただ、うまく動く素晴らしいものを作りたいクリエイティブな人間です。 - -だからGSDを作りました。複雑さはシステムの中にあり、ワークフローの中にはありません。裏側では、コンテキストエンジニアリング、XMLプロンプトフォーマッティング、サブエージェントのオーケストレーション、状態管理が動いています。あなたが目にするのは、ただ動くいくつかのコマンドだけです。 - -このシステムは、Claudeが仕事をし、*かつ*検証するために必要なすべてを提供します。私はこのワークフローを信頼しています。ちゃんといい仕事をしてくれます。 - -これがGSDです。エンタープライズごっこは一切なし。Claude Codeを使って一貫してクールなものを作るための、非常に効果的なシステムです。 - -— **TÂCHES** +GSD Core は、コンテキストエンジニアリングと仕様駆動開発のフレームワークです。AI コーディングエージェント(Claude Code、Codex、Gemini CLI、Copilot、Cursor など)を規律あるフェーズループで動かします。[コンテキストの腐敗](docs/ja-JP/explanation/context-engineering.md)—AI がコンテキストウィンドウを埋めるにつれて出力品質が低下する問題—を解決するために、重いリサーチ・計画・実行作業をすべて新鮮なコンテキストのサブエージェントで実行し、メインセッションをスリムに保ちます。 --- -バイブコーディングは評判が悪い。やりたいことを説明し、AIがコードを生成し、スケールすると崩壊する一貫性のないゴミが出来上がる。 +## 動作原理 -GSDはそれを解決します。Claude Codeを信頼性の高いものにするコンテキストエンジニアリングレイヤーです。アイデアを説明し、システムに必要なすべてを抽出させ、Claude Codeに仕事をさせましょう。 +各マイルストーンは同じ 5 ステップのループを、1 フェーズずつ繰り返します。 + +1. **Discuss(議論)** — 計画を立てる前に実装上の決定事項を記録する +2. **Plan(計画)** — リサーチし、タスクを分解し、計画が新鮮なコンテキストウィンドウに収まることを確認する +3. **Execute(実行)** — 並列ウェーブで計画を実行する。各エグゼキューターはクリーンな 200k トークンのコンテキストから開始する +4. **Verify(検証)** — 構築されたものを確認し、完了を宣言する前に診断・修正する +5. **Ship(出荷)** — PR を作成し、フェーズをアーカイブし、次のフェーズに進む --- -## こんな人のために - -やりたいことを説明するだけで正しく構築してほしい人 — 50人のエンジニア組織を運営しているふりをせずに。 - -ビルトインの品質ゲートが本当の問題を検出します:スキーマドリフト検出はマイグレーション漏れのORM変更をフラグし、セキュリティ強制は検証を脅威モデルに紐付け、スコープ削減検出はプランナーが要件を暗黙的に落とすのを防止します。 - -### 機能ハイライト - -正規のバージョンは npm に公開された `@opengsd/gsd-core` のバージョンと `package.json` です。`docs/` の古いリリースノートは継続性の履歴として残しているだけで、現在の GSD Core パッケージバージョンではありません。 - -- **`--minimal` インストールプロファイル** — エイリアス `--core-only`。メインループの6スキル(`new-project`、`discuss-phase`、`plan-phase`、`execute-phase`、`help`、`update`)のみをインストールし、`gsd-*` サブエージェントはゼロ。コールドスタート時のシステムプロンプトのオーバーヘッドを ~12kトークンから ~700トークンへ削減(≥94%減)。32K〜128Kコンテキストのローカル LLM やトークン課金 API に有効。 -- **`/gsd-phase --edit`** — `ROADMAP.md` 上の既存フェーズの任意フィールドをその場で編集(番号や位置は変更されない)。`--force` で確認 diff をスキップ、`depends_on` の参照を検証し、書き込み時に `STATE.md` も更新。 -- **マージ後ビルド & テストゲート** — `execute-phase` のステップ 5.6 が `workflow.build_command` の設定を自動検出し、無ければ Xcode(`.xcodeproj`)、Makefile、Justfile、Cargo、Go、Python、npm の順にフォールバック。Xcode/iOS プロジェクトでは `xcodebuild build` と `xcodebuild test` を自動実行。並列・直列両モードで動作。 -- **ランタイム別レビューモデル選択** — `review.models.` で各外部レビュー CLI(codex、gemini など)が使うモデルをプランナー/実行プロファイルとは独立に指定可能。 -- **ワークストリーム設定の継承** — `GSD_WORKSTREAM` が設定されている場合、ルートの `.planning/config.json` を先に読み込み、ワークストリーム設定をディープマージ(衝突時はワークストリーム側が優先)。ワークストリーム設定で明示的に `null` を指定するとルート値を上書き可能。 -- **スキルの統合:86 → 59** — 4つの新しいグループ化スキル(`capture`、`phase`、`config`、`workspace`)が31のマイクロスキルを吸収。既存の親スキル6つはラップアップやサブ操作をフラグ化:`update --sync/--reapply`、`sketch --wrap-up`、`spike --wrap-up`、`map-codebase --fast/--query`、`code-review --fix`、`progress --do/--next`。機能の欠損なし。 - ---- - -## はじめに +## クイックスタート ```bash npx @opengsd/gsd-core@latest ``` -インストーラーが以下の選択を求めます: -1. **ランタイム** — Claude Code、OpenCode、Gemini、Kilo、Codex、Copilot、Cursor、Windsurf、Antigravity、Augment、Trae、Cline、またはすべて(インタラクティブ複数選択 — 1回のインストールセッションで複数のランタイムを選択可能) -2. **インストール先** — グローバル(全プロジェクト)またはローカル(現在のプロジェクトのみ) +インストーラーはランタイム(Claude Code、OpenCode、Gemini CLI、Kilo、Codex、Copilot、Cursor、Windsurf など)とグローバルインストールかローカルインストールかを尋ねます。クロスランタイム互換性のためにインストーラーが必要です。`agents/` や `commands/` からファイルを直接コピーしないでください。 -確認方法: -- Claude Code / Gemini / Copilot / Antigravity: `/gsd-help` -- OpenCode / Kilo / Augment / Trae: `/gsd-help` -- Codex: `$gsd-help` -- Cline: GSDは`.clinerules`経由でインストール — `.clinerules`の存在を確認 +別のランタイムをお使いの場合や Node.js がない場合は [ランタイムへのインストール](docs/ja-JP/how-to/install-on-your-runtime.md) を参照してください。 -> [!NOTE] -> Claude Code 2.1.88+とCodexはスキル(`skills/gsd-*/SKILL.md`)としてインストールされます。Clineは`.clinerules`を使用します。インストーラーがすべての形式を自動的に処理します。 - -> [!TIP] -> ソースベースのインストールやnpmが利用できない環境については、**[docs/manual-update.md](docs/manual-update.md)**を参照してください。 - -### 最新の状態を保つ - -GSDは急速に進化しています。定期的にアップデートしてください: +インストール後、最初のプロジェクトを開始します。 ```bash -npx @opengsd/gsd-core@latest -``` - -
-非インタラクティブインストール(Docker、CI、スクリプト) - -```bash -# Claude Code -npx @opengsd/gsd-core --claude --global # ~/.claude/ にインストール -npx @opengsd/gsd-core --claude --local # ./.claude/ にインストール - -# OpenCode -npx @opengsd/gsd-core --opencode --global # ~/.config/opencode/ にインストール - -# Gemini CLI -npx @opengsd/gsd-core --gemini --global # ~/.gemini/ にインストール - -# Kilo -npx @opengsd/gsd-core --kilo --global # ~/.config/kilo/ にインストール -npx @opengsd/gsd-core --kilo --local # ./.kilo/ にインストール - -# Codex -npx @opengsd/gsd-core --codex --global # ~/.codex/ にインストール -npx @opengsd/gsd-core --codex --local # ./.codex/ にインストール - -# Copilot -npx @opengsd/gsd-core --copilot --global # ~/.github/ にインストール -npx @opengsd/gsd-core --copilot --local # ./.github/ にインストール - -# Cursor CLI -npx @opengsd/gsd-core --cursor --global # ~/.cursor/ にインストール -npx @opengsd/gsd-core --cursor --local # ./.cursor/ にインストール - -# Antigravity -npx @opengsd/gsd-core --antigravity --global # ~/.gemini/antigravity/ にインストール -npx @opengsd/gsd-core --antigravity --local # ./.agent/ にインストール - -# Augment -npx @opengsd/gsd-core --augment --global # ~/.augment/ にインストール -npx @opengsd/gsd-core --augment --local # ./.augment/ にインストール - -# Trae -npx @opengsd/gsd-core --trae --global # ~/.trae/ にインストール -npx @opengsd/gsd-core --trae --local # ./.trae/ にインストール - -# Cline -npx @opengsd/gsd-core --cline --global # ~/.cline/ にインストール -npx @opengsd/gsd-core --cline --local # ./.clinerules にインストール - -# 全ランタイム -npx @opengsd/gsd-core --all --global # すべてのディレクトリにインストール -``` - -`--global`(`-g`)または `--local`(`-l`)でインストール先の質問をスキップできます。 -`--claude`、`--opencode`、`--gemini`、`--kilo`、`--codex`、`--copilot`、`--cursor`、`--windsurf`、`--antigravity`、`--augment`、`--trae`、`--cline`、または `--all` でランタイムの質問をスキップできます。 - -
- -
-開発用インストール - -リポジトリをクローンしてインストーラーをローカルで実行します: - -```bash -git clone https://github.com/open-gsd/gsd-core.git -cd gsd-core -node bin/install.js --claude --local -``` - -コントリビュートする前に変更をテストするため、`./.claude/` にインストールされます。 - -
- -### 推奨:パーミッションスキップモード - -GSDは摩擦のない自動化のために設計されています。Claude Codeを以下のように実行してください: - -```bash -claude --dangerously-skip-permissions -``` - -> [!TIP] -> これがGSDの意図された使い方です — `date` や `git commit` を50回も承認するために止まっていては目的が台無しです。 - -
-代替案:詳細なパーミッション設定 - -このフラグを使いたくない場合は、プロジェクトの `.claude/settings.json` に以下を追加してください: - -```json -{ - "permissions": { - "allow": [ - "Bash(date:*)", - "Bash(echo:*)", - "Bash(cat:*)", - "Bash(ls:*)", - "Bash(mkdir:*)", - "Bash(wc:*)", - "Bash(head:*)", - "Bash(tail:*)", - "Bash(sort:*)", - "Bash(grep:*)", - "Bash(tr:*)", - "Bash(git add:*)", - "Bash(git commit:*)", - "Bash(git status:*)", - "Bash(git log:*)", - "Bash(git diff:*)", - "Bash(git tag:*)" - ] - } -} -``` - -
- ---- - -## 仕組み - -> **既存のコードがある場合は?** まず `/gsd-map-codebase` を実行してください。並列エージェントが起動し、スタック、アーキテクチャ、規約、懸念点を分析します。その後 `/gsd-new-project` がコードベースを把握した状態で動作し、質問は追加する内容に焦点を当て、計画時にはパターンが自動的に読み込まれます。 - -### 1. プロジェクトの初期化 - -``` /gsd-new-project ``` -1つのコマンド、1つのフロー。システムが以下を行います: - -1. **質問** — アイデアを完全に理解するまで質問します(目標、制約、技術的な好み、エッジケース) -2. **リサーチ** — 並列エージェントが起動しドメインを調査します(オプションですが推奨) -3. **要件定義** — v1、v2、スコープ外を抽出します -4. **ロードマップ** — 要件に紐づくフェーズを作成します - -ロードマップを承認します。これでビルドの準備が整いました。 - -**作成されるファイル:** `PROJECT.md`、`REQUIREMENTS.md`、`ROADMAP.md`、`STATE.md`、`.planning/research/` +初めての方は [はじめてのプロジェクト](docs/ja-JP/tutorials/your-first-project.md) で、インストールから最初のフェーズ出荷までのガイド付きチュートリアルをご覧ください。 --- -### 2. フェーズの議論 +## ドキュメント -``` -/gsd-discuss-phase 1 -``` +**チュートリアル** — 実践で学ぶ: +- [はじめてのプロジェクト](docs/ja-JP/tutorials/your-first-project.md) +- [既存コードベースのオンボーディング](docs/ja-JP/tutorials/onboarding-an-existing-codebase.md) -**ここで実装の方向性を決めます。** +**ハウツーガイド** — タスク別レシピ: +- [ランタイムへのインストール](docs/ja-JP/how-to/install-on-your-runtime.md) +- [フェーズを計画する](docs/ja-JP/how-to/plan-a-phase.md) +- [検証と出荷](docs/ja-JP/how-to/verify-and-ship.md) +- … [すべてのハウツーガイドを見る](docs/ja-JP/README.md#how-to-guides) -ロードマップには各フェーズにつき1〜2文しかありません。あなたが*想像する*通りに構築するには十分なコンテキストではありません。このステップでは、リサーチや計画の前にあなたの好みを記録します。 +**リファレンス** — 信頼できる情報: +- [コマンド](docs/ja-JP/COMMANDS.md) +- [設定](docs/ja-JP/CONFIGURATION.md) +- [CLI ツール](docs/ja-JP/CLI-TOOLS.md) -システムがフェーズを分析し、構築内容に基づいてグレーゾーンを特定します: +**解説** — コンセプトと設計上の決定: +- [コンテキストエンジニアリング](docs/ja-JP/explanation/context-engineering.md) +- [フェーズループ](docs/ja-JP/explanation/the-phase-loop.md) +- [アーキテクチャ](docs/ja-JP/ARCHITECTURE.md) -- **ビジュアル機能** → レイアウト、密度、インタラクション、空状態 -- **API/CLI** → レスポンス形式、フラグ、エラーハンドリング、詳細度 -- **コンテンツシステム** → 構造、トーン、深さ、フロー -- **整理タスク** → グルーピング基準、命名、重複、例外 - -選択した各領域について、あなたが満足するまで質問します。出力される `CONTEXT.md` は、次の2つのステップに直接反映されます: - -1. **リサーチャーが読む** — どんなパターンを調査すべきかを把握(「ユーザーはカードレイアウトを希望」→ カードコンポーネントライブラリを調査) -2. **プランナーが読む** — どの決定が確定済みかを把握(「無限スクロールに決定」→ スクロール処理を計画に含める) - -ここで深く掘り下げるほど、システムはあなたが本当に望むものを構築します。スキップすれば妥当なデフォルトが使われます。活用すれば*あなたのビジョン*が反映されます。 - -**作成されるファイル:** `{phase_num}-CONTEXT.md` - -> **前提モード:** 質問よりもコードベース分析を優先したい場合は、`/gsd-settings` で `workflow.discuss_mode` を `assumptions` に設定してください。システムがコードを読み、何をなぜそうするかを提示し、間違っている部分だけ修正を求めます。詳しくは[ディスカスモード](docs/ja-JP/workflow-discuss-mode.md)をご覧ください。 +全インデックス: [docs/ja-JP/README.md](docs/ja-JP/README.md)。他の言語: [日本語](README.ja-JP.md) · [한국어](README.ko-KR.md) · [Português](README.pt-BR.md) · [简体中文](README.zh-CN.md)。 --- -### 3. フェーズの計画 +## なぜ機能するのか -``` -/gsd-plan-phase 1 -``` +多くの AI コーディング環境は、コンテキストの膨張が出力品質を静かに低下させ、セッション間に共有メモリがなく、コードが実際に動作するかを検証するものがないため、大規模では失敗します。GSD Core はこの 3 つすべてを解決します。重い作業は新鮮なサブエージェントで実行され、`STATE.md` や `CONTEXT.md` などの構造化アーティファクトがセッション境界を越えて保存され、検証ステップが構築されたものを確認してフェーズを完了と宣言する前に修正計画を生成します。詳細な理由については [docs/ja-JP/explanation/context-engineering.md](docs/ja-JP/explanation/context-engineering.md) を参照してください。 -システムが以下を行います: - -1. **リサーチ** — CONTEXT.mdの決定事項をもとに、このフェーズの実装方法を調査します -2. **計画** — XML構造で2〜3個のアトミックなタスクプランを作成します -3. **検証** — プランを要件と照合し、合格するまでループします - -各プランは新しいコンテキストウィンドウで実行できるほど小さくなっています。品質の劣化も「もっと簡潔にしますね」もありません。 - -**作成されるファイル:** `{phase_num}-RESEARCH.md`、`{phase_num}-{N}-PLAN.md` +トラブルシューティングは [docs/ja-JP/how-to/recover-and-troubleshoot.md](docs/ja-JP/how-to/recover-and-troubleshoot.md) を参照してください。 --- -### 4. フェーズの実行 +## コミュニティ -``` -/gsd-execute-phase 1 -``` - -システムが以下を行います: - -1. **ウェーブでプランを実行** — 可能な限り並列、依存関係がある場合は逐次 -2. **プランごとにフレッシュなコンテキスト** — 実装に200kトークンをフル活用、蓄積されたゴミはゼロ -3. **タスクごとにコミット** — 各タスクが独自のアトミックコミットを取得 -4. **目標に対して検証** — コードベースがフェーズの約束を果たしているか確認 - -席を離れて、戻ってきたらクリーンなgit履歴とともに完了した作業が待っています。 - -**ウェーブ実行の仕組み:** - -プランは依存関係に基づいて「ウェーブ」にグループ化されます。各ウェーブ内のプランは並列実行されます。ウェーブは逐次実行されます。 - -``` -┌────────────────────────────────────────────────────────────────────┐ -│ PHASE EXECUTION │ -├────────────────────────────────────────────────────────────────────┤ -│ │ -│ WAVE 1 (parallel) WAVE 2 (parallel) WAVE 3 │ -│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ -│ │ Plan 01 │ │ Plan 02 │ → │ Plan 03 │ │ Plan 04 │ → │ Plan 05 │ │ -│ │ │ │ │ │ │ │ │ │ │ │ -│ │ User │ │ Product │ │ Orders │ │ Cart │ │ Checkout│ │ -│ │ Model │ │ Model │ │ API │ │ API │ │ UI │ │ -│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ -│ │ │ ↑ ↑ ↑ │ -│ └───────────┴──────────────┴───────────┘ │ │ -│ Dependencies: Plan 03 needs Plan 01 │ │ -│ Plan 04 needs Plan 02 │ │ -│ Plan 05 needs Plans 03 + 04 │ │ -│ │ -└────────────────────────────────────────────────────────────────────┘ -``` - -**ウェーブが重要な理由:** -- 独立したプラン → 同じウェーブ → 並列実行 -- 依存するプラン → 後のウェーブ → 依存関係を待つ -- ファイル競合 → 逐次プランまたは同一プラン内 - -これが「バーティカルスライス」(Plan 01: ユーザー機能をエンドツーエンド)が「ホリゾンタルレイヤー」(Plan 01: 全モデル、Plan 02: 全API)より並列化に適している理由です。 - -**作成されるファイル:** `{phase_num}-{N}-SUMMARY.md`、`{phase_num}-VERIFICATION.md` - ---- - -### 5. 作業の検証 - -``` -/gsd-verify-work 1 -``` - -**ここで実際に動作するか確認します。** - -自動検証はコードの存在とテストの合格を確認します。しかし、その機能は*期待通りに*動作していますか?ここはあなたが実際に使ってみる場です。 - -システムが以下を行います: - -1. **テスト可能な成果物を抽出** — 今できるようになっているはずのこと -2. **1つずつ案内** — 「メールでログインできますか?」はい/いいえ、または何が問題かを説明 -3. **障害を自動診断** — デバッグエージェントが起動し根本原因を特定 -4. **検証済みの修正プランを作成** — 即座に再実行可能 - -すべてパスすれば次に進みます。何か壊れていれば、手動でデバッグする必要はありません — 作成された修正プランで `/gsd-execute-phase` を再度実行するだけです。 - -**作成されるファイル:** `{phase_num}-UAT.md`、問題が見つかった場合は修正プラン - ---- - -### 6. 繰り返し → シップ → 完了 → 次のマイルストーン - -``` -/gsd-discuss-phase 2 -/gsd-plan-phase 2 -/gsd-execute-phase 2 -/gsd-verify-work 2 -/gsd-ship 2 # 検証済みの作業からPRを作成 -... -/gsd-complete-milestone -/gsd-new-milestone -``` - -またはGSDに次のステップを自動判定させます: - -``` -/gsd-progress --next # 次のステップを自動検出して実行 -``` - -**discuss → plan → execute → verify → ship** のループをマイルストーン完了まで繰り返します。 - -ディスカッション中のインプットを速くしたい場合は、`/gsd-discuss-phase --batch` で1つずつではなく小さなグループにまとめた質問に一括で回答できます。`--chain` を使うと、ディスカッションからプラン+実行まで途中で止まらずに自動チェインできます。 - -各フェーズであなたのインプット(discuss)、適切なリサーチ(plan)、クリーンな実行(execute)、人間による検証(verify)が行われます。コンテキストは常にフレッシュ。品質は常に高い。 - -すべてのフェーズが完了したら、`/gsd-complete-milestone` でマイルストーンをアーカイブしリリースをタグ付けします。 - -次に `/gsd-new-milestone` で次のバージョンを開始します — `new-project` と同じフローですが既存のコードベース向けです。次に構築したいものを説明し、システムがドメインを調査し、要件をスコーピングし、新しいロードマップを作成します。各マイルストーンはクリーンなサイクルです:定義 → 構築 → シップ。 - ---- - -### クイックモード - -``` -/gsd-quick -``` - -**フル計画が不要なアドホックタスク向け。** - -クイックモードはGSDの保証(アトミックコミット、状態トラッキング)をより速いパスで提供します: - -- **同じエージェント** — プランナー + エグゼキューター、同じ品質 -- **オプションステップをスキップ** — デフォルトではリサーチ、プランチェッカー、ベリファイアなし -- **別トラッキング** — `.planning/quick/` に保存、フェーズとは別管理 - -**`--discuss` フラグ:** 計画前にグレーゾーンを洗い出す軽量ディスカッション。 - -**`--research` フラグ:** 計画前にフォーカスされたリサーチャーを起動。実装アプローチ、ライブラリの選択肢、落とし穴を調査します。タスクへのアプローチが不明な場合に使用してください。 - -**`--full` フラグ:** 全フェーズを有効化 — ディスカッション + リサーチ + プランチェック + 検証。クイックタスク形式のフルGSDパイプライン。 - -**`--validate` フラグ:** プランチェック + 実行後の検証のみを有効化(以前の `--full` の動作)。 - -フラグは組み合わせ可能:`--discuss --research --validate` でディスカッション + リサーチ + プランチェック + 検証が行われます。 - -``` -/gsd-quick -> What do you want to do? "Add dark mode toggle to settings" -``` - -**作成されるファイル:** `.planning/quick/001-add-dark-mode-toggle/PLAN.md`、`SUMMARY.md` - ---- - -## なぜ効果的なのか - -### コンテキストエンジニアリング - -Claude Codeは必要なコンテキストを与えれば非常に強力です。ほとんどの人はそれをしていません。 - -GSDがそれを代わりに処理します: - -| ファイル | 役割 | -|------|--------------| -| `PROJECT.md` | プロジェクトビジョン、常に読み込まれる | -| `research/` | エコシステムの知識(スタック、機能、アーキテクチャ、落とし穴) | -| `REQUIREMENTS.md` | フェーズとのトレーサビリティを持つスコープ済みv1/v2要件 | -| `ROADMAP.md` | 進む方向、完了済みの作業 | -| `STATE.md` | 決定事項、ブロッカー、現在地 — セッション間のメモリ | -| `PLAN.md` | XML構造のアトミックタスク、検証ステップ付き | -| `SUMMARY.md` | 何が起きたか、何が変わったか、履歴にコミット | -| `todos/` | 後で取り組むアイデアやタスクのキャプチャ | -| `threads/` | セッションをまたぐ作業のための永続コンテキストスレッド | -| `seeds/` | 適切なマイルストーンで浮上する将来志向のアイデア | - -サイズ制限はClaudeの品質が劣化するポイントに基づいています。制限内に収まれば、一貫した高品質が得られます。 - -### XMLプロンプトフォーマッティング - -すべてのプランはClaude向けに最適化された構造化XMLです: - -```xml - - Create login endpoint - src/app/api/auth/login/route.ts - - - - - Use jose for JWT (not jsonwebtoken - CommonJS issues). - Validate credentials against users table. - Return httpOnly cookie on success. - - curl -X POST localhost:3000/api/auth/login returns 200 + Set-Cookie - Valid credentials return cookie, invalid return 401 - -``` - -正確な指示。推測なし。検証が組み込み済み。 - -### マルチエージェントオーケストレーション - -すべてのステージで同じパターンを使用します:薄いオーケストレーターが専門エージェントを起動し、結果を収集し、次のステップにルーティングします。 - -| ステージ | オーケストレーターの役割 | エージェントの役割 | -|-------|------------------|-----------| -| リサーチ | 調整し、発見事項を提示 | 4つの並列リサーチャーがスタック、機能、アーキテクチャ、落とし穴を調査 | -| プランニング | 検証し、イテレーションを管理 | プランナーがプランを作成、チェッカーが検証、合格するまでループ | -| 実行 | ウェーブにグループ化し、進捗を追跡 | エグゼキューターがフレッシュな200kコンテキストで並列実装 | -| 検証 | 結果を提示し、次にルーティング | ベリファイアがコードベースを目標と照合、デバッガーが障害を診断 | - -オーケストレーターは重い処理を行いません。エージェントを起動し、待機し、結果を統合します。 - -**結果:** フェーズ全体を実行できます — 深いリサーチ、複数のプランの作成と検証、並列エグゼキューターによる数千行のコード記述、目標に対する自動検証 — そしてメインのコンテキストウィンドウは30〜40%に留まります。処理はフレッシュなサブエージェントコンテキストで行われます。セッションは高速でレスポンシブなままです。 - -### アトミックGitコミット - -各タスクは完了直後に独自のコミットを取得します: - -```bash -abc123f docs(08-02): complete user registration plan -def456g feat(08-02): add email confirmation flow -hij789k feat(08-02): implement password hashing -lmn012o feat(08-02): create registration endpoint -``` - -> [!NOTE] -> **メリット:** git bisectで問題のある正確なタスクを特定可能。各タスクを個別にリバート可能。将来のセッションでClaudeに明確な履歴を提供。AI自動化ワークフローにおけるオブザーバビリティの向上。 - -すべてのコミットは的確で、追跡可能で、意味があります。 - -### モジュラー設計 - -- 現在のマイルストーンにフェーズを追加 -- フェーズ間に緊急作業を挿入 -- マイルストーンを完了して新しく開始 -- すべてを再構築せずにプランを調整 - -ロックインされることはありません。システムが適応します。 - ---- - -## コマンド - -### コアワークフロー - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-new-project [--auto]` | フル初期化:質問 → リサーチ → 要件定義 → ロードマップ | -| `/gsd-discuss-phase [N] [--auto] [--analyze] [--chain]` | 計画前に実装の決定事項をキャプチャ(`--analyze` でトレードオフ分析を追加、`--chain` でプラン+実行へ自動チェイン) | -| `/gsd-plan-phase [N] [--auto] [--reviews]` | フェーズのリサーチ + プラン + 検証(`--reviews` でコードベースレビューの発見事項を読み込み) | -| `/gsd-execute-phase ` | 全プランを並列ウェーブで実行し、完了時に検証 | -| `/gsd-verify-work [N]` | 手動ユーザー受入テスト ¹ | -| `/gsd-ship [N] [--draft]` | 検証済みのフェーズ作業から自動生成された本文付きのPRを作成 | -| `/gsd-progress --next` | 次の論理的なワークフローステップに自動的に進む | -| `/gsd-fast ` | インラインの軽微タスク — 計画を完全にスキップし即座に実行 | -| `/gsd-audit-milestone` | マイルストーンが完了の定義を達成したか検証 | -| `/gsd-complete-milestone` | マイルストーンをアーカイブし、リリースをタグ付け | -| `/gsd-new-milestone [name]` | 次のバージョンを開始:質問 → リサーチ → 要件定義 → ロードマップ | -| `/gsd-forensics [desc]` | 失敗したワークフロー実行の事後分析(停止ループ、欠落成果物、git異常の診断) | -| `/gsd-milestone-summary [version]` | チームオンボーディングとレビュー向けの包括的なプロジェクトサマリーを生成 | - -### ワークストリーム - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-workstreams list` | 全ワークストリームとそのステータスを表示 | -| `/gsd-workstreams create ` | 並列マイルストーン作業用の名前空間付きワークストリームを作成 | -| `/gsd-workstreams switch ` | アクティブなワークストリームを切り替え | -| `/gsd-workstreams complete ` | ワークストリームを完了しマージ | - -### マルチプロジェクトワークスペース - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-workspace --new` | リポジトリのコピー(worktreeまたはクローン)で隔離されたワークスペースを作成 | -| `/gsd-workspace --list` | すべてのGSDワークスペースとそのステータスを表示 | -| `/gsd-workspace --remove` | ワークスペースを削除しworktreeをクリーンアップ | - -### UIデザイン - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-ui-phase [N]` | フロントエンドフェーズ用のUIデザイン契約(UI-SPEC.md)を生成 | -| `/gsd-ui-review [N]` | 実装済みフロントエンドコードの6つの柱によるビジュアル監査(遡及的) | - -### ナビゲーション - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-progress` | 今どこにいる?次は何? | -| `/gsd-progress --next` | 状態を自動検出し次のステップを実行 | -| `/gsd-help` | 全コマンドと使い方ガイドを表示 | -| `/gsd-update` | チェンジログプレビュー付きでGSDをアップデート | -| `/gsd-manager` | 複数フェーズ管理用のインタラクティブコマンドセンター | - -### ブラウンフィールド - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-map-codebase [area]` | new-project前に既存のコードベースを分析 | - -### フェーズ管理 - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-phase` | ロードマップにフェーズを追加 | -| `/gsd-phase --insert [N]` | フェーズ間に緊急作業を挿入 | -| `/gsd-phase --edit [N] [--force]` | 既存フェーズの任意フィールドをその場で編集 — 番号と位置は変更されない | -| `/gsd-phase --remove [N]` | 将来のフェーズを削除し番号を振り直し | -| `/gsd-discuss-phase --assumptions [N]` | 計画前にClaudeの意図するアプローチを確認 | -| `/gsd-audit-milestone --fix` | 監査で見つかったギャップを埋めるフェーズを作成 | - -### セッション - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-pause-work` | フェーズ途中で停止する際の引き継ぎを作成(HANDOFF.jsonを書き込み) | -| `/gsd-resume-work` | 前回のセッションから復元 | -| `/gsd-pause-work --report` | 実行した作業と結果のセッションサマリーを生成 | - -### ワークストリーム - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-workstreams` | 並列ワークストリームを管理(list、create、switch、status、progress、complete) | - -### コード品質 - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-review` | 現在のフェーズまたはブランチのクロスAIピアレビュー | -| `/gsd-pr-branch` | `.planning/` コミットをフィルタリングしたクリーンなPRブランチを作成 | -| `/gsd-audit-uat` | 検証負債を監査 — UATが未実施のフェーズを検出 | - -### バックログ & スレッド - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-capture --seed ` | トリガー条件付きの将来志向のアイデアをキャプチャ — 適切なマイルストーンで浮上 | -| `/gsd-capture --backlog ` | バックログのパーキングロットにアイデアを追加(999.xナンバリング、アクティブシーケンス外) | -| `/gsd-review-backlog` | バックログ項目をレビューし、アクティブマイルストーンに昇格またはstaleエントリを削除 | -| `/gsd-thread [name]` | 永続コンテキストスレッド — 複数セッションにまたがる作業用の軽量クロスセッション知識 | - -### ユーティリティ - -| コマンド | 説明 | -|---------|--------------| -| `/gsd-settings` | モデルプロファイルとワークフローエージェントを設定 | -| `/gsd-config --profile ` | モデルプロファイルを切り替え(quality/balanced/budget/inherit) | -| `/gsd-capture [desc]` | 後で取り組むアイデアをキャプチャ | -| `/gsd-capture --list` | 保留中のtodoを一覧表示 | -| `/gsd-debug [desc]` | 永続状態を持つ体系的デバッグ | -| `/gsd-do ` | フリーフォームテキストを適切なGSDコマンドに自動ルーティング | -| `/gsd-note ` | ゼロフリクションのアイデアキャプチャ — ノートの追加、一覧、todoへの昇格 | -| `/gsd-quick [--full] [--discuss] [--research]` | GSDの保証付きでアドホックタスクを実行(`--full` で全フェーズを有効化、`--discuss` で事前にコンテキストを収集、`--research` で計画前にアプローチを調査) | -| `/gsd-health [--repair]` | `.planning/` ディレクトリの整合性を検証、`--repair` で自動修復 | -| `/gsd-stats` | プロジェクト統計を表示 — フェーズ、プラン、要件、gitメトリクス | -| `/gsd-profile-user [--questionnaire] [--refresh]` | セッション分析から開発者行動プロファイルを生成し、パーソナライズされた応答を提供 | - -¹ Redditユーザー OracleGreyBeard による貢献 - ---- - -## 設定 - -GSDはプロジェクト設定を `.planning/config.json` に保存します。`/gsd-new-project` 実行時に設定するか、後から `/gsd-settings` で更新できます。完全な設定スキーマ、ワークフロートグル、gitブランチオプション、エージェントごとのモデル内訳については、[ユーザーガイド](docs/ja-JP/USER-GUIDE.md#configuration-reference)をご覧ください。 - -### コア設定 - -| 設定 | オプション | デフォルト | 制御内容 | -|---------|---------|---------|------------------| -| `mode` | `yolo`, `interactive` | `interactive` | 自動承認 vs 各ステップで確認 | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | フェーズの粒度 — スコープをどれだけ細かく分割するか(フェーズ × プラン) | - -### モデルプロファイル - -各エージェントが使用するClaudeモデルを制御します。品質とトークン消費のバランスを取ります。 - -| プロファイル | プランニング | 実行 | 検証 | -|---------|----------|-----------|--------------| -| `quality` | Opus | Opus | Sonnet | -| `balanced`(デフォルト) | Opus | Sonnet | Sonnet | -| `budget` | Sonnet | Sonnet | Haiku | -| `inherit` | Inherit | Inherit | Inherit | - -プロファイルの切り替え: -``` -/gsd-config --profile budget -``` - -非Anthropicプロバイダー(OpenRouter、ローカルモデル)を使用する場合や、現在のランタイムのモデル選択に従う場合(例:OpenCode `/model`)は `inherit` を使用してください。 - -または `/gsd-settings` で設定できます。 - -### ワークフローエージェント - -プランニング/実行時に追加のエージェントを起動します。品質は向上しますが、トークンと時間が追加されます。 - -| 設定 | デフォルト | 説明 | -|---------|---------|--------------| -| `workflow.research` | `true` | 各フェーズの計画前にドメインを調査 | -| `workflow.plan_check` | `true` | 実行前にプランがフェーズ目標を達成しているか検証 | -| `workflow.verifier` | `true` | 実行後に必須項目が提供されたか確認 | -| `workflow.auto_advance` | `false` | discuss → plan → execute を停止せずに自動チェーン | -| `workflow.research_before_questions` | `false` | ディスカッション質問の後ではなく前にリサーチを実行 | -| `workflow.discuss_mode` | `'discuss'` | ディスカッションモード:`discuss`(インタビュー)、`assumptions`(コードベースファースト) | -| `workflow.skip_discuss` | `false` | 自律モードでdiscuss-phaseをスキップ | -| `workflow.text_mode` | `false` | リモートセッション用のテキスト専用モード(TUIメニューなし) | - -これらのトグルには `/gsd-settings` を使用するか、呼び出し時にオーバーライドできます: -- `/gsd-plan-phase --skip-research` -- `/gsd-plan-phase --skip-verify` - -### 実行 - -| 設定 | デフォルト | 制御内容 | -|---------|---------|------------------| -| `parallelization.enabled` | `true` | 独立したプランを同時に実行 | -| `planning.commit_docs` | `true` | `.planning/` をgitで追跡 | -| `hooks.context_warnings` | `true` | コンテキストウィンドウの使用量警告を表示 | - -### Gitブランチ - -GSDが実行中にブランチをどう扱うかを制御します。 - -| 設定 | オプション | デフォルト | 説明 | -|---------|---------|---------|--------------| -| `git.branching_strategy` | `none`, `phase`, `milestone` | `none` | ブランチ作成戦略 | -| `git.phase_branch_template` | string | `gsd/phase-{phase}-{slug}` | フェーズブランチのテンプレート | -| `git.milestone_branch_template` | string | `gsd/{milestone}-{slug}` | マイルストーンブランチのテンプレート | - -**戦略:** -- **`none`** — 現在のブランチにコミット(デフォルトのGSD動作) -- **`phase`** — フェーズごとにブランチを作成し、フェーズ完了時にマージ -- **`milestone`** — マイルストーン全体で1つのブランチを作成し、完了時にマージ - -マイルストーン完了時、GSDはスカッシュマージ(推奨)または履歴付きマージを提案します。 - ---- - -## セキュリティ - -### 組み込みセキュリティハードニング - -GSDはv1.27以降、多層防御セキュリティを備えています: - -- **パストラバーサル防止** — ユーザー提供のすべてのファイルパス(`--text-file`、`--prd`)がプロジェクトディレクトリ内に解決されるか検証 -- **プロンプトインジェクション検出** — 集中型 `security.cjs` モジュールが計画成果物に入る前にユーザー提供テキストのインジェクションパターンをスキャン -- **PreToolUseプロンプトガードフック** — `gsd-prompt-guard` が `.planning/` への書き込みに埋め込まれたインジェクションベクトルをスキャン(アドバイザリー、ブロッキングではない) -- **安全なJSON解析** — 不正な `--fields` 引数が状態を破損する前にキャッチ -- **シェル引数バリデーション** — シェル補間前にユーザーテキストをサニタイズ -- **CI対応インジェクションスキャナー** — `prompt-injection-scan.test.cjs` が全エージェント/ワークフロー/コマンドファイルの埋め込みインジェクションベクトルをスキャン - -> [!NOTE] -> GSDはLLMシステムプロンプトとなるマークダウンファイルを生成するため、計画成果物に流入するユーザー制御テキストは潜在的な間接プロンプトインジェクションベクトルとなります。これらの保護は、そのようなベクトルを複数のレイヤーで捕捉するように設計されています。 - -### 機密ファイルの保護 - -GSDのコードベースマッピングおよび分析コマンドは、プロジェクトを理解するためにファイルを読み取ります。**シークレットを含むファイルを保護する**には、Claude Codeの拒否リストに追加してください: - -1. Claude Code設定(`.claude/settings.json` またはグローバル)を開きます -2. 機密ファイルパターンを拒否リストに追加します: - -```json -{ - "permissions": { - "deny": [ - "Read(.env)", - "Read(.env.*)", - "Read(**/secrets/*)", - "Read(**/*credential*)", - "Read(**/*.pem)", - "Read(**/*.key)" - ] - } -} -``` - -これにより、どのコマンドを実行しても、Claudeがこれらのファイルを完全に読み取ることを防ぎます。 - -> [!IMPORTANT] -> GSDにはシークレットのコミットに対する組み込み保護がありますが、多層防御がベストプラクティスです。防御の第一線として、機密ファイルへの読み取りアクセスを拒否してください。 - ---- - -## トラブルシューティング - -**インストール後にコマンドが見つからない?** -- ランタイムを再起動してコマンド/スキルを再読み込みしてください -- `~/.claude/commands/gsd/`(グローバル)または `./.claude/commands/gsd/`(ローカル)にファイルが存在するか確認してください -- Codexの場合、`~/.codex/skills/gsd-*/SKILL.md`(グローバル)または `./.codex/skills/gsd-*/SKILL.md`(ローカル)にスキルが存在するか確認してください - -**コマンドが期待通りに動作しない?** -- `/gsd-help` を実行してインストールを確認してください -- `npx @opengsd/gsd-core` を再実行して再インストールしてください - -**最新バージョンへのアップデート?** -```bash -npx @opengsd/gsd-core@latest -``` - -**Dockerまたはコンテナ化環境を使用している?** - -チルダパス(`~/.claude/...`)でファイル読み取りが失敗する場合、インストール前に `CLAUDE_CONFIG_DIR` を設定してください: -```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global -``` -これにより、コンテナ内で正しく展開されない可能性がある `~` の代わりに絶対パスが使用されます。 - -### アンインストール - -GSDを完全に削除するには: - -```bash -# グローバルインストール -npx @opengsd/gsd-core --claude --global --uninstall -npx @opengsd/gsd-core --opencode --global --uninstall -npx @opengsd/gsd-core --gemini --global --uninstall -npx @opengsd/gsd-core --kilo --global --uninstall -npx @opengsd/gsd-core --codex --global --uninstall -npx @opengsd/gsd-core --copilot --global --uninstall -npx @opengsd/gsd-core --cursor --global --uninstall -npx @opengsd/gsd-core --antigravity --global --uninstall -npx @opengsd/gsd-core --trae --global --uninstall - -# ローカルインストール(現在のプロジェクト) -npx @opengsd/gsd-core --claude --local --uninstall -npx @opengsd/gsd-core --opencode --local --uninstall -npx @opengsd/gsd-core --gemini --local --uninstall -npx @opengsd/gsd-core --kilo --local --uninstall -npx @opengsd/gsd-core --codex --local --uninstall -npx @opengsd/gsd-core --copilot --local --uninstall -npx @opengsd/gsd-core --cursor --local --uninstall -npx @opengsd/gsd-core --antigravity --local --uninstall -npx @opengsd/gsd-core --trae --local --uninstall -``` - -これにより、他の設定を保持しながら、すべてのGSDコマンド、エージェント、フック、設定が削除されます。 - ---- - -## コミュニティポート - -OpenCode、Gemini CLI、Kilo、Codexは `npx @opengsd/gsd-core` でネイティブサポートされています。 - -以下のコミュニティポートがマルチランタイムサポートの先駆けとなりました: - -| プロジェクト | プラットフォーム | 説明 | -|---------|----------|-------------| -| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | OpenCode | オリジナルのOpenCode対応版 | -| gsd-gemini(アーカイブ済み) | Gemini CLI | uberfuzzyによるオリジナルのGemini対応版 | +| プロジェクト | プラットフォーム | +|---------|----------| +| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | オリジナル OpenCode ポート | +| [Discord](https://discord.gg/mYgfVNfA2r) | コミュニティサポート | --- @@ -860,12 +114,12 @@ OpenCode、Gemini CLI、Kilo、Codexは `npx @opengsd/gsd-core` でネイティ ## ライセンス -MITライセンス。詳細は [LICENSE](LICENSE) をご覧ください。 +MIT ライセンス。詳細は [LICENSE](LICENSE) を参照してください。 ---
-**Claude Codeは強力です。GSDはそれを信頼性の高いものにします。** +**Claude Code は強力です。GSD Core はそれを信頼できるものにします。**
diff --git a/README.ko-KR.md b/README.ko-KR.md index 3fc66d306..3bef4570b 100644 --- a/README.ko-KR.md +++ b/README.ko-KR.md @@ -1,5 +1,3 @@ -> ⚠️ This is an active fork. See the [English README](README.md) for the full notice about the original repo. -
# GSD Core @@ -8,9 +6,7 @@ [English](README.md) · [Português](README.pt-BR.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja-JP.md) · **한국어** -**Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf, Antigravity, Augment, Trae, Cline을 위한 가볍고 강력한 메타 프롬프팅, 컨텍스트 엔지니어링, 스펙 기반 개발 시스템.** - -**컨텍스트 rot를 해결합니다 — Claude의 컨텍스트 창이 채워질수록 품질이 저하되는 문제.** +**Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf 등을 위한 경량 메타 프롬프팅, 컨텍스트 엔지니어링, 스펙 기반 개발 시스템.** [![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) [![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) @@ -19,821 +15,88 @@ [![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE) -
- -```bash -npx @opengsd/gsd-core@latest -``` - -**Mac, Windows, Linux 모두 지원.** - -
- -![GSD Install](assets/terminal.svg) - -
- -*"원하는 게 뭔지 명확하게 알고 있다면, 이게 진짜로 만들어줍니다. 과장 없이."* - -*"SpecKit, OpenSpec, Taskmaster 다 써봤는데 — 지금까지 이게 제일 결과가 좋았어요."* - -*"Claude Code에 추가한 것 중 단연 가장 강력합니다. 과하게 엔지니어링하지 않고, 말 그대로 그냥 해냅니다."* - -
- -**Amazon, Google, Shopify, Webflow 엔지니어들이 신뢰합니다.** - -[왜 만들었나](#왜-만들었나) · [작동 방식](#작동-방식) · [명령어](#명령어) · [왜 효과적인가](#왜-효과적인가) · [사용자 가이드](docs/ko-KR/USER-GUIDE.md) -
--- -## 왜 만들었나 +## GSD Core란 -저는 솔로 개발자입니다. 코드는 제가 아니라 Claude Code가 씁니다. - -스펙 기반 개발 도구가 없는 건 아닙니다. BMAD, Speckit 같은 것들이 있죠. 근데 다들 필요 이상으로 복잡합니다 — 스프린트 세리머니, 스토리 포인트, 이해관계자 싱크, 회고, 지라 워크플로우. 저는 50인 규모 소프트웨어 회사가 아니에요. 기업 연극을 하고 싶지 않습니다. 그냥 좋은 걸 만들고 싶은 사람입니다. - -그래서 GSD를 만들었습니다. 복잡함은 시스템 안에 있습니다. 워크플로우에 있는 게 아니라. 뒤에서 컨텍스트 엔지니어링, XML 프롬프트 포맷팅, 서브에이전트 오케스트레이션, 상태 관리가 돌아갑니다. 겉에서 보이는 건 그냥 몇 가지 명령어뿐입니다. - -시스템이 Claude한테 작업하는 데 필요한 것과 검증하는 데 필요한 것을 모두 줍니다. 저는 이 워크플로우를 믿습니다. 그냥 잘 됩니다. - -이게 전부입니다. 기업 역할극 같은 건 없습니다. Claude Code를 일관성 있게 쓰기 위한, 진짜로 잘 되는 시스템입니다. - -— **TÂCHES** - ---- - -바이브코딩은 평판이 안 좋습니다. 원하는 걸 설명하면 AI가 코드를 생성하는데, 규모가 커지면 엉망이 되는 일관성 없는 쓰레기가 나옵니다. - -GSD가 그걸 고칩니다. Claude Code를 신뢰할 수 있게 만드는 컨텍스트 엔지니어링 레이어입니다. 아이디어를 설명하면 시스템이 필요한 걸 다 뽑아내고, Claude Code가 일을 시작합니다. - ---- - -## 이게 누구를 위한 건가 - -원하는 걸 설명하면 제대로 만들어지길 바라는 사람들 — 50인 규모 엔지니어링 조직인 척하지 않아도 되는. - -내장 품질 게이트가 실제 문제를 잡아냅니다: 스키마 드리프트 감지는 마이그레이션 누락된 ORM 변경을 플래그하고, 보안 강제는 검증을 위협 모델에 고정시키고, 스코프 축소 감지는 플래너가 요구사항을 몰래 빠뜨리는 걸 방지합니다. - -### 기능 하이라이트 - -정식 버전은 npm에 게시된 `@opengsd/gsd-core` 버전과 `package.json`을 기준으로 합니다. `docs/`의 예전 릴리스 노트는 연속성 기록으로만 보관되며, 현재 GSD Core 패키지 버전으로 사용하지 않습니다. - -- **`--minimal` 설치 프로파일** — 별칭 `--core-only`. 메인 루프 6개 스킬(`new-project`, `discuss-phase`, `plan-phase`, `execute-phase`, `help`, `update`)만 설치하고 `gsd-*` 서브에이전트는 설치하지 않음. 콜드 스타트 시스템 프롬프트 오버헤드를 ~12k 토큰에서 ~700 토큰으로 축소(≥94% 감소). 32K–128K 컨텍스트의 로컬 LLM이나 토큰 과금 API에 유용. -- **`/gsd-phase --edit`** — `ROADMAP.md`에 있는 기존 단계의 임의 필드를 그 자리에서 수정(번호와 위치는 변경되지 않음). `--force`는 확인 diff를 건너뛰고, `depends_on` 참조를 검증하며 쓰기 시 `STATE.md`도 갱신. -- **머지 후 빌드 & 테스트 게이트** — `execute-phase` 5.6 단계가 `workflow.build_command` 설정을 우선 자동 감지하고, 없으면 Xcode(`.xcodeproj`), Makefile, Justfile, Cargo, Go, Python, npm 순으로 폴백. Xcode/iOS 프로젝트는 `xcodebuild build` 및 `xcodebuild test`를 자동 실행. 병렬·직렬 모드 모두에서 동작. -- **런타임별 리뷰 모델 선택** — `review.models.`로 각 외부 리뷰 CLI(codex, gemini 등)가 플래너/실행 프로파일과 독립적으로 자체 모델을 선택할 수 있음. -- **워크스트림 설정 상속** — `GSD_WORKSTREAM`이 설정되면 루트 `.planning/config.json`을 먼저 로드한 뒤 워크스트림 설정을 딥 머지(충돌 시 워크스트림 우선). 워크스트림 설정에서 명시적 `null`은 루트 값을 덮어씀. -- **스킬 통합: 86 → 59** — 4개의 새로운 그룹 스킬(`capture`, `phase`, `config`, `workspace`)이 31개의 마이크로 스킬을 흡수. 기존 6개의 부모 스킬은 래퍼업/하위 동작을 플래그로 흡수: `update --sync/--reapply`, `sketch --wrap-up`, `spike --wrap-up`, `map-codebase --fast/--query`, `code-review --fix`, `progress --do/--next`. 기능 손실 없음. - ---- - -## 시작하기 - -```bash -npx @opengsd/gsd-core@latest -``` - -설치 중에 다음을 선택합니다: -1. **런타임** — Claude Code, OpenCode, Gemini, Kilo, Codex, Copilot, Cursor, Windsurf, Antigravity, Augment, Trae, Cline, 또는 전체 (대화형 다중 선택 — 한 번에 여러 런타임 선택 가능) -2. **위치** — 전역 (모든 프로젝트) 또는 로컬 (현재 프로젝트만) - -설치가 됐는지 확인하려면: -- Claude Code / Gemini / Copilot / Antigravity: `/gsd-help` -- OpenCode / Kilo / Augment / Trae: `/gsd-help` -- Codex: `$gsd-help` -- Cline: GSD는 `.clinerules`를 통해 설치 — `.clinerules` 존재 여부 확인 - -> [!NOTE] -> Claude Code 2.1.88+와 Codex는 스킬(`skills/gsd-*/SKILL.md`)로 설치됩니다. Cline은 `.clinerules`를 사용합니다. 설치 프로그램이 모든 형식을 자동으로 처리합니다. - -> [!TIP] -> 소스 기반 설치 또는 npm을 사용할 수 없는 환경은 **[docs/manual-update.md](docs/manual-update.md)**를 참조하세요. - -### 업데이트 유지 - -GSD는 빠르게 발전합니다. 주기적으로 업데이트하세요: - -```bash -npx @opengsd/gsd-core@latest -``` - -
-비대화형 설치 (Docker, CI, 스크립트) - -```bash -# Claude Code -npx @opengsd/gsd-core --claude --global # ~/.claude/에 설치 -npx @opengsd/gsd-core --claude --local # ./.claude/에 설치 - -# OpenCode -npx @opengsd/gsd-core --opencode --global # ~/.config/opencode/에 설치 - -# Gemini CLI -npx @opengsd/gsd-core --gemini --global # ~/.gemini/에 설치 - -# Kilo -npx @opengsd/gsd-core --kilo --global # ~/.config/kilo/에 설치 -npx @opengsd/gsd-core --kilo --local # ./.kilo/에 설치 - -# Codex -npx @opengsd/gsd-core --codex --global # ~/.codex/에 설치 -npx @opengsd/gsd-core --codex --local # ./.codex/에 설치 - -# Copilot -npx @opengsd/gsd-core --copilot --global # ~/.github/에 설치 -npx @opengsd/gsd-core --copilot --local # ./.github/에 설치 - -# Cursor CLI -npx @opengsd/gsd-core --cursor --global # ~/.cursor/에 설치 -npx @opengsd/gsd-core --cursor --local # ./.cursor/에 설치 - -# Antigravity -npx @opengsd/gsd-core --antigravity --global # ~/.gemini/antigravity/에 설치 -npx @opengsd/gsd-core --antigravity --local # ./.agent/에 설치 - -# Augment -npx @opengsd/gsd-core --augment --global # ~/.augment/에 설치 -npx @opengsd/gsd-core --augment --local # ./.augment/에 설치 - -# Trae -npx @opengsd/gsd-core --trae --global # ~/.trae/에 설치 -npx @opengsd/gsd-core --trae --local # ./.trae/에 설치 - -# Cline -npx @opengsd/gsd-core --cline --global # ~/.cline/에 설치 -npx @opengsd/gsd-core --cline --local # ./.clinerules에 설치 - -# 전체 런타임 -npx @opengsd/gsd-core --all --global # 모든 디렉터리에 설치 -``` - -위치 프롬프트 건너뛰기: `--global` (`-g`) 또는 `--local` (`-l`). -런타임 프롬프트 건너뛰기: `--claude`, `--opencode`, `--gemini`, `--kilo`, `--codex`, `--copilot`, `--cursor`, `--windsurf`, `--antigravity`, `--augment`, `--trae`, `--cline`, 또는 `--all`. - -
- -
-개발 설치 - -저장소를 클론하고 설치 프로그램을 로컬에서 실행합니다: - -```bash -git clone https://github.com/open-gsd/gsd-core.git -cd gsd-core -node bin/install.js --claude --local -``` - -기여 전 수정사항 테스트를 위해 `./.claude/`에 설치됩니다. - -
- -### 권장: 권한 확인 건너뛰기 모드 - -GSD는 마찰 없는 자동화를 위해 설계되었습니다. Claude Code를 다음과 같이 실행하세요: - -```bash -claude --dangerously-skip-permissions -``` - -> [!TIP] -> 이게 GSD를 사용하는 방법입니다 — `date`와 `git commit` 50번을 승인하러 멈추면 의미가 없습니다. - -
-대안: 세분화된 권한 - -해당 플래그를 쓰지 않으려면 프로젝트의 `.claude/settings.json`에 다음을 추가하세요: - -```json -{ - "permissions": { - "allow": [ - "Bash(date:*)", - "Bash(echo:*)", - "Bash(cat:*)", - "Bash(ls:*)", - "Bash(mkdir:*)", - "Bash(wc:*)", - "Bash(head:*)", - "Bash(tail:*)", - "Bash(sort:*)", - "Bash(grep:*)", - "Bash(tr:*)", - "Bash(git add:*)", - "Bash(git commit:*)", - "Bash(git status:*)", - "Bash(git log:*)", - "Bash(git diff:*)", - "Bash(git tag:*)" - ] - } -} -``` - -
+GSD Core는 컨텍스트 엔지니어링 및 스펙 기반 개발 프레임워크로, AI 코딩 에이전트(Claude Code, Codex, Gemini CLI, Copilot, Cursor 등)를 엄격한 단계 루프로 운용합니다. AI가 컨텍스트 창을 채워 나가면서 발생하는 품질 저하인 [컨텍스트 rot](docs/ko-KR/explanation/context-engineering.md) 문제를 해결합니다. 무거운 리서치, 기획, 실행 작업은 새로운 컨텍스트의 서브에이전트에서 처리하고, 메인 세션은 가볍게 유지됩니다. --- ## 작동 방식 -> **이미 코드가 있나요?** 먼저 `/gsd-map-codebase`를 실행하세요. 병렬 에이전트를 생성해 스택, 아키텍처, 컨벤션, 고려사항을 분석합니다. 그러면 `/gsd-new-project`가 코드베이스를 파악한 상태에서 시작되고 — 질문은 추가하는 것에 집중되고, 기획 시 자동으로 기존 패턴을 불러옵니다. +각 마일스톤은 동일한 다섯 단계 루프를 반복합니다: -### 1. 프로젝트 초기화 +1. **논의(Discuss)** — 기획 전에 구현 결정 사항을 미리 정리 +2. **기획(Plan)** — 리서치, 분해, 그리고 플랜이 새 컨텍스트 창에 맞는지 검증 +3. **실행(Execute)** — 병렬 웨이브로 플랜 실행; 각 실행기는 20만 토큰의 깨끗한 컨텍스트로 시작 +4. **검증(Verify)** — 구현 결과를 검토하고, 완료 선언 전 문제 진단 및 수정 +5. **출시(Ship)** — PR 생성, 단계 아카이브, 다음 단계 반복 +--- + +## 빠른 시작 + +```bash +npx @opengsd/gsd-core@latest ``` + +설치 프로그램이 런타임(Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf 등)과 전역/로컬 설치 여부를 묻습니다. 크로스 런타임 호환성을 위해 설치 프로그램을 사용해야 합니다 — `agents/` 또는 `commands/`에서 파일을 직접 복사하지 마세요. + +다른 런타임이나 Node.js가 없는 환경은 [런타임에 설치하기](docs/ko-KR/how-to/install-on-your-runtime.md)를 참조하세요. + +설치 후 첫 번째 프로젝트를 시작합니다: + +```bash /gsd-new-project ``` -명령어 하나, 플로우 하나. 시스템이: - -1. **질문** — 아이디어를 완전히 이해할 때까지 물어봅니다 (목표, 제약사항, 기술 선호도, 엣지 케이스) -2. **리서치** — 도메인 조사를 위해 병렬 에이전트를 생성합니다 (선택사항이지만 권장) -3. **요구사항** — v1, v2, 스코프 밖을 추출합니다 -4. **로드맵** — 요구사항에 매핑된 단계를 생성합니다 - -로드맵을 승인하면 이제 만들 준비가 됩니다. - -**생성 파일:** `PROJECT.md`, `REQUIREMENTS.md`, `ROADMAP.md`, `STATE.md`, `.planning/research/` +처음 사용하시나요? [첫 번째 프로젝트](docs/ko-KR/tutorials/your-first-project.md)를 따라 설치부터 첫 단계 출시까지 안내받으세요. --- -### 2. 단계 논의 +## 문서 -``` -/gsd-discuss-phase 1 -``` +**튜토리얼** — 직접 해보며 배우기: +- [첫 번째 프로젝트](docs/ko-KR/tutorials/your-first-project.md) +- [기존 코드베이스 온보딩](docs/ko-KR/tutorials/onboarding-an-existing-codebase.md) -**여기서 구현을 직접 설계합니다.** +**How-to 가이드** — 작업별 레시피: +- [런타임에 설치하기](docs/ko-KR/how-to/install-on-your-runtime.md) +- [단계 기획하기](docs/ko-KR/how-to/plan-a-phase.md) +- [검증 및 출시](docs/ko-KR/how-to/verify-and-ship.md) +- … [모든 how-to 가이드 보기](docs/ko-KR/README.md#how-to-guides) -로드맵에는 단계당 한두 문장이 있습니다. 그건 *당신이 상상하는 방식*으로 뭔가를 만들기에 충분한 컨텍스트가 아닙니다. 리서치나 기획이 시작되기 전에 원하는 방향을 미리 잡아두는 단계입니다. +**레퍼런스** — 권위 있는 사실: +- [명령어](docs/ko-KR/COMMANDS.md) +- [설정](docs/ko-KR/CONFIGURATION.md) +- [CLI 도구](docs/ko-KR/CLI-TOOLS.md) -시스템이 단계를 분석하고 만들어지는 것에 기반한 회색 지대를 식별합니다: +**설명** — 개념 및 설계 결정: +- [컨텍스트 엔지니어링](docs/ko-KR/explanation/context-engineering.md) +- [단계 루프](docs/ko-KR/explanation/the-phase-loop.md) +- [아키텍처](docs/ko-KR/ARCHITECTURE.md) -- **시각적 기능** → 레이아웃, 밀도, 인터랙션, 빈 상태 -- **API/CLI** → 응답 형식, 플래그, 오류 처리, 상세도 -- **콘텐츠 시스템** → 구조, 톤, 깊이, 흐름 -- **조직 작업** → 그룹화 기준, 이름 지정, 중복, 예외 - -선택한 각 영역에 대해 만족할 때까지 물어봅니다. 결과물인 `CONTEXT.md`는 다음 두 단계에 바로 쓰입니다. - -1. **리서처가 읽습니다** — 어떤 패턴을 조사할지 파악합니다 ("카드 레이아웃 원함" → 카드 컴포넌트 라이브러리 리서치) -2. **플래너가 읽습니다** — 어떤 결정이 확정됐는지 파악합니다 ("무한 스크롤 결정됨" → 플랜에 스크롤 처리 포함) - -여기서 깊이 들어갈수록 시스템이 실제로 원하는 것에 더 가깝게 만듭니다. 건너뛰면 합리적인 기본값을 얻습니다. 사용하면 *당신의* 비전을 얻습니다. - -**생성 파일:** `{phase_num}-CONTEXT.md` - -> **가정 모드:** 질문보다 코드베이스 분석을 선호하나요? `/gsd-settings`에서 `workflow.discuss_mode`를 `assumptions`로 설정하세요. 시스템이 코드를 읽고 하려는 것과 이유를 제시한 다음 틀린 부분만 수정을 요청합니다. [논의 모드](docs/ko-KR/workflow-discuss-mode.md) 참조. - ---- - -### 3. 단계 기획 - -``` -/gsd-plan-phase 1 -``` - -시스템이: - -1. **리서치** — CONTEXT.md 결정사항을 기반으로 구현 방법을 조사합니다 -2. **기획** — XML 구조로 2~3개의 원자적 작업 계획을 생성합니다 -3. **검증** — 요구사항 대비 계획을 확인하고, 통과할 때까지 반복합니다 - -각 계획은 새로운 컨텍스트 창에서 실행할 수 있을 만큼 작습니다. 저하 없이, "이제 더 간결하게 하겠습니다" 같은 말도 없습니다. - -**생성 파일:** `{phase_num}-RESEARCH.md`, `{phase_num}-{N}-PLAN.md` - ---- - -### 4. 단계 실행 - -``` -/gsd-execute-phase 1 -``` - -시스템이: - -1. **웨이브로 계획 실행** — 가능한 경우 병렬, 의존성 있으면 순차 -2. **계획당 새로운 컨텍스트** — 20만 토큰이 순수하게 구현을 위해, 쌓인 쓰레기 없음 -3. **작업당 커밋** — 모든 작업이 고유한 원자적 커밋을 가짐 -4. **목표 대비 검증** — 코드베이스가 단계에서 약속한 것을 전달했는지 확인 - -자리를 비우고 돌아오면 깔끔한 git 이력과 함께 완성된 작업이 기다립니다. - -**웨이브 실행 방식:** - -계획은 의존성에 따라 "웨이브"로 그룹화됩니다. 각 웨이브 안에서 계획이 병렬로 실행됩니다. 웨이브는 순차적으로 실행됩니다. - -``` -┌────────────────────────────────────────────────────────────────────┐ -│ 단계 실행 │ -├────────────────────────────────────────────────────────────────────┤ -│ │ -│ 웨이브 1 (병렬) 웨이브 2 (병렬) 웨이브 3 │ -│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ -│ │ 플랜 01 │ │ 플랜 02 │ → │ 플랜 03 │ │ 플랜 04 │ → │ 플랜 05 │ │ -│ │ │ │ │ │ │ │ │ │ │ │ -│ │ 유저 │ │ 제품 │ │ 주문 │ │ 장바구니│ │ 결제 │ │ -│ │ 모델 │ │ 모델 │ │ API │ │ API │ │ UI │ │ -│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ -│ │ │ ↑ ↑ ↑ │ -│ └───────────┴──────────────┴───────────┘ │ │ -│ 의존성: 플랜 03은 플랜 01 필요 │ │ -│ 플랜 04는 플랜 02 필요 │ -│ 플랜 05는 플랜 03 + 04 필요 │ -│ │ -└────────────────────────────────────────────────────────────────────┘ -``` - -**웨이브가 중요한 이유:** -- 독립 계획 → 같은 웨이브 → 병렬 실행 -- 의존 계획 → 이후 웨이브 → 의존성 대기 -- 파일 충돌 → 순차 계획 또는 같은 계획 - -그래서 "수직 슬라이스" (플랜 01: 유저 기능 엔드투엔드)가 "수평 레이어" (플랜 01: 모든 모델, 플랜 02: 모든 API)보다 더 잘 병렬화됩니다. - -**생성 파일:** `{phase_num}-{N}-SUMMARY.md`, `{phase_num}-VERIFICATION.md` - ---- - -### 5. 작업 검증 - -``` -/gsd-verify-work 1 -``` - -**여기서 실제로 작동하는지 확인합니다.** - -자동화된 검증은 코드가 존재하고 테스트가 통과하는지 확인합니다. 하지만 기능이 *당신이 기대하는 방식*으로 작동하나요? 직접 사용해볼 기회입니다. - -시스템이: - -1. **테스트 가능한 결과물 추출** — 지금 뭘 할 수 있어야 하는지 -2. **하나씩 안내** — "이메일로 로그인할 수 있나요?" 예/아니오, 또는 뭐가 잘못됐는지 설명 -3. **실패 자동 진단** — 근본 원인을 찾기 위해 디버그 에이전트 생성 -4. **검증된 수정 계획 생성** — 즉시 재실행 준비 완료 - -모든 게 통과하면 다음으로 넘어갑니다. 뭔가 깨졌으면 직접 디버그하지 않아도 됩니다 — 생성된 수정 계획으로 `/gsd-execute-phase`만 다시 실행하면 됩니다. - -**생성 파일:** `{phase_num}-UAT.md`, 문제 발견 시 수정 계획 - ---- - -### 6. 반복 → 출시 → 완료 → 다음 마일스톤 - -``` -/gsd-discuss-phase 2 -/gsd-plan-phase 2 -/gsd-execute-phase 2 -/gsd-verify-work 2 -/gsd-ship 2 # 검증된 작업으로 PR 생성 -... -/gsd-complete-milestone -/gsd-new-milestone -``` - -또는 GSD가 다음 단계를 자동으로 파악하게 합니다: - -``` -/gsd-progress --next # 다음 단계 자동 감지 및 실행 -``` - -마일스톤이 완료될 때까지 **논의 → 기획 → 실행 → 검증 → 출시** 반복. - -논의 중에 더 빠르게 진행하고 싶다면 `/gsd-discuss-phase --batch`를 사용해 하나씩이 아닌 소그룹으로 한 번에 답할 수 있습니다. `--chain`을 사용하면 논의에서 기획+실행까지 중간에 멈추지 않고 자동 체이닝됩니다. - -각 단계는 사용자 입력(논의), 적절한 리서치(기획), 깔끔한 실행(실행), 사람의 검증(검증)을 거칩니다. 컨텍스트는 새롭게 유지됩니다. 품질도 높게 유지됩니다. - -모든 단계가 끝나면 `/gsd-complete-milestone`이 마일스톤을 아카이브하고 릴리스에 태그를 답니다. - -그다음 `/gsd-new-milestone`으로 다음 버전을 시작합니다 — `new-project`와 같은 흐름이지만 기존 코드베이스를 위한 것입니다. 다음에 만들 것을 설명하면 시스템이 도메인을 리서치하고, 요구사항을 스코핑하고, 새 로드맵을 만듭니다. 각 마일스톤은 깔끔한 사이클입니다: 정의 → 구축 → 출시. - ---- - -### 빠른 모드 - -``` -/gsd-quick -``` - -**전체 기획이 필요 없는 임시 작업용.** - -빠른 모드는 GSD 보장 (원자적 커밋, 상태 추적)을 더 빠른 경로로 제공합니다: - -- **같은 에이전트** — 플래너 + 실행기, 같은 품질 -- **선택적 단계 건너뛰기** — 기본적으로 리서치, 계획 확인기, 검증기 없음 -- **별도 추적** — `.planning/quick/`에 위치, 단계와 별개 - -**`--discuss` 플래그:** 기획 전 회색 지대를 파악하기 위한 가벼운 논의. - -**`--research` 플래그:** 기획 전 집중 리서처를 생성합니다. 구현 접근법, 라이브러리 옵션, 주의사항을 조사합니다. 접근 방식이 불확실할 때 사용하세요. - -**`--full` 플래그:** 모든 단계를 활성화 — 논의 + 리서치 + 계획 확인 + 검증. 빠른 작업 형태의 전체 GSD 파이프라인. - -**`--validate` 플래그:** 계획 확인 + 실행 후 검증만 활성화 (이전 `--full`의 동작). - -플래그는 조합 가능합니다: `--discuss --research --validate`은 논의 + 리서치 + 계획 확인 + 검증을 제공합니다. - -``` -/gsd-quick -> 뭘 하고 싶으신가요? "설정에 다크 모드 토글 추가" -``` - -**생성 파일:** `.planning/quick/001-add-dark-mode-toggle/PLAN.md`, `SUMMARY.md` +전체 색인: [docs/ko-KR/README.md](docs/ko-KR/README.md). 다른 언어: [日本語](README.ja-JP.md) · [한국어](README.ko-KR.md) · [Português](README.pt-BR.md) · [简体中文](README.zh-CN.md). --- ## 왜 효과적인가 -### 컨텍스트 엔지니어링 +대부분의 AI 코딩 환경은 규모가 커지면 실패합니다. 컨텍스트 비대화로 출력 품질이 조용히 저하되고, 세션 간 공유 메모리가 없으며, 코드가 실제로 동작하는지 검증하는 것이 없기 때문입니다. GSD Core는 이 세 가지를 모두 해결합니다. 무거운 작업은 새 서브에이전트에서 실행되고, `STATE.md`와 `CONTEXT.md` 같은 구조화된 아티팩트가 세션 경계를 넘어 유지되며, 검증 단계가 구현 결과를 검토하고 단계 완료 선언 전 수정 계획을 생성합니다. 자세한 내용은 [docs/ko-KR/explanation/context-engineering.md](docs/ko-KR/explanation/context-engineering.md)를 참조하세요. -Claude Code는 컨텍스트만 제대로 주면 정말 강력합니다. 근데 대부분은 그걸 안 하죠. - -GSD가 대신 해줍니다. - -| 파일 | 역할 | -|------|--------------| -| `PROJECT.md` | 프로젝트 비전, 항상 로드 | -| `research/` | 생태계 지식 (스택, 기능, 아키텍처, 주의사항) | -| `REQUIREMENTS.md` | 단계 추적성이 있는 스코핑된 v1/v2 요구사항 | -| `ROADMAP.md` | 방향과 완료된 것 | -| `STATE.md` | 결정사항, 블로커, 위치 — 세션 간 메모리 | -| `PLAN.md` | XML 구조와 검증 단계가 있는 원자적 작업 | -| `SUMMARY.md` | 무슨 일이 있었는지, 무엇이 바뀌었는지, 이력에 커밋됨 | -| `todos/` | 나중 작업을 위해 캡처된 아이디어와 작업 | -| `threads/` | 여러 세션에 걸친 작업을 위한 지속적 컨텍스트 스레드 | -| `seeds/` | 때가 되면 자연스럽게 떠오르는 미래 아이디어 저장소 | - -파일 크기는 Claude 품질이 떨어지기 시작하는 지점에 맞춰 설정했습니다. 그 안에 머물면 일관된 결과가 나옵니다. - -### XML 프롬프트 포맷팅 - -모든 계획은 Claude에 최적화된 구조화된 XML입니다: - -```xml - - 로그인 엔드포인트 생성 - src/app/api/auth/login/route.ts - - JWT에는 jose 사용 (jsonwebtoken 아님 - CommonJS 이슈). - users 테이블 대비 자격증명 검증. - 성공 시 httpOnly 쿠키 반환. - - curl -X POST localhost:3000/api/auth/login이 200 + Set-Cookie 반환 - 유효한 자격증명은 쿠키 반환, 무효는 401 반환 - -``` - -정확한 지시사항. 추측 없음. 검증 내장. - -### 멀티 에이전트 오케스트레이션 - -모든 단계는 같은 패턴입니다. 얇은 오케스트레이터가 전문화된 에이전트를 띄우고 결과를 모아 다음 단계로 넘깁니다. - -| 단계 | 오케스트레이터가 하는 일 | 에이전트가 하는 일 | -|-------|------------------|-----------| -| 리서치 | 조율, 결과 제시 | 병렬로 4개의 리서처가 스택, 기능, 아키텍처, 주의사항 조사 | -| 기획 | 검증, 반복 관리 | 플래너가 계획 생성, 확인기가 검증, 통과할 때까지 반복 | -| 실행 | 웨이브 그룹화, 진행 추적 | 실행기가 병렬로 구현, 각각 새로운 20만 컨텍스트 | -| 검증 | 결과 제시, 다음 라우팅 | 검증기가 코드베이스를 목표 대비 확인, 디버거가 실패 진단 | - -오케스트레이터는 무거운 작업을 직접 하지 않습니다. 에이전트를 띄우고 기다렸다가 결과를 합칩니다. - -**결과:** 전체 단계를 다 돌릴 수 있습니다 — 깊은 리서치, 계획 생성과 검증, 병렬 실행기가 수천 줄 코드 작성, 자동화된 검증 — 근데 메인 컨텍스트 창은 30~40%에 머뭅니다. 실제 작업은 새 서브에이전트 컨텍스트에서 이루어지거든요. 세션이 끝까지 빠르고 반응적으로 유지되는 이유입니다. - -### 원자적 Git 커밋 - -각 작업은 완료 직후 자체 커밋을 받습니다: - -```bash -abc123f docs(08-02): complete user registration plan -def456g feat(08-02): add email confirmation flow -hij789k feat(08-02): implement password hashing -lmn012o feat(08-02): create registration endpoint -``` - -> [!NOTE] -> **장점:** Git bisect로 어느 작업에서 깨졌는지 정확히 찍어낼 수 있습니다. 작업 단위로 독립 revert가 됩니다. 다음 세션 Claude가 읽을 명확한 이력이 남습니다. AI 자동화 워크플로우를 한눈에 파악하기 좋습니다. - -커밋 하나하나가 외과적이고 추적 가능하며 의미를 담고 있습니다. - -### 모듈식 설계 - -- 현재 마일스톤에 단계 추가 -- 단계 사이에 긴급 작업 삽입 -- 마일스톤 완료 후 새로 시작 -- 전부 다시 만들지 않고 계획 조정 - -절대 갇히지 않습니다. 시스템이 적응합니다. +문제가 발생했나요? [docs/ko-KR/how-to/recover-and-troubleshoot.md](docs/ko-KR/how-to/recover-and-troubleshoot.md)를 확인하세요. --- -## 명령어 +## 커뮤니티 -### 핵심 워크플로우 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-new-project [--auto]` | 전체 초기화: 질문 → 리서치 → 요구사항 → 로드맵 | -| `/gsd-discuss-phase [N] [--auto] [--analyze] [--chain]` | 기획 전 구현 결정 캡처 (`--analyze`는 트레이드오프 분석 추가, `--chain`은 기획+실행으로 자동 체이닝) | -| `/gsd-plan-phase [N] [--auto] [--reviews]` | 단계에 대한 리서치 + 기획 + 검증 (`--reviews`는 코드베이스 리뷰 결과 로드) | -| `/gsd-execute-phase ` | 병렬 웨이브로 모든 계획 실행, 완료 시 검증 | -| `/gsd-verify-work [N]` | 수동 사용자 인수 테스트 ¹ | -| `/gsd-ship [N] [--draft]` | 자동 생성된 본문으로 검증된 단계 작업에서 PR 생성 | -| `/gsd-progress --next` | 다음 논리적 워크플로우 단계로 자동 진행 | -| `/gsd-fast ` | 인라인 사소한 작업 — 기획 완전 건너뛰고 즉시 실행 | -| `/gsd-audit-milestone` | 마일스톤이 완료 정의를 달성했는지 검증 | -| `/gsd-complete-milestone` | 마일스톤 아카이브, 릴리스 태그 | -| `/gsd-new-milestone [name]` | 다음 버전 시작: 질문 → 리서치 → 요구사항 → 로드맵 | -| `/gsd-forensics [desc]` | 실패한 워크플로우 실행의 사후 조사 (막힌 루프, 누락된 아티팩트, git 이상 진단) | -| `/gsd-milestone-summary [version]` | 팀 온보딩 및 리뷰를 위한 종합 프로젝트 요약 생성 | - -### 워크스트림 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-workstreams list` | 모든 워크스트림과 상태 표시 | -| `/gsd-workstreams create ` | 병렬 마일스톤 작업을 위한 네임스페이스 워크스트림 생성 | -| `/gsd-workstreams switch ` | 활성 워크스트림 전환 | -| `/gsd-workstreams complete ` | 워크스트림 완료 및 병합 | - -### 멀티 프로젝트 워크스페이스 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-workspace --new` | 저장소 복사본으로 격리된 워크스페이스 생성 (worktrees 또는 clones) | -| `/gsd-workspace --list` | 모든 GSD 워크스페이스와 상태 표시 | -| `/gsd-workspace --remove` | 워크스페이스 제거 및 worktree 정리 | - -### UI 디자인 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-ui-phase [N]` | 프론트엔드 단계를 위한 UI 디자인 계약 (UI-SPEC.md) 생성 | -| `/gsd-ui-review [N]` | 구현된 프론트엔드 코드의 소급적 6가지 기준 시각 감사 | - -### 탐색 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-progress` | 지금 어디에 있나? 다음은? | -| `/gsd-progress --next` | 상태 자동 감지 및 다음 단계 실행 | -| `/gsd-help` | 모든 명령어와 사용 가이드 표시 | -| `/gsd-update` | 변경 로그 미리보기와 함께 GSD 업데이트 | -| `/gsd-manager` | 여러 단계 관리를 위한 대화형 커맨드 센터 | - -### 브라운필드 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-map-codebase [area]` | new-project 전 기존 코드베이스 분석 | - -### 단계 관리 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-phase` | 로드맵에 단계 추가 | -| `/gsd-phase --insert [N]` | 단계 사이에 긴급 작업 삽입 | -| `/gsd-phase --edit [N] [--force]` | 기존 단계의 임의 필드를 그 자리에서 수정 — 번호와 위치는 그대로 | -| `/gsd-phase --remove [N]` | 미래 단계 제거, 번호 재정렬 | -| `/gsd-discuss-phase --assumptions [N]` | 기획 전 Claude의 의도된 접근 방식 확인 | -| `/gsd-audit-milestone --fix` | 감사에서 발견된 갭을 해소하기 위한 단계 생성 | - -### 세션 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-pause-work` | 단계 중간에 멈출 때 핸드오프 생성 (HANDOFF.json 작성) | -| `/gsd-resume-work` | 마지막 세션에서 복원 | -| `/gsd-pause-work --report` | 수행한 작업과 결과가 담긴 세션 요약 생성 | - -### 코드 품질 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-review` | 현재 단계 또는 브랜치의 Cross-AI 피어 리뷰 | -| `/gsd-pr-branch` | `.planning/` 커밋을 필터링한 깔끔한 PR 브랜치 생성 | -| `/gsd-audit-uat` | 검증 부채 감사 — UAT가 누락된 단계 찾기 | - -### 백로그 및 스레드 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-capture --seed ` | 트리거 조건이 있는 아이디어 저장 — 때가 되면 알아서 올라옴 | -| `/gsd-capture --backlog ` | 백로그 파킹 롯에 아이디어 추가 (999.x 번호 지정, 활성 시퀀스 외부) | -| `/gsd-review-backlog` | 백로그 항목 리뷰 및 활성 마일스톤으로 승격하거나 오래된 항목 제거 | -| `/gsd-thread [name]` | 지속적 컨텍스트 스레드 — 여러 세션에 걸친 작업을 위한 가벼운 크로스 세션 지식 | - -### 유틸리티 - -| 명령어 | 역할 | -|---------|------------| -| `/gsd-settings` | 모델 프로필 및 워크플로우 에이전트 설정 | -| `/gsd-config --profile ` | 모델 프로필 전환 (quality/balanced/budget/inherit) | -| `/gsd-capture [desc]` | 나중을 위한 아이디어 캡처 | -| `/gsd-capture --list` | 대기 중인 할 일 목록 | -| `/gsd-debug [desc]` | 지속적 상태를 이용한 체계적 디버깅 | -| `/gsd-do ` | 자유 형식 텍스트를 적절한 GSD 명령어로 자동 라우팅 | -| `/gsd-note ` | 마찰 없는 아이디어 캡처 — 추가, 목록, 또는 할 일로 승격 | -| `/gsd-quick [--full] [--discuss] [--research]` | GSD 보장과 함께 임시 작업 실행 (`--full`은 전체 단계 활성화, `--discuss`는 먼저 컨텍스트 수집, `--research`는 기획 전 접근법 조사) | -| `/gsd-health [--repair]` | `.planning/` 디렉터리 무결성 검증, `--repair`로 자동 복구 | -| `/gsd-stats` | 프로젝트 통계 표시 — 단계, 계획, 요구사항, git 지표 | -| `/gsd-profile-user [--questionnaire] [--refresh]` | 개인화된 응답을 위해 세션 분석에서 개발자 행동 프로필 생성 | - -¹ reddit 유저 OracleGreyBeard 기여 - ---- - -## 설정 - -GSD는 프로젝트 설정을 `.planning/config.json`에 저장합니다. `/gsd-new-project` 중에 설정하거나 나중에 `/gsd-settings`로 업데이트할 수 있습니다. 전체 config 스키마, 워크플로우 토글, git 브랜칭 옵션, 에이전트별 모델 분석은 [사용자 가이드](docs/ko-KR/USER-GUIDE.md#configuration-reference)를 참조하세요. - -### 핵심 설정 - -| 설정 | 옵션 | 기본값 | 역할 | -|---------|---------|---------|------------------| -| `mode` | `yolo`, `interactive` | `interactive` | 각 단계 자동 승인 vs 확인 | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | 단계 세분성 — 스코프를 얼마나 세밀하게 나눌지 (단계 × 계획) | - -### 모델 프로필 - -각 에이전트가 사용하는 Claude 모델을 제어합니다. 품질 대비 토큰 사용을 균형 잡습니다. - -| 프로필 | 기획 | 실행 | 검증 | -|---------|----------|-----------|--------------| -| `quality` | Opus | Opus | Sonnet | -| `balanced` (기본값) | Opus | Sonnet | Sonnet | -| `budget` | Sonnet | Sonnet | Haiku | -| `inherit` | 상속 | 상속 | 상속 | - -프로필 전환: -``` -/gsd-config --profile budget -``` - -비-Anthropic 제공업체 (OpenRouter, 로컬 모델) 사용 시 또는 현재 런타임 모델 선택을 따를 때 (예: OpenCode `/model`) `inherit`를 사용하세요. - -또는 `/gsd-settings`를 통해 설정하세요. - -### 워크플로우 에이전트 - -기획/실행 중에 추가 에이전트를 생성합니다. 품질을 향상시키지만 토큰과 시간이 더 필요합니다. - -| 설정 | 기본값 | 역할 | -|---------|---------|--------------| -| `workflow.research` | `true` | 각 단계 기획 전 도메인 리서치 | -| `workflow.plan_check` | `true` | 실행 전 계획이 단계 목표를 달성하는지 확인 | -| `workflow.verifier` | `true` | 실행 후 필수 사항이 전달됐는지 확인 | -| `workflow.auto_advance` | `false` | 멈추지 않고 논의 → 기획 → 실행 자동 연결 | -| `workflow.research_before_questions` | `false` | 논의 질문 대신 리서치 먼저 실행 | -| `workflow.discuss_mode` | `'discuss'` | 논의 모드: `discuss` (인터뷰), `assumptions` (코드베이스 우선) | -| `workflow.skip_discuss` | `false` | 자율 모드에서 discuss-phase 건너뛰기 | -| `workflow.text_mode` | `false` | 원격 세션을 위한 텍스트 전용 모드 (TUI 메뉴 없음) | - -`/gsd-settings`로 토글하거나 호출별로 재정의하세요: -- `/gsd-plan-phase --skip-research` -- `/gsd-plan-phase --skip-verify` - -### 실행 - -| 설정 | 기본값 | 역할 | -|---------|---------|------------------| -| `parallelization.enabled` | `true` | 독립 계획 동시 실행 | -| `planning.commit_docs` | `true` | git에서 `.planning/` 추적 | -| `hooks.context_warnings` | `true` | 컨텍스트 창 사용 경고 표시 | - -### Git 브랜칭 - -실행 중 GSD의 브랜치 처리 방식을 제어합니다. - -| 설정 | 옵션 | 기본값 | 역할 | -|---------|---------|---------|--------------| -| `git.branching_strategy` | `none`, `phase`, `milestone` | `none` | 브랜치 생성 전략 | -| `git.phase_branch_template` | string | `gsd/phase-{phase}-{slug}` | 단계 브랜치 템플릿 | -| `git.milestone_branch_template` | string | `gsd/{milestone}-{slug}` | 마일스톤 브랜치 템플릿 | - -**전략:** -- **`none`** — 현재 브랜치에 커밋 (기본 GSD 동작) -- **`phase`** — 단계당 브랜치 생성, 단계 완료 시 병합 -- **`milestone`** — 전체 마일스톤을 위한 하나의 브랜치 생성, 완료 시 병합 - -마일스톤 완료 시 GSD가 스쿼시 병합 (권장) 또는 이력과 함께 병합을 제안합니다. - ---- - -## 보안 - -### 내장 보안 강화 - -GSD는 v1.27부터 심층 방어 보안을 포함합니다: - -- **경로 순회 방지** — 모든 사용자 제공 파일 경로(`--text-file`, `--prd`)가 프로젝트 디렉터리 내에서 해석되도록 검증 -- **프롬프트 인젝션 감지** — 중앙화된 `security.cjs` 모듈이 사용자 제공 텍스트가 기획 아티팩트에 들어가기 전 인젝션 패턴 스캔 -- **PreToolUse 프롬프트 가드 훅** — `gsd-prompt-guard`가 `.planning/`에 대한 쓰기에서 내장된 인젝션 벡터 스캔 (권고적, 차단하지 않음) -- **안전한 JSON 파싱** — 잘못된 형식의 `--fields` 인수가 상태를 손상시키기 전에 캐치 -- **셸 인수 검증** — 사용자 텍스트가 셸 보간 전에 살균됨 -- **CI 준비 인젝션 스캐너** — `prompt-injection-scan.test.cjs`가 모든 에이전트/워크플로우/명령어 파일에서 내장된 인젝션 벡터 스캔 - -> [!NOTE] -> GSD는 LLM 시스템 프롬프트가 되는 마크다운 파일을 생성하기 때문에, 기획 아티팩트에 들어가는 사용자 제어 텍스트는 잠재적인 간접 프롬프트 인젝션 벡터가 됩니다. 이 보호 장치들은 여러 레이어에서 그런 벡터를 잡도록 설계되었습니다. - -### 민감한 파일 보호 - -GSD의 코드베이스 매핑 및 분석 명령어는 프로젝트를 이해하기 위해 파일을 읽습니다. **비밀이 담긴 파일**을 Claude Code의 거부 목록에 추가해 보호하세요: - -1. Claude Code 설정 열기 (`.claude/settings.json` 또는 전역) -2. 민감한 파일 패턴을 거부 목록에 추가: - -```json -{ - "permissions": { - "deny": [ - "Read(.env)", - "Read(.env.*)", - "Read(**/secrets/*)", - "Read(**/*credential*)", - "Read(**/*.pem)", - "Read(**/*.key)" - ] - } -} -``` - -이렇게 하면 실행하는 명령어와 관계없이 Claude가 이 파일들을 완전히 읽지 못합니다. - -> [!IMPORTANT] -> GSD에는 비밀 커밋에 대한 내장 보호 장치가 있지만, 심층 방어가 모범 사례입니다. 민감한 파일에 대한 읽기 접근을 거부하는 것을 첫 번째 방어선으로 삼으세요. - ---- - -## 문제 해결 - -**설치 후 명령어를 찾을 수 없나요?** -- 런타임을 재시작해 명령어/스킬을 다시 로드하세요 -- `~/.claude/commands/gsd/` (전역) 또는 `./.claude/commands/gsd/` (로컬)에 파일이 있는지 확인하세요 -- Codex의 경우 `~/.codex/skills/gsd-*/SKILL.md` (전역) 또는 `./.codex/skills/gsd-*/SKILL.md` (로컬)에 스킬이 있는지 확인하세요 - -**명령어가 예상대로 작동하지 않나요?** -- `/gsd-help`를 실행해 설치 확인 -- `npx @opengsd/gsd-core`를 다시 실행해 재설치 - -**최신 버전으로 업데이트하나요?** -```bash -npx @opengsd/gsd-core@latest -``` - -**Docker 또는 컨테이너 환경을 사용하나요?** - -파일 읽기가 틸드 경로(`~/.claude/...`)로 실패하면 설치 전에 `CLAUDE_CONFIG_DIR`를 설정하세요: -```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global -``` -컨테이너에서 올바르게 확장되지 않을 수 있는 `~` 대신 절대 경로가 사용됩니다. - -### 제거 - -GSD를 완전히 제거하려면: - -```bash -# 전역 설치 -npx @opengsd/gsd-core --claude --global --uninstall -npx @opengsd/gsd-core --opencode --global --uninstall -npx @opengsd/gsd-core --gemini --global --uninstall -npx @opengsd/gsd-core --kilo --global --uninstall -npx @opengsd/gsd-core --codex --global --uninstall -npx @opengsd/gsd-core --copilot --global --uninstall -npx @opengsd/gsd-core --cursor --global --uninstall -npx @opengsd/gsd-core --antigravity --global --uninstall -npx @opengsd/gsd-core --trae --global --uninstall - -# 로컬 설치 (현재 프로젝트) -npx @opengsd/gsd-core --claude --local --uninstall -npx @opengsd/gsd-core --opencode --local --uninstall -npx @opengsd/gsd-core --gemini --local --uninstall -npx @opengsd/gsd-core --kilo --local --uninstall -npx @opengsd/gsd-core --codex --local --uninstall -npx @opengsd/gsd-core --copilot --local --uninstall -npx @opengsd/gsd-core --cursor --local --uninstall -npx @opengsd/gsd-core --antigravity --local --uninstall -npx @opengsd/gsd-core --trae --local --uninstall -``` - -다른 설정은 그대로 유지하면서 GSD의 모든 명령어, 에이전트, 훅, 설정을 제거합니다. - ---- - -## 커뮤니티 포트 - -OpenCode, Gemini CLI, Kilo, Codex는 이제 `npx @opengsd/gsd-core`를 통해 기본 지원됩니다. - -이 커뮤니티 포트들이 멀티 런타임 지원의 선구자였습니다: - -| 프로젝트 | 플랫폼 | 설명 | -|---------|----------|-------------| -| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | OpenCode | 최초 OpenCode 적응 | -| gsd-gemini (아카이브됨) | Gemini CLI | uberfuzzy의 최초 Gemini 적응 | +| 프로젝트 | 플랫폼 | +|---------|----------| +| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | 최초 OpenCode 포트 | +| [Discord](https://discord.gg/mYgfVNfA2r) | 커뮤니티 지원 | --- @@ -857,6 +120,6 @@ MIT 라이선스. 자세한 내용은 [LICENSE](LICENSE)를 참조하세요.
-**Claude Code는 강력합니다. GSD가 그걸 신뢰할 수 있게 만듭니다.** +**Claude Code는 강력합니다. GSD Core가 그걸 신뢰할 수 있게 만듭니다.**
diff --git a/README.md b/README.md index 0703f5440..c111e412e 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,6 @@ **A light-weight meta-prompting, context engineering, and spec-driven development system for Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf, and more.** -**Solves context rot — the quality degradation that happens as your AI fills its context window.** - [![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) [![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) [![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/gsd-core/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/gsd-core/actions/workflows/test.yml) @@ -17,218 +15,79 @@ [![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE) -
+ + +--- + +## What is GSD Core + +GSD Core is a context-engineering and spec-driven development framework that drives AI coding agents (Claude Code, Codex, Gemini CLI, Copilot, Cursor, and more) through a disciplined phase loop. It solves [context rot](docs/explanation/context-engineering.md) — the quality degradation that accumulates as an AI fills its context window — by running all heavy research, planning, and execution work in fresh-context subagents while keeping your main session lean. + +--- + +## How it works + +Each milestone repeats the same five-step loop, one phase at a time: + +1. **Discuss** — capture implementation decisions before anything is planned +2. **Plan** — research, decompose, and verify the plan fits a fresh context window +3. **Execute** — run plans in parallel waves; each executor starts with a clean 200k-token context +4. **Verify** — walk through what was built; diagnose and fix before declaring done +5. **Ship** — create the PR, archive the phase, repeat for the next one + +--- + +## Quickstart ```bash npx @opengsd/gsd-core@latest ``` -**Works on Mac, Windows, and Linux.** +The installer prompts for your runtime (Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf, and more) and whether to install globally or locally. The installer is required for cross-runtime compatibility — do not copy files from `agents/` or `commands/` directly. -
+On another runtime or without Node.js? See [Install on your runtime](docs/how-to/install-on-your-runtime.md). -![GSD Install](assets/terminal.svg) - -
- -*"If you know clearly what you want, this WILL build it for you. No bs."* - -*"I've done SpecKit, OpenSpec and Taskmaster — this has produced the best results for me."* - -*"By far the most powerful addition to my Claude Code. Nothing over-engineered. It just helps me ship."* - -
- -**Trusted by engineers at Amazon, Google, Shopify, and Webflow.** - - - ---- - -> [!IMPORTANT] -> **Returning to GSD Core?** -> -> Run `/gsd-map-codebase` to re-index your codebase, then `/gsd-new-project` to rebuild GSD's planning context. Your code is fine — GSD just needs its context rebuilt. Use `@opengsd/gsd-core@latest` for the current package line. - ---- - -## How It Works - -The loop is six commands. Each one does exactly one thing. - -### 1. Initialize +Once installed, start your first project: ```bash /gsd-new-project ``` -Questions → research → requirements → roadmap. You approve it, then you're ready to build. - -> **Already have code?** Run `/gsd-map-codebase` first. It analyzes your stack, architecture, and conventions so `/gsd-new-project` asks the right questions. - -### 2. Discuss - -```bash -/gsd-discuss-phase 1 -``` - -Your roadmap has a sentence per phase. That's not enough to build it the way *you* imagine it. Discuss captures your decisions before anything gets planned: layouts, API shapes, error handling, data structures — whatever gray areas exist for this specific phase. - -The output feeds directly into research and planning. Skip it, get reasonable defaults. Use it, get your vision. - -### 3. Plan - -```bash -/gsd-plan-phase 1 -``` - -Research → plan → verify, in a loop until the plans pass. Each plan is small enough to execute in a fresh context window. - -### 4. Execute - -```bash -/gsd-execute-phase 1 -``` - -Plans run in parallel waves. Each executor gets a fresh 200k-token context. Each task gets its own atomic commit. Walk away, come back to completed work with a clean git history. - -Your main context window stays at 30–40%. The work happens in the subagents. - -### 5. Verify - -```bash -/gsd-verify-work 1 -``` - -Walk through what was built. Anything broken gets a diagnosed fix plan — ready for immediate re-execution. You don't debug manually; you just run execute again. - -### 6. Repeat → Ship - -```bash -/gsd-ship 1 -/gsd-complete-milestone -/gsd-new-milestone -``` - -Loop discuss → plan → execute → verify → ship until the milestone is done. Then archive, tag, and start the next one fresh. - ---- - -## Getting Started - -```bash -npx @opengsd/gsd-core@latest -``` - -The installer prompts for your runtime (Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf, and more) and whether to install globally or locally. - -```bash -claude --dangerously-skip-permissions -``` - -GSD Core is built for frictionless automation. Skip-permissions is how it's intended to run. - -Install only the skills you need with `--profile=core` (six core-loop skills), `--profile=standard` (core + phase management), or the default full install. Profiles compose: `--profile=core,audit`. `--minimal` is an alias for `--profile=core`. See **[docs/USER-GUIDE.md](docs/USER-GUIDE.md)** for the full walkthrough, non-interactive install flags for all 15 runtimes, and permissions configuration. See [ADR-0011](docs/adr/0011-skill-surface-budget-module.md) for the profile model and runtime surface control. - -The canonical release version is the `@opengsd/gsd-core` version published on npm and mirrored in `package.json`. Older release-note files under `docs/` are retained as legacy continuity notes; do not use archived release-note numbers as the current GSD Core package version. - -### Cross-runtime compatibility: installer required - -The `agents/` and `commands/` directories in this repository are Claude Code-format source files. The installer (`npx @opengsd/gsd-core@latest`) transforms them per target runtime — stripping or converting frontmatter fields that Claude Code uses but other runtimes reject. For example, OpenCode requires `color` as a hex or semantic value from a fixed set, and does not accept a `tools:` frontmatter field; the installer function `convertClaudeToOpencodeFrontmatter` (`bin/install.js`) handles this automatically. - -**Manually copying files** from `agents/` or `commands/` directly into a non-Claude-Code runtime config directory (e.g., `~/.config/opencode/agents`) skips the conversion step and will produce schema validation errors in that runtime. - -If you are on a system without Node.js or npm (Windows + OpenCode is the most common case), see **[docs/USER-GUIDE.md — Manual install / no-Node.js setup](docs/USER-GUIDE.md#manual-install--no-nodejs-setup)** for the per-runtime conversion summary and alternative install paths. - ---- - -## Commands - -The main loop: - -| Command | What it does | -|---------|--------------| -| `/gsd-new-project` | Questions → research → requirements → roadmap | -| `/gsd-discuss-phase [N]` | Capture implementation decisions before planning | -| `/gsd-plan-phase [N]` | Research + plan + verify | -| `/gsd-execute-phase ` | Execute plans in parallel waves | -| `/gsd-verify-work [N]` | Manual acceptance testing | -| `/gsd-ship [N]` | Create PR from verified phase work | -| `/gsd-progress --next` | Auto-detect and run the next step | -| `/gsd-complete-milestone` | Archive milestone and tag release | -| `/gsd-new-milestone` | Start next version | -| `/gsd:surface` | Enable/disable skill clusters at runtime without reinstall | - -For ad-hoc tasks, autonomous mode, codebase analysis, forensics, and the full command surface — see **[docs/COMMANDS.md](docs/COMMANDS.md)**. - ---- - -## Why It Works - -Three things most AI-coding setups get wrong: - -**1. Context bloat.** As a session grows, quality degrades. GSD keeps your main context clean by doing the heavy work in fresh subagent contexts. Researchers, planners, and executors each start fresh with exactly what they need. - -**2. No shared memory.** GSD maintains structured artifacts that survive session boundaries: `PROJECT.md` (vision), `REQUIREMENTS.md` (scope), `ROADMAP.md` (where you're going), `STATE.md` (current position and decisions), `CONTEXT.md` (per-phase implementation decisions). Every new session loads these and knows exactly where things stand. - -**3. No verification.** Code that "runs" isn't code that "works." GSD's verify step walks you through what was built, diagnoses failures with dedicated debug agents, and generates fix plans before you declare a phase done. - -See **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** for how the multi-agent orchestration and context engineering work in detail. - ---- - -## Configuration - -Settings live in `.planning/config.json`. Configure during `/gsd-new-project` or update with `/gsd-settings`. - -Key dials: - -| Setting | What it controls | -|---------|-----------------| -| `mode` | `interactive` (confirm each step) or `yolo` (auto-approve) | -| Model profiles | `quality` / `balanced` / `budget` — controls which model each agent uses | -| `workflow.research` / `plan_check` / `verifier` | Toggle the quality agents that add tokens and time | -| `parallelization.enabled` | Run independent plans simultaneously | - -Optional structural review: set `code_quality.fallow.enabled` to `true` to add a fallow pre-pass to `/gsd-code-review`. GSD writes `.planning/phases//FALLOW.json` and surfaces a `Structural Findings (fallow)` section in `REVIEW.md`. Install with `npm install -D fallow@^2.70.0` (or system-wide via `cargo install fallow`; note that the Rust binary's JSON schema must match the documented v2.70+ contract — older versions may produce silent zero-finding output). - -Package legitimacy checks are built into the research, planning, and execution path: recommended dependencies get audited, unverified packages require a human checkpoint, and failed installs stop instead of trying similarly named alternatives. - -For the full configuration reference — all settings, git branching strategies, per-runtime model overrides, workstream config inheritance, agent skills injection — see **[docs/CONFIGURATION.md](docs/CONFIGURATION.md)**. +New here? Follow [Your first project](docs/tutorials/your-first-project.md) for a guided walkthrough from install to first shipped phase. --- ## Documentation -| Doc | What's in it | -|-----|-------------| -| [User Guide](docs/USER-GUIDE.md) | End-to-end walkthrough, install options, all runtime flags, configuration reference | -| [Commands](docs/COMMANDS.md) | Every command with flags and examples | -| [Configuration](docs/CONFIGURATION.md) | Full config schema, model profiles, git branching | -| [Architecture](docs/ARCHITECTURE.md) | How the multi-agent orchestration works | -| [CLI Tools](docs/CLI-TOOLS.md) | `gsd-sdk query` and programmatic SDK dispatch seams | -| [Features](docs/FEATURES.md) | Complete feature index | -| [Changelog](CHANGELOG.md) | Release history, including archived legacy continuity notes | +**Tutorials** — learning by doing: +- [Your first project](docs/tutorials/your-first-project.md) +- [Onboarding an existing codebase](docs/tutorials/onboarding-an-existing-codebase.md) + +**How-to guides** — task-focused recipes: +- [Install on your runtime](docs/how-to/install-on-your-runtime.md) +- [Plan a phase](docs/how-to/plan-a-phase.md) +- [Verify and ship](docs/how-to/verify-and-ship.md) +- … [see all how-to guides](docs/README.md#how-to-guides) + +**Reference** — authoritative facts: +- [Commands](docs/COMMANDS.md) +- [Configuration](docs/CONFIGURATION.md) +- [CLI tools](docs/CLI-TOOLS.md) + +**Explanation** — concepts and design decisions: +- [Context engineering](docs/explanation/context-engineering.md) +- [The phase loop](docs/explanation/the-phase-loop.md) +- [Architecture](docs/ARCHITECTURE.md) + +Full index: [docs/README.md](docs/README.md). Other languages: [日本語](README.ja-JP.md) · [한국어](README.ko-KR.md) · [Português](README.pt-BR.md) · [简体中文](README.zh-CN.md). --- -## Troubleshooting +## Why it works -**Commands not showing up?** Restart your runtime after install. GSD installs to `~/.claude/skills/gsd-*/` (Claude Code), `~/.codex/skills/gsd-*/` (Codex), or the equivalent for your runtime. +Most AI-coding setups fail at scale because context bloat silently degrades output quality, there is no shared memory between sessions, and nothing verifies that code actually works. GSD Core solves all three: heavy work runs in fresh subagents, structured artifacts like `STATE.md` and `CONTEXT.md` survive session boundaries, and the verify step walks through what was built and generates fix plans before a phase is declared done. See [docs/explanation/context-engineering.md](docs/explanation/context-engineering.md) for the full reasoning. -**Codex users — minimum supported CLI version is `0.130.0`.** Codex CLI 0.130.0 ([release notes](https://github.com/openai/codex/releases/tag/rust-v0.130.0)) removed extra-skill-roots discovery via [openai/codex#21485](https://github.com/openai/codex/pull/21485); from that version onward Codex discovers skills from standard roots (including `~/.codex/skills//SKILL.md`). GSD installs there directly. Earlier Codex CLI versions may still discover additional roots, which can surface duplicate `gsd-*` entries (one from extra-roots discovery, one from `~/.codex/skills/`); restart Codex after install and either upgrade or accept the duplicate listing. - -**Something broken?** Re-run the installer — it's idempotent: -```bash -npx @opengsd/gsd-core@latest -``` - -**Containers or Docker?** Set `CLAUDE_CONFIG_DIR` before installing to avoid tilde-expansion issues: -```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global -``` - -Full troubleshooting and uninstall instructions in **[docs/USER-GUIDE.md](docs/USER-GUIDE.md#troubleshooting)**. +Troubleshooting? See [docs/how-to/recover-and-troubleshoot.md](docs/how-to/recover-and-troubleshoot.md). --- diff --git a/README.pt-BR.md b/README.pt-BR.md index 1ceb4037e..91c6de96e 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -1,16 +1,12 @@ -> ⚠️ This is an active fork. See the [English README](README.md) for the full notice about the original repo. -
# GSD Core **Git. Ship. Done.** -[English](README.md) · **Português** · [简体中文](README.zh-CN.md) · [日本語](README.ja-JP.md) +[English](README.md) · **Português** · [简体中文](README.zh-CN.md) · [日本語](README.ja-JP.md) · [한국어](README.ko-KR.md) -**Um sistema leve e poderoso de meta-prompting, engenharia de contexto e desenvolvimento orientado a especificação para Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf, Antigravity, Augment, Trae e Cline.** - -**Resolve context rot — a degradação de qualidade que acontece conforme o Claude enche a janela de contexto.** +**Um sistema leve de meta-prompting, engenharia de contexto e desenvolvimento orientado a especificações para Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf e muito mais.** [![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) [![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) @@ -19,456 +15,92 @@ [![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE) -
- -```bash -npx @opengsd/gsd-core@latest -``` - -**Funciona em Mac, Windows e Linux.** - -
- -![GSD Install](assets/terminal.svg) - -
- -*"Se você sabe claramente o que quer, isso VAI construir para você. Sem enrolação."* - -*"Eu já usei SpecKit, OpenSpec e Taskmaster — este me deu os melhores resultados."* - -*"De longe a adição mais poderosa ao meu Claude Code. Nada superengenheirado. Simplesmente faz o trabalho."* - -
- -**Confiado por engenheiros da Amazon, Google, Shopify e Webflow.** - -[Por que eu criei isso](#por-que-eu-criei-isso) · [Como funciona](#como-funciona) · [Comandos](#comandos) · [Por que funciona](#por-que-funciona) · [Guia do usuário](docs/pt-BR/USER-GUIDE.md) -
--- -## Por que eu criei isso +## O que é o GSD Core -Sou desenvolvedor solo. Eu não escrevo código — o Claude Code escreve. - -Existem outras ferramentas de desenvolvimento orientado por especificação. BMAD, Speckit... Mas quase todas parecem mais complexas do que o necessário (cerimônias de sprint, story points, sync com stakeholders, retrospectivas, fluxos Jira) ou não entendem de verdade o panorama do que você está construindo. Eu não sou uma empresa de software com 50 pessoas. Não quero teatro corporativo. Só quero construir coisas boas que funcionem. - -Então eu criei o GSD. A complexidade fica no sistema, não no seu fluxo. Por trás: engenharia de contexto, formatação XML de prompts, orquestração de subagentes, gerenciamento de estado. O que você vê: alguns comandos que simplesmente funcionam. - -O sistema dá ao Claude tudo que ele precisa para fazer o trabalho *e* validar o resultado. Eu confio no fluxo. Ele entrega. - -— **TÂCHES** - ---- - -Vibe coding ganhou má fama. Você descreve algo, a IA gera código, e sai um resultado inconsistente que quebra em escala. - -O GSD corrige isso. É a camada de engenharia de contexto que torna o Claude Code confiável. - ---- - -## Para quem é - -Para quem quer descrever o que precisa e receber isso construído do jeito certo — sem fingir que está rodando uma engenharia de 50 pessoas. - -Quality gates embutidos capturam problemas reais: detecção de schema drift sinaliza mudanças ORM sem migrations, segurança ancora verificação a modelos de ameaça, e detecção de redução de escopo impede o planner de descartar requisitos silenciosamente. - -### Destaques de recursos - -A versão canônica é a versão de `@opengsd/gsd-core` publicada no npm e espelhada em `package.json`. Arquivos antigos de release notes em `docs/` ficam apenas como histórico de continuidade; não use números arquivados como a versão atual do GSD Core. - -- **Perfil de instalação `--minimal`** — alias `--core-only`. Instala apenas os 6 skills do loop principal (`new-project`, `discuss-phase`, `plan-phase`, `execute-phase`, `help`, `update`) e nenhum subagente `gsd-*`. Reduz o overhead do system prompt no cold-start de ~12k para ~700 tokens (≥94% de redução). Útil para LLMs locais com contexto de 32K–128K e APIs cobradas por token. -- **`/gsd-phase --edit`** — edita qualquer campo de uma fase existente em `ROADMAP.md` no lugar, sem alterar o número ou a posição. `--force` pula o diff de confirmação; referências em `depends_on` são validadas e o `STATE.md` é atualizado na escrita. -- **Build & test gate pós-merge** — o passo 5.6 de `execute-phase` agora detecta automaticamente o comando de build em `workflow.build_command`, com fallback para Xcode (`.xcodeproj`), Makefile, Justfile, Cargo, Go, Python ou npm. Projetos Xcode/iOS rodam `xcodebuild build` e `xcodebuild test` automaticamente. Funciona em modo paralelo e serial. -- **Modelo de review por runtime** — `review.models.` permite que cada CLI externa de review (codex, gemini, etc.) escolha seu próprio modelo, independente do perfil de planner/executor. -- **Herança de configuração de workstream** — quando `GSD_WORKSTREAM` está definido, o `.planning/config.json` raiz é carregado primeiro e merge-deep com o config da workstream (workstream vence em conflito). Um `null` explícito no config da workstream sobrescreve corretamente o valor raiz. -- **Consolidação de skills: 86 → 59** — 4 novos skills agrupados (`capture`, `phase`, `config`, `workspace`) absorvem 31 micro-skills. 6 skills pais existentes absorvem wrap-up e sub-operações como flags: `update --sync/--reapply`, `sketch --wrap-up`, `spike --wrap-up`, `map-codebase --fast/--query`, `code-review --fix`, `progress --do/--next`. Sem perda funcional. - ---- - -## Primeiros passos - -```bash -npx @opengsd/gsd-core@latest -``` - -O instalador pede: -1. **Runtime** — Claude Code, OpenCode, Gemini, Kilo, Codex, Copilot, Cursor, Windsurf, Antigravity, Augment, Trae, Cline, ou todos -2. **Local** — Global (todos os projetos) ou local (apenas projeto atual) - -Verifique com: -- Claude Code / Gemini / Copilot / Antigravity: `/gsd-help` -- OpenCode / Kilo / Augment / Trae: `/gsd-help` -- Codex: `$gsd-help` -- Cline: GSD instala via `.clinerules` — verifique se `.clinerules` existe - -> [!NOTE] -> Claude Code 2.1.88+ e Codex instalam como skills (`skills/gsd-*/SKILL.md`). Cline usa `.clinerules`. O instalador lida com todos os formatos automaticamente. - -> [!TIP] -> Para instalação a partir do código-fonte ou ambientes sem npm, consulte **[docs/manual-update.md](docs/manual-update.md)**. - -### Mantendo atualizado - -```bash -npx @opengsd/gsd-core@latest -``` - -
-Instalação não interativa (Docker, CI, Scripts) - -```bash -# Claude Code -npx @opengsd/gsd-core --claude --global -npx @opengsd/gsd-core --claude --local - -# OpenCode -npx @opengsd/gsd-core --opencode --global - -# Gemini CLI -npx @opengsd/gsd-core --gemini --global - -# Kilo -npx @opengsd/gsd-core --kilo --global -npx @opengsd/gsd-core --kilo --local - -# Codex -npx @opengsd/gsd-core --codex --global -npx @opengsd/gsd-core --codex --local - -# Copilot -npx @opengsd/gsd-core --copilot --global -npx @opengsd/gsd-core --copilot --local - -# Cursor -npx @opengsd/gsd-core --cursor --global -npx @opengsd/gsd-core --cursor --local - -# Antigravity -npx @opengsd/gsd-core --antigravity --global -npx @opengsd/gsd-core --antigravity --local - -# Augment -npx @opengsd/gsd-core --augment --global # Install to ~/.augment/ -npx @opengsd/gsd-core --augment --local # Install to ./.augment/ - -# Trae -npx @opengsd/gsd-core --trae --global # Install to ~/.trae/ -npx @opengsd/gsd-core --trae --local # Install to ./.trae/ - -# Cline -npx @opengsd/gsd-core --cline --global # Install to ~/.cline/ -npx @opengsd/gsd-core --cline --local # Install to ./.clinerules - -# Todos -npx @opengsd/gsd-core --all --global -``` - -Use `--global` (`-g`) ou `--local` (`-l`) para pular a pergunta de local. -Use `--claude`, `--opencode`, `--gemini`, `--kilo`, `--codex`, `--copilot`, `--cursor`, `--windsurf`, `--antigravity`, `--augment`, `--trae`, `--cline` ou `--all` para pular a pergunta de runtime. - -
- -### Recomendado: modo sem permissões - -```bash -claude --dangerously-skip-permissions -``` - -> [!TIP] -> Esse é o modo pensado para o GSD: aprovar `date` e `git commit` 50 vezes mata a produtividade. +GSD Core é um framework de engenharia de contexto e desenvolvimento orientado a especificações que conduz agentes de codificação com IA (Claude Code, Codex, Gemini CLI, Copilot, Cursor e mais) por meio de um ciclo de fases disciplinado. Ele resolve o [context rot](docs/pt-BR/explanation/context-engineering.md) — a degradação de qualidade que se acumula à medida que uma IA preenche sua janela de contexto — executando todo o trabalho pesado de pesquisa, planejamento e execução em subagentes com contexto limpo, mantendo sua sessão principal enxuta. --- ## Como funciona -> **Já tem código?** Rode `/gsd-map-codebase` primeiro para analisar stack, arquitetura, convenções e riscos. +Cada marco repete o mesmo ciclo de cinco etapas, uma fase por vez: -### 1. Inicializar projeto +1. **Discuss** — capturar decisões de implementação antes de qualquer planejamento +2. **Plan** — pesquisar, decompor e verificar se o plano cabe em uma janela de contexto limpa +3. **Execute** — executar planos em ondas paralelas; cada executor começa com um contexto limpo de 200k tokens +4. **Verify** — percorrer o que foi construído; diagnosticar e corrigir antes de declarar conclusão +5. **Ship** — criar o PR, arquivar a fase e repetir para a próxima +--- + +## Início rápido + +```bash +npx @opengsd/gsd-core@latest ``` + +O instalador solicita seu ambiente de execução (Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf e mais) e se deseja instalar globalmente ou localmente. O instalador é necessário para compatibilidade entre runtimes — não copie arquivos diretamente de `agents/` ou `commands/`. + +Em outro runtime ou sem Node.js? Consulte [Instalar no seu runtime](docs/pt-BR/how-to/install-on-your-runtime.md). + +Após a instalação, inicie seu primeiro projeto: + +```bash /gsd-new-project ``` -O sistema: -1. **Pergunta** até entender seu objetivo -2. **Pesquisa** o domínio com agentes em paralelo -3. **Extrai requisitos** (v1, v2 e fora de escopo) -4. **Monta roadmap** por fases +É a primeira vez? Siga [Seu primeiro projeto](docs/pt-BR/tutorials/your-first-project.md) para um passo a passo guiado, desde a instalação até a primeira fase entregue. -**Cria:** `PROJECT.md`, `REQUIREMENTS.md`, `ROADMAP.md`, `STATE.md`, `.planning/research/` +--- -### 2. Discutir fase +## Documentação -``` -/gsd-discuss-phase 1 -``` +**Tutoriais** — aprendendo na prática: +- [Seu primeiro projeto](docs/pt-BR/tutorials/your-first-project.md) +- [Integrar uma base de código existente](docs/pt-BR/tutorials/onboarding-an-existing-codebase.md) -Captura suas preferências de implementação antes do planejamento. +**Guias práticos** — receitas orientadas a tarefas: +- [Instalar no seu runtime](docs/pt-BR/how-to/install-on-your-runtime.md) +- [Planejar uma fase](docs/pt-BR/how-to/plan-a-phase.md) +- [Verificar e entregar](docs/pt-BR/how-to/verify-and-ship.md) +- … [ver todos os guias práticos](docs/pt-BR/README.md#how-to-guides) -**Cria:** `{phase_num}-CONTEXT.md` +**Referência** — informações autoritativas: +- [Comandos](docs/pt-BR/COMMANDS.md) +- [Configuração](docs/pt-BR/CONFIGURATION.md) +- [Ferramentas CLI](docs/pt-BR/CLI-TOOLS.md) -### 3. Planejar fase +**Explicação** — conceitos e decisões de design: +- [Engenharia de contexto](docs/pt-BR/explanation/context-engineering.md) +- [O ciclo de fases](docs/pt-BR/explanation/the-phase-loop.md) +- [Arquitetura](docs/pt-BR/ARCHITECTURE.md) -``` -/gsd-plan-phase 1 -``` - -1. Pesquisa abordagens -2. Cria 2-3 planos atômicos em XML -3. Verifica contra os requisitos - -**Cria:** `{phase_num}-RESEARCH.md`, `{phase_num}-{N}-PLAN.md` - -### 4. Executar fase - -``` -/gsd-execute-phase 1 -``` - -1. Executa planos em ondas -2. Contexto novo por plano -3. Commit atômico por tarefa -4. Verifica contra objetivos - -**Cria:** `{phase_num}-{N}-SUMMARY.md`, `{phase_num}-VERIFICATION.md` - -### 5. Verificar trabalho - -``` -/gsd-verify-work 1 -``` - -Validação manual orientada para confirmar que a feature realmente funciona como esperado. - -**Cria:** `{phase_num}-UAT.md` e planos de correção se necessário - -### 6. Repetir -> Entregar -> Completar - -``` -/gsd-discuss-phase 2 -/gsd-plan-phase 2 -/gsd-execute-phase 2 -/gsd-verify-work 2 -/gsd-ship 2 -/gsd-complete-milestone -/gsd-new-milestone -``` - -Ou deixe o GSD decidir: - -``` -/gsd-progress --next -``` - -### Modo rápido - -``` -/gsd-quick -``` - -Para tarefas ad-hoc sem ciclo completo de planejamento. +Índice completo: [docs/pt-BR/README.md](docs/pt-BR/README.md). Outros idiomas: [日本語](README.ja-JP.md) · [한국어](README.ko-KR.md) · [Português](README.pt-BR.md) · [简体中文](README.zh-CN.md). --- ## Por que funciona -### Engenharia de contexto +A maioria das configurações de codificação com IA falha em escala porque o inchaço de contexto degrada silenciosamente a qualidade da saída, não há memória compartilhada entre sessões e nada verifica se o código realmente funciona. O GSD Core resolve os três problemas: o trabalho pesado é executado em subagentes com contexto limpo, artefatos estruturados como `STATE.md` e `CONTEXT.md` sobrevivem às fronteiras de sessão, e a etapa de verificação percorre o que foi construído e gera planos de correção antes de uma fase ser declarada concluída. Consulte [docs/pt-BR/explanation/context-engineering.md](docs/pt-BR/explanation/context-engineering.md) para o raciocínio completo. -| Arquivo | Papel | -|---------|-------| -| `PROJECT.md` | Visão do projeto | -| `research/` | Conhecimento do ecossistema | -| `REQUIREMENTS.md` | Escopo v1/v2 | -| `ROADMAP.md` | Direção e progresso | -| `STATE.md` | Memória entre sessões | -| `PLAN.md` | Tarefa atômica com XML | -| `SUMMARY.md` | O que mudou | -| `todos/` | Ideias para depois | -| `threads/` | Contexto persistente | -| `seeds/` | Ideias para próximos marcos | - -### Formato XML de prompt - -```xml - - Create login endpoint - src/app/api/auth/login/route.ts - - Use jose for JWT (not jsonwebtoken - CommonJS issues). - Validate credentials against users table. - Return httpOnly cookie on success. - - curl -X POST localhost:3000/api/auth/login returns 200 + Set-Cookie - Valid credentials return cookie, invalid return 401 - -``` - -### Orquestração multiagente - -Um orquestrador leve chama agentes especializados para pesquisa, planejamento, execução e verificação. - -### Commits atômicos - -Cada tarefa gera commit próprio, facilitando `git bisect`, rollback e rastreabilidade. +Problemas? Consulte [docs/pt-BR/how-to/recover-and-troubleshoot.md](docs/pt-BR/how-to/recover-and-troubleshoot.md). --- -## Comandos +## Comunidade -### Fluxo principal - -| Comando | O que faz | -|---------|-----------| -| `/gsd-new-project [--auto]` | Inicializa projeto completo | -| `/gsd-discuss-phase [N] [--auto] [--analyze] [--chain]` | Captura decisões antes do plano (`--chain` encadeia automaticamente em plan+execute) | -| `/gsd-plan-phase [N] [--auto] [--reviews]` | Pesquisa + plano + validação | -| `/gsd-execute-phase ` | Executa planos em ondas paralelas | -| `/gsd-verify-work [N]` | UAT manual | -| `/gsd-ship [N] [--draft]` | Cria PR da fase validada | -| `/gsd-progress --next` | Avança automaticamente para o próximo passo | -| `/gsd-fast ` | Tarefas triviais sem planejamento | -| `/gsd-complete-milestone` | Fecha o marco e marca release | -| `/gsd-new-milestone [name]` | Inicia próximo marco | - -### Qualidade e utilidades - -| Comando | O que faz | -|---------|-----------| -| `/gsd-review` | Peer review com múltiplas IAs | -| `/gsd-pr-branch` | Cria branch limpa para PR | -| `/gsd-settings` | Configura perfis e agentes | -| `/gsd-config --profile ` | Troca perfil (quality/balanced/budget/inherit) | -| `/gsd-quick [--full] [--discuss] [--research]` | Execução rápida com garantias do GSD (`--full` ativa todas as etapas, `--validate` ativa apenas verificação) | -| `/gsd-health [--repair]` | Verifica e repara `.planning/` | - -> Para a lista completa de comandos e opções, use `/gsd-help`. +| Projeto | Plataforma | +|---------|----------| +| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | Port original para OpenCode | +| [Discord](https://discord.gg/mYgfVNfA2r) | Suporte da comunidade | --- -## Configuração - -As configurações do projeto ficam em `.planning/config.json`. -Você pode configurar no `/gsd-new-project` ou ajustar depois com `/gsd-settings`. - -### Ajustes principais - -| Configuração | Opções | Padrão | Controle | -|--------------|--------|--------|----------| -| `mode` | `yolo`, `interactive` | `interactive` | Autoaprovar vs confirmar etapas | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | Granularidade de fases/planos | - -### Perfis de modelo - -| Perfil | Planejamento | Execução | Verificação | -|--------|--------------|----------|-------------| -| `quality` | Opus | Opus | Sonnet | -| `balanced` | Opus | Sonnet | Sonnet | -| `budget` | Sonnet | Sonnet | Haiku | -| `inherit` | Inherit | Inherit | Inherit | - -Troca rápida: -``` -/gsd-config --profile budget -``` - ---- - -## Segurança - -### Endurecimento embutido - -O GSD inclui proteções como: -- prevenção de path traversal -- detecção de prompt injection -- validação de argumentos de shell -- parsing seguro de JSON -- scanner de injeção para CI - -### Protegendo arquivos sensíveis - -Adicione padrões sensíveis ao deny list do Claude Code: - -```json -{ - "permissions": { - "deny": [ - "Read(.env)", - "Read(.env.*)", - "Read(**/secrets/*)", - "Read(**/*credential*)", - "Read(**/*.pem)", - "Read(**/*.key)" - ] - } -} -``` - ---- - -## Solução de problemas - -**Comandos não apareceram após instalar?** -- Reinicie o runtime -- Verifique se os arquivos foram instalados no diretório correto - -**Comandos não funcionam como esperado?** -- Rode `/gsd-help` -- Reinstale com `npx @opengsd/gsd-core@latest` - -**Em Docker/container?** -- Defina `CLAUDE_CONFIG_DIR` antes da instalação: - -```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global -``` - -### Desinstalar - -```bash -# Instalações globais -npx @opengsd/gsd-core --claude --global --uninstall -npx @opengsd/gsd-core --opencode --global --uninstall -npx @opengsd/gsd-core --gemini --global --uninstall -npx @opengsd/gsd-core --kilo --global --uninstall -npx @opengsd/gsd-core --codex --global --uninstall -npx @opengsd/gsd-core --copilot --global --uninstall -npx @opengsd/gsd-core --cursor --global --uninstall -npx @opengsd/gsd-core --antigravity --global --uninstall -npx @opengsd/gsd-core --augment --global --uninstall -npx @opengsd/gsd-core --trae --global --uninstall -npx @opengsd/gsd-core --cline --global --uninstall - -# Instalações locais (projeto atual) -npx @opengsd/gsd-core --claude --local --uninstall -npx @opengsd/gsd-core --opencode --local --uninstall -npx @opengsd/gsd-core --gemini --local --uninstall -npx @opengsd/gsd-core --kilo --local --uninstall -npx @opengsd/gsd-core --codex --local --uninstall -npx @opengsd/gsd-core --copilot --local --uninstall -npx @opengsd/gsd-core --cursor --local --uninstall -npx @opengsd/gsd-core --antigravity --local --uninstall -npx @opengsd/gsd-core --augment --local --uninstall -npx @opengsd/gsd-core --trae --local --uninstall -npx @opengsd/gsd-core --cline --local --uninstall -``` - ---- - -## Community Ports - -OpenCode, Gemini CLI, Kilo e Codex agora são suportados nativamente via `npx @opengsd/gsd-core`. - -| Projeto | Plataforma | Descrição | -|---------|------------|-----------| -| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | OpenCode | Adaptação original para OpenCode | -| gsd-gemini (archived) | Gemini CLI | Adaptação original para Gemini por uberfuzzy | - ---- - -## Star History +## Histórico de estrelas @@ -482,12 +114,12 @@ OpenCode, Gemini CLI, Kilo e Codex agora são suportados nativamente via `npx @o ## Licença -Licença MIT. Veja [LICENSE](LICENSE). +Licença MIT. Consulte [LICENSE](LICENSE) para detalhes. ---
-**Claude Code é poderoso. O GSD o torna confiável.** +**Claude Code é poderoso. GSD Core o torna confiável.**
diff --git a/README.zh-CN.md b/README.zh-CN.md index e106fb14d..7e2831c54 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,5 +1,3 @@ -> ⚠️ This is an active fork. See the [English README](README.md) for the full notice about the original repo. -
# GSD Core @@ -8,9 +6,7 @@ [English](README.md) · [Português](README.pt-BR.md) · **简体中文** · [日本語](README.ja-JP.md) · [한국어](README.ko-KR.md) -**一个轻量但强大的元提示、上下文工程与规格驱动开发系统,适用于 Claude Code、OpenCode、Gemini CLI、Kilo、Codex、Copilot、Cursor、Windsurf、Antigravity、Augment、Trae、CodeBuddy 和 Cline。** - -**它解决的是 context rot:随着 Claude 的上下文窗口被填满,输出质量逐步劣化的问题。** +**一套轻量级的元提示、上下文工程与规范驱动开发系统,适用于 Claude Code、OpenCode、Gemini CLI、Kilo、Codex、Copilot、Cursor、Windsurf 等 AI 编程工具。** [![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) [![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) @@ -19,72 +15,25 @@ [![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE) -
- -```bash -npx @opengsd/gsd-core@latest -``` - -**支持 Mac、Windows 和 Linux。** - -
- -![GSD Install](assets/terminal.svg) - -
- -*"只要你清楚自己想要什么,它就真的能给你做出来。不扯淡。"* - -*"我试过 SpecKit、OpenSpec 和 Taskmaster,这套东西目前给我的结果最好。"* - -*"这是我给 Claude Code 加过最强的增强。没有过度设计,是真的把事做完。"* - -
- -**已被 Amazon、Google、Shopify 和 Webflow 的工程师采用。** - -[我为什么做这个](#我为什么做这个) · [它是怎么工作的](#它是怎么工作的) · [命令](#命令) · [为什么它有效](#为什么它有效) · [用户指南](docs/USER-GUIDE.md) -
--- -## 我为什么做这个 +## 什么是 GSD Core -我是独立开发者。我不写代码,Claude Code 写。 - -市面上已经有其他规格驱动开发工具,比如 BMAD、Speckit……但它们要么把事情搞得比必要的复杂得多了些(冲刺仪式、故事点、利益相关方同步、复盘、Jira 流程),要么根本缺少对你到底在构建什么的整体理解。我不是一家 50 人的软件公司。我不想演企业流程。我只是个想把好东西真正做出来的创作者。 - -所以我做了 GSD。复杂性在系统内部,不在你的工作流里。幕后是上下文工程、XML 提示格式、子代理编排、状态管理;你看到的是几个真能工作的命令。 - -这套系统会把 Claude 完成工作 *以及* 验证结果所需的一切上下文都准备好。我信任这个工作流,因为它确实能把事情做好。 - -这就是它。没有企业角色扮演式的废话,只有一套非常有效、能让你持续用 Claude Code 构建酷东西的系统。 - -— **TÂCHES** +GSD Core 是一套上下文工程与规范驱动开发框架,能够引导 AI 编程智能体(Claude Code、Codex、Gemini CLI、Copilot、Cursor 等)按照严格的阶段循环推进工作。它解决了[上下文腐化](docs/zh-CN/explanation/context-engineering.md)问题——即随着 AI 填满上下文窗口而逐渐累积的质量下降——通过在全新上下文的子智能体中运行所有繁重的研究、规划和执行工作,同时保持主会话的精简。 --- -Vibecoding 的名声不算好。你描述需求,AI 生成代码,结果往往是质量不稳定、规模一上来就散架的垃圾。 +## 工作原理 -GSD 解决的就是这个问题。它是让 Claude Code 变得可靠的上下文工程层。你只要描述想法,系统会自动提取它需要知道的一切,然后让 Claude Code 去干活。 +每个里程碑重复相同的五步循环,每次推进一个阶段: ---- - -## 适合谁用 - -适合那些想把自己的需求说明白,然后让系统正确构建出来的人,而不是假装自己在运营一个 50 人工程组织的人。 - -### 功能亮点 - -规范版本以 npm 上发布的 `@opengsd/gsd-core` 版本以及 `package.json` 为准。`docs/` 中旧的发行说明文件仅作为连续性历史保留;不要把归档编号当作当前 GSD Core 包版本。 - -- **`--minimal` 安装档** — 别名 `--core-only`。仅安装主循环的 6 个核心技能(`new-project`、`discuss-phase`、`plan-phase`、`execute-phase`、`help`、`update`),不安装任何 `gsd-*` 子代理。将冷启动系统提示开销从 ~12k token 降至 ~700 token(≥94% 减少)。适合 32K–128K 上下文的本地 LLM 和按 token 计费的 API。 -- **`/gsd-phase --edit`** — 就地修改 `ROADMAP.md` 中已有阶段的任意字段,不改变其编号或位置。`--force` 跳过确认 diff,验证 `depends_on` 引用,并在写入时更新 `STATE.md`。 -- **合并后构建与测试门** — `execute-phase` 步骤 5.6 优先自动检测 `workflow.build_command` 配置,否则按 Xcode(`.xcodeproj`)、Makefile、Justfile、Cargo、Go、Python、npm 顺序回退。Xcode/iOS 项目自动运行 `xcodebuild build` 和 `xcodebuild test`。在并行与串行模式下均生效。 -- **每运行时评审模型选择** — `review.models.` 让每个外部评审 CLI(codex、gemini 等)独立于规划/执行档选择自己的模型。 -- **工作流设置继承** — 设置 `GSD_WORKSTREAM` 后,先加载根 `.planning/config.json`,再与该工作流的配置进行深合并(冲突时工作流优先)。工作流配置中显式 `null` 会覆盖根值。 -- **技能整合:86 → 59** — 4 个新分组技能(`capture`、`phase`、`config`、`workspace`)吸收了 31 个微技能。6 个已有父技能将收尾与子操作合并为标志:`update --sync/--reapply`、`sketch --wrap-up`、`spike --wrap-up`、`map-codebase --fast/--query`、`code-review --fix`、`progress --do/--next`。功能无损失。 +1. **讨论(Discuss)** — 在规划任何内容之前,先捕获实现决策 +2. **规划(Plan)** — 研究、分解,并验证计划能够适配全新的上下文窗口 +3. **执行(Execute)** — 以并行波次运行计划;每个执行器以干净的 20 万 token 上下文启动 +4. **验证(Verify)** — 检查已构建的内容;在宣告完成前诊断并修复问题 +5. **交付(Ship)** — 创建 PR,归档阶段,对下一个阶段重复上述流程 --- @@ -94,727 +43,60 @@ GSD 解决的就是这个问题。它是让 Claude Code 变得可靠的上下文 npx @opengsd/gsd-core@latest ``` -安装器会提示你选择: -1. **运行时**:Claude Code、OpenCode、Gemini、Kilo、Codex、Copilot、Cursor、Windsurf、Antigravity、Augment、Trae、CodeBuddy、Cline,或全部 -2. **安装位置**:全局(所有项目)或本地(仅当前项目) +安装程序会提示选择运行时(Claude Code、OpenCode、Gemini CLI、Kilo、Codex、Copilot、Cursor、Windsurf 等)以及是全局安装还是本地安装。跨运行时兼容性需要使用安装程序——请勿直接从 `agents/` 或 `commands/` 目录复制文件。 -安装后可这样验证: -- Claude Code / Gemini / Copilot / Antigravity:`/gsd-help` -- OpenCode / Kilo / Augment / Trae / CodeBuddy:`/gsd-help` -- Codex:`$gsd-help` -- Cline:GSD 通过 `.clinerules` 安装 — 检查 `.clinerules` 是否存在 +使用其他运行时或没有 Node.js?请参阅[在你的运行时上安装](docs/zh-CN/how-to/install-on-your-runtime.md)。 -> [!NOTE] -> Claude Code 2.1.88+ 和 Codex 以 skill 形式安装(`skills/gsd-*/SKILL.md`)。Cline 使用 `.clinerules`。安装器会自动处理所有格式。 - -> [!TIP] -> 基于源码安装或无法使用 npm 的环境,请参阅 **[docs/manual-update.md](docs/manual-update.md)**。 - -### 保持更新 - -GSD 迭代很快,建议定期更新: +安装完成后,启动你的第一个项目: ```bash -npx @opengsd/gsd-core@latest -``` - -
-非交互式安装(Docker、CI、脚本) - -```bash -# Claude Code -npx @opengsd/gsd-core --claude --global # 安装到 ~/.claude/ -npx @opengsd/gsd-core --claude --local # 安装到 ./.claude/ - -# OpenCode -npx @opengsd/gsd-core --opencode --global # 安装到 ~/.config/opencode/ - -# Gemini CLI -npx @opengsd/gsd-core --gemini --global # 安装到 ~/.gemini/ - -# Kilo -npx @opengsd/gsd-core --kilo --global # 安装到 ~/.config/kilo/ -npx @opengsd/gsd-core --kilo --local # 安装到 ./.kilo/ - -# Codex -npx @opengsd/gsd-core --codex --global # 安装到 ~/.codex/ -npx @opengsd/gsd-core --codex --local # 安装到 ./.codex/ - -# Copilot -npx @opengsd/gsd-core --copilot --global # 安装到 ~/.github/ -npx @opengsd/gsd-core --copilot --local # 安装到 ./.github/ - -# Cursor CLI -npx @opengsd/gsd-core --cursor --global # 安装到 ~/.cursor/ -npx @opengsd/gsd-core --cursor --local # 安装到 ./.cursor/ - -# Antigravity -npx @opengsd/gsd-core --antigravity --global # 安装到 ~/.gemini/antigravity/ -npx @opengsd/gsd-core --antigravity --local # 安装到 ./.agent/ - -# Augment -npx @opengsd/gsd-core --augment --global # 安装到 ~/.augment/ -npx @opengsd/gsd-core --augment --local # 安装到 ./.augment/ - -# Trae -npx @opengsd/gsd-core --trae --global # 安装到 ~/.trae/ -npx @opengsd/gsd-core --trae --local # 安装到 ./.trae/ - -# CodeBuddy -npx @opengsd/gsd-core --codebuddy --global # 安装到 ~/.codebuddy/ -npx @opengsd/gsd-core --codebuddy --local # 安装到 ./.codebuddy/ - -# Cline -npx @opengsd/gsd-core --cline --global # 安装到 ~/.cline/ -npx @opengsd/gsd-core --cline --local # 安装到 ./.clinerules - -# 所有运行时 -npx @opengsd/gsd-core --all --global # 安装到所有目录 -``` - -使用 `--global`(`-g`)或 `--local`(`-l`)可以跳过安装位置提示。 -使用 `--claude`、`--opencode`、`--gemini`、`--kilo`、`--codex`、`--copilot`、`--cursor`、`--windsurf`、`--antigravity`、`--augment`、`--trae`、`--codebuddy`、`--cline` 或 `--all` 可以跳过运行时提示。 - -
- -
-开发安装 - -克隆仓库并在本地运行安装器: - -```bash -git clone https://github.com/open-gsd/gsd-core.git -cd gsd-core -node bin/install.js --claude --local -``` - -这样会安装到 `./.claude/`,方便你在贡献代码前测试自己的改动。 - -
- -### 推荐:跳过权限确认模式 - -GSD 的设计目标是无摩擦自动化。运行 Claude Code 时建议使用: - -```bash -claude --dangerously-skip-permissions -``` - -> [!TIP] -> 这才是 GSD 的预期用法。连 `date` 和 `git commit` 都要来回确认 50 次,整个体验就废了。 - -
-替代方案:细粒度权限 - -如果你不想使用这个 flag,可以在项目的 `.claude/settings.json` 中加入: - -```json -{ - "permissions": { - "allow": [ - "Bash(date:*)", - "Bash(echo:*)", - "Bash(cat:*)", - "Bash(ls:*)", - "Bash(mkdir:*)", - "Bash(wc:*)", - "Bash(head:*)", - "Bash(tail:*)", - "Bash(sort:*)", - "Bash(grep:*)", - "Bash(tr:*)", - "Bash(git add:*)", - "Bash(git commit:*)", - "Bash(git status:*)", - "Bash(git log:*)", - "Bash(git diff:*)", - "Bash(git tag:*)" - ] - } -} -``` - -
- ---- - -## 它是怎么工作的 - -> **已经有现成代码库?** 先运行 `/gsd-map-codebase`。它会并行拉起多个代理分析你的技术栈、架构、约定和风险点。之后 `/gsd-new-project` 就会真正“理解”你的代码库,提问会聚焦在你打算新增的部分,规划时也会自动加载你的现有模式。 - -### 1. 初始化项目 - -``` /gsd-new-project ``` -一个命令,一条完整流程。系统会: - -1. **提问**:一直问到它彻底理解你的想法(目标、约束、技术偏好、边界情况) -2. **研究**:并行拉起代理调研领域知识(可选,但强烈建议) -3. **需求梳理**:提取哪些属于 v1、v2,哪些不在范围内 -4. **路线图**:创建与需求映射的阶段规划 - -你审核并批准路线图后,就可以开始构建。 - -**生成:** `PROJECT.md`、`REQUIREMENTS.md`、`ROADMAP.md`、`STATE.md`、`.planning/research/` +初次使用?请按照[你的第一个项目](docs/zh-CN/tutorials/your-first-project.md)进行引导式操作,从安装到完成第一个交付阶段。 --- -### 2. 讨论阶段 +## 文档 -``` -/gsd-discuss-phase 1 -``` +**教程** — 边做边学: +- [你的第一个项目](docs/zh-CN/tutorials/your-first-project.md) +- [接入现有代码库](docs/zh-CN/tutorials/onboarding-an-existing-codebase.md) -**这是你塑造实现方式的地方。** +**操作指南** — 面向任务的实用方法: +- [在你的运行时上安装](docs/zh-CN/how-to/install-on-your-runtime.md) +- [规划一个阶段](docs/zh-CN/how-to/plan-a-phase.md) +- [验证与交付](docs/zh-CN/how-to/verify-and-ship.md) +- … [查看所有操作指南](docs/zh-CN/README.md#how-to-guides) -你的路线图里,每个阶段通常只有一两句话。这点信息不足以让系统按 *你脑中的样子* 把东西做出来。这一步的作用,就是在研究和规划之前,把你的偏好先收进去。 +**参考文档** — 权威信息: +- [命令](docs/zh-CN/COMMANDS.md) +- [配置](docs/zh-CN/CONFIGURATION.md) +- [CLI 工具](docs/zh-CN/CLI-TOOLS.md) -系统会分析该阶段,并根据要构建的内容识别灰区: +**概念说明** — 设计理念与决策: +- [上下文工程](docs/zh-CN/explanation/context-engineering.md) +- [阶段循环](docs/zh-CN/explanation/the-phase-loop.md) +- [架构](docs/zh-CN/ARCHITECTURE.md) -- **视觉功能**:布局、信息密度、交互、空状态 -- **API / CLI**:返回格式、flags、错误处理、详细程度 -- **内容系统**:结构、语气、深度、流转方式 -- **组织型任务**:分组标准、命名、去重、例外情况 - -对每个你选择的区域,系统都会持续追问,直到你满意为止。最终产物 `CONTEXT.md` 会直接喂给后续两个步骤: - -1. **研究代理会读取它**:知道该研究哪些模式(例如“用户想要卡片布局” → 去研究卡片组件库) -2. **规划代理会读取它**:知道哪些决策已经锁定(例如“已决定使用无限滚动” → 计划里就会包含滚动处理) - -你在这里给出的信息越具体,系统越能构建出你真正想要的东西。跳过它,你拿到的是合理默认值;用好它,你拿到的是 *你的* 方案。 - -**生成:** `{phase_num}-CONTEXT.md` +完整索引:[docs/zh-CN/README.md](docs/zh-CN/README.md)。其他语言:[日本語](README.ja-JP.md) · [한국어](README.ko-KR.md) · [Português](README.pt-BR.md) · [English](README.md)。 --- -### 3. 规划阶段 +## 为什么有效 -``` -/gsd-plan-phase 1 -``` +大多数 AI 编程方案在规模化时都会失败,原因在于上下文膨胀会悄无声息地降低输出质量,各会话之间没有共享记忆,也没有任何机制来验证代码是否真正可用。GSD Core 解决了这三个问题:繁重的工作在全新的子智能体中运行,`STATE.md` 和 `CONTEXT.md` 等结构化工件能够跨越会话边界保持存续,验证步骤会检查已构建的内容并在宣告阶段完成前生成修复计划。完整的设计思路请参阅 [docs/zh-CN/explanation/context-engineering.md](docs/zh-CN/explanation/context-engineering.md)。 -系统会: - -1. **研究**:结合你的 `CONTEXT.md` 决策,调研这一阶段该怎么实现 -2. **制定计划**:创建 2-3 份原子化任务计划,使用 XML 结构 -3. **验证**:将计划与需求对照检查,直到通过为止 - -每份计划都足够小,可以在一个全新的上下文窗口里执行。没有质量衰减,也不会出现“我接下来会更简洁一些”的退化状态。 - -**生成:** `{phase_num}-RESEARCH.md`、`{phase_num}-{N}-PLAN.md` +遇到问题?请参阅 [docs/zh-CN/how-to/recover-and-troubleshoot.md](docs/zh-CN/how-to/recover-and-troubleshoot.md)。 --- -### 4. 执行阶段 +## 社区 -``` -/gsd-execute-phase 1 -``` - -系统会: - -1. **按 wave 执行计划**:能并行的并行,有依赖的顺序执行 -2. **每个计划使用新上下文**:20 万 token 纯用于实现,零历史垃圾 -3. **每个任务单独提交**:每项任务都有自己的原子提交 -4. **对照目标验证**:检查代码库是否真的交付了该阶段承诺的内容 - -你可以离开,回来时看到的是已经完成的工作和干净的 git 历史。 - -**Wave 执行方式:** - -计划会根据依赖关系被分组为不同的 “wave”。同一 wave 内并行执行,不同 wave 之间顺序推进。 - -``` -┌─────────────────────────────────────────────────────────────────────┐ -│ PHASE EXECUTION │ -├─────────────────────────────────────────────────────────────────────┤ -│ │ -│ WAVE 1 (parallel) WAVE 2 (parallel) WAVE 3 │ -│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ -│ │ Plan 01 │ │ Plan 02 │ → │ Plan 03 │ │ Plan 04 │ → │ Plan 05 │ │ -│ │ │ │ │ │ │ │ │ │ │ │ -│ │ User │ │ Product │ │ Orders │ │ Cart │ │ Checkout│ │ -│ │ Model │ │ Model │ │ API │ │ API │ │ UI │ │ -│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ -│ │ │ ↑ ↑ ↑ │ -│ └───────────┴──────────────┴───────────┘ │ │ -│ Dependencies: Plan 03 needs Plan 01 │ │ -│ Plan 04 needs Plan 02 │ │ -│ Plan 05 needs Plans 03 + 04 │ │ -│ │ -└─────────────────────────────────────────────────────────────────────┘ -``` - -**为什么 wave 很重要:** -- 独立计划 → 同一 wave → 并行执行 -- 依赖计划 → 更晚的 wave → 等依赖完成 -- 文件冲突 → 顺序执行,或合并到同一个计划里 - -这也是为什么“垂直切片”(Plan 01:端到端完成用户功能)比“水平分层”(Plan 01:所有 model,Plan 02:所有 API)更容易并行化。 - -**生成:** `{phase_num}-{N}-SUMMARY.md`、`{phase_num}-VERIFICATION.md` - ---- - -### 5. 验证工作 - -``` -/gsd-verify-work 1 -``` - -**这是你确认它是否真的可用的地方。** - -自动化验证能检查代码存在、测试通过。但这个功能是否真的按你的预期工作?这一步就是让你亲自用。 - -系统会: - -1. **提取可测试的交付项**:你现在应该能做到什么 -2. **逐项带你验证**:“能否用邮箱登录?” 可以 / 不可以,或者描述哪里不对 -3. **自动诊断失败**:拉起 debug 代理定位根因 -4. **创建验证过的修复计划**:可立刻重新执行 - -如果一切通过,就进入下一步;如果哪里坏了,你不需要手动 debug,只要重新运行 `/gsd-execute-phase`,执行它自动生成的修复计划即可。 - -**生成:** `{phase_num}-UAT.md`,以及发现问题时的修复计划 - ---- - -### 6. 重复 → 发布 → 完成 → 下一个里程碑 - -``` -/gsd-discuss-phase 2 -/gsd-plan-phase 2 -/gsd-execute-phase 2 -/gsd-verify-work 2 -/gsd-ship 2 # 从已验证的工作创建 PR -... -/gsd-complete-milestone -/gsd-new-milestone -``` - -或者让 GSD 自动判断下一步: - -``` -/gsd-progress --next # 自动检测并执行下一步 -``` - -循环执行 **讨论 → 规划 → 执行 → 验证 → 发布**,直到整个里程碑完成。 - -如果你希望在讨论阶段更快收集信息,可以用 `/gsd-discuss-phase --batch`,一次回答一小组问题,而不是逐个问答。 - -每个阶段都会得到你的输入(discuss)、充分研究(plan)、干净执行(execute)和人工验证(verify)。上下文始终保持新鲜,质量也能持续稳定。 - -当所有阶段完成后,`/gsd-complete-milestone` 会归档当前里程碑并打 release tag。 - -接着用 `/gsd-new-milestone` 开启下一个版本。它和 `new-project` 流程相同,只是面向你现有的代码库。你描述下一步想构建什么,系统研究领域、梳理需求,再产出新的路线图。每个里程碑都是一个干净周期:定义 → 构建 → 发布。 - ---- - -### 快速模式 - -``` -/gsd-quick -``` - -**适用于不需要完整规划的临时任务。** - -快速模式保留 GSD 的核心保障(原子提交、状态跟踪),但路径更短: - -- **相同的代理体系**:同样是 planner + executor,质量不降 -- **跳过可选步骤**:默认不启用 research、plan checker、verifier -- **独立跟踪**:数据存放在 `.planning/quick/`,不和 phase 混在一起 - -**`--discuss` 参数:** 在规划前先进行轻量讨论,理清灰区。 - -**`--research` 参数:** 在规划前拉起研究代理。调查实现方式、库选型和潜在坑点。适合你不确定怎么下手的场景。 - -**`--full` 参数:** 启用计划检查(最多 2 轮迭代)和执行后验证。 - -参数可组合使用:`--discuss --research --full` 可同时获得讨论 + 研究 + 计划检查 + 验证。 - -``` -/gsd-quick -> What do you want to do? "Add dark mode toggle to settings" -``` - -**生成:** `.planning/quick/001-add-dark-mode-toggle/PLAN.md`、`SUMMARY.md` - ---- - -## 为什么它有效 - -### 上下文工程 - -Claude Code 非常强大,前提是你把它需要的上下文给对。大多数人做不到。 - -GSD 会替你处理: - -| 文件 | 作用 | -|------|------| -| `PROJECT.md` | 项目愿景,始终加载 | -| `research/` | 生态知识(技术栈、功能、架构、坑点) | -| `REQUIREMENTS.md` | 带 phase 可追踪性的 v1/v2 范围定义 | -| `ROADMAP.md` | 你要去哪里、哪些已经完成 | -| `STATE.md` | 决策、阻塞、当前位置,跨会话记忆 | -| `PLAN.md` | 带 XML 结构和验证步骤的原子任务 | -| `SUMMARY.md` | 做了什么、改了什么、已写入历史 | -| `todos/` | 留待后续处理的想法和任务 | - -这些尺寸限制都是基于 Claude 在何处开始质量退化得出的。控制在阈值内,输出才能持续稳定。 - -### XML 提示格式 - -每个计划都会使用为 Claude 优化过的结构化 XML: - -```xml - - Create login endpoint - src/app/api/auth/login/route.ts - - Use jose for JWT (not jsonwebtoken - CommonJS issues). - Validate credentials against users table. - Return httpOnly cookie on success. - - curl -X POST localhost:3000/api/auth/login returns 200 + Set-Cookie - Valid credentials return cookie, invalid return 401 - -``` - -指令足够精确,不需要猜。验证也内建在计划里。 - -### 多代理编排 - -每个阶段都遵循同一种模式:一个轻量 orchestrator 拉起专用代理、汇总结果,再路由到下一步。 - -| 阶段 | Orchestrator 做什么 | Agents 做什么 | -|------|---------------------|---------------| -| 研究 | 协调与展示研究结果 | 4 个并行研究代理分别调查技术栈、功能、架构、坑点 | -| 规划 | 校验并管理迭代 | Planner 生成计划,checker 验证,循环直到通过 | -| 执行 | 按 wave 分组并跟踪进度 | Executors 并行实现,每个都有全新的 20 万上下文 | -| 验证 | 呈现结果并决定下一步 | Verifier 对照目标检查代码库,debuggers 诊断失败 | - -Orchestrator 本身不做重活,只负责拉代理、等待、整合结果。 - -**最终效果:** 你可以在一个阶段里完成深度研究、生成并验证多个计划、让多个执行代理并行写下成千上万行代码,再自动对照目标验证,而主上下文窗口依然能维持在 30-40% 左右。真正的工作都发生在新鲜的子代理上下文里,所以你的主会话始终保持快速、响应稳定。 - -### 原子 Git 提交 - -每个任务完成后都会立刻生成独立提交: - -```bash -abc123f docs(08-02): complete user registration plan -def456g feat(08-02): add email confirmation flow -hij789k feat(08-02): implement password hashing -lmn012o feat(08-02): create registration endpoint -``` - -> [!NOTE] -> **好处:** `git bisect` 能精准定位是哪项任务引入故障;每个任务都可单独回滚;未来 Claude 读取历史时也更清晰;整个 AI 自动化工作流的可观测性更好。 - -每个 commit 都是外科手术式的:精确、可追踪、有意义。 - -### 模块化设计 - -- 给当前里程碑追加 phase -- 在 phase 之间插入紧急工作 -- 完成当前里程碑后开启新的周期 -- 在不推倒重来的前提下调整计划 - -你不会被这套系统绑死,它会随着项目变化而调整。 - ---- - -## 命令 - -### 核心工作流 - -| 命令 | 作用 | -|------|------| -| `/gsd-new-project [--auto]` | 完整初始化:提问 → 研究 → 需求 → 路线图 | -| `/gsd-discuss-phase [N] [--auto] [--analyze]` | 在规划前收集实现决策(`--analyze` 增加权衡分析) | -| `/gsd-plan-phase [N] [--auto] [--reviews]` | 为某个阶段执行研究 + 规划 + 验证(`--reviews` 加载代码库审查结果) | -| `/gsd-execute-phase ` | 以并行 wave 执行全部计划,完成后验证 | -| `/gsd-verify-work [N]` | 人工用户验收测试 ¹ | -| `/gsd-ship [N] [--draft]` | 从已验证的阶段工作创建 PR,自动生成 PR 描述 | -| `/gsd-fast ` | 内联处理琐碎任务——完全跳过规划,立即执行 | -| `/gsd-progress --next` | 自动推进到下一个逻辑工作流步骤 | -| `/gsd-audit-milestone` | 验证里程碑是否达到完成定义 | -| `/gsd-complete-milestone` | 归档里程碑并打 release tag | -| `/gsd-new-milestone [name]` | 开始下一个版本:提问 → 研究 → 需求 → 路线图 | -| `/gsd-milestone-summary` | 从已完成的里程碑产物生成项目概览,用于团队上手 | -| `/gsd-forensics` | 对失败或卡住的工作流进行事后调查 | - -### 工作流(Workstreams) - -| 命令 | 作用 | -|------|------| -| `/gsd-workstreams list` | 显示所有工作流及其状态 | -| `/gsd-workstreams create ` | 创建命名空间工作流,用于并行里程碑工作 | -| `/gsd-workstreams switch ` | 切换当前活跃工作流 | -| `/gsd-workstreams complete ` | 完成并合并工作流 | - -### 多项目工作区 - -| 命令 | 作用 | -|------|------| -| `/gsd-workspace --new` | 创建隔离工作区,包含仓库副本(worktree 或 clone) | -| `/gsd-workspace --list` | 显示所有 GSD 工作区及其状态 | -| `/gsd-workspace --remove` | 移除工作区并清理 worktree | - -### UI 设计 - -| 命令 | 作用 | -|------|------| -| `/gsd-ui-phase [N]` | 为前端阶段生成 UI 设计合约(UI-SPEC.md) | -| `/gsd-ui-review [N]` | 对已实现前端代码进行 6 维视觉审计 | - -### 导航 - -| 命令 | 作用 | -|------|------| -| `/gsd-progress` | 我现在在哪?下一步是什么? | -| `/gsd-progress --next` | 自动检测状态并执行下一步 | -| `/gsd-help` | 显示全部命令和使用指南 | -| `/gsd-update` | 更新 GSD,并预览变更日志 | - -### Brownfield - -| 命令 | 作用 | -|------|------| -| `/gsd-map-codebase` | 在 `new-project` 前分析现有代码库 | - -### 阶段管理 - -| 命令 | 作用 | -|------|------| -| `/gsd-phase` | 在路线图末尾追加 phase | -| `/gsd-phase --insert [N]` | 在 phase 之间插入紧急工作 | -| `/gsd-phase --edit [N] [--force]` | 就地修改已有 phase 的任意字段 — 编号与位置保持不变 | -| `/gsd-phase --remove [N]` | 删除未来 phase,并重编号 | -| `/gsd-discuss-phase --assumptions [N]` | 在规划前查看 Claude 打算采用的方案 | -| `/gsd-audit-milestone --fix` | 为 audit 发现的缺口创建 phase | - -### 代码质量 - -| 命令 | 作用 | -|------|------| -| `/gsd-review` | 对当前阶段或分支进行跨 AI 同行评审 | -| `/gsd-pr-branch` | 创建过滤 `.planning/` 提交的干净 PR 分支 | -| `/gsd-audit-uat` | 审计验证债务——找出缺少 UAT 的阶段 | - -### 积压 - -| 命令 | 作用 | -|------|------| -| `/gsd-capture --seed ` | 将想法存入积压停车场,留待未来里程碑 | - -### 会话 - -| 命令 | 作用 | -|------|------| -| `/gsd-pause-work` | 在中途暂停时创建交接上下文(写入 HANDOFF.json) | -| `/gsd-resume-work` | 从上一次会话恢复 | -| `/gsd-pause-work --report` | 生成会话摘要,包含已完成工作和结果 | - -### 工具 - -| 命令 | 作用 | -|------|------| -| `/gsd-settings` | 配置模型 profile 和工作流代理 | -| `/gsd-config --profile ` | 切换模型 profile(quality / balanced / budget / inherit) | -| `/gsd-capture [desc]` | 记录一个待办想法 | -| `/gsd-capture --list` | 查看待办列表 | -| `/gsd-debug [desc]` | 使用持久状态进行系统化调试 | -| `/gsd-do ` | 将自由文本自动路由到正确的 GSD 命令 | -| `/gsd-note ` | 零摩擦想法捕捉——追加、列出或提升为待办 | -| `/gsd-quick [--full] [--discuss] [--research]` | 以 GSD 保障执行临时任务(`--full` 增加计划检查和验证,`--discuss` 先补上下文,`--research` 在规划前先调研) | -| `/gsd-health [--repair]` | 校验 `.planning/` 目录完整性,带 `--repair` 时自动修复 | -| `/gsd-stats` | 显示项目统计——阶段、计划、需求、git 指标 | -| `/gsd-profile-user [--questionnaire] [--refresh]` | 从会话分析生成开发者行为档案,用于个性化响应 | - -¹ 由 reddit 用户 OracleGreyBeard 贡献 - ---- - -## 配置 - -GSD 将项目设置保存在 `.planning/config.json`。你可以在 `/gsd-new-project` 时配置,也可以稍后通过 `/gsd-settings` 修改。完整的配置 schema、工作流开关、git branching 选项以及各代理的模型分配,请查看[用户指南](docs/USER-GUIDE.md#configuration-reference)。 - -### 核心设置 - -| Setting | Options | Default | 作用 | -|---------|---------|---------|------| -| `mode` | `yolo`, `interactive` | `interactive` | 自动批准,还是每一步确认 | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | phase 粒度,也就是范围切分得多细 | - -### 模型 Profile - -控制各代理使用哪种 Claude 模型,在质量和 token 成本之间平衡。 - -| Profile | Planning | Execution | Verification | -|---------|----------|-----------|--------------| -| `quality` | Opus | Opus | Sonnet | -| `balanced`(默认) | Opus | Sonnet | Sonnet | -| `budget` | Sonnet | Sonnet | Haiku | -| `inherit` | Inherit | Inherit | Inherit | - -切换方式: -``` -/gsd-config --profile budget -``` - -使用非 Anthropic 提供商(OpenRouter、本地模型)时,或想跟随当前运行时的模型选择时(如 OpenCode 的 `/model`),可用 `inherit`。 - -也可以通过 `/gsd-settings` 配置。 - -### 工作流代理 - -这些设置会在规划或执行时拉起额外代理。它们能提升质量,但也会增加 token 消耗和耗时。 - -| Setting | Default | 作用 | -|---------|---------|------| -| `workflow.research` | `true` | 每个 phase 规划前先调研领域知识 | -| `workflow.plan_check` | `true` | 执行前验证计划是否真能达成阶段目标 | -| `workflow.verifier` | `true` | 执行后确认“必须交付项”是否已经落地 | -| `workflow.auto_advance` | `false` | 自动串联 discuss → plan → execute,不中途停下 | -| `workflow.research_before_questions` | `false` | 在讨论提问前先运行研究,而非之后 | -| `workflow.skip_discuss` | `false` | 在自主模式下完全跳过讨论阶段 | -| `workflow.discuss_mode` | `null` | 控制讨论阶段行为(`assumptions` 使用推断默认值) | - -可以用 `/gsd-settings` 开关这些项,也可以在单次命令里覆盖: -- `/gsd-plan-phase --skip-research` -- `/gsd-plan-phase --skip-verify` - -### 执行 - -| Setting | Default | 作用 | -|---------|---------|------| -| `parallelization.enabled` | `true` | 是否并行执行独立计划 | -| `planning.commit_docs` | `true` | 是否将 `.planning/` 纳入 git 跟踪 | -| `hooks.context_warnings` | `true` | 显示上下文窗口使用量警告 | - -### Git 分支策略 - -控制 GSD 在执行过程中如何处理分支。 - -| Setting | Options | Default | 作用 | -|---------|---------|---------|------| -| `git.branching_strategy` | `none`, `phase`, `milestone` | `none` | 分支创建策略 | -| `git.phase_branch_template` | string | `gsd/phase-{phase}-{slug}` | phase 分支模板 | -| `git.milestone_branch_template` | string | `gsd/{milestone}-{slug}` | milestone 分支模板 | - -**策略说明:** -- **`none`**:直接提交到当前分支(GSD 默认行为) -- **`phase`**:每个 phase 创建一个分支,在 phase 完成时合并 -- **`milestone`**:整个里程碑只用一个分支,在里程碑完成时合并 - -在里程碑完成时,GSD 会提供 squash merge(推荐)或保留历史的 merge 选项。 - ---- - -## 安全 - -### 保护敏感文件 - -GSD 的代码库映射和分析命令会读取文件来理解你的项目。**包含机密信息的文件应当加入 Claude Code 的 deny list**: - -1. 打开 Claude Code 设置(项目级 `.claude/settings.json` 或全局设置) -2. 把敏感文件模式加入 deny list: - -```json -{ - "permissions": { - "deny": [ - "Read(.env)", - "Read(.env.*)", - "Read(**/secrets/*)", - "Read(**/*credential*)", - "Read(**/*.pem)", - "Read(**/*.key)" - ] - } -} -``` - -这样无论你运行什么命令,Claude 都无法读取这些文件。 - -> [!IMPORTANT] -> GSD 内建了防止提交 secrets 的保护,但纵深防御依然是最佳实践。第一道防线应该是直接禁止读取敏感文件。 - ---- - -## 故障排查 - -**安装后找不到命令?** -- 重启你的运行时,让命令或 skills 重新加载 -- 检查文件是否存在于 `~/.claude/commands/gsd/`(全局)或 `./.claude/commands/gsd/`(本地) -- 对 Codex,检查 skills 是否存在于 `~/.codex/skills/gsd-*/SKILL.md`(全局)或 `./.codex/skills/gsd-*/SKILL.md`(本地) - -**命令行为不符合预期?** -- 运行 `/gsd-help` 确认安装成功 -- 重新执行 `npx @opengsd/gsd-core` 进行重装 - -**想更新到最新版本?** -```bash -npx @opengsd/gsd-core@latest -``` - -**在 Docker 或容器环境中使用?** - -如果使用波浪线路径(`~/.claude/...`)时读取失败,请在安装前设置 `CLAUDE_CONFIG_DIR`: -```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global -``` -这样可以确保使用绝对路径,而不是在容器里可能无法正确展开的 `~`。 - -### 卸载 - -如果你想彻底移除 GSD: - -```bash -# 全局安装 -npx @opengsd/gsd-core --claude --global --uninstall -npx @opengsd/gsd-core --opencode --global --uninstall -npx @opengsd/gsd-core --gemini --global --uninstall -npx @opengsd/gsd-core --kilo --global --uninstall -npx @opengsd/gsd-core --codex --global --uninstall -npx @opengsd/gsd-core --copilot --global --uninstall -npx @opengsd/gsd-core --cursor --global --uninstall -npx @opengsd/gsd-core --antigravity --global --uninstall -npx @opengsd/gsd-core --augment --global --uninstall -npx @opengsd/gsd-core --trae --global --uninstall -npx @opengsd/gsd-core --cline --global --uninstall - -# 本地安装(当前项目) -npx @opengsd/gsd-core --claude --local --uninstall -npx @opengsd/gsd-core --opencode --local --uninstall -npx @opengsd/gsd-core --gemini --local --uninstall -npx @opengsd/gsd-core --kilo --local --uninstall -npx @opengsd/gsd-core --codex --local --uninstall -npx @opengsd/gsd-core --copilot --local --uninstall -npx @opengsd/gsd-core --cursor --local --uninstall -npx @opengsd/gsd-core --antigravity --local --uninstall -npx @opengsd/gsd-core --augment --local --uninstall -npx @opengsd/gsd-core --trae --local --uninstall -npx @opengsd/gsd-core --cline --local --uninstall -``` - -这会移除所有 GSD 命令、代理、hooks 和设置,但会保留你其他配置。 - ---- - -## 社区移植版本 - -OpenCode、Gemini CLI、Kilo 和 Codex 现在都已经通过 `npx @opengsd/gsd-core` 获得原生支持。 - -这些社区移植版本曾率先探索多运行时支持: - -| Project | Platform | Description | -|---------|----------|-------------| -| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | OpenCode | 最初的 OpenCode 适配版本 | -| gsd-gemini (archived) | Gemini CLI | uberfuzzy 制作的最初 Gemini 适配版本 | +| 项目 | 平台 | +|---------|----------| +| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | 原始 OpenCode 移植版 | +| [Discord](https://discord.gg/mYgfVNfA2r) | 社区支持 | --- @@ -830,14 +112,14 @@ OpenCode、Gemini CLI、Kilo 和 Codex 现在都已经通过 `npx @opengsd/gsd-c --- -## License +## 许可证 -MIT License。详情见 [LICENSE](LICENSE)。 +MIT 许可证。详情请参阅 [LICENSE](LICENSE)。 ---
-**Claude Code 很强,GSD 让它变得可靠。** +**Claude Code 功能强大。GSD Core 让它更可靠。**
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 361ee7683..a0f9eba18 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -23,8 +23,8 @@ GSD Core is a **meta-prompting framework** that sits between the user and AI coding agents (Claude Code, Gemini CLI, OpenCode, Kilo, Codex, Copilot, Antigravity, Trae, Cline, Augment Code). It provides: -1. **Context engineering** — Structured artifacts that give the AI everything it needs per task -2. **Multi-agent orchestration** — Thin orchestrators that spawn specialized agents with fresh context windows +1. **Context engineering** — Structured artifacts that give the AI everything it needs per task (see [Context engineering](explanation/context-engineering.md)) +2. **Multi-agent orchestration** — Thin orchestrators that spawn specialized agents with fresh context windows (see [Multi-agent orchestration](explanation/multi-agent-orchestration.md)) 3. **Spec-driven development** — Requirements → research → plans → execution → verification pipeline 4. **State management** — Persistent project memory across sessions and context resets @@ -700,6 +700,8 @@ The researcher → planner → executor pipeline includes a supply-chain gate ag ### Security Hooks (v1.27) +For a conceptual overview of how the hook and guard layers fit into the broader security approach, see [Security model](explanation/security-model.md). + **Prompt Guard** (`gsd-prompt-guard.js`): - Triggers on Write/Edit to `.planning/` files @@ -770,3 +772,12 @@ available. The current source snapshot is 2026-05-11: 5. **Model references** — `inherit` profile lets GSD defer to runtime's model selection The installer handles all translation at install time. Workflows and agents are written in Claude Code's native format and transformed during deployment. + +--- + +## Related + +- [Multi-agent orchestration](explanation/multi-agent-orchestration.md) +- [Security model](explanation/security-model.md) +- [CLI tools](CLI-TOOLS.md) +- [docs index](README.md) diff --git a/docs/CLI-TOOLS.md b/docs/CLI-TOOLS.md index 649d87f08..afc5bfa0b 100644 --- a/docs/CLI-TOOLS.md +++ b/docs/CLI-TOOLS.md @@ -1,6 +1,6 @@ # GSD CLI Tools Reference -> Surface-area reference for `get-shit-done/bin/gsd-tools.cjs` (Node CLI). For slash commands and user flows, see [Command Reference](COMMANDS.md). +> Reference for the `gsd-tools` CLI (`get-shit-done/bin/gsd-tools.cjs`). For slash commands and user flows, see [Command Reference](COMMANDS.md). Return to [docs index](README.md). --- @@ -493,7 +493,9 @@ API keys configured via `/gsd-settings` (`brave_search`, `firecrawl`, `exa_searc --- -## See also +## Related -- [Architecture](ARCHITECTURE.md) — orchestration and runtime layering -- [Command Reference](COMMANDS.md) — user-facing `/gsd-` commands +- [Commands](COMMANDS.md) +- [Configuration](CONFIGURATION.md) +- [Architecture](ARCHITECTURE.md) +- [docs index](README.md) diff --git a/docs/COMMANDS.md b/docs/COMMANDS.md index 717b9378f..2e02875b5 100644 --- a/docs/COMMANDS.md +++ b/docs/COMMANDS.md @@ -1,6 +1,6 @@ # GSD Core Command Reference -> Command syntax, flags, options, and examples for stable commands. For feature details, see [Feature Reference](FEATURES.md). For workflow walkthroughs, see [User Guide](USER-GUIDE.md). +> Command reference for GSD Core — syntax, flags, options, and examples for every stable command. For feature details see [Feature Reference](FEATURES.md); for workflow walkthroughs see [User Guide](USER-GUIDE.md); for the docs index see [README](README.md). --- @@ -144,7 +144,7 @@ Research, plan, and verify a phase. | `--auto` | Skip interactive confirmations | | `--research` | Force re-research even if RESEARCH.md exists | | `--skip-research` | Skip domain research step | -| `--research-phase ` | Research-only mode: spawn researcher for phase ``, write RESEARCH.md, exit before planner. Replaces the deleted `gsd-research-phase` standalone command (#3042). | +| `--research-phase ` | Research-only mode: spawn researcher for phase ``, write RESEARCH.md, exit before planner. Supersedes the deleted standalone research command (#3042). | | `--view` | Research-only modifier: when used with `--research-phase`, print existing RESEARCH.md to stdout and exit (no spawn). | | `--gaps` | Gap closure mode (reads VERIFICATION.md, skips research) | | `--skip-verify` | Skip plan checker verification loop | @@ -453,12 +453,7 @@ Guided MVP planning for a phase — prompts for a user story, runs SPIDR splitti **Prerequisites:** Phase must already exist in ROADMAP.md (created via `/gsd-new-project`, `/gsd-phase`, or `/gsd-phase --insert`). The command does not create new phases — it converts an existing phase. -**Process:** -1. Prompts for "As a / I want to / So that" user story (three structured questions) -2. Validates story format against the canonical regex -3. Runs SPIDR splitting check — if the story is too large, walks through Spike/Paths/Interfaces/Data/Rules axes and offers to split into multiple phases -4. Writes `**Goal:** ` and `**Mode:** mvp` to the phase's ROADMAP.md section (with confirmation gate) -5. Delegates to `/gsd-plan-phase `, which detects MVP mode automatically +**Behaviour:** Collects a structured user story, validates format, runs a SPIDR splitting check, writes `**Goal:**` and `**Mode:** mvp` to the phase's ROADMAP.md section, then delegates to `/gsd-plan-phase `. See [How to plan an MVP phase](USER-GUIDE.md#mvp-phase-planning) for a walkthrough. **Walking Skeleton:** Auto-triggered when `--mvp` (or `mode: mvp`) is used on Phase 1 of a new project with no prior phase summaries. The planner produces `SKELETON.md` alongside `PLAN.md`. @@ -815,17 +810,12 @@ v1.40.0, [#2792](https://github.com/open-gsd/gsd-core/issues/2792)). Archive accumulated phase directories from completed milestones and prune local branches whose upstream has been deleted. +**Behaviour:** Presents a dry-run summary of phase directories to archive (moved from `.planning/phases/` into `.planning/milestones/v{X.Y}-phases/`) and local branches whose upstream is gone (pruned via `git fetch --prune`). Requires confirmation before writing any changes. The currently checked-out branch is never pruned. + ```bash /gsd-cleanup ``` -On confirmation, the workflow performs two actions: - -1. **Phase archival** — moves phase directories from `.planning/phases/` into milestone archive directories under `.planning/milestones/v{X.Y}-phases/`, using archived ROADMAP snapshots to determine phase membership. -2. **Branch pruning** — runs `git fetch --prune` to update remote-tracking refs, then identifies and force-deletes local branches whose upstream is marked gone. The currently checked-out branch is always skipped. - -The dry-run summary shows both phase directories to archive and candidate local branches for deletion before confirmation. - --- ## Spiking & Sketching Commands @@ -1529,3 +1519,12 @@ npm run lint:descriptions ``` The check is also run as part of `npm test` via `tests/enh-2789-description-budget.test.cjs`. + +--- + +## Related + +- [Configuration Reference](CONFIGURATION.md) +- [CLI Tools Reference](CLI-TOOLS.md) +- [Feature Reference](FEATURES.md) +- [Docs index](README.md) diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index c8d3651f6..c267d9f5e 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -1,5 +1,7 @@ # GSD Configuration Reference +Complete schema reference for `.planning/config.json`. For setup walkthroughs and task-oriented guides see the [docs index](README.md). + > Full configuration schema, workflow toggles, model profiles, and git branching options. For feature context, see [Feature Reference](FEATURES.md). --- @@ -332,7 +334,9 @@ Example: } ``` -### Recommended Presets +### Common Setting Combinations + +The following combinations of `mode`, `granularity`, `model_profile`, and workflow toggles are commonly used together. See [Configure model profiles](how-to/configure-model-profiles.md) for setup guidance. | Scenario | mode | granularity | profile | research | plan_check | verifier | |----------|------|-------------|---------|----------|------------|----------| @@ -380,11 +384,7 @@ The prompt injection guard hook (`gsd-prompt-guard.js`) is always active and can ### Private Planning Setup -To keep planning artifacts out of git: - -1. Set `planning.commit_docs: false` and `planning.search_gitignored: true` -2. Add `.planning/` to `.gitignore` -3. If previously tracked: `git rm -r --cached .planning/ && git commit -m "chore: stop tracking planning docs"` +When `planning.commit_docs` is `false` and `.planning/` is listed in `.gitignore`, GSD treats planning artefacts as local-only. `planning.search_gitignored: true` ensures broad searches still include the `.planning/` directory in this configuration. See [Configure private planning](how-to/configure-model-profiles.md) for setup steps. --- @@ -486,19 +486,7 @@ The `plan_review.*` namespace controls the plan drift guard, which verifies that #### Multi-developer setup -If multiple developers will rebuild the graph in the same repo, run once per -clone after enabling graphify: - -```bash -graphify hook install -``` - -This installs a git merge driver that union-merges concurrent `graph.json` -writes (no conflict markers in the knowledge graph), plus the post-commit -rebuild hook. It writes `.gitattributes` and registers `graphify -merge-driver` in `.git/config`. Solo projects can skip this step; running it -anyway is harmless. Introduced upstream in graphify v0.7.0 alongside the -`built_at_commit` freshness signal that `/gsd-graphify status` surfaces. +When multiple developers rebuild the graph in the same repository, `graphify hook install` (run once per clone) installs a git merge driver that union-merges concurrent `graph.json` writes, eliminating conflict markers. It also registers the post-commit rebuild hook, writes `.gitattributes`, and adds `graphify merge-driver` to `.git/config`. Solo projects may skip this step. Introduced upstream in graphify v0.7.0 alongside the `built_at_commit` freshness signal surfaced by `/gsd-graphify status`. #### Commit-based staleness @@ -557,7 +545,7 @@ The `features.*` namespace is a dynamic key pattern — new feature flags can be | `next_phases` | YAML flow array | Phases the `next_action` applies to (e.g. `["4.5"]`) | | `progress` | block | Nested `total_phases` / `completed_phases` / `percent` for the milestone progress bar | -All four fields are **optional and additive** — STATE.md files without them keep rendering exactly as in v1.38.x. See [`STATE-MD-LIFECYCLE.md`](STATE-MD-LIFECYCLE.md) for the full field reference, parser constraints, and rendering scenes. +All four fields are **optional and additive** — STATE.md files without them keep rendering exactly as in v1.38.x. See [STATE.md schema](reference/state-md.md) for the full field reference, parser constraints, and rendering scenes. --- @@ -1372,3 +1360,12 @@ GSD_AUDIT_ARGS=1 GSD_AUDIT=1 gsd plan --tdd ``` `GSD_AUDIT_ARGS` applies to both the stderr error line and the audit file simultaneously. + +--- + +## Related + +- [Commands](COMMANDS.md) +- [Configure model profiles](how-to/configure-model-profiles.md) +- [STATE.md schema](reference/state-md.md) +- [Docs index](README.md) diff --git a/docs/FEATURES.md b/docs/FEATURES.md index 8bbbe10f6..da19c092b 100644 --- a/docs/FEATURES.md +++ b/docs/FEATURES.md @@ -1,6 +1,6 @@ # GSD Feature Reference -> Complete feature and function documentation with requirements. For architecture details, see [Architecture](ARCHITECTURE.md). For command syntax, see [Command Reference](COMMANDS.md). +> Feature index and reference for GSD Core. For architecture details, see [Architecture](ARCHITECTURE.md). For command syntax, see [Command Reference](COMMANDS.md). Return to [docs index](README.md). --- @@ -2667,7 +2667,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style - REQ-LIFECYCLE-02: `formatGsdState()` checks the lifecycle fields in priority order and emits the first matching scene (Phase active → Idle next-recommended → Milestone complete → Default fallback). - REQ-LIFECYCLE-03: All four fields default to undefined; existing STATE.md files render byte-for-byte identically. -**Reference issue:** [#2833](https://github.com/open-gsd/gsd-core/issues/2833) — see [`docs/STATE-MD-LIFECYCLE.md`](STATE-MD-LIFECYCLE.md) for the full field reference and rendering rules. +**Reference issue:** [#2833](https://github.com/open-gsd/gsd-core/issues/2833) — see [`docs/STATE-MD-LIFECYCLE.md`](reference/state-md.md) for the full field reference and rendering rules. --- @@ -3009,4 +3009,12 @@ explicit reviewer flags -> --all -> review.default_reviewers -> all detected rev - REQ-JSON-ERRORS-02: CLI exit code mapping MUST remain stable for automation callers. - REQ-JSON-ERRORS-03: Human-readable output MUST remain the default when `--json-errors` is absent. +--- + +## Related + +- [Commands](COMMANDS.md) +- [Configuration](CONFIGURATION.md) +- [docs index](README.md) + **Reference:** [JSON Error Mode](json-errors.md) diff --git a/docs/INVENTORY.md b/docs/INVENTORY.md index 920d9189a..c37046ef6 100644 --- a/docs/INVENTORY.md +++ b/docs/INVENTORY.md @@ -8,6 +8,8 @@ - This file enumerates every shipped surface across all six families (agents, commands, workflows, references, CLI modules, hooks). Broad docs may render narrative or curated subsets; when they disagree with the filesystem, this file and the directory listings are authoritative. - New surfaces added after v1.36.0 should land here first, then propagate to the broad docs. The drift-control tests in `tests/inventory-counts.test.cjs`, `tests/commands-doc-parity.test.cjs`, `tests/agents-doc-parity.test.cjs`, `tests/cli-modules-doc-parity.test.cjs`, `tests/hooks-doc-parity.test.cjs`, `tests/architecture-counts.test.cjs`, and `tests/command-count-sync.test.cjs` anchor the counts and roster contents against the filesystem. +This is the authoritative roster of every shipped GSD Core surface. See the [docs index](README.md) to navigate by topic. + --- ## Agents (33 shipped) @@ -484,3 +486,9 @@ Full listing: `hooks/`. - When a new command, agent, workflow, reference, CLI module, or hook ships, update the corresponding section here before the release is cut. - The drift-guard tests under `tests/` (see "How To Use This File" above) assert that every shipped file is enumerated in this inventory. A new file without a matching row here will fail CI. - When the filesystem diverges from `docs/ARCHITECTURE.md` counts or from curated-subset docs (e.g. `docs/AGENTS.md`'s primary roster), this file is the source of truth. + +## Related + +- [Commands](COMMANDS.md) — user-facing command reference +- [Architecture](ARCHITECTURE.md) — how the surfaces fit together +- [docs index](README.md) diff --git a/docs/README.md b/docs/README.md index e005bcc84..edca28e0b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,36 +1,69 @@ -# GSD Core Documentation +# GSD Core documentation -Comprehensive documentation for GSD Core (Git. Ship. Done.) — a meta-prompting, context engineering, and spec-driven development system for AI coding agents. +Documentation is organised into four quadrants: **tutorials** help you learn by doing, **how-to guides** solve specific tasks, **reference** states authoritative facts, and **explanation** explores concepts and design decisions. Language versions: [English](README.md) · [Português (pt-BR)](pt-BR/README.md) · [日本語](ja-JP/README.md) · [简体中文](zh-CN/README.md) -## Documentation Index +--- -| Document | Audience | Description | -|----------|----------|-------------| -| [Architecture](ARCHITECTURE.md) | Contributors, advanced users | System architecture, agent model, data flow, and internal design | -| [Installer Migrations](installer-migrations.md) | Contributors | Architecture for safe install-time migrations, cleanup, preservation, dry-run planning, and rollback | -| [Feature Reference](FEATURES.md) | All users | Feature narratives and requirements for released features | -| [Command Reference](COMMANDS.md) | All users | Stable commands with syntax, flags, options, and examples | -| [Configuration Reference](CONFIGURATION.md) | All users | Full config schema, workflow toggles, model profiles, git branching | -| [Custom PR Body Sections](ship-pr-body-sections.md) | All users | How to append project-specific PRD sections to `/gsd-ship` PR bodies | -| [CLI Tools Reference](CLI-TOOLS.md) | Contributors, agent authors | `gsd-tools.cjs` programmatic API for workflows and agents | -| [JSON Error Mode](json-errors.md) | Contributors, agent authors | Machine-readable `gsd-tools --json-errors` failure envelopes | -| [Agent Reference](AGENTS.md) | Contributors, advanced users | Role cards for primary agents — roles, tools, spawn patterns (the `agents/` filesystem is authoritative) | -| [User Guide](USER-GUIDE.md) | All users | Workflow walkthroughs, troubleshooting, and recovery | -| [Issue-Driven Orchestration](issue-driven-orchestration.md) | All users | Recipe for driving GSD from a tracker issue (GitHub / Linear / Jira) using existing primitives — no new commands or daemon | -| [Context Monitor](context-monitor.md) | All users | Context window monitoring hook architecture | -| [Discuss Mode](workflow-discuss-mode.md) | All users | Assumptions vs interview mode for discuss-phase | -| [Canary Stream](CANARY.md) | Maintainers | Archived stream notes; current public npm tags are `latest` and `next` | +## Tutorials -## Quick Links +- [Your first project](tutorials/your-first-project.md) — install to first shipped phase, one guaranteed path +- [Onboarding an existing codebase](tutorials/onboarding-an-existing-codebase.md) — bring GSD Core to a brownfield repo -- **What's new:** install `@opengsd/gsd-core@latest` and use the npm/package version as the current source of truth; older release-note files are archived continuity notes -- **Preview streams:** current public npm tags are `latest` and `next`; older canary notes are archived in [Canary Stream](CANARY.md) -- **Getting started:** [README](../README.md) → install → `/gsd-new-project` -- **Full workflow walkthrough:** [User Guide](USER-GUIDE.md) -- **All commands at a glance:** [Command Reference](COMMANDS.md) -- **Configuring GSD:** [Configuration Reference](CONFIGURATION.md) -- **Customizing ship PR bodies:** [Custom PR Body Sections](ship-pr-body-sections.md) -- **How the system works internally:** [Architecture](ARCHITECTURE.md) -- **Contributing or extending:** [CLI Tools Reference](CLI-TOOLS.md) + [Agent Reference](AGENTS.md) +--- + +## How-to guides + +- [Install on your runtime](how-to/install-on-your-runtime.md) — runtime-specific install steps for all 15 supported runtimes +- [Discuss a phase](how-to/discuss-a-phase.md) — capture implementation decisions before planning begins +- [Plan a phase](how-to/plan-a-phase.md) — run research, decompose work, and verify plan quality +- [Execute a phase](how-to/execute-a-phase.md) — run plans in parallel waves with fresh-context subagents +- [Verify and ship](how-to/verify-and-ship.md) — walk through completed work, diagnose failures, and create the PR +- [Run phases autonomously](how-to/run-phases-autonomously.md) — use autonomous mode for unattended phase execution +- [Handle quick and fast tasks](how-to/handle-quick-and-fast-tasks.md) — use `/gsd-quick` and `/gsd-fast` for ad-hoc work outside the phase loop +- [Configure model profiles](how-to/configure-model-profiles.md) — switch between quality, balanced, and budget model tiers +- [Set up cross-AI review](how-to/set-up-cross-ai-review.md) — configure a second AI to review code produced by the primary agent +- [Work in parallel with workstreams](how-to/work-in-parallel-with-workstreams.md) — run independent lines of work simultaneously using workstreams +- [Isolate work with workspaces](how-to/isolate-work-with-workspaces.md) — use workspaces to sandbox experimental or risky changes +- [Debug a failed execution](how-to/debug-a-failed-execution.md) — diagnose and recover from broken or incomplete phase execution +- [Spike and sketch](how-to/spike-and-sketch.md) — use `/gsd-spike` and `/gsd-sketch` for exploratory work before committing to a plan +- [Design a UI phase](how-to/design-a-ui-phase.md) — use the UI phase loop for frontend and visual work +- [Drive GSD from a tracker issue](how-to/drive-gsd-from-a-tracker-issue.md) — start a phase from a GitHub, Linear, or Jira issue +- [Migrate from GSD 2](how-to/migrate-from-gsd-2.md) — upgrade an existing GSD 2 project to GSD Core +- [Update GSD](how-to/update-gsd.md) — re-run the installer to pick up the latest release +- [Recover and troubleshoot](how-to/recover-and-troubleshoot.md) — fix common problems, rebuild context, and uninstall + +--- + +## Reference + +- [Commands](COMMANDS.md) — every command with flags and examples +- [Configuration](CONFIGURATION.md) — full config schema, model profiles, git branching strategies +- [CLI tools](CLI-TOOLS.md) — `gsd-tools.cjs` programmatic API for workflows and agents +- [Features](FEATURES.md) — complete feature index +- [Inventory](INVENTORY.md) — installed skills and surface map +- [STATE.md schema](reference/state-md.md) — field-by-field reference for `.planning/STATE.md` +- [CONTEXT.md schema](reference/context-md.md) — field-by-field reference for `.planning/phases//CONTEXT.md` +- [PLAN.md schema](reference/plan-md.md) — field-by-field reference for `.planning/phases//PLAN.md` +- [Planning artifacts](reference/planning-artifacts.md) — all `.planning/` files and their roles + +--- + +## Explanation + +- [Context engineering](explanation/context-engineering.md) — how context rot forms and how GSD Core prevents it +- [The phase loop](explanation/the-phase-loop.md) — design rationale for the Discuss → Plan → Execute → Verify → Ship cycle +- [Multi-agent orchestration](explanation/multi-agent-orchestration.md) — how subagents are spawned, scoped, and coordinated +- [Security model](explanation/security-model.md) — trust boundaries, permissions, and safe automation +- [Architecture](ARCHITECTURE.md) — system architecture, agent model, and data flow +- [Discuss modes](workflow-discuss-mode.md) — assumptions mode vs interview mode for `/gsd-discuss-phase` +- [Context monitoring](context-monitor.md) — context window monitoring hook architecture +- [Issue-driven orchestration](issue-driven-orchestration.md) — recipe for driving GSD from a tracker issue using existing primitives + +--- + +## Related + +- [Root README](../README.md) — landing page, quickstart, and documentation overview +- [Changelog](../CHANGELOG.md) — release history diff --git a/docs/STATE-MD-LIFECYCLE.md b/docs/STATE-MD-LIFECYCLE.md deleted file mode 100644 index 40464cb95..000000000 --- a/docs/STATE-MD-LIFECYCLE.md +++ /dev/null @@ -1,179 +0,0 @@ -# STATE.md Phase Lifecycle Frontmatter - -> **Status:** Read-side shipped in v1.40.0 (issue -> [#2833](https://github.com/open-gsd/gsd-core/issues/2833)). -> `parseStateMd()` reads the four frontmatter fields below and -> `formatGsdState()` renders the in-flight / idle / progress scenes. -> SDK write-side support to maintain the fields automatically is tracked -> separately. - -GSD's `STATE.md` carries YAML frontmatter that the status-line hook reads on -every render. This document describes the **phase-lifecycle fields** and the -rendering scenes they trigger. - -All four lifecycle fields are **optional and additive**. Existing `STATE.md` -files (without these fields) keep rendering exactly as they did before — no -visual change, no migration required. - ---- - -## Frontmatter fields - -```yaml ---- -gsd_state_version: 1.0 -milestone: v2.0 # existing -milestone_name: Code Quality # existing -status: in_progress # existing — see "status semantics" below - -# Phase-lifecycle additions (issue #2833) — all optional -active_phase: null # phase number when an orchestrator is in flight -next_action: execute-phase # next recommended command when idle -next_phases: ["4.5"] # phases that next_action applies to (1-2 ids) - -progress: # nested block (existing key, percent now opt-in for the bar) - total_phases: 17 - completed_phases: 10 - percent: 59 ---- -``` - -### Field reference - -| Field | Type | When populated | When null/absent | -|---|---|---|---| -| `active_phase` | string (e.g. `"4.5"`) | An orchestrator command is in flight on this phase | Idle between phases | -| `next_action` | string | Idle, with a recommended command (`discuss-phase` / `plan-phase` / `execute-phase` / `verify-phase`) | An orchestrator is in flight, OR no recommendation available | -| `next_phases` | YAML flow array (e.g. `["4.5"]`) | Goes with `next_action` — phases the action applies to | Same as above | -| `progress.percent` | integer 0-100 | Milestone progress in **phase dimension** (`completed_phases / total_phases`) | Bar rendering is opt-in — absent → no bar | - -### `next_phases` parser scope - -Only **single-line YAML flow** is parsed: `next_phases: ["4.5", "4.6"]`. - -Block sequences over multiple lines (`- 4.5\n - 4.6`) are intentionally -**not parsed** — the status-line only needs the primary recommendation, and a -single-line array keeps the regex-based parser predictable. If a project needs -to track many candidate next phases for documentation purposes, store the -extra ones in the `STATE.md` body. - -### `progress.percent` dimension - -The bar rendered next to the milestone version reflects **phase completion** -(`completed_phases / total_phases`), not plan completion. - -Plan dimension (`completed_plans / total_plans`) trends optimistic for any -project where future phases haven't been planned yet — `total_plans` only -counts plans inside *already-planned* phases, so the denominator is -structurally smaller than reality. Reporting that number to stakeholders -overstates progress. - -If a project wants to show plan-level progress somewhere, store it elsewhere -in frontmatter or the body — the status-line bar is reserved for the -phase-dimension number that matches `ROADMAP.md` progress tables and -`MILESTONES.md`. - ---- - -## Status-line rendering scenes - -`formatGsdState()` checks the lifecycle fields in the order below and emits -the **first matching scene**. If none match, the renderer falls through to -the original ` · ` format (byte-for-byte unchanged from -v1.38.x). - -| Scene | Trigger | Display | -|---|---|---| -| **1. Phase active** | `active_phase` populated | `v2.0 [██░░░] X% · Phase 4.5 executing` | -| **2. Idle, next recommended** | `active_phase` null AND `next_action` + `next_phases` populated | `v2.0 [██░░░] X% · next execute-phase 4.5` | -| **3. Milestone complete** | `percent: 100` OR `completed_phases == total_phases` | `v2.0 [██████████] 100% · milestone complete` | -| **4. Default fallback** | None of the above | `v1.9 Code Quality · executing · ph (1/5)` (existing format) | - -### Scene priority example - -When both `active_phase` and `next_action` are populated, **Scene 1 wins** — -an orchestrator is in flight, so any "next recommendation" would be misleading. -This is enforced by check order in `formatGsdState()` and by tests in -`tests/enh-2833-phase-lifecycle-statusline.test.cjs` (suite *"scene priority"*). - -### Stage labels in Scene 1 - -In Scene 1, the second part of `Phase 4.5 ` is whichever value is in -the `status` field at that moment. The convention proposed in issue #2833 -is to use the lifecycle stage: - -| Command | `status` value while in flight | -|---|---| -| `/gsd-discuss-phase` | `discussing` | -| `/gsd-plan-phase` | `planning` | -| `/gsd-execute-phase` | `executing` | -| `/gsd-verify-work` | `verifying` | - -If `status` is left at `in_progress` (the milestone-level value), Scene 1 -renders just `Phase 4.5` without the stage suffix. - ---- - -## Frontmatter parsing constraints - -The status-line hook uses regex-based parsing (no full YAML library), so a -few constraints apply: - -1. **Frontmatter must start at the very first character of the file.** - Anything (including comments) above the opening `---` invalidates the - match. The opening `---` line must be exactly that — no trailing spaces. - -2. **Comments inside nested blocks are not supported.** - The parser for `progress:` requires the next line to be `[ \t]+\w+:` — - inserting `# comment` between `progress:` and the first key breaks the - match and the bar disappears. Put any documentation in the body of - `STATE.md`, not inside frontmatter blocks. - -3. **`next_phases` accepts only single-line flow format.** - See the parser scope note above. - -These constraints are tested in -`tests/enh-2833-phase-lifecycle-statusline.test.cjs`. If a future change -swaps the regex parser for a real YAML library, the constraints can be -relaxed and the tests updated accordingly. - ---- - -## Backward compatibility - -This document describes additive fields. The promise is: - -- A `STATE.md` file with **none** of the lifecycle fields populated renders - **byte-for-byte identically** to v1.38.x and earlier. -- Adding any lifecycle field is **opt-in per project** — the renderer falls - through to the existing format when fields are absent. -- The progress bar is opt-in even when `progress` block exists — only - `progress.percent` triggers the bar; `total_phases` / `completed_phases` - alone don't. - -The `formatGsdState #2833 backward compatibility` test suite locks this -guarantee in: any change that breaks legacy `STATE.md` rendering will fail -the suite. - ---- - -## Related issues / PRs - -- **#1989** — *enhancement: surface GSD state in statusline.* The foundation - this proposal extends. Established that `STATE.md` frontmatter drives the - status-line. -- **#2833** — *enhancement: phase-lifecycle status-line — auto-rotate - STATE.md frontmatter as phase orchestrators progress.* This document - describes the read-side spec from that issue. Write-side SDK / workflow - changes to auto-maintain the fields are tracked separately so each piece - can be reviewed independently. - -Companion read-side issues this proposal also helps close (each fixed a -specific symptom of the same gap): - -- #1102 — STATE.md frontmatter plan counts only update on plan completion -- #1103 — STATE.md status / last_activity not updated when a phase starts -- #1446 / #1572 — phase complete doesn't update Plans column -- #612 — ROADMAP.md not updating -- #956 — planning document drift across core workflows -- #2018 — verify-work doesn't auto-transition (fixed for verify only) diff --git a/docs/USER-GUIDE.md b/docs/USER-GUIDE.md index de22e0fad..a5e31e09d 100644 --- a/docs/USER-GUIDE.md +++ b/docs/USER-GUIDE.md @@ -1,25 +1,31 @@ # GSD User Guide -A detailed reference for workflows, troubleshooting, and configuration. For quick-start setup, see the [README](../README.md). +A narrative companion guide to GSD Core — orient yourself here, then follow the links into the dedicated docs. + +> **GSD Core's documentation is organised by [Diataxis](https://diataxis.fr).** +> Browse by goal: [Tutorials](README.md#tutorials) · [How-to guides](README.md#how-to-guides) · [Reference](README.md#reference) · [Explanation](README.md#explanation) · [Docs index](README.md) --- ## Table of Contents -- [End-to-End Walkthrough](#end-to-end-walkthrough) +- [Slash-command forms](#slash-command-forms-hyphen-vs-colon) +- [Namespace routing primer](#namespace-routing-primer-gsdnamespace-v140) +- [Project lifecycle overview](#project-lifecycle-overview) - [Workflow Diagrams](#workflow-diagrams) - [UI Design Contract](#ui-design-contract) - [Spiking & Sketching](#spiking--sketching) - [Backlog & Threads](#backlog--threads) -- [Workstreams](#workstreams) +- [Workstreams & Workspaces](#workstreams--workspaces) - [Security](#security) -- [Command And Configuration Reference](#command-and-configuration-reference) - [Usage Examples](#usage-examples) - [Troubleshooting](#troubleshooting) - [Recovery Quick Reference](#recovery-quick-reference) +- [Project File Structure](#project-file-structure) +- [Related](#related) For driving GSD directly from a GitHub / Linear / Jira issue, see the -[Issue-Driven Orchestration guide](issue-driven-orchestration.md) — a +[Issue-driven orchestration](issue-driven-orchestration.md) guide — a recipe that maps tracker issues onto the workspace → discuss → plan → execute → verify → review → ship loop using existing GSD primitives. @@ -51,231 +57,15 @@ You almost never need to type a namespace router yourself. Their value is in the --- -## End-to-End Walkthrough +## Project lifecycle overview -This walkthrough shows how GSD phases connect for a typical single-phase project — a small Node.js REST API that validates webhook signatures. Follow it to understand what each command does, what it creates, and how the next command consumes it. +The core GSD loop is: **discuss → plan → execute → verify → ship**, repeated per phase. The full step-by-step walkthrough — including example outputs, what files get created, and all the flags in play — is in the dedicated tutorial. -### 1. Create the project +See [Your first project](tutorials/your-first-project.md). -``` -/gsd-new-project -``` +For onboarding an existing codebase before starting a new milestone, see [Onboarding an existing codebase](tutorials/onboarding-an-existing-codebase.md). -GSD asks questions about your idea, spawns parallel research agents, extracts requirements, and creates a roadmap. You approve the roadmap before any code is written. - -**Example output (abridged):** - -``` -> What are you building? - A webhook signature validator middleware for Express apps. - -> Who's the user? - Backend developers integrating third-party webhooks (Stripe, GitHub, Shopify). - -[Research agents run in parallel...] -[Requirements extracted...] - -Roadmap (1 phase): - Phase 1 — Core middleware: HMAC-SHA256 signature validation, - timing-safe compare, configurable tolerance window. - -Approve? [y/n] -``` - -**What gets created:** - -``` -.planning/ - PROJECT.md # "Webhook validator middleware — Express, HMAC-SHA256..." - REQUIREMENTS.md # REQ-001: Validate signature header; REQ-002: Timing-safe... - ROADMAP.md # Phase 1 status: pending - STATE.md # Session memory, current position -``` - -`ROADMAP.md` excerpt: -```markdown -## Phase 1 — Core middleware -**Status:** pending -**Goal:** HMAC-SHA256 signature validation with timing-safe compare and a -configurable replay-protection tolerance window. -**Requirements:** REQ-001, REQ-002, REQ-003 -``` - -### 2. Discuss and plan the phase - -``` -/gsd-discuss-phase 1 -``` - -GSD reads the phase goal and asks about your implementation preferences before any planning happens. This is where you shape *how* it builds — not just *what* it builds. - -``` -> How should invalid signatures be handled? - Reject immediately with 401, log the raw header for debugging. - -> Should the tolerance window be configurable per-route or global? - Global config, but allow per-route override via middleware options. - -> Any library preferences for HMAC? - Node built-in crypto only — no extra dependencies. -``` - -**What gets created:** `.planning/phases/01-core-middleware/CONTEXT.md` - -`CONTEXT.md` excerpt: -```markdown -## Implementation Decisions -- Invalid signatures → 401, log raw header -- Tolerance window → global default, per-route override via options object -- HMAC library → Node built-in crypto (no external deps) -- Error format → { error: "invalid_signature", ts: } -``` - -Now plan the phase: - -``` -/gsd-plan-phase 1 -``` - -GSD spawns four parallel research agents (stack, features, architecture, pitfalls), then a planner reads `CONTEXT.md` + research findings and creates atomic task plans. A plan-checker verifies each plan achieves the phase goal before saving. - -**What gets created:** - -``` -.planning/phases/01-core-middleware/ - RESEARCH.md # Findings: crypto.timingSafeEqual docs, replay attack patterns... - 01-01-PLAN.md # Task: create validateSignature() core function - 01-02-PLAN.md # Task: Express middleware wrapper + error handling -``` - -`01-01-PLAN.md` excerpt: -```xml - - Create validateSignature core function - src/validate.js, src/validate.test.js - - Use crypto.createHmac('sha256', secret).update(rawBody).digest('hex'). - Compare with crypto.timingSafeEqual() — never === or ==. - Accept tolerance window in ms; reject if |timestamp - now| exceeds it. - - npm test -- --grep "validateSignature" - All timing-safe comparison tests pass; replay outside window returns false - -``` - -### 3. Execute - -``` -/gsd-execute-phase 1 -``` - -GSD groups plans into waves (parallel where independent, sequential where dependent), spawns a fresh 200k-context executor per plan, and commits each task atomically. - -``` -Wave 1 (parallel): - [Executor A] → 01-01-PLAN.md (core function) ✓ committed - [Executor B] → 01-02-PLAN.md (middleware) ✓ committed - -[Verifier] Checking codebase against phase goals... - REQ-001 validateSignature() ✓ - REQ-002 timing-safe compare ✓ - REQ-003 tolerance window ✓ - Status: PASS -``` - -**Git history after execution:** - -``` -a1b2c3d feat(01-01): implement validateSignature with timingSafeEqual -d4e5f6g feat(01-02): add Express middleware wrapper and 401 error format -h7i8j9k chore(01): phase 1 verification — all requirements met -``` - -**What gets created:** - -``` -.planning/phases/01-core-middleware/ - 01-01-SUMMARY.md # "Implemented validateSignature(), 47 lines, tests passing" - 01-02-SUMMARY.md # "Middleware wraps validator, logs raw header on 401" - VERIFICATION.md # REQ-001 ✓, REQ-002 ✓, REQ-003 ✓ — PASS -``` - -`STATE.md` is updated automatically to reflect the new phase status: - -```markdown -## Current Position -Phase 1 — Core middleware: executed, pending verify -``` - -### 4. Verify - -``` -/gsd-verify-work 1 -``` - -GSD extracts testable deliverables from the phase goal and walks you through them one at a time. - -``` -[1/3] Can you require the middleware and pass it to an Express route? -> yes - -[2/3] Does a request with a valid signature return 200? -> yes - -[3/3] Does a request with an invalid signature return 401 with { error: "invalid_signature" }? -> no — I'm getting a 500 instead - -[Diagnosing...] -Root cause: middleware catches crypto.timingSafeEqual TypeError when -buffers are different lengths. Fix: normalize to same length before compare. - -Fix plan created: .planning/phases/01-core-middleware/01-03-PLAN.md -Run /gsd-execute-phase 1 to apply. -``` - -After re-running execute and re-verifying: - -``` -All 3 checks passed. Phase 1 verified. -``` - -**What gets created:** `.planning/phases/01-core-middleware/UAT.md` - -### What's next - -Once a phase is verified, ship it: - -``` -/gsd-ship 1 # Creates a PR with auto-generated body -``` - -The PR body always includes the required GSD sections: `Summary`, `Changes`, `Requirements Addressed`, `Verification`, and `Key Decisions`. During `/gsd-new-project`, you can also enable optional PRD-style sections such as user stories, acceptance criteria, risks, release criteria, and stakeholder approval. These are appended through `ship.pr_body_sections` and do not change the required core sections. - -For setup examples, field definitions, and troubleshooting, see [Custom PR Body Sections](ship-pr-body-sections.md). - -For multi-phase projects, repeat the loop: - -``` -/gsd-discuss-phase 2 -/gsd-plan-phase 2 -/gsd-execute-phase 2 -/gsd-verify-work 2 -``` - -Or let GSD figure out the next step automatically: - -``` -/gsd-progress --next -``` - -When all phases are done: - -``` -/gsd-audit-milestone # Verify all requirements shipped -/gsd-complete-milestone # Archive, tag release -``` - -**Relevant flags covered in this walkthrough:** +**Relevant flags at a glance:** | Flag | Command | When to use | | ---- | ------- | ----------- | @@ -294,7 +84,7 @@ For the full command reference with all flags, see [`docs/COMMANDS.md`](COMMANDS ### Full Project Lifecycle -``` +```text ┌──────────────────────────────────────────────────┐ │ NEW PROJECT │ │ /gsd-new-project │ @@ -348,7 +138,7 @@ For the full command reference with all flags, see [`docs/COMMANDS.md`](COMMANDS ### Planning Agent Coordination -``` +```text /gsd-plan-phase N │ ├── Phase Researcher (x4 parallel) @@ -382,28 +172,17 @@ For the full command reference with all flags, see [`docs/COMMANDS.md`](COMMANDS ### Validation Architecture (Nyquist Layer) -During plan-phase research, GSD now maps automated test coverage to each phase -requirement before any code is written. This ensures that when Claude's executor -commits a task, a feedback mechanism already exists to verify it within seconds. +During plan-phase research, GSD maps automated test coverage to each phase requirement before any code is written. The researcher detects your existing test infrastructure, maps each requirement to a specific test command, and identifies any test scaffolding that must be created before implementation begins (Wave 0 tasks). The plan-checker enforces this as an 8th verification dimension: plans where tasks lack automated verify commands will not be approved. -The researcher detects your existing test infrastructure, maps each requirement to -a specific test command, and identifies any test scaffolding that must be created -before implementation begins (Wave 0 tasks). +**Output:** `{phase}-VALIDATION.md` — the feedback contract for the phase. -The plan-checker enforces this as an 8th verification dimension: plans where tasks -lack automated verify commands will not be approved. - -**Output:** `{phase}-VALIDATION.md` -- the feedback contract for the phase. - -**Disable:** Set `workflow.nyquist_validation: false` in `/gsd-settings` for -rapid prototyping phases where test infrastructure isn't the focus. +**Disable:** Set `workflow.nyquist_validation: false` in `/gsd-settings` for rapid prototyping phases where test infrastructure isn't the focus. ### Retroactive Validation (`/gsd-validate-phase`) -For phases executed before Nyquist validation existed, or for existing codebases -with only traditional test suites, retroactively audit and fill coverage gaps: +For phases executed before Nyquist validation existed, or for existing codebases with only traditional test suites, retroactively audit and fill coverage gaps: -``` +```text /gsd-validate-phase N | +-- Detect state (VALIDATION.md exists? SUMMARY.md exists?) @@ -422,12 +201,7 @@ with only traditional test suites, retroactively audit and fill coverage gaps: +-- PARTIAL -> some gaps escalated to manual-only ``` -The auditor never modifies implementation code — only test files and -VALIDATION.md. If a test reveals an implementation bug, it's flagged as an -escalation for you to address. - -**When to use:** After executing phases that were planned before Nyquist was -enabled, or after `/gsd-audit-milestone` surfaces Nyquist compliance gaps. +The auditor never modifies implementation code — only test files and VALIDATION.md. If a test reveals an implementation bug, it's flagged as an escalation for you to address. ### Assumptions Discussion Mode @@ -435,380 +209,23 @@ By default, `/gsd-discuss-phase` asks open-ended questions about your implementa **Enable:** Set `workflow.discuss_mode` to `'assumptions'` via `/gsd-settings`. -**How it works:** - -1. Reads PROJECT.md, codebase mapping, and existing conventions -2. Generates a structured list of assumptions (tech choices, patterns, file locations) -3. Presents assumptions for you to confirm, correct, or expand -4. Writes CONTEXT.md from confirmed assumptions - -**When to use:** - -- Experienced developers who already know their codebase well -- Rapid iteration where open-ended questions slow you down -- Projects where patterns are well-established and predictable - See [docs/workflow-discuss-mode.md](workflow-discuss-mode.md) for the full discuss-mode reference. ### Decision Coverage Gates -The discuss-phase captures implementation decisions in CONTEXT.md under a -`` block as numbered bullets (`- **D-01:** …`). Two gates — added -for issue #2492 — ensure those decisions survive into plans and shipped -code. +The discuss-phase captures implementation decisions in CONTEXT.md under a `` block as numbered bullets (`- **D-01:** …`). Two gates ensure those decisions survive into plans and shipped code. -**Plan-phase translation gate (blocking).** After planning, GSD refuses to -mark the phase planned until every trackable decision appears in at least -one plan's `must_haves`, `truths`, or body. The gate names each missed -decision by id (`D-07: …`) so you know exactly what to add, move, or -reclassify. +**Plan-phase translation gate (blocking).** After planning, GSD refuses to mark the phase planned until every trackable decision appears in at least one plan's `must_haves`, `truths`, or body. -**Verify-phase validation gate (non-blocking).** During verification, GSD -searches plans, SUMMARY.md, modified files, and recent commit messages for -each trackable decision. Misses are logged to VERIFICATION.md as a warning -section; verification status is unchanged. The asymmetry is deliberate — -the blocking gate is cheap at plan time but hostile at verify time. +**Verify-phase validation gate (non-blocking).** During verification, GSD searches plans, SUMMARY.md, modified files, and recent commit messages for each trackable decision. Misses are logged to VERIFICATION.md as a warning section; verification status is unchanged. -**Writing decisions the gate can match.** Two match modes: +**Opting a decision out.** Move it under the `### Claude's Discretion` heading inside ``, or tag it: `- **D-08 [informational]:** …`, `- **D-09 [folded]:** …`, `- **D-10 [deferred]:** …`. -1. **Strict id match (recommended).** Cite the decision id anywhere in a - plan that implements it — `must_haves.truths: ["D-12: bit offsets - exposed"]`, a bullet in the plan body, a frontmatter comment. This is - deterministic and unambiguous. -2. **Soft phrase match (fallback).** If a 6+-word slice of the decision - text appears verbatim in any plan or shipped artifact, it counts. This - forgives paraphrasing but is less reliable. - -**Opting a decision out.** If a decision genuinely should not be tracked — -an implementation-discretion note, an informational capture, a decision -already deferred — mark it one of these ways: - -- Move it under the `### Claude's Discretion` heading inside ``. -- Tag it in its bullet: `- **D-08 [informational]:** …`, - `- **D-09 [folded]:** …`, `- **D-10 [deferred]:** …`. - -**Disabling the gates.** Set -`workflow.context_coverage_gate: false` in `.planning/config.json` (or via -`/gsd-settings`) to skip both gates silently. Default is `true`. - ---- - -## UI Design Contract - -### Why - -AI-generated frontends are visually inconsistent not because Claude Code is bad at UI but because no design contract existed before execution. Five components built without a shared spacing scale, color contract, or copywriting standard produce five slightly different visual decisions. - -`/gsd-ui-phase` locks the design contract before planning. `/gsd-ui-review` audits the result after execution. - -### Commands - - -| Command | Description | -| -------------------- | -------------------------------------------------------- | -| `/gsd-ui-phase [N]` | Generate UI-SPEC.md design contract for a frontend phase | -| `/gsd-ui-review [N]` | Retroactive 6-pillar visual audit of implemented UI | - - -### Workflow: `/gsd-ui-phase` - -**When to run:** After `/gsd-discuss-phase`, before `/gsd-plan-phase` — for phases with frontend/UI work. - -**Flow:** - -1. Reads CONTEXT.md, RESEARCH.md, REQUIREMENTS.md for existing decisions -2. Detects design system state (shadcn components.json, Tailwind config, existing tokens) -3. shadcn initialization gate — offers to initialize if React/Next.js/Vite project has none -4. Asks only unanswered design contract questions (spacing, typography, color, copywriting, registry safety) -5. Writes `{phase}-UI-SPEC.md` to phase directory -6. Validates against 6 dimensions (Copywriting, Visuals, Color, Typography, Spacing, Registry Safety) -7. Revision loop if BLOCKED (max 2 iterations) - -**Output:** `{padded_phase}-UI-SPEC.md` in `.planning/phases/{phase-dir}/` - -### Workflow: `/gsd-ui-review` - -**When to run:** After `/gsd-execute-phase` or `/gsd-verify-work` — for any project with frontend code. - -**Standalone:** Works on any project, not just GSD-managed ones. If no UI-SPEC.md exists, audits against abstract 6-pillar standards. - -**6 Pillars (scored 1-4 each):** - -1. Copywriting — CTA labels, empty states, error states -2. Visuals — focal points, visual hierarchy, icon accessibility -3. Color — accent usage discipline, 60/30/10 compliance -4. Typography — font size/weight constraint adherence -5. Spacing — grid alignment, token consistency -6. Experience Design — loading/error/empty state coverage - -**Output:** `{padded_phase}-UI-REVIEW.md` in phase directory with scores and top 3 priority fixes. - -### Configuration - - -| Setting | Default | Description | -| ------------------------- | ------- | ----------------------------------------------------------- | -| `workflow.ui_phase` | `true` | Generate UI design contracts for frontend phases | -| `workflow.ui_safety_gate` | `true` | plan-phase prompts to run /gsd-ui-phase for frontend phases | - - -Both follow the absent=enabled pattern. Disable via `/gsd-settings`. - -### shadcn Initialization - -For React/Next.js/Vite projects, the UI researcher offers to initialize shadcn if no `components.json` is found. The flow: - -1. Visit `ui.shadcn.com/create` and configure your preset -2. Copy the preset string -3. Run `npx shadcn init --preset {paste}` -4. Preset encodes the entire design system — colors, border radius, fonts - -The preset string becomes a first-class GSD planning artifact, reproducible across phases and milestones. - -### Registry Safety Gate - -Third-party shadcn registries can inject arbitrary code. The safety gate requires: - -- `npx shadcn view {component}` — inspect before installing -- `npx shadcn diff {component}` — compare against official - -Controlled by `workflow.ui_safety_gate` config toggle. - -### Screenshot Storage - -`/gsd-ui-review` captures screenshots via Playwright CLI to `.planning/ui-reviews/`. A `.gitignore` is created automatically to prevent binary files from reaching git. Screenshots are cleaned up during `/gsd-complete-milestone`. - ---- - -## Spiking & Sketching - -Use `/gsd-spike` to validate technical feasibility before planning, and `/gsd-sketch` to explore visual direction before designing. Both store artifacts in `.planning/` and integrate with the project-skills system via their wrap-up companions. - -### When to Spike - -Spike when you're uncertain whether a technical approach is feasible or want to compare two implementations before committing a phase to one of them. - -``` -/gsd-spike # Interactive intake — describes the question, you confirm -/gsd-spike "can we stream LLM tokens through SSE" -/gsd-spike --quick "websocket vs SSE latency" -``` - -Each spike runs 2–5 experiments. Every experiment has: -- A **Given / When / Then** hypothesis written before any code -- **Working code** (not pseudocode) -- A **VALIDATED / INVALIDATED / PARTIAL** verdict with evidence - -Results land in `.planning/spikes/NNN-name/README.md` and are indexed in `.planning/spikes/MANIFEST.md`. - -Once you have signal, run `/gsd-spike --wrap-up` to package the findings into `.claude/skills/spike-findings-[project]/` — future sessions will load them automatically via project-skills discovery. - -### When to Sketch - -Sketch when you need to compare layout structures, interaction models, or visual treatments before writing any real component code. - -``` -/gsd-sketch # Mood intake — explores feel, references, core action -/gsd-sketch "dashboard layout" -/gsd-sketch --quick "sidebar navigation" -/gsd-sketch --text "onboarding flow" # For non-Claude runtimes (Codex, Gemini, etc.) -``` - -Each sketch answers **one design question** with 2–3 variants in a single `index.html` you open directly in a browser — no build step. Variants use tab navigation and shared CSS variables from `themes/default.css`. All interactive elements (hover, click, transitions) are functional. - -After picking a winner, run `/gsd-sketch --wrap-up` to capture the visual decisions into `.claude/skills/sketch-findings-[project]/`. - -### Spike → Sketch → Phase Flow - -``` -/gsd-spike "SSE vs WebSocket" # Validate the approach -/gsd-spike --wrap-up # Package learnings - -/gsd-sketch "real-time feed UI" # Explore the design -/gsd-sketch --wrap-up # Package decisions - -/gsd-discuss-phase N # Lock in preferences (now informed by spike + sketch) -/gsd-plan-phase N # Plan with confidence -``` - ---- - -## Backlog & Threads - -### Backlog Parking Lot - -Ideas that aren't ready for active planning go into the backlog using 999.x numbering, keeping them outside the active phase sequence. - -``` -/gsd-capture --backlog "GraphQL API layer" # Creates 999.1-graphql-api-layer/ -/gsd-capture --backlog "Mobile responsive" # Creates 999.2-mobile-responsive/ -``` - -Backlog items get full phase directories, so you can use `/gsd-discuss-phase 999.1` to explore an idea further or `/gsd-plan-phase 999.1` when it's ready. - -**Review and promote** with `/gsd-review-backlog` — it shows all backlog items and lets you promote (move to active sequence), keep (leave in backlog), or remove (delete). - -### Seeds - -Seeds are forward-looking ideas with trigger conditions. Unlike backlog items, seeds surface automatically when the right milestone arrives. - -``` -/gsd-capture --seed "Add real-time collab when WebSocket infra is in place" -``` - -Seeds preserve the full WHY and WHEN to surface. `/gsd-new-milestone` scans all seeds and presents matches. - -**Storage:** `.planning/seeds/SEED-NNN-slug.md` - -### Persistent Context Threads - -Threads are lightweight cross-session knowledge stores for work that spans multiple sessions but doesn't belong to any specific phase. - -``` -/gsd-thread # List all threads -/gsd-thread fix-deploy-key-auth # Resume existing thread -/gsd-thread "Investigate TCP timeout" # Create new thread -``` - -Threads are lighter weight than `/gsd-pause-work` — no phase state, no plan context. Each thread file includes Goal, Context, References, and Next Steps sections. - -Threads can be promoted to phases (`/gsd-phase`) or backlog items (`/gsd-capture --backlog`) when they mature. - -**Storage:** `.planning/threads/{slug}.md` - ---- - -## Workstreams - -Workstreams let you work on multiple milestone areas concurrently without state collisions. Each workstream gets its own isolated `.planning/` state, so switching between them doesn't clobber progress. - -**When to use:** You're working on milestone features that span different concern areas (e.g., backend API and frontend dashboard) and want to plan, execute, or discuss them independently without context bleed. - -### Commands - - -| Command | Purpose | -| ---------------------------------- | ---------------------------------------------------- | -| `/gsd-workstreams create ` | Create a new workstream with isolated planning state | -| `/gsd-workstreams switch ` | Switch active context to a different workstream | -| `/gsd-workstreams list` | Show all workstreams and which is active | -| `/gsd-workstreams complete ` | Mark a workstream as done and archive its state | - - -### How It Works - -Each workstream maintains its own `.planning/` directory subtree. When you switch workstreams, GSD swaps the active planning context so that `/gsd-progress`, `/gsd-discuss-phase`, `/gsd-plan-phase`, and other commands operate on that workstream's state. Active context is session-scoped when the runtime exposes a stable session identifier, which prevents one terminal or AI instance from repointing another instance's `STATE.md`. - -This is lighter weight than `/gsd-workspace --new` (which creates separate repo worktrees). Workstreams share the same codebase and git history but isolate planning artifacts. - ---- - -## Security - -### Defense-in-Depth (v1.27) - -GSD generates markdown files that become LLM system prompts. This means any user-controlled text flowing into planning artifacts is a potential indirect prompt injection vector. v1.27 introduced centralized security hardening: - -**Path Traversal Prevention:** -All user-supplied file paths (`--text-file`, `--prd`) are validated to resolve within the project directory. macOS `/var` → `/private/var` symlink resolution is handled. - -**Prompt Injection Detection:** -The `security.cjs` module scans for known injection patterns (role overrides, instruction bypasses, system tag injections) in user-supplied text before it enters planning artifacts. - -**Runtime Hooks:** - -- `gsd-prompt-guard.js` — Scans Write/Edit calls to `.planning/` for injection patterns (always active, advisory-only) -- `gsd-workflow-guard.js` — Warns on file edits outside GSD workflow context (opt-in via `hooks.workflow_guard`) - -**CI Scanner:** -`prompt-injection-scan.test.cjs` scans all agent, workflow, and command files for embedded injection vectors. Run as part of the test suite. - ---- - -### Package Legitimacy Gate (v1.42.1) - -AI coding tools hallucinate package names. Attackers pre-register those names on npm, PyPI, and crates.io with malicious post-install scripts — a technique called *slopsquatting*. A hallucinated name that passes `npm view` looks legitimate, so it would flow undetected through GSD's research → plan → execute pipeline all the way to `npm install ` running on your machine. - -v1.42.1 adds a three-layer gate that stops this before it reaches your shell. - -#### What you'll see - -**In RESEARCH.md** — every phase that recommends external packages now includes a `## Package Legitimacy Audit` table: - -```markdown -## Package Legitimacy Audit - -| Package | Registry | Age | Downloads | Source Repo | slopcheck | Disposition | -|---------|----------|-----|-----------|-------------|-----------|-------------| -| express | npm | 13 yrs | 100M+/wk | github.com/expressjs/express | [OK] | Approved | -| some-new-util | npm | 3 days | 47 | none | [SLOP] | REMOVED | -| api-bridge | npm | 6 mo | 1.2k/wk | github.com/user/api-bridge | [SUS] | Flagged | - -**Packages removed due to slopcheck:** some-new-util -**Packages flagged as suspicious:** api-bridge — planner will require human verification before install -``` - -`[SLOP]` packages are removed from RESEARCH.md entirely. They never reach the planner. - -**In PLAN.md** — if a package is tagged `[ASSUMED]` (sourced from WebSearch, not registry-verified) or `[SUS]` (slopcheck suspicious), the plan includes a verification checkpoint *before* the install task: - -```xml - - Package verification required before install - - Verify these packages before proceeding: - - `api-bridge` [SUS — 6 months old, 1.2k downloads/week, GitHub repo present] - Check: https://npmjs.com/package/api-bridge - Look for: maintainer history, issue tracker activity, no suspicious install scripts - - Type "verified" once you've confirmed all packages are legitimate - -``` - -**During execution** — if an install fails, the executor surfaces a checkpoint and stops. It does not silently try a similarly-named alternative (which could be even more dangerous). - -#### Slopcheck verdicts - -| Verdict | Meaning | GSD action | -|---------|---------|------------| -| `[OK]` | Package passes all legitimacy checks | Proceeds — no checkpoint added | -| `[SUS]` | Suspicious signals (new, low downloads, no source repo, etc.) | Flagged in Audit table; planner adds `checkpoint:human-verify` before install | -| `[SLOP]` | High-confidence hallucination or attacker-registered package | Removed from RESEARCH.md; never reaches planner | - -#### Claim provenance and WebSearch packages - -Package names discovered through WebSearch are always tagged `[ASSUMED]` in RESEARCH.md, regardless of whether `npm view` succeeds. A package that exists on the registry is not the same as a package that's safe to install — `npm view` only proves registration, not legitimacy. - -`[ASSUMED]` packages trigger the same `checkpoint:human-verify` gate as `[SUS]` packages. You'll see the checkpoint with a link to the registry page and guidance on what to look for. - -#### If slopcheck isn't installed - -GSD attempts `pip install slopcheck` at research time. If that fails: - -- Every recommended package is tagged `[ASSUMED]` -- The planner gates every install with a `checkpoint:human-verify` task -- Research and planning complete normally — nothing hard-fails - -This is intentionally stricter than the normal flow: slopcheck unavailability means every package install gets a human checkpoint, which is the safest fallback. - -To install slopcheck manually: - -```bash -pip install slopcheck -# verify: slopcheck install express --json -``` - -#### slopcheck dependency - -`slopcheck` is a MIT-licensed Python tool maintained by ToxSec (the researcher who documented the slopsquatting attack surface). It checks packages across npm, PyPI, crates.io, RubyGems, Go modules, Maven, and Packagist using multi-signal heuristics: registry age, download count, source-repo linkage, naming distance to popular packages, and registry-specific suspicion patterns. - -If `slopcheck` is ever unavailable or abandoned, GSD's `[ASSUMED]`-gate fallback ensures you always get a human checkpoint before any install — the system never silently degrades to the pre-v1.42.1 behavior. - ---- +**Disabling the gates.** Set `workflow.context_coverage_gate: false` in `.planning/config.json` (or via `/gsd-settings`). Default is `true`. ### Execution Wave Coordination -``` +```text /gsd-execute-phase N │ ├── Analyze plan dependencies @@ -828,115 +245,199 @@ If `slopcheck` is ever unavailable or abandoned, GSD's `[ASSUMED]`-gate fallback └── FAIL -> Issues logged for /gsd-verify-work ``` -### Brownfield Workflow (Existing Codebase) +--- +## UI Design Contract + +AI-generated frontends are visually inconsistent not because Claude Code is bad at UI but because no design contract existed before execution. `/gsd-ui-phase` locks the design contract before planning; `/gsd-ui-review` audits the result after execution. + +For the full workflow, configuration, shadcn initialisation, and the registry safety gate, see [Design a UI phase](how-to/design-a-ui-phase.md). + +**Quick reference:** + +| Command | Description | +| -------------------- | -------------------------------------------------------- | +| `/gsd-ui-phase [N]` | Generate UI-SPEC.md design contract for a frontend phase | +| `/gsd-ui-review [N]` | Retroactive 6-pillar visual audit of implemented UI | + +| Setting | Default | Description | +| ------------------------- | ------- | ----------------------------------------------------------- | +| `workflow.ui_phase` | `true` | Generate UI design contracts for frontend phases | +| `workflow.ui_safety_gate` | `true` | plan-phase prompts to run /gsd-ui-phase for frontend phases | + +--- + +## Spiking & Sketching + +Use `/gsd-spike` to validate technical feasibility before planning, and `/gsd-sketch` to explore visual direction before designing. Both store artifacts in `.planning/` and integrate with the project-skills system via their wrap-up companions. + +For the full workflow and flow diagram, see [Spike and sketch](how-to/spike-and-sketch.md). + +**Typical flow:** + +```bash +/gsd-spike "SSE vs WebSocket" # Validate the approach +/gsd-spike --wrap-up # Package learnings + +/gsd-sketch "real-time feed UI" # Explore the design +/gsd-sketch --wrap-up # Package decisions + +/gsd-discuss-phase N # Lock in preferences (now informed by spike + sketch) +/gsd-plan-phase N # Plan with confidence ``` - /gsd-map-codebase - │ - ├── Stack Mapper -> codebase/STACK.md - ├── Arch Mapper -> codebase/ARCHITECTURE.md - ├── Convention Mapper -> codebase/CONVENTIONS.md - └── Concern Mapper -> codebase/CONCERNS.md - │ - ┌───────▼──────────┐ - │ /gsd-new-project │ <- Questions focus on what you're ADDING - └──────────────────┘ + +--- + +## Backlog & Threads + +### Backlog Parking Lot + +Ideas that aren't ready for active planning go into the backlog using 999.x numbering, keeping them outside the active phase sequence. + +```bash +/gsd-capture --backlog "GraphQL API layer" # Creates 999.1-graphql-api-layer/ +/gsd-capture --backlog "Mobile responsive" # Creates 999.2-mobile-responsive/ +``` + +Backlog items get full phase directories, so you can use `/gsd-discuss-phase 999.1` to explore an idea further or `/gsd-plan-phase 999.1` when it's ready. + +**Review and promote** with `/gsd-review-backlog` — it shows all backlog items and lets you promote (move to active sequence), keep (leave in backlog), or remove (delete). + +### Seeds + +Seeds are forward-looking ideas with trigger conditions. Unlike backlog items, seeds surface automatically when the right milestone arrives. + +```bash +/gsd-capture --seed "Add real-time collab when WebSocket infra is in place" +``` + +`/gsd-new-milestone` scans all seeds and presents matches. **Storage:** `.planning/seeds/SEED-NNN-slug.md` + +### Persistent Context Threads + +Threads are lightweight cross-session knowledge stores for work that spans multiple sessions but doesn't belong to any specific phase. + +```bash +/gsd-thread # List all threads +/gsd-thread fix-deploy-key-auth # Resume existing thread +/gsd-thread "Investigate TCP timeout" # Create new thread +``` + +Threads can be promoted to phases (`/gsd-phase`) or backlog items (`/gsd-capture --backlog`) when they mature. **Storage:** `.planning/threads/{slug}.md` + +--- + +## Workstreams & Workspaces + +Workstreams and workspaces both provide isolation, but at different levels. + +**Workstreams** share the same codebase and git history but isolate planning artifacts — lighter weight, good for working on multiple milestone areas concurrently. See [Work in parallel with workstreams](how-to/work-in-parallel-with-workstreams.md). + +**Workspaces** create separate repo worktrees with their own `.planning/` — heavier, for feature-branch or multi-repo isolation. See [Isolate work with workspaces](how-to/isolate-work-with-workspaces.md). + +| Command | Purpose | +| ---------------------------------- | ---------------------------------------------------- | +| `/gsd-workstreams create ` | Create a new workstream with isolated planning state | +| `/gsd-workstreams switch ` | Switch active context to a different workstream | +| `/gsd-workstreams list` | Show all workstreams and which is active | +| `/gsd-workstreams complete ` | Mark a workstream as done and archive its state | + +```bash +# Workspace example — feature branch isolation +/gsd-workspace --new --name feature-b --repos . +cd ~/gsd-workspaces/feature-b +/gsd-new-project + +/gsd-workspace --list +/gsd-workspace --remove feature-b +``` + +--- + +## Security + +### Defense-in-Depth (v1.27) + +GSD generates markdown files that become LLM system prompts. This means any user-controlled text flowing into planning artifacts is a potential indirect prompt injection vector. v1.27 introduced centralised security hardening: + +**Path Traversal Prevention:** All user-supplied file paths (`--text-file`, `--prd`) are validated to resolve within the project directory. macOS `/var` → `/private/var` symlink resolution is handled. + +**Prompt Injection Detection:** The `security.cjs` module scans for known injection patterns in user-supplied text before it enters planning artifacts. + +**Runtime Hooks:** + +- `gsd-prompt-guard.js` — Scans Write/Edit calls to `.planning/` for injection patterns (always active, advisory-only) +- `gsd-workflow-guard.js` — Warns on file edits outside GSD workflow context (opt-in via `hooks.workflow_guard`) + +**CI Scanner:** `prompt-injection-scan.test.cjs` scans all agent, workflow, and command files for embedded injection vectors. + +--- + +### Package Legitimacy Gate (v1.42.1) + +AI coding tools hallucinate package names. Attackers pre-register those names on npm, PyPI, and crates.io with malicious post-install scripts — a technique called *slopsquatting*. v1.42.1 adds a three-layer gate that stops this before it reaches your shell. + +**In RESEARCH.md** — every phase that recommends external packages includes a `## Package Legitimacy Audit` table: + +```markdown +## Package Legitimacy Audit + +| Package | Registry | Age | Downloads | Source Repo | slopcheck | Disposition | +|---------|----------|-----|-----------|-------------|-----------|-------------| +| express | npm | 13 yrs | 100M+/wk | github.com/expressjs/express | [OK] | Approved | +| some-new-util | npm | 3 days | 47 | none | [SLOP] | REMOVED | +| api-bridge | npm | 6 mo | 1.2k/wk | github.com/user/api-bridge | [SUS] | Flagged | +``` + +`[SLOP]` packages are removed from RESEARCH.md entirely and never reach the planner. + +**In PLAN.md** — `[SUS]` or `[ASSUMED]` packages trigger a `checkpoint:human-verify` task before the install. + +**During execution** — if an install fails, the executor surfaces a checkpoint and stops rather than silently trying an alternative. + +**Slopcheck verdicts:** + +| Verdict | Meaning | GSD action | +|---------|---------|------------| +| `[OK]` | Passes all legitimacy checks | Proceeds — no checkpoint added | +| `[SUS]` | Suspicious signals | Flagged; planner adds `checkpoint:human-verify` | +| `[SLOP]` | High-confidence hallucination | Removed from RESEARCH.md; never reaches planner | + +To install slopcheck manually: + +```bash +pip install slopcheck +# verify: slopcheck install express --json ``` --- ## Code Review Workflow -### Phase Code Review - -After executing a phase, run a structured code review before UAT: +After executing a phase, run a structured code review before UAT. See [Set up cross-AI review](how-to/set-up-cross-ai-review.md) for the full workflow. ```bash /gsd-code-review 3 # Review all changed files in phase 3 -/gsd-code-review 3 --depth=deep # Deep cross-file review (import graphs, call chains) -``` - -The reviewer scopes files automatically using SUMMARY.md (preferred) or git diff fallback. Findings are classified as Critical, Warning, or Info in `{phase}-REVIEW.md`. - -```bash -/gsd-code-review 3 --fix # Fix Critical + Warning findings atomically -/gsd-code-review 3 --fix --auto # Fix and re-review until clean (max 3 iterations) -``` - -### Autonomous Audit-to-Fix - -To run an audit and fix all auto-fixable issues in one pass: - -```bash +/gsd-code-review 3 --depth=deep # Deep cross-file review +/gsd-code-review 3 --fix # Fix Critical + Warning findings atomically +/gsd-code-review 3 --fix --auto # Fix and re-review until clean (max 3 iterations) /gsd-audit-fix # Audit + classify + fix (medium+ severity, max 5) -/gsd-audit-fix --dry-run # Preview classification without fixing ``` -### Code Review in the Full Phase Lifecycle - The review step slots in after execution and before UAT: -``` -/gsd-execute-phase N -> /gsd-code-review N -> /gsd-code-review N --fix -> /gsd-verify-work N -``` - ---- - -## Exploration & Discovery - -### Socratic Exploration - -Before committing to a new phase or plan, use `/gsd-explore` to think through the idea: - -```bash -/gsd-explore # Open-ended ideation -/gsd-explore "caching strategy" # Explore a specific topic -``` - -The exploration session guides you through probing questions, optionally spawns a research agent, and routes output to the appropriate GSD artifact: note, todo, seed, research question, requirements update, or new phase. - -### Codebase Intelligence - -For queryable codebase insights without reading the entire codebase, enable the intel system: - -```json -{ "intel": { "enabled": true } } -``` - -Then build the index: - -```bash -/gsd-map-codebase --query refresh # Analyze codebase and write .planning/intel/ files -/gsd-map-codebase --query auth # Search for a term across all intel files -/gsd-map-codebase --query status # Check freshness of intel files -/gsd-map-codebase --query diff # See what changed since last snapshot -``` - -Intel files cover stack, API surface, dependency graph, file roles, and architecture decisions. - -### Quick Scan - -For a focused assessment without full `/gsd-map-codebase` overhead: - -```bash -/gsd-map-codebase --fast # Quick tech + arch overview -/gsd-map-codebase --fast --focus quality # Quality and code health only -/gsd-map-codebase --fast --focus concerns # Risk areas and concerns +```text +/gsd-execute-phase N -> /gsd-code-review N -> /gsd-code-review N --fix -> /gsd-verify-work N ``` --- ## Command And Configuration Reference -- **Command Reference:** see [`docs/COMMANDS.md`](COMMANDS.md) for every stable command's flags, subcommands, and examples. The authoritative shipped-command roster lives in [`docs/INVENTORY.md`](INVENTORY.md#commands-75-shipped). -- **Configuration Reference:** see [`docs/CONFIGURATION.md`](CONFIGURATION.md) for the full `config.json` schema, every setting's default and provenance, the per-agent model-profile table (including the `inherit` option for non-Claude runtimes), git branching strategies, and security settings. +- **Command Reference:** see [`docs/COMMANDS.md`](COMMANDS.md) for every stable command's flags, subcommands, and examples. +- **Configuration Reference:** see [`docs/CONFIGURATION.md`](CONFIGURATION.md) for the full `config.json` schema, model-profile table, git branching strategies, and security settings. - **Discuss Mode:** see [`docs/workflow-discuss-mode.md`](workflow-discuss-mode.md) for interview vs assumptions mode. -This guide intentionally does not re-document commands or config settings: maintaining two copies previously produced drift (`workflow.discuss_mode`'s default, `claude_md_path`'s default, the model-profile table's agent coverage). The single-source-of-truth rule is enforced mechanically by the drift-guard tests anchored on `docs/INVENTORY.md`. - - - - --- ## Usage Examples @@ -973,28 +474,21 @@ claude --dangerously-skip-permissions ### Existing Codebase ```bash -/gsd-map-codebase # Analyze what exists (parallel agents) +/gsd-map-codebase # Analyse what exists (parallel agents) /gsd-new-project # Questions focus on what you're ADDING # (normal phase workflow from here) ``` -**Post-execute drift detection (#2003).** After every `/gsd-execute-phase`, -GSD checks whether the phase introduced enough structural change -(new directories, barrel exports, migrations, or route modules) to make -`.planning/codebase/STRUCTURE.md` stale. If it did, the default behavior is -to print a one-shot warning suggesting the exact `/gsd-map-codebase --paths …` -invocation to refresh just the affected subtrees. Flip the behavior with: +**Post-execute drift detection (#2003).** After every `/gsd-execute-phase`, GSD checks whether the phase introduced enough structural change to make `.planning/codebase/STRUCTURE.md` stale. Flip the behavior with: ```bash /gsd-settings workflow.drift_action auto-remap # remap automatically /gsd-settings workflow.drift_threshold 5 # tune sensitivity ``` -The gate is non-blocking: any internal failure logs and the phase continues. - ### Plan Drift Guard -**Default-on.** The plan drift guard (`plan_review.source_grounding: true`) runs during plan review and verifies that every symbol your plans cite — decorators, classes, functions, CLI flags — actually exists in your source tree at review time. This catches hallucinated names (symbols the planner invented but that don't exist yet) before any execution agent runs. +**Default-on.** The plan drift guard (`plan_review.source_grounding: true`) runs during plan review and verifies that every symbol your plans cite — decorators, classes, functions, CLI flags — actually exists in your source tree at review time. This catches hallucinated names before any execution agent runs. **What it catches:** @@ -1043,130 +537,68 @@ Toggle at project setup (`/gsd:new-project` asks during workflow preferences) or ### Speed vs Quality Presets - | Scenario | Mode | Granularity | Profile | Research | Plan Check | Verifier | | ----------- | ------------- | ----------- | ---------- | -------- | ---------- | -------- | | Prototyping | `yolo` | `coarse` | `budget` | off | off | off | | Normal dev | `interactive` | `standard` | `balanced` | on | on | on | | Production | `interactive` | `fine` | `quality` | on | on | on | - -**Skipping discuss-phase in autonomous mode:** When running in `yolo` mode with well-established preferences already captured in PROJECT.md, set `workflow.skip_discuss: true` via `/gsd-settings`. This bypasses the discuss-phase entirely and writes a minimal CONTEXT.md derived from the ROADMAP phase goal. Useful when your PROJECT.md and conventions are comprehensive enough that discussion adds no new information. +**Skipping discuss-phase in autonomous mode:** When running in `yolo` mode, set `workflow.skip_discuss: true` via `/gsd-settings`. ### Mid-Milestone Scope Changes ```bash /gsd-phase # Append a new phase to the roadmap (default mode) -# or /gsd-phase --insert 3 # Insert urgent work between phases 3 and 4 -# or /gsd-phase --remove 7 # Descope phase 7 and renumber -# or /gsd-phase --edit 4 # Edit any field of phase 4 in place ``` -### Multi-Project Workspaces - -Work on multiple repos or features in parallel with isolated GSD state. - -```bash -# Create a workspace with repos from your monorepo -/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI - -# Feature branch isolation — worktree of current repo with its own .planning/ -/gsd-workspace --new --name feature-b --repos . - -# Then cd into the workspace and initialize GSD -cd ~/gsd-workspaces/feature-b -/gsd-new-project - -# List and manage workspaces -/gsd-workspace --list -/gsd-workspace --remove feature-b -``` - -Each workspace gets: - -- Its own `.planning/` directory (fully independent from source repos) -- Git worktrees (default) or clones of specified repos -- A `WORKSPACE.md` manifest tracking member repos - --- ## Troubleshooting +For a comprehensive troubleshooting guide, see [Recover and troubleshoot](how-to/recover-and-troubleshoot.md). The most common issues are summarised below. + ### Programmatic CLI (`gsd-tools query` vs `gsd-tools.cjs`) -For automation and copy-paste from docs, prefer **`gsd-tools query`** with a registered subcommand (see [CLI-TOOLS.md — SDK and programmatic access](CLI-TOOLS.md#sdk-and-programmatic-access) and [QUERY-HANDLERS.md](../sdk/src/query/QUERY-HANDLERS.md)). The legacy `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs` CLI remains supported for dual-mode operation. - -**CLI-only (not in the query registry):** **graphify**, **from-gsd2** / **gsd2-import** — call `gsd-tools.cjs` (see [QUERY-HANDLERS.md](../sdk/src/query/QUERY-HANDLERS.md)). **Two distinct `state` JSON shapes, both available via `gsd-tools query`:** `state.json` (frontmatter rebuild) vs `state.load` (`config` + `state_raw` + flags) — they resolve to different handlers, so pick the one whose shape you need. The legacy `gsd-tools.cjs state json` / `state load` forms produce the same two shapes. See [CLI-TOOLS.md](CLI-TOOLS.md#sdk-and-programmatic-access) and QUERY-HANDLERS. +For automation, prefer **`gsd-tools query`** with a registered subcommand (see [CLI-TOOLS.md — SDK and programmatic access](CLI-TOOLS.md#sdk-and-programmatic-access) and QUERY-HANDLERS.md). The legacy `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs` CLI remains supported. ### STATE.md Out of Sync -If STATE.md shows incorrect phase status or position, use the state consistency commands (**CJS-only** until ported to the query layer): - ```bash -node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate # Detect drift between STATE.md and filesystem -node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify # Preview what sync would change -node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync # Reconstruct STATE.md from disk +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate # Detect drift +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify # Preview changes +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync # Reconstruct STATE.md ``` -These commands are new in v1.32 and replace manual STATE.md editing. - -### Read-Before-Edit Infinite Retry Loop - -Some non-Claude runtimes (Cline, Augment Code) may enter an infinite retry loop when an agent attempts to edit a file it hasn't read. The `gsd-read-before-edit.js` hook (v1.32) detects this pattern and advises reading the file first. If your runtime doesn't support PreToolUse hooks, add this to your project's `CLAUDE.md`: - -```markdown -## Edit Safety Rule -Always read a file before editing it. Never call Edit or Write on a file you haven't read in this session. -``` - -### "Project already initialized" - -You ran `/gsd-new-project` but `.planning/PROJECT.md` already exists. This is a safety check. If you want to start over, delete the `.planning/` directory first. - ### A Command Looks Frozen After "Spawning..." -If you see `◆ Spawning researcher...` (or any "Spawning…" line) and then nothing — no output, no spinner — for 1–5 minutes, **this is normal**. GSD subagents run in a separate context window; their work is invisible to the parent session while in progress. The liveness note on the spawn line confirms this: "(runs in a subagent — no output until it returns, ~1–5 min; expected, not a freeze)". - -**Do not interrupt the session.** Killing it discards the in-progress subagent work and forces you to restart that step. Wait for the result to appear. Research and planning agents routinely take 1–5 minutes; verification agents can take longer on large phases. - -**If it truly seems stuck** (>10 minutes with no result): check whether Claude Code's agent task is still active in the sidebar. If the task shows as completed but no output appeared, the result may have been lost in a context switch — run the command again. +GSD subagents run in a separate context window — their work is invisible to the parent session while in progress. Do not interrupt the session. Wait for the result; research and planning agents routinely take 1–5 minutes. ### Context Degradation During Long Sessions -Clear your context window between major commands: `/clear` in Claude Code. GSD is designed around fresh contexts -- every subagent gets a clean 200K window. If quality is dropping in the main session, clear and use `/gsd-resume-work` or `/gsd-progress` to restore state. +Clear your context window between major commands: `/clear` in Claude Code. GSD is designed around fresh contexts — every subagent gets a clean 200K window. Use `/gsd-resume-work` or `/gsd-progress` to restore state after clearing. ### Plans Seem Wrong or Misaligned -Run `/gsd-discuss-phase [N]` before planning. Most plan quality issues come from Claude making assumptions that `CONTEXT.md` would have prevented. You can also run `/gsd-discuss-phase --assumptions [N]` to see what Claude intends to do before committing to a plan. - -### Discuss-Phase Uses Technical Jargon I Don't Understand - -`/gsd-discuss-phase` adapts its language based on your `USER-PROFILE.md`. If the profile indicates a non-technical owner — `learning_style: guided`, `jargon` listed as a frustration trigger, or `explanation_depth: high-level` — gray area questions are automatically reframed in product-outcome language instead of implementation terminology. - -To enable this: run `/gsd-profile-user` to generate your profile. The profile is stored at `~/.claude/get-shit-done/USER-PROFILE.md` and is read automatically on every `/gsd-discuss-phase` invocation. No other configuration is required. +Run `/gsd-discuss-phase [N]` before planning. Most plan quality issues come from Claude making assumptions that `CONTEXT.md` would have prevented. ### Execution Fails or Produces Stubs -Check that the plan was not too ambitious. Plans should have 2-3 tasks maximum. If tasks are too large, they exceed what a single context window can produce reliably. Re-plan with smaller scope. +Check that the plan was not too ambitious. Plans should have 2–3 tasks maximum. Re-plan with smaller scope. ### Lost Track of Where You Are Run `/gsd-progress`. It reads all state files and tells you exactly where you are and what to do next. -### Need to Change Something After Execution - -Do not re-run `/gsd-execute-phase`. Use `/gsd-quick` for targeted fixes, or `/gsd-verify-work` to systematically identify and fix issues through UAT. - ### Model Costs Too High -Switch to budget profile: `/gsd-config --profile budget`. Disable research and plan-check agents via `/gsd-settings` if the domain is familiar to you (or to Claude). +Switch to budget profile: `/gsd-config --profile budget`. Disable research and plan-check agents via `/gsd-settings` if the domain is familiar. ### Tuning model cost by phase (`models`) — added in v1.40 -If you've heard "use Opus for planning, Sonnet for verification" and want to apply that without learning the agent taxonomy, add a `models` block to `.planning/config.json`: +Add a `models` block to `.planning/config.json`: ```json { @@ -1182,8 +614,6 @@ If you've heard "use Opus for planning, Sonnet for verification" and want to app } ``` -The six slots (`planning` / `discuss` / `research` / `execution` / `verification` / `completion`) accept tier aliases (`opus`, `sonnet`, `haiku`, `inherit`). Each slot covers a group of agents — for example, setting `models.research = "sonnet"` applies to `gsd-phase-researcher`, `gsd-codebase-mapper`, `gsd-research-synthesizer`, and the other research agents in one shot. - Need a per-agent exception? Add `model_overrides` alongside — it wins over `models`: ```json @@ -1195,14 +625,10 @@ Need a per-agent exception? Add `model_overrides` alongside — it wins over `mo } ``` -That gives sonnet to all research agents *except* the codebase mapper, which runs haiku for the cheap-but-broad fan-out scan. - -For the full mapping table and resolution-precedence rules, see [Per-Phase-Type Models](CONFIGURATION.md#per-phase-type-models-models--added-in-v140) in the configuration reference. +For the full mapping table and resolution-precedence rules, see [Per-Phase-Type Models](CONFIGURATION.md#per-phase-type-models-models--added-in-v140). ### Cheap-by-default with `dynamic_routing` — added in v1.40 -If you've been paying Opus rates everywhere as insurance against a single hard verification, dynamic routing flips it: every agent starts on a cheaper tier and escalates only when the orchestrator marks a soft failure (verification inconclusive, plan-check FLAG, etc.). - ```json { "dynamic_routing": { @@ -1218,20 +644,11 @@ If you've been paying Opus rates everywhere as insurance against a single hard v } ``` -Each agent has a default tier (`light`, `standard`, or `heavy`). On the first attempt, GSD picks `tier_models[default_tier]`. If the orchestrator detects a soft failure, it re-spawns once at the next tier up. `max_escalations` caps total retries so a runaway loop can't burn through your budget. +For the full agent → tier mapping, see [Dynamic Routing](CONFIGURATION.md#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140). -Concretely: -- `gsd-codebase-mapper` (default `light`) → first attempt = `haiku`. If escalated → `sonnet`. -- `gsd-verifier` (default `standard`) → first attempt = `sonnet`. If escalated → `opus`. -- `gsd-planner` (default `heavy`) → always `opus`. No tier above; can't escalate further. +### Trim MCP servers to reduce per-turn cost -To turn it off, set `dynamic_routing.enabled: false` (the default) — behavior is identical to today. - -For the full agent → tier mapping and resolution-precedence rules, see [Dynamic Routing](CONFIGURATION.md#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140) in the configuration reference. - -### Trim MCP servers to reduce per-turn cost (the biggest lever GSD doesn't own) - -Before tuning `model_profile` or `models.`, audit which **MCP servers** your harness has enabled. Every enabled MCP server injects its tool schema into every turn — heavyweight servers like browser/playwright tools or platform-specific helpers can cost 20k+ tokens each, often dwarfing whatever GSD's resolver can save. +Before tuning `model_profile` or `models.`, audit which **MCP servers** your harness has enabled. Every enabled MCP server injects its tool schema into every turn — heavyweight servers can cost 20k+ tokens each. This is a **harness setting**, not a GSD setting. The toggle lives in `.claude/settings.json`: @@ -1245,24 +662,20 @@ This is a **harness setting**, not a GSD setting. The toggle lives in `.claude/s Quick audit before a long phase: - Are any browser / playwright tools enabled when this phase has no UI work? -- Are any platform-specific tools (Mac-tools, Windows-tools, OS-specific) enabled when not needed? +- Are any platform-specific tools enabled when not needed? - Are any project-specific MCPs from a different project still enabled here? -Each disabled server removes its schema from every subsequent turn for the rest of the session. Trimming MCPs **compounds** with `model_profile` tuning — both levers are additive, and MCP savings show up immediately across every subagent the orchestrator spawns. +Each disabled server removes its schema from every subsequent turn. Trimming MCPs **compounds** with `model_profile` tuning — both levers are additive, and MCP savings show up immediately across every subagent the orchestrator spawns. For the full audit, harness reference, and the composition note with `model_profile`, see [MCP Tool Schema Cost](../get-shit-done/references/context-budget.md#mcp-tool-schema-cost-harness-concern) in the bundled `context-budget.md` reference. ### Using Non-Claude Runtimes (Codex, OpenCode, Gemini CLI, Kilo) > **Codex CLI minimum supported version: `0.130.0`** (issue [#3562](https://github.com/open-gsd/gsd-core/issues/3562)). -> -> Codex CLI [0.130.0](https://github.com/openai/codex/releases/tag/rust-v0.130.0) (released 2026-05-08) removed extra-skills-roots discovery via [openai/codex#21485](https://github.com/openai/codex/pull/21485). From that version onward, Codex only discovers commands from `~/.codex/skills//SKILL.md` (user root), `/.codex/skills/` (cwd root), and registered plugin roots. The GSD installer writes `~/.codex/skills/gsd-/SKILL.md` directly so `$gsd-help`, `$gsd-new-project`, etc. are discoverable after restart. -> -> **Earlier Codex CLI versions** (pre-0.130.0) had additional skill-root scanning that discovered the GSD agent/workflow files in alternate locations. GSD still installs the `~/.codex/skills/gsd-*` copies on those versions, which can show a duplicate listing alongside the legacy auto-discovered surface — restart Codex after install and either upgrade to ≥ 0.130.0 or accept the duplicate entries until you do. -If you installed GSD for a non-Claude runtime, the installer already configured model resolution so all agents use the runtime's default model. No manual setup is needed. Specifically, the installer sets `resolve_model_ids: "omit"` in your config, which tells GSD to skip Anthropic model ID resolution and let the runtime choose its own default model. +If you installed GSD for a non-Claude runtime, the installer already configured model resolution. No manual setup is needed — `resolve_model_ids: "omit"` is set automatically, which tells GSD to skip Anthropic model ID resolution and let the runtime choose its own default model. -To assign different models to different agents on a non-Claude runtime, add `model_overrides` to `.planning/config.json` with fully-qualified model IDs that your runtime recognizes: +To assign different models on a non-Claude runtime: ```json { @@ -1275,12 +688,8 @@ To assign different models to different agents on a non-Claude runtime, add `mod } ``` -The installer auto-configures `resolve_model_ids: "omit"` for Gemini CLI, OpenCode, Kilo, and Codex. If you're manually setting up a non-Claude runtime, add it to `.planning/config.json` yourself. - #### Switching from Claude to Codex with one config change (#2517) -If you want tiered models on Codex without writing a large `model_overrides` block, set `runtime: "codex"` and pick a profile: - ```json { "runtime": "codex", @@ -1288,96 +697,50 @@ If you want tiered models on Codex without writing a large `model_overrides` blo } ``` -GSD will resolve each agent's tier (`opus`/`sonnet`/`haiku`) to the Codex-native model and reasoning effort defined in the runtime tier map (`gpt-5.4` xhigh / `gpt-5.3-codex` medium / `gpt-5.4-mini` medium). The Codex installer embeds both `model` and `model_reasoning_effort` into each agent's TOML automatically. To override a single tier, add `model_profile_overrides.codex.`. See [Runtime-Aware Profiles](CONFIGURATION.md#runtime-aware-profiles-2517). - -See the [Configuration Reference](CONFIGURATION.md#non-claude-runtimes-codex-opencode-gemini-cli-kilo) for the full explanation. +See [Runtime-Aware Profiles](CONFIGURATION.md#runtime-aware-profiles-2517). ### Manual install / no-Node.js setup -If you cannot run the GSD installer (e.g., Windows machine without Node.js or npm), you cannot use the source files in `agents/` directly. The source files are in Claude Code's native frontmatter format; each supported runtime requires a different shape. Copying them as-is into another runtime's config directory will produce schema validation errors. - -> The installer function responsible for OpenCode conversion is `convertClaudeToOpencodeFrontmatter` at `bin/install.js:5208`. It is the canonical reference for what must be transformed. - -#### OpenCode — required transformations - -OpenCode validates agent frontmatter against its own schema ([opencode.ai/docs/agents](https://opencode.ai/docs/agents)). The GSD source format is incompatible in two ways: +If you cannot run the GSD installer, you cannot use the source files in `agents/` directly — they are in Claude Code's native frontmatter format. For OpenCode, two transformations are required: | Field | GSD source format | OpenCode-valid format | Action | |---|---|---|---| -| `tools:` | `Read, Bash, Grep` (comma-string) | Not a frontmatter field in OpenCode | Remove the `tools:` line entirely | -| `color:` | Plain CSS color name (e.g., `steelblue`) | Hex (`#4682b4`) or semantic name from OpenCode's fixed set | Convert to hex or remove | +| `tools:` | `Read, Bash, Grep` (comma-string) | Not a frontmatter field | Remove the `tools:` line entirely | +| `color:` | Plain CSS color name | Hex or OpenCode semantic name | Convert to hex or remove | -The minimum viable manual transformation for a single agent file: - -1. Open the `.md` file from `agents/` in a text editor. -2. Remove any `tools:` line from the YAML frontmatter block. -3. Change `color:` to a hex value, or remove it. -4. Save the file into `~/.config/opencode/agents/.md`. - -All other frontmatter fields (`description:`, `system:`, `model:`) are accepted by OpenCode without modification. - -#### Alternative: use a machine with Node.js to run the installer - -If you have access to any machine with Node.js — including WSL, a Linux VM, a CI runner, or a Docker container — you can run: +**Alternative:** run the installer on any machine with Node.js: ```bash npx @opengsd/gsd-core@latest --opencode --global ``` -This produces a correctly converted `~/.config/opencode/agents/` directory. Copy that directory to your Windows machine. - -#### Other runtimes - -The same principle applies to all non-Claude-Code runtimes. Each runtime has its own schema, and the installer handles each conversion. If you are manually installing for a runtime not covered above, review the relevant installer converter in `bin/install.js` (search for `convert*Frontmatter`) for the exact field transformations needed. - ### Installing for Cline -Cline uses a rules-based integration — GSD installs as `.clinerules` rather than slash commands. - ```bash -# Global install (applies to all projects) -npx @opengsd/gsd-core --cline --global - -# Local install (this project only) -npx @opengsd/gsd-core --cline --local +npx @opengsd/gsd-core --cline --global # applies to all projects +npx @opengsd/gsd-core --cline --local # this project only ``` -Global installs write to `~/.cline/`. Local installs write to `./.cline/`. No custom slash commands are registered — GSD rules are loaded automatically by Cline from the rules file. - ### Installing for CodeBuddy -CodeBuddy uses a skills-based integration. - ```bash npx @opengsd/gsd-core --codebuddy --global ``` -Skills are installed to `~/.codebuddy/skills/gsd-*/SKILL.md`. - ### Installing for Qwen Code -Qwen Code uses the same open skills standard as Claude Code 2.1.88+. - ```bash npx @opengsd/gsd-core --qwen --global ``` -Skills are installed to `~/.qwen/skills/gsd-*/SKILL.md`. Use the `QWEN_CONFIG_DIR` environment variable to override the default install path. +### Installing for Prerelease Editions -### Installing for Prerelease Editions (Next / Nightly / Insiders / Preview) - -Many supported runtimes ship a prerelease edition alongside their stable release — Windsurf Next, Cursor Nightly, VS Code Insiders, Codex preview channels, JetBrains EAP, and so on. Prerelease editions read from a sibling configuration directory, so the default install path won't reach them. - -GSD does not enumerate prerelease editions as separate named runtimes. They are accommodated through the existing `_CONFIG_DIR` environment variables and the free-string runtime policy (see [#2517](https://github.com/open-gsd/gsd-core/issues/2517)) — installs work, paths resolve, GSD operates. Prerelease editions are **best-effort and not separately tested** as part of release CI. - -**Pattern.** Set the runtime's `*_CONFIG_DIR` env var to the prerelease directory before running the installer: +Set the runtime's `*_CONFIG_DIR` env var to the prerelease directory before running the installer: ```bash WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global ``` -Select the corresponding stable runtime in the installer prompt. Skills land in the prerelease directory; commands appear in the prerelease editor. - **Env-var reference for supported runtimes:** | Runtime | Stable default | Override env var | @@ -1389,7 +752,7 @@ Select the corresponding stable runtime in the installer prompt. Skills land in | Copilot | `~/.copilot` | `COPILOT_CONFIG_DIR` | | Cursor | `~/.cursor` | `CURSOR_CONFIG_DIR` | | Windsurf | `~/.codeium/windsurf` | `WINDSURF_CONFIG_DIR` | -| Antigravity | auto-detected: `~/.gemini/antigravity` (legacy), `~/.gemini/antigravity-ide`, or `~/.gemini/antigravity-cli` | `ANTIGRAVITY_CONFIG_DIR` | +| Antigravity | auto-detected | `ANTIGRAVITY_CONFIG_DIR` | | Augment | `~/.augment` | `AUGMENT_CONFIG_DIR` | | Trae | `~/.trae` | `TRAE_CONFIG_DIR` | | Qwen Code | `~/.qwen` | `QWEN_CONFIG_DIR` | @@ -1397,15 +760,13 @@ Select the corresponding stable runtime in the installer prompt. Skills land in | CodeBuddy | `~/.codebuddy` | `CODEBUDDY_CONFIG_DIR` | | Cline | `~/.cline` | `CLINE_CONFIG_DIR` | -If your runtime's prerelease channel is not listed, point the matching env var at its config directory and file an issue if the install fails for any reason other than the path mapping. +### Using Claude Code with Non-Anthropic Providers -### Using Claude Code with Non-Anthropic Providers (OpenRouter, Local) - -If GSD subagents call Anthropic models and you're paying through OpenRouter or a local provider, switch to the `inherit` profile: `/gsd-config --profile inherit`. This makes all agents use your current session model instead of specific Anthropic models. See also `/gsd-settings` → Model Profile → Inherit. +Switch to the `inherit` profile: `/gsd-config --profile inherit`. This makes all agents use your current session model. ### Working on a Sensitive/Private Project -Set `commit_docs: false` during `/gsd-new-project` or via `/gsd-settings`. Add `.planning/` to your `.gitignore`. Planning artifacts stay local and never touch git. +Set `commit_docs: false` during `/gsd-new-project` or via `/gsd-settings`. Add `.planning/` to your `.gitignore`. ### GSD Update Overwrote My Local Changes @@ -1413,53 +774,15 @@ Since v1.17, the installer backs up locally modified files to `gsd-local-patches ### Cannot Update via npm -If `npx @opengsd/gsd-core` fails due to npm outages or network restrictions, see [docs/manual-update.md](manual-update.md) for a step-by-step manual update procedure that works without npm access. - -### Surface GSD Update Notifications Without GSD's Statusline - -GSD checks for new versions in the background and writes the result to `~/.cache/gsd/gsd-update-check.json`. By default, GSD's statusline (`hooks/gsd-statusline.js`) reads that cache and shows the update indicator. If you use a different statusline (for example `ccstatusline`) or none at all, the update info is invisible. - -**Opt-in fix:** during interactive install, when you decline (or keep your existing) statusline, the installer offers a one-time prompt: - -```text -Optional: GSD update banner - 1) No banner (default) - 2) Install update banner -``` - -Choose `2` (or type `y`/`yes`) and the installer registers `hooks/gsd-update-banner.js` as a `SessionStart` hook. From the next session onward, GSD prints a one-line `systemMessage` only when the cache reports an update available: - -```text -GSD update available: 1.39.0 → 1.40.0. Run /gsd-update. -``` - -The banner is silent when no update is available. If the cache file is corrupt, GSD emits one diagnostic line (`GSD update check failed.`) and stays silent for 24 hours so a broken cache does not nag every session. - -**Opt-out / removal:** delete the SessionStart hook entry that references `gsd-update-banner.js` from your runtime's `settings.json` (Claude Code: `~/.claude/settings.json`; Gemini: `~/.gemini/settings.json`). `npx @opengsd/gsd-core --uninstall` removes both the script and the registration in one pass. - -The banner is not offered when GSD's statusline is installed — that channel already surfaces update info, so re-prompting would be noise. +See [docs/manual-update.md](manual-update.md) for a step-by-step manual update procedure. ### Workflow Diagnostics (`/gsd-forensics`) -When a workflow fails in a way that isn't obvious -- plans reference nonexistent files, execution produces unexpected results, or state seems corrupted -- run `/gsd-forensics` to generate a diagnostic report. - -**What it checks:** - -- Git history anomalies (orphaned commits, unexpected branch state, rebase artifacts) -- Artifact integrity (missing or malformed planning files, broken cross-references) -- State inconsistencies (ROADMAP status vs. actual file presence, config drift) - -**Output:** A diagnostic report written to `.planning/forensics/` with findings and suggested remediation steps. +When a workflow fails in a non-obvious way, run `/gsd-forensics` to generate a diagnostic report covering git history anomalies, artifact integrity, and state inconsistencies. Output goes to `.planning/forensics/`. ### Executor Subagent Gets "Permission denied" on Bash Commands -GSD's `gsd-executor` subagents need write-capable Bash access to a project's standard tooling — `git commit`, `bin/rails`, `bundle exec`, `npm run`, `uv run`, and similar commands. Claude Code's default `~/.claude/settings.json` only allows a narrow set of read-only git commands, so a fresh install will hit "Permission to use Bash has been denied" the first time an executor tries to make a commit or run a build tool. - -**Fix: add the required patterns to `~/.claude/settings.json`.** - -The patterns you need depend on your stack. Copy the block for your stack and add it to the `permissions.allow` array. - -#### Required for all stacks (git + gh) +Add the required patterns to `~/.claude/settings.json`. Core patterns needed for all stacks: ```json "Bash(git add:*)", @@ -1480,89 +803,11 @@ The patterns you need depend on your stack. Copy the block for your stack and ad "Bash(gh:*)" ``` -#### Rails / Ruby - -```json -"Bash(bin/rails:*)", -"Bash(bin/brakeman:*)", -"Bash(bin/bundler-audit:*)", -"Bash(bin/importmap:*)", -"Bash(bundle:*)", -"Bash(rubocop:*)", -"Bash(erb_lint:*)" -``` - -#### Python / uv - -```json -"Bash(uv:*)", -"Bash(python:*)", -"Bash(pytest:*)", -"Bash(ruff:*)", -"Bash(mypy:*)" -``` - -#### Node / npm / pnpm / bun - -```json -"Bash(npm:*)", -"Bash(npx:*)", -"Bash(pnpm:*)", -"Bash(bun:*)", -"Bash(node:*)" -``` - -#### Rust / Cargo - -```json -"Bash(cargo:*)" -``` - -**Example `~/.claude/settings.json` snippet (Rails project):** - -```json -{ - "permissions": { - "allow": [ - "Write", - "Edit", - "Bash(git add:*)", - "Bash(git commit:*)", - "Bash(git merge:*)", - "Bash(git worktree:*)", - "Bash(git rebase:*)", - "Bash(git reset:*)", - "Bash(git checkout:*)", - "Bash(git switch:*)", - "Bash(git restore:*)", - "Bash(git stash:*)", - "Bash(git rm:*)", - "Bash(git mv:*)", - "Bash(git fetch:*)", - "Bash(git cherry-pick:*)", - "Bash(git apply:*)", - "Bash(gh:*)", - "Bash(bin/rails:*)", - "Bash(bin/brakeman:*)", - "Bash(bin/bundler-audit:*)", - "Bash(bundle:*)", - "Bash(rubocop:*)" - ] - } -} -``` - -**Per-project permissions (scoped to one repo):** If you prefer to allow these patterns for a single project rather than globally, add the same `permissions.allow` block to `.claude/settings.local.json` in your project root instead of `~/.claude/settings.json`. Claude Code checks project-local settings first. - -**Interactive guidance:** When an executor is blocked mid-phase, it will identify the exact pattern needed (e.g. `"Bash(bin/rails:*)"`) so you can add it and re-run `/gsd-execute-phase`. - -### Subagent Appears to Fail but Work Was Done - -A known workaround exists for a Claude Code classification bug. GSD's orchestrators (execute-phase, quick) spot-check actual output before reporting failure. If you see a failure message but commits were made, check `git log` -- the work may have succeeded. +**Per-project permissions:** add the same `permissions.allow` block to `.claude/settings.local.json` in your project root instead of `~/.claude/settings.json`. ### Parallel Execution Causes Build Lock Errors -If you see pre-commit hook failures, cargo lock contention, or 30+ minute execution times during parallel wave execution, this is caused by multiple agents triggering build tools simultaneously. GSD handles this automatically since v1.26 — parallel agents use `--no-verify` on commits and the orchestrator runs hooks once after each wave. If you're on an older version, add this to your project's `CLAUDE.md`: +GSD handles this automatically since v1.26. If you're on an older version, add to your project's `CLAUDE.md`: ```markdown ## Git Commit Rules for Agents @@ -1571,15 +816,10 @@ All subagent/executor commits MUST use `--no-verify`. To disable parallel execution entirely: `/gsd-settings` → set `parallelization.enabled` to `false`. -### Windows: Installation Crashes on Protected Directories - -If the installer crashes with `EPERM: operation not permitted, scandir` on Windows, this is caused by OS-protected directories (e.g., Chromium browser profiles). Fixed since v1.24 — update to the latest version. As a workaround, temporarily rename the problematic directory before running the installer. - --- ## Recovery Quick Reference - | Problem | Solution | | ------------------------------------ | ------------------------------------------------------------------------ | | Lost context / new session | `/gsd-resume-work` or `/gsd-progress` | @@ -1592,18 +832,15 @@ If the installer crashes with `EPERM: operation not permitted, scandir` on Windo | Plan doesn't match your vision | `/gsd-discuss-phase [N]` then re-plan | | Costs running high | `/gsd-config --profile budget` and `/gsd-settings` to toggle agents off | | Update broke local changes | `/gsd-update --reapply` | -| Want session summary for stakeholder | `/gsd-pause-work --report` | -| Don't know what step is next | `/gsd-progress --next` | +| Want session summary for stakeholder | `/gsd-pause-work --report` | +| Don't know what step is next | `/gsd-progress --next` | | Parallel execution build errors | Update GSD or set `parallelization.enabled: false` | - --- ## Project File Structure -For reference, here is what GSD creates in your project: - -``` +```text .planning/ PROJECT.md # Project vision and context (always loaded) REQUIREMENTS.md # Scoped v1/v2 requirements with IDs @@ -1639,3 +876,12 @@ For reference, here is what GSD creates in your project: XX-UI-REVIEW.md # Visual audit scores (from /gsd-ui-review) ui-reviews/ # Screenshots from /gsd-ui-review (gitignored) ``` + +--- + +## Related + +- [Docs index](README.md) +- [Commands](COMMANDS.md) +- [Configuration](CONFIGURATION.md) +- [The phase loop](explanation/the-phase-loop.md) diff --git a/docs/adr/22-plan-drift-guard.md b/docs/adr/22-plan-drift-guard.md index a1c0eeee9..10c139dad 100644 --- a/docs/adr/22-plan-drift-guard.md +++ b/docs/adr/22-plan-drift-guard.md @@ -74,7 +74,7 @@ Locked sub-decisions: - **Hard-block on any MISSING (as originally proposed).** Rejected for rung 0–1: false positives from dynamic/re-exported/generated symbols would block valid plans and get the default-on guard switched off. Retained only for rung >=3. ## References -- Issue: open-gsd/gsd-core#22 (migrated from gsd-build/get-shit-done#3813) +- Issue: open-gsd/gsd-core#22 (migrated from open-gsd/gsd-core#3813) - Relates to #3802 (GitNexus first-class code intelligence) — rung 4 backend - arXiv:2409.20550 — hallucination taxonomy + RAG mitigation (modest gains) - arXiv:2502.05111 — grammar-constrained decoding (soft vs hard constraints) diff --git a/docs/context-monitor.md b/docs/context-monitor.md index e398b7588..da530e1e3 100644 --- a/docs/context-monitor.md +++ b/docs/context-monitor.md @@ -60,54 +60,9 @@ GSD's `/gsd-pause-work` command saves execution state. The WARNING message sugge ## Setup -Both hooks are automatically registered during `npx @opengsd/gsd-core` installation: +Both hooks are registered automatically during `npx @opengsd/gsd-core` installation — no manual steps are needed under normal circumstances. For hook configuration details, threshold overrides, and manual registration examples, see [Configuration](CONFIGURATION.md). -- **Statusline** (writes bridge file): Registered as `statusLine` in settings.json -- **Context Monitor** (reads bridge file): Registered as `PostToolUse` hook in settings.json (`AfterTool` for Gemini) - -Manual registration should use the absolute Node executable path that ran the installer. On Windows PowerShell, prefix the command with `&` when that executable path is quoted. - -Manual registration in `~/.claude/settings.json` (Claude Code): - -```json -{ - "statusLine": { - "type": "command", - "command": "\"/usr/local/bin/node\" \"/Users/me/.claude/hooks/gsd-statusline.js\"" - }, - "hooks": { - "PostToolUse": [ - { - "hooks": [ - { - "type": "command", - "command": "\"/usr/local/bin/node\" \"/Users/me/.claude/hooks/gsd-context-monitor.js\"" - } - ] - } - ] - } -} -``` - -For Gemini CLI (`~/.gemini/settings.json`), use `AfterTool` instead of `PostToolUse`: - -```json -{ - "hooks": { - "AfterTool": [ - { - "hooks": [ - { - "type": "command", - "command": "& \"C:/Program Files/nodejs/node.exe\" \"C:/Users/me/.gemini/hooks/gsd-context-monitor.js\"" - } - ] - } - ] - } -} -``` +As a brief reference: the statusline hook registers as `statusLine` in `settings.json`; the context monitor (`gsd-context-monitor.js`) registers as a `PostToolUse` hook (or `AfterTool` for Gemini CLI). Both entries use the absolute Node executable path that ran the installer. On Windows PowerShell, prefix quoted executable paths with `&`. ## Safety @@ -115,3 +70,11 @@ For Gemini CLI (`~/.gemini/settings.json`), use `AfterTool` instead of `PostTool - It never blocks tool execution — a broken monitor should not break the agent's workflow - Stale metrics (older than 60s) are ignored - Missing bridge files are handled gracefully (subagents, fresh sessions) + +--- + +## Related + +- [Architecture](ARCHITECTURE.md) +- [Configuration](CONFIGURATION.md) +- [docs index](README.md) diff --git a/docs/explanation/context-engineering.md b/docs/explanation/context-engineering.md new file mode 100644 index 000000000..879327e3f --- /dev/null +++ b/docs/explanation/context-engineering.md @@ -0,0 +1,90 @@ +# Context engineering + +> Why GSD Core exists, and the problem it is designed to solve. + +--- + +## The problem: context rot + +Every AI coding session starts fresh. The model reads your question, reasons over it, and replies. But a session is rarely one exchange. You ask follow-up questions, paste error messages, iterate on code, redirect the model when it drifts. Each turn adds tokens to the context window — the finite buffer of text the model can "see" at once. + +As that window fills, something subtle happens. The model does not fail loudly. It keeps answering. But the quality of its answers quietly degrades. Early instructions get pushed towards the edge of what it can attend to. Nuance from the first few exchanges — the constraints you stated, the architecture you agreed on, the edge cases you flagged — competes for attention against everything that came later. Researchers call this **context rot**. + +Context rot manifests in several ways: + +- The model starts contradicting earlier decisions it acknowledged. +- Code style drifts away from the conventions established at session start. +- Plans begin to ignore requirements that were clearly stated but are now buried deep in the history. +- The model hallucinates file names or function signatures it had correct twenty messages ago. + +None of this is a model bug. It is a fundamental property of how transformer attention works over long sequences. The model is not forgetting — it never "remembered" in the human sense. It is weighting relevance across a finite window, and as that window fills with accumulated noise, signal-to-noise degrades. + +The naive response is to `/clear` and start over. But that loses continuity. You have to re-explain context, re-paste relevant files, re-state constraints. The session essentially resets to zero. + +--- + +## GSD Core's answer: fresh-context subagents + +GSD Core's central insight is that *most* of the work in a coding session does not need to happen in the main context at all. Research, planning, code writing, and verification are each discrete, bounded tasks. Each can be handed to a specialised subagent that starts with a clean, carefully scoped context window — and reports its result back to a thin orchestrator that stays lean. + +This is not a workaround for context rot. It is a structural solution. + +The orchestrator — your main session — never touches source files. It spawns agents, collects their results, updates shared state, and routes to the next step. Because it does very little itself, its context window grows slowly and predictably. The heavy work happens in agents that each start fresh, receive exactly the context they need for their task, and terminate when done. + +Consider what this means in practice. When you run `/gsd-plan-phase`, the orchestrator: + +1. Loads a compact JSON context payload (project summary, phase goal, relevant config). +2. Spawns a researcher agent with a 200k-token clean window. +3. Spawns a planner agent with the research output and phase requirements. +4. Spawns a plan-checker agent to verify the plan before execution. + +Each agent operates at full capacity, unencumbered by the accumulated history of your session. When the planner writes its `PLAN.md` files to `.planning/phases/`, that output becomes a durable artefact — not a fragile memory in a shared context window. + +--- + +## Spec-driven development and meta-prompting + +Context engineering alone is not enough. If an agent starts fresh but receives vague instructions, it will produce vague output. GSD Core pairs fresh-context subagents with two complementary disciplines: + +**Spec-driven development** means that every phase produces structured artefacts before execution begins. A `CONTEXT.md` captures implementation decisions from the Discuss step. A `RESEARCH.md` records what the researcher found. A `PLAN.md` breaks work into discrete, dependency-ordered tasks with explicit acceptance criteria. By the time an executor agent touches a file, it has a precise specification to work from — not a re-interpretation of a long conversation. + +**Meta-prompting** means the agent definitions themselves are carefully engineered prompts, not ad-hoc instructions. The files in `get-shit-done/workflows/` and `agents/` encode hard-won knowledge about how to scope tasks, what to verify, and when to escalate to a human checkpoint. The user does not need to re-explain this knowledge in every session; it is baked into the system's own prompts. + +The combination is deliberate. Fresh context ensures each agent reasons clearly. Spec-driven artefacts ensure each agent reasons about the *right* thing. Meta-prompting ensures each agent knows *how* to reason about it well. + +--- + +## The role of `.planning/` + +Context engineering requires that knowledge survive context resets. GSD Core uses the file system for this. Every meaningful output is written to `.planning/` as human-readable Markdown or JSON. This means: + +- Restarting your session (or the model crashing) does not lose work. +- Any subsequent agent can read prior artefacts directly, without depending on a shared conversation history. +- You can inspect, edit, or commit planning artefacts to git — they are plain text, not opaque state in a database. + +`STATE.md` is the spine of this system. It records the project's current position (which milestone, which phase, which plans are complete), active decisions and blockers, and progress metrics. When any workflow starts, it reads `STATE.md` to orient itself. When any workflow finishes a meaningful step, it writes back to `STATE.md`. Agents do not rely on memory; they rely on the file. + +--- + +## Trade-offs + +Honesty about trade-offs matters here. + +**Overhead.** The phase loop introduces real friction. Running `/gsd-discuss-phase`, `/gsd-plan-phase`, and `/gsd-execute-phase` as separate steps takes more elapsed time than typing "write this feature" into a plain session. For a small, well-understood change, that overhead is not justified. + +**Latency.** Spawning multiple subagents with fresh context is slower than a single in-context edit. Research, planning, and execution each incur round-trip costs. + +**Ceremony for simple tasks.** If you need to rename a variable, fix a typo, or add a missing import, the phase loop is overkill. GSD Core provides `/gsd-quick` and `/gsd-fast` for ad-hoc work that does not warrant a full phase. See [Handle quick and fast tasks](../how-to/handle-quick-and-fast-tasks.md). + +The phase loop pays for itself when the work is complex enough that context rot is a real risk — multi-file features, cross-cutting refactors, work that spans hours or sessions. For everything else, reach for the lighter primitive. + +A useful rule of thumb: if the task could be fully specified in a single, short prompt and completed in one agent turn without further clarification, skip the phase loop. If the task requires research, involves files you have not read recently, or depends on decisions that are not yet settled, the phase loop protects you. + +--- + +## Related + +- [The phase loop](the-phase-loop.md) — how the Discuss → Plan → Execute → Verify → Ship cycle puts context engineering into practice +- [Multi-agent orchestration](multi-agent-orchestration.md) — how subagents are spawned, scoped, and coordinated +- [Architecture](../ARCHITECTURE.md) — system architecture, agent model, and data flow +- [docs index](../README.md) diff --git a/docs/explanation/multi-agent-orchestration.md b/docs/explanation/multi-agent-orchestration.md new file mode 100644 index 000000000..a60b45d62 --- /dev/null +++ b/docs/explanation/multi-agent-orchestration.md @@ -0,0 +1,234 @@ +# Multi-agent orchestration in GSD Core + +> **Explanation** — This document describes *why* GSD Core is designed around +> multi-agent orchestration and *how the pieces fit together*. It is not a +> step-by-step guide. For configuration, see +> [Configure model profiles](../how-to/configure-model-profiles.md) and the +> [Configuration reference](../CONFIGURATION.md). For the full agent roster, +> see [Inventory](../INVENTORY.md). + +--- + +## The problem this design solves + +AI coding agents degrade. Not because the model gets worse, but because the +*context window fills up*. As a conversation grows, earlier decisions and code +get pushed out or diluted by the noise of intermediate steps. By the time an +agent writes the fifth file in a complex task, it may have already forgotten +the constraint stated in the first message. This is sometimes called *context +rot*. + +GSD Core's multi-agent design is a direct response to that problem. Instead of +one long-running agent carrying the whole session, a thin orchestrator spawns +short-lived specialised agents, each with a **fresh 200 K-token context window** +and *only the artifacts it needs* to do its specific job. The orchestrator +never does heavy lifting itself; it loads context, spawns the right agent, +collects the result, and updates shared state in `.planning/`. + +--- + +## The orchestrator → agent pattern + +Every workflow in `get-shit-done/workflows/` follows the same shape: + +```text +Orchestrator (workflow .md file) + │ + ├── Load context + │ gsd-tools.cjs init + │ → JSON: project info, config, state, phase details + │ + ├── Resolve model + │ gsd-tools.cjs resolve-model + │ → opus | sonnet | haiku | inherit + │ + ├── Spawn specialised agent (Task/SubAgent call) + │ ├── Agent definition (agents/*.md) + │ ├── Context payload (init JSON) + │ ├── Model assignment + │ └── Tool permissions + │ + ├── Collect result + │ + └── Update state + gsd-tools.cjs state update / state patch / state advance-plan +``` + +The orchestrator is deliberately thin. It does not reason about the domain, +does not write code, and does not interpret results beyond routing them to the +next step. That boundary keeps each layer's responsibility clear and prevents +the orchestrator's context from accumulating domain noise. + +### The agent roster + +GSD Core's agents fall into functional categories that map onto the +research → plan → execute → verify pipeline: + +| Category | Agents | Typical parallelism | +|---|---|---| +| Researchers | `gsd-project-researcher`, `gsd-phase-researcher`, `gsd-ui-researcher`, `gsd-advisor-researcher` | 4 parallel (stack, features, architecture, pitfalls) | +| Synthesisers | `gsd-research-synthesizer` | Sequential, after researchers complete | +| Planners | `gsd-planner`, `gsd-roadmapper` | Sequential | +| Checkers | `gsd-plan-checker`, `gsd-integration-checker`, `gsd-ui-checker`, `gsd-nyquist-auditor` | Sequential, up to 3 revision iterations | +| Executors | `gsd-executor` | Parallel within a wave, sequential across waves | +| Verifiers | `gsd-verifier` | Sequential, after all executors complete | +| Mappers | `gsd-codebase-mapper` | 4 parallel sub-probes | +| Auditors | `gsd-ui-auditor`, `gsd-security-auditor` | Sequential | + +Each agent definition (in `agents/*.md`) declares its allowed tool access, +purpose, and colour for terminal output. An agent that only needs to read files +and write a single output document gets exactly those permissions — no Bash +execution, no access to broader state. That constraint is intentional: it +keeps the blast radius small if an agent behaves unexpectedly. + +For the complete 31-agent roster, see [Inventory](../INVENTORY.md#agents-31-shipped). + +--- + +## Wave-based parallel execution + +The most visible expression of multi-agent design is how `/gsd-execute-phase` +handles a set of plans that may depend on one another. + +Before spawning any executor, the orchestrator performs a **wave analysis**: +it reads the dependency declarations in each `PLAN.md` file and groups plans +into waves. Plans with no declared dependencies form Wave 1 and run in +parallel. Plans that depend on Wave 1 form Wave 2, and so on. + +```text +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) +``` + +Each executor within a wave: + +- receives a fresh context window (200 K tokens, or up to 1 M on capable models) +- receives the specific `PLAN.md` it is responsible for +- receives project context (`PROJECT.md`, `STATE.md`) +- receives phase context (`CONTEXT.md`, `RESEARCH.md` if available) +- produces atomic git commits on completion +- writes a `SUMMARY.md` describing what was built + +After all executors in a wave finish, the orchestrator runs the pre-commit +hook once for the wave as a whole. Executors commit with `--no-verify` to +prevent build-lock contention (for example, Cargo lock fights in Rust +projects) when multiple agents commit in parallel. The hook therefore runs +once per wave rather than once per commit. + +### Parallel commit safety + +Two mechanisms prevent write conflicts when multiple executors run +simultaneously: + +1. **Atomic lock on `STATE.md`** — Every write to `STATE.md` uses a + lockfile (`STATE.md.lock`) with `O_EXCL` atomic creation. This prevents + the read-modify-write race where two agents each read the file, modify + different fields, and the later writer overwrites the earlier one's + changes. Stale locks (older than 10 seconds) are automatically cleared. + +2. **Per-wave hook run** — Rather than each executor running pre-commit hooks + independently (which can cause file-level contention on shared build + artefacts), the orchestrator runs `git hook run pre-commit` once after + every wave completes. + +--- + +## Adaptive context enrichment for large-window models + +Standard 200 K context windows are enough for an executor to implement a +single focused plan. When the configured `context_window` is 500 K tokens or +larger (for example, when using Opus 4.6 or Sonnet 4.6 in 1 M-class mode), +the orchestrator automatically enriches subagent prompts with additional +context that would not fit in a standard window: + +- **Executor agents** receive prior-wave `SUMMARY.md` files and the phase + `CONTEXT.md`/`RESEARCH.md`, giving them cross-plan awareness within the + phase +- **Verifier agents** receive all `PLAN.md`, `SUMMARY.md`, and `CONTEXT.md` + files plus `REQUIREMENTS.md`, enabling history-aware verification + +This enrichment is conditional on the `context_window` value in +`config.json`. On standard-window configurations, prompts use truncated +versions with cache-friendly ordering to maximise token efficiency. + +--- + +## Why this design — the connection to context engineering + +The orchestrator → agent pattern only makes sense as part of a broader +approach to *context engineering*: the idea that what an AI agent gets in its +context window matters as much as the model tier or prompt quality. See +[Context engineering](context-engineering.md) for the full treatment. + +Multi-agent orchestration operationalises context engineering in two ways: + +**Context isolation.** Each agent receives only what it needs. A researcher +gets the project description and domain questions; it does not get the full +planning history. A verifier gets every plan and summary; it does not get the +raw research. Isolation keeps each agent's context dense with signal rather +than diluted by noise from other pipeline stages. + +**Context hygiene across sessions.** Because all state lives in +`.planning/` as human-readable Markdown and JSON (not in any agent's context +window), GSD workflows survive context resets (`/clear`), tab switches, and +multi-day breaks. The next agent always starts from persisted, verified +artifacts rather than from a reconstructed memory of a long conversation. + +--- + +## Trade-offs + +Multi-agent orchestration is not free. + +**Coordination overhead.** Each agent spawn is a round-trip: the orchestrator +must format a prompt, hand off context, wait for the subagent to complete +(typically 1–5 minutes), and then parse the result. A single capable agent +working in one context would finish faster for simple tasks. GSD mitigates +this by making parallelism the default wherever dependencies permit — the +four researchers in a `plan-phase` run simultaneously, not sequentially. + +**Opacity during execution.** While a subagent is running, its work is +invisible to the parent session. There is no live progress stream. This is a +deliberate consequence of the fresh-context design: the subagent is operating +in its own context window. The orchestrator shows a liveness note on the +spawn line ("runs in a subagent — no output until it returns") to set +expectations. + +**Context stitching cost.** Packaging the right artifacts for each agent +requires the orchestrator to spend tokens assembling and transmitting context +payloads. This is the cost of isolation. The `gsd-tools.cjs init` handler +produces a JSON payload that balances completeness with token budget, applying +cache-friendly ordering so that the stable parts of the payload (project +definition, config) hit the cache on repeat invocations. + +**Model cost amplification.** Running five agents in parallel at Opus tier +costs more than running one. The model profile system (`model_profiles.md`, +resolved per agent by `model-profiles.cjs`) lets you assign cheaper tiers to +less critical agents. The `dynamic_routing` feature further reduces cost by +starting every agent on a cheaper tier and escalating only on a soft failure. +See [Configuration](../CONFIGURATION.md) for the full options. + +In return for these costs, the design buys *consistent quality across large +phases*. An executor writing the tenth file in a 400-line plan does not +degrade because its context is fresh. A verifier checking twenty requirements +does not forget the first ten because it received all of them as structured +input rather than conversation history. + +--- + +## Related + +- [Context engineering](context-engineering.md) — the upstream principle that + motivates this design +- [Configure model profiles](../how-to/configure-model-profiles.md) — how to + assign model tiers per agent +- [Configuration reference](../CONFIGURATION.md) — full `config.json` schema + including `models`, `model_overrides`, `dynamic_routing`, and + `context_window` +- [Inventory](../INVENTORY.md) — authoritative agent roster and workflow list +- [Architecture](../ARCHITECTURE.md#agent-model) — implementation-level detail + on the orchestrator → agent pattern and wave execution model +- [Docs index](../README.md) diff --git a/docs/explanation/security-model.md b/docs/explanation/security-model.md new file mode 100644 index 000000000..b0d6046bd --- /dev/null +++ b/docs/explanation/security-model.md @@ -0,0 +1,252 @@ +# GSD Core security model + +> **Explanation** — This document describes *why* GSD Core has the security +> posture it does and *how the layers fit together*. It is not a reference for +> every hook parameter. For the `/gsd-secure-phase` command and its options, +> see [Commands](../COMMANDS.md). For the implementation-level hook +> architecture, see [Architecture § Hook System](../ARCHITECTURE.md#hook-system). +> For the org-wide security baseline (scanner controls, incident checklists, +> ownership model), see [SECURITY.md](../../SECURITY.md). + +--- + +## Why AI-driven development needs a dedicated security posture + +A conventional code editor does not execute arbitrary packages on your behalf. +GSD Core does. The research → plan → execute pipeline automates the full path +from "name a package" to "run `npm install `", from "write a +planning artifact" to "use that artifact as an LLM system prompt". Each +automation step removes a human from the loop — and each removal is a +potential attack surface. + +GSD Core's security model is built around one organising principle: +**defence in depth**. No single control is assumed to be perfect. Several +overlapping layers each reduce a distinct class of risk, and together they +make the attack surface substantially harder to exploit without eliminating +it entirely. The honest summary at the end of this document explains what the +system cannot protect against. + +--- + +## Layer 1 — Supply-chain protection: the Package Legitimacy Gate + +### The threat + +AI models hallucinate package names. This is not a fringe failure mode: 2025 +research documents roughly 20 % of AI-generated package references as +hallucinated names that do not correspond to legitimate packages. A subset of +those hallucinated names — approximately 43 % in the same research — recur +consistently across prompts, meaning an attacker can observe which names AI +tools commonly produce and pre-register those names on npm, PyPI, or +crates.io with malicious post-install scripts. The technique is called +*slopsquatting*. + +The insidious quality of slopsquatting is that a hallucinated name that passes +`npm view` *looks legitimate*. The registry entry proves only that someone +registered the name — not that the package does what the AI said it does, not +that it has any legitimate users, and not that its install scripts are safe. +Without a gate, a hallucinated name would flow undetected through GSD's +researcher → planner → executor pipeline and eventually run as +`npm install ` on your machine. + +### How the gate works + +The gate operates across three pipeline stages: + +**Research stage.** When `gsd-phase-researcher` recommends external packages, +it runs `slopcheck install --json` against each one. The results are +written to a `## Package Legitimacy Audit` table in `RESEARCH.md`. Packages +tagged `[SLOP]` (high-confidence hallucination or attacker-registered) are +**stripped from `RESEARCH.md` entirely** before the file is saved. They never +reach the planner. + +**Planning stage.** `gsd-planner` reads the Audit table. For any package +tagged `[SUS]` (suspicious: newly registered, low download count, no source +repository, or naming pattern close to a popular package) or `[ASSUMED]` +(sourced from WebSearch rather than direct registry verification), the planner +**inserts a `checkpoint:human-verify` task** before the install step. The +checkpoint includes a direct link to the registry page and specific things to +look for: maintainer history, issue-tracker activity, absence of suspicious +install scripts. + +**Execution stage.** If an install fails, `gsd-executor` **surfaces a +checkpoint and stops**. It does not silently try an alternative package name — +which could itself be malicious. This is an explicit rule in the executor's +behaviour (RULE 3 in the executor agent definition). + +### Why WebSearch packages are always `[ASSUMED]` + +Package names discovered through WebSearch are tagged `[ASSUMED]` regardless +of whether `npm view` succeeds. A package that exists on the registry is not +the same as a package that is safe to install. `npm view` proves registration, +not legitimacy. The `[ASSUMED]` tag triggers the same human-verify checkpoint +as `[SUS]`, ensuring that any unverified web-discovered recommendation always +gets a human review before installation. + +### Ecosystem coverage + +The researcher uses registry-specific verification commands rather than a +single generic check: + +- Node.js: `npm view` +- Python: `pip index versions` +- Rust: `cargo search` + +This covers cross-ecosystem hallucination, which occurs at roughly 9 % +according to 2025 USENIX research — cases where an AI recommends a package +that exists in one ecosystem but not the one actually in use. + +### Graceful degradation + +If `slopcheck` is unavailable (not installed, or the pip install fails at +research time), GSD applies the strictest possible fallback: **every +recommended package is tagged `[ASSUMED]`**, and the planner gates every +install with a `checkpoint:human-verify` task. Research and planning proceed +normally — the system never hard-fails on a missing tool dependency. This +is intentionally stricter than the normal flow: slopcheck unavailability means +every package install gets a human checkpoint. + +The `slopcheck` tool is MIT-licensed and pip-installable. If it is ever +abandoned, the `[ASSUMED]`-gate fallback ensures human-checkpoint coverage is +maintained regardless. + +--- + +## Layer 2 — Prompt injection defences + +### The threat + +GSD Core generates Markdown files that become LLM system prompts. The +research pipeline reads external web content; the planning pipeline +incorporates user-supplied text (`--text-file`, `--prd`); the execution +pipeline writes planning artifacts that are later re-read as agent context. +Any user-controlled text flowing into these artifacts is a potential +**indirect prompt injection** vector — an attacker-controlled string that, +once inside a system prompt, attempts to override the agent's instructions or +exfiltrate information. + +### How the defences work + +GSD Core addresses prompt injection at three levels. + +**Input validation (`security.cjs`).** The `get-shit-done/bin/lib/security.cjs` +module is the central security utility. It provides: + +- Path traversal prevention: user-supplied file paths (`--text-file`, `--prd`) + are validated to resolve within the project directory, with macOS + `/var` → `/private/var` symlink resolution handled explicitly +- Prompt injection detection: known injection patterns (role overrides, + instruction bypasses, system tag injections) are scanned in user-supplied + text before it enters any planning artifact +- Safe JSON parsing: a wrapper that prevents prototype-pollution attacks via + crafted JSON payloads +- Shell argument validation: arguments passed to subshell commands are + validated before use + +**Runtime hook: `gsd-prompt-guard.js`.** This hook fires on every Write or +Edit call that targets `.planning/` files. It scans the content being written +for the same injection patterns as `security.cjs` (a subset inlined directly +into the hook for independence — the hook does not `require()` the module, so +it runs even if the module path changes). Detection is **advisory-only**: the +hook logs the finding but does not block the write. The rationale is that a +false-positive block on a legitimate planning write would be more disruptive +than a missed injection in a secondary scan layer. + +**Runtime hook: `gsd-read-injection-scanner.js`.** This hook fires on the +output of every Read tool call. It scans the *content that was just read* for +injected instructions in untrusted content — catching cases where an attacker +has embedded instructions in a file that GSD is about to incorporate into an +agent's context. + +**CI scanner.** `prompt-injection-scan.test.cjs` scans all agent, workflow, +and command files for embedded injection vectors as part of the test suite. +This catches injection attempts in the GSD source itself — for example, a +supply-chain attack that modified a workflow file to add a role-override +instruction. + +### Read Injection Scanner vs Prompt Guard + +The two hooks cover complementary surfaces. `gsd-prompt-guard.js` watches +*writes to planning artifacts* — it catches injection being planted. +`gsd-read-injection-scanner.js` watches *reads of any file* — it catches +injection being ingested from external content (a dependency's README, a +third-party config file, a user-provided document). Together they bracket +the ingest → store → re-read lifecycle. + +--- + +## Layer 3 — Repository and dependency integrity + +Upstream of GSD's runtime behaviour, the `open-gsd` organisation enforces +controls at the repository and package level. These are documented in full in +[`docs/security/baseline.md`](../security/baseline.md) and are summarised +here for completeness. + +**Dependency integrity.** All third-party dependencies are pinned via +`package-lock.json` and verified against published checksums before install. +A `scripts/check-npm-integrity.cjs` gate detects invalid versions, missing +packages, and extraneous packages at CI time. This mitigates dependency +confusion and typosquatting attacks against GSD's own dependencies. + +**Secret scanning.** Every commit and PR is scanned for hardcoded secrets. +Intentional test fixtures must be annotated with the project-standard +exclusion grammar (see `SECURITY.md` for the annotation format). Un-annotated +suppressions fail CI. + +**Locale-safe text scanning.** Output and user-facing strings are scanned for +Unicode homoglyphs, bidirectional override characters, and invisible Unicode — +the class of attacks documented in CVE-2021-42574 ("Trojan Source") that can +hide malicious content in diffs. + +--- + +## Trade-offs and limits + +The security model described here meaningfully reduces the attack surface for +AI-driven development. It does not eliminate supply-chain risk. + +**What the Package Legitimacy Gate reduces:** The probability that a +hallucinated or attacker-registered package reaches `npm install` without +a human checkpoint. The `[SLOP]` gate removes high-confidence bad packages +entirely; the `[SUS]` / `[ASSUMED]` gates require human review before +execution. This substantially raises the cost of a successful slopsquatting +attack. + +**What the Package Legitimacy Gate does not eliminate:** A legitimate package +that is later compromised (account takeover, dependency confusion in its own +tree) is not caught by slopcheck, which checks registration signals at +research time. Lock files and `npm audit` at the dependency-integrity layer +are the controls for that class of attack. + +**What the prompt injection defences reduce:** The probability that +user-controlled text in planning artifacts successfully overrides agent +instructions. Pattern-matching on known injection forms catches the +common cases; novel jailbreaks or low-signal injections may pass undetected. +The advisory-only posture means detection is logged but not blocked — a +deliberate choice that preserves workflow continuity at the cost of +not hard-stopping on a detection. + +**What the prompt injection defences do not eliminate:** A sufficiently +creative injection that does not match known patterns, or an injection that +arrives through a channel the hooks do not cover (for example, content injected +into a dependency's published README that is read by a subagent browsing +documentation). Defence in depth means each layer makes the attack harder, +not that any single layer makes it impossible. + +**Reporting vulnerabilities.** Report via private GitHub security advisory at +`https://github.com/open-gsd/gsd-core/security/advisories/new`. Do not open +public issues. See [SECURITY.md](../../SECURITY.md) for the response timeline +and disclosure policy. + +--- + +## Related + +- [Commands](../COMMANDS.md) — includes `/gsd-secure-phase` and + `/gsd-code-review` with security-relevant flags +- [Architecture § Hook System](../ARCHITECTURE.md#hook-system) — + implementation detail on every hook, its event trigger, and safety properties +- [SECURITY.md](../../SECURITY.md) — vulnerability reporting, org-wide + security baseline, secret-scan exclusion governance, and dependency + integrity verification +- [Docs index](../README.md) diff --git a/docs/explanation/the-phase-loop.md b/docs/explanation/the-phase-loop.md new file mode 100644 index 000000000..9e2ff1bc4 --- /dev/null +++ b/docs/explanation/the-phase-loop.md @@ -0,0 +1,129 @@ +# The phase loop + +> The central mental model for how GSD Core organises work. + +--- + +## What the loop is + +GSD Core structures all development work as a repeating cycle: + +```text +Discuss → (UI design) → Plan → Execute → Verify → Ship +``` + +Every unit of work — called a **phase** — moves through these steps in order. The loop is not a formality. Each step exists because it guards against a specific class of failure that the previous step alone cannot prevent. + +This document explains *why* the loop is shaped the way it is. For instructions on running each step, see the how-to guides linked at the bottom. + +--- + +## Why each step exists + +### Discuss + +Planning cannot begin until you know *how* to build the thing, not just *what* to build. The phase goal in `ROADMAP.md` describes the outcome. The Discuss step captures the implementation decisions that shape the path to that outcome: which libraries, which error-handling strategy, whether a feature is per-route or global, how edge cases should behave. + +Without a Discuss step, the planner must make these calls itself. Sometimes it guesses right. Often it guesses plausibly but wrongly — producing a plan that is coherent but misaligned with your actual preferences. By the time execution is done and you realise the error, you are unwinding significant work. + +The Discuss step is deliberately lightweight. It is a conversation, not a specification exercise. The output is a `CONTEXT.md` in the phase directory: a structured record of decisions that the planner, executor, and verifier can all read. The conversation takes a few minutes; it can save hours of rework. + +### UI design (optional) + +For phases with a visual component, there is an optional `/gsd-ui-phase` step between Discuss and Plan. It produces a `UI-SPEC.md` — a design contract that describes layout, interaction, and visual behaviour before any code is written. This step is worth running when the UI is complex enough that ambiguity in the design would produce divergent implementation choices. A clear design contract is far cheaper to write than to re-implement. + +### Plan + +The Plan step does the research, decomposition, and structural thinking that execution requires. It runs as a sequence of fresh-context subagents: a researcher that investigates the ecosystem and records findings in `RESEARCH.md`, a planner that reads both the research and the `CONTEXT.md` to produce `PLAN.md` files, and a plan-checker that verifies the plans are complete, consistent, and within scope. + +What does a plan contain? Each `PLAN.md` describes a bounded unit of work: the files to touch, the specific changes to make, the acceptance criteria that define done. Plans are ordered into dependency waves so that parallel execution is safe — executors in the same wave touch non-overlapping concerns. + +The Plan step is the moment when ambiguity is most expensive. An ambiguous plan produces an executor that makes assumptions. Multiple parallel executors making different assumptions about the same concern produce conflicts. The plan-checker's job is to catch these before execution begins, not after. + +### Execute + +Execution runs the plans. Each executor gets a fresh 200k-token context window loaded with exactly what it needs: the project summary, the phase context, the research, and the specific `PLAN.md` for its task. Nothing more. + +Executors write code and commit atomically. Each commit corresponds to a completed task in a plan. When a wave of parallel executors finishes, the orchestrator merges their state and starts the next wave. + +The executor's fresh context is not a convenience — it is the mechanism by which context rot is prevented. An executor that runs with 180k tokens of accumulated session history is a degraded executor. An executor that starts clean and reads only what its plan requires is an executor operating at full capacity. + +### Verify + +After all executors have completed, a verifier agent reads the phase goal, the `CONTEXT.md` decisions, the plans, and the execution summaries — and checks that what was built matches what was intended. It produces a `VERIFICATION.md` and, if there are discrepancies, generates targeted fix plans. + +Verification is not just testing. It checks requirement coverage (were all the REQ-IDs addressed?), decision coverage (were the decisions captured in `CONTEXT.md` actually implemented?), and overall phase goal alignment. A phase is not done because execution finished without errors. It is done because what was built is what was planned, and what was planned is what was decided. + +### Ship + +The Ship step creates the pull request and archives the phase artefacts. `STATE.md` is updated to mark the phase complete. The loop then begins again for the next phase. + +--- + +## Milestones and phases + +A **milestone** is a version cycle — a meaningful, releasable increment of the project. It has a name, a version number, and a set of requirements that define what it must deliver. A milestone is complete when all its phases are shipped and its requirements are covered. + +A **phase** is one unit of work within a milestone. A phase has a goal, a set of requirements it addresses, and a set of plans that implement it. + +The relationship matters because milestones and phases have different scopes of concern. A milestone asks: "What does this version of the product do, and what does it not do?" A phase asks: "What is the next bounded thing we can research, plan, execute, and verify?" + +Milestone boundaries are drawn at natural product boundaries — a deployable API, a working UI flow, a complete data model. Phase boundaries are drawn at the limits of what can be safely executed in one loop without the loop becoming unwieldy. + +--- + +## What makes a good phase scope + +This is worth dwelling on because it is the most common source of friction with the loop. + +A phase that is too large becomes a research project unto itself. The planner struggles to decompose it into independent plans. Executors in later waves are blocked waiting for earlier waves. Verification becomes a full audit rather than a targeted review. The feedback cycle stretches from hours to days, and the risk of discovering a fundamental design mistake late — after much code has been written — rises sharply. + +A phase that is too small fragments work that naturally belongs together. You end up with plan files that are half a dozen lines, phases that complete in minutes, and a planning overhead that dwarfs the execution cost. The loop feels bureaucratic rather than helpful. + +A good phase scope is one where: + +- The goal can be stated in a single sentence that is neither obviously trivial nor suspiciously broad. +- The research needed to plan it is bounded — the ecosystem questions have answers that do not depend on other phases completing first. +- The execution can be parallelised into a handful of non-overlapping plans, not dozens. +- There is a clear, testable definition of done that a verifier can check without reading the entire codebase. + +Concretely: "Add HMAC-SHA256 signature validation middleware" is a good phase scope. "Build the authentication system" usually is not — it almost always contains multiple independent concerns that would be better as separate phases. "Fix the typo in the README" is below the threshold where the loop adds value; use `/gsd-quick` instead. + +When in doubt, split. A smaller phase completes faster, verifies more confidently, and makes it easier to course-correct if a design decision turns out to be wrong. + +--- + +## How `.planning/` carries state across the loop + +The loop is not a single session. Research, planning, and execution may happen across multiple sessions, with context resets in between. The `.planning/` directory is what makes this possible. + +Every step of the loop reads artefacts produced by earlier steps and writes artefacts for later steps. The CONTEXT.md that the Discuss step produces is still available when the Planner runs — even if that is in a different session hours later. The PLAN.md files that the Planner produces are still available when the Executor runs — even across a restart. The VERIFICATION.md that the Verifier writes is still available when you review the phase. + +`STATE.md` is the navigation layer above all of this. It records exactly where in the loop the project currently sits: which milestone is active, which phase is in progress, which plans are complete and which are pending. Any agent or workflow that needs to orient itself reads `STATE.md` first. + +For the precise structure of these files, see [Planning artifacts](../reference/planning-artifacts.md) and the [STATE.md schema](../reference/state-md.md). + +--- + +## The loop is a rhythm, not a constraint + +It is tempting to see the loop as bureaucracy — a set of required steps that you have to perform before you are allowed to write code. That framing is wrong. + +The loop exists because each step prevents failures that are genuinely expensive to fix later. Discuss prevents planning on wrong assumptions. Plan prevents executing a design that is fundamentally broken. Verify prevents shipping work that missed the brief. These are not invented problems. They are the actual failure modes of AI-assisted development at the scale of real features. + +When the loop works well, it feels like a rhythm: a cadence of focused, bounded work where each step is clear because the previous step did its job. The overhead is real, but it is front-loaded — paid in minutes of planning rather than hours of rework. + +For work that falls below the threshold where the loop is warranted, GSD Core provides lighter primitives. The phase loop is one tool, not the only tool. + +--- + +## Related + +- [Context engineering](context-engineering.md) — why fresh-context subagents prevent the quality degradation that makes the loop necessary +- [Discuss a phase](../how-to/discuss-a-phase.md) +- [Plan a phase](../how-to/plan-a-phase.md) +- [Execute a phase](../how-to/execute-a-phase.md) +- [Verify and ship](../how-to/verify-and-ship.md) +- [Planning artifacts](../reference/planning-artifacts.md) +- [STATE.md schema](../reference/state-md.md) +- [docs index](../README.md) diff --git a/docs/how-to/configure-model-profiles.md b/docs/how-to/configure-model-profiles.md new file mode 100644 index 000000000..94fbbd47b --- /dev/null +++ b/docs/how-to/configure-model-profiles.md @@ -0,0 +1,218 @@ +# How to configure model profiles + +Choose the right model tier strategy for your project, then tune individual agents or entire phase types without writing a large override block. This guide starts with the simplest lever and works up to dynamic routing. + +--- + +## The four profiles (plus `adaptive` and `inherit`) + +Set `model_profile` in `.planning/config.json` or via `/gsd-config --profile `: + +| Profile | Planner | Executor | Researchers | Verifier | Use when | +|---------|---------|----------|-------------|----------|----------| +| `quality` | Opus | Opus | Opus | Sonnet | Production-quality work where cost is secondary | +| `balanced` | Opus | Sonnet | Sonnet | Sonnet | Normal development — the default | +| `budget` | Sonnet | Sonnet | Haiku | Haiku | Rapid prototyping, cost-sensitive contexts | +| `adaptive` | Opus | Sonnet | Sonnet | Sonnet | Resolves the same way as the other tiers under runtime-aware profiles; use when switching between runtimes frequently | +| `inherit` | (session model) | (session model) | (session model) | (session model) | Non-Anthropic providers (OpenRouter, local models) — all agents follow your current session model | + +The table above shows a representative subset. All 33 shipped agents have explicit per-profile tier assignments in `sdk/shared/model-catalog.json`. For the full table see [Model Profiles](../CONFIGURATION.md#model-profiles) in the configuration reference. + +**Quick switch via command:** + +```bash +/gsd-config --profile balanced # Normal development +/gsd-config --profile budget # Prototyping or high-cost phases +/gsd-config --profile quality # Production release +/gsd-config --profile inherit # OpenRouter, local models +``` + +**Or edit `.planning/config.json` directly:** + +```json +{ + "model_profile": "balanced" +} +``` + +--- + +## Per-agent overrides (`model_overrides`) + +If a single agent needs a different tier without changing the whole profile, use `model_overrides`: + +```json +{ + "model_profile": "balanced", + "model_overrides": { + "gsd-executor": "opus", + "gsd-codebase-mapper": "haiku" + } +} +``` + +Valid values: `opus`, `sonnet`, `haiku`, `inherit`, or any fully-qualified model ID (e.g. `"openai/o3"`, `"google/gemini-2.5-pro"`). + +`model_overrides` can be set per-project in `.planning/config.json` or globally in `~/.gsd/defaults.json`. Per-project entries win on conflict; non-conflicting global entries are preserved. + +**Important for Codex and OpenCode:** Those runtimes embed the resolved model into each agent's static config at install time. After editing `model_overrides`, re-run the installer for the change to take effect: + +```bash +npx @opengsd/gsd-core@latest --codex --global # or --opencode, --kilo, etc. +``` + +--- + +## Per-phase-type models (`models`) + +If you want to say "Opus for planning, Sonnet for everything else" without learning all 33 agent names, use the `models` block. It maps six phase types to tier aliases: + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + } +} +``` + +Phase types and their agents: + +| Phase type | Agents covered | +|---|---| +| `planning` | `gsd-planner`, `gsd-roadmapper`, `gsd-pattern-mapper` | +| `research` | `gsd-phase-researcher`, `gsd-project-researcher`, `gsd-research-synthesizer`, `gsd-codebase-mapper`, `gsd-ui-researcher` | +| `execution` | `gsd-executor`, `gsd-debugger`, `gsd-doc-writer` | +| `verification` | `gsd-verifier`, `gsd-plan-checker`, `gsd-integration-checker`, `gsd-nyquist-auditor`, `gsd-ui-checker`, `gsd-ui-auditor`, `gsd-doc-verifier` | +| `discuss`, `completion` | Reserved — no subagent today; accepted by schema for forward compatibility | + +The `models` block accepts tier aliases only (`opus`, `sonnet`, `haiku`, `inherit`). For a fully-qualified model ID, use `model_overrides` per agent instead. + +**Combining `models` with a per-agent exception:** + +```json +{ + "model_profile": "balanced", + "models": { + "research": "sonnet" + }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +All five research agents resolve to `sonnet` *except* `gsd-codebase-mapper`, which is pinned to `haiku`. + +--- + +## Dynamic routing — start cheap, escalate on failure + +If you want to pay for cheaper tiers by default and only escalate when an agent fails a quality gate, enable `dynamic_routing`: + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +Each agent has a default tier (`light`, `standard`, or `heavy`). On the first attempt, GSD picks `tier_models[default_tier]`. If the orchestrator detects a soft failure (verification inconclusive, plan-check flagged, etc.), it re-spawns the agent one tier up. `max_escalations` caps the total retries. + +Agents that already sit at `heavy` cannot escalate further. + +**Turning off escalation while keeping dynamic resolution:** + +```json +{ + "dynamic_routing": { + "enabled": true, + "escalate_on_failure": false + } +} +``` + +Every attempt uses `tier_models[default_tier]` regardless of outcome — useful when you want explicit tier-to-model mapping without the escalation behaviour. + +`dynamic_routing` is **disabled by default**. Omitting the block or setting `enabled: false` preserves static resolution. + +--- + +## Using GSD on non-Anthropic runtimes + +If you installed GSD for Codex, OpenCode, Gemini CLI, or Kilo, the installer already set `resolve_model_ids: "omit"` in your config. This tells GSD to skip Anthropic model ID resolution and let the runtime choose its own default model. No manual setup is needed for the basic case. + +**If you want tiered models on Codex:** + +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` + +GSD resolves each tier alias to the Codex-native model and reasoning effort defined in the runtime tier map. + +**If you want per-agent model IDs on any non-Claude runtime:** + +```json +{ + "resolve_model_ids": "omit", + "model_overrides": { + "gsd-planner": "o3", + "gsd-executor": "o4-mini", + "gsd-debugger": "o3" + } +} +``` + +For the full runtime-aware profiles reference and the `model_policy` surface (provider-neutral presets added in v1.42), see [Configuration reference — Model Profiles](../CONFIGURATION.md#model-profiles). + +--- + +## Resolution precedence (highest to lowest) + +When multiple layers apply, the resolver picks the highest-priority entry: + +```text +1. model_overrides[] — per-agent; full IDs; targeted exception +2. dynamic_routing.tier_models[] — when enabled; escalates on soft failure +3. models[] — coarse phase-level tier +4. model_profile (per-agent column) — global tier strategy +5. Runtime default — when nothing else applies +``` + +--- + +## Choosing the right lever + +| You want | Use | +|---|---| +| One tier strategy for all agents | `model_profile` | +| Coarse phase-level tuning ("Opus for planning") | `models.` | +| Per-agent precision ("force Haiku on the codebase mapper") | `model_overrides[]` | +| A fully-qualified model ID for a specific agent | `model_overrides[]: "openai/gpt-5"` | +| Start cheap, escalate only on failure | `dynamic_routing` | +| All agents follow the session model (non-Anthropic provider) | `model_profile: "inherit"` | + +--- + +## Related + +- [Configuration reference](../CONFIGURATION.md) +- [Multi-agent orchestration](../explanation/multi-agent-orchestration.md) +- [Commands reference](../COMMANDS.md) +- [Docs index](../README.md) diff --git a/docs/how-to/debug-a-failed-execution.md b/docs/how-to/debug-a-failed-execution.md new file mode 100644 index 000000000..d72e4c784 --- /dev/null +++ b/docs/how-to/debug-a-failed-execution.md @@ -0,0 +1,178 @@ +# How to debug a failed execution + +**Goal:** Recover when a phase execution fails, stalls, or produces incomplete work — and resume cleanly without losing progress or repeating work that already succeeded. + +**Prerequisites:** You have run `/gsd-execute-phase N` and the execution stopped before writing `VERIFICATION.md`, or you see unexpected output, missing files, or a stalled spinner. + +--- + +## Detect whether the execution stalled or failed + +Before taking any recovery action, determine what actually happened. + +### If you see "Spawning…" with no output after 1–5 minutes + +This is normal, not a freeze. GSD subagents run in an isolated context window. The liveness note on the spawn line confirms this. Do not interrupt the session. + +If it has been more than 10 minutes with no result, check the Claude Code sidebar. If the agent task shows as completed but no output appeared, the result may have been lost in a context switch — re-run the same command: + +```bash +/gsd-execute-phase 1 +``` + +GSD checks for `SUMMARY.md` files before dispatching executors. Plans that already have one are skipped automatically. + +### If execution stopped mid-wave with an error message + +Check git history to see which plans committed successfully: + +```bash +git log --oneline -20 +``` + +Plans that committed their work will have an entry such as `feat(01-02): …`. Plans without a commit are incomplete and will be re-executed when you re-run. + +### If the executor committed code but did not write SUMMARY.md + +GSD detects this at the next run and surfaces a safe-resume gate with three options: + +- **Close out manually** — inspect the commits yourself, write `SUMMARY.md`, then re-run. +- **Re-execute from scratch** — revert or supersede the partial commits before dispatching a new executor. +- **Mark-and-skip** — record the anomaly and continue, only with your explicit confirmation. + +--- + +## Diagnose the root cause + +### Run `/gsd-debug --diagnose` + +If execution produced wrong output, stubbed code, or a verification failure, use the diagnosis-only mode to investigate without applying any fixes: + +```bash +/gsd-debug --diagnose "Phase 2 executor produced stubs instead of real code" +``` + +`--diagnose` stops at root cause without touching your files. It creates a session file at `.planning/debug/.md` so you can pick up the investigation later if needed. + +To start a full debug session that also applies a fix: + +```bash +/gsd-debug "Login middleware not handling 401 correctly after phase 3" +``` + +GSD gathers symptoms, runs a structured investigation using the scientific method, and proposes a fix. If `tdd_mode: true` is set in your config, it requires a failing test before applying any fix. + +### Check active debug sessions + +```bash +/gsd-debug list +``` + +Shows all open sessions with their current hypothesis and next action. To resume a specific session: + +```bash +/gsd-debug continue +``` + +--- + +## Run a post-mortem with `/gsd-forensics` + +If the cause is not clear from the error output — for example, plans reference nonexistent files, execution produced unexpected results, or state seems corrupted — run a forensic investigation: + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +GSD analyses git history, `.planning/` artifact completeness, STATE.md consistency, uncommitted work, and orphaned worktrees. It writes a structured report to `.planning/forensics/report-.md` and surfaces recommended remediation steps. + +`/gsd-forensics` is read-only — it never modifies your project files. + +**What it detects:** + +- **Stuck loop** — the same file appears in three or more consecutive commits within a short time window (HIGH confidence if commit messages are similar) +- **Missing artefacts** — a phase has commits but no `SUMMARY.md` or `VERIFICATION.md` +- **Abandoned work** — uncommitted changes with STATE.md showing mid-execution and the last commit more than two hours old +- **Crash or interruption** — uncommitted changes combined with an active execution state and orphaned worktrees +- **Scope drift** — recent commits touch files outside the current phase's expected file set + +--- + +## Resume execution after recovery + +Once the underlying issue is resolved, re-run the execute command: + +```bash +/gsd-execute-phase 1 +``` + +GSD skips plans whose `SUMMARY.md` already exists and dispatches executors only for the remaining plans. + +If you need to re-execute only a specific wave: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +If you want to validate `.planning/` integrity before dispatching: + +```bash +/gsd-execute-phase 1 --validate +``` + +--- + +## Roll back with `/gsd-undo` + +If execution produced code you want to discard entirely, roll back using the plan manifest rather than manual `git revert`: + +### Roll back a single plan + +```bash +/gsd-undo --plan 03-02 +``` + +Reverts all commits for plan `02` of phase `3`. GSD shows a confirmation gate before writing any change. + +### Roll back an entire phase + +```bash +/gsd-undo --phase 03 +``` + +Reverts all commits for phase `3`. GSD checks whether any subsequent phases depend on this phase and warns you before proceeding. + +### Pick interactively from recent commits + +```bash +/gsd-undo --last 5 +``` + +Shows the five most recent GSD commits and lets you select which to revert. + +--- + +## Restore session context after a break + +If you have returned to the project after a context reset or a new session: + +```bash +/gsd-resume-work +``` + +Restores your full session context from the last handoff, including the current phase, blockers, and where execution stopped. + +Alternatively, to see your current position and auto-advance to the correct next step: + +```bash +/gsd-progress --next +``` + +--- + +## Related + +- [Execute a phase](execute-a-phase.md) +- [Recover and troubleshoot](recover-and-troubleshoot.md) +- [Commands](../COMMANDS.md) +- [docs index](../README.md) diff --git a/docs/how-to/design-a-ui-phase.md b/docs/how-to/design-a-ui-phase.md new file mode 100644 index 000000000..e2b96cb58 --- /dev/null +++ b/docs/how-to/design-a-ui-phase.md @@ -0,0 +1,149 @@ +# How to design a UI phase + +**Goal:** Produce a locked UI design contract (`UI-SPEC.md`) that fixes spacing, colour, typography, and copywriting decisions before the planner writes tasks, preventing visual inconsistency caused by ad-hoc styling choices during execution. + +**Prerequisites:** `.planning/ROADMAP.md` exists. The phase must have frontend or UI work. Running `/gsd-discuss-phase N` first is strongly recommended — the UI researcher reads `CONTEXT.md` to avoid re-asking decisions you have already made. + +--- + +## Decide whether this phase needs a UI contract + +Not all phases need `/gsd-ui-phase`. Use it when: + +- The phase introduces new UI surfaces (pages, flows, layouts) +- Multiple components will be built and visual consistency matters +- You are starting a new project's frontend and need a design system baseline +- You are adding significant UI work to an existing project and want to lock tokens, spacing, and colour before execution + +Skip it when: + +- The phase is purely backend, infrastructure, or data work with no user-facing output +- A UI-SPEC.md already exists for an earlier phase and this phase builds on identical visual patterns without introducing new surfaces + +If you are unsure, the safety gate will prompt you: when `workflow.ui_safety_gate` is enabled (default), `/gsd-plan-phase` warns when it detects frontend work but no UI-SPEC.md and asks whether to run `/gsd-ui-phase` first. + +--- + +## Run the UI design contract + +```bash +/gsd-ui-phase 2 +``` + +If no phase number is given, GSD Core targets the current phase. + +The command runs in two stages: + +1. **`gsd-ui-researcher`** — reads `CONTEXT.md`, `RESEARCH.md`, and `REQUIREMENTS.md` for existing decisions, detects the design system state (shadcn `components.json`, Tailwind config, existing tokens), and asks only the unanswered design questions across five areas: spacing, colour, typography, copywriting, and registry safety. +2. **`gsd-ui-checker`** — validates the resulting `UI-SPEC.md` across six dimensions. If issues are found, a revision loop reruns the researcher (up to two iterations) targeting only the flagged items. + +**Output:** `{padded_phase}-UI-SPEC.md` in `.planning/phases/{phase-dir}/`. + +--- + +## What the UI-SPEC covers + +The researcher locks decisions across five areas: + +| Area | Examples | +|---|---| +| **Spacing** | Base scale (4px or 8px), grid alignment, component padding | +| **Colour** | Primary, accent, neutral palette; 60/30/10 rule; dark-mode considerations | +| **Typography** | Font families, size/weight scale constraints, heading hierarchy | +| **Copywriting** | CTA labels, empty state messages, error state copy, loading indicators | +| **Registry safety** | shadcn component inspection protocol (see below) | + +The checker validates the spec against six pillars, scored 1–4 each: Copywriting, Visuals, Colour, Typography, Spacing, and Experience Design (loading / error / empty state coverage). + +--- + +## shadcn initialisation + +For React, Next.js, and Vite projects, the researcher offers to initialise shadcn if no `components.json` is found. The flow: + +1. Visit `ui.shadcn.com/create` and configure your preset (colours, border radius, fonts) +2. Copy the preset string +3. Run: + +```bash +npx shadcn init --preset +``` + +The preset string becomes a first-class GSD Core planning artefact that is reproducible across phases and milestones. + +--- + +## Registry safety gate + +Third-party shadcn registries can inject arbitrary code. When `workflow.ui_safety_gate` is enabled (default), the spec requires these steps before installing any non-official component: + +```bash +npx shadcn view # inspect source before installing +npx shadcn diff # compare against the official registry +``` + +The checker will flag the spec as BLOCKED if registry safety is not addressed. Disable the gate via `/gsd-settings` if your project does not use shadcn or you have an alternative vetting process. + +--- + +## Use sketch findings as a head start + +If you have already run `/gsd-sketch --wrap-up`, the UI researcher loads `.claude/skills/sketch-findings-[project]/` automatically. Pre-validated decisions (layout, palette, typography, spacing) are treated as locked — the researcher does not re-ask them. You see a note at the start of the run: + +```text +⚡ Sketch findings detected: .claude/skills/sketch-findings-[project]/SKILL.md + Pre-validated decisions (layout, palette, typography, spacing) should be treated + as locked — not re-asked. +``` + +This is the main reason to run `/gsd-sketch --wrap-up` before `/gsd-ui-phase`: it turns the conversational design exploration into binding contract input. + +--- + +## Retroactive visual audit with `/gsd-ui-review` + +`/gsd-ui-review` runs after execution, not before. Use it to audit the implemented frontend against the UI-SPEC (or against abstract 6-pillar standards when no spec exists). + +```bash +/gsd-ui-review # audit the current phase +/gsd-ui-review 3 # audit phase 3 specifically +``` + +It works on any project with frontend code — GSD project initialisation is not required. + +**What it checks (6 pillars, scored 1–4 each):** + +1. Copywriting — CTA labels, empty states, error states +2. Visuals — focal points, visual hierarchy, icon accessibility +3. Colour — accent usage discipline, 60/30/10 compliance +4. Typography — font size and weight constraint adherence +5. Spacing — grid alignment, token consistency +6. Experience Design — loading, error, and empty state coverage + +**Output:** `{padded_phase}-UI-REVIEW.md` with scores and top three priority fixes. When a browser MCP server such as `gsd-browser` is configured, the audit also captures screenshots with visual evidence. + +**Screenshot storage:** Screenshots are saved to `.planning/ui-reviews/`. A `.gitignore` is created automatically to prevent binary files from reaching git. Screenshots are cleaned up during `/gsd-complete-milestone`. + +--- + +## Recommended position in the phase lifecycle + +```text +/gsd-discuss-phase N ← lock implementation preferences +/gsd-ui-phase N ← lock design contract (frontend phases) +/gsd-plan-phase N ← research + plan (reads UI-SPEC.md as context) +/gsd-execute-phase N ← parallel execution +/gsd-verify-work N ← manual UAT +/gsd-ui-review N ← retroactive visual audit (optional but recommended) +``` + +`/gsd-ui-phase` sits between discuss and plan because the planner reads `UI-SPEC.md` as design context — tasks in `PLAN.md` reference spacing tokens, colour variables, and copywriting decisions that the spec locked. + +--- + +## Related + +- [Spike and sketch](spike-and-sketch.md) +- [Plan a phase](plan-a-phase.md) +- [Commands](../COMMANDS.md) +- [Docs index](../README.md) diff --git a/docs/how-to/discuss-a-phase.md b/docs/how-to/discuss-a-phase.md new file mode 100644 index 000000000..398dee8d2 --- /dev/null +++ b/docs/how-to/discuss-a-phase.md @@ -0,0 +1,158 @@ +# How to discuss a phase + +**Goal:** Gather the implementation decisions a phase needs before planning begins — so the researcher and planner can act without asking you again. + +**Prerequisites:** `.planning/ROADMAP.md` exists. If not, run `/gsd-new-project` first. + +--- + +## Choose your discuss mode + +GSD Core offers two modes. Choose based on how well-understood the codebase is. + +**If you want to express your own implementation preferences upfront** (interview mode, the default): + +```bash +/gsd-discuss-phase 2 +``` + +Claude identifies grey areas in the phase scope, lets you select which to discuss, then works through approximately four questions per area. + +**If the codebase already has clear patterns and you find most questions obvious** (assumptions mode): + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode assumptions +/gsd-discuss-phase 2 +``` + +Claude reads 5–15 relevant codebase files via a subagent, forms assumptions with evidence and confidence levels, and presents them for confirmation or correction. Typically 2–4 interactions rather than 15–20. + +To switch back: + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode discuss +``` + +See [Discuss modes explained](../workflow-discuss-mode.md) for a full comparison, including when each mode is likely to save time. + +--- + +## Discuss all grey areas without the selection step + +By default, Claude presents grey areas and asks which you want to cover. If you want to work through all of them without that selection prompt: + +```bash +/gsd-discuss-phase 2 --all +``` + +--- + +## Speed up a straightforward phase + +**If the phase is well-understood and you want Claude to pick the recommended defaults without prompting you:** + +```bash +/gsd-discuss-phase 3 --auto +``` + +Claude selects the recommended answer for every question and logs the choices. Use this for phases where the decisions are low-stakes or already implied by prior phases. + +**If you have remote-session constraints (no TUI menus):** + +```bash +/gsd-discuss-phase 2 --text +``` + +All prompts are rendered as plain-text numbered lists instead of interactive selectors. + +--- + +## Work through questions in groups + +If you prefer to answer several questions at once rather than one at a time: + +```bash +/gsd-discuss-phase 2 --batch +``` + +Claude groups 2–5 questions per turn. + +--- + +## Add trade-off analysis to each question + +If you want a comparison table of the options before committing: + +```bash +/gsd-discuss-phase 2 --analyze +``` + +--- + +## Bulk-answer from a prepared file + +If you have a prepared answers file and want to push all decisions in one pass: + +```bash +/gsd-discuss-phase 1 --power +``` + +--- + +## Surface Claude's assumptions before discussing + +**If you want to see what Claude would assume and do before any interactive session** — useful for validating alignment before investing discussion time: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +Claude outputs its assumptions (with codebase evidence and confidence levels) and exits. No CONTEXT.md is written. Review the output, then run a normal discuss or assumptions-mode session if anything needs correcting. + +--- + +## What CONTEXT.md contains + +Both discuss and assumptions mode produce the same `{phase}-CONTEXT.md` in the phase directory. Downstream agents (researcher, planner, plan-checker) read this file identically regardless of which mode produced it. It contains six sections: + +| Section | Purpose | +|---|---| +| `` | Phase boundary — what this phase delivers | +| `` | Locked implementation decisions from the session | +| `` | Specs, ADRs, and docs downstream agents must read | +| `` | Reusable assets, patterns, and integration points | +| `` | User references and preferences | +| `` | Ideas noted for future phases | + +The `` section is mandatory. If you reference a doc, spec, or ADR during the discussion, Claude adds it immediately and reads it to inform subsequent questions. + +See [CONTEXT.md schema](../reference/context-md.md) for the full field reference. + +--- + +## How decisions feed into planning + +When you run `/gsd-plan-phase` next, the planner reads CONTEXT.md to know which decisions are locked. It will not re-ask questions already answered here. The researcher reads it first to know what to investigate. + +**If CONTEXT.md is missing when you run `/gsd-plan-phase`**, you will be offered the choice to continue without context (plans use research and requirements only, without your design preferences) or to run `/gsd-discuss-phase` first. + +--- + +## If you have a PRD or acceptance-criteria document + +Skip discuss-phase entirely and go straight to planning: + +```bash +/gsd-plan-phase 1 --prd path/to/prd.md +``` + +The planner synthesises CONTEXT.md from the PRD and treats all requirements as locked decisions. + +--- + +## Related + +- [Plan a phase](plan-a-phase.md) +- [Discuss modes](../workflow-discuss-mode.md) +- [CONTEXT.md schema](../reference/context-md.md) +- [docs index](../README.md) diff --git a/docs/how-to/drive-gsd-from-a-tracker-issue.md b/docs/how-to/drive-gsd-from-a-tracker-issue.md new file mode 100644 index 000000000..3ed9deb3c --- /dev/null +++ b/docs/how-to/drive-gsd-from-a-tracker-issue.md @@ -0,0 +1,176 @@ +# How to drive GSD Core from a tracker issue + +**Goal:** Take a single well-scoped GitHub, Linear, or Jira issue through the full GSD pipeline — from isolated workspace to merged PR — using only commands that already exist in GSD Core, with no custom scripts or tracker integrations. + +**Prerequisites:** GSD Core is installed. The issue has bounded scope, observable acceptance criteria, and no upstream blockers. + +For the concepts and design rationale behind this pattern, see [Issue-driven orchestration explained](../issue-driven-orchestration.md). + +--- + +## Step 1: Map the issue to a phase + +Open your tracker issue and decide how it maps onto `ROADMAP.md`: + +- **Issue matches an existing phase** → note the phase number and move to Step 2. +- **Issue is standalone new work** → add a phase: + +```bash +/gsd-phase "Description matching the issue title" +``` + +- **Issue is urgent and must slot between existing phases** → insert a decimal phase: + +```bash +/gsd-phase --insert 3 "Fix: description from issue" +``` + +Copy the tracker issue URL. You will paste it into `CONTEXT.md` in Step 3 so traceability survives context compaction. + +--- + +## Step 2: Create an isolated workspace + +Every issue gets its own workspace — a git worktree with an independent `.planning/` directory. Partial work, aborted plans, and exploratory commits stay outside `main`. + +```bash +/gsd-workspace --new --name my-issue-slug --repos . --strategy worktree +``` + +Switch into the workspace directory before continuing: + +```bash +cd ~/gsd-workspaces/my-issue-slug +``` + +--- + +## Step 3: Discuss the phase + +Run discuss-phase to lock in implementation decisions before any planning happens. When the session opens, paste the tracker issue URL into the discussion so it is captured in `CONTEXT.md`. + +```bash +/gsd-discuss-phase N +``` + +GSD asks about ambiguities in the issue scope — error handling, edge cases, interface contracts, technology choices. Your answers shape the plan that follows. + +If you already know all the answers and want to move quickly: + +```bash +/gsd-discuss-phase N --auto +``` + +--- + +## Step 4: Plan the phase + +```bash +/gsd-plan-phase N +``` + +GSD spawns research agents, reads your `CONTEXT.md` decisions (including the issue URL), and produces atomic `PLAN.md` files. A plan-checker validates each plan before saving. + +If you want peer review from external AI CLIs before execution (recommended for significant changes): + +```bash +/gsd-review --phase N +/gsd-plan-phase N --reviews +``` + +Or run the full plan–review–converge loop until no HIGH concerns remain: + +```bash +/gsd-plan-review-convergence N +``` + +--- + +## Step 5: Execute the phase + +For interactive, phase-at-a-time execution: + +```bash +/gsd-execute-phase N +``` + +For a hands-off run through all remaining phases: + +```bash +/gsd-autonomous +``` + +For an interactive dashboard where you can watch progress and dispatch work across phases: + +```bash +/gsd-manager +``` + +All three approaches update `STATE.md`, commit each task atomically, and run the post-phase verifier. + +--- + +## Step 6: Verify the work + +```bash +/gsd-verify-work N +``` + +GSD walks you through the acceptance criteria from the phase goal (which reflects your tracker issue) one at a time. If anything fails, GSD diagnoses the root cause and creates a fix plan. Re-run execute and re-verify until all checks pass. + +Treat `verification_failed` as a blocker even when the code looks correct — the failure usually surfaces a missed acceptance criterion from the original issue. + +--- + +## Step 7: Review and ship + +Run a code review before opening the PR: + +```bash +/gsd-code-review N +/gsd-code-review N --fix +``` + +Then create the PR: + +```bash +/gsd-ship N +``` + +GSD assembles the PR body from your planning artifacts: phase goal, changes summary, requirements addressed, verification status, and key decisions. Include `Closes #NNN` or `Fixes #NNN` in the PR body (or set it via `/gsd-config`) so the tracker issue closes automatically when the PR merges. + +--- + +## Step 8: Capture follow-up work + +As you work through the issue you will often discover related work. Capture it without losing context: + +```bash +/gsd-capture "Follow-up: description of discovered work" # Add as a todo +/gsd-capture --seed "Idea worth a future phase" # Preserve for the next milestone +/gsd-capture --backlog "Not urgent but worth tracking" # Park in the backlog +``` + +GSD does not post to your tracker automatically. Creating a tracker issue from captured follow-ups is a separate manual step — this keeps human review in the loop. + +--- + +## Conditionals + +| Situation | What to do | +|-----------|-----------| +| Issue is very small (typo, config change) | Skip workspace + discuss + plan; use `/gsd-quick` instead | +| Issue has multiple independent sub-tasks | Use `/gsd-manager` to parallelise execution across plans | +| Issue is blocked on another issue | Do not start until the upstream blocker is resolved; GSD has no automatic dependency poller | +| Issue scope turns out larger than expected mid-execution | Stop, run `/gsd-phase --insert N` to add sub-phases, continue | +| You want to skip the interactive discussion | Use `--auto` flag with `/gsd-discuss-phase`, or set `workflow.skip_discuss: true` for project-wide automation | +| Multiple issues form a coherent release | Run `/gsd-new-milestone` to group them and `/gsd-autonomous` to execute in sequence | + +--- + +## Related + +- [Issue-driven orchestration explained](../issue-driven-orchestration.md) +- [Isolate work with workspaces](isolate-work-with-workspaces.md) +- [Verify and ship](verify-and-ship.md) +- [docs index](../README.md) diff --git a/docs/how-to/execute-a-phase.md b/docs/how-to/execute-a-phase.md new file mode 100644 index 000000000..7a528853b --- /dev/null +++ b/docs/how-to/execute-a-phase.md @@ -0,0 +1,119 @@ +# How to execute a phase + +**Goal:** Run a planned phase through wave-based parallel execution and land every plan as an atomic git commit. + +**Prerequisites:** The phase has at least one `PLAN.md` file. If planning is not yet done, run `/gsd-plan-phase N` first — see [Plan a phase](plan-a-phase.md). + +--- + +## Run the full phase + +```bash +/gsd-execute-phase 1 +``` + +GSD reads the phase's plan files, groups them into dependency waves, and spawns a fresh executor agent per plan. Each executor commits its work atomically before the next wave begins. + +Before any agents are dispatched, GSD prints a wave table: + +``` +## Execution Plan + +Phase 1: Core middleware — 3 plans across 2 wave(s) + +| Wave | Plans | What it builds | +|------|----------------|---------------------------| +| 1 | 01-01, 01-02 | Core validation function | +| 2 | 01-03 | Express middleware wrapper | +``` + +Wave 1 plans run in parallel (each in an isolated git worktree). Wave 2 waits until all Wave 1 commits are merged. + +For the underlying agent coordination model, see [Multi-agent orchestration](../explanation/multi-agent-orchestration.md). + +--- + +## Run a single wave + +If you want to execute only one wave — for example, to inspect Wave 1 output before committing to Wave 2 — use `--wave N`: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +GSD executes only Wave 2 plans. It first checks that all earlier waves are complete; if any Wave 1 plan is still marked incomplete, it stops and tells you to finish earlier waves first. + +--- + +## Validate state before execution + +If you suspect the `.planning/` directory is out of sync with the filesystem — for example after a crash or an interrupted previous run — pass `--validate`: + +```bash +/gsd-execute-phase 1 --validate +``` + +GSD runs a state consistency check before spawning any executors. Detected drift is reported and you can accept or correct it before proceeding. + +--- + +## Resume a stalled execution + +If execution stops partway through — a quota error, a network drop, or a crashed session — the wave-level progress is preserved. GSD checks for a `SUMMARY.md` file for each plan; plans that have one are skipped automatically when you re-run: + +```bash +/gsd-execute-phase 1 +``` + +GSD will skip plans where `SUMMARY.md` already exists and pick up from the first incomplete plan. + +**If commits exist but `SUMMARY.md` is missing** (the executor committed but did not write its summary before the session died), GSD surfaces a safe-resume gate and offers three options: + +- `close out manually` — inspect the commits, write `SUMMARY.md`, then re-run. +- `re-execute from scratch` — revert or supersede the partial commits before dispatching a new executor. +- `mark-and-skip` — record the anomaly and move on, only with explicit confirmation. + +For systematic failure diagnosis, see [Debug a failed execution](debug-a-failed-execution.md). + +--- + +## Where output lands + +After all waves complete, the phase directory contains: + +``` +.planning/phases/01-/ + 01-01-SUMMARY.md # What plan 01 built, key files, deviations + 01-02-SUMMARY.md + 01-03-SUMMARY.md + VERIFICATION.md # Requirement-by-requirement pass/fail status +``` + +`STATE.md` and `ROADMAP.md` are updated automatically once all waves are done. `VERIFICATION.md` is written only when the phase is fully complete. + +Git history will show one commit per task (from each executor), followed by tracking commits from the orchestrator. + +--- + +## Cross-AI execution + +To delegate execution to an external AI CLI (Codex, Gemini, etc.) configured in `workflow.cross_ai_command`: + +```bash +/gsd-execute-phase 2 --cross-ai +``` + +To force local execution even when cross-AI is enabled in config: + +```bash +/gsd-execute-phase 2 --no-cross-ai +``` + +--- + +## Related + +- [Plan a phase](plan-a-phase.md) +- [Verify and ship](verify-and-ship.md) +- [Debug a failed execution](debug-a-failed-execution.md) +- [Commands](../COMMANDS.md) diff --git a/docs/how-to/handle-quick-and-fast-tasks.md b/docs/how-to/handle-quick-and-fast-tasks.md new file mode 100644 index 000000000..ec074b1cb --- /dev/null +++ b/docs/how-to/handle-quick-and-fast-tasks.md @@ -0,0 +1,121 @@ +# How to handle quick and fast tasks + +Not every piece of work fits inside a phase. GSD provides two lightweight commands for work that does not need the full discuss → plan → execute → verify loop. + +For context on when the full phase pipeline is worth its overhead, see [Context engineering](../explanation/context-engineering.md). + +--- + +## Deciding which command to use + +| Situation | Command | +|-----------|---------| +| Fixing a bug, adding a small feature, or any task you cannot summarise as a single trivial edit | `/gsd-quick` | +| Fixing a typo, updating a config value, adding a `.gitignore` entry, or any change that touches ≤ 3 files and takes under a minute | `/gsd-fast` | +| The task has unknowns, needs research, or will touch more than a handful of files | `/gsd-quick` with `--research` | + +**The rule of thumb:** if you hesitate for even a moment about whether the task is trivial, use `/gsd-quick`. `/gsd-fast` redirects you to `/gsd-quick` automatically if the scope looks non-trivial. + +--- + +## `/gsd-quick` — ad-hoc tasks with GSD guarantees + +`/gsd-quick` runs a planner and executor with the same atomic-commit and STATE.md tracking guarantees as a full phase, but without the phase overhead (no ROADMAP entry, no discuss-phase, no wave coordination across multiple plans). + +### Basic use + +```bash +/gsd-quick +``` + +GSD prompts you for a task description, then plans and executes it. Artifacts land in `.planning/quick/`. + +You can also pass the description directly: + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +### Flags + +Add flags to bring in more of the quality pipeline when the task warrants it. + +| Flag | What it adds | +|------|-------------| +| `--discuss` | A lightweight pre-planning discussion that surfaces grey areas and captures your decisions in a `CONTEXT.md` before the planner runs | +| `--research` | A focused research agent investigates approaches, libraries, and pitfalls before planning | +| `--validate` | Plan-checking (up to 2 iterations) plus post-execution verification | +| `--full` | All of the above — equivalent to `--discuss --research --validate` | + +Flags compose freely: + +```bash +/gsd-quick --research --validate # research + plan-checking + verification, no discuss +/gsd-quick --discuss # just surface grey areas before planning +/gsd-quick --full # the complete quality pipeline +``` + +### When to add flags + +- Add `--research` when you are unsure how to approach a task or which library to use. +- Add `--validate` when the task touches critical code paths and you want a verifier agent to confirm the must-haves were met. +- Add `--discuss` when the task has design choices you want to lock in before the planner runs — for example, when the right error-handling behaviour is not obvious. +- Use `--full` when a task is genuinely significant and you would normally plan it as a phase but it does not belong in the ROADMAP. + +### Listing and resuming quick tasks + +```bash +/gsd-quick list # show all quick tasks with status +/gsd-quick status my-task-slug # show status of a specific task +/gsd-quick resume my-task-slug # resume an interrupted task +``` + +--- + +## `/gsd-fast` — inline trivial edits + +`/gsd-fast` does the work directly in the current context. There are no subagents, no `PLAN.md`, and no research. It is suitable only for changes you could make yourself in under a minute. + +```bash +/gsd-fast "fix typo in README" +/gsd-fast "add .env to .gitignore" +``` + +If you omit the description, GSD prompts you for it. + +`/gsd-fast` checks whether the task is actually trivial before proceeding. If it judges the scope too large it stops and redirects you: + +```text +This looks like it needs planning. Use /gsd-quick instead: + /gsd-quick "your task description" +``` + +After making the change, `/gsd-fast` commits atomically and, if a `Quick Tasks Completed` table exists in `.planning/STATE.md`, appends a row to it. + +--- + +## What `/gsd-quick` does that `/gsd-fast` does not + +| Capability | `/gsd-fast` | `/gsd-quick` | +|------------|------------|--------------| +| Subagent planner | No | Yes | +| Subagent executor | No | Yes | +| Research agent | No | Optional (`--research`) | +| Plan-checking | No | Optional (`--validate`) | +| Post-execution verification | No | Optional (`--validate`) | +| Discussion phase | No | Optional (`--discuss`) | +| Worktree isolation | No | Yes (default) | +| Atomic commits per task | Single commit | One per plan task | +| STATE.md tracking | Row appended if table exists | Always updated | +| `.planning/quick/` artifacts | No | Yes | + +The key distinction is subagent isolation. `/gsd-quick` spawns a fresh planner and executor in separate context windows, which means the work is planned properly, commits are atomic per task, and the orchestrator can verify results. `/gsd-fast` uses only the current context window and is intentionally limited to changes trivial enough not to need any of that. + +--- + +## Related + +- [The phase loop](../explanation/the-phase-loop.md) +- [Context engineering](../explanation/context-engineering.md) +- [Commands](../COMMANDS.md) +- [Docs index](../README.md) diff --git a/docs/how-to/install-on-your-runtime.md b/docs/how-to/install-on-your-runtime.md new file mode 100644 index 000000000..0e2a160e7 --- /dev/null +++ b/docs/how-to/install-on-your-runtime.md @@ -0,0 +1,291 @@ +# How to install GSD Core on your runtime + +Install GSD Core (`@opengsd/gsd-core`) into the AI coding runtime you use every day. This guide gives you the standard installer path for each supported runtime, then covers the manual path for machines without Node.js. + +**What you need:** Node.js 18+ and npm (or npx). If you do not have Node.js, jump to [Installing without Node.js](#installing-without-nodejs). + +--- + +## Why the installer is required + +GSD Core ships agent and command files in Claude Code's native frontmatter format. Each supported runtime expects a different schema, directory layout, and command-invocation syntax. The installer performs the necessary transformations — for example, converting tool lists and colour values for OpenCode, writing TOML agent entries for Codex, and rewriting every command body from hyphen form (`/gsd-update`) to colon form (`/gsd:update`) for Gemini CLI. + +**Do not copy files from `agents/` or `commands/` directly.** Doing so bypasses the transformations and produces schema-validation errors or missing commands. + +--- + +## Standard install + +Run the installer from any directory. It prompts for your runtime and whether to install globally (all projects) or locally (this project only). + +```bash +npx @opengsd/gsd-core@latest +``` + +That is the only command you need for a fresh install or to re-run the installer after switching runtimes. + +--- + +## Per-runtime instructions + +### Claude Code + +```bash +npx @opengsd/gsd-core@latest --claude --global +``` + +Skills land in `~/.claude/`. Commands appear as `/gsd-*` slash commands in your next Claude Code session. Restart Claude Code to pick them up. + +**Override the install directory:** + +```bash +CLAUDE_CONFIG_DIR=~/.claude-alt npx @opengsd/gsd-core@latest --claude --global +``` + +--- + +### Gemini CLI + +```bash +npx @opengsd/gsd-core@latest --gemini --global +``` + +Skills land in `~/.gemini/`. The installer rewrites all command bodies to Gemini's colon namespace (`/gsd:update`, `/gsd:config`, etc.). Restart Gemini CLI after install. + +**Override the install directory:** + +```bash +GEMINI_CONFIG_DIR=~/.gemini-alt npx @opengsd/gsd-core@latest --gemini --global +``` + +--- + +### OpenCode + +```bash +npx @opengsd/gsd-core@latest --opencode --global +``` + +Skills land in `~/.config/opencode/` (XDG) or `~/.opencode/`. The installer converts agent frontmatter to OpenCode's schema — removing the `tools:` field and converting colour values to hex. See [Installing without Node.js — OpenCode transformations](#opencode--required-transformations) if you need to understand what changes. + +**Override the install directory:** + +```bash +OPENCODE_CONFIG_DIR=~/.config/opencode-alt npx @opengsd/gsd-core@latest --opencode --global +``` + +--- + +### Kilo + +```bash +npx @opengsd/gsd-core@latest --kilo --global +``` + +Skills land in `~/.config/kilo/` (XDG) or `~/.kilo/`. Uses the same OpenCode-style flat markdown command format. + +**Override the install directory:** + +```bash +KILO_CONFIG_DIR=~/.config/kilo-alt npx @opengsd/gsd-core@latest --kilo --global +``` + +--- + +### Codex + +```bash +npx @opengsd/gsd-core@latest --codex --global +``` + +Skills land in `~/.codex/skills/gsd-*/SKILL.md`. Agents are written with per-agent TOML entries in `config.toml`. Restart Codex (or run `codex --reload`) after install. + +**Minimum supported version:** Codex CLI 0.130.0. Earlier versions had additional skill-root scanning that can produce duplicate listings. + +--- + +### GitHub Copilot + +```bash +npx @opengsd/gsd-core@latest --copilot --global +``` + +Skills land in `~/.copilot/`. GSD installs as agent `.md` files and repository instruction files. + +**Override the install directory:** + +```bash +COPILOT_CONFIG_DIR=~/.copilot-alt npx @opengsd/gsd-core@latest --copilot --global +``` + +--- + +### Cursor + +```bash +npx @opengsd/gsd-core@latest --cursor --global +``` + +Skills land in `~/.cursor/`. GSD installs skills, agents, and rule references. + +**Override the install directory:** + +```bash +CURSOR_CONFIG_DIR=~/.cursor-alt npx @opengsd/gsd-core@latest --cursor --global +``` + +--- + +### Windsurf + +```bash +npx @opengsd/gsd-core@latest --windsurf --global +``` + +Skills land in `~/.codeium/windsurf/`. GSD installs skills, agents, and workspace rules. + +**Override the install directory:** + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-alt npx @opengsd/gsd-core@latest --windsurf --global +``` + +--- + +### Cline + +Cline uses a rules-based integration — GSD installs as `.clinerules` rather than slash commands. + +```bash +# Global install (all projects) +npx @opengsd/gsd-core@latest --cline --global + +# Local install (this project only) +npx @opengsd/gsd-core@latest --cline --local +``` + +Global installs write to `~/.cline/`. Local installs write to `./.cline/`. Rules are loaded automatically by Cline — no custom slash commands are registered. + +--- + +### CodeBuddy + +```bash +npx @opengsd/gsd-core@latest --codebuddy --global +``` + +Skills land in `~/.codebuddy/skills/gsd-*/SKILL.md`. + +--- + +### Qwen Code + +Qwen Code uses the same open skills standard as Claude Code 2.1.88+. + +```bash +npx @opengsd/gsd-core@latest --qwen --global +``` + +Skills land in `~/.qwen/skills/gsd-*/SKILL.md`. + +**Override the install directory:** + +```bash +QWEN_CONFIG_DIR=~/.qwen-alt npx @opengsd/gsd-core@latest --qwen --global +``` + +--- + +### Augment Code + +```bash +npx @opengsd/gsd-core@latest --augment --global +``` + +Skills land in `~/.augment/`. GSD installs skills and agents. No hook or statusline ownership. + +--- + +### Antigravity + +```bash +npx @opengsd/gsd-core@latest --antigravity --global +``` + +The installer auto-detects the Antigravity config directory (`~/.gemini/antigravity`, `~/.gemini/antigravity-ide`, or `~/.gemini/antigravity-cli`). Uses Gemini-compatible settings policy. + +**Override the install directory:** + +```bash +ANTIGRAVITY_CONFIG_DIR=~/.gemini/antigravity-alt npx @opengsd/gsd-core@latest --antigravity --global +``` + +--- + +### Trae + +```bash +npx @opengsd/gsd-core@latest --trae --global +``` + +Skills land in `~/.trae/`. GSD installs skills, agents, and rule references. + +--- + +## Local vs global install + +All examples above use `--global`, which installs GSD once for your user account. To scope an install to a single project, replace `--global` with `--local`: + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +A local install writes into the `.claude/` directory at your project root. Local install settings take precedence over global ones when both exist. + +--- + +## Installing prerelease editions (Next / Nightly / Insiders / Preview) + +Prerelease editions of runtimes (Windsurf Next, Cursor Nightly, VS Code Insiders, Codex preview channels, etc.) read from a sibling config directory. Set the matching `*_CONFIG_DIR` env var before running the installer: + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global +``` + +Select the corresponding stable runtime in the installer prompt. GSD does not enumerate prerelease editions as separate named runtimes — they are best-effort via this env-var mechanism and are not separately tested in release CI. + +--- + +## Installing without Node.js + +If you cannot run `npx` (for example, on a Windows machine without Node.js), you have two options. + +**Option A — Use a machine that has Node.js.** Any machine with Node.js will do: WSL, a Linux VM, a CI runner, or a Docker container. Run the installer there, then copy the output directory to your target machine. For OpenCode: + +```bash +npx @opengsd/gsd-core@latest --opencode --global +# Then copy ~/.config/opencode/agents/ to the Windows machine +``` + +**Option B — Manually transform the source files.** The agent source files live in `agents/` in the GSD Core repository and are in Claude Code's native frontmatter format. Each runtime expects a different shape. For the exact field transformations per runtime, see [Manual install / no-Node.js setup](../USER-GUIDE.md#manual-install--no-nodejs-setup) in the User Guide, which covers the OpenCode transformations in full detail and points to the installer's `convert*Frontmatter` functions for other runtimes. + +--- + +## After install + +Restart your runtime to pick up new commands and agents. Then start your first project: + +```bash +/gsd-new-project +``` + +If the command is not found after restart, verify the install directory matches the runtime's expected config path. The prerelease-editions section above covers the most common mismatch. + +--- + +## Related + +- [Your first project](../tutorials/your-first-project.md) +- [Update GSD Core](update-gsd.md) +- [Configuration](../CONFIGURATION.md) +- [Docs index](../README.md) diff --git a/docs/how-to/isolate-work-with-workspaces.md b/docs/how-to/isolate-work-with-workspaces.md new file mode 100644 index 000000000..721e9030d --- /dev/null +++ b/docs/how-to/isolate-work-with-workspaces.md @@ -0,0 +1,144 @@ +# How to isolate work with workspaces + +**Goal:** Create a fully isolated GSD environment — separate git worktree, independent `.planning/` root, and optionally multiple repositories — for feature branches or multi-repo work. + +**Prerequisites:** `git` is installed and the repository supports worktrees. For multi-repo workspaces, the target repos exist on your local machine or are accessible by path. + +--- + +## What workspaces are + +A workspace is a self-contained environment that pairs one or more git worktrees (or clones) with its own `.planning/` root directory. Each workspace has: + +- Its own `.planning/` directory that is **completely independent** from the source repo's `.planning/` — not a subdirectory of it +- Its own `WORKSPACE.md` manifest tracking member repos +- Git worktrees (default) or full clones of the specified repos, checked out on a dedicated branch (default: `workspace/`) + +Workspaces live under `~/gsd-workspaces//` by default. + +``` +~/gsd-workspaces/ +└── feature-b/ + ├── WORKSPACE.md ← manifest + ├── .planning/ ← fully independent GSD state + │ ├── PROJECT.md + │ ├── ROADMAP.md + │ └── ... + ├── hr-ui/ ← worktree or clone of hr-ui repo + └── ZeymoAPI/ ← worktree or clone of ZeymoAPI repo +``` + +Because the workspace's `.planning/` is separate from the source repos, there is no overlap or conflict with planning state that exists in the source repos themselves. + +--- + +## Create a workspace for multiple repos + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI +``` + +GSD creates worktrees of `hr-ui` and `ZeymoAPI` inside `~/gsd-workspaces/feature-b/`, checks out a `workspace/feature-b` branch in each, writes `WORKSPACE.md`, and creates an empty `.planning/` directory ready for `/gsd-new-project`. + +To customise the location: + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI --path /projects/feature-b +``` + +--- + +## Create a workspace for the current repo + +When you want feature-branch isolation on a single repo — independent branch, independent `.planning/`, no state bleed from main: + +```bash +/gsd-workspace --new --name payments-rework --repos . +``` + +The `.` tells GSD to create a worktree of the current repo. The worktree is checked out on `workspace/payments-rework`. + +To force a full clone instead of a worktree: + +```bash +/gsd-workspace --new --name payments-rework --repos . --strategy clone +``` + +--- + +## Specify a branch explicitly + +```bash +/gsd-workspace --new --name payments-rework --repos . --branch feature/payments-v2 +``` + +The `--branch` flag sets the branch name for all repos in the workspace. Defaults to `workspace/`. + +--- + +## Skip interactive questions + +```bash +/gsd-workspace --new --name payments-rework --repos . --auto +``` + +GSD accepts all defaults without prompting. + +--- + +## Initialise GSD inside the workspace + +After creating a workspace, move into it and initialise a GSD project: + +```bash +cd ~/gsd-workspaces/feature-b +/gsd-new-project +``` + +The `.planning/` directory inside the workspace is the root for all subsequent GSD commands run from that directory. It is entirely separate from any `.planning/` that exists in the source repos. + +--- + +## List workspaces + +```bash +/gsd-workspace --list +``` + +Prints all active GSD workspaces and their status. + +--- + +## Remove a workspace + +```bash +/gsd-workspace --remove feature-b +``` + +GSD removes the git worktrees and cleans up the workspace directory. This does not delete the branches from the origin remote — only the local worktrees and workspace directory. + +--- + +## When to use workspaces instead of workstreams + +Choose workspaces when: + +- You are working across **multiple repositories** that need to be co-ordinated under one GSD project (e.g., an API repo and a UI repo that ship together) +- You need a **separate git worktree** with its own branch, lock files, and build artefacts per feature — so builds and dependency installs in one environment cannot affect another +- You want a **wholly independent `.planning/` root** rather than a subdirectory of the main repo's `.planning/` +- You are following an issue-driven workflow where each tracker issue maps to a workspace (see [Drive GSD from a tracker issue](drive-gsd-from-a-tracker-issue.md)) + +Choose [workstreams](work-in-parallel-with-workstreams.md) instead when: + +- All the work lives in **one repository** and shares the same git history +- You want to run `/gsd-plan-phase` or `/gsd-discuss-phase` on different concern areas concurrently — API, UI, infra — without context bleed between their `STATE.md` files +- You do not need a separate worktree per concern; switching planning context is sufficient + +--- + +## Related + +- [Work in parallel with workstreams](work-in-parallel-with-workstreams.md) +- [Drive GSD from a tracker issue](drive-gsd-from-a-tracker-issue.md) +- [Commands](../COMMANDS.md) +- [docs index](../README.md) diff --git a/docs/how-to/migrate-from-gsd-2.md b/docs/how-to/migrate-from-gsd-2.md new file mode 100644 index 000000000..df3f4e782 --- /dev/null +++ b/docs/how-to/migrate-from-gsd-2.md @@ -0,0 +1,145 @@ +# How to migrate from GSD-2 + +**Goal:** Bring an older GSD-2 project (`.gsd/` directory layout) forward into GSD Core (`.planning/` layout), and optionally absorb any existing ADRs, PRDs, or specs that live in the repository into the new planning structure. + +**Prerequisites:** GSD Core is installed. The GSD-2 project directory is available on disk. + +--- + +## Understand what migrates + +GSD-2 used a `.gsd/` directory as its planning root. GSD Core uses `.planning/`. The migration reverses this: it reads `.gsd/` artifacts and writes them into the standard `.planning/` structure that all GSD Core commands expect. + +| What exists in GSD-2 | What `/gsd-import --from-gsd2` produces | +|----------------------|-----------------------------------------| +| `.gsd/PROJECT.md` | `.planning/PROJECT.md` | +| `.gsd/ROADMAP.md` | `.planning/ROADMAP.md` | +| `.gsd/STATE.md` | `.planning/STATE.md` | +| `.gsd/phases/` directories | `.planning/phases/` directories | +| Phase `PLAN.md` files | GSD Core `{NN}-{MM}-PLAN.md` files (renaming enforced) | + +Conflict detection runs before any files are written. If the target directory already has a `PROJECT.md` and the imported content contradicts it, the migration stops at the BLOCKER gate and lists the conflicts for you to resolve. + +--- + +## Run the migration + +### Migrate the current directory + +```bash +/gsd-import --from-gsd2 +``` + +GSD reads `.gsd/` in the current working directory and writes the migrated artifacts into `.planning/`. + +### Migrate from a different path + +```bash +/gsd-import --from-gsd2 --path ~/projects/old-project +``` + +Use `--path` when the GSD-2 project is not your current working directory. + +--- + +## Resolve conflicts + +If conflict detection finds blockers — for example, a GSD-2 tech-stack declaration that contradicts an existing `.planning/PROJECT.md` — it prints a conflict report and stops without writing any files. + +Read the report, resolve the contradiction (edit the source document or the existing planning artifact), then re-run `/gsd-import --from-gsd2`. The migration is safe to re-run until it passes cleanly. + +--- + +## Import an external plan file + +If you have a standalone plan document (a team planning document, a Markdown spec, an exported task list) rather than a full GSD-2 project, use `--from` instead: + +```bash +/gsd-import --from /tmp/team-plan.md +``` + +GSD performs the same conflict-detection pass, converts the content to GSD Core `PLAN.md` format, and validates the result with the plan-checker. After validation you will see the target filename and next steps. + +--- + +## Absorb existing documentation + +If your repository already contains ADRs (Architecture Decision Records), PRDs, or specification documents, use `/gsd-ingest-docs` to synthesise them into the `.planning/` structure after migration: + +### Scan the whole repository (auto-detects mode) + +```bash +/gsd-ingest-docs +``` + +If `.planning/` is already present (for example, from the migration you just ran), GSD defaults to merge mode — it synthesises the ingested documents alongside what is already there rather than overwriting it. + +### Scope to a specific directory + +```bash +/gsd-ingest-docs docs/ +/gsd-ingest-docs docs/adr/ +``` + +### Use an explicit precedence manifest + +When documents have mixed types or you want to control which document wins on conflicts: + +```bash +/gsd-ingest-docs --manifest ingest.yaml +``` + +The manifest is a YAML file listing `{path, type, precedence?}` per document. See the `--manifest` flag description in [Commands](../COMMANDS.md) for the expected shape. + +### Force a specific mode + +```bash +/gsd-ingest-docs --mode merge # Merge into existing .planning/ +/gsd-ingest-docs --mode new # Bootstrap from scratch (overwrites) +``` + +**Output:** `/gsd-ingest-docs` always produces an `INGEST-CONFLICTS.md` with three buckets — auto-resolved, competing-variants, and unresolved-blockers. Review this file after every ingest run. Hard-stops only occur on LOCKED-vs-LOCKED ADR contradictions; everything else is surfaced for your review, not silently discarded. + +--- + +## Verify the migrated project + +Once migration and any doc ingestion are complete, confirm the project state is consistent: + +```bash +/gsd-health +/gsd-health --repair +``` + +`/gsd-health` checks `.planning/` directory integrity and reports any drift. `--repair` auto-fixes recoverable issues. + +Then check that GSD Core can read your project state: + +```bash +/gsd-progress +``` + +If the project came across cleanly you will see the current phase status and the recommended next step. From here the standard GSD Core workflow applies. + +--- + +## Conditionals: what migrates and what does not + +| Situation | What to do | +|-----------|-----------| +| `.gsd/` exists in the current directory | Run `/gsd-import --from-gsd2` (no `--path` needed) | +| `.gsd/` is in a different directory | Use `--path ~/projects/old-project` | +| You have a standalone plan document, not a full GSD-2 project | Use `/gsd-import --from /path/to/plan.md` | +| You have ADRs in `docs/adr/` | Run `/gsd-ingest-docs docs/adr/` after migration | +| You have a mix of ADRs, PRDs, and specs | Run `/gsd-ingest-docs` at repo root; it classifies automatically | +| Conflict detection reports blockers | Resolve the listed contradictions then re-run; no files are written until all blockers clear | +| You are not sure whether migration worked | Run `/gsd-health` and `/gsd-progress` to confirm | +| INGEST-CONFLICTS.md lists unresolved blockers | These require manual resolution before affected documents are incorporated into planning | + +--- + +## Related + +- [Your first project](../tutorials/your-first-project.md) +- [Commands](../COMMANDS.md) +- [docs index](../README.md) diff --git a/docs/how-to/plan-a-phase.md b/docs/how-to/plan-a-phase.md new file mode 100644 index 000000000..74f36e3e7 --- /dev/null +++ b/docs/how-to/plan-a-phase.md @@ -0,0 +1,216 @@ +# How to plan a phase + +**Goal:** Turn phase decisions and research into an atomic, verifiable task plan ready for execution. + +**Prerequisites:** `.planning/ROADMAP.md` exists. A `{phase}-CONTEXT.md` from `/gsd-discuss-phase` is strongly recommended but not required. + +--- + +## Run the standard planning flow + +```bash +/gsd-plan-phase 2 +``` + +This runs three stages in sequence: + +1. **Research** — A `gsd-phase-researcher` subagent investigates the domain and writes `{phase}-RESEARCH.md`. +2. **Plan** — A `gsd-planner` subagent reads context, research, and requirements, then writes one or more `{phase}-{N}-PLAN.md` files. +3. **Verify** — A `gsd-plan-checker` subagent validates plan quality across eight dimensions and triggers a revision loop (up to three iterations) until quality gates pass. + +If no phase number is given, GSD Core targets the next unplanned phase from the roadmap. + +--- + +## Skip or force research + +**If the domain is familiar and you do not need new research:** + +```bash +/gsd-plan-phase 3 --skip-research +``` + +**If RESEARCH.md already exists but you want to force a refresh:** + +```bash +/gsd-plan-phase 3 --research +``` + +**If you want to run research only** — write RESEARCH.md and exit before planning: + +```bash +/gsd-plan-phase --research-phase 4 +``` + +If RESEARCH.md already exists, you are prompted to update, view, or skip. To force-refresh without the prompt: + +```bash +/gsd-plan-phase --research-phase 4 --research +``` + +To print existing RESEARCH.md to stdout without spawning the researcher: + +```bash +/gsd-plan-phase --research-phase 4 --view +``` + +Note: `--research-phase ` is a flag on `/gsd-plan-phase`. There is no standalone research-phase command — the removed standalone research command was retired in favour of this flag. + +--- + +## Plan vertical feature slices instead of horizontal layers + +**If you want tasks organised as thin end-to-end slices** (UI → API → DB per feature) rather than by technical layer: + +```bash +/gsd-plan-phase 1 --mvp +``` + +On Phase 1 of a new project with no prior phase summaries, `--mvp` also produces `SKELETON.md` — a Walking Skeleton covering project scaffold, routing, one real DB read/write, one real UI interaction, and dev deployment. + +You can persist MVP mode for a phase without the flag by adding `**Mode:** mvp` to that phase's entry in ROADMAP.md. + +--- + +## Require a failing test per behaviour-adding task + +**If you want TDD enforcement** — each behaviour-adding task begins with a failing test before implementation: + +```bash +/gsd-plan-phase 1 --tdd +``` + +Composable with `--mvp`: + +```bash +/gsd-plan-phase 1 --mvp --tdd +``` + +This produces vertical slices where every behaviour-adding task follows RED → GREEN → REFACTOR. The planner applies `type: tdd` to eligible tasks (business logic, API endpoints, data transformations) and uses standard `type: execute` for UI, configuration, and glue code. + +TDD mode can also be persisted in config: + +```bash +node gsd-tools.cjs config-set workflow.tdd_mode true +``` + +--- + +## Replan using cross-AI review feedback + +**If you have run `/gsd-review --phase N` and a `REVIEWS.md` exists:** + +```bash +/gsd-plan-phase 3 --reviews +``` + +The planner reads `REVIEWS.md` and revises plans to address the feedback. Cannot be combined with `--gaps`. + +**If you want an automated loop** — replan and re-review until no HIGH concerns remain: + +```bash +/gsd-plan-review-convergence 3 +``` + +The convergence loop runs plan → review → replan → re-review cycles (up to three by default). Use `--max-cycles N` to override the cap. + +--- + +## Close gaps after a failed verification + +**If `VERIFICATION.md` exists with unresolved gaps and you want to replan against those gaps only:** + +```bash +/gsd-plan-phase 3 --gaps +``` + +Research is skipped; the planner reads the verification gaps directly. + +--- + +## Validate project state before planning begins + +```bash +/gsd-plan-phase 2 --validate +``` + +Runs state validation before spawning the researcher. Use this if you suspect ROADMAP.md or STATE.md has drifted. + +--- + +## Run an external bounce validation after planning + +**If `workflow.plan_bounce_script` is configured and you want external validation of the finished plan:** + +```bash +/gsd-plan-phase 1 --bounce +``` + +To skip bounce even if it is enabled in config: + +```bash +/gsd-plan-phase 1 --skip-bounce +``` + +--- + +## Suppress interactive confirmations + +```bash +/gsd-plan-phase --auto +``` + +Skips all prompts. Useful in automated pipelines. Research is skipped if `research_enabled` is false in config. + +--- + +## What the plan produces + +A successful run writes: + +| File | Purpose | +|---|---| +| `{phase}-RESEARCH.md` | Domain research, package legitimacy audit, validation architecture | +| `{phase}-VALIDATION.md` | Nyquist test-mapping — the test cases the plan must satisfy (Dimension 8) | +| `{phase}-{N}-PLAN.md` | Executable task plan with frontmatter, wave assignments, and acceptance criteria | +| `{phase}/SKELETON.md` | Walking Skeleton (MVP mode, Phase 1 of new project only) | + +Each PLAN.md contains tasks with mandatory `` and `` fields. Every `` entry is verifiable as a source assertion, behaviour assertion, test command, or CLI output — never subjective language. + +For the full field reference see [PLAN.md schema](../reference/plan-md.md). + +### Plan quality dimensions + +The `gsd-plan-checker` validates plans across eight dimensions before allowing execution: + +1. Task atomicity — each task is a single concern +2. Dependency correctness — wave ordering is consistent +3. Acceptance criteria verifiability — no subjective criteria +4. `` completeness — the file being modified is always listed +5. Concrete `` values — no vague "align with" instructions +6. `must_haves` derived from phase goal +7. Requirement ID coverage — every phase requirement ID appears in at least one plan +8. Nyquist test mapping — plans address the validation strategy in VALIDATION.md + +The revision loop runs up to three times. If quality gates have not passed after three iterations, the checker surfaces remaining issues for manual review. + +--- + +## Replanning a closed phase + +If a phase has `VERIFICATION.md` with `status: passed`, it is considered closed. Attempting to replan it stops with an error. If the closeout was incorrect, override with `--force`: + +```bash +/gsd-plan-phase 2 --force +``` + +A warning is emitted into the transcript and any committed plan docs. + +--- + +## Related + +- [Discuss a phase](discuss-a-phase.md) +- [Execute a phase](execute-a-phase.md) +- [PLAN.md schema](../reference/plan-md.md) +- [Commands](../COMMANDS.md) diff --git a/docs/how-to/recover-and-troubleshoot.md b/docs/how-to/recover-and-troubleshoot.md new file mode 100644 index 000000000..4d6b7e17d --- /dev/null +++ b/docs/how-to/recover-and-troubleshoot.md @@ -0,0 +1,323 @@ +# How to recover and troubleshoot + +**Goal:** Identify and fix common problems — from lost context and corrupted state to installation failures and permission errors — using a conditional recipe structure. + +**Prerequisites:** GSD Core is installed. For install problems specifically, see [Install on your runtime](install-on-your-runtime.md). + +--- + +## Context and session problems + +### If you have lost track of where you are + +```bash +/gsd-progress +``` + +Reads all state files and tells you exactly where you are and what to do next. + +To automatically advance to the correct next step: + +```bash +/gsd-progress --next +``` + +### If you are starting a new session and need to restore context + +```bash +/gsd-resume-work +``` + +Restores your full session context from the last handoff, including current phase, planning decisions, and where work stopped. + +### If quality is dropping during a long session + +Clear your context window between major commands: + +```bash +/clear +``` + +Then restore state: + +```bash +/gsd-resume-work +``` + +GSD is designed around fresh contexts. Every subagent already gets a clean 200k window. The main session degrades over time — clearing it and resuming is the correct remedy, not pushing on. + +### If you want to save context before stopping + +```bash +/gsd-pause-work +``` + +Creates `.planning/HANDOFF.json` with your current position. Add `--report` to also write a post-session summary to `.planning/reports/`: + +```bash +/gsd-pause-work --report +``` + +--- + +## Planning integrity problems + +### If `.planning/` integrity is uncertain + +```bash +/gsd-health +``` + +Reports status across errors, warnings, and informational notes: + +| Status | Meaning | +|--------|---------| +| `HEALTHY` | All expected artefacts present and well-formed | +| `DEGRADED` | Warnings that should be addressed but work can continue | +| `BROKEN` | Critical errors that will block execution | + +Common auto-repairable issues (errors E004, E005; warnings W003, W008): + +```bash +/gsd-health --repair +``` + +This recreates missing `STATE.md`, resets a corrupt `config.json` to defaults, and adds any missing configuration keys. It will not overwrite `PROJECT.md` or `ROADMAP.md`. + +### If STATE.md references a phase that does not exist + +This produces warning `W002`. Use the state CLI to diagnose and repair: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate +``` + +Preview what a sync would change without writing: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify +``` + +Apply the sync: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync +``` + +These commands reconstruct `STATE.md` from actual project state on disk. They replace manual `STATE.md` editing. + +### If you see "Project already initialised" + +`.planning/PROJECT.md` already exists. `/gsd-new-project` is a safety check. If you genuinely want to start over, delete the `.planning/` directory first: + +```bash +rm -rf .planning/ +``` + +Then re-run `/gsd-new-project`. + +### If context-window utilisation is high + +```bash +/gsd-health --context +``` + +Probes the context-window utilisation guard. Warns at 60 %, critical at 70 %. If you are above the warning threshold, run `/clear` followed by `/gsd-resume-work` before starting the next major command. + +--- + +## Execution problems + +### If an executor gets "Permission denied" on Bash commands + +GSD's `gsd-executor` subagents need write-capable Bash access. Add the required patterns to `~/.claude/settings.json` under `permissions.allow`. At minimum: + +```json +"Bash(git add:*)", +"Bash(git commit:*)", +"Bash(git merge:*)", +"Bash(git checkout:*)" +``` + +For stack-specific patterns (Rails, Python, Node, Rust), see the full table in `docs/USER-GUIDE.md` under "Executor Subagent Gets Permission denied". + +Per-project alternative: add the same block to `.claude/settings.local.json` in your project root. + +### If execution fails or produces stubs + +Check whether the plan is too ambitious. Plans should have two or three tasks at most. If tasks are too large they exceed what a single context window can produce reliably. Re-plan the phase with smaller scope: + +```bash +/gsd-plan-phase 1 +``` + +For systematic diagnosis of what went wrong, see [Debug a failed execution](debug-a-failed-execution.md). + +### If parallel execution causes build lock errors or pre-commit hook failures + +This is caused by multiple agents triggering build tools simultaneously. GSD handles this automatically since v1.26. If you are on an older version, or still seeing contention, disable parallel execution: + +```bash +/gsd-settings +``` + +Set `parallelization.enabled` to `false`. + +### If a subagent appears to fail but commits were made + +Check git log before concluding something broke: + +```bash +git log --oneline -10 +``` + +A known Claude Code classification bug can report failure while work succeeded. GSD's orchestrators spot-check actual output, but if you see a mismatch, the commits are the ground truth. + +--- + +## Plan and phase problems + +### If plans seem wrong or misaligned with your intent + +Run `/gsd-discuss-phase N` before planning. Most plan quality issues come from assumptions that `CONTEXT.md` would have prevented: + +```bash +/gsd-discuss-phase 1 +``` + +To see what assumptions GSD is currently making without starting a full session: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +### If you need to change something after execution + +Do not re-run `/gsd-execute-phase`. Use `/gsd-quick` for targeted fixes: + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +Or use `/gsd-verify-work N` to systematically identify and fix issues through UAT. + +### If a command appears frozen at "Spawning…" + +Wait. GSD subagents run in a separate context window. Their work is invisible to the parent session while in progress. The liveness note on the spawn line confirms this is expected. Research and planning agents routinely take 1–5 minutes; verification agents can take longer on large phases. + +Do not interrupt the session. Killing it discards in-progress subagent work. + +If it has been more than 10 minutes, check whether the agent task still shows as active in the Claude Code sidebar. + +--- + +## Workflow state problems + +### If the workflow seems corrupted or state is inconsistent + +```bash +/gsd-forensics +``` + +Or with a description: + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +`/gsd-forensics` runs a post-mortem investigation: git history anomalies, artefact integrity, STATE.md consistency, uncommitted work, and orphaned worktrees. It writes a report to `.planning/forensics/` and surfaces recommended remediation steps. It is read-only and never modifies your project files. + +### If you need to roll back a phase or plan + +```bash +/gsd-undo --phase 03 # Roll back all commits for phase 3 +/gsd-undo --plan 03-02 # Roll back commits for plan 02 of phase 3 +/gsd-undo --last 5 # Pick interactively from the 5 most recent GSD commits +``` + +`/gsd-undo` checks dependent phases before reverting and always shows a confirmation gate. + +--- + +## Install and update problems + +### If GSD is not recognised after install + +Restart your runtime. GSD installs slash commands into your runtime's command directory (for example `~/.claude/commands/gsd/`). Most runtimes discover new commands only at startup. + +If the problem persists, verify the install: + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +For runtime-specific install paths and troubleshooting, see [Install on your runtime](install-on-your-runtime.md). + +### If an update overwrote your local changes + +Since v1.17, the installer backs up locally modified files to `gsd-local-patches/`. Reapply your changes: + +```bash +/gsd-update --reapply +``` + +### If you cannot update via npm + +If `npx @opengsd/gsd-core` fails due to npm outages or network restrictions, see `docs/manual-update.md` for a step-by-step manual update procedure that works without npm access. + +For routine updates, see [Update GSD](update-gsd.md). + +--- + +## Cost problems + +### If model costs are too high + +Switch to the budget profile: + +```bash +/gsd-config --profile budget +``` + +Disable research and plan-check agents via settings if the domain is familiar: + +```bash +/gsd-settings +``` + +Also audit which MCP servers are enabled. Every enabled MCP server injects its tool schema into every turn. Browser and platform-specific tools can cost 20k+ tokens each. Disable any that the current phase does not need in `.claude/settings.json`: + +```json +{ + "disabledMcpjsonServers": ["playwright", "mac-tools"] +} +``` + +--- + +## Recovery quick reference + +| Problem | Solution | +|---------|---------| +| Lost context or new session | `/gsd-resume-work` or `/gsd-progress` | +| Don't know what step is next | `/gsd-progress --next` | +| Phase went wrong | `/gsd-undo --phase NN`, then re-plan | +| Something broke | `/gsd-debug "description"` (add `--diagnose` for analysis without fixes) | +| STATE.md out of sync | `state validate` then `state sync` | +| `.planning/` integrity uncertain | `/gsd-health`, then `/gsd-health --repair` | +| Workflow state seems corrupted | `/gsd-forensics` | +| Quick targeted fix | `/gsd-quick` | +| Plan doesn't match your vision | `/gsd-discuss-phase N` then re-plan | +| Costs running high | `/gsd-config --profile budget` and `/gsd-settings` to toggle agents off | +| Update broke local changes | `/gsd-update --reapply` | +| Want session summary | `/gsd-pause-work --report` | +| Parallel execution build errors | Update GSD or set `parallelization.enabled: false` | + +--- + +## Related + +- [Debug a failed execution](debug-a-failed-execution.md) +- [Install on your runtime](install-on-your-runtime.md) +- [Commands](../COMMANDS.md) +- [docs index](../README.md) diff --git a/docs/how-to/run-phases-autonomously.md b/docs/how-to/run-phases-autonomously.md new file mode 100644 index 000000000..ebd0bd428 --- /dev/null +++ b/docs/how-to/run-phases-autonomously.md @@ -0,0 +1,124 @@ +# How to run phases autonomously + +Run all remaining phases — or a bounded range of them — unattended, so GSD moves through discuss → plan → execute for each phase without you driving every step. + +For background on what the phase loop is doing during an autonomous run, see [The phase loop](../explanation/the-phase-loop.md). + +--- + +## Prerequisites + +- An active project with `.planning/ROADMAP.md` and `.planning/STATE.md` +- All phases you want to run must be in a state that autonomous mode can drive (pending or in-progress; not already complete) +- Any design decisions you care about should already be in `PROJECT.md` or captured via a prior `/gsd-discuss-phase` — autonomous mode can surface grey areas interactively only when you use `--interactive` + +--- + +## Run all remaining phases + +```bash +/gsd-autonomous +``` + +GSD reads `ROADMAP.md`, discovers every incomplete phase in numeric order, and runs discuss → plan → execute on each one. After all phases complete it automatically runs the milestone lifecycle: audit → complete → cleanup. + +--- + +## Run a specific range of phases + +Use `--from` and `--to` to bound the run. Both flags accept decimal phase numbers (e.g. `3.1`). + +```bash +/gsd-autonomous --from 3 # phases 3, 4, 5 … (skip already-done phases 1 and 2) +/gsd-autonomous --to 5 # phases up to and including 5 +/gsd-autonomous --from 3 --to 5 # exactly phases 3, 4, and 5 +``` + +When `--to` is reached the lifecycle step is skipped, because not all milestone phases are done. The completion banner tells you how to resume: + +```text +Resume with: /gsd-autonomous --from 6 +``` + +--- + +## Run with interactive discuss + +By default, autonomous mode answers discuss questions automatically using smart discuss (batch table proposals). If you want to answer design questions yourself while keeping plan and execute out of the main context: + +```bash +/gsd-autonomous --interactive +``` + +In interactive mode: +- `/gsd-discuss-phase` runs inline and waits for your answers +- Planning and execution are dispatched as background agents so you can discuss the next phase while the current one builds +- The main context stays lean — only discuss conversations accumulate + +--- + +## What safety gates still apply + +Autonomous mode does not bypass GSD's quality pipeline. Each phase still: + +- Runs the plan-checker before execution +- Reads `VERIFICATION.md` after execution and routes on the result +- Pauses and asks you what to do when verification status is `human_needed` or `gaps_found` +- Stops and presents options (fix and retry, skip phase, or stop) if any step fails + +The only difference from manual execution is that `passed` verification advances automatically — you are not prompted between phases unless a decision is required. + +The package legitimacy gate also remains active. If a plan includes a `checkpoint:human-verify` task for a suspicious package, the executor will stop and surface the checkpoint. Autonomous mode will not silently install flagged packages. + +--- + +## When not to use autonomous mode + +Do not use `/gsd-autonomous` when: + +- **Phases have unsettled design decisions.** If you have not run `/gsd-discuss-phase` and your `PROJECT.md` does not capture your preferences, smart discuss will make autonomous choices you may not agree with. Run discuss interactively first, or use `--interactive`. + +- **You need fine-grained control over a single phase.** For one phase, `/gsd-execute-phase N` gives you step-by-step output and lets you react before continuing. Autonomous mode is designed for bulk unattended runs. + +- **The phase has novel or high-risk work.** Autonomous mode skips pauses unless it hits a blocker. On a phase where you expect surprises, stay in the loop with manual execution. + +- **You are mid-phase with partial execution.** Autonomous mode picks up incomplete phases but it does not resume a partially-executed wave. Use `/gsd-execute-phase N` to finish a phase that is already in progress. + +If a run stops partway through, see [Debug a failed execution](debug-a-failed-execution.md) for how to diagnose what went wrong. + +--- + +## Checking progress during a run + +Autonomous mode prints a progress banner before each phase: + +```text + GSD ► AUTONOMOUS ▸ Phase 3/7: Auth Middleware [████░░░░] 28% +``` + +If you need to check where the run stands mid-session, open another terminal and run: + +```bash +/gsd-progress +``` + +--- + +## Resuming after a stop + +If autonomous mode stops — whether you chose "Stop autonomous mode" from the blocker prompt, or the session was interrupted — resume from where it left off: + +```bash +/gsd-autonomous --from 4 # replace 4 with the first incomplete phase number +``` + +GSD skips already-complete phases automatically, so it is safe to re-run from an earlier phase number if you are not sure where the run stopped. + +--- + +## Related + +- [Execute a phase](execute-a-phase.md) +- [Debug a failed execution](debug-a-failed-execution.md) +- [Commands](../COMMANDS.md) +- [Docs index](../README.md) diff --git a/docs/how-to/set-up-cross-ai-review.md b/docs/how-to/set-up-cross-ai-review.md new file mode 100644 index 000000000..305ba7e52 --- /dev/null +++ b/docs/how-to/set-up-cross-ai-review.md @@ -0,0 +1,159 @@ +# How to set up cross-AI review + +**Goal:** Configure which AI reviewers participate in plan review, run a review of a planned phase, and use the feedback to converge on a plan with no HIGH-severity concerns. + +**Prerequisites:** The phase has been planned (`{phase}-PLAN.md` files exist in `.planning/phases/`). At least one external AI CLI is installed and authenticated. + +--- + +## Decide which reviewers to use + +GSD Core can route review requests to any combination of: Gemini CLI, Claude (separate session), Codex CLI, CodeRabbit, OpenCode, Qwen Code, Cursor, Antigravity CLI, Ollama, LM Studio, and llama.cpp. + +Each reviewer runs the same structured prompt against your `PLAN.md` files independently. Because different models have different blind spots, multi-reviewer consensus catches more issues than any single reviewer. + +**If you have no external CLIs installed yet**, install at least one: + +```bash +# Gemini CLI (free with Google credentials) +npm install -g @google/gemini-cli + +# Antigravity CLI (free with Google credentials) +curl -fsSL https://antigravity.google/cli/install.sh | bash + +# Codex CLI +npm install -g @openai/codex +``` + +--- + +## Set default reviewers (optional) + +By default, `/gsd-review` runs all detected CLIs. To pin a subset as project defaults: + +```bash +/gsd-config --integrations +``` + +The integrations wizard covers API keys, code-review CLI routing, and the `review.default_reviewers` list. Set the list to the reviewers you want as the no-flag default — for example `["gemini","codex"]`. + +Alternatively, set it directly with `gsd-tools`: + +```bash +gsd config-set review.default_reviewers '["gemini","codex"]' +``` + +For the full integration settings schema (API keys, model overrides per reviewer, local server host addresses), see [Configuration](../CONFIGURATION.md). + +--- + +## Run a review + +### Standard review (uses your configured defaults or all detected CLIs) + +```bash +/gsd-review --phase 3 +``` + +GSD invokes each reviewer in sequence, collects structured feedback (Summary, Strengths, Concerns at HIGH/MEDIUM/LOW, Suggestions, Risk Assessment), and writes the combined output to `.planning/phases/03-.../03-REVIEWS.md`. + +### Select a single reviewer for a one-off run + +```bash +/gsd-review --phase 3 --gemini +/gsd-review --phase 3 --codex +/gsd-review --phase 3 --cursor +``` + +Any explicit flag overrides both the `--all` default and `review.default_reviewers` for that run. + +### Run every available reviewer in parallel + +```bash +/gsd-review --phase 3 --all +``` + +`--all` always overrides config and runs the full detected set, including any configured local model servers (Ollama, LM Studio, llama.cpp). + +### Local model server reviewers + +If you run Ollama or LM Studio locally, they are included automatically with `--all` when the server is reachable. You can also target them explicitly: + +```bash +/gsd-review --phase 3 --ollama +/gsd-review --phase 3 --lm-studio +``` + +Configure the host addresses and model selection under `review.*` keys via `/gsd-config --integrations` if the defaults (`localhost:11434` / `localhost:1234`) do not apply. + +--- + +## Read the review output + +The `{padded_phase}-REVIEWS.md` file contains: + +- Individual reviews from each reviewer with severity-classified concerns +- A **Consensus Summary** section that synthesises concerns raised by two or more reviewers — start here for the highest-priority signal +- A **Divergent Views** section for areas where reviewers disagreed + +--- + +## Incorporate feedback into the plan + +Once you have reviewed the output, replan incorporating the feedback: + +```bash +/gsd-plan-phase 3 --reviews +``` + +The planner reads `REVIEWS.md` and adjusts the plans to address the concerns before saving. + +--- + +## Automate the plan–review–replan loop + +For phases where you want to iterate until all HIGH-severity concerns are resolved, use the convergence loop: + +```bash +/gsd-plan-review-convergence 3 +``` + +This runs `plan-phase → review → replan → re-review` up to three cycles (default). The loop exits when the HIGH-concern count reaches zero. + +### Convergence with a specific reviewer + +```bash +/gsd-plan-review-convergence 3 --codex +/gsd-plan-review-convergence 3 --gemini +``` + +### Convergence with all reviewers and a higher cycle cap + +```bash +/gsd-plan-review-convergence 3 --all --max-cycles 5 +``` + +**Stall detection:** if the HIGH-concern count is not decreasing across cycles, GSD warns you. When the cycle cap is reached with open HIGH concerns, an escalation gate asks whether to proceed or review manually. + +--- + +## Conditionals: which reviewers to choose + +| Situation | Recommended approach | +|-----------|---------------------| +| You have Gemini CLI already installed | `--gemini` is always a good starting reviewer | +| You want free multi-reviewer coverage | `--gemini` + `--agy` (both use Google credentials) | +| Your project is OpenAI-heavy | add `--codex` for an OpenAI-model perspective | +| You want GitHub Copilot's model | add `--opencode` | +| You want to avoid API costs entirely | configure Ollama with a local model and use `--ollama` | +| You need maximum coverage before a release | `/gsd-plan-review-convergence N --all` | +| You're iterating quickly and want fast feedback | pick one CLI: `/gsd-review --phase N --gemini` | + +--- + +## Related + +- [Verify and ship](verify-and-ship.md) +- [Configuration](../CONFIGURATION.md) +- [Commands](../COMMANDS.md) +- [docs index](../README.md) diff --git a/docs/how-to/spike-and-sketch.md b/docs/how-to/spike-and-sketch.md new file mode 100644 index 000000000..ea93c9d0f --- /dev/null +++ b/docs/how-to/spike-and-sketch.md @@ -0,0 +1,160 @@ +# How to spike and sketch before committing + +**Goal:** De-risk an implementation by running focused feasibility experiments (spikes) and exploring visual directions through throwaway HTML mockups (sketches) before committing a phase to any specific approach. + +**Prerequisites:** None. `/gsd-spike` and `/gsd-sketch` create their own storage directories and do not require an initialised GSD project. + +--- + +## Decide: spike, sketch, or both + +| You want to answer… | Use | +|---|---| +| "Will this technical approach actually work?" | `/gsd-spike` | +| "Does this layout / interaction / visual treatment feel right?" | `/gsd-sketch` | +| "What's the right technical approach, and what should it look like?" | Both, in order: spike first, then sketch | + +Spikes answer binary feasibility questions with executable code and a VALIDATED / INVALIDATED / PARTIAL verdict. Sketches answer visual questions with 2–3 browser-comparable HTML variants. They are complementary — a spike proves the approach is buildable, a sketch proves the design is worth building. + +--- + +## Run a spike + +### Interactive intake (default) + +```bash +/gsd-spike +``` + +GSD asks about the technical question, decomposes it into 2–5 independent experiments framed as **Given / When / Then** hypotheses, and asks for confirmation before building. + +### Provide the idea directly + +```bash +/gsd-spike "can we stream LLM tokens through SSE" +``` + +### Skip intake and run immediately + +```bash +/gsd-spike --quick "websocket vs SSE latency" +``` + +`--quick` skips the decomposition conversation and treats the argument as a single spike question. Use this when the question is already specific enough to run without refinement. + +### What each experiment produces + +Each spike in `.planning/spikes/NNN-descriptive-name/` includes: + +- Working code (not pseudocode) +- A **Given / When / Then** hypothesis written before any code +- An investigation trail documenting edge cases, pivots, and surprises +- A **VALIDATED**, **INVALIDATED**, or **PARTIAL** verdict with evidence +- A `README.md` with frontmatter, how-to-run instructions, and results + +All spikes are indexed in `.planning/spikes/MANIFEST.md`. + +### Package the findings + +When you have signal, wrap the findings into a project-local skill so future sessions load them automatically: + +```bash +/gsd-spike --wrap-up +``` + +This writes `.claude/skills/spike-findings-[project]/`. The skill is discovered automatically and loaded by subsequent `/gsd-sketch`, `/gsd-ui-phase`, and `/gsd-plan-phase` runs — you do not need to reference it explicitly. + +--- + +## Run a sketch + +### Mood intake (default) + +```bash +/gsd-sketch +``` + +GSD opens a short conversation to explore feel, visual references, and the core user action before any code is written. It asks one question at a time and only starts building when you say go. + +### Provide a design direction directly + +```bash +/gsd-sketch "dashboard layout" +``` + +### Skip mood intake and run immediately + +```bash +/gsd-sketch --quick "sidebar navigation" +``` + +`--quick` skips the intake conversation entirely and uses the argument as the design direction. + +### Non-Claude runtimes (Codex, Gemini CLI, etc.) + +```bash +/gsd-sketch --text "onboarding flow" +``` + +`--text` replaces interactive prompts with plain-text numbered lists. Use this when your runtime does not support `AskUserQuestion`. + +### What each sketch produces + +Each sketch in `.planning/sketches/NNN-descriptive-name/` includes: + +- `index.html` with 2–3 variants accessible via tab navigation — open directly in a browser, no build step +- Functional interactive elements (hover, click, transitions) +- Real-ish content using field names and data shapes from any prior spike findings +- Shared CSS variables from `.planning/sketches/themes/default.css` +- A `README.md` with the design question, variants, and what to look for + +All sketches are indexed in `.planning/sketches/MANIFEST.md`. + +### Package the winning design decisions + +After picking a variant, capture the visual decisions into a project-local skill: + +```bash +/gsd-sketch --wrap-up +``` + +This writes `.claude/skills/sketch-findings-[project]/`. The skill is picked up automatically by `/gsd-ui-phase` — pre-validated decisions (layout, colour palette, typography, spacing) are treated as locked and are not re-asked. + +--- + +## Combined flow: spike → sketch → phase + +This is the recommended sequence when you are uncertain about both technical feasibility and visual direction: + +```bash +/gsd-spike "SSE vs WebSocket for real-time feed" +/gsd-spike --wrap-up + +/gsd-sketch "real-time feed UI" +/gsd-sketch --wrap-up + +/gsd-discuss-phase N +/gsd-plan-phase N +``` + +The spike findings inform the sketch (real data shapes, real interaction states, realistic constraints). Both wrap-ups persist decisions that the planner and UI researcher load automatically, so you do not need to re-explain choices during `/gsd-discuss-phase` or `/gsd-ui-phase`. + +--- + +## How a spike or sketch feeds into a phase + +Spike and sketch artifacts do not need to be manually referenced. GSD reads them automatically at two points: + +1. **`/gsd-sketch`** — loads `.claude/skills/spike-findings-*/` before building mockups, so variants reflect proven constraints (streaming states, real field names, etc.) +2. **`/gsd-ui-phase N`** — loads `.claude/skills/sketch-findings-*/` before generating the UI design contract; pre-validated design decisions are treated as locked + +The planner also reads spike findings when a `spike-findings-*` skill is present, so validated technical choices (which library, which protocol, which data format) flow directly into task plans without repeated explanation. + +--- + +## Related + +- [Design a UI phase](design-a-ui-phase.md) +- [Plan a phase](plan-a-phase.md) +- [Commands](../COMMANDS.md) +- [Docs index](../README.md) diff --git a/docs/how-to/update-gsd.md b/docs/how-to/update-gsd.md new file mode 100644 index 000000000..01887fc1c --- /dev/null +++ b/docs/how-to/update-gsd.md @@ -0,0 +1,120 @@ +# How to update GSD Core + +Update an existing GSD Core install to the latest release, preview the changelog before committing, and recover any local customisations that the update would overwrite. + +**What you need:** The same runtime GSD is installed for. The update command re-runs the installer under the hood, so it needs Node.js and npx available (same requirement as the original install). + +--- + +## The standard update path + +From inside your AI runtime, run: + +```bash +/gsd-update +``` + +GSD will: + +1. Detect the installed version and install scope (global or local). +2. Check npm for the latest release of `@opengsd/gsd-core`. +3. Fetch the changelog and show you what changed between your installed version and the latest. +4. Ask for confirmation before touching anything. +5. Back up any user-added files found inside GSD-managed directories to `gsd-user-files-backup/`. +6. Run the installer (`npx @opengsd/gsd-core@latest -- --`). +7. Clear the update-check cache so the statusline indicator resets. +8. Report whether locally modified GSD files were backed up to `gsd-local-patches/`. + +Restart your runtime after the update to pick up new commands and agents. + +--- + +## Flags + +| Flag | What it does | +|------|--------------| +| `--sync` | After updating, sync skills from the GSD registry | +| `--reapply` | After updating, merge locally modified GSD files back in from `gsd-local-patches/` | + +```bash +/gsd-update --sync # Update and sync skills +/gsd-update --reapply # Update and reapply local patches +``` + +--- + +## Reviewing the changelog before updating + +`/gsd-update` always shows the changelog diff between your installed version and the latest *before* it asks for confirmation. You do not need to visit GitHub separately. The output looks like: + +```text +## GSD Update Available + +Installed: 1.39.0 +Latest: 1.41.0 + +### What's New +──────────────────────────────────────────────────────────── +[changelog entries for 1.40.0 and 1.41.0] +──────────────────────────────────────────────────────────── + +Proceed with update? [Yes, update now / No, cancel] +``` + +If the changelog cannot be fetched (no network access, npm outage), the update still proceeds after confirmation — it does not block on changelog availability. + +--- + +## Recovering local customisations + +### Files you added inside GSD-managed directories + +If you placed custom files inside directories that GSD owns (for example, custom agents prefixed with `gsd-` or extra files in `commands/gsd/`), the installer will detect them and copy them to `gsd-user-files-backup/` before wiping those directories. After the update, restore them manually from that backup location. + +Files you placed outside GSD-managed directories — custom agents not prefixed with `gsd-`, custom commands outside `commands/gsd/`, your `CLAUDE.md` files, and custom hooks — are never touched by the installer. + +### GSD files you modified directly + +If you edited a file that GSD installed (for example, tweaking an agent's system prompt), the installer detects the modification via a hash comparison against its manifest, backs the file up to `gsd-local-patches/`, and then replaces it with the new version. After the update: + +```bash +/gsd-update --reapply +``` + +This merges your modifications from `gsd-local-patches/` back into the newly installed files. + +If you skipped `--reapply` after a previous update and want to apply patches now: + +```bash +/gsd-update --reapply +``` + +It is safe to run `--reapply` on its own without triggering a new download — if you are already on the latest version, GSD skips the install step and goes straight to reapplying patches. + +--- + +## When npm is unavailable + +If `npx @opengsd/gsd-core@latest` fails due to an npm outage, network restrictions, or because you are working from the source repository, use the manual update procedure in [docs/manual-update.md](../manual-update.md). That document covers pulling the latest commit, building the hooks dist, and running `node bin/install.js` directly. + +--- + +## If you are already on the latest version + +`/gsd-update` exits early with a confirmation message — no download, no install, no restart needed. + +--- + +## Installer migrations + +Each GSD release may include installer migrations that rename, move, or retire managed files. The migration layer runs automatically before the new package payload is written. Migrations that would affect files you have modified prompt for confirmation rather than acting silently. For the full design and runtime-configuration contract registry, see [docs/installer-migrations.md](../installer-migrations.md). + +--- + +## Related + +- [Install on your runtime](install-on-your-runtime.md) +- [Commands reference](../COMMANDS.md) +- [Manual update](../manual-update.md) +- [Installer migrations](../installer-migrations.md) +- [Docs index](../README.md) diff --git a/docs/how-to/verify-and-ship.md b/docs/how-to/verify-and-ship.md new file mode 100644 index 000000000..c05ce4b10 --- /dev/null +++ b/docs/how-to/verify-and-ship.md @@ -0,0 +1,124 @@ +# How to verify and ship a phase + +**Goal:** Walk executed work through user acceptance testing, diagnose and fix any failures, then open a pull request with an auto-generated body. + +**Prerequisites:** The phase has been executed and has `SUMMARY.md` files. If execution is not yet done, see [Execute a phase](execute-a-phase.md). + +--- + +## Run user acceptance testing + +```bash +/gsd-verify-work 1 +``` + +GSD reads the phase's `SUMMARY.md` files, extracts user-observable deliverables, and walks you through them one at a time. For each checkpoint it presents what *should* happen and asks whether reality matches. + +- `yes` / `y` / empty → pass, move to next test +- Anything else → recorded as an issue, severity inferred from your description + +You never need to categorise severity — GSD infers it from your words ("crashes" → blocker, "doesn't work" → major, "looks off" → cosmetic). + +Progress is written to `.planning/phases/01-/01-UAT.md` and survives a `/clear`. If a session is interrupted, re-run `/gsd-verify-work 1` and GSD offers to resume from the last checkpoint. + +--- + +## When failures are found: auto-diagnose and fix planning + +If any tests report issues, GSD proceeds automatically: + +1. **Diagnoses root causes** — spawns parallel debug agents, one per issue, and updates `UAT.md` with root causes. +2. **Plans gap closure** — spawns a `gsd-planner` in gap-closure mode, which reads `UAT.md` (with diagnoses) and writes new `PLAN.md` files. +3. **Verifies the fix plans** — spawns a `gsd-plan-checker` to ensure the plans are executable. If issues are found, the planner and checker iterate up to three times. +4. **Presents next step** — when plans pass the checker: + +``` +Plans verified and ready for execution. + +`/clear` then `/gsd-execute-phase 1 --gaps-only` +``` + +Run the suggested command to apply fixes, then re-run `/gsd-verify-work 1` to confirm everything passes. + +--- + +## When all tests pass: ship the phase + +Once all UAT tests pass (or if this is your first run and no issues are found), the phase is marked complete in `ROADMAP.md` and `STATE.md` automatically. + +```bash +/gsd-ship 1 +``` + +GSD runs preflight checks (verification status, clean working tree, branch, remote, `gh` CLI authentication), pushes the branch, and creates a PR: + +```bash +/gsd-ship 1 # Ready-for-review PR +/gsd-ship 1 --draft # Draft PR — useful when more phases will follow +``` + +The PR body is assembled from planning artefacts automatically: + +- Phase goal from `ROADMAP.md` +- Per-plan summaries from `SUMMARY.md` files and their key files +- Requirements addressed (REQ-IDs) +- Verification status from `VERIFICATION.md` +- Key decisions from `STATE.md` + +No manual body writing required. + +--- + +## Optional: code review before or after shipping + +`/gsd-ship` does not run a code review automatically, but you can slot one in at any point: + +**Before verification** (catches issues before UAT): + +```bash +/gsd-code-review 1 # Standard review +/gsd-code-review 1 --fix # Review then auto-fix Critical + Warning findings +``` + +**After the PR is open** (to gate on quality before merge): + +```bash +/gsd-code-review 1 --depth=deep # Cross-file analysis including import graphs +``` + +See [Set up cross-AI review](set-up-cross-ai-review.md) to configure Gemini, Codex, or other reviewers for plan review earlier in the cycle. + +--- + +## Optional: create a clean PR branch + +If your branch contains `.planning/` commits that you do not want reviewers to see: + +```bash +/gsd-pr-branch # Filter against main +/gsd-pr-branch develop # Filter against develop +``` + +`/gsd-pr-branch` creates a new branch with only code changes — planning artefact commits are excluded. Run this before `/gsd-ship` if your team's review policy excludes planning noise. + +--- + +## Closing a milestone + +If this was the last phase in the milestone, run the milestone audit and archive it: + +```bash +/gsd-audit-milestone # Verify all requirements shipped +/gsd-complete-milestone # Archive, create git tag +``` + +`/gsd-complete-milestone` is the natural next step after the PR merges. See the [The phase loop](../explanation/the-phase-loop.md) for how verification and shipping fit into the full project lifecycle. + +--- + +## Related + +- [Execute a phase](execute-a-phase.md) +- [Set up cross-AI review](set-up-cross-ai-review.md) +- [The phase loop](../explanation/the-phase-loop.md) +- [Commands](../COMMANDS.md) diff --git a/docs/how-to/work-in-parallel-with-workstreams.md b/docs/how-to/work-in-parallel-with-workstreams.md new file mode 100644 index 000000000..bfbda8872 --- /dev/null +++ b/docs/how-to/work-in-parallel-with-workstreams.md @@ -0,0 +1,157 @@ +# How to work on multiple areas in parallel with workstreams + +**Goal:** Run concurrent work on different milestone areas — backend API, frontend dashboard, infrastructure, or any other concern — without planning state from one area bleeding into another. + +**Prerequisites:** An active GSD Core project (`.planning/ROADMAP.md` exists). If not, run `/gsd-new-project` first. + +--- + +## What workstreams are + +A workstream is an isolated planning context within a single codebase. Each workstream gets its own `.planning/workstreams//` subtree containing independent `STATE.md`, `ROADMAP.md`, `REQUIREMENTS.md`, and `phases/` directories. The codebase itself — source code, git history, and branches — is shared across all workstreams. + +``` +.planning/ +├── PROJECT.md ← shared +├── config.json ← shared +├── codebase/ ← shared +└── workstreams/ + ├── backend-api/ + │ ├── STATE.md + │ ├── ROADMAP.md + │ ├── REQUIREMENTS.md + │ └── phases/ + └── frontend-dash/ + ├── STATE.md + ├── ROADMAP.md + ├── REQUIREMENTS.md + └── phases/ +``` + +When a workstream is active, every GSD command — `/gsd-progress`, `/gsd-discuss-phase`, `/gsd-plan-phase`, `/gsd-execute-phase` — reads from and writes to that workstream's directory. Switching workstreams redirects all of those commands to a different subtree without touching the source tree. + +--- + +## Create a workstream + +```bash +/gsd-workstreams create backend-api +``` + +GSD creates the workstream directory under `.planning/workstreams/backend-api/` and seeds it with a skeleton `STATE.md` and `ROADMAP.md`. The workstream is not automatically activated — you switch to it explicitly. + +--- + +## List workstreams + +```bash +/gsd-workstreams list +``` + +Shows all workstreams and which one is currently active in your session. + +--- + +## Switch to a workstream + +```bash +/gsd-workstreams switch backend-api +``` + +From this point forward, all GSD workflow commands operate in the `backend-api` context. The switch is session-scoped: when multiple Claude Code terminals are open on the same repo, each session can hold a different active workstream without interfering with the others. + +Once switched, drive the normal phase workflow: + +```bash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +/gsd-execute-phase 1 +/gsd-verify-work 1 +``` + +To work on another area, switch workstreams in a second terminal: + +```bash +/gsd-workstreams switch frontend-dash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +``` + +--- + +## Check progress across all workstreams + +```bash +/gsd-workstreams progress +``` + +Prints a cross-workstream summary — phase status, current position, and outstanding work for every workstream — without requiring you to switch between them. + +For detailed status on a single workstream: + +```bash +/gsd-workstreams status backend-api +``` + +--- + +## Resume work in a workstream + +After a context reset or a new session, restore your position: + +```bash +/gsd-workstreams resume backend-api +``` + +This activates the workstream and restores your last known position within it, equivalent to switching and then running `/gsd-resume-work`. + +--- + +## Archive a completed workstream + +When a workstream's milestone work is done: + +```bash +/gsd-workstreams complete backend-api +``` + +GSD marks the workstream as archived and moves it out of the active listing. The planning artifacts are preserved under `.planning/workstreams/backend-api/` for audit purposes. + +--- + +## Scope a single command to a workstream without switching + +If you need to run one command against a specific workstream without changing your session's active context, use the `--ws` flag: + +```bash +/gsd-progress --ws frontend-dash +/gsd-plan-phase 2 --ws backend-api +``` + +`--ws` takes highest priority in the resolution order and does not alter the session-scoped pointer. + +--- + +## When to use workstreams instead of workspaces + +Choose workstreams when: + +- All the work lives in the **same repository** and shares the same git history +- You want to plan or discuss different concern areas (API, UI, infra) **concurrently** without one workstream's `STATE.md` overwriting another's +- You do not need a separate branch per workstream at creation time (though you can branch as normal within each workstream's execution) +- The overhead of creating full git worktrees is not justified by the isolation you need + +Choose [workspaces](isolate-work-with-workspaces.md) instead when: + +- You are working across **multiple repositories** (e.g., `hr-ui` and `ZeymoAPI`) +- You need the isolation of a **separate git worktree** or clone per feature — fully independent branches, lock files, and build artefacts +- You want to run `/gsd-new-project` independently in each workspace with a wholly separate `.planning/` root, not a subdirectory of the main repo's `.planning/` + +--- + +## Related + +- [Isolate work with workspaces](isolate-work-with-workspaces.md) +- [The phase loop](../explanation/the-phase-loop.md) +- [Commands](../COMMANDS.md) +- [docs index](../README.md) diff --git a/docs/issue-driven-orchestration.md b/docs/issue-driven-orchestration.md index 4dbe361a1..a37cdd00a 100644 --- a/docs/issue-driven-orchestration.md +++ b/docs/issue-driven-orchestration.md @@ -173,11 +173,10 @@ scope for this guide. ## Related -- [docs/USER-GUIDE.md](USER-GUIDE.md) — task-oriented walkthroughs of - individual commands referenced above. -- [docs/COMMANDS.md](COMMANDS.md) — full reference for `/gsd-*` - commands. -- [docs/FEATURES.md](FEATURES.md) — feature-level capability matrix - (workspaces, manager, autonomous, verify, review, ship). -- [docs/ARCHITECTURE.md](ARCHITECTURE.md) — phase-artifact lifecycle - and `STATE.md` mechanics. +- [The phase loop](explanation/the-phase-loop.md) — how discuss → plan → execute → verify → ship fits together as a repeating cycle. +- [Workspaces how-to](how-to/work-in-parallel-with-workstreams.md) — step-by-step guide to creating and managing parallel worktrees. +- [docs index](README.md) — full table of contents for GSD Core documentation. +- [docs/USER-GUIDE.md](./USER-GUIDE.md) — task-oriented walkthroughs of individual commands referenced above. +- [docs/COMMANDS.md](COMMANDS.md) — full reference for `/gsd-*` commands. +- [docs/FEATURES.md](FEATURES.md) — feature-level capability matrix (workspaces, manager, autonomous, verify, review, ship). +- [docs/ARCHITECTURE.md](ARCHITECTURE.md) — phase-artifact lifecycle and `STATE.md` mechanics. diff --git a/docs/ja-JP/ARCHITECTURE.md b/docs/ja-JP/ARCHITECTURE.md index 2e35ec039..236aace0f 100644 --- a/docs/ja-JP/ARCHITECTURE.md +++ b/docs/ja-JP/ARCHITECTURE.md @@ -1,30 +1,30 @@ -# GSD アーキテクチャ +# GSD Core アーキテクチャ -> コントリビューターおよび上級ユーザー向けのシステムアーキテクチャ文書です。ユーザー向けドキュメントは[機能リファレンス](FEATURES.md)または[ユーザーガイド](USER-GUIDE.md)をご覧ください。 +> コントリビューターおよび上級ユーザー向けのシステムアーキテクチャ文書です。ユーザー向けドキュメントは [機能リファレンス](FEATURES.md) または [ユーザーガイド](USER-GUIDE.md) をご覧ください。 --- ## 目次 -- [システム概要](#システム概要) -- [設計原則](#設計原則) -- [コンポーネントアーキテクチャ](#コンポーネントアーキテクチャ) -- [エージェントモデル](#エージェントモデル) -- [データフロー](#データフロー) -- [ファイルシステムレイアウト](#ファイルシステムレイアウト) -- [インストーラーアーキテクチャ](#インストーラーアーキテクチャ) -- [フックシステム](#フックシステム) -- [CLIツールレイヤー](#cliツールレイヤー) -- [ランタイム抽象化](#ランタイム抽象化) +- [システム概要](#system-overview) +- [設計原則](#design-principles) +- [コンポーネントアーキテクチャ](#component-architecture) +- [エージェントモデル](#agent-model) +- [データフロー](#data-flow) +- [ファイルシステムレイアウト](#file-system-layout) +- [インストーラーアーキテクチャ](#installer-architecture) +- [フックシステム](#hook-system) +- [CLI ツールレイヤー](#cli-tools-layer) +- [ランタイム抽象化](#runtime-abstraction) --- ## システム概要 -GSDは、ユーザーとAIコーディングエージェント(Claude Code、Gemini CLI、OpenCode、Kilo、Codex、Copilot、Antigravity、Trae、Cline、Augment Code)の間に位置する**メタプロンプティングフレームワーク**です。以下の機能を提供します: +GSD Core は、ユーザーと AI コーディングエージェント(Claude Code、Gemini CLI、OpenCode、Kilo、Codex、Copilot、Antigravity、Trae、Cline、Augment Code)の間に位置する **メタプロンプティングフレームワーク** です。以下の機能を提供します: -1. **コンテキストエンジニアリング** — タスクごとにAIが必要とするすべてを提供する構造化アーティファクト -2. **マルチエージェントオーケストレーション** — 専門エージェントをフレッシュなコンテキストウィンドウで起動する軽量オーケストレーター +1. **コンテキストエンジニアリング** — タスクごとに AI が必要とするすべてを提供する構造化アーティファクト([コンテキストエンジニアリング](explanation/context-engineering.md) 参照) +2. **マルチエージェントオーケストレーション** — フレッシュなコンテキストウィンドウで専門化されたエージェントを生成する薄いオーケストレーター([マルチエージェントオーケストレーション](explanation/multi-agent-orchestration.md) 参照) 3. **仕様駆動開発** — 要件 → 調査 → 計画 → 実行 → 検証のパイプライン 4. **状態管理** — セッションやコンテキストリセットをまたいだ永続的なプロジェクトメモリ @@ -106,47 +106,93 @@ GSDは、ユーザーとAIコーディングエージェント(Claude Code、G ### コマンド(`commands/gsd/*.md`) -ユーザー向けのエントリーポイントです。各ファイルにはYAMLフロントマター(name、description、allowed-tools)とワークフローをブートストラップするプロンプト本文が含まれています。コマンドは以下の形式でインストールされます: -- **Claude Code:** カスタムスラッシュコマンド(`/gsd-command-name`) -- **OpenCode / Kilo:** スラッシュコマンド(`/gsd-command-name`) +ユーザー向けのエントリーポイントです。各ファイルには YAML フロントマター(name、description、allowed-tools)とワークフローをブートストラップするプロンプト本文が含まれています。コマンドは以下の形式でインストールされます: + +- **Claude Code:** カスタムスラッシュコマンド(ハイフン形式、`/gsd-command-name`) +- **OpenCode / Kilo:** スラッシュコマンド(ハイフン形式、`/gsd-command-name`) - **Codex:** スキル(`$gsd-command-name`) -- **Copilot:** スラッシュコマンド(`/gsd-command-name`) +- **Copilot:** スラッシュコマンド(ハイフン形式、`/gsd-command-name`) +- **Gemini CLI:** `gsd:` 名前空間下のスラッシュコマンド(コロン形式、`/gsd:command-name`)——Gemini はすべてのカスタムコマンドをプラグイン ID の下で名前空間化するため、インストールパスがすべての本文テキスト参照をコロン形式に書き換える - **Antigravity:** スキル -**コマンド総数:** 44 +**コマンド総数:** 信頼できる数と完全なロスターについては [`docs/INVENTORY.md`](INVENTORY.md#commands) を参照。 + +#### 2 段階の階層的ルーティング(v1.40、[#2792](https://github.com/open-gsd/gsd-core/issues/2792)) + +eager なスキルリストのトークンコストを低く保つため、v1.40 では 6 つの名前空間 **メタスキル**(`gsd-workflow`、`gsd-project`、`gsd-quality`、`gsd-context`、`gsd-manage`、`gsd-ideate` ——`commands/gsd/ns-*.md` から取得されるが、呼び出し可能な `name:` はここに示すベア形式)を具体的なサブスキルの上にレイヤーとして導入しています。モデルは平坦な 86 スキルリスト(約 2,150 トークン)の代わりに 6 つの名前空間ルーター(約 120 トークン)を見て名前空間を選択し、名前空間ルーターの本文に埋め込まれたルーティングテーブルを通じて具体的なサブスキルにルーティングします。名前空間スキルは **付加的** です——すべての具体的なコマンドは依然として直接呼び出し可能です。 + +#### MCP トークンバジェットの相互作用 + +eager なスキルリストはターンごとの 2 つの主要コストの一つです。もう一つは `.claude/settings.json` で有効化されている各 MCP サーバーが注入する MCP ツールスキーマです。重量級の MCP サーバー(ブラウザ/playwright、Mac ツール、Windows ツール)はそれぞれターンごとに 20k+ トークンかかる場合があり、多くの場合 `model_profile` のチューニングで節約できるものをはるかに上回ります。トグルは Claude Code ハーネスにあります(`.claude/settings.json` の `enabledMcpjsonServers` / `disabledMcpjsonServers`)で、GSD の懸念事項ではありません。 ### ワークフロー(`get-shit-done/workflows/*.md`) コマンドが参照するオーケストレーションロジックです。以下を含むステップバイステップのプロセスが記述されています: + - `gsd-tools.cjs init` によるコンテキスト読み込み - モデル解決を伴うエージェント起動の指示 - ゲート/チェックポイントの定義 - 状態更新パターン - エラーハンドリングとリカバリー -**ワークフロー総数:** 46 +**ワークフロー総数:** 信頼できる数と完全なロスターについては [`docs/INVENTORY.md`](INVENTORY.md#workflows) を参照。 + +#### ワークフローのプログレッシブディスクロージャー + +ワークフローファイルは、対応する `/gsd-*` コマンドが呼び出されるたびに Claude のコンテキストにそのまま読み込まれます。そのコストを制限するため、`tests/workflow-size-budget.test.cjs` で強制されるワークフローサイズバジェットは #2361 のエージェントバジェットを反映します: + +| ティア | ファイルごとの行数制限 | +|-----------|--------------------| +| `XL` | 1700 — トップレベルオーケストレーター(`execute-phase`、`plan-phase`、`new-project`) | +| `LARGE` | 1500 — 複数ステップのプランナーと大きな機能ワークフロー | +| `DEFAULT` | 1000 — 集中した単一目的のワークフロー(対象ティア) | ### エージェント(`agents/*.md`) -フロントマターで以下を指定する専門エージェント定義: +フロントマターで以下を指定する専門化されたエージェント定義: + - `name` — エージェント識別子 - `description` — 役割と目的 -- `tools` — 許可されたツールアクセス(Read、Write、Edit、Bash、Grep、Glob、WebSearchなど) +- `tools` — 許可されたツールアクセス(Read、Write、Edit、Bash、Grep、Glob、WebSearch など) - `color` — 視覚的な区別のためのターミナル出力色 -**エージェント総数:** 16 +**エージェント総数:** 33 ### リファレンス(`get-shit-done/references/*.md`) -ワークフローとエージェントが `@-reference` で参照する共有知識ドキュメント: +ワークフローとエージェントが `@-reference` で参照する共有知識ドキュメント(信頼できる数と完全なロスターについては [`docs/INVENTORY.md`](INVENTORY.md#references-41-shipped) を参照): + +**コアリファレンス:** + - `checkpoints.md` — チェックポイントタイプの定義とインタラクションパターン +- `gates.md` — プランチェッカーと検証者に組み込まれた 4 つの正規ゲートタイプ(Confirm、Quality、Safety、Transition) - `model-profiles.md` — エージェントごとのモデルティア割り当て +- `model-profile-resolution.md` — モデル解決アルゴリズムのドキュメント - `verification-patterns.md` — 各種アーティファクトの検証方法 -- `planning-config.md` — 設定スキーマの全体像と動作 -- `git-integration.md` — gitコミット、ブランチ、履歴のパターン +- `verification-overrides.md` — アーティファクトごとの検証オーバーライドルール +- `planning-config.md` — 完全な設定スキーマと動作 +- `git-integration.md` — git コミット、ブランチ、履歴のパターン +- `git-planning-commit.md` — planning ディレクトリのコミット規約 - `questioning.md` — プロジェクト初期化のためのドリーム抽出フィロソフィー - `tdd.md` — テスト駆動開発の統合パターン - `ui-brand.md` — 視覚的な出力フォーマットパターン +- `common-bug-patterns.md` — コードレビューと検証のための一般的なバグパターン + +**ワークフローリファレンス:** + +- `agent-contracts.md` — オーケストレーターとエージェント間の正式インターフェース +- `context-budget.md` — コンテキストウィンドウバジェット配分ルール +- `continuation-format.md` — セッション継続/再開フォーマット +- `domain-probes.md` — discuss-phase のためのドメイン固有プローブ質問 +- `gate-prompts.md` — ゲート/チェックポイントプロンプトテンプレート +- `revision-loop.md` — 計画修正の反復パターン +- `universal-anti-patterns.md` — 検出・回避すべき一般的なアンチパターン +- `artifact-types.md` — 計画アーティファクトタイプの定義 +- `phase-argument-parsing.md` — フェーズ引数解析の規約 +- `decimal-phase-calculation.md` — 小数サブフェーズ番号付けのルール +- `workstream-flag.md` — ワークストリームアクティブポインターの規約 +- `user-profiling.md` — ユーザー行動プロファイリングの方法論 +- `thinking-partner.md` — 決定ポイントでの条件付きシンキングパートナー起動 ### テンプレート(`get-shit-done/templates/`) @@ -172,26 +218,36 @@ GSDは、ユーザーとAIコーディングエージェント(Claude Code、G | `gsd-prompt-guard.js` | `PreToolUse` | `.planning/` への書き込みにプロンプトインジェクションパターンがないかスキャン(アドバイザリー) | | `gsd-workflow-guard.js` | `PreToolUse` | GSDワークフローコンテキスト外でのファイル編集を検出(アドバイザリー、`hooks.workflow_guard` によるオプトイン) | -### CLIツール(`get-shit-done/bin/`) +### コマンドルーティングハブ(`get-shit-done/bin/lib/command-routing-hub.cjs`) -17のドメインモジュールを持つNode.js CLIユーティリティ(`gsd-tools.cjs`): +CJS コマンドファミリールーターは `CommandRoutingHub` を通じてディスパッチします。ハブはノースロー純粋結果コントラクト(`hub.dispatch()` は内部例外をキャッチして `{ ok: false, kind, ...typedPayload }` を返す)とクローズドランタイムエラー分類(`UnknownCommand`、`InvalidArgs`、`HandlerRefusal`、`HandlerFailure`)を所有します。ルーターアダプターは薄い CLI トランスレーターのままです——ハブを構築し、`dispatch` を呼び出し、結果を `output()`/`error()` 呼び出しにマッピングします。`docs/adr/0174-retire-gsd-sdk-package-boundary.md` を参照。 + +### CLI ツール(`get-shit-done/bin/`) + +`get-shit-done/bin/lib/` にドメインモジュールが分割された Node.js CLI ユーティリティ(`gsd-tools.cjs`)(信頼できるロスターについては [`docs/INVENTORY.md`](INVENTORY.md#cli-modules-33-shipped) を参照): | モジュール | 責務 | -|--------|---------------| -| `core.cjs` | エラーハンドリング、出力フォーマット、共有ユーティリティ | +| ---------------------- | --------------------------------------------------------------------------------------------------- | +| `core.cjs` | エラーハンドリング、出力フォーマット、共有ユーティリティ;planning ヘルパーの互換性 re-export | +| `planning-workspace.cjs` | planning シーム(`planningDir`、`planningPaths`、アクティブなワークストリームルーティング、`.planning/.lock`) | | `state.cjs` | STATE.md の解析、更新、進行、メトリクス | | `phase.cjs` | フェーズディレクトリ操作、小数番号付け、プランインデックス | | `roadmap.cjs` | ROADMAP.md の解析、フェーズ抽出、プラン進捗 | | `config.cjs` | config.json の読み書き、セクション初期化 | | `verify.cjs` | プラン構造、フェーズ完了度、リファレンス、コミット検証 | | `template.cjs` | テンプレート選択と変数置換による穴埋め | -| `frontmatter.cjs` | YAMLフロントマターのCRUD操作 | +| `frontmatter.cjs` | YAML フロントマターの CRUD 操作 | | `init.cjs` | ワークフロータイプごとの複合コンテキスト読み込み | | `milestone.cjs` | マイルストーンのアーカイブ、要件マーキング | | `commands.cjs` | その他コマンド(slug、タイムスタンプ、todos、スキャフォールディング、統計) | | `model-profiles.cjs` | モデルプロファイル解決テーブル | -| `security.cjs` | パストラバーサル防止、プロンプトインジェクション検出、安全なJSON解析、シェル引数バリデーション | -| `uat.cjs` | UATファイル解析、検証デット追跡、audit-uatサポート | +| `security.cjs` | パストラバーサル防止、プロンプトインジェクション検出、安全な JSON 解析、シェル引数バリデーション | +| `uat.cjs` | UAT ファイル解析、検証デット追跡、audit-uat サポート | +| `docs.cjs` | ドキュメント更新ワークフロー init、Markdown スキャン、モノレポ検出 | +| `workstream.cjs` | ワークストリーム CRUD、マイグレーション、セッションスコープのアクティブポインター | +| `schema-detect.cjs` | ORM パターンのスキーマドリフト検出(Prisma、Drizzle など) | +| `profile-pipeline.cjs` | ユーザー行動プロファイリングデータパイプライン、セッションファイルスキャン | +| `profile-output.cjs` | プロファイルレンダリング、USER-PROFILE.md と dev-preferences.md の生成 | --- @@ -219,19 +275,24 @@ Orchestrator (workflow .md) └── 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中に起動 | +21 の主要エージェントの概念的な生成パターン分類。信頼できる 31 エージェントロスター(`gsd-pattern-mapper`、`gsd-code-reviewer`、`gsd-code-fixer`、`gsd-ai-researcher`、`gsd-domain-researcher`、`gsd-eval-planner`、`gsd-eval-auditor`、`gsd-framework-selector`、`gsd-debug-session-manager`、`gsd-intel-updater` などの 10 の高度/専門化エージェントを含む)については、[`docs/INVENTORY.md`](INVENTORY.md#agents-31-shipped) を参照。 + +| カテゴリ | エージェント | 並列性 | +| ---------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| **リサーチャー** | 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-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-codebase-mapper | 4 並列(tech、arch、quality、concerns) | | **デバッガー** | gsd-debugger | 逐次(インタラクティブ) | -| **オーディター** | gsd-ui-auditor | 逐次 | +| **オーディター** | gsd-ui-auditor、gsd-security-auditor | 逐次 | +| **Doc ライター** | gsd-doc-writer、gsd-doc-verifier | 逐次(ライター後に検証者) | +| **プロファイラー** | gsd-user-profiler | 逐次 | +| **アナライザー** | gsd-assumptions-analyzer | 逐次(discuss-phase 中) | ### ウェーブ実行モデル @@ -247,18 +308,28 @@ Wave Analysis: ``` 各エグゼキューターには以下が与えられます: -- フレッシュな200Kコンテキストウィンドウ -- 実行対象の特定のPLAN.md + +- フレッシュな 200K コンテキストウィンドウ(または対応モデルでは最大 1M) +- 実行対象の特定の PLAN.md - プロジェクトコンテキスト(PROJECT.md、STATE.md) -- フェーズコンテキスト(CONTEXT.md、利用可能な場合はRESEARCH.md) +- フェーズコンテキスト(CONTEXT.md、利用可能な場合は RESEARCH.md) + +### アダプティブコンテキスト拡充(1M モデル) + +コンテキストウィンドウが 500K+ トークンの場合(Opus 4.6、Sonnet 4.6 などの 1M クラスモデル)、サブエージェントプロンプトは標準 200K ウィンドウには収まらない追加コンテキストで自動的に拡充されます: + +- **エグゼキューターエージェント** は前のウェーブの SUMMARY.md ファイルとフェーズの CONTEXT.md/RESEARCH.md を受け取り、フェーズ内でのクロスプラン認識を可能にする +- **検証者エージェント** はすべての PLAN.md、SUMMARY.md、CONTEXT.md ファイルと REQUIREMENTS.md を受け取り、履歴を考慮した検証を可能にする + +オーケストレーターは設定から `context_window` を読み取り(`gsd-tools.cjs config-get context_window`)、値が >= 500,000 の場合に条件付きでより豊富なコンテキストを含めます。標準 200K ウィンドウでは、プロンプトはコンテキスト効率を最大化するためにキャッシュフレンドリーな順序で切り詰められたバージョンを使います。 #### 並列コミットの安全性 -同一ウェーブ内で複数のエグゼキューターが実行される場合、2つの仕組みで競合を防止します: +同一ウェーブ内で複数のエグゼキューターが実行される場合、2 つの仕組みで競合を防止します: -1. **`--no-verify` コミット** — 並列エージェントはpre-commitフックをスキップします(ビルドロックの競合を引き起こす可能性があるため。例:Rustプロジェクトでのcargo lockファイルの競合)。オーケストレーターは各ウェーブ完了後に `git hook run pre-commit` を1回実行します。 +1. **`--no-verify` コミット** — 並列エージェントはプリコミットフックをスキップします(ビルドロックの競合を引き起こす可能性があるため。例:Rust プロジェクトでの cargo lock ファイルの競合)。オーケストレーターは各ウェーブ完了後に `git hook run pre-commit` を 1 回実行します。 -2. **STATE.md ファイルロック** — すべての `writeStateMd()` 呼び出しはロックファイルベースの相互排他(`STATE.md.lock`、`O_EXCL` によるアトミック作成)を使用します。これにより、2つのエージェントがSTATE.mdを読み取り、異なるフィールドを変更し、最後の書き込みが他方の変更を上書きする読み取り-変更-書き込みの競合状態を防止します。古いロックの検出(10秒タイムアウト)とジッター付きのスピンウェイトを含みます。 +2. **STATE.md ファイルロック** — すべての `writeStateMd()` 呼び出しはロックファイルベースの相互排他(`STATE.md.lock`、`O_EXCL` によるアトミック作成)を使用します。これにより、2 つのエージェントが STATE.md を読み取り、異なるフィールドを変更し、最後の書き込みが他方の変更を上書きする read-modify-write 競合状態を防止します。古いロックの検出(10 秒タイムアウト)とジッター付きのスピンウェイトを含みます。 --- @@ -302,16 +373,27 @@ ui-phase → UI-SPEC.md (design contract, optional) │ ▼ plan-phase + ├── Research gate (blocks if RESEARCH.md has unresolved open questions) ├── Phase Researcher → RESEARCH.md - ├── Planner → PLAN.md files - └── Plan Checker → Verify loop (max 3x) + │ └── Package Legitimacy Gate: slopcheck on every package; [SLOP] removed, + │ [SUS]/[ASSUMED] flagged; Audit table written to RESEARCH.md + ├── Planner (with reachability check) → PLAN.md files + │ └── checkpoint:human-verify injected before [ASSUMED]/[SUS] installs; + │ T-{phase}-SC STRIDE row added for install-bearing plans + ├── Plan Checker → Verify loop (max 3x) + ├── Requirements coverage gate (REQ-IDs → plans) + └── Decision coverage gate (CONTEXT.md `` → plans, BLOCKING — #2492) │ ▼ -execute-phase +state planned-phase → STATE.md (Planned/Ready to execute) + │ + ▼ +execute-phase (context reduction: truncated prompts, cache-friendly ordering) ├── Wave analysis (dependency grouping) ├── Executor per plan → code + atomic commits ├── SUMMARY.md per plan └── Verifier → VERIFICATION.md + └── Decision coverage gate (CONTEXT.md decisions → shipped artifacts, NON-BLOCKING — #2492) │ ▼ verify-work → UAT.md (user acceptance testing) @@ -344,29 +426,37 @@ UI-SPEC.md (per phase) ─────────────────── ``` ~/.claude/ # Claude Code (global install) -├── commands/gsd/*.md # 37 slash commands +├── skills/gsd-*/SKILL.md # Global skills (authoritative roster: docs/INVENTORY.md) +├── commands/gsd/*.md # Local Claude installs use slash commands instead of global skills ├── 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 +│ ├── bin/lib/*.cjs # Domain modules (authoritative roster: docs/INVENTORY.md) +│ ├── workflows/*.md # Workflow definitions (authoritative roster: docs/INVENTORY.md) +│ ├── references/*.md # Shared reference docs (authoritative roster: docs/INVENTORY.md) │ └── 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 +├── agents/*.md # Agent definitions (authoritative roster: docs/INVENTORY.md) +├── hooks/*.js # Node.js hooks (statusline, guards, monitors, update check) +├── hooks/*.sh # Shell hooks (session state, commit validation, phase boundary) ├── 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/`(ローカル) + +- **OpenCode:** `~/.config/opencode/` global または `./.opencode/` local +- **Kilo:** `~/.config/kilo/` global または `./.kilo/` local +- **Gemini CLI:** `~/.gemini/` global または `./.gemini/` local +- **Codex:** `~/.codex/` global または `./.codex/` local +- **Copilot:** `~/.copilot/` global または `./.github/` local +- **Antigravity:** auto-detected global root(`~/.gemini/antigravity/`、`~/.gemini/antigravity-ide/`、または `~/.gemini/antigravity-cli/`)または `./.agent/` local +- **Cursor:** `~/.cursor/` global または `./.cursor/` local +- **Windsurf:** `~/.codeium/windsurf/` global または `./.windsurf/` local +- **Augment Code:** `~/.augment/` global または `./.augment/` local +- **Trae:** `~/.trae/` global または `./.trae/` local +- **Qwen Code:** `~/.qwen/` global または `./.qwen/` local +- **Hermes Agent:** `~/.hermes/` global または `./.hermes/` local +- **CodeBuddy:** `~/.codebuddy/` global または `./.codebuddy/` local +- **Cline:** `~/.cline/` global または project-root `.clinerules` local ### プロジェクトファイル(`.planning/`) @@ -424,29 +514,39 @@ UI-SPEC.md (per phase) ─────────────────── ## インストーラーアーキテクチャ -インストーラー(`bin/install.js`、約3,000行)は以下を処理します: +インストーラー(`bin/install.js`、約 10,700 行)は以下を処理します: -1. **ランタイム検出** — インタラクティブプロンプトまたはCLIフラグ(`--claude`、`--opencode`、`--gemini`、`--kilo`、`--codex`、`--copilot`、`--antigravity`、`--all`) +1. **ランタイム検出** — インタラクティブプロンプトまたは CLI フラグ(`--claude`、`--opencode`、`--gemini`、`--kilo`、`--codex`、`--copilot`、`--antigravity`、`--cursor`、`--windsurf`、`--augment`、`--trae`、`--qwen`、`--hermes`、`--codebuddy`、`--cline`、`--all`) 2. **インストール先の選択** — グローバル(`--global`)またはローカル(`--local`) -3. **ファイルデプロイ** — コマンド、ワークフロー、リファレンス、テンプレート、エージェント、フックをコピー +3. **ファイルデプロイ** — コマンド、スキル、ワークフロー、リファレンス、テンプレート、エージェント、フックをコピー 4. **ランタイム適応** — ランタイムごとにファイル内容を変換: - Claude Code: そのまま使用 - - OpenCode: コマンド/エージェントをOpenCode互換のフラットコマンド + サブエージェント形式に変換 - - Kilo: OpenCode変換パイプラインをKiloの設定パスで再利用 - - Codex: コマンドからTOML設定 + スキルを生成 - - Copilot: ツール名をマッピング(Read→read、Bash→executeなど) + - OpenCode: コマンド/エージェントを OpenCode 互換のフラットコマンド + サブエージェント形式に変換 + - Kilo: OpenCode 変換パイプラインを Kilo の設定パスで再利用 + - Codex: コマンドから TOML 設定 + スキルを生成 + - Copilot: ツール名をマッピング(Read→read、Bash→execute など) - Gemini: フックイベント名を調整(`PostToolUse` の代わりに `AfterTool`) - - Antigravity: Googleモデル同等品によるスキルファースト + - Antigravity: Google モデル同等品によるスキルファースト + - Cursor: ルール参照付きスキルファースト + - Windsurf: ルール参照付きスキルファースト + - Trae: `~/.trae` / `./.trae` へのスキルファーストインストール、`settings.json` またはフック統合なし + - Qwen Code: Qwen ブランドのパスとプロンプト書き換え付きスキルファースト + - Hermes Agent: `skills/gsd/` 下のカテゴリベーススキル + - CodeBuddy: CodeBuddy パスとプロンプト書き換え付きスキルファースト + - Cline: ルールベース統合のための `.clinerules` を書き込む + - Augment Code: スキルファースト、完全なスキル変換と設定管理 5. **パス正規化** — `~/.claude/` パスをランタイム固有のパスに置換 6. **設定統合** — ランタイムの `settings.json` にフックを登録 -7. **パッチバックアップ** — v1.17以降、ローカルで変更されたファイルを `/gsd-update --reapply` 用に `gsd-local-patches/` へバックアップ +7. **パッチバックアップ** — v1.17 以降、ローカルで変更されたファイルを `/gsd-update --reapply` 用に `gsd-local-patches/` へバックアップ 8. **マニフェスト追跡** — クリーンアンインストールのために `gsd-file-manifest.json` を書き込み -9. **アンインストールモード** — `--uninstall` ですべてのGSDファイル、フック、設定を削除 +9. **アンインストールモード** — `--uninstall` ですべての GSD ファイル、フック、設定を削除 + +インストール時のファイル移動、古いアーティファクトのクリーンアップ、設定の書き換え、ユーザーデータの保全は Installer Migration Module によって管理されます。[Installer Migrations](../installer-migrations.md) と [ADR 0008](../adr/0008-installer-migration-module.md) を参照してください。 ### プラットフォーム対応 -- **Windows:** 子プロセスでの `windowsHide`、保護ディレクトリへのEPERM/EACCES対策、パスセパレーターの正規化 -- **WSL:** WindowsのNode.jsがWSL上で実行されていることを検出し、パスの不一致について警告 +- **Windows:** 子プロセスでの `windowsHide`、保護ディレクトリへの EPERM/EACCES 対策、パスセパレーターの正規化 +- **WSL:** Windows の Node.js が WSL 上で実行されていることを検出し、パスの不一致について警告 - **Docker/CI:** カスタム設定ディレクトリの場所に `CLAUDE_CONFIG_DIR` 環境変数をサポート --- @@ -474,32 +574,48 @@ Runtime Engine (Claude Code / Gemini CLI) ### コンテキストモニターの閾値 | コンテキスト残量 | レベル | エージェントの動作 | -|-------------------|-------|----------------| +| ----------------- | -------- | --------------------------------------- | | > 35% | Normal | 警告なし | | ≤ 35% | WARNING | 「新しい複雑な作業の開始を避けてください」 | | ≤ 25% | CRITICAL | 「コンテキストがほぼ枯渇、ユーザーに通知してください」 | -デバウンス:繰り返し警告の間隔は5回のツール使用。重大度のエスカレーション(WARNING→CRITICAL)はデバウンスをバイパスします。 +デバウンス:繰り返し警告の間隔は 5 回のツール使用。重大度のエスカレーション(WARNING→CRITICAL)はデバウンスをバイパスします。 ### 安全性の特性 -- すべてのフックはtry/catchでラップされ、エラー時はサイレントに終了 -- stdin タイムアウトガード(3秒)でパイプの問題によるハングを防止 -- 古いメトリクス(60秒超)は無視される +- すべてのフックは try/catch でラップされ、エラー時はサイレントに終了 +- stdin タイムアウトガード(3 秒)でパイプの問題によるハングを防止 +- 古いメトリクス(60 秒超)は無視される - ブリッジファイルの欠落は適切に処理される(サブエージェント、新規セッション) - コンテキストモニターはアドバイザリーのみ — ユーザーの設定を上書きする命令的なコマンドは発行しない +### パッケージ正当性ゲート(v1.42.1) + +調査者 → プランナー → エグゼキューターパイプラインには、スロップスクワッティング(AI が幻覚した悪意のあるポストインストールスクリプト付きで事前登録されたパッケージ名)に対するサプライチェーンゲートが含まれます。 + +**ゲートレイヤー:** + +| レイヤー | コンポーネント | アクション | +|-------|-----------|--------| +| 調査 | `gsd-phase-researcher` | `slopcheck install --json` を実行;`## Package Legitimacy Audit` テーブルを RESEARCH.md に書き込む;RESEARCH.md が書かれる前に `[SLOP]` パッケージを除去 | +| 計画 | `gsd-planner` | 監査テーブルを読み取る;任意の `[ASSUMED]` または `[SUS]` インストールタスクの前に `checkpoint:human-verify` を挿入;`` に `T-{phase}-SC` STRIDE サプライチェーン行を追加 | +| 実行 | `gsd-executor` | RULE 3 はパッケージインストールを自動修正スコープから除外;失敗したインストールはチェックポイントとして表面化し、サイレントな代替なし | + +セキュリティモデルの概念的な概要については [セキュリティモデル](explanation/security-model.md) を参照。 + ### セキュリティフック(v1.27) **Prompt Guard**(`gsd-prompt-guard.js`): -- `.planning/` ファイルへのWrite/Edit時にトリガー -- プロンプトインジェクションパターン(ロールオーバーライド、指示バイパス、systemタグインジェクション)をスキャン + +- `.planning/` ファイルへの Write/Edit 時にトリガー +- プロンプトインジェクションパターン(ロールオーバーライド、指示バイパス、system タグインジェクション)をスキャン - アドバイザリーのみ — 検出をログに記録するが、ブロックはしない - フックの独立性のため、パターンはインライン化(`security.cjs` のサブセット) **Workflow Guard**(`gsd-workflow-guard.js`): -- `.planning/` 以外のファイルへのWrite/Edit時にトリガー -- GSDワークフローコンテキスト外での編集を検出(アクティブな `/gsd-` コマンドやTaskサブエージェントがない場合) + +- `.planning/` 以外のファイルへの Write/Edit 時にトリガー +- GSD ワークフローコンテキスト外での編集を検出(アクティブな `/gsd-` コマンドや Task サブエージェントがない場合) - 状態追跡される変更には `/gsd-quick` や `/gsd-fast` の使用をアドバイス - `hooks.workflow_guard: true` によるオプトイン(デフォルト: false) @@ -507,24 +623,43 @@ Runtime Engine (Claude Code / Gemini CLI) ## ランタイム抽象化 -GSDは統一されたコマンド/ワークフローアーキテクチャを通じて複数のAIコーディングランタイムをサポートしています: +GSD Core は統一されたコマンド/ワークフローアーキテクチャを通じて複数の 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/` | +### ランタイムインストールコントラクトマトリクス + +| ランタイム | グローバルルート | ローカルルート | 呼び出し面 | エージェント面 | 設定とフック | +| --- | --- | --- | --- | --- | --- | +| Claude Code | `~/.claude` | `./.claude` | グローバル `skills/gsd-*/SKILL.md`;ローカル `commands/gsd/*.md` | `agents/gsd-*.md` | `settings.json` フックと statusLine エントリ | +| OpenCode | `~/.config/opencode` | `./.opencode` | `command/gsd-*.md` | `agents/gsd-*.md` | `opencode.json` または `opencode.jsonc`;GSD フックなし | +| Kilo | `~/.config/kilo` | `./.kilo` | `command/gsd-*.md` | `agents/gsd-*.md` | `kilo.json` または `kilo.jsonc`;GSD フックなし | +| Gemini CLI | `~/.gemini` | `./.gemini` | `commands/gsd/*.toml` | `agents/gsd-*.md` | `settings.json` フィーチャーフラグ、フック、statusline | +| Codex | `~/.codex` | `./.codex` | `skills/gsd-*/SKILL.md` | エージェントソース markdown + エージェントごとの TOML | `config.toml` `[agents.gsd-*]`、`[features].hooks`、フックテーブル | +| GitHub Copilot | `~/.copilot` | `./.github` | `skills/gsd-*/SKILL.md` と `copilot-instructions.md` | `.agent.md` ファイル | GSD フックまたは statusline なし | +| Antigravity | auto-detected:`~/.gemini/antigravity`、`~/.gemini/antigravity-ide`、または `~/.gemini/antigravity-cli` | `./.agent` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | GSD がインストールした場合の Gemini スタイル `settings.json` フックエントリ | +| Cursor | `~/.cursor` | `./.cursor` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | `rules/` 下のルール参照;GSD フックなし | +| Windsurf | `~/.codeium/windsurf` | `./.windsurf` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | `rules/` 下のルール参照;GSD フックなし | +| Augment Code | `~/.augment` | `./.augment` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | GSD フックまたは statusline なし | +| Trae | `~/.trae` | `./.trae` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | `rules/` 下のルール参照;GSD フックなし | +| Qwen Code | `~/.qwen` | `./.qwen` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | サポートされている場合の共通 GSD 設定とフックエントリ | +| Hermes Agent | `~/.hermes` | `./.hermes` | `skills/gsd/DESCRIPTION.md` と `skills/gsd/gsd-*/SKILL.md` | `agents/gsd-*.md` | サポートされている場合の共通 GSD 設定とフックエントリ | +| CodeBuddy | `~/.codebuddy` | `./.codebuddy` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | サポートされている場合の共通 GSD 設定とフックエントリ | +| Cline | `~/.cline` | project root | `.clinerules` | ルールのみ | GSD フックまたは statusline なし | ### 抽象化ポイント -1. **ツール名マッピング** — 各ランタイムは独自のツール名を持つ(例:ClaudeのBash → Copilotのexecute) -2. **フックイベント名** — Claude Codeは `PostToolUse`、Geminiは `AfterTool` を使用 +1. **ツール名マッピング** — 各ランタイムは独自のツール名を持つ(例:Claude の `Bash` → Copilot の `execute`) +2. **フックイベント名** — Claude Code は `PostToolUse`、Gemini は `AfterTool` を使用 3. **エージェントフロントマター** — 各ランタイムは独自のエージェント定義形式を持つ 4. **パス規約** — 各ランタイムは異なるディレクトリに設定を保存 -5. **モデル参照** — `inherit` プロファイルにより、GSDはランタイムのモデル選択に委譲 +5. **モデル参照** — `inherit` プロファイルにより、GSD はランタイムのモデル選択に委譲 -インストーラーはインストール時にすべての変換を処理します。ワークフローとエージェントはClaude Codeのネイティブ形式で記述され、デプロイ時に変換されます。 +インストーラーはインストール時にすべての変換を処理します。ワークフローとエージェントは Claude Code のネイティブ形式で記述され、デプロイ時に変換されます。 + +--- + +## Related + +- [マルチエージェントオーケストレーション](explanation/multi-agent-orchestration.md) +- [セキュリティモデル](explanation/security-model.md) +- [CLI ツール](CLI-TOOLS.md) +- [ドキュメント索引](README.md) diff --git a/docs/ja-JP/CLI-TOOLS.md b/docs/ja-JP/CLI-TOOLS.md index 926b0255e..c44183c3e 100644 --- a/docs/ja-JP/CLI-TOOLS.md +++ b/docs/ja-JP/CLI-TOOLS.md @@ -1,26 +1,36 @@ # GSD CLI ツールリファレンス -> `gsd-tools.cjs` のプログラマティック API リファレンスです。ワークフローやエージェントが内部的に使用します。ユーザー向けコマンドについては、[コマンドリファレンス](COMMANDS.md) を参照してください。 +> `gsd-tools` CLI(`get-shit-done/bin/gsd-tools.cjs`)のリファレンスです。スラッシュコマンドとユーザーフローについては [コマンドリファレンス](COMMANDS.md) を参照してください。[docs インデックス](README.md) に戻る。 --- ## 概要 -`gsd-tools.cjs` は、GSD の約50個のコマンド、ワークフロー、エージェントファイル全体で繰り返し使われるインライン bash パターンを置き換える Node.js CLI ユーティリティです。設定の解析、モデル解決、フェーズ検索、git コミット、サマリー検証、状態管理、テンプレート操作を一元化しています。 +`gsd-tools.cjs` は、設定の解析、モデル解決、フェーズ検索、git コミット、サマリー検証、状態管理、テンプレート操作を GSD コマンド・ワークフロー・エージェント全体で一元化します。 -**配置場所:** `get-shit-done/bin/gsd-tools.cjs` -**モジュール:** `get-shit-done/bin/lib/` 内の15個のドメインモジュール -**使い方:** +| | | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **配置パス** | `get-shit-done/bin/gsd-tools.cjs` | +| **実装** | `get-shit-done/bin/lib/` 配下の 20 個のドメインモジュール(ディレクトリが正式) | +| **ステータス** | オーケストレーション・ワークフロー・自動化処理のための主要ランタイムコマンドサーフェス。 | + + +**使い方(CJS):** + ```bash node gsd-tools.cjs [args] [--raw] [--cwd ] ``` -**グローバルフラグ:** -| フラグ | 説明 | -|--------|------| -| `--raw` | 機械可読な出力(JSON またはプレーンテキスト、フォーマットなし) | -| `--cwd ` | 作業ディレクトリの上書き(サンドボックス化されたサブエージェント向け) | +**グローバルフラグ(CJS):** + + +| フラグ | 説明 | +| -------------- | ---------------------------------------------------------------------------- | +| `--raw` | 機械可読な出力(JSON またはプレーンテキスト、フォーマットなし) | +| `--cwd ` | 作業ディレクトリの上書き(サンドボックス化されたサブエージェント向け) | +| `--ws ` | `.planning/workstreams/` パス用のワークストリームコンテキスト | + --- @@ -64,6 +74,13 @@ node gsd-tools.cjs state resolve-blocker --text "..." # セッション継続性を記録 node gsd-tools.cjs state record-session --stopped-at "..." [--resume-file path] + +# フェーズ開始 — 新しいフェーズの STATE.md Status/Last activity を更新 +node gsd-tools.cjs state begin-phase --phase N --name SLUG --plans COUNT + +# エージェント検出可能なブロッカーシグナル送信(discuss-phase / UI フローで使用) +node gsd-tools.cjs state signal-waiting --type TYPE --question "..." --options "A|B" --phase P +node gsd-tools.cjs state signal-resume ``` ### State スナップショット @@ -152,7 +169,9 @@ node gsd-tools.cjs config-set-model-profile ```bash # 現在のプロファイルに基づいてエージェント用モデルを取得 node gsd-tools.cjs resolve-model -# 戻り値: opus | sonnet | haiku | inherit +# --raw 出力では選択されたモデル ID/ティアを返します。 +# JSON 出力ではプロファイルも含み、アクティブなランタイムがサポートしている場合は +# reasoning_effort も含まれます。 ``` エージェント名: `gsd-planner`, `gsd-executor`, `gsd-phase-researcher`, `gsd-project-researcher`, `gsd-research-synthesizer`, `gsd-verifier`, `gsd-plan-checker`, `gsd-integration-checker`, `gsd-roadmapper`, `gsd-debugger`, `gsd-codebase-mapper`, `gsd-nyquist-auditor` @@ -198,8 +217,17 @@ node gsd-tools.cjs validate consistency # .planning/ の整合性チェック、任意で修復 node gsd-tools.cjs validate health [--repair] + +# ステータスライン / フック呼び出し元向けのコンテキストウィンドウ使用率をプローブ(v1.40.0) +node gsd-tools.cjs validate context + +# 型付き JSON サーフェスとしてのコンテキスト使用率(#455) +node gsd-tools.cjs validate context --json ``` +`validate context` は `utilization`、`status`(60% / 70% の閾値で `ok` / `warn` / `critical`)、および `suggestion` 文字列を含む構造化エンベロープを出力します。同じデータが `/gsd-health --context` を支えます。 +型付き IR を直接受け取るには `--json` を渡してください(スクリプトやテストアサーションで有用)。 + --- ## Template コマンド @@ -275,9 +303,13 @@ node gsd-tools.cjs init todos [area] node gsd-tools.cjs init milestone-op node gsd-tools.cjs init map-codebase node gsd-tools.cjs init progress + +# ワークストリームスコープ付き init(`--ws` フラグ) +node gsd-tools.cjs init execute-phase --ws +node gsd-tools.cjs init plan-phase --ws ``` -**大容量ペイロードの処理:** 出力が約50KBを超える場合、CLI は一時ファイルに書き出し、`@file:/tmp/gsd-init-XXXXX.json` を返します。ワークフローは `@file:` プレフィックスを確認し、ディスクから読み込みます: +**大容量ペイロードの処理:** 出力が約 50KB を超える場合、CLI は一時ファイルに書き出し、`@file:/tmp/gsd-init-XXXXX.json` を返します。ワークフローは `@file:` プレフィックスを確認し、ディスクから読み込みます: ```bash INIT=$(node gsd-tools.cjs init execute-phase "1") @@ -299,6 +331,38 @@ node gsd-tools.cjs requirements mark-complete --- +## エージェントスキル + +指定されたエージェントタイプのスキルブロックを出力します。 + +```bash +# 生の XML スキルブロックを出力(デフォルト — シェル展開に安全) +node gsd-tools.cjs agent-skills + +# 型付き JSON サーフェス(#455)を出力 — { agent_type, block, skills_count } +node gsd-tools.cjs agent-skills --json +``` + +`--json` フラグは構造化消費やテストアサーションに適した型付き IR オブジェクトを返します。デフォルト(フラグなし)はワークフローのシェル展開が依存する生の XML 出力を維持します。 + +--- + +## スキルマニフェスト + +コマンド読み込みを高速化するためのスキル検出の事前計算とキャッシュ。 + +```bash +# スキルマニフェストを生成(.claude/skill-manifest.json に書き込む) +node gsd-tools.cjs skill-manifest + +# カスタム出力パスで生成 +node gsd-tools.cjs skill-manifest --output +``` + +利用可能なすべての GSD スキルとそのメタデータ(名前、説明、ファイルパス、引数ヒント)の JSON マッピングを返します。インストーラとセッション開始フックが繰り返しのファイルシステムスキャンを避けるために使用します。 + +--- + ## ユーティリティコマンド ```bash @@ -324,35 +388,70 @@ node gsd-tools.cjs summary-extract [--fields field1,field2] # プロジェクト統計 node gsd-tools.cjs stats [json|table] -# 進捗表示 +# 進捗表示(人間が読める形式) node gsd-tools.cjs progress [json|table|bar] +# 型付き JSON サーフェスとしての進捗(#455) +node gsd-tools.cjs progress --json + # TODO を完了にする node gsd-tools.cjs todo complete # UAT 監査 — 全フェーズの未解決項目をスキャン node gsd-tools.cjs audit-uat +# クロスアーティファクト監査キュー — `.planning/` の未解決監査項目をスキャン +node gsd-tools.cjs audit-open [--json] + +# GSD-2 プロジェクトを現在の構造にリバースマイグレーション(`/gsd-import --from-gsd2` のバックエンド) +node gsd-tools.cjs from-gsd2 [--path
] [--force] [--dry-run] + # 設定チェック付き git コミット -node gsd-tools.cjs commit [--files f1 f2] [--amend] [--no-verify] +node gsd-tools.cjs commit [--files f1 f2] [--amend] [--no-verify] [--respect-staged] ``` -> **`--no-verify`**: プリコミットフックをスキップします。ウェーブベース実行時に並列エグゼキューターエージェントが使用し、ビルドロックの競合(例: Rust プロジェクトでの cargo ロック競合)を回避します。オーケストレーターは各ウェーブ完了後にフックを一度実行します。順次実行時には `--no-verify` を使用せず、フックを通常通り実行してください。 +> `--no-verify`: プリコミットフックをスキップします。ウェーブベース実行時に並列エグゼキューターエージェントがビルドロックの競合(例: Rust プロジェクトでの cargo ロック競合)を避けるために使用します。オーケストレーターは各ウェーブ完了後にフックを一度実行します。順次実行時には `--no-verify` を使用せず、フックを通常通り実行してください。 +> `--files ` **ステージング動作**: デフォルトでは、`--files` はコミット前に各指定ファイルに対して `git add -- ` を実行します。これにより `git add -p` で設定したハンク単位のステージングが上書きされます。`git add` ステップをスキップして指定パス内のステージング済みファイルのみをコミットするには `--respect-staged` を渡してください。そのスコープ内でステージングされたファイルがない場合、コマンドはエラーなしで `{ committed: false, reason: 'nothing staged' }` を返します。コミット時の末尾 `-- ` パス指定は両モードで適用されるため、`--files` スコープ外でステージングされたファイルは決して含まれません(#3061 不変条件)。 -```bash # Web 検索(Brave API キーが必要) node gsd-tools.cjs websearch [--limit N] [--freshness day|week|month] ``` --- +## Graphify + +`.planning/graphs/` 内のプロジェクトナレッジグラフをビルド、クエリ、検査します。`config.json` で `graphify.enabled: true` が必要です([設定リファレンス](CONFIGURATION.md#graphify-settings) を参照)。 + +```bash +# ナレッジグラフをビルドまたは再ビルド +node gsd-tools.cjs graphify build + +# グラフで用語を検索 +node gsd-tools.cjs graphify query + +# グラフの鮮度と統計を表示 +node gsd-tools.cjs graphify status + +# 前回のビルドからの変更を表示 +node gsd-tools.cjs graphify diff + +# 現在のグラフの名前付きスナップショットを書き込む +node gsd-tools.cjs graphify snapshot [name] +``` + +ユーザー向けエントリーポイント: `/gsd-graphify`([コマンドリファレンス](COMMANDS.md#gsd-graphify) を参照)。 + +--- + ## モジュールアーキテクチャ | モジュール | ファイル | エクスポート | |------------|----------|--------------| -| Core | `lib/core.cjs` | `error()`, `output()`, `parseArgs()`, 共通ユーティリティ | +| Core | `lib/core.cjs` | `error()`, `output()`, `parseArgs()`、共通ユーティリティ、互換性再エクスポート | | State | `lib/state.cjs` | すべての `state` サブコマンド、`state-snapshot` | | Phase | `lib/phase.cjs` | フェーズ CRUD、`find-phase`、`phase-plan-index`、`phases list` | +| Planning Workspace | `lib/planning-workspace.cjs` | プランニングシーム: `planningDir`、`planningPaths`、アクティブワークストリームルーティング、`.planning/.lock` | | Roadmap | `lib/roadmap.cjs` | ロードマップ解析、フェーズ抽出、進捗更新 | | Config | `lib/config.cjs` | 設定の読み書き、セクション初期化 | | Verify | `lib/verify.cjs` | すべての検証・バリデーションコマンド | @@ -365,3 +464,36 @@ node gsd-tools.cjs websearch [--limit N] [--freshness day|week|month] | UAT | `lib/uat.cjs` | 全フェーズ横断 UAT/検証監査 | | Profile Output | `lib/profile-output.cjs` | 開発者プロファイルのフォーマット | | Profile Pipeline | `lib/profile-pipeline.cjs` | セッション分析パイプライン | +| Graphify | `lib/graphify.cjs` | ナレッジグラフのビルド/クエリ/ステータス/差分/スナップショット(`/gsd-graphify` のバックエンド) | +| Learnings | `lib/learnings.cjs` | フェーズ/SUMMARY アーティファクトからの学習抽出(`/gsd-extract-learnings` のバックエンド) | +| Audit | `lib/audit.cjs` | フェーズ/マイルストーン監査キューハンドラ; `audit-open` ヘルパー | +| GSD2 Import | `lib/gsd2-import.cjs` | GSD-2 プロジェクトからのリバースマイグレーションインポーター(`/gsd-import --from-gsd2` のバックエンド) | +| Intel | `lib/intel.cjs` | クエリ可能なコードベースインテリジェンスインデックス(`/gsd-map-codebase --query` のバックエンド) | + +--- + +## レビュアー CLI ルーティング + +`review.models.` はレビュアーフレーバーをコードレビューワークフローが呼び出すシェルコマンドにマッピングします。[`/gsd-config --integrations`](COMMANDS.md#gsd-config) または直接設定できます: + +```bash +node gsd-tools.cjs config-set review.models.codex "codex exec --model gpt-5" +node gsd-tools.cjs config-set review.models.gemini "gemini -m gemini-2.5-pro" +node gsd-tools.cjs config-set review.models.opencode "opencode run --model claude-sonnet-4" +node gsd-tools.cjs config-set review.models.claude "" # クリア — セッションモデルにフォールバック +``` + +スラッグは `[a-zA-Z0-9_-]+` に対してバリデーションされます。空またはパスを含むスラッグは拒否されます。完全なフィールドリファレンスは [`docs/CONFIGURATION.md`](CONFIGURATION.md#code-review-cli-routing) を参照してください。 + +## シークレット処理 + +`/gsd-settings` で設定された API キー(`brave_search`、`firecrawl`、`exa_search`)は `.planning/config.json` に平文で書き込まれますが、`config-set` / `config-get` のすべての出力、確認テーブル、インタラクティブプロンプトでは(`****` として)マスクされます。マスキングの実装は `get-shit-done/bin/lib/secrets.cjs` を参照してください。`config.json` ファイル自体がセキュリティ境界です — ファイルシステムのパーミッションで保護し、git には含めないようにしてください(`.planning/` はデフォルトで gitignore されます)。 + +--- + +## Related + +- [Commands](COMMANDS.md) +- [Configuration](CONFIGURATION.md) +- [Architecture](ARCHITECTURE.md) +- [docs index](README.md) diff --git a/docs/ja-JP/COMMANDS.md b/docs/ja-JP/COMMANDS.md index 07cd1ea93..8bfad5ab7 100644 --- a/docs/ja-JP/COMMANDS.md +++ b/docs/ja-JP/COMMANDS.md @@ -1,88 +1,82 @@ -# GSD コマンドリファレンス +# GSD Core コマンドリファレンス -> コマンド構文、フラグ、オプション、使用例の完全なリファレンスです。機能の詳細については[機能リファレンス](FEATURES.md)を、ワークフローのチュートリアルについては[ユーザーガイド](USER-GUIDE.md)をご覧ください。 +> GSD Core のコマンドリファレンス — すべての安定版コマンドの構文、フラグ、オプション、および使用例。機能の詳細については [機能リファレンス](../FEATURES.md) を、ワークフローの解説については [ユーザーガイド](../USER-GUIDE.md) を、ドキュメントのインデックスについては [README](../README.md) を参照してください。 --- ## コマンド構文 -- **Claude Code / Gemini / Copilot:** `/gsd-command-name [args]` -- **OpenCode / Kilo:** `/gsd-command-name [args]` +- **Claude Code / Copilot / OpenCode / Kilo:** `/gsd-command-name [args]`(ハイフン形式) +- **Gemini CLI:** `/gsd:command-name [args]`(コロン形式 — Gemini は `gsd:` 配下にコマンドを名前空間化します) - **Codex:** `$gsd-command-name [args]` +ハイフン形式とコロン形式は、*同じコマンドのランタイム固有の表記*です。どのランタイムを使用していても、インストーラーが正しい形式をランタイムのコマンドディレクトリに書き込みます。 + +--- + +## 名前空間メタスキル + +v1.40 では、最初のステージエントリーポイントとして6つの名前空間ルーターが提供されています。これらは積極的なスキルリストのトークンコストを低く保ちます(6つのルーターで約120トークン、フラットな86スキルのリストでは約2,150トークン)。一方、フルサーフェスは直接呼び出し可能なままです。モデルは名前空間を選択し、具体的なサブスキルにルーティングします。[#2792](https://github.com/open-gsd/gsd-core/issues/2792) を参照してください。 + +| コマンド | ルーティング先 | +|---------|-----------| +| `/gsd-workflow` | フェーズパイプライン — discuss / plan / execute / verify / phase / progress | +| `/gsd-project` | プロジェクトライフサイクル — マイルストーン、監査、サマリー | +| `/gsd-quality` | 品質ゲート — コードレビュー、デバッグ、監査、セキュリティ、eval、UI | +| `/gsd-context` | コードベースインテリジェンス — map、graphify、docs、learnings | +| `/gsd-manage` | 管理 — config、workspace、workstreams、thread、update、ship、inbox | +| `/gsd-ideate` | 探索とキャプチャ — explore、sketch、spike、spec、capture | + +名前空間スキルは**追加的**です — 既存のすべての具体的なコマンド(例: `/gsd-plan-phase`、`/gsd-code-review --fix`)は引き続き直接呼び出せます。 + --- ## コアワークフローコマンド ### `/gsd-new-project` -詳細なコンテキスト収集を行い、新しいプロジェクトを初期化します。 +深いコンテキスト収集を伴う新規プロジェクトの初期化。 | フラグ | 説明 | |------|-------------| -| `--auto @file.md` | ドキュメントから自動抽出し、対話的な質問をスキップ | +| `--auto @file.md` | ドキュメントから自動抽出し、インタラクティブな質問をスキップ | **前提条件:** 既存の `.planning/PROJECT.md` がないこと **生成物:** `PROJECT.md`、`REQUIREMENTS.md`、`ROADMAP.md`、`STATE.md`、`config.json`、`research/`、`CLAUDE.md` ```bash -/gsd-new-project # 対話モード -/gsd-new-project --auto @prd.md # PRDから自動抽出 +/gsd-new-project # インタラクティブモード +/gsd-new-project --auto @prd.md # PRD から自動抽出 ``` --- -### `/gsd-workspace --new` +### `/gsd-workspace` -リポジトリのコピーと独立した `.planning/` ディレクトリを持つ分離されたワークスペースを作成します。 +GSD ワークスペースを管理 — リポジトリコピーと独立した `.planning/` ディレクトリを持つ隔離されたワークスペース環境を作成、一覧表示、または削除します。 | フラグ | 説明 | |------|-------------| -| `--name ` | ワークスペース名(必須) | -| `--repos repo1,repo2` | カンマ区切りのリポジトリパスまたは名前 | -| `--path /target` | 対象ディレクトリ(デフォルト: `~/gsd-workspaces/`) | +| `--new` | 新しいワークスペースを作成(`--name`、`--repos` などと組み合わせて使用) | +| `--list` | アクティブな GSD ワークスペースとそのステータスを一覧表示 | +| `--remove ` | ワークスペースを削除し、git ワークツリーをクリーンアップ | +| `--name ` | ワークスペース名(`--new` と組み合わせて使用) | +| `--repos repo1,repo2` | カンマ区切りのリポジトリパスまたは名前(`--new` と組み合わせて使用) | +| `--path /target` | ターゲットディレクトリ(デフォルト: `~/gsd-workspaces/`) | | `--strategy worktree\|clone` | コピー戦略(デフォルト: `worktree`) | | `--branch ` | チェックアウトするブランチ(デフォルト: `workspace/`) | -| `--auto` | 対話的な質問をスキップ | +| `--auto` | インタラクティブな質問をスキップ | **ユースケース:** -- マルチリポ: リポジトリのサブセットを分離されたGSD状態で作業 -- 機能の分離: `--repos .` で現在のリポジトリのworktreeを作成 +- マルチリポジトリ: 隔離された GSD 状態で一部のリポジトリに取り組む +- 機能の隔離: `--repos .` で現在のリポジトリのワークツリーを作成 -**生成物:** `WORKSPACE.md`、`.planning/`、リポジトリコピー(worktreeまたはclone) +**生成物:** `WORKSPACE.md`、`.planning/`、リポジトリコピー(ワークツリーまたはクローン) ```bash /gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI -/gsd-workspace --new --name feature-b --repos . --strategy worktree # 同一リポジトリの分離 -/gsd-workspace --new --name spike --repos api,web --strategy clone # フルクローン -``` - ---- - -### `/gsd-workspace --list` - -アクティブなGSDワークスペースとそのステータスを一覧表示します。 - -**スキャン対象:** `~/gsd-workspaces/` 内の `WORKSPACE.md` マニフェスト -**表示内容:** 名前、リポジトリ数、戦略、GSDプロジェクトのステータス - -```bash +/gsd-workspace --new --name feature-b --repos . --strategy worktree # 同一リポジトリの隔離 /gsd-workspace --list -``` - ---- - -### `/gsd-workspace --remove` - -ワークスペースを削除し、git worktreeをクリーンアップします。 - -| 引数 | 必須 | 説明 | -|----------|----------|-------------| -| `` | はい | 削除するワークスペース名 | - -**安全性:** コミットされていない変更があるリポジトリの削除を拒否します。名前の確認が必要です。 - -```bash /gsd-workspace --remove feature-b ``` @@ -90,190 +84,242 @@ ### `/gsd-discuss-phase` -計画の前に実装に関する意思決定を記録します。 +計画前にアダプティブな質問を通じてフェーズのコンテキストを収集します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | いいえ | フェーズ番号(デフォルトは現在のフェーズ) | +| `N` | No | フェーズ番号(デフォルト: 現在のフェーズ) | | フラグ | 説明 | |------|-------------| -| `--auto` | すべての質問で推奨デフォルトを自動選択 | -| `--batch` | 質問を一つずつではなくバッチ取り込みでグループ化 | -| `--analyze` | ディスカッション中にトレードオフ分析を追加 | -| `--chain` | discuss → plan → execute を1つのフローで自動チェーン (v1.31) | -| `--power` | 準備済み回答ファイルから一括入力で質問に回答 (v1.32) | +| `--all` | エリア選択をスキップ — すべてのグレーエリアをインタラクティブに議論(自動進行なし) | +| `--auto` | すべての質問に対して推奨デフォルトを自動選択 | +| `--batch` | 質問を一件ずつではなくバッチ入力のためにグループ化 | +| `--analyze` | 議論中にトレードオフ分析を追加 | +| `--power` | 準備済みの回答ファイルからファイルベースの一括質問回答 | +| `--assumptions` | インタラクティブセッションなしで、フェーズに関する Claude の実装上の前提を表示 | **前提条件:** `.planning/ROADMAP.md` が存在すること **生成物:** `{phase}-CONTEXT.md`、`{phase}-DISCUSSION-LOG.md`(監査証跡) ```bash -/gsd-discuss-phase 1 # フェーズ1の対話的ディスカッション -/gsd-discuss-phase 3 --auto # フェーズ3でデフォルトを自動選択 +/gsd-discuss-phase 1 # フェーズ1のインタラクティブな議論 +/gsd-discuss-phase 1 --all # 選択ステップなしですべてのグレーエリアを議論 +/gsd-discuss-phase 3 --auto # フェーズ3のデフォルトを自動選択 /gsd-discuss-phase --batch # 現在のフェーズのバッチモード -/gsd-discuss-phase 2 --analyze # トレードオフ分析付きディスカッション +/gsd-discuss-phase 2 --analyze # トレードオフ分析付きの議論 +/gsd-discuss-phase 1 --power # ファイルからの一括回答 +/gsd-discuss-phase 3 --assumptions # 計画前に Claude の前提を表示 ``` --- ### `/gsd-ui-phase` -フロントエンドフェーズのUIデザイン契約書を生成します。 +フロントエンドフェーズの UI デザインコントラクトを生成します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | いいえ | フェーズ番号(デフォルトは現在のフェーズ) | +| `N` | No | フェーズ番号(デフォルト: 現在のフェーズ) | -**前提条件:** `.planning/ROADMAP.md` が存在し、フェーズにフロントエンド/UI作業があること +**前提条件:** `.planning/ROADMAP.md` が存在し、フェーズにフロントエンド/UI 作業があること **生成物:** `{phase}-UI-SPEC.md` ```bash -/gsd-ui-phase 2 # フェーズ2のデザイン契約書 +/gsd-ui-phase 2 # フェーズ2のデザインコントラクト ``` --- ### `/gsd-plan-phase` -フェーズの調査、計画、検証を行います。 +フェーズのリサーチ、計画、および検証を行います。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | いいえ | フェーズ番号(デフォルトは次の未計画フェーズ) | +| `N` | No | フェーズ番号(デフォルト: 次の未計画フェーズ) | | フラグ | 説明 | |------|-------------| -| `--auto` | 対話的な確認をスキップ | -| `--research` | RESEARCH.mdが存在しても強制的に再調査 | -| `--skip-research` | ドメイン調査ステップをスキップ | -| `--gaps` | ギャップ解消モード(VERIFICATION.mdを読み込み、調査をスキップ) | +| `--auto` | インタラクティブな確認をスキップ | +| `--research` | RESEARCH.md が存在する場合でも強制的に再リサーチ | +| `--skip-research` | ドメインリサーチステップをスキップ | +| `--research-phase ` | リサーチのみモード: フェーズ `` 用にリサーチャーを起動し、RESEARCH.md を書き込んでからプランナーの前に終了。削除されたスタンドアロンリサーチコマンドを置き換えます(#3042)。 | +| `--view` | リサーチのみ修飾子: `--research-phase` と組み合わせて使用すると、既存の RESEARCH.md を標準出力に表示して終了(起動なし)。 | +| `--gaps` | ギャップクローズモード(VERIFICATION.md を読み込み、リサーチをスキップ) | | `--skip-verify` | プランチェッカーの検証ループをスキップ | -| `--prd ` | discuss-phaseの代わりにPRDファイルをコンテキストとして使用 | -| `--reviews` | REVIEWS.mdのクロスAIレビューフィードバックで再計画 | +| `--prd ` | コンテキストに discuss-phase の代わりに PRD ファイルを使用 | +| `--ingest ` | コンテキスト統合に discuss-phase の代わりに ADR ファイルを使用 | +| `--ingest-format ` | `--ingest` のオプション ADR パーサーフォーマットの上書き | +| `--reviews` | REVIEWS.md のクロス AI レビューフィードバックで再計画 | +| `--validate` | 計画開始前に状態検証を実行 | +| `--bounce` | 計画後に外部プランバウンス検証を実行(`workflow.plan_bounce_script` を使用) | +| `--skip-bounce` | 設定で有効になっている場合でもプランバウンスをスキップ | +| `--mvp` | 垂直 MVP モード — プランナーはタスクを水平レイヤーではなく機能スライス(UI→API→DB)として整理します。以前のフェーズサマリーがない新規プロジェクトのフェーズ1では、`SKELETON.md`(Walking Skeleton)も生成します。ROADMAP.md の `**Mode:** mvp` でフェーズごとに永続化でき、フラグなしで `--mvp` が自動適用されます。 | +| `--tdd` | TDD モード — プランナーは動作追加タスクに `type: tdd` を適用し、各タスクが失敗するテストから始まるようにします。`--mvp` と組み合わせ可能: `--mvp --tdd` は、すべての動作追加タスクが red-green から始まる垂直スライスを生成します。 | **前提条件:** `.planning/ROADMAP.md` が存在すること -**生成物:** `{phase}-RESEARCH.md`、`{phase}-{N}-PLAN.md`、`{phase}-VALIDATION.md` +**生成物:** `{phase}-RESEARCH.md`、`{phase}-{N}-PLAN.md`、`{phase}-VALIDATION.md`; Walking Skeleton モードが発火した場合は `{phase}/SKELETON.md` + +**リサーチのみモード(`--research-phase `):** +- 修飾子なし: RESEARCH.md が既に存在する場合は `update / view / skip` を促します。 +- `--research` 付き: 強制更新 — 無条件にリサーチャーを再起動し、プロンプトなし。 +- `--view` 付き: 既存の RESEARCH.md を標準出力に表示し、起動なし。RESEARCH.md がない場合はエラー。 + +**パッケージ正当性ゲート(v1.42.1):** +リサーチャーが外部パッケージを推奨する場合、各パッケージに対して `slopcheck install --json` を実行し、Registry、Age、Downloads、Source Repo、および slopcheck の評決を記録した `## Package Legitimacy Audit` テーブルを RESEARCH.md に書き込みます。評決: + +- `[SLOP]` — パッケージは RESEARCH.md から完全に削除され、プランナーには届かない +- `[SUS]` — パッケージにフラグが付けられ、プランナーはインストールタスクの前に `checkpoint:human-verify` を挿入 +- `[OK]` — パッケージが承認され、チェックポイントは追加されない + +WebSearch から取得したパッケージは `[ASSUMED]`(`[VERIFIED]` ではない)とタグ付けされ、`[SUS]` と同様に扱われます — インストール前に人間によるチェックポイントが設けられます。`slopcheck` がインストールできない場合、すべての推奨パッケージは `[ASSUMED]` とタグ付けされ、ゲートが設けられます。 + +詳細については、[ユーザーガイドのパッケージ正当性ゲート](../USER-GUIDE.md#package-legitimacy-gate-v1421)(チェックポイント形式、評決テーブル、トラブルシューティングを含む)を参照してください。 ```bash -/gsd-plan-phase 1 # フェーズ1の調査+計画+検証 -/gsd-plan-phase 3 --skip-research # 調査なしで計画(馴染みのあるドメイン) -/gsd-plan-phase --auto # 非対話型の計画 +/gsd-plan-phase 1 # フェーズ1のリサーチ + 計画 + 検証 +/gsd-plan-phase 3 --skip-research # リサーチなしの計画(既知のドメイン) +/gsd-plan-phase --auto # 非インタラクティブな計画 +/gsd-plan-phase 2 --validate # 計画前に状態を検証 +/gsd-plan-phase 1 --bounce # 計画 + 外部バウンス検証 +/gsd-plan-phase 2 --ingest docs/adr/0010.md # コンテキスト統合のための ADR エクスプレスパス +/gsd-plan-phase 2 --ingest 'docs/adr/00*.md' --ingest-format auto +/gsd-plan-phase --research-phase 4 # フェーズ4のリサーチのみ(RESEARCH.md が存在する場合はプロンプト) +/gsd-plan-phase --research-phase 4 --view # 既存の RESEARCH.md を表示し、起動なし +/gsd-plan-phase --research-phase 4 --research # 強制更新リサーチ、プロンプトなし +/gsd-plan-phase 1 --mvp # フェーズ1の垂直スライス計画 +/gsd-plan-phase 1 --mvp --tdd # 垂直スライス + 動作追加タスクごとに失敗するテスト +``` + +--- + +### `/gsd-plan-review-convergence` + +クロス AI プラン収束ループ — HIGH の懸念がなくなるまでレビューフィードバックで再計画します。`plan-phase → review → replan → re-review` のサイクルを実行します(デフォルトで最大3サイクル)。計画とレビューのために隔離されたエージェントを起動し、オーケストレーターはループ制御、HIGH 懸念のカウント、ストール検出、およびエスカレーションを処理します。 + +| 引数 / フラグ | 必須 | 説明 | +|-----------------|----------|-------------| +| `N` | **Yes** | 計画およびレビューするフェーズ番号 | +| `--codex` / `--gemini` / `--claude` / `--opencode` | No | 単一レビュアーの選択 | +| `--all` | No | 設定済みのすべてのレビュアーを並列で実行 | +| `--max-cycles N` | No | サイクル上限を上書き(デフォルト3) | + +**終了動作:** HIGH カウントがゼロになるとループが終了します。HIGH カウントがサイクル間で減少しない場合はストール検出が警告します。`--max-cycles` に達しても HIGH 懸念が残っている場合、エスカレーションゲートがユーザーに続行するか手動でレビューするかを確認します。 + +```bash +/gsd-plan-review-convergence 3 # デフォルトレビュアー、3サイクル +/gsd-plan-review-convergence 3 --codex # Codex のみのレビュー +/gsd-plan-review-convergence 3 --all --max-cycles 5 +``` + +--- + +### `/gsd-ultraplan-phase` + +**[BETA]** Claude Code の ultraplan クラウドにプランフェーズをオフロードし、ブラウザでレビューして戻りのインポートを行います。計画はリモートでドラフトされるためターミナルは自由なままです。ブラウザでインラインコメントをレビューし、確定した計画を `/gsd-import` を使って `.planning/` にインポートします。 + +| フラグ | 必須 | 説明 | +|------|----------|-------------| +| `N` | **Yes** | リモートで計画するフェーズ番号 | + +**隔離:** `/gsd-plan-phase` から意図的に分離されており、ultraplan の変更がコア計画パイプラインに影響を与えないようになっています。 + +```bash +/gsd-ultraplan-phase 4 # フェーズ4の計画をオフロード ``` --- ### `/gsd-execute-phase` -フェーズ内のすべてのプランをウェーブベースの並列化で実行するか、特定のウェーブを実行します。 +波ベースの並列化でフェーズ内のすべての計画を実行するか、特定の波のみを実行します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | **はい** | 実行するフェーズ番号 | -| `--wave N` | いいえ | フェーズ内のウェーブ `N` のみを実行 | +| `N` | **Yes** | 実行するフェーズ番号 | +| `--wave N` | No | フェーズ内の波 `N` のみを実行 | +| `--validate` | No | 実行開始前に状態検証を実行 | +| `--cross-ai` | No | 外部 AI CLI に実行を委任(`workflow.cross_ai_command` を使用) | +| `--no-cross-ai` | No | 設定でクロス AI が有効な場合でもローカル実行を強制 | -**前提条件:** フェーズにPLAN.mdファイルがあること -**生成物:** プランごとの `{phase}-{N}-SUMMARY.md`、gitコミット、フェーズ完了時に `{phase}-VERIFICATION.md` +**前提条件:** フェーズに PLAN.md ファイルがあること +**生成物:** 計画ごとの `{phase}-{N}-SUMMARY.md`、git コミット、フェーズが完全に完了すると `{phase}-VERIFICATION.md` + +**パッケージインストール失敗(v1.42.1):** 計画のインストールステップが失敗した場合、エグゼキューターは `checkpoint:human-verify` を表示して停止します。類似した名前の代替パッケージを自動インストールすることはありません。これは意図的なものです — パッケージ名を暗黙的に置き換えることは、スロップスクワッティングが広がる経路だからです。レジストリページでパッケージを確認した後にチェックポイントに応答してください。 ```bash /gsd-execute-phase 1 # フェーズ1を実行 -/gsd-execute-phase 1 --wave 2 # ウェーブ2のみを実行 +/gsd-execute-phase 1 --wave 2 # 波2のみを実行 +/gsd-execute-phase 1 --validate # 実行前に状態を検証 +/gsd-execute-phase 2 --cross-ai # フェーズ2を外部 AI CLI に委任 ``` --- ### `/gsd-verify-work` -自動診断付きのユーザー受入テスト。 +自動診断付きのユーザー受け入れテスト。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | いいえ | フェーズ番号(デフォルトは最後に実行されたフェーズ) | +| `N` | No | フェーズ番号(デフォルト: 最後に実行されたフェーズ) | **前提条件:** フェーズが実行済みであること -**生成物:** `{phase}-UAT.md`、問題が見つかった場合は修正プラン +**生成物:** `{phase}-UAT.md`、問題が見つかった場合は修正計画 + +ブラウザバックの UAT には、設定済みのブラウザ MCP サーバーを使用してください。現在の Open GSD コンパニオンは `gsd-browser`(`gsd-browser mcp`)で、決定論的なナビゲーション、バージョン管理された参照、アサーション、スクリーンショット、ビジュアル差分、録画、および人間への引き継ぎを提供します。既に設定済みのレガシー Playwright MCP サーバーも引き続き使用できます。 ```bash -/gsd-verify-work 1 # フェーズ1のUAT +/gsd-verify-work 1 # フェーズ1の UAT ``` --- -### `/gsd-progress --next` - -次の論理的なワークフローステップに自動的に進みます。プロジェクトの状態を読み取り、適切なコマンドを実行します。 - -**前提条件:** `.planning/` ディレクトリが存在すること -**動作:** -- プロジェクトなし → `/gsd-new-project` を提案 -- フェーズにディスカッションが必要 → `/gsd-discuss-phase` を実行 -- フェーズに計画が必要 → `/gsd-plan-phase` を実行 -- フェーズに実行が必要 → `/gsd-execute-phase` を実行 -- フェーズに検証が必要 → `/gsd-verify-work` を実行 -- 全フェーズ完了 → `/gsd-complete-milestone` を提案 - -```bash -/gsd-progress --next # 次のステップを自動検出して実行 -``` - ---- - -### `/gsd-pause-work --report` - -作業サマリー、成果、推定リソース使用量を含むセッションレポートを生成します。 - -**前提条件:** 直近の作業があるアクティブなプロジェクト -**生成物:** `.planning/reports/SESSION_REPORT.md` - -```bash -/gsd-pause-work --report # セッション後のサマリーを生成 -``` - -**レポートに含まれる内容:** -- 実施した作業(コミット、実行したプラン、進行したフェーズ) -- 成果と成果物 -- ブロッカーと意思決定 -- 推定トークン/コスト使用量 -- 次のステップの推奨事項 - --- ### `/gsd-ship` -完了したフェーズの作業から自動生成された本文でPRを作成します。 +完了したフェーズ作業から自動生成された本文付きの PR を作成します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | いいえ | フェーズ番号またはマイルストーンバージョン(例: `4` または `v1.0`) | -| `--draft` | いいえ | ドラフトPRとして作成 | +| `N` | No | フェーズ番号またはマイルストーンバージョン(例: `4` または `v1.0`) | +| `--draft` | No | ドラフト PR として作成 | -**前提条件:** フェーズが検証済み(`/gsd-verify-work` が合格)、`gh` CLIがインストールされ認証済みであること -**生成物:** 計画アーティファクトからリッチな本文を持つGitHub PR、STATE.mdの更新 +**前提条件:** フェーズが検証済み(`/gsd-verify-work` が合格)、`gh` CLI がインストールされ認証済みであること +**生成物:** 計画アーティファクトから豊富な本文を持つ GitHub PR、STATE.md が更新される ```bash -/gsd-ship 4 # フェーズ4をシップ -/gsd-ship 4 --draft # ドラフトPRとしてシップ +/gsd-ship 4 # フェーズ4を ship +/gsd-ship 4 --draft # ドラフト PR として ship ``` -**PR本文に含まれる内容:** -- ROADMAP.mdからのフェーズ目標 -- SUMMARY.mdファイルからの変更サマリー +**PR 本文の内容:** +- ROADMAP.md からのフェーズ目標 +- SUMMARY.md ファイルからの変更サマリー - 対応した要件(REQ-ID) - 検証ステータス -- 主要な意思決定 +- 主要な決定事項 +- `ship.pr_body_sections` から設定されたオプションの PRD スタイルセクション + +カスタム PR 本文セクションについては、[カスタム PR 本文セクション](../ship-pr-body-sections.md)(オンボーディング、例、検証ルールを含む)を参照してください。 --- ### `/gsd-ui-review` -実装済みフロントエンドの事後的な6軸ビジュアル監査。 +実装済みフロントエンドの事後的な6ピラービジュアル監査。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | いいえ | フェーズ番号(デフォルトは最後に実行されたフェーズ) | +| `N` | No | フェーズ番号(デフォルト: 最後に実行されたフェーズ) | -**前提条件:** プロジェクトにフロントエンドコードがあること(単体で動作、GSDプロジェクト不要) +**前提条件:** プロジェクトにフロントエンドコードがあること(スタンドアロンで動作し、GSD プロジェクトは不要) **生成物:** `{phase}-UI-REVIEW.md`、`.planning/ui-reviews/` 内のスクリーンショット +より豊富なビジュアル証拠のために、`gsd-browser` や別のブラウザ MCP サーバーと組み合わせて使用すると、監査がスクリーンショット、状態、コンソール/ネットワークコンテキスト、および再現可能なインタラクション手順をキャプチャできます。 + ```bash /gsd-ui-review # 現在のフェーズを監査 /gsd-ui-review 3 # フェーズ3を監査 @@ -283,10 +329,10 @@ ### `/gsd-audit-uat` -全フェーズを横断した未処理のUATおよび検証項目の監査。 +すべての未解決の UAT および検証項目のクロスフェーズ監査。 -**前提条件:** 少なくとも1つのフェーズがUATまたは検証付きで実行されていること -**生成物:** カテゴリ分類された監査レポートと人間用テストプラン +**前提条件:** 少なくとも1つのフェーズが UAT または検証付きで実行済みであること +**生成物:** 人間によるテスト計画を含むカテゴリ別監査レポート ```bash /gsd-audit-uat @@ -296,9 +342,9 @@ ### `/gsd-audit-milestone` -マイルストーンが完了定義を満たしたかを検証します。 +マイルストーンが完了の定義を満たしていることを検証します。 -**前提条件:** 全フェーズが実行済みであること +**前提条件:** すべてのフェーズが実行済みであること **生成物:** ギャップ分析付き監査レポート ```bash @@ -309,10 +355,10 @@ ### `/gsd-complete-milestone` -マイルストーンをアーカイブし、リリースをタグ付けします。 +マイルストーンをアーカイブし、リリースにタグを付けます。 **前提条件:** マイルストーン監査が完了していること(推奨) -**生成物:** `MILESTONES.md` エントリ、gitタグ +**生成物:** `MILESTONES.md` エントリ、git タグ ```bash /gsd-complete-milestone @@ -322,26 +368,26 @@ ### `/gsd-milestone-summary` -チームのオンボーディングやレビューのために、マイルストーンのアーティファクトから包括的なプロジェクトサマリーを生成します。 +チームのオンボーディングとレビューのためにマイルストーンアーティファクトから包括的なプロジェクトサマリーを生成します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `version` | いいえ | マイルストーンバージョン(デフォルトは現在/最新のマイルストーン) | +| `version` | No | マイルストーンバージョン(デフォルト: 現在の/最新のマイルストーン) | **前提条件:** 少なくとも1つの完了済みまたは進行中のマイルストーンがあること **生成物:** `.planning/reports/MILESTONE_SUMMARY-v{version}.md` -**サマリーに含まれる内容:** -- 概要、アーキテクチャの意思決定、フェーズごとの詳細分析 -- 主要な意思決定とトレードオフ +**サマリーの内容:** +- 概要、アーキテクチャ決定、フェーズ別の内訳 +- 主要な決定とトレードオフ - 要件カバレッジ -- 技術的負債と先送り項目 -- 新しいチームメンバー向けのスタートガイド -- 生成後に対話的なQ&Aを提供 +- 技術的負債と延期された項目 +- 新しいチームメンバー向けのスタートアップガイド +- 生成後にインタラクティブな Q&A を提供 ```bash -/gsd-milestone-summary # 現在のマイルストーンをサマリー -/gsd-milestone-summary v1.0 # 特定のマイルストーンをサマリー +/gsd-milestone-summary # 現在のマイルストーンのサマリー +/gsd-milestone-summary v1.0 # 特定のマイルストーンのサマリー ``` --- @@ -352,16 +398,16 @@ | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `name` | いいえ | マイルストーン名 | -| `--reset-phase-numbers` | いいえ | 新しいマイルストーンをフェーズ1から開始し、ロードマップ作成前に古いフェーズディレクトリをアーカイブ | +| `name` | No | マイルストーン名 | +| `--reset-phase-numbers` | No | 新しいマイルストーンをフェーズ1から再開し、ロードマップ作成前に古いフェーズディレクトリをアーカイブ | -**前提条件:** 前のマイルストーンが完了していること +**前提条件:** 以前のマイルストーンが完了していること **生成物:** 更新された `PROJECT.md`、新しい `REQUIREMENTS.md`、新しい `ROADMAP.md` ```bash -/gsd-new-milestone # 対話モード +/gsd-new-milestone # インタラクティブ /gsd-new-milestone "v2.0 Mobile" # 名前付きマイルストーン -/gsd-new-milestone --reset-phase-numbers "v2.0 Mobile" # マイルストーン番号を1からリスタート +/gsd-new-milestone --reset-phase-numbers "v2.0 Mobile" # マイルストーン番号付けを1から再開 ``` --- @@ -370,68 +416,64 @@ ### `/gsd-phase` -ロードマップに新しいフェーズを追加します。 +ROADMAP.md のフェーズの CRUD — 単一の統合コマンドでフェーズを追加、挿入、削除、または編集します。 + +| フラグ | 説明 | +|------|-------------| +| (なし) | 現在のマイルストーンの末尾に新しい整数フェーズを追加 | +| `--insert ` | 緊急作業をフェーズ N の後に小数フェーズとして挿入(例: 3.1) | +| `--remove ` | 将来のフェーズを削除し、後続のフェーズを番号付け直し | +| `--edit ` | 既存フェーズの任意のフィールドをその場で編集 | +| `--force` | 進行中または完了済みのフェーズの編集を許可(`--edit` と組み合わせて使用) | + +**前提条件:** `.planning/ROADMAP.md` が存在すること +**生成物:** 更新された ROADMAP.md ```bash -/gsd-phase # 対話型 — フェーズの説明を入力 +/gsd-phase "Add authentication system" # 説明付きで新しいフェーズを追加 +/gsd-phase --insert 3 "Fix auth race condition" # フェーズ3と4の間に挿入 → 3.1 を作成 +/gsd-phase --remove 7 # フェーズ7を削除し、8→7、9→8 などと番号付け直し +/gsd-phase --edit 5 # フェーズ5の任意のフィールドを編集 +/gsd-phase --edit 5 --force # 進行中または完了済みの場合でもフェーズ5を編集 ``` -### `/gsd-phase --insert` +--- -小数番号を使用して、フェーズ間に緊急の作業を挿入します。 +### `/gsd-mvp-phase` + +フェーズのガイド付き MVP 計画 — ユーザーストーリーを入力するよう促し、SPIDR 分割チェックを実行し、ROADMAP.md に `**Mode:** mvp` を書き込み、次に `/gsd-plan-phase` に委任します(ロードマップフィールドを介して MVP モードを自動検出)。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | いいえ | このフェーズ番号の後に挿入 | +| `N` | **Yes** | MVP モードに変換するフェーズ番号(整数または `2.1` のような小数) | + +| フラグ | 説明 | +|------|-------------| +| `--force` | `in_progress` または `completed` のフェーズの変換を許可 | + +**前提条件:** フェーズが ROADMAP.md に既に存在すること(`/gsd-new-project`、`/gsd-phase`、または `/gsd-phase --insert` で作成済み)。このコマンドは新しいフェーズを作成せず、既存のフェーズを変換します。 + +**動作:** 構造化されたユーザーストーリーを収集し、フォーマットを検証し、SPIDR 分割チェックを実行し、フェーズの ROADMAP.md セクションに `**Goal:**` と `**Mode:** mvp` を書き込み、次に `/gsd-plan-phase ` に委任します。ウォークスルーについては [MVP フェーズの計画方法](../USER-GUIDE.md#mvp-phase-planning) を参照してください。 + +**Walking Skeleton:** 以前のフェーズサマリーがない新規プロジェクトのフェーズ1で `--mvp`(または `mode: mvp`)が使用された場合に自動トリガーされます。プランナーは `PLAN.md` と並んで `SKELETON.md` を生成します。 + +**生成物:** 更新された ROADMAP.md、次に `/gsd-plan-phase` からのすべてのアーティファクト; Walking Skeleton モードが発火した場合は `SKELETON.md`。 ```bash -/gsd-phase --insert 3 # フェーズ3と4の間に挿入 → 3.1を作成 +/gsd-mvp-phase 1 # フェーズ1の MVP 計画 +/gsd-mvp-phase 2.1 # 小数フェーズの MVP 計画 +/gsd-mvp-phase 3 --force # 進行中の場合でもフェーズ3を変換 ``` -### `/gsd-phase --remove` - -将来のフェーズを削除し、後続のフェーズの番号を振り直します。 - -| 引数 | 必須 | 説明 | -|----------|----------|-------------| -| `N` | いいえ | 削除するフェーズ番号 | - -```bash -/gsd-phase --remove 7 # フェーズ7を削除、8→7、9→8等に番号振り直し -``` - -### `/gsd-discuss-phase --assumptions` - -計画前にClaudeの意図するアプローチをプレビューします。 - -| 引数 | 必須 | 説明 | -|----------|----------|-------------| -| `N` | いいえ | フェーズ番号 | - -```bash -/gsd-discuss-phase --assumptions 2 # フェーズ2の前提を確認 -``` - - -### `/gsd-plan-phase --research-phase` - -詳細なエコシステム調査のみを実行します(単体機能 — 通常は `/gsd-plan-phase` を使用してください)。 - -| 引数 | 必須 | 説明 | -|----------|----------|-------------| -| `N` | いいえ | フェーズ番号 | - -```bash -/gsd-plan-phase --research-phase 4 # フェーズ4のドメインを調査 -``` +--- ### `/gsd-validate-phase` -遡及的にNyquistバリデーションのギャップを監査・補填します。 +Nyquist 検証ギャップを事後的に監査して埋めます。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | いいえ | フェーズ番号 | +| `N` | No | フェーズ番号 | ```bash /gsd-validate-phase 2 # フェーズ2のテストカバレッジを監査 @@ -443,88 +485,219 @@ ### `/gsd-progress` -ステータスと次のステップを表示します。 +ステータス、次のステップを表示し、次の論理的なワークフローステップに自動的に進みます。プロジェクトの状態を読み込んで適切なアクションを決定します。 + +| フラグ | 説明 | +|------|-------------| +| `--next` | 手動のルート選択なしに次の論理的なワークフローステップに自動的に進む | +| `--do "task description"` | 自由形式の意図を分析し、最も適切な GSD コマンドにディスパッチ | +| `--forensic` | 標準レポートの後に6チェックの整合性監査を追加(STATE 整合性、孤立したハンドオフ、延期されたスコープドリフト、メモリフラグが付いた保留中の作業、ブロッキング todo、コミットされていないコード) | + +**自動ルーティング動作(`--next`):** +- プロジェクトなし → `/gsd-new-project` を提案 +- フェーズに議論が必要 → `/gsd-discuss-phase` を実行 +- フェーズに計画が必要 → `/gsd-plan-phase` を実行 +- フェーズに実行が必要 → `/gsd-execute-phase` を実行 +- フェーズに検証が必要 → `/gsd-verify-work` を実行 +- すべてのフェーズが完了 → `/gsd-complete-milestone` を提案 ```bash -/gsd-progress # "今どこにいる?次は何?" +/gsd-progress # 「今どこにいる?次は何?」と自動ルーティング +/gsd-progress --next # 次のステップに自動的に進む +/gsd-progress --do "fix the auth bug" # 自由形式の意図を最適な GSD コマンドにディスパッチ +/gsd-progress --forensic # 標準レポート + 整合性監査 ``` ### `/gsd-resume-work` -前回のセッションから完全なコンテキストを復元します。 +最後のセッションからフルコンテキストを復元します。 ```bash -/gsd-resume-work # コンテキストリセットまたは新しいセッション後に使用 +/gsd-resume-work # コンテキストリセットまたは新しいセッションの後 ``` ### `/gsd-pause-work` -フェーズの途中で中断する際にコンテキストのハンドオフを保存します。 +フェーズの途中で停止するときにコンテキストのハンドオフを保存します。 + +| フラグ | 説明 | +|------|-------------| +| `--report` | コミット、ファイル変更、フェーズ進捗をキャプチャするセッション後のサマリーを `.planning/reports/` に生成 | ```bash -/gsd-pause-work # continue-here.mdを作成 +/gsd-pause-work # continue-here.md を作成 +/gsd-pause-work --report # continue-here.md + セッションレポートを作成 ``` ### `/gsd-manager` -1つのターミナルから複数のフェーズを管理する対話的なコマンドセンター。 +1つのターミナルから複数のフェーズを管理するためのインタラクティブなコマンドセンター。 **前提条件:** `.planning/ROADMAP.md` が存在すること **動作:** -- 全フェーズのビジュアルステータスインジケータ付きダッシュボード -- 依存関係と進捗に基づいた最適な次のアクションを推奨 -- 作業のディスパッチ: discussはインラインで実行、plan/executeはバックグラウンドエージェントとして実行 -- 1つのターミナルから複数フェーズの作業を並列化するパワーユーザー向け +- 視覚的なステータスインジケーター付きのすべてのフェーズのダッシュボード +- 依存関係と進捗に基づいて最適な次のアクションを推奨 +- 作業をディスパッチ: discuss はインラインで実行、plan/execute はバックグラウンドエージェントとして実行 +- 1つのターミナルから複数のフェーズで作業を並列化するパワーユーザー向けに設計 +- `manager.flags` 設定によるステップごとのパススルーフラグをサポート([設定](../CONFIGURATION.md#manager-passthrough-flags) を参照) ```bash -/gsd-manager # コ��ンドセンターダッシュボードを開く +/gsd-manager # コマンドセンターダッシュボードを開く +/gsd-manager --analyze-deps # 並列実行前に ROADMAP フェーズの依存関係を解析 ``` ---- +**チェックポイントハートビート(#2410):** -### `/gsd-manager --analyze-deps` +バックグラウンドの `execute-phase` 実行は、すべての波と計画の境界で `[checkpoint]` マーカーを出力します。これにより、Claude API の SSE ストリームが複数計画フェーズで `Stream idle timeout - partial response received` をトリガーするほど長くアイドル状態にならないようにします。フォーマットは次のとおりです: -フェーズ依存関係を検出し、ROADMAP.md に `Depends on` エントリを提案します。(v1.32) +``` +[checkpoint] phase {N} wave {W}/{M} starting, {count} plan(s), {P}/{Q} plans done +[checkpoint] phase {N} wave {W}/{M} plan {plan_id} starting ({P}/{Q} plans done) +[checkpoint] phase {N} wave {W}/{M} plan {plan_id} complete ({P}/{Q} plans done) +[checkpoint] phase {N} wave {W}/{M} complete, {P}/{Q} plans done ({ok}/{count} ok) +``` -**前提���件:** `.planning/ROADMAP.md` が存在すること -**検出方法:** ファイルオーバーラップ、セマンティック依存関係(API/スキーマのプロデューサーとコンシューマー)、データフロー依存関係 -**動作:** 依存関係提案テーブルを表示し、ユーザー確認後に ROADMAP.md の `Depends on` フィールドを更新します。 +バックグラウンドフェーズが途中で失敗した場合、トランスクリプトで `[checkpoint]` を grep すると最後に確認された境界を確認できます。マネージャーのバックグラウンド完了ハンドラーは、エージェントがエラーになったときにこれらのマーカーを使用して部分的な進捗を報告します。 -```bash -/gsd-manager --analyze-deps # 依存関係の分析と提案 +**マネージャーパススルーフラグ:** + +`.planning/config.json` の `manager.flags` 配下でステップごとのフラグを設定します。これらのフラグは各ディスパッチコマンドに追加されます: + +```json +{ + "manager": { + "flags": { + "discuss": "--auto", + "plan": "--skip-research", + "execute": "--validate" + } + } +} ``` --- ### `/gsd-help` -すべてのコマンドと使用ガイドを表示します。 +要求したティアで GSD コマンドを表示します。デフォルトは1画面に収まります; `--full` は完全なリファレンス; `` は1つのセクションに直接ジャンプします。 ```bash -/gsd-help # クイックリファレンス +/gsd-help # 1ページのツアー(デフォルト) +/gsd-help --brief # トップコマンドの ~10 行の1ライナーリフレッシャー +/gsd-help --full # 完全なリファレンス(すべてのコマンド、すべてのフラグ) +/gsd-help # 1つのセクションのみ(例: /gsd-help debug) +/gsd-help --brief # コンパクトなスコープ付きルックアップ — シグネチャ + 1行サマリー ``` +完全なエイリアステーブルについては `get-shit-done/workflows/help/modes/topic.md` を参照してください。不明なトピックは認識されたリストを表示します。 + --- ## ユーティリティコマンド +### `/gsd-explore` + +ソクラテス式のアイデア発想セッション — 探索的な質問を通じてアイデアをガイドし、オプションでリサーチを起動し、出力を適切な GSD アーティファクト(メモ、todo、シード、リサーチ質問、要件、または新しいフェーズ)にルーティングします。 + +| 引数 | 必須 | 説明 | +|----------|----------|-------------| +| `topic` | No | 探索するトピック(例: `/gsd-explore authentication strategy`) | + +```bash +/gsd-explore # オープンエンドのアイデア発想セッション +/gsd-explore authentication strategy # 特定のトピックを探索 +``` + +--- + +### `/gsd-undo` + +安全な git リバート — フェーズマニフェストを使用して依存関係チェックと確認ゲートで GSD フェーズまたは計画コミットをロールバックします。 + +| フラグ | 必須 | 説明 | +|------|----------|-------------| +| `--last N` | (3つのうち1つが必須) | インタラクティブな選択のための最近の GSD コミットを表示 | +| `--phase NN` | (3つのうち1つが必須) | フェーズのすべてのコミットをリバート | +| `--plan NN-MM` | (3つのうち1つが必須) | 特定の計画のすべてのコミットをリバート | + +**安全性:** リバートする前に依存するフェーズ/計画をチェック; 常に確認ゲートを表示します。 + +```bash +/gsd-undo --last 5 # 最近の5つの GSD コミットから選択 +/gsd-undo --phase 03 # フェーズ3のすべてのコミットをリバート +/gsd-undo --plan 03-02 # フェーズ3の計画02のコミットをリバート +``` + +--- + +### `/gsd-import` + +外部計画ファイルを GSD 計画システムに取り込み、何かを書き込む前に `PROJECT.md` の決定に対して競合を検出します。 + +| フラグ | 必須 | 説明 | +|------|----------|--------------| +| `--from ` | Yes(または `--from-gsd2`) | インポートする外部計画ファイルへのパス | +| `--from-gsd2` | Yes(または `--from`) | GSD-2(`.gsd/`)プロジェクトを GSD v1(`.planning/`)フォーマットに逆移行 | +| `--path ` | No | `--from-gsd2` と組み合わせて使用: GSD-2 プロジェクトディレクトリへのパス(デフォルト: 現在のディレクトリ) | + +**プロセス:** 競合を検出 → 解決を促す → GSD PLAN.md として書き込む → `gsd-plan-checker` で検証 + +```bash +/gsd-import --from /tmp/team-plan.md # 外部計画をインポートして検証 +/gsd-import --from-gsd2 # GSD-2 から v1 に移行(現在のディレクトリ) +/gsd-import --from-gsd2 --path ~/old-project # 別のパスから移行 +``` + +--- + +### `/gsd-ingest-docs` + +リポジトリ内の既存の ADR、PRD、SPEC、およびドキュメントから `.planning/` セットアップをブートストラップまたはマージします。並列分類(`gsd-doc-classifier`)と優先順位ルールおよびサイクル検出による統合(`gsd-doc-synthesizer`)を実行します。3バケットの競合レポート(`INGEST-CONFLICTS.md`: 自動解決済み、競合バリアント、未解決ブロッカー)を生成し、LOCKED vs LOCKED の ADR 矛盾でハードブロックします。 + +| 引数 / フラグ | 必須 | 説明 | +|-----------------|----------|-------------| +| `path` | No | スキャンするターゲットディレクトリ(デフォルト: リポジトリルート) | +| `--mode new\|merge` | No | 自動検出を上書き(デフォルト: `.planning/` がなければ `new`、あれば `merge`) | +| `--manifest ` | No | ドキュメントごとに `{path, type, precedence?}` を列挙する YAML ファイル; ヒューリスティック分類を上書き | +| `--resolve auto` | No | 競合解決モード(v1: `auto` のみ; `interactive` は予約済み) | + +**制限:** v1 は呼び出しごとに最大50ドキュメント。共有の競合検出コントラクトを `references/doc-conflict-engine.md` に抽出し、`/gsd-import` も消費します。 + +```bash +/gsd-ingest-docs # リポジトリルートをスキャン、モードを自動検出 +/gsd-ingest-docs docs/ # docs/ 配下のみを取り込む +/gsd-ingest-docs --manifest ingest.yaml # 明示的な優先順位マニフェスト +``` + +--- + ### `/gsd-quick` -GSDの保証付きでアドホックタスクを実行します。 +GSD の保証付きでアドホックタスクを実行します。 | フラグ | 説明 | |------|-------------| -| `--full` | プランチェック(2回のイテレーション)+実行後検証を有効化 | -| `--discuss` | 軽量な事前計画ディスカッション | +| `--full` | 完全な品質パイプラインを有効化 — 議論 + リサーチ + プランチェック + 検証 | +| `--validate` | プランチェック(最大2回繰り返し)+ 実行後検証のみ; 議論やリサーチなし | +| `--discuss` | 軽量な事前計画議論 | | `--research` | 計画前にフォーカスされたリサーチャーを起動 | -フラグは組み合わせ可能です。 +細粒度のフラグは組み合わせ可能: `--discuss --research --validate` は `--full` と同等です。 + +| サブコマンド | 説明 | +|------------|-------------| +| `list` | ステータス付きですべてのクイックタスクを一覧表示 | +| `status ` | 特定のクイックタスクのステータスを表示 | +| `resume ` | スラッグで特定のクイックタスクを再開 | ```bash /gsd-quick # 基本的なクイックタスク -/gsd-quick --discuss --research # ディスカッション+調査+計画 -/gsd-quick --full # プランチェックと検証付き -/gsd-quick --discuss --research --full # すべてのオプションステージ +/gsd-quick --discuss --research # 議論 + リサーチ + 計画 +/gsd-quick --validate # プランチェック + 検証のみ +/gsd-quick --full # 完全な品質パイプライン +/gsd-quick list # すべてのクイックタスクを一覧表示 +/gsd-quick status my-task-slug # クイックタスクのステータスを表示 +/gsd-quick resume my-task-slug # クイックタスクを再開 ``` ### `/gsd-autonomous` @@ -534,44 +707,14 @@ GSDの保証付きでアドホックタスクを実行します。 | フラグ | 説明 | |------|-------------| | `--from N` | 特定のフェーズ番号から開始 | -| `--to N` | フェーズ N 完了後に自律実行を停止 (v1.32) | -| `--only N` | 指定された単一フェーズのみを自律的に実行 (v1.31) | -| `--interactive` | 各フェーズのディスカスステップでユーザー確認を要求 | +| `--to N` | 特定のフェーズ番号を完了した後に停止 | +| `--interactive` | ユーザー入力付きのリーンコンテキスト | ```bash -/gsd-autonomous # 残りの全フェーズを実行 +/gsd-autonomous # 残りのすべてのフェーズを実行 /gsd-autonomous --from 3 # フェーズ3から開始 -/gsd-autonomous --to 5 # フェーズ5まで実行 -/gsd-autonomous --from 3 --to 5 # フェーズ3〜5の範囲を実行 -/gsd-autonomous --only 4 # フェーズ4のみを自律実行 -``` - -### `/gsd-fast` - -フリーテキストを適切なGSDコマンドにルーティングします。 - -```bash -/gsd-fast # その後、やりたいことを説明 -``` - -### `/gsd-capture` - -手軽にアイデアをキャプチャ — メモの追加、一覧表示、またはTodoへの昇格。 - -| 引数 | 必須 | 説明 | -|----------|----------|-------------| -| `text` | いいえ | キャプチャするメモテキスト(デフォルト: 追加モード) | -| `list` | いいえ | プロジェクトおよびグローバルスコープからすべてのメモを一覧表示 | -| `promote N` | いいえ | メモNを構造化されたTodoに変換 | - -| フラグ | 説明 | -|------|-------------| -| `--global` | メモ操作にグローバルスコープを使用 | - -```bash -/gsd-capture "Consider caching strategy for API responses" -/gsd-capture list -/gsd-capture promote 3 +/gsd-autonomous --to 5 # フェーズ5を含めて実行 +/gsd-autonomous --from 3 --to 5 # フェーズ3から5を実行 ``` ### `/gsd-debug` @@ -580,35 +723,26 @@ GSDの保証付きでアドホックタスクを実行します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `description` | いいえ | バグの説明 | +| `description` | No | バグの説明 | | フラグ | 説明 | |------|-------------| -| `--diagnose` | 修正を試みず調査のみを行う診断専用モード (v1.32) | +| `--diagnose` | 診断のみモード — 修正を試みずに調査 | + +**サブコマンド:** +- `/gsd-debug list` — ステータス、仮説、次のアクション付きですべてのアクティブなデバッグセッションを一覧表示 +- `/gsd-debug status ` — エージェントを起動せずにセッションの完全なサマリーを表示(証拠数、排除数、解決策、TDD チェックポイント) +- `/gsd-debug continue ` — スラッグで特定のセッションを再開(現在のフォーカスを表示してから継続エージェントを起動) +- `/gsd-debug [--diagnose] ` — 新しいデバッグセッションを開始(既存の動作; `--diagnose` は修正を適用せずに根本原因で停止) + +**TDD モード:** `.planning/config.json` に `tdd_mode: true` がある場合、デバッグセッションでは修正を適用する前に失敗するテストを書いて検証する必要があります(red → green → done)。 ```bash /gsd-debug "Login button not responding on mobile Safari" -/gsd-debug --diagnose "API returning 500 on /users endpoint" -``` - -### `/gsd-capture` - -後で取り組むアイデアやタスクをキャプチャします。 - -| 引数 | 必須 | 説明 | -|----------|----------|-------------| -| `description` | いいえ | Todoの説明 | - -```bash -/gsd-capture "Consider adding dark mode support" -``` - -### `/gsd-capture --list` - -保留中のTodoを一覧表示し、取り組むものを選択します。 - -```bash -/gsd-capture --list +/gsd-debug --diagnose "Intermittent 500 errors on /api/users" +/gsd-debug list +/gsd-debug status auth-token-null +/gsd-debug continue form-submit-500 ``` ### `/gsd-add-tests` @@ -617,7 +751,7 @@ GSDの保証付きでアドホックタスクを実行します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `N` | いいえ | フェーズ番号 | +| `N` | No | フェーズ番号 | ```bash /gsd-add-tests 2 # フェーズ2のテストを生成 @@ -625,7 +759,7 @@ GSDの保証付きでアドホックタスクを実行します。 ### `/gsd-stats` -プロジェクトの統計情報を表示します。 +プロジェクト統計を表示します。 ```bash /gsd-stats # プロジェクトメトリクスダッシュボード @@ -633,39 +767,43 @@ GSDの保証付きでアドホックタスクを実行します。 ### `/gsd-profile-user` -Claude Codeのセッション分析から8つの次元(コミュニケーションスタイル、意思決定パターン、デバッグアプローチ、UXプリファレンス、ベンダー選択、フラストレーションのトリガー、学習スタイル、説明の深さ)にわたる開発者行動プロファイルを生成します。Claudeのレスポンスをパーソナライズするアーティファクトを生成します。 +8つの次元(コミュニケーションスタイル、意思決定パターン、デバッグアプローチ、UX 設定、ベンダー選択、フラストレーショントリガー、学習スタイル、説明の深さ)で Claude Code セッション分析から開発者の行動プロファイルを生成します。Claude の応答をパーソナライズするアーティファクトを生成します。 | フラグ | 説明 | |------|-------------| -| `--questionnaire` | セッション分析の代わりに対話型アンケートを使用 | +| `--questionnaire` | セッション分析の代わりにインタラクティブなアンケートを使用 | | `--refresh` | セッションを再分析してプロファイルを再生成 | **生成されるアーティファクト:** - `USER-PROFILE.md` — 完全な行動プロファイル -- `CLAUDE.md` プロファイルセクション — Claude Codeが自動検出 +- `CLAUDE.md` プロファイルセクション — Claude Code によって自動検出される ```bash /gsd-profile-user # セッションを分析してプロファイルを構築 -/gsd-profile-user --questionnaire # 対話型アンケートのフォールバック -/gsd-profile-user --refresh # 新鮮な分析からの再生成 +/gsd-profile-user --questionnaire # インタラクティブなアンケートのフォールバック +/gsd-profile-user --refresh # 新鮮な分析から再生成 ``` ### `/gsd-health` -`.planning/` ディレクトリの整合性を検証します。 +`.planning/` ディレクトリの整合性を検証します。`--context` を使用すると、60% / 70% のしきい値に対してコンテキストウィンドウ使用率ガードを検査します(v1.40.0 で追加、[#2792](https://github.com/open-gsd/gsd-core/issues/2792))。 | フラグ | 説明 | |------|-------------| -| `--repair` | 回復可能な問題を自動修復 | +| `--repair` | 回復可能な問題を自動修正 | +| `--context` | コンテキストウィンドウ使用率を検査; 60% で警告、70% でクリティカル | ```bash /gsd-health # 整合性チェック -/gsd-health --repair # チェックして修復 +/gsd-health --repair # チェックと修正 +/gsd-health --context # コンテキスト使用率のトリアージ ``` ### `/gsd-cleanup` -完了したマイルストーンの蓄積されたフェーズディレクトリをアーカイブします。 +完了したマイルストーンからの累積フェーズディレクトリをアーカイブし、アップストリームが削除されたローカルブランチを削除します。 + +**動作:** アーカイブするフェーズディレクトリ(`.planning/phases/` から `.planning/milestones/v{X.Y}-phases/` に移動)とアップストリームが消えたローカルブランチ(`git fetch --prune` で削除)のドライランサマリーを表示します。変更を書き込む前に確認が必要です。現在チェックアウトされているブランチは削除されません。 ```bash /gsd-cleanup @@ -673,63 +811,141 @@ Claude Codeのセッション分析から8つの次元(コミュニケーシ --- +## スパイキングとスケッチコマンド + +### `/gsd-spike` + +実装アプローチを確定する前に、2〜5つのフォーカスされた実現可能性実験を実行します。各実験は Given/When/Then のフレーミングを使用し、実行可能なコードを生成し、VALIDATED / INVALIDATED / PARTIAL の評決を返します。 + +| 引数 | 必須 | 説明 | +|----------|----------|-------------| +| `idea` | No | 調査する技術的な質問またはアプローチ | +| `--quick` | No | 入力会話をスキップ; `idea` テキストを直接使用 | +| `--wrap-up` | No | 完了したスパイクの知見を再利用可能なプロジェクトローカルスキルにパッケージ化 | + +**生成物:** `.planning/spikes/NNN-experiment-name/` にコード、結果、README; `.planning/spikes/MANIFEST.md` +**`--wrap-up` の生成物:** `.claude/skills/spike-findings-[project]/` スキルファイル + +```bash +/gsd-spike # インタラクティブな入力 +/gsd-spike "can we stream LLM tokens through SSE" +/gsd-spike --quick websocket-vs-polling +/gsd-spike --wrap-up # 知見を再利用可能なスキルにパッケージ化 +``` + +--- + +### `/gsd-sketch` + +実装を確定する前に使い捨ての HTML モックアップを通じてデザインの方向性を探索します。直接ブラウザで比較するためにデザイン質問ごとに2〜3つのバリアントを生成します。 + +| 引数 | 必須 | 説明 | +|----------|----------|-------------| +| `idea` | No | 探索する UI デザインの質問または方向性 | +| `--quick` | No | ムード入力をスキップ; `idea` テキストを直接使用 | +| `--text` | No | テキストモードのフォールバック — インタラクティブなプロンプトを番号付きリストに置き換え(Claude 以外のランタイム向け) | +| `--wrap-up` | No | 採用されたスケッチの決定を再利用可能なプロジェクトローカルスキルにパッケージ化 | + +**生成物:** `.planning/sketches/NNN-descriptive-name/index.html`(2〜3つのインタラクティブなバリアント)、`README.md`、共有 `themes/default.css`; `.planning/sketches/MANIFEST.md` +**`--wrap-up` の生成物:** `.claude/skills/sketch-findings-[project]/` スキルファイル + +```bash +/gsd-sketch # インタラクティブなムード入力 +/gsd-sketch "dashboard layout" +/gsd-sketch --quick "sidebar navigation" +/gsd-sketch --text "onboarding flow" # Claude 以外のランタイム +/gsd-sketch --wrap-up # 採用されたスケッチをスキルにパッケージ化 +``` + +--- + ## 診断コマンド ### `/gsd-forensics` -失敗またはスタックしたGSDワークフローの事後調査。 +失敗した GSD ワークフローのポストモーテム調査 — 何が問題だったかを診断します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `description` | いいえ | 問題の説明(省略時はプロンプトで入力) | +| `description` | No | 問題の説明(省略した場合はプロンプト) | **前提条件:** `.planning/` ディレクトリが存在すること **生成物:** `.planning/forensics/report-{timestamp}.md` -**調査の対象:** -- Git履歴分析(直近のコミット、スタックパターン、時間的ギャップ) -- アーティファクトの整合性(完了フェーズで期待されるファイル) -- STATE.mdの異常とセッション履歴 -- コミットされていない作業、コンフリクト、放棄された変更 -- 少なくとも4種類の異常をチェック(スタックループ、欠損アーティファクト、放棄された作業、クラッシュ/中断) -- アクション可能な所見がある場合、GitHubイシューの作成を提案 +**調査対象:** +- Git 履歴分析(最近のコミット、スタックパターン、時間的ギャップ) +- アーティファクトの整合性(完了済みフェーズに期待されるファイル) +- STATE.md の異常とセッション履歴 +- コミットされていない作業、競合、放棄された変更 +- 少なくとも4種類の異常をチェック(スタックループ、欠落アーティファクト、放棄された作業、クラッシュ/中断) +- アクション可能な発見があれば GitHub Issue の作成を提案 ```bash -/gsd-forensics # 対話型 — 問題の入力を促す +/gsd-forensics # インタラクティブ — 問題のプロンプト /gsd-forensics "Phase 3 execution stalled" # 問題の説明付き ``` --- +### `/gsd-extract-learnings` + +完了したフェーズ作業から再利用可能なパターン、アンチパターン、およびアーキテクチャ上の決定を抽出します。 + +| 引数 | 必須 | 説明 | +|----------|----------|-------------| +| `N` | **Yes** | 学習を抽出するフェーズ番号 | + +| フラグ | 説明 | +|------|-------------| +| `--all` | 完了したすべてのフェーズから学習を抽出 | +| `--format` | 出力フォーマット: `markdown`(デフォルト)、`json` | + +**前提条件:** フェーズが実行済みであること(SUMMARY.md ファイルが存在すること) +**生成物:** `.planning/learnings/{phase}-LEARNINGS.md` + +**抽出内容:** +- アーキテクチャ上の決定とその根拠 +- うまくいったパターン(将来のフェーズで再利用可能) +- 遭遇したアンチパターンとその解決方法 +- 技術固有の洞察 +- パフォーマンスとテストの観察 + +```bash +/gsd-extract-learnings 3 # フェーズ3から学習を抽出 +/gsd-extract-learnings --all # 完了したすべてのフェーズから抽出 +``` + +--- + ## ワークストリーム管理 ### `/gsd-workstreams` -マイルストーンの異なる領域で並行作業するためのワークストリームを管理します。 +異なるマイルストーン領域での並行作業のための並列ワークストリームを管理します。 **サブコマンド:** | サブコマンド | 説明 | |------------|-------------| -| `list` | すべてのワークストリームをステータス付きで一覧表示(サブコマンド未指定時のデフォルト) | +| `list` | ステータス付きですべてのワークストリームを一覧表示(サブコマンドなしの場合のデフォルト) | | `create ` | 新しいワークストリームを作成 | -| `status ` | 1つのワークストリームの詳細ステータス | +| `status ` | 1つのワークストリームの詳細なステータス | | `switch ` | アクティブなワークストリームを設定 | -| `progress` | 全ワークストリームの進捗サマリー | +| `progress` | すべてのワークストリームの進捗サマリー | | `complete ` | 完了したワークストリームをアーカイブ | -| `resume ` | ワークストリームでの作業を再開 | +| `resume ` | ワークストリームの作業を再開 | -**前提条件:** アクティブなGSDプロジェクト +**前提条件:** アクティブな GSD プロジェクト **生成物:** `.planning/` 配下のワークストリームディレクトリ、ワークストリームごとの状態追跡 ```bash /gsd-workstreams # すべてのワークストリームを一覧表示 /gsd-workstreams create backend-api # 新しいワークストリームを作成 /gsd-workstreams switch backend-api # アクティブなワークストリームを設定 -/gsd-workstreams status backend-api # 詳細ステータス -/gsd-workstreams progress # ワークストリーム横断の進捗概要 +/gsd-workstreams status backend-api # 詳細なステータス +/gsd-workstreams progress # クロスワークストリームの進捗概要 /gsd-workstreams complete backend-api # 完了したワークストリームをアーカイブ -/gsd-workstreams resume backend-api # ワークストリームでの作業を再開 +/gsd-workstreams resume backend-api # ワークストリームの作業を再開 ``` --- @@ -738,23 +954,73 @@ Claude Codeのセッション分析から8つの次元(コミュニケーシ ### `/gsd-settings` -ワークフロートグルとモデルプロファイルの対話的な設定。 +ワークフローのトグルとモデルプロファイルのインタラクティブな設定。質問は6つの視覚的なセクションにグループ化されています: + +- **計画** — リサーチ、プランチェッカー、パターンマッパー、Nyquist、UI フェーズ、UI ゲート、AI フェーズ +- **実行** — 検証者、TDD モード、コードレビュー、コードレビューの深さ _(条件付き — コードレビューがオンの場合のみ)_、UI レビュー +- **ドキュメントと出力** — コミットドキュメント、議論スキップ、ワークツリー +- **機能** — インテル、Graphify +- **モデルとパイプライン** — モデルプロファイル、自動進行、ブランチング +- **その他** — コンテキスト警告、リサーチ Q + +すべての回答は `gsd-tools query config-set` を介して解決されたプロジェクト設定パス(標準インストールでは `.planning/config.json`、ワークストリームがアクティブな場合は `.planning/workstreams//config.json`)にマージされ、関係のないキーを保持します。確認後、ユーザーは完全な設定オブジェクトを `~/.gsd/defaults.json` に保存でき、将来の `/gsd-new-project` 実行が同じベースラインから開始されます。 ```bash -/gsd-settings # 対話型設定 +/gsd-settings # インタラクティブな設定 ``` -### `/gsd-config --profile` +### `/gsd-config` -クイックプロファイル切り替え。 +単一の統合コマンドで GSD 設定をインタラクティブに設定 — ワークフロートグル、高度なノブ、インテグレーション、モデルプロファイル。 -| 引数 | 必須 | 説明 | -|----------|----------|-------------| -| `profile` | **はい** | `quality`、`balanced`、`budget`、または `inherit` | +| フラグ | 説明 | +|------|-------------| +| (なし) | 一般的なトグル: model、research、plan_check、verifier、branching | +| `--advanced` | パワーユーザーノブ: 計画チューニング、タイムアウト、ブランチテンプレート、クロス AI 実行、ランタイム/出力 | +| `--integrations` | サードパーティ API キー、コードレビュー CLI ルーティング、エージェントスキルインジェクション | +| `--profile ` | クイックプロファイル切り替え: `quality`、`balanced`、`budget`、または `inherit` | + +**`--advanced` セクション:** + +| セクション | キー | +|---------|------| +| 計画チューニング | `workflow.plan_bounce`、`workflow.plan_bounce_passes`、`workflow.plan_bounce_script`、`workflow.subagent_timeout`、`workflow.inline_plan_threshold` | +| 実行チューニング | `workflow.node_repair`、`workflow.node_repair_budget`、`workflow.auto_prune_state` | +| 議論チューニング | `workflow.max_discuss_passes` | +| クロス AI 実行 | `workflow.cross_ai_execution`、`workflow.cross_ai_command`、`workflow.cross_ai_timeout` | +| Git カスタマイズ | `git.base_branch`、`git.phase_branch_template`、`git.milestone_branch_template` | +| ランタイム / 出力 | `response_language`、`context_window`、`search_gitignored`、`graphify.build_timeout` | + +すべての回答は `gsd-tools query config-set` を介してマージされ、関係のないキーを保持します。API キーはすべての出力でマスクされます(`****`)。 ```bash -/gsd-config --profile budget # budgetプロファイルに切り替え -/gsd-config --profile quality # qualityプロファイルに切り替え +/gsd-config # 一般的なインタラクティブ設定 +/gsd-config --advanced # パワーユーザーノブ(6セクションプロンプト) +/gsd-config --integrations # API キー、レビュー CLI ルーティング、エージェントスキル +/gsd-config --profile budget # バジェットプロファイルに切り替え +/gsd-config --profile quality # 品質プロファイルに切り替え +``` + +完全なスキーマとデフォルトについては [CONFIGURATION.md](../CONFIGURATION.md) を参照してください。 + +### `/gsd-surface` + +再インストールなしにどのスキルを表示するかを切り替え — プロファイルを適用したり、クラスターを一覧表示または無効化したりします。 + +| サブコマンド | 説明 | +|------------|-------------| +| `list` | 有効および無効なクラスターとスキルを表示 | +| `status` | `list` のエイリアスにトークンコストサマリーを加えたもの | +| `profile ` | `baseProfile` を書き込んでスキルを再ステージング | +| `disable ` | クラスターを無効化リストに追加して再ステージング | +| `enable ` | クラスターを無効化リストから削除して再ステージング | +| `reset` | サーフェスデルタを削除; インストール時のプロファイルに戻す | + +```bash +/gsd-surface list # 現在のサーフェスを表示 +/gsd-surface profile standard # スタンダードプロファイルに切り替え +/gsd-surface disable utility # ユーティリティクラスターを無効化 +/gsd-surface reset # インストール時のプロファイルを復元 ``` --- @@ -763,50 +1029,180 @@ Claude Codeのセッション分析から8つの次元(コミュニケーシ ### `/gsd-map-codebase` -並列マッパーエージェントで既存のコードベースを分析します。 +並列マッパーエージェントで既存のコードベースを分析します。クイックな単一エージェントスキャンには `--fast` を、既存のインテルを検索するには `--query` を使用します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `area` | いいえ | マッピングを特定の領域にスコープ | +| `area` | No | マッピングを特定のエリアにスコープ | +| `--fast` | No | 高速な単一フォーカス評価 — 4つの並列エージェントの代わりに1つのマッパーエージェントを起動(軽量な代替手段) | +| `--query ` | No | `.planning/intel/` 内のクエリ可能なコードベースインテルファイルを検索(`intel.enabled: true` が必要) | + +| フラグ | 説明 | +|------|-------------| +| `--focus tech\|arch\|quality\|concerns\|tech+arch` | `--fast` モードのフォーカスエリア(デフォルト: `tech+arch`) | + +**生成物:** `.planning/codebase/` の分析ドキュメント(フルモード); `.planning/codebase/` 内のターゲットドキュメント(`--fast`); インテルクエリ結果(`--query`) ```bash -/gsd-map-codebase # コードベース全体を分析 -/gsd-map-codebase auth # auth領域にフォーカス +/gsd-map-codebase # 完全なコードベース分析(4つの並列エージェント) +/gsd-map-codebase auth # 認証エリアにフォーカス +/gsd-map-codebase --fast # クイックな tech + arch 概要(1エージェント) +/gsd-map-codebase --fast --focus quality # 品質とコードヘルスのみ +/gsd-map-codebase --query authentication # 認証のインテルを検索 +``` + +### `/gsd-graphify` + +`.planning/graphs/` に保存されたプロジェクトナレッジグラフを構築、クエリ、検査します。`config.json` の `graphify.enabled: true` でオプトイン([設定リファレンス](../CONFIGURATION.md#graphify-settings) を参照); 無効な場合、コマンドはアクティベーションヒントを表示して停止します。 + +| サブコマンド | 説明 | +|------------|-------------| +| `build` | ナレッジグラフを構築または再構築(`graphify update .` をインラインで実行し、`.planning/graphs/` を更新) | +| `query ` | グラフでキーワードを検索 | +| `status` | グラフの鮮度と統計を表示 | +| `diff` | 最後のビルド以降の変更を表示 | + +**生成物:** `.planning/graphs/` のグラフアーティファクト(ノード、エッジ、スナップショット) + +```bash +/gsd-graphify build # ナレッジグラフを構築または再構築 +/gsd-graphify query authentication # グラフで認証を検索 +/gsd-graphify status # 鮮度と統計を表示 +/gsd-graphify diff # 最後のビルド以降の変更を表示 +``` + +**プログラムアクセス:** `node gsd-tools.cjs graphify ` — [CLI ツールリファレンス](../CLI-TOOLS.md) を参照してください。 + +### `gsd-tools intel api-surface` + +`/gsd-map-codebase` が構築した `.planning/intel/api-map.json` インデックスを `.planning/intel/` の人間が読めるフォーマットの `API-SURFACE.md` にレンダリングします。`config.json` の `intel.enabled: true` でゲート; インテルが無効な場合、コマンドはアクティベーションヒントを表示して終了します。出力パスは常に `.planning/intel/API-SURFACE.md` です — `--out` や `--format` フラグはありません。`api-map.json` が存在しないか空の場合でも、コマンドは明示的な「incomplete」バナー付きのファイルを書き込むため、コンシューマーが「何も存在しない」と勘違いすることはありません。 + +**生成物:** `.planning/intel/API-SURFACE.md` + +```bash +node gsd-tools.cjs intel api-surface # api-map.json → API-SURFACE.md にレンダリング +``` + +`API-SURFACE.md` の出力は、シグネチャと検出された可視性付きでソースファイルごとにグループ化された公開シンボル(関数、クラス、デコレーター、定数)を一覧表示します。`plan_review.source_grounding_authority` が `intel` に設定されている場合、プランドリフトガードは `api-surface` レンダラーを呼び出すのではなく、`api-map.json` を直接読み込みます。 + +--- + +## AI インテグレーションコマンド + +### `/gsd-ai-integration-phase` + +AI システムの構築を含むフェーズの AI-SPEC.md デザインコントラクトを生成します。インタラクティブな意思決定マトリクスを提示し、ドメイン固有の失敗モードと評価基準を表示し、フレームワークの推奨事項、実装ガイダンス、および評価戦略を含む `AI-SPEC.md` を生成します。 + +**生成物:** フェーズディレクトリ内の `{phase}-AI-SPEC.md` + +**起動:** 3つの並列スペシャリストエージェント: domain-researcher、framework-selector、ai-researcher、および eval-planner + +```bash +/gsd-ai-integration-phase # 現在のフェーズのウィザード +/gsd-ai-integration-phase 3 # 特定のフェーズのウィザード ``` --- -## アップデートコマンド +### `/gsd-eval-review` + +実行済み AI フェーズの評価カバレッジを監査し、EVAL-REVIEW.md の改善計画を作成します。`/gsd-ai-integration-phase` が生成した `AI-SPEC.md` 評価計画に対して実装をチェックします。各評価次元を COVERED/PARTIAL/MISSING でスコアリングします。 + +**前提条件:** フェーズが実行済みで `AI-SPEC.md` があること +**生成物:** 発見事項、ギャップ、改善ガイダンスを含む `{phase}-EVAL-REVIEW.md` + +```bash +/gsd-eval-review # 現在のフェーズを監査 +/gsd-eval-review 3 # 特定のフェーズを監査 +``` + +--- + +## 更新コマンド ### `/gsd-update` -変更履歴のプレビュー付きでGSDをアップデートします。 +変更ログのプレビュー付きで GSD を更新し、オプションでスキルを同期したりローカルパッチを再適用したりします。 + +| フラグ | 説明 | +|------|-------------| +| `--sync` | 更新後に GSD レジストリからスキルを同期 | +| `--reapply` | 更新後にローカルの変更(パッチ)を復元 | ```bash -/gsd-update # アップデートを確認してインストール -``` - -### `/gsd-update --reapply` - -GSDアップデート後にローカルの変更を復元します。 - -```bash -/gsd-update --reapply # ローカルの変更をマージバック +/gsd-update # 更新を確認してインストール +/gsd-update --sync # 更新してスキルを同期 +/gsd-update --reapply # 更新してローカルパッチを再適用 ``` --- -## 高速&インラインコマンド +## コード品質コマンド -### `/gsd-fast` +### `/gsd-code-review` -簡単なタスクをインラインで実行 — サブエージェントなし、計画のオーバーヘッドなし。タイポ修正、設定変更、小さなリファクタリング、忘れたコミットなどに最適。 +バグ、セキュリティの脆弱性、コード品質の問題についてフェーズ中に変更されたソースファイルをレビューします。レビュー後に発見事項を自動修正するには `--fix` を使用します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `task description` | いいえ | 実行する内容(省略時はプロンプトで入力) | +| `N` | **Yes** | レビューする変更のフェーズ番号(例: `2` または `02`) | +| `--depth=quick\|standard\|deep` | No | レビューの深さレベル(`workflow.code_review_depth` 設定を上書き)。`quick`: パターンマッチングのみ(約2分)。`standard`: 言語固有のチェックを含むファイルごとの分析(約5〜15分、デフォルト)。`deep`: インポートグラフとコールチェーンを含むクロスファイル分析(約15〜30分) | +| `--files file1,file2,...` | No | 明示的なカンマ区切りのファイルリスト; SUMMARY/git スコーピングを完全にスキップ | +| `--fix` | No | レビュー後に問題を自動修正 — REVIEW.md を読み込み、修正エージェントを起動し、各修正をアトミックにコミット | +| `--fix --all` | No | 修正スコープに Info の発見事項を含める(デフォルト: Critical + Warning のみ) | +| `--fix --auto` | No | 修正 + 再レビューの繰り返しループ、最大3回の繰り返しで上限 | -**`/gsd-quick` の代替ではありません** — 調査、複数ステップの計画、または検証が必要な場合は `/gsd-quick` を使用してください。 +**前提条件:** フェーズが実行済みで SUMMARY.md または git 履歴があること +**生成物:** 重大度分類された発見事項を含む `{phase}-REVIEW.md`; `--fix` 使用時は `{phase}-REVIEW-FIX.md` +**起動:** `gsd-code-reviewer` エージェント; `--fix` 使用時は `gsd-code-fixer` エージェント + +**オプションの構造的プレパス:** `code_quality.fallow.enabled` を `true` に設定すると、エージェントレビューの前に fallow を実行します。GSD は `{phase}/FALLOW.json` を書き込み、`REVIEW.md` に `Structural Findings (fallow)` セクションを埋め込みます。`code_quality.fallow.scope` と `code_quality.fallow.profile` でスコープとプロファイルを設定します。 + +```bash +/gsd-code-review 3 # フェーズ3の標準レビュー +/gsd-code-review 2 --depth=deep # ディープなクロスファイルレビュー +/gsd-code-review 4 --files src/auth.ts,src/token.ts # 明示的なファイルリスト +/gsd-code-review 3 --fix # レビューして Critical + Warning の発見事項を修正 +/gsd-code-review 3 --fix --all # レビューして Info を含むすべての発見事項を修正 +/gsd-code-review 3 --fix --auto # レビュー、修正、クリーンになるまで再レビュー(最大3回の繰り返し) +``` + +--- + +### `/gsd-audit-fix` + +自律的な監査から修正へのパイプライン — 監査を実行し、発見事項を分類し、テスト検証付きで自動修正可能な問題を修正し、各修正をアトミックにコミットします。 + +| フラグ | 説明 | +|------|-------------| +| `--source ` | 実行する監査(デフォルト: `audit-uat`) | +| `--severity high\|medium\|all` | 処理する最小重大度(デフォルト: `medium`) | +| `--max N` | 修正する最大発見事項数(デフォルト: 5) | +| `--dry-run` | 修正せずに発見事項を分類(分類テーブルを表示) | + +**前提条件:** 少なくとも1つのフェーズが UAT または検証付きで実行済みであること +**生成物:** テスト検証付きの修正コミット; 分類レポート + +```bash +/gsd-audit-fix # audit-uat を実行し、medium 以上の問題を修正(最大5件) +/gsd-audit-fix --severity high # 高重大度の問題のみ修正 +/gsd-audit-fix --dry-run # 修正せずに分類をプレビュー +/gsd-audit-fix --max 10 --severity all # 任意の重大度の問題を最大10件修正 +``` + +--- + +## 高速・インラインコマンド + +### `/gsd-fast` + +サブエージェントなし、計画のオーバーヘッドなしでインラインで些細なタスクを実行します。タイポ修正、設定変更、小さなリファクタリング、忘れたコミット向け。 + +| 引数 | 必須 | 説明 | +|----------|----------|-------------| +| `task description` | No | 何をするか(省略した場合はプロンプト) | + +**`/gsd-quick` の代替ではありません** — リサーチ、マルチステップ計画、または検証が必要なものには `/gsd-quick` を使用してください。 ```bash /gsd-fast "fix typo in README" @@ -815,91 +1211,149 @@ GSDアップデート後にローカルの変更を復元します。 --- -## コード品質コマンド - ### `/gsd-review` -外部AI CLIからのフェーズプランのクロスAIピアレビュー。 +外部 AI CLI からのフェーズ計画のクロス AI ピアレビュー。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `--phase N` | **はい** | レビューするフェーズ番号 | +| `--phase N` | **Yes** | レビューするフェーズ番号 | | フラグ | 説明 | |------|-------------| -| `--gemini` | Gemini CLIレビューを含める | -| `--claude` | Claude CLIレビューを含める(別セッション) | -| `--codex` | Codex CLIレビューを含める | -| `--coderabbit` | CodeRabbitレビューを含める | -| `--opencode` | OpenCodeレビューを含める(GitHub Copilot経由) | -| `--qwen` | Qwen Codeレビューを含める(Alibaba Qwenモデル) | -| `--cursor` | Cursorエージェントレビューを含める | -| `--agy` / `--antigravity` | Antigravity CLIレビューを含める(Google認証情報で無料) | -| `--all` | 利用可能なすべてのCLIを含める | +| `--gemini` | Gemini CLI レビューを含める | +| `--claude` | Claude CLI レビューを含める(別のセッション) | +| `--codex` | Codex CLI レビューを含める | +| `--coderabbit` | CodeRabbit レビューを含める | +| `--opencode` | OpenCode レビューを含める(GitHub Copilot 経由) | +| `--qwen` | Qwen Code レビューを含める(Alibaba Qwen モデル) | +| `--cursor` | Cursor エージェントレビューを含める | +| `--agy` / `--antigravity` | Antigravity CLI レビューを含める(Google 認証情報で無料) | +| `--ollama` | Ollama サーバーレビューを含める | +| `--lm-studio` | LM Studio サーバーレビューを含める | +| `--llama-cpp` | llama.cpp サーバーレビューを含める | +| `--all` | 利用可能なすべてのレビュアーを含める(CLI + ローカルモデルサーバー) | -**生成物:** `{phase}-REVIEWS.md` — `/gsd-plan-phase --reviews` で利用可能 +**デフォルトレビュアーの動作(フラグなし):** +- `review.default_reviewers` が**未設定**の場合、`/gsd-review` は検出されたすべてのレビュアーを実行します(現在のデフォルト動作)。 +- `review.default_reviewers` が**設定済み**の場合、`/gsd-review` はそのサブセットのみを実行します(例: `["gemini","codex"]`)。 +- `--all` は常に設定を上書きし、完全な検出セットを実行します。 +- 明示的なフラグ(例: `--cursor`)は、そのランの `--all` と設定デフォルトの両方を上書きします。 + +**生成物:** `{phase}-REVIEWS.md` — `/gsd-plan-phase --reviews` が消費可能 ```bash +# フラグなしの /gsd-review 実行用のプロジェクトデフォルトレビュアーを設定 +gsd config-set review.default_reviewers '["gemini","codex"]' + +/gsd-review --phase 2 # 設定から gemini+codex を実行 /gsd-review --phase 3 --all /gsd-review --phase 2 --gemini +/gsd-review --phase 2 --cursor # ワンオフの上書き ``` --- ### `/gsd-pr-branch` -`.planning/` のコミットをフィルタリングしてクリーンなPRブランチを作成します。 +`.planning/` コミットをフィルタリングしてクリーンな PR ブランチを作成します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `target branch` | いいえ | ベースブランチ(デフォルト: `main`) | +| `target branch` | No | ベースブランチ(デフォルト: `main`) | -**目的:** レビュアーにはコード変更のみを表示し、GSD計画アーティファクトは含めません。 +**目的:** レビュアーにはコード変更のみが表示され、GSD 計画アーティファクトは表示されません。 ```bash -/gsd-pr-branch # mainに対してフィルタリング -/gsd-pr-branch develop # developに対してフィルタリング +/gsd-pr-branch # main に対してフィルタリング +/gsd-pr-branch develop # develop に対してフィルタリング ``` --- -### `/gsd-audit-uat` +### `/gsd-secure-phase` -全フェーズを横断した未処理のUATおよび検証項目の監査。 +完了したフェーズの脅威緩和を遡及的に検証します。 -**前提条件:** 少なくとも1つのフェーズがUATまたは検証付きで実行されていること -**生成物:** カテゴリ分類された監査レポートと人間用テストプラン +| 引数 | 必須 | 説明 | +|----------|----------|-------------| +| `phase number` | No | 監査するフェーズ(デフォルト: 最後に完了したフェーズ) | + +**前提条件:** フェーズが実行済みであること。既存の SECURITY.md があってもなくても動作。 +**生成物:** 脅威検証結果を含む `{phase}-SECURITY.md` +**起動:** `gsd-security-auditor` エージェント + +3つの動作モード: +1. SECURITY.md が存在する — 既存の緩和策を監査して検証 +2. SECURITY.md はないが PLAN.md に脅威モデルがある — アーティファクトから生成 +3. フェーズが実行されていない — ガイダンスと共に終了 ```bash -/gsd-audit-uat +/gsd-secure-phase # 最後に完了したフェーズを監査 +/gsd-secure-phase 5 # 特定のフェーズを監査 ``` --- -## バックログ&スレッドコマンド +### `/gsd-docs-update` -### `/gsd-capture --backlog` - -999.x番号付けを使用して、バックログのパーキングロットにアイデアを追加します。 +コードベースに対して検証されたプロジェクトドキュメントを生成または更新します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| `description` | **はい** | バックログ項目の説明 | +| `--force` | No | 保存プロンプトをスキップし、すべてのドキュメントを再生成 | +| `--verify-only` | No | 既存のドキュメントの正確性を確認し、生成は行わない | -**999.x番号付け**により、バックログ項目はアクティブなフェーズシーケンスの外に保持されます。フェーズディレクトリは即座に作成されるため、`/gsd-discuss-phase` や `/gsd-plan-phase` がそれらに対して動作します。 +**生成物:** 最大9つのドキュメントファイル(README、アーキテクチャ、API、スタートガイド、開発、テスト、設定、デプロイメント、コントリビューティング) +**起動:** `gsd-doc-writer` エージェント(ドキュメントタイプごとに1つ)、次に `gsd-doc-verifier` エージェント(事実確認) + +各ドキュメントライターはコードベースを直接探索します — 幻覚されたパスや古いシグネチャはありません。ドキュメント検証者はライブファイルシステムに対してクレームを確認します。 ```bash -/gsd-capture --backlog "GraphQL API layer" -/gsd-capture --backlog "Mobile responsive redesign" +/gsd-docs-update # インタラクティブにドキュメントを生成/更新 +/gsd-docs-update --force # すべてのドキュメントを再生成 +/gsd-docs-update --verify-only # 既存のドキュメントのみを検証 +``` + +--- + +## タスクキャプチャとバックログコマンド + +### `/gsd-capture` + +アイデア、タスク、メモ、シードを適切な宛先にキャプチャします。デフォルトモードは後の作業用に構造化された todo を追加します; フラグは特化したキャプチャワークフローにルーティングします。 + +| フラグ | 説明 | +|------|-------------| +| (なし) | 後の作業のための構造化された todo としてキャプチャ | +| `--note [text]` | ゼロフリクションノート — 追加、一覧表示(`--note list`)、またはプロモート(`--note promote N`) | +| `--backlog ` | 999.x 番号付けを使用してバックログパーキングロットに追加 | +| `--seed [idea summary]` | トリガー条件付きで前向きなアイデアをキャプチャ | +| `--list` | 保留中の todo を一覧表示して作業するものを選択 | +| `--global` | グローバルスコープを使用(ノート操作に対して) | + +**バックログ:** 999.x 番号付けはアクティブなフェーズシーケンスの外にアイテムを保持します; フェーズディレクトリはすぐに作成されるため、`/gsd-discuss-phase` と `/gsd-plan-phase` がそれらに対して動作します。 +**シード:** 完全な WHY、WHEN(表示するタイミング)、およびパンくずを保持 — `/gsd-new-milestone` によって消費されます。 + +**生成物:** `.planning/todos/`(デフォルト)、ノートファイル(--note)、ROADMAP.md バックログセクション(--backlog)、`.planning/seeds/SEED-NNN-slug.md`(--seed) + +```bash +/gsd-capture "Consider adding dark mode support" # todo を追加 +/gsd-capture --note "Caching strategy idea" # クイックノート +/gsd-capture --note list # すべてのノートを一覧表示 +/gsd-capture --note promote 3 # ノート3を todo にプロモート +/gsd-capture --backlog "GraphQL API layer" # バックログに追加 +/gsd-capture --seed "Add real-time collaboration when WebSocket infra is in place" +/gsd-capture --list # todo を参照してアクション ``` --- ### `/gsd-review-backlog` -バックログ項目をレビューし、アクティブなマイルストーンに昇格させます。 +バックログアイテムをレビューしてアクティブなマイルストーンにプロモートします。 -**項目ごとのアクション:** 昇格(アクティブシーケンスに移動)、保持(バックログに残す)、削除。 +**アイテムごとのアクション:** プロモート(アクティブシーケンスに移動)、保持(バックログに残す)、削除。 ```bash /gsd-review-backlog @@ -907,44 +1361,161 @@ GSDアップデート後にローカルの変更を復元します。 --- -### `/gsd-capture --seed` - -トリガー条件付きの将来のアイデアをキャプチャ — 適切なマイルストーンで自動的に表面化します。 - -| 引数 | 必須 | 説明 | -|----------|----------|-------------| -| `idea summary` | いいえ | シードの説明(省略時はプロンプトで入力) | - -シードはコンテキストの劣化を解決します:誰も読まないDeferredの一行メモの代わりに、シードは完全なWHY、いつ表面化すべきか、詳細への手がかりを保存します。 - -**生成物:** `.planning/seeds/SEED-NNN-slug.md` -**利用先:** `/gsd-new-milestone`(シードをスキャンしてマッチするものを提示) - -```bash -/gsd-capture --seed "Add real-time collaboration when WebSocket infra is in place" -``` - ---- - ### `/gsd-thread` クロスセッション作業のための永続的なコンテキストスレッドを管理します。 | 引数 | 必須 | 説明 | |----------|----------|-------------| -| (なし) | — | すべてのスレッドを一覧表示 | +| (なし) / `list` | — | すべてのスレッドを一覧表示 | +| `list --open` | — | ステータスが `open` または `in_progress` のスレッドのみを一覧表示 | +| `list --resolved` | — | ステータスが `resolved` のスレッドのみを一覧表示 | +| `status ` | — | 特定のスレッドのステータスを表示 | +| `close ` | — | スレッドを解決済みとしてマーク | | `name` | — | 名前で既存のスレッドを再開 | | `description` | — | 新しいスレッドを作成 | -スレッドは、複数のセッションにまたがるが特定のフェーズに属さない作業のための軽量なクロスセッション知識ストアです。`/gsd-pause-work` よりも軽量です。 +スレッドは、複数のセッションにまたがるが特定のフェーズに属さない作業のための軽量なクロスセッションナレッジストアです。`/gsd-pause-work` よりも軽量です。 ```bash /gsd-thread # すべてのスレッドを一覧表示 +/gsd-thread list --open # オープン/進行中のスレッドのみを一覧表示 +/gsd-thread list --resolved # 解決済みのスレッドのみを一覧表示 +/gsd-thread status fix-deploy-key # スレッドのステータスを表示 +/gsd-thread close fix-deploy-key # スレッドを解決済みとしてマーク /gsd-thread fix-deploy-key-auth # スレッドを再開 /gsd-thread "Investigate TCP timeout in pasta service" # 新規作成 ``` --- +## ロードマップ管理コマンド + +### `roadmap validate` + +マイルストーンプレフィックスの一貫性を含む構造的整合性のために ROADMAP.md を検証します。 + +**前提条件:** `.planning/ROADMAP.md` が存在すること +**生成物:** 検証レポート; エラーまたは警告がある場合は非ゼロで終了 + +```bash +node gsd-tools.cjs roadmap validate +``` + +--- + +### `roadmap upgrade --convention milestone-prefixed` + +レガシーの `Phase N` ID をマイルストーンプレフィックス付きの `Phase M-NN` 規則に移行します。 + +| フラグ | 必須 | 説明 | +|------|----------|-------------| +| `--convention milestone-prefixed` | Yes | 移行先のターゲット規則 | +| `--apply` | No | 変更をディスクに書き込む(デフォルト: ドライランのみ) | + +**前提条件:** `.planning/ROADMAP.md` が存在すること +**生成物:** ドライラン差分(デフォルト)または ROADMAP.md のインプレース書き換え(`--apply`) + +```bash +node gsd-tools.cjs roadmap upgrade --convention milestone-prefixed # ドライラン +node gsd-tools.cjs roadmap upgrade --convention milestone-prefixed --apply # 適用 +``` + +--- + +## 状態管理コマンド + +### `state validate` + +STATE.md と実際のファイルシステム間のドリフトを検出します。 + +**前提条件:** `.planning/STATE.md` が存在すること +**生成物:** STATE.md フィールドとファイルシステムの実態の間のドリフトを示す検証レポート + +```bash +node gsd-tools.cjs state validate +``` + +--- + +### `state sync [--verify]` + +ディスク上の実際のプロジェクト状態から STATE.md を再構築します。 + +| フラグ | 説明 | +|------|-------------| +| `--verify` | ドライランモード — 書き込みなしで提案された変更を表示 | + +**前提条件:** `.planning/` ディレクトリが存在すること +**生成物:** ファイルシステムの実態を反映した更新された `STATE.md` + +```bash +node gsd-tools.cjs state sync # ディスクから STATE.md を再構築 +node gsd-tools.cjs state sync --verify # ドライラン: 書き込みなしで変更を表示 +``` + +--- + +### `state planned-phase` + +plan-phase 完了後に状態遷移を記録します(Planned/Ready to execute)。 + +| フラグ | 説明 | +|------|-------------| +| `--phase N` | 計画されたフェーズ番号 | +| `--plans N` | 生成された計画の数 | + +**前提条件:** フェーズが計画済みであること +**生成物:** 計画後の状態を含む更新された `STATE.md` + +```bash +node gsd-tools.cjs state planned-phase --phase 3 --plans 2 +``` + +--- + ## コミュニティコマンド +### コミュニティフック + +`.planning/config.json` の `hooks.community: true` でゲートされたオプションの git およびセッションフック。明示的に有効にしない限りすべてノーオプです。 + +| フック | 目的 | +|------|---------| +| `gsd-validate-commit.sh` | git コミットメッセージに Conventional Commits フォーマットを適用 | +| `gsd-session-state.sh` | セッション状態の遷移を追跡 | +| `gsd-phase-boundary.sh` | フェーズ境界チェックを適用 | + +有効にするには: +```json +{ "hooks": { "community": true } } +``` + +--- + +### コミュニティへの参加 + +GSD Discord コミュニティに参加するには、GSD README 内のリンクを訪問するか、`/gsd-help` を実行して表示される Discord リンクに従ってください。 + +--- + +## 貢献: スキル説明の標準 + +スキル説明(各 `commands/gsd/*.md` フロントマターの `description:` フィールド)は、すべてのセッションのシステムプロンプトに注入されます。セッションごとのオーバーヘッドを低く保つために、説明は ≤ 100 文字でなければならず、`argument-hint:` に既に含まれるフラグのドキュメントを複製してはなりません。 + +リントゲートで予算を適用します: + +```bash +npm run lint:descriptions +``` + +このチェックは `tests/enh-2789-description-budget.test.cjs` を介して `npm test` の一部としても実行されます。 + +--- + +## Related + +- [Configuration Reference](../CONFIGURATION.md) +- [CLI Tools Reference](../CLI-TOOLS.md) +- [Feature Reference](../FEATURES.md) +- [Docs index](../README.md) diff --git a/docs/ja-JP/FEATURES.md b/docs/ja-JP/FEATURES.md index 2902bc756..eda9783a7 100644 --- a/docs/ja-JP/FEATURES.md +++ b/docs/ja-JP/FEATURES.md @@ -102,6 +102,68 @@ - [レスポンス言語設定](#83-レスポンス言語設定) - [手動アップデート手順](#84-手動アップデート手順) - [新規ランタイムサポート (Trae, Cline, Augment Code)](#85-新規ランタイムサポート-trae-cline-augment-code) + - [自律モード `--interactive` フラグ](#86-自律モード---interactive-フラグ) + - [コミットドキュメントガードフック](#87-コミットドキュメントガードフック) + - [コミュニティフックオプトイン](#88-コミュニティフックオプトイン) +- [v1.34.0 の機能](#v1340-の機能) + - [グローバル学習ストア](#89-グローバル学習ストア) + - [クエリ可能コードベースインテリジェンス](#90-クエリ可能コードベースインテリジェンス) + - [実行コンテキストプロファイル](#91-実行コンテキストプロファイル) + - [ゲート分類法](#92-ゲート分類法) + - [コードレビューパイプライン](#93-コードレビューパイプライン) + - [ソクラテス的探索](#94-ソクラテス的探索) + - [セーフアンドゥ](#95-セーフアンドゥ) + - [プランインポート](#96-プランインポート) + - [高速コードベーススキャン](#97-高速コードベーススキャン) + - [自律監査から修正](#98-自律監査から修正) + - [改善されたプロンプトインジェクションスキャナー](#99-改善されたプロンプトインジェクションスキャナー) + - [プランフェーズのストール検出](#100-プランフェーズのストール検出) + - [/gsd-progress --next のハードストップ安全ゲート](#101-gsd-progress---next-のハードストップ安全ゲート) + - [アダプティブモデルプリセット](#102-アダプティブモデルプリセット) + - [ポストマージハンク検証](#103-ポストマージハンク検証) +- [v1.35.0 の機能](#v1350-の機能) + - [新規ランタイムサポート (Cline, CodeBuddy, Qwen Code)](#104-新規ランタイムサポート-cline-codebuddy-qwen-code) + - [GSD-2 逆マイグレーション](#105-gsd-2-逆マイグレーション) + - [AI 統合フェーズウィザード](#106-ai-統合フェーズウィザード) + - [AI 評価レビュー](#107-ai-評価レビュー) +- [v1.36.0 の機能](#v1360-の機能) + - [プランバウンス](#108-プランバウンス) + - [外部コードレビューコマンド](#109-外部コードレビューコマンド) + - [クロス AI 実行デリゲーション](#110-クロス-ai-実行デリゲーション) + - [アーキテクチャ責任マッピング](#111-アーキテクチャ責任マッピング) + - [学習の抽出](#112-学習の抽出) + - [コンテキストウィンドウ対応プロンプト薄化](#114-コンテキストウィンドウ対応プロンプト薄化) + - [設定可能な CLAUDE.md パス](#115-設定可能な-claudemd-パス) + - [TDD パイプラインモード](#116-tdd-パイプラインモード) +- [v1.37.0 の機能](#v1370-の機能) + - [スパイクコマンド](#117-スパイクコマンド) + - [スケッチコマンド](#118-スケッチコマンド) + - [エージェントサイズ予算強制](#119-エージェントサイズ予算強制) + - [共有ボイラープレート抽出](#120-共有ボイラープレート抽出) + - [ナレッジグラフ統合](#121-ナレッジグラフ統合) +- [v1.40.0 の機能](#v1400-の機能) + - [スキルサーフェス統合](#122-スキルサーフェス統合) + - [ネームスペースメタスキル(2 段階ルーティング)](#123-ネームスペースメタスキル2-段階ルーティング) + - [コンテキストウィンドウ使用率ガード](#124-コンテキストウィンドウ使用率ガード) + - [フェーズライフサイクルステータス行リードサイド](#125-フェーズライフサイクルステータス行リードサイド) +- [v1.41.0 の機能](#v1410-の機能) + - [フェーズタイプごとのモデル選択](#126-フェーズタイプごとのモデル選択) + - [失敗ティアエスカレーション付き動的ルーティング](#127-失敗ティアエスカレーション付き動的ルーティング) + - [アップデートバナーオプトイン](#128-アップデートバナーオプトイン) + - [issue-driven-orchestration ガイド](#129-issue-driven-orchestration-ガイド) + - [グラファイファイコミットベースの古さ検出](#130-グラファイファイコミットベースの古さ検出) +- [v1.42.1 の機能](#v1421-の機能) + - [パッケージ正当性ゲート](#132-パッケージ正当性ゲート) + - [スキルサーフェス予算](#133-スキルサーフェス予算) + - [インストーラーマイグレーション](#134-インストーラーマイグレーション) + - [カスタムシップ PR ボディセクション](#135-カスタムシップ-pr-ボディセクション) + - [レビューデフォルトレビュアー](#136-レビューデフォルトレビュアー) + - [ファロー構造レビュープリパス](#137-ファロー構造レビュープリパス) + - [フェーズ終了時の人間検証モード](#138-フェーズ終了時の人間検証モード) + - [クォータとレート制限の失敗分類](#139-クォータとレート制限の失敗分類) + - [ステータス行コンテキスト位置](#140-ステータス行コンテキスト位置) + - [マイルストーンタグ作成トグル](#141-マイルストーンタグ作成トグル) + - [構造化 JSON エラーモード](#142-構造化-json-エラーモード) --- @@ -166,6 +228,8 @@ - REQ-DISC-05: システムは推奨デフォルトを自動選択する `--auto` フラグをサポートしなければならない - REQ-DISC-06: システムはグループ化された質問取り込みのための `--batch` フラグをサポートしなければならない - REQ-DISC-07: システムはグレーゾーンを特定する前に関連ソースファイルをスカウトしなければならない(コード認識型ディスカッション) +- REQ-DISC-08: USER-PROFILE.md が非技術的なオーナーを示す場合(learning_style: guided、frustration_triggers にジャーゴン、または高レベルの説明深度)、システムはグレーエリアの言語を製品アウトカム用語に適応しなければならない +- REQ-DISC-09: REQ-DISC-08 が適用される場合、advisor_research の根拠段落は平易な言語で書き直されなければならない — 同じ決定、翻訳されたフレーミング **生成物:** `{padded_phase}-CONTEXT.md` — リサーチとプランニングに反映されるユーザーの要望 @@ -335,6 +399,7 @@ - REQ-SHIP-03: システムは SUMMARY.md、VERIFICATION.md、REQUIREMENTS.md から PR 本文を自動生成しなければならない - REQ-SHIP-04: システムは STATE.md をシッピングステータスと PR 番号で更新しなければならない - REQ-SHIP-05: システムはドラフト PR のための `--draft` フラグをサポートしなければならない +- REQ-SHIP-06: システムは `ship.pr_body_sections` で設定された追記専用プロジェクト PR ボディセクションをサポートしなければならない **前提条件:** フェーズ検証済み、`gh` CLI がインストール・認証済み、フィーチャーブランチで作業中 @@ -736,6 +801,36 @@ | `TESTING.md` | テストインフラ、カバレッジ、パターン | | `INTEGRATIONS.md` | 外部サービス、API、サードパーティ依存関係 | +**増分リマップ — `--paths` (#2003):** マッパーはオプションの +`--paths ` スコープヒントを受け付けます。指定した場合、ツリー全体をスキャンする代わりに、リストされたリポジトリ相対プレフィックスに探索を制限します。 +これはフェーズが実際に変更したサブツリーのみを更新するために、実行後コードベースドリフトゲートが使用するパスウェイです。各生成ドキュメントはその YAML フロントマターに `last_mapped_commit` を持ち、ドリフトを HEAD ではなくマッピング時点と照らし合わせて計測できます。 + +### 27a. 実行後コードベースドリフト検出 + +**導入:** #2003 +**トリガー:** すべての `/gsd-execute-phase` 終了時に自動実行 +**設定:** +- `workflow.drift_threshold`(整数、デフォルト `3`)— ゲートが動作するまでに必要な最小新規構造要素数。 +- `workflow.drift_action`(`warn` | `auto-remap`、デフォルト `warn`)— + 警告のみ、または影響を受けたサブツリーにスコープした `--paths` で `gsd-codebase-mapper` をスポーン。 + +**ドリフトとしてカウントされるもの:** +- マッピングされたパス外の新規ディレクトリ +- `(packages|apps)/*/src/index.*` の新規バレルエクスポート +- 新規マイグレーションファイル(supabase/prisma/drizzle/src/migrations/…) +- `routes/` または `api/` 下の新規ルートモジュール + +**非ブロッキング保証:** 内部障害(STRUCTURE.md の欠如、git エラー、マッパースポーン失敗)は +1 行をログに記録し、フェーズは継続します。ドリフト検出が検証を失敗させることはありません。 + +**要件:** +- REQ-DRIFT-01: システムは `git diff --name-status last_mapped_commit..HEAD` から 4 つのドリフトカテゴリを検出しなければならない +- REQ-DRIFT-02: アクションは要素数が `workflow.drift_threshold` 以上の場合のみ発動する +- REQ-DRIFT-03: `warn` アクションはエージェントをスポーンしてはならない +- REQ-DRIFT-04: `auto-remap` アクションはサニタイズされた `--paths` をマッパーに渡さなければならない +- REQ-DRIFT-05: 検出/リマップの失敗は `/gsd-execute-phase` に対して非ブロッキングでなければならない +- REQ-DRIFT-06: `last_mapped_commit` は各 `.planning/codebase/*.md` ファイルの YAML フロントマターを通じてラウンドトリップしなければならない + --- ## ユーティリティ機能 @@ -925,6 +1020,7 @@ fix(03-01): correct auth token expiry - REQ-HOOK-05: すべてのフックは3秒の stdin タイムアウトガードを含まなければならない - REQ-HOOK-06: すべてのフックはエラー時にサイレントに失敗しなければならない - REQ-HOOK-07: コンテキスト使用量は autocompact バッファ(16.5% リザーブ)に対して正規化されなければならない +- REQ-HOOK-08: アップデートバナーはオプトインであり、アップデートが利用可能でない限りサイレントでなければならない(PR #2795) **ステータスライン表示:** ``` @@ -1666,6 +1762,7 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を - REQ-CTXRED-01: システムはコンテキスト予算内に収まるよう、大きすぎる Markdown アーティファクトを切り詰めなければならない - REQ-CTXRED-02: キャッシュフレンドリーなアセンブリのためにプロンプトを順序付けなければならない(安定したプレフィックスを先頭に) - REQ-CTXRED-03: 削減は必須情報(見出し、要件、タスク構造)を保持しなければならない +- REQ-CTXRED-04: スキルの `description:` フィールドは ≤ 100 文字でなければならない;`npm run lint:descriptions` で強制(`scripts/lint-descriptions.cjs` と `tests/enh-2789-description-budget.test.cjs` 参照) **プロセス:** 1. **計測** — ワークフローの総プロンプトサイズを計算 @@ -1817,3 +1914,1077 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を - REQ-TRAE-01: インストーラーは Trae IDE インストールのための `--trae` フラグをサポートしなければならない - REQ-CLINE-01: インストーラーは `.clinerules` 設定を通じて Cline をサポートしなければならない - REQ-AUGMENT-01: インストーラーはスキル変換と設定管理で Augment Code をサポートしなければならない + +--- + +### 86. 自律モード `--interactive` フラグ + +**フラグ:** `/gsd-autonomous --interactive` + +**目的:** ディスカスフェーズをインタラクティブ(ユーザーが質問に回答)に保ちながら、プランと実行をバックグラウンドエージェントとしてディスパッチするリーンコンテキスト自律モード。 + +**要件:** +- REQ-INTERACT-01: `--interactive` はインタラクティブな質問(自動回答なし)で discuss-phase をメインコンテキスト内でインラインに実行しなければならない +- REQ-INTERACT-02: `--interactive` はコンテキスト分離のために plan-phase と execute-phase をバックグラウンドエージェントとしてディスパッチしなければならない +- REQ-INTERACT-03: `--interactive` はパイプラインの並列性を有効にしなければならない — フェーズ N のビルド中にフェーズ N+1 をディスカス +- REQ-INTERACT-04: メインコンテキストはディスカッション会話のみを蓄積しなければならない(リーンコンテキスト) + +**プロセス:** +1. **インラインディスカス** — メインコンテキストでユーザーインタラクションとともに discuss-phase を実行 +2. **ディスパッチ** — プランと実行を新鮮なコンテキストウィンドウを持つバックグラウンドエージェントに送信 +3. **パイプライン** — バックグラウンドエージェントがフェーズ N をビルドする間、フェーズ N+1 のディスカッションを開始 + +--- + +### 87. コミットドキュメントガードフック + +**フック:** `gsd-commit-docs.js` + +**目的:** `commit_docs` 設定を強制する PreToolUse フックで、`planning.commit_docs` が `false` の場合に `.planning/` ファイルがコミットされることを防止します。 + +**要件:** +- REQ-COMMITDOCS-01: フックは `.planning/` ファイルをステージングする git commit コマンドを傍受しなければならない +- REQ-COMMITDOCS-02: フックは `commit_docs` が `false` の場合に `.planning/` ファイルを含むコミットをブロックしなければならない +- REQ-COMMITDOCS-03: フックは勧告的でなければならない — `commit_docs` が `true` または不在の場合はブロックしない + +--- + +### 88. コミュニティフックオプトイン + +**フック:** `gsd-validate-commit.sh`、`gsd-session-state.sh`、`gsd-phase-boundary.sh` + +**目的:** GSD プロジェクト向けのオプションの git およびセッションフックで、設定の `hooks.community: true` の背後にゲートされています。 + +**要件:** +- REQ-COMMUNITY-01: すべてのコミュニティフックは `.planning/config.json` の `hooks.community` が `true` でない限りノーオペレーションでなければならない +- REQ-COMMUNITY-02: `gsd-validate-commit.sh` は git コミットメッセージに Conventional Commits 形式を強制しなければならない +- REQ-COMMUNITY-03: `gsd-session-state.sh` はセッション状態遷移をトラッキングしなければならない +- REQ-COMMUNITY-04: `gsd-phase-boundary.sh` はフェーズ境界チェックを強制しなければならない + +**設定:** +| 設定 | 型 | デフォルト | 説明 | +|------|-----|-----------|------| +| `hooks.community` | boolean | `false` | コミット検証、セッション状態、フェーズ境界のオプションコミュニティフックを有効化 | + +--- + +## v1.34.0 機能 + + - [グローバル学習ストア](#89-グローバル学習ストア) + - [クエリ可能コードベースインテリジェンス](#90-クエリ可能コードベースインテリジェンス) + - [実行コンテキストプロファイル](#91-実行コンテキストプロファイル) + - [ゲート分類法](#92-ゲート分類法) + - [コードレビューパイプライン](#93-コードレビューパイプライン) + - [ソクラテス的探索](#94-ソクラテス的探索) + - [セーフアンドゥ](#95-セーフアンドゥ) + - [プランインポート](#96-プランインポート) + - [高速コードベーススキャン](#97-高速コードベーススキャン) + - [自律監査から修正](#98-自律監査から修正) + - [改善されたプロンプトインジェクションスキャナー](#99-改善されたプロンプトインジェクションスキャナー) + - [プランフェーズのストール検出](#100-プランフェーズのストール検出) + - [/gsd-progress --next のハードストップ安全ゲート](#101-gsd-progress---next-のハードストップ安全ゲート) + - [アダプティブモデルプリセット](#102-アダプティブモデルプリセット) + - [ポストマージハンク検証](#103-ポストマージハンク検証) + +--- + +### 89. グローバル学習ストア + +**コマンド:** フェーズ完了時に自動トリガー;プランナーが消費 +**設定:** `features.global_learnings` + +**目的:** セッションを超えてプロジェクトをまたいだ学習をグローバルストアに永続化し、プランナーエージェントがプロジェクト履歴全体のパターンから学習できるようにします(現在のセッションだけでなく)。 + +**要件:** +- REQ-LEARN-01: 学習はフェーズ完了時に `.planning/` からグローバルストアに自動コピーされなければならない +- REQ-LEARN-02: プランナーエージェントはスポーン時にインジェクションを通じて関連する学習を受け取らなければならない +- REQ-LEARN-03: インジェクションはコンテキストの肥大化を避けるために `learnings.max_inject` でキャップされなければならない +- REQ-LEARN-04: 機能は `features.global_learnings: true` によるオプトインでなければならない + +**設定:** +| 設定 | 型 | デフォルト | 説明 | +|------|-----|-----------|------| +| `features.global_learnings` | boolean | `false` | クロスプロジェクト学習パイプラインを有効化 | +| `learnings.max_inject` | number | (システムデフォルト) | プランナーにインジェクトされる最大学習エントリ数 | + +--- + +### 90. クエリ可能コードベースインテリジェンス + +**コマンド:** `/gsd-map-codebase --query [|status|diff|refresh]` +**設定:** `intel.enabled` + +**目的:** コードベース構造、API サーフェス、依存関係グラフ、ファイルロール、アーキテクチャ決定のクエリ可能な JSON インデックスを `.planning/intel/` に維持します。コードベース全体を読み込まずにターゲット検索を可能にします。 + +**要件:** +- REQ-INTEL-01: インテルファイルは `.planning/intel/` に JSON として保存されなければならない +- REQ-INTEL-02: `query` モードはすべてのインテルファイルをまたいで用語を検索し、ファイルごとに結果をグループ化しなければならない +- REQ-INTEL-03: `status` モードは鮮度を報告しなければならない(FRESH/STALE、古さの閾値:24 時間) +- REQ-INTEL-04: `diff` モードは現在のインテル状態を最後のスナップショットと比較しなければならない +- REQ-INTEL-05: `refresh` モードはすべてのファイルを再構築するために intel-updater エージェントをスポーンしなければならない +- REQ-INTEL-06: 機能は `intel.enabled: true` によるオプトインでなければならない + +**生成されるインテルファイル:** +| ファイル | 内容 | +|---------|------| +| `stack.json` | テクノロジースタックと依存関係 | +| `api-map.json` | エクスポートされた関数と API サーフェス | +| `dependency-graph.json` | モジュール間の依存関係 | +| `file-roles.json` | 各ソースファイルのロール分類 | +| `arch-decisions.json` | 検出されたアーキテクチャ決定 | + +--- + +### 91. 実行コンテキストプロファイル + +**設定:** `context_profile` + +**目的:** 特定の作業タイプに合わせて調整されたあらかじめ設定された実行コンテキスト(モード、モデル、ワークフロー設定)を選択します(個別設定を手動で調整せずに)。 + +**要件:** +- REQ-CTX-01: `dev` プロファイルは反復開発に最適化しなければならない(balanced モデル、plan_check 有効) +- REQ-CTX-02: `research` プロファイルはリサーチ重視の作業に最適化しなければならない(高いモデルティア、research 有効) +- REQ-CTX-03: `review` プロファイルはコードレビュー作業に最適化しなければならない(verifier と code_review 有効) + +**利用可能なプロファイル:** `dev`、`research`、`review` + +**設定:** +| 設定 | 型 | デフォルト | 説明 | +|------|-----|-----------|------| +| `context_profile` | string | (なし) | 実行コンテキストプリセット:`dev`、`research`、または `review` | + +--- + +### 92. ゲート分類法 + +**参照:** `get-shit-done/references/gates.md` +**エージェント:** plan-checker、verifier + +**目的:** すべてのワークフロー決定ポイントを構造化する 4 つの正規ゲートタイプを定義し、plan-checker と verifier エージェントが一貫したゲートロジックを適用できるようにします。 + +**ゲートタイプ:** +| タイプ | 説明 | +|--------|------| +| **確認** | ユーザーが進行前に承認(例:ロードマップレビュー) | +| **品質** | 自動化された品質チェックが通過しなければならない(例:プラン検証ループ) | +| **安全** | 検出されたリスクまたはポリシー違反でのハードストップ | +| **遷移** | フェーズまたはマイルストーン境界の確認 | + +**要件:** +- REQ-GATES-01: plan-checker は各チェックポイントを 4 つのゲートタイプのいずれかに分類しなければならない +- REQ-GATES-02: verifier はゲートタイプに適したゲートロジックを適用しなければならない +- REQ-GATES-03: ハードストップ安全ゲートは `--auto` フラグでバイパスされてはならない + +--- + +### 93. コードレビューパイプライン + +**コマンド:** `/gsd-code-review`、`/gsd-code-review --fix` + +**目的:** フェーズ中に変更されたソースファイルの構造化レビューで、各修正をアトミックにコミットする別の自動修正パスを伴います。 + +**要件:** +- REQ-REVIEW-01: `gsd-code-review` は SUMMARY.md と git diff フォールバックを使用してフェーズにファイルをスコープしなければならない +- REQ-REVIEW-02: レビューは 3 つの深さレベルをサポートしなければならない:`quick`、`standard`、`deep` +- REQ-REVIEW-03: 所見は重大度で分類されなければならない:Critical、Warning、Info +- REQ-REVIEW-04: `gsd-code-review --fix` は REVIEW.md を読み込み、デフォルトで Critical および Warning の所見を修正しなければならない +- REQ-REVIEW-05: 各修正は説明的なメッセージとともにアトミックにコミットされなければならない +- REQ-REVIEW-06: `--auto` フラグは修正と再レビューの反復ループを有効にしなければならない(最大 3 回) +- REQ-REVIEW-07: 機能は `workflow.code_review` 設定フラグでゲートされなければならない + +**設定:** +| 設定 | 型 | デフォルト | 説明 | +|------|-----|-----------|------| +| `workflow.code_review` | boolean | `true` | コードレビューコマンドを有効化 | +| `workflow.code_review_depth` | string | `standard` | デフォルトのレビュー深度:`quick`、`standard`、または `deep` | + +--- + +### 94. ソクラテス的探索 + +**コマンド:** `/gsd-explore [topic]` + +**目的:** プランにコミットする前にソクラテス的な問いかけを通じてアイデアの探索を開発者にガイドします。出力を適切な GSD アーティファクトにルーティングします:ノート、TODO、シード、リサーチクエスチョン、要件更新、または新規フェーズ。 + +**要件:** +- REQ-EXPLORE-01: 探索はソクラテス的な問いかけを使用しなければならない — ソリューションを提案する前に質問する +- REQ-EXPLORE-02: セッションは出力を適切な GSD アーティファクトにルーティングするオプションを提供しなければならない +- REQ-EXPLORE-03: オプションのトピック引数は最初の質問をプライムしなければならない +- REQ-EXPLORE-04: 探索はオプションで技術的実現可能性のためにリサーチエージェントをスポーンしなければならない + +--- + +### 95. セーフアンドゥ + +**コマンド:** `/gsd-undo --last N | --phase NN | --plan NN-MM` + +**目的:** フェーズマニフェストと git log を使用して GSD フェーズまたはプランのコミットを安全にロールバックし、依存関係チェックとリバート適用前のハード確認ゲートを伴います。 + +**要件:** +- REQ-UNDO-01: `--phase` モードはマニフェストと git log フォールバックを通じてフェーズのすべてのコミットを識別しなければならない +- REQ-UNDO-02: `--plan` モードは特定のプランのすべてのコミットを識別しなければならない +- REQ-UNDO-03: `--last N` モードはインタラクティブな選択のために最近の GSD コミットを表示しなければならない +- REQ-UNDO-04: システムはリバート前に依存するフェーズ/プランをチェックしなければならない +- REQ-UNDO-05: git revert が実行される前に確認ゲートを表示しなければならない + +--- + +### 96. プランインポート + +**コマンド:** `/gsd-import --from ` + +**目的:** 外部プランファイルを `PROJECT.md` 決定との競合検出とともに GSD プランニングシステムに取り込み、有効な GSD PLAN.md に変換して plan-checker で検証します。 + +**要件:** +- REQ-IMPORT-01: インポーターは外部プランと既存の PROJECT.md 決定間の競合を検出しなければならない +- REQ-IMPORT-02: 検出されたすべての競合は書き込み前にユーザーに提示されなければならない +- REQ-IMPORT-03: インポートされたプランは有効な GSD PLAN.md 形式として書き込まれなければならない +- REQ-IMPORT-04: 書き込まれたプランは `gsd-plan-checker` 検証を通過しなければならない + +--- + +### 97. 高速コードベーススキャン + +**コマンド:** `/gsd-map-codebase --fast [--focus tech|arch|quality|concerns]` + +**目的:** 1 つまたは 2 つの組み合わせたフォーカスエリアに対して単一のマッパーエージェントをスポーンする `/gsd-map-codebase` の軽量な代替手段で、4 つの並列エージェントのオーバーヘッドなしに `.planning/codebase/` にターゲット出力を生成します。 + +**要件:** +- REQ-SCAN-01: スキャンは(4 つの並列エージェントではなく)正確に 1 つのマッパーエージェントをスポーンしなければならない +- REQ-SCAN-02: フォーカスエリアは次のいずれかでなければならない:`tech`、`arch`、`quality`、`concerns`、または組み合わせた `tech+arch` 省略形(デフォルト:`tech+arch`);組み合わせフォーカスは 1 回のパスで両エリアをカバーする単一エージェントとして実行 +- REQ-SCAN-03: 出力は `/gsd-map-codebase` と同じ形式で `.planning/codebase/` に書き込まれなければならない + +--- + +### 98. 自律監査から修正 + +**コマンド:** `/gsd-audit-fix [--source ] [--severity high|medium|all] [--max N] [--dry-run]` + +**目的:** 監査を実行し、所見を自動修正可能と手動のみに分類し、テスト検証とアトミックコミットで自動修正可能な問題を自律的に修正するエンドツーエンドパイプライン。 + +**要件:** +- REQ-AUDITFIX-01: 所見は変更前に自動修正可能または手動のみとして分類されなければならない +- REQ-AUDITFIX-02: 各修正はコミット前にテストで検証されなければならない +- REQ-AUDITFIX-03: 各修正はアトミックにコミットされなければならない +- REQ-AUDITFIX-04: `--dry-run` は修正を適用せずに分類テーブルを表示しなければならない +- REQ-AUDITFIX-05: `--max N` は 1 回の実行で適用される修正数を制限しなければならない(デフォルト:5) + +--- + +### 99. 改善されたプロンプトインジェクションスキャナー + +**フック:** `gsd-prompt-guard.js` +**スクリプト:** `scripts/prompt-injection-scan.sh` + +**目的:** プランニングアーティファクト内のプロンプトインジェクション試みの検出を強化し、不可視 Unicode 文字検出、エンコードの難読化パターン、エントロピーベースの分析を追加します。 + +**要件:** +- REQ-SCAN-INJ-01: スキャナーは不可視 Unicode 文字(ゼロ幅スペース、ソフトハイフンなど)を検出しなければならない +- REQ-SCAN-INJ-02: スキャナーはエンコードの難読化パターン(base64 エンコードされた命令、ホモグリフ)を検出しなければならない +- REQ-SCAN-INJ-03: スキャナーは予期しない位置の高エントロピー文字列にフラグを立てるためにエントロピー分析を適用しなければならない +- REQ-SCAN-INJ-04: スキャナーは勧告的のみでなければならない — 検出はログに記録されるが、ブロッキングではない + +--- + +### 100. プランフェーズのストール検出 + +**コマンド:** `/gsd-plan-phase` + +**目的:** プランナーの修正ループが停止した(複数のイテレーションにわたって同じ出力を生成している)ことを検出し、異なる戦略にエスカレートするか明確な診断で終了してサイクルを破ります。 + +**要件:** +- REQ-STALL-01: 修正ループは連続するイテレーション全体で同一のプラン出力を検出しなければならない +- REQ-STALL-02: ストール検出時、システムは再試行前に戦略をエスカレートしなければならない +- REQ-STALL-03: 最大ストール再試行数は制限されなければならない(既存の最大 3 イテレーションでキャップ) + +--- + +### 101. /gsd-progress --next のハードストップ安全ゲート + +**コマンド:** `/gsd-progress --next` + +**目的:** 繰り返し同一ステップが検出された場合に自律チェーニングを中断するハードストップ安全ゲートと連続呼び出しガードを追加し、`/gsd-progress --next` の暴走ループを防止します。 + +**要件:** +- REQ-NEXT-GATE-01: `/gsd-progress --next` は連続した同一ステップ呼び出しをトラッキングしなければならない +- REQ-NEXT-GATE-02: 同一ステップの繰り返し時、システムはユーザーにハードストップゲートを提示しなければならない +- REQ-NEXT-GATE-03: ユーザーはハードストップゲートを通過して続行するために明示的に確認しなければならない + +--- + +### 102. アダプティブモデルプリセット + +**設定:** `model_profile: "adaptive"` + +**目的:** すべてのエージェントに単一のティアを適用するのではなく、現在のエージェントのロールに基づいて適切なモデルティアを自動的に選択するロールベースのモデル割り当て。 + +**要件:** +- REQ-ADAPTIVE-01: `adaptive` プリセットはエージェントロールに基づいてモデルティアを割り当てなければならない(planner → quality ティア、executor → balanced ティアなど) +- REQ-ADAPTIVE-02: `adaptive` は `/gsd-config --profile adaptive` で選択可能でなければならない + +--- + +### 103. ポストマージハンク検証 + +**コマンド:** `/gsd-update --reapply` + +**目的:** アップデート後のローカルパッチ適用後、すべてのハンクが実際に適用されたことを期待されるパッチ内容とライブファイルシステムを比較することで検証します。不完全なマージをサイレントに受け入れるのではなく、ドロップされたまたは部分的なハンクを即座に表示します。 + +**要件:** +- REQ-PATCH-VERIFY-01: reapply-patches はマージ後に各ハンクが適用されたことを検証しなければならない +- REQ-PATCH-VERIFY-02: ドロップされたまたは部分的なハンクはファイルと行のコンテキストとともにユーザーに報告されなければならない +- REQ-PATCH-VERIFY-03: 検証はパッチごとではなく、すべてのパッチが適用された後に実行されなければならない + +--- + +## v1.35.0 機能 + +- [新規ランタイムサポート (Cline, CodeBuddy, Qwen Code)](#104-新規ランタイムサポート-cline-codebuddy-qwen-code) +- [GSD-2 逆マイグレーション](#105-gsd-2-逆マイグレーション) +- [AI 統合フェーズウィザード](#106-ai-統合フェーズウィザード) +- [AI 評価レビュー](#107-ai-評価レビュー) + +--- + +### 104. 新規ランタイムサポート (Cline, CodeBuddy, Qwen Code) + +**対象:** `npx @opengsd/gsd-core` + +**目的:** Cline、CodeBuddy、Qwen Code ランタイムへの GSD インストールを拡張します。 + +**要件:** +- REQ-CLINE-02: Cline インストールは `.clinerules` を `~/.cline/`(グローバル)または `./.cline/`(ローカル)に書き込まなければならない。カスタムスラッシュコマンドなし — ルールベースの統合のみ。フラグ:`--cline`。 +- REQ-CODEBUDDY-01: CodeBuddy インストールはスキルを `~/.codebuddy/skills/gsd-*/SKILL.md` にデプロイしなければならない。フラグ:`--codebuddy`。 +- REQ-QWEN-01: Qwen Code インストールはスキルを `~/.qwen/skills/gsd-*/SKILL.md` にデプロイしなければならない(Claude Code 2.1.88+ で使用されるオープン標準に従う)。`QWEN_CONFIG_DIR` 環境変数はデフォルトパスをオーバーライドします。フラグ:`--qwen`。 + +**ランタイムサマリー:** + +| ランタイム | インストール形式 | 設定パス | フラグ | +|-----------|----------------|---------|-------| +| Cline | `.clinerules` | `~/.cline/` または `./.cline/` | `--cline` | +| CodeBuddy | スキル (`SKILL.md`) | `~/.codebuddy/skills/` | `--codebuddy` | +| Qwen Code | スキル (`SKILL.md`) | `~/.qwen/skills/` | `--qwen` | + +--- + +### 105. GSD-2 逆マイグレーション + +**コマンド:** `/gsd-import --from-gsd2 [--dry-run] [--force] [--path ]` + +**目的:** GSD-2 形式(Milestone→Slice→Task 階層の `.gsd/` ディレクトリ)のプロジェクトを v1 の `.planning/` 形式に移行し、すべての GSD v1 コマンドとの完全な互換性を復元します。 + +**要件:** +- REQ-FROM-GSD2-01: インポーターは指定または現在のディレクトリから `.gsd/` を読み込まなければならない +- REQ-FROM-GSD2-02: Milestone→Slice 階層は連続したフェーズ番号に平坦化されなければならない(M001/S01→フェーズ 01、M001/S02→フェーズ 02、M002/S01→フェーズ 03 など) +- REQ-FROM-GSD2-03: `--force` なしに既存の `.planning/` ディレクトリを上書きしないよう保護しなければならない +- REQ-FROM-GSD2-04: `--dry-run` はファイルを書き込まずにすべての変更をプレビューしなければならない +- REQ-FROM-GSD2-05: マイグレーションは `PROJECT.md`、`REQUIREMENTS.md`、`ROADMAP.md`、`STATE.md`、および連続したフェーズディレクトリを生成しなければならない + +**フラグ:** + +| フラグ | 説明 | +|-------|------| +| `--dry-run` | ファイルを書き込まずにマイグレーション出力をプレビュー | +| `--force` | 既存の `.planning/` ディレクトリを上書き | +| `--path ` | GSD-2 ルートディレクトリを指定 | + +--- + +### 106. AI 統合フェーズウィザード + +**コマンド:** `/gsd-ai-integration-phase [N]` + +**目的:** プロジェクトフェーズで AI/LLM 機能の選択、統合、評価計画を開発者にガイドします。プランニングと検証に組み込まれる構造化された `AI-SPEC.md` を生成します。 + +**要件:** +- REQ-AISPEC-01: ウィザードはフレームワーク選択、モデル選択、統合アプローチをカバーするインタラクティブな決定マトリックスを提示しなければならない +- REQ-AISPEC-02: システムはプロジェクトタイプに関連するドメイン固有の失敗モードと評価基準を表示しなければならない +- REQ-AISPEC-03: システムは 3 つの並列専門家エージェントをスポーンしなければならない:domain-researcher、framework-selector、eval-planner +- REQ-AISPEC-04: 出力はフレームワーク推奨、実装ガイダンス、評価戦略を含む `{phase}-AI-SPEC.md` を生成しなければならない + +**生成物:** フェーズディレクトリ内の `{phase}-AI-SPEC.md` + +--- + +### 107. AI 評価レビュー + +**コマンド:** `/gsd-eval-review [N]` + +**目的:** 実行された AI フェーズの評価カバレッジを `AI-SPEC.md` プランと照合して遡及的に監査します。フェーズが閉じられる前に計画済みと実装済みの評価間のギャップを特定します。 + +**要件:** +- REQ-EVALREVIEW-01: レビューは指定されたフェーズから `AI-SPEC.md` を読み込まなければならない +- REQ-EVALREVIEW-02: 各評価ディメンションは COVERED、PARTIAL、または MISSING としてスコアリングされなければならない +- REQ-EVALREVIEW-03: 出力は所見、ギャップ説明、および修正ガイダンスを含まなければならない +- REQ-EVALREVIEW-04: `EVAL-REVIEW.md` はフェーズディレクトリに書き込まれなければならない + +**生成物:** スコアリングされた評価ディメンション、ギャップ分析、修正ステップを含む `{phase}-EVAL-REVIEW.md` + +--- + +## v1.36.0 機能 + +### 108. プランバウンス + +**コマンド:** `/gsd-plan-phase N --bounce` + +**目的:** プランがチェッカーを通過した後、外部スクリプト(2 番目の AI、リンター、カスタムバリデーター)を通じてオプションで精製します。バウンスステップは各プランをバックアップし、スクリプトを実行し、結果の YAML フロントマターの整合性を検証し、プランチェッカーを再実行し、何か失敗した場合は元に戻します。 + +**要件:** +- REQ-BOUNCE-01: `--bounce` フラグまたは `workflow.plan_bounce: true` がステップを有効化;`--skip-bounce` は常に無効化 +- REQ-BOUNCE-02: `workflow.plan_bounce_script` は有効な実行ファイルを指していなければならない;スクリプトが見つからない場合は警告を生成してスキップ +- REQ-BOUNCE-03: 各プランはスクリプト実行前に `*-PLAN.pre-bounce.md` にバックアップされる +- REQ-BOUNCE-04: YAML フロントマターが壊れているまたはプランチェッカーが失敗したバウンスされたプランはバックアップから復元される +- REQ-BOUNCE-05: `workflow.plan_bounce_passes`(デフォルト:2)はスクリプトが受け取る精製パス数を制御する + +**設定:** `workflow.plan_bounce`、`workflow.plan_bounce_script`、`workflow.plan_bounce_passes` + +--- + +### 109. 外部コードレビューコマンド + +**コマンド:** `/gsd-ship`(強化版) + +**目的:** `/gsd-ship` の手動レビューステップの前に、設定されている場合は外部コードレビューコマンドを自動的に実行します。コマンドは stdin を通じて diff とフェーズコンテキストを受け取り、JSON verdict(`APPROVED` または `REVISE`)を返します。結果に関わらず既存の手動レビューフローにフォールスルーします。 + +**要件:** +- REQ-EXTREVIEW-01: `workflow.code_review_command` はコマンド文字列に設定されなければならない;null はスキップを意味する +- REQ-EXTREVIEW-02: diff は `--stat` サマリーを含めて `BASE_BRANCH` に対して生成される +- REQ-EXTREVIEW-03: レビュープロンプトは stdin を通じてパイプされる(シェルインターポレートされない) +- REQ-EXTREVIEW-04: 120 秒タイムアウト;失敗時に stderr をキャプチャ +- REQ-EXTREVIEW-05: `verdict`、`confidence`、`summary`、`issues` フィールドの JSON 出力をパース + +**設定:** `workflow.code_review_command` + +--- + +### 110. クロス AI 実行デリゲーション + +**コマンド:** `/gsd-execute-phase N --cross-ai` + +**目的:** 個々のプランを実行のために外部 AI ランタイムにデリゲートします。フロントマターに `cross_ai: true` があるプラン(または `--cross-ai` 使用時はすべてのプラン)が stdin を通じて設定済みコマンドに送信されます。正常に処理されたプランは通常の executor キューから削除されます。 + +**要件:** +- REQ-CROSSAI-01: `--cross-ai` はすべてのプランをクロス AI に強制;`--no-cross-ai` は無効化 +- REQ-CROSSAI-02: `workflow.cross_ai_execution: true` とプランフロントマター `cross_ai: true` がプランごとのアクティベーションに必要 +- REQ-CROSSAI-03: タスクプロンプトはインジェクションを防ぐために stdin を通じてパイプされる +- REQ-CROSSAI-04: ダーティなワーキングツリーは実行前に警告を生成する +- REQ-CROSSAI-05: 失敗時、ユーザーは選択する:再試行、スキップ(通常の executor にフォールバック)、またはアボート + +**設定:** `workflow.cross_ai_execution`、`workflow.cross_ai_command`、`workflow.cross_ai_timeout` + +--- + +### 111. アーキテクチャ責任マッピング + +**コマンド:** `/gsd-plan-phase`(強化されたリサーチステップ) + +**目的:** フェーズリサーチ中に、phase-researcher が各機能をそのアーキテクチャティアオーナー(ブラウザ、フロントエンドサーバー、API、CDN/スタティック、データベース)にマッピングします。プランナーはこのマップに対してタスクをクロスリファレンスし、plan-checker はディメンション 7c としてティアコンプライアンスを強制します。 + +**要件:** +- REQ-ARM-01: Phase researcher は RESEARCH.md にアーキテクチャ責任マップテーブルを生成しなければならない(ステップ 1.5) +- REQ-ARM-02: プランナーはマップに対してタスクからティアへの割り当てをサニティチェックしなければならない +- REQ-ARM-03: Plan checker はディメンション 7c としてティアコンプライアンスを検証しなければならない(一般的な不一致は WARNING、セキュリティに敏感なものは BLOCKER) + +**生成物:** `{phase}-RESEARCH.md` 内の `## Architectural Responsibility Map` セクション + +--- + +### 112. 学習の抽出 + +**コマンド:** `/gsd-extract-learnings N` + +**目的:** 完了したフェーズのアーティファクトから構造化された知識を抽出します。PLAN.md と SUMMARY.md(必須)および VERIFICATION.md、UAT.md、STATE.md(オプション)を読み込み、決定、教訓、パターン、驚きの 4 カテゴリの学習を生成します。オプションで `capture_thought` ツールを通じて各項目を外部ナレッジベースにキャプチャします。 + +**要件:** +- REQ-LEARN-01: PLAN.md と SUMMARY.md が必要;見つからない場合は明確なエラーで終了 +- REQ-LEARN-02: 各抽出された項目にはソース帰属(アーティファクトとセクション)が含まれる +- REQ-LEARN-03: `capture_thought` ツールが利用可能な場合、`source`、`project`、`phase` メタデータとともに項目をキャプチャする +- REQ-LEARN-04: `capture_thought` が利用不可の場合、正常に完了し、外部キャプチャがスキップされたことをログに記録する +- REQ-LEARN-05: 2 回実行すると前の `LEARNINGS.md` が上書きされる + +**生成物:** YAML フロントマター(phase、project、カテゴリごとのカウント、missing_artifacts)を含む `{phase}-LEARNINGS.md` + +**オプション統合 — `capture_thought`:** `capture_thought` は**バンドルされたツールではなく、規約**です。GSD はそれを同梱せず、必須でもありません。ワークフローは現在のセッションの MCP サーバーが `capture_thought` という名前のツールを公開しているかどうかを確認し、公開している場合は以下のシグネチャで抽出した学習ごとに 1 回呼び出します。そのようなツールが存在しない場合、ステップはサイレントにスキップされ、`LEARNINGS.md` が主要な出力として残ります。 + +期待されるツールシグネチャ: +```javascript +capture_thought({ + category: "decision" | "lesson" | "pattern" | "surprise", + phase: , + content: , + source: +}) +``` + +メモリ / ナレッジベース MCP サーバー(例:ExoCortex スタイルのサーバー、`claude-mem`、または `mem0` スタイルのサーバー)を実行するユーザーは、このツール名を実装して、`project`、`phase`、`source` メタデータとともに学習を自動的にナレッジベースにルーティングできます。それ以外のユーザーは追加のセットアップなしに `/gsd-extract-learnings` を使用できます — `LEARNINGS.md` アーティファクトが機能です。 + +--- + +### 114. コンテキストウィンドウ対応プロンプト薄化 + +**目的:** 200K トークン未満のコンテキストウィンドウを持つモデルのスタティックプロンプトオーバーヘッドを最大 40% 削減します。拡張例とアンチパターンリストがエージェント定義から `@` required_reading を通じてオンデマンドで読み込まれる参照ファイルに抽出されます。 + +**要件:** +- REQ-THIN-01: `CONTEXT_WINDOW < 200000` の場合、executor と planner のエージェントプロンプトはインライン例を省略する +- REQ-THIN-02: 抽出されたコンテンツは `references/executor-examples.md` と `references/planner-antipatterns.md` に存在する +- REQ-THIN-03: 標準(200K-500K)と拡張(500K+)ティアは影響を受けない +- REQ-THIN-04: コアルールと決定ロジックはインラインのまま;詳細な例のみが抽出される + +**参照ファイル:** `executor-examples.md`、`planner-antipatterns.md` + +--- + +### 115. 設定可能な CLAUDE.md パス + +**目的:** プロジェクトが CLAUDE.md をルート以外の場所に保存できるようにします。`claude_md_path` 設定キーは `/gsd-profile-user` および関連コマンドが生成された CLAUDE.md ファイルを書き込む場所を制御します。 + +**要件:** +- REQ-CMDPATH-01: `claude_md_path` はデフォルトで `./CLAUDE.md` +- REQ-CMDPATH-02: プロファイル生成コマンドは設定からパスを読み込み、指定された場所に書き込む +- REQ-CMDPATH-03: 相対パスはプロジェクトルートから解決される + +**設定:** `claude_md_path` + +--- + +### 116. TDD パイプラインモード + +**目的:** オプトインの TDD(レッドグリーンリファクタリング)をファーストクラスのフェーズ実行モードとして提供します。有効にすると、プランナーは適切なタスクに対して積極的に `type: tdd` を選択し、executor は RED/GREEN/REFACTOR ゲートシーケンスを強制し、RED 前の予期しない GREEN でフェイルファストします。 + +**要件:** +- REQ-TDD-01: `workflow.tdd_mode` 設定キー(boolean、デフォルト `false`) +- REQ-TDD-02: 有効時、プランナーは `references/tdd.md` の TDD ヒューリスティックをすべての適格なタスク(ビジネスロジック、API、バリデーション、アルゴリズム、ステートマシン)に適用する +- REQ-TDD-03: Executor は `type: tdd` プランのゲートシーケンスを強制する — RED コミット(`test(...)`)は GREEN コミット(`feat(...)`)より先でなければならない +- REQ-TDD-04: Executor は RED フェーズ中にテストが予期しなくパスした場合にフェイルファストする(機能がすでに存在するかテストが間違っている) +- REQ-TDD-05: フェーズ終了時の協調レビューチェックポイントがすべての TDD プランにわたるゲートコンプライアンスを確認する(勧告的、非ブロッキング) +- REQ-TDD-06: ゲート違反は SUMMARY.md の `## TDD Gate Compliance` セクション下に表示される + +**設定:** `workflow.tdd_mode` +**参照ファイル:** `tdd.md`、`checkpoints.md` + +--- + +## v1.37.0 機能 + +### 117. スパイクコマンド + +**コマンド:** `/gsd-spike [idea] [--quick]` + +**目的:** 実装アプローチにコミットする前に 2〜5 つの焦点を絞った実現可能性実験を実行します。各実験は Given/When/Then フレーミングを使用し、実行可能なコードを生成し、VALIDATED / INVALIDATED / PARTIAL verdict を返します。コンパニオンの `/gsd-spike --wrap-up` は所見をプロジェクトローカルのスキルにパッケージ化します。 + +**要件:** +- REQ-SPIKE-01: 各実験はコードが書かれる前に Given/When/Then 仮説を生成しなければならない +- REQ-SPIKE-02: 各実験は動作するコードまたは最小限の再現を含まなければならない +- REQ-SPIKE-03: 各実験はエビデンスとともに VALIDATED、INVALIDATED、または PARTIAL verdict のいずれかを返さなければならない +- REQ-SPIKE-04: 結果は `.planning/spikes/NNN-experiment-name/` に README と MANIFEST.md とともに保存されなければならない +- REQ-SPIKE-05: `--quick` フラグはインテーク会話をスキップし、引数テキストを実験方向として使用する +- REQ-SPIKE-06: `/gsd-spike --wrap-up` は所見を `.claude/skills/spike-findings-[project]/` にパッケージ化しなければならない + +**生成物:** + +| アーティファクト | 説明 | +|---------------|------| +| `.planning/spikes/NNN-name/README.md` | 仮説、実験コード、verdict、エビデンス | +| `.planning/spikes/MANIFEST.md` | verdict を含むすべてのスパイクのインデックス | +| `.claude/skills/spike-findings-[project]/` | パッケージ化された所見(`/gsd-spike --wrap-up` 経由) | + +--- + +### 118. スケッチコマンド + +**コマンド:** `/gsd-sketch [idea] [--quick] [--text]` + +**目的:** 実装にコミットする前に使い捨ての HTML モックアップを通じてデザイン方向を探索します。デザインの質問ごとに 2〜3 のインタラクティブなバリアントを生成し、ビルドステップなしにブラウザで直接閲覧できます。コンパニオンの `/gsd-sketch --wrap-up` は勝利した決定をプロジェクトローカルのスキルにパッケージ化します。 + +**要件:** +- REQ-SKETCH-01: 各スケッチは 1 つの特定のビジュアルデザイン質問に答えなければならない +- REQ-SKETCH-02: 各スケッチはタブナビゲーションを持つ単一の `index.html` に 2〜3 の意味のある異なるバリアントを含まなければならない +- REQ-SKETCH-03: すべてのインタラクティブ要素(ホバー、クリック、トランジション)は機能しなければならない +- REQ-SKETCH-04: スケッチはリアルに近いコンテンツを使用しなければならない( lorem ipsum ではない) +- REQ-SKETCH-05: 共有の `themes/default.css` は合意された美観に適応した CSS 変数を提供しなければならない +- REQ-SKETCH-06: `--quick` フラグはムードインテークをスキップ;`--text` フラグは非 Claude ランタイム用に `AskUserQuestion` を番号付きリストに置き換える +- REQ-SKETCH-07: 勝利バリアントは README フロントマターと HTML タブの ★ でマークされなければならない +- REQ-SKETCH-08: `/gsd-sketch --wrap-up` は勝利した決定を `.claude/skills/sketch-findings-[project]/` にパッケージ化しなければならない + +**生成物:** +| アーティファクト | 説明 | +|---------------|------| +| `.planning/sketches/NNN-name/index.html` | 2〜3 のインタラクティブ HTML バリアント | +| `.planning/sketches/NNN-name/README.md` | デザイン質問、バリアント、勝者、注目点 | +| `.planning/sketches/themes/default.css` | 共有 CSS テーマ変数 | +| `.planning/sketches/MANIFEST.md` | 勝者を含むすべてのスケッチのインデックス | +| `.claude/skills/sketch-findings-[project]/` | パッケージ化された決定(`/gsd-sketch --wrap-up` 経由) | + +--- + +### 119. エージェントサイズ予算強制 + +**目的:** CI で強制される段階的な行数制限でエージェントプロンプトファイルをリーンに保ちます。過大なエージェントは本番のコンテキストウィンドウを肥大化させる前にキャッチされます。 + +**要件:** +- REQ-BUDGET-01: `agents/gsd-*.md` ファイルは 3 つのティアに分類される:XL(≤ 1,600 行)、Large(≤ 1,000 行)、Default(≤ 500 行) +- REQ-BUDGET-02: ティア割り当てはファイルの YAML フロントマターで宣言される(`size: xl | large | default`) +- REQ-BUDGET-03: `tests/agent-size-budget.test.cjs` は制限を強制し、違反時に CI を失敗させる +- REQ-BUDGET-04: `size` フロントマターキーのないファイルはデフォルト(500 行)制限にデフォルトする + +**テストファイル:** `tests/agent-size-budget.test.cjs` + +--- + +### 120. 共有ボイラープレート抽出 + +**目的:** 共通の 2 つのボイラープレートブロックをオンデマンドで読み込まれる共有参照ファイルに抽出することでエージェント間の重複を削減します。エージェントファイルをサイズ予算内に保ち、ボイラープレートの更新を単一ファイルの変更にします。 + +**要件:** +- REQ-BOILER-01: 必須初期読み込み命令は `references/mandatory-initial-read.md` に抽出される +- REQ-BOILER-02: プロジェクトスキルディスカバリー命令は `references/project-skills-discovery.md` に抽出される +- REQ-BOILER-03: 以前これらのブロックをインライン化していたエージェントは `@` required_reading を通じてそれらを参照しなければならない + +**参照ファイル:** `references/mandatory-initial-read.md`、`references/project-skills-discovery.md` + +--- + +### 121. ナレッジグラフ統合 + +**目的:** `.planning/graphs/` にプロジェクトの軽量なナレッジグラフを構築、クエリ、検査します。プロジェクトごとのオプトイン。ユーザー向けコマンドの `/gsd-graphify` とプログラマティックな `gsd-tools.cjs graphify …` 動詞ファミリーとして公開されています。コマンド、エージェント、ワークフロー、フェーズをまたいだノードとエッジのグラフ指向ビューで `/gsd-map-codebase --query`(スナップショット指向)を補完します。 + +**要件:** +- REQ-GRAPH-01: `.planning/config.json` の `graphify.enabled: true` によるオプトイン。無効時、`/gsd-graphify` はアクティベーションヒントを表示して書き込みなしで停止。 +- REQ-GRAPH-02: スラッシュコマンド `/gsd-graphify` はサブコマンド `build`、`query `、`status`、`diff` を公開。プログラマティック CLI `node gsd-tools.cjs graphify …` はさらに `snapshot` を公開し、`graphify build` の最終ステップとして自動的に呼び出される。 +- REQ-GRAPH-03: ビルドは設定可能な `graphify.build_timeout`(秒)内で実行;タイムアウトを超えた場合、部分的なグラフを残さずにクリーンに中断。 +- REQ-GRAPH-04: `graphify.cjs` は `graph.edges` が存在しない場合に `graph.links` にフォールバックし、古いグラフアーティファクトが引き続きレンダリングされるようにする。 +- REQ-GRAPH-05: Graphify は `gsd-tools.cjs graphify ...` コマンドハンドラーを通じて呼び出される。 + +**設定:** `graphify.enabled`、`graphify.build_timeout` +**参照ファイル:** `commands/gsd/graphify.md`、`bin/lib/graphify.cjs` + +--- + +## v1.40.0 機能 + +### 122. スキルサーフェス統合 + +**目的:** 31 のマイクロスキルを 4 つの新しいグループ化された親と、サブ操作をフラグとして吸収する 6 つの既存の親に折りたたんで、積極的なスキルリストのオーバーヘッドを削減します。機能的な損失はゼロ — 削除されたすべてのマイクロスキルの動作は統合された親のフラグを通じて存続します。統合後、`commands/gsd/*.md` は 59 のサブスキル(plus 6 つのネームスペースメタスキル、#123 参照)を搭載。 + +**要件:** +- REQ-CONSOLIDATE-01: 4 つの新しいグループ化されたスキルがマイクロスキルのクラスターを置き換える: + - `/gsd-capture` — add-todo(デフォルト)、note(`--note`)、add-backlog(`--backlog`)、plant-seed(`--seed`)、check-todos(`--list`)を折りたたむ + - `/gsd-phase` — add-phase(デフォルト)、insert-phase(`--insert`)、remove-phase(`--remove`)、edit-phase(`--edit`)を折りたたむ + - `/gsd-config` — settings-advanced(`--advanced`)、settings-integrations(`--integrations`)、set-profile(`--profile`)を折りたたむ + - `/gsd-workspace` — new-workspace(`--new`)、list-workspaces(`--list`)、remove-workspace(`--remove`)を折りたたむ +- REQ-CONSOLIDATE-02: 6 つの既存の親がラップアップ/サブ操作をフラグとして吸収:`/gsd-update --sync`、`/gsd-update --reapply`、`/gsd-sketch --wrap-up`、`/gsd-spike --wrap-up`、`/gsd-map-codebase --fast`、`/gsd-map-codebase --query`、`/gsd-code-review --fix`、`/gsd-progress --do`、`/gsd-progress --next`。 +- REQ-CONSOLIDATE-03: 削除されたマイクロスキルスラッシュフォーム(`gsd-add-todo`、`gsd-add-backlog`、`gsd-plant-seed`、`gsd-check-todos`、`gsd-add-phase`、`gsd-insert-phase`、`gsd-remove-phase`、`gsd-edit-phase`、`gsd-new-workspace`、`gsd-list-workspaces`、`gsd-remove-workspace`、`gsd-settings-advanced`、`gsd-settings-integrations`、`gsd-set-profile`、`gsd-sketch-wrap-up`、`gsd-spike-wrap-up`、`gsd-reapply-patches`、`gsd-code-review-fix`、…)は「Unknown command」に解決しなければならない — シャドウスタブなし。 +- REQ-CONSOLIDATE-04: `autonomous.md` は(削除された `gsd-code-review-fix` を以前呼び出していた代わりに)`/gsd-code-review --fix` を呼び出す。 + +**参照 issue:** [#2790](https://github.com/open-gsd/gsd-core/issues/2790) + +--- + +### 123. ネームスペースメタスキル(2 段階ルーティング) + +**目的:** フラットな積極的スキルリストを 2 段階の階層的ルーティングレイヤーに置き換えます。モデルは 86 エントリの代わりに 6 つのネームスペースルーターを認識し、ネームスペースを選択してからサブスキルにルーティングします。説明にはルーティング密度のためにパイプ区切りのキーワードタグ(≤ 60 文字)を使用します。 + +**コマンド:** +- `/gsd-workflow` — フェーズパイプラインルーター(discuss / plan / execute / verify / phase / progress) +- `/gsd-project` — プロジェクトライフサイクル(マイルストーン、監査、サマリー) +- `/gsd-quality` — 品質ゲート(コードレビュー、デバッグ、監査、セキュリティ、評価、UI) +- `/gsd-context` — コードベースインテリジェンス(マップ、グラファイファイ、ドキュメント、学習) +- `/gsd-manage` — 設定 / ワークスペース / ワークストリーム / スレッド / アップデート / シップ / インボックス +- `/gsd-ideate` — 探索とキャプチャ(探索、スケッチ、スパイク、スペック、キャプチャ) + +**トークンコスト:** + +| | エントリ数 | 概算トークン | +|---|---|---| +| v1.40 以前のフルインストール | 86 | ~2,150 | +| ネームスペースメタスキル | 6 | ~120 | + +**要件:** +- REQ-NS-01: 6 つの `commands/gsd/ns-*.md` ネームスペースルーターはパイプ区切りのキーワードタグ説明(≤ 60 文字)とともに搭載される。 +- REQ-NS-02: 既存のサブスキルは変更されず、引き続き直接呼び出し可能 — ネームスペーススキルは直接スラッシュフォームの置き換えではなく追加的。 +- REQ-NS-03: 各ネームスペースルーターの本体には、#2790 以後の統合されたサーフェス上の正しい具体的なサブスキルへのユーザーインテントをマッピングするルーティングテーブルが含まれる。 + +**参照 issue:** [#2792](https://github.com/open-gsd/gsd-core/issues/2792) + +--- + +### 124. コンテキストウィンドウ使用率ガード + +**コマンド:** `/gsd-health --context` + +**目的:** コンテキストウィンドウの飽和に対する品質ガード。2 つの閾値:60% 使用率で警告(「`/gsd-thread` を検討してください」)、70% でクリティカル(「推論品質が低下する可能性があります」;最近のコンテキストアテンション研究による破断点に一致)。 + +**要件:** +- REQ-CTX-GUARD-01: `/gsd-health --context` は現在の使用率、閾値ティア(`ok` / `warn` / `critical`)、修正提案を含む構造化されたステータス行を出力する。 +- REQ-CTX-GUARD-02: 同じトリアージは `gsd-tools.cjs validate context --tokens-used --context-window ` として公開されている — ステータス行とフック呼び出し元の構造化エンベロープ(#125)。両フラグは必須;ハンドラーは REQ-CTX-GUARD-03 の純粋な分類器と同じ `{ percent, state }` エンベロープを返す。 +- REQ-CTX-GUARD-03: 分類器(`bin/lib/context-utilization.cjs`)は純粋:入力 `(tokensUsed, contextWindow)`、出力 `{ percent, state }`。ユニットテストが容易で、任意の呼び出し元から再利用しやすい。 + +**参照 issue:** [#2792](https://github.com/open-gsd/gsd-core/issues/2792) + +--- + +### 125. フェーズライフサイクルステータス行リードサイド + +**目的:** ステータス行にフェーズオーケストレーション状態を表示します。`parseStateMd()` は 4 つの新しい STATE.md フロントマターフィールドを読み込み、`formatGsdState()` は実行中、アイドル、および進行状況シーンをレンダリングします。ライトサイドの配線は後の RC で行われます。 + +**要件:** +- REQ-LIFECYCLE-01: `parseStateMd()` は 4 つのオプションフィールドを読み込む: + - `active_phase` — オーケストレーターが実行中のフェーズ番号 + - `next_action` — アイドル時の推奨される次のコマンド + - `next_phases` — 次のフェーズ番号の YAML フロー配列 + - `progress` — ネストされた `total_phases` / `completed_phases` / `percent` ブロック +- REQ-LIFECYCLE-02: `formatGsdState()` はライフサイクルフィールドを優先順位の順にチェックし、最初に一致するシーンを出力する(フェーズアクティブ → アイドル次推奨 → マイルストーン完了 → デフォルトフォールバック)。 +- REQ-LIFECYCLE-03: 4 つのフィールドはすべてデフォルトで undefined;既存の STATE.md ファイルはバイト単位で同一にレンダリングされる。 + +**参照 issue:** [#2833](https://github.com/open-gsd/gsd-core/issues/2833) — フルフィールドリファレンスとレンダリングルールについては [`docs/STATE-MD-LIFECYCLE.md`](../reference/state-md.md) を参照。 + +--- + +## v1.41.0 機能 + +### 126. フェーズタイプごとのモデル選択 + +**目的:** フルエージェント分類法を習得せずにフェーズレベル(プランニング、リサーチ、実行、検証)でモデルチューニングを表現します。エージェントごとの `model_overrides`(精密、冗長)とグローバル `model_profile` ティア(粗い、均一)の中間に位置します。 + +**設定キー:** `.planning/config.json` の `models` + +**フェーズタイプスロット:** + +| スロット | 割り当てられたエージェント | +|---------|----------------------| +| `planning` | `gsd-planner`、`gsd-roadmapper`、`gsd-pattern-mapper` | +| `discuss` | (将来のサブエージェント用に予約) | +| `research` | `gsd-phase-researcher`、`gsd-project-researcher`、`gsd-research-synthesizer`、`gsd-codebase-mapper`、`gsd-ui-researcher` | +| `execution` | `gsd-executor`、`gsd-debugger`、`gsd-doc-writer` | +| `verification` | `gsd-verifier`、`gsd-plan-checker`、`gsd-integration-checker`、`gsd-nyquist-auditor`、`gsd-ui-checker`、`gsd-ui-auditor`、`gsd-doc-verifier` | +| `completion` | (将来のサブエージェント用に予約) | + +**受け入れられる値:** `"opus"` / `"sonnet"` / `"haiku"` / `"inherit"` + +**解決の優先順位(高→低):** + +```text +1. model_overrides[] +2. dynamic_routing.tier_models[] (有効時) +3. models[] (この機能) +4. model_profile +5. ランタイムデフォルト +``` + +**要件:** +- REQ-PHASE-MODELS-01: 6 つの名前付き `models.*` スロットが `config-schema.cjs` と `config-schema.ts` に受け入れられる;`config-set` は不明なフェーズタイプを拒否する。 +- REQ-PHASE-MODELS-02: `models` ブロックのない設定は v1.41 以前の動作とバイト単位で同一に動作する。 +- REQ-PHASE-MODELS-03: `discuss` と `completion` は前方互換性のためにスキーマに受け入れられる;今日それらを設定することはサブエージェントが各にマッピングされるまでノーオペレーション。 + +**参照 issue:** [#3023](https://github.com/open-gsd/gsd-core/pull/3030) + +--- + +### 127. 失敗ティアエスカレーション付き動的ルーティング + +**目的:** デフォルトで安価なティアを使用し、オーケストレーターがソフト失敗(検証が決定的でない、プランチェック FLAG など)を検出した場合に自動的により有能なモデルにエスカレートします。 + +**設定キー:** `.planning/config.json` の `dynamic_routing` + +**動作:** +- `enabled: false`(デフォルト)— 機能はオフ;すべてのエージェントは変更なしに優先順位チェーンを使用。 +- `enabled: true` — リゾルバーは最初のスポーンに `tier_models[default_tier]` を選択し、オーケストレーターが検出したソフト失敗で 1 ティア上にエスカレートし、`max_escalations` でキャップ。 + +**構成:** `model_overrides` は常に優先;`dynamic_routing.tier_models[]` は `models.` と `model_profile` より上で解決。 + +**要件:** +- REQ-DYNROUTE-01: `dynamic_routing.enabled` はマスタースイッチとして機能;`false` またはブロックが存在しない場合、動作変更はゼロ。 +- REQ-DYNROUTE-02: 新しいリゾルバー `resolveModelForTier(cwd, agent, attempt)`(`core.cjs` 内)はオーケストレーター統合の単一コールサイト。 +- REQ-DYNROUTE-03: `max_escalations` はランナウェイコストを防ぐためにエスカレーションチェーンをキャップ。 + +**参照 issue:** [#3024](https://github.com/open-gsd/gsd-core/pull/3031) + +--- + +### 128. アップデートバナーオプトイン + +**目的:** GSD ステータス行を拒否またはバイパスしたユーザーに、ステータス行を必要とせずにアップデートの可用性を表示します。 + +**動作:** +- インストール時、インストーラーが GSD ステータス行を検出しない場合、オプトインの `SessionStart` フックを提供します。 +- フックはステータス行で使用されているのと同じキャッシュ `~/.cache/gsd/gsd-update-check.json` を読み込み、アップデートが利用可能な場合のみバナーを表示します。 +- 最新の場合はサイレント。 +- 障害診断は 24 時間に 1 回に制限。 +- `npx @opengsd/gsd-core --uninstall` によってクリーンに削除。 + +**要件:** +- REQ-BANNER-01: バナーは明示的なオプトインなしにインストールされない。 +- REQ-BANNER-02: 追加のネットワークリクエストなし — 既存のバックグラウンドアップデートチェックキャッシュを再利用。 +- REQ-BANNER-03: アンインストールパスはバナーフックを削除する。 + +**参照 issue:** [#2795](https://github.com/open-gsd/gsd-core/pull/2795) + +--- + +### 129. issue-driven-orchestration ガイド + +**目的:** GitHub / Linear / Jira issue から GSD ワークフロー全体を駆動するレシピを文書化し、トラッカー中心の概念を既存の GSD プリミティブにマッピングします。 + +**ドキュメント:** [`docs/issue-driven-orchestration.md`](../issue-driven-orchestration.md) + +**対象ワークフロー:** +1. issue ごとに分離されたワークスペースを作成(`/gsd-workspace --new`) +2. マネージャーダッシュボードを実行して全体を把握(`/gsd-manager`) +3. 自律的に実行(`/gsd-autonomous`) +4. 検証とレビュー(`/gsd-verify-work`、`/gsd-review`) +5. シップして issue をクローズ(`/gsd-ship`) + +新しいコマンドやデーモンプロセスはなし — 既存のプリミティブをトラッカー駆動ワークフローにマッピングする純粋なドキュメントアーティファクト。 + +**参照 issue:** [#2840](https://github.com/open-gsd/gsd-core/pull/2840) + +--- + +### 130. グラファイファイコミットベースの古さ検出 + +**目的:** アーキテクチャグラフが現在のコミットから構築されたか古いコミットから構築されたかを表示し、既存の mtime ベースの古さシグナルを補完します。 + +**コマンド:** `/gsd-graphify status` + +**返される新フィールド(graphify v0.7+ グラフ):** + +| フィールド | 型 | 説明 | +|-----------|-----|------| +| `built_at_commit` | string | グラフが構築されたコミット SHA | +| `current_commit` | string | 現在の `git HEAD` | +| `commits_behind` | number | グラフが HEAD から何コミット遅れているか | +| `commit_stale` | boolean \| null | `true`=古い、`false`=最新、`null`=利用不可(v0.7 以前、非 git) | + +**レンダリング出力(シグナルが利用可能な場合):** +``` +Source commit: abc1234 (3 commits behind HEAD) +``` + +**セキュリティ:** `built_at_commit` は `git` に到達する前に 4〜40 の 16 進文字として検証される — 悪意のある `graph.json` はダッシュオプションを argv にインジェクトできない。 + +**フォールバック:** v0.7 以前のグラフと非 git チェックアウトは `commit_stale: null` を返す;呼び出し元は既存の mtime ベースの `stale` フラグにフォールバック。既存ユーザーの動作変更なし。 + +**参照 issue:** [#3170](https://github.com/open-gsd/gsd-core/issues/3170) + +--- + +## v1.42.1 機能 + +### 132. パッケージ正当性ゲート + +**目的:** 幻覚的、疑わしい、またはスロップスクワッティングのパッケージ名がシェルインストールコマンドに到達する前に停止します。 + +**動作:** +- フェーズリサーチは推奨パッケージの `## Package Legitimacy Audit` テーブルを書き込む。 +- 検索のみで確認されたパッケージは `[ASSUMED]` として扱われ、信頼されない。 +- `[SLOP]` パッケージは推奨から削除される。 +- `[ASSUMED]` または疑わしいパッケージを必要とするプランは人間の確認チェックポイントを追加する。 +- Executor のインストール失敗は、同様の名前のパッケージを自動的に試みる代わりに人間の確認のために停止する。 + +**要件:** +- REQ-PKG-GATE-01: リサーチはパッケージレジストリ、年齢、ダウンロード/ソースシグナル、スロップチェック verdict、および処分を記録しなければならない。 +- REQ-PKG-GATE-02: プランナーは実行前に未検証または疑わしいパッケージのインストールをゲートしなければならない。 +- REQ-PKG-GATE-03: Executor はパッケージマネージャーのインストール失敗後にパッケージ名を自動置換してはならない。 + +**参照:** [v1.42.1 リリースノート](../RELEASE-v1.42.1.md) + +--- + +### 133. スキルサーフェス予算 + +**目的:** コンテキスト予算が重要な場合に、インストールされたスキルとエージェントのサーフェスエリアをユーザーが削減できるようにします。 + +**インストールプロファイル:** +| プロファイル | 目的 | +|------------|------| +| `core` | 最小限のメインループサーフェス | +| `standard` | コアに加えて一般的なフェーズ管理コマンド | +| `full` | 完全なサーフェス;デフォルト | + +**ランタイムコントロール:** `/gsd:surface` はプロファイル状態をリストし、再インストールなしにスキルクラスターを有効化、無効化、またはリセットします。 + +**要件:** +- REQ-SURFACE-01: インストーラーは `--profile=` を解決し、アクティブなプロファイルを `.gsd-profile` に永続化しなければならない。 +- REQ-SURFACE-02: `--minimal` と `--core-only` は `--profile=core` のエイリアスとして残らなければならない。 +- REQ-SURFACE-03: ランタイムサーフェス状態はインストールプロファイルマーカーの外側に永続化されなければならない。 + +**参照:** [ADR-0011](../adr/0011-skill-surface-budget-module.md) + +--- + +### 134. インストーラーマイグレーション + +**目的:** インストールとアップデート中のランタイム設定クリーンアップを明示的で監査可能、かつロールバック対応にします。 + +**機能:** +- 初回ベースラインマイグレーションは管理されたファイルを記録する。 +- レガシーステールファイルのクリーンアップは削除または再書き込み前に所有権のエビデンスを使用する。 +- ユーザー所有のアーティファクトは保存される。 +- 曖昧な GSD らしいファイルはサイレントに上書きされる代わりに明確なレポートでブロックする。 +- マイグレーションプランはドライラン報告とロールバック保護をサポートする。 + +**要件:** +- REQ-INSTALL-MIGRATION-01: マイグレーション記録はメタデータ、インストールスコープ、所有権のエビデンスを含まなければならない。 +- REQ-INSTALL-MIGRATION-02: 所有権が曖昧な場合、破壊的なアクションはフェイルドクローズでなければならない。 +- REQ-INSTALL-MIGRATION-03: インストール失敗はロールバックデータが存在する場合、インストール前の状態を復元しなければならない。 + +**参照:** [インストーラーマイグレーション](../installer-migrations.md) + +--- + +### 135. カスタムシップ PR ボディセクション + +**コマンド:** `/gsd-ship` + +**設定キー:** `ship.pr_body_sections` + +**目的:** GSD ワークフローファイルを編集せずに、生成された PR ボディにプロジェクト固有の PRD スタイルセクションを追加します。 + +**動作:** 設定されたセクションは必須の `Summary`、`Changes`、`Requirements Addressed`、`Verification`、および `Key Decisions` セクションの後に追加されます。アーティファクトの見出しからコピー、テンプレートをレンダリング、またはスタティックテキストにフォールバックできます。 + +**要件:** +- REQ-SHIP-SECTIONS-01: カスタムセクションは必須の PR セクションを置き換え、削除、または並べ替えてはならない。 +- REQ-SHIP-SECTIONS-02: 不明なテンプレートトークンは設定検証によって拒否されなければならない。 +- REQ-SHIP-SECTIONS-03: 無効化されたセクションは PR 出力に表示されることなく設定に残らなければならない。 + +**参照:** [カスタム PR ボディセクション](../ship-pr-body-sections.md) + +--- + +### 136. レビューデフォルトレビュアー + +**コマンド:** `/gsd-review` + +**設定キー:** `review.default_reviewers` + +**目的:** チームがフラグなしの `/gsd-review` 実行のデフォルトレビュアーサブセットを選択できるようにします。 + +**優先順位:** +```text +明示的なレビュアーフラグ -> --all -> review.default_reviewers -> すべての検出されたレビュアー +``` + +**要件:** +- REQ-REVIEW-DEFAULTS-01: `review.default_reviewers` が欠如している場合、以前のすべて検出動作を維持しなければならない。 +- REQ-REVIEW-DEFAULTS-02: 空の配列は拒否されなければならない;すべて検出動作を復元するにはキーを削除する。 +- REQ-REVIEW-DEFAULTS-03: 既知だが利用不可のレビュアーは実行をハードフェイルさせる代わりに診断とともにスキップされなければならない。 + +**参照:** [設定リファレンス](../CONFIGURATION.md#reviewer-defaults-for-gsd-review) + +--- + +### 137. ファロー構造レビュープリパス + +**コマンド:** `/gsd-code-review` + +**設定キー:** `code_quality.fallow.*` + +**目的:** エージェントレビューの前にオプションの構造分析パスを追加します。 + +**動作:** 有効時、GSD は `fallow` バイナリを解決し、境界付き監査を実行し、`FALLOW.json` を書き込み、`REVIEW.md` に構造的な所見を埋め込みます。 + +**要件:** +- REQ-FALLOW-01: Fallow はオプトインであり、デフォルトで無効でなければならない。 +- REQ-FALLOW-02: 欠如または失敗した fallow 実行は明確な診断を生成しなければならない。 +- REQ-FALLOW-03: 埋め込み予算を超えた所見は、生の JSON アーティファクトを保存しながら警告とともにスキップされなければならない。 + +**参照:** [設定リファレンス](../CONFIGURATION.md#code-quality-settings) + +--- + +### 138. フェーズ終了時の人間検証モード + +**設定キー:** `workflow.human_verify_mode` + +**目的:** フライト中の人間チェックポイントの中断を減らしながら、人間の検証要件を保持します。 + +**動作:** デフォルトの `"end-of-phase"` モードは人間チェックをフェーズレビューのための `` ブロックに埋め込みます。`"mid-flight"` はブロッキングの `checkpoint:human-verify` タスクを復元します。 + +**要件:** +- REQ-HUMAN-VERIFY-01: `checkpoint:decision` と `checkpoint:human-action` はモードに関わらずブロッキングのまま。 +- REQ-HUMAN-VERIFY-02: 人間が必要な検証はフェーズ終了時のレビューが解決するまで保留のまま。 +- REQ-HUMAN-VERIFY-03: キーのない設定は `"end-of-phase"` を使用しなければならない。 + +**参照:** [チェックポイントリファレンス](../../get-shit-done/references/checkpoints.md) + +--- + +### 139. クォータとレート制限の失敗分類 + +**コマンド:** `/gsd-execute-phase` + +**目的:** プロバイダーのクォータとレート制限の失敗を、通常の executor の失敗ではなく待機して再開の条件として扱います。 + +**動作:** エージェント出力は `429`、`rate limit`、`usage limit`、`RESOURCE_EXHAUSTED`、`usage_limit_reached` などのシグナルに対して分類されます。一致する失敗はリセット待ちの回復パスを提示します。 + +**要件:** +- REQ-QUOTA-01: クォータ失敗は即時再試行を主要な回復として提供してはならない。 +- REQ-QUOTA-02: 分類は Claude、Copilot、Codex、Gemini、および汎用プロバイダーセンチネルをカバーしなければならない。 +- REQ-QUOTA-03: 非クォータ失敗は通常の実行失敗パスを継続しなければならない。 + +**参照:** [プロバイダーレート制限シグナル](../research/provider-rate-limit-signals.md) + +--- + +### 140. ステータス行コンテキスト位置 + +**設定キー:** `statusline.context_position` + +**目的:** 狭いターミナルでコンテキストメーターを見やすく保ちます。 + +**オプション:** +| 値 | 動作 | +|----|------| +| `"end"` | デフォルト;行末近くにコンテキストメーターをレンダリング | +| `"front"` | モデル名の直後にコンテキストメーターをレンダリング | + +**要件:** +- REQ-STATUSLINE-POS-01: 無効な値は設定検証によって拒否されなければならない。 +- REQ-STATUSLINE-POS-02: 設定が欠如している場合、既存の末尾位置レンダリングを維持しなければならない。 + +**参照:** [設定リファレンス](../CONFIGURATION.md#statusline-settings) + +--- + +### 141. マイルストーンタグ作成トグル + +**コマンド:** `/gsd-complete-milestone` + +**設定キー:** `git.create_tag` + +**目的:** 外部リリース自動化を持つプロジェクトがローカル git タグを作成せずにマイルストーンを完了できるようにします。 + +**動作:** `git.create_tag: false` はマイルストーンタグ作成をスキップします。ワークフローは引き続きマイルストーンアーティファクトと状態を更新します。 + +**要件:** +- REQ-MILESTONE-TAG-01: 設定が欠如している場合、自動タグ作成を維持しなければならない。 +- REQ-MILESTONE-TAG-02: 既存のタグの衝突はタグを上書きする代わりに明確に失敗しなければならない。 +- REQ-MILESTONE-TAG-03: タグ作成の無効化はマイルストーンアーカイブをスキップしてはならない。 + +**参照:** [設定リファレンス](../CONFIGURATION.md#git-branching) + +--- + +### 142. 構造化 JSON エラーモード + +**CLI:** `gsd-tools --json-errors` + +**目的:** 自動化呼び出し元に安定した機械可読エラーエンベロープを提供します。 + +**動作:** `--json-errors` 下で失敗するコマンドは、散文のみの stderr の代わりに、エラーの種類、メッセージ、コマンドコンテキスト、および終了マッピングを含む構造化された `ok: false` ペイロードを返します。 + +**要件:** +- REQ-JSON-ERRORS-01: 不明なコマンド、検証エラー、タイムアウト、ネイティブ失敗、フォールバック失敗、および内部エラーは正規エラーの種類にマッピングされなければならない。 +- REQ-JSON-ERRORS-02: CLI 終了コードマッピングは自動化呼び出し元に対して安定して維持されなければならない。 +- REQ-JSON-ERRORS-03: 人間可読出力は `--json-errors` が存在しない場合にデフォルトのまま。 + +--- + +## 関連 + +- [コマンド](../COMMANDS.md) +- [設定](../CONFIGURATION.md) +- [ドキュメントインデックス](../README.md) + +**参照:** [JSON エラーモード](../json-errors.md) diff --git a/docs/ja-JP/INVENTORY.md b/docs/ja-JP/INVENTORY.md new file mode 100644 index 000000000..b5c953b79 --- /dev/null +++ b/docs/ja-JP/INVENTORY.md @@ -0,0 +1,493 @@ +# GSD 出荷済みサーフェスインベントリ + +> 出荷済みのすべての GSD サーフェスの正式な一覧: コマンド、エージェント、ワークフロー、リファレンス、CLI モジュール、フック。広範なドキュメント(AGENTS.md、COMMANDS.md、ARCHITECTURE.md、CLI-TOOLS.md)とファイルシステムが乖離している場合は、このファイルとリポジトリツリー自体を正式なソースとして扱ってください。 + +## このファイルの使い方 + +- ここに記載された数値は v1.36.0 時点のファイルシステムから導出されており、リリース間で変動する可能性があります。最新の数値を確認するには、チェックアウトに対して `ls commands/gsd/*.md | wc -l`、`ls agents/gsd-*.md | wc -l` などを実行してください。 +- このファイルは出荷済みのすべてのサーフェスを 6 つのファミリー(エージェント、コマンド、ワークフロー、リファレンス、CLI モジュール、フック)にわたって列挙します。広範なドキュメントはナラティブや厳選されたサブセットを提示する場合があります。ファイルシステムと異なる場合は、このファイルとディレクトリ一覧が正式です。 +- v1.36.0 以降に追加された新しいサーフェスはまずここに記載し、その後広範なドキュメントに伝播させてください。`tests/inventory-counts.test.cjs`、`tests/commands-doc-parity.test.cjs`、`tests/agents-doc-parity.test.cjs`、`tests/cli-modules-doc-parity.test.cjs`、`tests/hooks-doc-parity.test.cjs`、`tests/architecture-counts.test.cjs`、`tests/command-count-sync.test.cjs` のドリフト管理テストが、ファイルシステムに対して数値とロスター内容を固定します。 + +これは出荷済みのすべての GSD Core サーフェスの正式な一覧です。トピック別のナビゲーションは [docs インデックス](README.md) を参照してください。 + +--- + +## エージェント (33 shipped) + +完全な一覧は `agents/gsd-*.md` を参照してください。"Primary doc" 列は [`docs/AGENTS.md`](../AGENTS.md) が完全なロールカードを掲載している場合(*primary*)、"Advanced and Specialized Agents" セクションに短いスタブがある場合(*advanced stub*)、または掲載がない場合(*inventory only*)を示します。 + +| エージェント | 役割(一行) | 起動元 | Primary doc | +|--------------|-------------|--------|-------------| +| gsd-project-researcher | ロードマップ作成前にドメインエコシステムを調査(スタック、機能、アーキテクチャ、落とし穴)。 | `/gsd-new-project`, `/gsd-new-milestone` | primary | +| gsd-phase-researcher | 計画前に特定フェーズの実装アプローチを調査。 | `/gsd-plan-phase` | primary | +| gsd-ui-researcher | フロントエンドフェーズ向けの UI デザインコントラクトを作成。 | `/gsd-ui-phase` | primary | +| gsd-assumptions-analyzer | discuss-phase(仮定モード)向けに証拠に基づく仮定を作成。 | `discuss-phase-assumptions` workflow | primary | +| gsd-advisor-researcher | discuss-phase アドバイザーモード中に単一のグレーゾーン決定を調査。 | `discuss-phase` workflow (advisor mode) | primary | +| gsd-research-synthesizer | 並列調査エージェントの出力を統合した SUMMARY.md にまとめる。 | `/gsd-new-project` | primary | +| gsd-planner | タスク分解とゴール後退型検証を含む実行可能なフェーズプランを作成。 | `/gsd-plan-phase`, `/gsd-quick` | primary | +| gsd-roadmapper | フェーズ分解と要件マッピングを含むプロジェクトロードマップを作成。 | `/gsd-new-project` | primary | +| gsd-executor | アトミックコミットと逸脱処理を伴って GSD プランを実行。 | `/gsd-execute-phase`, `/gsd-quick` | primary | +| gsd-plan-checker | プランがフェーズ目標を達成できるか検証(8 つの検証ディメンション)。 | `/gsd-plan-phase` (verification loop) | primary | +| gsd-integration-checker | クロスフェーズ統合とエンドツーエンドフローを検証。 | `/gsd-audit-milestone` | primary | +| gsd-ui-checker | UI-SPEC.md デザインコントラクトを品質ディメンションに対して検証。 | `/gsd-ui-phase` (validation loop) | primary | +| gsd-verifier | ゴール後退型分析によってフェーズ目標の達成を検証。 | `/gsd-execute-phase` | primary | +| gsd-nyquist-auditor | テストを生成して Nyquist バリデーションのギャップを埋める。 | `/gsd-validate-phase` | primary | +| gsd-ui-auditor | 実装済みフロントエンドコードの 6 本柱ビジュアル監査を遡及的に実施。 | `/gsd-ui-review` | primary | +| gsd-codebase-mapper | コードベースを探索して構造化分析ドキュメントを作成。 | `/gsd-map-codebase` | primary | +| gsd-debugger | 永続的な状態を持つ科学的手法でバグを調査。 | `/gsd-debug`, `/gsd-verify-work` | primary | +| gsd-user-profiler | 8 つのディメンションで開発者の行動をスコアリング。 | `/gsd-profile-user` | primary | +| gsd-doc-writer | プロジェクトドキュメントを作成・更新。 | `/gsd-docs-update` | primary | +| gsd-doc-verifier | 生成されたドキュメントの事実に基づくクレームを検証。 | `/gsd-docs-update` | primary | +| gsd-security-auditor | PLAN.md の脅威モデルから脅威への対策を検証。 | `/gsd-secure-phase` | primary | +| gsd-pattern-mapper | 新しいファイルを最も近い既存の類似物にマッピングし、プランナー向けの PATTERNS.md を作成。 | `/gsd-plan-phase` (between research and planning) | advanced stub | +| gsd-debug-session-manager | メインコンテキストをスリムに保つために、完全な `/gsd-debug` チェックポイントと継続ループを独立したコンテキストで実行。 | `/gsd-debug` | advanced stub | +| gsd-code-reviewer | バグ、セキュリティ問題、コード品質の問題についてソースファイルをレビューし、REVIEW.md を作成。 | `/gsd-code-review` | advanced stub | +| gsd-code-fixer | アトミックな修正コミットで REVIEW.md の指摘を適用し、REVIEW-FIX.md を作成。 | `/gsd-code-review --fix` | advanced stub | +| gsd-ai-researcher | 選択した AI フレームワークの公式ドキュメントを実装準備済みのガイダンス(AI-SPEC.md §3–§4b)に調査。 | `/gsd-ai-integration-phase` | advanced stub | +| gsd-domain-researcher | AI システムのドメイン専門家による評価基準と失敗モードを浮き上がらせる(AI-SPEC.md §1b)。 | `/gsd-ai-integration-phase` | advanced stub | +| gsd-eval-planner | AI フェーズの構造化された評価戦略を設計(AI-SPEC.md §5–§7)。 | `/gsd-ai-integration-phase` | advanced stub | +| gsd-eval-auditor | AI フェーズの評価カバレッジを遡及監査し、EVAL-REVIEW.md(COVERED/PARTIAL/MISSING)を作成。 | `/gsd-eval-review` | advanced stub | +| gsd-framework-selector | AI/LLM フレームワークをスコアリングして推奨する 6 問以内のインタラクティブな決定マトリクス。 | `/gsd-ai-integration-phase` | advanced stub | +| gsd-intel-updater | クエリ可能なコードベースナレッジベースとして使用される構造化インテルファイル(`.planning/intel/*.json`)を作成。 | `/gsd-map-codebase --query` | advanced stub | +| gsd-doc-classifier | 単一の計画ドキュメントを ADR、PRD、SPEC、DOC、UNKNOWN に分類し、ドキュメントコーパスを並列処理するために生成。 | `/gsd-ingest-docs` | advanced stub | +| gsd-doc-synthesizer | 分類された計画ドキュメントを優先規則、サイクル検出、3 バケット競合レポートで単一の統合コンテキストに合成。 | `/gsd-ingest-docs` | advanced stub | + +**カバレッジ注記。** `docs/AGENTS.md` は 21 のプライマリエージェントに完全なロールカードを、12 の上級エージェントに簡潔なスタブを提供します。同ファイルのエージェントツール権限サマリーはプライマリ 21 エージェントのみをカバーします。上級エージェントのツール一覧は `agents/gsd-*.md` の各エージェントフロントマターに記載されています。 + +--- + +## コマンド (67 shipped) + +完全な一覧は `commands/gsd/*.md` を参照してください。以下のグループ分けは `docs/COMMANDS.md` のセクション順に対応しています。各行にはコマンド名、コマンドのフロントマター `description:` から導出された一行の役割、ソースファイルへのリンクが含まれます。`tests/command-count-sync.test.cjs` がこの数値をファイルシステムに対して固定します。 + +### 名前空間メタスキル + +これら 6 つのルーターは記述子専用のエントリーで、モデルが最初に選択します。各エントリーの本体には正しい具体的なサブスキルを指すルーティングテーブルが含まれています。積極的なスキル列挙のトークンコストを低く抑えながら、完全なサーフェスに到達可能にするために存在します。根拠は [#2792](https://github.com/open-gsd/gsd-core/issues/2792) を参照してください。ルーティングテーブルは [#2790](https://github.com/open-gsd/gsd-core/issues/2790) 以降の統合サーフェスを対象とします。 + +| コマンド | 役割 | ソース | +|----------|------|--------| +| `/gsd-workflow` | フェーズパイプラインルーター — discuss / plan / execute / verify / phase / progress。 | [commands/gsd/ns-workflow.md](../../commands/gsd/ns-workflow.md) | +| `/gsd-project` | プロジェクトライフサイクルルーター — マイルストーン、監査、サマリー。 | [commands/gsd/ns-project.md](../../commands/gsd/ns-project.md) | +| `/gsd-quality` | 品質ゲートルーター — コードレビュー、デバッグ、監査、セキュリティ、eval、UI。 | [commands/gsd/ns-review.md](../../commands/gsd/ns-review.md) | +| `/gsd-context` | コードベースインテリジェンスルーター — map、graphify、docs、learnings。 | [commands/gsd/ns-context.md](../../commands/gsd/ns-context.md) | +| `/gsd-manage` | 管理ルーター — config、workspace、workstreams、thread、update、ship、inbox。 | [commands/gsd/ns-manage.md](../../commands/gsd/ns-manage.md) | +| `/gsd-ideate` | 探索・キャプチャルーター — explore、sketch、spike、spec、capture。 | [commands/gsd/ns-ideate.md](../../commands/gsd/ns-ideate.md) | + +### コアワークフロー + +| コマンド | 役割 | ソース | +|----------|------|--------| +| `/gsd-new-project` | 深いコンテキスト収集と PROJECT.md で新しいプロジェクトを初期化。 | [commands/gsd/new-project.md](../../commands/gsd/new-project.md) | +| `/gsd-workspace` | GSD ワークスペースを管理 — 独立したワークスペース環境を作成(`--new`)、一覧表示(`--list`)、削除(`--remove`)。 | [commands/gsd/workspace.md](../../commands/gsd/workspace.md) | +| `/gsd-discuss-phase` | 計画前にアダプティブな質問でフェーズコンテキストを収集。 | [commands/gsd/discuss-phase.md](../../commands/gsd/discuss-phase.md) | +| `/gsd-mvp-phase` | フェーズを垂直 MVP スライスとして計画 — ユーザーストーリー、SPIDR 分割、その後 plan-phase。 | [commands/gsd/mvp-phase.md](../../commands/gsd/mvp-phase.md) | +| `/gsd-spec-phase` | 反証可能な要件を持つ SPEC.md を生成するソクラテス的仕様精緻化。 | [commands/gsd/spec-phase.md](../../commands/gsd/spec-phase.md) | +| `/gsd-ui-phase` | フロントエンドフェーズ向けの UI デザインコントラクト(UI-SPEC.md)を生成。 | [commands/gsd/ui-phase.md](../../commands/gsd/ui-phase.md) | +| `/gsd-ai-integration-phase` | フレームワーク選択、調査、eval 計画を経て AI デザインコントラクト(AI-SPEC.md)を生成。 | [commands/gsd/ai-integration-phase.md](../../commands/gsd/ai-integration-phase.md) | +| `/gsd-plan-phase` | 検証ループ付きの詳細なフェーズプラン(PLAN.md)を作成。 | [commands/gsd/plan-phase.md](../../commands/gsd/plan-phase.md) | +| `/gsd-plan-review-convergence` | クロス AI プラン収束ループ — HIGH の懸念がなくなるまでレビューフィードバックで再計画(最大 3 サイクル)。 | [commands/gsd/plan-review-convergence.md](../../commands/gsd/plan-review-convergence.md) | +| `/gsd-ultraplan-phase` | [BETA] フェーズ計画を Claude Code の ultraplan クラウドにオフロード — リモートで下書きし、ブラウザでレビューし、`/gsd-import` 経由でインポート。Claude Code のみ。 | [commands/gsd/ultraplan-phase.md](../../commands/gsd/ultraplan-phase.md) | +| `/gsd-spike` | 使い捨ての実験でアイデアを素早くスパイク。`--wrap-up` で調査結果を永続的なスキルとしてパッケージ化。 | [commands/gsd/spike.md](../../commands/gsd/spike.md) | +| `/gsd-sketch` | 使い捨ての HTML モックアップで UI/デザインアイデアを素早くスケッチ。`--wrap-up` で調査結果をパッケージ化。 | [commands/gsd/sketch.md](../../commands/gsd/sketch.md) | +| `/gsd-execute-phase` | ウェーブベースの並列化でフェーズのすべてのプランを実行。 | [commands/gsd/execute-phase.md](../../commands/gsd/execute-phase.md) | +| `/gsd-verify-work` | 自動診断付きの会話型 UAT で構築した機能を検証。 | [commands/gsd/verify-work.md](../../commands/gsd/verify-work.md) | +| `/gsd-ship` | 検証後に PR を作成し、レビューを実行してマージ準備を行う。 | [commands/gsd/ship.md](../../commands/gsd/ship.md) | +| `/gsd-fast` | サブエージェントや計画オーバーヘッドなしに些細なタスクをインラインで実行。 | [commands/gsd/fast.md](../../commands/gsd/fast.md) | +| `/gsd-quick` | GSD の保証(アトミックコミット、状態追跡)付きでクイックタスクを実行し、オプションのエージェントをスキップ。 | [commands/gsd/quick.md](../../commands/gsd/quick.md) | +| `/gsd-ui-review` | 実装済みフロントエンドコードの 6 本柱ビジュアル監査を遡及的に実施。 | [commands/gsd/ui-review.md](../../commands/gsd/ui-review.md) | +| `/gsd-code-review` | フェーズ中に変更されたソースファイルをバグ、セキュリティ、コード品質の問題についてレビュー。`--fix` で指摘を自動適用。 | [commands/gsd/code-review.md](../../commands/gsd/code-review.md) | +| `/gsd-eval-review` | 実行済み AI フェーズの評価カバレッジを遡及監査し、EVAL-REVIEW.md を作成。 | [commands/gsd/eval-review.md](../../commands/gsd/eval-review.md) | + +### フェーズ & マイルストーン管理 + +| コマンド | 役割 | ソース | +|----------|------|--------| +| `/gsd-phase` | フェーズの CRUD — ROADMAP.md でフェーズを追加(デフォルト)、挿入(`--insert`)、削除(`--remove`)、編集(`--edit`)。 | [commands/gsd/phase.md](../../commands/gsd/phase.md) | +| `/gsd-add-tests` | UAT 基準と実装に基づいて完了したフェーズのテストを生成。 | [commands/gsd/add-tests.md](../../commands/gsd/add-tests.md) | +| `/gsd-validate-phase` | 完了したフェーズの Nyquist バリデーションのギャップを遡及監査して埋める。 | [commands/gsd/validate-phase.md](../../commands/gsd/validate-phase.md) | +| `/gsd-secure-phase` | 完了したフェーズの脅威への対策を遡及検証。 | [commands/gsd/secure-phase.md](../../commands/gsd/secure-phase.md) | +| `/gsd-audit-milestone` | アーカイブ前に元の意図に対してマイルストーン完了を監査。 | [commands/gsd/audit-milestone.md](../../commands/gsd/audit-milestone.md) | +| `/gsd-audit-uat` | 全未解決 UAT および検証項目のクロスフェーズ監査。 | [commands/gsd/audit-uat.md](../../commands/gsd/audit-uat.md) | +| `/gsd-audit-fix` | 自律監査-修正パイプライン — 問題の発見、分類、修正、テスト、コミット。 | [commands/gsd/audit-fix.md](../../commands/gsd/audit-fix.md) | +| `/gsd-complete-milestone` | 完了したマイルストーンをアーカイブし、次のバージョンに向けて準備。 | [commands/gsd/complete-milestone.md](../../commands/gsd/complete-milestone.md) | +| `/gsd-new-milestone` | 新しいマイルストーンサイクルを開始 — PROJECT.md を更新して要件にルーティング。 | [commands/gsd/new-milestone.md](../../commands/gsd/new-milestone.md) | +| `/gsd-milestone-summary` | マイルストーンアーティファクトから包括的なプロジェクトサマリーを生成。 | [commands/gsd/milestone-summary.md](../../commands/gsd/milestone-summary.md) | +| `/gsd-cleanup` | 完了したマイルストーンから蓄積されたフェーズディレクトリをアーカイブ。 | [commands/gsd/cleanup.md](../../commands/gsd/cleanup.md) | +| `/gsd-manager` | 1 つのターミナルから複数のフェーズを管理するインタラクティブなコマンドセンター。 | [commands/gsd/manager.md](../../commands/gsd/manager.md) | +| `/gsd-workstreams` | 並列ワークストリームを管理 — list、create、switch、status、progress、complete、resume。 | [commands/gsd/workstreams.md](../../commands/gsd/workstreams.md) | +| `/gsd-autonomous` | 残りのすべてのフェーズを自律的に実行 — フェーズごとに discuss → plan → execute。 | [commands/gsd/autonomous.md](../../commands/gsd/autonomous.md) | +| `/gsd-undo` | 安全な git リバート — フェーズマニフェストを使ってフェーズまたはプランのコミットをロールバック。 | [commands/gsd/undo.md](../../commands/gsd/undo.md) | + +### セッション & ナビゲーション + +| コマンド | 役割 | ソース | +|----------|------|--------| +| `/gsd-progress` | プロジェクトの進捗を確認し、コンテキストを表示して次のアクションにルーティング。`--next` で自動進行、`--do` で自由形式タスクを実行。 | [commands/gsd/progress.md](../../commands/gsd/progress.md) | +| `/gsd-capture` | アイデア、タスク、メモ、シードをキャプチャ — todo(デフォルト)、`--note`、`--backlog`、`--seed`、または `--list` で保留中の TODO を一覧表示。 | [commands/gsd/capture.md](../../commands/gsd/capture.md) | +| `/gsd-stats` | プロジェクト統計を表示 — フェーズ、プラン、要件、git メトリクス、タイムライン。 | [commands/gsd/stats.md](../../commands/gsd/stats.md) | +| `/gsd-pause-work` | フェーズ途中で作業を一時停止する際にコンテキスト引き継ぎを作成。 | [commands/gsd/pause-work.md](../../commands/gsd/pause-work.md) | +| `/gsd-resume-work` | 完全なコンテキスト復元で前のセッションから作業を再開。 | [commands/gsd/resume-work.md](../../commands/gsd/resume-work.md) | +| `/gsd-explore` | コミットする前にアイデアを考え抜くためのソクラテス的アイデア創出とアイデアルーティング。 | [commands/gsd/explore.md](../../commands/gsd/explore.md) | +| `/gsd-review-backlog` | バックログアイテムをレビューしてアクティブなマイルストーンに昇格。 | [commands/gsd/review-backlog.md](../../commands/gsd/review-backlog.md) | +| `/gsd-thread` | クロスセッション作業のための永続的なコンテキストスレッドを管理。 | [commands/gsd/thread.md](../../commands/gsd/thread.md) | + +### コードベースインテリジェンス + +| コマンド | 役割 | ソース | +|----------|------|--------| +| `/gsd-map-codebase` | 並列マッパーエージェントでコードベースを分析。`--fast` で軽量スキャン、`--query` でインテルクエリ。 | [commands/gsd/map-codebase.md](../../commands/gsd/map-codebase.md) | +| `/gsd-graphify` | `.planning/graphs/` 内のプロジェクトナレッジグラフをビルド、クエリ、検査。 | [commands/gsd/graphify.md](../../commands/gsd/graphify.md) | +| `/gsd-extract-learnings` | 完了したフェーズのアーティファクトから決定事項、教訓、パターン、驚きを抽出。 | [commands/gsd/extract-learnings.md](../../commands/gsd/extract-learnings.md) | + +### レビュー、デバッグ & リカバリー + +| コマンド | 役割 | ソース | +|----------|------|--------| +| `/gsd-review` | 外部 AI CLI からフェーズプランのクロス AI ピアレビューをリクエスト。 | [commands/gsd/review.md](../../commands/gsd/review.md) | +| `/gsd-debug` | コンテキストリセット全体で永続的な状態を持つ体系的なデバッグ。 | [commands/gsd/debug.md](../../commands/gsd/debug.md) | +| `/gsd-forensics` | 失敗した GSD ワークフローのポストモーテム調査 — git、アーティファクト、状態を分析。 | [commands/gsd/forensics.md](../../commands/gsd/forensics.md) | +| `/gsd-health` | 計画ディレクトリの健全性を診断し、任意で問題を修復。 | [commands/gsd/health.md](../../commands/gsd/health.md) | +| `/gsd-import` | プロジェクト決定に対する競合検出付きで外部プランをインジェスト。 | [commands/gsd/import.md](../../commands/gsd/import.md) | +| `/gsd-inbox` | プロジェクトテンプレートに対してすべてのオープンな GitHub イシューと PR をトリアージおよびレビュー。 | [commands/gsd/inbox.md](../../commands/gsd/inbox.md) | + +### ドキュメント、プロファイル & ユーティリティ + +| コマンド | 役割 | ソース | +|----------|------|--------| +| `/gsd-docs-update` | コードベースに対して検証されたプロジェクトドキュメントを生成または更新。 | [commands/gsd/docs-update.md](../../commands/gsd/docs-update.md) | +| `/gsd-ingest-docs` | リポジトリで混在した ADR/PRD/SPEC/DOC をスキャンし、分類・合成・競合レポートで `.planning/` セットアップをブートストラップまたはマージ。 | [commands/gsd/ingest-docs.md](../../commands/gsd/ingest-docs.md) | +| `/gsd-profile-user` | 開発者の行動プロファイルと Claude が検出可能なアーティファクトを生成。 | [commands/gsd/profile-user.md](../../commands/gsd/profile-user.md) | +| `/gsd-settings` | GSD ワークフロートグルとモデルプロファイルを設定。 | [commands/gsd/settings.md](../../commands/gsd/settings.md) | +| `/gsd-config` | GSD 設定を構成 — ワークフロートグル(デフォルト)、高度なノブ(`--advanced`)、インテグレーション(`--integrations`)、またはモデルプロファイル(`--profile`)。 | [commands/gsd/config.md](../../commands/gsd/config.md) | +| `/gsd-pr-branch` | `.planning/` コミットをフィルタリングしてクリーンな PR ブランチを作成。 | [commands/gsd/pr-branch.md](../../commands/gsd/pr-branch.md) | +| `/gsd-surface` | サーフェスに出るスキルを切り替え — 再インストールなしでプロファイルを適用、一覧表示、またはクラスターを無効化。 | [commands/gsd/surface.md](../../commands/gsd/surface.md) | +| `/gsd-update` | GSD を最新バージョンに更新。`--sync` でランタイム間でスキルを同期、`--reapply` でローカルパッチを再適用。 | [commands/gsd/update.md](../../commands/gsd/update.md) | +| `/gsd-help` | 利用可能な GSD コマンドと使い方ガイドを表示。 | [commands/gsd/help.md](../../commands/gsd/help.md) | + +--- + +## ワークフロー (88 shipped) + +完全な一覧は `get-shit-done/workflows/*.md` を参照してください。ワークフローはコマンドが内部で参照する薄いオーケストレーターです。ほとんどはエンドユーザーが直接読むものではありません。以下の行は各ワークフローファイルをその役割(`` ブロックから導出)と、該当する場合はそれを呼び出すコマンドにマッピングします。 + +| ワークフロー | 役割 | 呼び出し元 | +|-------------|------|-----------| +| `add-backlog.md` | 999.x 番号付けを使って ROADMAP.md にバックログアイテムを追加。 | `/gsd-capture --backlog` | +| `add-phase.md` | ロードマップの現在のマイルストーン末尾に新しい整数フェーズを追加。 | `/gsd-phase` (default) | +| `add-tests.md` | フェーズのアーティファクトに基づいて完了したフェーズのユニットテストと E2E テストを生成。 | `/gsd-add-tests` | +| `add-todo.md` | セッション中に浮上したアイデアやタスクを構造化された todo としてキャプチャ。 | `/gsd-capture` (default) | +| `ai-integration-phase.md` | フレームワーク選択 → AI 調査 → ドメイン調査 → eval 計画を AI-SPEC.md に統合してオーケストレーション。 | `/gsd-ai-integration-phase` | +| `analyze-dependencies.md` | ROADMAP.md のフェーズをファイル重複とセマンティックな依存関係について分析し、`Depends on` エッジを提案。 | `/gsd-manager --analyze-deps` | +| `audit-fix.md` | 自律監査-修正パイプライン — 監査実行、解析、分類、修正、テスト、コミット。 | `/gsd-audit-fix` | +| `audit-milestone.md` | フェーズ検証を集約してマイルストーンが完了の定義を満たしているか検証。 | `/gsd-audit-milestone` | +| `audit-uat.md` | UAT と検証ファイルのクロスフェーズ監査。優先順位付けされた未解決項目リストを作成。 | `/gsd-audit-uat` | +| `autonomous.md` | マイルストーンのフェーズを自律的に進行 — 残り全部、範囲指定、または単一フェーズ。 | `/gsd-autonomous` | +| `check-todos.md` | 保留中の TODO を一覧表示し、選択を許可してコンテキストを読み込み、適切なアクションにルーティング。 | `/gsd-capture --list` | +| `cleanup.md` | 完了したマイルストーンから蓄積されたフェーズディレクトリをアーカイブ。 | `/gsd-cleanup` | +| `code-review-fix.md` | gsd-code-fixer を使って REVIEW.md の問題を修正ごとのアトミックコミットで自動修正。 | `/gsd-code-review --fix` | +| `code-review.md` | gsd-code-reviewer でフェーズのソース変更をレビュー。REVIEW.md を作成。 | `/gsd-code-review` | +| `complete-milestone.md` | 出荷されたバージョンを完了としてマーク — MILESTONES.md エントリー、PROJECT.md の進化、タグ。 | `/gsd-complete-milestone` | +| `diagnose-issues.md` | 並列デバッグエージェントをオーケストレーションして UAT のギャップを調査し、根本原因を特定。 | `/gsd-verify-work` (auto-diagnosis) | +| `discovery-phase.md` | 適切な深さレベルでディスカバリーを実行。 | `/gsd-new-project` (discovery path) | +| `discuss-phase-assumptions.md` | 仮定モードの discuss — コードベースファーストの分析で実装決定を抽出。 | `/gsd-discuss-phase` (when `discuss_mode=assumptions`) | +| `discuss-phase-power.md` | パワーユーザー discuss — すべての質問を JSON 状態ファイル + HTML UI に事前生成。 | `/gsd-discuss-phase --power` | +| `discuss-phase.md` | 反復的なグレーゾーンの議論を通じて実装決定を抽出。 | `/gsd-discuss-phase` | +| `mvp-phase.md` | フェーズを垂直 MVP スライスとして計画 — ユーザーストーリー、SPIDR 分割、その後 plan-phase。 | `/gsd-mvp-phase` | +| `do.md` | ユーザーからの自由形式テキストを最も適合する GSD コマンドにルーティング。 | `/gsd-progress --do` | +| `docs-update.md` | 正規のおよび手書きのプロジェクトドキュメントを生成、更新、検証。 | `/gsd-docs-update` | +| `edit-phase.md` | ROADMAP.md の既存フェーズの任意フィールドを番号と位置を保ちながら編集。 | `/gsd-phase --edit` | +| `eval-review.md` | 実装済み AI フェーズの評価カバレッジの遡及監査。 | `/gsd-eval-review` | +| `execute-phase.md` | ウェーブベースの並列実行でフェーズのすべてのプランを実行。 | `/gsd-execute-phase` | +| `execute-plan.md` | フェーズプロンプト(PLAN.md)を実行して成果サマリー(SUMMARY.md)を作成。 | `execute-phase.md` (per-plan subagent) | +| `explore.md` | ソクラテス的アイデア創出 — 開発者を探索的な質問を通じてガイド。 | `/gsd-explore` | +| `debug.md` | 体系的なデバッグ — サブコマンドルーティング、セッション作成、gsd-debug-session-manager への委任。 | `/gsd-debug` | +| `extract-learnings.md` | 完了したフェーズのアーティファクトから決定事項、教訓、パターン、驚きを抽出。 | `/gsd-extract-learnings` | +| `fast.md` | サブエージェントのオーバーヘッドなしに些細なタスクをインラインで実行。 | `/gsd-fast` | +| `forensics.md` | 失敗したワークフローのフォレンジクス調査 — git、アーティファクト、状態分析。 | `/gsd-forensics` | +| `graduation.md` | フェーズ横断で繰り返し出現する LEARNINGS.md アイテムをクラスタリングして HITL 昇格候補を浮き上がらせる。 | `transition.md` (graduation_scan step) | +| `health.md` | `.planning/` ディレクトリの整合性を検証し、対処可能な問題を報告。 | `/gsd-health` | +| `help.md` | 完全な GSD Core コマンドリファレンスを表示。 | `/gsd-help` | +| `import.md` | 既存のプロジェクト決定に対する競合検出付きで外部プランをインジェスト。 | `/gsd-import` | +| `inbox.md` | プロジェクトのコントリビューションテンプレートに対してオープンな GitHub イシューと PR をトリアージ。 | `/gsd-inbox` | +| `ingest-docs.md` | リポジトリで混在した計画ドキュメントをスキャンし、分類・合成して `.planning/` に競合レポート付きでブートストラップまたはマージ。 | `/gsd-ingest-docs` | +| `insert-phase.md` | マイルストーン途中で発見された緊急作業のために小数フェーズを挿入。 | `/gsd-phase --insert` | +| `list-phase-assumptions.md` | 計画前にフェーズに関する Claude の仮定を浮き上がらせる。 | `/gsd-discuss-phase --assumptions` | +| `list-workspaces.md` | `~/gsd-workspaces/` 内のすべての GSD ワークスペースをステータスとともに一覧表示。 | `/gsd-workspace --list` | +| `manager.md` | インタラクティブなマイルストーンコマンドセンター — ダッシュボード、インライン discuss、バックグラウンド plan/execute。 | `/gsd-manager` | +| `map-codebase.md` | 並列コードベースマッパーエージェントをオーケストレーションして `.planning/codebase/` ドキュメントを作成。 | `/gsd-map-codebase` | +| `milestone-summary.md` | マイルストーンサマリー合成 — マイルストーンアーティファクトからオンボーディングとレビューアーティファクトを作成。 | `/gsd-milestone-summary` | +| `new-milestone.md` | 新しいマイルストーンサイクルを開始 — プロジェクトコンテキストを読み込み、目標を収集して PROJECT.md/STATE.md を更新。 | `/gsd-new-milestone` | +| `new-project.md` | 統合新プロジェクトフロー — 質問、調査(任意)、要件、ロードマップ。 | `/gsd-new-project` | +| `new-workspace.md` | リポジトリのワークツリー/クローンと独立した `.planning/` を持つ独立したワークスペースを作成。 | `/gsd-workspace --new` | +| `next.md` | 現在のプロジェクト状態を検出して次の論理的なステップに自動的に進む。 | `/gsd-progress --next` | +| `node-repair.md` | タスク検証が失敗した場合の自律修復オペレーター。`execute-plan` から呼び出し。 | `execute-plan.md` (recovery) | +| `note.md` | ゼロフリクションのアイデアキャプチャ — 1 回の Write 呼び出しと 1 行の確認。 | `/gsd-capture --note` | +| `pause-work.md` | 構造化された `.planning/HANDOFF.json` と `.continue-here.md` 引き継ぎファイルを作成。 | `/gsd-pause-work` | +| `plan-phase.md` | 統合された調査と検証ループを含む実行可能な PLAN.md ファイルを作成。 | `/gsd-plan-phase`, `/gsd-quick` | +| `plan-review-convergence.md` | クロス AI プラン収束ループ — HIGH の懸念がなくなるまでレビューフィードバックで再計画。 | `/gsd-plan-review-convergence` | +| `plant-seed.md` | 先見的なアイデアをトリガー条件付きの構造化されたシードファイルとしてキャプチャ。 | `/gsd-capture --seed` | +| `pr-branch.md` | `.planning/` コミットをフィルタリングしてプルリクエスト用のクリーンなブランチを作成。 | `/gsd-pr-branch` | +| `profile-user.md` | 完全な開発者プロファイリングフローをオーケストレーション — 同意、セッションスキャン、プロファイル生成。 | `/gsd-profile-user` | +| `progress.md` | 進捗レンダリング — プロジェクトコンテキスト、位置、次のアクションルーティング。 | `/gsd-progress` | +| `quick.md` | GSD の保証付きのクイックタスク実行(アトミックコミット、状態追跡)。 | `/gsd-quick` | +| `reapply-patches.md` | GSD 更新後にローカルの変更を再適用。 | `/gsd-update --reapply` | +| `remove-phase.md` | ロードマップから将来のフェーズを削除し、後続フェーズを振り直し。 | `/gsd-phase --remove` | +| `remove-workspace.md` | GSD ワークスペースを削除してワークツリーをクリーンアップ。 | `/gsd-workspace --remove` | +| `resume-project.md` | 作業を再開 — STATE.md、HANDOFF.json、アーティファクトから完全なコンテキストを復元。 | `/gsd-resume-work` | +| `review.md` | 外部 CLI 経由のクロス AI プランレビュー。REVIEWS.md を作成。 | `/gsd-review` | +| `scan.md` | 迅速な単一フォーカスのコードベーススキャン — map-codebase の軽量代替。 | `/gsd-map-codebase --fast` | +| `secure-phase.md` | 完了したフェーズの遡及的な脅威対策監査。 | `/gsd-secure-phase` | +| `session-report.md` | セッションレポート — トークン使用量、作業サマリー、成果。 | `/gsd-pause-work --report` | +| `settings.md` | GSD ワークフロートグルとモデルプロファイルを設定。 | `/gsd-settings`, `/gsd-config --profile` | +| `settings-advanced.md` | GSD パワーユーザーノブを設定 — プランバウンス、タイムアウト、ブランチテンプレート、クロス AI 実行、ランタイムノブ。 | `/gsd-config --advanced` | +| `settings-integrations.md` | サードパーティ API キー(Brave/Firecrawl/Exa)、`review.models.` CLI ルーティング、`agent_skills.` インジェクションをマスク済み(`****`)表示で設定。 | `/gsd-config --integrations` | +| `ship.md` | 検証後に PR を作成し、レビューを実行してマージ準備を行う。 | `/gsd-ship` | +| `sketch.md` | 1 スケッチにつき 2〜3 バリアントの使い捨て HTML モックアップでデザインの方向性を探索。 | `/gsd-sketch` | +| `sketch-wrap-up.md` | スケッチの調査結果を厳選して永続的な `sketch-findings-[project]` スキルとしてパッケージ化。 | `/gsd-sketch --wrap-up` | +| `spec-phase.md` | 曖昧さスコアリング付きのソクラテス的仕様精緻化。SPEC.md を作成。 | `/gsd-spec-phase` | +| `spike.md` | 集中した使い捨ての実験によって迅速に実現可能性を検証。 | `/gsd-spike` | +| `spike-wrap-up.md` | スパイクの調査結果を厳選して永続的な `spike-findings-[project]` スキルとしてパッケージ化。 | `/gsd-spike --wrap-up` | +| `stats.md` | プロジェクト統計レンダリング — フェーズ、プラン、要件、git メトリクス。 | `/gsd-stats` | +| `sync-skills.md` | クロスランタイム GSD スキル同期 — ランタイムルート間で `gsd-*` スキルディレクトリを差分して適用。 | `/gsd-update --sync` | +| `transition.md` | フェーズ境界遷移ワークフロー — ワークストリームチェック、状態進行。 | `execute-phase.md`, `/gsd-progress --next` | +| `ui-phase.md` | gsd-ui-researcher で UI-SPEC.md デザインコントラクトを生成。 | `/gsd-ui-phase` | +| `ui-review.md` | gsd-ui-auditor による遡及的な 6 本柱ビジュアル監査。 | `/gsd-ui-review` | +| `ultraplan-phase.md` | [BETA] 計画を Claude Code の ultraplan クラウドにオフロードし、リモートで下書きして `/gsd-import` 経由でインポート。 | `/gsd-ultraplan-phase` | +| `undo.md` | 安全な git リバート — フェーズマニフェストを使ってフェーズまたはプランのコミットをロールバック。 | `/gsd-undo` | +| `thread.md` | クロスセッション作業のための永続的なコンテキストスレッドを作成、一覧表示、クローズ、または再開。 | `/gsd-thread` | +| `update.md` | 変更履歴の表示付きで GSD を最新バージョンに更新。 | `/gsd-update` | +| `validate-phase.md` | 完了したフェーズの Nyquist バリデーションのギャップを遡及監査して埋める。 | `/gsd-validate-phase` | +| `verify-phase.md` | ゴール後退型分析によってフェーズ目標の達成を検証。 | `execute-phase.md` (post-execution) | +| `verify-work.md` | 自動診断付きの会話型 UAT — UAT.md と修正プランを作成。 | `/gsd-verify-work` | + +> **注記:** 一部のワークフローには直接ユーザー向けのコマンドがありません(例: `execute-plan.md`、`verify-phase.md`、`transition.md`、`node-repair.md`、`diagnose-issues.md`)— これらはオーケストレーターワークフローによって内部的に呼び出されます。`discovery-phase.md` は `/gsd-new-project` の代替エントリーポイントです。 + +--- + +## リファレンス (62 shipped) + +完全な一覧は `get-shit-done/references/*.md` を参照してください。リファレンスはワークフローとエージェントが `@-reference` として参照する共有ナレッジドキュメントです。以下のグループ分けは [`docs/ARCHITECTURE.md`](../ARCHITECTURE.md#references-get-shit-donereferencesmd) に対応します — コア、ワークフロー、思考モデルクラスター、モジュラープランナー分解。 + +### コアリファレンス + +| リファレンス | 役割 | +|-------------|------| +| `checkpoints.md` | チェックポイントタイプの定義とインタラクションパターン。 | +| `gates.md` | plan-checker と verifier に組み込まれた 4 つの標準ゲートタイプ(Confirm、Quality、Safety、Transition)。 | +| `model-profiles.md` | エージェントごとのモデルティア割り当て。 | +| `model-profile-resolution.md` | モデル解決アルゴリズムのドキュメント。 | +| `verification-patterns.md` | 異なるアーティファクトタイプの検証方法。 | +| `verification-overrides.md` | アーティファクトごとの検証オーバーライドルール。 | +| `planning-config.md` | 完全な設定スキーマと動作。 | +| `git-integration.md` | git コミット、ブランチ、履歴パターン。 | +| `git-planning-commit.md` | 計画ディレクトリのコミット規約。 | +| `questioning.md` | プロジェクト初期化のためのドリーム抽出哲学。 | +| `tdd.md` | テスト駆動開発の統合パターン。 | +| `ui-brand.md` | ビジュアル出力フォーマットパターン。 | +| `common-bug-patterns.md` | コードレビューと検証のための一般的なバグパターン。 | +| `debugger-philosophy.md` | `gsd-debugger` が読み込む常緑のデバッグ規律。 | +| `mandatory-initial-read.md` | エージェントプロンプトに注入される共有の必読ボイラープレート。 | +| `project-skills-discovery.md` | エージェントプロンプトに注入される共有のプロジェクトスキル検出ボイラープレート。 | + +### ワークフローリファレンス + +| リファレンス | 役割 | +|-------------|------| +| `agent-contracts.md` | オーケストレーターとエージェント間の正式なインターフェース。 | +| `context-budget.md` | コンテキストウィンドウバジェット割り当てルール。 | +| `continuation-format.md` | セッション継続/再開フォーマット。 | +| `domain-probes.md` | discuss-phase 向けのドメイン固有のプロービング質問。 | +| `gate-prompts.md` | ゲート/チェックポイントのプロンプトテンプレート。 | +| `scout-codebase.md` | discuss-phase スカウトステップ向けのフェーズタイプ→コードベースマップ選択テーブル(#2551 で抽出)。 | +| `revision-loop.md` | プラン修正の反復パターン。 | +| `universal-anti-patterns.md` | 検出して避けるべきユニバーサルアンチパターン。 | +| `worktree-path-safety.md` | ワークツリーガードスイート: HEAD アサーション、cwd ドリフトセンチネル(ステップ 0a、#3097)、絶対パスガード(ステップ 0b、#3099)— `` 経由でエグゼキュータースポーンプロンプトに読み込まれる。 | +| `artifact-types.md` | 計画アーティファクトタイプの定義。 | +| `phase-argument-parsing.md` | フェーズ引数の解析規約。 | +| `decimal-phase-calculation.md` | 小数サブフェーズの番号付けルール。 | +| `workstream-flag.md` | ワークストリームアクティブポインター規約(`--ws`)。 | +| `user-profiling.md` | ユーザー行動プロファイリングの検出ヒューリスティック。 | +| `thinking-partner.md` | 意思決定ポイントでの条件付き思考パートナー起動。 | +| `autonomous-smart-discuss.md` | 自律モード向けのスマート discuss ロジック。 | +| `ios-scaffold.md` | iOS アプリケーションスキャフォールディングパターン。 | +| `ai-evals.md` | `/gsd-ai-integration-phase` 向けの AI 評価設計リファレンス。 | +| `ai-frameworks.md` | `gsd-framework-selector` 向けの AI フレームワーク決定マトリクスリファレンス。 | +| `executor-examples.md` | gsd-executor エージェントの実例。 | +| `doc-conflict-engine.md` | ingest/import ワークフロー向けの共有競合検出コントラクト。 | +| `execute-mvp-tdd.md` | MVP+TDD での execute-phase のランタイムゲートセマンティクス — タスク前の失敗テスト検証、フェーズ末尾のブロッキングレビュー。 | +| `mvp-concepts.md` | 6 つの MVP 関連リファレンスファイルのクロスリファレンスインデックス。各ファイルの目的とどのワークフローが読み込むかをマッピング。 | +| `verify-mvp-mode.md` | MVP モードフェーズの UAT フレーミングルール — ユーザーフローファーストの順序、延期された技術チェック、ユーザーストーリーフォーマットガード。 | + +### スケッチリファレンス + +`/gsd-sketch` ワークフローとその wrap-up コンパニオンが使用するリファレンス。 + +| リファレンス | 役割 | +|-------------|------| +| `sketch-interactivity.md` | HTML スケッチをインタラクティブで生き生きとさせるためのルール。 | +| `sketch-theme-system.md` | クロススケッチの一貫性のための共有 CSS テーマ変数システム。 | +| `sketch-tooling.md` | すべてのスケッチに含まれるフローティングツールバーユーティリティ。 | +| `sketch-variant-patterns.md` | マルチバリアント HTML パターン(タブ、並排表示、オーバーレイ)。 | + +### 思考モデルリファレンス + +思考クラスモデル(o3、o4-mini、Gemini 2.5 Pro)を GSD ワークフローに統合するためのリファレンス。 + +| リファレンス | 役割 | +|-------------|------| +| `thinking-models-debug.md` | デバッグワークフロー向けの思考モデルパターン。 | +| `thinking-models-execution.md` | 実行エージェント向けの思考モデルパターン。 | +| `thinking-models-planning.md` | 計画エージェント向けの思考モデルパターン。 | +| `thinking-models-research.md` | 調査エージェント向けの思考モデルパターン。 | +| `thinking-models-verification.md` | 検証エージェント向けの思考モデルパターン。 | + +### モジュラープランナー分解 + +`gsd-planner` エージェントは、ランタイムの文字数制限に収めるためにコアエージェントとリファレンスモジュールに分解されます。 + +| リファレンス | 役割 | +|-------------|------| +| `planner-antipatterns.md` | プランナーのアンチパターンと具体性の例。 | +| `planner-chunked.md` | チャンクモードの戻り形式(`## OUTLINE COMPLETE`、`## PLAN COMPLETE`)— Windows stdio ハングの緩和策。 | +| `planner-gap-closure.md` | ギャップクロージャーモードの動作(VERIFICATION.md を読み込み、ターゲットを絞った再計画)。 | +| `planner-reviews.md` | クロス AI レビュー統合(`/gsd-review` からの REVIEWS.md を読み込み)。 | +| `planner-revision.md` | 反復的な精緻化のためのプラン修正パターン。 | +| `planner-source-audit.md` | プランナーのソース監査と権威制限ルール。 | +| `planner-mvp-mode.md` | MVP モード向けの垂直スライス計画ルール。 | +| `planner-human-verify-mode.md` | `workflow.human_verify_mode = end-of-phase` のルール: `checkpoint:human-verify` タスク発行を抑制し、延期された項目を `` 経由でルーティング。 | +| `planner-graphify-auto-update.md` | `load_graph_context` が既存の鮮度アノテーションに加えて `.last-build-status.json` の自動更新状態(running / failed / stale head)をどのように表示するか。`graphify.auto_update` でオプトイン(#3347)。 | +| `planner-interface-context.md` | エグゼキューター向けのインターフェースコンテキストルール — 既存コードから主要なインターフェース/型/エクスポートを抽出する方法と、下流のプランが使用する新しいインターフェースのドキュメント化方法。 | +| `skeleton-template.md` | 新プロジェクトのウォーキングスケルトン(フェーズ 1 + `--mvp`)用に出力される SKELETON.md テンプレート。 | +| `user-story-template.md` | MVP 計画向けのユーザーストーリーフォーマット — "As a / I want to / So that" の構造化フィールド。 | +| `spidr-splitting.md` | MVP モードで大きなユーザーストーリーを処理するための SPIDR 分割ルール。 | + +> **サブディレクトリ:** `get-shit-done/references/few-shot-examples/` には、特定のエージェントから参照される追加のフューショット例(`plan-checker.md`、`verifier.md`)が含まれます。これらは 62 のトップレベルリファレンスにはカウントされません。 + +--- + +## CLI モジュール (81 shipped) + +完全な一覧: `get-shit-done/bin/lib/*.cjs`。 + +| モジュール | 責務 | +|-----------|------| +| `active-workstream-store.cjs` | ワークストリームソースの優先度と選択(CLI `--ws` > `GSD_WORKSTREAM` 環境変数 > 保存済みポインター)、名前のバリデーションと環境への伝播 | +| `adr-parser.cjs` | plan-phase インジェストエクスプレスパス向けの ADR 決定パーサー。セクションの同義語を正規化し、ステータス/決定/スコープフェンスを解析して、ステータス拒否ゲートを適用 | +| `agent-command-router.cjs` | `gsd-tools agent` 向けの薄い CJS サブコマンドルーターアダプター | +| `artifacts.cjs` | 標準的なアーティファクトレジストリ — 既知の `.planning/` ルートファイル名。`gsd-health` W019 リントで使用 | +| `audit.cjs` | 監査ディスパッチ、監査オープンセッション、監査ストレージヘルパー | +| `check-command-router.cjs` | `gsd-tools check` 向けの薄い CJS サブコマンドルーターアダプター | +| `cjs-command-router-adapter.cjs` | マニフェストバックの CJS コマンドファミリールーター向けの共有互換アダプター | +| `clock.cjs` | 決定論的なロックテスト向けの注入可能なクロックシーム(now/sleep) | +| `clusters.cjs` | ランタイムサーフェスモジュール向けのスキルクラスター定義(ADR-0011 フェーズ 2) | +| `code-review-flags.cjs` | `/gsd:code-review` 向けの型付きフラグパーサー。`parseCodeReviewFlags(argv)`(→ `{ fix, all, auto, depth, files }`)と `resolveCodeReviewWorkflow(flags)`(→ `'code-review.md' \| 'code-review-fix.md'`)をエクスポート。`--fix`/`--all`/`--auto` ルーティングの標準ディスパッチシーム | +| `command-aliases.cjs` | マニフェストバックのファミリールーター向けのエイリアス/サブコマンドメタデータ | +| `command-arg-projection.cjs` | コマンドファミリールーター間で共有される型付きフラグと位置引数のプロジェクションヘルパー | +| `command-routing-hub.cjs` | すべてのコマンドファミリールーターのモード決定(SDK vs CJS)、エラー分類、ノースロー契約を一元化する純粋結果ディスパッチハブ(#3788) | +| `commands.cjs` | その他の CLI コマンド(slug、タイムスタンプ、TODO、スキャフォールディング、統計) | +| `config-schema.cjs` | `VALID_CONFIG_KEYS` と動的キーパターンの単一ソース。バリデーターと config-schema-docs パリティテストの両方でインポートされる | +| `config.cjs` | `config.json` の読み書き、セクション初期化。`config-schema.cjs` からバリデーターをインポート | +| `config-types.cjs` | `model_policy` 設定ブロックの TypeScript 型定義 — `ModelPolicyConfig`、`TierEntry`、`RuntimeTiers`。発行時に `src/config-types.cts` からコンパイル(ADR-457) | +| `configuration.cjs` | 設定モジュール — 標準的な設定読み込み、レガシーキー正規化、デフォルトマージ、明示的なディスク上のマイグレーション。SDK と CJS 両方のコンシューマーの信頼できるソース | +| `context-utilization.cjs` | `gsd-health --context` 向けの純粋なクラシファイアー — (tokensUsed, contextWindow)を 60%/70% の骨折点閾値に対する `{ percent, state }` トリアージ結果に変換(#2792) | +| `core.cjs` | エラー処理、出力フォーマット、共通ユーティリティ、ランタイムフォールバック。planning-workspace ヘルパーの互換性再エクスポート | +| `decisions.cjs` | CONTEXT.md の `` ブロックを解析。数値(D-42)と英数字(D-INFRA-01)の ID を受け付け。`{id, text, category, tags, trackable}` を返す | +| `docs.cjs` | docs-update ワークフロー初期化、Markdown スキャン、モノリポ検出 | +| `drift.cjs` | 実行後のコードベース構造ドリフト検出器(#2003): ファイル変更を new-dir/barrel/migration/route カテゴリに分類し、`last_mapped_commit` フロントマターをラウンドトリップ | +| `fallow-runner.cjs` | `/gsd-code-review` 向けのファロー監査アダプター: バイナリ解決(`PATH` 次に `node_modules/.bin`)、アクション可能なバイナリ欠落エラー、構造的な調査結果の正規化 | +| `frontmatter.cjs` | YAML フロントマター CRUD 操作 | +| `gap-checker.cjs` | 計画後のギャップ分析(#2493): REQUIREMENTS.md + CONTEXT.md 決定事項 vs PLAN.md カバレッジレポート(`gsd-tools gap-analysis`)の統合 | +| `graphify.cjs` | `/gsd-graphify` 向けのナレッジグラフビルド/クエリ/ステータス/差分 | +| `gsd2-import.cjs` | `/gsd-import --from-gsd2` 向けの外部プランインジェスト | +| `init-command-router.cjs` | `gsd-tools init` 向けの薄い CJS サブコマンドルーターアダプター | +| `init.cjs` | 各ワークフロータイプの複合コンテキスト読み込み | +| `install-profiles.cjs` | `--minimal` インストール向けのインストールプロファイル許可リスト + スキルステージング(#2762)。どの `gsd-*` スキル/エージェントがランタイム設定ディレクトリに配置されるかの単一ソース | +| `installer-migration-authoring.cjs` | レコードメタデータ、明示的スコープ、所有権の証拠、ランタイムコントラクト引用のインストーラーマイグレーション作成ガードレール | +| `installer-migration-report.cjs` | インストール/更新統合向けのインストーラーマイグレーションレポートプロジェクションとブロックアクションガード | +| `installer-migrations.cjs` | インストーラーマイグレーション計画、アーティファクト分類、インストール状態の永続化、ジャーナル化された適用、ロールバックヘルパー | +| `intel.cjs` | `/gsd-map-codebase --query` と `gsd-intel-updater` を支えるコードベースインテルストア | +| `learnings.cjs` | `/gsd-extract-learnings` 向けのクロスフェーズ学習抽出 | +| `milestone.cjs` | マイルストーンアーカイブ、要件マーキング | +| `model-catalog.cjs` | 共有モデルカタログ JSON の CJS アダプター。すべての CLI コンシューマーの標準ランタイムティアデフォルト、エージェントプロファイルマップ、エイリアスマップ、ルーティングメタデータをエクスポート | +| `model-profiles.cjs` | `model-catalog.cjs` から派生した後方互換プロファイルヘルパー。独自のモデルテーブルは持たない | +| `package-identity.cjs` | GSD の公開パッケージ座標(npm 名、bin 名、リポジトリスラッグ、変更履歴 URL、手動インストールコマンド)の生成された単一ソース。package.json から導出。更新ワーカー、`check-latest-version`、インストーラーが読み込む(#498) | +| `phase-command-router.cjs` | `gsd-tools phase` 向けの薄い CJS サブコマンドルーターアダプター | +| `phase-lifecycle.cjs` | フェーズライフサイクル SDK ハンドラーから抽出された純粋計算フェーズライフサイクルヘルパー | +| `phase.cjs` | フェーズディレクトリ操作、小数番号付け、プランインデックス化 | +| `phases-command-router.cjs` | `gsd-tools phases` 向けの薄い CJS サブコマンドルーターアダプター | +| `plan-scan.cjs` | フラットおよびネストされたレイアウトでプランとサマリーファイルを検出するための標準フェーズプランスキャナー(k014) | +| `planning-workspace.cjs` | 計画パス/ワークストリームシーム(`planningDir`、`planningPaths`、アクティブワークストリームルーティング、`.planning/.lock` オーケストレーション) | +| `project-root.cjs` | 4 つのヒューリスティック(独自の `.planning/` ガード、`sub_repos` 設定、`multiRepo` フラグ、`.git` ヒューリスティック)を使って開始ディレクトリからプロジェクトルートを解決 | +| `profile-output.cjs` | プロファイルレンダリング、USER-PROFILE.md と dev-preferences.md の生成 | +| `profile-pipeline.cjs` | ユーザー行動プロファイリングデータパイプライン、セッションファイルスキャン | +| `prompt-budget.cjs` | レビュープロンプト向けの純粋なトークンバジェット計算 — トークンを見積もり、決定論的なトリム優先度を適用(PROJECT.md の head 縮小、比例プラン切り捨て、コンテキスト/調査/要件の削除、ハードフェイルガード)。`review.max_prompt_tokens` 向けの構造化メタデータを返す(#3081) | +| `review-reviewer-selection.cjs` | `/gsd-review` デフォルトレビュアーポリシーと優先度向けのレビュアー選択/正規化ヘルパー | +| `roadmap-command-router.cjs` | `gsd-tools roadmap` 向けの薄い CJS サブコマンドルーターアダプター | +| `roadmap-upgrade.cjs` | レガシーの `Phase N` エントリーをマイルストーンプレフィックス付きの `Phase M-NN` 規約に変換するマイグレーションツール。`computeMigrationPlan` + `applyMigration`(デフォルトのドライランとアトミックロールバック付き) | +| `roadmap.cjs` | ROADMAP.md 解析、フェーズ抽出、プラン進捗 | +| `runtime-artifact-layout.cjs` | ランタイムアーティファクトレイアウトモジュール — サポートされている各ランタイムのアーティファクトディレクトリ形状(コマンド、エージェント、スキル)を解決。ランタイムごとのアーティファクト配置の単一ソース(#3663) | +| `runtime-name-policy.cjs` | ランタイム名正規化ポリシー — パス構築と表示に使用されるランタイム識別子の標準トークンサニタイゼーション | +| `runtime-homes.cjs` | 標準ランタイム → グローバル設定/スキルディレクトリマッピング。Hermes ネストレイアウトと Cline ルールベース除外を含む全 15 ランタイムの一流サポート(#3126) | +| `runtime-slash.cjs` | ランタイム対応スラッシュコマンドフォーマッター — ユーザー向け出力と永続化されたアーティファクトで `/gsd-`(スキルベースのランタイム)と `$gsd-`(codex)を出力する単一ソース(#3584) | +| `schema-detect.cjs` | ORM パターンのスキーマドリフト検出(Prisma、Drizzle、Supabase、TypeORM、Payload)。`detectSchemaFiles`、`detectSchemaOrm`、`checkSchemaDrift`、`SCHEMA_PATTERNS`、`ORM_INFO` をエクスポート | +| `secrets.cjs` | インテグレーションキー向けのシークレット設定マスキング規約(`****`)。`SECRET_CONFIG_KEYS`、`isSecretKey`、`maskSecret`、`maskIfSecret` をエクスポート | +| `semver-compare.cjs` | 共有 semver 比較ポリシーヘルパー(`compareSemverCore`、stable-triplet バリデーション、正規化タプル解析)。更新チェックフック、statusline dev-install 検出、changeset 抽出範囲ロジックで使用(#10) | +| `security.cjs` | パストラバーサル防止、プロンプトインジェクション検出、安全な JSON/シェルヘルパー | +| `shell-command-projection.cjs` | マネージドフック直列化のためのランタイム対応シェルコマンドプロジェクション: ランタイム/プラットフォームによる PowerShell コールオペレーターの使用を決定し、Windows スクリプトパストークンを正規化 | +| `state-command-router.cjs` | `gsd-tools state` 向けの薄い CJS サブコマンドルーターアダプター | +| `state.cjs` | STATE.md 解析、更新、進行、メトリクス | +| `state-document.cjs` | 純粋な STATE.md フィールド抽出、置換、ステータス正規化、進捗計算トランスフォーム | +| `surface.cjs` | ランタイムサーフェスモジュール — インストール時プロファイルマーカーとは独立してランタイムの有効/無効サーフェス状態を管理(ADR-0011 フェーズ 2) | +| `task-command-router.cjs` | `gsd-tools task` 向けの薄い CJS サブコマンドルーターアダプター | +| `template.cjs` | 変数置換によるテンプレート選択と穴埋め | +| `uat.cjs` | UAT ファイル解析、検証負債追跡、audit-uat サポート | +| `ui-safety-gate.cjs` | シェルフリーのワード境界 UI トークン検出器(#3706、#3718)。フェーズセクションテキストを標準入力から読み込み、0(UI 発見)または 1(UI なし)で終了。GSD インストーラーが `$RUNTIME_DIR` に配布するために `get-shit-done/bin/lib/` にもデプロイ(#448) | +| `update-context.cjs` | `/gsd:update` 向けの純粋なインストールコンテキストリゾルバー — ランタイム/スコープ/設定ディレクトリ/バージョン検出(LOCAL/GLOBAL/UNKNOWN)。update.md bash からポート。`gsd-tools update-context` を支える(#498) | +| `validate-command-router.cjs` | `gsd-tools validate` 向けの薄い CJS サブコマンドルーターアダプター | +| `validate.cjs` | 純粋なフェーズバリアント正規化ヘルパー(`phaseVariants`、`buildRoadmapPhaseVariants`、`buildNotStartedPhaseVariants`)。`verify.cjs` の W006/W007 チェックで使用。I/O なし、非同期なし | +| `verify-command-router.cjs` | `gsd-tools verify` 向けの薄い CJS サブコマンドルーターアダプター | +| `verify.cjs` | プラン構造、フェーズ完全性、参照、コミットバリデーション | +| `workstream-inventory-builder.cjs` | 純粋なワークストリームインベントリプロジェクションビルダー | +| `workstream-inventory.cjs` | 共有ワークストリームインベントリプロジェクション: 状態フィールド、フェーズ/プラン/サマリーカウント、ロードマップフェーズカウント、アクティブマーカー — 純粋なプロジェクションを `workstream-inventory-builder.cjs` に委任する薄いオーケストレーター | +| `workstream-name-policy.cjs` | 標準ワークストリーム名バリデーション(`isValidActiveWorkstreamName`、`hasInvalidPathSegment`、`validateWorkstreamName`)とスラッグ正規化(`toWorkstreamSlug`) | +| `workstream.cjs` | ワークストリーム CRUD、マイグレーション、セッションスコープのアクティブポインター | +| `worktree-safety.cjs` | ワークツリールート解決と非破壊的プルーンポリシー決定。W017 ヘルスチェックロジックを所有 | + +[`docs/CLI-TOOLS.md`](../CLI-TOOLS.md) はこれらのモジュールのサブセットを説明している場合があります。ファイルシステムと異なる場合は、このテーブルとディレクトリ一覧が正式です。 + +--- + +## フック (14 shipped) + +完全な一覧: `hooks/`。 + +| フック | イベント | 目的 | +|--------|---------|------| +| `gsd-statusline.js` | `statusLine` | モデル、タスク、ディレクトリ、コンテキスト使用率を表示 | +| `gsd-context-monitor.js` | `PostToolUse` / `AfterTool` | 残量 35%/25% でエージェント向けコンテキスト警告を注入 | +| `gsd-check-update.js` | `SessionStart` | 新しい GSD バージョンのバックグラウンドチェック | +| `gsd-check-update-worker.js` | (worker) | check-update のバックグラウンドワーカーヘルパー | +| `gsd-update-banner.js` | `SessionStart` | GSD statusline を使用していない場合に更新の可用性を表示するオプトインバナー(PR #2795) | +| `gsd-prompt-guard.js` | `PreToolUse` | `.planning/` への書き込みのプロンプトインジェクションパターンをスキャン(アドバイザリー) | +| `gsd-workflow-guard.js` | `PreToolUse` | GSD ワークフローコンテキスト外のファイル編集を検出(アドバイザリー、オプトイン) | +| `gsd-read-guard.js` | `PreToolUse` | 未読ファイルへの Edit/Write を防ぐアドバイザリーガード | +| `gsd-read-injection-scanner.js` | `PostToolUse` | ツール Read 結果のプロンプトインジェクションパターンをスキャン(v1.36+、PR #2201) | +| `gsd-worktree-path-guard.js` | `PreToolUse` | ワークツリールート外の絶対パスを持つ Edit/Write/MultiEdit をハードブロック(PR #579、#260) | +| `gsd-session-state.sh` | `PostToolUse` | シェルベースランタイム向けのセッション状態追跡 | +| `gsd-validate-commit.sh` | `PostToolUse` | Conventional Commit 適用のためのコミットバリデーション | +| `gsd-phase-boundary.sh` | `PostToolUse` | ワークフロー遷移のためのフェーズ境界検出 | +| `gsd-graphify-update.sh` | `PostToolUse` | メイン HEAD が進んだ後にナレッジグラフを自動再ビルド(オプトイン、デフォルトオフ — #3347) | + +--- + +## メンテナンス + +- 新しいコマンド、エージェント、ワークフロー、リファレンス、CLI モジュール、またはフックが出荷される際は、リリース前に対応するセクションをここで更新してください。 +- `tests/` 配下のドリフトガードテスト(上記「このファイルの使い方」を参照)は、出荷されたすべてのファイルがこのインベントリに列挙されていることをアサートします。対応する行のない新しいファイルは CI で失敗します。 +- ファイルシステムが `docs/ARCHITECTURE.md` の数値や厳選されたサブセットドキュメント(例: `docs/AGENTS.md` のプライマリロスター)と乖離した場合は、このファイルが正式なソースです。 + +## Related + +- [Commands](COMMANDS.md) — ユーザー向けコマンドリファレンス +- [Architecture](ARCHITECTURE.md) — サーフェスがどのように組み合わさるか +- [docs index](README.md) diff --git a/docs/ja-JP/README.md b/docs/ja-JP/README.md index 18e05cab1..96a7174da 100644 --- a/docs/ja-JP/README.md +++ b/docs/ja-JP/README.md @@ -1,27 +1,69 @@ # GSD Core ドキュメント -GSD Core(Git. Ship. Done.)の包括的なドキュメントです。GSD Core は、AI コーディングエージェント向けのメタプロンプティング、コンテキストエンジニアリング、仕様駆動開発システムです。 +ドキュメントは 4 つの象限で構成されています。**チュートリアル**は実践で学ぶ、**ハウツーガイド**は特定のタスクを解決する、**リファレンス**は信頼できる情報を示す、**解説**はコンセプトと設計上の決定を探求する。 -## ドキュメント一覧 +言語バージョン: [English](../) · [Português (pt-BR)](../pt-BR/README.md) · **日本語** · [简体中文](../zh-CN/README.md) · [한국어](../ko-KR/README.md) -| ドキュメント | 対象読者 | 説明 | -|------------|---------|------| -| [アーキテクチャ](ARCHITECTURE.md) | コントリビューター、上級ユーザー | システムアーキテクチャ、エージェントモデル、データフロー、内部設計 | -| [機能リファレンス](FEATURES.md) | 全ユーザー | 全機能の詳細ドキュメントと要件 | -| [コマンドリファレンス](COMMANDS.md) | 全ユーザー | 全コマンドの構文、フラグ、オプション、使用例 | -| [設定リファレンス](CONFIGURATION.md) | 全ユーザー | 設定スキーマ、ワークフロートグル、モデルプロファイル、Git ブランチ | -| [CLI ツールリファレンス](CLI-TOOLS.md) | コントリビューター、エージェント作成者 | CJS `gsd-tools.cjs` と `gsd-tools.cjs query` 가이드 のガイド | -| [エージェントリファレンス](AGENTS.md) | コントリビューター、上級ユーザー | 全18種の専門エージェント — 役割、ツール、スポーンパターン | -| [ユーザーガイド](USER-GUIDE.md) | 全ユーザー | ワークフローのウォークスルー、トラブルシューティング、リカバリー | -| [コンテキストモニター](context-monitor.md) | 全ユーザー | コンテキストウィンドウ監視フックのアーキテクチャ | -| [ディスカスモード](workflow-discuss-mode.md) | 全ユーザー | discuss フェーズにおける assumptions モードと interview モード | +--- -## クイックリンク +## チュートリアル -- **v1.39 の新機能:** `--minimal` インストールプロファイル(≥94% コールドスタート削減)、`/gsd-phase --edit`、マージ後ビルド & テストゲート、`review.models.` ランタイム別レビューモデル、ワークストリーム設定の継承、手動カナリアリリースワークフロー、スキル統合(86 → 59) -- **はじめに:** [README](../README.md) → インストール → `/gsd-new-project` -- **ワークフロー完全ガイド:** [ユーザーガイド](USER-GUIDE.md) -- **コマンド一覧:** [コマンドリファレンス](COMMANDS.md) -- **GSD の設定:** [設定リファレンス](CONFIGURATION.md) -- **システム内部の仕組み:** [アーキテクチャ](ARCHITECTURE.md) -- **コントリビュートや拡張:** [CLI ツールリファレンス](CLI-TOOLS.md) + [エージェントリファレンス](AGENTS.md) +- [はじめてのプロジェクト](tutorials/your-first-project.md) — インストールから最初のフェーズ出荷まで、確実な一本道 +- [既存コードベースのオンボーディング](tutorials/onboarding-an-existing-codebase.md) — ブラウンフィールドのリポジトリに GSD Core を導入する + +--- + +## How-to guides + +- [ランタイムへのインストール](how-to/install-on-your-runtime.md) — サポートされる全 15 ランタイムのランタイム別インストール手順 +- [フェーズを議論する](how-to/discuss-a-phase.md) — 計画を始める前に実装上の決定事項を記録する +- [フェーズを計画する](how-to/plan-a-phase.md) — リサーチを実行し、作業を分解し、計画の品質を検証する +- [フェーズを実行する](how-to/execute-a-phase.md) — 新鮮なコンテキストのサブエージェントで並列ウェーブとして計画を実行する +- [検証と出荷](how-to/verify-and-ship.md) — 完成した作業を確認し、障害を診断し、PR を作成する +- [フェーズを自律的に実行する](how-to/run-phases-autonomously.md) — 無人フェーズ実行に自律モードを使用する +- [クイックおよびファストタスクを処理する](how-to/handle-quick-and-fast-tasks.md) — フェーズループ外のアドホック作業に `/gsd-quick` と `/gsd-fast` を使用する +- [モデルプロファイルを設定する](how-to/configure-model-profiles.md) — クオリティ・バランス・バジェットのモデルティア間を切り替える +- [クロス AI レビューをセットアップする](how-to/set-up-cross-ai-review.md) — プライマリエージェントが生成したコードをレビューする 2 番目の AI を設定する +- [ワークストリームで並列作業する](how-to/work-in-parallel-with-workstreams.md) — ワークストリームを使って独立した作業ラインを同時に実行する +- [ワークスペースで作業を隔離する](how-to/isolate-work-with-workspaces.md) — ワークスペースを使って実験的またはリスクのある変更をサンドボックス化する +- [失敗した実行をデバッグする](how-to/debug-a-failed-execution.md) — 壊れたまたは不完全なフェーズ実行を診断・回復する +- [スパイクとスケッチ](how-to/spike-and-sketch.md) — 計画を確定する前の探索的作業に `/gsd-spike` と `/gsd-sketch` を使用する +- [UI フェーズを設計する](how-to/design-a-ui-phase.md) — フロントエンドおよびビジュアル作業に UI フェーズループを使用する +- [トラッカーイシューから GSD を動かす](how-to/drive-gsd-from-a-tracker-issue.md) — GitHub、Linear、または Jira のイシューからフェーズを開始する +- [GSD 2 から移行する](how-to/migrate-from-gsd-2.md) — 既存の GSD 2 プロジェクトを GSD Core にアップグレードする +- [GSD をアップデートする](how-to/update-gsd.md) — インストーラーを再実行して最新リリースを取得する +- [回復とトラブルシューティング](how-to/recover-and-troubleshoot.md) — よくある問題を修正し、コンテキストを再構築し、アンインストールする + +--- + +## リファレンス + +- [コマンド](COMMANDS.md) — フラグと例を含むすべてのコマンド +- [設定](CONFIGURATION.md) — 完全な設定スキーマ、モデルプロファイル、Git ブランチ戦略 +- [CLI ツール](CLI-TOOLS.md) — ワークフローとエージェント向け `gsd-tools.cjs` プログラマティック API +- [機能](FEATURES.md) — 完全な機能インデックス +- [インベントリ](INVENTORY.md) — インストール済みスキルとサーフェスマップ +- [STATE.md スキーマ](reference/state-md.md) — `.planning/STATE.md` のフィールド別リファレンス +- [CONTEXT.md スキーマ](reference/context-md.md) — `.planning/phases//CONTEXT.md` のフィールド別リファレンス +- [PLAN.md スキーマ](reference/plan-md.md) — `.planning/phases//PLAN.md` のフィールド別リファレンス +- [計画アーティファクト](reference/planning-artifacts.md) — すべての `.planning/` ファイルとその役割 + +--- + +## 解説 + +- [コンテキストエンジニアリング](explanation/context-engineering.md) — コンテキストの腐敗がどのように形成され、GSD Core がどのように防ぐか +- [フェーズループ](explanation/the-phase-loop.md) — Discuss → Plan → Execute → Verify → Ship サイクルの設計理念 +- [マルチエージェントオーケストレーション](explanation/multi-agent-orchestration.md) — サブエージェントがどのように生成・スコープ設定・調整されるか +- [セキュリティモデル](explanation/security-model.md) — 信頼境界、パーミッション、安全な自動化 +- [アーキテクチャ](ARCHITECTURE.md) — システムアーキテクチャ、エージェントモデル、データフロー +- [ディスカスモード](workflow-discuss-mode.md) — `/gsd-discuss-phase` の assumptions モードと interview モード +- [コンテキストモニタリング](context-monitor.md) — コンテキストウィンドウ監視フックのアーキテクチャ +- [イシュー駆動オーケストレーション](issue-driven-orchestration.md) — 既存のプリミティブを使ってトラッカーイシューから GSD を動かすレシピ + +--- + +## Related + +- [ルート README](../README.md) — ランディングページ、クイックスタート、ドキュメント概要 +- [変更履歴](../../CHANGELOG.md) — リリース履歴 diff --git a/docs/ja-JP/USER-GUIDE.md b/docs/ja-JP/USER-GUIDE.md index c6ef424b5..0982dce70 100644 --- a/docs/ja-JP/USER-GUIDE.md +++ b/docs/ja-JP/USER-GUIDE.md @@ -1,29 +1,90 @@ # GSD ユーザーガイド -ワークフロー、トラブルシューティング、設定の詳細なリファレンスです。クイックスタートの設定については、[README](../README.md) をご覧ください。 +GSD Core のナラティブ形式の補足ガイドです。まずここで全体像を把握し、各専用ドキュメントへのリンクをたどってください。 + +> **GSD Core のドキュメントは [Diataxis](https://diataxis.fr) の体系で整理されています。** +> 目的別にブラウズ: [チュートリアル](README.md#tutorials) · [ハウツーガイド](README.md#how-to-guides) · [リファレンス](README.md#reference) · [解説](README.md#explanation) · [ドキュメント索引](README.md) --- ## 目次 -- [ワークフロー図](#ワークフロー図) -- [UI デザインコントラクト](#ui-デザインコントラクト) -- [バックログとスレッド](#バックログとスレッド) -- [ワークストリーム](#ワークストリーム) -- [セキュリティ](#セキュリティ) -- [コマンドリファレンス](#コマンドリファレンス) -- [設定リファレンス](#設定リファレンス) -- [使用例](#使用例) -- [トラブルシューティング](#トラブルシューティング) -- [リカバリークイックリファレンス](#リカバリークイックリファレンス) +- [スラッシュコマンドの形式](#slash-command-forms-hyphen-vs-colon) +- [名前空間ルーティング入門](#namespace-routing-primer-gsdnamespace-v140) +- [プロジェクトライフサイクル概要](#project-lifecycle-overview) +- [ワークフロー図](#workflow-diagrams) +- [UI デザインコントラクト](#ui-design-contract) +- [スパイクとスケッチ](#spiking--sketching) +- [バックログとスレッド](#backlog--threads) +- [ワークストリームとワークスペース](#workstreams--workspaces) +- [セキュリティ](#security) +- [使用例](#usage-examples) +- [トラブルシューティング](#troubleshooting) +- [リカバリークイックリファレンス](#recovery-quick-reference) +- [プロジェクトファイル構造](#project-file-structure) +- [関連](#related) + +GitHub / Linear / Jira のイシューから GSD を直接操作する方法については、 +[Issue-driven orchestration](issue-driven-orchestration.md) ガイドを参照してください。 +トラッカーのイシューを、既存の GSD プリミティブを用いた workspace → discuss → plan → +execute → verify → review → ship ループにマッピングするレシピです。 --- -## ワークフロー図 +## スラッシュコマンドの形式(ハイフン形式 vs コロン形式) {#slash-command-forms-hyphen-vs-colon} + +GSD はサポートされているすべてのランタイムに **同一のスキルセット** を提供しますが、スラッシュ形式には 2 種類の表記が存在します。 + +- **ハイフン形式** — `/gsd-command-name` — Claude Code、Copilot、OpenCode、Kilo、Cursor、Windsurf、Augment、Antigravity、Trae で使用されます。 +- **コロン形式** — `/gsd:command-name` — **Gemini CLI 専用**。Gemini はすべてのプラグインコマンドをプラグイン ID 配下に名前空間分けするため、インストール時に `--gemini` フラグを指定するとコマンドディレクトリ内の本文参照とコマンドファイルがすべてコロン形式に書き換えられます。 + +どちらを選ぶ必要はありません — インストーラーが対象の各ランタイムのコマンドディレクトリに正しい形式を書き込みます。Gemini 端末でウォークスルーを実行する場合は、スラッシュコマンドを読む際に `gsd` 後のハイフンをコロンに置き換えてください。 + +## 名前空間ルーティング入門(`gsd:`、v1.40) {#namespace-routing-primer-gsdnamespace-v140} + +v1.40 では、階層的ルーティングへのファーストステージエントリーポイントとして **6 つの名前空間メタスキル** が追加されました。これにより、スキル一覧のトークンコストを低く抑えながら(86 スキルのフラットな列挙の約 2,150 トークンに対し、6 つのルーターで約 120 トークン)、各具体的なサブスキルは直接呼び出し可能なままです。各名前空間ルーターの本文には、ユーザーの意図を正しい具体的サブスキルにマッピングするルーティングテーブルが含まれています。 + +| 名前空間 | ルーター | ルーティング先 | +|-----------|--------|-----------| +| フェーズパイプライン | `/gsd-workflow` | discuss / plan / execute / verify / phase / progress | +| プロジェクトライフサイクル | `/gsd-project` | マイルストーン、監査、サマリー | +| 品質ゲート | `/gsd-quality` | コードレビュー、デバッグ、監査、セキュリティ、評価、UI | +| コードベースインテリジェンス | `/gsd-context` | マップ、グラフ化、ドキュメント、学習内容 | +| 管理 | `/gsd-manage` | 設定、ワークスペース、ワークストリーム、スレッド、更新、ship、受信トレイ | +| 探索とキャプチャ | `/gsd-ideate` | 探索、スケッチ、スパイク、仕様、キャプチャ | + +名前空間ルーターを自分でタイプする必要はほぼありません。その価値はモデルが適切なサブスキルを見つけるために使うルーティングレイヤーにあります — システムプロンプトが 86 エントリではなく 6 エントリを列挙できるようにするために存在しています。具体的なコマンドがわかっている場合(例: `/gsd-plan-phase`)は、直接呼び出してください。 + +--- + +## プロジェクトライフサイクル概要 {#project-lifecycle-overview} + +GSD のコアループは **discuss → plan → execute → verify → ship** であり、フェーズごとに繰り返されます。例示出力、作成されるファイル、使用されるフラグを含むステップバイステップのウォークスルーは専用チュートリアルに記載されています。 + +[最初のプロジェクト](tutorials/your-first-project.md) を参照してください。 + +新しいマイルストーンを開始する前に既存のコードベースをオンボーディングする方法については、[既存のコードベースのオンボーディング](tutorials/onboarding-an-existing-codebase.md) を参照してください。 + +**主要フラグ一覧:** + +| フラグ | コマンド | 使用場面 | +| ---- | ------- | ----------- | +| `--auto` | `/gsd-new-project` | インタラクティブな質問をスキップし、PRD ファイルから取り込む | +| `--research` | `/gsd-quick` | アドホックタスクにリサーチエージェントを追加する | +| `--validate` | `/gsd-quick` | プランチェックと実行後の検証を追加する | +| `--chain` | `/gsd-discuss-phase` | discuss → plan → execute を停止なしで自動チェーンする | +| `--skip-research` | `/gsd-plan-phase` | ドメインが既知の場合にリサーチエージェントをスキップする | +| `--draft` | `/gsd-ship` | レビュー準備完了ではなくドラフト PR を作成する | + +すべてのフラグを含む完全なコマンドリファレンスは [`docs/COMMANDS.md`](COMMANDS.md) を、設定オプション(モデルプロファイル、ワークフローエージェント、git ブランチ戦略)は [`docs/CONFIGURATION.md`](CONFIGURATION.md) を参照してください。 + +--- + +## ワークフロー図 {#workflow-diagrams} ### プロジェクト全体のライフサイクル -``` +```text ┌──────────────────────────────────────────────────┐ │ NEW PROJECT │ │ /gsd-new-project │ @@ -75,9 +136,9 @@ └──────────────────────┘ ``` -### プランニングエージェントの連携 +### プランニングエージェントの協調 -``` +```text /gsd-plan-phase N │ ├── Phase Researcher (x4 parallel) @@ -111,21 +172,17 @@ ### バリデーションアーキテクチャ(Nyquist レイヤー) -plan-phase のリサーチ時に、GSD はコードが書かれる前に各フェーズ要件に対する自動テストカバレッジをマッピングします。これにより、Claude のエグゼキューターがタスクをコミットした際に、数秒以内で検証できるフィードバックメカニズムが既に存在することが保証されます。 +プランフェーズのリサーチ中、GSD はコードが書かれる前に各フェーズ要件に対して自動テストカバレッジをマッピングします。リサーチャーは既存のテストインフラを検出し、各要件を特定のテストコマンドにマッピングし、実装開始前に作成しなければならないテスト足場(Wave 0 タスク)を識別します。プランチェッカーはこれを 8 番目の検証ディメンションとして強制します: 自動検証コマンドが不足しているタスクを含むプランは承認されません。 -リサーチャーは既存のテストインフラを検出し、各要件を特定のテストコマンドにマッピングし、実装開始前に作成が必要なテストスキャフォールディングを特定します(Wave 0 タスク)。 +**出力:** `{phase}-VALIDATION.md` — フェーズのフィードバックコントラクト。 -プランチェッカーはこれを8番目の検証次元として強制します:自動検証コマンドが不足しているタスクを含むプランは承認されません。 +**無効化:** テストインフラが焦点でないラピッドプロトタイピングフェーズでは、`/gsd-settings` で `workflow.nyquist_validation: false` を設定してください。 -**出力:** `{phase}-VALIDATION.md` -- フェーズのフィードバックコントラクト。 +### 遡及バリデーション(`/gsd-validate-phase`) -**無効化:** テストインフラが重視されないラピッドプロトタイピングフェーズでは、`/gsd-settings` で `workflow.nyquist_validation: false` を設定してください。 +Nyquist バリデーションが存在する前に実行されたフェーズ、またはテストスイートのみを持つ既存のコードベースに対し、カバレッジのギャップを遡及的に監査して補完します。 -### 遡及バリデーション (`/gsd-validate-phase`) - -Nyquist バリデーションが存在する前に実行されたフェーズ、または従来のテストスイートのみを持つ既存コードベースに対して、遡及的に監査しカバレッジのギャップを埋めます: - -``` +```text /gsd-validate-phase N | +-- Detect state (VALIDATION.md exists? SUMMARY.md exists?) @@ -144,203 +201,31 @@ Nyquist バリデーションが存在する前に実行されたフェーズ、 +-- PARTIAL -> some gaps escalated to manual-only ``` -オーディターは実装コードを変更しません — テストファイルと VALIDATION.md のみを変更します。テストが実装のバグを発見した場合、対処が必要なエスカレーションとしてフラグが立てられます。 +オーディターは実装コードを変更しません — テストファイルと VALIDATION.md のみです。テストが実装バグを検出した場合、対応すべきエスカレーションとして報告されます。 -**使用タイミング:** Nyquist が有効化される前にプランニングされたフェーズを実行した後、または `/gsd-audit-milestone` が Nyquist コンプライアンスのギャップを検出した後。 +### 前提条件ディスカッションモード -### 前提確認ディスカッションモード +デフォルトでは、`/gsd-discuss-phase` は実装の好みに関するオープンエンドな質問をします。前提条件モードではこれが逆転します: GSD がまずコードベースを読み込み、フェーズをどのように構築するかについての構造化された前提条件を提示し、修正点のみを尋ねます。 -デフォルトでは、`/gsd-discuss-phase` は実装の好みについてオープンエンドな質問を行います。前提確認モードではこれを反転させます:GSD がまずコードベースを読み込み、フェーズの構築方法に関する構造化された前提を提示し、修正が必要な箇所のみを確認します。 +**有効化:** `/gsd-settings` 経由で `workflow.discuss_mode` を `'assumptions'` に設定してください。 -**有効化:** `/gsd-settings` で `workflow.discuss_mode` を `'assumptions'` に設定します。 +詳細なディスカッションモードのリファレンスは [docs/workflow-discuss-mode.md](workflow-discuss-mode.md) を参照してください。 -**動作の仕組み:** -1. PROJECT.md、コードベースマッピング、既存の規約を読み込む -2. 前提の構造化リストを生成(技術選定、パターン、ファイル配置) -3. 前提を提示し、確認・修正・補足を求める -4. 確認された前提から CONTEXT.md を作成 +### 意思決定カバレッジゲート -**使用タイミング:** -- コードベースを熟知している経験豊富な開発者 -- オープンエンドな質問が作業を遅らせる高速イテレーション -- パターンが確立されていて予測可能なプロジェクト +ディスカッションフェーズは実装上の意思決定を CONTEXT.md の `` ブロック内に番号付き箇条書き(`- **D-01:** …`)として記録します。2 つのゲートによりこれらの意思決定がプランおよびシップされたコードに確実に反映されます。 -ディスカッションモードの完全なリファレンスは [docs/workflow-discuss-mode.md](../workflow-discuss-mode.md) をご覧ください。 +**プランフェーズ変換ゲート(ブロッキング)。** プランニング後、GSD はすべての追跡可能な意思決定が少なくとも 1 つのプランの `must_haves`、`truths`、または本文に含まれるまでフェーズ計画済みのマークを拒否します。 ---- +**検証フェーズバリデーションゲート(非ブロッキング)。** 検証中、GSD はプラン、SUMMARY.md、変更されたファイル、および直近のコミットメッセージで各追跡可能な意思決定を検索します。見落としは警告セクションとして VERIFICATION.md に記録されますが、検証ステータスは変更されません。 -## UI デザインコントラクト +**意思決定のオプトアウト。** `` 内の `### Claude's Discretion` 見出し配下に移動するか、タグを付けてください: `- **D-08 [informational]:** …`、`- **D-09 [folded]:** …`、`- **D-10 [deferred]:** …`。 -### 背景 +**ゲートの無効化。** `.planning/config.json`(または `/gsd-settings` 経由)で `workflow.context_coverage_gate: false` を設定してください。デフォルトは `true` です。 -AI 生成のフロントエンドの見た目が一貫しないのは、Claude Code の UI 能力が低いからではなく、実行前にデザインコントラクトが存在しなかったためです。共通のスペーシングスケール、カラーコントラクト、コピーライティング基準なしに構築された5つのコンポーネントは、5つのわずかに異なるビジュアル上の判断を生み出します。 +### 実行ウェーブの協調 -`/gsd-ui-phase` はプランニング前にデザインコントラクトを確定させます。`/gsd-ui-review` は実行後に結果を監査します。 - -### コマンド - -| コマンド | 説明 | -|---------|-------------| -| `/gsd-ui-phase [N]` | フロントエンドフェーズ用の UI-SPEC.md デザインコントラクトを生成 | -| `/gsd-ui-review [N]` | 実装済み UI の遡及的6ピラービジュアル監査 | - -### ワークフロー:`/gsd-ui-phase` - -**実行タイミング:** `/gsd-discuss-phase` の後、`/gsd-plan-phase` の前 — フロントエンド/UI 作業を含むフェーズで使用。 - -**フロー:** -1. CONTEXT.md、RESEARCH.md、REQUIREMENTS.md を読み込んで既存の決定事項を確認 -2. デザインシステムの状態を検出(shadcn components.json、Tailwind 設定、既存トークン) -3. shadcn 初期化ゲート — React/Next.js/Vite プロジェクトで未設定の場合、初期化を提案 -4. 未回答のデザインコントラクト質問のみを確認(スペーシング、タイポグラフィ、カラー、コピーライティング、レジストリの安全性) -5. `{phase}-UI-SPEC.md` をフェーズディレクトリに書き出す -6. 6つの次元で検証(コピーライティング、ビジュアル、カラー、タイポグラフィ、スペーシング、レジストリの安全性) -7. BLOCKED の場合はリビジョンループ(最大2回) - -**出力:** `.planning/phases/{phase-dir}/` 内の `{padded_phase}-UI-SPEC.md` - -### ワークフロー:`/gsd-ui-review` - -**実行タイミング:** `/gsd-execute-phase` または `/gsd-verify-work` の後 — フロントエンドコードを含むプロジェクトで使用。 - -**スタンドアロン:** GSD 管理プロジェクトに限らず、あらゆるプロジェクトで動作します。UI-SPEC.md が存在しない場合は、抽象的な6ピラー基準に基づいて監査します。 - -**6ピラー(各1-4点):** -1. コピーライティング — CTA ラベル、空状態、エラー状態 -2. ビジュアル — フォーカルポイント、ビジュアルヒエラルキー、アイコンのアクセシビリティ -3. カラー — アクセントカラーの使用規律、60/30/10 準拠 -4. タイポグラフィ — フォントサイズ/ウェイト制約の遵守 -5. スペーシング — グリッド整列、トークンの一貫性 -6. エクスペリエンスデザイン — ローディング/エラー/空状態のカバレッジ - -**出力:** フェーズディレクトリ内の `{padded_phase}-UI-REVIEW.md`(スコアと優先度の高い修正点トップ3)。 - -### 設定 - -| 設定 | デフォルト | 説明 | -|---------|---------|-------------| -| `workflow.ui_phase` | `true` | フロントエンドフェーズ用の UI デザインコントラクトを生成 | -| `workflow.ui_safety_gate` | `true` | plan-phase 時にフロントエンドフェーズで /gsd-ui-phase の実行を促す | - -どちらも「未設定=有効」パターンに従います。`/gsd-settings` から無効化できます。 - -### shadcn の初期化 - -React/Next.js/Vite プロジェクトの場合、UI リサーチャーは `components.json` が見つからない場合に shadcn の初期化を提案します。フローは以下の通りです: - -1. `ui.shadcn.com/create` にアクセスしてプリセットを設定 -2. プリセット文字列をコピー -3. `npx shadcn init --preset {paste}` を実行 -4. プリセットはデザインシステム全体をエンコード — カラー、ボーダーラディウス、フォント - -プリセット文字列は GSD の第一級プランニングアーティファクトとなり、フェーズやマイルストーンをまたいで再現可能です。 - -### レジストリの安全性ゲート - -サードパーティの shadcn レジストリは任意のコードを注入できます。安全性ゲートでは以下が必要です: -- `npx shadcn view {component}` — インストール前に確認 -- `npx shadcn diff {component}` — 公式との比較 - -`workflow.ui_safety_gate` 設定トグルで制御します。 - -### スクリーンショットの保存 - -`/gsd-ui-review` は Playwright CLI を使用してスクリーンショットを `.planning/ui-reviews/` にキャプチャします。バイナリファイルが git に含まれないよう、`.gitignore` が自動的に作成されます。スクリーンショットは `/gsd-complete-milestone` 時にクリーンアップされます。 - ---- - -## バックログとスレッド - -### バックログパーキングロット - -アクティブなプランニングの準備ができていないアイデアは、999.x 番号を使用してバックログに格納され、アクティブなフェーズシーケンスの外に保持されます。 - -``` -/gsd-capture --backlog "GraphQL API layer" # Creates 999.1-graphql-api-layer/ -/gsd-capture --backlog "Mobile responsive" # Creates 999.2-mobile-responsive/ -``` - -バックログアイテムは完全なフェーズディレクトリを取得するため、`/gsd-discuss-phase 999.1` でアイデアをさらに探索したり、準備が整ったら `/gsd-plan-phase 999.1` を使用できます。 - -**レビューとプロモーション** は `/gsd-review-backlog` で行います — すべてのバックログアイテムを表示し、プロモーション(アクティブシーケンスへの移動)、保持(バックログに残す)、または削除を選択できます。 - -### シード - -シードは、トリガー条件を持つ将来を見据えたアイデアです。バックログアイテムとは異なり、適切なマイルストーンが到来すると自動的に表面化されます。 - -``` -/gsd-capture --seed "Add real-time collab when WebSocket infra is in place" -``` - -シードは完全な WHY と表面化タイミングを保持します。`/gsd-new-milestone` はすべてのシードをスキャンし、一致するものを提示します。 - -**保存場所:** `.planning/seeds/SEED-NNN-slug.md` - -### 永続コンテキストスレッド - -スレッドは、複数のセッションにまたがるが特定のフェーズに属さない作業のための、軽量なクロスセッション知識ストアです。 - -``` -/gsd-thread # List all threads -/gsd-thread fix-deploy-key-auth # Resume existing thread -/gsd-thread "Investigate TCP timeout" # Create new thread -``` - -スレッドは `/gsd-pause-work` より軽量です — フェーズ状態やプランコンテキストはありません。各スレッドファイルには Goal、Context、References、Next Steps セクションが含まれます。 - -スレッドは成熟した段階でフェーズ (`/gsd-phase`) やバックログアイテム (`/gsd-capture --backlog`) にプロモーションできます。 - -**保存場所:** `.planning/threads/{slug}.md` - ---- - -## ワークストリーム - -ワークストリームを使うと、状態の衝突なしに複数のマイルストーン領域で並行作業できます。各ワークストリームは独立した `.planning/` 状態を持つため、切り替え時に進捗が上書きされることはありません。 - -**使用タイミング:** 異なる関心領域にまたがるマイルストーン機能(例:バックエンド API とフロントエンドダッシュボード)に取り組んでいて、コンテキストの混在なしに独立してプランニング・実行・ディスカッションしたい場合。 - -### コマンド - -| コマンド | 用途 | -|---------|---------| -| `/gsd-workstreams create ` | 独立したプランニング状態を持つ新しいワークストリームを作成 | -| `/gsd-workstreams switch ` | アクティブコンテキストを別のワークストリームに切り替え | -| `/gsd-workstreams list` | すべてのワークストリームとアクティブなものを表示 | -| `/gsd-workstreams complete ` | ワークストリームを完了としてマークし、状態をアーカイブ | - -### 動作の仕組み - -各ワークストリームは独自の `.planning/` ディレクトリサブツリーを維持します。ワークストリームを切り替えると、GSD はアクティブなプランニングコンテキストを入れ替え、`/gsd-progress`、`/gsd-discuss-phase`、`/gsd-plan-phase` などのコマンドがそのワークストリームの状態に対して動作するようにします。 - -これは `/gsd-workspace --new`(別のリポジトリワークツリーを作成)より軽量です。ワークストリームは同じコードベースと git 履歴を共有しつつ、プランニングアーティファクトを分離します。 - ---- - -## セキュリティ - -### 多層防御(v1.27) - -GSD はマークダウンファイルを生成し、それが LLM のシステムプロンプトとなります。これは、プランニングアーティファクトに流入するユーザー制御テキストが、潜在的な間接プロンプトインジェクションベクターであることを意味します。v1.27 では集中型セキュリティ強化が導入されました: - -**パストラバーサル防止:** -すべてのユーザー提供ファイルパス(`--text-file`、`--prd`)は、プロジェクトディレクトリ内に解決されることが検証されます。macOS の `/var` → `/private/var` シンボリックリンク解決にも対応しています。 - -**プロンプトインジェクション検出:** -`security.cjs` モジュールは、ユーザー提供テキストがプランニングアーティファクトに入る前に、既知のインジェクションパターン(ロールオーバーライド、インストラクションバイパス、system タグインジェクション)をスキャンします。 - -**ランタイムフック:** -- `gsd-prompt-guard.js` — `.planning/` への Write/Edit 呼び出しをインジェクションパターンでスキャン(常時有効、アドバイザリーのみ) -- `gsd-workflow-guard.js` — GSD ワークフローコンテキスト外でのファイル編集を警告(`hooks.workflow_guard` でオプトイン) - -**CI スキャナー:** -`prompt-injection-scan.test.cjs` は、すべてのエージェント、ワークフロー、コマンドファイルに埋め込まれたインジェクションベクターをスキャンします。テストスイートの一部として実行されます。 - ---- - -### 実行ウェーブの調整 - -``` +```text /gsd-execute-phase N │ ├── Analyze plan dependencies @@ -353,274 +238,281 @@ GSD はマークダウンファイルを生成し、それが LLM のシステ │ └── Executor C (fresh 200K context) -> commit │ └── Verifier - └── Check codebase against phase goals - │ - ├── PASS -> VERIFICATION.md (success) - └── FAIL -> Issues logged for /gsd-verify-work -``` - -### ブラウンフィールドワークフロー(既存コードベース) - -``` - /gsd-map-codebase - │ - ├── Stack Mapper -> codebase/STACK.md - ├── Arch Mapper -> codebase/ARCHITECTURE.md - ├── Convention Mapper -> codebase/CONVENTIONS.md - └── Concern Mapper -> codebase/CONCERNS.md - │ - ┌───────▼──────────┐ - │ /gsd-new-project │ <- Questions focus on what you're ADDING - └──────────────────┘ + ├── Check codebase against phase goals + ├── Test quality audit (disabled tests, circular patterns, assertion strength) + │ + ├── PASS -> VERIFICATION.md (success) + └── FAIL -> Issues logged for /gsd-verify-work ``` --- -## コマンドリファレンス +## UI デザインコントラクト {#ui-design-contract} -### コアワークフロー +AI が生成するフロントエンドが視覚的に一貫しないのは、Claude Code の UI 能力の問題ではなく、実行前にデザインコントラクトが存在しなかったためです。`/gsd-ui-phase` はプランニング前にデザインコントラクトをロックし、`/gsd-ui-review` は実行後に結果を監査します。 -| コマンド | 用途 | 使用タイミング | -|---------|---------|-------------| -| `/gsd-new-project` | フルプロジェクト初期化:質問、リサーチ、要件定義、ロードマップ | 新規プロジェクトの開始時 | -| `/gsd-new-project --auto @idea.md` | ドキュメントからの自動初期化 | PRD やアイデアドキュメントが準備済みの場合 | -| `/gsd-discuss-phase [N]` | 実装上の決定事項を記録 | プランニング前に、構築方法を決定するため | -| `/gsd-ui-phase [N]` | UI デザインコントラクトを生成 | discuss-phase の後、plan-phase の前(フロントエンドフェーズ) | -| `/gsd-plan-phase [N]` | リサーチ + プランニング + 検証 | フェーズ実行前 | -| `/gsd-execute-phase ` | すべてのプランを並列ウェーブで実行 | プランニング完了後 | -| `/gsd-verify-work [N]` | 自動診断付き手動 UAT | 実行完了後 | -| `/gsd-ship [N]` | 検証済みの作業から PR を作成 | 検証合格後 | -| `/gsd-fast ` | インラインの軽微なタスク — プランニングを完全にスキップ | タイプミス修正、設定変更、小規模リファクタリング | -| `/gsd-progress --next` | 状態を自動検出して次のステップを実行 | いつでも — 「次に何をすべき?」 | -| `/gsd-ui-review [N]` | 遡及的6ピラービジュアル監査 | 実行後または verify-work 後(フロントエンドプロジェクト) | -| `/gsd-audit-milestone` | マイルストーンの完了定義を満たしているか検証 | マイルストーン完了前 | -| `/gsd-complete-milestone` | マイルストーンをアーカイブし、リリースタグを作成 | 全フェーズの検証完了後 | -| `/gsd-new-milestone [name]` | 次のバージョンサイクルを開始 | マイルストーン完了後 | +完全なワークフロー、設定、shadcn の初期化、レジストリ安全ゲートについては [UI フェーズのデザイン](how-to/design-a-ui-phase.md) を参照してください。 -### ナビゲーション +**クイックリファレンス:** -| コマンド | 用途 | 使用タイミング | -|---------|---------|-------------| -| `/gsd-progress` | 状態と次のステップを表示 | いつでも -- 「今どこにいる?」 | -| `/gsd-resume-work` | 前回のセッションからフルコンテキストを復元 | 新しいセッションの開始時 | -| `/gsd-pause-work` | 構造化されたハンドオフを保存(HANDOFF.json + continue-here.md) | フェーズの途中で作業を中断する時 | -| `/gsd-pause-work --report` | 作業内容と成果を含むセッションサマリーを生成 | セッション終了時、ステークホルダーへの共有時 | -| `/gsd-help` | すべてのコマンドを表示 | クイックリファレンス | -| `/gsd-update` | 変更履歴プレビュー付きで GSD を更新 | 新バージョンの確認時 | +| コマンド | 説明 | +| -------------------- | -------------------------------------------------------- | +| `/gsd-ui-phase [N]` | フロントエンドフェーズ用の UI-SPEC.md デザインコントラクトを生成する | +| `/gsd-ui-review [N]` | 実装済み UI の 6 柱ビジュアル監査を遡及的に実行する | -### フェーズ管理 - -| コマンド | 用途 | 使用タイミング | -|---------|---------|-------------| -| `/gsd-phase` | ロードマップに新しいフェーズを追加 | 初期プランニング後にスコープが拡大した場合 | -| `/gsd-phase --insert [N]` | 緊急作業を挿入(小数番号) | マイルストーン中の緊急修正 | -| `/gsd-phase --remove [N]` | 将来のフェーズを削除して番号を振り直す | 機能のスコープ縮小 | -| `/gsd-discuss-phase --assumptions [N]` | Claude の意図するアプローチをプレビュー | プランニング前に方向性を確認 | -| `/gsd-plan-phase --research-phase [N]` | エコシステムの深いリサーチのみ | 複雑または不慣れなドメイン | - -### ブラウンフィールドとユーティリティ - -| コマンド | 用途 | 使用タイミング | -|---------|---------|-------------| -| `/gsd-map-codebase` | 既存コードベースを分析 | 既存コードに対する `/gsd-new-project` の前 | -| `/gsd-quick` | GSD 保証付きのアドホックタスク | バグ修正、小機能、設定変更 | -| `/gsd-debug [desc]` | 永続状態を持つ体系的デバッグ | 何かが壊れた時 | -| `/gsd-forensics` | ワークフロー障害の診断レポート | 状態、アーティファクト、git 履歴が破損していると思われる場合 | -| `/gsd-capture [desc]` | 後でやるアイデアを記録 | セッション中にアイデアが浮かんだ時 | -| `/gsd-capture --list` | 保留中の TODO を一覧表示 | 記録したアイデアのレビュー | -| `/gsd-settings` | ワークフロートグルとモデルプロファイルを設定 | モデル変更、エージェントのトグル | -| `/gsd-config --profile ` | クイックプロファイル切り替え | コスト/品質トレードオフの変更 | -| `/gsd-update --reapply` | アップデート後にローカル変更を復元 | ローカル編集がある場合の `/gsd-update` 後 | - -### コード品質とレビュー - -| コマンド | 用途 | 使用タイミング | -|---------|---------|-------------| -| `/gsd-review --phase N` | 外部 CLI からのクロス AI ピアレビュー | 実行前にプランを検証 | -| `/gsd-pr-branch` | `.planning/` コミットをフィルタリングしたクリーンな PR ブランチ | プランニングフリーの diff で PR を作成する前 | -| `/gsd-audit-uat` | 全フェーズの検証負債を監査 | マイルストーン完了前 | - -### バックログとスレッド - -| コマンド | 用途 | 使用タイミング | -|---------|---------|-------------| -| `/gsd-capture --backlog ` | バックログパーキングロットにアイデアを追加(999.x) | アクティブなプランニングの準備ができていないアイデア | -| `/gsd-review-backlog` | バックログアイテムのプロモーション/保持/削除 | 新マイルストーン前の優先順位付け | -| `/gsd-capture --seed ` | トリガー条件付きの将来を見据えたアイデア | 将来のマイルストーンで表面化すべきアイデア | -| `/gsd-thread [name]` | 永続コンテキストスレッド | フェーズ構造外のクロスセッション作業 | +| 設定 | デフォルト | 説明 | +| ------------------------- | ------- | ----------------------------------------------------------- | +| `workflow.ui_phase` | `true` | フロントエンドフェーズ用の UI デザインコントラクトを生成する | +| `workflow.ui_safety_gate` | `true` | プランフェーズでフロントエンドフェーズに対し /gsd-ui-phase の実行を促す | --- -## 設定リファレンス +## スパイクとスケッチ {#spiking--sketching} -GSD はプロジェクト設定を `.planning/config.json` に保存します。`/gsd-new-project` 時に設定するか、後から `/gsd-settings` で更新できます。 +プランニング前に技術的な実現可能性を検証するには `/gsd-spike` を、デザイン前にビジュアルの方向性を探るには `/gsd-sketch` を使用してください。どちらもアーティファクトを `.planning/` に保存し、ラップアップコンパニオンを介してプロジェクトスキルシステムと統合されます。 -### 完全な config.json スキーマ +完全なワークフローとフロー図は [スパイクとスケッチ](how-to/spike-and-sketch.md) を参照してください。 -```json -{ - "mode": "interactive", - "granularity": "standard", - "model_profile": "balanced", - "planning": { - "commit_docs": true, - "search_gitignored": false - }, - "workflow": { - "research": true, - "plan_check": true, - "verifier": true, - "nyquist_validation": true, - "ui_phase": true, - "ui_safety_gate": true, - "research_before_questions": false, - "discuss_mode": "standard", - "skip_discuss": false - }, - "resolve_model_ids": "anthropic", - "hooks": { - "context_warnings": true, - "workflow_guard": false - }, - "git": { - "branching_strategy": "none", - "phase_branch_template": "gsd/phase-{phase}-{slug}", - "milestone_branch_template": "gsd/{milestone}-{slug}", - "quick_branch_template": null - } -} +**典型的なフロー:** + +```bash +/gsd-spike "SSE vs WebSocket" # Validate the approach +/gsd-spike --wrap-up # Package learnings + +/gsd-sketch "real-time feed UI" # Explore the design +/gsd-sketch --wrap-up # Package decisions + +/gsd-discuss-phase N # Lock in preferences (now informed by spike + sketch) +/gsd-plan-phase N # Plan with confidence ``` -### コア設定 - -| 設定 | オプション | デフォルト | 制御内容 | -|---------|---------|---------|------------------| -| `mode` | `interactive`, `yolo` | `interactive` | `yolo` は決定を自動承認、`interactive` は各ステップで確認 | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | フェーズの粒度:スコープの分割の細かさ(3-5、5-8、または 8-12 フェーズ) | -| `model_profile` | `quality`, `balanced`, `budget`, `inherit` | `balanced` | 各エージェントのモデルティア(下表を参照) | - -### プランニング設定 - -| 設定 | オプション | デフォルト | 制御内容 | -|---------|---------|---------|------------------| -| `planning.commit_docs` | `true`, `false` | `true` | `.planning/` ファイルを git にコミットするかどうか | -| `planning.search_gitignored` | `true`, `false` | `false` | `.planning/` を含めるためにブロード検索に `--no-ignore` を追加 | - -> **注:** `.planning/` が `.gitignore` に含まれている場合、設定値に関係なく `commit_docs` は自動的に `false` になります。 - -### ワークフロートグル - -| 設定 | オプション | デフォルト | 制御内容 | -|---------|---------|---------|------------------| -| `workflow.research` | `true`, `false` | `true` | プランニング前のドメイン調査 | -| `workflow.plan_check` | `true`, `false` | `true` | プラン検証ループ(最大3回) | -| `workflow.verifier` | `true`, `false` | `true` | 実行後のフェーズ目標に対する検証 | -| `workflow.nyquist_validation` | `true`, `false` | `true` | plan-phase 時のバリデーションアーキテクチャリサーチ、8番目の plan-check 次元 | -| `workflow.ui_phase` | `true`, `false` | `true` | フロントエンドフェーズ用の UI デザインコントラクトを生成 | -| `workflow.ui_safety_gate` | `true`, `false` | `true` | plan-phase 時にフロントエンドフェーズで /gsd-ui-phase の実行を促す | -| `workflow.research_before_questions` | `true`, `false` | `false` | ディスカッション質問の後ではなく前にリサーチを実行 | -| `workflow.discuss_mode` | `standard`, `assumptions` | `standard` | ディスカッションスタイル:オープンエンドの質問 vs. コードベース駆動の前提確認 | -| `workflow.skip_discuss` | `true`, `false` | `false` | 自律モードで discuss-phase を完全にスキップ、ROADMAP のフェーズ目標から最小限の CONTEXT.md を作成 | - -### フック設定 - -| 設定 | オプション | デフォルト | 制御内容 | -|---------|---------|---------|------------------| -| `hooks.context_warnings` | `true`, `false` | `true` | コンテキストウィンドウ使用量の警告 | -| `hooks.workflow_guard` | `true`, `false` | `false` | GSD ワークフローコンテキスト外でのファイル編集の警告 | - -慣れたドメインやトークン節約時に、ワークフロートグルを無効にしてフェーズを高速化できます。 - -### Git ブランチ戦略 - -| 設定 | オプション | デフォルト | 制御内容 | -|---------|---------|---------|------------------| -| `git.branching_strategy` | `none`, `phase`, `milestone` | `none` | ブランチ作成のタイミングと方法 | -| `git.phase_branch_template` | テンプレート文字列 | `gsd/phase-{phase}-{slug}` | phase 戦略のブランチ名 | -| `git.milestone_branch_template` | テンプレート文字列 | `gsd/{milestone}-{slug}` | milestone 戦略のブランチ名 | -| `git.quick_branch_template` | テンプレート文字列 または `null` | `null` | `/gsd-quick` タスク用のオプションブランチ名 | - -**ブランチ戦略の説明:** - -| 戦略 | ブランチ作成 | スコープ | 最適な用途 | -|----------|---------------|-------|----------| -| `none` | なし | N/A | ソロ開発、シンプルなプロジェクト | -| `phase` | 各 `execute-phase` 時 | フェーズごとに1ブランチ | フェーズごとのコードレビュー、粒度の細かいロールバック | -| `milestone` | 最初の `execute-phase` 時 | 全フェーズで1ブランチを共有 | リリースブランチ、バージョンごとの PR | - -**テンプレート変数:** `{phase}` = ゼロパディングされた番号(例:"03")、`{slug}` = 小文字ハイフン区切りの名前、`{milestone}` = バージョン(例:"v1.0")、`{num}` / `{quick}` = quick タスク ID(例:"260317-abc")。 - -quick タスクのブランチ設定例: - -```json -"git": { - "quick_branch_template": "gsd/quick-{num}-{slug}" -} -``` - -### モデルプロファイル(エージェント別の内訳) - -| エージェント | `quality` | `balanced` | `budget` | `inherit` | -|-------|-----------|------------|----------|-----------| -| gsd-planner | Opus | Opus | Sonnet | Inherit | -| gsd-roadmapper | Opus | Sonnet | Sonnet | Inherit | -| gsd-executor | Opus | Sonnet | Sonnet | Inherit | -| gsd-phase-researcher | Opus | Sonnet | Haiku | Inherit | -| gsd-project-researcher | Opus | Sonnet | Haiku | Inherit | -| gsd-research-synthesizer | Sonnet | Sonnet | Haiku | Inherit | -| gsd-debugger | Opus | Sonnet | Sonnet | Inherit | -| gsd-codebase-mapper | Sonnet | Haiku | Haiku | Inherit | -| gsd-verifier | Sonnet | Sonnet | Haiku | Inherit | -| gsd-plan-checker | Sonnet | Sonnet | Haiku | Inherit | -| gsd-integration-checker | Sonnet | Sonnet | Haiku | Inherit | - -**プロファイルの方針:** -- **quality** -- すべての意思決定エージェントに Opus、読み取り専用の検証に Sonnet。クォータに余裕があり、重要な作業に使用。 -- **balanced** -- プランニング(アーキテクチャの決定が行われる場所)にのみ Opus、それ以外は Sonnet。正当な理由があるデフォルト。 -- **budget** -- コードを書くものには Sonnet、リサーチと検証には Haiku。大量作業や重要度の低いフェーズに使用。 -- **inherit** -- すべてのエージェントが現在のセッションモデルを使用。モデルを動的に切り替える場合(例:OpenCode または Kilo の `/model`)や、Claude Code を非 Anthropic プロバイダー(OpenRouter、ローカルモデル)で使用する場合に最適で、予期しない API コストを回避できます。非 Claude ランタイム(Codex、OpenCode、Gemini CLI、Kilo)では、インストーラーが自動的に `resolve_model_ids: "omit"` を設定します -- [非 Claude ランタイムの使用](#非-claude-ランタイムの使用codexopencodegemini-clikilo)を参照。 - --- -## 使用例 +## バックログとスレッド {#backlog--threads} + +### バックログ駐車場 + +まだアクティブなプランニングの準備ができていないアイデアは、999.x 番号付けを使用してバックログに追加し、アクティブなフェーズシーケンスの外に置きます。 + +```bash +/gsd-capture --backlog "GraphQL API layer" # Creates 999.1-graphql-api-layer/ +/gsd-capture --backlog "Mobile responsive" # Creates 999.2-mobile-responsive/ +``` + +バックログアイテムは完全なフェーズディレクトリを持つため、`/gsd-discuss-phase 999.1` でアイデアをさらに探索したり、準備ができたら `/gsd-plan-phase 999.1` を使用できます。 + +**レビューとプロモーション** は `/gsd-review-backlog` で行います — すべてのバックログアイテムが表示され、プロモート(アクティブシーケンスに移動)、保持(バックログに残す)、または削除(削除)を選択できます。 + +### シード + +シードはトリガー条件を持つ将来志向のアイデアです。バックログアイテムと異なり、適切なマイルストーンが来ると自動的に浮上します。 + +```bash +/gsd-capture --seed "Add real-time collab when WebSocket infra is in place" +``` + +`/gsd-new-milestone` はすべてのシードをスキャンしてマッチを提示します。**保存場所:** `.planning/seeds/SEED-NNN-slug.md` + +### 永続コンテキストスレッド + +スレッドは、複数のセッションにまたがるが特定のフェーズに属さない作業のための軽量なクロスセッション知識ストアです。 + +```bash +/gsd-thread # List all threads +/gsd-thread fix-deploy-key-auth # Resume existing thread +/gsd-thread "Investigate TCP timeout" # Create new thread +``` + +スレッドが成熟したら、フェーズ(`/gsd-phase`)またはバックログアイテム(`/gsd-capture --backlog`)に昇格できます。**保存場所:** `.planning/threads/{slug}.md` + +--- + +## ワークストリームとワークスペース {#workstreams--workspaces} + +ワークストリームとワークスペースはどちらも分離を提供しますが、異なるレベルで動作します。 + +**ワークストリーム** は同じコードベースと git 履歴を共有しながら、プランニングアーティファクトを分離します — より軽量で、複数のマイルストーン領域を並行して作業するのに適しています。[ワークストリームで並行作業する](how-to/work-in-parallel-with-workstreams.md) を参照してください。 + +**ワークスペース** は独自の `.planning/` を持つ独立したリポジトリのワークツリーを作成します — より重量があり、フィーチャーブランチまたはマルチリポジトリの分離に適しています。[ワークスペースで作業を分離する](how-to/isolate-work-with-workspaces.md) を参照してください。 + +| コマンド | 目的 | +| ---------------------------------- | ---------------------------------------------------- | +| `/gsd-workstreams create ` | 分離されたプランニング状態を持つ新しいワークストリームを作成する | +| `/gsd-workstreams switch ` | アクティブコンテキストを別のワークストリームに切り替える | +| `/gsd-workstreams list` | すべてのワークストリームとアクティブなものを表示する | +| `/gsd-workstreams complete ` | ワークストリームを完了としてマークし状態をアーカイブする | + +```bash +# Workspace example — feature branch isolation +/gsd-workspace --new --name feature-b --repos . +cd ~/gsd-workspaces/feature-b +/gsd-new-project + +/gsd-workspace --list +/gsd-workspace --remove feature-b +``` + +--- + +## セキュリティ {#security} + +### 多層防御(v1.27) + +GSD は LLM のシステムプロンプトになるマークダウンファイルを生成します。これは、プランニングアーティファクトに流れ込むユーザー制御のテキストが、間接的なプロンプトインジェクションベクターになり得ることを意味します。v1.27 では集中的なセキュリティ強化が導入されました。 + +**パストラバーサル防止:** ユーザーが指定したファイルパス(`--text-file`、`--prd`)はすべてプロジェクトディレクトリ内で解決されるよう検証されます。macOS の `/var` → `/private/var` シンボリックリンク解決も処理されます。 + +**プロンプトインジェクション検出:** `security.cjs` モジュールは、ユーザーが指定したテキストがプランニングアーティファクトに入力される前に既知のインジェクションパターンをスキャンします。 + +**ランタイムフック:** + +- `gsd-prompt-guard.js` — `.planning/` への Write/Edit 呼び出しでインジェクションパターンをスキャンする(常時有効、アドバイザリーのみ) +- `gsd-workflow-guard.js` — GSD ワークフローコンテキスト外でのファイル編集を警告する(`hooks.workflow_guard` 経由でオプトイン) + +**CI スキャナー:** `prompt-injection-scan.test.cjs` はすべてのエージェント、ワークフロー、コマンドファイルに埋め込まれたインジェクションベクターをスキャンします。 + +--- + +### パッケージ正当性ゲート(v1.42.1) + +AI コーディングツールはパッケージ名を幻覚することがあります。攻撃者はそれらの名前を npm、PyPI、crates.io に悪意のあるインストール後スクリプトとともにあらかじめ登録します — これは *スロップスクワッティング* と呼ばれる手法です。v1.42.1 では、これがシェルに到達する前に停止させる 3 層ゲートが追加されました。 + +**RESEARCH.md 内** — 外部パッケージを推奨する各フェーズには `## Package Legitimacy Audit` テーブルが含まれます: + +```markdown +## Package Legitimacy Audit + +| Package | Registry | Age | Downloads | Source Repo | slopcheck | Disposition | +|---------|----------|-----|-----------|-------------|-----------|-------------| +| express | npm | 13 yrs | 100M+/wk | github.com/expressjs/express | [OK] | Approved | +| some-new-util | npm | 3 days | 47 | none | [SLOP] | REMOVED | +| api-bridge | npm | 6 mo | 1.2k/wk | github.com/user/api-bridge | [SUS] | Flagged | +``` + +`[SLOP]` パッケージは RESEARCH.md から完全に削除され、プランナーに到達することはありません。 + +**PLAN.md 内** — `[SUS]` または `[ASSUMED]` パッケージはインストール前に `checkpoint:human-verify` タスクをトリガーします。 + +**実行中** — インストールが失敗した場合、エグゼキューターはチェックポイントを提示して停止し、代替案をサイレントに試みません。 + +**スロップチェックの判定:** + +| 判定 | 意味 | GSD のアクション | +|---------|---------|------------| +| `[OK]` | すべての正当性チェックに合格 | 進行 — チェックポイントは追加されない | +| `[SUS]` | 疑わしいシグナル | フラグ付き; プランナーが `checkpoint:human-verify` を追加 | +| `[SLOP]` | 高確信度の幻覚 | RESEARCH.md から削除; プランナーに到達しない | + +slopcheck を手動でインストールするには: + +```bash +pip install slopcheck +# verify: slopcheck install express --json +``` + +--- + +## コードレビューワークフロー + +フェーズを実行した後、UAT の前に構造化されたコードレビューを実行してください。完全なワークフローは [クロス AI レビューのセットアップ](how-to/set-up-cross-ai-review.md) を参照してください。 + +```bash +/gsd-code-review 3 # Review all changed files in phase 3 +/gsd-code-review 3 --depth=deep # Deep cross-file review +/gsd-code-review 3 --fix # Fix Critical + Warning findings atomically +/gsd-code-review 3 --fix --auto # Fix and re-review until clean (max 3 iterations) +/gsd-audit-fix # Audit + classify + fix (medium+ severity, max 5) +``` + +レビューステップは実行後、UAT 前に位置します: + +```text +/gsd-execute-phase N -> /gsd-code-review N -> /gsd-code-review N --fix -> /gsd-verify-work N +``` + +--- + +## コマンドおよび設定リファレンス + +- **コマンドリファレンス:** すべての安定版コマンドのフラグ、サブコマンド、例については [`docs/COMMANDS.md`](COMMANDS.md) を参照してください。 +- **設定リファレンス:** 完全な `config.json` スキーマ、モデルプロファイルテーブル、git ブランチ戦略、セキュリティ設定については [`docs/CONFIGURATION.md`](CONFIGURATION.md) を参照してください。 +- **ディスカッションモード:** インタビューモードと前提条件モードについては [`docs/workflow-discuss-mode.md`](workflow-discuss-mode.md) を参照してください。 + +--- + +## 使用例 {#usage-examples} ### 新規プロジェクト(フルサイクル) ```bash claude --dangerously-skip-permissions -/gsd-new-project # 質問に回答、設定、ロードマップを承認 +/gsd-new-project # Answer questions, configure, approve roadmap /clear -/gsd-discuss-phase 1 # 好みを確定 -/gsd-ui-phase 1 # デザインコントラクト(フロントエンドフェーズ) -/gsd-plan-phase 1 # リサーチ + プラン + 検証 -/gsd-execute-phase 1 # 並列実行 -/gsd-verify-work 1 # 手動 UAT -/gsd-ship 1 # 検証済み作業から PR を作成 -/gsd-ui-review 1 # ビジュアル監査(フロントエンドフェーズ) +/gsd-discuss-phase 1 # Lock in your preferences +/gsd-ui-phase 1 # Design contract (frontend phases) +/gsd-plan-phase 1 # Research + plan + verify +/gsd-execute-phase 1 # Parallel execution +/gsd-verify-work 1 # Manual UAT +/gsd-ship 1 # Create PR from verified work +/gsd-ui-review 1 # Visual audit (frontend phases) /clear -/gsd-progress --next # 自動検出して次のステップを実行 +/gsd-progress --next # Auto-detect and run next step ... -/gsd-audit-milestone # すべて出荷されたか確認 -/gsd-complete-milestone # アーカイブ、タグ付け、完了 -/gsd-pause-work --report # セッションサマリーを生成 +/gsd-audit-milestone # Check everything shipped +/gsd-complete-milestone # Archive, tag, done +/gsd-pause-work --report # Generate session summary ``` ### 既存ドキュメントからの新規プロジェクト ```bash -/gsd-new-project --auto @prd.md # ドキュメントからリサーチ/要件/ロードマップを自動実行 +/gsd-new-project --auto @prd.md # Auto-runs research/requirements/roadmap from your doc /clear -/gsd-discuss-phase 1 # ここから通常のフロー +/gsd-discuss-phase 1 # Normal flow from here ``` -### 既存コードベース +### 既存のコードベース ```bash -/gsd-map-codebase # 既存のコードを分析(並列エージェント) -/gsd-new-project # 追加する内容に焦点を当てた質問 -# (ここから通常のフェーズワークフロー) +/gsd-map-codebase # Analyse what exists (parallel agents) +/gsd-new-project # Questions focus on what you're ADDING +# (normal phase workflow from here) ``` +**実行後のドリフト検出(#2003)。** `/gsd-execute-phase` を実行するたびに、GSD はフェーズが `.planning/codebase/STRUCTURE.md` を古くするほどの構造的変更を導入したかどうかを確認します。次のコマンドで動作を切り替えられます: + +```bash +/gsd-settings workflow.drift_action auto-remap # remap automatically +/gsd-settings workflow.drift_threshold 5 # tune sensitivity +``` + +### プランドリフトガード + +**デフォルトオン。** プランドリフトガード(`plan_review.source_grounding: true`)はプランレビュー中に実行され、プランが引用するすべてのシンボル(デコレーター、クラス、関数、CLI フラグ)がレビュー時にソースツリーに実際に存在するかを検証します。これにより、実行エージェントが実行される前に幻覚された名前を検出します。 + +**検出内容:** + +- PLAN.md のステップで参照されているが、ソースに存在しない関数 +- プランが書かれた後にリネームまたは削除されたクラスまたはデコレーター名 +- プランに記述されているが引数パーサーに定義されていない CLI フラグ +- 実装ステップで引用されているがファイルに解決されないモジュールパス + +**needs-acknowledgement の動作。** ガードが欠損シンボルを発見すると、ハードブロックではなく `needs-acknowledgement` 通知をプランレビュー出力に出力します。承認して続行(シンボルが意図的に新規の場合)するか、プランの修正を要求できます。ガードはプランを自動拒否しません — 人間の判断のためのシグナルを提示します。 + +**intel なしでも動作。** デフォルトではガードは `grep`/`ripgrep` を使用してソースファイルを検索します — 事前インデックスは不要です。`intel.enabled: true` で `/gsd:map-codebase` を実行済みの場合、`plan_review.source_grounding_authority: intel` を設定すると、より高速な事前構築済みの `api-map.json` インデックスを使用できます。 + +```bash +# Enable/disable (default: on) +/gsd-settings plan_review.source_grounding true +/gsd-settings plan_review.source_grounding false + +# Switch resolver authority +/gsd-settings plan_review.source_grounding_authority grep # live grep (default) +/gsd-settings plan_review.source_grounding_authority intel # pre-indexed api-map.json +``` + +プロジェクト設定時(`/gsd:new-project` がワークフロー設定中に尋ねます)または `/gsd:settings`(Planning セクション → Drift Guard)経由でいつでも切り替えられます。 + ### クイックバグ修正 ```bash @@ -631,100 +523,159 @@ claude --dangerously-skip-permissions ### 休憩後の再開 ```bash -/gsd-progress # 前回の続きと次のステップを確認 -# または -/gsd-resume-work # 前回のセッションからフルコンテキストを復元 +/gsd-progress # See where you left off and what's next +# or +/gsd-resume-work # Full context restoration from last session ``` ### リリース準備 ```bash -/gsd-audit-milestone # 要件カバレッジを確認、スタブを検出 -/gsd-complete-milestone # アーカイブ、タグ付け、完了 +/gsd-audit-milestone # Check requirements coverage, detect stubs +/gsd-complete-milestone # Archive, tag, done ``` -### スピード vs 品質プリセット +### スピードと品質のプリセット -| シナリオ | モード | 粒度 | プロファイル | リサーチ | プランチェック | ベリファイア | -|----------|------|-------|---------|----------|------------|----------| -| プロトタイピング | `yolo` | `coarse` | `budget` | オフ | オフ | オフ | -| 通常開発 | `interactive` | `standard` | `balanced` | オン | オン | オン | -| プロダクション | `interactive` | `fine` | `quality` | オン | オン | オン | +| シナリオ | モード | 粒度 | プロファイル | リサーチ | プランチェック | ベリファイア | +| ----------- | ------------- | ----------- | ---------- | -------- | ---------- | -------- | +| プロトタイピング | `yolo` | `coarse` | `budget` | off | off | off | +| 通常の開発 | `interactive` | `standard` | `balanced` | on | on | on | +| 本番環境 | `interactive` | `fine` | `quality` | on | on | on | -**自律モードでの discuss-phase スキップ:** `yolo` モードで実行中に、PROJECT.md に既に十分な設定が記録されている場合は、`/gsd-settings` で `workflow.skip_discuss: true` を設定してください。これにより discuss-phase を完全にバイパスし、ROADMAP のフェーズ目標から最小限の CONTEXT.md を作成します。PROJECT.md と規約がディスカッションで新しい情報を追加しないほど包括的な場合に有用です。 +**自律モードでのディスカッションフェーズのスキップ:** `yolo` モードで実行する場合、`/gsd-settings` で `workflow.skip_discuss: true` を設定してください。 -### マイルストーン中のスコープ変更 +### マイルストーン途中でのスコープ変更 ```bash -/gsd-phase # ロードマップに新しいフェーズを追加 -# または -/gsd-phase --insert 3 # フェーズ 3 と 4 の間に緊急作業を挿入 -# または -/gsd-phase --remove 7 # フェーズ 7 をスコープ外にして番号を振り直す +/gsd-phase # Append a new phase to the roadmap (default mode) +/gsd-phase --insert 3 # Insert urgent work between phases 3 and 4 +/gsd-phase --remove 7 # Descope phase 7 and renumber +/gsd-phase --edit 4 # Edit any field of phase 4 in place ``` -### マルチプロジェクトワークスペース - -独立した GSD 状態を持つ複数のリポジトリや機能で並行作業できます。 - -```bash -# モノレポからリポジトリを含むワークスペースを作成 -/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI - -# フィーチャーブランチの分離 — 独自の .planning/ を持つ現在のリポジトリのワークツリー -/gsd-workspace --new --name feature-b --repos . - -# ワークスペースに移動して GSD を初期化 -cd ~/gsd-workspaces/feature-b -/gsd-new-project - -# ワークスペースの一覧と管理 -/gsd-workspace --list -/gsd-workspace --remove feature-b -``` - -各ワークスペースには以下が含まれます: -- 独自の `.planning/` ディレクトリ(ソースリポジトリから完全に独立) -- 指定されたリポジトリの Git ワークツリー(デフォルト)またはクローン -- メンバーリポジトリを追跡する `WORKSPACE.md` マニフェスト - --- -## トラブルシューティング +## トラブルシューティング {#troubleshooting} -### 「Project already initialized」 +包括的なトラブルシューティングガイドは [リカバリーとトラブルシューティング](how-to/recover-and-troubleshoot.md) を参照してください。最も一般的な問題を以下に要約します。 -`/gsd-new-project` を実行したが、`.planning/PROJECT.md` が既に存在しています。これは安全チェックです。やり直したい場合は、まず `.planning/` ディレクトリを削除してください。 +### プログラマティック CLI(`gsd-tools query` vs `gsd-tools.cjs`) -### 長時間セッションでのコンテキスト劣化 +自動化には、登録済みサブコマンドを使用する **`gsd-tools query`** を推奨します([CLI-TOOLS.md — SDK とプログラマティックアクセス](CLI-TOOLS.md#sdk-and-programmatic-access) と QUERY-HANDLERS.md を参照)。レガシーの `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs` CLI は引き続きサポートされています。 -主要なコマンド間でコンテキストウィンドウをクリアしてください:Claude Code では `/clear` を使用します。GSD はフレッシュなコンテキストを前提に設計されています — すべてのサブエージェントはクリーンな 200K ウィンドウを取得します。メインセッションで品質が低下している場合は、クリアして `/gsd-resume-work` または `/gsd-progress` で状態を復元してください。 +### STATE.md の同期ずれ -### プランが誤っている、または方向性がずれている +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate # Detect drift +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify # Preview changes +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync # Reconstruct STATE.md +``` -プランニング前に `/gsd-discuss-phase [N]` を実行してください。プランの品質問題のほとんどは、CONTEXT.md があれば防げたはずの前提を Claude が置いてしまうことに起因します。`/gsd-discuss-phase --assumptions [N]` を使用して、プランにコミットする前に Claude の意図を確認することもできます。 +### 「Spawning...」の後にコマンドがフリーズしているように見える -### 実行が失敗する、またはスタブが生成される +GSD サブエージェントは独立したコンテキストウィンドウで実行されます — その作業は進行中は親セッションからは見えません。セッションを中断しないでください。リサーチおよびプランニングエージェントは通常 1〜5 分かかります。結果を待ってください。 -プランが野心的すぎなかったか確認してください。プランは最大2-3タスクにすべきです。タスクが大きすぎると、単一のコンテキストウィンドウで確実に生成できる範囲を超えてしまいます。より小さなスコープで再プランニングしてください。 +### 長いセッション中のコンテキスト劣化 -### 現在地がわからなくなった +主要なコマンド間でコンテキストウィンドウをクリアしてください: Claude Code では `/clear`。GSD はフレッシュなコンテキストを前提に設計されています — すべてのサブエージェントはクリーンな 200K ウィンドウを取得します。クリア後に状態を復元するには `/gsd-resume-work` または `/gsd-progress` を使用してください。 -`/gsd-progress` を実行してください。すべての状態ファイルを読み込み、現在地と次にやるべきことを正確に教えてくれます。 +### プランが間違っているまたは方向性がずれている -### 実行後に変更が必要 +プランニング前に `/gsd-discuss-phase [N]` を実行してください。プランの品質問題のほとんどは、`CONTEXT.md` があれば防げた前提をモデルが立てることから来ています。 -`/gsd-execute-phase` を再実行しないでください。ターゲットを絞った修正には `/gsd-quick` を使用するか、`/gsd-verify-work` で体系的に問題を特定し UAT を通じて修正してください。 +### 実行が失敗するかスタブを生成する -### モデルのコストが高すぎる +プランが野心的すぎなかったか確認してください。プランは最大 2〜3 タスクであるべきです。より小さなスコープで再プランしてください。 -budget プロファイルに切り替えてください:`/gsd-config --profile budget`。ドメインに慣れている場合(またはClaude が慣れている場合)は、`/gsd-settings` でリサーチエージェントと plan-check エージェントを無効にしてください。 +### どこにいるかわからなくなった + +`/gsd-progress` を実行してください。すべての状態ファイルを読み込み、現在地と次にすべきことを正確に伝えます。 + +### モデルコストが高すぎる + +budget プロファイルに切り替えてください: `/gsd-config --profile budget`。ドメインが既知の場合は `/gsd-settings` でリサーチおよびプランチェックエージェントを無効化してください。 + +### フェーズ別のモデルコスト調整(`models`)— v1.40 追加 + +`.planning/config.json` に `models` ブロックを追加してください: + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + } +} +``` + +エージェント単位の例外が必要な場合は、`model_overrides` を併記してください — これが `models` より優先されます: + +```json +{ + "models": { "research": "sonnet" }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +完全なマッピングテーブルと解決優先順位のルールは [フェーズタイプ別モデル](CONFIGURATION.md#per-phase-type-models-models--added-in-v140) を参照してください。 + +### `dynamic_routing` によるデフォルトで低コスト — v1.40 追加 + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +完全なエージェント → ティアマッピングは [ダイナミックルーティング](CONFIGURATION.md#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140) を参照してください。 + +### MCP サーバーのトリミングによるターンあたりのコスト削減 + +`model_profile` や `models.` を調整する前に、ハーネスで有効になっている **MCP サーバー** を監査してください。有効になっている各 MCP サーバーはすべてのターンにそのツールスキーマを注入します — 重量級のサーバーはそれぞれ 20k+ トークンかかることがあります。 + +これは **ハーネスの設定** であり、GSD の設定ではありません。トグルは `.claude/settings.json` にあります: + +```json +{ + "enabledMcpjsonServers": ["context7"], + "disabledMcpjsonServers": ["playwright", "mac-tools"] +} +``` + +長いフェーズの前のクイック監査: + +- このフェーズに UI 作業がないのに、ブラウザ / playwright ツールが有効になっていますか? +- 不要なプラットフォーム固有ツールが有効になっていますか? +- 別のプロジェクトのプロジェクト固有 MCP がここでまだ有効になっていますか? + +サーバーを無効にすると、以降のすべてのターンからそのスキーマが削除されます。MCP のトリミングは `model_profile` の調整と**複合効果があります** — 両方のレバーは相加的であり、MCP の節約はオーケストレーターが生成するすべてのサブエージェントにわたってすぐに現れます。 + +完全な監査、ハーネスリファレンス、`model_profile` との組み合わせに関するノートは、バンドルされた `context-budget.md` リファレンスの [MCP ツールスキーマコスト](../../get-shit-done/references/context-budget.md#mcp-tool-schema-cost-harness-concern) を参照してください。 ### 非 Claude ランタイムの使用(Codex、OpenCode、Gemini CLI、Kilo) -非 Claude ランタイム用に GSD をインストールした場合、インストーラーがモデル解決を設定済みのため、すべてのエージェントがランタイムのデフォルトモデルを使用します。手動設定は不要です。具体的には、インストーラーが設定に `resolve_model_ids: "omit"` を設定し、GSD に Anthropic モデル ID の解決をスキップしてランタイム独自のデフォルトモデルを使用するよう指示します。 +> **Codex CLI の最小サポートバージョン: `0.130.0`**(イシュー [#3562](https://github.com/open-gsd/gsd-core/issues/3562))。 -非 Claude ランタイムで異なるエージェントに異なるモデルを割り当てるには、ランタイムが認識する完全修飾モデル ID を使用して `.planning/config.json` に `model_overrides` を追加します: +非 Claude ランタイム向けに GSD をインストールした場合、インストーラーがすでにモデル解決を設定しています。手動設定は不要です — `resolve_model_ids: "omit"` が自動的に設定され、GSD に Anthropic モデル ID の解決をスキップしてランタイムが独自のデフォルトモデルを選ぶよう指示します。 + +非 Claude ランタイムで異なるモデルを割り当てるには: ```json { @@ -737,102 +688,200 @@ budget プロファイルに切り替えてください:`/gsd-config --profile } ``` -インストーラーは Gemini CLI、OpenCode、Kilo、Codex 用に `resolve_model_ids: "omit"` を自動設定します。非 Claude ランタイムを手動で設定する場合は、`.planning/config.json` に自分で追加してください。 +#### 設定変更 1 つで Claude から Codex へ切り替え(#2517) -完全な説明は[設定リファレンス](../CONFIGURATION.md#non-claude-runtimes-codex-opencode-gemini-cli-kilo)をご覧ください。 +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` -### 非 Anthropic プロバイダーでの Claude Code の使用(OpenRouter、ローカル) +[ランタイム対応プロファイル](CONFIGURATION.md#runtime-aware-profiles-2517) を参照してください。 -GSD サブエージェントが Anthropic モデルを呼び出し、OpenRouter やローカルプロバイダーを通じて支払っている場合は、`inherit` プロファイルに切り替えてください:`/gsd-config --profile inherit`。これにより、すべてのエージェントが特定の Anthropic モデルの代わりに現在のセッションモデルを使用します。`/gsd-settings` → モデルプロファイル → Inherit も参照してください。 +### 手動インストール / Node.js なしのセットアップ -### 機密/プライベートプロジェクトでの作業 +GSD インストーラーを実行できない場合、`agents/` のソースファイルを直接使用することはできません — これらは Claude Code のネイティブフロントマター形式です。OpenCode では 2 つの変換が必要です: -`/gsd-new-project` 時または `/gsd-settings` で `commit_docs: false` を設定してください。`.planning/` を `.gitignore` に追加してください。プランニングアーティファクトはローカルに保持され、git に含まれません。 +| フィールド | GSD ソース形式 | OpenCode 対応形式 | アクション | +|---|---|---|---| +| `tools:` | `Read, Bash, Grep`(カンマ区切り文字列) | フロントマターフィールドではない | `tools:` 行を完全に削除する | +| `color:` | プレーン CSS カラー名 | 16 進数または OpenCode セマンティック名 | 16 進数に変換するか削除する | -### GSD アップデートがローカル変更を上書きした +**代替案:** Node.js がある任意のマシンでインストーラーを実行します: -v1.17 以降、インストーラーはローカルで変更されたファイルを `gsd-local-patches/` にバックアップします。`/gsd-update --reapply` を実行して変更をマージし直してください。 +```bash +npx @opengsd/gsd-core@latest --opencode --global +``` -### ワークフロー診断 (`/gsd-forensics`) +### Cline へのインストール -ワークフローが明確でない形で失敗した場合 -- プランが存在しないファイルを参照する、実行が予期しない結果を生成する、状態が破損しているように見える -- `/gsd-forensics` を実行して診断レポートを生成してください。 +```bash +npx @opengsd/gsd-core --cline --global # applies to all projects +npx @opengsd/gsd-core --cline --local # this project only +``` -**チェック内容:** -- Git 履歴の異常(孤立コミット、予期しないブランチ状態、rebase アーティファクト) -- アーティファクトの整合性(欠落または不正なプランニングファイル、壊れた相互参照) -- 状態の不整合(ROADMAP のステータスと実際のファイル存在の不一致、設定のドリフト) +### CodeBuddy へのインストール -**出力:** `.planning/forensics/` に書き出される診断レポート。検出事項と推奨される修復手順が含まれます。 +```bash +npx @opengsd/gsd-core --codebuddy --global +``` -### サブエージェントが失敗したように見えるが作業は完了している +### Qwen Code へのインストール -Claude Code の分類バグに対する既知の回避策があります。GSD のオーケストレーター(execute-phase、quick)は、失敗を報告する前に実際の出力をスポットチェックします。失敗メッセージが表示されてもコミットが作成されている場合は、`git log` を確認してください -- 作業は成功している可能性があります。 +```bash +npx @opengsd/gsd-core --qwen --global +``` -### 並列実行によるビルドロックエラー +### プレリリースエディションへのインストール -並列ウェーブ実行中に pre-commit フックの失敗、cargo ロックの競合、30分以上の実行時間が発生した場合、これは複数のエージェントが同時にビルドツールをトリガーすることが原因です。GSD は v1.26 以降これを自動的に処理します — 並列エージェントはコミット時に `--no-verify` を使用し、オーケストレーターが各ウェーブ後にフックを1回実行します。古いバージョンを使用している場合は、プロジェクトの `CLAUDE.md` に以下を追加してください: +インストーラーを実行する前に、ランタイムの `*_CONFIG_DIR` 環境変数をプレリリースディレクトリに設定してください: + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global +``` + +**サポートされているランタイムの環境変数リファレンス:** + +| ランタイム | 安定版デフォルト | オーバーライド環境変数 | +|---|---|---| +| Claude Code | `~/.claude` | `CLAUDE_CONFIG_DIR` | +| Gemini CLI | `~/.gemini` | `GEMINI_CONFIG_DIR` | +| OpenCode | `XDG_CONFIG_HOME/opencode` | `OPENCODE_CONFIG_DIR` | +| Codex | (Codex CLI による) | `--config-dir` フラグ | +| Copilot | `~/.copilot` | `COPILOT_CONFIG_DIR` | +| Cursor | `~/.cursor` | `CURSOR_CONFIG_DIR` | +| Windsurf | `~/.codeium/windsurf` | `WINDSURF_CONFIG_DIR` | +| Antigravity | 自動検出 | `ANTIGRAVITY_CONFIG_DIR` | +| Augment | `~/.augment` | `AUGMENT_CONFIG_DIR` | +| Trae | `~/.trae` | `TRAE_CONFIG_DIR` | +| Qwen Code | `~/.qwen` | `QWEN_CONFIG_DIR` | +| Kilo | `~/.config/kilo` | `KILO_CONFIG_DIR` | +| CodeBuddy | `~/.codebuddy` | `CODEBUDDY_CONFIG_DIR` | +| Cline | `~/.cline` | `CLINE_CONFIG_DIR` | + +### 非 Anthropic プロバイダーでの Claude Code の使用 + +`inherit` プロファイルに切り替えてください: `/gsd-config --profile inherit`。これにより、すべてのエージェントが現在のセッションモデルを使用します。 + +### 機密 / プライベートプロジェクトの作業 + +`/gsd-new-project` 中または `/gsd-settings` 経由で `commit_docs: false` を設定してください。`.planning/` を `.gitignore` に追加してください。 + +### GSD の更新でローカル変更が上書きされた + +v1.17 以降、インストーラーはローカルで変更されたファイルを `gsd-local-patches/` にバックアップします。変更を元に戻すには `/gsd-update --reapply` を実行してください。 + +### npm 経由で更新できない + +手順ごとの手動更新手順は [docs/manual-update.md](../manual-update.md) を参照してください。 + +### ワークフロー診断(`/gsd-forensics`) + +ワークフローが明らかでない方法で失敗した場合、`/gsd-forensics` を実行して git 履歴の異常、アーティファクトの整合性、状態の不整合を網羅する診断レポートを生成してください。出力は `.planning/forensics/` に保存されます。 + +### エグゼキューターサブエージェントが Bash コマンドで「Permission denied」になる + +必要なパターンを `~/.claude/settings.json` に追加してください。すべてのスタックに必要なコアパターン: + +```json +"Bash(git add:*)", +"Bash(git commit:*)", +"Bash(git merge:*)", +"Bash(git worktree:*)", +"Bash(git rebase:*)", +"Bash(git reset:*)", +"Bash(git checkout:*)", +"Bash(git switch:*)", +"Bash(git restore:*)", +"Bash(git stash:*)", +"Bash(git rm:*)", +"Bash(git mv:*)", +"Bash(git fetch:*)", +"Bash(git cherry-pick:*)", +"Bash(git apply:*)", +"Bash(gh:*)" +``` + +**プロジェクト単位の権限:** `~/.claude/settings.json` の代わりに、プロジェクトルートの `.claude/settings.local.json` に同じ `permissions.allow` ブロックを追加してください。 + +### 並列実行でビルドロックエラーが発生する + +GSD は v1.26 以降これを自動的に処理します。古いバージョンを使用している場合は、プロジェクトの `CLAUDE.md` に追加してください: ```markdown ## Git Commit Rules for Agents All subagent/executor commits MUST use `--no-verify`. ``` -並列実行を完全に無効にするには:`/gsd-settings` → `parallelization.enabled` を `false` に設定。 - -### Windows:保護されたディレクトリでインストールがクラッシュする - -Windows でインストーラーが `EPERM: operation not permitted, scandir` でクラッシュした場合、これは OS で保護されたディレクトリ(例:Chromium ブラウザプロファイル)が原因です。v1.24 以降修正済み — 最新バージョンに更新してください。回避策として、インストーラー実行前に問題のあるディレクトリを一時的にリネームしてください。 +並列実行を完全に無効にするには: `/gsd-settings` → `parallelization.enabled` を `false` に設定してください。 --- -## リカバリークイックリファレンス +## リカバリークイックリファレンス {#recovery-quick-reference} -| 問題 | 解決策 | -|---------|----------| -| コンテキストの喪失 / 新セッション | `/gsd-resume-work` または `/gsd-progress` | -| フェーズが失敗した | フェーズのコミットを `git revert` して再プランニング | -| スコープ変更が必要 | `/gsd-phase`、`/gsd-phase --insert`、または `/gsd-phase --remove` | -| 何かが壊れた | `/gsd-debug "description"` | -| ワークフロー状態が破損している可能性 | `/gsd-forensics` | -| ターゲットを絞った修正 | `/gsd-quick` | -| プランがビジョンに合わない | `/gsd-discuss-phase [N]` で再プランニング | -| コストが高い | `/gsd-config --profile budget` と `/gsd-settings` でエージェントをオフ | -| アップデートがローカル変更を壊した | `/gsd-update --reapply` | -| ステークホルダー向けセッションサマリーが欲しい | `/gsd-pause-work --report` | -| 次のステップがわからない | `/gsd-progress --next` | -| 並列実行でビルドエラー | GSD を更新するか `parallelization.enabled: false` を設定 | +| 問題 | 解決策 | +| ------------------------------------ | ------------------------------------------------------------------------ | +| コンテキスト喪失 / 新しいセッション | `/gsd-resume-work` または `/gsd-progress` | +| フェーズが失敗した | フェーズのコミットを `git revert` してから再プランする | +| スコープを変更する必要がある | `/gsd-phase`(デフォルト)、`/gsd-phase --insert`、または `/gsd-phase --remove` | +| 何かが壊れた | `/gsd-debug "description"`(分析のみで修正なしは `--diagnose` を追加) | +| STATE.md の同期ずれ | `state validate` してから `state sync` | +| ワークフロー状態が破損しているように見える | `/gsd-forensics` | +| クイックなターゲット修正 | `/gsd-quick` | +| プランがビジョンと一致しない | `/gsd-discuss-phase [N]` してから再プランする | +| コストが高騰している | `/gsd-config --profile budget` と `/gsd-settings` でエージェントをオフに | +| 更新でローカル変更が壊れた | `/gsd-update --reapply` | +| ステークホルダー向けセッションサマリーが欲しい | `/gsd-pause-work --report` | +| 次のステップがわからない | `/gsd-progress --next` | +| 並列実行でビルドエラーが発生する | GSD を更新するか `parallelization.enabled: false` を設定する | --- -## プロジェクトファイル構造 +## プロジェクトファイル構造 {#project-file-structure} -参考として、GSD がプロジェクトに作成するファイル構造を示します: - -``` +```text .planning/ - PROJECT.md # プロジェクトのビジョンとコンテキスト(常に読み込まれる) - REQUIREMENTS.md # スコープ付き v1/v2 要件(ID 付き) - ROADMAP.md # ステータス追跡付きフェーズ分割 - STATE.md # 決定事項、ブロッカー、セッションメモリ - config.json # ワークフロー設定 - MILESTONES.md # 完了したマイルストーンのアーカイブ - HANDOFF.json # 構造化セッション引き継ぎ(/gsd-pause-work から) - research/ # /gsd-new-project からのドメインリサーチ - reports/ # セッションレポート(/gsd-pause-work --report から) + PROJECT.md # Project vision and context (always loaded) + REQUIREMENTS.md # Scoped v1/v2 requirements with IDs + ROADMAP.md # Phase breakdown with status tracking + STATE.md # Decisions, blockers, session memory + config.json # Workflow configuration + MILESTONES.md # Completed milestone archive + HANDOFF.json # Structured session handoff (from /gsd-pause-work) + research/ # Domain research from /gsd-new-project + reports/ # Session reports (from /gsd-pause-work --report) todos/ - pending/ # 作業待ちのキャプチャされたアイデア - done/ # 完了した TODO - debug/ # アクティブなデバッグセッション - resolved/ # アーカイブされたデバッグセッション - codebase/ # ブラウンフィールドコードベースマッピング(/gsd-map-codebase から) + pending/ # Captured ideas awaiting work + done/ # Completed todos + debug/ # Active debug sessions + resolved/ # Archived debug sessions + spikes/ # Feasibility experiments (from /gsd-spike) + NNN-name/ # Experiment code + README with verdict + MANIFEST.md # Index of all spikes + sketches/ # HTML mockups (from /gsd-sketch) + NNN-name/ # index.html (2-3 variants) + README + themes/ + default.css # Shared CSS variables for all sketches + MANIFEST.md # Index of all sketches with winners + codebase/ # Brownfield codebase mapping (from /gsd-map-codebase) phases/ XX-phase-name/ - XX-YY-PLAN.md # アトミック実行プラン - XX-YY-SUMMARY.md # 実行結果と決定事項 - CONTEXT.md # 実装の好み - RESEARCH.md # エコシステムリサーチの成果 - VERIFICATION.md # 実行後の検証結果 - XX-UI-SPEC.md # UI デザインコントラクト(/gsd-ui-phase から) - XX-UI-REVIEW.md # ビジュアル監査スコア(/gsd-ui-review から) - ui-reviews/ # /gsd-ui-review からのスクリーンショット(gitignore 対象) + XX-YY-PLAN.md # Atomic execution plans + XX-YY-SUMMARY.md # Execution outcomes and decisions + CONTEXT.md # Your implementation preferences + RESEARCH.md # Ecosystem research findings + VERIFICATION.md # Post-execution verification results + XX-UI-SPEC.md # UI design contract (from /gsd-ui-phase) + XX-UI-REVIEW.md # Visual audit scores (from /gsd-ui-review) + ui-reviews/ # Screenshots from /gsd-ui-review (gitignored) ``` + +--- + +## 関連 {#related} + +- [ドキュメント索引](README.md) +- [コマンド](COMMANDS.md) +- [設定](CONFIGURATION.md) +- [フェーズループ](explanation/the-phase-loop.md) diff --git a/docs/ja-JP/context-monitor.md b/docs/ja-JP/context-monitor.md index 4ec0ab4c6..d17532873 100644 --- a/docs/ja-JP/context-monitor.md +++ b/docs/ja-JP/context-monitor.md @@ -2,9 +2,9 @@ ツール使用後に実行されるフック(Claude Code では `PostToolUse`、Gemini CLI では `AfterTool`)で、コンテキストウィンドウの使用量が高くなった際にエージェントに警告します。 -## 課題 +## 問題 -ステータスラインはコンテキスト使用量を**ユーザー**に表示しますが、**エージェント**自身はコンテキストの制限を認識していません。コンテキストが不足すると、エージェントは限界に達するまで作業を続行し、タスクの途中で状態を保存できないまま停止する可能性があります。 +ステータスラインはコンテキスト使用量を**ユーザー**に表示しますが、**エージェント**自身はコンテキストの制限を認識していません。コンテキストが不足すると、エージェントは限界に達するまで作業を続行し、状態を保存できないままタスクの途中で止まる可能性があります。 ## 仕組み @@ -16,34 +16,34 @@ ## しきい値 | レベル | 残量 | エージェントの動作 | -|--------|------|------------------| +|-------|-----------|----------------| | Normal | > 35% | 警告なし | | WARNING | <= 35% | 現在のタスクをまとめ、新しい複雑な作業の開始を避ける | | CRITICAL | <= 25% | 即座に停止し、状態を保存する(`/gsd-pause-work`) | ## デバウンス -エージェントへの繰り返し警告を防ぐため: +エージェントへの繰り返し警告を防ぐため: - 最初の警告は即座に発火 -- 以降の警告は間に5回のツール使用が必要 +- 以降の警告は間に 5 回のツール使用が必要 - 深刻度のエスカレーション(WARNING -> CRITICAL)はデバウンスをバイパス ## アーキテクチャ ``` -ステータスラインフック (gsd-statusline.js) - | 書き込み +Statusline Hook (gsd-statusline.js) + | writes v /tmp/claude-ctx-{session_id}.json - ^ 読み取り + ^ reads | -コンテキストモニター (gsd-context-monitor.js, PostToolUse/AfterTool) - | 注入 +Context Monitor (gsd-context-monitor.js, PostToolUse/AfterTool) + | injects v -additionalContext -> エージェントが警告を確認 +additionalContext -> Agent sees warning ``` -ブリッジファイルはシンプルな JSON オブジェクトです: +ブリッジファイルはシンプルな JSON オブジェクトです: ```json { @@ -60,56 +60,21 @@ GSD の `/gsd-pause-work` コマンドは実行状態を保存します。WARNIN ## セットアップ -両フックは `npx @opengsd/gsd-core` のインストール時に自動的に登録されます: +両フックは `npx @opengsd/gsd-core` のインストール時に自動的に登録されます——通常の状況では手動の手順は不要です。フック設定の詳細、しきい値のオーバーライド、手動登録の例については、[設定](CONFIGURATION.md) を参照してください。 -- **ステータスライン**(ブリッジファイルの書き込み): settings.json の `statusLine` として登録 -- **コンテキストモニター**(ブリッジファイルの読み取り): settings.json の `PostToolUse` フックとして登録(Gemini では `AfterTool`) - -`~/.claude/settings.json`(Claude Code)への手動登録: - -```json -{ - "statusLine": { - "type": "command", - "command": "node ~/.claude/hooks/gsd-statusline.js" - }, - "hooks": { - "PostToolUse": [ - { - "hooks": [ - { - "type": "command", - "command": "node ~/.claude/hooks/gsd-context-monitor.js" - } - ] - } - ] - } -} -``` - -Gemini CLI(`~/.gemini/settings.json`)の場合、`PostToolUse` の代わりに `AfterTool` を使用します: - -```json -{ - "hooks": { - "AfterTool": [ - { - "hooks": [ - { - "type": "command", - "command": "node ~/.gemini/hooks/gsd-context-monitor.js" - } - ] - } - ] - } -} -``` +簡単な参考として:ステータスラインフックは `settings.json` に `statusLine` として登録されます;コンテキストモニター(`gsd-context-monitor.js`)は `PostToolUse` フックとして登録されます(Gemini CLI の場合は `AfterTool`)。どちらのエントリも、インストーラーを実行した Node 実行ファイルの絶対パスを使います。Windows PowerShell では、引用符付きの実行ファイルパスに `&` をプレフィックスしてください。 ## 安全性 - フックは全体を try/catch で囲み、エラー時はサイレントに終了 -- ツール実行をブロックしない — モニターの故障がエージェントのワークフローを壊してはならない -- 古いメトリクス(60秒以上前)は無視 +- ツール実行をブロックしない — モニターが壊れてもエージェントのワークフローを壊してはならない +- 古いメトリクス(60 秒以上前)は無視 - ブリッジファイルが存在しない場合も正常に処理(サブエージェント、新規セッション) + +--- + +## Related + +- [アーキテクチャ](ARCHITECTURE.md) +- [設定](CONFIGURATION.md) +- [ドキュメント索引](README.md) diff --git a/docs/ja-JP/explanation/context-engineering.md b/docs/ja-JP/explanation/context-engineering.md new file mode 100644 index 000000000..8637e9e1d --- /dev/null +++ b/docs/ja-JP/explanation/context-engineering.md @@ -0,0 +1,90 @@ +# コンテキストエンジニアリング + +> GSD Core が存在する理由、そして解決しようとしている問題。 + +--- + +## 問題:コンテキスト腐敗 + +AI コーディングセッションは常に新鮮な状態から始まります。モデルは質問を読み取り、それについて推論し、返答します。しかしセッションが一度のやり取りで終わることはほとんどありません。追加の質問をし、エラーメッセージを貼り付け、コードを繰り返し修正し、モデルが脱線したときに軌道修正します。ターンを重ねるたびに、モデルが一度に「見える」有限のテキストバッファであるコンテキストウィンドウにトークンが積み重なっていきます。 + +そのウィンドウが満たされると、微妙なことが起きます。モデルは明らかには失敗しません。答え続けます。しかしその品質は静かに低下していきます。最初の指示はモデルが注意を向けられる範囲の端へと追いやられます。最初のやり取りで確立したニュアンス——述べた制約、合意したアーキテクチャ、指摘したエッジケース——が後から積み重なったすべてのものと注意を奪い合います。研究者たちはこれを **コンテキスト腐敗** と呼びます。 + +コンテキスト腐敗はいくつかの形で現れます: + +- モデルが以前に認めた決定と矛盾し始める。 +- セッション開始時に確立したコーディングスタイルの規約からコードが外れていく。 +- 計画が、明確に述べられていたが履歴の奥深くに埋もれた要件を無視し始める。 +- モデルが 20 メッセージ前に正確に把握していたファイル名や関数シグネチャを誤って出力する。 + +これはモデルのバグではありません。トランスフォーマーアテンションが長いシーケンスに対してどう機能するかという根本的な性質です。モデルは「忘れて」いるわけではありません——人間的な意味での「記憶」は最初からありません。有限のウィンドウ全体で関連性を重み付けしており、そのウィンドウに蓄積されたノイズが増えるにつれて、シグナル対ノイズ比が低下するのです。 + +単純な対応策は `/clear` してやり直すことです。しかしそれでは連続性が失われます。コンテキストを再説明し、関連ファイルを再貼り付けし、制約を再度述べなければなりません。セッションは実質的にゼロにリセットされます。 + +--- + +## GSD Core の答え:フレッシュコンテキストサブエージェント + +GSD Core の核心的な洞察は、コーディングセッションの作業の *ほとんど* はメインコンテキストで行う必要がそもそもないということです。調査、計画立案、コード作成、検証はそれぞれ独立した、境界が明確なタスクです。それぞれを専門化されたサブエージェントに渡すことができます。そのエージェントはクリーンで慎重にスコープされたコンテキストウィンドウで開始し、結果をスリムなオーケストレーターに報告します。 + +これはコンテキスト腐敗への迂回策ではありません。構造的な解決策です。 + +オーケストレーター——あなたのメインセッション——はソースファイルに触れません。エージェントを生成し、その結果を収集し、共有状態を更新し、次のステップへとルーティングします。自身がほとんど何もしないため、そのコンテキストウィンドウはゆっくりと予測可能に拡大します。重い作業はそれぞれ新鮮な状態で開始し、タスクに必要なコンテキストだけを受け取り、完了したら終了するエージェントの中で行われます。 + +これが実際にどういう意味かを考えてみましょう。`/gsd-plan-phase` を実行すると、オーケストレーターは: + +1. コンパクトな JSON コンテキストペイロード(プロジェクト概要、フェーズ目標、関連設定)を読み込む。 +2. 200k トークンのクリーンなウィンドウで調査エージェントを生成する。 +3. 調査出力とフェーズ要件でプランナーエージェントを生成する。 +4. 実行前に計画を検証するプランチェッカーエージェントを生成する。 + +各エージェントはセッション履歴の蓄積に邪魔されることなく、最大限の能力で動作します。プランナーが `PLAN.md` ファイルを `.planning/phases/` に書き込むと、その出力は永続的なアーティファクト——共有コンテキストウィンドウの中の脆弱な記憶ではなく——になります。 + +--- + +## 仕様駆動開発とメタプロンプティング + +コンテキストエンジニアリング単体では不十分です。エージェントが新鮮な状態で開始しても、曖昧な指示を受け取れば、曖昧な出力を生み出します。GSD Core はフレッシュコンテキストサブエージェントと 2 つの補完的な規律を組み合わせています。 + +**仕様駆動開発** とは、すべてのフェーズが実行開始前に構造化されたアーティファクトを生成することを意味します。`CONTEXT.md` は Discuss ステップでの実装上の決定を記録します。`RESEARCH.md` は調査エージェントが見つけたものを記録します。`PLAN.md` は作業を独立した、依存関係の順序に従ったタスクに分解し、明確な受け入れ基準を持ちます。エグゼキューターエージェントがファイルに触れる時点では、長い会話の再解釈ではなく、正確な仕様から作業します。 + +**メタプロンプティング** とは、エージェント定義自体が慎重に設計されたプロンプトであり、アドホックな指示ではないことを意味します。`get-shit-done/workflows/` および `agents/` 内のファイルは、タスクのスコープの決め方、何を検証するか、いつ人間のチェックポイントにエスカレートするかについての実践的な知識をエンコードしています。ユーザーはこの知識をセッションごとに再説明する必要はありません。それはシステム自身のプロンプトに組み込まれています。 + +この組み合わせは意図的です。フレッシュコンテキストは各エージェントが明確に推論することを保証します。仕様駆動のアーティファクトは各エージェントが *正しい* ことについて推論することを保証します。メタプロンプティングは各エージェントが *うまく* 推論する方法を知っていることを保証します。 + +--- + +## `.planning/` の役割 + +コンテキストエンジニアリングには、知識がコンテキストリセットを超えて生き残ることが必要です。GSD Core はこのためにファイルシステムを使用します。すべての意味のある出力は、人間が読める Markdown または JSON として `.planning/` に書き込まれます。これが意味することは: + +- セッションを再起動しても(またはモデルがクラッシュしても)作業が失われない。 +- 後続のエージェントは共有された会話履歴に依存せず、以前のアーティファクトを直接読み取ることができる。 +- 計画アーティファクトを検査、編集、または git にコミットできる——それらはプレーンテキストであり、データベース内の不透明な状態ではない。 + +`STATE.md` はこのシステムの背骨です。プロジェクトの現在位置(どのマイルストーン、どのフェーズ、どの計画が完了しているか)、アクティブな決定とブロッカー、進捗メトリクスを記録します。ワークフローが開始されると、まず `STATE.md` を読み取って方向を確認します。ワークフローが意味のあるステップを完了すると、`STATE.md` に書き戻します。エージェントは記憶に頼りません。ファイルに頼ります。 + +--- + +## トレードオフ + +ここではトレードオフについて正直に述べることが重要です。 + +**オーバーヘッド。** フェーズループには実際の摩擦があります。`/gsd-discuss-phase`、`/gsd-plan-phase`、`/gsd-execute-phase` を別々のステップとして実行することは、普通のセッションに「この機能を書いて」と入力するよりも多くの経過時間がかかります。小さくてよく理解された変更に対しては、そのオーバーヘッドは正当化されません。 + +**レイテンシ。** 新鮮なコンテキストで複数のサブエージェントを生成することは、単一のインコンテキスト編集より遅くなります。調査、計画立案、実行のそれぞれにラウンドトリップのコストが発生します。 + +**シンプルなタスクへの過剰な手続き。** 変数名を変更したり、タイポを修正したり、欠落しているインポートを追加したりする場合、フェーズループは過剰です。GSD Core は完全なフェーズを必要としないアドホックな作業のために `/gsd-quick` と `/gsd-fast` を提供します。[クイックタスクとファストタスクの処理](../how-to/handle-quick-and-fast-tasks.md) を参照してください。 + +フェーズループは、コンテキスト腐敗が本当のリスクになるほど作業が複雑な場合——マルチファイル機能、横断的なリファクタリング、時間やセッションをまたぐ作業——に価値を発揮します。それ以外のすべてには、より軽量なプリミティブを使ってください。 + +経験則として役立つのは:タスクが単一の短いプロンプトで完全に仕様化でき、さらなる明確化なしに 1 エージェントターンで完了できるなら、フェーズループをスキップしてください。タスクが調査を必要とし、最近読んでいないファイルを含むか、まだ確定していない決定に依存している場合は、フェーズループが保護してくれます。 + +--- + +## Related + +- [フェーズループ](the-phase-loop.md) — Discuss → Plan → Execute → Verify → Ship サイクルがコンテキストエンジニアリングをどう実践するか +- [マルチエージェントオーケストレーション](multi-agent-orchestration.md) — サブエージェントがどのように生成、スコープ設定、調整されるか +- [アーキテクチャ](../ARCHITECTURE.md) — システムアーキテクチャ、エージェントモデル、データフロー +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/explanation/multi-agent-orchestration.md b/docs/ja-JP/explanation/multi-agent-orchestration.md new file mode 100644 index 000000000..3a64ab961 --- /dev/null +++ b/docs/ja-JP/explanation/multi-agent-orchestration.md @@ -0,0 +1,146 @@ +# GSD Core におけるマルチエージェントオーケストレーション + +> **解説** — このドキュメントは、GSD Core がマルチエージェントオーケストレーションを中心に設計されている *理由* と、*各部品がどのように組み合わさるか* を説明します。ステップバイステップのガイドではありません。設定については、[モデルプロファイルの設定](../how-to/configure-model-profiles.md) と [設定リファレンス](../CONFIGURATION.md) を参照してください。完全なエージェントロスターについては、[インベントリ](../INVENTORY.md) を参照してください。 + +--- + +## この設計が解決する問題 + +AI コーディングエージェントは劣化します。モデルが悪くなるからではなく、*コンテキストウィンドウが満杯になる* からです。会話が大きくなるにつれて、以前の決定やコードは中間ステップのノイズによって押し出されるか薄められます。複雑なタスクで 5 番目のファイルを書く頃には、エージェントは最初のメッセージで述べた制約をすでに忘れているかもしれません。これは *コンテキスト腐敗* と呼ばれることがあります。 + +GSD Core のマルチエージェント設計はその問題への直接的な応答です。セッション全体を抱える一つの長期実行エージェントの代わりに、薄いオーケストレーターが短命の専門化されたエージェントを生成します。それぞれが **フレッシュな 200K トークンのコンテキストウィンドウ** と、自分の特定の仕事をするために必要な *アーティファクトだけ* を持ちます。オーケストレーターは自分では重い作業をしません。コンテキストを読み込み、適切なエージェントを生成し、結果を収集し、`.planning/` の共有状態を更新します。 + +--- + +## オーケストレーター → エージェントパターン + +`get-shit-done/workflows/` のすべてのワークフローは同じ形を持ちます: + +```text +Orchestrator(ワークフロー .md ファイル) + │ + ├── コンテキスト読み込み + │ gsd-tools.cjs init + │ → JSON: プロジェクト情報、設定、状態、フェーズ詳細 + │ + ├── モデル解決 + │ gsd-tools.cjs resolve-model + │ → opus | sonnet | haiku | inherit + │ + ├── 専門化エージェント生成(Task/SubAgent 呼び出し) + │ ├── エージェント定義(agents/*.md) + │ ├── コンテキストペイロード(init JSON) + │ ├── モデルアサイン + │ └── ツール権限 + │ + ├── 結果収集 + │ + └── 状態更新 + gsd-tools.cjs state update / state patch / state advance-plan +``` + +オーケストレーターは意図的に薄く保たれています。ドメインについて推論せず、コードを書かず、次のステップへルーティングする以上に結果を解釈しません。この境界により各レイヤーの責任が明確になり、オーケストレーターのコンテキストにドメインノイズが蓄積するのを防ぎます。 + +### エージェントロスター + +GSD Core のエージェントは、調査 → 計画 → 実行 → 検証パイプラインにマッピングされる機能カテゴリに分類されます: + +| カテゴリ | エージェント | 典型的な並列性 | +|---|---|---| +| 調査者 | `gsd-project-researcher`、`gsd-phase-researcher`、`gsd-ui-researcher`、`gsd-advisor-researcher` | 4 並列(スタック、機能、アーキテクチャ、落とし穴) | +| 合成者 | `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 並列サブプローブ | +| 監査者 | `gsd-ui-auditor`、`gsd-security-auditor` | 順次実行 | + +各エージェント定義(`agents/*.md` 内)は、許可されたツールアクセス、目的、ターミナル出力の色を宣言します。ファイルを読み取り、単一の出力ドキュメントを書くだけでよいエージェントには、まさにその権限だけが与えられます——Bash 実行なし、より広い状態へのアクセスなし。この制約は意図的です:エージェントが予期しない動作をした場合の影響範囲を小さく保ちます。 + +完全な 31 エージェントロスターについては、[インベントリ](../INVENTORY.md#agents-31-shipped) を参照してください。 + +--- + +## ウェーブベースの並行実行 + +マルチエージェント設計の最も目に見える表れは、`/gsd-execute-phase` が互いに依存しあうことのある計画セットをどう処理するかです。 + +エグゼキューターを生成する前に、オーケストレーターは **ウェーブ分析** を実行します:各 `PLAN.md` ファイルの依存関係宣言を読み取り、計画をウェーブにグループ化します。宣言された依存関係がない計画がウェーブ 1 を形成し、並列に実行されます。ウェーブ 1 に依存する計画がウェーブ 2 を形成し、以下同様です。 + +```text +Plan 01(依存なし) ─┐ +Plan 02(依存なし) ─┤─── ウェーブ 1(並列) +Plan 03(依存: 01) ─┤─── ウェーブ 2(ウェーブ 1 待ち) +Plan 04(依存: 02) ─┘ +Plan 05(依存: 03, 04) ─── ウェーブ 3(ウェーブ 2 待ち) +``` + +ウェーブ内の各エグゼキューターは: + +- フレッシュなコンテキストウィンドウ(200K トークン、または対応モデルでは最大 1M)を受け取る +- 担当する特定の `PLAN.md` を受け取る +- プロジェクトコンテキスト(`PROJECT.md`、`STATE.md`)を受け取る +- フェーズコンテキスト(`CONTEXT.md`、利用可能な場合は `RESEARCH.md`)を受け取る +- 完了時にアトミックな git コミットを生成する +- 構築したものを説明する `SUMMARY.md` を書く + +ウェーブ内のすべてのエグゼキューターが完了した後、オーケストレーターはウェーブ全体のプリコミットフックを一度実行します。エグゼキューターは `--no-verify` でコミットし、複数のエージェントが並行してコミットするときのビルドロック競合(たとえば Rust プロジェクトでの Cargo ロック競合)を防ぎます。したがってフックはコミットごとに一度ではなく、ウェーブごとに一度実行されます。 + +### 並行コミットの安全性 + +複数のエグゼキューターが同時に実行される場合、2 つのメカニズムが書き込み競合を防ぎます: + +1. **`STATE.md` へのアトミックロック** — `STATE.md` へのすべての書き込みはロックファイル(`STATE.md.lock`)と `O_EXCL` アトミック作成を使います。これにより、2 つのエージェントそれぞれがファイルを読み取り、異なるフィールドを変更し、後から書いた方が前の変更を上書きするという read-modify-write 競合が防止されます。古いロック(10 秒以上)は自動的にクリアされます。 + +2. **ウェーブごとのフック実行** — 各エグゼキューターがプリコミットフックを独立して実行する代わりに(共有ビルドアーティファクトでファイルレベルの競合を引き起こす可能性がある)、オーケストレーターは各ウェーブが完了した後に `git hook run pre-commit` を一度実行します。 + +--- + +## 大窓モデルへのアダプティブコンテキスト拡充 + +標準の 200K コンテキストウィンドウは、エグゼキューターが単一の集中した計画を実装するには十分です。設定された `context_window` が 500K トークン以上の場合(たとえば Opus 4.6 または Sonnet 4.6 を 1M クラスモードで使用する場合)、オーケストレーターは標準ウィンドウでは収まらない追加コンテキストでサブエージェントプロンプトを自動的に拡充します: + +- **エグゼキューターエージェント** は前のウェーブの `SUMMARY.md` ファイルとフェーズの `CONTEXT.md`/`RESEARCH.md` を受け取り、フェーズ内でのクロスプラン認識を得る +- **検証者エージェント** はすべての `PLAN.md`、`SUMMARY.md`、`CONTEXT.md` ファイルと `REQUIREMENTS.md` を受け取り、履歴を考慮した検証が可能になる + +この拡充は `config.json` の `context_window` の値に条件付きです。標準ウィンドウ設定では、プロンプトはトークン効率を最大化するためにキャッシュフレンドリーな順序で切り詰められたバージョンを使います。 + +--- + +## なぜこの設計か——コンテキストエンジニアリングとの関連 + +オーケストレーター → エージェントパターンは、*コンテキストエンジニアリング* というより広いアプローチの一部としてのみ意味を持ちます:AI エージェントがコンテキストウィンドウで受け取るものが、モデルの層やプロンプト品質と同じくらい重要だという考え方。完全な解説については [コンテキストエンジニアリング](context-engineering.md) を参照してください。 + +マルチエージェントオーケストレーションはコンテキストエンジニアリングを 2 つの方法で実装します: + +**コンテキストの分離。** 各エージェントは必要なものだけを受け取ります。調査者はプロジェクト説明とドメイン質問を受け取ります;完全な計画履歴は受け取りません。検証者はすべての計画とサマリーを受け取ります;生の調査は受け取りません。分離により各エージェントのコンテキストは他のパイプラインステージのノイズで薄まるのではなく、シグナルで密度が高く保たれます。 + +**セッションをまたいだコンテキストの衛生。** すべての状態は(エージェントのコンテキストウィンドウではなく)`.planning/` に人間が読める Markdown と JSON として存在するため、GSD ワークフローはコンテキストリセット(`/clear`)、タブ切り替え、複数日のブレークを超えて生き残ります。次のエージェントは常に、長い会話の再構築された記憶からではなく、永続化され検証されたアーティファクトから開始します。 + +--- + +## トレードオフ + +マルチエージェントオーケストレーションはタダではありません。 + +**調整オーバーヘッド。** 各エージェントの生成はラウンドトリップです:オーケストレーターがプロンプトをフォーマットし、コンテキストを渡し、サブエージェントが完了するまで待ち(通常 1〜5 分)、結果を解析する必要があります。一つのコンテキストで作業する一つの有能なエージェントは、シンプルなタスクをより速く終わらせるでしょう。GSD は依存関係が許す限りデフォルトで並列性を採用することでこれを軽減します——`plan-phase` の 4 人の調査者は順次ではなく同時に実行されます。 + +**実行中の不透明性。** サブエージェントの実行中は、その作業は親セッションには見えません。ライブの進捗ストリームはありません。これはフレッシュコンテキスト設計の意図的な帰結です:サブエージェントは自分自身のコンテキストウィンドウで動作しています。オーケストレーターは生成ラインに生存通知を表示します(「サブエージェントで実行中——返ってくるまで出力なし」)で期待値を設定します。 + +**コンテキストスティッチングコスト。** 各エージェントに適切なアーティファクトをパッケージ化するには、オーケストレーターがコンテキストペイロードを組み立てて送信するためにトークンを使う必要があります。これが分離のコストです。`gsd-tools.cjs init` ハンドラーは、完全性とトークン予算のバランスを取る JSON ペイロードを生成し、繰り返し呼び出しでキャッシュにヒットするようにペイロードの安定した部分(プロジェクト定義、設定)にキャッシュフレンドリーな順序を適用します。 + +**モデルコストの増幅。** Opus 層で 5 つのエージェントを並行して実行することは、1 つを実行するよりコストがかかります。モデルプロファイルシステム(`model_profiles.md`、`model-profiles.cjs` でエージェントごとに解決)により、重要度の低いエージェントに安価な層を割り当てることができます。`dynamic_routing` 機能は、すべてのエージェントを安価な層で開始し、ソフトフェイラー時にのみエスカレートすることでさらにコストを削減します。詳細なオプションについては [設定](../CONFIGURATION.md) を参照してください。 + +これらのコストの見返りとして、この設計は*大きなフェーズにわたる一貫した品質*を買います。400 行の計画で 10 番目のファイルを書くエグゼキューターは、コンテキストがフレッシュだから劣化しません。20 の要件を確認する検証者は、すべてを会話履歴ではなく構造化された入力として受け取ったから最初の 10 を忘れません。 + +--- + +## Related + +- [コンテキストエンジニアリング](context-engineering.md) — この設計を動機づける上流の原則 +- [モデルプロファイルの設定](../how-to/configure-model-profiles.md) — エージェントごとにモデル層を割り当てる方法 +- [設定リファレンス](../CONFIGURATION.md) — `models`、`model_overrides`、`dynamic_routing`、`context_window` を含む完全な `config.json` スキーマ +- [インベントリ](../INVENTORY.md) — 信頼できるエージェントロスターとワークフローリスト +- [アーキテクチャ](../ARCHITECTURE.md#agent-model) — オーケストレーター → エージェントパターンとウェーブ実行モデルの実装レベルの詳細 +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/explanation/security-model.md b/docs/ja-JP/explanation/security-model.md new file mode 100644 index 000000000..afc5c3d93 --- /dev/null +++ b/docs/ja-JP/explanation/security-model.md @@ -0,0 +1,117 @@ +# GSD Core セキュリティモデル + +> **解説** — このドキュメントは、GSD Core がなぜこのようなセキュリティ姿勢を持っているか、そして *各レイヤーがどのように組み合わさるか* を説明します。すべてのフックパラメーターのリファレンスではありません。`/gsd-secure-phase` コマンドとそのオプションについては、[コマンド](../COMMANDS.md) を参照してください。実装レベルのフックアーキテクチャについては、[アーキテクチャ § フックシステム](../ARCHITECTURE.md#hook-system) を参照してください。組織全体のセキュリティベースライン(スキャナー制御、インシデントチェックリスト、所有権モデル)については、[SECURITY.md](../../../SECURITY.md) を参照してください。 + +--- + +## AI 駆動開発が専用のセキュリティ姿勢を必要とする理由 + +従来のコードエディターはあなたに代わって任意のパッケージを実行しません。GSD Core は実行します。調査 → 計画 → 実行パイプラインは「パッケージ名を指定する」から「`npm install ` を実行する」まで、「計画アーティファクトを書く」から「そのアーティファクトを LLM システムプロンプトとして使う」までの完全なパスを自動化します。各自動化ステップは人間をループから外します——そして各除去は潜在的な攻撃面です。 + +GSD Core のセキュリティモデルは一つの組織原則の上に構築されています:**多層防御**。単一の制御が完璧だとは想定しません。複数の重複したレイヤーがそれぞれ異なるクラスのリスクを軽減し、合わせて全体を完全に排除することなく攻撃面を実質的に悪用しにくくします。このドキュメントの末尾にある正直な要約は、システムが何に対して保護できないかを説明します。 + +--- + +## レイヤー 1 — サプライチェーン保護:パッケージ正当性ゲート + +### 脅威 + +AI モデルはパッケージ名を幻覚します。これはまれな失敗モードではありません:2025 年の研究では、AI が生成するパッケージ参照のおよそ 20% が正規のパッケージに対応しない幻覚された名前であることが記録されています。これらの幻覚された名前のサブセット——同じ研究でおよそ 43%——はプロンプトをまたいで一貫して繰り返され、攻撃者は AI ツールが一般的に生成する名前を観察し、npm、PyPI、または crates.io でそれらの名前を悪意のあるポストインストールスクリプト付きで事前登録できます。この技術は *スロップスクワッティング* と呼ばれます。 + +スロップスクワッティングの陰湿な点は、`npm view` を通過する幻覚された名前が *正当に見える* ことです。レジストリエントリは誰かがその名前を登録したことを証明するだけです——パッケージが AI の言う通りのことをするとも、正規のユーザーがいるとも、インストールスクリプトが安全だとも証明しません。ゲートがなければ、幻覚された名前は GSD の調査者 → プランナー → エグゼキューターパイプラインを検出されずに流れ、最終的にあなたのマシンで `npm install ` として実行されるでしょう。 + +### ゲートの仕組み + +ゲートは 3 つのパイプラインステージにわたって動作します: + +**調査ステージ。** `gsd-phase-researcher` が外部パッケージを推奨するとき、それぞれに対して `slopcheck install --json` を実行します。結果は `RESEARCH.md` の `## Package Legitimacy Audit` テーブルに書き込まれます。`[SLOP]`(高信頼度の幻覚または攻撃者登録済み)とタグ付けされたパッケージは、ファイルが保存される前に **`RESEARCH.md` から完全に除去されます**。それらはプランナーに届きません。 + +**計画ステージ。** `gsd-planner` は監査テーブルを読み取ります。`[SUS]`(疑わしい:新規登録、低ダウンロード数、ソースリポジトリなし、または人気パッケージに近い命名パターン)または `[ASSUMED]`(直接レジストリ検証ではなく WebSearch から取得)とタグ付けされたパッケージについて、プランナーはインストールステップの前に **`checkpoint:human-verify` タスクを挿入します**。チェックポイントにはレジストリページへの直接リンクと、確認すべき具体的な事項が含まれます:メンテナー履歴、イシュートラッカーの活動、疑わしいインストールスクリプトがないこと。 + +**実行ステージ。** インストールが失敗した場合、`gsd-executor` は**チェックポイントを表示して停止します**。それ自体が悪意のある可能性のある代替パッケージ名をサイレントに試みません。これはエグゼキューターの動作における明示的なルールです(エグゼキュータエージェント定義の RULE 3)。 + +### WebSearch パッケージが常に `[ASSUMED]` である理由 + +WebSearch を通じて発見されたパッケージ名は、`npm view` が成功するかどうかに関わらず `[ASSUMED]` とタグ付けされます。レジストリに存在するパッケージは、インストールしても安全なパッケージと同じではありません。`npm view` は登録を証明するだけで、正当性を証明しません。`[ASSUMED]` タグは `[SUS]` と同じ人間検証チェックポイントをトリガーし、未検証のウェブ検出推奨は常にインストール前に人間のレビューを受けることを保証します。 + +### エコシステムカバレッジ + +調査者は単一の汎用チェックではなく、レジストリ固有の検証コマンドを使います: + +- Node.js:`npm view` +- Python:`pip index versions` +- Rust:`cargo search` + +これは 2025 年の USENIX 研究によると約 9% の割合で発生するクロスエコシステム幻覚をカバーします——AI が実際に使用しているエコシステムには存在しない別のエコシステムのパッケージを推奨するケース。 + +### グレースフルデグレデーション + +`slopcheck` が利用できない場合(インストールされていない、または調査時に pip インストールが失敗した)、GSD は可能な限り厳格なフォールバックを適用します:**すべての推奨パッケージが `[ASSUMED]` とタグ付けされ**、プランナーはすべてのインストールを `checkpoint:human-verify` タスクでゲートします。調査と計画は通常どおり進行します——システムはツールの依存関係の欠落でハードフェイルすることはありません。これは通常フローより意図的に厳格です:slopcheck の利用不可は、すべてのパッケージインストールに人間のチェックポイントを付与することを意味します。 + +`slopcheck` ツールは MIT ライセンスで pip インストール可能です。廃止された場合でも、`[ASSUMED]` ゲートフォールバックにより、人間チェックポイントカバレッジが維持されます。 + +--- + +## レイヤー 2 — プロンプトインジェクション防御 + +### 脅威 + +GSD Core は LLM システムプロンプトになる Markdown ファイルを生成します。調査パイプラインは外部ウェブコンテンツを読み取ります;計画パイプラインはユーザー提供のテキスト(`--text-file`、`--prd`)を組み込みます;実行パイプラインは後でエージェントコンテキストとして再読み取りされる計画アーティファクトを書きます。これらのアーティファクトに流れ込む任意のユーザー制御テキストは、潜在的な **間接プロンプトインジェクション** ベクターです——一度システムプロンプトの中に入ると、エージェントの指示を上書きしたり情報を窃取しようとする攻撃者制御の文字列。 + +### 防御の仕組み + +GSD Core はプロンプトインジェクションを 3 つのレベルで対処します。 + +**入力検証(`security.cjs`)。** `get-shit-done/bin/lib/security.cjs` モジュールは中心的なセキュリティユーティリティです。以下を提供します: + +- パストラバーサル防止:ユーザー提供のファイルパス(`--text-file`、`--prd`)はプロジェクトディレクトリ内で解決されることを検証し、macOS の `/var` → `/private/var` シンリンク解決を明示的に処理 +- プロンプトインジェクション検出:既知のインジェクションパターン(ロールオーバーライド、指示バイパス、システムタグインジェクション)が計画アーティファクトに入る前にユーザー提供テキストをスキャン +- 安全な JSON パース:クラフトされた JSON ペイロードによるプロトタイプ汚染攻撃を防ぐラッパー +- シェル引数検証:サブシェルコマンドに渡される引数の使用前検証 + +**ランタイムフック:`gsd-prompt-guard.js`。** このフックは `.planning/` ファイルを対象とするすべての Write または Edit 呼び出しで発火します。書き込まれるコンテンツを `security.cjs` と同じインジェクションパターンでスキャンします(サブセットがフックの独立性のために直接インライン化されています——フックはモジュールを `require()` しないため、モジュールパスが変わっても実行されます)。検出は **アドバイザリーのみ**:フックは発見をログに記録しますが書き込みをブロックしません。理由は、正当な計画書き込みでの偽陽性ブロックは、セカンダリスキャンレイヤーで見逃したインジェクションより破壊的だからです。 + +**ランタイムフック:`gsd-read-injection-scanner.js`。** このフックはすべての Read ツール呼び出しの出力で発火します。GSD がエージェントのコンテキストに組み込もうとしているファイルの *読み取ったばかりのコンテンツ* をスキャンし、攻撃者が命令を埋め込んでいるケースをキャッチします。 + +**CI スキャナー。** `prompt-injection-scan.test.cjs` はテストスイートの一部として、すべてのエージェント、ワークフロー、コマンドファイルに埋め込まれたインジェクションベクターをスキャンします。これは GSD ソース自体でのインジェクション試みをキャッチします——たとえば、ワークフローファイルにロールオーバーライド命令を追加するよう変更したサプライチェーン攻撃。 + +### Read Injection Scanner vs Prompt Guard + +2 つのフックは補完的な面をカバーします。`gsd-prompt-guard.js` は *計画アーティファクトへの書き込み* を監視します——植え付けられているインジェクションをキャッチします。`gsd-read-injection-scanner.js` は *任意のファイルの読み取り* を監視します——外部コンテンツ(依存関係の README、サードパーティの設定ファイル、ユーザー提供のドキュメント)から取り込まれるインジェクションをキャッチします。合わせて、取り込み → 保存 → 再読み取りのライフサイクルを括ります。 + +--- + +## レイヤー 3 — リポジトリおよび依存関係の整合性 + +GSD のランタイム動作の上流で、`open-gsd` 組織はリポジトリおよびパッケージレベルで制御を強制しています。これらは [`docs/security/baseline.md`](../../security/baseline.md) に完全に記録されており、ここでは完全性のために要約します。 + +**依存関係の整合性。** すべてのサードパーティ依存関係は `package-lock.json` でピン留めされ、インストール前に公開されたチェックサムに対して検証されます。`scripts/check-npm-integrity.cjs` ゲートは CI 時に無効なバージョン、欠落パッケージ、余分なパッケージを検出します。これにより GSD 自身の依存関係に対する依存関係混同とタイポスクワッティング攻撃を軽減します。 + +**シークレットスキャン。** すべてのコミットと PR にはハードコードされたシークレットのスキャンが実施されます。意図的なテストフィクスチャは、プロジェクト標準の除外文法でアノテーションが必要です(アノテーション形式については `SECURITY.md` を参照)。アノテーションなしの抑制は CI を失敗させます。 + +**ロケールセーフなテキストスキャン。** 出力とユーザー向け文字列は、Unicode ホモグリフ、双方向オーバーライド文字、不可視の Unicode についてスキャンされます——CVE-2021-42574(「トロイの木馬ソース」)で記録された、差分に悪意のあるコンテンツを隠すことができる攻撃クラス。 + +--- + +## トレードオフと限界 + +ここで説明するセキュリティモデルは、AI 駆動開発の攻撃面を意味のある程度低減します。サプライチェーンリスクを排除するものではありません。 + +**パッケージ正当性ゲートが低減するもの:** 幻覚されたまたは攻撃者登録済みのパッケージが人間のチェックポイントなしに `npm install` に届く確率。`[SLOP]` ゲートは高信頼度の悪質なパッケージを完全に除去します;`[SUS]`/`[ASSUMED]` ゲートは実行前に人間のレビューを要求します。これによりスロップスクワッティング攻撃の成功コストが実質的に引き上げられます。 + +**パッケージ正当性ゲートが排除しないもの:** 後で侵害された正規パッケージ(アカウント乗っ取り、そのパッケージ自体のツリーでの依存関係混同)は、調査時に登録シグナルを確認する slopcheck ではキャッチされません。その種の攻撃に対するコントロールは、依存関係整合性レイヤーのロックファイルと `npm audit` です。 + +**プロンプトインジェクション防御が低減するもの:** 計画アーティファクト内のユーザー制御テキストがエージェントの指示を正常に上書きする確率。既知のインジェクション形式のパターンマッチングは一般的なケースをキャッチします;新しいジェイルブレイクや低シグナルのインジェクションは検出されない可能性があります。アドバイザリーのみの姿勢は、検出がログに記録されるがブロックされないことを意味します——検出でハード停止するコストではなく、ワークフロー継続性を保持する意図的な選択。 + +**プロンプトインジェクション防御が排除しないもの:** 既知のパターンにマッチしない十分に創造的なインジェクション、またはフックがカバーしないチャンネルを通じて届くインジェクション(たとえば、サブエージェントがドキュメントをブラウズする際に読み取る依存関係の公開 README にインジェクトされたコンテンツ)。多層防御は各レイヤーが攻撃を困難にすることを意味し、単一のレイヤーが不可能にすることを意味しません。 + +**脆弱性の報告。** `https://github.com/open-gsd/gsd-core/security/advisories/new` でプライベートな GitHub セキュリティアドバイザリを通じて報告してください。パブリックなイシューを開かないでください。対応タイムラインと開示ポリシーについては [SECURITY.md](../../../SECURITY.md) を参照してください。 + +--- + +## Related + +- [コマンド](../COMMANDS.md) — セキュリティ関連フラグを含む `/gsd-secure-phase` と `/gsd-code-review` +- [アーキテクチャ § フックシステム](../ARCHITECTURE.md#hook-system) — すべてのフック、そのイベントトリガー、安全性プロパティの実装詳細 +- [SECURITY.md](../../../SECURITY.md) — 脆弱性報告、組織全体のセキュリティベースライン、シークレットスキャン除外ガバナンス、依存関係整合性検証 +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/explanation/the-phase-loop.md b/docs/ja-JP/explanation/the-phase-loop.md new file mode 100644 index 000000000..00b4e4d2d --- /dev/null +++ b/docs/ja-JP/explanation/the-phase-loop.md @@ -0,0 +1,129 @@ +# フェーズループ + +> GSD Core が作業を整理する方法の核心的なメンタルモデル。 + +--- + +## ループとは何か + +GSD Core はすべての開発作業を繰り返すサイクルとして構造化します: + +```text +Discuss → (UI デザイン) → Plan → Execute → Verify → Ship +``` + +**フェーズ** と呼ばれる作業の各単位は、順番にこれらのステップを経ていきます。ループは形式的なものではありません。各ステップは、前のステップだけでは防ぎきれない特定のクラスの失敗を防ぐために存在します。 + +このドキュメントは、ループがなぜこの形をしているかを説明します。各ステップの実行方法については、下部にリンクされた how-to ガイドを参照してください。 + +--- + +## 各ステップが存在する理由 + +### Discuss(議論) + +計画は、*何を*作るかだけでなく、*どのように*作るかを知るまでは始められません。`ROADMAP.md` のフェーズ目標は成果を記述します。Discuss ステップは、その成果への道を形作る実装上の決定を記録します:どのライブラリを使うか、どのエラーハンドリング戦略か、機能がルートごとかグローバルか、エッジケースはどう振る舞うべきか。 + +Discuss ステップなしでは、プランナーがこれらの決定を自分で行わなければなりません。うまく推測することもありますが、もっともらしいが誤った推測をすることも多く——一貫性はあっても実際の好みとずれた計画を生み出します。実行が終わってエラーに気づく頃には、かなりの作業を巻き戻すことになります。 + +Discuss ステップは意図的に軽量です。それは仕様書を書く演習ではなく、会話です。出力はフェーズディレクトリ内の `CONTEXT.md` です:プランナー、エグゼキューター、検証者がすべて読める決定の構造化された記録です。会話には数分かかります。それが何時間もの手直しを節約できます。 + +### UI デザイン(任意) + +視覚的なコンポーネントを持つフェーズの場合、Discuss と Plan の間にオプションの `/gsd-ui-phase` ステップがあります。これは `UI-SPEC.md` を生成します——コードが書かれる前にレイアウト、インタラクション、視覚的な振る舞いを説明するデザインコントラクトです。デザインの曖昧さが異なる実装上の選択を生む可能性があるほど UI が複雑な場合に、このステップを実行する価値があります。明確なデザインコントラクトは、再実装するよりずっと安く書けます。 + +### Plan(計画) + +Plan ステップは、実行に必要な調査、分解、構造的な思考を行います。フレッシュコンテキストサブエージェントのシーケンスとして実行されます:エコシステムを調査して `RESEARCH.md` に発見を記録する調査エージェント、調査と `CONTEXT.md` の両方を読んで `PLAN.md` ファイルを生成するプランナー、そして計画が完全で一貫していてスコープ内にあることを検証するプランチェッカー。 + +計画には何が含まれるのか?各 `PLAN.md` は作業の境界が明確な単位を記述します:変更するファイル、行う特定の変更、完了を定義する受け入れ基準。計画は依存関係のウェーブ順に並べられ、並行実行が安全になります——同じウェーブ内のエグゼキューターは重複しない懸念事項を担当します。 + +Plan ステップは曖昧さが最もコストが高い瞬間です。曖昧な計画は仮定を立てるエグゼキューターを生み出します。同じ懸念について異なる仮定を立てる複数の並行エグゼキューターは競合を生み出します。プランチェッカーの仕事は、実行が始まった後ではなく、その前にこれらをキャッチすることです。 + +### Execute(実行) + +実行は計画を実施します。各エグゼキューターは、必要なものだけを正確にロードしたフレッシュな 200k トークンのコンテキストウィンドウを受け取ります:プロジェクトサマリー、フェーズコンテキスト、調査結果、そして自分のタスクのための特定の `PLAN.md`。それ以上でも以下でもありません。 + +エグゼキューターはコードを書いてアトミックにコミットします。各コミットは計画内の完了したタスクに対応します。並行エグゼキューターのウェーブが完了すると、オーケストレーターはその状態をマージして次のウェーブを開始します。 + +エグゼキューターのフレッシュコンテキストは便宜のためではありません——コンテキスト腐敗を防ぐメカニズムです。180k トークンの蓄積されたセッション履歴で実行するエグゼキューターは劣化しています。クリーンな状態で開始し、計画が必要とするものだけを読み取るエグゼキューターは、最大能力で動作しています。 + +### Verify(検証) + +すべてのエグゼキューターが完了した後、検証エージェントはフェーズ目標、`CONTEXT.md` の決定、計画、実行サマリーを読み取り、構築されたものが意図されたものと一致するかを確認します。`VERIFICATION.md` を生成し、不一致があれば対象を絞った修正計画を生成します。 + +検証はテストだけではありません。要件カバレッジ(すべての REQ-ID が対処されたか?)、決定カバレッジ(`CONTEXT.md` に記録された決定が実際に実装されたか?)、そして全体的なフェーズ目標との整合性を確認します。実行がエラーなく終了したからフェーズが完了なのではありません。構築されたものが計画されたものであり、計画されたものが決定されたものである場合に完了です。 + +### Ship(出荷) + +Ship ステップはプルリクエストを作成し、フェーズアーティファクトをアーカイブします。`STATE.md` はフェーズ完了としてマークするために更新されます。その後ループは次のフェーズのために再び始まります。 + +--- + +## マイルストーンとフェーズ + +**マイルストーン** はバージョンサイクルです——プロジェクトの意味のあるリリース可能な増分。名前、バージョン番号、そして何を提供しなければならないかを定義する要件のセットを持ちます。すべてのフェーズが出荷され、要件がカバーされるとマイルストーンは完了です。 + +**フェーズ** はマイルストーン内の一つの作業単位です。フェーズには目標、それが対処する要件のセット、それを実装する計画のセットがあります。 + +この関係は重要です。なぜならマイルストーンとフェーズは異なるスコープの懸念事項を持っているからです。マイルストーンは「このバージョンの製品は何をするのか、しないのか?」と問います。フェーズは「調査、計画、実行、検証ができる次の境界が明確なものは何か?」と問います。 + +マイルストーンの境界は自然な製品境界——デプロイ可能な API、動作する UI フロー、完全なデータモデル——に引かれます。フェーズの境界は、ループが手に負えなくなることなく一度のループで安全に実行できることの限界に引かれます。 + +--- + +## 良いフェーズスコープとは + +これはループで最もよく見られる摩擦の原因なので、詳しく考える価値があります。 + +大きすぎるフェーズはそれ自体が調査プロジェクトになります。プランナーは独立した計画に分解するのに苦労します。後のウェーブのエグゼキューターは前のウェーブを待ちながらブロックされます。検証は対象を絞ったレビューではなく全体監査になります。フィードバックサイクルが時間から日に延びて、多くのコードが書かれた後に根本的な設計ミスを発見するリスクが急激に高まります。 + +小さすぎるフェーズは自然に属する作業を断片化します。数行の計画ファイル、数分で完了するフェーズ、実行コストを矮小化する計画オーバーヘッドが生じます。ループは役に立つというよりお役所的に感じられます。 + +良いフェーズスコープとは: + +- 目標が明らかに些細でも疑わしいほど広くもない単一の文で述べられる。 +- 計画するために必要な調査が境界を持つ——エコシステムの問題に、他のフェーズが先に完了することに依存しない答えがある。 +- 実行が少数の非重複する計画に並行化できる(数十ではなく)。 +- 検証者がコードベース全体を読まずに確認できる、明確でテスト可能な完了の定義がある。 + +具体的には:「HMAC-SHA256 署名検証ミドルウェアを追加する」は良いフェーズスコープです。「認証システムを構築する」は通常そうではありません——ほぼ常に、別々のフェーズの方が良い複数の独立した懸念事項が含まれています。「README のタイポを修正する」はループが価値を加えるしきい値を下回っています;代わりに `/gsd-quick` を使ってください。 + +迷ったら、分割してください。小さいフェーズは速く完了し、より自信を持って検証でき、設計上の決定が誤りとわかった場合に方向修正しやすくなります。 + +--- + +## `.planning/` はどのようにループをまたいで状態を維持するか + +ループは単一のセッションではありません。調査、計画立案、実行は複数のセッションにわたって行われ、その間にコンテキストリセットが発生することもあります。`.planning/` ディレクトリがこれを可能にするものです。 + +ループの各ステップは以前のステップが生み出したアーティファクトを読み取り、後のステップのためのアーティファクトを書き出します。Discuss ステップが生成する CONTEXT.md は、プランナーが実行するときに——たとえそれが数時間後の別のセッションであっても——まだ利用可能です。プランナーが生成する PLAN.md ファイルは、エグゼキューターが実行するときに——再起動をまたいでも——まだ利用可能です。検証者が書く VERIFICATION.md は、フェーズをレビューするときにまだ利用可能です。 + +`STATE.md` はこれすべての上のナビゲーション層です。ループ内でプロジェクトが現在どこにいるかを正確に記録します:どのマイルストーンがアクティブか、どのフェーズが進行中か、どの計画が完了していてどれが保留中か。自分の方向を確認する必要があるエージェントやワークフローは、まず `STATE.md` を読み取ります。 + +これらのファイルの正確な構造については、[計画アーティファクト](../reference/planning-artifacts.md) と [STATE.md スキーマ](../reference/state-md.md) を参照してください。 + +--- + +## ループはリズムであり、制約ではない + +ループを官僚主義として見たくなる誘惑があります——コードを書く許可を得る前に実行しなければならない必須ステップのセット。そのフレーミングは誤りです。 + +ループは、各ステップが後で修正するのが本当にコストが高い失敗を防ぐために存在します。Discuss は誤った仮定の上での計画立案を防ぎます。Plan は根本的に壊れた設計の実行を防ぎます。Verify は仕様を外れた作業の出荷を防ぎます。これらは作り上げられた問題ではありません。実際の機能規模での AI 支援開発の実際の失敗モードです。 + +ループがうまく機能すれば、リズムのように感じます:各ステップが前のステップが仕事をしたために明確である、集中した境界を持つ作業のカデンス。オーバーヘッドは現実ですが、前払いです——何時間もの手直しではなく数分の計画として支払われます。 + +ループが正当化されるしきい値を下回る作業には、GSD Core はより軽量なプリミティブを提供します。フェーズループは一つのツールであり、唯一のツールではありません。 + +--- + +## Related + +- [コンテキストエンジニアリング](context-engineering.md) — フレッシュコンテキストサブエージェントがなぜループを必要にする品質低下を防ぐのか +- [フェーズの議論](../how-to/discuss-a-phase.md) +- [フェーズの計画](../how-to/plan-a-phase.md) +- [フェーズの実行](../how-to/execute-a-phase.md) +- [検証と出荷](../how-to/verify-and-ship.md) +- [計画アーティファクト](../reference/planning-artifacts.md) +- [STATE.md スキーマ](../reference/state-md.md) +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/how-to/configure-model-profiles.md b/docs/ja-JP/how-to/configure-model-profiles.md new file mode 100644 index 000000000..2cb243c82 --- /dev/null +++ b/docs/ja-JP/how-to/configure-model-profiles.md @@ -0,0 +1,218 @@ +# モデルプロファイルの設定方法 + +プロジェクトに適したモデルティア戦略を選び、大規模なオーバーライドブロックを書かずに個々のエージェントやフェーズタイプを調整します。このガイドは最もシンプルなレバーから始め、動的ルーティングまで段階的に説明します。 + +--- + +## 4 つのプロファイル(`adaptive` と `inherit` も含む) + +`.planning/config.json` または `/gsd-config --profile ` で `model_profile` を設定します: + +| プロファイル | プランナー | エグゼキュータ | リサーチャー | ベリファイア | 使用場面 | +|---------|---------|----------|-------------|----------|----------| +| `quality` | Opus | Opus | Opus | Sonnet | コストは二の次で本番品質の作業 | +| `balanced` | Opus | Sonnet | Sonnet | Sonnet | 通常の開発 — デフォルト | +| `budget` | Sonnet | Sonnet | Haiku | Haiku | 高速プロトタイピング、コスト重視の環境 | +| `adaptive` | Opus | Sonnet | Sonnet | Sonnet | ランタイム対応プロファイルで他のティアと同様に解決。ランタイムを頻繁に切り替える場合に使用 | +| `inherit` | (セッションモデル) | (セッションモデル) | (セッションモデル) | (セッションモデル) | Anthropic 以外のプロバイダー(OpenRouter、ローカルモデル)— すべてのエージェントが現在のセッションモデルに従う | + +上の表は代表的なサブセットを示しています。出荷済みの全 33 エージェントは `sdk/shared/model-catalog.json` にプロファイルごとの明示的なティア割り当てを持っています。完全なテーブルは設定リファレンスの [モデルプロファイル](../CONFIGURATION.md#model-profiles) を参照してください。 + +**コマンドによるクイック切り替え:** + +```bash +/gsd-config --profile balanced # 通常の開発 +/gsd-config --profile budget # プロトタイピングまたはコストの高いフェーズ +/gsd-config --profile quality # 本番リリース +/gsd-config --profile inherit # OpenRouter、ローカルモデル +``` + +**または `.planning/config.json` を直接編集:** + +```json +{ + "model_profile": "balanced" +} +``` + +--- + +## エージェントごとのオーバーライド(`model_overrides`) + +プロファイル全体を変えずに単一エージェントのティアを変更したい場合は `model_overrides` を使用します: + +```json +{ + "model_profile": "balanced", + "model_overrides": { + "gsd-executor": "opus", + "gsd-codebase-mapper": "haiku" + } +} +``` + +有効な値: `opus`、`sonnet`、`haiku`、`inherit`、または完全修飾のモデル ID(例: `"openai/o3"`、`"google/gemini-2.5-pro"`)。 + +`model_overrides` はプロジェクト単位で `.planning/config.json` に、またはグローバルに `~/.gsd/defaults.json` に設定できます。競合する場合はプロジェクト単位のエントリが優先されます。競合しないグローバルエントリは保持されます。 + +**Codex と OpenCode に関する重要事項:** これらのランタイムはインストール時に解決済みのモデルを各エージェントの静的設定に埋め込みます。`model_overrides` を編集した後は、変更を反映させるためにインストーラーを再実行してください: + +```bash +npx @opengsd/gsd-core@latest --codex --global # または --opencode、--kilo など +``` + +--- + +## フェーズタイプごとのモデル(`models`) + +33 のエージェント名をすべて覚えずに「プランニングは Opus、それ以外は Sonnet」と指定したい場合は `models` ブロックを使用します。6 つのフェーズタイプをティアエイリアスにマッピングします: + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + } +} +``` + +フェーズタイプとそのエージェント: + +| フェーズタイプ | 対象エージェント | +|---|---| +| `planning` | `gsd-planner`、`gsd-roadmapper`、`gsd-pattern-mapper` | +| `research` | `gsd-phase-researcher`、`gsd-project-researcher`、`gsd-research-synthesizer`、`gsd-codebase-mapper`、`gsd-ui-researcher` | +| `execution` | `gsd-executor`、`gsd-debugger`、`gsd-doc-writer` | +| `verification` | `gsd-verifier`、`gsd-plan-checker`、`gsd-integration-checker`、`gsd-nyquist-auditor`、`gsd-ui-checker`、`gsd-ui-auditor`、`gsd-doc-verifier` | +| `discuss`、`completion` | 予約済み — 現在はサブエージェントなし。スキーマの前方互換性のために受け入れられます | + +`models` ブロックはティアエイリアス(`opus`、`sonnet`、`haiku`、`inherit`)のみを受け入れます。特定のエージェントに完全修飾のモデル ID を指定するには `model_overrides` を使用してください。 + +**`models` とエージェントごとの例外を組み合わせる:** + +```json +{ + "model_profile": "balanced", + "models": { + "research": "sonnet" + }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +`gsd-codebase-mapper` が `haiku` に固定されている*以外の*すべてのリサーチエージェントは `sonnet` に解決されます。 + +--- + +## 動的ルーティング — 安いものから始めて失敗時にエスカレート + +デフォルトでは安価なティアを使い、エージェントが品質ゲートで失敗した場合のみエスカレートしたい場合は `dynamic_routing` を有効にします: + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +各エージェントはデフォルトのティア(`light`、`standard`、または `heavy`)を持っています。最初の試行では GSD が `tier_models[default_tier]` を選びます。オーケストレータがソフト失敗(検証が不確定、プランチェックがフラグを立てた、など)を検出した場合、エージェントを 1 ティア上で再起動します。`max_escalations` は合計リトライ数の上限です。 + +すでに `heavy` のエージェントはこれ以上エスカレートできません。 + +**エスカレーションを無効にして動的解決を維持する:** + +```json +{ + "dynamic_routing": { + "enabled": true, + "escalate_on_failure": false + } +} +``` + +結果に関係なく、すべての試行で `tier_models[default_tier]` が使用されます — エスカレーション動作なしに明示的なティアとモデルのマッピングが必要な場合に役立ちます。 + +`dynamic_routing` は**デフォルトで無効**です。ブロックを省略するか `enabled: false` を設定すると静的解決が維持されます。 + +--- + +## Anthropic 以外のランタイムでの GSD 使用 + +Codex、OpenCode、Gemini CLI、または Kilo 向けに GSD をインストールした場合、インストーラーはすでに設定に `resolve_model_ids: "omit"` を設定しています。これにより GSD は Anthropic のモデル ID 解決をスキップし、ランタイムが独自のデフォルトモデルを選択できるようにします。基本的なケースでは手動設定は不要です。 + +**Codex でティアードモデルを使用したい場合:** + +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` + +GSD はランタイムのティアマップで定義された Codex ネイティブのモデルと推論エフォートに各ティアエイリアスを解決します。 + +**Anthropic 以外のランタイムでエージェントごとのモデル ID を使用したい場合:** + +```json +{ + "resolve_model_ids": "omit", + "model_overrides": { + "gsd-planner": "o3", + "gsd-executor": "o4-mini", + "gsd-debugger": "o3" + } +} +``` + +ランタイム対応プロファイルの完全なリファレンスと `model_policy` サーフェス(v1.42 で追加されたプロバイダー中立プリセット)については [設定リファレンス — モデルプロファイル](../CONFIGURATION.md#model-profiles) を参照してください。 + +--- + +## 解決の優先順位(高いものから低いものへ) + +複数のレイヤーが適用される場合、リゾルバーは最も優先度の高いエントリを選択します: + +```text +1. model_overrides[] — エージェントごと; 完全 ID; 対象を絞った例外 +2. dynamic_routing.tier_models[] — 有効時; ソフト失敗でエスカレート +3. models[] — 粗いフェーズレベルのティア +4. model_profile(エージェントごとの列) — グローバルティア戦略 +5. ランタイムのデフォルト — それ以外が適用されない場合 +``` + +--- + +## 適切なレバーを選ぶ + +| やりたいこと | 使うもの | +|---|---| +| すべてのエージェントに 1 つのティア戦略を適用する | `model_profile` | +| 粗いフェーズレベルの調整(「プランニングは Opus」) | `models.` | +| エージェントごとの細かい設定(「コードベースマッパーを強制的に Haiku に」) | `model_overrides[]` | +| 特定のエージェントに完全修飾のモデル ID を設定する | `model_overrides[]: "openai/gpt-5"` | +| 安価から始めて失敗時のみエスカレートする | `dynamic_routing` | +| すべてのエージェントがセッションモデルに従う(Anthropic 以外のプロバイダー) | `model_profile: "inherit"` | + +--- + +## Related + +- [設定リファレンス](../CONFIGURATION.md) +- [マルチエージェントオーケストレーション](../explanation/multi-agent-orchestration.md) +- [コマンドリファレンス](../COMMANDS.md) +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/how-to/debug-a-failed-execution.md b/docs/ja-JP/how-to/debug-a-failed-execution.md new file mode 100644 index 000000000..7bf894561 --- /dev/null +++ b/docs/ja-JP/how-to/debug-a-failed-execution.md @@ -0,0 +1,178 @@ +# フェーズ実行の失敗をデバッグする方法 + +**目標:** フェーズ実行が失敗・停止した場合、または不完全な作業が生成された場合に回復し、すでに成功した作業を繰り返すことなく、クリーンな状態で再開する。 + +**前提条件:** `/gsd-execute-phase N` を実行したが、`VERIFICATION.md` が書き込まれる前に実行が停止した、または予期しない出力・ファイル不足・スピナーの停止が確認された状態であること。 + +--- + +## 実行が停止したのか失敗したのかを判断する + +回復操作を行う前に、実際に何が起きたかを確認してください。 + +### 「Spawning…」のまま 1〜5 分間出力がない場合 + +これはフリーズではなく正常な動作です。GSD のサブエージェントは独立したコンテキストウィンドウで動作します。スポーン行の liveness ノートがこれを確認しています。セッションを中断しないでください。 + +10 分以上経っても結果が得られない場合は、Claude Code のサイドバーを確認してください。エージェントのタスクが完了と表示されているにもかかわらず出力が表示されない場合、コンテキスト切り替え時に結果が失われた可能性があります。同じコマンドを再実行してください。 + +```bash +/gsd-execute-phase 1 +``` + +GSD はエグゼキューターを dispatching する前に `SUMMARY.md` ファイルを確認します。すでに `SUMMARY.md` があるプランは自動的にスキップされます。 + +### 実行がエラーメッセージとともにウェーブの途中で停止した場合 + +git 履歴を確認して、どのプランが正常にコミットされたかを調べます。 + +```bash +git log --oneline -20 +``` + +作業をコミットしたプランには `feat(01-02): …` のようなエントリがあります。コミットのないプランは未完了であり、再実行時に再度実行されます。 + +### エグゼキューターがコードをコミットしたが SUMMARY.md を書き込まなかった場合 + +GSD は次回の実行時にこれを検出し、3 つの選択肢を持つ安全な再開ゲートを表示します。 + +- **手動でクローズアウト** — コミットを自分で確認し、`SUMMARY.md` を書いてから再実行する。 +- **最初からやり直し** — 新しいエグゼキューターを dispatching する前に、部分的なコミットを revert または上書きする。 +- **マーク・アンド・スキップ** — 異常を記録して続行する(明示的な確認が必要)。 + +--- + +## 根本原因を診断する + +### `/gsd-debug --diagnose` を実行する + +実行が誤った出力・スタブコード・検証失敗を生成した場合、修正を適用せずに診断のみを行うモードで調査します。 + +```bash +/gsd-debug --diagnose "Phase 2 executor produced stubs instead of real code" +``` + +`--diagnose` はファイルに触れることなく根本原因で停止します。後で調査を再開できるよう、セッションファイルを `.planning/debug/.md` に作成します。 + +修正も含む完全なデバッグセッションを開始するには: + +```bash +/gsd-debug "Login middleware not handling 401 correctly after phase 3" +``` + +GSD は症状を収集し、科学的手法を使って体系的な調査を行い、修正案を提案します。設定で `tdd_mode: true` が有効な場合、修正を適用する前に失敗するテストが必要です。 + +### アクティブなデバッグセッションを確認する + +```bash +/gsd-debug list +``` + +現在の仮説と次のアクションとともに、すべてのオープンセッションを表示します。特定のセッションを再開するには: + +```bash +/gsd-debug continue +``` + +--- + +## `/gsd-forensics` でポストモーテムを実行する + +エラー出力から原因が明確でない場合(例:プランが存在しないファイルを参照している、実行が予期しない結果を生成した、状態が破損しているように見える)、フォレンジック調査を実行します。 + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +GSD は git 履歴、`.planning/` 成果物の完全性、STATE.md の一貫性、未コミットの作業、孤立したワークツリーを分析します。構造化されたレポートを `.planning/forensics/report-.md` に書き込み、推奨される修復手順を提示します。 + +`/gsd-forensics` は読み取り専用です。プロジェクトファイルを変更することはありません。 + +**検出内容:** + +- **スタックループ** — 短い時間ウィンドウ内に同じファイルが 3 回以上の連続コミットに現れる(コミットメッセージが類似している場合は HIGH 信頼度) +- **成果物の欠落** — フェーズにコミットはあるが `SUMMARY.md` または `VERIFICATION.md` がない +- **放棄された作業** — 未コミットの変更があり STATE.md が実行中途を示し、最終コミットが 2 時間以上前 +- **クラッシュまたは中断** — 未コミットの変更とアクティブな実行状態、および孤立したワークツリーの組み合わせ +- **スコープドリフト** — 直近のコミットが現在のフェーズの想定ファイルセット外のファイルに触れている + +--- + +## 回復後に実行を再開する + +根本的な問題が解決したら、実行コマンドを再実行します。 + +```bash +/gsd-execute-phase 1 +``` + +GSD はすでに `SUMMARY.md` が存在するプランをスキップし、残りのプランのみにエグゼキューターを dispatch します。 + +特定のウェーブだけを再実行する必要がある場合: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +dispatching 前に `.planning/` の整合性を検証したい場合: + +```bash +/gsd-execute-phase 1 --validate +``` + +--- + +## `/gsd-undo` でロールバックする + +実行が生成したコードを完全に破棄したい場合は、手動の `git revert` ではなくプランマニフェストを使ってロールバックします。 + +### 単一プランをロールバックする + +```bash +/gsd-undo --plan 03-02 +``` + +フェーズ `3` のプラン `02` に関するすべてのコミットを revert します。GSD は変更を書き込む前に確認ゲートを表示します。 + +### フェーズ全体をロールバックする + +```bash +/gsd-undo --phase 03 +``` + +フェーズ `3` に関するすべてのコミットを revert します。GSD は後続フェーズがこのフェーズに依存しているかどうかを確認し、続行前に警告を表示します。 + +### 直近のコミットからインタラクティブに選ぶ + +```bash +/gsd-undo --last 5 +``` + +最近の 5 件の GSD コミットを表示し、revert するものを選択できます。 + +--- + +## 中断後にセッションコンテキストを復元する + +コンテキストリセットや新しいセッションの後にプロジェクトに戻った場合: + +```bash +/gsd-resume-work +``` + +最後のハンドオフから完全なセッションコンテキスト(現在のフェーズ、ブロッカー、実行が停止した場所を含む)を復元します。 + +または、現在の位置を確認して正しい次のステップに自動的に進むには: + +```bash +/gsd-progress --next +``` + +--- + +## Related + +- [フェーズを実行する](execute-a-phase.md) +- [回復とトラブルシューティング](recover-and-troubleshoot.md) +- [コマンドリファレンス](../COMMANDS.md) +- [ドキュメント一覧](../README.md) diff --git a/docs/ja-JP/how-to/design-a-ui-phase.md b/docs/ja-JP/how-to/design-a-ui-phase.md new file mode 100644 index 000000000..7b9a77ada --- /dev/null +++ b/docs/ja-JP/how-to/design-a-ui-phase.md @@ -0,0 +1,149 @@ +# UI フェーズをデザインする方法 + +**目標:** プランナーがタスクを書く前に、スペーシング・カラー・タイポグラフィ・コピーライティングの決定を固定したロック済みの UI デザインコントラクト(`UI-SPEC.md`)を作成し、実行中のアドホックなスタイリング選択による視覚的な一貫性の欠如を防ぐ。 + +**前提条件:** `.planning/ROADMAP.md` が存在すること。フェーズにフロントエンドまたは UI 作業が含まれること。事前に `/gsd-discuss-phase N` を実行することを強く推奨します。UI リサーチャーは `CONTEXT.md` を読み込んで、すでに決定済みの事項を再確認しないようにします。 + +--- + +## このフェーズに UI コントラクトが必要かどうかを判断する + +すべてのフェーズで `/gsd-ui-phase` が必要なわけではありません。以下の場合に使用してください。 + +- フェーズが新しい UI サーフェス(ページ、フロー、レイアウト)を導入する +- 複数のコンポーネントが構築され、視覚的な一貫性が重要 +- 新しいプロジェクトのフロントエンドを開始し、デザインシステムのベースラインが必要 +- 既存プロジェクトに大幅な UI 作業を追加し、実行前にトークン・スペーシング・カラーを固定したい + +以下の場合はスキップしてください。 + +- フェーズが純粋にバックエンド、インフラ、またはユーザー向け出力のないデータ作業 +- 以前のフェーズの UI-SPEC.md がすでに存在し、このフェーズが新しいサーフェスを導入せず同一のビジュアルパターンで構築する + +確信が持てない場合、安全ゲートが促してくれます。`workflow.ui_safety_gate` が有効(デフォルト)な場合、`/gsd-plan-phase` はフロントエンド作業を検出したが UI-SPEC.md がない場合に警告を表示し、先に `/gsd-ui-phase` を実行するかどうかを確認します。 + +--- + +## UI デザインコントラクトを実行する + +```bash +/gsd-ui-phase 2 +``` + +フェーズ番号を省略した場合、GSD Core は現在のフェーズを対象とします。 + +コマンドは 2 つのステージで実行されます。 + +1. **`gsd-ui-researcher`** — `CONTEXT.md`、`RESEARCH.md`、`REQUIREMENTS.md` を読み込んで既存の決定事項を確認し、デザインシステムの状態(shadcn の `components.json`、Tailwind 設定、既存トークン)を検出し、スペーシング・カラー・タイポグラフィ・コピーライティング・レジストリ安全性の 5 つの領域で未回答のデザイン問題のみを確認します。 +2. **`gsd-ui-checker`** — 生成された `UI-SPEC.md` を 6 つの側面で検証します。問題が発見された場合、指摘された項目のみを対象に研究者が再実行されるリビジョンループが起動します(最大 2 回のイテレーション)。 + +**出力:** `.planning/phases/{phase-dir}/` 内の `{padded_phase}-UI-SPEC.md`。 + +--- + +## UI-SPEC がカバーする内容 + +リサーチャーは 5 つの領域で決定を固定します。 + +| 領域 | 例 | +|---|---| +| **スペーシング** | ベーススケール(4px または 8px)、グリッドの整合、コンポーネントのパディング | +| **カラー** | プライマリ・アクセント・ニュートラルパレット;60/30/10 ルール;ダークモードの考慮 | +| **タイポグラフィ** | フォントファミリー、サイズ・ウェイトスケールの制約、見出し階層 | +| **コピーライティング** | CTA ラベル、空の状態のメッセージ、エラー状態のコピー、ローディングインジケーター | +| **レジストリ安全性** | shadcn コンポーネントの検査プロトコル(以下を参照) | + +チェッカーは 6 つの柱(それぞれ 1〜4 点)でスペックを検証します:コピーライティング、ビジュアル、カラー、タイポグラフィ、スペーシング、エクスペリエンスデザイン(ローディング / エラー / 空の状態のカバレッジ)。 + +--- + +## shadcn の初期化 + +React、Next.js、Vite プロジェクトの場合、`components.json` が見つからない場合はリサーチャーが shadcn の初期化を提案します。フローは以下の通りです。 + +1. `ui.shadcn.com/create` にアクセスしてプリセット(カラー、ボーダー半径、フォント)を設定する +2. プリセット文字列をコピーする +3. 以下を実行する: + +```bash +npx shadcn init --preset +``` + +プリセット文字列は GSD Core の計画成果物として第一級の扱いを受け、フェーズとマイルストーンを通じて再現可能です。 + +--- + +## レジストリ安全ゲート + +サードパーティの shadcn レジストリは任意のコードを注入できます。`workflow.ui_safety_gate` が有効(デフォルト)な場合、非公式のコンポーネントをインストールする前に以下の手順をスペックが要求します。 + +```bash +npx shadcn view # インストール前にソースを確認する +npx shadcn diff # 公式レジストリと比較する +``` + +レジストリ安全性が対処されていない場合、チェッカーはスペックを BLOCKED としてフラグを立てます。プロジェクトが shadcn を使用していない場合や、別の審査プロセスがある場合は、`/gsd-settings` でゲートを無効化してください。 + +--- + +## スケッチ知見をヘッドスタートとして使う + +すでに `/gsd-sketch --wrap-up` を実行済みの場合、UI リサーチャーは `.claude/skills/sketch-findings-[project]/` を自動的に読み込みます。事前に検証された決定(レイアウト・パレット・タイポグラフィ・スペーシング)はロック済みとして扱われ、再確認されません。実行開始時に以下のメモが表示されます。 + +```text +⚡ Sketch findings detected: .claude/skills/sketch-findings-[project]/SKILL.md + Pre-validated decisions (layout, palette, typography, spacing) should be treated + as locked — not re-asked. +``` + +`/gsd-ui-phase` の前に `/gsd-sketch --wrap-up` を実行する主な理由はこれです。会話形式のデザイン探索がコントラクト入力として確定されます。 + +--- + +## `/gsd-ui-review` による事後的なビジュアル監査 + +`/gsd-ui-review` は実行前ではなく実行後に使用します。実装済みのフロントエンドを UI-SPEC(またはスペックがない場合は抽象的な 6 柱標準)に対して監査します。 + +```bash +/gsd-ui-review # 現在のフェーズを監査する +/gsd-ui-review 3 # フェーズ 3 を監査する +``` + +フロントエンドコードがあるプロジェクトであれば動作します。GSD プロジェクトの初期化は必要ありません。 + +**確認内容(6 柱、各 1〜4 点):** + +1. コピーライティング — CTA ラベル、空の状態、エラー状態 +2. ビジュアル — フォーカルポイント、ビジュアル階層、アイコンのアクセシビリティ +3. カラー — アクセント使用の規律、60/30/10 準拠 +4. タイポグラフィ — フォントサイズとウェイトの制約遵守 +5. スペーシング — グリッドの整合、トークンの一貫性 +6. エクスペリエンスデザイン — ローディング・エラー・空の状態のカバレッジ + +**出力:** スコアと優先度の高い上位 3 件の修正点を含む `{padded_phase}-UI-REVIEW.md`。`gsd-browser` などのブラウザ MCP サーバーが設定されている場合、監査はビジュアルエビデンスとしてスクリーンショットも取得します。 + +**スクリーンショットの保存先:** スクリーンショットは `.planning/ui-reviews/` に保存されます。バイナリファイルが git に含まれないよう、`.gitignore` が自動的に作成されます。スクリーンショットは `/gsd-complete-milestone` 実行時にクリーンアップされます。 + +--- + +## フェーズライフサイクルにおける推奨位置 + +```text +/gsd-discuss-phase N ← 実装方針を固定する +/gsd-ui-phase N ← デザインコントラクトを固定する(フロントエンドフェーズ) +/gsd-plan-phase N ← リサーチ + 計画(UI-SPEC.md をコンテキストとして読み込む) +/gsd-execute-phase N ← 並行実行 +/gsd-verify-work N ← 手動 UAT +/gsd-ui-review N ← 事後的なビジュアル監査(オプションだが推奨) +``` + +`/gsd-ui-phase` はディスカッションとプランの間に位置します。これはプランナーが `UI-SPEC.md` をデザインコンテキストとして読み込むためです。`PLAN.md` 内のタスクは、スペックが固定したスペーシングトークン・カラー変数・コピーライティング決定を参照します。 + +--- + +## Related + +- [スパイクとスケッチ](spike-and-sketch.md) +- [フェーズを計画する](plan-a-phase.md) +- [コマンドリファレンス](../COMMANDS.md) +- [ドキュメント一覧](../README.md) diff --git a/docs/ja-JP/how-to/discuss-a-phase.md b/docs/ja-JP/how-to/discuss-a-phase.md new file mode 100644 index 000000000..8bce0bf47 --- /dev/null +++ b/docs/ja-JP/how-to/discuss-a-phase.md @@ -0,0 +1,158 @@ +# フェーズの検討方法 + +**目的:** プランニング開始前にフェーズが必要とする実装上の決定事項を収集します。これにより、リサーチャーとプランナーがあなたに再確認することなく作業を進められます。 + +**前提条件:** `.planning/ROADMAP.md` が存在すること。ない場合は先に `/gsd-new-project` を実行してください。 + +--- + +## 検討モードを選ぶ + +GSD Core は 2 つのモードを提供します。コードベースへの理解度に応じて選択してください。 + +**実装に関する自分の方針を最初に表明したい場合**(インタビューモード、デフォルト): + +```bash +/gsd-discuss-phase 2 +``` + +Claude はフェーズスコープのグレーゾーンを特定し、どこについて議論するかを選択させた後、各エリアについておよそ 4 つの質問に取り組みます。 + +**コードベースに明確なパターンがすでにあり、ほとんどの質問が自明に感じる場合**(仮定モード): + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode assumptions +/gsd-discuss-phase 2 +``` + +Claude はサブエージェント経由でコードベースの関連ファイルを 5〜15 個読み込み、証拠と確信度を添えて仮定を立て、確認または修正のために提示します。通常 2〜4 回のやり取りで済みます(インタビューモードの 15〜20 回と比較して)。 + +元に戻すには: + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode discuss +``` + +各モードの詳細な比較や、どちらが時間を節約しやすいかについては [検討モードの解説](../workflow-discuss-mode.md) を参照してください。 + +--- + +## 選択ステップなしで全グレーゾーンを検討する + +デフォルトでは、Claude はグレーゾーンを提示し、どれをカバーするか選択を求めます。その選択プロンプトなしにすべてを順番に処理したい場合: + +```bash +/gsd-discuss-phase 2 --all +``` + +--- + +## わかりやすいフェーズを高速化する + +**フェーズが十分に理解されており、プロンプトなしで Claude に推奨デフォルトを選択させたい場合:** + +```bash +/gsd-discuss-phase 3 --auto +``` + +Claude はすべての質問に対して推奨回答を選択し、その選択を記録します。決定事項のリスクが低い、または以前のフェーズから既に示唆されているフェーズで使用してください。 + +**リモートセッションの制約がある場合(TUI メニューが使えない):** + +```bash +/gsd-discuss-phase 2 --text +``` + +すべてのプロンプトはインタラクティブなセレクターではなく、プレーンテキストの番号付きリストとして表示されます。 + +--- + +## 質問をグループでまとめて処理する + +一度に 1 つずつではなく、複数の質問をまとめて回答したい場合: + +```bash +/gsd-discuss-phase 2 --batch +``` + +Claude は 1 ターンに 2〜5 問をグループにまとめます。 + +--- + +## 各質問にトレードオフ分析を追加する + +確定する前にオプションの比較表を見たい場合: + +```bash +/gsd-discuss-phase 2 --analyze +``` + +--- + +## 準備済みファイルから一括回答する + +回答ファイルを準備済みで、すべての決定事項を一度に投入したい場合: + +```bash +/gsd-discuss-phase 1 --power +``` + +--- + +## 検討前に Claude の仮定を確認する + +**インタラクティブなセッションを始める前に Claude が何を仮定するかを確認したい場合** — 検討時間を投資する前にアラインメントを検証するのに役立ちます: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +Claude は仮定(コードベースの証拠と確信度を添えて)を出力して終了します。`CONTEXT.md` は書き込まれません。出力を確認し、修正が必要な点があれば通常の discuss または仮定モードのセッションを実行してください。 + +--- + +## CONTEXT.md の内容 + +discuss モードと仮定モードはどちらも同じ `{phase}-CONTEXT.md` をフェーズディレクトリに生成します。下流のエージェント(リサーチャー、プランナー、プランチェッカー)は、どちらのモードで生成されたかに関係なくこのファイルを同じように読み込みます。このファイルは 6 つのセクションで構成されています: + +| セクション | 目的 | +|---|---| +| `` | フェーズの境界 — このフェーズが提供するもの | +| `` | セッションで確定した実装上の決定事項 | +| `` | 下流エージェントが必ず読むべき仕様書、ADR、ドキュメント | +| `` | 再利用可能なアセット、パターン、統合ポイント | +| `` | ユーザーの参照情報と設定 | +| `` | 将来のフェーズに向けてメモされたアイデア | + +`` セクションは必須です。検討中にドキュメント、仕様書、ADR を参照した場合、Claude はそれを即座に追加し、後続の質問に活用するために読み込みます。 + +完全なフィールドリファレンスは [CONTEXT.md スキーマ](../reference/context-md.md) を参照してください。 + +--- + +## 決定事項がプランニングにどう反映されるか + +次に `/gsd-plan-phase` を実行すると、プランナーは CONTEXT.md を読み込み、どの決定事項が確定済みかを把握します。ここで既に回答された質問は再確認されません。リサーチャーも最初に CONTEXT.md を読んで調査すべき内容を把握します。 + +**`/gsd-plan-phase` 実行時に CONTEXT.md がない場合**、コンテキストなしで続行する(計画はあなたの設計方針なしにリサーチと要件のみを使用)か、先に `/gsd-discuss-phase` を実行するかの選択を求められます。 + +--- + +## PRD または受け入れ基準ドキュメントがある場合 + +discuss-phase をスキップしてプランニングに直接進んでください: + +```bash +/gsd-plan-phase 1 --prd path/to/prd.md +``` + +プランナーは PRD から CONTEXT.md を合成し、すべての要件を確定済みの決定事項として扱います。 + +--- + +## Related + +- [フェーズのプランニング](plan-a-phase.md) +- [検討モード](../workflow-discuss-mode.md) +- [CONTEXT.md スキーマ](../reference/context-md.md) +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/how-to/drive-gsd-from-a-tracker-issue.md b/docs/ja-JP/how-to/drive-gsd-from-a-tracker-issue.md new file mode 100644 index 000000000..163f9d972 --- /dev/null +++ b/docs/ja-JP/how-to/drive-gsd-from-a-tracker-issue.md @@ -0,0 +1,176 @@ +# トラッカーイシューから GSD Core を操作する方法 + +**目標:** カスタムスクリプトやトラッカー連携なしに、GSD Core に既存のコマンドのみを使って、GitHub・Linear・Jira の単一の適切にスコープされたイシューを分離されたワークスペースからマージ済み PR まで通じたパイプラインで処理する。 + +**前提条件:** GSD Core がインストール済みであること。イシューは明確なスコープ、観察可能な受け入れ基準、上流のブロッカーがない状態であること。 + +このパターンの背景にある概念と設計理由については、[イシュー駆動オーケストレーションの説明](../issue-driven-orchestration.md)を参照してください。 + +--- + +## ステップ 1: イシューをフェーズにマッピングする + +トラッカーイシューを開き、`ROADMAP.md` へのマッピングを決定します。 + +- **イシューが既存のフェーズと一致する** → フェーズ番号をメモしてステップ 2 に進む。 +- **イシューがスタンドアロンの新しい作業** → フェーズを追加する: + +```bash +/gsd-phase "Description matching the issue title" +``` + +- **イシューが緊急で既存フェーズの間に挿入する必要がある** → 小数フェーズを挿入する: + +```bash +/gsd-phase --insert 3 "Fix: description from issue" +``` + +トラッカーイシューの URL をコピーします。ステップ 3 で `CONTEXT.md` に貼り付けることで、コンテキスト圧縮を経ても追跡可能性が維持されます。 + +--- + +## ステップ 2: 分離されたワークスペースを作成する + +すべてのイシューには独自のワークスペース(独立した `.planning/` ディレクトリを持つ git ワークツリー)を用意します。部分的な作業、中断されたプラン、探索的なコミットを `main` の外に保ちます。 + +```bash +/gsd-workspace --new --name my-issue-slug --repos . --strategy worktree +``` + +続行する前にワークスペースディレクトリに移動します。 + +```bash +cd ~/gsd-workspaces/my-issue-slug +``` + +--- + +## ステップ 3: フェーズを議論する + +計画が始まる前に実装上の決定を固定するために discuss-phase を実行します。セッションが開いたら、トラッカーイシューの URL を議論に貼り付けて `CONTEXT.md` に記録します。 + +```bash +/gsd-discuss-phase N +``` + +GSD はイシューのスコープにある曖昧さ(エラーハンドリング、エッジケース、インターフェースコントラクト、技術選択)について質問します。回答がその後の計画を形作ります。 + +すべての答えがわかっていて素早く進みたい場合: + +```bash +/gsd-discuss-phase N --auto +``` + +--- + +## ステップ 4: フェーズを計画する + +```bash +/gsd-plan-phase N +``` + +GSD はリサーチエージェントを起動し、`CONTEXT.md` の決定(イシュー URL を含む)を読み込み、アトミックな `PLAN.md` ファイルを生成します。プランチェッカーが各プランを保存前に検証します。 + +実行前に外部 AI CLI からのピアレビューが必要な場合(重要な変更には推奨): + +```bash +/gsd-review --phase N +/gsd-plan-phase N --reviews +``` + +または、HIGH の懸念事項がなくなるまでプラン・レビュー・収束ループを実行するには: + +```bash +/gsd-plan-review-convergence N +``` + +--- + +## ステップ 5: フェーズを実行する + +インタラクティブなフェーズ単位の実行の場合: + +```bash +/gsd-execute-phase N +``` + +すべての残りのフェーズをハンズオフで実行する場合: + +```bash +/gsd-autonomous +``` + +進捗を監視しながらフェーズ全体で作業を dispatch できるインタラクティブなダッシュボードの場合: + +```bash +/gsd-manager +``` + +3 つのアプローチすべてで `STATE.md` を更新し、各タスクをアトミックにコミットし、フェーズ後の検証を実行します。 + +--- + +## ステップ 6: 作業を検証する + +```bash +/gsd-verify-work N +``` + +GSD は(トラッカーイシューを反映した)フェーズゴールからの受け入れ基準を 1 つずつ確認します。何かが失敗した場合、GSD は根本原因を診断して修正プランを作成します。すべてのチェックが通るまで execute と verify を繰り返します。 + +コードが正しく見えても `verification_failed` はブロッカーとして扱ってください。失敗は通常、元のイシューからの見落とされた受け入れ基準を示しています。 + +--- + +## ステップ 7: レビューとリリース + +PR を開く前にコードレビューを実行します。 + +```bash +/gsd-code-review N +/gsd-code-review N --fix +``` + +次に PR を作成します。 + +```bash +/gsd-ship N +``` + +GSD は計画成果物(フェーズゴール、変更概要、対応した要件、検証ステータス、主要な決定)から PR ボディを組み立てます。PR がマージされた時にトラッカーイシューが自動的にクローズされるよう、PR ボディに `Closes #NNN` または `Fixes #NNN` を含めます(または `/gsd-config` で設定)。 + +--- + +## ステップ 8: フォローアップ作業を記録する + +イシューを進める中で関連する作業が見つかることがよくあります。コンテキストを失わずに記録します。 + +```bash +/gsd-capture "Follow-up: description of discovered work" # Todo として追加 +/gsd-capture --seed "Idea worth a future phase" # 次のマイルストーン用に保存 +/gsd-capture --backlog "Not urgent but worth tracking" # バックログに保存 +``` + +GSD はトラッカーに自動的に投稿しません。記録されたフォローアップからトラッカーイシューを作成するのは手動の別ステップです。これにより人間のレビューをループに保ちます。 + +--- + +## 条件分岐 + +| 状況 | 対応 | +|-----------|-----------| +| イシューが非常に小さい(タイポ、設定変更) | ワークスペース + discuss + plan をスキップして `/gsd-quick` を使用する | +| イシューに複数の独立したサブタスクがある | `/gsd-manager` を使ってプラン全体で並行実行する | +| イシューが別のイシューにブロックされている | 上流のブロッカーが解決されるまで開始しない;GSD には自動的な依存ポーラーがない | +| 実行中にイシューのスコープが想定より大きくなった | 停止し `/gsd-phase --insert N` でサブフェーズを追加して続行する | +| インタラクティブな議論をスキップしたい | `/gsd-discuss-phase` に `--auto` フラグを使用するか、プロジェクト全体の自動化のために `workflow.skip_discuss: true` を設定する | +| 複数のイシューが一貫したリリースを形成する | `/gsd-new-milestone` でグループ化し `/gsd-autonomous` で順番に実行する | + +--- + +## Related + +- [イシュー駆動オーケストレーションの説明](../issue-driven-orchestration.md) +- [ワークスペースで作業を分離する](isolate-work-with-workspaces.md) +- [検証とリリース](verify-and-ship.md) +- [ドキュメント一覧](../README.md) diff --git a/docs/ja-JP/how-to/execute-a-phase.md b/docs/ja-JP/how-to/execute-a-phase.md new file mode 100644 index 000000000..497d1a803 --- /dev/null +++ b/docs/ja-JP/how-to/execute-a-phase.md @@ -0,0 +1,119 @@ +# フェーズの実行方法 + +**目的:** プランニング済みのフェーズをウェーブベースの並列実行で処理し、各プランをアトミックな git コミットとしてランディングさせます。 + +**前提条件:** フェーズに少なくとも 1 つの `PLAN.md` ファイルがあること。プランニングがまだ完了していない場合は、先に `/gsd-plan-phase N` を実行してください — [フェーズのプランニング](plan-a-phase.md) を参照。 + +--- + +## フェーズ全体を実行する + +```bash +/gsd-execute-phase 1 +``` + +GSD はフェーズのプランファイルを読み込み、依存関係ウェーブにグループ化し、プランごとに新鮮なエグゼキュータエージェントを起動します。各エグゼキュータは次のウェーブが始まる前にアトミックにコミットします。 + +エージェントがディスパッチされる前に、GSD はウェーブテーブルを表示します: + +``` +## Execution Plan + +Phase 1: Core middleware — 3 plans across 2 wave(s) + +| Wave | Plans | What it builds | +|------|----------------|---------------------------| +| 1 | 01-01, 01-02 | Core validation function | +| 2 | 01-03 | Express middleware wrapper | +``` + +ウェーブ 1 のプランは並列実行されます(それぞれ独立した git ワークツリーで)。ウェーブ 2 はウェーブ 1 のすべてのコミットがマージされるまで待機します。 + +基礎となるエージェント調整モデルについては [マルチエージェントオーケストレーション](../explanation/multi-agent-orchestration.md) を参照してください。 + +--- + +## 単一ウェーブのみ実行する + +ウェーブ 1 の出力を確認してからウェーブ 2 に進むなど、1 つのウェーブのみを実行したい場合は `--wave N` を使用します: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +GSD はウェーブ 2 のプランのみを実行します。実行前に前のウェーブがすべて完了しているか確認します。ウェーブ 1 のプランがまだ未完了の場合は、先に前のウェーブを完了するよう指示して停止します。 + +--- + +## 実行前に状態を検証する + +クラッシュや前の実行の中断後など、`.planning/` ディレクトリがファイルシステムと同期がとれていない可能性がある場合は `--validate` を指定します: + +```bash +/gsd-execute-phase 1 --validate +``` + +GSD はエグゼキュータを起動する前に状態の一貫性チェックを実行します。検出されたずれを報告し、続行前に受け入れるか修正するかを選択できます。 + +--- + +## 停止した実行を再開する + +クォータエラー、ネットワーク切断、セッションのクラッシュなどで実行が途中停止した場合、ウェーブレベルの進捗は保持されています。GSD は各プランの `SUMMARY.md` ファイルを確認し、すでに存在するプランは再実行時に自動的にスキップされます: + +```bash +/gsd-execute-phase 1 +``` + +GSD は `SUMMARY.md` がすでに存在するプランをスキップし、最初の未完了プランから再開します。 + +**コミットは存在するが `SUMMARY.md` がない場合**(エグゼキュータはコミットしたが、セッションが終了する前にサマリーを書き込まなかった)、GSD はセーフ再開ゲートを表示し、3 つの選択肢を提示します: + +- `close out manually` — コミットを確認し、`SUMMARY.md` を書き込んで再実行する +- `re-execute from scratch` — 部分的なコミットを差し戻すか上書きしてから新しいエグゼキュータをディスパッチする +- `mark-and-skip` — 異常を記録して次に進む(明示的な確認が必要) + +体系的な障害診断については [実行失敗のデバッグ](debug-a-failed-execution.md) を参照してください。 + +--- + +## 出力の場所 + +すべてのウェーブが完了すると、フェーズディレクトリには以下が含まれます: + +``` +.planning/phases/01-/ + 01-01-SUMMARY.md # プラン 01 が構築したもの、主要ファイル、逸脱 + 01-02-SUMMARY.md + 01-03-SUMMARY.md + VERIFICATION.md # 要件ごとの合格/不合格状態 +``` + +`STATE.md` と `ROADMAP.md` はすべてのウェーブが完了すると自動的に更新されます。`VERIFICATION.md` はフェーズが完全に完了した時のみ書き込まれます。 + +Git の履歴には、各エグゼキュータからのタスクごとのコミットと、オーケストレータからのトラッキングコミットが表示されます。 + +--- + +## クロス AI 実行 + +`workflow.cross_ai_command` で設定された外部 AI CLI(Codex、Gemini など)に実行を委任するには: + +```bash +/gsd-execute-phase 2 --cross-ai +``` + +設定でクロス AI が有効であってもローカル実行を強制するには: + +```bash +/gsd-execute-phase 2 --no-cross-ai +``` + +--- + +## Related + +- [フェーズのプランニング](plan-a-phase.md) +- [検証とシッピング](verify-and-ship.md) +- [実行失敗のデバッグ](debug-a-failed-execution.md) +- [コマンド](../COMMANDS.md) diff --git a/docs/ja-JP/how-to/handle-quick-and-fast-tasks.md b/docs/ja-JP/how-to/handle-quick-and-fast-tasks.md new file mode 100644 index 000000000..2b8163048 --- /dev/null +++ b/docs/ja-JP/how-to/handle-quick-and-fast-tasks.md @@ -0,0 +1,121 @@ +# クイックタスクと高速タスクの処理方法 + +すべての作業がフェーズの中に収まるわけではありません。GSD は、discuss → plan → execute → verify の完全なループを必要としない作業向けに 2 つの軽量コマンドを提供します。 + +フェーズパイプライン全体がそのオーバーヘッドに見合うかどうかの判断基準については [コンテキストエンジニアリング](../explanation/context-engineering.md) を参照してください。 + +--- + +## どちらのコマンドを使うかを決める + +| 状況 | コマンド | +|-----------|---------| +| バグ修正、小さな機能追加、または単一の自明な編集として要約できないタスク | `/gsd-quick` | +| タイポ修正、設定値の更新、`.gitignore` へのエントリ追加など、3 ファイル以下でかつ 1 分以内の変更 | `/gsd-fast` | +| タスクに未知の要素があり、リサーチが必要、または複数のファイルに影響する場合 | `--research` 付きの `/gsd-quick` | + +**目安:** タスクが自明かどうかを一瞬でも迷ったら `/gsd-quick` を使ってください。`/gsd-fast` はスコープが自明でないと判断した場合、自動的に `/gsd-quick` にリダイレクトします。 + +--- + +## `/gsd-quick` — GSD の品質保証付きアドホックタスク + +`/gsd-quick` はフルフェーズと同じアトミックコミットおよび STATE.md トラッキングの保証付きでプランナーとエグゼキュータを実行しますが、フェーズのオーバーヘッドなしに動きます(ROADMAP エントリなし、discuss-phase なし、複数プランにまたがるウェーブ調整なし)。 + +### 基本的な使い方 + +```bash +/gsd-quick +``` + +GSD がタスクの説明を求め、プランニングと実行を行います。成果物は `.planning/quick/` に配置されます。 + +説明を直接渡すこともできます: + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +### フラグ + +タスクに応じて品質パイプラインをより多く組み込むためにフラグを追加します。 + +| フラグ | 追加される内容 | +|------|-------------| +| `--discuss` | プランナー実行前にグレーゾーンを浮き彫りにし、決定事項を `CONTEXT.md` に記録する軽量な事前検討 | +| `--research` | 対象を絞ったリサーチエージェントがプランニング前にアプローチ、ライブラリ、潜在的な問題を調査 | +| `--validate` | プランチェック(最大 2 回の反復)と実行後の検証 | +| `--full` | 上記すべて — `--discuss --research --validate` と同等 | + +フラグは自由に組み合わせられます: + +```bash +/gsd-quick --research --validate # リサーチ + プランチェック + 検証(検討なし) +/gsd-quick --discuss # プランニング前にグレーゾーンのみ確認 +/gsd-quick --full # 完全な品質パイプライン +``` + +### フラグを追加するタイミング + +- タスクへのアプローチや使用するライブラリが不明な場合は `--research` を追加します。 +- タスクがクリティカルなコードパスに触れており、検証エージェントに must-haves が満たされたことを確認させたい場合は `--validate` を追加します。 +- タスクに設計上の選択肢があり、プランナーが実行する前に確定させたい場合(例: 適切なエラーハンドリングの挙動が明らかでない場合)は `--discuss` を追加します。 +- タスクが実質的に重要でフェーズとしてプランするべきだが ROADMAP に含めたくない場合は `--full` を使います。 + +### クイックタスクの一覧と再開 + +```bash +/gsd-quick list # すべてのクイックタスクとステータスを表示 +/gsd-quick status my-task-slug # 特定のタスクのステータスを表示 +/gsd-quick resume my-task-slug # 中断されたタスクを再開 +``` + +--- + +## `/gsd-fast` — インラインでの自明な編集 + +`/gsd-fast` は現在のコンテキストで直接作業を実行します。サブエージェント、`PLAN.md`、リサーチはありません。自分で 1 分以内に実行できる変更のみに適しています。 + +```bash +/gsd-fast "fix typo in README" +/gsd-fast "add .env to .gitignore" +``` + +説明を省略すると GSD が求めます。 + +`/gsd-fast` は続行前にタスクが実際に自明かどうかを確認します。スコープが大きすぎると判断した場合は停止してリダイレクトします: + +```text +This looks like it needs planning. Use /gsd-quick instead: + /gsd-quick "your task description" +``` + +変更後、`/gsd-fast` はアトミックにコミットし、`.planning/STATE.md` に `Quick Tasks Completed` テーブルが存在する場合はその行を追記します。 + +--- + +## `/gsd-quick` が `/gsd-fast` にない機能 + +| 機能 | `/gsd-fast` | `/gsd-quick` | +|------------|------------|--------------| +| サブエージェントプランナー | なし | あり | +| サブエージェントエグゼキュータ | なし | あり | +| リサーチエージェント | なし | オプション(`--research`) | +| プランチェック | なし | オプション(`--validate`) | +| 実行後の検証 | なし | オプション(`--validate`) | +| 検討フェーズ | なし | オプション(`--discuss`) | +| ワークツリー分離 | なし | あり(デフォルト) | +| タスクごとのアトミックコミット | 単一コミット | プランタスクごとに 1 つ | +| STATE.md トラッキング | テーブルが存在すれば行を追記 | 常に更新 | +| `.planning/quick/` 成果物 | なし | あり | + +主な違いはサブエージェントの分離です。`/gsd-quick` は新鮮なプランナーとエグゼキュータを別々のコンテキストウィンドウで起動するため、作業が適切にプランされ、コミットはタスクごとにアトミックになり、オーケストレータが結果を検証できます。`/gsd-fast` は現在のコンテキストウィンドウのみを使用し、それらを必要としないほど自明な変更に意図的に限定されています。 + +--- + +## Related + +- [フェーズループ](../explanation/the-phase-loop.md) +- [コンテキストエンジニアリング](../explanation/context-engineering.md) +- [コマンド](../COMMANDS.md) +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/how-to/install-on-your-runtime.md b/docs/ja-JP/how-to/install-on-your-runtime.md new file mode 100644 index 000000000..1c1900736 --- /dev/null +++ b/docs/ja-JP/how-to/install-on-your-runtime.md @@ -0,0 +1,291 @@ +# ランタイムへの GSD Core インストール方法 + +GSD Core(`@opengsd/gsd-core`)を普段使いの AI コーディングランタイムにインストールします。このガイドでは、サポートされている各ランタイム向けの標準インストール手順と、Node.js がない環境向けの手動手順を説明します。 + +**必要なもの:** Node.js 18 以上と npm(または npx)。Node.js がない場合は [Node.js なしでのインストール](#nodejs-なしでのインストール) へ進んでください。 + +--- + +## インストーラーが必要な理由 + +GSD Core は Claude Code のネイティブ frontmatter 形式でエージェントファイルとコマンドファイルを提供しています。サポートされている各ランタイムは、異なるスキーマ、ディレクトリ構成、コマンド呼び出し構文を要求します。インストーラーは必要な変換を実行します。たとえば OpenCode 向けのツールリストとカラー値の変換、Codex 向けの TOML エージェントエントリの書き込み、Gemini CLI 向けのすべてのコマンド本文をハイフン形式(`/gsd-update`)からコロン形式(`/gsd:update`)への書き換えなどです。 + +**`agents/` や `commands/` からファイルを直接コピーしないでください。** そうするとこれらの変換がスキップされ、スキーマ検証エラーやコマンドの欠落が発生します。 + +--- + +## 標準インストール + +任意のディレクトリからインストーラーを実行します。ランタイムの選択と、グローバル(全プロジェクト)またはローカル(このプロジェクトのみ)のどちらでインストールするかを確認するプロンプトが表示されます。 + +```bash +npx @opengsd/gsd-core@latest +``` + +新規インストールやランタイムの切り替え後にインストーラーを再実行する場合も、このコマンド 1 つだけで完結します。 + +--- + +## ランタイム別のインストール手順 + +### Claude Code + +```bash +npx @opengsd/gsd-core@latest --claude --global +``` + +スキルは `~/.claude/` に配置されます。次回の Claude Code セッションからコマンドが `/gsd-*` スラッシュコマンドとして表示されます。反映するには Claude Code を再起動してください。 + +**インストールディレクトリの上書き:** + +```bash +CLAUDE_CONFIG_DIR=~/.claude-alt npx @opengsd/gsd-core@latest --claude --global +``` + +--- + +### Gemini CLI + +```bash +npx @opengsd/gsd-core@latest --gemini --global +``` + +スキルは `~/.gemini/` に配置されます。インストーラーはすべてのコマンド本文を Gemini のコロン名前空間(`/gsd:update`、`/gsd:config` など)に書き換えます。インストール後は Gemini CLI を再起動してください。 + +**インストールディレクトリの上書き:** + +```bash +GEMINI_CONFIG_DIR=~/.gemini-alt npx @opengsd/gsd-core@latest --gemini --global +``` + +--- + +### OpenCode + +```bash +npx @opengsd/gsd-core@latest --opencode --global +``` + +スキルは `~/.config/opencode/`(XDG)または `~/.opencode/` に配置されます。インストーラーはエージェントの frontmatter を OpenCode のスキーマに変換します(`tools:` フィールドの削除、カラー値の hex 変換)。変更内容の詳細は [Node.js なしでのインストール — OpenCode の変換内容](#opencode--必要な変換) を参照してください。 + +**インストールディレクトリの上書き:** + +```bash +OPENCODE_CONFIG_DIR=~/.config/opencode-alt npx @opengsd/gsd-core@latest --opencode --global +``` + +--- + +### Kilo + +```bash +npx @opengsd/gsd-core@latest --kilo --global +``` + +スキルは `~/.config/kilo/`(XDG)または `~/.kilo/` に配置されます。OpenCode と同じフラットな Markdown コマンド形式を使用します。 + +**インストールディレクトリの上書き:** + +```bash +KILO_CONFIG_DIR=~/.config/kilo-alt npx @opengsd/gsd-core@latest --kilo --global +``` + +--- + +### Codex + +```bash +npx @opengsd/gsd-core@latest --codex --global +``` + +スキルは `~/.codex/skills/gsd-*/SKILL.md` に配置されます。エージェントは `config.toml` にエージェントごとの TOML エントリとして書き込まれます。インストール後は Codex を再起動(または `codex --reload` を実行)してください。 + +**最低サポートバージョン:** Codex CLI 0.130.0。それより古いバージョンにはスキルルートの追加スキャン処理があり、重複リストが生じることがあります。 + +--- + +### GitHub Copilot + +```bash +npx @opengsd/gsd-core@latest --copilot --global +``` + +スキルは `~/.copilot/` に配置されます。GSD はエージェント `.md` ファイルとリポジトリ instruction ファイルとしてインストールされます。 + +**インストールディレクトリの上書き:** + +```bash +COPILOT_CONFIG_DIR=~/.copilot-alt npx @opengsd/gsd-core@latest --copilot --global +``` + +--- + +### Cursor + +```bash +npx @opengsd/gsd-core@latest --cursor --global +``` + +スキルは `~/.cursor/` に配置されます。GSD はスキル、エージェント、ルールの参照をインストールします。 + +**インストールディレクトリの上書き:** + +```bash +CURSOR_CONFIG_DIR=~/.cursor-alt npx @opengsd/gsd-core@latest --cursor --global +``` + +--- + +### Windsurf + +```bash +npx @opengsd/gsd-core@latest --windsurf --global +``` + +スキルは `~/.codeium/windsurf/` に配置されます。GSD はスキル、エージェント、ワークスペースルールをインストールします。 + +**インストールディレクトリの上書き:** + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-alt npx @opengsd/gsd-core@latest --windsurf --global +``` + +--- + +### Cline + +Cline はルールベースの統合方式を使用します。GSD はスラッシュコマンドではなく `.clinerules` としてインストールされます。 + +```bash +# グローバルインストール(全プロジェクト) +npx @opengsd/gsd-core@latest --cline --global + +# ローカルインストール(このプロジェクトのみ) +npx @opengsd/gsd-core@latest --cline --local +``` + +グローバルインストールは `~/.cline/` に書き込みます。ローカルインストールは `./.cline/` に書き込みます。ルールは Cline によって自動的に読み込まれます。カスタムのスラッシュコマンドは登録されません。 + +--- + +### CodeBuddy + +```bash +npx @opengsd/gsd-core@latest --codebuddy --global +``` + +スキルは `~/.codebuddy/skills/gsd-*/SKILL.md` に配置されます。 + +--- + +### Qwen Code + +Qwen Code は Claude Code 2.1.88 以降と同じオープンスキル標準を使用します。 + +```bash +npx @opengsd/gsd-core@latest --qwen --global +``` + +スキルは `~/.qwen/skills/gsd-*/SKILL.md` に配置されます。 + +**インストールディレクトリの上書き:** + +```bash +QWEN_CONFIG_DIR=~/.qwen-alt npx @opengsd/gsd-core@latest --qwen --global +``` + +--- + +### Augment Code + +```bash +npx @opengsd/gsd-core@latest --augment --global +``` + +スキルは `~/.augment/` に配置されます。GSD はスキルとエージェントをインストールします。フックや statusline の管理は行いません。 + +--- + +### Antigravity + +```bash +npx @opengsd/gsd-core@latest --antigravity --global +``` + +インストーラーは Antigravity の設定ディレクトリ(`~/.gemini/antigravity`、`~/.gemini/antigravity-ide`、または `~/.gemini/antigravity-cli`)を自動検出します。Gemini 互換の設定ポリシーを使用します。 + +**インストールディレクトリの上書き:** + +```bash +ANTIGRAVITY_CONFIG_DIR=~/.gemini/antigravity-alt npx @opengsd/gsd-core@latest --antigravity --global +``` + +--- + +### Trae + +```bash +npx @opengsd/gsd-core@latest --trae --global +``` + +スキルは `~/.trae/` に配置されます。GSD はスキル、エージェント、ルールの参照をインストールします。 + +--- + +## ローカルインストールとグローバルインストール + +上記の例はすべて `--global` を使用しており、ユーザーアカウント全体に GSD を一度インストールします。インストールを単一プロジェクトに限定するには、`--global` を `--local` に置き換えます。 + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +ローカルインストールはプロジェクトルートの `.claude/` ディレクトリに書き込みます。両方が存在する場合、ローカルインストールの設定がグローバルの設定より優先されます。 + +--- + +## プレリリースエディション(Next / Nightly / Insiders / Preview)のインストール + +ランタイムのプレリリースエディション(Windsurf Next、Cursor Nightly、VS Code Insiders、Codex preview チャンネルなど)は、隣接する設定ディレクトリから読み込みます。インストーラーを実行する前に対応する `*_CONFIG_DIR` 環境変数を設定してください。 + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global +``` + +インストーラーのプロンプトでは対応する安定版ランタイムを選択してください。GSD はプレリリースエディションを独立した名前付きランタイムとしては列挙していません。これらは環境変数によるベストエフォートの対応であり、リリース CI では個別にテストされていません。 + +--- + +## Node.js なしでのインストール + +`npx` が実行できない場合(例:Node.js がない Windows マシン)、2 つの選択肢があります。 + +**選択肢 A — Node.js がある別のマシンを使用する。** WSL、Linux VM、CI ランナー、Docker コンテナなど、Node.js があるマシンであれば何でも使えます。そのマシンでインストーラーを実行し、出力ディレクトリをターゲットマシンにコピーします。OpenCode の場合: + +```bash +npx @opengsd/gsd-core@latest --opencode --global +# その後 ~/.config/opencode/agents/ を Windows マシンにコピー +``` + +**選択肢 B — ソースファイルを手動で変換する。** エージェントのソースファイルは GSD Core リポジトリの `agents/` に存在し、Claude Code のネイティブ frontmatter 形式になっています。各ランタイムは異なる形式を要求します。ランタイムごとの正確なフィールド変換については、ユーザーガイドの [Manual install / no-Node.js setup](../USER-GUIDE.md#manual-install--no-nodejs-setup) を参照してください。OpenCode の変換内容が詳しく説明されており、他のランタイム向けのインストーラーの `convert*Frontmatter` 関数も案内されています。 + +--- + +## インストール後の作業 + +新しいコマンドとエージェントを反映するためにランタイムを再起動してください。その後、最初のプロジェクトを開始します。 + +```bash +/gsd-new-project +``` + +再起動後もコマンドが見つからない場合は、インストールディレクトリがランタイムの期待する設定パスと一致しているか確認してください。最もよくある不一致については上記のプレリリースエディションのセクションを参照してください。 + +--- + +## Related + +- [最初のプロジェクト](../tutorials/your-first-project.md) +- [GSD Core の更新](update-gsd.md) +- [設定](../CONFIGURATION.md) +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/how-to/isolate-work-with-workspaces.md b/docs/ja-JP/how-to/isolate-work-with-workspaces.md new file mode 100644 index 000000000..b23059601 --- /dev/null +++ b/docs/ja-JP/how-to/isolate-work-with-workspaces.md @@ -0,0 +1,144 @@ +# ワークスペースで作業を分離する方法 + +**目標:** 独立した git ワークツリー、独自の `.planning/` ルート、そして必要に応じて複数リポジトリを持つ、完全に分離された GSD 環境をフィーチャーブランチやマルチリポジトリ作業のために作成する。 + +**前提条件:** `git` がインストールされており、リポジトリがワークツリーをサポートしていること。マルチリポジトリのワークスペースの場合、対象リポジトリがローカルマシン上に存在するか、パスでアクセス可能であること。 + +--- + +## ワークスペースとは + +ワークスペースは、1 つ以上の git ワークツリー(またはクローン)と独自の `.planning/` ルートディレクトリを組み合わせた、自己完結型の環境です。各ワークスペースには以下が含まれます。 + +- ソースリポジトリの `.planning/` とは**完全に独立した**独自の `.planning/` ディレクトリ(サブディレクトリではない) +- メンバーリポジトリを追跡する独自の `WORKSPACE.md` マニフェスト +- 指定されたリポジトリの git ワークツリー(デフォルト)またはフルクローン(専用ブランチ `workspace/` でチェックアウト) + +ワークスペースはデフォルトで `~/gsd-workspaces//` 以下に配置されます。 + +``` +~/gsd-workspaces/ +└── feature-b/ + ├── WORKSPACE.md ← マニフェスト + ├── .planning/ ← 完全に独立した GSD 状態 + │ ├── PROJECT.md + │ ├── ROADMAP.md + │ └── ... + ├── hr-ui/ ← hr-ui リポジトリのワークツリーまたはクローン + └── ZeymoAPI/ ← ZeymoAPI リポジトリのワークツリーまたはクローン +``` + +ワークスペースの `.planning/` はソースリポジトリとは独立しているため、ソースリポジトリ内に存在する計画状態との重複や競合は発生しません。 + +--- + +## 複数リポジトリのワークスペースを作成する + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI +``` + +GSD は `~/gsd-workspaces/feature-b/` 内に `hr-ui` と `ZeymoAPI` のワークツリーを作成し、それぞれに `workspace/feature-b` ブランチをチェックアウトし、`WORKSPACE.md` を書き込み、`/gsd-new-project` に備えた空の `.planning/` ディレクトリを作成します。 + +場所をカスタマイズするには: + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI --path /projects/feature-b +``` + +--- + +## 現在のリポジトリのワークスペースを作成する + +単一リポジトリでフィーチャーブランチの分離が必要な場合(独立したブランチ、独立した `.planning/`、main からの状態汚染なし): + +```bash +/gsd-workspace --new --name payments-rework --repos . +``` + +`.` は現在のリポジトリのワークツリーを作成するよう GSD に指示します。ワークツリーは `workspace/payments-rework` でチェックアウトされます。 + +ワークツリーの代わりにフルクローンを強制するには: + +```bash +/gsd-workspace --new --name payments-rework --repos . --strategy clone +``` + +--- + +## ブランチを明示的に指定する + +```bash +/gsd-workspace --new --name payments-rework --repos . --branch feature/payments-v2 +``` + +`--branch` フラグはワークスペース内のすべてのリポジトリのブランチ名を設定します。デフォルトは `workspace/` です。 + +--- + +## 対話的な質問をスキップする + +```bash +/gsd-workspace --new --name payments-rework --repos . --auto +``` + +GSD はプロンプトなしですべてのデフォルト値を適用します。 + +--- + +## ワークスペース内で GSD を初期化する + +ワークスペースを作成したら、その中に移動して GSD プロジェクトを初期化します。 + +```bash +cd ~/gsd-workspaces/feature-b +/gsd-new-project +``` + +ワークスペース内の `.planning/` ディレクトリは、そのディレクトリから実行されるすべての GSD コマンドのルートとなります。ソースリポジトリ内に存在する `.planning/` とは完全に独立しています。 + +--- + +## ワークスペースを一覧表示する + +```bash +/gsd-workspace --list +``` + +アクティブなすべての GSD ワークスペースとそのステータスを表示します。 + +--- + +## ワークスペースを削除する + +```bash +/gsd-workspace --remove feature-b +``` + +GSD は git ワークツリーを削除し、ワークスペースディレクトリをクリーンアップします。リモートのブランチは削除されません。ローカルのワークツリーとワークスペースディレクトリのみが対象です。 + +--- + +## ワークストリームではなくワークスペースを選ぶ場面 + +ワークスペースを選ぶべき場合: + +- 1 つの GSD プロジェクトとして連携させる必要がある**複数のリポジトリ**(例:一緒にリリースする API リポジトリと UI リポジトリ)にまたがって作業している +- フィーチャーごとに独自のブランチ、ロックファイル、ビルド成果物を持つ**独立した git ワークツリー**が必要(あるビルド環境での依存関係インストールが他に影響しない) +- メインリポジトリの `.planning/` のサブディレクトリではなく、**完全に独立した `.planning/` ルート**が必要 +- 各トラッカーイシューをワークスペースにマッピングするイシュー駆動ワークフローを採用している([トラッカーイシューから GSD を操作する](drive-gsd-from-a-tracker-issue.md)を参照) + +代わりに[ワークストリーム](work-in-parallel-with-workstreams.md)を選ぶべき場合: + +- すべての作業が**1 つのリポジトリ**内にあり、同じ git 履歴を共有している +- API、UI、インフラなどの異なる関心領域で `/gsd-plan-phase` や `/gsd-discuss-phase` を並行して実行したいが、各領域の `STATE.md` ファイル間でのコンテキスト汚染を避けたい +- 関心領域ごとに別のワークツリーは不要で、計画コンテキストの切り替えで十分 + +--- + +## Related + +- [ワークストリームを使って並行して作業する](work-in-parallel-with-workstreams.md) +- [トラッカーイシューから GSD を操作する](drive-gsd-from-a-tracker-issue.md) +- [コマンドリファレンス](../COMMANDS.md) +- [ドキュメント一覧](../README.md) diff --git a/docs/ja-JP/how-to/migrate-from-gsd-2.md b/docs/ja-JP/how-to/migrate-from-gsd-2.md new file mode 100644 index 000000000..43c7d25bb --- /dev/null +++ b/docs/ja-JP/how-to/migrate-from-gsd-2.md @@ -0,0 +1,145 @@ +# GSD-2 から移行する方法 + +**目標:** 古い GSD-2 プロジェクト(`.gsd/` ディレクトリレイアウト)を GSD Core(`.planning/` レイアウト)に移行し、リポジトリ内に存在する ADR、PRD、仕様書などを新しい計画構造に取り込む。 + +**前提条件:** GSD Core がインストール済みであること。GSD-2 プロジェクトディレクトリがディスク上にアクセス可能な状態であること。 + +--- + +## 何が移行されるかを理解する + +GSD-2 は計画ルートとして `.gsd/` ディレクトリを使用していました。GSD Core は `.planning/` を使用します。移行はこれを逆転させます。`.gsd/` の成果物を読み込み、すべての GSD Core コマンドが期待する標準的な `.planning/` 構造に書き込みます。 + +| GSD-2 に存在するもの | `/gsd-import --from-gsd2` が生成するもの | +|----------------------|-----------------------------------------| +| `.gsd/PROJECT.md` | `.planning/PROJECT.md` | +| `.gsd/ROADMAP.md` | `.planning/ROADMAP.md` | +| `.gsd/STATE.md` | `.planning/STATE.md` | +| `.gsd/phases/` ディレクトリ | `.planning/phases/` ディレクトリ | +| フェーズの `PLAN.md` ファイル | GSD Core の `{NN}-{MM}-PLAN.md` ファイル(名前変更を強制) | + +ファイルが書き込まれる前に競合検出が実行されます。対象ディレクトリにすでに `PROJECT.md` があり、インポートするコンテンツと矛盾する場合、移行は BLOCKER ゲートで停止し、解決すべき競合を一覧表示します。 + +--- + +## 移行を実行する + +### 現在のディレクトリを移行する + +```bash +/gsd-import --from-gsd2 +``` + +GSD は現在の作業ディレクトリの `.gsd/` を読み込み、移行した成果物を `.planning/` に書き込みます。 + +### 別のパスから移行する + +```bash +/gsd-import --from-gsd2 --path ~/projects/old-project +``` + +GSD-2 プロジェクトが現在の作業ディレクトリでない場合は `--path` を使用します。 + +--- + +## 競合を解決する + +競合検出がブロッカーを見つけた場合(例:GSD-2 の技術スタック宣言が既存の `.planning/PROJECT.md` と矛盾する)、競合レポートを表示してファイルを書き込まずに停止します。 + +レポートを読み、矛盾を解消(ソース文書または既存の計画成果物を編集)してから、`/gsd-import --from-gsd2` を再実行します。移行はクリーンに通過するまで安全に再実行できます。 + +--- + +## 外部プランファイルをインポートする + +完全な GSD-2 プロジェクトではなく、スタンドアロンのプランドキュメント(チームの計画ドキュメント、Markdown 仕様、エクスポートされたタスクリスト)がある場合は、代わりに `--from` を使用します。 + +```bash +/gsd-import --from /tmp/team-plan.md +``` + +GSD は同じ競合検出パスを実行し、コンテンツを GSD Core の `PLAN.md` 形式に変換し、プランチェッカーで結果を検証します。検証後、対象ファイル名と次のステップが表示されます。 + +--- + +## 既存のドキュメントを取り込む + +リポジトリに ADR(アーキテクチャ決定記録)、PRD、仕様ドキュメントがすでに存在する場合は、移行後に `/gsd-ingest-docs` を使って `.planning/` 構造に統合します。 + +### リポジトリ全体をスキャンする(モードを自動検出) + +```bash +/gsd-ingest-docs +``` + +`.planning/` がすでに存在する場合(例:今実行した移行から)、GSD はデフォルトでマージモードになります。既存のものを上書きするのではなく、インポートしたドキュメントを既存のものと並べて統合します。 + +### 特定のディレクトリにスコープを絞る + +```bash +/gsd-ingest-docs docs/ +/gsd-ingest-docs docs/adr/ +``` + +### 明示的な優先度マニフェストを使用する + +ドキュメントのタイプが混在している場合や、競合時にどのドキュメントが優先されるかを制御したい場合: + +```bash +/gsd-ingest-docs --manifest ingest.yaml +``` + +マニフェストはドキュメントごとに `{path, type, precedence?}` を列挙する YAML ファイルです。期待される形式については、[コマンドリファレンス](../COMMANDS.md)の `--manifest` フラグの説明を参照してください。 + +### 特定のモードを強制する + +```bash +/gsd-ingest-docs --mode merge # 既存の .planning/ にマージする +/gsd-ingest-docs --mode new # 最初から構築する(上書き) +``` + +**出力:** `/gsd-ingest-docs` は常に 3 つのバケット(自動解決済み、競合バリアント、未解決ブロッカー)を含む `INGEST-CONFLICTS.md` を生成します。すべてのインポート実行後にこのファイルを確認してください。ハードストップは LOCKED 対 LOCKED の ADR 矛盾の場合のみ発生します。それ以外はすべて確認のために表示され、サイレントに破棄されることはありません。 + +--- + +## 移行したプロジェクトを検証する + +移行とドキュメントの取り込みが完了したら、プロジェクト状態の一貫性を確認します。 + +```bash +/gsd-health +/gsd-health --repair +``` + +`/gsd-health` は `.planning/` ディレクトリの整合性を確認し、ドリフトを報告します。`--repair` は回復可能な問題を自動修正します。 + +次に、GSD Core がプロジェクト状態を読み込めることを確認します。 + +```bash +/gsd-progress +``` + +プロジェクトが正常に移行されていれば、現在のフェーズステータスと推奨される次のステップが表示されます。ここから標準的な GSD Core ワークフローが適用されます。 + +--- + +## 条件分岐:何が移行されて何がされないか + +| 状況 | 対応 | +|-----------|-----------| +| `.gsd/` が現在のディレクトリにある | `/gsd-import --from-gsd2` を実行する(`--path` 不要) | +| `.gsd/` が別のディレクトリにある | `--path ~/projects/old-project` を使用する | +| 完全な GSD-2 プロジェクトではなくスタンドアロンのプランドキュメントがある | `/gsd-import --from /path/to/plan.md` を使用する | +| `docs/adr/` に ADR がある | 移行後に `/gsd-ingest-docs docs/adr/` を実行する | +| ADR、PRD、仕様の混在がある | リポジトリルートで `/gsd-ingest-docs` を実行する(自動分類) | +| 競合検出がブロッカーを報告する | 一覧表示された矛盾を解消してから再実行する;すべてのブロッカーがクリアになるまでファイルは書き込まれない | +| 移行が成功したか不明 | `/gsd-health` と `/gsd-progress` を実行して確認する | +| INGEST-CONFLICTS.md に未解決のブロッカーが残っている | 対象ドキュメントが計画に取り込まれる前に手動での解決が必要 | + +--- + +## Related + +- [初めてのプロジェクト](../tutorials/your-first-project.md) +- [コマンドリファレンス](../COMMANDS.md) +- [ドキュメント一覧](../README.md) diff --git a/docs/ja-JP/how-to/plan-a-phase.md b/docs/ja-JP/how-to/plan-a-phase.md new file mode 100644 index 000000000..aa5809001 --- /dev/null +++ b/docs/ja-JP/how-to/plan-a-phase.md @@ -0,0 +1,216 @@ +# フェーズのプランニング方法 + +**目的:** フェーズの決定事項とリサーチを、実行可能なアトミックかつ検証可能なタスクプランに変換します。 + +**前提条件:** `.planning/ROADMAP.md` が存在すること。`/gsd-discuss-phase` で生成した `{phase}-CONTEXT.md` を強く推奨しますが、必須ではありません。 + +--- + +## 標準的なプランニングフローを実行する + +```bash +/gsd-plan-phase 2 +``` + +これにより 3 つのステージが順番に実行されます: + +1. **リサーチ** — `gsd-phase-researcher` サブエージェントがドメインを調査し、`{phase}-RESEARCH.md` を書き込みます。 +2. **プラン** — `gsd-planner` サブエージェントがコンテキスト、リサーチ、要件を読み込み、1 つ以上の `{phase}-{N}-PLAN.md` ファイルを書き込みます。 +3. **検証** — `gsd-plan-checker` サブエージェントが 8 つの次元でプランの品質を検証し、品質ゲートが通過するまでリビジョンループ(最大 3 回)を実行します。 + +フェーズ番号を指定しない場合、GSD Core はロードマップから次の未プランフェーズを対象にします。 + +--- + +## リサーチをスキップまたは強制する + +**ドメインに習熟しており新規リサーチが不要な場合:** + +```bash +/gsd-plan-phase 3 --skip-research +``` + +**RESEARCH.md がすでに存在するが強制的に更新したい場合:** + +```bash +/gsd-plan-phase 3 --research +``` + +**リサーチのみ実行したい場合** — RESEARCH.md を書き込んでプランニング前に終了: + +```bash +/gsd-plan-phase --research-phase 4 +``` + +RESEARCH.md がすでに存在する場合、更新・表示・スキップのプロンプトが表示されます。プロンプトなしに強制更新するには: + +```bash +/gsd-plan-phase --research-phase 4 --research +``` + +既存の RESEARCH.md をリサーチャーを起動せずに標準出力に表示するには: + +```bash +/gsd-plan-phase --research-phase 4 --view +``` + +注意: `--research-phase ` は `/gsd-plan-phase` のフラグです。独立したリサーチフェーズコマンドは存在しません。以前の独立したリサーチコマンドはこのフラグに移行されました。 + +--- + +## 水平レイヤーではなく垂直フィーチャースライスでプランする + +**技術レイヤー別ではなく、薄いエンドツーエンドスライス**(フィーチャーごとに UI → API → DB)でタスクを整理したい場合: + +```bash +/gsd-plan-phase 1 --mvp +``` + +以前のフェーズサマリーがない新規プロジェクトのフェーズ 1 では、`--mvp` は `SKELETON.md` も生成します。これはプロジェクトの骨格、ルーティング、実際の DB 読み書き 1 件、実際の UI インタラクション 1 件、開発用デプロイをカバーするウォーキングスケルトンです。 + +フラグなしでフェーズを MVP モードに設定するには、ROADMAP.md のそのフェーズのエントリに `**Mode:** mvp` を追加します。 + +--- + +## 振る舞いを追加するタスクごとに失敗するテストを要求する + +**TDD 強制**が必要な場合 — 振る舞いを追加する各タスクは実装前に失敗するテストから始まります: + +```bash +/gsd-plan-phase 1 --tdd +``` + +`--mvp` との組み合わせ: + +```bash +/gsd-plan-phase 1 --mvp --tdd +``` + +これにより、振る舞いを追加するすべてのタスクが RED → GREEN → REFACTOR に従う垂直スライスが生成されます。プランナーは対象タスク(ビジネスロジック、API エンドポイント、データ変換)に `type: tdd` を適用し、UI、設定、グルーコードには標準の `type: execute` を使用します。 + +TDD モードは設定でも永続化できます: + +```bash +node gsd-tools.cjs config-set workflow.tdd_mode true +``` + +--- + +## クロス AI レビューのフィードバックを使ってリプランする + +**`/gsd-review --phase N` を実行済みで `REVIEWS.md` が存在する場合:** + +```bash +/gsd-plan-phase 3 --reviews +``` + +プランナーは `REVIEWS.md` を読み込み、フィードバックに対応するようプランを修正します。`--gaps` との組み合わせはできません。 + +**自動ループが必要な場合** — HIGH 懸念がなくなるまでリプランと再レビューを繰り返す: + +```bash +/gsd-plan-review-convergence 3 +``` + +コンバージェンスループは plan → review → replan → re-review サイクルを(デフォルト最大 3 回)実行します。上限を変更するには `--max-cycles N` を使用します。 + +--- + +## 検証失敗後にギャップを埋める + +**`VERIFICATION.md` に未解決のギャップが存在し、そのギャップのみを対象にリプランしたい場合:** + +```bash +/gsd-plan-phase 3 --gaps +``` + +リサーチはスキップされ、プランナーは検証ギャップを直接読み込みます。 + +--- + +## プランニング開始前にプロジェクト状態を検証する + +```bash +/gsd-plan-phase 2 --validate +``` + +リサーチャーを起動する前に状態検証を実行します。ROADMAP.md や STATE.md がずれている可能性がある場合に使用してください。 + +--- + +## プランニング後に外部バウンス検証を実行する + +**`workflow.plan_bounce_script` が設定されており、完成したプランに対して外部検証を行いたい場合:** + +```bash +/gsd-plan-phase 1 --bounce +``` + +設定でバウンスが有効でも実行をスキップするには: + +```bash +/gsd-plan-phase 1 --skip-bounce +``` + +--- + +## インタラクティブな確認を抑制する + +```bash +/gsd-plan-phase --auto +``` + +すべてのプロンプトをスキップします。自動化パイプラインで役立ちます。設定で `research_enabled` が false の場合、リサーチはスキップされます。 + +--- + +## プランが生成するもの + +成功した実行では以下が書き込まれます: + +| ファイル | 目的 | +|---|---| +| `{phase}-RESEARCH.md` | ドメインリサーチ、パッケージ正当性監査、検証アーキテクチャ | +| `{phase}-VALIDATION.md` | Nyquist テストマッピング — プランが満たすべきテストケース(次元 8) | +| `{phase}-{N}-PLAN.md` | フロントマター、ウェーブ割り当て、受け入れ基準を含む実行可能タスクプラン | +| `{phase}/SKELETON.md` | ウォーキングスケルトン(MVP モード、新規プロジェクトのフェーズ 1 のみ) | + +各 PLAN.md には必須の `` と `` フィールドを持つタスクが含まれます。すべての `` エントリは、ソースアサーション、振る舞いアサーション、テストコマンド、または CLI 出力として検証可能です。主観的な表現は使用しません。 + +完全なフィールドリファレンスは [PLAN.md スキーマ](../reference/plan-md.md) を参照してください。 + +### プラン品質の次元 + +`gsd-plan-checker` は実行を許可する前に 8 つの次元でプランを検証します: + +1. タスクのアトミック性 — 各タスクは単一の関心事 +2. 依存関係の正確性 — ウェーブの順序が一貫している +3. 受け入れ基準の検証可能性 — 主観的な基準がない +4. `` の完全性 — 変更対象のファイルが常にリストされている +5. 具体的な `` 値 — 「〜と合わせる」のような曖昧な指示がない +6. フェーズ目標から導出された `must_haves` +7. 要件 ID のカバレッジ — すべてのフェーズ要件 ID が少なくとも 1 つのプランに存在する +8. Nyquist テストマッピング — プランが VALIDATION.md の検証戦略に対応している + +リビジョンループは最大 3 回実行されます。3 回の反復後も品質ゲートが通過しない場合、チェッカーは残りの問題を手動レビュー用に提示します。 + +--- + +## クローズ済みフェーズのリプランニング + +フェーズに `status: passed` の `VERIFICATION.md` がある場合、そのフェーズはクローズ済みと見なされます。リプランを試みるとエラーで停止します。クローズが誤っていた場合は `--force` で上書きします: + +```bash +/gsd-plan-phase 2 --force +``` + +トランスクリプトおよびコミット済みのプランドキュメントに警告が出力されます。 + +--- + +## Related + +- [フェーズの検討](discuss-a-phase.md) +- [フェーズの実行](execute-a-phase.md) +- [PLAN.md スキーマ](../reference/plan-md.md) +- [コマンド](../COMMANDS.md) diff --git a/docs/ja-JP/how-to/recover-and-troubleshoot.md b/docs/ja-JP/how-to/recover-and-troubleshoot.md new file mode 100644 index 000000000..c7bcf4d1d --- /dev/null +++ b/docs/ja-JP/how-to/recover-and-troubleshoot.md @@ -0,0 +1,323 @@ +# 回復とトラブルシューティングの方法 + +**目標:** コンテキストの喪失や状態の破損からインストール失敗やパーミッションエラーまで、条件分岐レシピ構造を使って一般的な問題を特定して修正する。 + +**前提条件:** GSD Core がインストール済みであること。インストールの問題については、[ランタイムへのインストール](install-on-your-runtime.md)を参照してください。 + +--- + +## コンテキストとセッションの問題 + +### 現在の位置を見失った場合 + +```bash +/gsd-progress +``` + +すべての状態ファイルを読み込み、現在地と次にすべきことを正確に教えてくれます。 + +正しい次のステップに自動的に進むには: + +```bash +/gsd-progress --next +``` + +### 新しいセッションを開始してコンテキストを復元する必要がある場合 + +```bash +/gsd-resume-work +``` + +最後のハンドオフから、現在のフェーズ・計画上の決定・作業が停止した場所を含む完全なセッションコンテキストを復元します。 + +### 長いセッションで品質が低下している場合 + +主要なコマンド間でコンテキストウィンドウをクリアします。 + +```bash +/clear +``` + +その後、状態を復元します。 + +```bash +/gsd-resume-work +``` + +GSD は新鮮なコンテキストを前提に設計されています。すべてのサブエージェントはすでにクリーンな 200k ウィンドウを取得します。メインセッションは時間とともに劣化します。プッシュし続けるのではなく、クリアして再開することが正しい対処法です。 + +### 停止前にコンテキストを保存したい場合 + +```bash +/gsd-pause-work +``` + +現在の位置を含む `.planning/HANDOFF.json` を作成します。セッション後のサマリーを `.planning/reports/` にも書き込む場合は `--report` を追加します。 + +```bash +/gsd-pause-work --report +``` + +--- + +## 計画整合性の問題 + +### `.planning/` の整合性が不確かな場合 + +```bash +/gsd-health +``` + +エラー、警告、情報ノートにわたるステータスを報告します。 + +| ステータス | 意味 | +|--------|---------| +| `HEALTHY` | 期待される成果物がすべて存在し、正しい形式である | +| `DEGRADED` | 対処すべき警告があるが作業は続行できる | +| `BROKEN` | 実行をブロックする重大なエラーがある | + +自動修復可能な一般的な問題(エラー E004、E005;警告 W003、W008): + +```bash +/gsd-health --repair +``` + +これにより不足している `STATE.md` が再作成され、破損した `config.json` がデフォルトにリセットされ、不足している設定キーが追加されます。`PROJECT.md` や `ROADMAP.md` は上書きされません。 + +### STATE.md が存在しないフェーズを参照している場合 + +これは警告 `W002` を生成します。状態 CLI を使って診断と修復を行います。 + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate +``` + +書き込まずに同期で何が変わるかをプレビューします。 + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify +``` + +同期を適用します。 + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync +``` + +これらのコマンドはディスク上の実際のプロジェクト状態から `STATE.md` を再構築します。手動での `STATE.md` 編集に代わるものです。 + +### 「Project already initialised」と表示される場合 + +`.planning/PROJECT.md` がすでに存在します。`/gsd-new-project` は安全チェックです。本当に最初からやり直したい場合は、まず `.planning/` ディレクトリを削除します。 + +```bash +rm -rf .planning/ +``` + +その後 `/gsd-new-project` を再実行します。 + +### コンテキストウィンドウの使用率が高い場合 + +```bash +/gsd-health --context +``` + +コンテキストウィンドウ使用率ガードを調査します。60% で警告、70% でクリティカル。警告閾値を超えている場合は、次の主要なコマンドを開始する前に `/clear` を実行してから `/gsd-resume-work` を実行してください。 + +--- + +## 実行の問題 + +### エグゼキューターが Bash コマンドで「Permission denied」になる場合 + +GSD の `gsd-executor` サブエージェントには書き込み可能な Bash アクセスが必要です。`~/.claude/settings.json` の `permissions.allow` に必要なパターンを追加します。最低限: + +```json +"Bash(git add:*)", +"Bash(git commit:*)", +"Bash(git merge:*)", +"Bash(git checkout:*)" +``` + +スタック固有のパターン(Rails、Python、Node、Rust)については、`docs/USER-GUIDE.md` の「Executor Subagent Gets Permission denied」の下にある完全な表を参照してください。 + +プロジェクト単位の代替手段:プロジェクトルートの `.claude/settings.local.json` に同じブロックを追加する。 + +### 実行が失敗するか、スタブが生成される場合 + +プランが過度に野心的でないか確認してください。プランには最大でも 2〜3 個のタスクを含めるべきです。タスクが大きすぎると、単一のコンテキストウィンドウが確実に生成できる範囲を超えます。より小さいスコープでフェーズを再計画します。 + +```bash +/gsd-plan-phase 1 +``` + +何が起きたかを体系的に診断するには、[フェーズ実行の失敗をデバッグする](debug-a-failed-execution.md)を参照してください。 + +### 並行実行がビルドロックエラーやプリコミットフック失敗を引き起こす場合 + +これは複数のエージェントが同時にビルドツールをトリガーすることで発生します。GSD は v1.26 以降、これを自動的に処理します。古いバージョンを使用している場合、またはまだ競合が見られる場合は、並行実行を無効にします。 + +```bash +/gsd-settings +``` + +`parallelization.enabled` を `false` に設定します。 + +### サブエージェントが失敗しているように見えるがコミットが行われている場合 + +何かが壊れていると判断する前に git ログを確認します。 + +```bash +git log --oneline -10 +``` + +Claude Code の既知の分類バグで、作業が成功したのに失敗と報告される場合があります。GSD のオーケストレーターは実際の出力をスポットチェックしますが、不一致が見られる場合はコミットが真実です。 + +--- + +## プランとフェーズの問題 + +### プランが意図と異なる、または整合していない場合 + +計画前に `/gsd-discuss-phase N` を実行します。プランの品質問題のほとんどは、`CONTEXT.md` があれば防げた前提から生じます。 + +```bash +/gsd-discuss-phase 1 +``` + +完全なセッションを開始せずに GSD が現在行っている前提を確認するには: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +### 実行後に何かを変更する必要がある場合 + +`/gsd-execute-phase` を再実行しないでください。対象を絞った修正には `/gsd-quick` を使用します。 + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +または `/gsd-verify-work N` を使って UAT を通じて体系的に問題を特定・修正します。 + +### コマンドが「Spawning…」でフリーズしているように見える場合 + +待ってください。GSD サブエージェントは別のコンテキストウィンドウで動作します。その作業は進行中の間、親セッションからは見えません。スポーン行の liveness ノートがこれが期待される動作であることを確認しています。リサーチと計画エージェントは通常 1〜5 分かかります。大きなフェーズでは検証エージェントがさらに時間がかかる場合があります。 + +セッションを中断しないでください。セッションを終了すると進行中のサブエージェント作業が破棄されます。 + +10 分以上経過した場合は、Claude Code のサイドバーでエージェントタスクがまだアクティブと表示されているか確認してください。 + +--- + +## ワークフロー状態の問題 + +### ワークフローが破損しているか、状態が一貫していない場合 + +```bash +/gsd-forensics +``` + +または説明を添えて: + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +`/gsd-forensics` はポストモーテム調査を実行します:git 履歴の異常、成果物の整合性、STATE.md の一貫性、未コミットの作業、孤立したワークツリー。レポートを `.planning/forensics/` に書き込み、推奨される修復手順を提示します。読み取り専用であり、プロジェクトファイルを変更することはありません。 + +### フェーズまたはプランをロールバックする必要がある場合 + +```bash +/gsd-undo --phase 03 # フェーズ 3 のすべてのコミットをロールバックする +/gsd-undo --plan 03-02 # フェーズ 3 のプラン 02 のコミットをロールバックする +/gsd-undo --last 5 # 最近の 5 件の GSD コミットからインタラクティブに選ぶ +``` + +`/gsd-undo` はロールバック前に依存するフェーズを確認し、常に確認ゲートを表示します。 + +--- + +## インストールとアップデートの問題 + +### インストール後に GSD が認識されない場合 + +ランタイムを再起動してください。GSD はランタイムのコマンドディレクトリ(例:`~/.claude/commands/gsd/`)にスラッシュコマンドをインストールします。ほとんどのランタイムは起動時にのみ新しいコマンドを検出します。 + +問題が続く場合はインストールを確認します。 + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +ランタイム固有のインストールパスとトラブルシューティングについては、[ランタイムへのインストール](install-on-your-runtime.md)を参照してください。 + +### アップデートがローカルの変更を上書きした場合 + +v1.17 以降、インストーラはローカルで変更されたファイルを `gsd-local-patches/` にバックアップします。変更を再適用します。 + +```bash +/gsd-update --reapply +``` + +### npm 経由でアップデートできない場合 + +npm の障害やネットワーク制限のために `npx @opengsd/gsd-core` が失敗する場合は、`docs/manual-update.md` に npm アクセスなしで動作するステップバイステップの手動アップデート手順があります。 + +定期的なアップデートについては、[GSD のアップデート](update-gsd.md)を参照してください。 + +--- + +## コストの問題 + +### モデルのコストが高すぎる場合 + +バジェットプロファイルに切り替えます。 + +```bash +/gsd-config --profile budget +``` + +ドメインが慣れ親しんだものであれば、設定でリサーチとプランチェックのエージェントを無効にします。 + +```bash +/gsd-settings +``` + +また、有効になっている MCP サーバーを監査してください。有効な MCP サーバーはそれぞれのツールスキーマをすべてのターンに注入します。ブラウザとプラットフォーム固有のツールはそれぞれ 20,000 トークン以上かかる場合があります。現在のフェーズに不要なものは `.claude/settings.json` で無効にしてください。 + +```json +{ + "disabledMcpjsonServers": ["playwright", "mac-tools"] +} +``` + +--- + +## 回復クイックリファレンス + +| 問題 | 解決策 | +|---------|---------| +| コンテキストを失った、または新しいセッション | `/gsd-resume-work` または `/gsd-progress` | +| 次のステップがわからない | `/gsd-progress --next` | +| フェーズがうまくいかなかった | `/gsd-undo --phase NN`、その後再計画する | +| 何かが壊れた | `/gsd-debug "description"`(修正なしの分析は `--diagnose` を追加) | +| STATE.md が同期していない | `state validate` その後 `state sync` | +| `.planning/` の整合性が不確か | `/gsd-health`、その後 `/gsd-health --repair` | +| ワークフロー状態が破損しているように見える | `/gsd-forensics` | +| 対象を絞った素早い修正 | `/gsd-quick` | +| プランがビジョンと一致しない | `/gsd-discuss-phase N` その後再計画する | +| コストが高くなっている | `/gsd-config --profile budget` と `/gsd-settings` でエージェントをオフにする | +| アップデートがローカルの変更を壊した | `/gsd-update --reapply` | +| セッションのサマリーが必要 | `/gsd-pause-work --report` | +| 並行実行のビルドエラー | GSD をアップデートするか `parallelization.enabled: false` を設定する | + +--- + +## Related + +- [フェーズ実行の失敗をデバッグする](debug-a-failed-execution.md) +- [ランタイムへのインストール](install-on-your-runtime.md) +- [コマンドリファレンス](../COMMANDS.md) +- [ドキュメント一覧](../README.md) diff --git a/docs/ja-JP/how-to/run-phases-autonomously.md b/docs/ja-JP/how-to/run-phases-autonomously.md new file mode 100644 index 000000000..b985080cd --- /dev/null +++ b/docs/ja-JP/how-to/run-phases-autonomously.md @@ -0,0 +1,124 @@ +# フェーズを自律的に実行する方法 + +残りのすべてのフェーズ、または限定した範囲のフェーズを無人で実行します。GSD がすべてのステップを自分でドライブすることなく、各フェーズの discuss → plan → execute を処理します。 + +自律実行中にフェーズループが何をしているかの背景については [フェーズループ](../explanation/the-phase-loop.md) を参照してください。 + +--- + +## 前提条件 + +- `.planning/ROADMAP.md` と `.planning/STATE.md` が存在するアクティブなプロジェクト +- 実行したいすべてのフェーズが自律モードで処理できる状態(pending または in-progress; 完了済みでない) +- 重要な設計上の決定事項は `PROJECT.md` に記載済みか、事前の `/gsd-discuss-phase` で記録済みであること。自律モードは `--interactive` を使用した場合のみグレーゾーンをインタラクティブに確認できます + +--- + +## 残りのすべてのフェーズを実行する + +```bash +/gsd-autonomous +``` + +GSD は `ROADMAP.md` を読み込み、数値順で未完了のすべてのフェーズを見つけ、それぞれについて discuss → plan → execute を実行します。すべてのフェーズが完了すると、マイルストーンライフサイクル(audit → complete → cleanup)を自動的に実行します。 + +--- + +## 特定の範囲のフェーズを実行する + +`--from` と `--to` を使用して実行範囲を限定します。両フラグは小数のフェーズ番号(例: `3.1`)を受け入れます。 + +```bash +/gsd-autonomous --from 3 # フェーズ 3、4、5 …(完了済みのフェーズ 1、2 はスキップ) +/gsd-autonomous --to 5 # フェーズ 5 まで(5 を含む) +/gsd-autonomous --from 3 --to 5 # フェーズ 3、4、5 のみ +``` + +`--to` に達するとライフサイクルステップはスキップされます。マイルストーンのすべてのフェーズが完了していないためです。完了バナーに再開方法が表示されます: + +```text +Resume with: /gsd-autonomous --from 6 +``` + +--- + +## インタラクティブな検討を行いながら実行する + +デフォルトでは、自律モードはスマート discuss(バッチテーブル提案)を使って検討の質問に自動的に回答します。プランと実行をメインコンテキスト外に保ちながら設計上の質問に自分で回答したい場合: + +```bash +/gsd-autonomous --interactive +``` + +インタラクティブモードでは: +- `/gsd-discuss-phase` はインラインで実行され、あなたの回答を待機します +- プランニングと実行はバックグラウンドエージェントとしてディスパッチされるため、現在のフェーズがビルドされている間に次のフェーズについて検討できます +- メインコンテキストはリーンに保たれ — 検討の会話のみが蓄積されます + +--- + +## 適用されるセーフティゲート + +自律モードは GSD の品質パイプラインをバイパスしません。各フェーズは引き続き: + +- 実行前にプランチェッカーを実行します +- 実行後に `VERIFICATION.md` を読み込み、結果に応じてルーティングします +- 検証状態が `human_needed` または `gaps_found` の場合、一時停止して対応を求めます +- いずれかのステップが失敗した場合、停止してオプション(修正して再試行、フェーズのスキップ、または停止)を提示します + +手動実行との唯一の違いは、`passed` の検証が自動的に次へ進む点です — 決定が必要な場合を除き、フェーズ間でプロンプトが表示されません。 + +パッケージ正当性ゲートも有効です。プランに不審なパッケージの `checkpoint:human-verify` タスクが含まれている場合、エグゼキュータは停止してチェックポイントを表示します。自律モードはフラグが立ったパッケージを無言でインストールしません。 + +--- + +## 自律モードを使用しない場合 + +`/gsd-autonomous` を使用しないケース: + +- **フェーズに未解決の設計上の決定事項がある場合。** `/gsd-discuss-phase` を実行しておらず、`PROJECT.md` にあなたの方針が記載されていない場合、スマート discuss はあなたが同意しない自律的な選択をする可能性があります。先にインタラクティブで discuss を実行するか、`--interactive` を使用してください。 + +- **単一フェーズを細かく制御する必要がある場合。** 1 つのフェーズであれば、`/gsd-execute-phase N` で段階的な出力を確認しながら続行前に対応できます。自律モードは大規模な無人実行向けに設計されています。 + +- **フェーズに新規性の高い、またはリスクの高い作業が含まれる場合。** 自律モードはブロッカーに当たらない限り一時停止をスキップします。予期しない事態が想定されるフェーズでは、手動実行でループに留まってください。 + +- **部分的な実行が済んでいる途中フェーズの場合。** 自律モードは未完了フェーズを引き継ぎますが、部分的に実行されたウェーブは再開しません。すでに進行中のフェーズを完了させるには `/gsd-execute-phase N` を使用してください。 + +実行が途中で停止した場合、何が問題だったかの診断方法については [実行失敗のデバッグ](debug-a-failed-execution.md) を参照してください。 + +--- + +## 実行中の進捗確認 + +自律モードは各フェーズの前に進捗バナーを表示します: + +```text + GSD ► AUTONOMOUS ▸ Phase 3/7: Auth Middleware [████░░░░] 28% +``` + +セッション途中で実行状況を確認する必要がある場合は、別のターミナルを開いて次を実行します: + +```bash +/gsd-progress +``` + +--- + +## 停止後の再開 + +ブロッカープロンプトで「Stop autonomous mode」を選択した場合、またはセッションが中断された場合は、停止した場所から再開します: + +```bash +/gsd-autonomous --from 4 # 4 を最初の未完了フェーズ番号に置き換える +``` + +GSD は完了済みのフェーズを自動的にスキップするため、停止した場所が不明な場合は早めのフェーズ番号から安全に再実行できます。 + +--- + +## Related + +- [フェーズの実行](execute-a-phase.md) +- [実行失敗のデバッグ](debug-a-failed-execution.md) +- [コマンド](../COMMANDS.md) +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/how-to/set-up-cross-ai-review.md b/docs/ja-JP/how-to/set-up-cross-ai-review.md new file mode 100644 index 000000000..fe2fd41ed --- /dev/null +++ b/docs/ja-JP/how-to/set-up-cross-ai-review.md @@ -0,0 +1,159 @@ +# クロス AI レビューの設定方法 + +**目的:** プランレビューに参加する AI レビュアーを設定し、プランニング済みフェーズのレビューを実行し、HIGH 重大度の懸念がなくなるまでフィードバックを反映してプランを収束させます。 + +**前提条件:** フェーズがプランニング済みであること(`.planning/phases/` に `{phase}-PLAN.md` ファイルが存在する)。少なくとも 1 つの外部 AI CLI がインストールされ認証済みであること。 + +--- + +## 使用するレビュアーを決める + +GSD Core は Gemini CLI、Claude(別セッション)、Codex CLI、CodeRabbit、OpenCode、Qwen Code、Cursor、Antigravity CLI、Ollama、LM Studio、llama.cpp の任意の組み合わせにレビューリクエストをルーティングできます。 + +各レビュアーは `PLAN.md` ファイルに対して同じ構造化プロンプトを独立して実行します。モデルによって盲点が異なるため、複数レビュアーのコンセンサスは単一レビュアーよりも多くの問題を検出できます。 + +**外部 CLI がまだインストールされていない場合**は、少なくとも 1 つをインストールしてください: + +```bash +# Gemini CLI(Google 認証情報で無料) +npm install -g @google/gemini-cli + +# Antigravity CLI(Google 認証情報で無料) +curl -fsSL https://antigravity.google/cli/install.sh | bash + +# Codex CLI +npm install -g @openai/codex +``` + +--- + +## デフォルトレビュアーを設定する(オプション) + +デフォルトでは `/gsd-review` は検出されたすべての CLI を実行します。プロジェクトのデフォルトとして特定のサブセットを固定するには: + +```bash +/gsd-config --integrations +``` + +インテグレーションウィザードは API キー、コードレビュー CLI のルーティング、`review.default_reviewers` リストをカバーします。フラグなしのデフォルトとして使用したいレビュアーのリストを設定します。例: `["gemini","codex"]`。 + +または `gsd-tools` で直接設定することもできます: + +```bash +gsd config-set review.default_reviewers '["gemini","codex"]' +``` + +インテグレーション設定スキーマの全体(API キー、レビュアーごとのモデルオーバーライド、ローカルサーバーのホストアドレス)については [設定](../CONFIGURATION.md) を参照してください。 + +--- + +## レビューを実行する + +### 標準レビュー(設定済みのデフォルトまたは検出されたすべての CLI を使用) + +```bash +/gsd-review --phase 3 +``` + +GSD は各レビュアーを順番に呼び出し、構造化されたフィードバック(サマリー、強み、HIGH/MEDIUM/LOW の懸念事項、提案、リスク評価)を収集し、結合された出力を `.planning/phases/03-.../03-REVIEWS.md` に書き込みます。 + +### 1 回限りの実行で特定のレビュアーを選ぶ + +```bash +/gsd-review --phase 3 --gemini +/gsd-review --phase 3 --codex +/gsd-review --phase 3 --cursor +``` + +明示的なフラグはその実行に限り `--all` のデフォルトと `review.default_reviewers` の両方を上書きします。 + +### 利用可能なすべてのレビュアーを並列実行する + +```bash +/gsd-review --phase 3 --all +``` + +`--all` は設定を常に上書きし、設定済みのローカルモデルサーバー(Ollama、LM Studio、llama.cpp)を含む、検出されたすべてのセットを実行します。 + +### ローカルモデルサーバーのレビュアー + +Ollama または LM Studio をローカルで実行している場合、サーバーに到達可能であれば `--all` で自動的に含まれます。明示的に指定することもできます: + +```bash +/gsd-review --phase 3 --ollama +/gsd-review --phase 3 --lm-studio +``` + +デフォルト(`localhost:11434` / `localhost:1234`)が合わない場合は、`/gsd-config --integrations` で `review.*` キーの下にホストアドレスとモデル選択を設定してください。 + +--- + +## レビュー出力を読む + +`{padded_phase}-REVIEWS.md` ファイルには以下が含まれます: + +- 重要度別に分類された懸念事項を含む各レビュアーの個別レビュー +- 2 人以上のレビュアーが提起した懸念事項を統合した**コンセンサスサマリー**セクション — 最優先シグナルのためにここから読み始めてください +- レビュアー間で意見が分かれた箇所の**相違する見解**セクション + +--- + +## フィードバックをプランに取り込む + +出力を確認したら、フィードバックを取り込んでリプランします: + +```bash +/gsd-plan-phase 3 --reviews +``` + +プランナーは `REVIEWS.md` を読み込み、懸念事項に対応するようプランを調整してから保存します。 + +--- + +## plan–review–replan ループを自動化する + +HIGH 重大度の懸念事項がすべて解決されるまで反復したい場合はコンバージェンスループを使用します: + +```bash +/gsd-plan-review-convergence 3 +``` + +これは `plan-phase → review → replan → re-review` を最大 3 サイクル(デフォルト)実行します。HIGH 懸念事項のカウントがゼロになるとループが終了します。 + +### 特定のレビュアーとのコンバージェンス + +```bash +/gsd-plan-review-convergence 3 --codex +/gsd-plan-review-convergence 3 --gemini +``` + +### すべてのレビュアーと高いサイクル上限でのコンバージェンス + +```bash +/gsd-plan-review-convergence 3 --all --max-cycles 5 +``` + +**ストール検知:** サイクルをまたいで HIGH 懸念事項のカウントが減少していない場合、GSD は警告します。サイクル上限に達しても HIGH 懸念事項が残っている場合、エスカレーションゲートが表示され、続行するか手動でレビューするかを確認します。 + +--- + +## 条件: どのレビュアーを選ぶか + +| 状況 | 推奨アプローチ | +|-----------|---------------------| +| Gemini CLI がすでにインストール済み | `--gemini` は常に良い出発点のレビュアー | +| 無料のマルチレビュアーカバレッジが欲しい | `--gemini` + `--agy`(両方とも Google 認証情報を使用) | +| プロジェクトが OpenAI 中心 | OpenAI モデルの観点のために `--codex` を追加 | +| GitHub Copilot のモデルが欲しい | `--opencode` を追加 | +| API コストを完全に避けたい | Ollama にローカルモデルを設定して `--ollama` を使用 | +| リリース前に最大限のカバレッジが必要 | `/gsd-plan-review-convergence N --all` | +| 素早く反復して高速なフィードバックが欲しい | 1 つの CLI を選ぶ: `/gsd-review --phase N --gemini` | + +--- + +## Related + +- [検証とシッピング](verify-and-ship.md) +- [設定](../CONFIGURATION.md) +- [コマンド](../COMMANDS.md) +- [ドキュメント索引](../README.md) diff --git a/docs/ja-JP/how-to/spike-and-sketch.md b/docs/ja-JP/how-to/spike-and-sketch.md new file mode 100644 index 000000000..0311d31a0 --- /dev/null +++ b/docs/ja-JP/how-to/spike-and-sketch.md @@ -0,0 +1,160 @@ +# コミットする前にスパイクとスケッチを行う方法 + +**目標:** フェーズを特定のアプローチに確定する前に、集中的な実現可能性実験(スパイク)と使い捨ての HTML モックアップによるビジュアル方向探索(スケッチ)を通じて、実装のリスクを軽減する。 + +**前提条件:** なし。`/gsd-spike` と `/gsd-sketch` は独自のストレージディレクトリを作成し、初期化済みの GSD プロジェクトは必要ありません。 + +--- + +## スパイク、スケッチ、またはその両方を選ぶ + +| 答えたい問い | 使用するもの | +|---|---| +| 「この技術的アプローチは実際に機能するか?」 | `/gsd-spike` | +| 「このレイアウト / インタラクション / ビジュアル処理は適切か?」 | `/gsd-sketch` | +| 「適切な技術的アプローチは何で、どのように見えるべきか?」 | 両方、順番に:スパイク先行、次にスケッチ | + +スパイクは実行可能なコードと VALIDATED / INVALIDATED / PARTIAL の判定で、二項対立の実現可能性問題に答えます。スケッチはブラウザで比較可能な 2〜3 種類の HTML バリアントで、ビジュアルの問いに答えます。両者は補完的です。スパイクはアプローチの構築可能性を証明し、スケッチはデザインの構築する価値を証明します。 + +--- + +## スパイクを実行する + +### インタラクティブな受付(デフォルト) + +```bash +/gsd-spike +``` + +GSD は技術的な問いについて質問し、それを **Given / When / Then** 形式の仮説として 2〜5 個の独立した実験に分解し、構築前に確認を求めます。 + +### アイデアを直接指定する + +```bash +/gsd-spike "can we stream LLM tokens through SSE" +``` + +### 受付をスキップしてすぐに実行する + +```bash +/gsd-spike --quick "websocket vs SSE latency" +``` + +`--quick` は分解の会話をスキップし、引数を単一のスパイク質問として扱います。問いがすでに精度が高く、絞り込みなしに実行できる場合に使用してください。 + +### 各実験が生成するもの + +`.planning/spikes/NNN-descriptive-name/` 内の各スパイクには以下が含まれます。 + +- 動作するコード(擬似コードではない) +- コードの前に書かれた **Given / When / Then** 仮説 +- エッジケース、方向転換、驚きを記録した調査トレイル +- 証拠付きの **VALIDATED**、**INVALIDATED**、または **PARTIAL** 判定 +- フロントマター、実行方法の説明、結果を含む `README.md` + +すべてのスパイクは `.planning/spikes/MANIFEST.md` にインデックスされます。 + +### 知見をパッケージ化する + +シグナルが得られたら、今後のセッションで自動的に読み込まれるプロジェクトローカルスキルとして知見をまとめます。 + +```bash +/gsd-spike --wrap-up +``` + +これにより `.claude/skills/spike-findings-[project]/` が書き込まれます。このスキルは自動的に検出され、後続の `/gsd-sketch`、`/gsd-ui-phase`、`/gsd-plan-phase` の実行時に読み込まれます。明示的に参照する必要はありません。 + +--- + +## スケッチを実行する + +### ムードの受付(デフォルト) + +```bash +/gsd-sketch +``` + +GSD は、コードを書く前に、雰囲気、ビジュアルリファレンス、コアユーザーアクションを探る短い会話を開きます。一度に 1 つの質問をして、「実行してください」と言った時点でのみ構築を開始します。 + +### デザイン方向を直接指定する + +```bash +/gsd-sketch "dashboard layout" +``` + +### ムードの受付をスキップしてすぐに実行する + +```bash +/gsd-sketch --quick "sidebar navigation" +``` + +`--quick` は受付の会話を完全にスキップし、引数をデザイン方向として使用します。 + +### Claude 以外のランタイム(Codex、Gemini CLI など) + +```bash +/gsd-sketch --text "onboarding flow" +``` + +`--text` はインタラクティブなプロンプトをプレーンテキストの番号付きリストに置き換えます。ランタイムが `AskUserQuestion` をサポートしていない場合に使用してください。 + +### 各スケッチが生成するもの + +`.planning/sketches/NNN-descriptive-name/` 内の各スケッチには以下が含まれます。 + +- タブナビゲーションで 2〜3 種類のバリアントにアクセスできる `index.html`(ビルドステップなし、直接ブラウザで開ける) +- 機能的なインタラクティブ要素(ホバー、クリック、トランジション) +- 事前のスパイク知見からのフィールド名とデータ形状を使ったリアルなコンテンツ +- `.planning/sketches/themes/default.css` からの共有 CSS 変数 +- デザインの問い、バリアント、注目ポイントを含む `README.md` + +すべてのスケッチは `.planning/sketches/MANIFEST.md` にインデックスされます。 + +### 採用したデザイン決定をパッケージ化する + +バリアントを選択したら、ビジュアル決定をプロジェクトローカルスキルとして記録します。 + +```bash +/gsd-sketch --wrap-up +``` + +これにより `.claude/skills/sketch-findings-[project]/` が書き込まれます。このスキルは `/gsd-ui-phase` によって自動的に読み込まれ、事前に検証された決定(レイアウト、カラーパレット、タイポグラフィ、スペーシング)はロック済みとして扱われ、再確認されません。 + +--- + +## 統合フロー:スパイク → スケッチ → フェーズ + +技術的な実現可能性とビジュアル方向の両方が不確かな場合、以下の順序が推奨されます。 + +```bash +/gsd-spike "SSE vs WebSocket for real-time feed" +/gsd-spike --wrap-up + +/gsd-sketch "real-time feed UI" +/gsd-sketch --wrap-up + +/gsd-discuss-phase N +/gsd-plan-phase N +``` + +スパイク知見はスケッチに反映されます(実際のデータ形状、実際のインタラクション状態、現実的な制約)。両方の wrap-up は決定を永続化し、プランナーと UI リサーチャーが自動的に読み込みます。そのため、`/gsd-discuss-phase` や `/gsd-ui-phase` 中に選択内容を再説明する必要はありません。 + +--- + +## スパイクまたはスケッチがフェーズにどう組み込まれるか + +スパイクとスケッチの成果物は手動で参照する必要はありません。GSD は 2 つのタイミングで自動的に読み込みます。 + +1. **`/gsd-sketch`** — モックアップ構築前に `.claude/skills/spike-findings-*/` を読み込み、バリアントが証明済みの制約(ストリーミング状態、実際のフィールド名など)を反映するようにする +2. **`/gsd-ui-phase N`** — UI デザインコントラクト生成前に `.claude/skills/sketch-findings-*/` を読み込み、事前検証済みのデザイン決定をロック済みとして扱う + +プランナーも `spike-findings-*` スキルが存在する場合はスパイク知見を読み込むため、検証済みの技術的選択(ライブラリ、プロトコル、データ形式)が繰り返しの説明なしに直接タスクプランに反映されます。 + +--- + +## Related + +- [UI フェーズをデザインする](design-a-ui-phase.md) +- [フェーズを計画する](plan-a-phase.md) +- [コマンドリファレンス](../COMMANDS.md) +- [ドキュメント一覧](../README.md) diff --git a/docs/ja-JP/how-to/update-gsd.md b/docs/ja-JP/how-to/update-gsd.md new file mode 100644 index 000000000..f3bf1c5b6 --- /dev/null +++ b/docs/ja-JP/how-to/update-gsd.md @@ -0,0 +1,120 @@ +# GSD Core をアップデートする方法 + +既存の GSD Core インストールを最新リリースに更新し、コミット前に変更履歴をプレビューし、アップデートによって上書きされるローカルカスタマイズを回復します。 + +**必要なもの:** GSD がインストールされているのと同じランタイム。アップデートコマンドは内部でインストーラを再実行するため、Node.js と npx が利用可能である必要があります(元のインストールと同じ要件)。 + +--- + +## 標準的なアップデート手順 + +AI ランタイム内から以下を実行します。 + +```bash +/gsd-update +``` + +GSD は以下を実行します。 + +1. インストール済みバージョンとインストールスコープ(グローバルまたはローカル)を検出する。 +2. `@opengsd/gsd-core` の最新リリースを npm で確認する。 +3. 変更履歴を取得し、インストール済みバージョンと最新バージョンの差分を表示する。 +4. 何も触れる前に確認を求める。 +5. GSD 管理ディレクトリ内に見つかったユーザーが追加したファイルを `gsd-user-files-backup/` にバックアップする。 +6. インストーラを実行する(`npx @opengsd/gsd-core@latest -- --`)。 +7. アップデートチェックキャッシュをクリアしてステータスラインのインジケーターをリセットする。 +8. ローカルで変更された GSD ファイルが `gsd-local-patches/` にバックアップされたかどうかを報告する。 + +アップデート後にランタイムを再起動して、新しいコマンドとエージェントを読み込んでください。 + +--- + +## フラグ + +| フラグ | 動作 | +|------|--------------| +| `--sync` | アップデート後に GSD レジストリからスキルを同期する | +| `--reapply` | アップデート後に `gsd-local-patches/` からローカルで変更された GSD ファイルをマージして戻す | + +```bash +/gsd-update --sync # アップデートしてスキルを同期する +/gsd-update --reapply # アップデートしてローカルパッチを再適用する +``` + +--- + +## アップデート前に変更履歴を確認する + +`/gsd-update` は確認を求める前に、インストール済みバージョンと最新バージョン間の変更履歴差分を常に表示します。GitHub を別途確認する必要はありません。出力は以下のようになります。 + +```text +## GSD Update Available + +Installed: 1.39.0 +Latest: 1.41.0 + +### What's New +──────────────────────────────────────────────────────────── +[changelog entries for 1.40.0 and 1.41.0] +──────────────────────────────────────────────────────────── + +Proceed with update? [Yes, update now / No, cancel] +``` + +変更履歴を取得できない場合(ネットワークアクセスなし、npm の障害)、アップデートは確認後も続行されます。変更履歴の利用可能性でブロックされることはありません。 + +--- + +## ローカルカスタマイズの回復 + +### GSD 管理ディレクトリ内に追加したファイル + +GSD が所有するディレクトリ内にカスタムファイルを配置した場合(例:`gsd-` プレフィックスのカスタムエージェント、`commands/gsd/` への追加ファイル)、インストーラはそれらを検出し、ディレクトリを削除する前に `gsd-user-files-backup/` にコピーします。アップデート後、そのバックアップ場所から手動で復元してください。 + +GSD 管理ディレクトリの外に配置したファイル(`gsd-` プレフィックスのないカスタムエージェント、`commands/gsd/` 外のカスタムコマンド、`CLAUDE.md` ファイル、カスタムフック)はインストーラによって一切変更されません。 + +### GSD がインストールしたファイルへの直接変更 + +GSD がインストールしたファイルを編集した場合(例:エージェントのシステムプロンプトの調整)、インストーラはマニフェストのハッシュ比較で変更を検出し、ファイルを `gsd-local-patches/` にバックアップしてから新しいバージョンで置き換えます。アップデート後: + +```bash +/gsd-update --reapply +``` + +これにより、新しくインストールされたファイルに `gsd-local-patches/` からの変更がマージして戻されます。 + +以前のアップデート後に `--reapply` をスキップしてパッチを今すぐ適用したい場合: + +```bash +/gsd-update --reapply +``` + +`--reapply` は新しいダウンロードをトリガーせずに単独で実行しても安全です。すでに最新バージョンであれば、GSD はインストールステップをスキップして直接パッチの再適用に進みます。 + +--- + +## npm が利用できない場合 + +ネットワーク制限、npm の障害、またはソースリポジトリから作業しているため `npx @opengsd/gsd-core@latest` が失敗する場合は、[docs/manual-update.md](../../manual-update.md) の手動アップデート手順を使用してください。そのドキュメントには、最新コミットの取得、フックの dist のビルド、`node bin/install.js` の直接実行が記載されています。 + +--- + +## すでに最新バージョンの場合 + +`/gsd-update` は確認メッセージとともに早期終了します。ダウンロード、インストール、再起動は不要です。 + +--- + +## インストーラの移行 + +各 GSD リリースには、管理ファイルの名前変更、移動、廃止を行うインストーラ移行が含まれる場合があります。移行レイヤーは新しいパッケージペイロードが書き込まれる前に自動的に実行されます。変更したファイルに影響する移行はサイレントに実行されず、確認が求められます。設計の詳細とランタイム設定コントラクトレジストリについては、[docs/installer-migrations.md](../../installer-migrations.md) を参照してください。 + +--- + +## Related + +- [ランタイムにインストールする](install-on-your-runtime.md) +- [コマンドリファレンス](../COMMANDS.md) +- [手動アップデート](../../manual-update.md) +- [インストーラ移行](../../installer-migrations.md) +- [ドキュメント一覧](../README.md) diff --git a/docs/ja-JP/how-to/verify-and-ship.md b/docs/ja-JP/how-to/verify-and-ship.md new file mode 100644 index 000000000..fb9e876a9 --- /dev/null +++ b/docs/ja-JP/how-to/verify-and-ship.md @@ -0,0 +1,124 @@ +# フェーズの検証とシッピング方法 + +**目的:** 実行済みの成果物をユーザー受け入れテストに通し、失敗を診断・修正してから、自動生成された本文でプルリクエストを作成します。 + +**前提条件:** フェーズが実行済みで `SUMMARY.md` ファイルが存在すること。実行がまだ完了していない場合は [フェーズの実行](execute-a-phase.md) を参照してください。 + +--- + +## ユーザー受け入れテストを実行する + +```bash +/gsd-verify-work 1 +``` + +GSD はフェーズの `SUMMARY.md` ファイルを読み込み、ユーザーが観察できる成果物を抽出して、それらを一つずつ確認します。各チェックポイントで、*起こるべきこと*を提示し、実際にそうなっているかを尋ねます。 + +- `yes` / `y` / 空白 → 合格、次のテストへ +- それ以外 → 問題として記録され、あなたの説明から重要度が推定されます + +重要度を分類する必要はありません — GSD があなたの言葉から推定します(「クラッシュする」→ ブロッカー、「動かない」→ メジャー、「見た目がおかしい」→ コスメティック)。 + +進捗は `.planning/phases/01-/01-UAT.md` に書き込まれ、`/clear` 後も保持されます。セッションが中断された場合は `/gsd-verify-work 1` を再実行すると、最後のチェックポイントから再開するかどうか確認されます。 + +--- + +## 失敗が見つかった場合: 自動診断と修正プランニング + +テストで問題が報告された場合、GSD は自動的に次を実行します: + +1. **根本原因を診断** — 問題ごとに並列デバッグエージェントを起動し、`UAT.md` に根本原因を追記します。 +2. **ギャップ修正をプランニング** — `gsd-planner` をギャップ修正モードで起動し、(診断を含む)`UAT.md` を読み込んで新しい `PLAN.md` ファイルを書き込みます。 +3. **修正プランを検証** — `gsd-plan-checker` を起動してプランが実行可能かを確認します。問題があれば、プランナーとチェッカーが最大 3 回反復します。 +4. **次のステップを提示** — プランがチェッカーを通過すると: + +``` +Plans verified and ready for execution. + +`/clear` then `/gsd-execute-phase 1 --gaps-only` +``` + +提示されたコマンドを実行して修正を適用し、`/gsd-verify-work 1` を再実行してすべてが合格することを確認してください。 + +--- + +## すべてのテストが合格した場合: フェーズをシップする + +すべての UAT テストが合格した場合(または最初の実行で問題が見つからなかった場合)、フェーズは `ROADMAP.md` と `STATE.md` で自動的に完了としてマークされます。 + +```bash +/gsd-ship 1 +``` + +GSD はプリフライトチェック(検証状態、クリーンなワーキングツリー、ブランチ、リモート、`gh` CLI 認証)を実行し、ブランチをプッシュして PR を作成します: + +```bash +/gsd-ship 1 # レビュー準備完了の PR +/gsd-ship 1 --draft # ドラフト PR — 後続フェーズが続く場合に便利 +``` + +PR の本文はプランニング成果物から自動的に組み立てられます: + +- `ROADMAP.md` からのフェーズ目標 +- `SUMMARY.md` ファイルとその主要ファイルからのプランごとのサマリー +- 対応した要件(REQ-ID) +- `VERIFICATION.md` からの検証状態 +- `STATE.md` からの主要な決定事項 + +本文を手動で書く必要はありません。 + +--- + +## オプション: シッピング前後のコードレビュー + +`/gsd-ship` はコードレビューを自動的に実行しませんが、任意のタイミングで挿入できます: + +**検証前**(UAT 前に問題を検出): + +```bash +/gsd-code-review 1 # 標準レビュー +/gsd-code-review 1 --fix # レビュー後に Critical + Warning の発見事項を自動修正 +``` + +**PR オープン後**(マージ前に品質をゲート): + +```bash +/gsd-code-review 1 --depth=deep # インポートグラフを含むクロスファイル分析 +``` + +サイクルの早い段階でのプランレビューに Gemini、Codex、その他のレビュアーを設定するには [クロス AI レビューの設定](set-up-cross-ai-review.md) を参照してください。 + +--- + +## オプション: クリーンな PR ブランチを作成する + +ブランチにレビュアーに見せたくない `.planning/` のコミットが含まれている場合: + +```bash +/gsd-pr-branch # main に対してフィルタリング +/gsd-pr-branch develop # develop に対してフィルタリング +``` + +`/gsd-pr-branch` はコードの変更のみを含む新しいブランチを作成します。プランニング成果物のコミットは除外されます。チームのレビューポリシーでプランニングのノイズを除外する場合は、`/gsd-ship` の前にこれを実行してください。 + +--- + +## マイルストーンのクローズ + +これがマイルストーンの最後のフェーズだった場合は、マイルストーンの監査とアーカイブを実行します: + +```bash +/gsd-audit-milestone # すべての要件がシップされたかを確認 +/gsd-complete-milestone # アーカイブ、git タグの作成 +``` + +`/gsd-complete-milestone` は PR マージ後の自然な次のステップです。検証とシッピングがプロジェクト全体のライフサイクルにどう組み込まれるかについては [フェーズループ](../explanation/the-phase-loop.md) を参照してください。 + +--- + +## Related + +- [フェーズの実行](execute-a-phase.md) +- [クロス AI レビューの設定](set-up-cross-ai-review.md) +- [フェーズループ](../explanation/the-phase-loop.md) +- [コマンド](../COMMANDS.md) diff --git a/docs/ja-JP/how-to/work-in-parallel-with-workstreams.md b/docs/ja-JP/how-to/work-in-parallel-with-workstreams.md new file mode 100644 index 000000000..8fee2a120 --- /dev/null +++ b/docs/ja-JP/how-to/work-in-parallel-with-workstreams.md @@ -0,0 +1,157 @@ +# ワークストリームを使って複数の領域を並行して進める方法 + +**目標:** バックエンド API、フロントエンドダッシュボード、インフラなど、異なるマイルストーン領域を並行して作業する際に、各領域の計画状態が互いに干渉しないようにする。 + +**前提条件:** GSD Core プロジェクトが有効な状態(`.planning/ROADMAP.md` が存在する)であること。存在しない場合は、まず `/gsd-new-project` を実行してください。 + +--- + +## ワークストリームとは + +ワークストリームは、単一のコードベース内で独立した計画コンテキストを持つ仕組みです。各ワークストリームには専用の `.planning/workstreams//` サブツリーが作成され、独立した `STATE.md`、`ROADMAP.md`、`REQUIREMENTS.md`、`phases/` ディレクトリが含まれます。コードベース本体(ソースコード、git 履歴、ブランチ)はすべてのワークストリームで共有されます。 + +``` +.planning/ +├── PROJECT.md ← 共有 +├── config.json ← 共有 +├── codebase/ ← 共有 +└── workstreams/ + ├── backend-api/ + │ ├── STATE.md + │ ├── ROADMAP.md + │ ├── REQUIREMENTS.md + │ └── phases/ + └── frontend-dash/ + ├── STATE.md + ├── ROADMAP.md + ├── REQUIREMENTS.md + └── phases/ +``` + +ワークストリームがアクティブな間、すべての GSD コマンド(`/gsd-progress`、`/gsd-discuss-phase`、`/gsd-plan-phase`、`/gsd-execute-phase`)はそのワークストリームのディレクトリを読み書き対象とします。ワークストリームを切り替えると、ソースツリーに触れることなく、これらすべてのコマンドが別のサブツリーを対象とするようになります。 + +--- + +## ワークストリームを作成する + +```bash +/gsd-workstreams create backend-api +``` + +GSD は `.planning/workstreams/backend-api/` 以下にワークストリームディレクトリを作成し、`STATE.md` と `ROADMAP.md` の雛形を生成します。ワークストリームは自動的にアクティブ化されません。明示的に切り替えを行う必要があります。 + +--- + +## ワークストリームを一覧表示する + +```bash +/gsd-workstreams list +``` + +すべてのワークストリームと、現在のセッションでアクティブなワークストリームを表示します。 + +--- + +## ワークストリームに切り替える + +```bash +/gsd-workstreams switch backend-api +``` + +これ以降、すべての GSD ワークフローコマンドは `backend-api` コンテキストで動作します。切り替えはセッションスコープで行われます。同じリポジトリで複数の Claude Code ターミナルが開いている場合、各セッションで異なるアクティブワークストリームを保持でき、互いに干渉しません。 + +切り替え後は、通常のフェーズワークフローを進めてください。 + +```bash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +/gsd-execute-phase 1 +/gsd-verify-work 1 +``` + +別の領域を作業する場合は、2 つ目のターミナルでワークストリームを切り替えます。 + +```bash +/gsd-workstreams switch frontend-dash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +``` + +--- + +## すべてのワークストリームの進捗を確認する + +```bash +/gsd-workstreams progress +``` + +すべてのワークストリームのフェーズ状態、現在位置、残作業をクロスワークストリームでまとめて表示します。切り替えなしで確認できます。 + +特定のワークストリームの詳細なステータスを確認する場合は: + +```bash +/gsd-workstreams status backend-api +``` + +--- + +## ワークストリームの作業を再開する + +コンテキストリセットや新しいセッションの後に、作業位置を復元します。 + +```bash +/gsd-workstreams resume backend-api +``` + +このコマンドはワークストリームをアクティブ化し、最後の既知の位置を復元します。手動で切り替えてから `/gsd-resume-work` を実行するのと同等です。 + +--- + +## 完了したワークストリームをアーカイブする + +ワークストリームのマイルストーン作業が完了したら: + +```bash +/gsd-workstreams complete backend-api +``` + +GSD はワークストリームをアーカイブ済みとしてマークし、アクティブ一覧から除外します。計画成果物は監査目的のため `.planning/workstreams/backend-api/` 以下に保持されます。 + +--- + +## セッションのアクティブコンテキストを変更せずに特定のワークストリームにコマンドを実行する + +セッションのアクティブコンテキストを変更せず、特定のワークストリームに対して 1 つのコマンドだけを実行したい場合は、`--ws` フラグを使用します。 + +```bash +/gsd-progress --ws frontend-dash +/gsd-plan-phase 2 --ws backend-api +``` + +`--ws` は解決順序で最高優先度を持ち、セッションスコープのポインタは変更しません。 + +--- + +## ワークスペースではなくワークストリームを選ぶ場面 + +ワークストリームを選ぶべき場合: + +- すべての作業が**同一リポジトリ**内にあり、同じ git 履歴を共有している +- API、UI、インフラなど異なる関心領域を**並行して**計画・議論したいが、各ワークストリームの `STATE.md` が互いに上書きされないようにしたい +- 作成時にワークストリームごとの別ブランチが不要(各ワークストリームの実行中に通常どおりブランチを切ることは可能) +- 完全な git ワークツリーを作成するオーバーヘッドが、必要な分離に対して割に合わない + +代わりに[ワークスペース](isolate-work-with-workspaces.md)を選ぶべき場合: + +- **複数のリポジトリ**(例:`hr-ui` と `ZeymoAPI`)にまたがって作業している +- フィーチャーごとに**独立した git ワークツリー**やクローンが必要(独立したブランチ、ロックファイル、ビルド成果物) +- 各ワークスペースで `/gsd-new-project` を独立して実行し、メインリポジトリの `.planning/` のサブディレクトリではなく、完全に独立した `.planning/` ルートを持ちたい + +--- + +## Related + +- [ワークスペースで作業を分離する](isolate-work-with-workspaces.md) +- [フェーズループ](../explanation/the-phase-loop.md) +- [コマンドリファレンス](../COMMANDS.md) +- [ドキュメント一覧](../README.md) diff --git a/docs/ja-JP/issue-driven-orchestration.md b/docs/ja-JP/issue-driven-orchestration.md new file mode 100644 index 000000000..23b1e6da0 --- /dev/null +++ b/docs/ja-JP/issue-driven-orchestration.md @@ -0,0 +1,92 @@ +# GSD によるイシュー駆動オーケストレーション + +**ステータス:** 安定したワークフローガイド +**対象:** GitHub Issues、Linear、Jira、または類似のイシュートラッカーで作業を追跡し、GSD の既存プリミティブを通じて AI 支援実装を推進したい開発者。 + +## このガイドについて + +GSD がすでに提供するコマンドをイシュートラッカー → ワークスペース → 計画/実行 → 検証/レビュー → PR ループに組み合わせるためのレシピです。これはドキュメントのみです。新しいコマンドなし、デーモンなし、トラッカー統合なし——以下で参照するすべてのコマンドは今日の GSD に既に存在します。 + +この形は OpenAI のオープンソース [Symphony オーケストレーションリファレンス](https://openai.com/index/open-source-codex-orchestration-symphony/)([リポジトリ](https://github.com/openai/symphony))にインスパイアされています。GSD は Symphony をベンダリングまたはラッピングしません。オーケストレーションの *概念* は GSD がすでに公開しているプリミティブにきれいにマッピングされます;このガイドはグルーコードを書いたり GSD の安全ゲートを回避したりせずにパターンを採用できるようにマッピングを説明するだけです。 + +## なぜこれが存在するか + +GSD にはイシュー駆動 AI 開発のビルディングブロックがあります——`/gsd-workspace --new`、`/gsd-manager`、`/gsd-autonomous`、`/gsd-verify-work`、`/gsd-review`、`/gsd-ship`、さらに `STATE.md` とフェーズアーティファクトスイート——しかし、カスタムオーケストレーションスクリプトを書かずに単一のトラッカーイシューから端から端まで動かす方法を説明するガイドがありませんでした。そのガイドなしでは失敗モードは: + +- 過少使用:開発者が discuss/plan/execute を手動で実行し、作業パターンが合致しているときでも `/gsd-manager` や `/gsd-autonomous` に手を出さない。 +- 回避策スクリプト:開発者がトラッカーと `claude` 呼び出しの間にアドホックなシェルループを配線し、`STATE.md`、フェーズマニフェスト、検証ゲートを迂回する。 + +このガイドは正規ループを発見しやすくします。 + +## 概念マッピング + +各行は Symphony スタイルのオーケストレーション概念を、それをすでに提供する GSD プリミティブにマッピングします。Symphony のドキュメント、ブログ投稿、サードパーティのオーケストレーション記事を読む際の変換キーとしてこのテーブルを使ってください。 + +| Symphony の概念 | GSD プリミティブ | +|---|---| +| `WORKFLOW.md`(トップレベルの意図) | `ROADMAP.md`(プロジェクトの意図)、`STATE.md`(ライブステータス)、フェーズ `CONTEXT.md`(フェーズごとのスコープ)、フェーズ `PLAN.md`(実行可能なステップ) | +| タスクごとの分離されたエージェントワークスペース | `/gsd-workspace --new --strategy worktree` | +| エージェントのディスパッチと並列性 | `/gsd-manager`(インタラクティブダッシュボード)、`/gsd-autonomous`(非同期) | +| フェーズごとの計画と議論ステップ | `/gsd-discuss-phase` → `/gsd-plan-phase` → `/gsd-execute-phase` | +| 作業の証明 / テスト証拠 | `/gsd-verify-work`(`/clear` をまたいで永続する UAT.md) | +| 対立的レビュー | `/gsd-review`(計画のクロス AI ピアレビュー) | +| ヒューマンマージゲート | `/gsd-ship`(PR を作成し、オプションのコードレビュー、マージ準備) | +| フォローアップキャプチャ | `/gsd-capture`、`/gsd-capture --seed`、`/gsd-new-milestone`、または手動で開いたトラッカーイシュー | +| 並列性制御 | マネージャー / バックグラウンドエージェントのセマンティクス(常時オンのポーラーなし) | + +このマッピングは一方向です:GSD が安全ゲート(検証、ヒューマンレビュー、フォローアップ作成の明示的確認)を所有します。Symphony の「継続的オーケストレーション」フレーミングは意図的に採用していません——[非目標](#non-goals) を参照してください。 + +## エンドツーエンドフロー + +単一のトラッカーイシューから端から端まで実行できるように書かれた、正規のイシュー → PR ループ。実行前に括弧内のプレースホルダーを置き換えてください。 + +1. **トラッカーイシューを選ぶ。** トラッカー(GitHub、Linear など)から、自律的な実装に十分な範囲があるイシューを一つ選びます——境界が明確なスコープ、観察可能な受け入れ基準、実行をブロックする上流の依存関係なし。 +2. **GSD フェーズにマッピングする。** イシューが `ROADMAP.md` の既存フェーズにマッピングされる場合はそれを選択します。そうでない場合は、関連イシューの新しいマイルストーンのために `/gsd-new-milestone` を実行するか、`/gsd-phase` / `/gsd-phase --insert` でフェーズを開きます。フェーズの `CONTEXT.md` にトラッカーイシューの URL を記録し、圧縮後もトレーサビリティが維持されるようにします。 +3. **分離されたワークスペースを作成する。** `/gsd-workspace --new --strategy worktree ` を実行して、独立した `.planning/` ディレクトリを持つ git ワークツリーを立ち上げます。ワークツリーは安全境界です:探索、部分的なコミット、中断された計画はすべて `main` の外に留まります。 +4. **GSD を通じて discuss → plan → execute を実行する。** ワークスペース内から、`/gsd-discuss-phase` で曖昧さを明確にし、`/gsd-plan-phase` で `PLAN.md` を生成し、`/gsd-manager`(インタラクティブダッシュボード)または `/gsd-execute-phase` / `/gsd-autonomous`(非同期)で実装します。GSD の外から生の `claude` 呼び出しを直接動かすことは避けてください——それは `STATE.md` の更新とフェーズマニフェストを迂回します。 +5. **作業の証明を要求する。** `/gsd-verify-work` を実行して、フェーズの受け入れ基準に対して UAT をユーザーに案内します。テスト、スクリーンショット、ログキャプチャ、設定差分はすべて `UAT.md` に記録され、`/clear` をまたいで永続し、検証でミスしたスコープが発見されたときに `/gsd-plan-phase --gaps` にフィードされます。 +6. **レビューと出荷ゲートを通過する。** `/gsd-review` を実行して独立した AI CLI からの対立的ピアレビューを受け(モデルごとのブラインドスポットをキャッチ)、次に `/gsd-ship` で計画アーティファクトから組み立てたリッチなボディ付きで PR を開きます。どちらのゲートもリモートに何かが届く前に人間の決定を必要とします。 +7. **フォローアップ作業を明示的にキャプチャする。** インラインメモには `/gsd-capture` を、将来のフェーズの価値があるアイデアには `/gsd-capture --seed` を、一貫したフォローアップグループには `/gsd-new-milestone` を使います。発見されたフォローアップからトラッカーイシューを作成するには、明示的なユーザー確認が必要です——GSD はリモートトラッカーに自動投稿しません。 + +PR がマージされると、ループが閉じます。PR ボディのオートクローズキーワード(`Closes #NNN` / `Fixes #NNN`)がマージ時にトラッカーイシューを閉じます。 + +## 安全境界 + +このループが安全なのは、4 つの不変条件が設計上成立するからです: + +- **分離されたワークツリー。** すべてのイシューが `/gsd-workspace --new` ワークツリーで実行されるため、部分的な作業、中断された計画、探索的なコミットは `main` に触れません。`gsd-local-patches/` は、ワークツリーの手動編集をアップデートをまたいで持ち戻す必要がある場合の回復面です。 +- **明示的な人間によるレビュー。** `/gsd-review` と `/gsd-ship` はどちらも人間の承認で停止します。オートマージはなく、実行からの自動 PR パスもありません。特定のリポジトリで人間ゲートを削除したい場合は、それはブランチ保護 / マージキューポリシーの決定であり、GSD があなたに代わってオプトインするものではありません。 +- **自動公開投稿なし。** GSD は明示的なユーザー起動コマンドなしにトラッカーイシューを開いたり、コメントしたり、閉じたりしません。フォローアップキャプチャはデフォルトでローカルアーティファクト(メモ、シード、マイルストーン)になります;トラッカーに押し戻すことは別の手動ステップです。 +- **出荷前の検証。** `/gsd-verify-work` の UAT.md は `/gsd-ship` が実行される前に証拠を記録しなければなりません。推奨される規律は、実装が正しく見えるときでも `verification_failed` をブロッカーとして扱うことです——失敗は通常フラキーなテストではなく、ミスした受け入れ基準を表面化します。 + +これらの不変条件のいずれかが迂回された場合(例:ワークツリーに直接 `claude` を実行する、`/gsd-verify-work` をスキップする、またはユーザー確認なしにトラッカー API を通じてイシュー作成をスクリプト化する)、このガイドの保証は適用されません。 + +## 非目標 {#non-goals} + +このガイドは意図的に以下のいずれも提案しません。将来のコントリビューターがコードレビューで再論争しないように、ここにリストされています: + +- **Symphony コードのベンダリングまたはコピーなし。** GSD は独自のプリミティブを再利用します。上記のマッピングは概念的です;Symphony 由来のソースはこのリポジトリに同梱されません。 +- **常時実行デーモンなし。** GSD は GitHub や Linear をポーリングしません。マネージャーと自律ワークフローは、デーモンではなくバックグラウンドエージェントのセマンティクスを通じて並列性を処理します。 +- **必須のトラッカー依存関係なし。** このループはトラッカー統合なしで機能します。「トラッカーイシュー」ステップは *人間の入力* です——URL は `CONTEXT.md` に入ります。GSD はあなたが使用するトラッカーについても、トラッカーを使用するかどうかについても意見を持ちません。 +- **検証、レビュー、または人間の決定ゲートの迂回なし。** `/gsd-autonomous` を実行する場合でも、検証とレビューゲートは依然として発火します。「自律的」ラベルはフェーズからフェーズへの進行を指し、人間の承認をスキップすることではありません。 +- **デフォルトのスキル / コマンド面の拡張なし。** このガイドで参照するすべてのコマンドはすでに存在します。このガイドはドキュメント面であり、機能面ではありません。 + +## 将来のフォローアップの可能性 + +このループでのメンテナーの経験がそれを正当化するなら、別の承認済み拡張として後で *最小限の* トラッカーブリッジを追加できます: + +- 一つの GitHub または Linear イシューを GSD ワークスペース / フェーズにインポートする。 +- `UAT.md` 証拠をソースイシューのコメントとしてエクスポートする。 +- `/gsd-capture --seed` の出力からフォローアップトラッカーイシューを生成する。 + +これらはそれぞれ統合面と継続的なメンテナンス負担を追加するため、それぞれ独自の拡張提案になります。このガイドのスコープ外です。 + +## Related + +- [フェーズループ](explanation/the-phase-loop.md) — discuss → plan → execute → verify → ship が繰り返すサイクルとしてどう組み合わさるか。 +- [ワークスペース how-to](how-to/work-in-parallel-with-workstreams.md) — 並列ワークツリーの作成と管理のステップバイステップガイド。 +- [ドキュメント索引](README.md) — GSD Core ドキュメントの完全な目次。 +- [docs/USER-GUIDE.md](./USER-GUIDE.md) — 上で参照した個々のコマンドのタスク指向のウォークスルー。 +- [docs/COMMANDS.md](COMMANDS.md) — `/gsd-*` コマンドの完全なリファレンス。 +- [docs/FEATURES.md](FEATURES.md) — 機能レベルの能力マトリクス(ワークスペース、マネージャー、自律、検証、レビュー、出荷)。 +- [docs/ARCHITECTURE.md](ARCHITECTURE.md) — フェーズアーティファクトのライフサイクルと `STATE.md` の仕組み。 diff --git a/docs/ja-JP/reference/context-md.md b/docs/ja-JP/reference/context-md.md new file mode 100644 index 000000000..3070c4020 --- /dev/null +++ b/docs/ja-JP/reference/context-md.md @@ -0,0 +1,148 @@ +# CONTEXT.md スキーマリファレンス + +フェーズごとの `CONTEXT.md` は、`/gsd:discuss-phase` 中に収集された実装上の意思決定を格納する GSD Core のキャリアファイルです。リサーチエージェントとプランニングエージェントの両方にとって主要な上流インプットです。このページではそのスキーマを説明します。[ドキュメントインデックス](../../README.md) も参照してください。 + +--- + +## 概要 + +ディスカッションワークフローを経たすべてのフェーズは、以下のパスに `CONTEXT.md` を1つ生成します: + +``` +.planning/phases/-/-CONTEXT.md +``` + +例: `.planning/phases/03-post-feed/03-CONTEXT.md` + +このファイルは `get-shit-done/workflows/discuss-phase.md` の `write_context`(または PRD / ADR インジェストのエクスプレスパス)によって生成されます。通常の運用中は手動で編集されません — discuss-phase ワークフローが書き込み、下流エージェントが封印された信頼できる情報源として読み取ります。 + +--- + +## フロントマター + +`CONTEXT.md` は YAML フロントマターを持ちません。メタデータは本文の先頭にインラインで記述されます: + +```markdown +# Phase [X]: [Name] - Context + +**Gathered:** [ISO date] +**Status:** Ready for planning +``` + +`Status` フィールドはファイル初回書き込み時に常に `Ready for planning` です。作成後は更新されません。 + +--- + +## ブロック構造 + +本文は名前付きの XML スタイルブロックに分割されています。ブロックは固定の順序で登場し、下流エージェントは行番号ではなくブロック名で読み取ります。 + +| ブロック | 用途 | 設定元 | 参照先 | +|---|---|---|---| +| `` | フェーズの境界を示します — このフェーズが何を提供し、何が明示的にスコープ外かを述べます。プランニングと実行を通じてスコープガードレールを固定します。 | `discuss-phase`(ROADMAP.md のフェーズゴールから) | `gsd-planner`、`gsd-plan-checker`(スコープ準拠) | +| `` | `check_spec` ステップが `*-SPEC.md` を発見した場合のみ存在します。ロックされた要件数とスコープ境界をリストします。エージェントは完全な要件を得るために直接 `SPEC.md` を読むよう指示されます。 | `discuss-phase`(条件付き) | `gsd-planner`(要件をここで再読みせず SPEC.md を読む) | +| `` | ディスカッションから収集された実装上の意思決定。`D-NN` 識別子でキー付け。カテゴリは固定の分類ではなく実際に議論された内容から生まれます。ユーザーが委任した領域のための `Claude's Discretion` サブセクションを含みます。 | `discuss-phase`(インタラクティブなディスカッション) | `gsd-planner`(ロックされた決定は必ず実装する)、`gsd-plan-checker`(ディメンション7準拠) | +| `` | このフェーズに関連するすべての仕様、ADR、機能ドキュメント、設計ドキュメントへの完全な相対パス。必須 — すべての CONTEXT.md にこのセクションが必要です。エージェントはプランニングまたは実装の前にリストされたファイルを読む必要があります。 | `discuss-phase`(ROADMAP.md の参照 + ディスカッション中のユーザー参照 + コードベーススカウトから集積) | `gsd-phase-researcher`、`gsd-planner` | +| `` | `scout_codebase` ステップで発見された再利用可能なアセット、確立されたパターン、統合ポイント。エージェントを再実装ではなく既存コードに向けるためのガイダンス。 | `discuss-phase`(コードベーススカウト) | `gsd-planner`、`gsd-phase-researcher` | +| `` | ディスカッション中に verbatim で収集された「こんな感じにしたい」という具体的な参照、製品比較、特定の例。 | `discuss-phase`(自由形式のユーザー入力) | `gsd-planner` | +| `` | ディスカッション中に浮上したが別のフェーズに属するアイデア。失われないよう保存されます。Todos がレビューされたがスコープに含まれなかった場合は `Reviewed Todos` サブセクションを含みます。 | `discuss-phase`(スコープクリープのリダイレクト) | 自動化されたエージェントには使用されない; 人間の参照のみ | + +--- + +## 意思決定識別子フォーマット + +`` 内のすべての意思決定は連番の `D-NN` 識別子を持ちます: + +```markdown +### Layout style +- **D-01:** Card-based layout, not timeline or list +- **D-02:** Each card shows: author avatar, name, timestamp, full post content, reaction counts +``` + +識別子はフェーズにスコープされます。フェーズ3の `D-01` はフェーズ7の `D-01` とは無関係です。プランチェッカー(ディメンション7)は、すべての `D-NN` が生成されたプランの少なくとも1つのタスクアクションによって対処されていることを検証します。 + +--- + +## Canonical references + +`` ブロックは **必須** です。不在の場合、エージェントは CONTEXT.md が不完全であるとみなし警告を表示します。エントリはトピックごとにグループ化され、完全な相対パスとファイルが決定または定義する内容の簡単な説明を含みます: + +```markdown + +## Canonical References + +**Downstream agents MUST read these before planning or implementing.** + +### Feed display +- `docs/features/social-feed.md` — Feed requirements, post card fields, engagement display rules +- `docs/decisions/adr-012-infinite-scroll.md` — Scroll strategy decision, virtualisation requirements + +### Empty states +- `docs/design/empty-states.md` — Empty state patterns, illustration guidelines + + +``` + +プロジェクトに外部仕様がない場合は、このセクションでそれを明示します: + +``` +No external specs — requirements fully captured in decisions above +``` + +`` 内に散在する「ADR-019 を参照」などのインラインメンションは不十分です。エージェントには専用セクションに完全なパスが必要です。 + +--- + +## Decision Coverage Gate との関係 + +プランチェッカーの **ディメンション7: Context Compliance** はプランニング後にカバレッジゲートを強制します: + +1. `` 内のすべての `D-NN` 識別子は、少なくとも1つのプランタスクの `` または根拠に登場する必要があります。 +2. `` にリストされているものをタスクが実装してはなりません(スコープクリープ)。 +3. `Claude's Discretion` 領域はこのチェックから免除されます — プランナーは自由に選択できます。 + +意思決定がプランに反映されている CONTEXT.md は準拠とみなされます。意思決定が暗黙的に削除されたり部分的にしか実現されていない CONTEXT.md は **ディメンション7b: Scope Reduction Detection** をトリガーし、常に BLOCKER となります。 + +--- + +## SPEC.md との統合 + +フェーズをディスカッションする前に `/gsd:spec-phase` が実行された場合、`check_spec` ステップが `*-SPEC.md` ファイルを見つけ `` を有効にします: + +```markdown + +## Requirements (locked via SPEC.md) + +**12 requirements are locked.** See `03-SPEC.md` for full requirements, boundaries, and acceptance criteria. + +Downstream agents MUST read `03-SPEC.md` before planning or implementing. Requirements are not duplicated here. + +**In scope (from SPEC.md):** [copied from SPEC.md Boundaries] +**Out of scope (from SPEC.md):** [copied from SPEC.md Boundaries] + + +``` + +`` が存在する場合、`` にはディスカッションからの実装上の意思決定のみが含まれます — 「何を作るか」ではなく「どのように作るか」です。要件は2つのファイル間で重複しません。 + +--- + +## フッター + +すべての CONTEXT.md はアイデンティティフッターで終わります: + +```markdown +--- + +*Phase: XX-name* +*Context gathered: [date]* +``` + +--- + +## Related + +- [PLAN.md スキーマ](plan-md.md) +- [Planning artifacts](planning-artifacts.md) +- [Discuss modes](../../workflow-discuss-mode.md) +- [docs index](../../README.md) diff --git a/docs/ja-JP/reference/plan-md.md b/docs/ja-JP/reference/plan-md.md new file mode 100644 index 000000000..26cc3aeac --- /dev/null +++ b/docs/ja-JP/reference/plan-md.md @@ -0,0 +1,249 @@ +# PLAN.md スキーマリファレンス + +フェーズごとの `PLAN.md` は GSD Core の実行可能な作業単位です — エグゼキューターエージェントに何を構築し、正しく構築されたことをどのように検証するかを正確に伝える構造化ドキュメントです。このページではそのスキーマを説明します。[ドキュメントインデックス](../../README.md) も参照してください。 + +--- + +## 概要 + +プランはフェーズディレクトリ内の以下のパスに保存されます: + +``` +.planning/phases/-/--PLAN.md +``` + +例: `.planning/phases/03-post-feed/03-02-PLAN.md`(フェーズ3、プラン2)。 + +プランは `gsd-planner` エージェント(`/gsd:plan-phase` によって起動)が生成し、`execute-phase` が使用します。通常、フェーズには1〜4つのプランが含まれます。フェーズ内のプランは実行ウェーブに割り当てられ、独立した作業が並行して実行されます。 + +--- + +## YAML フロントマター + +すべての PLAN.md は `---` デリミタの間にある YAML フロントマターブロックで始まります。 + +### 注釈付きサンプル + +```yaml +--- +phase: 03-post-feed +plan: 02 +type: execute +wave: 2 +depends_on: ["03-01"] +files_modified: + - src/components/PostFeed.tsx + - src/components/PostCard.tsx + - src/app/feed/page.tsx +autonomous: true +requirements: ["FEED-01", "FEED-03"] +user_setup: [] + +must_haves: + truths: + - "User can scroll through posts from followed accounts" + - "Each post shows author avatar, name, timestamp, and content" + - "Empty state appears when no posts exist" + artifacts: + - path: "src/components/PostFeed.tsx" + provides: "Scrollable post list" + min_lines: 40 + - path: "src/components/PostCard.tsx" + provides: "Individual post card" + exports: ["PostCard"] + key_links: + - from: "src/components/PostFeed.tsx" + to: "/api/feed" + via: "fetch in useEffect" + pattern: "fetch.*api/feed" +--- +``` + +### フロントマターフィールドリファレンス + +| フィールド | 必須 | 型 | 用途 | +|---|---|---|---| +| `phase` | はい | string | フェーズ識別子。例: `03-post-feed`。 | +| `plan` | はい | string | フェーズ内のプラン番号。例: `02`。 | +| `type` | はい | `execute` または `tdd` | 標準プランは `execute`; テスト駆動プラン(実装前にテストを書く)は `tdd`。 | +| `wave` | はい | integer | 実行ウェーブ。ウェーブ1のプランは並行実行されます(依存なし)。ウェーブ2以降のプランは前のウェーブのすべてのプランが完了するまで待機します。`gsd-planner` がプランニング時に事前計算します。 | +| `depends_on` | はい | プラン ID の配列 | このプランが待機する必要があるプランの一覧。空配列 = ウェーブ1。例: `["03-01"]` はこのプランがフェーズ3のプラン01の後に実行されることを意味します。 | +| `files_modified` | はい | パスの配列 | このプランが作成または変更するすべてのファイル。プランチェッカーが同一ウェーブのファイル競合を検出するため、および execute-phase がマージ追跡のために使用します。 | +| `autonomous` | はい | boolean | すべてのタスクが `auto` タイプの場合に `true`。プランに人間の操作が必要な `checkpoint:*` タスクが含まれる場合は `false`。 | +| `requirements` | はい | ID の配列 | このプランが対処する ROADMAP.md の要件 ID。すべてのフェーズ要件 ID は少なくとも1つのプランの `requirements` フィールドに登場する必要があります。空配列は BLOCKER です。 | +| `user_setup` | いいえ | オブジェクトの配列 | Claude が自動化できない外部サービスのセットアップ手順(アカウント作成、シークレット取得、ダッシュボード設定など)。存在する場合、execute-phase は開発者向けに `USER-SETUP.md` チェックリストを生成します。 | +| `must_haves` | はい | object | ゴール逆引き型の検証基準。以下を参照。 | + +--- + +## `must_haves` フィールド + +`must_haves` はフェーズゴールを達成するために観察可能に真でなければならないことを記録します。プランニング中に導出され、実行後に `gsd-verifier` エージェントによって検証されます。 + +### サブフィールド + +| サブフィールド | 型 | 用途 | +|---|---|---| +| `truths` | 文字列の配列 | ユーザーの視点からの観察可能な動作。それぞれが検証可能でなければなりません。例: `"User can send a message"`(`"WebSocket library installed"` は不可)。 | +| `artifacts` | オブジェクトの配列 | 実質的な実装(スタブではなく)で存在しなければならないファイル。 | +| `artifacts[].path` | string | プロジェクトルートからの相対ファイルパス。 | +| `artifacts[].provides` | string | このファイルが提供する機能。 | +| `artifacts[].min_lines` | integer(オプション) | スタブではないとみなす最小行数。 | +| `artifacts[].exports` | 文字列の配列(オプション) | 検証すべき期待される名前付きエクスポート。 | +| `artifacts[].contains` | string(オプション) | ファイルに存在しなければならない正規表現またはリテラルパターン。 | +| `key_links` | オブジェクトの配列 | アーティファクト間の重要な接続 — システムをエンドツーエンドで機能させる配線。 | +| `key_links[].from` | string | ソースファイルまたはコンポーネント。 | +| `key_links[].to` | string | ターゲットファイル、エンドポイント、またはモジュール。 | +| `key_links[].via` | string | 接続方法の説明(例: `fetch in useEffect`、`Prisma query`、`import`)。 | +| `key_links[].pattern` | string(オプション) | ソース内に接続が存在することを検証する正規表現。 | + +--- + +## 本文構造 + +フロントマターの後、プラン本文はエグゼキューターエージェントが読み取る名前付き XML スタイルブロックを使用します。 + +### `` + +プランが提供するものとプロジェクトにとっての重要性を述べます: + +```xml + +Implement the post feed as a scrollable card list. + +Purpose: Core display feature for the social feed phase. +Output: PostFeed and PostCard components wired to /api/feed. + +``` + +### `` + +エグゼキューターが開始前に読むワークフローファイルの一覧。常に execute-plan ワークフローを含み、プランにチェックポイントタスクがある場合はチェックポイントリファレンスを追加します: + +```xml + +@~/.claude/get-shit-done/workflows/execute-plan.md +@~/.claude/get-shit-done/templates/summary.md + +``` + +### `` + +エグゼキューターが読む必要があるソースファイルの参照。プロジェクトレベルのプランニングドキュメントと、プランが複製しなければならないパターンや型を持つすべてのソースファイルを含みます。同じフェーズの以前のプランの `SUMMARY.md` は、型や共有された意思決定への真の依存がある場合のみ含めます — 反射的には含めません: + +```xml + +@.planning/PROJECT.md +@.planning/ROADMAP.md +@.planning/STATE.md +@src/components/UserCard.tsx + +``` + +### `` + +1つ以上の `` 要素を含みます。`type="auto"` タスクのすべてのタスク要素には ``、``、``、``、``、``、`` が必要です。 + +--- + +## タスクタイプ + +| タイプ | 用途 | 自律性 | +|---|---|---| +| `auto` | エグゼキューターが独立して実行できるすべて。 | 完全自律。 | +| `checkpoint:human-verify` | 人間が実行中の UI やサービスを確認する必要があるビジュアルまたは機能的な検証。 | 実行を一時停止して開発者に提示; 承認後に再開。 | +| `checkpoint:decision` | 実行中に浮上し開発者の入力が必要な実装上の選択。 | 実行を一時停止してオプションを提示; 選択後に再開。 | +| `checkpoint:human-action` | 真に避けられない手動ステップ(アカウント作成、ハードウェア操作)。控えめに使用。 | 実行を一時停止して確認後に再開。 | + +チェックポイントタスクが含まれるプランはフロントマターに `autonomous: false` を設定する必要があります。 + +--- + +## `auto` タスク構造 + +```xml + + Task 1: Create PostCard component + src/components/PostCard.tsx + src/components/UserCard.tsx, src/types/post.ts + Create PostCard component accepting a Post prop (id, authorId, content, createdAt, + reactionCount). Render author avatar using UserAvatar from UserCard pattern. Show timestamp + using date-fns formatDistanceToNow. Export as named export PostCard. + npx tsc --noEmit + + - src/components/PostCard.tsx exports named export PostCard + - PostCard.tsx contains "reactionCount" prop usage + - npx tsc --noEmit exits 0 + + PostCard renders post content with author and timestamp + +``` + +### `auto` タスクの必須フィールド + +| フィールド | ルール | +|---|---| +| `` | タスクが作成または変更するすべてのファイル。エグゼキューターはこれらのファイルのみを書き込みます。 | +| `` | エグゼキューターが何かに触れる前に読まなければならないファイル — 変更するファイル、信頼できる参照パターンファイル、型や規則を複製しなければならないすべてのファイル。 | +| `` | 正確な識別子、ファイルパス、関数シグネチャ、期待される値を含む具体的な指示。ターゲット状態を指定せずに「X を Y に合わせる」とは言いません。フェンスされたコードブロックや完全な実装を含みません。 | +| `` | タスクが成功したことを証明する実行可能なコマンドまたはチェック。合格と不合格を区別できなければなりません — `echo "done"` は無効です。 | +| `` | 検証可能な条件: grep で検証可能な文字列、コマンドの終了コード、観察可能な動作。主観的な言語(「正しく見える」、「適切に設定されている」)は使用しません。 | +| `` | 完了した成果の短い測定可能な説明。 | + +--- + +## プラン品質ディメンション + +`gsd-plan-checker` エージェントは実行開始前に12のディメンションにわたってすべての PLAN.md をレビューします。BLOCKER 深刻度のチェックに失敗したプランは `gsd-planner` に差し戻されます(最大3回のイテレーション): + +| ディメンション | チェック内容 | +|---|---| +| **1 — Requirement Coverage** | ROADMAP.md からのすべてのフェーズ要件 ID が少なくとも1つのプランの `requirements` フロントマターフィールドに登場し、対応するタスクがある。 | +| **2 — Task Completeness** | すべての `auto` タスクが必須フィールド(``、``、``、``、``)を持つ。曖昧なフィールドや空のフィールドがない。 | +| **3 — Dependency Correctness** | `depends_on` の参照が有効で非循環かつウェーブ番号と整合している。ウェーブ N のプランはウェーブ < N のプランのみに依存する。 | +| **4 — Key Links Planned** | `must_haves.key_links` のアーティファクトに、アーティファクトの作成だけでなく配線を実装する対応するタスクがある。 | +| **5 — Scope Sanity** | プランはコンテキスト予算内に収まる: プランあたり2〜3タスク(4 = 警告、5以上 = BLOCKER)、プランあたり8〜10ファイル以下(15以上 = BLOCKER)。 | +| **6 — Verification Derivation** | `must_haves.truths` は実装の詳細ではなくユーザー観察可能な動作。アーティファクトが truths にマッピングされる。key links が重要な配線をカバーする。 | +| **7 — Context Compliance** | CONTEXT.md のすべての `D-NN` 決定が少なくとも1つのタスクによって対処されている。`` にあるものをタスクが実装していない。 | +| **7b — Scope Reduction Detection** | タスクアクションが、完全な決定スコープを提供せずにロックされた決定を暗黙的に「v1」、「スタブ」、または「将来の強化」に縮小していない。発見された場合は常に BLOCKER。 | +| **7c — Architectural Tier Compliance** | タスクが RESEARCH.md の Architectural Responsibility Map(存在する場合)に従って正しいティアに機能を割り当てている。誤ったティアのセキュリティ機密機能は BLOCKER。 | +| **8 — Nyquist Compliance** | `workflow.nyquist_validation` が有効で RESEARCH.md が存在する場合、すべてのタスクに `` 検証コマンドがあり、連続する3タスクのウィンドウにカバレッジがなく、VALIDATION.md が存在する。 | +| **9 — Cross-Plan Data Contracts** | プランがデータパイプラインを共有する場合、それらの変換が互換性を持つ — 別のプランが元の形式で必要とするデータをプランが削除しない。 | +| **10 — CLAUDE.md Compliance** | プランが `./CLAUDE.md` のプロジェクト固有の規則、禁止パターン、必須ツール、セキュリティ要件を遵守している。 | +| **11 — Research Resolution** | RESEARCH.md が存在する場合、プランニングを進める前にその `## Open Questions` セクションが `(RESOLVED)` とマークされている。 | +| **12 — Pattern Compliance** | PATTERNS.md が存在する場合、タスクが新規または変更される各ファイルに対して正しいアナログパターンを参照している。 | + +--- + +## ウェーブ実行モデル + +ウェーブ番号はプランニング中に事前計算されます。Execute-phase はウェーブ番号でプランをグループ化し、各ウェーブのプランを並行して実行します: + +``` +Wave 1: Plan 01, Plan 02, Plan 03 (すべて同時実行 — 依存なし) +Wave 2: Plan 04 (Wave 1 完了を待機) +Wave 3: Plan 05 (Wave 2 完了を待機) +``` + +同一ウェーブ内で重複するファイルを変更するプランは同じウェーブに入れてはなりません — プランチェッカーのディメンション3がこれを BLOCKER としてフラグします。 + +--- + +## プラン出力 + +プランが正常に実行された後、エグゼキューターは以下のパスに SUMMARY.md を書き込みます: + +``` +.planning/phases/-/--SUMMARY.md +``` + +SUMMARY.md は何が構築されたかの正規の記録です。同じフェーズの後続プランは、型や意思決定への真の依存がある場合にのみそれを参照できます。 + +--- + +## Related + +- [CONTEXT.md スキーマ](context-md.md) +- [Planning artifacts](planning-artifacts.md) +- [Features](../../FEATURES.md) +- [docs index](../../README.md) diff --git a/docs/ja-JP/reference/planning-artifacts.md b/docs/ja-JP/reference/planning-artifacts.md new file mode 100644 index 000000000..1f51165ca --- /dev/null +++ b/docs/ja-JP/reference/planning-artifacts.md @@ -0,0 +1,225 @@ +# プランニングアーティファクト リファレンス + +`.planning/` ディレクトリはプロジェクトの GSD Core 共有メモリです。すべてのワークフローはここから読み取り、書き込み、意思決定の監査可能な証跡を残します。このページではすべてのファイル、その目的、どのコマンドが生成・使用するかをマッピングします。[ドキュメントインデックス](../../README.md) も参照してください。 + +--- + +## ディレクトリ構造 + +``` +.planning/ +├── PROJECT.md # プロジェクトのアイデンティティとコアバリュー +├── ROADMAP.md # マイルストーン + フェーズ一覧とゴール +├── REQUIREMENTS.md # 番号付きの受け入れ基準 +├── STATE.md # 現在地を追跡するリビングドキュメント +├── config.json # ワークフローとモデルの設定 +├── MILESTONES.md # マイルストーンアーカイブ(オプション) +├── BACKLOG.md # 延期および将来の作業(オプション) +├── LEARNINGS.md # 蓄積されたフェーズ横断の学習(オプション) +├── DECISIONS-INDEX.md # 過去の意思決定のローリングサマリー(オプション) +├── METHODOLOGY.md # 再利用可能な解釈フレームワーク(オプション) +├── HANDOFF.json # 機械可読な一時停止状態(一時的) +├── codebase/ # コードベースマップ(オプション) +│ ├── architecture.md +│ ├── stack.md +│ └── ... +├── intel/ # クエリ可能なシンボルインデックス(オプション、intel.enabled) +│ └── API-SURFACE.md +└── phases/ + └── -/ # フェーズごとに1ディレクトリ + ├── -CONTEXT.md # 実装上の意思決定(discuss-phase) + ├── -DISCUSSION-LOG.md # 人間可読なディスカッション監査(discuss-phase) + ├── -RESEARCH.md # 技術リサーチの所見(plan-phase) + ├── -VALIDATION.md # Nyquist テストカバレッジ戦略(plan-phase) + ├── -PATTERNS.md # コードベースアナログマップ(plan-phase、オプション) + ├── --PLAN.md # 実行可能プラン(plan-phase、プランごとに1つ) + ├── --SUMMARY.md # 実行記録(execute-phase、プランごとに1つ) + ├── -VERIFICATION.md # フェーズゴール検証レポート(verify-phase) + ├── -UAT.md # 永続的な UAT セッション状態(execute-phase) + └── .continue-here.md # 一時停止後の再開指示(pause-work) +``` + +--- + +## ルートレベルのアーティファクト + +### `PROJECT.md` + +| | | +|---|---| +| **用途** | プロジェクトの正規アイデンティティ: 概要、対象ユーザー、コアバリュー、要件、制約、主要な意思決定。プロダクトの進化に伴いプロジェクトライフサイクル全体を通じて更新されます。 | +| **生成元** | `/gsd-new-project`(初回作成); 意思決定が検証されると `/gsd-complete-milestone` によって更新されます。 | +| **参照先** | すべてのプランニングワークフロー; `gsd-phase-researcher`、`gsd-planner`(コンテキスト); `discuss-phase`(過去の意思決定); `gsd-plan-checker`(プロジェクト制約)。 | + +### `ROADMAP.md` + +| | | +|---|---| +| **用途** | マイルストーンおよびフェーズ一覧。ゴール、要件 ID、成功基準、フェーズごとの正規リファレンスを含みます。プロジェクトが何をどの順序で構築するかに関する唯一の信頼できる情報源です。 | +| **生成元** | `/gsd-new-project`(初回作成); `/gsd-phase --insert` および `/gsd-complete-milestone` によって更新されます。 | +| **参照先** | `/gsd-discuss-phase`、`/gsd-plan-phase`、`/gsd-execute-phase`; フェーズ情報を必要とするすべてのオーケストレーションコマンド; `gsd-planner`、`gsd-plan-checker`、`gsd-phase-researcher`。 | + +### `REQUIREMENTS.md` + +| | | +|---|---| +| **用途** | 番号付きのチェック可能な受け入れ基準。各要件はロードマップフェーズにマッピングされる ID(例: `AUTH-01`)を持ちます。フェーズが実行されると要件を完了済みとしてマークします。 | +| **生成元** | `/gsd-new-project`(初回作成); `execute-phase` によって要件が完了済みとしてマークされます。 | +| **参照先** | `gsd-planner`(プランはすべてのフェーズ要件 ID に対処しなければならない); `gsd-plan-checker` ディメンション1(要件カバレッジ); `discuss-phase`(過去の要件)。 | + +### `STATE.md` + +| | | +|---|---| +| **用途** | 現在地を追跡するリビングドキュメント — 現在のフェーズとプラン、進捗指標、蓄積された意思決定、セッション継続性ノート。すべてのワークフロー実行の開始時に読み込まれます。重要なアクションのたびに更新されます。 | +| **生成元** | `/gsd-new-project`(初回作成); すべてのフェーズワークフロー、`/gsd-pause-work`、`/gsd-resume-work` によって継続的に更新されます。 | +| **参照先** | すべてのオーケストレーションワークフロー; `/gsd-progress`; `/gsd-quick` 経由のアドホックタスク実行; `gsd-planner` および `gsd-phase-researcher`(プロジェクトの意思決定)。 | + +完全なフィールドリファレンスは [STATE.md スキーマ](state-md.md) を参照してください。 + +### `config.json` + +| | | +|---|---| +| **用途** | ワークフロー設定: モデルプロファイル、リサーチおよびプランチェッカーのトグル、Git ブランチング戦略、Nyquist バリデーション、並列化設定、エージェントごとのモデルオーバーライド。 | +| **生成元** | `/gsd-new-project`(初回作成); `/gsd-settings`(インタラクティブ編集)。 | +| **参照先** | すべてのワークフローとサブエージェント — `gsd-tools query config-get` 経由で初期化時に読み込まれます。 | + +完全なスキーマは [CONFIGURATION](../../CONFIGURATION.md) を参照してください。 + +### `MILESTONES.md`(オプション) + +| | | +|---|---| +| **用途** | 完了したマイルストーンの履歴記録。各マイルストーンのクローズ時に追記されます。何がいつリリースされたかのアーカイブスナップショットを提供します。 | +| **生成元** | `/gsd-complete-milestone`。 | +| **参照先** | `/gsd-audit-milestone`; 人間によるレビュー。 | + +### `DECISIONS-INDEX.md`(オプション) + +| | | +|---|---| +| **用途** | 過去のフェーズの CONTEXT.md ファイルに記録された意思決定の有界ローリングサマリー。存在する場合、`discuss-phase` は最大3つの過去 CONTEXT.md ファイルを個別に読む代わりにこの単一ファイルを読み取り、コンテキスト予算を節約します。 | +| **生成元** | 過去フェーズの数がローリング読み取り閾値を超えたときに生成されます。 | +| **参照先** | `discuss-phase`(`load_prior_context` ステップ)。 | + +### `HANDOFF.json`(一時的) + +| | | +|---|---| +| **用途** | 作業が中断されたときに書き込まれる機械可読な一時停止状態。再開ポイント、進行中のコンテキスト、継続指示を含みます。再開時に一度だけ使用されます。 | +| **生成元** | `/gsd-pause-work`。 | +| **参照先** | `/gsd-resume-work`。 | + +--- + +## フェーズごとのアーティファクト + +すべてのフェーズごとのファイルは `.planning/phases/-/` 以下に配置されます。`NN` はゼロパディングされたフェーズ番号、`slug` はハイフン区切りのフェーズ名です。 + +### `-CONTEXT.md` + +| | | +|---|---| +| **用途** | プランニング開始前に収集された実装上の意思決定。フェーズ境界(``)、`D-NN` 識別子付きのロックされた意思決定(``)、正規のドキュメント参照(``)、既存のコードのインサイト(``)、具体的な参考例(``)、延期されたアイデア(``)を含みます。 | +| **生成元** | `/gsd-discuss-phase`(インタラクティブなディスカッションまたは PRD/ADR エクスプレスパス)。 | +| **参照先** | `gsd-phase-researcher`(調査すべき内容); `gsd-planner`(ロックされた意思決定); `gsd-plan-checker` ディメンション7(コンテキスト準拠)。 | + +完全なフィールドリファレンスは [CONTEXT.md スキーマ](context-md.md) を参照してください。 + +### `-DISCUSSION-LOG.md` + +| | | +|---|---| +| **用途** | discuss-phase セッションの人間可読な監査証跡: 議論された領域、提示されたオプション、行われた選択、延期されたアイデア、Claude の裁量に任せられた項目。自動化されたワークフローには使用されません。 | +| **生成元** | `/gsd-discuss-phase`(`git_commit` ステップ)。 | +| **参照先** | 人間によるレビュー; 振り返り。 | + +### `-RESEARCH.md` + +| | | +|---|---| +| **用途** | プランニング前に生成される技術リサーチの所見。「このフェーズをうまくプランニングするために何を知る必要があるか?」という問いに答えます — ドメイン分析、パターン、リスク、Architectural Responsibility Map、Validation Architecture セクション(Nyquist ゲートで使用)をカバーします。 | +| **生成元** | `/gsd-plan-phase`(`gsd-phase-researcher` エージェント経由)。 | +| **参照先** | `gsd-planner`(プランニングインプット); `gsd-plan-checker` ディメンション7c(ティア準拠)、ディメンション8(Nyquist)、ディメンション11(リサーチ解決); `gsd-pattern-mapper`(ファイルリストのソース)。 | + +### `-VALIDATION.md` + +| | | +|---|---| +| **用途** | RESEARCH.md の `## Validation Architecture` セクションから導出された Nyquist インスパイアのバリデーション戦略。プランが遵守しなければならない自動テストカバレッジ要件を指定します。 | +| **生成元** | `/gsd-plan-phase`(ステップ5.5、`workflow.nyquist_validation` が有効で RESEARCH.md に Validation Architecture セクションが含まれる場合)。 | +| **参照先** | `gsd-plan-checker` ディメンション8(チェック8e ゲート — Nyquist チェック進行前に存在しなければならない); `gsd-verifier`。 | + +### `-PATTERNS.md` + +| | | +|---|---| +| **用途** | `gsd-pattern-mapper` によって生成されたコードベースアナログマップ。このフェーズで作成または変更される各ファイルに対して、最も近い既存のアナログを特定し、ファイルの役割とデータフローを分類し、具体的なコード抜粋を抽出します。プランナーを一貫したパターンに向けます。 | +| **生成元** | `/gsd-plan-phase`(`gsd-pattern-mapper` エージェント経由、オプション; `workflow.pattern_mapper: false` の場合はスキップ)。 | +| **参照先** | `gsd-planner`(パターンガイダンス); `gsd-plan-checker` ディメンション12(パターン準拠)。 | + +### `--PLAN.md` + +| | | +|---|---| +| **用途** | フェーズ内の単一作業単位の実行可能プラン。YAML フロントマター(ウェーブ、依存関係、ファイル、要件、`must_haves`)、目的、コンテキスト参照、``、``、``、`` フィールドを持つ XML 構造化タスク、検証基準を含みます。 | +| **生成元** | `/gsd-plan-phase`(`gsd-planner` エージェント経由)。プランごとに1ファイル — 例: `03-02-PLAN.md` はフェーズ3、プラン2。 | +| **参照先** | `/gsd-execute-phase`(エグゼキューターエージェントがプランを読んでタスクを実行); `gsd-plan-checker`(実行前の品質レビュー); `gsd-verifier`(実行後の検証のために `must_haves` を読む)。 | + +完全なフィールドリファレンスは [PLAN.md スキーマ](plan-md.md) を参照してください。 + +### `--SUMMARY.md` + +| | | +|---|---| +| **用途** | プラン完了後に書き込まれる実行記録。構築された内容、プランからの逸脱、受け入れ基準に対するセルフチェック、フェーズの依存グラフを記録します。 | +| **生成元** | `execute-phase` エグゼキューターエージェント(各プランの実行終了時に書き込まれます)。 | +| **参照先** | `/gsd-progress`(フェーズステータス); `gsd-planner`(後続のプランが以前のプラン出力への真の依存を持つ場合); `milestone-summary`。 | + +### `-VERIFICATION.md` + +| | | +|---|---| +| **用途** | フェーズゴール検証レポート。実行後に実際のコードベースに対してすべてのプランの `must_haves.truths`、`must_haves.artifacts`、`must_haves.key_links` を確認します。`status: passed | gaps_found | human_needed` を記録します。 | +| **生成元** | `/gsd-verify-work`(または `/gsd-execute-phase` 内の検証ステップ)。 | +| **参照先** | `plan-phase` クローズドフェーズゲート(`status: passed` の VERIFICATION.md はフェーズを `Complete` としてマークし、`--force` なしの再プランニングをブロックする); `/gsd-progress`; 人間によるレビュー。 | + +### `-UAT.md` + +| | | +|---|---| +| **用途** | 永続的な UAT セッション追跡。ライブ UAT セッション全体を通じて各テストケース、期待される観察可能な動作、結果、開発者のレスポンスを記録します。YAML フロントマター(`status`、`phase`、`source`、タイムスタンプ)を持ちます。 | +| **生成元** | `/gsd-audit-uat`(インタラクティブな UAT セッション)。 | +| **参照先** | `/gsd-audit-uat`(以前の UAT セッションの再開)。 | + +### `.continue-here.md` + +| | | +|---|---| +| **用途** | フェーズの作業が一時停止されたときに書き込まれる人間可読な再開指示。再開エージェントのためのコンテキストを含みます: 重要なアンチパターン、ブロッキング問題、必要な参照、再開するための正確なコマンド。 | +| **生成元** | `/gsd-pause-work`。 | +| **参照先** | フェーズで開始するすべてのワークフロー — `discuss-phase` と `plan-phase` は両方ともエントリ時にこのファイルを確認し、処理を進める前にエージェントが `blocking` アンチパターンへの理解を示すことを要求します。 | + +--- + +## 命名規則 + +| セグメント | フォーマット | 例 | +|---|---|---| +| フェーズディレクトリ | `-` | `03-post-feed` | +| フェーズレベルファイル | `-.md` | `03-CONTEXT.md` | +| プランレベルファイル | `--.md` | `03-02-PLAN.md` | +| `NN` | ゼロパディングされたフェーズ番号 | フェーズ3は `03` | +| `PP` | フェーズ内のゼロパディングされたプラン番号 | プラン2は `02` | + +`config.json` に `project_code` が設定されている場合、フェーズディレクトリはプロジェクトコードをプレフィックスとして使用します: プロジェクトコード `CK`、フェーズ3の場合は `CK-03-post-feed`。 + +--- + +## Related + +- [STATE.md スキーマ](state-md.md) +- [CONTEXT.md スキーマ](context-md.md) +- [PLAN.md スキーマ](plan-md.md) +- [docs index](../../README.md) diff --git a/docs/ja-JP/reference/state-md.md b/docs/ja-JP/reference/state-md.md new file mode 100644 index 000000000..706ebb7bc --- /dev/null +++ b/docs/ja-JP/reference/state-md.md @@ -0,0 +1,201 @@ +# STATE.md スキーマリファレンス + +`STATE.md` は GSD Core のプロジェクト記憶ファイルです — プロジェクトの現在地、直近の作業内容、次に実行すべきコマンドを記録する単一の Markdown ドキュメントです。このページではそのスキーマを説明します。[ドキュメントインデックス](../../README.md) も参照してください。 + +--- + +## 概要 + +GSD Core で管理するプロジェクトはすべて `.planning/STATE.md` に `STATE.md` を1つ保持します。このファイルはすべてのワークフロー開始時に読み込まれ、重要なアクションのたびに書き込まれます。ファイルは以下を組み合わせた構成です: + +- **YAML フロントマター** — ステータスラインフック(`parseStateMd`)および `gsd-tools state` コマンドが読み取る機械可読フィールド。 +- **Markdown 本文** — 現在の進捗、蓄積されたコンテキスト、セッション継続性、パフォーマンス指標を記述する人間可読なセクション。 + +ファイルは意図的にコンパクトに保たれています(目標: 100行以内)。プロジェクト状態のダイジェストであり、アーカイブではありません。 + +--- + +## YAML フロントマター + +フロントマターはファイルの先頭にある `---` デリミタの間に記述します。`gsd_state_version` と `status` 以外のフィールドはすべてオプションで、データが未取得の場合は省略できます。 + +### 注釈付きサンプル + +```yaml +--- +gsd_state_version: '1.0' +milestone: v2.0 +milestone_name: Code Quality +status: executing + +# フェーズライフサイクルフィールド — すべてオプション (v1.40.0, issue #2833 で追加) +active_phase: "4.5" +next_action: execute-phase +next_phases: ["4.5"] + +progress: + total_phases: 17 + completed_phases: 10 + total_plans: 84 + completed_plans: 47 + percent: 59 + +# syncStateFrontmatter が書き込む追加フィールド +current_phase: "4" +current_phase_name: Observability +current_plan: "3" +last_updated: "2026-06-01T12:34:56.789Z" +last_activity: "2026-06-01" +stopped_at: "Phase 4 P3 execution complete" +paused_at: null +--- +``` + +### フィールドリファレンス + +| フィールド | 型 | 設定タイミング | 用途 | +|---|---|---|---| +| `gsd_state_version` | string (`'1.0'`) | 常時 | スキーマバージョン。`syncStateFrontmatter` が最初の `state.*` 呼び出し時に書き込む。 | +| `milestone` | string (例: `v2.0`) | マイルストーン設定時 | 現在のマイルストーンバージョン。プロジェクト設定から読み取る。 | +| `milestone_name` | string | マイルストーン設定時 | 人間可読なマイルストーンラベル (例: `Code Quality`)。 | +| `status` | string | 常時 | 現在のライフサイクルステージ。`normalizeStateStatus()` によって正規化される — [ステータス値](#ステータス値) 参照。 | +| `active_phase` | string (例: `"4.5"`) | このフェーズでオーケストレーターコマンドが実行中の場合 | 現在処理中のフェーズ番号。フェーズ間は `null` に設定。 | +| `next_action` | string | アイドル中で推奨コマンドがある場合 | 次に実行するスラッシュコマンド: `discuss-phase`、`plan-phase`、`execute-phase`、`verify-phase`。オーケストレーターが実行中または推奨なしの場合は `null` に設定。 | +| `next_phases` | YAML フロー配列 (例: `["4.5"]`) | `next_action` と対応して | `next_action` が適用されるフェーズ ID(通常1〜2件)。`next_action` と同条件で `null` に設定。 | +| `progress.total_phases` | integer | フェーズデータ取得済みの場合 | 現在のマイルストーンにおける総フェーズ数。ROADMAP.md とフェーズディレクトリから算出。 | +| `progress.completed_phases` | integer | フェーズデータ取得済みの場合 | すべてのプランサマリーがディスク上に存在するフェーズ数(すなわちすべてのプランが完了したもの)。 | +| `progress.total_plans` | integer | プランファイルが存在する場合 | 現在のマイルストーンの全フェーズにわたるプランファイルの合計数。 | +| `progress.completed_plans` | integer | サマリーファイルが存在する場合 | 完了したプランサマリーの合計数(実行済みプランごとに1つの SUMMARY.md)。 | +| `progress.percent` | integer 0–100 | 進捗データ取得済みの場合 | **フェーズ次元** でのマイルストーン進捗(`min(completed_plans/total_plans, completed_phases/total_phases)`)。このフィールドが存在するときのみステータスラインの進捗バーが描画されます — 不在の場合はバーが非表示になります。 | +| `current_phase` | string | フェーズ実行中 | 本文の `Current Phase:` フィールドから抽出したフェーズ番号。 | +| `current_phase_name` | string | フェーズに名前がある場合 | 本文の `Current Phase Name:` フィールドから抽出したフェーズ名。 | +| `current_plan` | string | プランが進行中の場合 | 本文の `Current Plan:` フィールドから抽出したプラン番号。 | +| `last_updated` | ISO-8601 タイムスタンプ | 書き込み時に常時 | 最後の `syncStateFrontmatter` 呼び出しのタイムスタンプ。`realClock.nowIso()` によって書き込まれる。 | +| `last_activity` | string | 本文に設定されている場合 | 本文の `Last Activity:` フィールドから抽出した最終活動日。 | +| `stopped_at` | string | 停止ポイントが記録された場合 | 最後に完了したアクションの説明。アーカイブの文章とのマッチを避けるため `## Session` 本文セクションにスコープを限定。 | +| `paused_at` | string | プロジェクトが一時停止中の場合 | 一時停止ポイントの自由形式の説明。一時停止していない場合は省略または `null`。 | + +### ステータス値 + +`get-shit-done/bin/lib/state-document.cjs` の `normalizeStateStatus()` が本文の生テキストを以下の正規値にマッピングします: + +| 正規値 | マッチするテキスト(大文字小文字不問) | +|---|---| +| `discussing` | `discussing` を含む | +| `planning` | `planning` または `ready to plan` を含む | +| `executing` | `executing`、`in progress`、または `ready to execute` を含む | +| `verifying` | `verif` を含む | +| `completed` | `complete` または `done` を含む | +| `paused` | `paused` または `stopped` を含む、または `paused_at` が存在する | +| `unknown` | 上記のいずれにも該当しない | + +オーケストレーターコマンドが実行中の場合、慣例(issue #2833)として `status` にライフサイクルステージを直接書き込みます: + +| コマンド | 実行中の `status` | +|---|---| +| `/gsd-discuss-phase` | `discussing` | +| `/gsd-plan-phase` | `planning` | +| `/gsd-execute-phase` | `executing` | +| `/gsd-verify-work` | `verifying` | + +--- + +## ステータスライン描画シーン + +`hooks/gsd-statusline.js` の `formatGsdState()` がパース済みフロントマターを読み取り、**最初にマッチしたシーン** を出力します。新しいライフサイクルフィールドが適用されない場合は、v1.38.x から一切変更なくオリジナルのフォーマットにフォールスルーします。 + +| シーン | トリガー | 表示例 | +|---|---|---| +| **1. フェーズアクティブ** | `active_phase` が設定されている | `v2.0 [██░░░░░░░░] 20% · Phase 4.5 executing` | +| **2. アイドル・次のアクション推奨** | `active_phase` が null かつ `next_action` と `next_phases` の両方が設定されている | `v2.0 [██░░░░░░░░] 20% · next execute-phase 4.5` | +| **3. マイルストーン完了** | `percent` が `100` または `completed_phases == total_phases` | `v2.0 [██████████] 100% · milestone complete` | +| **4. デフォルトフォールバック** | 上記のいずれにも該当しない | `v1.9 Code Quality · executing · ph 1/5`(既存フォーマット) | + +**シーン優先度:** `active_phase` と `next_action` が両方設定されている場合、シーン1が優先されます — オーケストレーターが実行中であるため「次の推奨」は誤解を招くためです。この優先度は `formatGsdState()` のチェック順序によって強制され、`tests/enh-2833-phase-lifecycle-statusline.test.cjs` の `"scene priority"` スイートでカバーされています。 + +進捗バー(`[██░░░░░░░░] 20%`)はフロントマターに `progress.percent` が存在する場合のみマイルストーンセグメントに追加されます。不在の場合はバーは表示されません。 + +--- + +## フロントマターパースの制約 + +ステータスラインフックは正規表現ベースのパース(完全な YAML ライブラリを使用しない)を使用するため、以下の制約が適用されます。これらは `tests/enh-2833-phase-lifecycle-statusline.test.cjs` でテストされています。 + +1. **フロントマターはファイルの先頭文字から始まる必要があります。** コメントを含む何かが開始 `---` の前にあると、マッチが無効になります。開始 `---` 行は末尾のスペースなしで正確にそれだけである必要があります。 + +2. **ネストされたブロック内のコメントはサポートされていません。** `progress:` ブロックパーサーは次の行が `[ \t]+\w+:` であることを要求します。`progress:` と最初のキーの間に `# comment` を挿入するとマッチが壊れてバーが消えます。ドキュメントはフロントマターブロック内ではなく `STATE.md` 本文に記載してください。 + +3. **`next_phases` の主形式は単一行フローです。** パーサーは最初に `next_phases: ["4.5", "4.6"]` を試みます。ブロックシーケンス(`- 4.5\n- 4.6`)もパースされますが、ステータスライン描画の信頼性は低下します。正規表現ベースのパーサーを予測可能に保つため、`next_phases` には単一行フローを使用してください。多数の候補フェーズをドキュメント目的で記録する必要がある場合は `STATE.md` 本文に格納してください。 + +将来的に正規表現パーサーを完全な YAML ライブラリに置き換えた場合は、これらの制約を緩和しテストを更新できます。 + +--- + +## Markdown 本文セクション + +本文(末尾の `---` 以降のすべて)は `get-shit-done/templates/state.md` のテンプレートに従います。標準セクションは以下の通りです: + +### Project Reference + +`.planning/PROJECT.md` へのポインタです。以下を含みます: +- **Core value** — `PROJECT.md` の Core Value セクションの一行説明。 +- **Current focus** — アクティブなフェーズ。 + +### Current Position + +プロジェクトの現在の状況: + +| フィールド | フォーマット | +|---|---| +| `Phase:` | `X of Y (Phase name)` | +| `Plan:` | `A of B in current phase` | +| `Status:` | 自由テキスト。例: `Ready to execute`、`Executing Phase 4`、`Phase complete — ready for verification` | +| `Last activity:` | ハンドラー書き込み時は ISO 日付(`YYYY-MM-DD`); エグゼキューター作成時はナラティブ文章 | +| `Progress:` | ビジュアルバー。例: `[████░░░░░░] 40%` | + +このセクションの `Status:` および `Last activity:` フィールドは、既存の値が既知のテンプレートデフォルト値の場合に GSD ハンドラーによって更新されます(クヌース不変式: エグゼキューター作成値は保存されます)。既知のハンドラーデフォルト値の完全なリストは `get-shit-done/bin/lib/state-document.cjs` の `KNOWN_TEMPLATE_DEFAULTS` に記載されています。 + +### Performance Metrics + +実行速度の追跡: +- 完了した総プラン数、プランあたりの平均所要時間。 +- フェーズごとの内訳テーブル(`Phase | Plans | Total | Avg/Plan`)。 +- 最近のトレンド: Improving / Stable / Degrading。 + +各プラン完了後に更新されます。 + +### Accumulated Context + +**Decisions** — 現在の作業に影響する最近の意思決定のサマリー(完全なログは `PROJECT.md` に保存)。`gsd-tools state add-decision` で追加。 + +**Pending Todos** — 件数と `.planning/todos/pending/` への参照。`/gsd-capture` で取得。 + +**Blockers/Concerns** — 今後の作業に影響する課題。起点フェーズのプレフィックス付き。`gsd-tools state add-blocker` で追加し、`gsd-tools state resolve-blocker` で解決。 + +### Session Continuity + +即座のセッション再開を可能にします: +- `Last session:` — 最後のセッションの ISO-8601 タイムスタンプ。 +- `Stopped at:` — 最後に完了したアクションの説明。 +- `Resume file:` — `.continue-here*.md` ファイルが存在する場合はそのパス、存在しない場合は `None`。 + +--- + +## 後方互換性 + +フェーズライフサイクルフィールド(`active_phase`、`next_action`、`next_phases`、バー用の `progress.percent`)は **追加式でプロジェクトごとにオプトイン** です: + +- ライフサイクルフィールドが一切設定されていない `STATE.md` は v1.38.x 以前と **バイト単位で同一** に描画されます。 +- ライフサイクルフィールドの追加はオプトインです — フィールドが不在の場合レンダラーはグレースフルに縮退します。 +- 進捗バーは `progress` ブロックが存在する場合でもオプトインです: バーをトリガーするのは `progress.percent` のみで、`total_phases` と `completed_phases` だけではトリガーされません。 + +`tests/enh-2833-phase-lifecycle-statusline.test.cjs` の `formatGsdState #2833 backward compatibility` テストスイートがこの保証を固定しています。レガシー `STATE.md` 描画を壊す変更があればスイートが失敗します。 + +--- + +## Related + +- [Planning artifacts](planning-artifacts.md) +- [Configuration](../../CONFIGURATION.md) +- [The phase loop](../../explanation/the-phase-loop.md) +- [docs index](../../README.md) diff --git a/docs/ja-JP/tutorials/onboarding-an-existing-codebase.md b/docs/ja-JP/tutorials/onboarding-an-existing-codebase.md new file mode 100644 index 000000000..f2a268486 --- /dev/null +++ b/docs/ja-JP/tutorials/onboarding-an-existing-codebase.md @@ -0,0 +1,226 @@ +# 既存コードベースのオンボーディング + +このチュートリアルでは、すでにコードが存在するリポジトリに GSD Core を導入します。コードベースをマッピングし、*追加する*内容を説明するプロジェクトを作成して、小さな変更に対して最初の議論・計画サイクルを実行します。最終的に、GSD Core の計画パイプラインがあなたのスタック、規約、懸念事項を把握し、計画するたびにその知識を活用できる状態になります。 + +--- + +## 作るもの + +既存の Express アプリケーションに `GET /health` エンドポイントを1つ追加します。変更は小さく、本来のレッスン — GSD Core が計画前にコードベースを学習する仕組み — から注意がそれることはありません。 + +--- + +## 前提条件 + +- **Node.js 18 以降** — `node --version` が `v18.x.x` 以上を表示すること。 +- **既存のプロジェクト** — コードがすでに存在する任意のリポジトリ。Express である必要はなく、手順はあらゆるスタックに適用されます。 +- **Claude Code** — リポジトリのルートで開いていること。 + +--- + +## ステップ 1 — GSD Core のインストール + +リポジトリのルートで以下を実行します: + +```bash +npx @opengsd/gsd-core@latest +``` + +プロンプトが表示されたら **Claude Code** と **local** を選択してください。以下が表示されます: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +--- + +## ステップ 2 — 権限フラグ付きで Claude Code を起動 + +```bash +claude --dangerously-skip-permissions +``` + +--- + +## ステップ 3 — コードベースのマッピング + +プロジェクトを作成する前に、GSD Core に既存のコードを学習させてください。これがブラウンフィールドの計画を正確にするステップです。 + +```text +/gsd-map-codebase +``` + +GSD Core が4つの並行マッパーサブエージェントを生成します(「Spawning 4 parallel codebase mapper agents…」という通知が表示されます。1〜5分かかりますので中断しないでください)。各エージェントはそれぞれ異なる観点に注目します: + +| エージェント | 観点 | +|-------|-------| +| Tech mapper | スタック、フレームワーク、依存関係 | +| Architecture mapper | パターン、レイヤー、データフロー | +| Quality mapper | 規約、テスト慣行 | +| Concerns mapper | 技術的負債、リスクエリア | + +4つすべてが完了すると、以下が表示されます: + +```text +Codebase mapping complete. + +Created .planning/codebase/: +- STACK.md (47 lines) - Technologies and dependencies +- ARCHITECTURE.md (62 lines) - System design and patterns +- STRUCTURE.md (38 lines) - Directory layout and organisation +- CONVENTIONS.md (55 lines) - Code style and patterns +- TESTING.md (41 lines) - Test structure and practices +- INTEGRATIONS.md (29 lines) - External services and APIs +- CONCERNS.md (33 lines) - Technical debt and issues +``` + +`.planning/codebase/STACK.md` を開いてください。GSD Core が検出した言語、ランタイム、フレームワークのバージョン、主要な依存関係が表示されます。これは推測ではなく、実際に読み込んだファイルに基づいています。 + +`.planning/codebase/CONVENTIONS.md` を開いてください。ソースコードから観察した命名規則、エラーハンドリングパターン、コードスタイルのルールが表示されます。このリポジトリで GSD Core が生成するすべてのプランは、これらの規約に自動的に従います。 + +`.planning/codebase/CONCERNS.md` を開いてください。新機能の作業前に読む最も有用なファイルです。計画に影響しうる技術的負債や脆弱なエリアが表面化されています。 + +--- + +## ステップ 4 — コンテキストをクリアしてプロジェクトを作成 + +セッションウィンドウをクリアします: + +```text +/clear +``` + +プロジェクトを作成します。前のステップで GSD Core が既存のコードを見つけているため、これがブラウンフィールドプロジェクトであることをすでに把握しています。`/gsd-new-project` を実行すると、既存のものを再説明するのではなく、*追加する*内容に焦点を当てた質問がされます: + +```text +/gsd-new-project +``` + +GSD Core が何を作りたいかを尋ねます。コードベース全体の説明ではなく、追加する機能で答えてください: + +```text +Add a GET /health endpoint to the Express app. It should return +{ "status": "ok", "uptime": }. We'll use it for load-balancer +health checks. +``` + +GSD Core が少数の確認質問をした後、要件とロードマップの作成に進みます。すでに `ARCHITECTURE.md` と `STACK.md` を読み込んでいるため、既存の機能を `PROJECT.md` の **Validated** セクションに自動的にマッピングします。既存の API サーフェスを説明する必要はありません。 + +すべてのワークフロー設定は推奨デフォルトを選択してください。 + +ロードマッパーのサブエージェントが完了すると、提案されたロードマップが表示されます。単一の小さな変更の場合は1フェーズになります: + +```text +Proposed Roadmap + +1 phase | 2 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|----------------|-----------------------------------------------|--------------| +| 1 | Health endpoint| GET /health returning status and uptime JSON | HLT-01, HLT-02 | +``` + +ロードマップを承認してください。 + +**`.planning/` に作成されるファイル:** + +```text +.planning/ + PROJECT.md ← プロジェクトの説明; 「Validated」に既存機能 + REQUIREMENTS.md ← HLT-01, HLT-02 + ROADMAP.md ← フェーズ 1、ステータス: pending + STATE.md ← セッションメモリ + config.json ← ワークフロー設定 + codebase/ ← ステップ 3 の7つのマップファイル +``` + +`.planning/codebase/` はすでにステップ 3 から存在しています。GSD Core は `PROJECT.md` を書く際にこれらのファイルを読み込んでいるため、あなたが説明しなくても Validated 要件を入力できたのです。 + +--- + +## ステップ 5 — コンテキストをクリアしてフェーズ 1 を議論 + +```text +/clear +``` + +```text +/gsd-discuss-phase 1 +``` + +GSD Core があなたの `CONVENTIONS.md` と `ARCHITECTURE.md` を読み込んでいるため、質問は汎用的なアドバイスではなく、実際のコードベースに基づいています。以下のような内容が表示される場合があります: + +```text +> Your routes are registered in src/routes/index.js. Should the health + endpoint live there, or in a dedicated src/routes/health.js? + A dedicated health.js — keep routes separated. + +> Your existing error middleware returns { error: "message" }. Should + /health use the same shape for error responses? + Yes, stay consistent. + +> Should uptime be calculated from process.uptime() or a stored start time? + process.uptime() is fine. +``` + +議論が終了すると、GSD Core が以下のファイルを書き込みます: + +```text +.planning/phases/01-health-endpoint/CONTEXT.md +``` + +そのファイルを開いてください。`## Implementation Decisions` セクションにあなたの回答が記録されています。プランナーはタスクを1つも書く前にこのファイルを読み込みます。ファイルの配置やレスポンス形状に関するあなたの好みがプランに反映されます。 + +--- + +## ステップ 6 — フェーズ 1 の計画 + +```text +/gsd-plan-phase 1 +``` + +4つのリサーチサブエージェントが並行して実行されます(1〜5分)。完了すると、プランナーが `CONTEXT.md`、リサーチ結果、コードベースマップを読み込み、あなたの規約に合ったタスクプランを作成します。 + +**作成されるファイル:** + +```text +.planning/phases/01-health-endpoint/ + RESEARCH.md ← ヘルスエンドポイントパターンに関する調査結果 + 01-01-PLAN.md ← タスク: src/routes/health.js の作成 + 01-02-PLAN.md ← タスク: src/routes/index.js へのヘルスルートの登録 +``` + +`01-01-PLAN.md` を開いてください。`` タグが `src/routes/health.js` を参照していることに注目してください。これは議論で指定した正確なパスであり、GSD Core がコードベースマップで観察したルーティングパターンと一致しています。これがコードベースマップの効果です。 + +--- + +## 次のステップ + +コードベースマップ、議論の意思決定記録、検証済みタスクプランが揃ったプロジェクトができました。すべてが実際のコードに基づいています。ここからのワークフローはグリーンフィールドプロジェクトと同じです: + +```text +/gsd-execute-phase 1 +/gsd-verify-work 1 +/gsd-ship 1 +``` + +今後の機能追加ごとに、構造が大幅に変わった際は `/gsd-map-codebase` を再実行してコードベースマップを最新の状態に保ってください。 + +--- + +## 学んだこと + +- `/gsd-map-codebase` が4つの並行エージェントを実行して `.planning/codebase/` に `STACK.md`、`ARCHITECTURE.md`、`CONVENTIONS.md`、`CONCERNS.md`、`STRUCTURE.md`、`TESTING.md`、`INTEGRATIONS.md` を生成する仕組み。 +- ブラウンフィールドリポジトリで `/gsd-new-project` を実行すると、*追加する*内容に焦点を当てた質問がされ、既存コードから Validated 要件が自動入力される仕組み。 +- コードベースマップが `/gsd-discuss-phase` のすべての質問を形成する方法 — ファイルパス、パターン、規約が実際のコードから導出される。 +- プランナーが `CONTEXT.md` と `CONVENTIONS.md` を読み込んでリポジトリのスタイルに合ったプランを生成する仕組み。 + +--- + +## Related + +- [はじめてのプロジェクト](your-first-project.md) — インストールから PR まで完全なグリーンフィールドループ +- [コマンドによるコードベースマッピング](../COMMANDS.md) — `/gsd-map-codebase` のすべてのフラグとサブコマンド +- [ドキュメントインデックス](../README.md) diff --git a/docs/ja-JP/tutorials/your-first-project.md b/docs/ja-JP/tutorials/your-first-project.md new file mode 100644 index 000000000..2302277a9 --- /dev/null +++ b/docs/ja-JP/tutorials/your-first-project.md @@ -0,0 +1,291 @@ +# はじめてのプロジェクト + +このチュートリアルでは、GSD Core をインストールし、シンプルなコマンドライン To-Do アプリをゼロから作成します。1フェーズ、1プルリクエスト、完全なループを体験します。終わる頃には、コアフェーズループのすべてのコマンドを少なくとも一度は実行し、各コマンドが生成する計画アーティファクトを確認しているはずです。 + +--- + +## 作るもの + +To-Do アイテムをローカルの JSON ファイルに保存し、追加・一覧表示・完了マークができる Node.js CLI ツールです。1セッションで完成できる小さなプロジェクトで、Node.js 標準ライブラリのみを使用するため、追加インストールは不要です。 + +--- + +## 前提条件 + +- **Node.js 18 以降** — `node --version` が `v18.x.x` 以上を表示すること。 +- **Claude Code** — 使用するプロジェクトディレクトリで開いていること。 +- 初回インストール用のインターネット接続。 + +他のツールは不要です。GSD Core 自体は次のステップでインストールします。 + +--- + +## ステップ 1 — GSD Core のインストール + +プロジェクトディレクトリでターミナルを開き、以下を実行します: + +```bash +npx @opengsd/gsd-core@latest +``` + +インストーラーが、使用している AI コーディングランタイムとグローバルインストールかカレントプロジェクトへのインストールかを確認します。今は **Claude Code** と **local**(このプロジェクトのみ)を選択してください。 + +以下のような出力が表示されます: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +プロジェクト内に `.claude/` ディレクトリが作成されます。これが GSD Core のコマンドとエージェントの格納場所です。 + +> ローカルとグローバルの違いについて: ローカルインストールはスキルのバージョンをこのプロジェクトに固定します。グローバルインストールを行う場合は、[ランタイムへのインストール](../how-to/install-on-your-runtime.md) を参照してください。 + +--- + +## ステップ 2 — 権限フラグ付きで Claude Code を起動 + +GSD Core は、ファイルの読み書きを行うサブエージェントを生成します。すべてのファイル操作に対して確認を求められないよう、権限フラグを付けて Claude Code を起動してください: + +```bash +claude --dangerously-skip-permissions +``` + +プロジェクトディレクトリで Claude Code のプロンプトが表示されます。 + +--- + +## ステップ 3 — プロジェクトの作成 + +Claude Code のプロンプトで以下のスラッシュコマンドを入力します: + +```text +/gsd-new-project +``` + +GSD Core が会話を開始し、最初に1つの質問をします: + +```text +What do you want to build? +``` + +以下のように入力してください: + +```text +A Node.js CLI tool for managing to-do items. Users run `todo add "buy milk"`, +`todo list`, and `todo done 1`. Items are saved to a local todos.json file. +No external dependencies — Node built-ins only. +``` + +GSD Core がいくつかの確認事項について質問します。自然に答えてください。1つのプランも書く前に、あなたの意図を理解しようとしています。 + +質問が終わると、ドメインリサーチの実行を提案します。この規模のプロジェクトであればリサーチをスキップできます。プロンプトが表示されたら **Skip research** を選択してください。 + +次に GSD Core がワークフロー設定(モード、粒度、リサーチエージェント)を選択するよう求めます。それぞれ推奨デフォルトを選択してください。これらの設定は `.planning/config.json` に書き込まれます。 + +最後に、ロードマッパーのサブエージェントが実行されます(「Spawning roadmapper…」という通知が表示されますが、これは正常です。約1分かかります)。完了すると、GSD Core が提案するロードマップを提示します。単一フェーズのプロジェクトでは次のようになります: + +```text +Proposed Roadmap + +1 phase | 4 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|--------------------|-----------------------------------------|-------------------| +| 1 | Core CLI | add / list / done commands, todos.json | CLI-01 … CLI-04 | +``` + +**Approve** と入力してロードマップを承認してください。 + +**`.planning/` に作成されるファイル:** + +```text +.planning/ + PROJECT.md ← プロジェクトの説明と要件 + REQUIREMENTS.md ← すべての v1 機能の REQ-ID + ROADMAP.md ← フェーズ 1、ステータス: pending + STATE.md ← セッションメモリ、現在位置 + config.json ← ワークフロー設定 +``` + +今すぐ `.planning/ROADMAP.md` を開いて読んでください。フェーズ 1 にはゴール、満たすべき要件のリスト、成功基準が含まれています。成功基準とは、実行によって達成すべき観測可能な動作です。 + +--- + +## ステップ 4 — コンテキストをクリアしてフェーズ 1 を議論 + +GSD Core はフレッシュなコンテキストを前提に設計されています。各フェーズの前にメインセッションウィンドウをクリアしてください: + +```text +/clear +``` + +次に、フェーズ 1 の議論を開始します: + +```text +/gsd-discuss-phase 1 +``` + +GSD Core がフェーズのゴールを読み取り、実装の方針について質問します。これは「何を」作るかではなく、「どのように」作るかを決める質問です。会話の例: + +```text +> How should done items be stored — mark them in place or move them? + Mark them in place with a "done" flag. + +> Should `todo list` show completed items by default? + No, hide them unless --all is passed. + +> Error format when todos.json doesn't exist yet? + Create it silently on first add. +``` + +議論が終了すると、GSD Core が以下のファイルを書き込みます: + +```text +.planning/phases/01-core-cli/CONTEXT.md +``` + +そのファイルを開いてください。`## Implementation Decisions` セクションに、あなたが述べた内容が正確に記録されています。プランナーはこのファイルを読み込みます。ここで行った決定はすべてのタスクプランに反映されます。 + +--- + +## ステップ 5 — フェーズ 1 の計画 + +```text +/gsd-plan-phase 1 +``` + +4つのリサーチサブエージェントが並行して実行されます(「Spawning 4 researchers…」という通知が表示されます。1〜5分かかります。中断しないでください)。 + +完了すると、プランナーが CONTEXT.md とリサーチ結果を読み込み、アトミックなタスクプランを作成します。次に、プランチェッカーが各プランがフェーズのゴールを達成しているか検証してから保存します。 + +**作成されるファイル:** + +```text +.planning/phases/01-core-cli/ + RESEARCH.md ← ドメイン調査の結果 + 01-01-PLAN.md ← タスク: todos.json の読み書きヘルパーの作成 + 01-02-PLAN.md ← タスク: add / list / done コマンドの実装 +``` + +`01-01-PLAN.md` を開いてください。タスク名、対象ファイル、アクションステップ、検証コマンド、完了条件が含まれた `` ブロックがあります。`` タグに注目してください。GSD Core のエグゼキューターはコードを書いた後にそのコマンドを実行します。 + +--- + +## ステップ 6 — フェーズ 1 の実行 + +```text +/gsd-execute-phase 1 +``` + +GSD Core はプランをウェーブ(独立したプランが並行実行される単位)にグループ化し、プランごとに新しい 200k コンテキストのエグゼキューターを生成し、各タスクをアトミックにコミットします。 + +以下のような出力が表示されます: + +```text +Wave 1 (parallel): + [Executor A] → 01-01-PLAN.md (read/write helpers) ✓ committed + [Executor B] → 01-02-PLAN.md (CLI commands) ✓ committed + +[Verifier] Checking codebase against phase goals... + CLI-01 todo add ✓ + CLI-02 todo list ✓ + CLI-03 todo done ✓ + CLI-04 --all flag ✓ + Status: PASS +``` + +**作成されるファイル:** + +```text +.planning/phases/01-core-cli/ + 01-01-SUMMARY.md ← Executor A がビルドしてコミットした内容 + 01-02-SUMMARY.md ← Executor B がビルドしてコミットした内容 + VERIFICATION.md ← 要件カバレッジ: PASS +``` + +CLI を実行してみましょう: + +```bash +node todo.js add "buy milk" +node todo.js add "write tests" +node todo.js list +node todo.js done 1 +node todo.js list +``` + +アイテムが表示され、完了マークを付けた後にアイテム 1 がデフォルトリストから消えているはずです。これが GSD Core によって実現された最初の成果です。 + +--- + +## ステップ 7 — 成果物の検証 + +```text +/gsd-verify-work 1 +``` + +GSD Core がフェーズの成功基準を抽出し、それぞれについて確認します: + +```text +[1/3] Can you run `node todo.js add "buy milk"` without errors? +> yes + +[2/3] Does `node todo.js list` show only incomplete items by default? +> yes + +[3/3] Does `node todo.js done 1` mark item 1 complete and hide it from the default list? +> yes + +All 3 checks passed. Phase 1 verified. +``` + +いずれかのチェックが失敗した場合、GSD Core が根本原因を診断して修正プランを作成します。`/gsd-execute-phase 1` を再度実行して修正を適用し、その後 `/gsd-verify-work 1` を再実行してください。 + +**作成されるファイル:** + +```text +.planning/phases/01-core-cli/UAT.md ← すべてのチェックとその結果 +``` + +--- + +## ステップ 8 — リリース + +```text +/gsd-ship 1 +``` + +GSD Core が自動生成された本文付きのプルリクエストを作成します。PR の本文には常に Summary、Changes、Requirements Addressed、Verification、Key Decisions が含まれます。 + +以下のような出力が表示されます: + +```text +Pull request created: https://github.com/your-org/your-repo/pull/1 + +Title: feat(phase-1): core CLI — add / list / done commands +``` + +これが1つのフェーズにおける完全なループです。アイデアからマージされた PR まで。 + +--- + +## 学んだこと + +- `npx @opengsd/gsd-core@latest` を使った GSD Core のインストール方法。 +- `/gsd-new-project` が会話を `.planning/` アーティファクトに裏付けられたロードマップに変換する仕組み。 +- `/gsd-discuss-phase` が計画前に実装の意思決定を記録する仕組み。 +- `/gsd-plan-phase` が並行リサーチャーを生成してアトミックなタスクプランを作成する仕組み。 +- `/gsd-execute-phase` がプランを並行ウェーブで実行し各タスクをコミットする仕組み。 +- `/gsd-verify-work` が成功基準を確認し、必要に応じて修正プランを生成する仕組み。 +- `/gsd-ship` が検証済みフェーズをプルリクエストに変換する仕組み。 + +マルチフェーズプロジェクトの場合は、各フェーズでステップ 4〜8 を繰り返し、`/gsd-progress --next` を実行して GSD Core に次のステップを自動検出させてください。 + +--- + +## Related + +- [フェーズループ](../explanation/the-phase-loop.md) — ループがこの形状である理由 +- [ハウツーガイド](../README.md#how-to-guides) — 特定の状況に対応したタスク重視のレシピ +- [既存コードベースのオンボーディング](onboarding-an-existing-codebase.md) — ブラウンフィールドリポジトリへの GSD Core の導入 diff --git a/docs/ja-JP/workflow-discuss-mode.md b/docs/ja-JP/workflow-discuss-mode.md index 2d0bfb279..b2c57d59b 100644 --- a/docs/ja-JP/workflow-discuss-mode.md +++ b/docs/ja-JP/workflow-discuss-mode.md @@ -1,65 +1,75 @@ -# ディスカスモード: Assumptions vs Interview +# ディスカッションモード:仮定 vs インタビュー -GSD の discuss フェーズには、プランニング前に実装コンテキストを収集するための2つのモードがあります。 +GSD Core のディスカッションフェーズは、計画を開始する前に実装コンテキストを収集するための 2 つのモードを提供します。どちらを使用するかを理解することで、質疑応答から確定した `CONTEXT.md` へとより少ない往復でたどり着けます。 + +どちらのモードを実行するかのステップバイステップの手順については、[フェーズ議論の how-to](how-to/discuss-a-phase.md) を参照してください。 ## モード ### `discuss`(デフォルト) -従来のインタビュー形式のフローです。Claude がフェーズ内の不明瞭な領域を特定し、選択肢として提示した後、各領域について約4つの質問を行います。以下のケースに適しています: +オリジナルのインタビュースタイルのフロー。Claude がフェーズのグレーエリアを特定し、選択のために提示し、エリアごとに約 4 つの質問をします。以下の場合に適しています: -- コードベースが初めてで、初期フェーズの場合 -- ユーザーが積極的に意見を表明したい場合 -- ガイド付きの対話的なコンテキスト収集を好むユーザー +- コードベースが新しい初期フェーズ +- ユーザーが積極的に表明したい強い意見を持っているフェーズ +- ガイドされた会話形式のコンテキスト収集を好むユーザー ### `assumptions` -コードベース優先のフローです。Claude がサブエージェントを通じてコードベースを深く分析し(関連ファイルを5〜15個読み取り)、根拠付きの仮説を立てて確認・修正を求めます。以下のケースに適しています: +コードベースファーストのフロー。Claude はサブエージェント経由でコードベースを深く分析し(関連ファイルを 5〜15 件読み取り)、証拠付きで仮定を形成し、確認または修正のために提示します。以下の場合に適しています: -- 明確なパターンが確立されたコードベース -- インタビューの質問が自明と感じるユーザー -- より高速なコンテキスト収集(約2〜4回のやり取り vs 約15〜20回) +- 明確なパターンを持つ確立されたコードベース +- インタビューの質問が明らかに思えるユーザー +- より速いコンテキスト収集(約 2〜4 回のやり取り vs 約 15〜20 回) ## 設定 ```bash # assumptions モードを有効にする -gsd-tools config-set workflow.discuss_mode assumptions +node gsd-tools.cjs config-set workflow.discuss_mode assumptions -# interview モードに戻す -gsd-tools config-set workflow.discuss_mode discuss +# インタビューモードに戻す +node gsd-tools.cjs config-set workflow.discuss_mode discuss ``` -この設定はプロジェクト単位です(`.planning/config.json` に保存されます)。 +この設定はプロジェクトごとです(`.planning/config.json` に保存されます)。両方のモードが生成するファイルの完全な構造については、[CONTEXT.md スキーマ](reference/context-md.md) を参照してください。 ## Assumptions モードの仕組み -1. **初期化** — discuss モードと同様(前回のコンテキスト読み込み、コードベース調査、TODO チェック) -2. **深層分析** — Explore サブエージェントがフェーズに関連するコードベースファイルを5〜15個読み取る -3. **仮説の提示** — 各仮説には以下が含まれる: +1. **Init** — discuss モードと同じ(以前のコンテキストを読み込み、コードベースを偵察し、todo を確認) +2. **深い分析** — Explore サブエージェントがフェーズに関連する 5〜15 のコードベースファイルを読み取る +3. **仮定の表示** — 各仮定には以下が含まれる: - Claude が何をどのような理由で行うか(ファイルパスを引用) - - 仮説が間違っていた場合のリスク - - 確信度レベル(Confident / Likely / Unclear) -4. **確認または修正** — ユーザーが仮説をレビューし、変更が必要なものを選択 -5. **CONTEXT.md の生成** — discuss モードと同一の出力フォーマット + - 仮定が誤っている場合に何が問題になるか + - 信頼レベル(Confident / Likely / Unclear) +4. **確認または修正** — ユーザーが仮定を確認し、変更が必要なものを選択 +5. **CONTEXT.md の書き込み** — discuss モードと同一の出力フォーマット ## フラグの互換性 | フラグ | `discuss` モード | `assumptions` モード | -|--------|-----------------|---------------------| -| `--auto` | 推奨回答を自動選択 | 確認ゲートをスキップし、Unclear 項目を自動解決 | -| `--batch` | 質問をバッチでグループ化 | N/A(修正は既にバッチ化済み) | -| `--text` | プレーンテキスト形式の質問(リモートセッション向け) | プレーンテキスト形式の質問(リモートセッション向け) | -| `--analyze` | 質問ごとにトレードオフ表を表示 | N/A(仮説に根拠が含まれる) | +|------|----------------|-------------------| +| `--auto` | 推奨される答えを自動選択 | 確認ゲートをスキップし、Unclear 項目を自動解決 | +| `--batch` | 質問をバッチでグループ化 | N/A(修正はすでにバッチ化) | +| `--text` | プレーンテキストの質問(リモートセッション) | プレーンテキストの質問(リモートセッション) | +| `--analyze` | 質問ごとにトレードオフテーブルを表示 | N/A(仮定には証拠が含まれる) | ## 出力 -両モードとも、同じ6セクション構成の CONTEXT.md を生成します: -- `` — フェーズの境界 -- `` — 確定した実装上の決定事項 -- `` — 下流エージェントが読むべき仕様・ドキュメント -- `` — 再利用可能なアセット、パターン、統合ポイント -- `` — ユーザーの参照情報と好み -- `` — 将来のフェーズに先送りするアイデア +両方のモードが同じ 6 つのセクションを持つ同一の `CONTEXT.md` を生成します: -下流エージェント(researcher、planner、checker)は、モードに関係なくこの出力を同一に消費します。 +- `` — フェーズ境界 +- `` — ロックされた実装上の決定 +- `` — 下流エージェントが必ず読むべき仕様/ドキュメント +- `` — 再利用可能なアセット、パターン、統合ポイント +- `` — ユーザーの参照と好み +- `` — 将来のフェーズのために記録されたアイデア + +下流エージェント(researcher、planner、checker)は、どちらのモードで生成されたかに関わらず、このファイルを同様に消費します。完全なフィールドリファレンスについては [CONTEXT.md スキーマ](reference/context-md.md) を参照してください。 + +## Related + +- [フェーズの議論](how-to/discuss-a-phase.md) — どちらのモードでも `/gsd-discuss-phase` を実行するためのステップバイステップの how-to。 +- [CONTEXT.md スキーマ](reference/context-md.md) — 両方のモードが生成するファイルの完全なフィールドリファレンス。 +- [フェーズループ](explanation/the-phase-loop.md) — discuss がより広い discuss → plan → execute → verify → ship サイクルにどう組み込まれるか。 +- [ドキュメント索引](README.md) — GSD Core ドキュメントの完全な目次。 diff --git a/docs/ko-KR/ARCHITECTURE.md b/docs/ko-KR/ARCHITECTURE.md index dcf84b9f6..beca3a794 100644 --- a/docs/ko-KR/ARCHITECTURE.md +++ b/docs/ko-KR/ARCHITECTURE.md @@ -1,6 +1,6 @@ -# GSD 아키텍처 +# GSD Core 아키텍처 -> 기여자와 고급 사용자를 위한 시스템 아키텍처입니다. 사용자 문서는 [Feature Reference](FEATURES.md) 또는 [User Guide](USER-GUIDE.md)를 참조하세요. +> 기여자와 고급 사용자를 위한 시스템 아키텍처. 사용자 문서는 [기능 레퍼런스](FEATURES.md) 또는 [사용자 가이드](USER-GUIDE.md)를 참조하라. --- @@ -21,12 +21,12 @@ ## 시스템 개요 -GSD는 사용자와 AI 코딩 에이전트(Claude Code, Gemini CLI, OpenCode, Kilo, Codex, Copilot, Antigravity, Trae, Cline, Augment Code) 사이에 위치하는 **메타 프롬프팅 프레임워크**입니다. 다음을 제공합니다. +GSD Core는 사용자와 AI 코딩 에이전트(Claude Code, Gemini CLI, OpenCode, Kilo, Codex, Copilot, Antigravity, Trae, Cline, Augment Code) 사이에 위치하는 **메타 프롬프팅 프레임워크**이다. 다음을 제공한다: -1. **컨텍스트 엔지니어링** — 작업별로 AI에게 필요한 모든 것을 제공하는 구조화된 아티팩트 -2. **멀티 에이전트 오케스트레이션** — 새로운 컨텍스트 윈도우로 전문화된 에이전트를 생성하는 가벼운 오케스트레이터 -3. **명세 주도 개발** — 요구 사항 → 조사 → 계획 → 실행 → 검증 파이프라인 -4. **상태 관리** — 세션과 컨텍스트 초기화를 넘나드는 영구적인 프로젝트 메모리 +1. **컨텍스트 엔지니어링** — 작업별로 AI에게 필요한 모든 것을 제공하는 구조화된 결과물([컨텍스트 엔지니어링](explanation/context-engineering.md) 참조) +2. **다중 에이전트 오케스트레이션** — 신선한 컨텍스트 윈도우로 전문화된 에이전트를 생성하는 얇은 오케스트레이터([다중 에이전트 오케스트레이션](explanation/multi-agent-orchestration.md) 참조) +3. **명세 주도 개발** — 요구 사항 → 리서치 → 계획 → 실행 → 검증 파이프라인 +4. **상태 관리** — 세션과 컨텍스트 리셋 전반에 걸친 영구적인 프로젝트 메모리 ``` ┌──────────────────────────────────────────────────────┐ @@ -54,8 +54,8 @@ GSD는 사용자와 AI 코딩 에이전트(Claude Code, Gemini CLI, OpenCode, Ki │ │ │ ┌──────▼──────────────▼─────────────────▼──────────────┐ │ CLI TOOLS LAYER │ -│ get-shit-done/bin/gsd-tools.cjs │ -│ (State, config, phase, roadmap, verify, templates) │ +│ gsd-tools.cjs command families + domain modules │ +│ command-routing-hub + observability seams │ └──────────────────────┬───────────────────────────────┘ │ ┌──────────────────────▼───────────────────────────────┐ @@ -69,36 +69,39 @@ GSD는 사용자와 AI 코딩 에이전트(Claude Code, Gemini CLI, OpenCode, Ki ## 설계 원칙 -### 1. 에이전트별 새로운 컨텍스트 +### 1. 에이전트별 신선한 컨텍스트 -오케스트레이터가 생성하는 모든 에이전트는 새로운 컨텍스트 윈도우(최대 200K 토큰)를 받습니다. 이를 통해 컨텍스트 오염을 방지합니다 — AI가 컨텍스트 윈도우에 누적된 대화로 인해 품질이 저하되는 현상입니다. +오케스트레이터가 생성하는 모든 에이전트는 깨끗한 컨텍스트 윈도우(최대 200K 토큰)를 받는다. 이는 컨텍스트 부패 — AI가 컨텍스트 윈도우를 누적된 대화로 채울 때 발생하는 품질 저하 — 를 제거한다. -### 2. 가벼운 오케스트레이터 +### 2. 얇은 오케스트레이터 -워크플로우 파일(`get-shit-done/workflows/*.md`)은 무거운 작업을 직접 수행하지 않습니다. 다음 작업만 담당합니다. -- `gsd-tools.cjs init `로 컨텍스트를 로드합니다 -- 집중된 프롬프트로 전문화된 에이전트를 생성합니다 -- 결과를 수집하여 다음 단계로 전달합니다 -- 단계 사이에 상태를 업데이트합니다 +워크플로우 파일(`get-shit-done/workflows/*.md`)은 무거운 작업을 직접 수행하지 않는다. 오케스트레이터가 하는 것: + +- `gsd-tools.cjs init `로 컨텍스트 로드 +- 집중된 프롬프트로 전문화된 에이전트 생성 +- 결과 수집 및 다음 단계로 라우팅 +- 단계 사이에 상태 업데이트 ### 3. 파일 기반 상태 -모든 상태는 `.planning/`에 사람이 읽을 수 있는 Markdown과 JSON으로 저장됩니다. 데이터베이스, 서버, 외부 의존성이 없습니다. 이를 통해 다음이 가능합니다. -- 컨텍스트 초기화(`/clear`) 이후에도 상태가 유지됩니다 -- 사람과 에이전트 모두 상태를 확인할 수 있습니다 -- 팀 가시성을 위해 git에 커밋할 수 있습니다 +모든 상태는 `.planning/`에 사람이 읽을 수 있는 마크다운과 JSON으로 저장된다. 데이터베이스도, 서버도, 외부 의존성도 없다. 이것이 의미하는 바: + +- 컨텍스트 리셋(`/clear`) 이후에도 상태가 유지된다 +- 사람과 에이전트 모두 상태를 확인할 수 있다 +- 팀 가시성을 위해 git에 커밋할 수 있다 ### 4. 부재 = 활성화 -워크플로우 기능 플래그는 **부재 = 활성화** 패턴을 따릅니다. `config.json`에 키가 없으면 기본값은 `true`입니다. 사용자는 기능을 명시적으로 비활성화하며 기본값을 활성화할 필요가 없습니다. +워크플로우 기능 플래그는 **부재 = 활성화** 패턴을 따른다. `config.json`에 키가 없으면 기본값은 `true`이다. 사용자는 기능을 명시적으로 비활성화하며; 기본값을 활성화할 필요가 없다. ### 5. 심층 방어 -여러 레이어가 일반적인 실패 모드를 방지합니다. -- 계획은 실행 전에 검증됩니다 (plan-checker 에이전트) -- 실행은 작업당 원자적 커밋을 생성합니다 -- 실행 후 검증은 단계 목표에 대해 확인합니다 -- UAT는 최종 게이트로서 사람의 검증을 제공합니다 +여러 계층이 일반적인 실패 모드를 방지한다: + +- 계획은 실행 전에 검증된다 (plan-checker 에이전트) +- 실행은 작업당 원자적 커밋을 생성한다 +- 실행 후 검증은 단계 목표에 대해 확인한다 +- UAT는 최종 게이트로서 사람 검증을 제공한다 --- @@ -106,51 +109,121 @@ GSD는 사용자와 AI 코딩 에이전트(Claude Code, Gemini CLI, OpenCode, Ki ### Commands (`commands/gsd/*.md`) -사용자 대면 진입점입니다. 각 파일은 YAML 전문(name, description, allowed-tools)과 워크플로우를 부트스트랩하는 프롬프트 본문을 포함합니다. 명령어는 다음과 같이 설치됩니다. -- **Claude Code:** 커스텀 슬래시 명령어 (`/gsd-command-name`) -- **OpenCode / Kilo:** 슬래시 명령어 (`/gsd-command-name`) +사용자 대면 진입점. 각 파일은 YAML 전문(name, description, allowed-tools)과 워크플로우를 부트스트랩하는 프롬프트 본문을 포함한다. 명령어는 다음과 같이 설치된다: + +- **Claude Code:** 커스텀 슬래시 명령어 (하이픈 형식, `/gsd-command-name`) +- **OpenCode / Kilo:** 슬래시 명령어 (하이픈 형식, `/gsd-command-name`) - **Codex:** Skills (`$gsd-command-name`) -- **Copilot:** 슬래시 명령어 (`/gsd-command-name`) +- **Copilot:** 슬래시 명령어 (하이픈 형식, `/gsd-command-name`) +- **Gemini CLI:** `gsd:` 네임스페이스 하의 슬래시 명령어 (콜론 형식, `/gsd:command-name`) — Gemini는 플러그인 id 아래 모든 커스텀 명령어를 네임스페이스화하므로 설치 경로가 모든 본문 텍스트 참조를 콜론 형식으로 다시 쓴다 - **Antigravity:** Skills -**전체 명령어 수:** 44개 +**전체 명령어 수:** 권위 있는 개수와 전체 목록은 [`docs/INVENTORY.md`](INVENTORY.md#commands)를 참조하라. + +#### 2단계 계층적 라우팅 (v1.40, [#2792](https://github.com/open-gsd/gsd-core/issues/2792)) + +열망적 스킬 목록 토큰 비용을 낮게 유지하기 위해 v1.40은 구체적인 하위 스킬 위에 계층화된 여섯 개의 네임스페이스 **메타 스킬** (`gsd-workflow`, `gsd-project`, `gsd-quality`, `gsd-context`, `gsd-manage`, `gsd-ideate` — `commands/gsd/ns-*.md`에서 소싱되지만 호출 가능한 `name:`은 여기 표시된 간단한 형식)을 도입한다. 모델은 평평한 86개 스킬 목록(~2,150 토큰) 대신 6개의 네임스페이스 라우터(~120 토큰)를 보고, 네임스페이스를 선택한 다음 네임스페이스 라우터 본문에 내장된 라우팅 테이블을 통해 구체적인 하위 스킬로 라우팅한다. 네임스페이스 스킬은 **가산적**이다 — 모든 구체적인 명령어는 여전히 직접 호출 가능하다. + +라우터 설명은 ~40% 토큰 비용으로 프로세 대비 키워드 밀도 태그가 라우팅에서 더 뛰어나다는 Tool Attention 연구에 따라 도구당 파이프로 구분된 키워드 태그(≤ 60자)를 사용한다. + +#### MCP 토큰 예산 상호작용 + +열망적 스킬 목록은 턴당 반복되는 두 가지 토큰 비용 중 하나이다. 다른 하나는 `.claude/settings.json`의 모든 활성화된 MCP 서버가 주입하는 MCP 도구 스키마이다. 무거운 MCP 서버(브라우저/playwright, Mac-tools, Windows-tools)는 각각 턴당 20k+ 토큰 비용이 들 수 있다 — 종종 `model_profile` 튜닝이 절약하는 것을 압도한다. 토글은 Claude Code 하니스(`.claude/settings.json`의 `enabledMcpjsonServers` / `disabledMcpjsonServers`)에 있으며 GSD 관심사가 아니다. 2단계 라우팅 계층(#2792)과 규율 있는 MCP 활성화를 함께 사용하는 것이 턴당 가장 큰 비용 레버이다. [`docs/USER-GUIDE.md`](USER-GUIDE.md)와 `references/context-budget.md`에서 감사 체크리스트를 참조하라. ### Workflows (`get-shit-done/workflows/*.md`) -명령어가 참조하는 오케스트레이션 로직입니다. 다음을 포함하는 단계별 프로세스를 담습니다. -- `gsd-tools.cjs init`을 통한 컨텍스트 로드 -- 모델 해석을 포함한 에이전트 생성 지시 +명령어가 참조하는 오케스트레이션 로직. 다음을 포함하는 단계별 프로세스를 담는다: + +- `gsd-tools.cjs init` 핸들러를 통한 컨텍스트 로딩 +- 모델 해결을 포함한 에이전트 생성 지시 - 게이트/체크포인트 정의 - 상태 업데이트 패턴 - 오류 처리 및 복구 -**전체 워크플로우 수:** 46개 +**전체 워크플로우 수:** 권위 있는 개수와 전체 목록은 [`docs/INVENTORY.md`](INVENTORY.md#workflows)를 참조하라. + +#### 워크플로우를 위한 점진적 공개 + +워크플로우 파일은 해당 `/gsd-*` 명령어가 호출될 때마다 Claude의 컨텍스트에 그대로 로드된다. 이 비용을 제한하기 위해 `tests/workflow-size-budget.test.cjs`가 시행하는 워크플로우 크기 예산은 #2361의 에이전트 예산을 반영한다: + +| 등급 | 파일당 줄 제한 | +|-----------|--------------------| +| `XL` | 1700 — 최상위 오케스트레이터 (`execute-phase`, `plan-phase`, `new-project`) | +| `LARGE` | 1500 — 다단계 플래너 및 대형 기능 워크플로우 | +| `DEFAULT` | 1000 — 집중된 단일 목적 워크플로우 (목표 등급) | + +`workflows/discuss-phase.md`는 이슈 #2551에 따라 더 엄격한 <500줄 상한을 유지한다. 워크플로우가 등급을 초과하면 모드별 본문은 `workflows//modes/.md`로, 템플릿은 `workflows//templates/`로, 공유 지식은 `get-shit-done/references/`로 추출한다. 부모 파일은 현재 호출에 필요한 모드 및 템플릿 파일만 읽는 얇은 디스패처가 된다. + +`workflows/discuss-phase/`가 이 패턴의 정규 예시이다 — 부모는 디스패치하고, modes/는 플래그별 동작(`power.md`, `all.md`, `auto.md`, `chain.md`, `text.md`, `batch.md`, `analyze.md`, `default.md`, `advisor.md`)을 담으며, templates/는 해당 출력 파일이 작성될 때만 읽히는 CONTEXT.md, DISCUSSION-LOG.md, checkpoint.json 스키마를 담는다. ### Agents (`agents/*.md`) -다음을 지정하는 전문화된 에이전트 정의 파일입니다. +다음을 지정하는 전문화된 에이전트 정의: + - `name` — 에이전트 식별자 - `description` — 역할과 목적 -- `tools` — 허용된 도구 접근 권한 (Read, Write, Edit, Bash, Grep, Glob, WebSearch 등) +- `tools` — 허용된 도구 접근 (Read, Write, Edit, Bash, Grep, Glob, WebSearch 등) - `color` — 시각적 구분을 위한 터미널 출력 색상 -**전체 에이전트 수:** 16개 +**전체 에이전트 수:** 33개 ### References (`get-shit-done/references/*.md`) -워크플로우와 에이전트가 `@-reference`로 참조하는 공유 지식 문서입니다. +워크플로우와 에이전트가 `@-reference`하는 공유 지식 문서([`docs/INVENTORY.md`](INVENTORY.md#references-41-shipped)에서 권위 있는 개수와 전체 목록 참조): + +**핵심 레퍼런스:** + - `checkpoints.md` — 체크포인트 유형 정의 및 상호작용 패턴 -- `model-profiles.md` — 에이전트별 모델 티어 할당 -- `verification-patterns.md` — 다양한 아티팩트 유형 검증 방법 +- `gates.md` — plan-checker와 verifier에 연결된 4가지 정규 게이트 유형 (확인, 품질, 안전, 전환) +- `model-profiles.md` — 에이전트별 모델 등급 할당 +- `model-profile-resolution.md` — 모델 해결 알고리즘 문서 +- `verification-patterns.md` — 다양한 결과물 유형 검증 방법 +- `verification-overrides.md` — 결과물별 검증 재정의 규칙 - `planning-config.md` — 전체 config 스키마 및 동작 -- `git-integration.md` — git 커밋, 브랜칭, 히스토리 패턴 +- `git-integration.md` — git 커밋, 브랜칭, 이력 패턴 +- `git-planning-commit.md` — 계획 디렉터리 커밋 컨벤션 - `questioning.md` — 프로젝트 초기화를 위한 꿈 추출 철학 - `tdd.md` — 테스트 주도 개발 통합 패턴 -- `ui-brand.md` — 시각적 출력 포매팅 패턴 +- `ui-brand.md` — 시각적 출력 형식 패턴 +- `common-bug-patterns.md` — 코드 리뷰 및 검증을 위한 일반적인 버그 패턴 + +**워크플로우 레퍼런스:** + +- `agent-contracts.md` — 오케스트레이터와 에이전트 간의 공식 인터페이스 +- `context-budget.md` — 컨텍스트 윈도우 예산 할당 규칙 +- `continuation-format.md` — 세션 지속/재개 형식 +- `domain-probes.md` — discuss-phase를 위한 도메인별 프로빙 질문 +- `gate-prompts.md` — 게이트/체크포인트 프롬프트 템플릿 +- `revision-loop.md` — 계획 수정 반복 패턴 +- `universal-anti-patterns.md` — 탐지하고 피해야 할 일반적인 안티 패턴 +- `artifact-types.md` — 계획 결과물 유형 정의 +- `phase-argument-parsing.md` — 단계 인수 파싱 컨벤션 +- `decimal-phase-calculation.md` — 소수 하위 단계 번호 매기기 규칙 +- `workstream-flag.md` — 워크스트림 활성 포인터 컨벤션 +- `user-profiling.md` — 사용자 행동 프로파일링 방법론 +- `thinking-partner.md` — 의사 결정 포인트에서의 조건부 thinking partner 활성화 + +**Thinking 모델 레퍼런스:** + +GSD 워크플로우에 thinking 클래스 모델(o3, o4-mini, Gemini 2.5 Pro)을 통합하기 위한 레퍼런스: + +- `thinking-models-debug.md` — 디버깅 워크플로우를 위한 thinking 모델 패턴 +- `thinking-models-execution.md` — 실행 에이전트를 위한 thinking 모델 패턴 +- `thinking-models-planning.md` — 계획 에이전트를 위한 thinking 모델 패턴 +- `thinking-models-research.md` — 리서치 에이전트를 위한 thinking 모델 패턴 +- `thinking-models-verification.md` — 검증 에이전트를 위한 thinking 모델 패턴 + +**모듈식 플래너 분해:** + +플래너 에이전트(`agents/gsd-planner.md`)는 일부 런타임에서 부과하는 50K 문자 제한 이하로 유지하기 위해 단일 모놀리식 파일에서 핵심 에이전트 + 레퍼런스 모듈로 분해되었다: + +- `planner-gap-closure.md` — 갭 클로저 모드 동작 (VERIFICATION.md 읽기, 대상 재계획) +- `planner-reviews.md` — 교차 AI 리뷰 통합 (`/gsd-review`의 REVIEWS.md 읽기) +- `planner-revision.md` — 반복적 개선을 위한 계획 수정 패턴 ### Templates (`get-shit-done/templates/`) -모든 계획 아티팩트를 위한 Markdown 템플릿입니다. `gsd-tools.cjs template fill`과 `scaffold` 명령어가 사전 구조화된 파일을 생성하는 데 사용합니다. +모든 계획 결과물을 위한 마크다운 템플릿. `gsd-tools.cjs template fill` / `phase.scaffold`(와 최상위 `scaffold`)가 사전 구조화된 파일을 생성하는 데 사용: - `project.md`, `requirements.md`, `roadmap.md`, `state.md` — 핵심 프로젝트 파일 - `phase-prompt.md` — 단계 실행 프롬프트 템플릿 - `summary.md` (+ `summary-minimal.md`, `summary-standard.md`, `summary-complex.md`) — 세분화 인식 요약 템플릿 @@ -158,40 +231,60 @@ GSD는 사용자와 AI 코딩 에이전트(Claude Code, Gemini CLI, OpenCode, Ki - `UI-SPEC.md`, `UAT.md`, `VALIDATION.md` — 전문화된 검증 템플릿 - `discussion-log.md` — 논의 감사 추적 템플릿 - `codebase/` — 브라운필드 매핑 템플릿 (stack, architecture, conventions, concerns, structure, testing, integrations) -- `research-project/` — 조사 출력 템플릿 (SUMMARY, STACK, FEATURES, ARCHITECTURE, PITFALLS) +- `research-project/` — 리서치 출력 템플릿 (SUMMARY, STACK, FEATURES, ARCHITECTURE, PITFALLS) ### Hooks (`hooks/`) -호스트 AI 에이전트와 통합되는 런타임 훅입니다. +호스트 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`로 활성화) | +| `gsd-check-update.js` | `SessionStart` | 백그라운드 업데이트 확인을 위한 포어그라운드 트리거 | +| `gsd-check-update-worker.js` | (헬퍼) | `gsd-check-update.js`가 생성하는 백그라운드 워커; 직접 이벤트 등록 없음 | +| `gsd-prompt-guard.js` | `PreToolUse` | `.planning/` 쓰기에서 프롬프트 인젝션 패턴 스캔 (자문적) | +| `gsd-read-injection-scanner.js` | `PostToolUse` | 신뢰할 수 없는 콘텐츠에서 주입된 지시 사항을 위한 Read 도구 출력 스캔 | +| `gsd-workflow-guard.js` | `PreToolUse` | GSD 워크플로우 컨텍스트 외부의 파일 편집 감지 (자문적, `hooks.workflow_guard`를 통한 옵트인) | +| `gsd-read-guard.js` | `PreToolUse` | 세션에서 아직 읽지 않은 파일에 Edit/Write를 방지하는 자문적 가드 | +| `gsd-session-state.sh` | `PostToolUse` | 쉘 기반 런타임을 위한 세션 상태 추적 | +| `gsd-validate-commit.sh` | `PostToolUse` | 컨벤셔널 커밋 시행을 위한 커밋 검증 | +| `gsd-phase-boundary.sh` | `PostToolUse` | 워크플로우 전환을 위한 단계 경계 감지 | + +권위 있는 11개 훅 목록은 [`docs/INVENTORY.md`](INVENTORY.md#hooks-11-shipped)를 참조하라. + +### Command Routing Hub (`get-shit-done/bin/lib/command-routing-hub.cjs`) + +CJS 명령어 패밀리 라우터는 `CommandRoutingHub`를 통해 디스패치한다. 허브는 no-throw 순수 결과 계약(`hub.dispatch()`는 내부 예외를 잡아 `{ ok: false, kind, ...typedPayload }`를 반환)과 닫힌 런타임 오류 분류(`UnknownCommand`, `InvalidArgs`, `HandlerRefusal`, `HandlerFailure`)를 소유한다. 라우터 어댑터는 얇은 CLI 번역기로 유지된다 — 허브를 구축하고, `dispatch`를 호출하고, 결과를 `output()`/`error()` 호출에 매핑한다. 런타임은 단일 경로이다(이중 런타임 모드 선택 없음). `docs/adr/0174-retire-gsd-sdk-package-boundary.md` 참조. ### CLI Tools (`get-shit-done/bin/`) -17개의 도메인 모듈을 포함하는 Node.js CLI 유틸리티(`gsd-tools.cjs`)입니다. +`get-shit-done/bin/lib/`에 걸쳐 분할된 도메인 모듈을 가진 Node.js CLI 유틸리티(`gsd-tools.cjs`)(권위 있는 목록은 [`docs/INVENTORY.md`](INVENTORY.md#cli-modules-33-shipped) 참조): + + +| 모듈 | 책임 | +| ---------------------- | --------------------------------------------------------------------------------------------------- | +| `core.cjs` | 오류 처리, 출력 형식, 공유 유틸리티; 계획 헬퍼를 위한 호환성 재내보내기 | +| `planning-workspace.cjs` | 계획 심(`planningDir`, `planningPaths`, 활성 워크스트림 라우팅, `.planning/.lock`) | +| `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, timestamp, todos, scaffolding, stats) | +| `model-profiles.cjs` | 모델 프로필 해결 테이블 | +| `security.cjs` | 경로 탐색 방지, 프롬프트 인젝션 탐지, 안전한 JSON 파싱, 쉘 인수 검증 | +| `uat.cjs` | UAT 파일 파싱, 검증 부채 추적, audit-uat 지원 | +| `docs.cjs` | 문서 업데이트 워크플로우 초기화, 마크다운 스캔, 모노레포 감지 | +| `workstream.cjs` | 워크스트림 CRUD, 마이그레이션, 세션 범위 활성 포인터 | +| `schema-detect.cjs` | ORM 패턴에 대한 스키마 드리프트 감지 (Prisma, Drizzle 등) | +| `profile-pipeline.cjs` | 사용자 행동 프로파일링 데이터 파이프라인, 세션 파일 스캔 | +| `profile-output.cjs` | 프로필 렌더링, USER-PROFILE.md 및 dev-preferences.md 생성 | -| 모듈 | 역할 | -|--------|---------------| -| `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, timestamp, todos, scaffolding, stats) | -| `model-profiles.cjs` | 모델 프로필 해석 테이블 | -| `security.cjs` | 경로 탐색 방지, 프롬프트 인젝션 감지, 안전한 JSON 파싱, 셸 인수 검증 | -| `uat.cjs` | UAT 파일 파싱, 검증 부채 추적, audit-uat 지원 | --- @@ -200,65 +293,81 @@ GSD는 사용자와 AI 코딩 에이전트(Claude Code, Gemini CLI, OpenCode, Ki ### 오케스트레이터 → 에이전트 패턴 ``` -Orchestrator (workflow .md) +오케스트레이터 (workflow .md) │ - ├── Load context: gsd-tools.cjs init - │ Returns JSON with: project info, config, state, phase details + ├── 컨텍스트 로드: gsd-tools.cjs init + │ 반환 JSON: 프로젝트 정보, 설정, 상태, 단계 상세 │ - ├── Resolve model: gsd-tools.cjs resolve-model - │ Returns: opus | sonnet | haiku | inherit + ├── 모델 해결: gsd-tools.cjs resolve-model + │ 반환: opus | sonnet | haiku | inherit │ - ├── Spawn Agent (Task/SubAgent call) - │ ├── Agent prompt (agents/*.md) - │ ├── Context payload (init JSON) - │ ├── Model assignment - │ └── Tool permissions + ├── 에이전트 생성 (Task/SubAgent 호출) + │ ├── 에이전트 프롬프트 (agents/*.md) + │ ├── 컨텍스트 페이로드 (init JSON) + │ ├── 모델 할당 + │ └── 도구 권한 │ - ├── Collect result + ├── 결과 수집 │ - └── Update state: gsd-tools.cjs state update/patch/advance-plan + └── 상태 업데이트: gsd-tools.cjs state update / state patch / state advance-plan ``` -### 에이전트 생성 카테고리 +### 주요 에이전트 생성 범주 + +21개 주요 에이전트의 개념적 생성 패턴 분류. 권위 있는 31개 에이전트 목록(10개 고급/전문화 에이전트 포함: `gsd-pattern-mapper`, `gsd-code-reviewer`, `gsd-code-fixer`, `gsd-ai-researcher`, `gsd-domain-researcher`, `gsd-eval-planner`, `gsd-eval-auditor`, `gsd-framework-selector`, `gsd-debug-session-manager`, `gsd-intel-updater`)은 [`docs/INVENTORY.md`](INVENTORY.md#agents-31-shipped)를 참조하라. + + +| 범주 | 에이전트 | 병렬성 | +| ---------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| **Researchers** | gsd-project-researcher, gsd-phase-researcher, gsd-ui-researcher, gsd-advisor-researcher | 4개 병렬 (stack, features, architecture, pitfalls); advisor는 discuss-phase 중 생성됨 | +| **Synthesizers** | gsd-research-synthesizer | 순차적 (리서처 완료 후) | +| **Planners** | gsd-planner, gsd-roadmapper | 순차적 | +| **Checkers** | gsd-plan-checker, gsd-integration-checker, gsd-ui-checker, gsd-nyquist-auditor | 순차적 (검증 루프, 최대 3회 반복) | +| **Executors** | gsd-executor | 웨이브 내 병렬, 웨이브 간 순차적 | +| **Verifiers** | gsd-verifier | 순차적 (모든 실행기 완료 후) | +| **Mappers** | gsd-codebase-mapper | 4개 병렬 (tech, arch, quality, concerns) | +| **Debuggers** | gsd-debugger | 순차적 (대화형) | +| **Auditors** | gsd-ui-auditor, gsd-security-auditor | 순차적 | +| **Doc Writers** | gsd-doc-writer, gsd-doc-verifier | 순차적 (writer 다음 verifier) | +| **Profilers** | gsd-user-profiler | 순차적 | +| **Analyzers** | gsd-assumptions-analyzer | 순차적 (discuss-phase 중) | -| 카테고리 | 에이전트 | 병렬성 | -|----------|--------|-------------| -| **Researchers** | gsd-project-researcher, gsd-phase-researcher, gsd-ui-researcher, gsd-advisor-researcher | 4개 병렬 (stack, features, architecture, pitfalls); advisor는 discuss-phase 중 생성됨 | -| **Synthesizers** | gsd-research-synthesizer | 순차적 (조사자 완료 후) | -| **Planners** | gsd-planner, gsd-roadmapper | 순차적 | -| **Checkers** | gsd-plan-checker, gsd-integration-checker, gsd-ui-checker, gsd-nyquist-auditor | 순차적 (검증 루프, 최대 3회 반복) | -| **Executors** | gsd-executor | 웨이브 내 병렬, 웨이브 간 순차적 | -| **Verifiers** | gsd-verifier | 순차적 (모든 executor 완료 후) | -| **Mappers** | gsd-codebase-mapper | 4개 병렬 (tech, arch, quality, concerns) | -| **Debuggers** | gsd-debugger | 순차적 (대화형) | -| **Auditors** | gsd-ui-auditor | 순차적 | ### 웨이브 실행 모델 -`execute-phase` 중 계획은 의존성 웨이브로 그룹화됩니다. +`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) +웨이브 분석: + 계획 01 (의존성 없음) ─┐ + 계획 02 (의존성 없음) ─┤── 웨이브 1 (병렬) + 계획 03 (의존: 01) ─┤── 웨이브 2 (웨이브 1 대기) + 계획 04 (의존: 02) ─┘ + 계획 05 (의존: 03,04) ── 웨이브 3 (웨이브 2 대기) ``` -각 executor는 다음을 받습니다. -- 새로운 200K 컨텍스트 윈도우 +각 실행기는 다음을 받는다: + +- 신선한 200K 컨텍스트 윈도우 (또는 지원 모델에서 최대 1M) - 실행할 특정 PLAN.md - 프로젝트 컨텍스트 (PROJECT.md, STATE.md) -- 단계 컨텍스트 (CONTEXT.md, 사용 가능한 경우 RESEARCH.md) +- 단계 컨텍스트 (CONTEXT.md, 가용한 경우 RESEARCH.md) + +### 적응형 컨텍스트 보강 (1M 모델) + +컨텍스트 윈도우가 500K+ 토큰인 경우 (Opus 4.6, Sonnet 4.6 같은 1M 클래스 모델), 서브에이전트 프롬프트는 표준 200K 윈도우에 들어가지 않는 추가 컨텍스트로 자동 보강된다: + +- **실행기 에이전트**는 이전 웨이브 SUMMARY.md 파일들과 단계 CONTEXT.md/RESEARCH.md를 받아 단계 내 교차 계획 인식 가능 +- **검증기 에이전트**는 모든 PLAN.md, SUMMARY.md, CONTEXT.md 파일들과 REQUIREMENTS.md를 받아 이력 인식 검증 가능 + +오케스트레이터는 config에서 `context_window`를 읽고(`gsd-tools.cjs config-get context_window`) 값이 >= 500,000일 때 조건부로 더 풍부한 컨텍스트를 포함한다. 표준 200K 윈도우에서는 최대 컨텍스트 효율성을 위해 캐시 친화적 순서로 잘린 버전의 프롬프트를 사용한다. #### 병렬 커밋 안전성 -같은 웨이브 내에서 여러 executor가 실행될 때 충돌을 방지하는 두 가지 메커니즘이 있습니다. +같은 웨이브 내에서 여러 실행기가 실행될 때 두 가지 메커니즘이 충돌을 방지한다: -1. **`--no-verify` 커밋** — 병렬 에이전트는 사전 커밋 훅을 건너뜁니다 (빌드 잠금 경쟁을 유발할 수 있음, 예: Rust 프로젝트의 cargo lock 충돌). 오케스트레이터는 각 웨이브 완료 후 `git hook run pre-commit`을 한 번 실행합니다. - -2. **STATE.md 파일 잠금** — 모든 `writeStateMd()` 호출은 lockfile 기반 상호 배제를 사용합니다 (`STATE.md.lock`, `O_EXCL` 원자적 생성). 이는 두 에이전트가 STATE.md를 읽고 서로 다른 필드를 수정하면 마지막 작성자가 다른 에이전트의 변경사항을 덮어쓰는 읽기-수정-쓰기 경쟁 조건을 방지합니다. 오래된 잠금 감지(10초 타임아웃)와 지터를 포함한 스핀 대기가 포함됩니다. +1. `--no-verify` 커밋 — 병렬 에이전트는 사전 커밋 훅을 건너뛴다 (빌드 잠금 경합을 유발할 수 있음, 예: Rust 프로젝트의 cargo lock 충돌). 오케스트레이터는 각 웨이브 완료 후 `git hook run pre-commit`을 한 번 실행한다. +2. **STATE.md 파일 잠금** — 모든 `writeStateMd()` 호출은 lockfile 기반 상호 배제를 사용한다(`STATE.md.lock`, `O_EXCL` 원자적 생성). 이는 두 에이전트가 STATE.md를 읽고 서로 다른 필드를 수정하면 마지막 작성자가 다른 에이전트의 변경 사항을 덮어쓰는 읽기-수정-쓰기 경합 조건을 방지한다. 오래된 잠금 감지(10초 타임아웃)와 지터를 포함한 스핀 대기가 포함된다. --- @@ -267,73 +376,84 @@ Wave Analysis: ### 새 프로젝트 흐름 ``` -User input (idea description) +사용자 입력 (아이디어 설명) │ ▼ -Questions (questioning.md philosophy) +질문 (questioning.md 철학) │ ▼ -4x Project Researchers (parallel) +4x 프로젝트 리서처 (병렬) ├── Stack → STACK.md ├── Features → FEATURES.md ├── Architecture → ARCHITECTURE.md └── Pitfalls → PITFALLS.md │ ▼ -Research Synthesizer → SUMMARY.md +리서치 합성기 → SUMMARY.md │ ▼ -Requirements extraction → REQUIREMENTS.md +요구 사항 추출 → REQUIREMENTS.md │ ▼ -Roadmapper → ROADMAP.md +로드맵퍼 → ROADMAP.md │ ▼ -User approval → STATE.md initialized +사용자 승인 → STATE.md 초기화 ``` ### 단계 실행 흐름 ``` -discuss-phase → CONTEXT.md (user preferences) +discuss-phase → CONTEXT.md (사용자 선호도) │ ▼ -ui-phase → UI-SPEC.md (design contract, optional) +ui-phase → UI-SPEC.md (디자인 계약, 선택적) │ ▼ plan-phase - ├── Phase Researcher → RESEARCH.md - ├── Planner → PLAN.md files - └── Plan Checker → Verify loop (max 3x) + ├── 리서치 게이트 (RESEARCH.md에 미해결 공개 질문이 있으면 차단) + ├── 단계 리서처 → RESEARCH.md + │ └── 패키지 적법성 게이트: 모든 패키지에 slopcheck; [SLOP] 제거, + │ [SUS]/[ASSUMED] 플래그; 감사 테이블을 RESEARCH.md에 작성 + ├── 플래너 (도달 가능성 검사 포함) → PLAN.md 파일 + │ └── [ASSUMED]/[SUS] 설치 전에 checkpoint:human-verify 삽입; + │ 설치 포함 계획에 T-{phase}-SC STRIDE 행 추가 + ├── 계획 검사기 → 검증 루프 (최대 3회) + ├── 요구 사항 커버리지 게이트 (REQ-ID → 계획) + └── 결정 커버리지 게이트 (CONTEXT.md `` → 계획, 차단 — #2492) │ ▼ -execute-phase - ├── Wave analysis (dependency grouping) - ├── Executor per plan → code + atomic commits - ├── SUMMARY.md per plan - └── Verifier → VERIFICATION.md +state planned-phase → STATE.md (계획됨/실행 준비) │ ▼ -verify-work → UAT.md (user acceptance testing) +execute-phase (컨텍스트 축소: 잘린 프롬프트, 캐시 친화적 순서) + ├── 웨이브 분석 (의존성 그룹화) + ├── 계획당 실행기 → 코드 + 원자적 커밋 + ├── 계획당 SUMMARY.md + └── 검증기 → VERIFICATION.md + └── 결정 커버리지 게이트 (CONTEXT.md 결정 → 출시된 결과물, 비차단 — #2492) │ ▼ -ui-review → UI-REVIEW.md (visual audit, optional) +verify-work → UAT.md (사용자 수락 테스트) + │ + ▼ +ui-review → UI-REVIEW.md (시각적 감사, 선택적) ``` ### 컨텍스트 전파 -각 워크플로우 단계는 이후 단계에 공급되는 아티팩트를 생성합니다. +각 워크플로우 단계는 이후 단계에 공급되는 결과물을 생성한다: ``` -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 +PROJECT.md ────────────────────────────────────────────► 모든 에이전트 +REQUIREMENTS.md ───────────────────────────────────────► 플래너, 검증기, 감사기 +ROADMAP.md ────────────────────────────────────────────► 오케스트레이터 +STATE.md ──────────────────────────────────────────────► 모든 에이전트 (결정, 차단) +CONTEXT.md (단계별) ────────────────────────────────────► 리서처, 플래너, 실행기 +RESEARCH.md (단계별) ───────────────────────────────────► 플래너, 계획 검사기 +PLAN.md (계획별) ────────────────────────────────────────► 실행기, 계획 검사기 +SUMMARY.md (계획별) ─────────────────────────────────────► 검증기, 상태 추적 +UI-SPEC.md (단계별) ────────────────────────────────────► 실행기, UI 감사기 ``` --- @@ -344,29 +464,37 @@ UI-SPEC.md (per phase) ─────────────────── ``` ~/.claude/ # Claude Code (전역 설치) -├── commands/gsd/*.md # 37개 슬래시 명령어 +├── skills/gsd-*/SKILL.md # 전역 스킬 (권위 있는 목록: docs/INVENTORY.md) +├── commands/gsd/*.md # 로컬 Claude 설치는 전역 스킬 대신 슬래시 명령어 사용 ├── get-shit-done/ │ ├── bin/gsd-tools.cjs # CLI 유틸리티 -│ ├── bin/lib/*.cjs # 15개 도메인 모듈 -│ ├── workflows/*.md # 42개 워크플로우 정의 -│ ├── references/*.md # 13개 공유 참조 문서 -│ └── templates/ # 계획 아티팩트 템플릿 -├── agents/*.md # 15개 에이전트 정의 -├── hooks/ -│ ├── gsd-statusline.js # 상태표시줄 훅 -│ ├── gsd-context-monitor.js # 컨텍스트 경고 훅 -│ └── gsd-check-update.js # 업데이트 확인 훅 +│ ├── bin/lib/*.cjs # 도메인 모듈 (권위 있는 목록: docs/INVENTORY.md) +│ ├── workflows/*.md # 워크플로우 정의 (권위 있는 목록: docs/INVENTORY.md) +│ ├── references/*.md # 공유 레퍼런스 문서 (권위 있는 목록: docs/INVENTORY.md) +│ └── templates/ # 계획 결과물 템플릿 +├── agents/*.md # 에이전트 정의 (권위 있는 목록: docs/INVENTORY.md) +├── hooks/*.js # Node.js 훅 (statusline, guards, monitors, update check) +├── hooks/*.sh # 쉘 훅 (session state, commit validation, phase boundary) ├── settings.json # 훅 등록 └── VERSION # 설치된 버전 번호 ``` -다른 런타임의 동등한 경로입니다. -- **OpenCode:** `~/.config/opencode/` 또는 `~/.opencode/` -- **Kilo:** `~/.config/kilo/` 또는 `~/.kilo/` -- **Gemini CLI:** `~/.gemini/` -- **Codex:** `~/.codex/` (명령어 대신 skills 사용) -- **Copilot:** `~/.github/` -- **Antigravity:** `~/.gemini/antigravity/` (전역) 또는 `./.agent/` (로컬) +다른 런타임의 동등한 경로: + +- **OpenCode:** `~/.config/opencode/` 전역 또는 `./.opencode/` 로컬 +- **Kilo:** `~/.config/kilo/` 전역 또는 `./.kilo/` 로컬 +- **Gemini CLI:** `~/.gemini/` 전역 또는 `./.gemini/` 로컬 +- **Codex:** `~/.codex/` 전역 또는 `./.codex/` 로컬 +- **Copilot:** `~/.copilot/` 전역 또는 `./.github/` 로컬 +- **Antigravity:** 자동 감지된 전역 루트 (`~/.gemini/antigravity/`, `~/.gemini/antigravity-ide/`, 또는 `~/.gemini/antigravity-cli/`) 또는 `./.agent/` 로컬 +- **Cursor:** `~/.cursor/` 전역 또는 `./.cursor/` 로컬 +- **Windsurf:** `~/.codeium/windsurf/` 전역 또는 `./.windsurf/` 로컬 +- **Augment Code:** `~/.augment/` 전역 또는 `./.augment/` 로컬 +- **Trae:** `~/.trae/` 전역 또는 `./.trae/` 로컬 +- **Qwen Code:** `~/.qwen/` 전역 또는 `./.qwen/` 로컬 +- **Hermes Agent:** `~/.hermes/` 전역 또는 `./.hermes/` 로컬 +- **CodeBuddy:** `~/.codebuddy/` 전역 또는 `./.codebuddy/` 로컬 +- **Cline:** `~/.cline/` 전역 또는 프로젝트 루트 `.clinerules` 로컬 ### 프로젝트 파일 (`.planning/`) @@ -378,15 +506,15 @@ UI-SPEC.md (per phase) ─────────────────── ├── STATE.md # 살아있는 메모리: 위치, 결정, 차단, 메트릭 ├── config.json # 워크플로우 설정 ├── MILESTONES.md # 완료된 마일스톤 보관 -├── research/ # /gsd-new-project의 도메인 조사 +├── research/ # /gsd-new-project의 도메인 리서치 │ ├── SUMMARY.md │ ├── STACK.md │ ├── FEATURES.md │ ├── ARCHITECTURE.md │ └── PITFALLS.md ├── codebase/ # 브라운필드 매핑 (/gsd-map-codebase에서) -│ ├── STACK.md -│ ├── ARCHITECTURE.md +│ ├── STACK.md # YAML 전문에 `last_mapped_commit` 포함 +│ ├── ARCHITECTURE.md # 실행 후 드리프트 게이트를 위한 (#2003) │ ├── CONVENTIONS.md │ ├── CONCERNS.md │ ├── STRUCTURE.md @@ -395,14 +523,14 @@ UI-SPEC.md (per phase) ─────────────────── ├── phases/ │ └── XX-phase-name/ │ ├── XX-CONTEXT.md # 사용자 선호도 (discuss-phase에서) -│ ├── XX-RESEARCH.md # 생태계 조사 (plan-phase에서) +│ ├── XX-RESEARCH.md # 생태계 리서치 (plan-phase에서) │ ├── XX-YY-PLAN.md # 실행 계획 │ ├── XX-YY-SUMMARY.md # 실행 결과 │ ├── XX-VERIFICATION.md # 실행 후 검증 │ ├── XX-VALIDATION.md # Nyquist 테스트 커버리지 매핑 -│ ├── XX-UI-SPEC.md # UI 디자인 계약서 (ui-phase에서) +│ ├── XX-UI-SPEC.md # UI 디자인 계약 (ui-phase에서) │ ├── XX-UI-REVIEW.md # 시각적 감사 점수 (ui-review에서) -│ └── XX-UAT.md # 사용자 수용 테스트 결과 +│ └── XX-UAT.md # 사용자 수락 테스트 결과 ├── quick/ # 빠른 작업 추적 │ └── YYMMDD-xxx-slug/ │ ├── PLAN.md @@ -420,34 +548,60 @@ UI-SPEC.md (per phase) ─────────────────── └── continue-here.md # 컨텍스트 핸드오프 (pause-work에서) ``` +### 실행 후 코드베이스 드리프트 게이트 (#2003) + +`/gsd-execute-phase` 마지막 웨이브 커밋 후, 워크플로우는 비차단 `codebase_drift_gate` 단계를 실행한다(`schema_drift_gate`와 `verify_phase_goal` 사이). `last_mapped_commit..HEAD` diff를 `.planning/codebase/STRUCTURE.md`와 비교하고 네 종류의 구조적 요소를 집계한다: + +1. 매핑된 경로 외부의 새 디렉터리 +2. `(packages|apps)//src/index.*`의 새 배럴 내보내기 +3. 새 마이그레이션 파일 +4. `routes/` 또는 `api/` 하위의 새 라우트 모듈 + +집계가 `workflow.drift_threshold`(기본값 3)를 충족하면, 게이트는 제안된 `/gsd-map-codebase --paths …` 명령어와 함께 **경고**하거나(기본값), `gsd-codebase-mapper`를 영향받은 경로로 범위 지정하여 생성함으로써 **자동 재매핑**한다(`workflow.drift_action = auto-remap`). 감지 또는 재매핑의 오류는 로그되고 단계는 계속된다 — 드리프트 감지는 검증을 실패시킬 수 없다. + +`last_mapped_commit`는 각 `.planning/codebase/*.md` 파일 상단의 YAML 전문에 있다; `bin/lib/drift.cjs`는 `readMappedCommit`와 `writeMappedCommit` 왕복 헬퍼를 제공한다. + --- ## 인스톨러 아키텍처 -인스톨러(`bin/install.js`, ~3,000줄)는 다음을 처리합니다. +인스톨러(`bin/install.js`, ~10,700줄)는 다음을 처리한다: -1. **런타임 감지** — 대화형 프롬프트 또는 CLI 플래그 (`--claude`, `--opencode`, `--gemini`, `--kilo`, `--codex`, `--copilot`, `--antigravity`, `--all`) +1. **런타임 감지** — 대화형 프롬프트 또는 CLI 플래그 (`--claude`, `--opencode`, `--gemini`, `--kilo`, `--codex`, `--copilot`, `--antigravity`, `--cursor`, `--windsurf`, `--augment`, `--trae`, `--qwen`, `--hermes`, `--codebuddy`, `--cline`, `--all`) 2. **위치 선택** — 전역(`--global`) 또는 로컬(`--local`) -3. **파일 배포** — commands, workflows, references, templates, agents, hooks 복사 -4. **런타임 적응** — 런타임별 파일 내용 변환. - - Claude Code: 그대로 사용 - - OpenCode: 명령어/에이전트를 OpenCode 호환 플랫 명령어 + 서브에이전트 형식으로 변환 - - Kilo: Kilo 설정 경로로 OpenCode 변환 파이프라인을 재사용 - - Codex: commands에서 TOML config + skills 생성 - - Copilot: 도구 이름 매핑 (Read→read, Bash→execute 등) - - Gemini: 훅 이벤트 이름 조정 (`PostToolUse` 대신 `AfterTool`) - - Antigravity: Google 모델 등가물을 사용한 skills-first 방식 +3. **파일 배포** — commands, skills, workflows, references, templates, agents, hooks 복사 +4. **런타임 적응** — 런타임별 파일 내용 변환: + - Claude Code: 그대로 사용 + - OpenCode: 명령어/에이전트를 OpenCode 호환 플랫 명령어 + 서브에이전트 형식으로 변환 + - Kilo: Kilo 설정 경로로 OpenCode 변환 파이프라인 재사용 + - Codex: commands에서 TOML config + skills 생성 + - Copilot: 도구 이름 매핑 (Read→read, Bash→execute 등) + - Gemini: 훅 이벤트 이름 조정 (`PostToolUse` 대신 `AfterTool`) + - Antigravity: Google 모델 등가물을 사용한 skills-first + - Cursor: Cursor 규칙 참조를 사용한 skills-first + - Windsurf: Windsurf 규칙 참조를 사용한 skills-first + - Trae: `settings.json` 또는 훅 통합 없이 `~/.trae` / `./.trae`에 skills-first 설치 + - Qwen Code: Qwen 브랜드 경로 및 프롬프트 재작성을 사용한 skills-first + - Hermes Agent: `skills/gsd/` 하의 범주 기반 스킬 + - CodeBuddy: CodeBuddy 경로 및 프롬프트 재작성을 사용한 skills-first + - Cline: 규칙 기반 통합을 위한 `.clinerules` 작성 + - Augment Code: 전체 스킬 변환 및 설정 관리를 사용한 skills-first 5. **경로 정규화** — `~/.claude/` 경로를 런타임별 경로로 교체 6. **설정 통합** — 런타임의 `settings.json`에 훅 등록 7. **패치 백업** — v1.17부터 로컬 수정 파일을 `gsd-local-patches/`에 백업하여 `/gsd-update --reapply`에 사용 8. **매니페스트 추적** — 깔끔한 제거를 위해 `gsd-file-manifest.json` 작성 9. **제거 모드** — `--uninstall`로 모든 GSD 파일, 훅, 설정 제거 +설치 시 파일 이동, 오래된 결과물 정리, 설정 재작성, 사용자 데이터 보존은 인스톨러 마이그레이션 모듈이 관리한다. [인스톨러 마이그레이션](../installer-migrations.md)과 [ADR 0008](../adr/0008-installer-migration-module.md)을 참조하라. +마이그레이션 모듈은 레거시 설치에 대한 게이트된 최초 기준선 스캔도 소유하며, 이후 마이그레이션이 무언가를 제거하거나 재작성하기 전에 알려진 런타임 설치 표면을 분류한다. + +계획 드리프트 가드(`plan_review.source_grounding`) — 실행 전에 생성된 계획에서 심볼 참조를 라이브 소스에 대해 검증하는 — 는 [ADR 22](../adr/22-plan-drift-guard.md)에 명시되어 있다. + ### 플랫폼 처리 -- **Windows:** 자식 프로세스에 `windowsHide` 적용, 보호 디렉터리의 EPERM/EACCES 방지, 경로 구분자 정규화 -- **WSL:** WSL에서 실행 중인 Windows Node.js를 감지하고 경로 불일치에 대해 경고 -- **Docker/CI:** 커스텀 config 디렉터리 위치를 위한 `CLAUDE_CONFIG_DIR` 환경 변수 지원 +- **Windows:** 자식 프로세스에 `windowsHide`, 보호 디렉터리에 EPERM/EACCES 방지, 경로 구분자 정규화 +- **WSL:** WSL에서 실행 중인 Windows Node.js 감지 및 경로 불일치 경고 +- **Docker/CI:** 커스텀 설정 디렉터리 위치를 위한 `CLAUDE_CONFIG_DIR` 환경 변수 지원 --- @@ -456,75 +610,138 @@ UI-SPEC.md (per phase) ─────────────────── ### 아키텍처 ``` -Runtime Engine (Claude Code / Gemini CLI) +런타임 엔진 (Claude Code / Gemini CLI) │ - ├── statusLine event ──► gsd-statusline.js - │ Reads: stdin (session JSON) - │ Writes: stdout (formatted status), /tmp/claude-ctx-{session}.json (bridge) + ├── statusLine 이벤트 ──► gsd-statusline.js + │ 읽기: stdin (세션 JSON) + │ 쓰기: stdout (형식화된 상태), /tmp/claude-ctx-{session}.json (브리지) │ - ├── PostToolUse/AfterTool event ──► gsd-context-monitor.js - │ Reads: stdin (tool event JSON), /tmp/claude-ctx-{session}.json (bridge) - │ Writes: stdout (hookSpecificOutput with additionalContext warning) + ├── PostToolUse/AfterTool 이벤트 ──► gsd-context-monitor.js + │ 읽기: stdin (도구 이벤트 JSON), /tmp/claude-ctx-{session}.json (브리지) + │ 쓰기: stdout (additionalContext 경고가 있는 hookSpecificOutput) │ - └── SessionStart event ──► gsd-check-update.js - Reads: VERSION file - Writes: ~/.claude/cache/gsd-update-check.json (spawns background process) + └── SessionStart 이벤트 ──► gsd-check-update.js + 읽기: VERSION 파일 + 쓰기: ~/.claude/cache/gsd-update-check.json (백그라운드 프로세스 생성) ``` ### 컨텍스트 모니터 임계값 -| 잔여 컨텍스트 | 수준 | 에이전트 동작 | -|-------------------|-------|----------------| -| > 35% | 정상 | 경고 주입 없음 | -| ≤ 35% | WARNING | "복잡한 새 작업 시작을 피하세요" | -| ≤ 25% | CRITICAL | "컨텍스트가 거의 소진됨, 사용자에게 알리세요" | -디바운스: 반복 경고 사이에 5회 도구 사용. 심각도 에스컬레이션(WARNING→CRITICAL)은 디바운스를 우회합니다. +| 잔여 컨텍스트 | 수준 | 에이전트 동작 | +| ----------------- | -------- | --------------------------------------- | +| > 35% | 정상 | 경고 주입 없음 | +| ≤ 35% | WARNING | "복잡한 새 작업 시작 금지" | +| ≤ 25% | CRITICAL | "컨텍스트 거의 소진됨, 사용자에게 알릴 것" | + + +디바운스: 반복 경고 사이에 5번의 도구 사용. 심각도 에스컬레이션(WARNING→CRITICAL)은 디바운스를 우회한다. ### 안전 속성 -- 모든 훅은 try/catch로 감싸여 있으며 오류 시 자동 종료합니다 +- 모든 훅은 try/catch로 감싸이며 오류 시 자동 종료한다 - stdin 타임아웃 가드(3초)로 파이프 문제 시 중단 방지 -- 오래된 메트릭(60초 이상)은 무시됩니다 -- 누락된 브리지 파일은 정상적으로 처리됩니다 (서브에이전트, 새 세션) -- 컨텍스트 모니터는 권고용입니다 — 사용자 선호도를 재정의하는 명령을 내리지 않습니다 +- 오래된 메트릭(60초 이상)은 무시된다 +- 누락된 브리지 파일은 정상적으로 처리된다 (서브에이전트, 새 세션) +- 컨텍스트 모니터는 자문적이다 — 사용자 선호도를 재정의하는 명령적 명령을 내리지 않는다 + +### 패키지 적법성 게이트 (v1.42.1) + +리서처 → 플래너 → 실행기 파이프라인은 슬롭스쿼팅(악의적인 설치 후 스크립트와 함께 선점 등록된 AI 환각 패키지 이름)에 대한 공급망 게이트를 포함한다. + +**위협 모델:** GSD는 "리서처가 패키지를 명명"에서 "실행기가 `npm install`을 실행"까지의 전체 경로를 자동화한다. `npm view`를 통과하는 환각된 이름(등록만 증명, 적법성은 아님)은 이전에는 감지되지 않고 흘러갔을 것이다. AI가 생성한 패키지 참조의 ~20%가 환각되며; 그 이름의 ~43%가 프롬프트 전반에 걸쳐 일관되게 반복되어 선점 등록이 공격자에게 경제적으로 실현 가능하다. + +**게이트 계층:** + +| 계층 | 컴포넌트 | 동작 | +|-------|-----------|--------| +| 리서치 | `gsd-phase-researcher` | `slopcheck install --json` 실행; `## Package Legitimacy Audit` 테이블을 RESEARCH.md에 작성; RESEARCH.md가 작성되기 전에 `[SLOP]` 패키지 제거 | +| 계획 | `gsd-planner` | 감사 테이블 읽기; `[ASSUMED]` 또는 `[SUS]` 설치 작업 전에 `checkpoint:human-verify` 삽입; ``에 `T-{phase}-SC` STRIDE 공급망 행 추가 | +| 실행 | `gsd-executor` | RULE 3은 패키지 설치를 자동 수정 범위에서 제외; 실패한 설치는 체크포인트로 표시되며 절대 자동 대체하지 않음 | + +**클레임 출처 통합:** WebSearch를 통해 발견된 패키지 이름은 `npm view` 결과와 관계없이 `[ASSUMED]`(not `[VERIFIED]`)로 태그된다. 이는 설치 경계에서 출처 태그를 하드 게이트로 시행하여 기존 `[ASSUMED]` / `[VERIFIED]` / `[CITED]` 출처 시스템을 확장한다 — `[ASSUMED]`는 항상 PLAN.md에 `checkpoint:human-verify`를 생성한다. + +**생태계 커버리지:** 리서처는 단일 일반 검사 대신 레지스트리별 검증 명령을 사용한다 — `npm view` (Node), `pip index versions` (Python), `cargo search` (Rust). 이는 2025년 USENIX 연구에 문서화된 ~9% 비율의 교차 생태계 환각을 잡는다. + +**정상적인 성능 저하:** `slopcheck`를 사용할 수 없으면 모든 추천 패키지가 `[ASSUMED]`로 태그되고 체크포인트로 게이트가 걸린다. 리서치와 계획은 진행된다; 시스템은 누락된 도구 의존성으로 인해 절대 하드 실패하지 않는다. + +**외부 의존성:** `slopcheck` (MIT, pip 설치 가능). 유지 관리가 중단되면 `[ASSUMED]`-게이트 폴백이 사람 체크포인트 커버리지를 유지한다. + +--- ### 보안 훅 (v1.27) -**Prompt Guard** (`gsd-prompt-guard.js`). -- `.planning/` 파일에 Write/Edit 시 트리거됩니다 -- 프롬프트 인젝션 패턴을 콘텐츠에서 스캔합니다 (역할 재정의, 지시 우회, system 태그 인젝션) -- 권고용 — 감지를 기록하며 차단하지 않습니다 -- 패턴은 훅 독립성을 위해 인라인으로 포함됩니다 (`security.cjs`의 일부) +훅과 가드 계층이 더 광범위한 보안 접근 방식에 어떻게 맞는지에 대한 개념적 개요는 [보안 모델](explanation/security-model.md)을 참조하라. -**Workflow Guard** (`gsd-workflow-guard.js`). -- `.planning/` 외부 파일에 Write/Edit 시 트리거됩니다 -- GSD 워크플로우 컨텍스트 외부의 편집을 감지합니다 (활성 `/gsd-` 명령어 또는 Task 서브에이전트 없음) -- 상태 추적 변경을 위해 `/gsd-quick` 또는 `/gsd-fast` 사용을 권고합니다 -- `hooks.workflow_guard: true`로 활성화 (기본값: false) +**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 코딩 런타임을 지원합니다. +GSD는 통합된 명령어/워크플로우 아키텍처를 통해 여러 AI 코딩 런타임을 지원한다. -| 런타임 | 명령어 형식 | 에이전트 시스템 | 설정 위치 | -|---------|---------------|--------------|-----------------| -| Claude Code | `/gsd-command` | Task 생성 | `~/.claude/` | -| OpenCode | `/gsd-command` | Subagent 모드 | `~/.config/opencode/` | -| Kilo | `/gsd-command` | Subagent 모드 | `~/.config/kilo/` | -| Gemini CLI | `/gsd-command` | Task 생성 | `~/.gemini/` | -| Codex | `$gsd-command` | Skills | `~/.codex/` | -| Copilot | `/gsd-command` | 에이전트 위임 | `~/.github/` | -| Antigravity | Skills | Skills | `~/.gemini/antigravity/` | +### 런타임 설치 계약 매트릭스 + +이 매트릭스는 인스톨러가 오늘 구체화하는 런타임 표면을 설명한다. +마이그레이션별 소유권과 소스 스냅샷은 [인스톨러 마이그레이션](../installer-migrations.md#runtime-configuration-contract-registry)에 있다. + +| 런타임 | 전역 루트 | 로컬 루트 | 호출 표면 | 에이전트 표면 | 설정 및 훅 | +| --- | --- | --- | --- | --- | --- | +| Claude Code | `~/.claude` | `./.claude` | 전역 `skills/gsd-*/SKILL.md`; 로컬 `commands/gsd/*.md` | `agents/gsd-*.md` | `settings.json` 훅 및 statusLine 항목 | +| OpenCode | `~/.config/opencode` | `./.opencode` | `command/gsd-*.md` | `agents/gsd-*.md` | `opencode.json` 또는 `opencode.jsonc`; GSD 훅 없음 | +| Kilo | `~/.config/kilo` | `./.kilo` | `command/gsd-*.md` | `agents/gsd-*.md` | `kilo.json` 또는 `kilo.jsonc`; GSD 훅 없음 | +| Gemini CLI | `~/.gemini` | `./.gemini` | `commands/gsd/*.toml` | `agents/gsd-*.md` | `settings.json` 기능 플래그, 훅, statusline | +| Codex | `~/.codex` | `./.codex` | `skills/gsd-*/SKILL.md` | `agents/` 소스 마크다운 + 에이전트별 TOML | `config.toml` `[agents.gsd-*]`, `[features].hooks` (정규; 레거시 별칭 `codex_hooks`는 인식되며 재설치 시 마이그레이션됨, #3566), 훅 테이블 | +| GitHub Copilot | `~/.copilot` | `./.github` | `skills/gsd-*/SKILL.md` 및 `copilot-instructions.md` | `.agent.md` 파일 | GSD 훅 또는 statusline 없음 | +| Antigravity | 자동 감지: `~/.gemini/antigravity`, `~/.gemini/antigravity-ide`, 또는 `~/.gemini/antigravity-cli` | `./.agent` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | GSD가 설치 시 Gemini 스타일 `settings.json` 훅 항목 | +| Cursor | `~/.cursor` | `./.cursor` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | `rules/` 하의 규칙 참조; GSD 훅 없음 | +| Windsurf | `~/.codeium/windsurf` | `./.windsurf` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | `rules/` 하의 규칙 참조; GSD 훅 없음 | +| Augment Code | `~/.augment` | `./.augment` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | GSD 훅 또는 statusline 없음 | +| Trae | `~/.trae` | `./.trae` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | `rules/` 하의 규칙 참조; GSD 훅 없음 | +| Qwen Code | `~/.qwen` | `./.qwen` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | 지원되는 경우 공통 GSD 설정 및 훅 항목 | +| Hermes Agent | `~/.hermes` | `./.hermes` | `skills/gsd/DESCRIPTION.md` 및 `skills/gsd/gsd-*/SKILL.md` | `agents/gsd-*.md` | 지원되는 경우 공통 GSD 설정 및 훅 항목 | +| CodeBuddy | `~/.codebuddy` | `./.codebuddy` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | 지원되는 경우 공통 GSD 설정 및 훅 항목 | +| Cline | `~/.cline` | 프로젝트 루트 | `.clinerules` | 규칙만 | GSD 훅 또는 statusline 없음 | + +### 업스트림 계약 소스 + +런타임 설치 기대는 가용한 경우 기본 문서에 대해 확인된다. 현재 소스 스냅샷은 2026-05-11: + +- Claude Code: Anthropic 슬래시 명령어, 설정, 훅, 서브에이전트 문서. +- OpenCode 및 Kilo: OpenCode 설정 문서 및 Kilo 커스텀 서브에이전트 문서. +- Gemini CLI 및 Qwen Code: 명령어/설정 문서; Qwen 명령어 문서는 2026-05-06에 마지막으로 업데이트됨. +- Codex: OpenAI Codex 문서 및 `config-schema.json`; 인스톨러는 에이전트 테이블 형태를 위한 Codex 0.124.0 호환성도 포함. +- Copilot, Cursor, Cline, Augment, Hermes, CodeBuddy: 커스텀 지시, 규칙, 스킬, 설정을 위한 벤더 문서. +- Antigravity, Windsurf, Trae: 소스가 제한된 행. 인스톨러는 현재 호환성 심을 문서화하며, 마이그레이션은 설정을 재작성하기 전에 해당 소스를 새로 고쳐야 한다. ### 추상화 포인트 -1. **도구 이름 매핑** — 각 런타임은 고유한 도구 이름을 가집니다 (예: Claude의 `Bash` → Copilot의 `execute`) -2. **훅 이벤트 이름** — Claude는 `PostToolUse`를 사용하고 Gemini는 `AfterTool`을 사용합니다 -3. **에이전트 전문** — 각 런타임은 고유한 에이전트 정의 형식을 가집니다 -4. **경로 규칙** — 각 런타임은 서로 다른 디렉터리에 설정을 저장합니다 -5. **모델 참조** — `inherit` 프로필을 통해 GSD가 런타임의 모델 선택에 위임합니다 +1. **도구 이름 매핑** — 각 런타임은 고유한 도구 이름을 가진다 (예: Claude의 `Bash` → Copilot의 `execute`) +2. **훅 이벤트 이름** — Claude는 `PostToolUse`를 사용하고 Gemini는 `AfterTool`을 사용한다 +3. **에이전트 전문** — 각 런타임은 고유한 에이전트 정의 형식을 가진다 +4. **경로 컨벤션** — 각 런타임은 서로 다른 디렉터리에 설정을 저장한다 +5. **모델 참조** — `inherit` 프로필은 GSD가 런타임의 모델 선택에 위임하도록 한다 -인스톨러는 설치 시 모든 변환을 처리합니다. 워크플로우와 에이전트는 Claude Code의 네이티브 형식으로 작성되어 배포 중에 변환됩니다. +인스톨러는 설치 시 모든 번역을 처리한다. 워크플로우와 에이전트는 Claude Code의 네이티브 형식으로 작성되어 배포 중에 변환된다. + +--- + +## Related + +- [다중 에이전트 오케스트레이션](explanation/multi-agent-orchestration.md) +- [보안 모델](explanation/security-model.md) +- [CLI 도구](CLI-TOOLS.md) +- [문서 인덱스](README.md) diff --git a/docs/ko-KR/CLI-TOOLS.md b/docs/ko-KR/CLI-TOOLS.md index 9f9ff86d2..5de2f3643 100644 --- a/docs/ko-KR/CLI-TOOLS.md +++ b/docs/ko-KR/CLI-TOOLS.md @@ -1,38 +1,48 @@ -# GSD CLI 도구 레퍼런스 +# GSD CLI 도구 참조 -> `gsd-tools.cjs`에 대한 프로그래밍 방식 API 레퍼런스입니다. 워크플로우와 에이전트가 내부적으로 사용합니다. 사용자 대면 명령어는 [Command Reference](COMMANDS.md)를 참조하세요. +> `gsd-tools` CLI(`get-shit-done/bin/gsd-tools.cjs`)에 대한 참조입니다. 슬래시 명령 및 사용자 흐름은 [명령 참조](COMMANDS.md)를 확인하세요. [문서 인덱스](README.md)로 돌아가기. --- ## 개요 -`gsd-tools.cjs`는 GSD의 약 50개 명령어, 워크플로우, 에이전트 파일에서 반복되는 인라인 bash 패턴을 대체하는 Node.js CLI 유틸리티입니다. config 파싱, 모델 해석, 단계 조회, git 커밋, 요약 검증, 상태 관리, 템플릿 작업을 중앙화합니다. +`gsd-tools.cjs`는 GSD 명령, 워크플로우, 에이전트 전반에 걸쳐 설정 파싱, 모델 해석, 단계 조회, git 커밋, 요약 검증, 상태 관리, 템플릿 작업을 중앙에서 처리합니다. -**위치:** `get-shit-done/bin/gsd-tools.cjs` -**모듈:** `get-shit-done/bin/lib/`의 15개 도메인 모듈 -**사용법:** +| | | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **배포 경로** | `get-shit-done/bin/gsd-tools.cjs` | +| **구현** | `get-shit-done/bin/lib/` 아래 20개의 도메인 모듈 (해당 디렉토리가 기준) | +| **상태** | 오케스트레이션, 워크플로우, 자동화를 위한 주요 런타임 명령 인터페이스. | + + +**사용법 (CJS):** + ```bash node gsd-tools.cjs [args] [--raw] [--cwd ] ``` -**전역 플래그.** -| 플래그 | 설명 | -|------|-------------| -| `--raw` | 기계 가독형 출력 (JSON 또는 일반 텍스트, 포매팅 없음) | -| `--cwd ` | 작업 디렉터리 재정의 (샌드박스 서브에이전트용) | +**전역 플래그 (CJS):** + + +| 플래그 | 설명 | +| -------------- | ---------------------------------------------------------------------------- | +| `--raw` | 기계 판독 가능한 출력 (JSON 또는 일반 텍스트, 서식 없음) | +| `--cwd ` | 작업 디렉토리 재정의 (샌드박스된 서브에이전트용) | +| `--ws ` | `.planning/workstreams/` 경로에 대한 워크스트림 컨텍스트 | + --- -## State 명령어 +## 상태 명령 -`.planning/STATE.md`를 관리합니다 — 프로젝트의 살아있는 메모리입니다. +`.planning/STATE.md` — 프로젝트의 살아있는 메모리를 관리합니다. ```bash -# 전체 프로젝트 config + state를 JSON으로 로드 +# 전체 프로젝트 설정 + 상태를 JSON으로 불러오기 node gsd-tools.cjs state load -# STATE.md 전문을 JSON으로 출력 +# STATE.md 프론트매터를 JSON으로 출력 node gsd-tools.cjs state json # 단일 필드 업데이트 @@ -41,7 +51,7 @@ node gsd-tools.cjs state update # STATE.md 내용 또는 특정 섹션 가져오기 node gsd-tools.cjs state get [section] -# 여러 필드를 일괄 업데이트 +# 여러 필드 일괄 업데이트 node gsd-tools.cjs state patch --field1 val1 --field2 val2 # 계획 카운터 증가 @@ -53,66 +63,73 @@ node gsd-tools.cjs state record-metric --phase N --plan M --duration Xmin [--tas # 진행률 바 재계산 node gsd-tools.cjs state update-progress -# 결정 추가 +# 결정 사항 추가 node gsd-tools.cjs state add-decision --summary "..." [--phase N] [--rationale "..."] # 또는 파일에서: node gsd-tools.cjs state add-decision --summary-file path [--rationale-file path] -# 차단 항목 추가/해결 +# 차단 항목 추가/해제 node gsd-tools.cjs state add-blocker --text "..." node gsd-tools.cjs state resolve-blocker --text "..." # 세션 연속성 기록 node gsd-tools.cjs state record-session --stopped-at "..." [--resume-file path] + +# 단계 시작 — 새로운 단계의 STATE.md 상태/최근 활동 업데이트 +node gsd-tools.cjs state begin-phase --phase N --name SLUG --plans COUNT + +# 에이전트 발견 가능한 차단 신호 (discuss-phase / UI 흐름에서 사용) +node gsd-tools.cjs state signal-waiting --type TYPE --question "..." --options "A|B" --phase P +node gsd-tools.cjs state signal-resume ``` -### State Snapshot +### 상태 스냅샷 -전체 STATE.md의 구조화된 파싱 결과입니다. +전체 STATE.md의 구조화된 파싱: ```bash node gsd-tools.cjs state-snapshot ``` -현재 위치, 단계, 계획, 상태, 결정, 차단, 메트릭, 최근 활동을 포함한 JSON을 반환합니다. +반환 JSON 포함 항목: 현재 위치, 단계, 계획, 상태, 결정 사항, 차단 항목, 메트릭, 최근 활동. --- -## Phase 명령어 +## 단계 명령 -단계를 관리합니다 — 디렉터리, 번호 매기기, 로드맵 동기화. +단계 — 디렉토리, 번호 지정, 로드맵 동기화를 관리합니다. ```bash -# 번호로 단계 디렉터리 찾기 +# 번호로 단계 디렉토리 찾기 node gsd-tools.cjs find-phase -# 삽입을 위한 다음 소수 단계 번호 계산 +# 삽입을 위한 다음 소수점 단계 번호 계산 node gsd-tools.cjs phase next-decimal -# 로드맵에 새 단계 추가 + 디렉터리 생성 +# 로드맵에 새 단계 추가 + 디렉토리 생성 node gsd-tools.cjs phase add -# 기존 단계 이후에 소수 단계 삽입 +# 기존 단계 뒤에 소수점 단계 삽입 node gsd-tools.cjs phase insert -# 단계 제거, 이후 단계 재번호 매기기 +# 단계 제거, 이후 번호 재지정 node gsd-tools.cjs phase remove [--force] -# 단계 완료 표시, state + roadmap 업데이트 +# 단계 완료 표시, 상태 + 로드맵 업데이트 node gsd-tools.cjs phase complete -# 웨이브와 상태를 포함한 계획 인덱싱 +# 웨이브 및 상태와 함께 계획 인덱싱 node gsd-tools.cjs phase-plan-index -# 필터링을 포함한 단계 목록 +# 필터링으로 단계 목록 표시 node gsd-tools.cjs phases list [--type planned|executed|all] [--phase N] [--include-archived] ``` --- -## Roadmap 명령어 +## 로드맵 명령 -`ROADMAP.md`를 파싱하고 업데이트합니다. +`ROADMAP.md` 파싱 및 업데이트. ```bash # ROADMAP.md에서 단계 섹션 추출 @@ -121,27 +138,27 @@ node gsd-tools.cjs roadmap get-phase # 디스크 상태를 포함한 전체 로드맵 파싱 node gsd-tools.cjs roadmap analyze -# 디스크에서 진행률 표 행 업데이트 +# 디스크에서 진행 테이블 행 업데이트 node gsd-tools.cjs roadmap update-plan-progress ``` --- -## Config 명령어 +## 설정 명령 -`.planning/config.json`을 읽고 씁니다. +`.planning/config.json` 읽기 및 쓰기. ```bash -# config.json을 기본값으로 초기화 +# 기본값으로 config.json 초기화 node gsd-tools.cjs config-ensure-section -# config 값 설정 (점 표기법) +# 설정 값 지정 (점 표기법) node gsd-tools.cjs config-set -# config 값 가져오기 +# 설정 값 가져오기 node gsd-tools.cjs config-get -# 모델 프로필 설정 +# 모델 프로파일 설정 node gsd-tools.cjs config-set-model-profile ``` @@ -150,16 +167,18 @@ node gsd-tools.cjs config-set-model-profile ## 모델 해석 ```bash -# 현재 프로필 기반으로 에이전트 모델 가져오기 +# 현재 프로파일 기반으로 에이전트에 대한 모델 가져오기 node gsd-tools.cjs resolve-model -# 반환값: opus | sonnet | haiku | inherit +# 원시 출력은 선택된 모델 ID/티어를 반환합니다. +# JSON 출력은 프로파일도 포함하며, 활성 런타임이 지원하는 경우 +# reasoning_effort도 포함합니다. ``` 에이전트 이름: `gsd-planner`, `gsd-executor`, `gsd-phase-researcher`, `gsd-project-researcher`, `gsd-research-synthesizer`, `gsd-verifier`, `gsd-plan-checker`, `gsd-integration-checker`, `gsd-roadmapper`, `gsd-debugger`, `gsd-codebase-mapper`, `gsd-nyquist-auditor` --- -## Verification 명령어 +## 검증 명령 계획, 단계, 참조, 커밋을 검증합니다. @@ -167,13 +186,13 @@ node gsd-tools.cjs resolve-model # SUMMARY.md 파일 검증 node gsd-tools.cjs verify-summary [--check-count N] -# PLAN.md 구조 + 작업 확인 +# PLAN.md 구조 + 태스크 확인 node gsd-tools.cjs verify plan-structure # 모든 계획에 요약이 있는지 확인 node gsd-tools.cjs verify phase-completeness -# @-참조 + 경로 해석 확인 +# @-참조 + 경로 확인 node gsd-tools.cjs verify references # 커밋 해시 일괄 검증 @@ -188,48 +207,57 @@ node gsd-tools.cjs verify key-links --- -## Validation 명령어 +## 유효성 검사 명령 -프로젝트 무결성을 확인합니다. +프로젝트 무결성 확인. ```bash -# 단계 번호 매기기, 디스크/로드맵 동기화 확인 +# 단계 번호 지정, 디스크/로드맵 동기화 확인 node gsd-tools.cjs validate consistency -# .planning/ 무결성 확인, 선택적으로 복구 +# .planning/ 무결성 확인, 선택적 복구 node gsd-tools.cjs validate health [--repair] + +# 상태 표시줄 / 훅 호출자를 위한 컨텍스트 창 사용률 조회 (v1.40.0) +node gsd-tools.cjs validate context + +# 타입이 지정된 JSON 인터페이스로서의 컨텍스트 사용률 (#455) +node gsd-tools.cjs validate context --json ``` +`validate context`는 `utilization`, `status`(60% / 70% 임계값에서 `ok` / `warn` / `critical`), `suggestion` 문자열을 포함한 구조화된 봉투를 출력합니다. 동일한 데이터가 `/gsd-health --context`를 지원합니다. +스크립트 및 테스트 어서션에서 타입이 지정된 IR을 직접 수신하려면 `--json`을 전달하세요. + --- -## Template 명령어 +## 템플릿 명령 -템플릿 선택 및 채우기입니다. +템플릿 선택 및 채우기. ```bash -# 세분화에 따른 요약 템플릿 선택 +# 세분성에 따라 요약 템플릿 선택 node gsd-tools.cjs template select # 변수로 템플릿 채우기 node gsd-tools.cjs template fill --phase N [--plan M] [--name "..."] [--type execute|tdd] [--wave N] [--fields '{json}'] ``` -`fill`의 템플릿 유형: `summary`, `plan`, `verification` +`fill`에 대한 템플릿 유형: `summary`, `plan`, `verification` --- -## Frontmatter 명령어 +## 프론트매터 명령 -모든 Markdown 파일에 대한 YAML 전문 CRUD 작업입니다. +Markdown 파일에 대한 YAML 프론트매터 CRUD 작업. ```bash -# 전문을 JSON으로 추출 +# 프론트매터를 JSON으로 추출 node gsd-tools.cjs frontmatter get [--field key] # 단일 필드 업데이트 node gsd-tools.cjs frontmatter set --field key --value jsonVal -# JSON을 전문에 병합 +# JSON을 프론트매터에 병합 node gsd-tools.cjs frontmatter merge --data '{json}' # 필수 필드 검증 @@ -238,9 +266,9 @@ node gsd-tools.cjs frontmatter validate --schema plan|summary|verificatio --- -## Scaffold 명령어 +## 스캐폴드 명령 -사전 구조화된 파일과 디렉터리를 생성합니다. +미리 구조화된 파일 및 디렉토리 생성. ```bash # CONTEXT.md 템플릿 생성 @@ -252,15 +280,15 @@ node gsd-tools.cjs scaffold uat --phase N # VERIFICATION.md 템플릿 생성 node gsd-tools.cjs scaffold verification --phase N -# 단계 디렉터리 생성 +# 단계 디렉토리 생성 node gsd-tools.cjs scaffold phase-dir --phase N --name "phase name" ``` --- -## Init 명령어 (복합 컨텍스트 로드) +## Init 명령 (복합 컨텍스트 로딩) -특정 워크플로우에 필요한 모든 컨텍스트를 단일 호출로 로드합니다. 프로젝트 정보, config, state, 워크플로우별 데이터를 포함한 JSON을 반환합니다. +하나의 호출로 특정 워크플로우에 필요한 모든 컨텍스트를 로드합니다. 프로젝트 정보, 설정, 상태, 워크플로우별 데이터가 포함된 JSON을 반환합니다. ```bash node gsd-tools.cjs init execute-phase @@ -275,9 +303,13 @@ node gsd-tools.cjs init todos [area] node gsd-tools.cjs init milestone-op node gsd-tools.cjs init map-codebase node gsd-tools.cjs init progress + +# 워크스트림 범위 init (`--ws` 플래그) +node gsd-tools.cjs init execute-phase --ws +node gsd-tools.cjs init plan-phase --ws ``` -**대용량 페이로드 처리:** 출력이 약 50KB를 초과하면 CLI가 임시 파일에 쓰고 `@file:/tmp/gsd-init-XXXXX.json`을 반환합니다. 워크플로우는 `@file:` 접두사를 확인하고 디스크에서 읽습니다. +**대용량 페이로드 처리:** 출력이 ~50KB를 초과하면 CLI가 임시 파일에 쓰고 `@file:/tmp/gsd-init-XXXXX.json`을 반환합니다. 워크플로우는 `@file:` 접두사를 확인하고 디스크에서 읽습니다: ```bash INIT=$(node gsd-tools.cjs init execute-phase "1") @@ -286,20 +318,52 @@ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi --- -## Milestone 명령어 +## 마일스톤 명령 ```bash -# 마일스톤 보관 +# 마일스톤 아카이브 node gsd-tools.cjs milestone complete [--name ] [--archive-phases] -# 요구 사항을 완료로 표시 +# 요구사항을 완료로 표시 node gsd-tools.cjs requirements mark-complete # 허용 형식: REQ-01,REQ-02 또는 REQ-01 REQ-02 또는 [REQ-01, REQ-02] ``` --- -## 유틸리티 명령어 +## 에이전트 스킬 + +지정된 에이전트 유형에 대한 스킬 블록을 출력합니다. + +```bash +# 원시 XML 스킬 블록 출력 (기본값 — 셸 확장에 안전) +node gsd-tools.cjs agent-skills + +# 타입이 지정된 JSON 인터페이스 출력 (#455) — { agent_type, block, skills_count } +node gsd-tools.cjs agent-skills --json +``` + +`--json` 플래그는 구조화된 소비 및 테스트 어서션에 적합한 타입이 지정된 IR 객체를 반환하며, 기본값(플래그 없음)은 워크플로우 셸 확장이 의존하는 원시 XML 출력을 보존합니다. + +--- + +## 스킬 매니페스트 + +더 빠른 명령 로딩을 위한 스킬 검색 사전 계산 및 캐싱. + +```bash +# 스킬 매니페스트 생성 (.claude/skill-manifest.json에 기록) +node gsd-tools.cjs skill-manifest + +# 사용자 정의 출력 경로로 생성 +node gsd-tools.cjs skill-manifest --output +``` + +사용 가능한 모든 GSD 스킬과 해당 메타데이터(이름, 설명, 파일 경로, 인수 힌트)의 JSON 매핑을 반환합니다. 반복적인 파일시스템 스캔을 방지하기 위해 설치 프로그램과 세션 시작 훅에서 사용됩니다. + +--- + +## 유틸리티 명령 ```bash # 텍스트를 URL 안전 슬러그로 변환 @@ -309,10 +373,10 @@ node gsd-tools.cjs generate-slug "Some Text Here" # 타임스탬프 가져오기 node gsd-tools.cjs current-timestamp [full|date|filename] -# 대기 중인 할 일 개수 및 목록 +# 보류 중인 할 일 카운트 및 목록 node gsd-tools.cjs list-todos [area] -# 파일/디렉터리 존재 확인 +# 파일/디렉토리 존재 여부 확인 node gsd-tools.cjs verify-path-exists # 모든 SUMMARY.md 데이터 집계 @@ -324,44 +388,112 @@ node gsd-tools.cjs summary-extract [--fields field1,field2] # 프로젝트 통계 node gsd-tools.cjs stats [json|table] -# 진행률 렌더링 +# 진행률 렌더링 (사람이 읽을 수 있는 형태) node gsd-tools.cjs progress [json|table|bar] -# 할 일 완료 처리 +# 타입이 지정된 JSON 인터페이스로서의 진행률 (#455) +node gsd-tools.cjs progress --json + +# 할 일 완료 node gsd-tools.cjs todo complete # UAT 감사 — 모든 단계에서 미해결 항목 스캔 node gsd-tools.cjs audit-uat -# config 확인을 포함한 git 커밋 -node gsd-tools.cjs commit [--files f1 f2] [--amend] [--no-verify] +# 교차 아티팩트 감사 큐 — `.planning/`에서 미해결 감사 항목 스캔 +node gsd-tools.cjs audit-open [--json] + +# GSD-2 프로젝트를 현재 구조로 역 마이그레이션 (`/gsd-import --from-gsd2` 지원) +node gsd-tools.cjs from-gsd2 [--path ] [--force] [--dry-run] + +# 설정 확인과 함께 git 커밋 +node gsd-tools.cjs commit [--files f1 f2] [--amend] [--no-verify] [--respect-staged] ``` -> **`--no-verify`**: 사전 커밋 훅을 건너뜁니다. 빌드 잠금 경쟁을 피하기 위해 웨이브 기반 실행 중 병렬 executor 에이전트가 사용합니다 (예: Rust 프로젝트의 cargo lock 충돌). 오케스트레이터는 각 웨이브 완료 후 훅을 한 번 실행합니다. 순차 실행 중에는 `--no-verify`를 사용하지 마세요 — 훅이 정상적으로 실행되어야 합니다. +> `--no-verify`: 사전 커밋 훅을 건너뜁니다. 병렬 실행기 에이전트가 웨이브 기반 실행 중에 빌드 잠금 충돌(예: Rust 프로젝트의 cargo lock 경쟁)을 방지하기 위해 사용합니다. 오케스트레이터는 각 웨이브 완료 후 훅을 한 번 실행합니다. 순차 실행 중에는 `--no-verify`를 사용하지 마세요 — 훅이 정상적으로 실행되도록 하세요. +> `--files ` **스테이징 동작**: 기본적으로 `--files`는 커밋 전에 각 명명된 파일에 대해 `git add -- `를 실행합니다. 이렇게 하면 `git add -p`를 통해 설정된 헝크별 스테이징이 덮어쓰여집니다. `--respect-staged`를 전달하면 `git add` 단계를 건너뛰고 요청된 경로 사양 내에서 이미 인덱스에 있는 것만 커밋합니다. 해당 범위 내에서 스테이징된 것이 없으면 명령은 오류 없이 `{ committed: false, reason: 'nothing staged' }`를 반환합니다. 커밋의 후행 `-- ` 경로 사양은 두 모드 모두에서 적용되므로 `--files` 범위 외부에서 스테이징된 파일은 절대 포함되지 않습니다(#3061 불변식). -```bash # 웹 검색 (Brave API 키 필요) node gsd-tools.cjs websearch [--limit N] [--freshness day|week|month] ``` --- +## Graphify + +`.planning/graphs/`에서 프로젝트 지식 그래프를 빌드, 쿼리, 검사합니다. `config.json`에서 `graphify.enabled: true`가 필요합니다([설정 참조](CONFIGURATION.md#graphify-settings) 참조). + +```bash +# 지식 그래프 빌드 또는 재빌드 +node gsd-tools.cjs graphify build + +# 그래프에서 용어 검색 +node gsd-tools.cjs graphify query + +# 그래프 신선도 및 통계 표시 +node gsd-tools.cjs graphify status + +# 마지막 빌드 이후 변경 사항 표시 +node gsd-tools.cjs graphify diff + +# 현재 그래프의 명명된 스냅샷 기록 +node gsd-tools.cjs graphify snapshot [name] +``` + +사용자 대면 진입점: `/gsd-graphify` ([명령 참조](COMMANDS.md#gsd-graphify) 참조). + +--- + ## 모듈 아키텍처 | 모듈 | 파일 | 내보내기 | |--------|------|---------| -| Core | `lib/core.cjs` | `error()`, `output()`, `parseArgs()`, 공유 유틸리티 | -| State | `lib/state.cjs` | 모든 `state` 하위 명령어, `state-snapshot` | -| Phase | `lib/phase.cjs` | Phase CRUD, `find-phase`, `phase-plan-index`, `phases list` | +| Core | `lib/core.cjs` | `error()`, `output()`, `parseArgs()`, 공유 유틸리티, 호환성 재내보내기 | +| State | `lib/state.cjs` | 모든 `state` 서브명령, `state-snapshot` | +| Phase | `lib/phase.cjs` | 단계 CRUD, `find-phase`, `phase-plan-index`, `phases list` | +| Planning Workspace | `lib/planning-workspace.cjs` | 계획 시임: `planningDir`, `planningPaths`, 활성 워크스트림 라우팅, `.planning/.lock` | | Roadmap | `lib/roadmap.cjs` | 로드맵 파싱, 단계 추출, 진행률 업데이트 | -| Config | `lib/config.cjs` | Config 읽기/쓰기, 섹션 초기화 | -| Verify | `lib/verify.cjs` | 모든 verification 및 validation 명령어 | +| Config | `lib/config.cjs` | 설정 읽기/쓰기, 섹션 초기화 | +| Verify | `lib/verify.cjs` | 모든 검증 및 유효성 검사 명령 | | Template | `lib/template.cjs` | 템플릿 선택 및 변수 채우기 | -| Frontmatter | `lib/frontmatter.cjs` | YAML 전문 CRUD | -| Init | `lib/init.cjs` | 모든 워크플로우를 위한 복합 컨텍스트 로드 | -| Milestone | `lib/milestone.cjs` | 마일스톤 보관, 요구 사항 표시 | +| Frontmatter | `lib/frontmatter.cjs` | YAML 프론트매터 CRUD | +| Init | `lib/init.cjs` | 모든 워크플로우를 위한 복합 컨텍스트 로딩 | +| Milestone | `lib/milestone.cjs` | 마일스톤 아카이브, 요구사항 표시 | | Commands | `lib/commands.cjs` | 기타: slug, timestamp, todos, scaffold, stats, websearch | -| Model Profiles | `lib/model-profiles.cjs` | 프로필 해석 테이블 | -| UAT | `lib/uat.cjs` | 단계 간 UAT/verification 감사 | -| Profile Output | `lib/profile-output.cjs` | 개발자 프로필 포매팅 | +| Model Profiles | `lib/model-profiles.cjs` | 프로파일 해석 테이블 | +| UAT | `lib/uat.cjs` | 교차 단계 UAT/검증 감사 | +| Profile Output | `lib/profile-output.cjs` | 개발자 프로파일 서식 지정 | | Profile Pipeline | `lib/profile-pipeline.cjs` | 세션 분석 파이프라인 | +| Graphify | `lib/graphify.cjs` | 지식 그래프 빌드/쿼리/상태/diff/스냅샷 (`/gsd-graphify` 지원) | +| Learnings | `lib/learnings.cjs` | 단계/SUMMARY 아티팩트에서 학습 내용 추출 (`/gsd-extract-learnings` 지원) | +| Audit | `lib/audit.cjs` | 단계/마일스톤 감사 큐 핸들러; `audit-open` 헬퍼 | +| GSD2 Import | `lib/gsd2-import.cjs` | GSD-2 프로젝트에서 역 마이그레이션 임포터 (`/gsd-import --from-gsd2` 지원) | +| Intel | `lib/intel.cjs` | 쿼리 가능한 코드베이스 인텔리전스 인덱스 (`/gsd-map-codebase --query` 지원) | + +--- + +## 리뷰어 CLI 라우팅 + +`review.models.`는 리뷰어 유형을 코드 리뷰 워크플로우가 호출하는 셸 명령에 매핑합니다. [`/gsd-config --integrations`](COMMANDS.md#gsd-config)를 통해 또는 직접 설정: + +```bash +node gsd-tools.cjs config-set review.models.codex "codex exec --model gpt-5" +node gsd-tools.cjs config-set review.models.gemini "gemini -m gemini-2.5-pro" +node gsd-tools.cjs config-set review.models.opencode "opencode run --model claude-sonnet-4" +node gsd-tools.cjs config-set review.models.claude "" # clear — fall back to session model +``` + +슬러그는 `[a-zA-Z0-9_-]+`에 대해 검증됩니다; 비어 있거나 경로를 포함하는 슬러그는 거부됩니다. 전체 필드 참조는 [`docs/CONFIGURATION.md`](CONFIGURATION.md#code-review-cli-routing)를 참조하세요. + +## 시크릿 처리 + +`/gsd-settings`(`brave_search`, `firecrawl`, `exa_search`)를 통해 설정된 API 키는 `.planning/config.json`에 일반 텍스트로 기록되지만 모든 `config-set` / `config-get` 출력, 확인 테이블, 대화형 프롬프트에서 마스킹(`****`)됩니다. 마스킹 구현은 `get-shit-done/bin/lib/secrets.cjs`를 참조하세요. `config.json` 파일 자체가 보안 경계입니다 — 파일시스템 권한으로 보호하고 git에서 제외하세요(`.planning/`는 기본적으로 gitignore됩니다). + +--- + +## 관련 문서 + +- [명령](COMMANDS.md) +- [설정](CONFIGURATION.md) +- [아키텍처](ARCHITECTURE.md) +- [문서 인덱스](README.md) diff --git a/docs/ko-KR/COMMANDS.md b/docs/ko-KR/COMMANDS.md index 3438a78e7..768320955 100644 --- a/docs/ko-KR/COMMANDS.md +++ b/docs/ko-KR/COMMANDS.md @@ -1,29 +1,48 @@ -# GSD 명령어 레퍼런스 +# GSD Core 명령어 참조 -> 전체 명령어 문법, 플래그, 옵션, 사용 예시를 다룹니다. 기능 상세 설명은 [Feature Reference](FEATURES.md)를 참고하세요. 워크플로우 안내는 [User Guide](USER-GUIDE.md)를 참고하세요. +> GSD Core의 명령어 참조 — 모든 안정 명령어의 구문, 플래그, 옵션, 예시. 기능 세부 사항은 [기능 참조](FEATURES.md)를, 워크플로 안내는 [사용자 가이드](USER-GUIDE.md)를, 문서 목록은 [README](README.md)를 참조하세요. --- -## 명령어 문법 +## 명령어 구문 -- **Claude Code / Gemini / Copilot:** `/gsd-command-name [args]` -- **OpenCode / Kilo:** `/gsd-command-name [args]` +- **Claude Code / Copilot / OpenCode / Kilo:** `/gsd-command-name [args]` (하이픈 형식) +- **Gemini CLI:** `/gsd:command-name [args]` (콜론 형식 — Gemini는 `gsd:` 네임스페이스로 명령어를 분류합니다) - **Codex:** `$gsd-command-name [args]` +하이픈 형식과 콜론 형식은 *동일한 명령어의 런타임별 표기법*입니다. 사용 중인 런타임에 따라 인스톨러가 해당 런타임의 명령어 디렉토리에 올바른 형식을 자동으로 작성합니다. + --- -## 핵심 워크플로우 명령어 +## 네임스페이스 메타 스킬 + +v1.40에서 여섯 개의 네임스페이스 라우터가 1단계 진입점으로 제공됩니다. 이를 통해 즉시 스킬 목록을 로드하는 토큰 비용을 낮추면서(라우터 6개에 ~120 토큰 대 86개 스킬 전체 목록에 ~2,150 토큰) 전체 기능을 직접 호출할 수 있습니다. 모델이 네임스페이스를 선택한 후 구체적인 하위 스킬로 라우팅합니다. [#2792](https://github.com/open-gsd/gsd-core/issues/2792)를 참조하세요. + +| 명령어 | 라우팅 대상 | +|---------|-----------| +| `/gsd-workflow` | 단계 파이프라인 — discuss / plan / execute / verify / phase / progress | +| `/gsd-project` | 프로젝트 수명 주기 — 마일스톤, 감사, 요약 | +| `/gsd-quality` | 품질 게이트 — 코드 리뷰, 디버그, 감사, 보안, 평가, UI | +| `/gsd-context` | 코드베이스 인텔리전스 — 맵, 그래프화, 문서, 학습 내용 | +| `/gsd-manage` | 관리 — config, workspace, workstreams, thread, update, ship, inbox | +| `/gsd-ideate` | 탐색 및 캡처 — explore, sketch, spike, spec, capture | + +네임스페이스 스킬은 **추가적** 방식으로 동작합니다 — 기존의 모든 구체적인 명령어(예: `/gsd-plan-phase`, `/gsd-code-review --fix`)는 여전히 직접 호출할 수 있습니다. + +--- + +## 핵심 워크플로 명령어 ### `/gsd-new-project` -심층 컨텍스트 수집을 통해 새 프로젝트를 초기화합니다. +심층적인 컨텍스트 수집을 통해 새 프로젝트를 초기화합니다. | 플래그 | 설명 | -|--------|------| -| `--auto @file.md` | 문서에서 자동으로 정보를 추출하고 대화형 질문을 건너뜁니다 | +|------|-------------| +| `--auto @file.md` | 문서에서 자동 추출, 대화형 질문 생략 | -**사전 조건:** `.planning/PROJECT.md`가 존재하지 않아야 합니다. -**생성 파일:** `PROJECT.md`, `REQUIREMENTS.md`, `ROADMAP.md`, `STATE.md`, `config.json`, `research/`, `CLAUDE.md` +**전제 조건:** 기존 `.planning/PROJECT.md` 없음 +**생성 결과:** `PROJECT.md`, `REQUIREMENTS.md`, `ROADMAP.md`, `STATE.md`, `config.json`, `research/`, `CLAUDE.md` ```bash /gsd-new-project # 대화형 모드 @@ -32,57 +51,32 @@ --- -### `/gsd-workspace --new` +### `/gsd-workspace` -격리된 워크스페이스를 생성합니다. 저장소 복사본과 독립적인 `.planning/` 디렉터리가 포함됩니다. +GSD 워크스페이스 관리 — 리포지토리 복사본과 독립적인 `.planning/` 디렉토리를 갖는 격리된 워크스페이스 환경을 생성, 나열, 또는 삭제합니다. | 플래그 | 설명 | -|--------|------| -| `--name ` | 워크스페이스 이름 (필수) | -| `--repos repo1,repo2` | 쉼표로 구분된 저장소 경로 또는 이름 | -| `--path /target` | 대상 디렉터리 (기본값: `~/gsd-workspaces/`) | +|------|-------------| +| `--new` | 새 워크스페이스 생성 (`--name`, `--repos` 등과 함께 사용) | +| `--list` | 활성 GSD 워크스페이스 및 상태 나열 | +| `--remove ` | 워크스페이스 삭제 및 git 워크트리 정리 | +| `--name ` | 워크스페이스 이름 (`--new`와 함께 사용) | +| `--repos repo1,repo2` | 쉼표로 구분된 리포지토리 경로 또는 이름 (`--new`와 함께 사용) | +| `--path /target` | 대상 디렉토리 (기본값: `~/gsd-workspaces/`) | | `--strategy worktree\|clone` | 복사 전략 (기본값: `worktree`) | | `--branch ` | 체크아웃할 브랜치 (기본값: `workspace/`) | -| `--auto` | 대화형 질문을 건너뜁니다 | +| `--auto` | 대화형 질문 생략 | -**사용 사례.** -- 멀티 저장소: 격리된 GSD 상태로 일부 저장소만 작업합니다. -- 기능 격리: `--repos .`는 현재 저장소의 worktree를 생성합니다. +**사용 사례:** +- 멀티 리포지토리: 격리된 GSD 상태로 일부 리포지토리에서 작업 +- 기능 격리: `--repos .`는 현재 리포지토리의 워크트리 생성 -**생성 파일:** `WORKSPACE.md`, `.planning/`, 저장소 복사본 (worktree 또는 clone) +**생성 결과:** `WORKSPACE.md`, `.planning/`, 리포지토리 복사본 (워크트리 또는 클론) ```bash /gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI -/gsd-workspace --new --name feature-b --repos . --strategy worktree # 동일 저장소 격리 -/gsd-workspace --new --name spike --repos api,web --strategy clone # 전체 클론 -``` - ---- - -### `/gsd-workspace --list` - -활성 GSD 워크스페이스와 상태를 목록으로 표시합니다. - -**스캔 위치:** `~/gsd-workspaces/`에서 `WORKSPACE.md` 매니페스트를 탐색합니다. -**표시 항목:** 이름, 저장소 수, 전략, GSD 프로젝트 상태 - -```bash +/gsd-workspace --new --name feature-b --repos . --strategy worktree # 동일 리포지토리 격리 /gsd-workspace --list -``` - ---- - -### `/gsd-workspace --remove` - -워크스페이스를 제거하고 git worktree를 정리합니다. - -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `` | 예 | 제거할 워크스페이스 이름 | - -**안전 장치:** 저장소에 커밋되지 않은 변경사항이 있으면 제거를 거부합니다. 이름 확인이 필요합니다. - -```bash /gsd-workspace --remove feature-b ``` @@ -90,203 +84,255 @@ ### `/gsd-discuss-phase` -계획 수립 전에 구현 결정사항을 캡처합니다. +계획 수립 전 적응형 질문을 통해 단계 컨텍스트를 수집합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 (기본값: 현재 페이즈) | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | 아니요 | 단계 번호 (기본값: 현재 단계) | | 플래그 | 설명 | -|--------|------| -| `--auto` | 모든 질문에 추천 기본값을 자동으로 선택합니다 | -| `--batch` | 질문을 하나씩 처리하는 대신 일괄 입력 방식으로 그룹화합니다 | -| `--analyze` | 토론 중 트레이드오프 분석을 추가합니다 | -| `--chain` | discuss → plan → execute를 하나의 플로우로 자동 체인합니다 (v1.31) | -| `--power` | 준비된 답변 파일에서 일괄 입력으로 질문에 답변합니다 (v1.32) | +|------|-------------| +| `--all` | 영역 선택 생략 — 모든 불확실한 영역을 대화형으로 논의 (자동 진행 없음) | +| `--auto` | 모든 질문에 권장 기본값 자동 선택 | +| `--batch` | 하나씩이 아닌 일괄 입력을 위한 질문 그룹화 | +| `--analyze` | 논의 중 트레이드오프 분석 추가 | +| `--power` | 미리 준비된 답변 파일로 파일 기반 대량 질문 답변 | +| `--assumptions` | 대화형 세션 없이 단계에 대한 Claude의 구현 가정 표시 | -**사전 조건:** `.planning/ROADMAP.md`가 존재해야 합니다. -**생성 파일:** `{phase}-CONTEXT.md`, `{phase}-DISCUSSION-LOG.md` (감사 추적) +**전제 조건:** `.planning/ROADMAP.md` 존재 +**생성 결과:** `{phase}-CONTEXT.md`, `{phase}-DISCUSSION-LOG.md` (감사 추적) ```bash -/gsd-discuss-phase 1 # 페이즈 1 대화형 토론 -/gsd-discuss-phase 3 --auto # 페이즈 3 기본값 자동 선택 -/gsd-discuss-phase --batch # 현재 페이즈 일괄 모드 -/gsd-discuss-phase 2 --analyze # 트레이드오프 분석 포함 토론 +/gsd-discuss-phase 1 # 단계 1의 대화형 논의 +/gsd-discuss-phase 1 --all # 선택 단계 없이 모든 불확실한 영역 논의 +/gsd-discuss-phase 3 --auto # 단계 3의 기본값 자동 선택 +/gsd-discuss-phase --batch # 현재 단계의 배치 모드 +/gsd-discuss-phase 2 --analyze # 트레이드오프 분석과 함께 논의 +/gsd-discuss-phase 1 --power # 파일로부터 대량 답변 +/gsd-discuss-phase 3 --assumptions # 계획 전 Claude의 가정 표시 ``` --- ### `/gsd-ui-phase` -프론트엔드 페이즈를 위한 UI 설계 계약을 생성합니다. +프론트엔드 단계를 위한 UI 디자인 계약을 생성합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 (기본값: 현재 페이즈) | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | 아니요 | 단계 번호 (기본값: 현재 단계) | -**사전 조건:** `.planning/ROADMAP.md`가 존재해야 하며 해당 페이즈에 프론트엔드/UI 작업이 포함되어야 합니다. -**생성 파일:** `{phase}-UI-SPEC.md` +**전제 조건:** `.planning/ROADMAP.md` 존재, 해당 단계에 프론트엔드/UI 작업 포함 +**생성 결과:** `{phase}-UI-SPEC.md` ```bash -/gsd-ui-phase 2 # 페이즈 2 설계 계약 생성 +/gsd-ui-phase 2 # 단계 2의 디자인 계약 ``` --- ### `/gsd-plan-phase` -페이즈를 조사하고 계획하며 검증합니다. +단계를 리서치, 계획, 검증합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 (기본값: 다음 미계획 페이즈) | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | 아니요 | 단계 번호 (기본값: 다음 미계획 단계) | | 플래그 | 설명 | -|--------|------| -| `--auto` | 대화형 확인을 건너뜁니다 | -| `--research` | RESEARCH.md가 있어도 재조사를 강제합니다 | -| `--skip-research` | 도메인 조사 단계를 건너뜁니다 | -| `--gaps` | 갭 보완 모드 (VERIFICATION.md를 읽고 조사를 건너뜁니다) | -| `--skip-verify` | 계획 검증 루프를 건너뜁니다 | -| `--prd ` | discuss-phase 대신 PRD 파일을 컨텍스트로 사용합니다 | -| `--reviews` | REVIEWS.md의 교차 AI 리뷰 피드백으로 재계획합니다 | +|------|-------------| +| `--auto` | 대화형 확인 생략 | +| `--research` | RESEARCH.md가 있어도 강제 재리서치 | +| `--skip-research` | 도메인 리서치 단계 생략 | +| `--research-phase ` | 리서치 전용 모드: 단계 ``에 대한 리서처 생성, RESEARCH.md 작성, 계획자 이전에 종료. 삭제된 독립형 리서치 명령어 대체 (#3042). | +| `--view` | 리서치 전용 수정자: `--research-phase`와 함께 사용하면 기존 RESEARCH.md를 stdout으로 출력하고 종료 (생성 없음). | +| `--gaps` | 갭 보완 모드 (VERIFICATION.md 읽기, 리서치 생략) | +| `--skip-verify` | 계획 검사기 검증 루프 생략 | +| `--prd ` | 컨텍스트로 discuss-phase 대신 PRD 파일 사용 | +| `--ingest ` | 컨텍스트 합성을 위해 discuss-phase 대신 ADR 파일 사용 | +| `--ingest-format ` | `--ingest`에 대한 선택적 ADR 파서 형식 재정의 | +| `--reviews` | REVIEWS.md의 크로스 AI 리뷰 피드백으로 재계획 | +| `--validate` | 계획 시작 전 상태 검증 실행 | +| `--bounce` | 계획 후 외부 계획 바운스 검증 실행 (`workflow.plan_bounce_script` 사용) | +| `--skip-bounce` | 설정에서 활성화되어 있어도 계획 바운스 생략 | +| `--mvp` | 수직 MVP 모드 — 계획자가 수평 레이어 대신 기능 슬라이스(UI→API→DB)로 작업을 구성합니다. 이전 단계 요약이 없는 새 프로젝트의 단계 1에서는 `SKELETON.md`(Walking Skeleton)도 생성합니다. ROADMAP.md에 `**Mode:** mvp`를 추가하여 단계별로 지속시킬 수 있으며, 플래그 없이 자동으로 `--mvp`가 적용됩니다. | +| `--tdd` | TDD 모드 — 계획자가 동작 추가 작업에 `type: tdd`를 적용하여 각 작업이 실패하는 테스트로 시작하도록 합니다. `--mvp`와 조합 가능: `--mvp --tdd`는 모든 동작 추가 작업이 red-green으로 시작하는 수직 슬라이스를 생성합니다. | -**사전 조건:** `.planning/ROADMAP.md`가 존재해야 합니다. -**생성 파일:** `{phase}-RESEARCH.md`, `{phase}-{N}-PLAN.md`, `{phase}-VALIDATION.md` +**전제 조건:** `.planning/ROADMAP.md` 존재 +**생성 결과:** `{phase}-RESEARCH.md`, `{phase}-{N}-PLAN.md`, `{phase}-VALIDATION.md`; Walking Skeleton 모드 실행 시 `{phase}/SKELETON.md` + +**리서치 전용 모드 (`--research-phase `):** +- 수정자 없음: RESEARCH.md가 이미 있으면 `update / view / skip` 프롬프트. +- `--research` 사용: 강제 새로 고침 — 프롬프트 없이 리서처를 무조건 재생성. +- `--view` 사용: 기존 RESEARCH.md를 stdout으로 출력, 생성 없음. RESEARCH.md가 없으면 오류 발생. + +**패키지 적법성 게이트 (v1.42.1):** +리서처가 외부 패키지를 추천하면 각 패키지에 대해 `slopcheck install --json`을 실행하고 레지스트리, 출시일, 다운로드 수, 소스 리포지토리, slopcheck 판정이 담긴 `## Package Legitimacy Audit` 테이블을 RESEARCH.md에 작성합니다. 판정: + +- `[SLOP]` — 패키지가 RESEARCH.md에서 완전히 제거; 계획자에게 전달되지 않음 +- `[SUS]` — 패키지 플래그 지정; 계획자가 설치 작업 전에 `checkpoint:human-verify` 삽입 +- `[OK]` — 패키지 승인; 체크포인트 없음 + +WebSearch에서 가져온 패키지는 `[ASSUMED]`(`[VERIFIED]`가 아님)로 태그되며 `[SUS]`와 동일하게 처리됩니다 — 설치 전에 사람 체크포인트가 필요합니다. `slopcheck`를 설치할 수 없는 경우 추천된 모든 패키지는 `[ASSUMED]`로 태그되고 게이트 처리됩니다. + +전체 체크포인트 형식, 판정 테이블, 문제 해결 방법은 [사용자 가이드의 패키지 적법성 게이트](USER-GUIDE.md#package-legitimacy-gate-v1421)를 참조하세요. ```bash -/gsd-plan-phase 1 # 페이즈 1 조사 + 계획 + 검증 -/gsd-plan-phase 3 --skip-research # 조사 없이 계획 (익숙한 도메인) -/gsd-plan-phase --auto # 비대화형 계획 수립 +/gsd-plan-phase 1 # 단계 1 리서치 + 계획 + 검증 +/gsd-plan-phase 3 --skip-research # 리서치 없이 계획 (친숙한 도메인) +/gsd-plan-phase --auto # 비대화형 계획 수립 +/gsd-plan-phase 2 --validate # 계획 전 상태 검증 +/gsd-plan-phase 1 --bounce # 계획 + 외부 바운스 검증 +/gsd-plan-phase 2 --ingest docs/adr/0010.md # 컨텍스트 합성을 위한 ADR 익스프레스 경로 +/gsd-plan-phase 2 --ingest 'docs/adr/00*.md' --ingest-format auto +/gsd-plan-phase --research-phase 4 # 단계 4만 리서치 (RESEARCH.md 있으면 프롬프트) +/gsd-plan-phase --research-phase 4 --view # 기존 RESEARCH.md 출력, 생성 없음 +/gsd-plan-phase --research-phase 4 --research # 강제 리서치 새로 고침, 프롬프트 없음 +/gsd-plan-phase 1 --mvp # 단계 1의 수직 슬라이스 계획 +/gsd-plan-phase 1 --mvp --tdd # 수직 슬라이스 + 동작 추가 작업당 실패 테스트 +``` + +--- + +### `/gsd-plan-review-convergence` + +크로스 AI 계획 수렴 루프 — HIGH 우려사항이 없어질 때까지 리뷰 피드백으로 재계획. `plan-phase → review → replan → re-review` 사이클을 실행합니다(기본 최대 3 사이클). 계획 및 리뷰를 위한 격리된 에이전트를 생성하고, 오케스트레이터가 루프 제어, HIGH 우려사항 카운팅, 정체 감지, 에스컬레이션을 처리합니다. + +| 인수 / 플래그 | 필수 | 설명 | +|-----------------|----------|-------------| +| `N` | **예** | 계획 및 리뷰할 단계 번호 | +| `--codex` / `--gemini` / `--claude` / `--opencode` | 아니요 | 단일 리뷰어 선택 | +| `--all` | 아니요 | 구성된 모든 리뷰어를 병렬로 실행 | +| `--max-cycles N` | 아니요 | 사이클 상한 재정의 (기본값 3) | + +**종료 동작:** HIGH 카운트가 0이 되면 루프 종료. 사이클 간 HIGH 카운트가 감소하지 않을 때 정체 감지 경고. `--max-cycles`에 도달해도 HIGH 우려사항이 남아 있으면 에스컬레이션 게이트가 계속 진행하거나 수동 리뷰를 요청합니다. + +```bash +/gsd-plan-review-convergence 3 # 기본 리뷰어, 3 사이클 +/gsd-plan-review-convergence 3 --codex # Codex 전용 리뷰 +/gsd-plan-review-convergence 3 --all --max-cycles 5 +``` + +--- + +### `/gsd-ultraplan-phase` + +**[BETA]** 계획 단계를 Claude Code의 ultraplan 클라우드로 오프로드; 브라우저에서 리뷰하고 가져오기. 계획이 원격으로 작성되는 동안 터미널은 자유롭게 유지됩니다; 브라우저에서 인라인 댓글을 리뷰한 후 `/gsd-import`를 통해 최종 계획을 `.planning/`으로 가져옵니다. + +| 플래그 | 필수 | 설명 | +|------|----------|-------------| +| `N` | **예** | 원격으로 계획할 단계 번호 | + +**격리:** 업스트림 ultraplan 변경이 핵심 계획 파이프라인에 영향을 미치지 않도록 `/gsd-plan-phase`와 의도적으로 분리됩니다. + +```bash +/gsd-ultraplan-phase 4 # 단계 4의 계획을 오프로드 ``` --- ### `/gsd-execute-phase` -페이즈의 모든 계획을 웨이브 기반 병렬화로 실행하거나 특정 웨이브만 실행합니다. +웨이브 기반 병렬화로 단계의 모든 계획을 실행하거나 특정 웨이브만 실행합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | **예** | 실행할 페이즈 번호 | -| `--wave N` | 아니오 | 페이즈 내 Wave `N`만 실행합니다 | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | **예** | 실행할 단계 번호 | +| `--wave N` | 아니요 | 단계에서 웨이브 `N`만 실행 | +| `--validate` | 아니요 | 실행 시작 전 상태 검증 실행 | +| `--cross-ai` | 아니요 | 외부 AI CLI에 실행 위임 (`workflow.cross_ai_command` 사용) | +| `--no-cross-ai` | 아니요 | 설정에서 크로스 AI가 활성화되어 있어도 로컬 실행 강제 | -**사전 조건:** 페이즈에 PLAN.md 파일이 있어야 합니다. -**생성 파일:** 계획별 `{phase}-{N}-SUMMARY.md`, git 커밋, 페이즈가 완전히 완료되면 `{phase}-VERIFICATION.md` +**전제 조건:** 단계에 PLAN.md 파일 존재 +**생성 결과:** 계획당 `{phase}-{N}-SUMMARY.md`, git 커밋, 단계가 완전히 완료되면 `{phase}-VERIFICATION.md` + +**패키지 설치 실패 (v1.42.1):** 계획의 설치 단계가 실패하면 실행자는 `checkpoint:human-verify`를 표시하고 중지합니다. 비슷한 이름의 대안을 자동으로 설치하지 않습니다. 이는 의도적인 동작입니다 — 패키지 이름을 자동으로 대체하는 것은 슬로프스쿼팅이 확산되는 방식이기 때문입니다. 레지스트리 페이지에서 패키지를 확인한 후 체크포인트에 응답하세요. ```bash -/gsd-execute-phase 1 # 페이즈 1 실행 -/gsd-execute-phase 1 --wave 2 # Wave 2만 실행 +/gsd-execute-phase 1 # 단계 1 실행 +/gsd-execute-phase 1 --wave 2 # 웨이브 2만 실행 +/gsd-execute-phase 1 --validate # 실행 전 상태 검증 +/gsd-execute-phase 2 --cross-ai # 단계 2를 외부 AI CLI에 위임 ``` --- ### `/gsd-verify-work` -자동 진단을 포함한 사용자 인수 테스트(UAT)를 수행합니다. +자동 진단이 포함된 사용자 인수 테스트. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 (기본값: 마지막 실행된 페이즈) | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | 아니요 | 단계 번호 (기본값: 마지막 실행 단계) | -**사전 조건:** 페이즈가 실행되어 있어야 합니다. -**생성 파일:** `{phase}-UAT.md`, 문제 발견 시 수정 계획 +**전제 조건:** 단계가 실행됨 +**생성 결과:** `{phase}-UAT.md`, 문제 발견 시 수정 계획 + +브라우저 기반 UAT의 경우 구성된 브라우저 MCP 서버를 사용하세요. 현재 Open GSD 컴패니언은 `gsd-browser`(`gsd-browser mcp`)이며, 결정론적 탐색, 버전 관리된 참조, 어설션, 스크린샷, 시각적 비교, 녹화, 사용자 인수 기능을 제공합니다. 이미 구성되어 있는 레거시 Playwright MCP 서버도 계속 사용할 수 있습니다. ```bash -/gsd-verify-work 1 # 페이즈 1 UAT +/gsd-verify-work 1 # 단계 1의 UAT ``` --- -### `/gsd-progress --next` - -다음 논리적 워크플로우 단계로 자동으로 이동합니다. 프로젝트 상태를 읽고 적절한 명령어를 실행합니다. - -**사전 조건:** `.planning/` 디렉터리가 존재해야 합니다. -**동작 방식.** -- 프로젝트 없음 → `/gsd-new-project` 제안 -- 페이즈 토론 필요 → `/gsd-discuss-phase` 실행 -- 페이즈 계획 필요 → `/gsd-plan-phase` 실행 -- 페이즈 실행 필요 → `/gsd-execute-phase` 실행 -- 페이즈 검증 필요 → `/gsd-verify-work` 실행 -- 모든 페이즈 완료 → `/gsd-complete-milestone` 제안 - -```bash -/gsd-progress --next # 다음 단계 자동 감지 및 실행 -``` - ---- - -### `/gsd-pause-work --report` - -작업 요약, 결과, 예상 리소스 사용량을 포함한 세션 보고서를 생성합니다. - -**사전 조건:** 최근 작업이 있는 활성 프로젝트 -**생성 파일:** `.planning/reports/SESSION_REPORT.md` - -```bash -/gsd-pause-work --report # 세션 종료 후 요약 생성 -``` - -**보고서 포함 내용.** -- 수행된 작업 (커밋, 실행된 계획, 진행된 페이즈) -- 결과 및 산출물 -- 블로커 및 결정 사항 -- 예상 토큰/비용 사용량 -- 다음 단계 권장사항 - --- ### `/gsd-ship` -완료된 페이즈 작업으로부터 자동 생성된 본문이 포함된 PR을 만듭니다. +완성된 단계 작업으로부터 자동 생성된 본문으로 PR을 생성합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 또는 마일스톤 버전 (예: `4` 또는 `v1.0`) | -| `--draft` | 아니오 | 초안 PR로 생성합니다 | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | 아니요 | 단계 번호 또는 마일스톤 버전 (예: `4` 또는 `v1.0`) | +| `--draft` | 아니요 | 초안 PR로 생성 | -**사전 조건:** 페이즈 검증 완료 (`/gsd-verify-work` 통과), `gh` CLI 설치 및 인증 -**생성 파일:** 계획 아티팩트 기반의 풍부한 본문이 포함된 GitHub PR, STATE.md 업데이트 +**전제 조건:** 단계 검증 완료 (`/gsd-verify-work` 통과), `gh` CLI 설치 및 인증됨 +**생성 결과:** 계획 아티팩트로부터 풍부한 본문이 포함된 GitHub PR, STATE.md 업데이트 ```bash -/gsd-ship 4 # 페이즈 4 출시 -/gsd-ship 4 --draft # 초안 PR로 출시 +/gsd-ship 4 # 단계 4 배포 +/gsd-ship 4 --draft # 초안 PR로 배포 ``` -**PR 본문 포함 내용.** -- ROADMAP.md의 페이즈 목표 +**PR 본문 포함 내용:** +- ROADMAP.md의 단계 목표 - SUMMARY.md 파일의 변경사항 요약 -- 처리된 요구사항 (REQ-ID) +- 반영된 요구사항 (REQ-ID) - 검증 상태 -- 핵심 결정사항 +- 주요 결정 사항 +- `ship.pr_body_sections`에서 선택적으로 구성된 PRD 스타일 섹션 + +커스텀 PR 본문 섹션에 대한 온보딩, 예시, 검증 규칙은 [Custom PR Body Sections](../ship-pr-body-sections.md)를 참조하세요. --- ### `/gsd-ui-review` -구현된 프론트엔드의 6개 기둥 기반 시각적 감사를 소급하여 수행합니다. +구현된 프론트엔드의 소급 6개 기둥 시각적 감사. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 (기본값: 마지막 실행된 페이즈) | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | 아니요 | 단계 번호 (기본값: 마지막 실행 단계) | -**사전 조건:** 프론트엔드 코드가 있는 프로젝트 (독립 실행 가능, GSD 프로젝트 불필요) -**생성 파일:** `{phase}-UI-REVIEW.md`, `.planning/ui-reviews/`에 스크린샷 +**전제 조건:** 프로젝트에 프론트엔드 코드 포함 (독립형으로 작동, GSD 프로젝트 불필요) +**생성 결과:** `{phase}-UI-REVIEW.md`, `.planning/ui-reviews/`의 스크린샷 + +더 풍부한 시각적 증거를 위해 `gsd-browser` 또는 다른 브라우저 MCP 서버와 함께 사용하면 감사에서 스크린샷, 상태, 콘솔/네트워크 컨텍스트, 재현 가능한 상호작용 단계를 캡처할 수 있습니다. ```bash -/gsd-ui-review # 현재 페이즈 감사 -/gsd-ui-review 3 # 페이즈 3 감사 +/gsd-ui-review # 현재 단계 감사 +/gsd-ui-review 3 # 단계 3 감사 ``` --- ### `/gsd-audit-uat` -모든 미완료 UAT 및 검증 항목에 대한 교차 페이즈 감사를 수행합니다. +모든 미해결 UAT 및 검증 항목의 크로스 단계 감사. -**사전 조건:** UAT 또는 검증이 포함된 페이즈가 하나 이상 실행되어 있어야 합니다. -**생성 파일:** 사람이 직접 수행하는 테스트 계획이 포함된 분류된 감사 보고서 +**전제 조건:** 최소 한 단계가 UAT 또는 검증과 함께 실행됨 +**생성 결과:** 사람 테스트 계획이 포함된 분류된 감사 보고서 ```bash /gsd-audit-uat @@ -298,8 +344,8 @@ 마일스톤이 완료 정의를 충족했는지 검증합니다. -**사전 조건:** 모든 페이즈가 실행되어 있어야 합니다. -**생성 파일:** 갭 분석이 포함된 감사 보고서 +**전제 조건:** 모든 단계 실행됨 +**생성 결과:** 갭 분석이 포함된 감사 보고서 ```bash /gsd-audit-milestone @@ -309,10 +355,10 @@ ### `/gsd-complete-milestone` -마일스톤을 아카이브하고 릴리스 태그를 생성합니다. +마일스톤 아카이브, 릴리스 태그 생성. -**사전 조건:** 마일스톤 감사 완료 권장 -**생성 파일:** `MILESTONES.md` 항목, git 태그 +**전제 조건:** 마일스톤 감사 완료 (권장) +**생성 결과:** `MILESTONES.md` 항목, git 태그 ```bash /gsd-complete-milestone @@ -322,21 +368,21 @@ ### `/gsd-milestone-summary` -팀 온보딩 및 리뷰를 위해 마일스톤 아티팩트로부터 포괄적인 프로젝트 요약을 생성합니다. +팀 온보딩 및 리뷰를 위한 마일스톤 아티팩트로부터 포괄적인 프로젝트 요약을 생성합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `version` | 아니오 | 마일스톤 버전 (기본값: 현재/최신 마일스톤) | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `version` | 아니요 | 마일스톤 버전 (기본값: 현재/최신 마일스톤) | -**사전 조건:** 완료되었거나 진행 중인 마일스톤이 하나 이상 있어야 합니다. -**생성 파일:** `.planning/reports/MILESTONE_SUMMARY-v{version}.md` +**전제 조건:** 최소 하나의 완료 또는 진행 중인 마일스톤 +**생성 결과:** `.planning/reports/MILESTONE_SUMMARY-v{version}.md` -**요약 포함 내용.** -- 개요, 아키텍처 결정사항, 페이즈별 분석 -- 핵심 결정사항 및 트레이드오프 -- 요구사항 충족 현황 -- 기술 부채 및 지연 항목 -- 신규 팀원을 위한 시작 가이드 +**요약 포함 내용:** +- 개요, 아키텍처 결정, 단계별 분석 +- 주요 결정 사항 및 트레이드오프 +- 요구사항 커버리지 +- 기술 부채 및 연기된 항목 +- 새 팀원을 위한 시작 가이드 - 생성 후 대화형 Q&A 제공 ```bash @@ -350,91 +396,87 @@ 다음 버전 사이클을 시작합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `name` | 아니오 | 마일스톤 이름 | -| `--reset-phase-numbers` | 아니오 | 새 마일스톤을 Phase 1부터 시작하고 로드맵 작업 전에 기존 페이즈 디렉터리를 아카이브합니다 | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `name` | 아니요 | 마일스톤 이름 | +| `--reset-phase-numbers` | 아니요 | 새 마일스톤을 단계 1부터 시작하고 로드맵 작성 전에 이전 단계 디렉토리 아카이브 | -**사전 조건:** 이전 마일스톤이 완료되어 있어야 합니다. -**생성 파일:** 업데이트된 `PROJECT.md`, 새 `REQUIREMENTS.md`, 새 `ROADMAP.md` +**전제 조건:** 이전 마일스톤 완료 +**생성 결과:** 업데이트된 `PROJECT.md`, 새 `REQUIREMENTS.md`, 새 `ROADMAP.md` ```bash -/gsd-new-milestone # 대화형 모드 -/gsd-new-milestone "v2.0 Mobile" # 이름이 지정된 마일스톤 +/gsd-new-milestone # 대화형 +/gsd-new-milestone "v2.0 Mobile" # 이름 있는 마일스톤 /gsd-new-milestone --reset-phase-numbers "v2.0 Mobile" # 마일스톤 번호를 1부터 재시작 ``` --- -## 페이즈 관리 명령어 +## 단계 관리 명령어 ### `/gsd-phase` -로드맵에 새 페이즈를 추가합니다. +ROADMAP.md의 단계에 대한 CRUD — 단일 통합 명령어로 단계 추가, 삽입, 삭제 또는 편집. + +| 플래그 | 설명 | +|------|-------------| +| (없음) | 현재 마일스톤 끝에 새 정수 단계 추가 | +| `--insert ` | 단계 N 다음에 소수 단계(예: 3.1)로 긴급 작업 삽입 | +| `--remove ` | 향후 단계 삭제 및 이후 단계 번호 재정렬 | +| `--edit ` | 기존 단계의 모든 필드를 인플레이스로 편집 | +| `--force` | 진행 중이거나 완료된 단계 편집 허용 (`--edit`와 함께 사용) | + +**전제 조건:** `.planning/ROADMAP.md` 존재 +**생성 결과:** 업데이트된 ROADMAP.md ```bash -/gsd-phase # 대화형 — 페이즈를 설명합니다 +/gsd-phase "Add authentication system" # 설명과 함께 새 단계 추가 +/gsd-phase --insert 3 "Fix auth race condition" # 단계 3과 4 사이에 삽입 → 3.1 생성 +/gsd-phase --remove 7 # 단계 7 삭제, 8→7, 9→8 등으로 번호 재정렬 +/gsd-phase --edit 5 # 단계 5의 모든 필드 편집 +/gsd-phase --edit 5 --force # 진행 중이거나 완료된 경우에도 단계 5 편집 ``` -### `/gsd-phase --insert` +--- -소수점 번호 체계를 사용하여 페이즈 사이에 긴급 작업을 삽입합니다. +### `/gsd-mvp-phase` -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 이 페이즈 번호 다음에 삽입합니다 | +단계에 대한 안내형 MVP 계획 — 사용자 스토리를 입력받고, SPIDR 분할 확인을 실행하고, ROADMAP.md에 `**Mode:** mvp`를 작성한 후 `/gsd-plan-phase`에 위임합니다 (로드맵 필드를 통해 MVP 모드를 자동 감지). + +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | **예** | MVP 모드로 전환할 단계 번호 (정수 또는 `2.1`과 같은 소수) | + +| 플래그 | 설명 | +|------|-------------| +| `--force` | `in_progress` 또는 `completed` 단계 전환 허용 | + +**전제 조건:** 단계가 ROADMAP.md에 이미 존재해야 합니다 (`/gsd-new-project`, `/gsd-phase`, 또는 `/gsd-phase --insert`를 통해 생성). 이 명령어는 새 단계를 생성하지 않습니다 — 기존 단계를 전환합니다. + +**동작:** 구조화된 사용자 스토리를 수집하고, 형식을 검증하고, SPIDR 분할 확인을 실행하고, 단계의 ROADMAP.md 섹션에 `**Goal:**`과 `**Mode:** mvp`를 작성한 후 `/gsd-plan-phase `에 위임합니다. 안내는 [MVP 단계 계획 방법](USER-GUIDE.md#mvp-phase-planning)을 참조하세요. + +**Walking Skeleton:** 이전 단계 요약이 없는 새 프로젝트의 단계 1에서 `--mvp`(또는 `mode: mvp`)가 사용될 때 자동으로 트리거됩니다. 계획자는 `PLAN.md`와 함께 `SKELETON.md`를 생성합니다. + +**생성 결과:** 업데이트된 ROADMAP.md, 그 후 `/gsd-plan-phase`의 모든 아티팩트; Walking Skeleton 모드 실행 시 `SKELETON.md`. ```bash -/gsd-phase --insert 3 # 페이즈 3과 4 사이에 삽입 → 3.1 생성 +/gsd-mvp-phase 1 # 단계 1의 MVP 계획 +/gsd-mvp-phase 2.1 # 소수 단계의 MVP 계획 +/gsd-mvp-phase 3 --force # 진행 중이어도 단계 3 전환 ``` -### `/gsd-phase --remove` - -미래 페이즈를 제거하고 이후 페이즈 번호를 재정렬합니다. - -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 제거할 페이즈 번호 | - -```bash -/gsd-phase --remove 7 # 페이즈 7 제거, 8→7, 9→8 등으로 재번호 -``` - -### `/gsd-discuss-phase --assumptions` - -계획 수립 전 Claude의 예상 접근 방식을 미리 확인합니다. - -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 | - -```bash -/gsd-discuss-phase --assumptions 2 # 페이즈 2 가정 사항 확인 -``` - - -### `/gsd-plan-phase --research-phase` - -심층 에코시스템 조사만 수행합니다 (독립 실행 — 일반적으로 `/gsd-plan-phase`를 사용하세요). - -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 | - -```bash -/gsd-plan-phase --research-phase 4 # 페이즈 4 도메인 조사 -``` +--- ### `/gsd-validate-phase` Nyquist 검증 갭을 소급하여 감사하고 보완합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | 아니요 | 단계 번호 | ```bash -/gsd-validate-phase 2 # 페이즈 2 테스트 커버리지 감사 +/gsd-validate-phase 2 # 단계 2의 테스트 커버리지 감사 ``` --- @@ -443,184 +485,280 @@ Nyquist 검증 갭을 소급하여 감사하고 보완합니다. ### `/gsd-progress` -상태와 다음 단계를 표시합니다. +상태, 다음 단계를 표시하고 자동으로 다음 논리적 워크플로 단계로 진행합니다. 프로젝트 상태를 읽고 적절한 조치를 결정합니다. + +| 플래그 | 설명 | +|------|-------------| +| `--next` | 수동 경로 선택 없이 다음 논리적 워크플로 단계로 자동 진행 | +| `--do "task description"` | 자유 형식 의도를 분석하고 가장 적합한 GSD 명령어로 디스패치 | +| `--forensic` | 표준 보고서 후 6개 검사 무결성 감사 추가 (STATE 일관성, 고아 핸드오프, 연기된 범위 드리프트, 메모리 플래그 보류 작업, 블로킹 할일, 커밋되지 않은 코드) | + +**자동 라우팅 동작 (`--next`):** +- 프로젝트 없음 → `/gsd-new-project` 제안 +- 단계 논의 필요 → `/gsd-discuss-phase` 실행 +- 단계 계획 필요 → `/gsd-plan-phase` 실행 +- 단계 실행 필요 → `/gsd-execute-phase` 실행 +- 단계 검증 필요 → `/gsd-verify-work` 실행 +- 모든 단계 완료 → `/gsd-complete-milestone` 제안 ```bash -/gsd-progress # "지금 어디 있나? 다음은 무엇인가?" +/gsd-progress # "현재 어디에 있나? 다음은?" 자동 라우팅 포함 +/gsd-progress --next # 자동으로 다음 단계로 진행 +/gsd-progress --do "fix the auth bug" # 자유 형식 의도를 최적의 GSD 명령어로 디스패치 +/gsd-progress --forensic # 표준 보고서 + 무결성 감사 ``` ### `/gsd-resume-work` -마지막 세션의 전체 컨텍스트를 복원합니다. +마지막 세션에서 전체 컨텍스트를 복원합니다. ```bash -/gsd-resume-work # 컨텍스트 초기화 또는 새 세션 후 실행 +/gsd-resume-work # 컨텍스트 재설정 또는 새 세션 후 ``` ### `/gsd-pause-work` -페이즈 중간에 중단할 때 컨텍스트 핸드오프를 저장합니다. +단계 도중 중단할 때 컨텍스트 핸드오프를 저장합니다. + +| 플래그 | 설명 | +|------|-------------| +| `--report` | 커밋, 파일 변경, 단계 진행 상황을 캡처한 세션 후 요약을 `.planning/reports/`에 생성 | ```bash /gsd-pause-work # continue-here.md 생성 +/gsd-pause-work --report # continue-here.md + 세션 보고서 생성 ``` ### `/gsd-manager` -하나의 터미널에서 여러 페이즈를 관리하는 대화형 명령 센터입니다. +하나의 터미널에서 여러 단계를 관리하기 위한 대화형 명령 센터. -**사전 조건:** `.planning/ROADMAP.md`가 존재해야 합니다. -**동작 방식.** -- 시각적 상태 표시기가 포함된 모든 페이즈 대시보드 -- 의존성과 진행 상황에 따른 최적 다음 작업 추천 -- 작업 디스패치: discuss는 인라인으로 실행되고 plan/execute는 백그라운드 에이전트로 실행됩니다 -- 하나의 터미널에서 여러 페이즈를 병렬로 처리하는 파워 유저를 위해 설계되었습니다 +**전제 조건:** `.planning/ROADMAP.md` 존재 +**동작:** +- 시각적 상태 표시기와 함께 모든 단계의 대시보드 +- 의존성과 진행 상황을 기반으로 최적의 다음 조치 추천 +- 작업 디스패치: discuss는 인라인으로 실행, plan/execute는 백그라운드 에이전트로 실행 +- 하나의 터미널에서 단계 간 작업을 병렬화하는 파워 유저를 위해 설계 +- `manager.flags` 설정을 통한 단계별 패스스루 플래그 지원 ([설정](CONFIGURATION.md#manager-passthrough-flags) 참조) ```bash /gsd-manager # 명령 센터 대시보드 열기 +/gsd-manager --analyze-deps # 병렬 실행 전 ROADMAP 단계의 의존성 관계 스캔 ``` ---- +**체크포인트 하트비트 (#2410):** -### `/gsd-manager --analyze-deps` +백그라운드 `execute-phase` 실행은 모든 웨이브 및 계획 +경계에서 `[checkpoint]` 마커를 내보내므로 Claude API SSE 스트림이 +다중 계획 단계에서 `Stream idle timeout - partial response received`를 트리거할 만큼 오래 유휴 상태가 되지 않습니다. 형식은 다음과 같습니다: -페이즈 의존성을 감지하고 ROADMAP.md에 `Depends on` 항목을 제안합니다. (v1.32) +``` +[checkpoint] phase {N} wave {W}/{M} starting, {count} plan(s), {P}/{Q} plans done +[checkpoint] phase {N} wave {W}/{M} plan {plan_id} starting ({P}/{Q} plans done) +[checkpoint] phase {N} wave {W}/{M} plan {plan_id} complete ({P}/{Q} plans done) +[checkpoint] phase {N} wave {W}/{M} complete, {P}/{Q} plans done ({ok}/{count} ok) +``` -**사전 조건:** `.planning/ROADMAP.md`가 존재해야 합니다. -**감지 방법:** 파일 겹침, 의미적 의존성(API/스키마 생산자-소비자), 데이터 흐름 의존성 -**동작 방식:** 의존성 제안 테이블을 표시하고 사용자 확인 후 ROADMAP.md의 `Depends on` 필드를 업데이트합니다. +백그라운드 단계가 도중에 실패하면 `[checkpoint]`에 대해 트랜스크립트를 grep하여 +마지막으로 확인된 경계를 확인하세요. 관리자의 백그라운드 완료 핸들러는 +에이전트가 오류로 종료될 때 이 마커를 사용하여 부분 진행 상황을 보고합니다. -```bash -/gsd-manager --analyze-deps # 의존성 분석 및 제안 +**관리자 패스스루 플래그:** + +`.planning/config.json`의 `manager.flags`에서 단계별 플래그를 구성합니다. 이 플래그는 각 디스패치된 명령어에 추가됩니다: + +```json +{ + "manager": { + "flags": { + "discuss": "--auto", + "plan": "--skip-research", + "execute": "--validate" + } + } +} ``` --- ### `/gsd-help` -모든 명령어와 사용 가이드를 표시합니다. +요청한 수준에서 GSD 명령어를 표시합니다. 기본값은 화면 하나에 맞습니다; `--full`은 전체 참조; ``은 특정 섹션으로 바로 이동합니다. ```bash -/gsd-help # 빠른 레퍼런스 +/gsd-help # 한 페이지 개요 (기본값) +/gsd-help --brief # 주요 명령어의 ~10줄 요약 +/gsd-help --full # 전체 참조 (모든 명령어, 모든 플래그) +/gsd-help # 하나의 섹션만 (예: /gsd-help debug) +/gsd-help --brief # 압축된 범위 지정 조회 — 시그니처 + 한 줄 요약 ``` +전체 별칭 테이블은 `get-shit-done/workflows/help/modes/topic.md`를 참조하세요. 알 수 없는 주제는 인식된 목록을 출력합니다. + --- ## 유틸리티 명령어 +### `/gsd-explore` + +소크라테스식 아이디어 발상 세션 — 탐색 질문을 통해 아이디어를 안내하고, 선택적으로 리서치를 생성한 후 적절한 GSD 아티팩트(노트, 할일, 시드, 리서치 질문, 요구사항 또는 새 단계)로 출력을 라우팅합니다. + +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `topic` | 아니요 | 탐색할 주제 (예: `/gsd-explore authentication strategy`) | + +```bash +/gsd-explore # 개방형 아이디어 발상 세션 +/gsd-explore authentication strategy # 특정 주제 탐색 +``` + +--- + +### `/gsd-undo` + +안전한 git 되돌리기 — 의존성 확인 및 확인 게이트를 통해 단계 매니페스트를 사용하여 GSD 단계 또는 계획 커밋 롤백. + +| 플래그 | 필수 | 설명 | +|------|----------|-------------| +| `--last N` | (세 가지 중 하나 필수) | 대화형 선택을 위한 최근 GSD 커밋 표시 | +| `--phase NN` | (세 가지 중 하나 필수) | 단계의 모든 커밋 되돌리기 | +| `--plan NN-MM` | (세 가지 중 하나 필수) | 특정 계획의 모든 커밋 되돌리기 | + +**안전성:** 되돌리기 전 의존하는 단계/계획 확인; 항상 확인 게이트 표시. + +```bash +/gsd-undo --last 5 # 최근 GSD 커밋 5개에서 선택 +/gsd-undo --phase 03 # 단계 3의 모든 커밋 되돌리기 +/gsd-undo --plan 03-02 # 단계 3의 계획 02 커밋 되돌리기 +``` + +--- + +### `/gsd-import` + +외부 계획 파일을 GSD 계획 시스템에 수집하고, 작성 전에 `PROJECT.md` 결정과의 충돌을 감지합니다. + +| 플래그 | 필수 | 설명 | +|------|----------|--------------| +| `--from ` | 예 (`--from-gsd2`와 중 하나) | 가져올 외부 계획 파일 경로 | +| `--from-gsd2` | 예 (`--from`과 중 하나) | GSD-2 (`.gsd/`) 프로젝트를 GSD v1 (`.planning/`) 형식으로 역 마이그레이션 | +| `--path ` | 아니요 | `--from-gsd2` 사용 시: GSD-2 프로젝트 디렉토리 경로 (기본값: 현재 디렉토리) | + +**처리:** 충돌 감지 → 해결 프롬프트 → GSD PLAN.md로 작성 → `gsd-plan-checker`를 통한 검증 + +```bash +/gsd-import --from /tmp/team-plan.md # 외부 계획 가져오기 및 검증 +/gsd-import --from-gsd2 # GSD-2에서 v1으로 마이그레이션 (현재 디렉토리) +/gsd-import --from-gsd2 --path ~/old-project # 다른 경로에서 마이그레이션 +``` + +--- + +### `/gsd-ingest-docs` + +리포지토리의 기존 ADR, PRD, SPEC, 문서에서 .planning/ 설정을 부트스트랩하거나 병합합니다. 병렬 분류(`gsd-doc-classifier`)와 우선순위 규칙 및 순환 감지를 통한 합성(`gsd-doc-synthesizer`)을 실행합니다. 세 가지 버킷 충돌 보고서(`INGEST-CONFLICTS.md`: 자동 해결됨, 경쟁 변형, 미해결 차단자)를 생성하고 LOCKED 대 LOCKED ADR 모순에서 하드 블록합니다. + +| 인수 / 플래그 | 필수 | 설명 | +|-----------------|----------|-------------| +| `path` | 아니요 | 스캔할 대상 디렉토리 (기본값: 리포지토리 루트) | +| `--mode new\|merge` | 아니요 | 자동 감지 재정의 (기본값: `.planning/` 없으면 `new`, 있으면 `merge`) | +| `--manifest ` | 아니요 | 문서당 `{path, type, precedence?}`를 나열하는 YAML 파일; 휴리스틱 분류 재정의 | +| `--resolve auto` | 아니요 | 충돌 해결 모드 (v1: `auto`만; `interactive`는 예약됨) | + +**제한:** v1은 호출당 최대 50개 문서. 공유 충돌 감지 계약을 `references/doc-conflict-engine.md`로 추출하며, `/gsd-import`도 이를 사용합니다. + +```bash +/gsd-ingest-docs # 리포지토리 루트 스캔, 모드 자동 감지 +/gsd-ingest-docs docs/ # docs/ 아래만 수집 +/gsd-ingest-docs --manifest ingest.yaml # 명시적 우선순위 매니페스트 +``` + +--- + ### `/gsd-quick` -GSD 보증을 갖춘 임시 작업을 실행합니다. +GSD 보장을 통해 애드혹 작업을 실행합니다. | 플래그 | 설명 | -|--------|------| -| `--full` | 계획 검사 (2회 반복) + 실행 후 검증 활성화 | -| `--discuss` | 경량 사전 계획 토론 | -| `--research` | 계획 전 집중 조사자 스폰 | +|------|-------------| +| `--full` | 완전한 품질 파이프라인 활성화 — 논의 + 리서치 + 계획 확인 + 검증 | +| `--validate` | 계획 확인(최대 2회 반복) + 실행 후 검증만; 논의 또는 리서치 없음 | +| `--discuss` | 가벼운 사전 계획 논의 | +| `--research` | 계획 전 집중 리서처 생성 | -플래그는 조합하여 사용할 수 있습니다. +세분화된 플래그는 조합 가능합니다: `--discuss --research --validate`는 `--full`과 동일합니다. + +| 서브커맨드 | 설명 | +|------------|-------------| +| `list` | 상태와 함께 모든 빠른 작업 나열 | +| `status ` | 특정 빠른 작업의 상태 표시 | +| `resume ` | 슬러그로 특정 빠른 작업 재개 | ```bash /gsd-quick # 기본 빠른 작업 -/gsd-quick --discuss --research # 토론 + 조사 + 계획 -/gsd-quick --full # 계획 검사 및 검증 포함 -/gsd-quick --discuss --research --full # 모든 선택적 단계 포함 +/gsd-quick --discuss --research # 논의 + 리서치 + 계획 +/gsd-quick --validate # 계획 확인 + 검증만 +/gsd-quick --full # 완전한 품질 파이프라인 +/gsd-quick list # 모든 빠른 작업 나열 +/gsd-quick status my-task-slug # 빠른 작업 상태 표시 +/gsd-quick resume my-task-slug # 빠른 작업 재개 ``` ### `/gsd-autonomous` -남은 모든 페이즈를 자율적으로 실행합니다. +나머지 모든 단계를 자율적으로 실행합니다. | 플래그 | 설명 | -|--------|------| -| `--from N` | 특정 페이즈 번호부터 시작합니다 | -| `--to N` | 페이즈 N 완료 후 자율 실행을 중단합니다 (v1.32) | -| `--only N` | 지정된 단일 페이즈만 자율적으로 실행합니다 (v1.31) | -| `--interactive` | 각 페이즈의 discuss 단계에서 사용자 확인을 요청합니다 | +|------|-------------| +| `--from N` | 특정 단계 번호부터 시작 | +| `--to N` | 특정 단계 번호 완료 후 중지 | +| `--interactive` | 사용자 입력과 함께 간소화된 컨텍스트 | ```bash -/gsd-autonomous # 남은 모든 페이즈 실행 -/gsd-autonomous --from 3 # 페이즈 3부터 시작 -/gsd-autonomous --to 5 # 페이즈 5까지만 실행 -/gsd-autonomous --from 3 --to 5 # 페이즈 3~5 범위 실행 -/gsd-autonomous --only 4 # 페이즈 4만 자율 실행 -``` - -### `/gsd-fast` - -자유 형식 텍스트를 적절한 GSD 명령어로 라우팅합니다. - -```bash -/gsd-fast # 원하는 작업을 설명합니다 -``` - -### `/gsd-capture` - -마찰 없는 아이디어 캡처 — 노트 추가, 목록 조회, 또는 노트를 할 일로 승격합니다. - -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `text` | 아니오 | 캡처할 노트 텍스트 (기본값: 추가 모드) | -| `list` | 아니오 | 프로젝트 및 전역 범위의 모든 노트 목록 | -| `promote N` | 아니오 | N번 노트를 구조화된 할 일로 변환 | - -| 플래그 | 설명 | -|--------|------| -| `--global` | 노트 작업에 전역 범위 사용 | - -```bash -/gsd-capture "Consider caching strategy for API responses" -/gsd-capture list -/gsd-capture promote 3 +/gsd-autonomous # 나머지 모든 단계 실행 +/gsd-autonomous --from 3 # 단계 3부터 시작 +/gsd-autonomous --to 5 # 단계 5까지 실행 +/gsd-autonomous --from 3 --to 5 # 단계 3부터 5까지 실행 ``` ### `/gsd-debug` -지속적인 상태를 유지하는 체계적인 디버깅을 수행합니다. +지속적인 상태로 체계적인 디버깅. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `description` | 아니오 | 버그 설명 | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `description` | 아니요 | 버그 설명 | | 플래그 | 설명 | -|--------|------| -| `--diagnose` | 수정 없이 조사만 수행하는 진단 전용 모드 (v1.32) | +|------|-------------| +| `--diagnose` | 진단 전용 모드 — 수정 시도 없이 조사 | + +**서브커맨드:** +- `/gsd-debug list` — 상태, 가설, 다음 조치와 함께 모든 활성 디버그 세션 나열 +- `/gsd-debug status ` — 에이전트를 생성하지 않고 세션의 전체 요약(증거 수, 제거 수, 해결책, TDD 체크포인트) 출력 +- `/gsd-debug continue ` — 슬러그로 특정 세션 재개 (현재 포커스 표시 후 계속 에이전트 생성) +- `/gsd-debug [--diagnose] ` — 새 디버그 세션 시작 (기존 동작; `--diagnose`는 수정 적용 없이 근본 원인에서 중지) + +**TDD 모드:** `.planning/config.json`에서 `tdd_mode: true`일 때, 디버그 세션은 수정을 적용하기 전에 실패하는 테스트를 작성하고 검증해야 합니다 (red → green → done). ```bash /gsd-debug "Login button not responding on mobile Safari" -/gsd-debug --diagnose "API returning 500 on /users endpoint" -``` - -### `/gsd-capture` - -나중을 위한 아이디어나 작업을 캡처합니다. - -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `description` | 아니오 | 할 일 설명 | - -```bash -/gsd-capture "Consider adding dark mode support" -``` - -### `/gsd-capture --list` - -보류 중인 할 일 목록을 표시하고 작업할 항목을 선택합니다. - -```bash -/gsd-capture --list +/gsd-debug --diagnose "Intermittent 500 errors on /api/users" +/gsd-debug list +/gsd-debug status auth-token-null +/gsd-debug continue form-submit-500 ``` ### `/gsd-add-tests` -완료된 페이즈에 대한 테스트를 생성합니다. +완료된 단계에 대한 테스트를 생성합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `N` | 아니오 | 페이즈 번호 | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | 아니요 | 단계 번호 | ```bash -/gsd-add-tests 2 # 페이즈 2 테스트 생성 +/gsd-add-tests 2 # 단계 2의 테스트 생성 ``` ### `/gsd-stats` @@ -628,44 +766,50 @@ GSD 보증을 갖춘 임시 작업을 실행합니다. 프로젝트 통계를 표시합니다. ```bash -/gsd-stats # 프로젝트 지표 대시보드 +/gsd-stats # 프로젝트 메트릭 대시보드 ``` ### `/gsd-profile-user` -Claude Code 세션 분석을 통해 8개 차원(커뮤니케이션 스타일, 의사결정 패턴, 디버깅 접근 방식, UX 선호도, 벤더 선택, 불만 유발 요인, 학습 스타일, 설명 깊이)으로 개발자 행동 프로필을 생성합니다. Claude의 응답을 개인화하는 아티팩트를 생성합니다. +8개 차원(커뮤니케이션 스타일, 결정 패턴, 디버깅 접근법, UX 선호도, 벤더 선택, 불만 유발 요인, 학습 스타일, 설명 깊이)에 걸친 Claude Code 세션 분석으로 개발자 행동 프로필을 생성합니다. Claude의 응답을 개인화하는 아티팩트를 생성합니다. | 플래그 | 설명 | -|--------|------| -| `--questionnaire` | 세션 분석 대신 대화형 설문지를 사용합니다 | -| `--refresh` | 세션을 재분석하고 프로필을 재생성합니다 | +|------|-------------| +| `--questionnaire` | 세션 분석 대신 대화형 설문지 사용 | +| `--refresh` | 세션 재분석 및 프로필 재생성 | -**생성 아티팩트.** +**생성 아티팩트:** - `USER-PROFILE.md` — 전체 행동 프로필 -- `CLAUDE.md` 프로필 섹션 — Claude Code에 의해 자동으로 인식됩니다 +- `CLAUDE.md` 프로필 섹션 — Claude Code에 의해 자동 검색 ```bash /gsd-profile-user # 세션 분석 및 프로필 구축 -/gsd-profile-user --questionnaire # 대화형 설문지 대체 방법 -/gsd-profile-user --refresh # 새로운 분석으로 재생성 +/gsd-profile-user --questionnaire # 대화형 설문지 대안 +/gsd-profile-user --refresh # 새 분석에서 재생성 ``` ### `/gsd-health` -`.planning/` 디렉터리의 무결성을 검사합니다. +`.planning/` 디렉토리 무결성을 검증합니다. `--context` 사용 시 컨텍스트 창 +활용 가드를 60% / 70% 임계값에 대해 탐색합니다 (v1.40.0 추가, +[#2792](https://github.com/open-gsd/gsd-core/issues/2792)). | 플래그 | 설명 | -|--------|------| -| `--repair` | 복구 가능한 문제를 자동으로 수정합니다 | +|------|-------------| +| `--repair` | 복구 가능한 문제 자동 수정 | +| `--context` | 컨텍스트 창 활용 탐색; 60%에서 경고, 70%에서 심각 | ```bash -/gsd-health # 무결성 검사 -/gsd-health --repair # 검사 및 수정 +/gsd-health # 무결성 확인 +/gsd-health --repair # 확인 및 수정 +/gsd-health --context # 컨텍스트 활용 트리아지 ``` ### `/gsd-cleanup` -완료된 마일스톤의 누적된 페이즈 디렉터리를 아카이브합니다. +완료된 마일스톤에서 누적된 단계 디렉토리를 아카이브하고 업스트림이 삭제된 로컬 브랜치를 정리합니다. + +**동작:** 아카이브할 단계 디렉토리의 드라이런 요약(`.planning/phases/`에서 `.planning/milestones/v{X.Y}-phases/`로 이동)과 업스트림이 없어진 로컬 브랜치(`git fetch --prune`으로 정리)를 표시합니다. 변경 사항 작성 전 확인이 필요합니다. 현재 체크아웃된 브랜치는 절대 정리되지 않습니다. ```bash /gsd-cleanup @@ -673,30 +817,108 @@ Claude Code 세션 분석을 통해 8개 차원(커뮤니케이션 스타일, --- +## 스파이킹 및 스케칭 명령어 + +### `/gsd-spike` + +구현 방식을 확정하기 전에 2–5개의 집중된 실현 가능성 실험을 실행합니다. 각 실험은 Given/When/Then 프레임으로 실행 가능한 코드를 생성하고 VALIDATED / INVALIDATED / PARTIAL 판정을 반환합니다. + +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `idea` | 아니요 | 조사할 기술적 질문 또는 접근법 | +| `--quick` | 아니요 | 입력 대화 건너뜀; `idea` 텍스트를 직접 사용 | +| `--wrap-up` | 아니요 | 완료된 스파이크 결과를 재사용 가능한 프로젝트 로컬 스킬로 패키징 | + +**생성 결과:** 코드, 결과, README가 포함된 `.planning/spikes/NNN-experiment-name/`; `.planning/spikes/MANIFEST.md` +**`--wrap-up` 생성 결과:** `.claude/skills/spike-findings-[project]/` 스킬 파일 + +```bash +/gsd-spike # 대화형 입력 +/gsd-spike "can we stream LLM tokens through SSE" +/gsd-spike --quick websocket-vs-polling +/gsd-spike --wrap-up # 결과를 재사용 가능한 스킬로 패키징 +``` + +--- + +### `/gsd-sketch` + +구현을 확정하기 전에 일회용 HTML 목업을 통해 디자인 방향을 탐색합니다. 직접 브라우저 비교를 위해 디자인 질문당 2–3개의 변형을 생성합니다. + +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `idea` | 아니요 | 탐색할 UI 디자인 질문 또는 방향 | +| `--quick` | 아니요 | 분위기 입력 건너뜀; `idea` 텍스트를 직접 사용 | +| `--text` | 아니요 | 텍스트 모드 대안 — 대화형 프롬프트를 번호 목록으로 대체 (비 Claude 런타임용) | +| `--wrap-up` | 아니요 | 채택된 스케치 결정을 재사용 가능한 프로젝트 로컬 스킬로 패키징 | + +**생성 결과:** `.planning/sketches/NNN-descriptive-name/index.html` (2–3개의 대화형 변형), `README.md`, 공유 `themes/default.css`; `.planning/sketches/MANIFEST.md` +**`--wrap-up` 생성 결과:** `.claude/skills/sketch-findings-[project]/` 스킬 파일 + +```bash +/gsd-sketch # 대화형 분위기 입력 +/gsd-sketch "dashboard layout" +/gsd-sketch --quick "sidebar navigation" +/gsd-sketch --text "onboarding flow" # 비 Claude 런타임 +/gsd-sketch --wrap-up # 채택된 스케치를 스킬로 패키징 +``` + +--- + ## 진단 명령어 ### `/gsd-forensics` -실패하거나 멈춘 GSD 워크플로우에 대한 사후 조사를 수행합니다. +실패한 GSD 워크플로에 대한 사후 조사 — 무엇이 잘못되었는지 진단합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `description` | 아니오 | 문제 설명 (생략 시 프롬프트로 입력) | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `description` | 아니요 | 문제 설명 (생략 시 프롬프트) | -**사전 조건:** `.planning/` 디렉터리가 존재해야 합니다. -**생성 파일:** `.planning/forensics/report-{timestamp}.md` +**전제 조건:** `.planning/` 디렉토리 존재 +**생성 결과:** `.planning/forensics/report-{timestamp}.md` -**조사 항목.** -- Git 히스토리 분석 (최근 커밋, 멈춤 패턴, 시간 간격) -- 아티팩트 무결성 (완료된 페이즈에 대한 예상 파일) -- STATE.md 이상 및 세션 히스토리 -- 커밋되지 않은 작업, 충돌, 방치된 변경사항 -- 최소 4가지 이상 유형 검사 (멈춤 루프, 누락된 아티팩트, 방치된 작업, 충돌/중단) -- 실행 가능한 발견사항이 있으면 GitHub 이슈 생성 제안 +**조사 범위:** +- Git 기록 분석 (최근 커밋, 정체 패턴, 시간 공백) +- 아티팩트 무결성 (완료된 단계에 예상되는 파일) +- STATE.md 이상 및 세션 기록 +- 커밋되지 않은 작업, 충돌, 포기된 변경사항 +- 최소 4가지 이상 유형 확인 (정체 루프, 누락된 아티팩트, 포기된 작업, 충돌/중단) +- 실행 가능한 결과가 있는 경우 GitHub 이슈 생성 제안 ```bash -/gsd-forensics # 대화형 — 문제 입력 프롬프트 -/gsd-forensics "Phase 3 execution stalled" # 문제 설명과 함께 실행 +/gsd-forensics # 대화형 — 문제에 대한 프롬프트 +/gsd-forensics "Phase 3 execution stalled" # 문제 설명과 함께 +``` + +--- + +### `/gsd-extract-learnings` + +완료된 단계 작업에서 재사용 가능한 패턴, 안티패턴, 아키텍처 결정을 추출합니다. + +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | **예** | 학습 내용을 추출할 단계 번호 | + +| 플래그 | 설명 | +|------|-------------| +| `--all` | 모든 완료된 단계에서 학습 내용 추출 | +| `--format` | 출력 형식: `markdown` (기본값), `json` | + +**전제 조건:** 단계가 실행됨 (SUMMARY.md 파일 존재) +**생성 결과:** `.planning/learnings/{phase}-LEARNINGS.md` + +**추출 내용:** +- 아키텍처 결정 및 근거 +- 잘 작동한 패턴 (향후 단계에서 재사용 가능) +- 발생한 안티패턴과 해결 방법 +- 기술별 인사이트 +- 성능 및 테스트 관찰 + +```bash +/gsd-extract-learnings 3 # 단계 3에서 학습 내용 추출 +/gsd-extract-learnings --all # 모든 완료된 단계에서 추출 ``` --- @@ -705,31 +927,31 @@ Claude Code 세션 분석을 통해 8개 차원(커뮤니케이션 스타일, ### `/gsd-workstreams` -마일스톤의 서로 다른 영역에 대한 동시 작업을 위한 병렬 워크스트림을 관리합니다. +다양한 마일스톤 영역에서 동시 작업을 위한 병렬 워크스트림을 관리합니다. -**서브커맨드.** +**서브커맨드:** | 서브커맨드 | 설명 | -|------------|------| -| `list` | 상태와 함께 모든 워크스트림 목록 (서브커맨드 없을 경우 기본값) | +|------------|-------------| +| `list` | 상태와 함께 모든 워크스트림 나열 (서브커맨드 없을 때 기본값) | | `create ` | 새 워크스트림 생성 | -| `status ` | 특정 워크스트림의 상세 상태 | +| `status ` | 하나의 워크스트림에 대한 상세 상태 | | `switch ` | 활성 워크스트림 설정 | -| `progress` | 모든 워크스트림의 진행 상황 요약 | +| `progress` | 모든 워크스트림에 걸친 진행 요약 | | `complete ` | 완료된 워크스트림 아카이브 | -| `resume ` | 워크스트림의 작업 재개 | +| `resume ` | 워크스트림에서 작업 재개 | -**사전 조건:** 활성 GSD 프로젝트 -**생성 파일:** `.planning/` 하위의 워크스트림 디렉터리, 워크스트림별 상태 추적 +**전제 조건:** 활성 GSD 프로젝트 +**생성 결과:** `.planning/` 아래의 워크스트림 디렉토리, 워크스트림별 상태 추적 ```bash -/gsd-workstreams # 모든 워크스트림 목록 +/gsd-workstreams # 모든 워크스트림 나열 /gsd-workstreams create backend-api # 새 워크스트림 생성 /gsd-workstreams switch backend-api # 활성 워크스트림 설정 -/gsd-workstreams status backend-api # 상세 상태 확인 -/gsd-workstreams progress # 교차 워크스트림 진행 상황 개요 +/gsd-workstreams status backend-api # 상세 상태 +/gsd-workstreams progress # 크로스 워크스트림 진행 개요 /gsd-workstreams complete backend-api # 완료된 워크스트림 아카이브 -/gsd-workstreams resume backend-api # 워크스트림 작업 재개 +/gsd-workstreams resume backend-api # 워크스트림에서 작업 재개 ``` --- @@ -738,23 +960,73 @@ Claude Code 세션 분석을 통해 8개 차원(커뮤니케이션 스타일, ### `/gsd-settings` -워크플로우 토글 및 모델 프로필의 대화형 설정을 합니다. +워크플로 토글과 모델 프로필의 대화형 설정. 질문은 여섯 개의 시각적 섹션으로 그룹화됩니다: + +- **계획** — 리서치, 계획 검사기, 패턴 매퍼, Nyquist, UI 단계, UI 게이트, AI 단계 +- **실행** — 검증기, TDD 모드, 코드 리뷰, 코드 리뷰 깊이 _(조건부 — 코드 리뷰가 켜져 있을 때만)_, UI 리뷰 +- **문서 및 출력** — 커밋 문서, 논의 건너뜀, 워크트리 +- **기능** — Intel, Graphify +- **모델 및 파이프라인** — 모델 프로필, 자동 진행, 분기 +- **기타** — 컨텍스트 경고, 리서치 Q + +모든 응답은 `gsd-tools query config-set`을 통해 해결된 프로젝트 설정 경로(일반 설치의 경우 `.planning/config.json`, 워크스트림이 활성화된 경우 `.planning/workstreams//config.json`)에 병합되며 관련 없는 키는 보존됩니다. 확인 후 사용자는 전체 설정 객체를 `~/.gsd/defaults.json`에 저장할 수 있으므로 향후 `/gsd-new-project` 실행이 동일한 기준으로 시작됩니다. ```bash /gsd-settings # 대화형 설정 ``` -### `/gsd-config --profile` +### `/gsd-config` -프로필을 빠르게 전환합니다. +GSD 설정을 대화형으로 구성합니다 — 워크플로 토글, 고급 노브, 통합, 모델 프로필 — 단일 통합 명령어로. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `profile` | **예** | `quality`, `balanced`, `budget`, 또는 `inherit` | +| 플래그 | 설명 | +|------|-------------| +| (없음) | 일반적인 토글: 모델, 리서치, plan_check, 검증기, 분기 | +| `--advanced` | 파워 유저 노브: 계획 조정, 타임아웃, 브랜치 템플릿, 크로스 AI 실행, 런타임/출력 | +| `--integrations` | 서드파티 API 키, 코드 리뷰 CLI 라우팅, 에이전트 스킬 주입 | +| `--profile ` | 빠른 프로필 전환: `quality`, `balanced`, `budget`, 또는 `inherit` | + +**`--advanced` 섹션:** + +| 섹션 | 키 | +|---------|------| +| 계획 조정 | `workflow.plan_bounce`, `workflow.plan_bounce_passes`, `workflow.plan_bounce_script`, `workflow.subagent_timeout`, `workflow.inline_plan_threshold` | +| 실행 조정 | `workflow.node_repair`, `workflow.node_repair_budget`, `workflow.auto_prune_state` | +| 논의 조정 | `workflow.max_discuss_passes` | +| 크로스 AI 실행 | `workflow.cross_ai_execution`, `workflow.cross_ai_command`, `workflow.cross_ai_timeout` | +| Git 커스터마이징 | `git.base_branch`, `git.phase_branch_template`, `git.milestone_branch_template` | +| 런타임 / 출력 | `response_language`, `context_window`, `search_gitignored`, `graphify.build_timeout` | + +모든 응답은 `gsd-tools query config-set`을 통해 관련 없는 키를 보존하며 병합됩니다. API 키는 모든 출력에서 마스킹됩니다 (`****`). ```bash -/gsd-config --profile budget # 예산 프로필로 전환 -/gsd-config --profile quality # 품질 프로필로 전환 +/gsd-config # 일반적인 대화형 설정 +/gsd-config --advanced # 파워 유저 노브 (6섹션 프롬프트) +/gsd-config --integrations # API 키, 리뷰 CLI 라우팅, 에이전트 스킬 +/gsd-config --profile budget # 예산 프로필로 전환 +/gsd-config --profile quality # 품질 프로필로 전환 +``` + +전체 스키마와 기본값은 [CONFIGURATION.md](CONFIGURATION.md)를 참조하세요. + +### `/gsd-surface` + +재설치 없이 표시되는 스킬 토글 — 프로필 적용, 나열, 또는 클러스터 비활성화. + +| 서브커맨드 | 설명 | +|------------|-------------| +| `list` | 활성화 및 비활성화된 클러스터와 스킬 표시 | +| `status` | `list` + 토큰 비용 요약의 별칭 | +| `profile ` | `baseProfile` 작성 및 스킬 재스테이징 | +| `disable ` | 비활성화 목록에 클러스터 추가 및 재스테이징 | +| `enable ` | 비활성화 목록에서 클러스터 제거 및 재스테이징 | +| `reset` | 표면 델타 삭제; 설치 시 프로필로 복원 | + +```bash +/gsd-surface list # 현재 표면 표시 +/gsd-surface profile standard # 표준 프로필로 전환 +/gsd-surface disable utility # 유틸리티 클러스터 비활성화 +/gsd-surface reset # 설치 시 프로필 복원 ``` --- @@ -763,15 +1035,91 @@ Claude Code 세션 분석을 통해 8개 차원(커뮤니케이션 스타일, ### `/gsd-map-codebase` -병렬 매퍼 에이전트를 사용하여 기존 코드베이스를 분석합니다. +병렬 매퍼 에이전트로 기존 코드베이스를 분석합니다. `--fast`로 빠른 단일 에이전트 스캔을 하거나, `--query`로 기존 인텔을 검색합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `area` | 아니오 | 특정 영역으로 매핑 범위를 제한합니다 | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `area` | 아니요 | 특정 영역으로 매핑 범위 제한 | +| `--fast` | 아니요 | 빠른 단일 포커스 평가 — 4개의 병렬 에이전트 대신 하나의 매퍼 에이전트를 생성 (경량 대안) | +| `--query ` | 아니요 | `.planning/intel/`의 쿼리 가능한 코드베이스 인텔 파일 검색 (`intel.enabled: true` 필요) | + +| 플래그 | 설명 | +|------|-------------| +| `--focus tech\|arch\|quality\|concerns\|tech+arch` | `--fast` 모드의 포커스 영역 (기본값: `tech+arch`) | + +**생성 결과:** `.planning/codebase/` 분석 문서 (전체 모드); `.planning/codebase/`의 대상 문서 (`--fast`); 인텔 쿼리 결과 (`--query`) ```bash -/gsd-map-codebase # 전체 코드베이스 분석 -/gsd-map-codebase auth # 인증 영역에 집중 +/gsd-map-codebase # 전체 코드베이스 분석 (4개 병렬 에이전트) +/gsd-map-codebase auth # auth 영역에 집중 +/gsd-map-codebase --fast # 빠른 기술 + 아키텍처 개요 (1 에이전트) +/gsd-map-codebase --fast --focus quality # 품질 및 코드 건강도만 +/gsd-map-codebase --query authentication # 인텔에서 용어 검색 +``` + +### `/gsd-graphify` + +`.planning/graphs/`에 저장된 프로젝트 지식 그래프를 구축, 쿼리, 검사합니다. `config.json`에서 `graphify.enabled: true`로 옵트인 ([설정 참조](CONFIGURATION.md#graphify-settings) 참조); 비활성화된 경우 명령어가 활성화 힌트를 출력하고 중지합니다. + +| 서브커맨드 | 설명 | +|------------|-------------| +| `build` | 지식 그래프 구축 또는 재구축 (`graphify update .`를 인라인으로 실행하고 `.planning/graphs/` 새로 고침) | +| `query ` | 그래프에서 용어 검색 | +| `status` | 그래프 신선도 및 통계 표시 | +| `diff` | 마지막 빌드 이후의 변경사항 표시 | + +**생성 결과:** `.planning/graphs/` 그래프 아티팩트 (노드, 에지, 스냅샷) + +```bash +/gsd-graphify build # 지식 그래프 구축 또는 재구축 +/gsd-graphify query authentication # 그래프에서 용어 검색 +/gsd-graphify status # 신선도 및 통계 표시 +/gsd-graphify diff # 마지막 빌드 이후의 변경사항 표시 +``` + +**프로그래밍 방식 접근:** `node gsd-tools.cjs graphify ` — [CLI 도구 참조](CLI-TOOLS.md) 참조. + +### `gsd-tools intel api-surface` + +`/gsd-map-codebase`가 구축한 `.planning/intel/api-map.json` 인덱스를 `.planning/intel/`의 사람이 읽을 수 있는 `API-SURFACE.md`로 렌더링합니다. `config.json`에서 `intel.enabled: true`로 게이팅되며; Intel이 비활성화된 경우 명령어가 활성화 힌트를 출력하고 종료합니다. 출력 경로는 항상 `.planning/intel/API-SURFACE.md` — `--out` 또는 `--format` 플래그가 없습니다. `api-map.json`이 없거나 비어 있으면 명령어는 여전히 명시적인 "불완전" 배너와 함께 파일을 작성하므로 소비자가 침묵을 "아무것도 없음"으로 혼동하지 않습니다. + +**생성 결과:** `.planning/intel/API-SURFACE.md` + +```bash +node gsd-tools.cjs intel api-surface # api-map.json → API-SURFACE.md 렌더링 +``` + +`API-SURFACE.md` 출력은 소스 파일별로 그룹화된 내보낸 심볼(함수, 클래스, 데코레이터, 상수)을 서명과 감지된 가시성과 함께 나열합니다. `plan_review.source_grounding_authority`가 `intel`로 설정된 경우 계획 드리프트 가드는 `api-surface` 렌더러를 호출하는 대신 `api-map.json`을 직접 읽습니다. + +--- + +## AI 통합 명령어 + +### `/gsd-ai-integration-phase` + +AI 시스템 구축을 포함하는 단계에 대한 AI-SPEC.md 디자인 계약을 생성합니다. 대화형 결정 매트릭스를 제공하고, 도메인별 장애 모드와 평가 기준을 표시하며, 프레임워크 추천, 구현 지침, 평가 전략이 담긴 `AI-SPEC.md`를 생성합니다. + +**생성 결과:** 단계 디렉토리의 `{phase}-AI-SPEC.md` + +**생성 에이전트:** 3개의 병렬 전문 에이전트: domain-researcher, framework-selector, ai-researcher, eval-planner + +```bash +/gsd-ai-integration-phase # 현재 단계의 마법사 +/gsd-ai-integration-phase 3 # 특정 단계의 마법사 +``` + +--- + +### `/gsd-eval-review` + +실행된 AI 단계의 평가 커버리지를 감사하고 EVAL-REVIEW.md 개선 계획을 생성합니다. `/gsd-ai-integration-phase`가 생성한 `AI-SPEC.md` 평가 계획에 대한 구현을 확인합니다. 각 평가 차원을 COVERED/PARTIAL/MISSING으로 점수를 매깁니다. + +**전제 조건:** 단계가 실행되었고 `AI-SPEC.md`가 있음 +**생성 결과:** 결과, 갭, 개선 지침이 담긴 `{phase}-EVAL-REVIEW.md` + +```bash +/gsd-eval-review # 현재 단계 감사 +/gsd-eval-review 3 # 특정 단계 감사 ``` --- @@ -780,33 +1128,87 @@ Claude Code 세션 분석을 통해 8개 차원(커뮤니케이션 스타일, ### `/gsd-update` -변경 로그 미리보기와 함께 GSD를 업데이트합니다. +변경 로그 미리보기와 함께 GSD를 업데이트하고, 선택적으로 스킬을 동기화하거나 로컬 패치를 재적용합니다. + +| 플래그 | 설명 | +|------|-------------| +| `--sync` | 업데이트 후 GSD 레지스트리에서 스킬 동기화 | +| `--reapply` | 업데이트 후 로컬 수정사항(패치) 복원 | ```bash /gsd-update # 업데이트 확인 및 설치 -``` - -### `/gsd-update --reapply` - -GSD 업데이트 후 로컬 수정사항을 복원합니다. - -```bash -/gsd-update --reapply # 로컬 변경사항 병합 +/gsd-update --sync # 업데이트 및 스킬 동기화 +/gsd-update --reapply # 업데이트 및 로컬 패치 재적용 ``` --- -## 빠른 인라인 명령어 +## 코드 품질 명령어 + +### `/gsd-code-review` + +버그, 보안 취약점, 코드 품질 문제에 대해 단계 동안 변경된 소스 파일을 검토합니다. `--fix`를 사용하여 검토 후 결과를 자동 수정합니다. + +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `N` | **예** | 검토할 변경사항이 있는 단계 번호 (예: `2` 또는 `02`) | +| `--depth=quick\|standard\|deep` | 아니요 | 검토 깊이 수준 (`workflow.code_review_depth` 설정 재정의). `quick`: 패턴 매칭만 (~2분). `standard`: 언어별 검사를 통한 파일별 분석 (~5–15분, 기본값). `deep`: 임포트 그래프와 호출 체인을 포함한 크로스 파일 분석 (~15–30분) | +| `--files file1,file2,...` | 아니요 | 명시적 쉼표 구분 파일 목록; SUMMARY/git 범위 지정을 완전히 건너뜀 | +| `--fix` | 아니요 | 검토 후 자동 문제 수정 — REVIEW.md를 읽고, 수정자 에이전트를 생성하고, 각 수정을 원자적으로 커밋 | +| `--fix --all` | 아니요 | 수정 범위에 Info 결과 포함 (기본값: Critical + Warning만) | +| `--fix --auto` | 아니요 | 수정 + 재검토 반복 루프, 최대 3회 반복 | + +**전제 조건:** 단계가 실행되었고 SUMMARY.md 또는 git 기록이 있음 +**생성 결과:** 심각도별 분류된 결과가 포함된 `{phase}-REVIEW.md`; `--fix` 사용 시 `{phase}-REVIEW-FIX.md` +**생성 에이전트:** `gsd-code-reviewer` 에이전트; `--fix` 사용 시 `gsd-code-fixer` 에이전트 + +**선택적 구조적 사전 통과:** `code_quality.fallow.enabled`를 `true`로 설정하면 에이전트 검토 전에 fallow를 실행합니다. GSD는 `{phase}/FALLOW.json`을 작성하고 `REVIEW.md`에 `Structural Findings (fallow)` 섹션을 포함합니다. `code_quality.fallow.scope`와 `code_quality.fallow.profile`로 범위와 프로필을 설정합니다. + +```bash +/gsd-code-review 3 # 단계 3의 표준 검토 +/gsd-code-review 2 --depth=deep # 딥 크로스 파일 검토 +/gsd-code-review 4 --files src/auth.ts,src/token.ts # 명시적 파일 목록 +/gsd-code-review 3 --fix # 검토 후 Critical + Warning 결과 수정 +/gsd-code-review 3 --fix --all # 검토 후 Info 포함 모든 결과 수정 +/gsd-code-review 3 --fix --auto # 검토, 수정, 깨끗해질 때까지 재검토 (최대 3회 반복) +``` + +--- + +### `/gsd-audit-fix` + +자율 감사-수정 파이프라인 — 감사를 실행하고, 결과를 분류하고, 테스트 검증으로 자동 수정 가능한 문제를 수정하고, 각 수정을 원자적으로 커밋합니다. + +| 플래그 | 설명 | +|------|-------------| +| `--source ` | 실행할 감사 (기본값: `audit-uat`) | +| `--severity high\|medium\|all` | 처리할 최소 심각도 (기본값: `medium`) | +| `--max N` | 수정할 최대 결과 수 (기본값: 5) | +| `--dry-run` | 수정 없이 결과 분류 (분류 테이블 표시) | + +**전제 조건:** 최소 한 단계가 UAT 또는 검증과 함께 실행됨 +**생성 결과:** 테스트 검증이 포함된 수정 커밋; 분류 보고서 + +```bash +/gsd-audit-fix # audit-uat 실행, medium+ 문제 수정 (최대 5개) +/gsd-audit-fix --severity high # 고심각도 문제만 수정 +/gsd-audit-fix --dry-run # 수정 없이 분류 미리보기 +/gsd-audit-fix --max 10 --severity all # 모든 심각도의 최대 10개 문제 수정 +``` + +--- + +## 빠른 & 인라인 명령어 ### `/gsd-fast` -서브에이전트나 계획 오버헤드 없이 간단한 작업을 인라인으로 실행합니다. 오타 수정, 설정 변경, 소규모 리팩터링, 누락된 커밋에 적합합니다. +서브에이전트 없이 사소한 작업을 인라인으로 실행합니다 — 계획 오버헤드 없음. 오타 수정, 설정 변경, 소규모 리팩토링, 빠뜨린 커밋에 사용합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `task description` | 아니오 | 수행할 작업 (생략 시 프롬프트로 입력) | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `task description` | 아니요 | 할 일 (생략 시 프롬프트) | -**`/gsd-quick`의 대체가 아닙니다.** 조사, 다단계 계획 또는 검증이 필요한 작업에는 `/gsd-quick`을 사용하세요. +**`/gsd-quick`의 대안이 아닙니다** — 리서치, 다단계 계획, 또는 검증이 필요한 작업에는 `/gsd-quick`을 사용하세요. ```bash /gsd-fast "fix typo in README" @@ -815,82 +1217,140 @@ GSD 업데이트 후 로컬 수정사항을 복원합니다. --- -## 코드 품질 명령어 - ### `/gsd-review` -외부 AI CLI를 통한 페이즈 계획의 교차 AI 동료 리뷰를 수행합니다. +외부 AI CLI로부터 단계 계획의 크로스 AI 동료 검토. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `--phase N` | **예** | 리뷰할 페이즈 번호 | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `--phase N` | **예** | 검토할 단계 번호 | | 플래그 | 설명 | -|--------|------| -| `--gemini` | Gemini CLI 리뷰 포함 | -| `--claude` | Claude CLI 리뷰 포함 (별도 세션) | -| `--codex` | Codex CLI 리뷰 포함 | -| `--coderabbit` | CodeRabbit 리뷰 포함 | -| `--opencode` | OpenCode 리뷰 포함 (GitHub Copilot 경유) | -| `--qwen` | Qwen Code 리뷰 포함 (Alibaba Qwen 모델) | -| `--cursor` | Cursor 에이전트 리뷰 포함 | -| `--agy` / `--antigravity` | Antigravity CLI 리뷰 포함 (Google 자격증명으로 무료) | -| `--all` | 사용 가능한 모든 CLI 포함 | +|------|-------------| +| `--gemini` | Gemini CLI 검토 포함 | +| `--claude` | Claude CLI 검토 포함 (별도 세션) | +| `--codex` | Codex CLI 검토 포함 | +| `--coderabbit` | CodeRabbit 검토 포함 | +| `--opencode` | OpenCode 검토 포함 (GitHub Copilot을 통해) | +| `--qwen` | Qwen Code 검토 포함 (Alibaba Qwen 모델) | +| `--cursor` | Cursor 에이전트 검토 포함 | +| `--agy` / `--antigravity` | Antigravity CLI 검토 포함 (Google 자격증명으로 무료) | +| `--ollama` | Ollama 서버 검토 포함 | +| `--lm-studio` | LM Studio 서버 검토 포함 | +| `--llama-cpp` | llama.cpp 서버 검토 포함 | +| `--all` | 사용 가능한 모든 리뷰어 포함 (CLI + 로컬 모델 서버) | -**생성 파일:** `{phase}-REVIEWS.md` — `/gsd-plan-phase --reviews`에서 사용 가능 +**기본 리뷰어 동작 (플래그 없음):** +- `review.default_reviewers`가 **설정되지 않은** 경우, `/gsd-review`는 감지된 모든 리뷰어를 실행합니다 (현재 기본 동작). +- `review.default_reviewers`가 **설정된** 경우, `/gsd-review`는 해당 하위 집합만 실행합니다 (예: `["gemini","codex"]`). +- `--all`은 항상 설정을 재정의하고 전체 감지된 집합을 실행합니다. +- 명시적 플래그 (예: `--cursor`)는 해당 실행에 대해 `--all`과 설정 기본값 모두를 재정의합니다. + +**생성 결과:** `{phase}-REVIEWS.md` — `/gsd-plan-phase --reviews`에서 사용 가능 ```bash +# 플래그 없는 /gsd-review 실행을 위한 프로젝트 기본 리뷰어 설정 +gsd config-set review.default_reviewers '["gemini","codex"]' + +/gsd-review --phase 2 # 설정에서 gemini+codex 실행 /gsd-review --phase 3 --all /gsd-review --phase 2 --gemini +/gsd-review --phase 2 --cursor # 일회성 재정의 ``` --- ### `/gsd-pr-branch` -`.planning/` 커밋을 필터링한 깔끔한 PR 브랜치를 생성합니다. +`.planning/` 커밋을 필터링하여 깨끗한 PR 브랜치를 생성합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `target branch` | 아니오 | 기본 브랜치 (기본값: `main`) | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `target branch` | 아니요 | 베이스 브랜치 (기본값: `main`) | -**목적:** 리뷰어에게 GSD 계획 아티팩트가 아닌 코드 변경사항만 표시합니다. +**목적:** 리뷰어는 GSD 계획 아티팩트가 아닌 코드 변경사항만 봅니다. ```bash -/gsd-pr-branch # main을 기준으로 필터링 -/gsd-pr-branch develop # develop을 기준으로 필터링 +/gsd-pr-branch # main 기준으로 필터링 +/gsd-pr-branch develop # develop 기준으로 필터링 ``` --- -### `/gsd-audit-uat` +### `/gsd-secure-phase` -모든 미완료 UAT 및 검증 항목에 대한 교차 페이즈 감사를 수행합니다. +완료된 단계의 위협 완화를 소급하여 검증합니다. -**사전 조건:** UAT 또는 검증이 포함된 페이즈가 하나 이상 실행되어 있어야 합니다. -**생성 파일:** 사람이 직접 수행하는 테스트 계획이 포함된 분류된 감사 보고서 +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `phase number` | 아니요 | 감사할 단계 (기본값: 마지막 완료 단계) | + +**전제 조건:** 단계가 실행되어야 합니다. 기존 SECURITY.md 여부와 관계없이 작동합니다. +**생성 결과:** 위협 검증 결과가 포함된 `{phase}-SECURITY.md` +**생성 에이전트:** `gsd-security-auditor` 에이전트 + +세 가지 운영 모드: +1. SECURITY.md 존재 — 기존 완화 감사 및 검증 +2. SECURITY.md 없지만 PLAN.md에 위협 모델 있음 — 아티팩트에서 생성 +3. 단계 미실행 — 안내와 함께 종료 ```bash -/gsd-audit-uat +/gsd-secure-phase # 마지막 완료 단계 감사 +/gsd-secure-phase 5 # 특정 단계 감사 ``` --- -## 백로그 및 스레드 명령어 +### `/gsd-docs-update` -### `/gsd-capture --backlog` +코드베이스에 대한 검증을 통해 프로젝트 문서를 생성하거나 업데이트합니다. -999.x 번호 체계를 사용하여 백로그 파킹 롯에 아이디어를 추가합니다. +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| `--force` | 아니요 | 보존 프롬프트 건너뜀, 모든 문서 재생성 | +| `--verify-only` | 아니요 | 기존 문서의 정확성 확인, 생성 없음 | -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `description` | **예** | 백로그 항목 설명 | +**생성 결과:** 최대 9개의 문서 파일 (README, 아키텍처, API, 시작하기, 개발, 테스트, 설정, 배포, 기여) +**생성 에이전트:** `gsd-doc-writer` 에이전트 (문서 유형당 하나), 그 후 사실 검증을 위한 `gsd-doc-verifier` 에이전트 -**999.x 번호 체계**는 백로그 항목을 활성 페이즈 순서 밖에 유지합니다. 페이즈 디렉터리가 즉시 생성되므로 해당 항목에 대해 `/gsd-discuss-phase`와 `/gsd-plan-phase`를 사용할 수 있습니다. +각 문서 작성자는 코드베이스를 직접 탐색합니다 — 환각된 경로나 오래된 서명 없음. 문서 검증자는 라이브 파일시스템에 대한 주장을 확인합니다. ```bash -/gsd-capture --backlog "GraphQL API layer" -/gsd-capture --backlog "Mobile responsive redesign" +/gsd-docs-update # 대화형으로 문서 생성/업데이트 +/gsd-docs-update --force # 모든 문서 재생성 +/gsd-docs-update --verify-only # 기존 문서만 검증 +``` + +--- + +## 작업 캡처 및 백로그 명령어 + +### `/gsd-capture` + +아이디어, 작업, 노트, 시드를 적절한 대상으로 캡처합니다. 기본 모드는 구조화된 할일을 추가하며; 플래그는 특수화된 캡처 워크플로로 라우팅합니다. + +| 플래그 | 설명 | +|------|-------------| +| (없음) | 나중 작업을 위한 구조화된 할일로 캡처 | +| `--note [text]` | 마찰 없는 노트 — 추가, 나열 (`--note list`), 또는 승격 (`--note promote N`) | +| `--backlog ` | 999.x 번호 체계를 사용하여 백로그 주차장에 추가 | +| `--seed [idea summary]` | 트리거 조건이 있는 미래 지향적 아이디어 캡처 | +| `--list` | 보류 중인 할일 나열 및 작업할 항목 선택 | +| `--global` | 전역 범위 사용 (노트 작업용) | + +**백로그:** 999.x 번호 체계는 활성 단계 시퀀스 외부에 항목을 유지합니다; 단계 디렉토리는 즉시 생성되므로 `/gsd-discuss-phase`와 `/gsd-plan-phase`가 작동합니다. +**시드:** 전체 WHY, 언제 표시할지, 이동 경로를 보존합니다 — `/gsd-new-milestone`이 사용합니다. + +**생성 결과:** `.planning/todos/` (기본값), 노트 파일 (--note), ROADMAP.md 백로그 섹션 (--backlog), `.planning/seeds/SEED-NNN-slug.md` (--seed) + +```bash +/gsd-capture "Consider adding dark mode support" # 할일 추가 +/gsd-capture --note "Caching strategy idea" # 빠른 노트 +/gsd-capture --note list # 모든 노트 나열 +/gsd-capture --note promote 3 # 노트 3을 할일로 승격 +/gsd-capture --backlog "GraphQL API layer" # 백로그에 추가 +/gsd-capture --seed "Add real-time collaboration when WebSocket infra is in place" +/gsd-capture --list # 할일 탐색 및 실행 ``` --- @@ -899,7 +1359,7 @@ GSD 업데이트 후 로컬 수정사항을 복원합니다. 백로그 항목을 검토하고 활성 마일스톤으로 승격합니다. -**항목별 작업:** 승격 (활성 순서로 이동), 유지 (백로그에 남김), 제거 (삭제). +**항목당 조치:** 승격 (활성 시퀀스로 이동), 유지 (백로그에 남김), 삭제. ```bash /gsd-review-backlog @@ -907,44 +1367,163 @@ GSD 업데이트 후 로컬 수정사항을 복원합니다. --- -### `/gsd-capture --seed` - -트리거 조건이 있는 미래 지향적인 아이디어를 캡처합니다. 적절한 마일스톤 시점에 자동으로 표면화됩니다. - -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| `idea summary` | 아니오 | 시드 설명 (생략 시 프롬프트로 입력) | - -시드는 컨텍스트 부식 문제를 해결합니다. 아무도 읽지 않는 Deferred의 한 줄짜리 메모 대신, 시드는 전체 WHY, 언제 표면화할지, 세부 내용에 대한 단서를 보존합니다. - -**생성 파일:** `.planning/seeds/SEED-NNN-slug.md` -**사용처:** `/gsd-new-milestone` (시드를 스캔하여 일치 항목 제시) - -```bash -/gsd-capture --seed "Add real-time collaboration when WebSocket infra is in place" -``` - ---- - ### `/gsd-thread` -교차 세션 작업을 위한 지속적인 컨텍스트 스레드를 관리합니다. +크로스 세션 작업을 위한 지속적인 컨텍스트 스레드를 관리합니다. -| 인수 | 필수 여부 | 설명 | -|------|----------|------| -| (없음) | — | 모든 스레드 목록 | +| 인수 | 필수 | 설명 | +|----------|----------|-------------| +| (없음) / `list` | — | 모든 스레드 나열 | +| `list --open` | — | 상태가 `open` 또는 `in_progress`인 스레드만 나열 | +| `list --resolved` | — | 상태가 `resolved`인 스레드만 나열 | +| `status ` | — | 특정 스레드의 상태 표시 | +| `close ` | — | 스레드를 해결됨으로 표시 | | `name` | — | 이름으로 기존 스레드 재개 | | `description` | — | 새 스레드 생성 | -스레드는 여러 세션에 걸쳐 이어지지만 특정 페이즈에 속하지 않는 작업을 위한 경량 교차 세션 지식 저장소입니다. `/gsd-pause-work`보다 가볍습니다. +스레드는 여러 세션에 걸쳐 작업하지만 특정 단계에 속하지 않는 작업을 위한 경량 크로스 세션 지식 저장소입니다. `/gsd-pause-work`보다 더 가볍습니다. ```bash -/gsd-thread # 모든 스레드 목록 +/gsd-thread # 모든 스레드 나열 +/gsd-thread list --open # 열린/진행 중인 스레드만 나열 +/gsd-thread list --resolved # 해결된 스레드만 나열 +/gsd-thread status fix-deploy-key # 스레드 상태 표시 +/gsd-thread close fix-deploy-key # 스레드를 해결됨으로 표시 /gsd-thread fix-deploy-key-auth # 스레드 재개 /gsd-thread "Investigate TCP timeout in pasta service" # 새 스레드 생성 ``` --- +## 로드맵 관리 명령어 + +### `roadmap validate` + +마일스톤 접두사 일관성을 포함한 구조적 무결성에 대해 ROADMAP.md를 검증합니다. + +**전제 조건:** `.planning/ROADMAP.md` 존재 +**생성 결과:** 검증 보고서; 오류 또는 경고 시 비제로로 종료 + +```bash +node gsd-tools.cjs roadmap validate +``` + +--- + +### `roadmap upgrade --convention milestone-prefixed` + +레거시 `Phase N` ID를 마일스톤 접두사 `Phase M-NN` 규칙으로 마이그레이션합니다. + +| 플래그 | 필수 | 설명 | +|------|----------|-------------| +| `--convention milestone-prefixed` | 예 | 마이그레이션할 대상 규칙 | +| `--apply` | 아니요 | 디스크에 변경사항 작성 (기본값: 드라이런만) | + +**전제 조건:** `.planning/ROADMAP.md` 존재 +**생성 결과:** 드라이런 diff (기본값) 또는 인플레이스 ROADMAP.md 재작성 (`--apply`) + +```bash +node gsd-tools.cjs roadmap upgrade --convention milestone-prefixed # 드라이런 +node gsd-tools.cjs roadmap upgrade --convention milestone-prefixed --apply # 적용 +``` + +--- + +## 상태 관리 명령어 + +### `state validate` + +STATE.md와 실제 파일시스템 간의 드리프트를 감지합니다. + +**전제 조건:** `.planning/STATE.md` 존재 +**생성 결과:** STATE.md 필드와 파일시스템 현실 간의 드리프트를 보여주는 검증 보고서 + +```bash +node gsd-tools.cjs state validate +``` + +--- + +### `state sync [--verify]` + +디스크의 실제 프로젝트 상태에서 STATE.md를 재구성합니다. + +| 플래그 | 설명 | +|------|-------------| +| `--verify` | 드라이런 모드 — 작성 없이 제안된 변경사항 표시 | + +**전제 조건:** `.planning/` 디렉토리 존재 +**생성 결과:** 파일시스템 현실을 반영한 업데이트된 `STATE.md` + +```bash +node gsd-tools.cjs state sync # 디스크에서 STATE.md 재구성 +node gsd-tools.cjs state sync --verify # 드라이런: 작성 없이 변경사항 표시 +``` + +--- + +### `state planned-phase` + +plan-phase 완료 후 상태 전환을 기록합니다 (계획됨/실행 준비). + +| 플래그 | 설명 | +|------|-------------| +| `--phase N` | 계획된 단계 번호 | +| `--plans N` | 생성된 계획 수 | + +**전제 조건:** 단계가 계획됨 +**생성 결과:** 계획 후 상태가 포함된 업데이트된 `STATE.md` + +```bash +node gsd-tools.cjs state planned-phase --phase 3 --plans 2 +``` + +--- + ## 커뮤니티 명령어 +### 커뮤니티 훅 + +`.planning/config.json`에서 `hooks.community: true`로 게이팅된 선택적 git 및 세션 훅. 명시적으로 활성화하지 않으면 모두 무작동(no-op)입니다. + +| 훅 | 목적 | +|------|---------| +| `gsd-validate-commit.sh` | git 커밋 메시지에 Conventional Commits 형식 강제 | +| `gsd-session-state.sh` | 세션 상태 전환 추적 | +| `gsd-phase-boundary.sh` | 단계 경계 확인 강제 | + +다음으로 활성화: +```json +{ "hooks": { "community": true } } +``` + +--- + +### 커뮤니티 초대 + +GSD Discord 커뮤니티에 참여하려면 GSD README의 링크를 방문하거나 `/gsd-help`를 실행하고 거기에 표시된 Discord 링크를 따르세요. + +--- + +## 기여: 스킬 설명 표준 + +스킬 설명(`commands/gsd/*.md` 프론트매터의 `description:` 필드)은 +모든 세션의 시스템 프롬프트에 삽입됩니다. 세션당 오버헤드를 낮게 유지하기 위해 설명은 +≤ 100자이어야 하며 `argument-hint:`에 이미 있는 플래그 문서를 중복해서는 안 됩니다. + +린트 게이트가 예산을 강제합니다: + +```bash +npm run lint:descriptions +``` + +이 검사는 `tests/enh-2789-description-budget.test.cjs`를 통해 `npm test`의 일부로도 실행됩니다. + +--- + +## 관련 항목 + +- [설정 참조](CONFIGURATION.md) +- [CLI 도구 참조](CLI-TOOLS.md) +- [기능 참조](FEATURES.md) +- [문서 목록](README.md) diff --git a/docs/ko-KR/INVENTORY.md b/docs/ko-KR/INVENTORY.md new file mode 100644 index 000000000..1e8aac327 --- /dev/null +++ b/docs/ko-KR/INVENTORY.md @@ -0,0 +1,493 @@ +# GSD 출시된 표면 인벤토리 + +> 출시된 모든 GSD 표면의 공식 목록: 명령어, 에이전트, 워크플로우, 레퍼런스, CLI 모듈, 훅. 광범위 문서(AGENTS.md, COMMANDS.md, ARCHITECTURE.md, CLI-TOOLS.md)와 파일시스템이 다를 경우, 이 파일과 저장소 트리를 진실의 원천으로 취급합니다. + +## 이 파일 사용 방법 + +- 여기의 수량은 v1.36.0 핀 기준 파일시스템에서 도출된 것으로, 릴리스 사이에 변동될 수 있습니다. 최신 수량을 확인하려면 체크아웃에서 `ls commands/gsd/*.md | wc -l`, `ls agents/gsd-*.md | wc -l` 등을 실행하세요. +- 이 파일은 6개 패밀리(에이전트, 명령어, 워크플로우, 레퍼런스, CLI 모듈, 훅) 전반에 걸쳐 출시된 모든 표면을 열거합니다. 광범위 문서는 내러티브 또는 엄선된 하위 집합을 렌더링할 수 있습니다. 파일시스템과 불일치할 경우 이 파일과 디렉터리 목록이 권위 있는 출처입니다. +- v1.36.0 이후 추가된 새 표면은 먼저 여기에 기록된 후 광범위 문서로 전파되어야 합니다. `tests/inventory-counts.test.cjs`, `tests/commands-doc-parity.test.cjs`, `tests/agents-doc-parity.test.cjs`, `tests/cli-modules-doc-parity.test.cjs`, `tests/hooks-doc-parity.test.cjs`, `tests/architecture-counts.test.cjs`, `tests/command-count-sync.test.cjs`의 드리프트 제어 테스트가 파일시스템 대비 수량 및 목록 내용을 고정합니다. + +이것은 출시된 모든 GSD Core 표면의 공식 목록입니다. 주제별 탐색은 [문서 색인](README.md)을 참조하세요. + +--- + +## 에이전트 (33개 출시) + +전체 목록은 `agents/gsd-*.md`에 있습니다. "주요 문서" 열은 [`docs/AGENTS.md`](AGENTS.md)에서 전체 역할 카드(*primary*), "고급 및 특수 에이전트" 섹션의 짧은 스텁(*advanced stub*), 또는 다루지 않음(*inventory only*)을 표시합니다. + +| 에이전트 | 역할 (한 줄) | 생성자 | 주요 문서 | +|-------|-----------------|------------|-------------| +| gsd-project-researcher | 로드맵 생성 전 도메인 에코시스템 조사 (스택, 기능, 아키텍처, 함정). | `/gsd-new-project`, `/gsd-new-milestone` | primary | +| gsd-phase-researcher | 계획 전 특정 단계의 구현 방식 조사. | `/gsd-plan-phase` | primary | +| gsd-ui-researcher | 프론트엔드 단계용 UI 설계 계약 생성. | `/gsd-ui-phase` | primary | +| gsd-assumptions-analyzer | discuss-phase (가정 모드)를 위한 근거 기반 가정 생성. | `discuss-phase-assumptions` 워크플로우 | primary | +| gsd-advisor-researcher | discuss-phase 어드바이저 모드에서 단일 회색 지대 결정을 조사. | `discuss-phase` 워크플로우 (어드바이저 모드) | primary | +| gsd-research-synthesizer | 병렬 조사 결과를 통합 SUMMARY.md로 결합. | `/gsd-new-project` | primary | +| gsd-planner | 태스크 분해 및 목표 역방향 검증이 포함된 실행 가능한 단계 계획 생성. | `/gsd-plan-phase`, `/gsd-quick` | primary | +| gsd-roadmapper | 단계 분해 및 요구사항 매핑이 포함된 프로젝트 로드맵 생성. | `/gsd-new-project` | primary | +| gsd-executor | 원자적 커밋과 편차 처리로 GSD 계획 실행. | `/gsd-execute-phase`, `/gsd-quick` | primary | +| gsd-plan-checker | 계획이 단계 목표를 달성할지 검증 (8개 검증 차원). | `/gsd-plan-phase` (검증 루프) | primary | +| gsd-integration-checker | 단계 간 통합 및 엔드투엔드 플로우 검증. | `/gsd-audit-milestone` | primary | +| gsd-ui-checker | 품질 차원에 대한 UI-SPEC.md 설계 계약 검증. | `/gsd-ui-phase` (검증 루프) | primary | +| gsd-verifier | 목표 역방향 분석을 통한 단계 목표 달성 검증. | `/gsd-execute-phase` | primary | +| gsd-nyquist-auditor | 테스트 생성으로 나이퀴스트 검증 공백 채움. | `/gsd-validate-phase` | primary | +| gsd-ui-auditor | 구현된 프론트엔드 코드의 소급 6-기둥 시각 감사. | `/gsd-ui-review` | primary | +| gsd-codebase-mapper | 코드베이스 탐색 및 구조화된 분석 문서 작성. | `/gsd-map-codebase` | primary | +| gsd-debugger | 영속 상태를 사용하는 과학적 방법론으로 버그 조사. | `/gsd-debug`, `/gsd-verify-work` | primary | +| gsd-user-profiler | 8개 차원에서 개발자 행동 점수 산정. | `/gsd-profile-user` | primary | +| gsd-doc-writer | 프로젝트 문서 작성 및 업데이트. | `/gsd-docs-update` | primary | +| gsd-doc-verifier | 생성된 문서의 사실적 주장 검증. | `/gsd-docs-update` | primary | +| gsd-security-auditor | PLAN.md 위협 모델의 위협 완화 검증. | `/gsd-secure-phase` | primary | +| gsd-pattern-mapper | 새 파일을 가장 가까운 기존 유사체에 매핑; 플래너를 위한 PATTERNS.md 작성. | `/gsd-plan-phase` (조사와 계획 사이) | advanced stub | +| gsd-debug-session-manager | 격리된 컨텍스트에서 전체 `/gsd-debug` 체크포인트-및-연속 루프를 실행하여 메인 컨텍스트를 가볍게 유지. | `/gsd-debug` | advanced stub | +| gsd-code-reviewer | 버그, 보안 문제, 코드 품질 문제에 대해 소스 파일 검토; REVIEW.md 생성. | `/gsd-code-review` | advanced stub | +| gsd-code-fixer | REVIEW.md 결과에 수정 사항을 원자적 수정별 커밋으로 적용; REVIEW-FIX.md 생성. | `/gsd-code-review --fix` | advanced stub | +| gsd-ai-researcher | 선택한 AI 프레임워크의 공식 문서를 구현 준비 가이드로 조사 (AI-SPEC.md §3–§4b). | `/gsd-ai-integration-phase` | advanced stub | +| gsd-domain-researcher | AI 시스템을 위한 도메인 전문가 평가 기준 및 실패 모드 표면화 (AI-SPEC.md §1b). | `/gsd-ai-integration-phase` | advanced stub | +| gsd-eval-planner | AI 단계를 위한 구조화된 평가 전략 설계 (AI-SPEC.md §5–§7). | `/gsd-ai-integration-phase` | advanced stub | +| gsd-eval-auditor | AI 단계 평가 범위의 소급 감사; EVAL-REVIEW.md 생성 (COVERED/PARTIAL/MISSING). | `/gsd-eval-review` | advanced stub | +| gsd-framework-selector | AI/LLM 프레임워크를 점수 산정하고 추천하는 ≤6개 질문의 인터랙티브 결정 매트릭스. | `/gsd-ai-integration-phase` | advanced stub | +| gsd-intel-updater | 쿼리 가능한 코드베이스 지식 베이스로 사용되는 구조화된 인텔 파일(`.planning/intel/*.json`) 작성. | `/gsd-map-codebase --query` | advanced stub | +| gsd-doc-classifier | 단일 계획 문서를 ADR, PRD, SPEC, DOC, UNKNOWN으로 분류; 병렬로 생성되어 문서 코퍼스 처리. | `/gsd-ingest-docs` | advanced stub | +| gsd-doc-synthesizer | 분류된 계획 문서를 우선순위 규칙, 순환 감지, 세 버킷 충돌 보고서로 단일 통합 컨텍스트로 합성. | `/gsd-ingest-docs` | advanced stub | + +**커버리지 참고.** `docs/AGENTS.md`는 21개 주요 에이전트에 대한 전체 역할 카드와 12개 고급 에이전트에 대한 간결한 스텁을 제공합니다. 해당 파일의 에이전트 도구 권한 요약은 주요 21개 에이전트만 다루며; 고급 에이전트의 도구 목록은 `agents/gsd-*.md`의 에이전트별 프론트매터에 기록됩니다. + +--- + +## 명령어 (67개 출시) + +전체 목록은 `commands/gsd/*.md`에 있습니다. 아래 그룹화는 `docs/COMMANDS.md` 섹션 순서를 반영합니다. 각 행은 명령어 이름, 명령어의 프론트매터 `description:`에서 도출된 한 줄 역할, 소스 파일 링크를 포함합니다. `tests/command-count-sync.test.cjs`가 파일시스템 대비 수량을 고정합니다. + +### 네임스페이스 메타 스킬 + +이 6개의 라우터는 모델이 먼저 선택하는 설명자 전용 항목입니다. 각각의 본문에는 올바른 구체적 하위 스킬을 가리키는 라우팅 테이블이 포함되어 있습니다. 이는 전체 표면에 접근 가능하게 유지하면서 즉시 스킬 목록 토큰 비용을 낮게 유지하기 위한 것입니다. 근거는 [#2792](https://github.com/open-gsd/gsd-core/issues/2792) 참조; 라우팅 테이블은 [#2790](https://github.com/open-gsd/gsd-core/issues/2790) 이후 통합된 표면을 대상으로 합니다. + +| 명령어 | 역할 | 소스 | +|---------|------|--------| +| `/gsd-workflow` | 단계 파이프라인 라우터 — discuss / plan / execute / verify / phase / progress. | [commands/gsd/ns-workflow.md](../../commands/gsd/ns-workflow.md) | +| `/gsd-project` | 프로젝트 라이프사이클 라우터 — 마일스톤, 감사, 요약. | [commands/gsd/ns-project.md](../../commands/gsd/ns-project.md) | +| `/gsd-quality` | 품질 게이트 라우터 — 코드 리뷰, 디버그, 감사, 보안, 평가, UI. | [commands/gsd/ns-review.md](../../commands/gsd/ns-review.md) | +| `/gsd-context` | 코드베이스 인텔리전스 라우터 — 맵, 그래프화, 문서, 학습. | [commands/gsd/ns-context.md](../../commands/gsd/ns-context.md) | +| `/gsd-manage` | 관리 라우터 — 설정, 워크스페이스, 워크스트림, 스레드, 업데이트, 출시, 인박스. | [commands/gsd/ns-manage.md](../../commands/gsd/ns-manage.md) | +| `/gsd-ideate` | 탐색 및 캡처 라우터 — 탐색, 스케치, 스파이크, 스펙, 캡처. | [commands/gsd/ns-ideate.md](../../commands/gsd/ns-ideate.md) | + +### 핵심 워크플로우 + +| 명령어 | 역할 | 소스 | +|---------|------|--------| +| `/gsd-new-project` | 심층 컨텍스트 수집 및 PROJECT.md로 새 프로젝트 초기화. | [commands/gsd/new-project.md](../../commands/gsd/new-project.md) | +| `/gsd-workspace` | GSD 워크스페이스 관리 — 격리된 워크스페이스 환경을 생성(`--new`), 목록(`--list`), 또는 제거(`--remove`). | [commands/gsd/workspace.md](../../commands/gsd/workspace.md) | +| `/gsd-discuss-phase` | 계획 전 적응형 질문을 통한 단계 컨텍스트 수집. | [commands/gsd/discuss-phase.md](../../commands/gsd/discuss-phase.md) | +| `/gsd-mvp-phase` | 수직 MVP 슬라이스로 단계 계획 — 사용자 스토리, SPIDR 분할, 이후 plan-phase. | [commands/gsd/mvp-phase.md](../../commands/gsd/mvp-phase.md) | +| `/gsd-spec-phase` | 반증 가능한 요구사항을 담은 SPEC.md를 생성하는 소크라테스식 스펙 정제. | [commands/gsd/spec-phase.md](../../commands/gsd/spec-phase.md) | +| `/gsd-ui-phase` | 프론트엔드 단계용 UI 설계 계약(UI-SPEC.md) 생성. | [commands/gsd/ui-phase.md](../../commands/gsd/ui-phase.md) | +| `/gsd-ai-integration-phase` | 프레임워크 선택, 조사, 평가 계획을 통한 AI 설계 계약(AI-SPEC.md) 생성. | [commands/gsd/ai-integration-phase.md](../../commands/gsd/ai-integration-phase.md) | +| `/gsd-plan-phase` | 검증 루프가 포함된 상세 단계 계획(PLAN.md) 생성. | [commands/gsd/plan-phase.md](../../commands/gsd/plan-phase.md) | +| `/gsd-plan-review-convergence` | 교차 AI 계획 수렴 루프 — HIGH 우려사항이 없을 때까지 리뷰 피드백으로 재계획 (최대 3사이클). | [commands/gsd/plan-review-convergence.md](../../commands/gsd/plan-review-convergence.md) | +| `/gsd-ultraplan-phase` | [BETA] 계획 단계를 Claude Code의 ultraplan 클라우드에 오프로드 — 원격으로 초안 작성, 브라우저에서 검토, `/gsd-import`로 가져오기. Claude Code 전용. | [commands/gsd/ultraplan-phase.md](../../commands/gsd/ultraplan-phase.md) | +| `/gsd-spike` | 일회성 실험으로 아이디어를 빠르게 스파이크; `--wrap-up`으로 결과를 영구 스킬로 패키징. | [commands/gsd/spike.md](../../commands/gsd/spike.md) | +| `/gsd-sketch` | 일회성 HTML 목업을 사용한 UI/설계 아이디어 빠른 스케치; `--wrap-up`으로 결과 패키징. | [commands/gsd/sketch.md](../../commands/gsd/sketch.md) | +| `/gsd-execute-phase` | 웨이브 기반 병렬화로 단계의 모든 계획 실행. | [commands/gsd/execute-phase.md](../../commands/gsd/execute-phase.md) | +| `/gsd-verify-work` | 자동 진단을 포함한 대화형 UAT로 구축된 기능 검증. | [commands/gsd/verify-work.md](../../commands/gsd/verify-work.md) | +| `/gsd-ship` | 검증 후 PR 생성, 리뷰 실행, 병합 준비. | [commands/gsd/ship.md](../../commands/gsd/ship.md) | +| `/gsd-fast` | 하위 에이전트 없이, 계획 오버헤드 없이 인라인으로 사소한 태스크 실행. | [commands/gsd/fast.md](../../commands/gsd/fast.md) | +| `/gsd-quick` | GSD 보장(원자적 커밋, 상태 추적)으로 빠른 태스크 실행, 선택적 에이전트는 생략. | [commands/gsd/quick.md](../../commands/gsd/quick.md) | +| `/gsd-ui-review` | 구현된 프론트엔드 코드의 소급 6-기둥 시각 감사. | [commands/gsd/ui-review.md](../../commands/gsd/ui-review.md) | +| `/gsd-code-review` | 단계에서 변경된 소스 파일을 버그, 보안, 코드 품질 문제에 대해 검토; `--fix`로 결과 자동 적용. | [commands/gsd/code-review.md](../../commands/gsd/code-review.md) | +| `/gsd-eval-review` | 실행된 AI 단계의 평가 범위를 소급 감사; EVAL-REVIEW.md 생성. | [commands/gsd/eval-review.md](../../commands/gsd/eval-review.md) | + +### 단계 및 마일스톤 관리 + +| 명령어 | 역할 | 소스 | +|---------|------|--------| +| `/gsd-phase` | 단계 CRUD — ROADMAP.md에서 단계 추가(기본값), 삽입(`--insert`), 제거(`--remove`), 편집(`--edit`). | [commands/gsd/phase.md](../../commands/gsd/phase.md) | +| `/gsd-add-tests` | UAT 기준 및 구현에 기반한 완료된 단계의 테스트 생성. | [commands/gsd/add-tests.md](../../commands/gsd/add-tests.md) | +| `/gsd-validate-phase` | 완료된 단계의 나이퀴스트 검증 공백을 소급 감사 및 채움. | [commands/gsd/validate-phase.md](../../commands/gsd/validate-phase.md) | +| `/gsd-secure-phase` | 완료된 단계의 위협 완화를 소급 검증. | [commands/gsd/secure-phase.md](../../commands/gsd/secure-phase.md) | +| `/gsd-audit-milestone` | 아카이브 전 원래 의도 대비 마일스톤 완료 감사. | [commands/gsd/audit-milestone.md](../../commands/gsd/audit-milestone.md) | +| `/gsd-audit-uat` | 미완료된 모든 UAT 및 검증 항목의 단계 간 감사. | [commands/gsd/audit-uat.md](../../commands/gsd/audit-uat.md) | +| `/gsd-audit-fix` | 자율 감사-수정 파이프라인 — 문제 찾기, 분류, 수정, 테스트, 커밋. | [commands/gsd/audit-fix.md](../../commands/gsd/audit-fix.md) | +| `/gsd-complete-milestone` | 완료된 마일스톤 아카이브 및 다음 버전 준비. | [commands/gsd/complete-milestone.md](../../commands/gsd/complete-milestone.md) | +| `/gsd-new-milestone` | 새 마일스톤 사이클 시작 — PROJECT.md 업데이트 및 요구사항으로 라우팅. | [commands/gsd/new-milestone.md](../../commands/gsd/new-milestone.md) | +| `/gsd-milestone-summary` | 마일스톤 아티팩트로부터 포괄적인 프로젝트 요약 생성. | [commands/gsd/milestone-summary.md](../../commands/gsd/milestone-summary.md) | +| `/gsd-cleanup` | 완료된 마일스톤에서 누적된 단계 디렉터리 아카이브. | [commands/gsd/cleanup.md](../../commands/gsd/cleanup.md) | +| `/gsd-manager` | 하나의 터미널에서 여러 단계를 관리하는 인터랙티브 커맨드 센터. | [commands/gsd/manager.md](../../commands/gsd/manager.md) | +| `/gsd-workstreams` | 병렬 워크스트림 관리 — 목록, 생성, 전환, 상태, 진행도, 완료, 재개. | [commands/gsd/workstreams.md](../../commands/gsd/workstreams.md) | +| `/gsd-autonomous` | 나머지 모든 단계를 자율적으로 실행 — 단계별 discuss → plan → execute. | [commands/gsd/autonomous.md](../../commands/gsd/autonomous.md) | +| `/gsd-undo` | 안전한 git 되돌리기 — 단계 매니페스트를 사용하여 단계 또는 계획 커밋 롤백. | [commands/gsd/undo.md](../../commands/gsd/undo.md) | + +### 세션 및 탐색 + +| 명령어 | 역할 | 소스 | +|---------|------|--------| +| `/gsd-progress` | 프로젝트 진행도 확인, 컨텍스트 표시, 다음 액션으로 라우팅; `--next`로 자동 진행 또는 `--do`로 자유 형식 태스크 실행. | [commands/gsd/progress.md](../../commands/gsd/progress.md) | +| `/gsd-capture` | 아이디어, 태스크, 메모, 씨앗 캡처 — todo(기본값), `--note`, `--backlog`, `--seed`, 또는 `--list` 미완료 todo. | [commands/gsd/capture.md](../../commands/gsd/capture.md) | +| `/gsd-stats` | 프로젝트 통계 표시 — 단계, 계획, 요구사항, git 메트릭, 타임라인. | [commands/gsd/stats.md](../../commands/gsd/stats.md) | +| `/gsd-pause-work` | 단계 중간에 작업을 일시 중지할 때 컨텍스트 핸드오프 생성. | [commands/gsd/pause-work.md](../../commands/gsd/pause-work.md) | +| `/gsd-resume-work` | 이전 세션에서 전체 컨텍스트 복원으로 작업 재개. | [commands/gsd/resume-work.md](../../commands/gsd/resume-work.md) | +| `/gsd-explore` | 소크라테스식 아이디어 발상 및 라우팅 — 커밋 전 아이디어 심화 검토. | [commands/gsd/explore.md](../../commands/gsd/explore.md) | +| `/gsd-review-backlog` | 백로그 항목 검토 및 활성 마일스톤으로 승격. | [commands/gsd/review-backlog.md](../../commands/gsd/review-backlog.md) | +| `/gsd-thread` | 세션 간 작업을 위한 영속 컨텍스트 스레드 관리. | [commands/gsd/thread.md](../../commands/gsd/thread.md) | + +### 코드베이스 인텔리전스 + +| 명령어 | 역할 | 소스 | +|---------|------|--------| +| `/gsd-map-codebase` | 병렬 매퍼 에이전트로 코드베이스 분석; 경량 스캔은 `--fast`, 인텔 쿼리는 `--query`. | [commands/gsd/map-codebase.md](../../commands/gsd/map-codebase.md) | +| `/gsd-graphify` | `.planning/graphs/`의 프로젝트 지식 그래프 구축, 쿼리, 검사. | [commands/gsd/graphify.md](../../commands/gsd/graphify.md) | +| `/gsd-extract-learnings` | 완료된 단계 아티팩트에서 결정, 교훈, 패턴, 놀라운 점 추출. | [commands/gsd/extract-learnings.md](../../commands/gsd/extract-learnings.md) | + +### 리뷰, 디버그 및 복구 + +| 명령어 | 역할 | 소스 | +|---------|------|--------| +| `/gsd-review` | 외부 AI CLI에서 단계 계획의 교차 AI 피어 리뷰 요청. | [commands/gsd/review.md](../../commands/gsd/review.md) | +| `/gsd-debug` | 컨텍스트 재설정 전반에 걸쳐 영속 상태를 사용하는 체계적 디버깅. | [commands/gsd/debug.md](../../commands/gsd/debug.md) | +| `/gsd-forensics` | 실패한 GSD 워크플로우의 사후 조사 — git, 아티팩트, 상태 분석. | [commands/gsd/forensics.md](../../commands/gsd/forensics.md) | +| `/gsd-health` | 계획 디렉터리 상태를 진단하고 선택적으로 문제 수정. | [commands/gsd/health.md](../../commands/gsd/health.md) | +| `/gsd-import` | 프로젝트 결정에 대한 충돌 감지로 외부 계획 수집. | [commands/gsd/import.md](../../commands/gsd/import.md) | +| `/gsd-inbox` | 프로젝트 템플릿에 대한 모든 열린 GitHub 이슈 및 PR 분류 및 검토. | [commands/gsd/inbox.md](../../commands/gsd/inbox.md) | + +### 문서, 프로필 및 유틸리티 + +| 명령어 | 역할 | 소스 | +|---------|------|--------| +| `/gsd-docs-update` | 코드베이스에 대해 검증된 프로젝트 문서 생성 또는 업데이트. | [commands/gsd/docs-update.md](../../commands/gsd/docs-update.md) | +| `/gsd-ingest-docs` | 혼합 ADR/PRD/SPEC/DOC가 있는 저장소를 스캔하고 분류, 합성, 충돌 보고서로 전체 `.planning/` 설정을 부트스트랩 또는 병합. | [commands/gsd/ingest-docs.md](../../commands/gsd/ingest-docs.md) | +| `/gsd-profile-user` | 개발자 행동 프로필 및 Claude 검색 가능한 아티팩트 생성. | [commands/gsd/profile-user.md](../../commands/gsd/profile-user.md) | +| `/gsd-settings` | GSD 워크플로우 토글 및 모델 프로필 구성. | [commands/gsd/settings.md](../../commands/gsd/settings.md) | +| `/gsd-config` | GSD 설정 구성 — 워크플로우 토글(기본값), 고급 설정(`--advanced`), 통합(`--integrations`), 또는 모델 프로필(`--profile`). | [commands/gsd/config.md](../../commands/gsd/config.md) | +| `/gsd-pr-branch` | `.planning/` 커밋을 필터링하여 깔끔한 PR 브랜치 생성. | [commands/gsd/pr-branch.md](../../commands/gsd/pr-branch.md) | +| `/gsd-surface` | 표면화할 스킬 토글 — 재설치 없이 프로필 적용, 목록 보기, 클러스터 비활성화. | [commands/gsd/surface.md](../../commands/gsd/surface.md) | +| `/gsd-update` | GSD를 최신 버전으로 업데이트; `--sync`로 런타임 간 스킬 동기화 또는 `--reapply`로 로컬 패치 재적용. | [commands/gsd/update.md](../../commands/gsd/update.md) | +| `/gsd-help` | 사용 가능한 GSD 명령어 및 사용 가이드 표시. | [commands/gsd/help.md](../../commands/gsd/help.md) | + +--- + +## 워크플로우 (88개 출시) + +전체 목록은 `get-shit-done/workflows/*.md`에 있습니다. 워크플로우는 명령어가 내부적으로 참조하는 얇은 오케스트레이터입니다; 대부분은 최종 사용자가 직접 읽지 않습니다. 아래 행은 각 워크플로우 파일을 역할(`` 블록에서 도출)과, 해당하는 경우 호출 명령어에 매핑합니다. + +| 워크플로우 | 역할 | 호출자 | +|----------|------|------------| +| `add-backlog.md` | 999.x 번호 체계를 사용하여 ROADMAP.md에 백로그 항목 추가. | `/gsd-capture --backlog` | +| `add-phase.md` | 로드맵의 현재 마일스톤 끝에 새 정수 단계 추가. | `/gsd-phase` (기본값) | +| `add-tests.md` | 완료된 단계의 아티팩트를 기반으로 단위 및 E2E 테스트 생성. | `/gsd-add-tests` | +| `add-todo.md` | 세션 중 발생하는 아이디어나 태스크를 구조화된 todo로 캡처. | `/gsd-capture` (기본값) | +| `ai-integration-phase.md` | 프레임워크 선택 → AI 조사 → 도메인 조사 → 평가 계획을 AI-SPEC.md로 오케스트레이션. | `/gsd-ai-integration-phase` | +| `analyze-dependencies.md` | 파일 겹침 및 의미론적 의존성에 대한 ROADMAP.md 단계 분석; `Depends on` 엣지 제안. | `/gsd-manager --analyze-deps` | +| `audit-fix.md` | 자율 감사-수정 파이프라인 — 감사 실행, 파싱, 분류, 수정, 테스트, 커밋. | `/gsd-audit-fix` | +| `audit-milestone.md` | 단계 검증을 집계하여 마일스톤이 완료 정의를 충족했는지 확인. | `/gsd-audit-milestone` | +| `audit-uat.md` | UAT 및 검증 파일의 단계 간 감사; 우선순위화된 미완료 항목 목록 생성. | `/gsd-audit-uat` | +| `autonomous.md` | 마일스톤 단계를 자율적으로 구동 — 나머지 모두, 범위, 또는 단일 단계. | `/gsd-autonomous` | +| `check-todos.md` | 미완료 todo 목록, 선택 허용, 컨텍스트 로드, 적절한 액션으로 라우팅. | `/gsd-capture --list` | +| `cleanup.md` | 완료된 마일스톤에서 누적된 단계 디렉터리 아카이브. | `/gsd-cleanup` | +| `code-review-fix.md` | gsd-code-fixer를 통해 수정별 원자적 커밋으로 REVIEW.md의 문제 자동 수정. | `/gsd-code-review --fix` | +| `code-review.md` | gsd-code-reviewer를 통한 단계 소스 변경 검토; REVIEW.md 생성. | `/gsd-code-review` | +| `complete-milestone.md` | 출시된 버전을 완료로 표시 — MILESTONES.md 항목, PROJECT.md 발전, 태그. | `/gsd-complete-milestone` | +| `diagnose-issues.md` | UAT 공백 조사 및 근본 원인 찾기를 위한 병렬 디버그 에이전트 오케스트레이션. | `/gsd-verify-work` (자동 진단) | +| `discovery-phase.md` | 적절한 깊이 수준에서 탐색 실행. | `/gsd-new-project` (탐색 경로) | +| `discuss-phase-assumptions.md` | 가정 모드 discuss — 코드베이스 우선 분석을 통한 구현 결정 추출. | `/gsd-discuss-phase` (`discuss_mode=assumptions`일 때) | +| `discuss-phase-power.md` | 파워 유저 discuss — 모든 질문을 JSON 상태 파일 + HTML UI로 사전 생성. | `/gsd-discuss-phase --power` | +| `discuss-phase.md` | 반복적인 회색 지대 토론을 통한 구현 결정 추출. | `/gsd-discuss-phase` | +| `mvp-phase.md` | 수직 MVP 슬라이스로 단계 계획 — 사용자 스토리, SPIDR 분할, 이후 plan-phase. | `/gsd-mvp-phase` | +| `do.md` | 사용자의 자유 형식 텍스트를 가장 적합한 GSD 명령어로 라우팅. | `/gsd-progress --do` | +| `docs-update.md` | 표준 및 수작업 프로젝트 문서 생성, 업데이트, 검증. | `/gsd-docs-update` | +| `edit-phase.md` | ROADMAP.md에서 기존 단계의 임의 필드를 번호와 위치를 유지한 채 인플레이스 편집. | `/gsd-phase --edit` | +| `eval-review.md` | 구현된 AI 단계의 평가 범위에 대한 소급 감사. | `/gsd-eval-review` | +| `execute-phase.md` | 웨이브 기반 병렬 실행으로 단계의 모든 계획 실행. | `/gsd-execute-phase` | +| `execute-plan.md` | 단계 프롬프트(PLAN.md)를 실행하고 결과 요약(SUMMARY.md) 생성. | `execute-phase.md` (계획별 하위 에이전트) | +| `explore.md` | 소크라테스식 아이디어 발상 — 탐색적 질문으로 개발자 안내. | `/gsd-explore` | +| `debug.md` | 체계적 디버깅 — 하위 명령어 라우팅, 세션 생성, gsd-debug-session-manager 위임. | `/gsd-debug` | +| `extract-learnings.md` | 완료된 단계 아티팩트에서 결정, 교훈, 패턴, 놀라운 점 추출. | `/gsd-extract-learnings` | +| `fast.md` | 하위 에이전트 오버헤드 없이 사소한 태스크 인라인 실행. | `/gsd-fast` | +| `forensics.md` | 실패한 워크플로우의 포렌식 조사 — git, 아티팩트, 상태 분석. | `/gsd-forensics` | +| `graduation.md` | 단계 간 반복되는 LEARNINGS.md 항목을 클러스터링하고 HITL 승격 후보 표면화. | `transition.md` (graduation_scan 단계) | +| `health.md` | `.planning/` 디렉터리 무결성 검증 및 실행 가능한 문제 보고. | `/gsd-health` | +| `help.md` | 전체 GSD Core 명령어 참조 표시. | `/gsd-help` | +| `import.md` | 기존 프로젝트 결정에 대한 충돌 감지로 외부 계획 수집. | `/gsd-import` | +| `inbox.md` | 프로젝트 기여 템플릿에 대한 열린 GitHub 이슈 및 PR 분류. | `/gsd-inbox` | +| `ingest-docs.md` | 혼합 계획 문서에 대한 저장소 스캔; 분류, 합성, 충돌 보고서로 `.planning/`에 부트스트랩 또는 병합. | `/gsd-ingest-docs` | +| `insert-phase.md` | 마일스톤 중간에 발견된 긴급 작업을 위한 소수점 단계 삽입. | `/gsd-phase --insert` | +| `list-phase-assumptions.md` | 계획 전 Claude의 단계에 대한 가정 표면화. | `/gsd-discuss-phase --assumptions` | +| `list-workspaces.md` | `~/gsd-workspaces/`에서 찾은 모든 GSD 워크스페이스를 상태와 함께 목록. | `/gsd-workspace --list` | +| `manager.md` | 인터랙티브 마일스톤 커맨드 센터 — 대시보드, 인라인 discuss, 백그라운드 plan/execute. | `/gsd-manager` | +| `map-codebase.md` | 병렬 코드베이스 매퍼 에이전트를 오케스트레이션하여 `.planning/codebase/` 문서 생성. | `/gsd-map-codebase` | +| `milestone-summary.md` | 마일스톤 아티팩트에서 온보딩 및 검토용 마일스톤 요약 합성. | `/gsd-milestone-summary` | +| `new-milestone.md` | 새 마일스톤 사이클 시작 — 프로젝트 컨텍스트 로드, 목표 수집, PROJECT.md/STATE.md 업데이트. | `/gsd-new-milestone` | +| `new-project.md` | 통합 새 프로젝트 플로우 — 질문, 조사(선택), 요구사항, 로드맵. | `/gsd-new-project` | +| `new-workspace.md` | 저장소 워크트리/클론과 독립적인 `.planning/`이 포함된 격리된 워크스페이스 생성. | `/gsd-workspace --new` | +| `next.md` | 현재 프로젝트 상태를 감지하고 다음 논리적 단계로 자동 진행. | `/gsd-progress --next` | +| `node-repair.md` | 실패한 태스크 검증을 위한 자율 수리 오퍼레이터; `execute-plan`에 의해 호출. | `execute-plan.md` (복구) | +| `note.md` | 마찰 없는 아이디어 캡처 — 단일 Write 호출, 단일 확인 줄. | `/gsd-capture --note` | +| `pause-work.md` | 구조화된 `.planning/HANDOFF.json` 및 `.continue-here.md` 핸드오프 파일 생성. | `/gsd-pause-work` | +| `plan-phase.md` | 통합 조사 및 검증 루프로 실행 가능한 PLAN.md 파일 생성. | `/gsd-plan-phase`, `/gsd-quick` | +| `plan-review-convergence.md` | 교차 AI 계획 수렴 루프 — HIGH 우려사항이 없을 때까지 리뷰 피드백으로 재계획. | `/gsd-plan-review-convergence` | +| `plant-seed.md` | 트리거 조건이 포함된 구조화된 씨앗 파일로 미래 지향적인 아이디어 캡처. | `/gsd-capture --seed` | +| `pr-branch.md` | `.planning/` 커밋을 필터링하여 풀 리퀘스트를 위한 깔끔한 브랜치 생성. | `/gsd-pr-branch` | +| `profile-user.md` | 전체 개발자 프로파일링 플로우 오케스트레이션 — 동의, 세션 스캔, 프로필 생성. | `/gsd-profile-user` | +| `progress.md` | 진행도 렌더링 — 프로젝트 컨텍스트, 위치, 다음 액션 라우팅. | `/gsd-progress` | +| `quick.md` | GSD 보장(원자적 커밋, 상태 추적)으로 빠른 태스크 실행. | `/gsd-quick` | +| `reapply-patches.md` | GSD 업데이트 후 로컬 수정 사항 재적용. | `/gsd-update --reapply` | +| `remove-phase.md` | 로드맵에서 미래 단계를 제거하고 후속 단계 번호 재지정. | `/gsd-phase --remove` | +| `remove-workspace.md` | GSD 워크스페이스 제거 및 워크트리 정리. | `/gsd-workspace --remove` | +| `resume-project.md` | 작업 재개 — STATE.md, HANDOFF.json, 아티팩트에서 전체 컨텍스트 복원. | `/gsd-resume-work` | +| `review.md` | 외부 CLI를 통한 교차 AI 계획 리뷰; REVIEWS.md 생성. | `/gsd-review` | +| `scan.md` | 신속한 단일 포커스 코드베이스 스캔 — map-codebase의 경량 대안. | `/gsd-map-codebase --fast` | +| `secure-phase.md` | 완료된 단계에 대한 소급 위협 완화 감사. | `/gsd-secure-phase` | +| `session-report.md` | 세션 보고서 — 토큰 사용량, 작업 요약, 결과. | `/gsd-pause-work --report` | +| `settings.md` | GSD 워크플로우 토글 및 모델 프로필 구성. | `/gsd-settings`, `/gsd-config --profile` | +| `settings-advanced.md` | GSD 파워 유저 설정 구성 — 계획 바운스, 타임아웃, 브랜치 템플릿, 교차 AI 실행, 런타임 설정. | `/gsd-config --advanced` | +| `settings-integrations.md` | 타사 API 키(Brave/Firecrawl/Exa), `review.models.` CLI 라우팅, 마스킹된(`****`) 표시로 `agent_skills.` 주입 구성. | `/gsd-config --integrations` | +| `ship.md` | 검증 후 PR 생성, 리뷰 실행, 병합 준비. | `/gsd-ship` | +| `sketch.md` | 스케치당 2-3개 변형으로 일회성 HTML 목업을 통한 설계 방향 탐색. | `/gsd-sketch` | +| `sketch-wrap-up.md` | 스케치 결과를 큐레이션하고 영구 `sketch-findings-[project]` 스킬로 패키징. | `/gsd-sketch --wrap-up` | +| `spec-phase.md` | 모호성 점수가 포함된 소크라테스식 스펙 정제; SPEC.md 생성. | `/gsd-spec-phase` | +| `spike.md` | 포커스된 일회성 실험을 통한 빠른 실현 가능성 검증. | `/gsd-spike` | +| `spike-wrap-up.md` | 스파이크 결과를 큐레이션하고 영구 `spike-findings-[project]` 스킬로 패키징. | `/gsd-spike --wrap-up` | +| `stats.md` | 프로젝트 통계 렌더링 — 단계, 계획, 요구사항, git 메트릭. | `/gsd-stats` | +| `sync-skills.md` | 교차 런타임 GSD 스킬 동기화 — 런타임 루트 간 `gsd-*` 스킬 디렉터리 비교 및 적용. | `/gsd-update --sync` | +| `transition.md` | 단계 경계 전환 워크플로우 — 워크스트림 확인, 상태 진행. | `execute-phase.md`, `/gsd-progress --next` | +| `ui-phase.md` | gsd-ui-researcher를 통한 UI-SPEC.md 설계 계약 생성. | `/gsd-ui-phase` | +| `ui-review.md` | gsd-ui-auditor를 통한 소급 6-기둥 시각 감사. | `/gsd-ui-review` | +| `ultraplan-phase.md` | [BETA] 계획을 Claude Code의 ultraplan 클라우드에 오프로드; 원격으로 초안 작성 후 `/gsd-import`로 가져오기. | `/gsd-ultraplan-phase` | +| `undo.md` | 안전한 git 되돌리기 — 단계 매니페스트를 사용한 단계 또는 계획 커밋. | `/gsd-undo` | +| `thread.md` | 세션 간 작업을 위한 영속 컨텍스트 스레드 생성, 목록, 닫기, 재개. | `/gsd-thread` | +| `update.md` | 체인지로그 표시와 함께 GSD를 최신 버전으로 업데이트. | `/gsd-update` | +| `validate-phase.md` | 완료된 단계의 나이퀴스트 검증 공백을 소급 감사 및 채움. | `/gsd-validate-phase` | +| `verify-phase.md` | 목표 역방향 분석을 통한 단계 목표 달성 검증. | `execute-phase.md` (실행 후) | +| `verify-work.md` | 자동 진단이 포함된 대화형 UAT — UAT.md 및 수정 계획 생성. | `/gsd-verify-work` | + +> **참고:** 일부 워크플로우는 직접적인 사용자 대면 명령어가 없습니다(예: `execute-plan.md`, `verify-phase.md`, `transition.md`, `node-repair.md`, `diagnose-issues.md`) — 이들은 오케스트레이터 워크플로우에 의해 내부적으로 호출됩니다. `discovery-phase.md`는 `/gsd-new-project`의 대체 진입점입니다. + +--- + +## 레퍼런스 (62개 출시) + +전체 목록은 `get-shit-done/references/*.md`에 있습니다. 레퍼런스는 워크플로우와 에이전트가 `@-참조`하는 공유 지식 문서입니다. 아래 그룹화는 [`docs/ARCHITECTURE.md`](ARCHITECTURE.md#references-get-shit-donereferencesmd) — 코어, 워크플로우, 씽킹 모델 클러스터, 모듈식 플래너 분해에 일치합니다. + +### 코어 레퍼런스 + +| 레퍼런스 | 역할 | +|-----------|------| +| `checkpoints.md` | 체크포인트 유형 정의 및 상호작용 패턴. | +| `gates.md` | plan-checker 및 verifier에 연결된 4개 표준 게이트 유형(Confirm, Quality, Safety, Transition). | +| `model-profiles.md` | 에이전트별 모델 티어 할당. | +| `model-profile-resolution.md` | 모델 해석 알고리즘 문서. | +| `verification-patterns.md` | 다양한 아티팩트 유형 검증 방법. | +| `verification-overrides.md` | 아티팩트별 검증 재정의 규칙. | +| `planning-config.md` | 전체 설정 스키마 및 동작. | +| `git-integration.md` | Git 커밋, 브랜칭, 히스토리 패턴. | +| `git-planning-commit.md` | 계획 디렉터리 커밋 관례. | +| `questioning.md` | 프로젝트 초기화를 위한 꿈 추출 철학. | +| `tdd.md` | 테스트 주도 개발 통합 패턴. | +| `ui-brand.md` | 시각적 출력 포매팅 패턴. | +| `common-bug-patterns.md` | 코드 리뷰 및 검증을 위한 일반적인 버그 패턴. | +| `debugger-philosophy.md` | `gsd-debugger`가 로드하는 상시 디버깅 원칙. | +| `mandatory-initial-read.md` | 에이전트 프롬프트에 주입되는 공유 필수 읽기 상용구. | +| `project-skills-discovery.md` | 에이전트 프롬프트에 주입되는 공유 프로젝트 스킬 발견 상용구. | + +### 워크플로우 레퍼런스 + +| 레퍼런스 | 역할 | +|-----------|------| +| `agent-contracts.md` | 오케스트레이터와 에이전트 간의 공식 인터페이스. | +| `context-budget.md` | 컨텍스트 윈도우 예산 할당 규칙. | +| `continuation-format.md` | 세션 연속/재개 포맷. | +| `domain-probes.md` | discuss-phase를 위한 도메인별 탐색 질문. | +| `gate-prompts.md` | 게이트/체크포인트 프롬프트 템플릿. | +| `scout-codebase.md` | discuss-phase 스카우트 단계를 위한 단계 유형→코드베이스 맵 선택 테이블(#2551로 추출). | +| `revision-loop.md` | 계획 수정 반복 패턴. | +| `universal-anti-patterns.md` | 감지하고 피해야 할 보편적인 안티패턴. | +| `worktree-path-safety.md` | 워크트리 가드 스위트: HEAD 어설션, cwd-드리프트 센티널(0a단계, #3097), 절대 경로 가드(0b단계, #3099) — ``를 통해 executor 스폰 프롬프트에 로드됨. | +| `artifact-types.md` | 계획 아티팩트 유형 정의. | +| `phase-argument-parsing.md` | 단계 인수 파싱 관례. | +| `decimal-phase-calculation.md` | 소수점 하위 단계 번호 규칙. | +| `workstream-flag.md` | 워크스트림 활성 포인터 관례(`--ws`). | +| `user-profiling.md` | 사용자 행동 프로파일링 감지 휴리스틱. | +| `thinking-partner.md` | 결정 시점에서의 조건부 씽킹 파트너 활성화. | +| `autonomous-smart-discuss.md` | 자율 모드를 위한 스마트 discuss 로직. | +| `ios-scaffold.md` | iOS 애플리케이션 스캐폴딩 패턴. | +| `ai-evals.md` | `/gsd-ai-integration-phase`를 위한 AI 평가 설계 레퍼런스. | +| `ai-frameworks.md` | `gsd-framework-selector`를 위한 AI 프레임워크 결정 매트릭스 레퍼런스. | +| `executor-examples.md` | gsd-executor 에이전트를 위한 작업 예시. | +| `doc-conflict-engine.md` | ingest/import 워크플로우를 위한 공유 충돌 감지 계약. | +| `execute-mvp-tdd.md` | MVP+TDD 하의 execute-phase 런타임 게이트 시맨틱 — 태스크 전 실패 테스트 검증, 단계 말 차단 리뷰. | +| `mvp-concepts.md` | 6개 MVP 관련 레퍼런스 파일에 대한 교차 참조 색인; 각 파일의 목적과 어떤 워크플로우가 로드하는지 매핑. | +| `verify-mvp-mode.md` | MVP 모드 단계를 위한 UAT 프레이밍 규칙 — 사용자 플로우 우선 순서, 지연된 기술적 확인, 사용자 스토리 형식 가드. | + +### 스케치 레퍼런스 + +`/gsd-sketch` 워크플로우 및 그 wrap-up 동반자에 의해 사용되는 레퍼런스. + +| 레퍼런스 | 역할 | +|-----------|------| +| `sketch-interactivity.md` | HTML 스케치를 인터랙티브하고 생생하게 만드는 규칙. | +| `sketch-theme-system.md` | 스케치 간 일관성을 위한 공유 CSS 테마 변수 시스템. | +| `sketch-tooling.md` | 모든 스케치에 포함된 플로팅 툴바 유틸리티. | +| `sketch-variant-patterns.md` | 다중 변형 HTML 패턴(탭, 나란히, 오버레이). | + +### 씽킹 모델 레퍼런스 + +씽킹 클래스 모델(o3, o4-mini, Gemini 2.5 Pro)을 GSD 워크플로우에 통합하기 위한 레퍼런스. + +| 레퍼런스 | 역할 | +|-----------|------| +| `thinking-models-debug.md` | 디버그 워크플로우를 위한 씽킹 모델 패턴. | +| `thinking-models-execution.md` | 실행 에이전트를 위한 씽킹 모델 패턴. | +| `thinking-models-planning.md` | 계획 에이전트를 위한 씽킹 모델 패턴. | +| `thinking-models-research.md` | 조사 에이전트를 위한 씽킹 모델 패턴. | +| `thinking-models-verification.md` | 검증 에이전트를 위한 씽킹 모델 패턴. | + +### 모듈식 플래너 분해 + +`gsd-planner` 에이전트는 런타임 문자 제한에 맞추기 위해 코어 에이전트와 레퍼런스 모듈로 분해됩니다. + +| 레퍼런스 | 역할 | +|-----------|------| +| `planner-antipatterns.md` | 플래너 안티패턴 및 구체성 예시. | +| `planner-chunked.md` | Windows stdio 멈춤 완화를 위한 청크 모드 반환 형식(`## OUTLINE COMPLETE`, `## PLAN COMPLETE`). | +| `planner-gap-closure.md` | 공백 채움 모드 동작(VERIFICATION.md 읽기, 타겟 재계획). | +| `planner-reviews.md` | 교차 AI 리뷰 통합(`/gsd-review`에서 REVIEWS.md 읽기). | +| `planner-revision.md` | 반복적 정제를 위한 계획 수정 패턴. | +| `planner-source-audit.md` | 플래너 소스 감사 및 권한 제한 규칙. | +| `planner-mvp-mode.md` | MVP 모드를 위한 수직 슬라이스 계획 규칙. | +| `planner-human-verify-mode.md` | `workflow.human_verify_mode = end-of-phase`에 대한 규칙: `checkpoint:human-verify` 태스크 방출 억제 및 ``를 통한 지연 항목 라우팅. | +| `planner-graphify-auto-update.md` | `load_graph_context`가 기존 부실 주석과 함께 `.last-build-status.json` 자동 업데이트 상태(실행 중 / 실패 / 부실 HEAD)를 표면화하는 방법. `graphify.auto_update`를 통해 옵트인 (#3347). | +| `planner-interface-context.md` | executor를 위한 인터페이스 컨텍스트 규칙 — 기존 코드에서 핵심 인터페이스/타입/익스포트 추출 방법과 다운스트림 계획이 사용할 새 인터페이스 문서화. | +| `skeleton-template.md` | 새 프로젝트 Walking Skeleton(Phase 1 + `--mvp`)을 위해 방출되는 SKELETON.md 템플릿. | +| `user-story-template.md` | MVP 계획을 위한 사용자 스토리 형식 — "As a / I want to / So that" 구조화된 필드. | +| `spidr-splitting.md` | MVP 모드에서 큰 사용자 스토리 처리를 위한 SPIDR 분할 분해 규칙. | + +> **하위 디렉터리:** `get-shit-done/references/few-shot-examples/`에는 특정 에이전트에서 참조되는 추가 퓨샷 예시(`plan-checker.md`, `verifier.md`)가 포함되어 있습니다. 이들은 62개 최상위 레퍼런스 수에 포함되지 않습니다. + +--- + +## CLI 모듈 (81개 출시) + +전체 목록: `get-shit-done/bin/lib/*.cjs`. + +| 모듈 | 책임 | +|--------|----------------| +| `active-workstream-store.cjs` | 워크스트림 소스 우선순위 및 선택(CLI `--ws` > `GSD_WORKSTREAM` 환경 변수 > 저장된 포인터); 이름 검증 및 환경 전파 | +| `adr-parser.cjs` | plan-phase 수집 익스프레스 경로를 위한 ADR 결정 파서; 섹션 동의어 정규화, 상태/결정/범위 펜스 파싱, 상태 거부 게이트 적용 | +| `agent-command-router.cjs` | `gsd-tools agent`를 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `artifacts.cjs` | 표준 아티팩트 레지스트리 — 알려진 `.planning/` 루트 파일 이름; `gsd-health` W019 린트에 사용 | +| `audit.cjs` | 감사 디스패치, 열린 감사 세션, 감사 스토리지 헬퍼 | +| `check-command-router.cjs` | `gsd-tools check`를 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `cjs-command-router-adapter.cjs` | 매니페스트 기반 CJS 명령어 패밀리 라우터를 위한 공유 호환성 어댑터 | +| `clock.cjs` | 결정론적 잠금 테스트를 위한 주입 가능한 클록 심(now/sleep) | +| `clusters.cjs` | 런타임 표면 모듈을 위한 스킬 클러스터 정의(ADR-0011 Phase 2) | +| `code-review-flags.cjs` | `/gsd:code-review`를 위한 타입 플래그 파서; `parseCodeReviewFlags(argv)` (→ `{ fix, all, auto, depth, files }`) 및 `resolveCodeReviewWorkflow(flags)` (→ `'code-review.md' \| 'code-review-fix.md'`) 내보내기; `--fix`/`--all`/`--auto` 라우팅을 위한 표준 디스패치 심 | +| `command-aliases.cjs` | 매니페스트 기반 패밀리 라우터를 위한 별칭/하위 명령어 메타데이터 | +| `command-arg-projection.cjs` | 명령어 패밀리 라우터 전반에 공유되는 타입 플래그 및 위치 인수 프로젝션 헬퍼 | +| `command-routing-hub.cjs` | 모든 명령어 패밀리 라우터를 위한 모드 결정(SDK vs CJS), 오류 분류, 예외 없음 계약을 집중화하는 순수 결과 디스패치 허브(#3788) | +| `commands.cjs` | 기타 CLI 명령어(슬러그, 타임스탬프, todo, 스캐폴딩, 통계) | +| `config-schema.cjs` | `VALID_CONFIG_KEYS` 및 동적 키 패턴의 단일 진실 소스; 유효성 검사기와 config-schema-docs 패리티 테스트 모두에서 가져옴 | +| `config.cjs` | `config.json` 읽기/쓰기, 섹션 초기화; `config-schema.cjs`에서 유효성 검사기 가져옴 | +| `config-types.cjs` | `model_policy` 설정 블록을 위한 TypeScript 타입 정의 — `ModelPolicyConfig`, `TierEntry`, `RuntimeTiers`; 게시 시 `src/config-types.cts`에서 컴파일됨(ADR-457) | +| `configuration.cjs` | 설정 모듈 — 표준 설정 로딩, 레거시 키 정규화, 기본값 병합, 명시적 온디스크 마이그레이션; SDK 및 CJS 소비자 모두를 위한 진실 소스 | +| `context-utilization.cjs` | `gsd-health --context`를 위한 순수 분류기 — (tokensUsed, contextWindow)를 60%/70% 파단점 임계값에 대한 `{ percent, state }` 트리아지 결과로 변환(#2792) | +| `core.cjs` | 오류 처리, 출력 포매팅, 공유 유틸리티, 런타임 폴백; 계획 워크스페이스 헬퍼를 위한 호환성 재내보내기 | +| `decisions.cjs` | CONTEXT.md `` 블록 파싱; 숫자형(D-42) 및 영숫자형(D-INFRA-01) ID 허용; `{id, text, category, tags, trackable}` 반환 | +| `docs.cjs` | 문서 업데이트 워크플로우 초기화, 마크다운 스캔, 모노레포 감지 | +| `drift.cjs` | 실행 후 코드베이스 구조 드리프트 감지기(#2003): 파일 변경을 new-dir/barrel/migration/route 카테고리로 분류하고 `last_mapped_commit` 프론트매터를 왕복 처리 | +| `fallow-runner.cjs` | `/gsd-code-review`를 위한 Fallow 감사 어댑터: 바이너리 해석(`PATH` 이후 `node_modules/.bin`), 실행 가능한 누락 바이너리 오류, 구조적 결과 정규화 | +| `frontmatter.cjs` | YAML 프론트매터 CRUD 작업 | +| `gap-checker.cjs` | 계획 후 공백 분석(#2493): REQUIREMENTS.md + CONTEXT.md 결정 대 PLAN.md 커버리지 보고서(`gsd-tools gap-analysis`) | +| `graphify.cjs` | `/gsd-graphify`를 위한 지식 그래프 빌드/쿼리/상태/비교 | +| `gsd2-import.cjs` | `/gsd-import --from-gsd2`를 위한 외부 계획 수집 | +| `init-command-router.cjs` | `gsd-tools init`을 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `init.cjs` | 각 워크플로우 유형을 위한 복합 컨텍스트 로딩 | +| `install-profiles.cjs` | `--minimal` 설치를 위한 설치 프로필 허용 목록 + 스킬 스테이징(#2762); 런타임 설정 디렉터리에 어떤 `gsd-*` 스킬/에이전트가 배치되는지에 대한 단일 진실 소스 | +| `installer-migration-authoring.cjs` | 레코드 메타데이터, 명시적 범위, 소유권 증거, 런타임 계약 인용을 위한 설치 마이그레이션 저작 가드레일 | +| `installer-migration-report.cjs` | 설치/업데이트 통합을 위한 설치 마이그레이션 보고서 프로젝션 및 차단 액션 가드 | +| `installer-migrations.cjs` | 설치 마이그레이션 계획, 아티팩트 분류, 설치 상태 지속성, 저널 적용, 롤백 헬퍼 | +| `intel.cjs` | `/gsd-map-codebase --query` 및 `gsd-intel-updater`를 지원하는 코드베이스 인텔 스토어 | +| `learnings.cjs` | `/gsd-extract-learnings`를 위한 단계 간 학습 추출 | +| `milestone.cjs` | 마일스톤 아카이브, 요구사항 마킹 | +| `model-catalog.cjs` | 공유 모델 카탈로그 JSON에 대한 CJS 어댑터; 모든 CLI 소비자를 위한 표준 런타임 티어 기본값, 에이전트 프로필 맵, 별칭 맵, 라우팅 메타데이터 내보내기 | +| `model-profiles.cjs` | `model-catalog.cjs`에서 파생된 하위 호환 프로필 헬퍼; 더 이상 자체 모델 테이블을 소유하지 않음 | +| `package-identity.cjs` | GSD의 게시된 패키지 좌표(npm 이름, bin 이름, 저장소 슬러그, 체인지로그 URL, 수동 설치 명령어)를 위한 생성된 단일 소스, package.json에서 파생; 업데이트 워커, `check-latest-version`, 설치 프로그램에서 읽음(#498) | +| `phase-command-router.cjs` | `gsd-tools phase`를 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `phase-lifecycle.cjs` | 단계 라이프사이클 SDK 핸들러에서 추출된 순수 계산 단계 라이프사이클 헬퍼 | +| `phase.cjs` | 단계 디렉터리 작업, 소수점 번호 체계, 계획 인덱싱 | +| `phases-command-router.cjs` | `gsd-tools phases`를 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `plan-scan.cjs` | 플랫 및 중첩 레이아웃에서 계획 및 요약 파일을 감지하는 표준 단계 계획 스캐너(k014) | +| `planning-workspace.cjs` | 계획 경로/워크스트림 심(`planningDir`, `planningPaths`, 활성 워크스트림 라우팅, `.planning/.lock` 오케스트레이션) | +| `project-root.cjs` | 4가지 휴리스틱(자체 `.planning/` 가드, `sub_repos` 설정, `multiRepo` 플래그, `.git` 휴리스틱)을 사용하여 시작 디렉터리에서 프로젝트 루트 해석 | +| `profile-output.cjs` | 프로필 렌더링, USER-PROFILE.md 및 dev-preferences.md 생성 | +| `profile-pipeline.cjs` | 사용자 행동 프로파일링 데이터 파이프라인, 세션 파일 스캔 | +| `prompt-budget.cjs` | 리뷰 프롬프트를 위한 순수 토큰 예산 계산 — 토큰 추정, 결정론적 트림 우선순위 적용(헤드 수축 PROJECT.md, 비례 계획 잘라내기, 컨텍스트/조사/요구사항 삭제, 하드 실패 가드), `review.max_prompt_tokens`를 위한 구조화된 메타데이터 반환(#3081) | +| `review-reviewer-selection.cjs` | `/gsd-review` 기본 리뷰어 정책 및 우선순위를 위한 리뷰어 선택/정규화 헬퍼 | +| `roadmap-command-router.cjs` | `gsd-tools roadmap`을 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `roadmap-upgrade.cjs` | 레거시 `Phase N` 항목을 마일스톤 접두사 `Phase M-NN` 관례로 변환하는 마이그레이션 도구; 드라이런 기본값 및 원자적 롤백이 있는 `computeMigrationPlan` + `applyMigration` | +| `roadmap.cjs` | ROADMAP.md 파싱, 단계 추출, 계획 진행도 | +| `runtime-artifact-layout.cjs` | 런타임 아티팩트 레이아웃 모듈 — 지원되는 각 런타임의 아티팩트 디렉터리 형태(명령어, 에이전트, 스킬) 해석; 런타임별 아티팩트 배치를 위한 단일 진실 소스(#3663) | +| `runtime-name-policy.cjs` | 런타임 이름 정규화 정책 — 경로 구성 및 표시에 사용되는 런타임 식별자를 위한 표준 토큰 위생 처리 | +| `runtime-homes.cjs` | 표준 런타임 → 전역 설정/스킬 디렉터리 매핑; Hermes 중첩 레이아웃 및 Cline 규칙 기반 제외를 포함한 15개 런타임에 대한 일급 지원(#3126) | +| `runtime-slash.cjs` | 런타임 인식 슬래시 명령어 포매터 — 사용자 대면 출력 및 영속 아티팩트에서 `/gsd-`(스킬 기반 런타임) 및 `$gsd-`(codex) 내보내기를 위한 단일 진실 소스(#3584) | +| `schema-detect.cjs` | ORM 패턴 스키마 드리프트 감지(Prisma, Drizzle, Supabase, TypeORM, Payload); `detectSchemaFiles`, `detectSchemaOrm`, `checkSchemaDrift`, `SCHEMA_PATTERNS`, `ORM_INFO` 내보내기 | +| `secrets.cjs` | 통합 키를 위한 시크릿 설정 마스킹 관례(`****`); `SECRET_CONFIG_KEYS`, `isSecretKey`, `maskSecret`, `maskIfSecret` 내보내기 | +| `semver-compare.cjs` | 업데이트 확인 훅, 상태라인 개발 설치 감지, 체인지셋 추출 범위 로직에서 사용되는 공유 semver 비교 정책 헬퍼(`compareSemverCore`, 안정적인 트리플릿 검증, 정규화된 튜플 파싱)(#10) | +| `security.cjs` | 경로 순회 방지, 프롬프트 주입 감지, 안전한 JSON/셸 헬퍼 | +| `shell-command-projection.cjs` | 관리형 훅 직렬화를 위한 런타임 인식 셸 명령어 프로젝션: 런타임/플랫폼별 PowerShell 호출 연산자 사용 결정 및 Windows 스크립트 경로 토큰 정규화 | +| `state-command-router.cjs` | `gsd-tools state`를 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `state.cjs` | STATE.md 파싱, 업데이트, 진행, 메트릭 | +| `state-document.cjs` | 순수 STATE.md 필드 추출, 교체, 상태 정규화, 진행도 계산 변환 | +| `surface.cjs` | 런타임 표면 모듈 — 설치 시 프로필 마커와 독립적으로 런타임 활성화/비활성화 표면 상태 관리(ADR-0011 Phase 2) | +| `task-command-router.cjs` | `gsd-tools task`를 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `template.cjs` | 변수 치환을 통한 템플릿 선택 및 채우기 | +| `uat.cjs` | UAT 파일 파싱, 검증 부채 추적, audit-uat 지원 | +| `ui-safety-gate.cjs` | 셸 없는 단어 경계 UI 토큰 감지기(#3706, #3718); stdin에서 단계 섹션 텍스트를 읽어 0(UI 발견) 또는 1(UI 없음) 종료; GSD 설치 프로그램이 `$RUNTIME_DIR`에 배포하도록 `get-shit-done/bin/lib/`에도 배포 | +| `update-context.cjs` | `/gsd:update`를 위한 순수 설치 컨텍스트 해석기 — update.md bash에서 포팅된 런타임/범위/설정 디렉터리/버전 감지(LOCAL/GLOBAL/UNKNOWN); `gsd-tools update-context` 지원(#498) | +| `validate-command-router.cjs` | `gsd-tools validate`를 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `validate.cjs` | 순수 단계 변형 정규화 헬퍼(`phaseVariants`, `buildRoadmapPhaseVariants`, `buildNotStartedPhaseVariants`), W006/W007 확인을 위해 `verify.cjs`에서 사용; I/O 없음, 비동기 없음 | +| `verify-command-router.cjs` | `gsd-tools verify`를 위한 얇은 CJS 하위 명령어 라우터 어댑터 | +| `verify.cjs` | 계획 구조, 단계 완전성, 레퍼런스, 커밋 검증 | +| `workstream-inventory-builder.cjs` | 순수 워크스트림 인벤토리 프로젝션 빌더 | +| `workstream-inventory.cjs` | 공유 워크스트림 인벤토리 프로젝션: 상태 필드, 단계/계획/요약 수, 로드맵 단계 수, 활성 마커 — `workstream-inventory-builder.cjs`에 순수 프로젝션을 위임하는 얇은 오케스트레이터 | +| `workstream-name-policy.cjs` | 표준 워크스트림 이름 검증(`isValidActiveWorkstreamName`, `hasInvalidPathSegment`, `validateWorkstreamName`) 및 슬러그 정규화(`toWorkstreamSlug`) | +| `workstream.cjs` | 워크스트림 CRUD, 마이그레이션, 세션 범위 활성 포인터 | +| `worktree-safety.cjs` | 워크트리 루트 해석 및 비파괴적 가지치기 정책 결정; W017 상태 확인 로직 소유 | + +[`docs/CLI-TOOLS.md`](CLI-TOOLS.md)는 이러한 모듈의 하위 집합을 설명할 수 있습니다. 파일시스템과 불일치할 경우 이 테이블과 디렉터리 목록이 권위 있는 출처입니다. + +--- + +## 훅 (14개 출시) + +전체 목록: `hooks/`. + +| 훅 | 이벤트 | 목적 | +|------|-------|---------| +| `gsd-statusline.js` | `statusLine` | 모델, 태스크, 디렉터리, 컨텍스트 사용량 표시 | +| `gsd-context-monitor.js` | `PostToolUse` / `AfterTool` | 35%/25% 남은 시점에 에이전트 대면 컨텍스트 경고 주입 | +| `gsd-check-update.js` | `SessionStart` | 새 GSD 버전 백그라운드 확인 | +| `gsd-check-update-worker.js` | (worker) | check-update를 위한 백그라운드 워커 헬퍼 | +| `gsd-update-banner.js` | `SessionStart` | GSD 상태라인을 사용하지 않을 때 업데이트 가용성을 표면화하는 옵트인 배너(PR #2795) | +| `gsd-prompt-guard.js` | `PreToolUse` | `.planning/` 쓰기에서 프롬프트 주입 패턴 스캔 (어드바이저리) | +| `gsd-workflow-guard.js` | `PreToolUse` | GSD 워크플로우 컨텍스트 외부의 파일 편집 감지 (어드바이저리, 옵트인) | +| `gsd-read-guard.js` | `PreToolUse` | 읽지 않은 파일에 대한 Edit/Write를 방지하는 어드바이저리 가드 | +| `gsd-read-injection-scanner.js` | `PostToolUse` | 도구 Read 결과에서 프롬프트 주입 패턴 스캔 (v1.36+, PR #2201) | +| `gsd-worktree-path-guard.js` | `PreToolUse` | 워크트리 루트 외부의 절대 경로로 Edit/Write/MultiEdit를 하드 차단 (PR #579, #260) | +| `gsd-session-state.sh` | `PostToolUse` | 셸 기반 런타임을 위한 세션 상태 추적 | +| `gsd-validate-commit.sh` | `PostToolUse` | 컨벤셔널 커밋 적용을 위한 커밋 검증 | +| `gsd-phase-boundary.sh` | `PostToolUse` | 워크플로우 전환을 위한 단계 경계 감지 | +| `gsd-graphify-update.sh` | `PostToolUse` | 메인 HEAD 진행 후 지식 그래프 자동 재빌드 (옵트인, 기본 비활성화 — #3347) | + +--- + +## 유지 관리 + +- 새 명령어, 에이전트, 워크플로우, 레퍼런스, CLI 모듈, 또는 훅이 출시될 때, 릴리스가 잘리기 전에 해당 섹션을 여기에 업데이트하세요. +- `tests/` 아래의 드리프트 가드 테스트(위의 "이 파일 사용 방법" 참조)는 출시된 모든 파일이 이 인벤토리에 열거되어 있음을 어설트합니다. 일치하는 행이 없는 새 파일은 CI를 실패시킵니다. +- 파일시스템이 `docs/ARCHITECTURE.md` 수량 또는 엄선된 하위 집합 문서(예: `docs/AGENTS.md`의 주요 목록)와 다를 경우, 이 파일이 진실의 원천입니다. + +## 관련 문서 + +- [명령어](COMMANDS.md) — 사용자 대면 명령어 참조 +- [아키텍처](ARCHITECTURE.md) — 표면이 어떻게 맞물리는지 +- [문서 색인](README.md) diff --git a/docs/ko-KR/README.md b/docs/ko-KR/README.md index 65a0f716f..c37f6da28 100644 --- a/docs/ko-KR/README.md +++ b/docs/ko-KR/README.md @@ -1,29 +1,69 @@ # GSD Core 문서 -GSD Core (Git. Ship. Done.) 문서입니다. GSD Core는 AI 코딩 에이전트를 위한 메타 프롬프팅, 컨텍스트 엔지니어링, 스펙 기반 개발 시스템입니다. +문서는 네 가지 유형으로 구성됩니다. **튜토리얼**은 직접 해보며 배우고, **how-to 가이드**는 특정 작업을 해결하며, **레퍼런스**는 권위 있는 사실을 제시하고, **설명**은 개념과 설계 결정을 탐구합니다. -언어 버전: [English](README.md) · [Português (pt-BR)](pt-BR/README.md) · [日本語](ja-JP/README.md) · [简体中文](zh-CN/README.md) · [한국어](ko-KR/README.md) +언어 버전: [English](../README.md) · [Português (pt-BR)](../pt-BR/README.md) · [日本語](../ja-JP/README.md) · [简体中文](../zh-CN/README.md) · **한국어** -## 문서 목차 +--- -| 문서 | 대상 독자 | 설명 | -|------|-----------|------| -| [Architecture](ARCHITECTURE.md) | 기여자, 고급 사용자 | 시스템 아키텍처, 에이전트 모델, 데이터 흐름, 내부 설계 | -| [Feature Reference](FEATURES.md) | 전체 사용자 | 요구사항이 포함된 전체 기능 및 함수 문서 | -| [Command Reference](COMMANDS.md) | 전체 사용자 | 모든 명령어의 구문, 플래그, 옵션 및 예제 | -| [Configuration Reference](CONFIGURATION.md) | 전체 사용자 | 전체 설정 스키마, 워크플로우 토글, 모델 프로필, git 브랜칭 | -| [CLI Tools Reference](CLI-TOOLS.md) | 기여자, 에이전트 작성자 | CJS `gsd-tools.cjs` + `gsd-tools.cjs query` 안내 | -| [Agent Reference](AGENTS.md) | 기여자, 고급 사용자 | 18개 전문 에이전트의 역할, 도구, 스폰 패턴 | -| [User Guide](USER-GUIDE.md) | 전체 사용자 | 워크플로우 안내, 문제 해결, 복구 방법 | -| [Context Monitor](context-monitor.md) | 전체 사용자 | 컨텍스트 윈도우 모니터링 훅 아키텍처 | -| [Discuss Mode](workflow-discuss-mode.md) | 전체 사용자 | discuss 단계의 assumptions 모드와 interview 모드 | +## 튜토리얼 -## 빠른 링크 +- [첫 번째 프로젝트](tutorials/your-first-project.md) — 설치부터 첫 단계 출시까지, 확실한 한 가지 경로 +- [기존 코드베이스 온보딩](tutorials/onboarding-an-existing-codebase.md) — 기존 저장소에 GSD Core 적용하기 -- **v1.39의 새로운 기능:** `--minimal` 설치 프로파일(콜드 스타트 ≥94% 감소), `/gsd-phase --edit`, 머지 후 빌드 & 테스트 게이트, `review.models.` 런타임별 리뷰 모델, 워크스트림 설정 상속, 수동 카나리 릴리스 워크플로, 스킬 통합(86 → 59) -- **시작하기:** [README](../README.md) → 설치 → `/gsd-new-project` -- **전체 워크플로우 안내:** [User Guide](USER-GUIDE.md) -- **모든 명령어 한눈에 보기:** [Command Reference](COMMANDS.md) -- **GSD 설정하기:** [Configuration Reference](CONFIGURATION.md) -- **시스템 내부 동작 원리:** [Architecture](ARCHITECTURE.md) -- **기여 또는 확장:** [CLI Tools Reference](CLI-TOOLS.md) + [Agent Reference](AGENTS.md) +--- + +## How-to guides + +- [런타임에 설치하기](how-to/install-on-your-runtime.md) — 지원하는 15개 런타임 각각의 설치 단계 +- [단계 논의하기](how-to/discuss-a-phase.md) — 기획 시작 전 구현 결정 사항 정리 +- [단계 기획하기](how-to/plan-a-phase.md) — 리서치 실행, 작업 분해, 플랜 품질 검증 +- [단계 실행하기](how-to/execute-a-phase.md) — 새 컨텍스트 서브에이전트로 병렬 웨이브 실행 +- [검증 및 출시](how-to/verify-and-ship.md) — 완료된 작업 검토, 오류 진단, PR 생성 +- [단계 자율 실행하기](how-to/run-phases-autonomously.md) — 무인 단계 실행을 위한 자율 모드 사용 +- [빠른 임시 작업 처리](how-to/handle-quick-and-fast-tasks.md) — 단계 루프 외 임시 작업에 `/gsd-quick`과 `/gsd-fast` 활용 +- [모델 프로필 설정](how-to/configure-model-profiles.md) — 고품질, 균형, 예산 모델 티어 전환 +- [크로스 AI 리뷰 설정](how-to/set-up-cross-ai-review.md) — 주 에이전트가 생성한 코드를 두 번째 AI가 검토하도록 설정 +- [워크스트림으로 병렬 작업](how-to/work-in-parallel-with-workstreams.md) — 워크스트림을 사용해 독립적인 작업 라인 동시 실행 +- [워크스페이스로 작업 격리](how-to/isolate-work-with-workspaces.md) — 워크스페이스로 실험적이거나 위험한 변경 사항 샌드박스 처리 +- [실패한 실행 디버깅](how-to/debug-a-failed-execution.md) — 깨지거나 불완전한 단계 실행 진단 및 복구 +- [스파이크와 스케치](how-to/spike-and-sketch.md) — 플랜 확정 전 탐색 작업에 `/gsd-spike`와 `/gsd-sketch` 활용 +- [UI 단계 설계](how-to/design-a-ui-phase.md) — 프론트엔드 및 시각적 작업에 UI 단계 루프 활용 +- [트래커 이슈로 GSD 구동](how-to/drive-gsd-from-a-tracker-issue.md) — GitHub, Linear, Jira 이슈에서 단계 시작 +- [GSD 2에서 마이그레이션](how-to/migrate-from-gsd-2.md) — 기존 GSD 2 프로젝트를 GSD Core로 업그레이드 +- [GSD 업데이트](how-to/update-gsd.md) — 설치 프로그램을 재실행해 최신 릴리스 적용 +- [복구 및 문제 해결](how-to/recover-and-troubleshoot.md) — 일반적인 문제 해결, 컨텍스트 재구축, 제거 + +--- + +## 레퍼런스 + +- [명령어](COMMANDS.md) — 플래그와 예제가 포함된 모든 명령어 +- [설정](CONFIGURATION.md) — 전체 설정 스키마, 모델 프로필, git 브랜칭 전략 +- [CLI 도구](CLI-TOOLS.md) — 워크플로우와 에이전트를 위한 `gsd-tools.cjs` 프로그래밍 API +- [기능](FEATURES.md) — 전체 기능 색인 +- [인벤토리](INVENTORY.md) — 설치된 스킬과 서피스 맵 +- [STATE.md 스키마](reference/state-md.md) — `.planning/STATE.md` 필드별 레퍼런스 +- [CONTEXT.md 스키마](reference/context-md.md) — `.planning/phases//CONTEXT.md` 필드별 레퍼런스 +- [PLAN.md 스키마](reference/plan-md.md) — `.planning/phases//PLAN.md` 필드별 레퍼런스 +- [기획 아티팩트](reference/planning-artifacts.md) — 모든 `.planning/` 파일과 역할 + +--- + +## 설명 + +- [컨텍스트 엔지니어링](explanation/context-engineering.md) — 컨텍스트 rot가 형성되는 방식과 GSD Core의 방지 방법 +- [단계 루프](explanation/the-phase-loop.md) — 논의 → 기획 → 실행 → 검증 → 출시 사이클의 설계 근거 +- [멀티 에이전트 오케스트레이션](explanation/multi-agent-orchestration.md) — 서브에이전트의 생성, 범위 지정, 조율 방식 +- [보안 모델](explanation/security-model.md) — 신뢰 경계, 권한, 안전한 자동화 +- [아키텍처](ARCHITECTURE.md) — 시스템 아키텍처, 에이전트 모델, 데이터 흐름 +- [논의 모드](workflow-discuss-mode.md) — `/gsd-discuss-phase`의 가정 모드와 인터뷰 모드 +- [컨텍스트 모니터링](context-monitor.md) — 컨텍스트 창 모니터링 훅 아키텍처 +- [이슈 기반 오케스트레이션](issue-driven-orchestration.md) — 기존 프리미티브를 사용해 트래커 이슈로 GSD를 구동하는 레시피 + +--- + +## Related + +- [루트 README](../README.md) — 랜딩 페이지, 빠른 시작, 문서 개요 +- [변경 로그](../../CHANGELOG.md) — 릴리스 이력 diff --git a/docs/ko-KR/USER-GUIDE.md b/docs/ko-KR/USER-GUIDE.md index 2c76bd4d9..0370fd753 100644 --- a/docs/ko-KR/USER-GUIDE.md +++ b/docs/ko-KR/USER-GUIDE.md @@ -1,21 +1,82 @@ # GSD 사용자 가이드 -워크플로우, 문제 해결, 설정에 대한 상세 레퍼런스입니다. 빠른 시작 설정은 [README](../README.md)를 참고하세요. +GSD Core의 설명형 동반 가이드 — 여기서 방향을 잡은 후 전용 문서로 이동하세요. + +> **GSD Core의 문서는 [Diataxis](https://diataxis.fr) 방식으로 구성되어 있습니다.** +> 목적별 탐색: [튜토리얼](README.md#tutorials) · [사용 방법 가이드](README.md#how-to-guides) · [레퍼런스](README.md#reference) · [설명](README.md#explanation) · [문서 인덱스](README.md) --- ## 목차 +- [슬래시 명령어 형식](#슬래시-명령어-형식-하이픈-vs-콜론) +- [네임스페이스 라우팅 입문](#네임스페이스-라우팅-입문-gsdnamespace-v140) +- [프로젝트 생명주기 개요](#프로젝트-생명주기-개요) - [워크플로우 다이어그램](#워크플로우-다이어그램) - [UI 설계 계약](#ui-설계-계약) -- [백로그 및 스레드](#백로그-및-스레드) -- [워크스트림](#워크스트림) +- [스파이킹 및 스케칭](#스파이킹--스케칭) +- [백로그 및 스레드](#백로그--스레드) +- [워크스트림 및 워크스페이스](#워크스트림--워크스페이스) - [보안](#보안) -- [명령어 레퍼런스](#명령어-레퍼런스) -- [설정 레퍼런스](#설정-레퍼런스) - [사용 예시](#사용-예시) - [문제 해결](#문제-해결) -- [복구 빠른 레퍼런스](#복구-빠른-레퍼런스) +- [복구 빠른 참조](#복구-빠른-참조) +- [프로젝트 파일 구조](#프로젝트-파일-구조) +- [관련 문서](#관련-문서) + +GitHub / Linear / Jira 이슈에서 GSD를 직접 구동하는 방법은 +[이슈 기반 오케스트레이션](issue-driven-orchestration.md) 가이드를 참조하세요 — +트래커 이슈를 workspace → discuss → plan → execute → verify → review → ship +루프에 매핑하는 레시피이며, 기존 GSD 프리미티브를 활용합니다. + +--- + +## 슬래시 명령어 형식 (하이픈 vs 콜론) + +GSD는 지원되는 모든 런타임에 **동일한 스킬 세트**를 제공하지만, 두 가지 슬래시 형식이 존재합니다: + +- **하이픈 형식** — `/gsd-command-name` — Claude Code, Copilot, OpenCode, Kilo, Cursor, Windsurf, Augment, Antigravity, Trae에서 사용됩니다. +- **콜론 형식** — `/gsd:command-name` — **Gemini CLI 전용**입니다. Gemini는 모든 플러그인 명령어를 플러그인 ID 아래에 네임스페이스로 묶으므로, `--gemini` 설치 시 설치 경로가 본문 텍스트 참조와 명령어 파일을 모두 콜론 형식으로 재작성합니다. + +직접 선택할 필요는 없습니다 — 설치 프로그램이 각 런타임의 명령어 디렉터리에 올바른 형식을 작성합니다. Gemini 터미널에서 안내를 따를 때는 각 슬래시 명령어를 읽을 때 `gsd` 뒤의 하이픈을 콜론으로 대체하세요. + +## 네임스페이스 라우팅 입문 (`gsd:`, v1.40) + +v1.40은 계층적 라우팅의 1단계 진입점으로 여섯 개의 **네임스페이스 메타스킬**을 제공합니다 — 이 스킬들은 열심히 스킬 목록을 나열하는 토큰 비용을 낮게 유지합니다(6개 라우터에 ~120 토큰 vs 86개 스킬 평면 목록에 ~2,150 토큰). 모든 구체적인 서브스킬은 여전히 직접 호출할 수 있습니다. 각 네임스페이스 라우터의 본문에는 사용자의 의도를 올바른 구체적 서브스킬로 매핑하는 라우팅 테이블이 포함되어 있습니다. + +| 네임스페이스 | 라우터 | 라우팅 대상 | +|-----------|--------|-----------| +| 단계 파이프라인 | `/gsd-workflow` | discuss / plan / execute / verify / phase / progress | +| 프로젝트 생명주기 | `/gsd-project` | milestones, audits, summary | +| 품질 게이트 | `/gsd-quality` | code review, debug, audit, security, eval, ui | +| 코드베이스 인텔리전스 | `/gsd-context` | map, graphify, docs, learnings | +| 관리 | `/gsd-manage` | config, workspace, workstreams, thread, update, ship, inbox | +| 탐색 및 캡처 | `/gsd-ideate` | explore, sketch, spike, spec, capture | + +네임스페이스 라우터를 직접 입력할 필요는 거의 없습니다. 이들의 가치는 모델이 올바른 서브스킬을 찾는 데 사용하는 라우팅 레이어에 있습니다 — 시스템 프롬프트가 86개 대신 6개 항목을 나열할 수 있도록 존재합니다. 구체적인 명령어를 이미 알고 있다면(예: `/gsd-plan-phase`) 직접 호출하세요. + +--- + +## 프로젝트 생명주기 개요 + +GSD 핵심 루프는 **discuss → plan → execute → verify → ship**이며, 단계별로 반복됩니다. 전체 단계별 안내 — 출력 예시, 생성되는 파일, 사용 가능한 모든 플래그 포함 — 는 전용 튜토리얼에 있습니다. + +[첫 번째 프로젝트](tutorials/your-first-project.md)를 참조하세요. + +새 마일스톤 시작 전 기존 코드베이스를 온보딩하는 방법은 [기존 코드베이스 온보딩](tutorials/onboarding-an-existing-codebase.md)을 참조하세요. + +**한눈에 보는 관련 플래그:** + +| 플래그 | 명령어 | 사용 시점 | +| ---- | ------- | ----------- | +| `--auto` | `/gsd-new-project` | 대화형 질문을 건너뛰고 PRD 파일에서 가져오기 | +| `--research` | `/gsd-quick` | 임시 작업에 리서치 에이전트 추가 | +| `--validate` | `/gsd-quick` | 계획 검사 및 실행 후 검증 추가 | +| `--chain` | `/gsd-discuss-phase` | 중단 없이 discuss → plan → execute 자동 연결 | +| `--skip-research` | `/gsd-plan-phase` | 도메인이 이미 익숙할 때 리서치 에이전트 건너뛰기 | +| `--draft` | `/gsd-ship` | 검토 준비 대신 초안 PR 생성 | + +모든 플래그가 포함된 전체 명령어 레퍼런스는 [`docs/COMMANDS.md`](COMMANDS.md)를 참조하세요. 구성 옵션(모델 프로필, 워크플로우 에이전트, git 브랜치)은 [`docs/CONFIGURATION.md`](CONFIGURATION.md)를 참조하세요. --- @@ -23,7 +84,7 @@ ### 전체 프로젝트 생명주기 -``` +```text ┌──────────────────────────────────────────────────┐ │ NEW PROJECT │ │ /gsd-new-project │ @@ -77,7 +138,7 @@ ### 계획 에이전트 조정 -``` +```text /gsd-plan-phase N │ ├── Phase Researcher (x4 parallel) @@ -109,23 +170,19 @@ └── Done ``` -### 검증 아키텍처 (Nyquist 레이어) +### 검증 아키텍처 (나이퀴스트 레이어) -plan-phase 조사 단계에서 GSD는 코드 작성 전에 각 페이즈 요구사항에 대한 자동화된 테스트 커버리지를 매핑합니다. 이를 통해 Claude의 실행자가 작업을 커밋할 때 몇 초 안에 검증할 수 있는 피드백 메커니즘이 이미 갖춰져 있습니다. +계획 단계 리서치 시, GSD는 코드 작성 전에 자동화된 테스트 커버리지를 각 단계 요구사항에 매핑합니다. 리서처는 기존 테스트 인프라를 감지하고, 각 요구사항을 특정 테스트 명령어에 매핑하며, 구현 시작 전에 생성해야 할 테스트 스캐폴딩(Wave 0 작업)을 식별합니다. 계획 검사기는 이를 8번째 검증 차원으로 적용합니다: 작업에 자동화된 검증 명령어가 없는 계획은 승인되지 않습니다. -조사자는 기존 테스트 인프라를 감지하고 각 요구사항을 특정 테스트 명령어에 매핑하며 구현 시작 전에 생성해야 할 테스트 스캐폴딩을 식별합니다 (Wave 0 작업). +**출력:** `{phase}-VALIDATION.md` — 단계의 피드백 계약. -계획 검사기는 이를 8번째 검증 차원으로 적용합니다. 작업에 자동화된 검증 명령어가 없는 계획은 승인되지 않습니다. - -**출력:** `{phase}-VALIDATION.md` — 해당 페이즈의 피드백 계약. - -**비활성화:** 테스트 인프라가 중요하지 않은 빠른 프로토타이핑 페이즈에서는 `/gsd-settings`에서 `workflow.nyquist_validation: false`로 설정하세요. +**비활성화:** 테스트 인프라가 초점이 아닌 빠른 프로토타이핑 단계에서는 `/gsd-settings`에서 `workflow.nyquist_validation: false`로 설정하세요. ### 소급 검증 (`/gsd-validate-phase`) -Nyquist 검증 도입 전에 실행된 페이즈나 전통적인 테스트 스위트만 있는 기존 코드베이스의 경우 커버리지 갭을 소급하여 감사하고 보완할 수 있습니다. +나이퀴스트 검증이 생기기 전에 실행된 단계, 또는 전통적인 테스트 슈트만 있는 기존 코드베이스에 대해 소급 감사 및 커버리지 간격을 채우세요: -``` +```text /gsd-validate-phase N | +-- Detect state (VALIDATION.md exists? SUMMARY.md exists?) @@ -144,203 +201,31 @@ Nyquist 검증 도입 전에 실행된 페이즈나 전통적인 테스트 스 +-- PARTIAL -> some gaps escalated to manual-only ``` -감사자는 구현 코드를 수정하지 않으며 테스트 파일과 VALIDATION.md만 수정합니다. 테스트에서 구현 버그가 발견되면 사용자가 처리할 수 있도록 에스컬레이션으로 표시됩니다. +감사자는 구현 코드를 수정하지 않으며, 테스트 파일과 VALIDATION.md만 수정합니다. 테스트에서 구현 버그가 발견되면, 처리할 에스컬레이션으로 표시됩니다. -**사용 시점:** Nyquist가 활성화되기 전에 계획된 페이즈를 실행한 후 또는 `/gsd-audit-milestone`에서 Nyquist 준수 갭이 발견된 후에 사용합니다. +### 가정 논의 모드 -### 가정 토론 모드 +기본적으로 `/gsd-discuss-phase`는 구현 선호도에 대한 개방형 질문을 합니다. 가정 모드는 이를 반전합니다: GSD가 먼저 코드베이스를 읽고, 단계 구축 방법에 대한 구조화된 가정을 표시하며, 수정 사항만 요청합니다. -기본적으로 `/gsd-discuss-phase`는 구현 선호도에 대한 개방형 질문을 합니다. 가정 모드는 이를 역전시킵니다. GSD가 먼저 코드베이스를 읽고 페이즈를 어떻게 구축할지에 대한 구조화된 가정을 제시한 후 수정사항만 요청합니다. +**활성화:** `/gsd-settings`를 통해 `workflow.discuss_mode`를 `'assumptions'`으로 설정하세요. -**활성화:** `/gsd-settings`에서 `workflow.discuss_mode`를 `'assumptions'`로 설정합니다. +전체 discuss 모드 레퍼런스는 [docs/workflow-discuss-mode.md](workflow-discuss-mode.md)를 참조하세요. -**작동 방식.** -1. PROJECT.md, 코드베이스 매핑, 기존 관례를 읽습니다. -2. 구조화된 가정 목록을 생성합니다 (기술 선택, 패턴, 파일 위치). -3. 가정을 확인, 수정 또는 확장하도록 제시합니다. -4. 확인된 가정으로 CONTEXT.md를 작성합니다. +### 결정 커버리지 게이트 -**사용 시점.** -- 코드베이스를 잘 아는 숙련된 개발자 -- 개방형 질문이 속도를 저해하는 빠른 반복 개발 -- 패턴이 잘 확립되고 예측 가능한 프로젝트 +discuss 단계는 `` 블록 아래 CONTEXT.md에 구현 결정을 번호 매긴 글머리로 캡처합니다(`- **D-01:** …`). 두 개의 게이트는 해당 결정이 계획과 배포된 코드에 반영되도록 보장합니다. -전체 discuss-mode 레퍼런스는 [docs/workflow-discuss-mode.md](workflow-discuss-mode.md)를 참고하세요. +**계획 단계 번역 게이트 (차단).** 계획 후, GSD는 추적 가능한 모든 결정이 최소한 하나의 계획의 `must_haves`, `truths`, 또는 본문에 나타날 때까지 단계를 계획된 것으로 표시하기를 거부합니다. ---- +**검증 단계 유효성 검사 게이트 (비차단).** 검증 중에 GSD는 추적 가능한 각 결정에 대해 계획, SUMMARY.md, 수정된 파일, 최근 커밋 메시지를 검색합니다. 누락된 항목은 경고 섹션으로 VERIFICATION.md에 기록되며, 검증 상태는 변경되지 않습니다. -## UI 설계 계약 +**결정 제외.** `` 내부의 `### Claude's Discretion` 제목 아래로 이동하거나 태그를 지정하세요: `- **D-08 [informational]:** …`, `- **D-09 [folded]:** …`, `- **D-10 [deferred]:** …`. -### 배경 - -AI 생성 프론트엔드가 시각적으로 일관성이 없는 이유는 Claude Code의 UI 능력이 부족해서가 아닙니다. 실행 전에 설계 계약이 존재하지 않았기 때문입니다. 공유 간격 척도, 색상 계약, 또는 카피라이팅 기준 없이 구축된 다섯 개의 컴포넌트는 다섯 가지 약간씩 다른 시각적 결정을 만들어냅니다. - -`/gsd-ui-phase`는 계획 전에 설계 계약을 확정합니다. `/gsd-ui-review`는 실행 후 결과를 감사합니다. - -### 명령어 - -| 명령어 | 설명 | -|--------|------| -| `/gsd-ui-phase [N]` | 프론트엔드 페이즈를 위한 UI-SPEC.md 설계 계약 생성 | -| `/gsd-ui-review [N]` | 구현된 UI의 6개 기둥 기반 시각적 감사 소급 수행 | - -### 워크플로우: `/gsd-ui-phase` - -**실행 시점:** `/gsd-discuss-phase` 이후, `/gsd-plan-phase` 이전 — 프론트엔드/UI 작업이 포함된 페이즈. - -**흐름.** -1. CONTEXT.md, RESEARCH.md, REQUIREMENTS.md에서 기존 결정사항을 읽습니다. -2. 디자인 시스템 상태를 감지합니다 (shadcn components.json, Tailwind 설정, 기존 토큰). -3. shadcn 초기화 게이트 — React/Next.js/Vite 프로젝트에 없으면 초기화를 제안합니다. -4. 아직 답변되지 않은 설계 계약 질문만 묻습니다 (간격, 타이포그래피, 색상, 카피라이팅, 레지스트리 안전). -5. 페이즈 디렉터리에 `{phase}-UI-SPEC.md`를 작성합니다. -6. 6개 차원에 대해 검증합니다 (카피라이팅, 시각, 색상, 타이포그래피, 간격, 레지스트리 안전). -7. BLOCKED인 경우 수정 루프 (최대 2회 반복). - -**출력:** `.planning/phases/{phase-dir}/`의 `{padded_phase}-UI-SPEC.md` - -### 워크플로우: `/gsd-ui-review` - -**실행 시점:** `/gsd-execute-phase` 또는 `/gsd-verify-work` 이후 — 프론트엔드 코드가 있는 모든 프로젝트. - -**독립 실행:** 모든 프로젝트에서 작동하며 GSD 관리 프로젝트가 아니어도 됩니다. UI-SPEC.md가 없으면 추상적인 6개 기둥 기준으로 감사합니다. - -**6개 기둥 (각 1-4점 평가).** -1. 카피라이팅 — CTA 레이블, 빈 상태, 오류 상태 -2. 시각 — 초점, 시각적 계층, 아이콘 접근성 -3. 색상 — 강조 사용 규율, 60/30/10 준수 -4. 타이포그래피 — 폰트 크기/굵기 제약 준수 -5. 간격 — 그리드 정렬, 토큰 일관성 -6. 경험 디자인 — 로딩/오류/빈 상태 커버리지 - -**출력:** 점수와 상위 3개 우선 수정사항이 포함된 페이즈 디렉터리의 `{padded_phase}-UI-REVIEW.md` - -### 설정 - -| 설정 | 기본값 | 설명 | -|------|--------|------| -| `workflow.ui_phase` | `true` | 프론트엔드 페이즈를 위한 UI 설계 계약 생성 | -| `workflow.ui_safety_gate` | `true` | plan-phase가 프론트엔드 페이즈에서 /gsd-ui-phase 실행을 유도합니다 | - -두 설정 모두 부재 시 활성화 패턴을 따릅니다. `/gsd-settings`에서 비활성화할 수 있습니다. - -### shadcn 초기화 - -React/Next.js/Vite 프로젝트에서 `components.json`이 없으면 UI 조사자가 shadcn 초기화를 제안합니다. 흐름은 다음과 같습니다. - -1. `ui.shadcn.com/create`를 방문하여 프리셋을 구성합니다. -2. 프리셋 문자열을 복사합니다. -3. `npx shadcn init --preset {paste}`를 실행합니다. -4. 프리셋은 전체 디자인 시스템(색상, 테두리 반경, 폰트)을 인코딩합니다. - -프리셋 문자열은 GSD의 1급 계획 아티팩트가 되어 페이즈와 마일스톤에 걸쳐 재현 가능합니다. - -### 레지스트리 안전 게이트 - -서드파티 shadcn 레지스트리는 임의의 코드를 주입할 수 있습니다. 안전 게이트는 다음을 요구합니다. -- `npx shadcn view {component}` — 설치 전 검사 -- `npx shadcn diff {component}` — 공식 버전과 비교 - -`workflow.ui_safety_gate` 설정 토글로 제어됩니다. - -### 스크린샷 저장 - -`/gsd-ui-review`는 Playwright CLI를 통해 `.planning/ui-reviews/`에 스크린샷을 캡처합니다. 바이너리 파일이 git에 포함되지 않도록 `.gitignore`가 자동으로 생성됩니다. 스크린샷은 `/gsd-complete-milestone` 실행 시 정리됩니다. - ---- - -## 백로그 및 스레드 - -### 백로그 파킹 롯 - -활성 계획에 아직 준비되지 않은 아이디어는 999.x 번호 체계를 사용하여 백로그에 보관하며 활성 페이즈 순서 밖에 유지됩니다. - -``` -/gsd-capture --backlog "GraphQL API layer" # Creates 999.1-graphql-api-layer/ -/gsd-capture --backlog "Mobile responsive" # Creates 999.2-mobile-responsive/ -``` - -백로그 항목은 전체 페이즈 디렉터리를 얻으므로 `/gsd-discuss-phase 999.1`로 아이디어를 더 탐구하거나 준비가 되면 `/gsd-plan-phase 999.1`을 사용할 수 있습니다. - -`/gsd-review-backlog`으로 **검토 및 승격**합니다 — 모든 백로그 항목을 표시하고 승격 (활성 순서로 이동), 유지 (백로그에 남김), 또는 제거 (삭제)를 선택할 수 있습니다. - -### 시드 - -시드는 트리거 조건이 있는 미래 지향적인 아이디어입니다. 백로그 항목과 달리 시드는 적절한 마일스톤 시점에 자동으로 표면화됩니다. - -``` -/gsd-capture --seed "Add real-time collab when WebSocket infra is in place" -``` - -시드는 전체 WHY와 언제 표면화할지를 보존합니다. `/gsd-new-milestone`은 모든 시드를 스캔하여 일치 항목을 제시합니다. - -**저장 위치:** `.planning/seeds/SEED-NNN-slug.md` - -### 지속적인 컨텍스트 스레드 - -스레드는 여러 세션에 걸쳐 이어지지만 특정 페이즈에 속하지 않는 작업을 위한 경량 교차 세션 지식 저장소입니다. - -``` -/gsd-thread # List all threads -/gsd-thread fix-deploy-key-auth # Resume existing thread -/gsd-thread "Investigate TCP timeout" # Create new thread -``` - -스레드는 `/gsd-pause-work`보다 가볍습니다. 페이즈 상태나 계획 컨텍스트가 없습니다. 각 스레드 파일에는 목표, 컨텍스트, 참조, 다음 단계 섹션이 포함됩니다. - -스레드가 성숙해지면 페이즈(`/gsd-phase`)나 백로그 항목(`/gsd-capture --backlog`)으로 승격할 수 있습니다. - -**저장 위치:** `.planning/threads/{slug}.md` - ---- - -## 워크스트림 - -워크스트림을 사용하면 상태 충돌 없이 여러 마일스톤 영역을 동시에 작업할 수 있습니다. 각 워크스트림은 독립적인 `.planning/` 상태를 가지므로 워크스트림 간 전환 시 진행 상황이 덮어쓰이지 않습니다. - -**사용 시점:** 서로 다른 관심 영역(예: 백엔드 API와 프론트엔드 대시보드)에 걸친 마일스톤 기능을 독립적으로 계획, 실행 또는 토론하면서 컨텍스트 혼합 없이 작업하고 싶을 때 사용합니다. - -### 명령어 - -| 명령어 | 목적 | -|--------|------| -| `/gsd-workstreams create ` | 격리된 계획 상태로 새 워크스트림 생성 | -| `/gsd-workstreams switch ` | 활성 컨텍스트를 다른 워크스트림으로 전환 | -| `/gsd-workstreams list` | 모든 워크스트림과 활성 워크스트림 표시 | -| `/gsd-workstreams complete ` | 워크스트림을 완료로 표시하고 상태 아카이브 | - -### 작동 방식 - -각 워크스트림은 자체 `.planning/` 디렉터리 하위 트리를 유지합니다. 워크스트림을 전환하면 GSD가 활성 계획 컨텍스트를 교체하여 `/gsd-progress`, `/gsd-discuss-phase`, `/gsd-plan-phase` 및 기타 명령어가 해당 워크스트림의 상태로 동작합니다. - -이는 `/gsd-workspace --new`(별도 저장소 worktree를 생성)보다 가볍습니다. 워크스트림은 동일한 코드베이스와 git 히스토리를 공유하지만 계획 아티팩트를 격리합니다. - ---- - -## 보안 - -### 심층 방어 (v1.27) - -GSD는 LLM 시스템 프롬프트가 되는 마크다운 파일을 생성합니다. 즉 계획 아티팩트로 유입되는 사용자 제어 텍스트는 잠재적인 간접 프롬프트 인젝션 벡터입니다. v1.27에서 중앙화된 보안 강화가 도입되었습니다. - -**경로 순회 방지.** -모든 사용자 제공 파일 경로(`--text-file`, `--prd`)는 프로젝트 디렉터리 내에서 해석되는지 검증합니다. macOS `/var` → `/private/var` 심볼릭 링크 해석을 처리합니다. - -**프롬프트 인젝션 감지.** -`security.cjs` 모듈은 사용자 제공 텍스트가 계획 아티팩트에 입력되기 전에 알려진 인젝션 패턴(역할 재정의, 지시 우회, 시스템 태그 인젝션)을 스캔합니다. - -**런타임 훅.** -- `gsd-prompt-guard.js` — `.planning/`에 대한 Write/Edit 호출에서 인젝션 패턴 스캔 (항상 활성, 권고만) -- `gsd-workflow-guard.js` — GSD 워크플로우 컨텍스트 밖의 파일 편집 시 경고 (`hooks.workflow_guard`로 선택적 활성화) - -**CI 스캐너.** -`prompt-injection-scan.test.cjs`는 모든 에이전트, 워크플로우, 명령어 파일에서 내장된 인젝션 벡터를 스캔합니다. 테스트 스위트의 일부로 실행됩니다. - ---- +**게이트 비활성화.** `.planning/config.json`에서 `workflow.context_coverage_gate: false`로 설정하세요(또는 `/gsd-settings`를 통해). 기본값은 `true`입니다. ### 실행 웨이브 조정 -``` +```text /gsd-execute-phase N │ ├── Analyze plan dependencies @@ -353,232 +238,205 @@ GSD는 LLM 시스템 프롬프트가 되는 마크다운 파일을 생성합니 │ └── Executor C (fresh 200K context) -> commit │ └── Verifier - └── Check codebase against phase goals - │ - ├── PASS -> VERIFICATION.md (success) - └── FAIL -> Issues logged for /gsd-verify-work -``` - -### 브라운필드 워크플로우 (기존 코드베이스) - -``` - /gsd-map-codebase - │ - ├── Stack Mapper -> codebase/STACK.md - ├── Arch Mapper -> codebase/ARCHITECTURE.md - ├── Convention Mapper -> codebase/CONVENTIONS.md - └── Concern Mapper -> codebase/CONCERNS.md - │ - ┌───────▼──────────┐ - │ /gsd-new-project │ <- Questions focus on what you're ADDING - └──────────────────┘ + ├── Check codebase against phase goals + ├── Test quality audit (disabled tests, circular patterns, assertion strength) + │ + ├── PASS -> VERIFICATION.md (success) + └── FAIL -> Issues logged for /gsd-verify-work ``` --- -## 명령어 레퍼런스 +## UI 설계 계약 -### 핵심 워크플로우 +AI가 생성한 프런트엔드가 시각적으로 일관되지 않은 이유는 Claude Code가 UI에 능숙하지 않아서가 아니라, 실행 전에 설계 계약이 존재하지 않았기 때문입니다. `/gsd-ui-phase`는 계획 전에 설계 계약을 고정하고, `/gsd-ui-review`는 실행 후 결과를 감사합니다. -| 명령어 | 목적 | 사용 시점 | -|--------|------|----------| -| `/gsd-new-project` | 전체 프로젝트 초기화: 질문, 조사, 요구사항, 로드맵 | 새 프로젝트 시작 시 | -| `/gsd-new-project --auto @idea.md` | 문서에서 자동 초기화 | PRD나 아이디어 문서가 준비된 경우 | -| `/gsd-discuss-phase [N]` | 구현 결정사항 캡처 | 계획 전 구축 방식을 결정할 때 | -| `/gsd-ui-phase [N]` | UI 설계 계약 생성 | discuss-phase 이후, plan-phase 이전 (프론트엔드 페이즈) | -| `/gsd-plan-phase [N]` | 조사 + 계획 + 검증 | 페이즈 실행 전 | -| `/gsd-execute-phase ` | 병렬 웨이브로 모든 계획 실행 | 계획이 완료된 후 | -| `/gsd-verify-work [N]` | 자동 진단을 포함한 수동 UAT | 실행 완료 후 | -| `/gsd-ship [N]` | 검증된 작업으로 PR 생성 | 검증 통과 후 | -| `/gsd-fast ` | 계획을 완전히 건너뛰는 인라인 간단 작업 | 오타 수정, 설정 변경, 소규모 리팩터링 | -| `/gsd-progress --next` | 상태 자동 감지 및 다음 단계 실행 | 언제든 — "다음에 무엇을 해야 하나?" | -| `/gsd-ui-review [N]` | 6개 기둥 기반 시각적 감사 소급 수행 | 실행 또는 verify-work 이후 (프론트엔드 프로젝트) | -| `/gsd-audit-milestone` | 마일스톤이 완료 정의를 충족했는지 검증 | 마일스톤 완료 전 | -| `/gsd-complete-milestone` | 마일스톤 아카이브 및 릴리스 태그 생성 | 모든 페이즈 검증 완료 시 | -| `/gsd-new-milestone [name]` | 다음 버전 사이클 시작 | 마일스톤 완료 후 | +전체 워크플로우, 구성, shadcn 초기화, 레지스트리 안전 게이트는 [UI 단계 설계](how-to/design-a-ui-phase.md)를 참조하세요. -### 탐색 +**빠른 참조:** -| 명령어 | 목적 | 사용 시점 | -|--------|------|----------| -| `/gsd-progress` | 상태 및 다음 단계 표시 | 언제든 -- "지금 어디 있나?" | -| `/gsd-resume-work` | 마지막 세션의 전체 컨텍스트 복원 | 새 세션 시작 시 | -| `/gsd-pause-work` | 구조화된 핸드오프 저장 (HANDOFF.json + continue-here.md) | 페이즈 중간에 중단할 때 | -| `/gsd-pause-work --report` | 작업 및 결과가 포함된 세션 요약 생성 | 세션 종료 시, 이해관계자 공유 시 | -| `/gsd-help` | 모든 명령어 표시 | 빠른 레퍼런스 | -| `/gsd-update` | 변경 로그 미리보기와 함께 GSD 업데이트 | 새 버전 확인 시 | +| 명령어 | 설명 | +| -------------------- | -------------------------------------------------------- | +| `/gsd-ui-phase [N]` | 프런트엔드 단계를 위한 UI-SPEC.md 설계 계약 생성 | +| `/gsd-ui-review [N]` | 구현된 UI의 소급 6-기둥 시각 감사 | -### 페이즈 관리 - -| 명령어 | 목적 | 사용 시점 | -|--------|------|----------| -| `/gsd-phase` | 로드맵에 새 페이즈 추가 | 초기 계획 후 범위가 늘어날 때 | -| `/gsd-phase --insert [N]` | 긴급 작업 삽입 (소수점 번호 체계) | 마일스톤 중간의 긴급 수정 시 | -| `/gsd-phase --remove [N]` | 미래 페이즈 제거 및 재번호 | 기능 범위 축소 시 | -| `/gsd-discuss-phase --assumptions [N]` | Claude의 예상 접근 방식 미리 확인 | 계획 전 방향 검증 시 | -| `/gsd-plan-phase --research-phase [N]` | 심층 에코시스템 조사만 수행 | 복잡하거나 익숙하지 않은 도메인 | - -### 브라운필드 및 유틸리티 - -| 명령어 | 목적 | 사용 시점 | -|--------|------|----------| -| `/gsd-map-codebase` | 기존 코드베이스 분석 | 기존 코드에서 `/gsd-new-project` 실행 전 | -| `/gsd-quick` | GSD 보증을 갖춘 임시 작업 | 버그 수정, 소규모 기능, 설정 변경 | -| `/gsd-debug [desc]` | 지속적인 상태를 유지하는 체계적인 디버깅 | 문제가 발생했을 때 | -| `/gsd-forensics` | 워크플로우 실패에 대한 진단 보고서 | 상태, 아티팩트, git 히스토리가 손상된 것 같을 때 | -| `/gsd-capture [desc]` | 나중을 위한 아이디어 캡처 | 세션 중에 생각이 날 때 | -| `/gsd-capture --list` | 보류 중인 할 일 목록 | 캡처된 아이디어 검토 시 | -| `/gsd-settings` | 워크플로우 토글 및 모델 프로필 설정 | 모델 변경, 에이전트 토글 시 | -| `/gsd-config --profile ` | 빠른 프로필 전환 | 비용/품질 트레이드오프 변경 시 | -| `/gsd-update --reapply` | 업데이트 후 로컬 수정사항 복원 | 로컬 편집이 있는 상태에서 `/gsd-update` 이후 | - -### 코드 품질 및 리뷰 - -| 명령어 | 목적 | 사용 시점 | -|--------|------|----------| -| `/gsd-review --phase N` | 외부 CLI를 통한 교차 AI 동료 리뷰 | 실행 전 계획 검증 시 | -| `/gsd-pr-branch` | `.planning/` 커밋을 필터링한 깔끔한 PR 브랜치 | 계획 없는 diff로 PR 생성 전 | -| `/gsd-audit-uat` | 모든 페이즈의 검증 부채 감사 | 마일스톤 완료 전 | - -### 백로그 및 스레드 - -| 명령어 | 목적 | 사용 시점 | -|--------|------|----------| -| `/gsd-capture --backlog ` | 백로그 파킹 롯에 아이디어 추가 (999.x) | 활성 계획에 준비되지 않은 아이디어 | -| `/gsd-review-backlog` | 백로그 항목 승격/유지/제거 | 새 마일스톤 전 우선순위 결정 시 | -| `/gsd-capture --seed ` | 트리거 조건이 있는 미래 지향적인 아이디어 | 미래 마일스톤에서 표면화되어야 할 아이디어 | -| `/gsd-thread [name]` | 지속적인 컨텍스트 스레드 | 페이즈 구조 밖의 교차 세션 작업 | +| 설정 | 기본값 | 설명 | +| ------------------------- | ------- | ----------------------------------------------------------- | +| `workflow.ui_phase` | `true` | 프런트엔드 단계를 위한 UI 설계 계약 생성 | +| `workflow.ui_safety_gate` | `true` | 계획 단계에서 프런트엔드 단계에 대해 /gsd-ui-phase 실행 유도 | --- -## 설정 레퍼런스 +## 스파이킹 및 스케칭 -GSD는 프로젝트 설정을 `.planning/config.json`에 저장합니다. `/gsd-new-project` 중에 설정하거나 나중에 `/gsd-settings`로 업데이트할 수 있습니다. +계획 전에 기술적 타당성을 검증하려면 `/gsd-spike`를, 설계 전에 시각적 방향을 탐색하려면 `/gsd-sketch`를 사용하세요. 두 명령어 모두 `.planning/`에 아티팩트를 저장하고 마무리 동반 명령어를 통해 프로젝트 스킬 시스템과 통합됩니다. -### 전체 config.json 스키마 +전체 워크플로우와 흐름 다이어그램은 [스파이크 및 스케치](how-to/spike-and-sketch.md)를 참조하세요. -```json -{ - "mode": "interactive", - "granularity": "standard", - "model_profile": "balanced", - "planning": { - "commit_docs": true, - "search_gitignored": false - }, - "workflow": { - "research": true, - "plan_check": true, - "verifier": true, - "nyquist_validation": true, - "ui_phase": true, - "ui_safety_gate": true, - "research_before_questions": false, - "discuss_mode": "standard", - "skip_discuss": false - }, - "resolve_model_ids": "anthropic", - "hooks": { - "context_warnings": true, - "workflow_guard": false - }, - "git": { - "branching_strategy": "none", - "phase_branch_template": "gsd/phase-{phase}-{slug}", - "milestone_branch_template": "gsd/{milestone}-{slug}", - "quick_branch_template": null - } -} +**일반적인 흐름:** + +```bash +/gsd-spike "SSE vs WebSocket" # Validate the approach +/gsd-spike --wrap-up # Package learnings + +/gsd-sketch "real-time feed UI" # Explore the design +/gsd-sketch --wrap-up # Package decisions + +/gsd-discuss-phase N # Lock in preferences (now informed by spike + sketch) +/gsd-plan-phase N # Plan with confidence ``` -### 핵심 설정 +--- -| 설정 | 옵션 | 기본값 | 제어 대상 | -|------|------|--------|----------| -| `mode` | `interactive`, `yolo` | `interactive` | `yolo`는 결정을 자동 승인하고 `interactive`는 각 단계에서 확인합니다 | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | 페이즈 세분화: 범위를 얼마나 세밀하게 나눌지 (3-5, 5-8, 또는 8-12 페이즈) | -| `model_profile` | `quality`, `balanced`, `budget`, `inherit` | `balanced` | 각 에이전트의 모델 티어 (아래 표 참고) | +## 백로그 및 스레드 -### 계획 설정 +### 백로그 파킹 랏 -| 설정 | 옵션 | 기본값 | 제어 대상 | -|------|------|--------|----------| -| `planning.commit_docs` | `true`, `false` | `true` | `.planning/` 파일을 git에 커밋할지 여부 | -| `planning.search_gitignored` | `true`, `false` | `false` | 광범위한 검색에 `--no-ignore`를 추가하여 `.planning/` 포함 | +활성 계획에 준비되지 않은 아이디어는 999.x 번호를 사용하여 백로그에 넣어 활성 단계 순서 외부에 보관합니다. -> **참고:** `.planning/`이 `.gitignore`에 있으면 설정 값에 관계없이 `commit_docs`는 자동으로 `false`가 됩니다. - -### 워크플로우 토글 - -| 설정 | 옵션 | 기본값 | 제어 대상 | -|------|------|--------|----------| -| `workflow.research` | `true`, `false` | `true` | 계획 전 도메인 조사 | -| `workflow.plan_check` | `true`, `false` | `true` | 계획 검증 루프 (최대 3회 반복) | -| `workflow.verifier` | `true`, `false` | `true` | 페이즈 목표에 대한 실행 후 검증 | -| `workflow.nyquist_validation` | `true`, `false` | `true` | plan-phase 중 검증 아키텍처 조사 및 8번째 plan-check 차원 | -| `workflow.ui_phase` | `true`, `false` | `true` | 프론트엔드 페이즈를 위한 UI 설계 계약 생성 | -| `workflow.ui_safety_gate` | `true`, `false` | `true` | plan-phase가 프론트엔드 페이즈에서 /gsd-ui-phase 실행을 유도합니다 | -| `workflow.research_before_questions` | `true`, `false` | `false` | 토론 질문 이후가 아닌 이전에 조사를 실행합니다 | -| `workflow.discuss_mode` | `standard`, `assumptions` | `standard` | 토론 방식: 개방형 질문 vs. 코드베이스 기반 가정 | -| `workflow.skip_discuss` | `true`, `false` | `false` | 자율 모드에서 discuss-phase를 완전히 건너뜁니다. ROADMAP 페이즈 목표에서 최소한의 CONTEXT.md를 작성합니다 | - -### 훅 설정 - -| 설정 | 옵션 | 기본값 | 제어 대상 | -|------|------|--------|----------| -| `hooks.context_warnings` | `true`, `false` | `true` | 컨텍스트 윈도우 사용량 경고 | -| `hooks.workflow_guard` | `true`, `false` | `false` | GSD 워크플로우 컨텍스트 밖의 파일 편집 시 경고 | - -익숙한 도메인에서 페이즈를 빠르게 진행하거나 토큰을 절약할 때 워크플로우 토글을 비활성화하세요. - -### Git 브랜칭 - -| 설정 | 옵션 | 기본값 | 제어 대상 | -|------|------|--------|----------| -| `git.branching_strategy` | `none`, `phase`, `milestone` | `none` | 브랜치 생성 시점과 방법 | -| `git.phase_branch_template` | 템플릿 문자열 | `gsd/phase-{phase}-{slug}` | phase 전략의 브랜치 이름 | -| `git.milestone_branch_template` | 템플릿 문자열 | `gsd/{milestone}-{slug}` | milestone 전략의 브랜치 이름 | -| `git.quick_branch_template` | 템플릿 문자열 또는 `null` | `null` | `/gsd-quick` 작업의 선택적 브랜치 이름 | - -**브랜칭 전략 설명.** - -| 전략 | 브랜치 생성 | 범위 | 적합한 경우 | -|------|------------|------|------------| -| `none` | 생성 안 함 | N/A | 개인 개발, 간단한 프로젝트 | -| `phase` | 각 `execute-phase` 시 | 페이즈당 하나의 브랜치 | 페이즈별 코드 리뷰, 세분화된 롤백 | -| `milestone` | 첫 `execute-phase` 시 | 모든 페이즈가 하나의 브랜치 공유 | 릴리스 브랜치, 버전별 PR | - -**템플릿 변수:** `{phase}` = 0 패딩된 번호 (예: "03"), `{slug}` = 소문자 하이픈 이름, `{milestone}` = 버전 (예: "v1.0"), `{num}` / `{quick}` = 빠른 작업 ID (예: "260317-abc"). - -빠른 작업 브랜칭 예시: - -```json -"git": { - "quick_branch_template": "gsd/quick-{num}-{slug}" -} +```bash +/gsd-capture --backlog "GraphQL API layer" # Creates 999.1-graphql-api-layer/ +/gsd-capture --backlog "Mobile responsive" # Creates 999.2-mobile-responsive/ ``` -### 모델 프로필 (에이전트별 분류) +백로그 항목은 전체 단계 디렉터리를 갖추므로, `/gsd-discuss-phase 999.1`로 아이디어를 더 탐색하거나 준비가 되면 `/gsd-plan-phase 999.1`을 사용할 수 있습니다. -| 에이전트 | `quality` | `balanced` | `budget` | `inherit` | -|----------|-----------|------------|----------|-----------| -| gsd-planner | Opus | Opus | Sonnet | Inherit | -| gsd-roadmapper | Opus | Sonnet | Sonnet | Inherit | -| gsd-executor | Opus | Sonnet | Sonnet | Inherit | -| gsd-phase-researcher | Opus | Sonnet | Haiku | Inherit | -| gsd-project-researcher | Opus | Sonnet | Haiku | Inherit | -| gsd-research-synthesizer | Sonnet | Sonnet | Haiku | Inherit | -| gsd-debugger | Opus | Sonnet | Sonnet | Inherit | -| gsd-codebase-mapper | Sonnet | Haiku | Haiku | Inherit | -| gsd-verifier | Sonnet | Sonnet | Haiku | Inherit | -| gsd-plan-checker | Sonnet | Sonnet | Haiku | Inherit | -| gsd-integration-checker | Sonnet | Sonnet | Haiku | Inherit | +**검토 및 승격**은 `/gsd-review-backlog`으로 합니다 — 모든 백로그 항목을 표시하고 승격(활성 순서로 이동), 유지(백로그에 남기기), 제거(삭제) 중 선택할 수 있습니다. -**프로필 철학.** -- **quality** -- 모든 의사결정 에이전트에 Opus를 사용하고 읽기 전용 검증에 Sonnet을 사용합니다. 할당량이 충분하고 작업이 중요할 때 사용합니다. -- **balanced** -- 아키텍처 결정이 이루어지는 계획에만 Opus를 사용하고 나머지는 Sonnet을 사용합니다. 합당한 이유로 기본값입니다. -- **budget** -- 코드를 작성하는 모든 것에 Sonnet을 사용하고 조사 및 검증에 Haiku를 사용합니다. 대량 작업이나 덜 중요한 페이즈에 사용합니다. -- **inherit** -- 모든 에이전트가 현재 세션 모델을 사용합니다. 동적으로 모델을 전환할 때 (예: OpenCode 또는 Kilo `/model`) 또는 예상치 못한 API 비용을 방지하기 위해 비Anthropic 공급자 (OpenRouter, 로컬 모델)와 함께 Claude Code를 사용할 때 적합합니다. 비Claude 런타임 (Codex, OpenCode, Gemini CLI, Kilo)의 경우 설치 프로그램이 자동으로 `resolve_model_ids: "omit"`을 설정합니다 — [비Claude 런타임](#비claude-런타임-codex-opencode-gemini-cli-kilo-사용)을 참고하세요. +### 씨드 + +씨드는 트리거 조건이 있는 미래 지향적 아이디어입니다. 백로그 항목과 달리, 씨드는 적절한 마일스톤이 도래하면 자동으로 표시됩니다. + +```bash +/gsd-capture --seed "Add real-time collab when WebSocket infra is in place" +``` + +`/gsd-new-milestone`은 모든 씨드를 스캔하고 매칭 항목을 표시합니다. **저장소:** `.planning/seeds/SEED-NNN-slug.md` + +### 지속적 컨텍스트 스레드 + +스레드는 여러 세션에 걸쳐 있지만 특정 단계에 속하지 않는 작업을 위한 경량 세션 간 지식 저장소입니다. + +```bash +/gsd-thread # List all threads +/gsd-thread fix-deploy-key-auth # Resume existing thread +/gsd-thread "Investigate TCP timeout" # Create new thread +``` + +스레드가 성숙해지면 단계(`/gsd-phase`) 또는 백로그 항목(`/gsd-capture --backlog`)으로 승격할 수 있습니다. **저장소:** `.planning/threads/{slug}.md` + +--- + +## 워크스트림 및 워크스페이스 + +워크스트림과 워크스페이스 모두 격리를 제공하지만, 수준이 다릅니다. + +**워크스트림**은 동일한 코드베이스와 git 히스토리를 공유하지만 계획 아티팩트를 격리합니다 — 더 가볍고, 여러 마일스톤 영역을 동시에 작업할 때 적합합니다. [워크스트림으로 병렬 작업](how-to/work-in-parallel-with-workstreams.md)을 참조하세요. + +**워크스페이스**는 자체 `.planning/`을 가진 별도의 리포지토리 워크트리를 생성합니다 — 더 무겁고, 피처 브랜치 또는 멀티 리포지토리 격리에 적합합니다. [워크스페이스로 작업 격리](how-to/isolate-work-with-workspaces.md)를 참조하세요. + +| 명령어 | 목적 | +| ---------------------------------- | ---------------------------------------------------- | +| `/gsd-workstreams create ` | 격리된 계획 상태로 새 워크스트림 생성 | +| `/gsd-workstreams switch ` | 활성 컨텍스트를 다른 워크스트림으로 전환 | +| `/gsd-workstreams list` | 모든 워크스트림과 활성 상태 표시 | +| `/gsd-workstreams complete ` | 워크스트림을 완료로 표시하고 상태 아카이브 | + +```bash +# Workspace example — feature branch isolation +/gsd-workspace --new --name feature-b --repos . +cd ~/gsd-workspaces/feature-b +/gsd-new-project + +/gsd-workspace --list +/gsd-workspace --remove feature-b +``` + +--- + +## 보안 + +### 심층 방어 (v1.27) + +GSD는 LLM 시스템 프롬프트가 되는 마크다운 파일을 생성합니다. 즉, 계획 아티팩트로 유입되는 사용자 제어 텍스트는 잠재적인 간접 프롬프트 인젝션 벡터입니다. v1.27은 중앙화된 보안 강화를 도입했습니다: + +**경로 순회 방지:** 모든 사용자가 제공한 파일 경로(`--text-file`, `--prd`)는 프로젝트 디렉터리 내에서 확인됩니다. macOS `/var` → `/private/var` 심볼릭 링크 확인이 처리됩니다. + +**프롬프트 인젝션 감지:** `security.cjs` 모듈은 사용자가 제공한 텍스트가 계획 아티팩트에 들어가기 전에 알려진 인젝션 패턴을 스캔합니다. + +**런타임 훅:** + +- `gsd-prompt-guard.js` — `.planning/`에 대한 Write/Edit 호출에서 인젝션 패턴 스캔 (항상 활성, 자문 전용) +- `gsd-workflow-guard.js` — GSD 워크플로우 컨텍스트 외부에서 파일 편집 시 경고 (`hooks.workflow_guard`를 통한 옵트인) + +**CI 스캐너:** `prompt-injection-scan.test.cjs`는 모든 에이전트, 워크플로우, 명령어 파일에서 삽입된 인젝션 벡터를 스캔합니다. + +--- + +### 패키지 적법성 게이트 (v1.42.1) + +AI 코딩 도구는 패키지 이름을 환각합니다. 공격자는 npm, PyPI, crates.io에 악성 포스트 인스톨 스크립트가 포함된 그 이름을 미리 등록합니다 — 이를 *슬롭스쿼팅*이라 합니다. v1.42.1은 이것이 셸에 도달하기 전에 차단하는 3계층 게이트를 추가합니다. + +**RESEARCH.md에서** — 외부 패키지를 권장하는 모든 단계에는 `## Package Legitimacy Audit` 테이블이 포함됩니다: + +```markdown +## Package Legitimacy Audit + +| Package | Registry | Age | Downloads | Source Repo | slopcheck | Disposition | +|---------|----------|-----|-----------|-------------|-----------|-------------| +| express | npm | 13 yrs | 100M+/wk | github.com/expressjs/express | [OK] | Approved | +| some-new-util | npm | 3 days | 47 | none | [SLOP] | REMOVED | +| api-bridge | npm | 6 mo | 1.2k/wk | github.com/user/api-bridge | [SUS] | Flagged | +``` + +`[SLOP]` 패키지는 RESEARCH.md에서 완전히 제거되며 계획자에게 도달하지 않습니다. + +**PLAN.md에서** — `[SUS]` 또는 `[ASSUMED]` 패키지는 설치 전에 `checkpoint:human-verify` 작업을 트리거합니다. + +**실행 중** — 설치가 실패하면 실행자는 체크포인트를 표시하고 자동으로 대안을 시도하지 않고 중단합니다. + +**슬롭체크 판정:** + +| 판정 | 의미 | GSD 조치 | +|---------|---------|------------| +| `[OK]` | 모든 적법성 검사 통과 | 진행 — 체크포인트 없음 | +| `[SUS]` | 의심스러운 신호 | 표시됨; 계획자가 `checkpoint:human-verify` 추가 | +| `[SLOP]` | 고신뢰 환각 | RESEARCH.md에서 제거; 계획자에게 도달하지 않음 | + +슬롭체크를 수동으로 설치하려면: + +```bash +pip install slopcheck +# verify: slopcheck install express --json +``` + +--- + +## 코드 리뷰 워크플로우 + +단계 실행 후 UAT 전에 구조화된 코드 리뷰를 실행하세요. 전체 워크플로우는 [크로스 AI 리뷰 설정](how-to/set-up-cross-ai-review.md)을 참조하세요. + +```bash +/gsd-code-review 3 # Review all changed files in phase 3 +/gsd-code-review 3 --depth=deep # Deep cross-file review +/gsd-code-review 3 --fix # Fix Critical + Warning findings atomically +/gsd-code-review 3 --fix --auto # Fix and re-review until clean (max 3 iterations) +/gsd-audit-fix # Audit + classify + fix (medium+ severity, max 5) +``` + +리뷰 단계는 실행 후, UAT 전에 삽입됩니다: + +```text +/gsd-execute-phase N -> /gsd-code-review N -> /gsd-code-review N --fix -> /gsd-verify-work N +``` + +--- + +## 명령어 및 구성 레퍼런스 + +- **명령어 레퍼런스:** 모든 안정적 명령어의 플래그, 서브명령어, 예시는 [`docs/COMMANDS.md`](COMMANDS.md)를 참조하세요. +- **구성 레퍼런스:** 전체 `config.json` 스키마, 모델 프로필 테이블, git 브랜치 전략, 보안 설정은 [`docs/CONFIGURATION.md`](CONFIGURATION.md)를 참조하세요. +- **Discuss 모드:** 인터뷰 vs 가정 모드는 [`docs/workflow-discuss-mode.md`](workflow-discuss-mode.md)를 참조하세요. --- @@ -605,7 +463,7 @@ claude --dangerously-skip-permissions /gsd-pause-work --report # Generate session summary ``` -### 기존 문서로 새 프로젝트 시작 +### 기존 문서로 새 프로젝트 ```bash /gsd-new-project --auto @prd.md # Auto-runs research/requirements/roadmap from your doc @@ -616,11 +474,45 @@ claude --dangerously-skip-permissions ### 기존 코드베이스 ```bash -/gsd-map-codebase # Analyze what exists (parallel agents) +/gsd-map-codebase # Analyse what exists (parallel agents) /gsd-new-project # Questions focus on what you're ADDING # (normal phase workflow from here) ``` +**실행 후 드리프트 감지 (#2003).** 매 `/gsd-execute-phase` 후, GSD는 단계가 `.planning/codebase/STRUCTURE.md`를 오래되게 만들 만큼 충분한 구조적 변경을 도입했는지 확인합니다. 다음으로 동작을 변경할 수 있습니다: + +```bash +/gsd-settings workflow.drift_action auto-remap # remap automatically +/gsd-settings workflow.drift_threshold 5 # tune sensitivity +``` + +### 계획 드리프트 가드 + +**기본 활성화.** 계획 드리프트 가드(`plan_review.source_grounding: true`)는 계획 검토 중에 실행되며, 계획에 인용된 모든 심볼 — 데코레이터, 클래스, 함수, CLI 플래그 — 이 검토 시점에 실제로 소스 트리에 존재하는지 확인합니다. 이는 실행 에이전트가 실행되기 전에 환각된 이름을 잡아냅니다. + +**감지 대상:** + +- 소스에 존재하지 않는 PLAN.md 단계에서 참조된 함수 +- 계획 작성 이후 이름이 변경되거나 제거된 클래스 또는 데코레이터 이름 +- 인수 파서에 정의되지 않은 계획의 CLI 플래그 +- 아무 파일로도 확인되지 않는 구현 단계에서 인용된 모듈 경로 + +**needs-acknowledgement 동작.** 가드가 누락된 심볼을 발견하면, 하드 차단 대신 계획 검토 출력에 `needs-acknowledgement` 알림을 표시합니다. 승인 후 진행하거나(심볼이 의도적으로 새로운 것일 수 있음) 계획 수정을 요청할 수 있습니다. 가드는 계획을 자동으로 거부하지 않으며 — 사람의 결정을 위한 신호를 표시합니다. + +**인텔 없이 작동.** 기본적으로 가드는 `grep`/`ripgrep`을 사용하여 소스 파일을 검색합니다 — 사전 인덱싱이 필요하지 않습니다. `intel.enabled: true`로 `/gsd:map-codebase`를 실행했다면 `plan_review.source_grounding_authority: intel`로 설정하여 더 빠른 사전 빌드 `api-map.json` 인덱스를 사용하세요. + +```bash +# Enable/disable (default: on) +/gsd-settings plan_review.source_grounding true +/gsd-settings plan_review.source_grounding false + +# Switch resolver authority +/gsd-settings plan_review.source_grounding_authority grep # live grep (default) +/gsd-settings plan_review.source_grounding_authority intel # pre-indexed api-map.json +``` + +프로젝트 설정 시(`/gsd:new-project`가 워크플로우 선호도 중 질문) 또는 `/gsd:settings`를 통해 언제든지 전환 가능합니다(계획 섹션 → 드리프트 가드). + ### 빠른 버그 수정 ```bash @@ -645,86 +537,145 @@ claude --dangerously-skip-permissions ### 속도 vs 품질 프리셋 -| 시나리오 | Mode | Granularity | Profile | Research | Plan Check | Verifier | -|---------|------|-------------|---------|----------|------------|---------| -| 프로토타이핑 | `yolo` | `coarse` | `budget` | 끄기 | 끄기 | 끄기 | -| 일반 개발 | `interactive` | `standard` | `balanced` | 켜기 | 켜기 | 켜기 | -| 프로덕션 | `interactive` | `fine` | `quality` | 켜기 | 켜기 | 켜기 | +| 시나리오 | 모드 | 세분화 | 프로필 | 리서치 | 계획 검사 | 검증기 | +| ----------- | ------------- | ----------- | ---------- | -------- | ---------- | -------- | +| 프로토타이핑 | `yolo` | `coarse` | `budget` | off | off | off | +| 일반 개발 | `interactive` | `standard` | `balanced` | on | on | on | +| 프로덕션 | `interactive` | `fine` | `quality` | on | on | on | -**자율 모드에서 discuss-phase 건너뛰기:** PROJECT.md에 선호도가 이미 충분히 캡처된 `yolo` 모드에서 실행할 때 `/gsd-settings`에서 `workflow.skip_discuss: true`로 설정하세요. 이렇게 하면 discuss-phase를 완전히 우회하고 ROADMAP 페이즈 목표에서 파생된 최소한의 CONTEXT.md를 작성합니다. PROJECT.md와 관례가 충분히 포괄적이어서 토론이 새로운 정보를 제공하지 않을 때 유용합니다. +**자율 모드에서 discuss 단계 건너뛰기:** `yolo` 모드로 실행할 때는 `/gsd-settings`를 통해 `workflow.skip_discuss: true`로 설정하세요. ### 마일스톤 중간 범위 변경 ```bash -/gsd-phase # Append a new phase to the roadmap -# or -/gsd-phase --insert 3 # Insert urgent work between phases 3 and 4 -# or -/gsd-phase --remove 7 # Descope phase 7 and renumber +/gsd-phase # Append a new phase to the roadmap (default mode) +/gsd-phase --insert 3 # Insert urgent work between phases 3 and 4 +/gsd-phase --remove 7 # Descope phase 7 and renumber +/gsd-phase --edit 4 # Edit any field of phase 4 in place ``` -### 멀티 프로젝트 워크스페이스 - -격리된 GSD 상태로 여러 저장소나 기능을 병렬로 작업합니다. - -```bash -# Create a workspace with repos from your monorepo -/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI - -# Feature branch isolation — worktree of current repo with its own .planning/ -/gsd-workspace --new --name feature-b --repos . - -# Then cd into the workspace and initialize GSD -cd ~/gsd-workspaces/feature-b -/gsd-new-project - -# List and manage workspaces -/gsd-workspace --list -/gsd-workspace --remove feature-b -``` - -각 워크스페이스는 다음을 포함합니다. -- 자체 `.planning/` 디렉터리 (원본 저장소와 완전히 독립) -- 지정된 저장소의 git worktree (기본값) 또는 클론 -- 멤버 저장소를 추적하는 `WORKSPACE.md` 매니페스트 - --- ## 문제 해결 -### "Project already initialized" +포괄적인 문제 해결 가이드는 [복구 및 문제 해결](how-to/recover-and-troubleshoot.md)을 참조하세요. 가장 일반적인 문제들이 아래에 요약되어 있습니다. -`.planning/PROJECT.md`가 이미 존재하는데 `/gsd-new-project`를 실행했습니다. 이것은 안전 검사입니다. 처음부터 다시 시작하려면 먼저 `.planning/` 디렉터리를 삭제하세요. +### 프로그래밍 방식 CLI (`gsd-tools query` vs `gsd-tools.cjs`) + +자동화를 위해서는 등록된 서브명령어와 함께 **`gsd-tools query`**를 사용하세요([CLI-TOOLS.md — SDK 및 프로그래밍 방식 액세스](CLI-TOOLS.md#sdk-and-programmatic-access)와 QUERY-HANDLERS.md 참조). 레거시 `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs` CLI도 계속 지원됩니다. + +### STATE.md 동기화 오류 + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate # Detect drift +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify # Preview changes +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync # Reconstruct STATE.md +``` + +### "Spawning..." 이후 명령어가 멈춘 것처럼 보일 때 + +GSD 서브에이전트는 별도의 컨텍스트 창에서 실행됩니다 — 진행 중에는 부모 세션에서 보이지 않습니다. 세션을 중단하지 마세요. 결과를 기다리세요; 리서치 및 계획 에이전트는 일반적으로 1~5분이 소요됩니다. ### 긴 세션 중 컨텍스트 저하 -주요 명령어 사이에 컨텍스트 윈도우를 지우세요: Claude Code에서 `/clear`를 사용합니다. GSD는 새로운 컨텍스트를 기반으로 설계되었습니다 — 모든 서브에이전트는 깨끗한 200K 윈도우를 받습니다. 메인 세션의 품질이 저하되면 지우고 `/gsd-resume-work` 또는 `/gsd-progress`를 사용하여 상태를 복원하세요. +주요 명령어 사이에 컨텍스트 창을 지우세요: Claude Code에서 `/clear`. GSD는 새로운 컨텍스트를 중심으로 설계되었습니다 — 모든 서브에이전트는 새로운 200K 창을 받습니다. 지운 후 상태를 복원하려면 `/gsd-resume-work` 또는 `/gsd-progress`를 사용하세요. -### 계획이 잘못되거나 맞지 않는 경우 +### 계획이 잘못되거나 정렬되지 않은 것 같을 때 -계획 전에 `/gsd-discuss-phase [N]`을 실행하세요. 대부분의 계획 품질 문제는 `CONTEXT.md`가 있었다면 방지할 수 있었던 가정을 Claude가 세우기 때문에 발생합니다. `/gsd-discuss-phase --assumptions [N]`을 실행하여 계획에 동의하기 전에 Claude가 무엇을 하려는지 확인할 수도 있습니다. +계획 전에 `/gsd-discuss-phase [N]`을 실행하세요. 대부분의 계획 품질 문제는 `CONTEXT.md`가 방지했을 가정을 Claude가 만들어서 발생합니다. -### 실행이 실패하거나 스텁을 생성하는 경우 +### 실행 실패 또는 스텁 생성 -계획이 너무 야심차지 않은지 확인하세요. 계획에는 최대 2-3개의 작업이 있어야 합니다. 작업이 너무 크면 단일 컨텍스트 윈도우에서 안정적으로 처리할 수 있는 범위를 초과합니다. 더 작은 범위로 재계획하세요. +계획이 너무 야심 찼는지 확인하세요. 계획에는 최대 2~3개의 작업이 있어야 합니다. 더 작은 범위로 재계획하세요. -### 현재 위치를 잃어버린 경우 +### 현재 위치를 놓쳤을 때 -`/gsd-progress`를 실행하세요. 모든 상태 파일을 읽고 현재 위치와 다음에 할 일을 정확히 알려줍니다. +`/gsd-progress`를 실행하세요. 모든 상태 파일을 읽고 정확히 어디에 있는지, 다음에 무엇을 해야 하는지 알려줍니다. -### 실행 후 변경이 필요한 경우 +### 모델 비용이 너무 높을 때 -`/gsd-execute-phase`를 다시 실행하지 마세요. 목표를 정확히 수정하려면 `/gsd-quick`을 사용하거나 UAT를 통해 체계적으로 문제를 식별하고 수정하려면 `/gsd-verify-work`를 사용하세요. +예산 프로필로 전환하세요: `/gsd-config --profile budget`. 도메인이 익숙하다면 `/gsd-settings`를 통해 리서치 및 계획 검사 에이전트를 비활성화하세요. -### 모델 비용이 너무 높은 경우 +### 단계별 모델 비용 조정 (`models`) — v1.40에서 추가됨 -예산 프로필로 전환하세요: `/gsd-config --profile budget`. 도메인이 익숙하다면 (또는 Claude에게 익숙하다면) `/gsd-settings`에서 조사 및 plan-check 에이전트를 비활성화하세요. +`.planning/config.json`에 `models` 블록을 추가하세요: -### 비Claude 런타임 사용 (Codex, OpenCode, Gemini CLI, Kilo) +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + } +} +``` -비Claude 런타임용으로 GSD를 설치했다면 설치 프로그램이 이미 모든 에이전트가 런타임의 기본 모델을 사용하도록 모델 해석을 구성했습니다. 수동 설정이 필요하지 않습니다. 구체적으로 설치 프로그램은 config에 `resolve_model_ids: "omit"`을 설정하여 GSD가 Anthropic 모델 ID 해석을 건너뛰고 런타임이 자체 기본 모델을 선택하도록 합니다. +에이전트별 예외가 필요한가요? 옆에 `model_overrides`를 추가하세요 — `models`보다 우선합니다: -비Claude 런타임에서 에이전트별로 다른 모델을 할당하려면 런타임이 인식하는 완전한 자격을 갖춘 모델 ID와 함께 `.planning/config.json`에 `model_overrides`를 추가하세요. +```json +{ + "models": { "research": "sonnet" }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +전체 매핑 테이블과 해결 우선순위 규칙은 [단계 유형별 모델](CONFIGURATION.md#per-phase-type-models-models--added-in-v140)을 참조하세요. + +### `dynamic_routing`으로 기본 저렴한 비용 — v1.40에서 추가됨 + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +전체 에이전트 → 티어 매핑은 [동적 라우팅](CONFIGURATION.md#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140)을 참조하세요. + +### 턴당 비용을 줄이기 위해 MCP 서버 정리 + +`model_profile` 또는 `models.`을 조정하기 전에, 하네스에서 어떤 **MCP 서버**가 활성화되어 있는지 감사하세요. 활성화된 모든 MCP 서버는 모든 턴에 도구 스키마를 주입합니다 — 대형 서버는 각각 20k+ 토큰을 소비할 수 있습니다. + +이것은 **하네스 설정**이며, GSD 설정이 아닙니다. 토글은 `.claude/settings.json`에 있습니다: + +```json +{ + "enabledMcpjsonServers": ["context7"], + "disabledMcpjsonServers": ["playwright", "mac-tools"] +} +``` + +긴 단계 전 빠른 감사: + +- 이 단계에 UI 작업이 없는데 브라우저/playwright 도구가 활성화되어 있나요? +- 필요하지 않은 플랫폼별 도구가 활성화되어 있나요? +- 다른 프로젝트에서 사용하던 프로젝트별 MCP가 여기서도 활성화되어 있나요? + +비활성화된 서버는 이후 모든 턴에서 스키마를 제거합니다. MCP 정리는 `model_profile` 조정과 **복합**됩니다 — 두 레버는 가산적이며, MCP 절약은 오케스트레이터가 생성하는 모든 서브에이전트에서 즉시 나타납니다. + +전체 감사, 하네스 레퍼런스, `model_profile`과의 구성 노트는 번들된 `context-budget.md` 레퍼런스의 [MCP 도구 스키마 비용](../../get-shit-done/references/context-budget.md#mcp-tool-schema-cost-harness-concern)을 참조하세요. + +### 비 Claude 런타임 사용 (Codex, OpenCode, Gemini CLI, Kilo) + +> **Codex CLI 최소 지원 버전: `0.130.0`** (이슈 [#3562](https://github.com/open-gsd/gsd-core/issues/3562)). + +비 Claude 런타임용으로 GSD를 설치했다면, 설치 프로그램이 이미 모델 해석을 구성했습니다. 수동 설정이 필요하지 않습니다 — `resolve_model_ids: "omit"`이 자동으로 설정되어 GSD가 Anthropic 모델 ID 해석을 건너뛰고 런타임이 자체 기본 모델을 선택하도록 합니다. + +비 Claude 런타임에서 다른 모델을 할당하려면: ```json { @@ -737,78 +688,159 @@ cd ~/gsd-workspaces/feature-b } ``` -설치 프로그램은 Gemini CLI, OpenCode, Kilo, Codex에 대해 `resolve_model_ids: "omit"`을 자동으로 구성합니다. 비Claude 런타임을 수동으로 설정하는 경우 직접 `.planning/config.json`에 추가하세요. +#### 하나의 구성 변경으로 Claude에서 Codex로 전환 (#2517) -전체 설명은 [Configuration Reference](CONFIGURATION.md#non-claude-runtimes-codex-opencode-gemini-cli-kilo)를 참고하세요. +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` -### 비Anthropic 공급자와 함께 Claude Code 사용 (OpenRouter, 로컬) +[런타임 인식 프로필](CONFIGURATION.md#runtime-aware-profiles-2517)을 참조하세요. -GSD 서브에이전트가 Anthropic 모델을 호출하는데 OpenRouter나 로컬 공급자를 통해 비용을 지불하고 있다면 `inherit` 프로필로 전환하세요: `/gsd-config --profile inherit`. 이렇게 하면 모든 에이전트가 특정 Anthropic 모델 대신 현재 세션 모델을 사용합니다. `/gsd-settings` → Model Profile → Inherit도 참고하세요. +### 수동 설치 / Node.js 없는 설정 -### 민감하거나 비공개 프로젝트에서 작업하는 경우 +GSD 설치 프로그램을 실행할 수 없다면, `agents/`의 소스 파일을 직접 사용할 수 없습니다 — 이는 Claude Code의 네이티브 frontmatter 형식입니다. OpenCode의 경우 두 가지 변환이 필요합니다: -`/gsd-new-project` 중에 또는 `/gsd-settings`에서 `commit_docs: false`로 설정하세요. `.planning/`을 `.gitignore`에 추가하세요. 계획 아티팩트는 로컬에 유지되며 git에 절대 포함되지 않습니다. +| 필드 | GSD 소스 형식 | OpenCode 유효 형식 | 조치 | +|---|---|---|---| +| `tools:` | `Read, Bash, Grep` (콤마 문자열) | frontmatter 필드가 아님 | `tools:` 줄 전체 제거 | +| `color:` | 일반 CSS 색상 이름 | 16진수 또는 OpenCode 의미 이름 | 16진수로 변환하거나 제거 | -### GSD 업데이트가 로컬 변경사항을 덮어쓴 경우 +**대안:** Node.js가 있는 모든 머신에서 설치 프로그램 실행: -v1.17부터 설치 프로그램이 로컬로 수정된 파일을 `gsd-local-patches/`에 백업합니다. 변경사항을 다시 병합하려면 `/gsd-update --reapply`를 실행하세요. +```bash +npx @opengsd/gsd-core@latest --opencode --global +``` + +### Cline용 설치 + +```bash +npx @opengsd/gsd-core --cline --global # applies to all projects +npx @opengsd/gsd-core --cline --local # this project only +``` + +### CodeBuddy용 설치 + +```bash +npx @opengsd/gsd-core --codebuddy --global +``` + +### Qwen Code용 설치 + +```bash +npx @opengsd/gsd-core --qwen --global +``` + +### 프리릴리스 에디션 설치 + +설치 프로그램 실행 전에 런타임의 `*_CONFIG_DIR` 환경 변수를 프리릴리스 디렉터리로 설정하세요: + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global +``` + +**지원 런타임의 환경 변수 레퍼런스:** + +| 런타임 | 안정 기본값 | 재정의 환경 변수 | +|---|---|---| +| Claude Code | `~/.claude` | `CLAUDE_CONFIG_DIR` | +| Gemini CLI | `~/.gemini` | `GEMINI_CONFIG_DIR` | +| OpenCode | `XDG_CONFIG_HOME/opencode` | `OPENCODE_CONFIG_DIR` | +| Codex | (Codex CLI에 따름) | `--config-dir` 플래그 | +| Copilot | `~/.copilot` | `COPILOT_CONFIG_DIR` | +| Cursor | `~/.cursor` | `CURSOR_CONFIG_DIR` | +| Windsurf | `~/.codeium/windsurf` | `WINDSURF_CONFIG_DIR` | +| Antigravity | 자동 감지 | `ANTIGRAVITY_CONFIG_DIR` | +| Augment | `~/.augment` | `AUGMENT_CONFIG_DIR` | +| Trae | `~/.trae` | `TRAE_CONFIG_DIR` | +| Qwen Code | `~/.qwen` | `QWEN_CONFIG_DIR` | +| Kilo | `~/.config/kilo` | `KILO_CONFIG_DIR` | +| CodeBuddy | `~/.codebuddy` | `CODEBUDDY_CONFIG_DIR` | +| Cline | `~/.cline` | `CLINE_CONFIG_DIR` | + +### 비 Anthropic 프로바이더와 Claude Code 사용 + +`inherit` 프로필로 전환하세요: `/gsd-config --profile inherit`. 이렇게 하면 모든 에이전트가 현재 세션 모델을 사용합니다. + +### 민감/비공개 프로젝트 작업 + +`/gsd-new-project` 중 또는 `/gsd-settings`를 통해 `commit_docs: false`로 설정하세요. `.planning/`을 `.gitignore`에 추가하세요. + +### GSD 업데이트가 로컬 변경사항을 덮어씀 + +v1.17부터 설치 프로그램은 로컬에서 수정된 파일을 `gsd-local-patches/`에 백업합니다. 변경사항을 다시 병합하려면 `/gsd-update --reapply`를 실행하세요. + +### npm을 통해 업데이트할 수 없음 + +단계별 수동 업데이트 절차는 [docs/manual-update.md](../manual-update.md)를 참조하세요. ### 워크플로우 진단 (`/gsd-forensics`) -워크플로우가 명확하지 않은 방식으로 실패할 때 — 계획이 존재하지 않는 파일을 참조하거나 실행이 예상치 못한 결과를 생성하거나 상태가 손상된 것 같을 때 — `/gsd-forensics`를 실행하여 진단 보고서를 생성하세요. +워크플로우가 명확하지 않은 방식으로 실패하면 `/gsd-forensics`를 실행하여 git 히스토리 이상, 아티팩트 무결성, 상태 불일치를 포함한 진단 보고서를 생성하세요. 출력은 `.planning/forensics/`로 이동합니다. -**검사 항목.** -- Git 히스토리 이상 (고아 커밋, 예상치 못한 브랜치 상태, rebase 아티팩트) -- 아티팩트 무결성 (누락되거나 잘못된 계획 파일, 끊어진 교차 참조) -- 상태 불일치 (실제 파일 존재 여부 대비 ROADMAP 상태, 설정 드리프트) +### 실행기 서브에이전트가 Bash 명령어에서 "Permission denied" 발생 -**출력:** 발견사항과 권장 수정 단계가 포함된 `.planning/forensics/`의 진단 보고서. +`~/.claude/settings.json`에 필요한 패턴을 추가하세요. 모든 스택에 필요한 핵심 패턴: -### 서브에이전트가 실패한 것 같지만 작업이 완료된 경우 +```json +"Bash(git add:*)", +"Bash(git commit:*)", +"Bash(git merge:*)", +"Bash(git worktree:*)", +"Bash(git rebase:*)", +"Bash(git reset:*)", +"Bash(git checkout:*)", +"Bash(git switch:*)", +"Bash(git restore:*)", +"Bash(git stash:*)", +"Bash(git rm:*)", +"Bash(git mv:*)", +"Bash(git fetch:*)", +"Bash(git cherry-pick:*)", +"Bash(git apply:*)", +"Bash(gh:*)" +``` -Claude Code 분류 버그에 대한 알려진 해결 방법이 있습니다. GSD의 오케스트레이터 (execute-phase, quick)는 실패를 보고하기 전에 실제 출력을 현장 확인합니다. 실패 메시지가 표시되었지만 커밋이 이루어진 경우 `git log`를 확인하세요 — 작업이 성공했을 수 있습니다. +**프로젝트별 권한:** `~/.claude/settings.json` 대신 프로젝트 루트의 `.claude/settings.local.json`에 동일한 `permissions.allow` 블록을 추가하세요. -### 병렬 실행으로 인한 빌드 잠금 오류 +### 병렬 실행으로 빌드 잠금 오류 발생 -병렬 웨이브 실행 중에 pre-commit 훅 실패, cargo lock 경합, 또는 30분 이상의 실행 시간이 발생한다면 여러 에이전트가 동시에 빌드 도구를 실행하기 때문입니다. GSD는 v1.26부터 이를 자동으로 처리합니다 — 병렬 에이전트는 커밋에 `--no-verify`를 사용하고 오케스트레이터가 각 웨이브 후 한 번 훅을 실행합니다. 이전 버전을 사용하는 경우 프로젝트의 `CLAUDE.md`에 다음을 추가하세요. +GSD는 v1.26부터 이를 자동으로 처리합니다. 이전 버전을 사용 중이라면 프로젝트의 `CLAUDE.md`에 다음을 추가하세요: ```markdown ## Git Commit Rules for Agents All subagent/executor commits MUST use `--no-verify`. ``` -병렬 실행을 완전히 비활성화하려면: `/gsd-settings` → `parallelization.enabled`를 `false`로 설정합니다. - -### Windows: 보호된 디렉터리에서 설치 충돌 - -Windows에서 설치 프로그램이 `EPERM: operation not permitted, scandir`으로 충돌하는 경우 OS 보호 디렉터리 (예: Chromium 브라우저 프로필) 때문입니다. v1.24부터 수정되었으니 최신 버전으로 업데이트하세요. 해결 방법으로 설치 프로그램을 실행하기 전에 문제가 되는 디렉터리를 임시로 이름을 변경하세요. +병렬 실행을 완전히 비활성화하려면: `/gsd-settings` → `parallelization.enabled`를 `false`로 설정하세요. --- -## 복구 빠른 레퍼런스 +## 복구 빠른 참조 -| 문제 | 해결 방법 | -|------|----------| -| 컨텍스트 손실 / 새 세션 | `/gsd-resume-work` 또는 `/gsd-progress` | -| 페이즈가 잘못됨 | 페이즈 커밋에 `git revert` 후 재계획 | -| 범위 변경 필요 | `/gsd-phase`, `/gsd-phase --insert`, 또는 `/gsd-phase --remove` | -| 무언가 고장남 | `/gsd-debug "description"` | -| 워크플로우 상태 손상 의심 | `/gsd-forensics` | -| 빠른 목표 수정 | `/gsd-quick` | -| 계획이 비전과 맞지 않음 | `/gsd-discuss-phase [N]` 후 재계획 | -| 비용이 높아짐 | `/gsd-config --profile budget` 및 `/gsd-settings`에서 에이전트 비활성화 | -| 업데이트가 로컬 변경사항 파괴 | `/gsd-update --reapply` | -| 이해관계자를 위한 세션 요약 필요 | `/gsd-pause-work --report` | -| 다음 단계를 모르겠음 | `/gsd-progress --next` | -| 병렬 실행 빌드 오류 | GSD 업데이트 또는 `parallelization.enabled: false` 설정 | +| 문제 | 해결책 | +| ------------------------------------ | ------------------------------------------------------------------------ | +| 컨텍스트 손실 / 새 세션 | `/gsd-resume-work` 또는 `/gsd-progress` | +| 단계가 잘못됨 | 단계 커밋을 `git revert`한 후 재계획 | +| 범위 변경 필요 | `/gsd-phase` (기본), `/gsd-phase --insert`, 또는 `/gsd-phase --remove` | +| 무언가 고장남 | `/gsd-debug "description"` (수정 없이 분석만 하려면 `--diagnose` 추가) | +| STATE.md 동기화 오류 | `state validate` 후 `state sync` | +| 워크플로우 상태가 손상된 것 같음 | `/gsd-forensics` | +| 빠른 목표 수정 | `/gsd-quick` | +| 계획이 비전과 맞지 않음 | `/gsd-discuss-phase [N]` 후 재계획 | +| 비용이 높아짐 | `/gsd-config --profile budget` 및 `/gsd-settings`로 에이전트 끄기 | +| 업데이트가 로컬 변경사항을 손상시킴 | `/gsd-update --reapply` | +| 이해관계자를 위한 세션 요약 필요 | `/gsd-pause-work --report` | +| 다음 단계를 모름 | `/gsd-progress --next` | +| 병렬 실행 빌드 오류 | GSD 업데이트 또는 `parallelization.enabled: false` 설정 | --- ## 프로젝트 파일 구조 -참고로 GSD가 프로젝트에 생성하는 파일 구조입니다. - -``` +```text .planning/ PROJECT.md # Project vision and context (always loaded) REQUIREMENTS.md # Scoped v1/v2 requirements with IDs @@ -824,6 +856,14 @@ Windows에서 설치 프로그램이 `EPERM: operation not permitted, scandir` done/ # Completed todos debug/ # Active debug sessions resolved/ # Archived debug sessions + spikes/ # Feasibility experiments (from /gsd-spike) + NNN-name/ # Experiment code + README with verdict + MANIFEST.md # Index of all spikes + sketches/ # HTML mockups (from /gsd-sketch) + NNN-name/ # index.html (2-3 variants) + README + themes/ + default.css # Shared CSS variables for all sketches + MANIFEST.md # Index of all sketches with winners codebase/ # Brownfield codebase mapping (from /gsd-map-codebase) phases/ XX-phase-name/ @@ -836,3 +876,12 @@ Windows에서 설치 프로그램이 `EPERM: operation not permitted, scandir` XX-UI-REVIEW.md # Visual audit scores (from /gsd-ui-review) ui-reviews/ # Screenshots from /gsd-ui-review (gitignored) ``` + +--- + +## 관련 문서 + +- [문서 인덱스](README.md) +- [명령어](COMMANDS.md) +- [구성](CONFIGURATION.md) +- [단계 루프](explanation/the-phase-loop.md) diff --git a/docs/ko-KR/context-monitor.md b/docs/ko-KR/context-monitor.md index ce00d51f9..af09c2a96 100644 --- a/docs/ko-KR/context-monitor.md +++ b/docs/ko-KR/context-monitor.md @@ -1,32 +1,32 @@ # 컨텍스트 윈도우 모니터 -에이전트의 컨텍스트 윈도우 사용량이 높을 때 경고를 주는 post-tool 훅입니다 (Claude Code의 경우 `PostToolUse`, Gemini CLI의 경우 `AfterTool`). +에이전트의 컨텍스트 윈도우 사용량이 높을 때 경고를 주는 post-tool 훅 (Claude Code의 경우 `PostToolUse`, Gemini CLI의 경우 `AfterTool`). ## 문제 -상태바(statusline)는 **사용자**에게 컨텍스트 사용량을 보여주지만 **에이전트** 자체는 컨텍스트 한계를 인식하지 못합니다. 컨텍스트가 부족해지면 에이전트는 한계에 부딪힐 때까지 작업을 계속 진행하며 상태가 저장되지 않은 채 작업 도중에 멈출 수 있습니다. +상태바(statusline)는 **사용자**에게 컨텍스트 사용량을 보여주지만 **에이전트** 자체는 컨텍스트 한계를 인식하지 못한다. 컨텍스트가 부족해지면 에이전트는 한계에 부딪힐 때까지 작업을 계속 진행한다 — 상태가 저장되지 않은 채 작업 도중에 멈출 수 있다. ## 동작 방식 -1. statusline 훅이 컨텍스트 메트릭을 `/tmp/claude-ctx-{session_id}.json`에 기록합니다. -2. 각 도구 사용 후 context monitor가 해당 메트릭을 읽습니다. -3. 남은 컨텍스트가 임계값 아래로 떨어지면 `additionalContext`로 경고를 주입합니다. -4. 에이전트는 대화에서 경고를 받고 그에 맞게 대응할 수 있습니다. +1. statusline 훅이 컨텍스트 메트릭을 `/tmp/claude-ctx-{session_id}.json`에 기록한다 +2. 각 도구 사용 후 context monitor가 해당 메트릭을 읽는다 +3. 남은 컨텍스트가 임계값 아래로 떨어지면 `additionalContext`로 경고를 주입한다 +4. 에이전트는 대화에서 경고를 받고 그에 맞게 대응할 수 있다 ## 임계값 | 레벨 | 남은 비율 | 에이전트 동작 | -|------|-----------|---------------| +|-------|-----------|----------------| | Normal | > 35% | 경고 없음 | | WARNING | <= 35% | 현재 작업 마무리, 새로운 복잡한 작업 시작 금지 | | CRITICAL | <= 25% | 즉시 중단 후 상태 저장 (`/gsd-pause-work`) | ## Debounce -에이전트에게 반복적인 경고가 쌓이는 것을 방지하기 위한 동작입니다. -- 첫 번째 경고는 항상 즉시 발생합니다. -- 이후 경고는 5번의 도구 사용 간격이 필요합니다. -- 심각도 상승 (WARNING → CRITICAL) 시에는 debounce를 우회합니다. +에이전트에게 반복적인 경고가 쌓이는 것을 방지하기 위해: +- 첫 번째 경고는 항상 즉시 발생한다 +- 이후 경고는 5번의 도구 사용 간격이 필요하다 +- 심각도 상승 (WARNING → CRITICAL) 시에는 debounce를 우회한다 ## 아키텍처 @@ -43,7 +43,7 @@ Context Monitor (gsd-context-monitor.js, PostToolUse/AfterTool) additionalContext -> 에이전트가 경고를 받음 ``` -브리지 파일은 단순한 JSON 객체입니다. +브리지 파일은 단순한 JSON 객체이다: ```json { @@ -56,60 +56,25 @@ additionalContext -> 에이전트가 경고를 받음 ## GSD와의 통합 -GSD의 `/gsd-pause-work` 명령어는 실행 상태를 저장합니다. WARNING 메시지는 해당 명령어 사용을 권장하며 CRITICAL 메시지는 즉각적인 상태 저장을 지시합니다. +GSD의 `/gsd-pause-work` 명령어는 실행 상태를 저장한다. WARNING 메시지는 해당 명령어 사용을 권장하며 CRITICAL 메시지는 즉각적인 상태 저장을 지시한다. ## 설정 -두 훅 모두 `npx @opengsd/gsd-core` 설치 중에 자동으로 등록됩니다. +두 훅 모두 `npx @opengsd/gsd-core` 설치 중에 자동으로 등록된다 — 정상적인 상황에서는 수동 단계가 필요하지 않다. 훅 설정 상세, 임계값 재정의, 수동 등록 예시는 [설정](CONFIGURATION.md)을 참조하라. -- **Statusline** (브리지 파일 기록): settings.json에 `statusLine`으로 등록 -- **Context Monitor** (브리지 파일 읽기): settings.json에 `PostToolUse` 훅으로 등록 (Gemini의 경우 `AfterTool`) - -`~/.claude/settings.json`에 수동으로 등록하는 방법 (Claude Code): - -```json -{ - "statusLine": { - "type": "command", - "command": "node ~/.claude/hooks/gsd-statusline.js" - }, - "hooks": { - "PostToolUse": [ - { - "hooks": [ - { - "type": "command", - "command": "node ~/.claude/hooks/gsd-context-monitor.js" - } - ] - } - ] - } -} -``` - -Gemini CLI (`~/.gemini/settings.json`)의 경우 `PostToolUse` 대신 `AfterTool`을 사용합니다. - -```json -{ - "hooks": { - "AfterTool": [ - { - "hooks": [ - { - "type": "command", - "command": "node ~/.gemini/hooks/gsd-context-monitor.js" - } - ] - } - ] - } -} -``` +간략한 참고: statusline 훅은 `settings.json`에 `statusLine`으로 등록된다; context monitor(`gsd-context-monitor.js`)는 `PostToolUse` 훅으로 등록된다(Gemini CLI의 경우 `AfterTool`). 두 항목 모두 설치 프로그램을 실행한 절대 Node 실행 경로를 사용한다. Windows PowerShell에서는 인용된 실행 경로 앞에 `&`를 붙인다. ## 안전성 -- 훅은 모든 동작을 try/catch로 감싸며 오류 발생 시 조용히 종료합니다. -- 도구 실행을 절대 차단하지 않습니다. 모니터에 문제가 생겨도 에이전트 워크플로우가 중단되지 않습니다. -- 60초 이상 된 오래된 메트릭은 무시됩니다. -- 누락된 브리지 파일은 정상적으로 처리됩니다 (서브에이전트, 새 세션 등의 경우). +- 훅은 모든 동작을 try/catch로 감싸며 오류 발생 시 조용히 종료한다 +- 도구 실행을 절대 차단하지 않는다 — 모니터에 문제가 생겨도 에이전트 워크플로우가 중단되지 않아야 한다 +- 60초 이상 된 오래된 메트릭은 무시된다 +- 누락된 브리지 파일은 정상적으로 처리된다 (서브에이전트, 새 세션 등의 경우) + +--- + +## Related + +- [아키텍처](ARCHITECTURE.md) +- [설정](CONFIGURATION.md) +- [문서 인덱스](README.md) diff --git a/docs/ko-KR/explanation/context-engineering.md b/docs/ko-KR/explanation/context-engineering.md new file mode 100644 index 000000000..f7a6932fc --- /dev/null +++ b/docs/ko-KR/explanation/context-engineering.md @@ -0,0 +1,90 @@ +# 컨텍스트 엔지니어링 + +> GSD Core가 존재하는 이유와 해결하고자 하는 문제. + +--- + +## 문제: 컨텍스트 부패 + +모든 AI 코딩 세션은 새롭게 시작된다. 모델은 질문을 읽고, 추론하고, 답변을 돌려준다. 그러나 하나의 세션이 단 한 번의 교환으로 끝나는 경우는 드물다. 추가 질문을 던지고, 오류 메시지를 붙여넣고, 코드를 반복적으로 개선하며, 모델이 엉뚱한 방향으로 흘러갈 때 방향을 바로잡는다. 각 대화 차례마다 토큰이 컨텍스트 윈도우에 쌓인다 — 모델이 한 번에 "볼 수" 있는 유한한 텍스트 버퍼. + +이 윈도우가 채워지면 미묘한 일이 벌어진다. 모델은 요란하게 실패하지 않는다. 계속해서 답변을 생성한다. 하지만 답변의 품질은 서서히 저하된다. 초반에 주어진 지시 사항이 모델이 집중할 수 있는 범위의 가장자리로 밀려난다. 처음 몇 번의 교환에서 다뤘던 뉘앙스들 — 제시했던 제약 조건, 합의한 아키텍처, 언급했던 엣지 케이스들 — 이 이후에 쌓인 모든 내용과 주의를 경쟁하게 된다. 연구자들은 이를 **컨텍스트 부패(context rot)**라고 부른다. + +컨텍스트 부패는 여러 형태로 나타난다. + +- 모델이 이전에 인정했던 결정들을 모순되게 다루기 시작한다. +- 코드 스타일이 세션 초반에 확립한 컨벤션에서 벗어난다. +- 계획이 명확하게 명시되었지만 이제 깊이 묻혀버린 요구 사항들을 무시하기 시작한다. +- 모델이 20개의 메시지 전에는 정확히 알고 있던 파일 이름이나 함수 시그니처를 환각으로 만들어낸다. + +이것은 모델 버그가 아니다. 긴 시퀀스에서 트랜스포머 어텐션이 작동하는 방식의 근본적인 특성이다. 모델은 "잊어버리는" 것이 아니다 — 인간적 의미에서의 "기억"은 애초에 없었다. 유한한 윈도우 안에서 관련성에 가중치를 부여하고 있으며, 누적된 노이즈로 윈도우가 채워질수록 신호 대 잡음비가 저하된다. + +단순한 대응책은 `/clear`로 세션을 초기화하는 것이다. 그러나 그러면 연속성을 잃는다. 컨텍스트를 다시 설명하고, 관련 파일을 다시 붙여넣고, 제약 조건을 다시 명시해야 한다. 세션이 사실상 제로부터 다시 시작된다. + +--- + +## GSD Core의 답: 신선한 컨텍스트 서브에이전트 + +GSD Core의 핵심적인 통찰은 코딩 세션에서 이루어지는 작업의 *대부분*이 메인 컨텍스트에서 이루어질 필요가 없다는 것이다. 리서치, 계획 수립, 코드 작성, 검증은 각각 독립적이고 범위가 한정된 작업들이다. 각각을 깔끔하고 신중하게 범위가 지정된 컨텍스트 윈도우로 시작하는 전문화된 서브에이전트에게 넘기고 — 결과를 효율적으로 유지되는 얇은 오케스트레이터에게 보고할 수 있다. + +이것은 컨텍스트 부패를 위한 임시방편이 아니다. 구조적인 해결책이다. + +오케스트레이터 — 메인 세션 — 는 소스 파일을 직접 다루지 않는다. 에이전트를 생성하고, 결과를 수집하며, 공유 상태를 업데이트하고, 다음 단계로 라우팅한다. 오케스트레이터가 스스로 하는 작업이 매우 적기 때문에 컨텍스트 윈도우가 느리고 예측 가능하게 증가한다. 무거운 작업은 각각 신선하게 시작하고, 자신의 작업에 필요한 정확한 컨텍스트만 받고, 완료 시 종료하는 에이전트에서 수행된다. + +실제로 어떤 의미인지 생각해보자. `/gsd-plan-phase`를 실행하면 오케스트레이터는: + +1. 압축된 JSON 컨텍스트 페이로드(프로젝트 요약, 단계 목표, 관련 설정)를 로드한다. +2. 200k 토큰의 깨끗한 윈도우로 리서처 에이전트를 생성한다. +3. 리서치 출력물과 단계 요구 사항을 가진 플래너 에이전트를 생성한다. +4. 실행 전에 계획을 검증하는 계획 검사기 에이전트를 생성한다. + +각 에이전트는 세션의 누적된 이력으로 부담받지 않고, 최대 능력으로 작동한다. 플래너가 `PLAN.md` 파일들을 `.planning/phases/`에 작성할 때, 그 출력물은 내구성 있는 결과물이 된다 — 공유 컨텍스트 윈도우 속에서 깨지기 쉬운 기억이 아니라. + +--- + +## 명세 주도 개발과 메타 프롬프팅 + +컨텍스트 엔지니어링만으로는 충분하지 않다. 에이전트가 신선하게 시작하더라도 모호한 지시 사항을 받으면 모호한 결과물을 생성한다. GSD Core는 신선한 컨텍스트 서브에이전트와 두 가지 보완적인 원칙을 함께 사용한다. + +**명세 주도 개발**은 모든 단계가 실행 전에 구조화된 결과물을 생성한다는 것을 의미한다. `CONTEXT.md`는 논의 단계의 구현 결정 사항들을 캡처한다. `RESEARCH.md`는 리서처가 발견한 내용을 기록한다. `PLAN.md`는 명시적인 수락 기준을 가진 개별적인 의존성 순서의 작업들로 작업을 분해한다. 실행 에이전트가 파일에 손을 대는 시점에는 긴 대화의 재해석이 아닌 정확한 명세를 가지고 있다. + +**메타 프롬프팅**은 에이전트 정의 자체가 애드혹 지시 사항이 아닌 신중하게 설계된 프롬프트라는 것을 의미한다. `get-shit-done/workflows/`와 `agents/`의 파일들은 작업의 범위를 지정하는 방법, 무엇을 검증해야 하는지, 언제 사람에게 체크포인트를 요청해야 하는지에 대한 소중한 지식을 담고 있다. 사용자는 매 세션마다 이 지식을 다시 설명할 필요가 없다; 그것은 시스템 자체의 프롬프트에 이미 내장되어 있다. + +이 조합은 의도적이다. 신선한 컨텍스트는 각 에이전트가 명확하게 추론하도록 보장한다. 명세 주도 결과물은 각 에이전트가 *올바른* 것에 대해 추론하도록 보장한다. 메타 프롬프팅은 각 에이전트가 *어떻게* 잘 추론해야 하는지 알도록 보장한다. + +--- + +## `.planning/`의 역할 + +컨텍스트 엔지니어링은 지식이 컨텍스트 리셋을 통해 살아남아야 한다는 것을 요구한다. GSD Core는 이를 위해 파일 시스템을 사용한다. 모든 의미 있는 출력물은 사람이 읽을 수 있는 마크다운 또는 JSON으로 `.planning/`에 작성된다. 이것은 다음을 의미한다. + +- 세션을 다시 시작하거나 모델이 충돌해도 작업이 손실되지 않는다. +- 모든 이후 에이전트는 공유 대화 이력에 의존하지 않고 이전 결과물을 직접 읽을 수 있다. +- 계획 결과물을 git에 검사, 편집 또는 커밋할 수 있다 — 데이터베이스의 불투명한 상태가 아닌 평문 텍스트이다. + +`STATE.md`는 이 시스템의 중추이다. 프로젝트의 현재 위치(어느 마일스톤, 어느 단계, 어느 계획이 완료되었는지), 활성 결정 사항과 장애물, 진행 지표를 기록한다. 모든 워크플로우가 시작될 때 `STATE.md`를 읽어 방향을 잡는다. 모든 워크플로우가 의미 있는 단계를 완료할 때 `STATE.md`에 다시 기록한다. 에이전트는 기억에 의존하지 않는다; 파일에 의존한다. + +--- + +## 트레이드오프 + +여기서 트레이드오프에 대한 솔직함이 중요하다. + +**오버헤드.** 단계 루프는 실제 마찰을 야기한다. `/gsd-discuss-phase`, `/gsd-plan-phase`, `/gsd-execute-phase`를 별도의 단계로 실행하는 것은 단순 세션에 "이 기능을 작성해줘"라고 입력하는 것보다 더 많은 경과 시간이 걸린다. 작고 잘 이해된 변경의 경우 그 오버헤드는 정당화되지 않는다. + +**지연.** 신선한 컨텍스트로 여러 서브에이전트를 생성하는 것은 단일 인-컨텍스트 편집보다 느리다. 리서치, 계획 수립, 실행 각각에 왕복 비용이 발생한다. + +**단순한 작업에 대한 의례.** 변수 이름을 바꾸거나, 오타를 수정하거나, 누락된 임포트를 추가해야 할 때 단계 루프는 과도하다. GSD Core는 전체 단계를 필요로 하지 않는 임시 작업을 위해 `/gsd-quick`과 `/gsd-fast`를 제공한다. [빠른 작업 처리하기](../how-to/handle-quick-and-fast-tasks.md)를 참조하라. + +단계 루프는 컨텍스트 부패가 실제 위험인 만큼 복잡한 작업 — 다중 파일 기능, 횡단 관심사 리팩터링, 몇 시간 또는 여러 세션에 걸친 작업 — 에서 그 가치를 발휘한다. 그 외의 경우에는 더 가벼운 기본 도구를 사용하라. + +유용한 경험 법칙: 단일 짧은 프롬프트로 완전히 명시되고 더 이상의 설명 없이 에이전트 한 번의 작업으로 완료될 수 있다면, 단계 루프를 건너뛰어라. 리서치가 필요하거나, 최근에 읽지 않은 파일이 포함되거나, 아직 결정되지 않은 사항에 의존한다면, 단계 루프가 보호해준다. + +--- + +## Related + +- [단계 루프](the-phase-loop.md) — 논의 → 계획 → 실행 → 검증 → 출시 사이클이 컨텍스트 엔지니어링을 실천에 옮기는 방법 +- [다중 에이전트 오케스트레이션](multi-agent-orchestration.md) — 서브에이전트가 생성, 범위 지정, 조율되는 방법 +- [아키텍처](../ARCHITECTURE.md) — 시스템 아키텍처, 에이전트 모델, 데이터 흐름 +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/explanation/multi-agent-orchestration.md b/docs/ko-KR/explanation/multi-agent-orchestration.md new file mode 100644 index 000000000..c55e187ee --- /dev/null +++ b/docs/ko-KR/explanation/multi-agent-orchestration.md @@ -0,0 +1,151 @@ +# GSD Core의 다중 에이전트 오케스트레이션 + +> **설명** — 이 문서는 GSD Core가 다중 에이전트 오케스트레이션을 중심으로 +> 설계된 *이유*와 *구성 요소들이 어떻게 맞물리는지*를 설명한다. 단계별 +> 가이드가 아니다. 설정에 대해서는 +> [모델 프로필 설정](../how-to/configure-model-profiles.md)과 +> [설정 레퍼런스](../CONFIGURATION.md)를 참조하라. 전체 에이전트 목록은 +> [인벤토리](../INVENTORY.md)를 참조하라. + +--- + +## 이 설계가 해결하는 문제 + +AI 코딩 에이전트는 저하된다. 모델이 나빠지기 때문이 아니라 *컨텍스트 윈도우가 채워지기* 때문이다. 대화가 길어질수록 초반의 결정들과 코드가 중간 단계들의 노이즈에 밀려나거나 희석된다. 복잡한 작업에서 다섯 번째 파일을 작성할 때쯤 에이전트는 첫 번째 메시지에서 명시된 제약 조건을 이미 잊었을 수도 있다. 이를 *컨텍스트 부패*라고 부르기도 한다. + +GSD Core의 다중 에이전트 설계는 그 문제에 대한 직접적인 대응이다. 하나의 장시간 실행 에이전트가 전체 세션을 담당하는 대신, 얇은 오케스트레이터가 **신선한 200K 토큰 컨텍스트 윈도우**와 *자신의 특정 작업을 수행하는 데 필요한 결과물만* 갖고 시작하는 단수명 전문화 에이전트들을 생성한다. 오케스트레이터 자신은 절대 무거운 작업을 하지 않는다; 컨텍스트를 로드하고, 적합한 에이전트를 생성하고, 결과를 수집하고, `.planning/`의 공유 상태를 업데이트한다. + +--- + +## 오케스트레이터 → 에이전트 패턴 + +`get-shit-done/workflows/`의 모든 워크플로우는 동일한 형태를 따른다: + +```text +오케스트레이터 (워크플로우 .md 파일) + │ + ├── 컨텍스트 로드 + │ gsd-tools.cjs init + │ → JSON: 프로젝트 정보, 설정, 상태, 단계 상세 + │ + ├── 모델 해결 + │ gsd-tools.cjs resolve-model + │ → opus | sonnet | haiku | inherit + │ + ├── 전문화 에이전트 생성 (Task/SubAgent 호출) + │ ├── 에이전트 정의 (agents/*.md) + │ ├── 컨텍스트 페이로드 (init JSON) + │ ├── 모델 할당 + │ └── 도구 권한 + │ + ├── 결과 수집 + │ + └── 상태 업데이트 + gsd-tools.cjs state update / state patch / state advance-plan +``` + +오케스트레이터는 의도적으로 얇다. 도메인에 대해 추론하지 않고, 코드를 작성하지 않으며, 다음 단계로 라우팅하는 것 이상으로 결과를 해석하지 않는다. 그 경계는 각 계층의 책임을 명확하게 유지하고 오케스트레이터의 컨텍스트가 도메인 노이즈를 축적하는 것을 방지한다. + +### 에이전트 목록 + +GSD Core의 에이전트들은 리서치 → 계획 → 실행 → 검증 파이프라인에 매핑되는 기능 범주로 나뉜다: + +| 범주 | 에이전트 | 일반적인 병렬성 | +|---|---|---| +| 리서처 | `gsd-project-researcher`, `gsd-phase-researcher`, `gsd-ui-researcher`, `gsd-advisor-researcher` | 4개 병렬 (스택, 기능, 아키텍처, 함정) | +| 합성기 | `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개 병렬 하위 프로브 | +| 감사기 | `gsd-ui-auditor`, `gsd-security-auditor` | 순차적 | + +각 에이전트 정의(`agents/*.md`)는 허용된 도구 접근, 목적, 터미널 출력 색상을 선언한다. 파일을 읽고 단일 출력 문서를 작성하기만 하면 되는 에이전트는 정확히 그런 권한만 받는다 — Bash 실행 없음, 광범위한 상태 접근 없음. 그 제약은 의도적이다: 에이전트가 예상치 못하게 행동할 경우 영향 범위를 작게 유지한다. + +전체 31개 에이전트 목록은 [인벤토리](../INVENTORY.md#agents-31-shipped)를 참조하라. + +--- + +## 웨이브 기반 병렬 실행 + +다중 에이전트 설계의 가장 눈에 띄는 표현은 `/gsd-execute-phase`가 서로 의존관계가 있는 계획들의 집합을 처리하는 방식이다. + +실행기를 생성하기 전에 오케스트레이터는 **웨이브 분석**을 수행한다: 각 `PLAN.md` 파일의 의존성 선언을 읽고 계획들을 웨이브로 그룹화한다. 선언된 의존성이 없는 계획들은 웨이브 1을 형성하고 병렬로 실행된다. 웨이브 1에 의존하는 계획들은 웨이브 2를 형성하고, 계속해서 이어진다. + +```text +계획 01 (의존성 없음) ─┐ +계획 02 (의존성 없음) ─┤─── 웨이브 1 (병렬) +계획 03 (의존: 01) ─┤─── 웨이브 2 (웨이브 1 대기) +계획 04 (의존: 02) ─┘ +계획 05 (의존: 03, 04) ─── 웨이브 3 (웨이브 2 대기) +``` + +웨이브 내 각 실행기는: + +- 신선한 컨텍스트 윈도우(200K 토큰, 또는 지원 모델에서 최대 1M)를 받는다 +- 담당하는 특정 `PLAN.md`를 받는다 +- 프로젝트 컨텍스트(`PROJECT.md`, `STATE.md`)를 받는다 +- 단계 컨텍스트(가용한 경우 `CONTEXT.md`, `RESEARCH.md`)를 받는다 +- 완료 시 원자적 git 커밋을 생성한다 +- 만들어진 것을 설명하는 `SUMMARY.md`를 작성한다 + +웨이브의 모든 실행기가 완료된 후, 오케스트레이터는 전체 웨이브에 대해 한 번 사전 커밋 훅을 실행한다. 실행기는 여러 에이전트가 병렬로 커밋할 때의 빌드 잠금 경합(예: Rust 프로젝트의 Cargo 잠금 충돌)을 방지하기 위해 `--no-verify`로 커밋한다. 따라서 훅은 커밋당 한 번이 아닌 웨이브당 한 번 실행된다. + +### 병렬 커밋 안전성 + +여러 실행기가 동시에 실행될 때 쓰기 충돌을 방지하는 두 가지 메커니즘이 있다: + +1. **`STATE.md`에 대한 원자적 잠금** — `STATE.md`에 대한 모든 쓰기는 `O_EXCL` 원자적 생성을 사용하는 잠금파일(`STATE.md.lock`)을 사용한다. 이는 두 에이전트가 각각 파일을 읽고, 서로 다른 필드를 수정하고, 나중에 쓰는 쪽이 먼저 쓴 쪽의 변경 사항을 덮어쓰는 읽기-수정-쓰기 경합 조건을 방지한다. 오래된 잠금(10초 이상)은 자동으로 지워진다. + +2. **웨이브당 훅 실행** — 각 실행기가 사전 커밋 훅을 독립적으로 실행하는 대신(공유 빌드 결과물에 파일 수준 경합을 유발할 수 있음), 오케스트레이터는 모든 웨이브가 완료된 후 한 번 `git hook run pre-commit`을 실행한다. + +--- + +## 대형 윈도우 모델을 위한 적응형 컨텍스트 보강 + +표준 200K 컨텍스트 윈도우는 실행기가 단일 집중된 계획을 구현하기에 충분하다. 구성된 `context_window`가 500K 토큰 이상인 경우(예: Opus 4.6 또는 Sonnet 4.6을 1M 클래스 모드로 사용할 때), 오케스트레이터는 자동으로 표준 윈도우에 들어가지 않는 추가 컨텍스트로 서브에이전트 프롬프트를 보강한다: + +- **실행기 에이전트**는 이전 웨이브의 `SUMMARY.md` 파일들과 단계 `CONTEXT.md`/`RESEARCH.md`를 받아 단계 내 교차 계획 인식을 갖는다 +- **검증기 에이전트**는 모든 `PLAN.md`, `SUMMARY.md`, `CONTEXT.md` 파일들과 `REQUIREMENTS.md`를 받아 이력 인식 검증을 할 수 있다 + +이 보강은 `config.json`의 `context_window` 값에 조건부이다. 표준 윈도우 설정에서는 캐시 친화적 순서로 토큰 효율성을 최대화하는 잘린 버전의 프롬프트를 사용한다. + +--- + +## 이 설계의 이유 — 컨텍스트 엔지니어링과의 연결 + +오케스트레이터 → 에이전트 패턴은 더 광범위한 *컨텍스트 엔지니어링* 접근 방식의 일부로서만 의미가 있다: AI 에이전트의 컨텍스트 윈도우에 들어가는 것이 모델 등급이나 프롬프트 품질만큼 중요하다는 아이디어. 전체 내용은 [컨텍스트 엔지니어링](context-engineering.md)을 참조하라. + +다중 에이전트 오케스트레이션은 두 가지 방식으로 컨텍스트 엔지니어링을 구현한다: + +**컨텍스트 격리.** 각 에이전트는 필요한 것만 받는다. 리서처는 프로젝트 설명과 도메인 질문들을 받는다; 전체 계획 이력은 받지 않는다. 검증기는 모든 계획과 요약을 받는다; 원시 리서치는 받지 않는다. 격리는 각 에이전트의 컨텍스트를 다른 파이프라인 단계들의 노이즈로 희석되지 않고 신호로 밀도 있게 유지한다. + +**세션 간 컨텍스트 위생.** 모든 상태가 사람이 읽을 수 있는 마크다운과 JSON으로 `.planning/`에 저장되기 때문에(에이전트의 컨텍스트 윈도우가 아닌), GSD 워크플로우는 컨텍스트 리셋(`/clear`), 탭 전환, 며칠간의 휴식을 견뎌낸다. 다음 에이전트는 항상 긴 대화의 재구성된 기억이 아닌 영속적이고 검증된 결과물에서 시작한다. + +--- + +## 트레이드오프 + +다중 에이전트 오케스트레이션은 비용이 없지 않다. + +**조율 오버헤드.** 각 에이전트 생성은 왕복이다: 오케스트레이터가 프롬프트를 형식화하고, 컨텍스트를 넘기고, 서브에이전트가 완료될 때까지 기다리고(일반적으로 1-5분), 결과를 파싱해야 한다. 하나의 컨텍스트에서 작동하는 단일 능력 있는 에이전트는 단순한 작업에서 더 빨리 완료될 것이다. GSD는 의존성이 허용되는 모든 곳에서 병렬성을 기본값으로 만들어 이를 완화한다 — `plan-phase`의 네 리서처들은 순차적이 아닌 동시에 실행된다. + +**실행 중 불투명성.** 서브에이전트가 실행되는 동안 그 작업은 부모 세션에서 보이지 않는다. 실시간 진행 스트림이 없다. 이것은 신선한 컨텍스트 설계의 의도적인 결과이다: 서브에이전트가 자체 컨텍스트 윈도우에서 작동하고 있다. 오케스트레이터는 생성 라인에 활성 표시를 보여줌으로써("서브에이전트에서 실행됨 — 반환될 때까지 출력 없음") 기대치를 설정한다. + +**컨텍스트 스티칭 비용.** 각 에이전트에 적합한 결과물들을 패키징하려면 오케스트레이터가 컨텍스트 페이로드를 조립하고 전송하는 데 토큰을 소비해야 한다. 이것이 격리의 비용이다. `gsd-tools.cjs init` 핸들러는 완전성과 토큰 예산의 균형을 맞추는 JSON 페이로드를 생성하며, 반복 호출에서 캐시에 도달하도록 캐시 친화적 순서를 적용한다. + +**모델 비용 증폭.** Opus 등급으로 다섯 개의 에이전트를 병렬로 실행하는 것은 하나를 실행하는 것보다 더 비용이 많이 든다. 모델 프로필 시스템(`model_profiles.md`, `model-profiles.cjs`에 의해 에이전트별로 해결됨)을 사용하면 덜 중요한 에이전트에 더 저렴한 등급을 할당할 수 있다. `dynamic_routing` 기능은 모든 에이전트를 더 저렴한 등급에서 시작하고 소프트 실패 시에만 에스컬레이션함으로써 비용을 더 줄여준다. 전체 옵션은 [설정](../CONFIGURATION.md)을 참조하라. + +이런 비용의 대가로 이 설계는 *대형 단계에서의 일관된 품질*을 제공한다. 400줄 계획의 열 번째 파일을 작성하는 실행기는 컨텍스트가 신선하기 때문에 저하되지 않는다. 스무 개의 요구 사항을 확인하는 검증기는 처음 열 개를 잊지 않는다. 왜냐하면 대화 이력이 아닌 구조화된 입력으로 모두 받았기 때문이다. + +--- + +## Related + +- [컨텍스트 엔지니어링](context-engineering.md) — 이 설계에 동기를 부여하는 상위 원칙 +- [모델 프로필 설정](../how-to/configure-model-profiles.md) — 에이전트별로 모델 등급을 할당하는 방법 +- [설정 레퍼런스](../CONFIGURATION.md) — `models`, `model_overrides`, `dynamic_routing`, `context_window`를 포함한 전체 `config.json` 스키마 +- [인벤토리](../INVENTORY.md) — 권위 있는 에이전트 목록과 워크플로우 목록 +- [아키텍처](../ARCHITECTURE.md#agent-model) — 오케스트레이터 → 에이전트 패턴과 웨이브 실행 모델의 구현 수준 상세 +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/explanation/security-model.md b/docs/ko-KR/explanation/security-model.md new file mode 100644 index 000000000..644e61a3e --- /dev/null +++ b/docs/ko-KR/explanation/security-model.md @@ -0,0 +1,123 @@ +# GSD Core 보안 모델 + +> **설명** — 이 문서는 GSD Core가 현재의 보안 자세를 갖는 *이유*와 *계층들이 +> 어떻게 맞물리는지*를 설명한다. 모든 훅 파라미터에 대한 레퍼런스가 아니다. +> `/gsd-secure-phase` 명령과 옵션에 대해서는 [명령어](../COMMANDS.md)를 참조하라. +> 구현 수준의 훅 아키텍처에 대해서는 +> [아키텍처 § 훅 시스템](../ARCHITECTURE.md#hook-system)을 참조하라. +> 조직 전반의 보안 기준선(스캐너 제어, 인시던트 체크리스트, 소유권 모델)에 대해서는 +> [SECURITY.md](../../../SECURITY.md)를 참조하라. + +--- + +## AI 기반 개발에 전용 보안 자세가 필요한 이유 + +일반적인 코드 에디터는 사용자를 대신하여 임의의 패키지를 실행하지 않는다. GSD Core는 그렇게 한다. 리서치 → 계획 → 실행 파이프라인은 "패키지 이름 지정"에서 "`npm install ` 실행"까지, "계획 결과물 작성"에서 "해당 결과물을 LLM 시스템 프롬프트로 사용"까지의 전체 경로를 자동화한다. 각 자동화 단계는 루프에서 사람을 제거한다 — 그리고 각 제거는 잠재적인 공격 표면이다. + +GSD Core의 보안 모델은 하나의 조직 원칙을 중심으로 구축된다: **심층 방어(defence in depth)**. 어떤 단일 제어도 완벽하다고 가정하지 않는다. 여러 겹치는 계층이 각각 고유한 종류의 위험을 줄이며, 함께 공격 표면을 완전히 제거하지는 않지만 악용하기 상당히 더 어렵게 만든다. 이 문서 끝의 솔직한 요약은 시스템이 방어할 수 없는 것을 설명한다. + +--- + +## 계층 1 — 공급망 보호: 패키지 적법성 게이트 + +### 위협 + +AI 모델은 패키지 이름을 환각한다. 이것은 변두리 실패 모드가 아니다: 2025년 연구에서 AI가 생성한 패키지 참조의 약 20%가 합법적인 패키지와 대응되지 않는 환각된 이름으로 문서화되었다. 그 환각된 이름들의 일부 — 같은 연구에서 약 43% — 는 프롬프트 전반에 걸쳐 일관되게 반복되며, 이는 공격자가 AI 도구들이 일반적으로 생성하는 이름을 관찰하고 악의적인 설치 후 스크립트로 npm, PyPI, 또는 crates.io에 해당 이름들을 선점 등록할 수 있다는 것을 의미한다. 이 기법을 *슬롭스쿼팅(slopsquatting)*이라고 한다. + +슬롭스쿼팅의 교활한 특성은 `npm view`를 통과하는 환각된 이름이 *합법적으로 보인다*는 것이다. 레지스트리 항목은 누군가가 이름을 등록했다는 것만 증명한다 — AI가 말한 것을 패키지가 한다거나, 합법적인 사용자가 있다거나, 설치 스크립트가 안전하다는 것은 증명하지 않는다. 게이트 없이는 환각된 이름이 GSD의 리서처 → 플래너 → 실행기 파이프라인을 통해 감지되지 않고 흐르다가 결국 사용자의 기계에서 `npm install `로 실행될 것이다. + +### 게이트 작동 방식 + +게이트는 세 가지 파이프라인 단계에 걸쳐 작동한다: + +**리서치 단계.** `gsd-phase-researcher`가 외부 패키지를 추천할 때 각 패키지에 대해 `slopcheck install --json`을 실행한다. 결과는 `RESEARCH.md`의 `## Package Legitimacy Audit` 테이블에 작성된다. `[SLOP]`로 태그된 패키지들(높은 신뢰도의 환각 또는 공격자가 등록)은 파일이 저장되기 전에 **`RESEARCH.md`에서 완전히 제거된다**. 이런 패키지들은 절대 플래너에게 도달하지 않는다. + +**계획 단계.** `gsd-planner`는 감사 테이블을 읽는다. `[SUS]`(의심스러움: 최근 등록, 낮은 다운로드 수, 소스 저장소 없음, 또는 인기 있는 패키지와 가까운 명명 패턴)나 `[ASSUMED]`(직접 레지스트리 검증이 아닌 WebSearch에서 출처)로 태그된 모든 패키지에 대해, 플래너는 설치 단계 전에 **`checkpoint:human-verify` 작업을 삽입한다**. 체크포인트에는 레지스트리 페이지로의 직접 링크와 살펴봐야 할 구체적인 항목들이 포함된다: 유지관리자 이력, 이슈 트래커 활동, 의심스러운 설치 스크립트의 부재. + +**실행 단계.** 설치가 실패하면 `gsd-executor`는 **체크포인트를 표시하고 중지한다**. 대체 패키지 이름을 조용히 시도하지 않는다 — 그 자체가 악의적일 수 있다. 이는 실행기 동작의 명시적인 규칙이다(실행기 에이전트 정의의 RULE 3). + +### WebSearch 패키지가 항상 `[ASSUMED]`인 이유 + +WebSearch를 통해 발견된 패키지 이름은 `npm view`가 성공하는지 여부에 관계없이 `[ASSUMED]`로 태그된다. 레지스트리에 존재하는 패키지가 설치하기에 안전한 패키지와 같지 않다. `npm view`는 등록을 증명하지, 적법성을 증명하지 않는다. `[ASSUMED]` 태그는 `[SUS]`와 동일한 사람 검증 체크포인트를 트리거하여, 검증되지 않은 웹 검색 추천이 설치 전에 항상 사람의 검토를 받도록 보장한다. + +### 생태계 커버리지 + +리서처는 단일 일반 검사 대신 레지스트리별 검증 명령을 사용한다: + +- Node.js: `npm view` +- Python: `pip index versions` +- Rust: `cargo search` + +이는 2025년 USENIX 연구에 따르면 약 9% 발생률의 교차 생태계 환각을 커버한다 — AI가 실제로 사용 중인 것이 아닌 한 생태계에서는 존재하지만 다른 생태계에서는 없는 패키지를 추천하는 경우. + +### 정상적인 성능 저하 + +`slopcheck`을 사용할 수 없는 경우(설치되지 않았거나 리서치 시점에 pip 설치 실패), GSD는 가장 엄격한 폴백을 적용한다: **모든 추천 패키지가 `[ASSUMED]`로 태그되고**, 플래너는 모든 설치에 `checkpoint:human-verify` 작업을 게이트로 건다. 리서치와 계획 수립은 정상적으로 진행된다 — 시스템은 누락된 도구 의존성으로 인해 하드 실패하지 않는다. 이것은 의도적으로 정상 흐름보다 더 엄격하다: slopcheck 사용 불가는 모든 패키지 설치에 사람 체크포인트를 받는다는 것을 의미한다. + +`slopcheck` 도구는 MIT 라이선스이며 pip으로 설치 가능하다. 유지 관리가 중단되더라도 `[ASSUMED]`-게이트 폴백은 사람 체크포인트 커버리지가 유지되도록 보장한다. + +--- + +## 계층 2 — 프롬프트 인젝션 방어 + +### 위협 + +GSD Core는 LLM 시스템 프롬프트가 되는 마크다운 파일을 생성한다. 리서치 파이프라인은 외부 웹 콘텐츠를 읽는다; 계획 파이프라인은 사용자가 제공한 텍스트(`--text-file`, `--prd`)를 통합한다; 실행 파이프라인은 에이전트 컨텍스트로 나중에 다시 읽히는 계획 결과물을 작성한다. 이런 결과물들에 흐르는 사용자가 제어하는 텍스트는 잠재적인 **간접 프롬프트 인젝션** 벡터이다 — 시스템 프롬프트 안에 들어가면 에이전트의 지시 사항을 재정의하거나 정보를 유출하려는 공격자가 제어하는 문자열. + +### 방어 작동 방식 + +GSD Core는 세 가지 수준에서 프롬프트 인젝션을 다룬다. + +**입력 유효성 검사(`security.cjs`).** `get-shit-done/bin/lib/security.cjs` 모듈은 중앙 보안 유틸리티이다. 다음을 제공한다: + +- 경로 탐색 방지: 사용자가 제공한 파일 경로(`--text-file`, `--prd`)가 프로젝트 디렉터리 내에서 해결되도록 유효성이 검사되며, macOS의 `/var` → `/private/var` 심링크 해결이 명시적으로 처리된다 +- 프롬프트 인젝션 탐지: 알려진 인젝션 패턴(역할 재정의, 지시 우회, 시스템 태그 인젝션)이 사용자가 제공한 텍스트에서 계획 결과물에 들어가기 전에 스캔된다 +- 안전한 JSON 파싱: 제작된 JSON 페이로드를 통한 프로토타입 오염 공격을 방지하는 래퍼 +- 쉘 인수 유효성 검사: 하위 쉘 명령에 전달되는 인수가 사용 전에 유효성이 검사된다 + +**런타임 훅: `gsd-prompt-guard.js`.** 이 훅은 `.planning/` 파일을 대상으로 하는 모든 Write 또는 Edit 호출에서 실행된다. 작성되는 콘텐츠를 `security.cjs`와 동일한 인젝션 패턴으로 스캔한다(독립성을 위해 훅에 직접 인라인된 하위 집합 — 훅은 모듈 경로가 변경되더라도 실행되도록 모듈을 `require()`하지 않는다). 탐지는 **자문적 전용**이다: 훅은 결과를 로그하지만 쓰기를 차단하지 않는다. 이유는 합법적인 계획 쓰기에 대한 오탐지 차단이 이차 스캔 계층에서 놓친 인젝션보다 더 방해가 될 것이기 때문이다. + +**런타임 훅: `gsd-read-injection-scanner.js`.** 이 훅은 모든 Read 도구 호출의 출력에서 실행된다. 방금 읽은 *콘텐츠*를 신뢰할 수 없는 콘텐츠의 주입된 지시 사항으로 스캔한다 — 공격자가 GSD가 에이전트 컨텍스트에 통합하려는 파일에 지시 사항을 내장한 경우를 잡아낸다. + +**CI 스캐너.** `prompt-injection-scan.test.cjs`는 테스트 스위트의 일부로 내장된 인젝션 벡터가 있는지 모든 에이전트, 워크플로우, 명령 파일을 스캔한다. 이는 GSD 소스 자체의 인젝션 시도를 잡아낸다 — 예를 들어 워크플로우 파일을 수정하여 역할 재정의 지시 사항을 추가하는 공급망 공격. + +### 읽기 인젝션 스캐너 vs 프롬프트 가드 + +두 훅은 보완적인 표면을 커버한다. `gsd-prompt-guard.js`는 *계획 결과물에 대한 쓰기*를 감시한다 — 심어지는 인젝션을 잡는다. `gsd-read-injection-scanner.js`는 *모든 파일의 읽기*를 감시한다 — 외부 콘텐츠(의존성의 README, 타사 설정 파일, 사용자가 제공한 문서)에서 수집되는 인젝션을 잡는다. 함께 수집 → 저장 → 재독 수명 주기를 괄호로 묶는다. + +--- + +## 계층 3 — 저장소 및 의존성 무결성 + +GSD의 런타임 동작 상류에서 `open-gsd` 조직은 저장소와 패키지 수준에서 제어를 시행한다. 이것들은 [`docs/security/baseline.md`](../../security/baseline.md)에 완전히 문서화되어 있으며 완전성을 위해 여기에 요약된다. + +**의존성 무결성.** 모든 타사 의존성은 `package-lock.json`을 통해 고정되고 설치 전에 공개된 체크섬에 대해 검증된다. `scripts/check-npm-integrity.cjs` 게이트는 CI 시점에 유효하지 않은 버전, 누락된 패키지, 불필요한 패키지를 탐지한다. 이는 GSD 자체 의존성에 대한 의존성 혼동 및 오타스쿼팅 공격을 완화한다. + +**비밀 스캔.** 모든 커밋과 PR은 하드코딩된 비밀이 있는지 스캔된다. 의도적인 테스트 픽스처는 프로젝트 표준 제외 문법으로 주석을 달아야 한다(주석 형식은 `SECURITY.md` 참조). 주석이 없는 억제는 CI를 실패시킨다. + +**로케일 안전 텍스트 스캔.** 출력 및 사용자 대면 문자열은 유니코드 동형 문자, 양방향 오버라이드 문자, 보이지 않는 유니코드에 대해 스캔된다 — 차이점에서 악의적인 콘텐츠를 숨길 수 있는 CVE-2021-42574("Trojan Source")에 문서화된 공격 클래스. + +--- + +## 트레이드오프와 한계 + +여기에 설명된 보안 모델은 AI 기반 개발을 위한 공격 표면을 의미 있게 줄인다. 공급망 위험을 제거하지는 않는다. + +**패키지 적법성 게이트가 줄이는 것:** 환각되거나 공격자가 등록한 패키지가 사람 체크포인트 없이 `npm install`에 도달할 확률. `[SLOP]` 게이트는 높은 신뢰도의 나쁜 패키지를 완전히 제거한다; `[SUS]` / `[ASSUMED]` 게이트는 실행 전에 사람 검토를 요구한다. 이는 성공적인 슬롭스쿼팅 공격의 비용을 상당히 높인다. + +**패키지 적법성 게이트가 제거하지 않는 것:** 나중에 손상된 합법적인 패키지(계정 탈취, 자체 트리의 의존성 혼동)는 리서치 시점의 등록 신호를 확인하는 slopcheck에 의해 잡히지 않는다. 잠금 파일과 의존성 무결성 계층의 `npm audit`이 그 공격 클래스에 대한 제어이다. + +**프롬프트 인젝션 방어가 줄이는 것:** 계획 결과물의 사용자가 제어하는 텍스트가 에이전트 지시 사항을 성공적으로 재정의할 확률. 알려진 인젝션 형태에 대한 패턴 매칭은 일반적인 경우를 잡는다; 새로운 탈옥이나 저신호 인젝션은 탐지되지 않고 통과할 수 있다. 자문 전용 자세는 탐지가 로그되지만 차단되지 않는다는 것을 의미한다 — 탐지 시 하드 정지하지 않는 비용으로 워크플로우 연속성을 보존하는 의도적인 선택. + +**프롬프트 인젝션 방어가 제거하지 않는 것:** 알려진 패턴과 일치하지 않는 충분히 창의적인 인젝션, 또는 훅이 커버하지 않는 채널을 통해 도달하는 인젝션(예: 서브에이전트가 문서를 탐색하면서 읽는 의존성의 공개된 README에 주입된 콘텐츠). 심층 방어는 각 계층이 공격을 더 어렵게 만들지, 어떤 단일 계층이 불가능하게 만들지 않는다는 것을 의미한다. + +**취약점 신고.** `https://github.com/open-gsd/gsd-core/security/advisories/new`에서 비공개 GitHub 보안 보고서를 통해 신고하라. 공개 이슈를 열지 말라. 응답 일정과 공개 정책은 [SECURITY.md](../../../SECURITY.md)를 참조하라. + +--- + +## Related + +- [명령어](../COMMANDS.md) — 보안 관련 플래그가 있는 `/gsd-secure-phase`와 `/gsd-code-review` 포함 +- [아키텍처 § 훅 시스템](../ARCHITECTURE.md#hook-system) — 모든 훅, 이벤트 트리거, 안전 속성에 대한 구현 상세 +- [SECURITY.md](../../../SECURITY.md) — 취약점 신고, 조직 전반 보안 기준선, 비밀 스캔 제외 거버넌스, 의존성 무결성 검증 +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/explanation/the-phase-loop.md b/docs/ko-KR/explanation/the-phase-loop.md new file mode 100644 index 000000000..ff6f926d1 --- /dev/null +++ b/docs/ko-KR/explanation/the-phase-loop.md @@ -0,0 +1,129 @@ +# 단계 루프 + +> GSD Core가 작업을 조직하는 방식의 핵심 멘탈 모델. + +--- + +## 루프란 무엇인가 + +GSD Core는 모든 개발 작업을 반복되는 사이클로 구조화한다. + +```text +논의 → (UI 디자인) → 계획 → 실행 → 검증 → 출시 +``` + +모든 작업 단위 — **단계(phase)**라고 부름 — 는 이 순서대로 각 단계를 거친다. 루프는 형식적인 절차가 아니다. 각 단계는 이전 단계 혼자서는 방지할 수 없는 특정 종류의 실패를 막기 위해 존재한다. + +이 문서는 루프가 이런 형태를 갖는 *이유*를 설명한다. 각 단계를 실행하는 방법에 대한 지침은 하단에 링크된 how-to 가이드를 참조하라. + +--- + +## 각 단계가 존재하는 이유 + +### 논의(Discuss) + +무엇을 만들어야 하는지뿐만 아니라 *어떻게* 만들어야 하는지를 알기 전까지는 계획을 시작할 수 없다. `ROADMAP.md`의 단계 목표는 결과를 설명한다. 논의 단계는 그 결과로 가는 경로를 형성하는 구현 결정 사항들을 캡처한다: 어떤 라이브러리를 사용할지, 오류 처리 전략, 기능이 라우트별인지 전역인지, 엣지 케이스의 동작 방식. + +논의 단계 없이는 플래너가 이런 결정들을 스스로 내려야 한다. 때로는 맞게 추측하기도 한다. 그러나 그럴듯하지만 틀리게 추측하는 경우도 많다 — 일관성은 있지만 실제 선호도와 맞지 않는 계획을 생성한다. 실행이 완료되고 오류를 발견했을 때는 이미 상당한 작업을 되돌려야 하는 상황이 된다. + +논의 단계는 의도적으로 가볍다. 명세 작성 훈련이 아니라 대화이다. 출력물은 단계 디렉터리의 `CONTEXT.md`이다: 플래너, 실행기, 검증기 모두 읽을 수 있는 결정 사항들의 구조화된 기록. 대화는 몇 분이 걸리지만; 수 시간의 재작업을 절약할 수 있다. + +### UI 디자인(선택적) + +시각적 컴포넌트가 있는 단계의 경우, 논의와 계획 사이에 선택적인 `/gsd-ui-phase` 단계가 있다. 코드 작성 전에 레이아웃, 인터랙션, 시각적 동작을 설명하는 디자인 계약인 `UI-SPEC.md`를 생성한다. UI가 복잡하여 디자인의 모호함이 다양한 구현 선택을 만들어낼 만큼 복잡할 때 이 단계를 실행할 가치가 있다. 명확한 디자인 계약은 재구현보다 훨씬 비용이 저렴하다. + +### 계획(Plan) + +계획 단계는 실행에 필요한 리서치, 분해, 구조적 사고를 수행한다. 신선한 컨텍스트 서브에이전트들의 시퀀스로 실행된다: 생태계를 조사하고 `RESEARCH.md`에 결과를 기록하는 리서처, 리서치와 `CONTEXT.md` 모두를 읽어 `PLAN.md` 파일들을 생성하는 플래너, 계획이 완전하고 일관성 있으며 범위 내에 있는지 검증하는 계획 검사기. + +계획에는 무엇이 포함되는가? 각 `PLAN.md`는 작업의 범위가 한정된 단위를 설명한다: 수정할 파일들, 수행할 구체적인 변경 사항들, 완료를 정의하는 수락 기준. 계획들은 병렬 실행이 안전하도록 의존성 웨이브 순서로 정렬된다 — 같은 웨이브의 실행기들은 겹치지 않는 관심사를 다룬다. + +계획 단계는 모호함이 가장 비용이 많이 드는 순간이다. 모호한 계획은 가정을 세우는 실행기를 만든다. 같은 관심사에 대해 서로 다른 가정을 세우는 여러 병렬 실행기들은 충돌을 만든다. 계획 검사기의 임무는 실행 전에 이런 문제들을 잡아내는 것이다. + +### 실행(Execute) + +실행은 계획들을 수행한다. 각 실행기는 자신에게 필요한 것들만 정확히 담긴 신선한 200k 토큰 컨텍스트 윈도우를 받는다: 프로젝트 요약, 단계 컨텍스트, 리서치, 그리고 자신의 작업에 대한 특정 `PLAN.md`. 그 이상은 없다. + +실행기는 코드를 작성하고 원자적으로 커밋한다. 각 커밋은 계획에서 완료된 작업과 대응된다. 병렬 실행기들의 웨이브가 완료되면, 오케스트레이터는 상태를 병합하고 다음 웨이브를 시작한다. + +실행기의 신선한 컨텍스트는 편의를 위한 것이 아니다 — 컨텍스트 부패를 방지하는 메커니즘이다. 180k 토큰의 누적된 세션 이력으로 실행되는 실행기는 저하된 실행기이다. 깨끗하게 시작하고 계획이 필요로 하는 것만 읽는 실행기는 최대 능력으로 작동하는 실행기이다. + +### 검증(Verify) + +모든 실행기가 완료된 후, 검증기 에이전트는 단계 목표, `CONTEXT.md` 결정 사항들, 계획들, 실행 요약들을 읽고 — 만들어진 것이 의도한 것과 일치하는지 확인한다. `VERIFICATION.md`를 생성하고, 불일치가 있으면 대상이 명확한 수정 계획을 생성한다. + +검증은 단순한 테스트가 아니다. 요구 사항 커버리지(모든 REQ-ID가 처리되었는가?), 결정 커버리지(`CONTEXT.md`에 캡처된 결정 사항들이 실제로 구현되었는가?), 전반적인 단계 목표 정렬을 확인한다. 단계는 실행이 오류 없이 완료되었기 때문에 완료되는 것이 아니다. 만들어진 것이 계획된 것이고, 계획된 것이 결정된 것이기 때문에 완료된다. + +### 출시(Ship) + +출시 단계는 풀 리퀘스트를 생성하고 단계 결과물들을 아카이브한다. `STATE.md`가 업데이트되어 단계 완료를 표시한다. 루프가 다음 단계를 위해 다시 시작된다. + +--- + +## 마일스톤과 단계 + +**마일스톤**은 버전 사이클 — 프로젝트의 의미 있고 릴리스 가능한 증분이다. 이름, 버전 번호, 그리고 무엇을 제공해야 하는지 정의하는 요구 사항들의 집합을 갖는다. 마일스톤은 모든 단계들이 출시되고 요구 사항들이 충족되면 완료된다. + +**단계**는 마일스톤 내의 하나의 작업 단위이다. 단계는 목표, 처리하는 요구 사항들의 집합, 그리고 그것을 구현하는 계획들의 집합을 갖는다. + +이 관계가 중요한 이유는 마일스톤과 단계가 서로 다른 관심 범위를 갖기 때문이다. 마일스톤은 묻는다: "이 버전의 제품은 무엇을 하고, 무엇을 하지 않는가?" 단계는 묻는다: "우리가 다음으로 연구하고, 계획하고, 실행하고, 검증할 수 있는 범위가 한정된 것은 무엇인가?" + +마일스톤 경계는 자연스러운 제품 경계에서 그어진다 — 배포 가능한 API, 작동하는 UI 플로우, 완전한 데이터 모델. 단계 경계는 루프가 다루기 힘들어지지 않고 하나의 루프에서 안전하게 실행될 수 있는 범위의 한계에서 그어진다. + +--- + +## 좋은 단계 범위란 무엇인가 + +이것은 루프와 관련된 마찰의 가장 일반적인 원인이기 때문에 심층적으로 살펴볼 가치가 있다. + +너무 큰 단계는 그 자체로 리서치 프로젝트가 된다. 플래너는 독립적인 계획들로 분해하는 데 어려움을 겪는다. 이후 웨이브의 실행기들이 이전 웨이브를 기다리며 막힌다. 검증이 대상이 명확한 리뷰보다 전체 감사가 된다. 피드백 사이클이 몇 시간에서 며칠로 늘어나고, 많은 코드가 작성된 후에야 — 근본적인 설계 오류를 발견할 위험이 급격히 높아진다. + +너무 작은 단계는 자연스럽게 함께 속하는 작업을 분할한다. 몇 줄에 불과한 계획 파일들, 몇 분 안에 완료되는 단계들, 실행 비용을 압도하는 계획 오버헤드가 발생한다. 루프가 도움이 되기보다 관료적으로 느껴진다. + +좋은 단계 범위는 다음과 같은 경우이다: + +- 목표가 명백히 사소하지도 않고 의심스럽게 광범위하지도 않은 하나의 문장으로 명시될 수 있다. +- 계획에 필요한 리서치가 제한되어 있다 — 생태계 질문들이 다른 단계들이 먼저 완료되는 것에 의존하지 않는 답을 가진다. +- 실행이 수십 개가 아니라 소수의 겹치지 않는 계획들로 병렬화될 수 있다. +- 검증기가 전체 코드베이스를 읽지 않고도 확인할 수 있는 명확하고 테스트 가능한 완료 정의가 있다. + +구체적으로: "HMAC-SHA256 서명 검증 미들웨어 추가"는 좋은 단계 범위이다. "인증 시스템 구축"은 일반적으로 아니다 — 거의 항상 별도의 단계로 더 잘 처리될 여러 독립적인 관심사들을 포함한다. "README의 오타 수정"은 루프가 가치를 추가하는 임계값 아래이다; 대신 `/gsd-quick`을 사용하라. + +의심스러울 때는 분할하라. 더 작은 단계는 더 빨리 완료되고, 더 자신 있게 검증되고, 설계 결정이 잘못된 것으로 판명될 경우 방향을 수정하기 더 쉽다. + +--- + +## `.planning/`이 루프 전반에 걸쳐 상태를 유지하는 방법 + +루프는 단일 세션이 아니다. 리서치, 계획 수립, 실행은 그 사이에 컨텍스트 리셋이 있는 여러 세션에 걸쳐 발생할 수 있다. `.planning/` 디렉터리가 이것을 가능하게 한다. + +루프의 모든 단계는 이전 단계에서 생성된 결과물들을 읽고 이후 단계를 위한 결과물들을 작성한다. 논의 단계가 생성하는 CONTEXT.md는 플래너가 실행될 때도 사용 가능하다 — 몇 시간 후 다른 세션에서 실행되더라도. 플래너가 생성하는 PLAN.md 파일들은 실행기가 실행될 때도 사용 가능하다 — 재시작 후에도. 검증기가 작성하는 VERIFICATION.md는 단계를 검토할 때도 사용 가능하다. + +`STATE.md`는 이 모든 것 위에 있는 내비게이션 레이어이다. 프로젝트가 루프의 정확히 어느 위치에 있는지 기록한다: 어느 마일스톤이 활성 상태인지, 어느 단계가 진행 중인지, 어느 계획들이 완료되고 어느 것들이 대기 중인지. 방향을 잡아야 하는 에이전트나 워크플로우는 먼저 `STATE.md`를 읽는다. + +이 파일들의 정확한 구조는 [계획 결과물](../reference/planning-artifacts.md)과 [STATE.md 스키마](../reference/state-md.md)를 참조하라. + +--- + +## 루프는 리듬이지 제약이 아니다 + +루프를 관료주의로 바라보는 시각이 있다 — 코드를 작성하기 전에 수행해야 하는 일련의 필수 단계들. 그 프레임은 틀렸다. + +루프는 각 단계가 나중에 수정하는 데 실제로 비용이 많이 드는 실패들을 방지하기 때문에 존재한다. 논의는 잘못된 가정 위에서 계획하는 것을 방지한다. 계획은 근본적으로 깨진 설계를 실행하는 것을 방지한다. 검증은 요약 사항을 놓친 작업을 출시하는 것을 방지한다. 이것들은 인위적인 문제가 아니다. 실제 기능 규모에서 AI 보조 개발의 실제 실패 모드들이다. + +루프가 잘 작동할 때 리듬처럼 느껴진다: 각 단계가 이전 단계가 자신의 역할을 했기 때문에 명확한, 집중적이고 범위가 한정된 작업의 박자. 오버헤드는 실재하지만, 전면 부담된다 — 수 시간의 재작업이 아니라 몇 분의 계획으로 지불된다. + +루프가 정당화되는 임계값 아래의 작업을 위해 GSD Core는 더 가벼운 기본 도구들을 제공한다. 단계 루프는 하나의 도구이지, 유일한 도구가 아니다. + +--- + +## Related + +- [컨텍스트 엔지니어링](context-engineering.md) — 신선한 컨텍스트 서브에이전트가 루프를 필요하게 만드는 품질 저하를 방지하는 방법 +- [단계 논의하기](../how-to/discuss-a-phase.md) +- [단계 계획하기](../how-to/plan-a-phase.md) +- [단계 실행하기](../how-to/execute-a-phase.md) +- [검증 및 출시](../how-to/verify-and-ship.md) +- [계획 결과물](../reference/planning-artifacts.md) +- [STATE.md 스키마](../reference/state-md.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/how-to/configure-model-profiles.md b/docs/ko-KR/how-to/configure-model-profiles.md new file mode 100644 index 000000000..c87349c3f --- /dev/null +++ b/docs/ko-KR/how-to/configure-model-profiles.md @@ -0,0 +1,218 @@ +# 모델 프로파일을 설정하는 방법 + +프로젝트에 적합한 모델 티어 전략을 선택한 다음, 대규모 재정의 블록을 작성하지 않고 개별 에이전트나 전체 페이즈 유형을 조정하세요. 이 가이드는 가장 간단한 방법부터 시작하여 동적 라우팅까지 다룹니다. + +--- + +## 네 가지 프로파일 (`adaptive`와 `inherit` 포함) + +`.planning/config.json`에서 `model_profile`을 설정하거나 `/gsd-config --profile `을 사용하세요: + +| 프로파일 | 플래너 | 실행자 | 리서처 | 검증자 | 사용 시기 | +|---------|---------|----------|-------------|----------|----------| +| `quality` | Opus | Opus | Opus | Sonnet | 비용보다 품질이 중요한 프로덕션 작업 | +| `balanced` | Opus | Sonnet | Sonnet | Sonnet | 일반 개발 — 기본값 | +| `budget` | Sonnet | Sonnet | Haiku | Haiku | 빠른 프로토타이핑, 비용 민감 환경 | +| `adaptive` | Opus | Sonnet | Sonnet | Sonnet | 런타임 간 자주 전환할 때 사용; 다른 티어와 동일하게 런타임 인식 프로파일로 해결됨 | +| `inherit` | (세션 모델) | (세션 모델) | (세션 모델) | (세션 모델) | 비 Anthropic 프로바이더(OpenRouter, 로컬 모델) — 모든 에이전트가 현재 세션 모델을 따름 | + +위 테이블은 대표적인 하위 집합을 보여줍니다. 출시된 33개 에이전트 모두 `sdk/shared/model-catalog.json`에 명시적인 프로파일별 티어 할당이 있습니다. 전체 테이블은 설정 참조의 [모델 프로파일](../CONFIGURATION.md#model-profiles)을 참고하세요. + +**명령으로 빠르게 전환:** + +```bash +/gsd-config --profile balanced # 일반 개발 +/gsd-config --profile budget # 프로토타이핑 또는 고비용 페이즈 +/gsd-config --profile quality # 프로덕션 릴리스 +/gsd-config --profile inherit # OpenRouter, 로컬 모델 +``` + +**또는 `.planning/config.json` 직접 편집:** + +```json +{ + "model_profile": "balanced" +} +``` + +--- + +## 에이전트별 재정의 (`model_overrides`) + +전체 프로파일을 변경하지 않고 단일 에이전트에 다른 티어가 필요한 경우 `model_overrides`를 사용하세요: + +```json +{ + "model_profile": "balanced", + "model_overrides": { + "gsd-executor": "opus", + "gsd-codebase-mapper": "haiku" + } +} +``` + +유효한 값: `opus`, `sonnet`, `haiku`, `inherit`, 또는 완전히 정규화된 모델 ID (예: `"openai/o3"`, `"google/gemini-2.5-pro"`). + +`model_overrides`는 `.planning/config.json`에서 프로젝트별로 설정하거나 `~/.gsd/defaults.json`에서 전역으로 설정할 수 있습니다. 충돌 시 프로젝트별 항목이 우선하며, 충돌하지 않는 전역 항목은 보존됩니다. + +**Codex와 OpenCode의 중요 사항:** 이러한 런타임은 설치 시 해결된 모델을 각 에이전트의 정적 설정에 임베드합니다. `model_overrides` 편집 후 변경 사항이 적용되도록 인스톨러를 다시 실행하세요: + +```bash +npx @opengsd/gsd-core@latest --codex --global # 또는 --opencode, --kilo 등 +``` + +--- + +## 페이즈 유형별 모델 (`models`) + +33개 에이전트 이름을 모두 알지 않고도 "기획에는 Opus, 나머지는 Sonnet"을 설정하려면 `models` 블록을 사용하세요. 여섯 가지 페이즈 유형을 티어 별칭으로 매핑합니다: + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + } +} +``` + +페이즈 유형과 해당 에이전트: + +| 페이즈 유형 | 포함된 에이전트 | +|---|---| +| `planning` | `gsd-planner`, `gsd-roadmapper`, `gsd-pattern-mapper` | +| `research` | `gsd-phase-researcher`, `gsd-project-researcher`, `gsd-research-synthesizer`, `gsd-codebase-mapper`, `gsd-ui-researcher` | +| `execution` | `gsd-executor`, `gsd-debugger`, `gsd-doc-writer` | +| `verification` | `gsd-verifier`, `gsd-plan-checker`, `gsd-integration-checker`, `gsd-nyquist-auditor`, `gsd-ui-checker`, `gsd-ui-auditor`, `gsd-doc-verifier` | +| `discuss`, `completion` | 예약됨 — 현재 서브에이전트 없음; 향후 호환성을 위해 스키마에서 허용 | + +`models` 블록은 티어 별칭만 허용합니다(`opus`, `sonnet`, `haiku`, `inherit`). 완전히 정규화된 모델 ID는 에이전트별 `model_overrides`를 사용하세요. + +**`models`와 에이전트별 예외 조합:** + +```json +{ + "model_profile": "balanced", + "models": { + "research": "sonnet" + }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +5개의 리서치 에이전트 모두 `sonnet`으로 해결되지만, `gsd-codebase-mapper`는 `haiku`로 고정됩니다. + +--- + +## 동적 라우팅 — 기본 저렴하게, 실패 시 에스컬레이션 + +기본적으로 저렴한 티어를 사용하고 에이전트가 품질 게이트에 실패할 때만 에스컬레이션하려면 `dynamic_routing`을 활성화하세요: + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +각 에이전트에는 기본 티어(`light`, `standard`, `heavy`)가 있습니다. 첫 번째 시도에서 GSD는 `tier_models[default_tier]`를 선택합니다. 오케스트레이터가 소프트 실패(검증 불확실, 플랜 체크 플래그 등)를 감지하면 한 티어 위로 에이전트를 재실행합니다. `max_escalations`는 총 재시도 횟수를 제한합니다. + +이미 `heavy`에 있는 에이전트는 더 이상 에스컬레이션할 수 없습니다. + +**동적 해결을 유지하면서 에스컬레이션 끄기:** + +```json +{ + "dynamic_routing": { + "enabled": true, + "escalate_on_failure": false + } +} +``` + +결과에 관계없이 모든 시도는 `tier_models[default_tier]`를 사용합니다. 에스컬레이션 동작 없이 명시적 티어-모델 매핑을 원할 때 유용합니다. + +`dynamic_routing`은 **기본적으로 비활성화**됩니다. 블록을 생략하거나 `enabled: false`로 설정하면 정적 해결이 유지됩니다. + +--- + +## 비 Anthropic 런타임에서 GSD 사용 + +Codex, OpenCode, Gemini CLI, 또는 Kilo용으로 GSD를 설치한 경우 인스톨러가 이미 설정에 `resolve_model_ids: "omit"`을 설정했습니다. 이는 GSD가 Anthropic 모델 ID 해결을 건너뛰고 런타임이 자체 기본 모델을 선택하도록 합니다. 기본 사용 시 수동 설정이 필요 없습니다. + +**Codex에서 티어별 모델을 원하는 경우:** + +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` + +GSD는 각 티어 별칭을 런타임 티어 맵에 정의된 Codex 네이티브 모델 및 추론 노력으로 해결합니다. + +**비 Claude 런타임에서 에이전트별 모델 ID를 원하는 경우:** + +```json +{ + "resolve_model_ids": "omit", + "model_overrides": { + "gsd-planner": "o3", + "gsd-executor": "o4-mini", + "gsd-debugger": "o3" + } +} +``` + +전체 런타임 인식 프로파일 참조 및 `model_policy` 표면(v1.42에 추가된 프로바이더 중립 프리셋)에 대해서는 [설정 참조 — 모델 프로파일](../CONFIGURATION.md#model-profiles)을 참고하세요. + +--- + +## 해결 우선순위 (높은 것에서 낮은 것 순) + +여러 레이어가 적용될 때 해결자는 가장 높은 우선순위 항목을 선택합니다: + +```text +1. model_overrides[] — 에이전트별; 전체 ID; 타겟 예외 +2. dynamic_routing.tier_models[] — 활성화 시; 소프트 실패 시 에스컬레이션 +3. models[] — 거친 페이즈 레벨 티어 +4. model_profile (에이전트별 열) — 전역 티어 전략 +5. 런타임 기본값 — 다른 것이 적용되지 않을 때 +``` + +--- + +## 올바른 방법 선택 + +| 원하는 것 | 사용할 것 | +|---|---| +| 모든 에이전트에 단일 티어 전략 | `model_profile` | +| 거친 페이즈 레벨 조정 ("기획에 Opus") | `models.` | +| 에이전트별 정밀도 ("코드베이스 매퍼에 Haiku 강제") | `model_overrides[]` | +| 특정 에이전트에 완전히 정규화된 모델 ID | `model_overrides[]: "openai/gpt-5"` | +| 기본적으로 저렴하게, 실패 시만 에스컬레이션 | `dynamic_routing` | +| 모든 에이전트가 세션 모델을 따름 (비 Anthropic 프로바이더) | `model_profile: "inherit"` | + +--- + +## 관련 문서 + +- [설정 참조](../CONFIGURATION.md) +- [멀티 에이전트 오케스트레이션](../explanation/multi-agent-orchestration.md) +- [명령어 참조](../COMMANDS.md) +- [문서 목차](../README.md) diff --git a/docs/ko-KR/how-to/debug-a-failed-execution.md b/docs/ko-KR/how-to/debug-a-failed-execution.md new file mode 100644 index 000000000..ce57bf2db --- /dev/null +++ b/docs/ko-KR/how-to/debug-a-failed-execution.md @@ -0,0 +1,178 @@ +# 실패한 실행을 디버그하는 방법 + +**목표:** 페이즈 실행이 실패하거나, 멈추거나, 불완전한 결과를 생성했을 때 — 이미 성공한 작업을 잃거나 반복하지 않고 깔끔하게 복구하고 재개합니다. + +**사전 조건:** `/gsd-execute-phase N`을 실행했는데 `VERIFICATION.md` 작성 전에 실행이 중단된 경우, 또는 예상치 못한 출력, 누락된 파일, 멈춘 스피너가 보이는 경우. + +--- + +## 실행이 멈췄는지 실패했는지 감지 + +복구 조치를 취하기 전에 실제로 무슨 일이 일어났는지 파악합니다. + +### "Spawning…"만 표시되고 1~5분 후에도 출력이 없는 경우 + +이것은 정상 동작이며 멈춤이 아닙니다. GSD 서브에이전트는 격리된 컨텍스트 창에서 실행됩니다. 스폰 라인의 활성 상태 메모가 이를 확인해 줍니다. 세션을 중단하지 마세요. + +10분 이상 결과가 없다면 Claude Code 사이드바를 확인하세요. 에이전트 작업이 완료된 것으로 표시되지만 출력이 나타나지 않았다면 컨텍스트 전환에서 결과가 손실되었을 수 있습니다 — 동일한 명령을 다시 실행합니다: + +```bash +/gsd-execute-phase 1 +``` + +GSD는 실행자를 디스패치하기 전에 `SUMMARY.md` 파일이 있는지 확인합니다. 이미 `SUMMARY.md`가 있는 플랜은 자동으로 건너뜁니다. + +### 실행이 오류 메시지와 함께 파동 중간에 중단된 경우 + +git 히스토리를 확인하여 어떤 플랜이 성공적으로 커밋되었는지 확인합니다: + +```bash +git log --oneline -20 +``` + +작업을 커밋한 플랜은 `feat(01-02): …`와 같은 항목을 가집니다. 커밋이 없는 플랜은 불완전하며 재실행 시 다시 실행됩니다. + +### 실행자가 코드를 커밋했지만 SUMMARY.md를 작성하지 않은 경우 + +GSD는 다음 실행 시 이를 감지하고 세 가지 옵션이 있는 안전 재개 게이트를 표시합니다: + +- **수동으로 마무리** — 커밋을 직접 검사하고 `SUMMARY.md`를 작성한 후 재실행합니다. +- **처음부터 재실행** — 새 실행자를 디스패치하기 전에 부분 커밋을 되돌리거나 대체합니다. +- **표시 후 건너뜀** — 이상 현상을 기록하고 계속 진행하되 명시적인 확인이 필요합니다. + +--- + +## 근본 원인 진단 + +### `/gsd-debug --diagnose` 실행 + +실행이 잘못된 출력, 스텁 코드, 또는 검증 실패를 생성한 경우 수정을 적용하지 않고 조사만 하는 진단 모드를 사용합니다: + +```bash +/gsd-debug --diagnose "Phase 2 executor produced stubs instead of real code" +``` + +`--diagnose`는 파일을 건드리지 않고 근본 원인에서 멈춥니다. 나중에 조사를 이어갈 수 있도록 `.planning/debug/.md`에 세션 파일을 생성합니다. + +수정도 적용하는 전체 디버그 세션을 시작하려면: + +```bash +/gsd-debug "Login middleware not handling 401 correctly after phase 3" +``` + +GSD는 증상을 수집하고, 과학적 방법을 사용한 구조화된 조사를 실행하며, 수정안을 제안합니다. 설정에서 `tdd_mode: true`가 지정된 경우 수정을 적용하기 전에 실패하는 테스트를 요구합니다. + +### 활성 디버그 세션 확인 + +```bash +/gsd-debug list +``` + +현재 가설과 다음 조치를 포함한 모든 열린 세션을 표시합니다. 특정 세션을 재개하려면: + +```bash +/gsd-debug continue +``` + +--- + +## `/gsd-forensics`로 사후 분석 실행 + +오류 출력에서 원인이 명확하지 않은 경우 — 예를 들어, 플랜이 존재하지 않는 파일을 참조하거나, 실행이 예상치 못한 결과를 생성하거나, 상태가 손상된 것 같은 경우 — 포렌식 조사를 실행합니다: + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +GSD는 git 히스토리, `.planning/` 아티팩트 완전성, STATE.md 일관성, 커밋되지 않은 작업, 고아 워크트리를 분석합니다. `.planning/forensics/report-.md`에 구조화된 보고서를 작성하고 권장 복구 단계를 제시합니다. + +`/gsd-forensics`는 읽기 전용으로 프로젝트 파일을 절대 수정하지 않습니다. + +**감지 항목:** + +- **반복 루프** — 짧은 시간 내에 연속적으로 세 개 이상의 커밋에 동일한 파일이 나타남(커밋 메시지가 유사하면 HIGH 신뢰도) +- **누락된 아티팩트** — 페이즈에 커밋이 있지만 `SUMMARY.md`나 `VERIFICATION.md`가 없음 +- **방치된 작업** — 커밋되지 않은 변경과 함께 STATE.md가 실행 중간 상태를 표시하고 마지막 커밋이 두 시간 이상 지남 +- **충돌 또는 중단** — 커밋되지 않은 변경과 활성 실행 상태 및 고아 워크트리가 결합됨 +- **범위 이탈** — 최근 커밋이 현재 페이즈의 예상 파일 집합 밖의 파일을 수정함 + +--- + +## 복구 후 실행 재개 + +근본적인 문제가 해결되면 실행 명령을 다시 실행합니다: + +```bash +/gsd-execute-phase 1 +``` + +GSD는 이미 `SUMMARY.md`가 존재하는 플랜을 건너뛰고 나머지 플랜에 대해서만 실행자를 디스패치합니다. + +특정 파동만 재실행해야 하는 경우: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +디스패치하기 전에 `.planning/` 무결성을 검증하려면: + +```bash +/gsd-execute-phase 1 --validate +``` + +--- + +## `/gsd-undo`로 롤백 + +실행이 전적으로 버리고 싶은 코드를 생성한 경우, 수동 `git revert` 대신 플랜 매니페스트를 사용하여 롤백합니다: + +### 단일 플랜 롤백 + +```bash +/gsd-undo --plan 03-02 +``` + +페이즈 `3`의 플랜 `02`에 대한 모든 커밋을 되돌립니다. GSD는 변경 사항을 작성하기 전에 확인 게이트를 표시합니다. + +### 전체 페이즈 롤백 + +```bash +/gsd-undo --phase 03 +``` + +페이즈 `3`의 모든 커밋을 되돌립니다. GSD는 이후 페이즈가 이 페이즈에 의존하는지 확인하고 진행 전에 경고합니다. + +### 최근 커밋에서 대화식으로 선택 + +```bash +/gsd-undo --last 5 +``` + +가장 최근 GSD 커밋 다섯 개를 표시하고 어떤 것을 되돌릴지 선택할 수 있게 합니다. + +--- + +## 중단 후 세션 컨텍스트 복원 + +컨텍스트 초기화나 새 세션 후 프로젝트로 돌아온 경우: + +```bash +/gsd-resume-work +``` + +마지막 핸드오프의 전체 세션 컨텍스트(현재 페이즈, 블로커, 실행이 중단된 위치)를 복원합니다. + +또는 현재 위치를 확인하고 다음 올바른 단계로 자동 진행하려면: + +```bash +/gsd-progress --next +``` + +--- + +## 관련 문서 + +- [페이즈 실행](execute-a-phase.md) +- [복구 및 문제 해결](recover-and-troubleshoot.md) +- [명령 참조](../COMMANDS.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/how-to/design-a-ui-phase.md b/docs/ko-KR/how-to/design-a-ui-phase.md new file mode 100644 index 000000000..e55d64d05 --- /dev/null +++ b/docs/ko-KR/how-to/design-a-ui-phase.md @@ -0,0 +1,149 @@ +# UI 페이즈를 디자인하는 방법 + +**목표:** 플래너가 작업을 작성하기 전에 간격, 색상, 타이포그래피, 카피라이팅 결정을 확정하는 잠긴 UI 디자인 계약(`UI-SPEC.md`)을 생성하여 실행 중 임의적인 스타일링 선택으로 인한 시각적 불일관성을 방지합니다. + +**사전 조건:** `.planning/ROADMAP.md`가 존재해야 합니다. 페이즈에 프론트엔드 또는 UI 작업이 있어야 합니다. 먼저 `/gsd-discuss-phase N`을 실행하는 것을 강력히 권장합니다 — UI 연구자는 `CONTEXT.md`를 읽어 이미 결정된 사항을 다시 묻지 않습니다. + +--- + +## 이 페이즈에 UI 계약이 필요한지 결정 + +모든 페이즈가 `/gsd-ui-phase`를 필요로 하지는 않습니다. 다음 경우에 사용합니다: + +- 페이즈가 새로운 UI 표면(페이지, 흐름, 레이아웃)을 도입할 때 +- 여러 컴포넌트를 빌드하며 시각적 일관성이 중요할 때 +- 새 프로젝트의 프론트엔드를 시작하며 디자인 시스템 기준선이 필요할 때 +- 기존 프로젝트에 중요한 UI 작업을 추가하면서 실행 전에 토큰, 간격, 색상을 확정하고 싶을 때 + +다음 경우에 건너뜁니다: + +- 페이즈가 순전히 백엔드, 인프라, 또는 사용자 대면 출력이 없는 데이터 작업일 때 +- 이전 페이즈에서 이미 `UI-SPEC.md`가 존재하고 이 페이즈가 새로운 표면을 도입하지 않고 동일한 시각적 패턴 위에 빌드될 때 + +확신이 없으면 안전 게이트가 프롬프트를 표시합니다: `workflow.ui_safety_gate`가 활성화된 경우(기본값), `/gsd-plan-phase`는 프론트엔드 작업을 감지했지만 `UI-SPEC.md`가 없을 때 경고하고 먼저 `/gsd-ui-phase`를 실행할지 물어봅니다. + +--- + +## UI 디자인 계약 실행 + +```bash +/gsd-ui-phase 2 +``` + +페이즈 번호가 지정되지 않으면 GSD Core는 현재 페이즈를 대상으로 합니다. + +명령은 두 단계로 실행됩니다: + +1. **`gsd-ui-researcher`** — `CONTEXT.md`, `RESEARCH.md`, `REQUIREMENTS.md`에서 기존 결정을 읽고, 디자인 시스템 상태(shadcn `components.json`, Tailwind 설정, 기존 토큰)를 감지하며, 간격, 색상, 타이포그래피, 카피라이팅, 레지스트리 안전성 다섯 영역에 걸쳐 답하지 않은 디자인 질문만 묻습니다. +2. **`gsd-ui-checker`** — 결과로 생성된 `UI-SPEC.md`를 여섯 가지 차원에서 검증합니다. 문제가 발견되면 수정 루프가 플래그된 항목만을 대상으로 연구자를 다시 실행합니다(최대 두 번 반복). + +**출력:** `.planning/phases/{phase-dir}/`의 `{padded_phase}-UI-SPEC.md`. + +--- + +## UI-SPEC의 적용 범위 + +연구자는 다섯 영역에 걸쳐 결정을 확정합니다: + +| 영역 | 예시 | +|---|---| +| **간격** | 기본 스케일(4px 또는 8px), 그리드 정렬, 컴포넌트 패딩 | +| **색상** | 기본, 강조, 중립 팔레트; 60/30/10 규칙; 다크 모드 고려 사항 | +| **타이포그래피** | 폰트 패밀리, 크기/굵기 스케일 제약, 제목 계층 구조 | +| **카피라이팅** | CTA 레이블, 빈 상태 메시지, 오류 상태 복사, 로딩 인디케이터 | +| **레지스트리 안전성** | shadcn 컴포넌트 검사 프로토콜(아래 참조) | + +체커는 6가지 기둥(각 1~4점 채점)에 대해 스펙을 검증합니다: 카피라이팅, 시각적, 색상, 타이포그래피, 간격, 경험 디자인(로딩/오류/빈 상태 커버리지). + +--- + +## shadcn 초기화 + +React, Next.js, Vite 프로젝트에서 `components.json`이 없으면 연구자가 shadcn 초기화를 제안합니다. 흐름: + +1. `ui.shadcn.com/create`를 방문하여 프리셋(색상, 테두리 반경, 폰트) 구성 +2. 프리셋 문자열 복사 +3. 실행: + +```bash +npx shadcn init --preset +``` + +프리셋 문자열은 페이즈와 마일스톤 간에 재현 가능한 GSD Core 계획 아티팩트가 됩니다. + +--- + +## 레지스트리 안전 게이트 + +서드파티 shadcn 레지스트리는 임의 코드를 주입할 수 있습니다. `workflow.ui_safety_gate`가 활성화된 경우(기본값), 스펙은 비공식 컴포넌트를 설치하기 전에 다음 단계를 요구합니다: + +```bash +npx shadcn view # 설치 전 소스 검사 +npx shadcn diff # 공식 레지스트리와 비교 +``` + +레지스트리 안전성이 처리되지 않으면 체커가 스펙을 BLOCKED로 표시합니다. 프로젝트에서 shadcn을 사용하지 않거나 대체 검토 프로세스가 있는 경우 `/gsd-settings`를 통해 게이트를 비활성화합니다. + +--- + +## 스케치 결과를 초안으로 활용 + +이미 `/gsd-sketch --wrap-up`을 실행한 경우, UI 연구자는 `.claude/skills/sketch-findings-[project]/`를 자동으로 로드합니다. 사전 검증된 결정(레이아웃, 팔레트, 타이포그래피, 간격)은 확정된 것으로 처리됩니다 — 연구자가 다시 묻지 않습니다. 실행 시작 시 메모가 표시됩니다: + +```text +⚡ Sketch findings detected: .claude/skills/sketch-findings-[project]/SKILL.md + Pre-validated decisions (layout, palette, typography, spacing) should be treated + as locked — not re-asked. +``` + +`/gsd-ui-phase` 전에 `/gsd-sketch --wrap-up`을 실행하는 주된 이유입니다: 대화식 디자인 탐색을 계약 입력으로 바인딩합니다. + +--- + +## `/gsd-ui-review`로 소급 시각적 감사 + +`/gsd-ui-review`는 실행 전이 아닌 실행 후에 실행됩니다. UI-SPEC(또는 스펙이 없을 때는 추상적인 6가지 기둥 기준)에 대해 구현된 프론트엔드를 감사하는 데 사용합니다. + +```bash +/gsd-ui-review # 현재 페이즈 감사 +/gsd-ui-review 3 # 특정 페이즈 3 감사 +``` + +프론트엔드 코드가 있는 모든 프로젝트에서 작동합니다 — GSD 프로젝트 초기화가 필요하지 않습니다. + +**검사 항목(6가지 기둥, 각 1~4점 채점):** + +1. 카피라이팅 — CTA 레이블, 빈 상태, 오류 상태 +2. 시각적 — 초점, 시각적 계층 구조, 아이콘 접근성 +3. 색상 — 강조 사용 규율, 60/30/10 준수 +4. 타이포그래피 — 폰트 크기와 굵기 제약 준수 +5. 간격 — 그리드 정렬, 토큰 일관성 +6. 경험 디자인 — 로딩, 오류, 빈 상태 커버리지 + +**출력:** 점수와 우선순위 상위 세 가지 수정 사항이 포함된 `{padded_phase}-UI-REVIEW.md`. `gsd-browser`와 같은 브라우저 MCP 서버가 구성된 경우 감사는 시각적 증거와 함께 스크린샷도 캡처합니다. + +**스크린샷 저장:** 스크린샷은 `.planning/ui-reviews/`에 저장됩니다. 바이너리 파일이 git에 올라가지 않도록 `.gitignore`가 자동으로 생성됩니다. 스크린샷은 `/gsd-complete-milestone` 중에 정리됩니다. + +--- + +## 페이즈 생명주기에서 권장 위치 + +```text +/gsd-discuss-phase N ← 구현 선호도 확정 +/gsd-ui-phase N ← 디자인 계약 확정 (프론트엔드 페이즈) +/gsd-plan-phase N ← 연구 + 계획 (UI-SPEC.md를 컨텍스트로 읽음) +/gsd-execute-phase N ← 병렬 실행 +/gsd-verify-work N ← 수동 UAT +/gsd-ui-review N ← 소급 시각적 감사 (선택 사항이지만 권장) +``` + +`/gsd-ui-phase`는 토론과 계획 사이에 위치합니다. 플래너가 `UI-SPEC.md`를 디자인 컨텍스트로 읽기 때문입니다 — `PLAN.md`의 작업은 스펙이 확정한 간격 토큰, 색상 변수, 카피라이팅 결정을 참조합니다. + +--- + +## 관련 문서 + +- [스파이크와 스케치](spike-and-sketch.md) +- [페이즈 계획](plan-a-phase.md) +- [명령 참조](../COMMANDS.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/how-to/discuss-a-phase.md b/docs/ko-KR/how-to/discuss-a-phase.md new file mode 100644 index 000000000..b6c428332 --- /dev/null +++ b/docs/ko-KR/how-to/discuss-a-phase.md @@ -0,0 +1,158 @@ +# 페이즈를 논의하는 방법 + +**목표:** 기획이 시작되기 전에 페이즈에 필요한 구현 결정을 수집합니다. 이를 통해 리서처와 플래너가 다시 질문하지 않고도 작업할 수 있습니다. + +**전제 조건:** `.planning/ROADMAP.md`가 존재해야 합니다. 없다면 먼저 `/gsd-new-project`를 실행하세요. + +--- + +## 논의 모드 선택 + +GSD Core는 두 가지 모드를 제공합니다. 코드베이스에 대한 이해도에 따라 선택하세요. + +**구현 방향을 직접 표현하고 싶은 경우** (인터뷰 모드, 기본값): + +```bash +/gsd-discuss-phase 2 +``` + +Claude는 페이즈 범위의 모호한 영역을 파악하고, 논의할 항목을 선택하도록 안내한 후 각 영역당 약 4개의 질문을 순서대로 처리합니다. + +**코드베이스에 명확한 패턴이 있고 대부분의 질문이 자명한 경우** (가정 모드): + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode assumptions +/gsd-discuss-phase 2 +``` + +Claude는 서브에이전트를 통해 관련 코드베이스 파일 5~15개를 읽고, 근거와 신뢰도와 함께 가정을 형성하여 확인 또는 수정을 위해 제시합니다. 일반적으로 15~20번의 상호작용 대신 2~4번의 상호작용으로 처리됩니다. + +돌아가려면: + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode discuss +``` + +각 모드의 전체 비교 및 시간을 절약할 수 있는 경우에 대해서는 [논의 모드 설명](../workflow-discuss-mode.md)을 참고하세요. + +--- + +## 선택 단계 없이 모든 모호한 영역 논의 + +기본적으로 Claude는 모호한 영역을 제시하고 다룰 항목을 묻습니다. 선택 프롬프트 없이 모든 항목을 처리하려면: + +```bash +/gsd-discuss-phase 2 --all +``` + +--- + +## 간단한 페이즈 빠르게 처리 + +**페이즈가 충분히 이해된 상태이고 Claude가 질문 없이 권장 기본값을 선택하길 원하는 경우:** + +```bash +/gsd-discuss-phase 3 --auto +``` + +Claude는 모든 질문에 권장 답변을 선택하고 선택 사항을 기록합니다. 결정이 낮은 위험을 가지거나 이전 페이즈에 이미 암시된 페이즈에 사용하세요. + +**원격 세션 제약이 있는 경우 (TUI 메뉴 없음):** + +```bash +/gsd-discuss-phase 2 --text +``` + +모든 프롬프트가 대화형 선택기 대신 일반 텍스트 번호 목록으로 렌더링됩니다. + +--- + +## 그룹으로 질문 처리 + +한 번에 하나씩이 아닌 여러 질문을 동시에 답변하고 싶다면: + +```bash +/gsd-discuss-phase 2 --batch +``` + +Claude는 한 번에 2~5개의 질문을 묶어서 처리합니다. + +--- + +## 각 질문에 트레이드오프 분석 추가 + +결정하기 전에 옵션 비교표를 원한다면: + +```bash +/gsd-discuss-phase 2 --analyze +``` + +--- + +## 준비된 파일로 일괄 답변 + +답변 파일을 미리 준비한 경우 한 번에 모든 결정을 적용하려면: + +```bash +/gsd-discuss-phase 1 --power +``` + +--- + +## 논의 전에 Claude의 가정 확인 + +**논의 세션에 앞서 Claude가 무엇을 가정하고 어떻게 행동할지 미리 확인하고 싶은 경우** — 논의 시간을 투자하기 전에 정렬 상태를 검증하는 데 유용합니다: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +Claude는 가정 사항(코드베이스 근거 및 신뢰도 포함)을 출력하고 종료합니다. CONTEXT.md는 작성되지 않습니다. 출력을 검토한 후 수정이 필요한 경우 일반 논의 또는 가정 모드 세션을 실행하세요. + +--- + +## CONTEXT.md의 내용 + +논의 모드와 가정 모드 모두 페이즈 디렉터리에 동일한 `{phase}-CONTEXT.md`를 생성합니다. 다운스트림 에이전트(리서처, 플래너, 플랜 체커)는 어떤 모드에서 생성했든 이 파일을 동일하게 읽습니다. 파일은 여섯 개의 섹션으로 구성됩니다: + +| 섹션 | 목적 | +|---|---| +| `` | 페이즈 경계 — 이 페이즈가 무엇을 제공하는지 | +| `` | 세션에서 확정된 구현 결정 사항 | +| `` | 다운스트림 에이전트가 반드시 읽어야 할 명세, ADR, 문서 | +| `` | 재사용 가능한 자산, 패턴, 통합 지점 | +| `` | 사용자 참조 및 선호 사항 | +| `` | 향후 페이즈를 위해 기록된 아이디어 | + +`` 섹션은 필수입니다. 논의 중 문서, 명세, ADR을 참조하면 Claude가 즉시 추가하고 이후 질문에 반영하기 위해 읽습니다. + +전체 필드 참조는 [CONTEXT.md 스키마](../reference/context-md.md)를 참고하세요. + +--- + +## 결정 사항이 기획에 반영되는 방식 + +다음에 `/gsd-plan-phase`를 실행할 때 플래너는 CONTEXT.md를 읽어 어떤 결정이 확정되었는지 파악합니다. 이미 답변된 질문은 다시 묻지 않습니다. 리서처는 무엇을 조사해야 할지 알기 위해 먼저 읽습니다. + +**`/gsd-plan-phase` 실행 시 CONTEXT.md가 없는 경우**, 컨텍스트 없이 계속하거나(계획은 리서치와 요구 사항만 사용, 설계 선호도 없음) 먼저 `/gsd-discuss-phase`를 실행하는 선택지가 제공됩니다. + +--- + +## PRD 또는 인수 기준 문서가 있는 경우 + +discuss-phase를 완전히 건너뛰고 바로 기획으로 이동합니다: + +```bash +/gsd-plan-phase 1 --prd path/to/prd.md +``` + +플래너는 PRD에서 CONTEXT.md를 합성하고 모든 요구 사항을 확정된 결정으로 처리합니다. + +--- + +## 관련 문서 + +- [페이즈 기획](plan-a-phase.md) +- [논의 모드](../workflow-discuss-mode.md) +- [CONTEXT.md 스키마](../reference/context-md.md) +- [문서 목차](../README.md) diff --git a/docs/ko-KR/how-to/drive-gsd-from-a-tracker-issue.md b/docs/ko-KR/how-to/drive-gsd-from-a-tracker-issue.md new file mode 100644 index 000000000..c04bf521c --- /dev/null +++ b/docs/ko-KR/how-to/drive-gsd-from-a-tracker-issue.md @@ -0,0 +1,176 @@ +# 트래커 이슈에서 GSD Core를 구동하는 방법 + +**목표:** 사용자 정의 스크립트나 트래커 통합 없이 GSD Core에 이미 존재하는 명령만으로 단일의 명확히 범위가 정해진 GitHub, Linear, 또는 Jira 이슈를 격리된 워크스페이스에서 병합된 PR까지 전체 GSD 파이프라인을 통해 진행합니다. + +**사전 조건:** GSD Core가 설치되어 있어야 합니다. 이슈는 범위가 한정되고, 관찰 가능한 수락 기준이 있으며, 상위 블로커가 없어야 합니다. + +이 패턴의 개념과 설계 근거는 [이슈 기반 오케스트레이션 설명](../issue-driven-orchestration.md)을 참조하세요. + +--- + +## 1단계: 이슈를 페이즈에 매핑 + +트래커 이슈를 열고 `ROADMAP.md`에 어떻게 매핑되는지 결정합니다: + +- **이슈가 기존 페이즈와 일치** → 페이즈 번호를 메모하고 2단계로 이동합니다. +- **이슈가 독립적인 새 작업** → 페이즈를 추가합니다: + +```bash +/gsd-phase "Description matching the issue title" +``` + +- **이슈가 긴급하고 기존 페이즈 사이에 삽입해야 함** → 소수점 페이즈 삽입: + +```bash +/gsd-phase --insert 3 "Fix: description from issue" +``` + +트래커 이슈 URL을 복사하세요. 3단계에서 `CONTEXT.md`에 붙여넣어 컨텍스트 압축 후에도 추적 가능성이 유지되도록 합니다. + +--- + +## 2단계: 격리된 워크스페이스 생성 + +모든 이슈는 자체 워크스페이스를 가집니다 — 독립적인 `.planning/` 디렉터리가 있는 git 워크트리. 부분 작업, 중단된 플랜, 탐색적 커밋은 `main` 밖에 유지됩니다. + +```bash +/gsd-workspace --new --name my-issue-slug --repos . --strategy worktree +``` + +계속하기 전에 워크스페이스 디렉터리로 이동합니다: + +```bash +cd ~/gsd-workspaces/my-issue-slug +``` + +--- + +## 3단계: 페이즈 논의 + +계획이 이루어지기 전에 구현 결정을 확정하기 위해 discuss-phase를 실행합니다. 세션이 열리면 트래커 이슈 URL을 토론에 붙여넣어 `CONTEXT.md`에 캡처되도록 합니다. + +```bash +/gsd-discuss-phase N +``` + +GSD는 이슈 범위의 모호성 — 오류 처리, 엣지 케이스, 인터페이스 계약, 기술 선택 — 에 대해 물어봅니다. 귀하의 답변이 다음에 나올 플랜을 형성합니다. + +이미 모든 답을 알고 빠르게 진행하고 싶다면: + +```bash +/gsd-discuss-phase N --auto +``` + +--- + +## 4단계: 페이즈 계획 + +```bash +/gsd-plan-phase N +``` + +GSD는 연구 에이전트를 스폰하고, `CONTEXT.md` 결정(이슈 URL 포함)을 읽으며, 원자적인 `PLAN.md` 파일을 생성합니다. 플랜 체커가 저장 전에 각 플랜을 검증합니다. + +실행 전에 외부 AI CLI의 동료 검토를 원한다면(중요한 변경에 권장): + +```bash +/gsd-review --phase N +/gsd-plan-phase N --reviews +``` + +또는 HIGH 우려 사항이 없을 때까지 전체 플랜-검토-수렴 루프를 실행합니다: + +```bash +/gsd-plan-review-convergence N +``` + +--- + +## 5단계: 페이즈 실행 + +대화식, 페이즈 단위 실행: + +```bash +/gsd-execute-phase N +``` + +모든 나머지 페이즈를 자동으로 실행: + +```bash +/gsd-autonomous +``` + +진행 상황을 보고 페이즈 전반에 걸쳐 작업을 디스패치할 수 있는 대화식 대시보드: + +```bash +/gsd-manager +``` + +세 가지 접근 방식 모두 `STATE.md`를 업데이트하고, 각 작업을 원자적으로 커밋하며, 페이즈 후 검증기를 실행합니다. + +--- + +## 6단계: 작업 검증 + +```bash +/gsd-verify-work N +``` + +GSD는 페이즈 목표(트래커 이슈를 반영)의 수락 기준을 하나씩 안내합니다. 무언가 실패하면 GSD가 근본 원인을 진단하고 수정 플랜을 만듭니다. 모든 검사가 통과될 때까지 실행과 검증을 반복합니다. + +코드가 올바르게 보여도 `verification_failed`를 블로커로 취급하세요 — 실패는 보통 원래 이슈에서 놓친 수락 기준을 드러냅니다. + +--- + +## 7단계: 검토 및 출시 + +PR을 열기 전에 코드 검토를 실행합니다: + +```bash +/gsd-code-review N +/gsd-code-review N --fix +``` + +그다음 PR을 생성합니다: + +```bash +/gsd-ship N +``` + +GSD는 계획 아티팩트에서 PR 본문을 조립합니다: 페이즈 목표, 변경 사항 요약, 충족된 요구 사항, 검증 상태, 주요 결정. PR이 병합될 때 트래커 이슈가 자동으로 닫히도록 PR 본문에 `Closes #NNN` 또는 `Fixes #NNN`을 포함하세요(또는 `/gsd-config`를 통해 설정). + +--- + +## 8단계: 후속 작업 캡처 + +이슈 작업 중 관련 작업을 자주 발견하게 됩니다. 컨텍스트를 잃지 않고 캡처합니다: + +```bash +/gsd-capture "Follow-up: description of discovered work" # 할 일로 추가 +/gsd-capture --seed "Idea worth a future phase" # 다음 마일스톤을 위해 보존 +/gsd-capture --backlog "Not urgent but worth tracking" # 백로그에 저장 +``` + +GSD는 트래커에 자동으로 게시하지 않습니다. 캡처된 후속 작업에서 트래커 이슈를 생성하는 것은 별도의 수동 단계입니다 — 이는 검토 루프에 사람이 참여하도록 유지합니다. + +--- + +## 조건부 처리 + +| 상황 | 할 일 | +|-----------|-----------| +| 이슈가 매우 작음(오타, 설정 변경) | 워크스페이스 + 논의 + 계획 건너뜀; 대신 `/gsd-quick` 사용 | +| 이슈에 여러 독립적인 하위 작업이 있음 | `/gsd-manager`를 사용하여 플랜 전반에 걸쳐 실행 병렬화 | +| 이슈가 다른 이슈에 의해 차단됨 | 상위 블로커가 해결될 때까지 시작하지 않음; GSD에는 자동 의존성 폴러가 없음 | +| 실행 중간에 이슈 범위가 예상보다 큰 것으로 드러남 | 중단하고, `/gsd-phase --insert N`을 실행하여 하위 페이즈 추가 후 계속 | +| 대화식 논의를 건너뛰고 싶음 | `/gsd-discuss-phase`와 함께 `--auto` 플래그 사용, 또는 프로젝트 전체 자동화를 위해 `workflow.skip_discuss: true` 설정 | +| 여러 이슈가 일관된 릴리즈를 형성 | `/gsd-new-milestone`으로 그룹화하고 `/gsd-autonomous`로 순서대로 실행 | + +--- + +## 관련 문서 + +- [이슈 기반 오케스트레이션 설명](../issue-driven-orchestration.md) +- [워크스페이스로 작업 격리](isolate-work-with-workspaces.md) +- [검증 및 출시](verify-and-ship.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/how-to/execute-a-phase.md b/docs/ko-KR/how-to/execute-a-phase.md new file mode 100644 index 000000000..7202e4580 --- /dev/null +++ b/docs/ko-KR/how-to/execute-a-phase.md @@ -0,0 +1,119 @@ +# 페이즈를 실행하는 방법 + +**목표:** 기획된 페이즈를 웨이브 기반 병렬 실행으로 처리하고 각 계획을 원자적 git 커밋으로 완료합니다. + +**전제 조건:** 페이즈에 최소 하나의 `PLAN.md` 파일이 있어야 합니다. 기획이 아직 완료되지 않았다면 먼저 `/gsd-plan-phase N`을 실행하세요 — [페이즈 기획](plan-a-phase.md)을 참고하세요. + +--- + +## 전체 페이즈 실행 + +```bash +/gsd-execute-phase 1 +``` + +GSD는 페이즈의 계획 파일을 읽고 의존성 웨이브로 그룹화한 후 계획당 새 실행자 에이전트를 실행합니다. 각 실행자는 다음 웨이브가 시작되기 전에 작업을 원자적으로 커밋합니다. + +에이전트가 실행되기 전에 GSD는 웨이브 테이블을 출력합니다: + +``` +## Execution Plan + +Phase 1: Core middleware — 3 plans across 2 wave(s) + +| Wave | Plans | What it builds | +|------|----------------|---------------------------| +| 1 | 01-01, 01-02 | Core validation function | +| 2 | 01-03 | Express middleware wrapper | +``` + +웨이브 1 계획은 병렬로 실행됩니다(각각 독립된 git 워크트리에서). 웨이브 2는 모든 웨이브 1 커밋이 병합될 때까지 기다립니다. + +기본 에이전트 조정 모델에 대해서는 [멀티 에이전트 오케스트레이션](../explanation/multi-agent-orchestration.md)을 참고하세요. + +--- + +## 단일 웨이브 실행 + +예를 들어 웨이브 2로 넘어가기 전 웨이브 1 출력을 검사하고 싶은 경우 `--wave N`을 사용하세요: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +GSD는 웨이브 2 계획만 실행합니다. 먼저 이전 웨이브가 완료되었는지 확인하며, 웨이브 1 계획이 아직 미완료인 경우 이전 웨이브를 먼저 완료하도록 알립니다. + +--- + +## 실행 전 상태 검증 + +충돌이나 이전 실행이 중단된 후 `.planning/` 디렉터리가 파일 시스템과 동기화되지 않았을 것으로 의심되는 경우 `--validate`를 사용하세요: + +```bash +/gsd-execute-phase 1 --validate +``` + +GSD는 실행자를 실행하기 전에 상태 일관성 검사를 실행합니다. 감지된 드리프트가 보고되며 진행 전에 수락하거나 수정할 수 있습니다. + +--- + +## 중단된 실행 재개 + +실행이 도중에 중단된 경우(할당량 오류, 네트워크 끊김, 세션 충돌 등) 웨이브 레벨 진행 상황은 보존됩니다. GSD는 각 계획의 `SUMMARY.md` 파일을 확인합니다. 이미 파일이 있는 계획은 재실행 시 자동으로 건너뜁니다: + +```bash +/gsd-execute-phase 1 +``` + +GSD는 `SUMMARY.md`가 이미 존재하는 계획을 건너뛰고 첫 번째 미완료 계획에서 재개합니다. + +**커밋은 존재하지만 `SUMMARY.md`가 없는 경우**(실행자가 커밋했지만 세션이 종료되기 전 요약을 작성하지 못한 경우), GSD는 안전 재개 게이트를 표시하고 세 가지 옵션을 제공합니다: + +- `수동으로 마무리` — 커밋을 검사하고 `SUMMARY.md`를 작성한 후 재실행 +- `처음부터 재실행` — 부분 커밋을 되돌리거나 대체한 후 새 실행자 실행 +- `표시하고 건너뛰기` — 명시적 확인 하에 이상을 기록하고 진행 + +체계적인 실패 진단에 대해서는 [실패한 실행 디버그](debug-a-failed-execution.md)를 참고하세요. + +--- + +## 출력 위치 + +모든 웨이브가 완료되면 페이즈 디렉터리에 다음이 포함됩니다: + +``` +.planning/phases/01-/ + 01-01-SUMMARY.md # 계획 01이 구축한 것, 핵심 파일, 편차 + 01-02-SUMMARY.md + 01-03-SUMMARY.md + VERIFICATION.md # 요구 사항별 통과/실패 상태 +``` + +`STATE.md`와 `ROADMAP.md`는 모든 웨이브가 완료되면 자동으로 업데이트됩니다. `VERIFICATION.md`는 페이즈가 완전히 완료된 경우에만 작성됩니다. + +Git 히스토리에는 각 실행자의 태스크당 커밋 하나와 오케스트레이터의 추적 커밋이 표시됩니다. + +--- + +## 크로스 AI 실행 + +`workflow.cross_ai_command`에 설정된 외부 AI CLI(Codex, Gemini 등)에 실행을 위임하려면: + +```bash +/gsd-execute-phase 2 --cross-ai +``` + +설정에 크로스 AI가 활성화된 경우에도 로컬 실행을 강제하려면: + +```bash +/gsd-execute-phase 2 --no-cross-ai +``` + +--- + +## 관련 문서 + +- [페이즈 기획](plan-a-phase.md) +- [검증 및 배포](verify-and-ship.md) +- [실패한 실행 디버그](debug-a-failed-execution.md) +- [명령어 참조](../COMMANDS.md) diff --git a/docs/ko-KR/how-to/handle-quick-and-fast-tasks.md b/docs/ko-KR/how-to/handle-quick-and-fast-tasks.md new file mode 100644 index 000000000..1994ea773 --- /dev/null +++ b/docs/ko-KR/how-to/handle-quick-and-fast-tasks.md @@ -0,0 +1,121 @@ +# 빠른 작업과 간단한 작업을 처리하는 방법 + +모든 작업이 페이즈 안에 맞는 것은 아닙니다. GSD는 전체 discuss → plan → execute → verify 루프가 필요 없는 작업을 위한 두 가지 경량 명령을 제공합니다. + +전체 페이즈 파이프라인이 오버헤드를 감당할 가치가 있는 경우에 대한 맥락은 [컨텍스트 엔지니어링](../explanation/context-engineering.md)을 참고하세요. + +--- + +## 어떤 명령을 사용할지 결정 + +| 상황 | 명령 | +|-----------|---------| +| 버그 수정, 소규모 기능 추가, 또는 단일 사소한 수정으로 요약할 수 없는 작업 | `/gsd-quick` | +| 오타 수정, 설정 값 업데이트, `.gitignore` 항목 추가, 또는 ≤ 3개 파일을 터치하고 1분 이내에 완료되는 변경 | `/gsd-fast` | +| 작업에 미지수가 있거나 리서치가 필요하거나 여러 파일을 터치할 경우 | `--research`와 함께 `/gsd-quick` | + +**경험 법칙:** 작업이 사소한지에 대해 잠시라도 망설인다면 `/gsd-quick`을 사용하세요. `/gsd-fast`는 범위가 사소하지 않아 보이면 자동으로 `/gsd-quick`으로 리디렉션합니다. + +--- + +## `/gsd-quick` — GSD 보장이 있는 임시 작업 + +`/gsd-quick`은 전체 페이즈와 동일한 원자적 커밋 및 STATE.md 추적 보장으로 플래너와 실행자를 실행하지만, 페이즈 오버헤드 없이 진행합니다(ROADMAP 항목 없음, discuss-phase 없음, 여러 계획에 걸친 웨이브 조정 없음). + +### 기본 사용 + +```bash +/gsd-quick +``` + +GSD가 태스크 설명을 묻고 계획 및 실행합니다. 산출물은 `.planning/quick/`에 저장됩니다. + +설명을 직접 전달할 수도 있습니다: + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +### 플래그 + +작업에 필요한 경우 더 많은 품질 파이프라인을 추가하는 플래그를 사용하세요. + +| 플래그 | 추가되는 것 | +|------|-------------| +| `--discuss` | 플래너 실행 전 모호한 영역을 표시하고 결정을 `CONTEXT.md`에 캡처하는 경량 사전 기획 논의 | +| `--research` | 집중된 리서치 에이전트가 기획 전에 접근법, 라이브러리, 함정을 조사함 | +| `--validate` | 플랜 체킹(최대 2회 반복) 및 실행 후 검증 | +| `--full` | 위의 모든 것 — `--discuss --research --validate`와 동일 | + +플래그는 자유롭게 조합할 수 있습니다: + +```bash +/gsd-quick --research --validate # 리서치 + 플랜 체킹 + 검증, 논의 없음 +/gsd-quick --discuss # 기획 전 모호한 영역만 표시 +/gsd-quick --full # 전체 품질 파이프라인 +``` + +### 플래그 추가 시기 + +- 작업에 어떻게 접근할지 또는 어떤 라이브러리를 사용할지 확실하지 않을 때 `--research` 추가 +- 작업이 중요한 코드 경로를 터치하고 검증자 에이전트가 must-haves를 충족했는지 확인하기를 원할 때 `--validate` 추가 +- 작업에 플래너 실행 전 확정하고 싶은 설계 선택이 있을 때 `--discuss` 추가(예: 올바른 오류 처리 동작이 명확하지 않을 때) +- 태스크가 실제로 중요하고 페이즈로 기획하겠지만 ROADMAP에 속하지 않을 때 `--full` 사용 + +### 빠른 작업 목록 및 재개 + +```bash +/gsd-quick list # 상태별 모든 빠른 작업 표시 +/gsd-quick status my-task-slug # 특정 작업 상태 표시 +/gsd-quick resume my-task-slug # 중단된 작업 재개 +``` + +--- + +## `/gsd-fast` — 인라인 사소한 편집 + +`/gsd-fast`는 현재 컨텍스트에서 직접 작업을 수행합니다. 서브에이전트, `PLAN.md`, 리서치가 없습니다. 스스로 1분 이내에 할 수 있는 변경에만 적합합니다. + +```bash +/gsd-fast "fix typo in README" +/gsd-fast "add .env to .gitignore" +``` + +설명을 생략하면 GSD가 묻습니다. + +`/gsd-fast`는 진행 전에 작업이 실제로 사소한지 확인합니다. 범위가 너무 크다고 판단하면 중단하고 리디렉션합니다: + +```text +This looks like it needs planning. Use /gsd-quick instead: + /gsd-quick "your task description" +``` + +변경 후 `/gsd-fast`는 원자적으로 커밋하고, `.planning/STATE.md`에 `Quick Tasks Completed` 테이블이 있으면 행을 추가합니다. + +--- + +## `/gsd-quick`이 `/gsd-fast`와 다른 점 + +| 기능 | `/gsd-fast` | `/gsd-quick` | +|------------|------------|--------------| +| 서브에이전트 플래너 | 없음 | 있음 | +| 서브에이전트 실행자 | 없음 | 있음 | +| 리서치 에이전트 | 없음 | 선택 사항 (`--research`) | +| 플랜 체킹 | 없음 | 선택 사항 (`--validate`) | +| 실행 후 검증 | 없음 | 선택 사항 (`--validate`) | +| 논의 단계 | 없음 | 선택 사항 (`--discuss`) | +| 워크트리 격리 | 없음 | 있음 (기본값) | +| 태스크당 원자적 커밋 | 단일 커밋 | 계획 태스크당 하나 | +| STATE.md 추적 | 테이블이 있으면 행 추가 | 항상 업데이트됨 | +| `.planning/quick/` 산출물 | 없음 | 있음 | + +핵심 차이는 서브에이전트 격리입니다. `/gsd-quick`은 별도의 컨텍스트 창에서 새 플래너와 실행자를 실행하므로 작업이 적절히 기획되고 커밋이 태스크당 원자적이며 오케스트레이터가 결과를 검증할 수 있습니다. `/gsd-fast`는 현재 컨텍스트 창만 사용하며 이러한 것이 필요하지 않을 만큼 사소한 변경에 의도적으로 제한됩니다. + +--- + +## 관련 문서 + +- [페이즈 루프](../explanation/the-phase-loop.md) +- [컨텍스트 엔지니어링](../explanation/context-engineering.md) +- [명령어 참조](../COMMANDS.md) +- [문서 목차](../README.md) diff --git a/docs/ko-KR/how-to/install-on-your-runtime.md b/docs/ko-KR/how-to/install-on-your-runtime.md new file mode 100644 index 000000000..1a296068f --- /dev/null +++ b/docs/ko-KR/how-to/install-on-your-runtime.md @@ -0,0 +1,291 @@ +# GSD Core를 런타임에 설치하는 방법 + +GSD Core(`@opengsd/gsd-core`)를 매일 사용하는 AI 코딩 런타임에 설치합니다. 이 가이드는 지원되는 각 런타임의 표준 설치 경로를 안내하고, Node.js가 없는 환경에서의 수동 설치 방법도 다룹니다. + +**필요 사항:** Node.js 18 이상 및 npm(또는 npx). Node.js가 없는 경우 [Node.js 없이 설치하기](#nodejs-없이-설치하기)로 이동하세요. + +--- + +## 인스톨러가 필요한 이유 + +GSD Core는 Claude Code의 네이티브 frontmatter 형식으로 에이전트 및 명령 파일을 제공합니다. 각 지원 런타임은 서로 다른 스키마, 디렉터리 구조, 명령 호출 문법을 요구합니다. 인스톨러는 필요한 변환을 수행합니다. 예를 들어 OpenCode용 도구 목록 및 색상 값 변환, Codex용 TOML 에이전트 항목 작성, Gemini CLI용 모든 명령 본문을 하이픈 형식(`/gsd-update`)에서 콜론 형식(`/gsd:update`)으로 재작성합니다. + +**`agents/` 또는 `commands/`에서 파일을 직접 복사하지 마세요.** 그렇게 하면 변환을 우회하게 되어 스키마 유효성 검사 오류나 누락된 명령이 발생합니다. + +--- + +## 표준 설치 + +임의의 디렉터리에서 인스톨러를 실행합니다. 런타임과 전역 설치(모든 프로젝트) 또는 로컬 설치(이 프로젝트만) 여부를 묻습니다. + +```bash +npx @opengsd/gsd-core@latest +``` + +신규 설치 또는 런타임 전환 후 인스톨러를 재실행할 때 필요한 명령은 이것뿐입니다. + +--- + +## 런타임별 설치 방법 + +### Claude Code + +```bash +npx @opengsd/gsd-core@latest --claude --global +``` + +스킬은 `~/.claude/`에 저장됩니다. 다음 Claude Code 세션에서 `/gsd-*` 슬래시 명령으로 명령이 나타납니다. Claude Code를 재시작하여 적용하세요. + +**설치 디렉터리 재정의:** + +```bash +CLAUDE_CONFIG_DIR=~/.claude-alt npx @opengsd/gsd-core@latest --claude --global +``` + +--- + +### Gemini CLI + +```bash +npx @opengsd/gsd-core@latest --gemini --global +``` + +스킬은 `~/.gemini/`에 저장됩니다. 인스톨러는 모든 명령 본문을 Gemini의 콜론 네임스페이스(`/gsd:update`, `/gsd:config` 등)로 재작성합니다. 설치 후 Gemini CLI를 재시작하세요. + +**설치 디렉터리 재정의:** + +```bash +GEMINI_CONFIG_DIR=~/.gemini-alt npx @opengsd/gsd-core@latest --gemini --global +``` + +--- + +### OpenCode + +```bash +npx @opengsd/gsd-core@latest --opencode --global +``` + +스킬은 `~/.config/opencode/`(XDG) 또는 `~/.opencode/`에 저장됩니다. 인스톨러는 에이전트 frontmatter를 OpenCode 스키마로 변환합니다(`tools:` 필드 제거, 색상 값을 hex로 변환). 변경 내용을 이해하려면 [Node.js 없이 설치하기 — OpenCode 변환](#opencode--필수-변환)을 참고하세요. + +**설치 디렉터리 재정의:** + +```bash +OPENCODE_CONFIG_DIR=~/.config/opencode-alt npx @opengsd/gsd-core@latest --opencode --global +``` + +--- + +### Kilo + +```bash +npx @opengsd/gsd-core@latest --kilo --global +``` + +스킬은 `~/.config/kilo/`(XDG) 또는 `~/.kilo/`에 저장됩니다. OpenCode 스타일의 플랫 마크다운 명령 형식을 사용합니다. + +**설치 디렉터리 재정의:** + +```bash +KILO_CONFIG_DIR=~/.config/kilo-alt npx @opengsd/gsd-core@latest --kilo --global +``` + +--- + +### Codex + +```bash +npx @opengsd/gsd-core@latest --codex --global +``` + +스킬은 `~/.codex/skills/gsd-*/SKILL.md`에 저장됩니다. 에이전트는 `config.toml`에 에이전트별 TOML 항목으로 작성됩니다. 설치 후 Codex를 재시작하거나 `codex --reload`를 실행하세요. + +**최소 지원 버전:** Codex CLI 0.130.0. 이전 버전은 추가 스킬 루트 스캔으로 중복 목록이 발생할 수 있습니다. + +--- + +### GitHub Copilot + +```bash +npx @opengsd/gsd-core@latest --copilot --global +``` + +스킬은 `~/.copilot/`에 저장됩니다. GSD는 에이전트 `.md` 파일 및 저장소 지시 파일로 설치됩니다. + +**설치 디렉터리 재정의:** + +```bash +COPILOT_CONFIG_DIR=~/.copilot-alt npx @opengsd/gsd-core@latest --copilot --global +``` + +--- + +### Cursor + +```bash +npx @opengsd/gsd-core@latest --cursor --global +``` + +스킬은 `~/.cursor/`에 저장됩니다. GSD는 스킬, 에이전트, 규칙 참조를 설치합니다. + +**설치 디렉터리 재정의:** + +```bash +CURSOR_CONFIG_DIR=~/.cursor-alt npx @opengsd/gsd-core@latest --cursor --global +``` + +--- + +### Windsurf + +```bash +npx @opengsd/gsd-core@latest --windsurf --global +``` + +스킬은 `~/.codeium/windsurf/`에 저장됩니다. GSD는 스킬, 에이전트, 워크스페이스 규칙을 설치합니다. + +**설치 디렉터리 재정의:** + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-alt npx @opengsd/gsd-core@latest --windsurf --global +``` + +--- + +### Cline + +Cline은 규칙 기반 통합을 사용합니다. GSD는 슬래시 명령이 아닌 `.clinerules`로 설치됩니다. + +```bash +# 전역 설치 (모든 프로젝트) +npx @opengsd/gsd-core@latest --cline --global + +# 로컬 설치 (이 프로젝트만) +npx @opengsd/gsd-core@latest --cline --local +``` + +전역 설치는 `~/.cline/`에 저장됩니다. 로컬 설치는 `./.cline/`에 저장됩니다. 규칙은 Cline에 의해 자동으로 로드되며 커스텀 슬래시 명령은 등록되지 않습니다. + +--- + +### CodeBuddy + +```bash +npx @opengsd/gsd-core@latest --codebuddy --global +``` + +스킬은 `~/.codebuddy/skills/gsd-*/SKILL.md`에 저장됩니다. + +--- + +### Qwen Code + +Qwen Code는 Claude Code 2.1.88+와 동일한 오픈 스킬 표준을 사용합니다. + +```bash +npx @opengsd/gsd-core@latest --qwen --global +``` + +스킬은 `~/.qwen/skills/gsd-*/SKILL.md`에 저장됩니다. + +**설치 디렉터리 재정의:** + +```bash +QWEN_CONFIG_DIR=~/.qwen-alt npx @opengsd/gsd-core@latest --qwen --global +``` + +--- + +### Augment Code + +```bash +npx @opengsd/gsd-core@latest --augment --global +``` + +스킬은 `~/.augment/`에 저장됩니다. GSD는 스킬과 에이전트를 설치합니다. 훅 또는 상태 표시줄 소유권은 없습니다. + +--- + +### Antigravity + +```bash +npx @opengsd/gsd-core@latest --antigravity --global +``` + +인스톨러는 Antigravity 설정 디렉터리(`~/.gemini/antigravity`, `~/.gemini/antigravity-ide`, 또는 `~/.gemini/antigravity-cli`)를 자동으로 감지합니다. Gemini 호환 설정 정책을 사용합니다. + +**설치 디렉터리 재정의:** + +```bash +ANTIGRAVITY_CONFIG_DIR=~/.gemini/antigravity-alt npx @opengsd/gsd-core@latest --antigravity --global +``` + +--- + +### Trae + +```bash +npx @opengsd/gsd-core@latest --trae --global +``` + +스킬은 `~/.trae/`에 저장됩니다. GSD는 스킬, 에이전트, 규칙 참조를 설치합니다. + +--- + +## 로컬 설치 vs 전역 설치 + +위의 모든 예시는 사용자 계정 전체에 GSD를 한 번 설치하는 `--global`을 사용합니다. 단일 프로젝트로 범위를 제한하려면 `--global`을 `--local`로 바꾸세요: + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +로컬 설치는 프로젝트 루트의 `.claude/` 디렉터리에 작성됩니다. 둘 다 존재하는 경우 로컬 설치 설정이 전역 설정보다 우선합니다. + +--- + +## 프리릴리스 에디션 설치 (Next / Nightly / Insiders / Preview) + +런타임의 프리릴리스 에디션(Windsurf Next, Cursor Nightly, VS Code Insiders, Codex 프리뷰 채널 등)은 인접한 설정 디렉터리에서 읽습니다. 인스톨러 실행 전에 해당하는 `*_CONFIG_DIR` 환경 변수를 설정하세요: + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global +``` + +인스톨러 프롬프트에서 해당하는 안정적인 런타임을 선택하세요. GSD는 프리릴리스 에디션을 별도의 명명된 런타임으로 열거하지 않습니다. 이 환경 변수 메커니즘을 통한 지원은 최선의 방식이며 릴리스 CI에서 별도로 테스트되지 않습니다. + +--- + +## Node.js 없이 설치하기 + +`npx`를 실행할 수 없는 경우(예: Node.js가 없는 Windows 환경), 두 가지 옵션이 있습니다. + +**옵션 A — Node.js가 있는 다른 머신 사용.** WSL, Linux VM, CI 러너, Docker 컨테이너 등 Node.js가 있는 어떤 머신이든 사용 가능합니다. 그곳에서 인스톨러를 실행한 후 출력 디렉터리를 대상 머신으로 복사하세요. OpenCode의 경우: + +```bash +npx @opengsd/gsd-core@latest --opencode --global +# 그 다음 ~/.config/opencode/agents/ 를 Windows 머신으로 복사 +``` + +**옵션 B — 소스 파일 수동 변환.** 에이전트 소스 파일은 GSD Core 저장소의 `agents/`에 있으며 Claude Code의 네이티브 frontmatter 형식입니다. 각 런타임은 다른 구조를 요구합니다. 런타임별 정확한 필드 변환에 대해서는 사용자 가이드의 [수동 설치 / Node.js 없는 설정](../USER-GUIDE.md#manual-install--no-nodejs-setup)을 참고하세요. OpenCode 변환 전체를 다루며 다른 런타임용 인스톨러의 `convert*Frontmatter` 함수를 안내합니다. + +--- + +## 설치 후 + +새 명령과 에이전트를 적용하려면 런타임을 재시작하세요. 그런 다음 첫 번째 프로젝트를 시작합니다: + +```bash +/gsd-new-project +``` + +재시작 후 명령을 찾을 수 없다면 설치 디렉터리가 런타임이 기대하는 설정 경로와 일치하는지 확인하세요. 위의 프리릴리스 에디션 섹션에서 가장 흔한 불일치 사례를 다룹니다. + +--- + +## 관련 문서 + +- [첫 번째 프로젝트](../tutorials/your-first-project.md) +- [GSD Core 업데이트](update-gsd.md) +- [설정](../CONFIGURATION.md) +- [문서 목차](../README.md) diff --git a/docs/ko-KR/how-to/isolate-work-with-workspaces.md b/docs/ko-KR/how-to/isolate-work-with-workspaces.md new file mode 100644 index 000000000..3dc34b936 --- /dev/null +++ b/docs/ko-KR/how-to/isolate-work-with-workspaces.md @@ -0,0 +1,144 @@ +# 워크스페이스로 작업을 격리하는 방법 + +**목표:** 피처 브랜치나 멀티 저장소 작업을 위해 별도의 git 워크트리, 독립적인 `.planning/` 루트, 그리고 선택적으로 여러 저장소를 포함하는 완전히 격리된 GSD 환경을 만듭니다. + +**사전 조건:** `git`이 설치되어 있고 저장소가 워크트리를 지원해야 합니다. 멀티 저장소 워크스페이스의 경우 대상 저장소가 로컬 머신에 존재하거나 경로로 접근 가능해야 합니다. + +--- + +## 워크스페이스란 + +워크스페이스는 하나 이상의 git 워크트리(또는 클론)와 자체 `.planning/` 루트 디렉터리를 결합한 자급자족 환경입니다. 각 워크스페이스에는 다음이 포함됩니다: + +- 소스 저장소의 `.planning/`으로부터 **완전히 독립적인** 자체 `.planning/` 디렉터리 — 그 하위 디렉터리가 아님 +- 멤버 저장소를 추적하는 자체 `WORKSPACE.md` 매니페스트 +- 지정된 저장소의 git 워크트리(기본값) 또는 전체 클론이며 전용 브랜치(기본값: `workspace/`)로 체크아웃됨 + +워크스페이스는 기본적으로 `~/gsd-workspaces//` 아래에 위치합니다. + +``` +~/gsd-workspaces/ +└── feature-b/ + ├── WORKSPACE.md ← 매니페스트 + ├── .planning/ ← 완전히 독립된 GSD 상태 + │ ├── PROJECT.md + │ ├── ROADMAP.md + │ └── ... + ├── hr-ui/ ← hr-ui 저장소의 워크트리 또는 클론 + └── ZeymoAPI/ ← ZeymoAPI 저장소의 워크트리 또는 클론 +``` + +워크스페이스의 `.planning/`이 소스 저장소와 분리되어 있으므로 소스 저장소에 존재하는 계획 상태와 충돌이나 겹침이 없습니다. + +--- + +## 여러 저장소에 대한 워크스페이스 생성 + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI +``` + +GSD는 `~/gsd-workspaces/feature-b/` 내에 `hr-ui`와 `ZeymoAPI`의 워크트리를 생성하고, 각각에서 `workspace/feature-b` 브랜치를 체크아웃하며, `WORKSPACE.md`를 작성하고 `/gsd-new-project`를 위한 빈 `.planning/` 디렉터리를 생성합니다. + +위치를 사용자 정의하려면: + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI --path /projects/feature-b +``` + +--- + +## 현재 저장소에 대한 워크스페이스 생성 + +단일 저장소에서 피처 브랜치 격리가 필요할 때 — 독립적인 브랜치, 독립적인 `.planning/`, 메인에서의 상태 유입 없음: + +```bash +/gsd-workspace --new --name payments-rework --repos . +``` + +`.`은 GSD에게 현재 저장소의 워크트리를 생성하도록 지시합니다. 워크트리는 `workspace/payments-rework`로 체크아웃됩니다. + +워크트리 대신 전체 클론을 강제하려면: + +```bash +/gsd-workspace --new --name payments-rework --repos . --strategy clone +``` + +--- + +## 브랜치 명시적 지정 + +```bash +/gsd-workspace --new --name payments-rework --repos . --branch feature/payments-v2 +``` + +`--branch` 플래그는 워크스페이스의 모든 저장소에 대한 브랜치 이름을 설정합니다. 기본값은 `workspace/`입니다. + +--- + +## 대화형 질문 건너뛰기 + +```bash +/gsd-workspace --new --name payments-rework --repos . --auto +``` + +GSD는 프롬프트 없이 모든 기본값을 수락합니다. + +--- + +## 워크스페이스 내에서 GSD 초기화 + +워크스페이스를 생성한 후 그 안으로 이동하고 GSD 프로젝트를 초기화합니다: + +```bash +cd ~/gsd-workspaces/feature-b +/gsd-new-project +``` + +워크스페이스 내의 `.planning/` 디렉터리가 해당 디렉터리에서 실행되는 모든 후속 GSD 명령의 루트입니다. 이것은 소스 저장소에 존재하는 어떠한 `.planning/`과도 완전히 분리되어 있습니다. + +--- + +## 워크스페이스 목록 보기 + +```bash +/gsd-workspace --list +``` + +모든 활성 GSD 워크스페이스와 상태를 출력합니다. + +--- + +## 워크스페이스 제거 + +```bash +/gsd-workspace --remove feature-b +``` + +GSD는 git 워크트리를 제거하고 워크스페이스 디렉터리를 정리합니다. 이 작업은 원격 저장소에서 브랜치를 삭제하지 않으며 로컬 워크트리와 워크스페이스 디렉터리만 제거합니다. + +--- + +## 워크스트림 대신 워크스페이스를 선택할 때 + +워크스페이스를 선택할 때: + +- **여러 저장소**(예: API 저장소와 함께 출시되는 UI 저장소)를 하나의 GSD 프로젝트 아래서 조율해야 할 때 +- 피처별로 자체 브랜치, 잠금 파일, 빌드 아티팩트를 가진 **별도의 git 워크트리**가 필요할 때 — 한 환경에서의 빌드와 의존성 설치가 다른 환경에 영향을 주지 않도록 +- 메인 저장소의 `.planning/` 하위 디렉터리가 아닌 **완전히 독립적인 `.planning/` 루트**를 원할 때 +- 각 트래커 이슈가 워크스페이스에 매핑되는 이슈 기반 워크플로를 따를 때([트래커 이슈에서 GSD 구동](drive-gsd-from-a-tracker-issue.md) 참조) + +[워크스트림](work-in-parallel-with-workstreams.md)을 선택할 때: + +- 모든 작업이 **하나의 저장소**에 있고 같은 git 히스토리를 공유할 때 +- 서로의 `STATE.md` 파일 간의 컨텍스트 유입 없이 서로 다른 관심 영역(API, UI, 인프라)에 대해 동시에 `/gsd-plan-phase` 또는 `/gsd-discuss-phase`를 실행하고 싶을 때 +- 관심사별로 별도의 워크트리가 필요하지 않고 계획 컨텍스트 전환으로 충분할 때 + +--- + +## 관련 문서 + +- [워크스트림으로 병렬 작업](work-in-parallel-with-workstreams.md) +- [트래커 이슈에서 GSD 구동](drive-gsd-from-a-tracker-issue.md) +- [명령 참조](../COMMANDS.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/how-to/migrate-from-gsd-2.md b/docs/ko-KR/how-to/migrate-from-gsd-2.md new file mode 100644 index 000000000..4523d29cc --- /dev/null +++ b/docs/ko-KR/how-to/migrate-from-gsd-2.md @@ -0,0 +1,145 @@ +# GSD-2에서 마이그레이션하는 방법 + +**목표:** 이전 GSD-2 프로젝트(`.gsd/` 디렉터리 레이아웃)를 GSD Core(`.planning/` 레이아웃)로 이전하고, 선택적으로 저장소에 있는 기존 ADR, PRD, 또는 스펙 문서를 새 계획 구조에 통합합니다. + +**사전 조건:** GSD Core가 설치되어 있어야 합니다. GSD-2 프로젝트 디렉터리가 디스크에 있어야 합니다. + +--- + +## 마이그레이션 대상 이해 + +GSD-2는 `.gsd/` 디렉터리를 계획 루트로 사용했습니다. GSD Core는 `.planning/`을 사용합니다. 마이그레이션은 이를 역전합니다: `.gsd/` 아티팩트를 읽고 모든 GSD Core 명령이 기대하는 표준 `.planning/` 구조로 작성합니다. + +| GSD-2에 존재하는 것 | `/gsd-import --from-gsd2`가 생성하는 것 | +|----------------------|-----------------------------------------| +| `.gsd/PROJECT.md` | `.planning/PROJECT.md` | +| `.gsd/ROADMAP.md` | `.planning/ROADMAP.md` | +| `.gsd/STATE.md` | `.planning/STATE.md` | +| `.gsd/phases/` 디렉터리 | `.planning/phases/` 디렉터리 | +| 페이즈 `PLAN.md` 파일 | GSD Core `{NN}-{MM}-PLAN.md` 파일 (이름 변경 적용) | + +충돌 감지는 파일이 작성되기 전에 실행됩니다. 대상 디렉터리에 이미 `PROJECT.md`가 있고 가져오는 콘텐츠와 모순되면 마이그레이션은 BLOCKER 게이트에서 중단하고 해결할 충돌 목록을 표시합니다. + +--- + +## 마이그레이션 실행 + +### 현재 디렉터리 마이그레이션 + +```bash +/gsd-import --from-gsd2 +``` + +GSD는 현재 작업 디렉터리의 `.gsd/`를 읽고 마이그레이션된 아티팩트를 `.planning/`에 작성합니다. + +### 다른 경로에서 마이그레이션 + +```bash +/gsd-import --from-gsd2 --path ~/projects/old-project +``` + +GSD-2 프로젝트가 현재 작업 디렉터리가 아닌 경우 `--path`를 사용합니다. + +--- + +## 충돌 해결 + +충돌 감지에서 블로커가 발견되면 — 예를 들어, 기존 `.planning/PROJECT.md`와 모순되는 GSD-2 기술 스택 선언 — 충돌 보고서를 출력하고 파일을 작성하지 않고 중단합니다. + +보고서를 읽고 모순을 해결한 후(소스 문서 또는 기존 계획 아티팩트 편집), `/gsd-import --from-gsd2`를 다시 실행합니다. 마이그레이션은 완전히 통과될 때까지 안전하게 재실행할 수 있습니다. + +--- + +## 외부 플랜 파일 가져오기 + +전체 GSD-2 프로젝트가 아닌 독립형 플랜 문서(팀 계획 문서, 마크다운 스펙, 내보낸 작업 목록)가 있는 경우 `--from`을 사용합니다: + +```bash +/gsd-import --from /tmp/team-plan.md +``` + +GSD는 동일한 충돌 감지 패스를 수행하고, 콘텐츠를 GSD Core `PLAN.md` 형식으로 변환하며, 플랜 체커로 결과를 검증합니다. 검증 후 대상 파일명과 다음 단계가 표시됩니다. + +--- + +## 기존 문서 통합 + +저장소에 이미 ADR(아키텍처 결정 기록), PRD, 또는 사양 문서가 있는 경우 마이그레이션 후 `/gsd-ingest-docs`를 사용하여 `.planning/` 구조에 합성합니다: + +### 전체 저장소 스캔(모드 자동 감지) + +```bash +/gsd-ingest-docs +``` + +`.planning/`이 이미 있는 경우(예: 방금 실행한 마이그레이션에서) GSD는 기본적으로 병합 모드를 사용합니다 — 기존 내용을 덮어쓰지 않고 가져온 문서와 함께 합성합니다. + +### 특정 디렉터리로 범위 지정 + +```bash +/gsd-ingest-docs docs/ +/gsd-ingest-docs docs/adr/ +``` + +### 명시적 우선순위 매니페스트 사용 + +문서 유형이 혼합되거나 충돌 시 어떤 문서가 우선순위를 가질지 제어하고 싶을 때: + +```bash +/gsd-ingest-docs --manifest ingest.yaml +``` + +매니페스트는 문서당 `{path, type, precedence?}`를 나열하는 YAML 파일입니다. 예상 형태는 [명령 참조](../COMMANDS.md)의 `--manifest` 플래그 설명을 참조하세요. + +### 특정 모드 강제 + +```bash +/gsd-ingest-docs --mode merge # 기존 .planning/에 병합 +/gsd-ingest-docs --mode new # 처음부터 부트스트랩 (덮어쓰기) +``` + +**출력:** `/gsd-ingest-docs`는 항상 세 가지 버킷(자동 해결, 경쟁 변형, 미해결 블로커)이 있는 `INGEST-CONFLICTS.md`를 생성합니다. 모든 인제스트 실행 후 이 파일을 검토하세요. LOCKED vs LOCKED ADR 모순에서만 하드 중단이 발생합니다. 다른 모든 것은 자동으로 버려지지 않고 검토를 위해 표시됩니다. + +--- + +## 마이그레이션된 프로젝트 검증 + +마이그레이션과 문서 인제스트가 완료되면 프로젝트 상태가 일관성 있는지 확인합니다: + +```bash +/gsd-health +/gsd-health --repair +``` + +`/gsd-health`는 `.planning/` 디렉터리 무결성을 확인하고 드리프트를 보고합니다. `--repair`는 복구 가능한 문제를 자동으로 수정합니다. + +그다음 GSD Core가 프로젝트 상태를 읽을 수 있는지 확인합니다: + +```bash +/gsd-progress +``` + +프로젝트가 깔끔하게 이전되었다면 현재 페이즈 상태와 권장 다음 단계가 표시됩니다. 여기서부터 표준 GSD Core 워크플로가 적용됩니다. + +--- + +## 조건부 처리: 마이그레이션 대상과 아닌 것 + +| 상황 | 할 일 | +|-----------|-----------| +| `.gsd/`가 현재 디렉터리에 있음 | `/gsd-import --from-gsd2` 실행 (`--path` 불필요) | +| `.gsd/`가 다른 디렉터리에 있음 | `--path ~/projects/old-project` 사용 | +| 전체 GSD-2 프로젝트가 아닌 독립형 플랜 문서가 있음 | `/gsd-import --from /path/to/plan.md` 사용 | +| `docs/adr/`에 ADR이 있음 | 마이그레이션 후 `/gsd-ingest-docs docs/adr/` 실행 | +| ADR, PRD, 스펙이 혼합되어 있음 | 저장소 루트에서 `/gsd-ingest-docs` 실행; 자동으로 분류됨 | +| 충돌 감지가 블로커를 보고함 | 나열된 모순을 해결한 후 재실행; 모든 블로커가 해결될 때까지 파일이 작성되지 않음 | +| 마이그레이션 작동 여부 확인이 안 됨 | `/gsd-health`와 `/gsd-progress`를 실행하여 확인 | +| INGEST-CONFLICTS.md에 미해결 블로커가 나열됨 | 영향받는 문서가 계획에 통합되기 전에 수동 해결 필요 | + +--- + +## 관련 문서 + +- [첫 번째 프로젝트](../tutorials/your-first-project.md) +- [명령 참조](../COMMANDS.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/how-to/plan-a-phase.md b/docs/ko-KR/how-to/plan-a-phase.md new file mode 100644 index 000000000..1231f3061 --- /dev/null +++ b/docs/ko-KR/how-to/plan-a-phase.md @@ -0,0 +1,216 @@ +# 페이즈를 기획하는 방법 + +**목표:** 페이즈 결정 사항과 리서치를 실행 준비가 된 원자적이고 검증 가능한 태스크 계획으로 변환합니다. + +**전제 조건:** `.planning/ROADMAP.md`가 존재해야 합니다. `/gsd-discuss-phase`에서 생성된 `{phase}-CONTEXT.md`를 강력히 권장하지만 필수는 아닙니다. + +--- + +## 표준 기획 흐름 실행 + +```bash +/gsd-plan-phase 2 +``` + +다음 세 단계를 순서대로 실행합니다: + +1. **리서치** — `gsd-phase-researcher` 서브에이전트가 도메인을 조사하고 `{phase}-RESEARCH.md`를 작성합니다. +2. **기획** — `gsd-planner` 서브에이전트가 컨텍스트, 리서치, 요구 사항을 읽고 하나 이상의 `{phase}-{N}-PLAN.md` 파일을 작성합니다. +3. **검증** — `gsd-plan-checker` 서브에이전트가 8개 차원에서 계획 품질을 검증하고 품질 게이트를 통과할 때까지 최대 3회의 수정 루프를 실행합니다. + +페이즈 번호가 없으면 GSD Core는 로드맵에서 다음 미기획 페이즈를 대상으로 합니다. + +--- + +## 리서치 건너뛰기 또는 강제 실행 + +**도메인이 익숙하고 새 리서치가 필요 없는 경우:** + +```bash +/gsd-plan-phase 3 --skip-research +``` + +**RESEARCH.md가 이미 존재하지만 강제로 새로 고침하려는 경우:** + +```bash +/gsd-plan-phase 3 --research +``` + +**리서치만 실행하려는 경우** — RESEARCH.md를 작성하고 기획 전 종료: + +```bash +/gsd-plan-phase --research-phase 4 +``` + +RESEARCH.md가 이미 존재하면 업데이트, 보기, 또는 건너뛰기 프롬프트가 표시됩니다. 프롬프트 없이 강제 새로 고침하려면: + +```bash +/gsd-plan-phase --research-phase 4 --research +``` + +리서처를 실행하지 않고 기존 RESEARCH.md를 표준 출력으로 출력하려면: + +```bash +/gsd-plan-phase --research-phase 4 --view +``` + +참고: `--research-phase `은 `/gsd-plan-phase`의 플래그입니다. 독립형 리서치 페이즈 명령은 없습니다. 이전의 독립형 리서치 명령은 이 플래그로 대체되었습니다. + +--- + +## 수평 계층 대신 수직 기능 슬라이스로 기획 + +**기술 계층별이 아닌 기능별 얇은 종단 슬라이스**(UI → API → DB)로 태스크를 구성하려면: + +```bash +/gsd-plan-phase 1 --mvp +``` + +이전 페이즈 요약이 없는 새 프로젝트의 페이즈 1에서 `--mvp`는 프로젝트 스캐폴드, 라우팅, 실제 DB 읽기/쓰기 하나, 실제 UI 인터랙션 하나, 개발 배포를 다루는 `SKELETON.md`도 생성합니다. + +플래그 없이 페이즈에 MVP 모드를 지속하려면 ROADMAP.md의 해당 페이즈 항목에 `**Mode:** mvp`를 추가하세요. + +--- + +## 동작 추가 태스크마다 실패하는 테스트 요구 + +**TDD 적용을 원하는 경우** — 각 동작 추가 태스크는 구현 전 실패하는 테스트로 시작합니다: + +```bash +/gsd-plan-phase 1 --tdd +``` + +`--mvp`와 조합 가능: + +```bash +/gsd-plan-phase 1 --mvp --tdd +``` + +모든 동작 추가 태스크가 RED → GREEN → REFACTOR를 따르는 수직 슬라이스를 생성합니다. 플래너는 적합한 태스크(비즈니스 로직, API 엔드포인트, 데이터 변환)에 `type: tdd`를 적용하고 UI, 설정, 연결 코드에는 표준 `type: execute`를 사용합니다. + +TDD 모드는 설정에서도 지속할 수 있습니다: + +```bash +node gsd-tools.cjs config-set workflow.tdd_mode true +``` + +--- + +## 크로스 AI 리뷰 피드백으로 재기획 + +**`/gsd-review --phase N`을 실행하여 `REVIEWS.md`가 존재하는 경우:** + +```bash +/gsd-plan-phase 3 --reviews +``` + +플래너는 `REVIEWS.md`를 읽고 피드백을 반영하여 계획을 수정합니다. `--gaps`와 함께 사용할 수 없습니다. + +**자동화된 루프를 원하는 경우** — HIGH 우려 사항이 남지 않을 때까지 재기획 및 재검토: + +```bash +/gsd-plan-review-convergence 3 +``` + +수렴 루프는 plan → review → replan → re-review 사이클을 기본 최대 3회 실행합니다. 상한선을 변경하려면 `--max-cycles N`을 사용하세요. + +--- + +## 실패한 검증 후 갭 해소 + +**`VERIFICATION.md`에 미해결 갭이 있고 해당 갭만을 대상으로 재기획하려는 경우:** + +```bash +/gsd-plan-phase 3 --gaps +``` + +리서치는 건너뛰고 플래너는 검증 갭을 직접 읽습니다. + +--- + +## 기획 시작 전 프로젝트 상태 검증 + +```bash +/gsd-plan-phase 2 --validate +``` + +리서처를 실행하기 전에 상태 검증을 실행합니다. ROADMAP.md 또는 STATE.md가 최신 상태와 맞지 않다고 의심되는 경우 사용하세요. + +--- + +## 기획 후 외부 바운스 검증 실행 + +**`workflow.plan_bounce_script`가 설정되어 있고 완성된 계획의 외부 검증을 원하는 경우:** + +```bash +/gsd-plan-phase 1 --bounce +``` + +설정에 바운스가 활성화된 경우에도 건너뛰려면: + +```bash +/gsd-plan-phase 1 --skip-bounce +``` + +--- + +## 대화형 확인 억제 + +```bash +/gsd-plan-phase --auto +``` + +모든 프롬프트를 건너뜁니다. 자동화 파이프라인에 유용합니다. 설정에서 `research_enabled`가 false인 경우 리서치는 건너뜁니다. + +--- + +## 기획 결과물 + +성공적인 실행은 다음 파일을 생성합니다: + +| 파일 | 목적 | +|---|---| +| `{phase}-RESEARCH.md` | 도메인 리서치, 패키지 적법성 감사, 검증 아키텍처 | +| `{phase}-VALIDATION.md` | Nyquist 테스트 매핑 — 계획이 충족해야 할 테스트 케이스 (차원 8) | +| `{phase}-{N}-PLAN.md` | frontmatter, 웨이브 할당, 인수 기준이 포함된 실행 가능한 태스크 계획 | +| `{phase}/SKELETON.md` | 워킹 스켈레톤 (MVP 모드, 새 프로젝트의 페이즈 1에만 해당) | + +각 PLAN.md에는 필수 `` 및 `` 필드가 있는 태스크가 포함됩니다. 모든 `` 항목은 소스 단언, 동작 단언, 테스트 명령, CLI 출력으로 검증 가능합니다. 주관적 표현은 허용되지 않습니다. + +전체 필드 참조는 [PLAN.md 스키마](../reference/plan-md.md)를 참고하세요. + +### 계획 품질 차원 + +`gsd-plan-checker`는 실행을 허용하기 전에 8개 차원에서 계획을 검증합니다: + +1. 태스크 원자성 — 각 태스크는 단일 관심사 +2. 의존성 정확성 — 웨이브 순서가 일관됨 +3. 인수 기준 검증 가능성 — 주관적 기준 없음 +4. `` 완전성 — 수정 중인 파일이 항상 나열됨 +5. 구체적인 `` 값 — "~에 맞춰 정렬" 같은 모호한 지시 없음 +6. 페이즈 목표에서 파생된 `must_haves` +7. 요구 사항 ID 커버리지 — 모든 페이즈 요구 사항 ID가 최소 하나의 계획에 나타남 +8. Nyquist 테스트 매핑 — 계획이 VALIDATION.md의 검증 전략을 다룸 + +수정 루프는 최대 3회 실행됩니다. 3회 반복 후에도 품질 게이트를 통과하지 못하면 체커가 남은 문제를 수동 검토를 위해 표시합니다. + +--- + +## 닫힌 페이즈 재기획 + +`status: passed`가 있는 `VERIFICATION.md`가 있는 페이즈는 닫힌 것으로 간주됩니다. 재기획을 시도하면 오류로 중단됩니다. 종료가 잘못된 경우 `--force`로 재정의하세요: + +```bash +/gsd-plan-phase 2 --force +``` + +트랜스크립트와 커밋된 계획 문서에 경고가 기록됩니다. + +--- + +## 관련 문서 + +- [페이즈 논의](discuss-a-phase.md) +- [페이즈 실행](execute-a-phase.md) +- [PLAN.md 스키마](../reference/plan-md.md) +- [명령어 참조](../COMMANDS.md) diff --git a/docs/ko-KR/how-to/recover-and-troubleshoot.md b/docs/ko-KR/how-to/recover-and-troubleshoot.md new file mode 100644 index 000000000..eea0557a8 --- /dev/null +++ b/docs/ko-KR/how-to/recover-and-troubleshoot.md @@ -0,0 +1,323 @@ +# 복구 및 문제 해결 방법 + +**목표:** 조건부 레시피 구조를 사용하여 컨텍스트 손실과 손상된 상태부터 설치 실패와 권한 오류까지 일반적인 문제를 식별하고 수정합니다. + +**사전 조건:** GSD Core가 설치되어 있어야 합니다. 설치 문제의 경우 [런타임에 설치](install-on-your-runtime.md)를 참조하세요. + +--- + +## 컨텍스트 및 세션 문제 + +### 현재 위치를 파악하지 못한 경우 + +```bash +/gsd-progress +``` + +모든 상태 파일을 읽고 현재 위치와 다음 할 일을 정확히 알려줍니다. + +올바른 다음 단계로 자동 진행하려면: + +```bash +/gsd-progress --next +``` + +### 새 세션을 시작하고 컨텍스트를 복원해야 하는 경우 + +```bash +/gsd-resume-work +``` + +마지막 핸드오프의 전체 세션 컨텍스트(현재 페이즈, 계획 결정, 작업이 중단된 위치)를 복원합니다. + +### 긴 세션 중 품질이 저하되는 경우 + +주요 명령 사이에 컨텍스트 창을 초기화합니다: + +```bash +/clear +``` + +그다음 상태를 복원합니다: + +```bash +/gsd-resume-work +``` + +GSD는 새로운 컨텍스트를 중심으로 설계되었습니다. 모든 서브에이전트는 이미 깨끗한 200k 창을 받습니다. 메인 세션은 시간이 지남에 따라 저하됩니다 — 초기화하고 재개하는 것이 올바른 해결책이며 계속 밀어붙이는 것이 아닙니다. + +### 중단 전에 컨텍스트를 저장하고 싶은 경우 + +```bash +/gsd-pause-work +``` + +현재 위치가 있는 `.planning/HANDOFF.json`을 생성합니다. 세션 후 요약도 `.planning/reports/`에 작성하려면 `--report`를 추가합니다: + +```bash +/gsd-pause-work --report +``` + +--- + +## 계획 무결성 문제 + +### `.planning/` 무결성이 불확실한 경우 + +```bash +/gsd-health +``` + +오류, 경고, 정보 메모에 걸쳐 상태를 보고합니다: + +| 상태 | 의미 | +|--------|---------| +| `HEALTHY` | 모든 예상 아티팩트가 존재하고 올바른 형식 | +| `DEGRADED` | 처리해야 하지만 작업을 계속할 수 있는 경고 | +| `BROKEN` | 실행을 차단하는 심각한 오류 | + +일반적인 자동 복구 가능한 문제(오류 E004, E005; 경고 W003, W008): + +```bash +/gsd-health --repair +``` + +누락된 `STATE.md`를 재생성하고, 손상된 `config.json`을 기본값으로 재설정하며, 누락된 구성 키를 추가합니다. `PROJECT.md`나 `ROADMAP.md`를 덮어쓰지 않습니다. + +### STATE.md가 존재하지 않는 페이즈를 참조하는 경우 + +이것은 경고 `W002`를 생성합니다. 상태 CLI를 사용하여 진단하고 복구합니다: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate +``` + +쓰기 없이 동기화가 변경할 내용 미리 보기: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify +``` + +동기화 적용: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync +``` + +이 명령들은 디스크의 실제 프로젝트 상태에서 `STATE.md`를 재구성합니다. 수동 `STATE.md` 편집을 대체합니다. + +### "Project already initialised"가 표시되는 경우 + +`.planning/PROJECT.md`가 이미 있습니다. `/gsd-new-project`는 안전 확인입니다. 정말로 처음부터 다시 시작하고 싶다면 먼저 `.planning/` 디렉터리를 삭제합니다: + +```bash +rm -rf .planning/ +``` + +그다음 `/gsd-new-project`를 다시 실행합니다. + +### 컨텍스트 창 사용률이 높은 경우 + +```bash +/gsd-health --context +``` + +컨텍스트 창 사용률 가드를 프로브합니다. 60%에서 경고, 70%에서 위험. 경고 임계값을 초과한 경우 다음 주요 명령을 시작하기 전에 `/clear`를 실행한 후 `/gsd-resume-work`를 실행합니다. + +--- + +## 실행 문제 + +### 실행자가 Bash 명령에서 "Permission denied"를 받는 경우 + +GSD의 `gsd-executor` 서브에이전트는 쓰기 가능한 Bash 접근이 필요합니다. `~/.claude/settings.json`의 `permissions.allow` 아래에 필요한 패턴을 추가합니다. 최소한: + +```json +"Bash(git add:*)", +"Bash(git commit:*)", +"Bash(git merge:*)", +"Bash(git checkout:*)" +``` + +스택별 패턴(Rails, Python, Node, Rust)은 `docs/USER-GUIDE.md`의 "Executor Subagent Gets Permission denied" 섹션의 전체 표를 참조하세요. + +프로젝트별 대안: 프로젝트 루트의 `.claude/settings.local.json`에 동일한 블록을 추가합니다. + +### 실행이 실패하거나 스텁을 생성하는 경우 + +플랜이 너무 야심찬지 확인합니다. 플랜에는 최대 두세 개의 작업이 있어야 합니다. 작업이 너무 크면 단일 컨텍스트 창이 안정적으로 생성할 수 있는 것을 초과합니다. 더 작은 범위로 페이즈를 다시 계획합니다: + +```bash +/gsd-plan-phase 1 +``` + +무엇이 잘못되었는지에 대한 체계적인 진단은 [실패한 실행 디버그](debug-a-failed-execution.md)를 참조하세요. + +### 병렬 실행이 빌드 잠금 오류 또는 사전 커밋 훅 실패를 일으키는 경우 + +이것은 여러 에이전트가 동시에 빌드 도구를 트리거하여 발생합니다. GSD는 v1.26 이후 이를 자동으로 처리합니다. 오래된 버전이거나 여전히 경합이 보이면 병렬 실행을 비활성화합니다: + +```bash +/gsd-settings +``` + +`parallelization.enabled`를 `false`로 설정합니다. + +### 서브에이전트가 실패한 것처럼 보이지만 커밋이 만들어진 경우 + +무언가가 고장났다고 결론 내리기 전에 git 로그를 확인합니다: + +```bash +git log --oneline -10 +``` + +알려진 Claude Code 분류 버그로 인해 작업이 성공했는데도 실패를 보고할 수 있습니다. GSD의 오케스트레이터는 실제 출력을 점검하지만 불일치가 보이면 커밋이 실제 근거입니다. + +--- + +## 플랜 및 페이즈 문제 + +### 플랜이 의도와 맞지 않거나 잘못 정렬된 경우 + +계획 전에 `/gsd-discuss-phase N`을 실행합니다. 대부분의 플랜 품질 문제는 `CONTEXT.md`가 방지했을 가정에서 발생합니다: + +```bash +/gsd-discuss-phase 1 +``` + +전체 세션을 시작하지 않고 GSD가 현재 어떤 가정을 하는지 보려면: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +### 실행 후 무언가를 변경해야 하는 경우 + +`/gsd-execute-phase`를 다시 실행하지 마세요. 대상이 되는 수정에는 `/gsd-quick`을 사용합니다: + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +또는 `/gsd-verify-work N`을 사용하여 UAT를 통해 체계적으로 문제를 식별하고 수정합니다. + +### 명령이 "Spawning…"에서 멈춘 것처럼 보이는 경우 + +기다리세요. GSD 서브에이전트는 별도의 컨텍스트 창에서 실행됩니다. 진행 중일 때는 상위 세션에서 보이지 않습니다. 스폰 라인의 활성 상태 메모가 이것이 예상된 동작임을 확인합니다. 연구 및 계획 에이전트는 일상적으로 1~5분이 걸립니다. 검증 에이전트는 대규모 페이즈에서 더 오래 걸릴 수 있습니다. + +세션을 중단하지 마세요. 종료하면 진행 중인 서브에이전트 작업이 버려집니다. + +10분 이상 지난 경우 Claude Code 사이드바에서 에이전트 작업이 여전히 활성으로 표시되는지 확인합니다. + +--- + +## 워크플로 상태 문제 + +### 워크플로가 손상되거나 상태가 일관성이 없어 보이는 경우 + +```bash +/gsd-forensics +``` + +또는 설명과 함께: + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +`/gsd-forensics`는 사후 분석 조사를 실행합니다: git 히스토리 이상 감지, 아티팩트 무결성, STATE.md 일관성, 커밋되지 않은 작업, 고아 워크트리. `.planning/forensics/`에 보고서를 작성하고 권장 복구 단계를 제시합니다. 읽기 전용이며 프로젝트 파일을 절대 수정하지 않습니다. + +### 페이즈 또는 플랜을 롤백해야 하는 경우 + +```bash +/gsd-undo --phase 03 # 페이즈 3의 모든 커밋 롤백 +/gsd-undo --plan 03-02 # 페이즈 3의 플랜 02 커밋 롤백 +/gsd-undo --last 5 # 가장 최근 GSD 커밋 5개에서 대화식으로 선택 +``` + +`/gsd-undo`는 되돌리기 전에 종속 페이즈를 확인하고 항상 확인 게이트를 표시합니다. + +--- + +## 설치 및 업데이트 문제 + +### 설치 후 GSD가 인식되지 않는 경우 + +런타임을 재시작합니다. GSD는 런타임의 명령 디렉터리(예: `~/.claude/commands/gsd/`)에 슬래시 명령을 설치합니다. 대부분의 런타임은 시작 시에만 새 명령을 발견합니다. + +문제가 지속되면 설치를 확인합니다: + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +런타임별 설치 경로와 문제 해결은 [런타임에 설치](install-on-your-runtime.md)를 참조하세요. + +### 업데이트가 로컬 변경 사항을 덮어쓴 경우 + +v1.17 이후 인스톨러는 로컬에서 수정된 파일을 `gsd-local-patches/`에 백업합니다. 변경 사항을 재적용합니다: + +```bash +/gsd-update --reapply +``` + +### npm을 통한 업데이트가 불가능한 경우 + +npm 중단이나 네트워크 제한으로 `npx @opengsd/gsd-core`가 실패하는 경우 npm 접근 없이도 작동하는 단계별 수동 업데이트 절차는 `docs/manual-update.md`를 참조하세요. + +일상적인 업데이트는 [GSD 업데이트](update-gsd.md)를 참조하세요. + +--- + +## 비용 문제 + +### 모델 비용이 너무 높은 경우 + +예산 프로필로 전환합니다: + +```bash +/gsd-config --profile budget +``` + +도메인이 익숙한 경우 설정에서 연구 및 플랜 체크 에이전트를 비활성화합니다: + +```bash +/gsd-settings +``` + +활성화된 MCP 서버도 감사합니다. 활성화된 모든 MCP 서버는 모든 턴에 도구 스키마를 주입합니다. 브라우저 및 플랫폼별 도구는 각각 20k+ 토큰이 소요될 수 있습니다. 현재 페이즈에 필요하지 않은 것은 `.claude/settings.json`에서 비활성화합니다: + +```json +{ + "disabledMcpjsonServers": ["playwright", "mac-tools"] +} +``` + +--- + +## 복구 빠른 참조 + +| 문제 | 해결책 | +|---------|---------| +| 컨텍스트 손실 또는 새 세션 | `/gsd-resume-work` 또는 `/gsd-progress` | +| 다음 단계를 모름 | `/gsd-progress --next` | +| 페이즈가 잘못됨 | `/gsd-undo --phase NN`, 그다음 다시 계획 | +| 무언가 고장남 | `/gsd-debug "description"` (수정 없이 분석만 하려면 `--diagnose` 추가) | +| STATE.md 동기화 오류 | `state validate` 후 `state sync` | +| `.planning/` 무결성 불확실 | `/gsd-health`, 그다음 `/gsd-health --repair` | +| 워크플로 상태 손상 | `/gsd-forensics` | +| 빠른 대상 수정 | `/gsd-quick` | +| 플랜이 비전과 맞지 않음 | `/gsd-discuss-phase N` 후 다시 계획 | +| 비용이 높아짐 | `/gsd-config --profile budget` 및 `/gsd-settings`에서 에이전트 끄기 | +| 업데이트가 로컬 변경 사항 손상 | `/gsd-update --reapply` | +| 세션 요약 원함 | `/gsd-pause-work --report` | +| 병렬 실행 빌드 오류 | GSD 업데이트 또는 `parallelization.enabled: false` 설정 | + +--- + +## 관련 문서 + +- [실패한 실행 디버그](debug-a-failed-execution.md) +- [런타임에 설치](install-on-your-runtime.md) +- [명령 참조](../COMMANDS.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/how-to/run-phases-autonomously.md b/docs/ko-KR/how-to/run-phases-autonomously.md new file mode 100644 index 000000000..3017cd57f --- /dev/null +++ b/docs/ko-KR/how-to/run-phases-autonomously.md @@ -0,0 +1,124 @@ +# 페이즈를 자율적으로 실행하는 방법 + +남은 모든 페이즈 또는 지정된 범위를 무인으로 실행합니다. GSD가 각 단계마다 직접 진행하지 않아도 discuss → plan → execute를 진행합니다. + +자율 실행 중 페이즈 루프가 무엇을 하는지에 대한 배경은 [페이즈 루프](../explanation/the-phase-loop.md)를 참고하세요. + +--- + +## 전제 조건 + +- `.planning/ROADMAP.md`와 `.planning/STATE.md`가 있는 활성 프로젝트 +- 실행하려는 모든 페이즈가 자율 모드로 처리 가능한 상태여야 함 (보류 중 또는 진행 중, 이미 완료되지 않은 것) +- 중요한 설계 결정 사항은 이미 `PROJECT.md`에 있거나 이전 `/gsd-discuss-phase`를 통해 캡처되어 있어야 함 — 자율 모드는 `--interactive`를 사용할 때만 대화형으로 모호한 영역을 표시할 수 있음 + +--- + +## 남은 모든 페이즈 실행 + +```bash +/gsd-autonomous +``` + +GSD는 `ROADMAP.md`를 읽고, 미완료 페이즈를 번호 순으로 발견하며, 각각에 대해 discuss → plan → execute를 실행합니다. 모든 페이즈가 완료되면 자동으로 마일스톤 생애주기를 실행합니다: audit → complete → cleanup. + +--- + +## 특정 페이즈 범위 실행 + +`--from`과 `--to`를 사용하여 실행 범위를 지정합니다. 두 플래그 모두 소수 페이즈 번호를 허용합니다(예: `3.1`). + +```bash +/gsd-autonomous --from 3 # 페이즈 3, 4, 5 … (이미 완료된 1, 2 건너뜀) +/gsd-autonomous --to 5 # 5까지 포함한 페이즈 +/gsd-autonomous --from 3 --to 5 # 정확히 페이즈 3, 4, 5 +``` + +`--to`에 도달하면 마일스톤의 모든 페이즈가 완료되지 않았으므로 생애주기 단계는 건너뜁니다. 완료 배너가 재개 방법을 알려줍니다: + +```text +Resume with: /gsd-autonomous --from 6 +``` + +--- + +## 대화형 논의로 실행 + +기본적으로 자율 모드는 스마트 논의(배치 테이블 제안)를 사용하여 논의 질문에 자동으로 답변합니다. 계획 및 실행을 메인 컨텍스트 밖으로 유지하면서 설계 질문에 직접 답하고 싶다면: + +```bash +/gsd-autonomous --interactive +``` + +대화형 모드에서: +- `/gsd-discuss-phase`가 인라인으로 실행되어 답변을 기다림 +- 기획 및 실행은 백그라운드 에이전트로 실행되므로 현재 페이즈가 구축되는 동안 다음 페이즈를 논의할 수 있음 +- 메인 컨텍스트는 가볍게 유지됨 — 논의 대화만 누적됨 + +--- + +## 여전히 적용되는 안전 게이트 + +자율 모드는 GSD의 품질 파이프라인을 우회하지 않습니다. 각 페이즈는 여전히: + +- 실행 전 플랜 체커를 실행함 +- 실행 후 `VERIFICATION.md`를 읽고 결과에 따라 라우팅함 +- 검증 상태가 `human_needed` 또는 `gaps_found`인 경우 일시 중지하고 어떻게 할지 묻음 +- 단계가 실패하면 중단하고 옵션 제시 (수정 후 재시도, 페이즈 건너뛰기, 또는 중단) + +수동 실행과의 유일한 차이는 `passed` 검증이 자동으로 다음으로 진행된다는 것입니다. 결정이 필요한 경우를 제외하고 페이즈 사이에 프롬프트가 표시되지 않습니다. + +패키지 적법성 게이트도 활성 상태로 유지됩니다. 계획에 의심스러운 패키지에 대한 `checkpoint:human-verify` 태스크가 포함된 경우 실행자가 중단하고 체크포인트를 표시합니다. 자율 모드는 플래그된 패키지를 자동으로 설치하지 않습니다. + +--- + +## 자율 모드를 사용하지 않아야 할 때 + +다음과 같은 경우 `/gsd-autonomous`를 사용하지 마세요: + +- **페이즈에 미결된 설계 결정이 있는 경우.** `/gsd-discuss-phase`를 실행하지 않았고 `PROJECT.md`에 선호 사항이 캡처되지 않은 경우, 스마트 논의가 동의하지 않을 수 있는 자율 선택을 합니다. 먼저 대화형으로 논의하거나 `--interactive`를 사용하세요. + +- **단일 페이즈를 세밀하게 제어해야 하는 경우.** 하나의 페이즈는 `/gsd-execute-phase N`이 단계별 출력을 제공하고 계속하기 전에 반응할 수 있게 해줍니다. 자율 모드는 대규모 무인 실행을 위해 설계되었습니다. + +- **페이즈에 새롭거나 위험도 높은 작업이 있는 경우.** 자율 모드는 차단기가 없는 한 일시 중지를 건너뜁니다. 예상치 못한 상황이 예상되는 페이즈에서는 수동 실행으로 루프에 머무세요. + +- **부분 실행 중인 페이즈가 있는 경우.** 자율 모드는 미완료 페이즈를 처리하지만 부분적으로 실행된 웨이브는 재개하지 않습니다. 이미 진행 중인 페이즈를 완료하려면 `/gsd-execute-phase N`을 사용하세요. + +실행이 도중에 중단된 경우 [실패한 실행 디버그](debug-a-failed-execution.md)를 참고하여 문제를 진단하세요. + +--- + +## 실행 중 진행 상황 확인 + +자율 모드는 각 페이즈 전에 진행 상황 배너를 출력합니다: + +```text + GSD ► AUTONOMOUS ▸ Phase 3/7: Auth Middleware [████░░░░] 28% +``` + +세션 도중 실행 상태를 확인해야 한다면 다른 터미널을 열고 실행하세요: + +```bash +/gsd-progress +``` + +--- + +## 중단 후 재개 + +자율 모드가 중단된 경우(차단기 프롬프트에서 "자율 모드 중단"을 선택했거나 세션이 중단된 경우), 중단된 곳에서 재개하세요: + +```bash +/gsd-autonomous --from 4 # 4를 첫 번째 미완료 페이즈 번호로 교체 +``` + +GSD는 이미 완료된 페이즈를 자동으로 건너뛰므로 실행이 어디서 중단되었는지 확실하지 않은 경우 이전 페이즈 번호에서 재실행해도 안전합니다. + +--- + +## 관련 문서 + +- [페이즈 실행](execute-a-phase.md) +- [실패한 실행 디버그](debug-a-failed-execution.md) +- [명령어 참조](../COMMANDS.md) +- [문서 목차](../README.md) diff --git a/docs/ko-KR/how-to/set-up-cross-ai-review.md b/docs/ko-KR/how-to/set-up-cross-ai-review.md new file mode 100644 index 000000000..41cee2298 --- /dev/null +++ b/docs/ko-KR/how-to/set-up-cross-ai-review.md @@ -0,0 +1,159 @@ +# 크로스 AI 리뷰를 설정하는 방법 + +**목표:** 계획 리뷰에 참여할 AI 리뷰어를 설정하고, 기획된 페이즈 리뷰를 실행하고, 피드백을 활용하여 HIGH 심각도 우려 사항이 없는 계획으로 수렴합니다. + +**전제 조건:** 페이즈가 기획되어 있어야 합니다(`{phase}-PLAN.md` 파일이 `.planning/phases/`에 존재). 최소 하나의 외부 AI CLI가 설치되어 인증되어 있어야 합니다. + +--- + +## 어떤 리뷰어를 사용할지 결정 + +GSD Core는 Gemini CLI, Claude(별도 세션), Codex CLI, CodeRabbit, OpenCode, Qwen Code, Cursor, Antigravity CLI, Ollama, LM Studio, llama.cpp의 조합으로 리뷰 요청을 라우팅할 수 있습니다. + +각 리뷰어는 `PLAN.md` 파일에 대해 동일한 구조화된 프롬프트를 독립적으로 실행합니다. 서로 다른 모델은 서로 다른 맹점을 가지고 있으므로 멀티 리뷰어 합의가 단일 리뷰어보다 더 많은 문제를 발견합니다. + +**외부 CLI가 아직 설치되지 않은 경우**, 최소 하나를 설치하세요: + +```bash +# Gemini CLI (Google 자격 증명으로 무료) +npm install -g @google/gemini-cli + +# Antigravity CLI (Google 자격 증명으로 무료) +curl -fsSL https://antigravity.google/cli/install.sh | bash + +# Codex CLI +npm install -g @openai/codex +``` + +--- + +## 기본 리뷰어 설정 (선택 사항) + +기본적으로 `/gsd-review`는 감지된 모든 CLI를 실행합니다. 프로젝트 기본값으로 하위 집합을 고정하려면: + +```bash +/gsd-config --integrations +``` + +통합 마법사는 API 키, 코드 리뷰 CLI 라우팅, `review.default_reviewers` 목록을 다룹니다. 목록을 플래그 없는 기본값으로 사용하려는 리뷰어로 설정하세요. 예: `["gemini","codex"]`. + +또는 `gsd-tools`로 직접 설정하세요: + +```bash +gsd config-set review.default_reviewers '["gemini","codex"]' +``` + +전체 통합 설정 스키마(API 키, 리뷰어별 모델 재정의, 로컬 서버 호스트 주소)에 대해서는 [설정](../CONFIGURATION.md)을 참고하세요. + +--- + +## 리뷰 실행 + +### 표준 리뷰 (설정된 기본값 또는 감지된 모든 CLI 사용) + +```bash +/gsd-review --phase 3 +``` + +GSD는 각 리뷰어를 순서대로 호출하고 구조화된 피드백(요약, 강점, HIGH/MEDIUM/LOW 우려 사항, 제안, 위험 평가)을 수집하여 `.planning/phases/03-.../03-REVIEWS.md`에 결합된 출력을 작성합니다. + +### 일회성 실행을 위한 단일 리뷰어 선택 + +```bash +/gsd-review --phase 3 --gemini +/gsd-review --phase 3 --codex +/gsd-review --phase 3 --cursor +``` + +명시적 플래그는 해당 실행에 대해 `--all` 기본값과 `review.default_reviewers` 모두를 재정의합니다. + +### 모든 사용 가능한 리뷰어를 병렬로 실행 + +```bash +/gsd-review --phase 3 --all +``` + +`--all`은 항상 설정을 재정의하고 Ollama, LM Studio, llama.cpp를 포함하여 설정된 모든 로컬 모델 서버를 포함한 전체 감지 집합을 실행합니다. + +### 로컬 모델 서버 리뷰어 + +Ollama 또는 LM Studio를 로컬에서 실행하는 경우 서버에 접근할 수 있을 때 `--all`에 자동으로 포함됩니다. 명시적으로 지정할 수도 있습니다: + +```bash +/gsd-review --phase 3 --ollama +/gsd-review --phase 3 --lm-studio +``` + +기본값(`localhost:11434` / `localhost:1234`)이 적용되지 않는 경우 `/gsd-config --integrations`를 통해 `review.*` 키 아래의 호스트 주소와 모델 선택을 설정하세요. + +--- + +## 리뷰 출력 읽기 + +`{padded_phase}-REVIEWS.md` 파일에는 다음이 포함됩니다: + +- 심각도 분류 우려 사항이 있는 각 리뷰어의 개별 리뷰 +- 두 명 이상의 리뷰어가 제기한 우려 사항을 종합한 **합의 요약** 섹션 — 최우선 신호를 보려면 여기서 시작하세요 +- 리뷰어들이 의견이 달랐던 영역에 대한 **상이한 견해** 섹션 + +--- + +## 피드백을 계획에 반영 + +출력을 검토한 후 피드백을 반영하여 재기획하세요: + +```bash +/gsd-plan-phase 3 --reviews +``` + +플래너는 `REVIEWS.md`를 읽고 우려 사항을 해소하도록 저장 전에 계획을 조정합니다. + +--- + +## plan–review–replan 루프 자동화 + +모든 HIGH 심각도 우려 사항이 해결될 때까지 반복하려는 페이즈에는 수렴 루프를 사용하세요: + +```bash +/gsd-plan-review-convergence 3 +``` + +`plan-phase → review → replan → re-review` 사이클을 기본 최대 3회 실행합니다. HIGH 우려 사항 수가 0에 도달하면 루프를 종료합니다. + +### 특정 리뷰어로 수렴 + +```bash +/gsd-plan-review-convergence 3 --codex +/gsd-plan-review-convergence 3 --gemini +``` + +### 모든 리뷰어로 더 높은 사이클 상한으로 수렴 + +```bash +/gsd-plan-review-convergence 3 --all --max-cycles 5 +``` + +**정체 감지:** HIGH 우려 사항 수가 사이클 전반에 걸쳐 감소하지 않으면 GSD가 경고합니다. 사이클 상한에 도달했지만 HIGH 우려 사항이 남아 있는 경우, 진행하거나 수동으로 검토할지를 묻는 에스컬레이션 게이트가 표시됩니다. + +--- + +## 조건부: 어떤 리뷰어를 선택할지 + +| 상황 | 권장 방법 | +|-----------|---------------------| +| Gemini CLI가 이미 설치되어 있는 경우 | `--gemini`는 항상 좋은 시작 리뷰어 | +| 무료 멀티 리뷰어 커버리지를 원하는 경우 | `--gemini` + `--agy` (둘 다 Google 자격 증명 사용) | +| OpenAI 중심 프로젝트인 경우 | OpenAI 모델 관점을 위해 `--codex` 추가 | +| GitHub Copilot 모델을 원하는 경우 | `--opencode` 추가 | +| API 비용을 완전히 피하려는 경우 | 로컬 모델로 Ollama를 설정하고 `--ollama` 사용 | +| 릴리스 전 최대 커버리지가 필요한 경우 | `/gsd-plan-review-convergence N --all` | +| 빠르게 반복하며 빠른 피드백을 원하는 경우 | CLI 하나 선택: `/gsd-review --phase N --gemini` | + +--- + +## 관련 문서 + +- [검증 및 배포](verify-and-ship.md) +- [설정](../CONFIGURATION.md) +- [명령어 참조](../COMMANDS.md) +- [문서 목차](../README.md) diff --git a/docs/ko-KR/how-to/spike-and-sketch.md b/docs/ko-KR/how-to/spike-and-sketch.md new file mode 100644 index 000000000..0ebd49a1a --- /dev/null +++ b/docs/ko-KR/how-to/spike-and-sketch.md @@ -0,0 +1,160 @@ +# 확정 전에 스파이크와 스케치로 검증하는 방법 + +**목표:** 특정 접근 방식을 페이즈에 확정하기 전에 집중된 실현 가능성 실험(스파이크)과 일회용 HTML 목업을 통한 시각적 방향 탐색(스케치)으로 구현 위험을 줄입니다. + +**사전 조건:** 없음. `/gsd-spike`와 `/gsd-sketch`는 자체 저장 디렉터리를 생성하며 초기화된 GSD 프로젝트가 필요하지 않습니다. + +--- + +## 결정: 스파이크, 스케치, 또는 둘 다 + +| 답하고 싶은 질문… | 사용할 도구 | +|---|---| +| "이 기술적 접근 방식이 실제로 작동할까?" | `/gsd-spike` | +| "이 레이아웃 / 인터랙션 / 시각적 처리가 맞는 느낌인가?" | `/gsd-sketch` | +| "올바른 기술적 접근 방식은 무엇이고, 어떻게 보여야 할까?" | 둘 다, 순서대로: 먼저 스파이크, 그다음 스케치 | + +스파이크는 실행 가능한 코드와 VALIDATED / INVALIDATED / PARTIAL 판정으로 이진 실현 가능성 질문에 답합니다. 스케치는 2~3개의 브라우저에서 비교 가능한 HTML 변형으로 시각적 질문에 답합니다. 두 가지는 상호 보완적입니다 — 스파이크는 접근 방식이 구현 가능함을 증명하고, 스케치는 디자인이 구현할 가치가 있음을 증명합니다. + +--- + +## 스파이크 실행 + +### 대화식 입력(기본값) + +```bash +/gsd-spike +``` + +GSD는 기술적 질문에 대해 물어보고, 이를 **Given / When / Then** 가설로 구성된 2~5개의 독립적인 실험으로 분해하며, 빌드 전에 확인을 요청합니다. + +### 아이디어를 직접 제공 + +```bash +/gsd-spike "can we stream LLM tokens through SSE" +``` + +### 입력 건너뛰고 즉시 실행 + +```bash +/gsd-spike --quick "websocket vs SSE latency" +``` + +`--quick`은 분해 대화를 건너뛰고 인자를 단일 스파이크 질문으로 처리합니다. 질문이 이미 충분히 구체적이어서 세분화 없이 실행할 수 있을 때 사용합니다. + +### 각 실험이 생성하는 결과물 + +`.planning/spikes/NNN-descriptive-name/`의 각 스파이크에는 다음이 포함됩니다: + +- 작동하는 코드(의사 코드 아님) +- 코드 작성 전에 작성된 **Given / When / Then** 가설 +- 엣지 케이스, 방향 전환, 놀라운 발견을 문서화한 조사 추적 +- 증거와 함께 **VALIDATED**, **INVALIDATED**, 또는 **PARTIAL** 판정 +- 프론트매터, 실행 방법 지침, 결과가 포함된 `README.md` + +모든 스파이크는 `.planning/spikes/MANIFEST.md`에 인덱싱됩니다. + +### 결과 패키징 + +신호가 확보되면 결과를 프로젝트 로컬 스킬로 패키징하여 향후 세션에서 자동으로 로드되도록 합니다: + +```bash +/gsd-spike --wrap-up +``` + +이 명령은 `.claude/skills/spike-findings-[project]/`를 작성합니다. 스킬은 자동으로 발견되어 이후의 `/gsd-sketch`, `/gsd-ui-phase`, `/gsd-plan-phase` 실행에서 로드됩니다 — 명시적으로 참조할 필요가 없습니다. + +--- + +## 스케치 실행 + +### 분위기 입력(기본값) + +```bash +/gsd-sketch +``` + +GSD는 코드 작성 전에 느낌, 시각적 참조, 핵심 사용자 작업을 탐색하는 짧은 대화를 시작합니다. 한 번에 하나의 질문을 하며 진행 승인을 받을 때만 빌드를 시작합니다. + +### 디자인 방향을 직접 제공 + +```bash +/gsd-sketch "dashboard layout" +``` + +### 분위기 입력 건너뛰고 즉시 실행 + +```bash +/gsd-sketch --quick "sidebar navigation" +``` + +`--quick`은 입력 대화를 완전히 건너뛰고 인자를 디자인 방향으로 사용합니다. + +### 비 Claude 런타임(Codex, Gemini CLI 등) + +```bash +/gsd-sketch --text "onboarding flow" +``` + +`--text`는 대화식 프롬프트를 일반 텍스트 번호 목록으로 대체합니다. 런타임이 `AskUserQuestion`을 지원하지 않을 때 사용합니다. + +### 각 스케치가 생성하는 결과물 + +`.planning/sketches/NNN-descriptive-name/`의 각 스케치에는 다음이 포함됩니다: + +- 탭 탐색으로 접근 가능한 2~3개의 변형이 있는 `index.html` — 빌드 단계 없이 브라우저에서 직접 열기 +- 기능적인 인터랙티브 요소(호버, 클릭, 전환) +- 이전 스파이크 결과의 필드 이름과 데이터 형태를 사용하는 실제에 가까운 콘텐츠 +- `.planning/sketches/themes/default.css`의 공유 CSS 변수 +- 디자인 질문, 변형, 살펴볼 사항이 포함된 `README.md` + +모든 스케치는 `.planning/sketches/MANIFEST.md`에 인덱싱됩니다. + +### 우승 디자인 결정 패키징 + +변형을 선택한 후 시각적 결정을 프로젝트 로컬 스킬로 캡처합니다: + +```bash +/gsd-sketch --wrap-up +``` + +이 명령은 `.claude/skills/sketch-findings-[project]/`를 작성합니다. 스킬은 `/gsd-ui-phase`에 의해 자동으로 가져옵니다 — 사전 검증된 결정(레이아웃, 색상 팔레트, 타이포그래피, 간격)은 확정된 것으로 처리되어 다시 묻지 않습니다. + +--- + +## 통합 흐름: 스파이크 → 스케치 → 페이즈 + +기술적 실현 가능성과 시각적 방향 모두 불확실할 때 권장하는 순서: + +```bash +/gsd-spike "SSE vs WebSocket for real-time feed" +/gsd-spike --wrap-up + +/gsd-sketch "real-time feed UI" +/gsd-sketch --wrap-up + +/gsd-discuss-phase N +/gsd-plan-phase N +``` + +스파이크 결과가 스케치에 정보를 제공합니다(실제 데이터 형태, 실제 인터랙션 상태, 현실적인 제약). 두 wrap-up 모두 플래너와 UI 연구자가 자동으로 로드하는 결정을 유지하므로 `/gsd-discuss-phase`나 `/gsd-ui-phase` 중에 선택 사항을 다시 설명할 필요가 없습니다. + +--- + +## 스파이크 또는 스케치가 페이즈에 반영되는 방식 + +스파이크와 스케치 아티팩트는 수동으로 참조할 필요가 없습니다. GSD는 두 시점에서 자동으로 읽습니다: + +1. **`/gsd-sketch`** — 목업 빌드 전에 `.claude/skills/spike-findings-*/`를 로드하여 변형이 증명된 제약(스트리밍 상태, 실제 필드 이름 등)을 반영하도록 함 +2. **`/gsd-ui-phase N`** — UI 디자인 계약을 생성하기 전에 `.claude/skills/sketch-findings-*/`를 로드. 사전 검증된 디자인 결정은 확정된 것으로 처리됨 + +플래너도 `spike-findings-*` 스킬이 있을 때 스파이크 결과를 읽으므로 검증된 기술 선택(어떤 라이브러리, 어떤 프로토콜, 어떤 데이터 형식)이 반복적인 설명 없이 작업 플랜으로 직접 반영됩니다. + +--- + +## 관련 문서 + +- [UI 페이즈 디자인](design-a-ui-phase.md) +- [페이즈 계획](plan-a-phase.md) +- [명령 참조](../COMMANDS.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/how-to/update-gsd.md b/docs/ko-KR/how-to/update-gsd.md new file mode 100644 index 000000000..a15924c22 --- /dev/null +++ b/docs/ko-KR/how-to/update-gsd.md @@ -0,0 +1,120 @@ +# GSD Core 업데이트 방법 + +기존 GSD Core 설치를 최신 릴리즈로 업데이트하고, 확정 전에 변경 로그를 미리보고, 업데이트가 덮어쓸 로컬 커스터마이징을 복구합니다. + +**필요한 것:** GSD가 설치된 것과 동일한 런타임. 업데이트 명령은 내부적으로 인스톨러를 다시 실행하므로 Node.js와 npx가 필요합니다(원래 설치와 동일한 요구 사항). + +--- + +## 표준 업데이트 경로 + +AI 런타임 내에서 실행합니다: + +```bash +/gsd-update +``` + +GSD가 수행하는 작업: + +1. 설치된 버전과 설치 범위(전역 또는 로컬)를 감지합니다. +2. npm에서 `@opengsd/gsd-core`의 최신 릴리즈를 확인합니다. +3. 변경 로그를 가져와 설치된 버전과 최신 버전 사이의 변경 사항을 표시합니다. +4. 아무것도 건드리기 전에 확인을 요청합니다. +5. GSD 관리 디렉터리 내에서 발견된 사용자 추가 파일을 `gsd-user-files-backup/`에 백업합니다. +6. 인스톨러를 실행합니다(`npx @opengsd/gsd-core@latest -- --`). +7. 업데이트 확인 캐시를 초기화하여 상태 표시줄 인디케이터가 재설정됩니다. +8. 로컬에서 수정된 GSD 파일이 `gsd-local-patches/`에 백업되었는지 보고합니다. + +새로운 명령과 에이전트를 적용하려면 업데이트 후 런타임을 재시작하세요. + +--- + +## 플래그 + +| 플래그 | 수행하는 작업 | +|------|--------------| +| `--sync` | 업데이트 후 GSD 레지스트리에서 스킬 동기화 | +| `--reapply` | 업데이트 후 `gsd-local-patches/`에서 로컬에서 수정된 GSD 파일 다시 병합 | + +```bash +/gsd-update --sync # 업데이트 및 스킬 동기화 +/gsd-update --reapply # 업데이트 및 로컬 패치 재적용 +``` + +--- + +## 업데이트 전 변경 로그 검토 + +`/gsd-update`는 확인을 요청하기 *전에* 항상 설치된 버전과 최신 버전 사이의 변경 로그 diff를 표시합니다. GitHub를 별도로 방문할 필요가 없습니다. 출력은 다음과 같습니다: + +```text +## GSD Update Available + +Installed: 1.39.0 +Latest: 1.41.0 + +### What's New +──────────────────────────────────────────────────────────── +[changelog entries for 1.40.0 and 1.41.0] +──────────────────────────────────────────────────────────── + +Proceed with update? [Yes, update now / No, cancel] +``` + +변경 로그를 가져올 수 없는 경우(네트워크 접근 없음, npm 중단), 업데이트는 여전히 확인 후 진행됩니다 — 변경 로그 가용성에 의존하지 않습니다. + +--- + +## 로컬 커스터마이징 복구 + +### GSD 관리 디렉터리에 추가한 파일 + +GSD가 소유하는 디렉터리 내에 커스텀 파일을 배치한 경우(예: `gsd-` 접두사가 붙은 커스텀 에이전트 또는 `commands/gsd/`에 있는 추가 파일), 인스톨러가 이를 감지하고 해당 디렉터리를 지우기 전에 `gsd-user-files-backup/`에 복사합니다. 업데이트 후 해당 백업 위치에서 수동으로 복원합니다. + +GSD 관리 디렉터리 외부에 배치한 파일 — `gsd-` 접두사 없는 커스텀 에이전트, `commands/gsd/` 외부의 커스텀 명령, `CLAUDE.md` 파일, 커스텀 훅 — 은 인스톨러가 절대 건드리지 않습니다. + +### 직접 수정한 GSD 파일 + +GSD가 설치한 파일을 편집한 경우(예: 에이전트의 시스템 프롬프트 수정), 인스톨러는 매니페스트에 대한 해시 비교를 통해 수정을 감지하고 파일을 `gsd-local-patches/`에 백업한 후 새 버전으로 교체합니다. 업데이트 후: + +```bash +/gsd-update --reapply +``` + +이 명령은 새로 설치된 파일에 `gsd-local-patches/`의 수정 사항을 병합합니다. + +이전 업데이트 후 `--reapply`를 건너뛰었고 지금 패치를 적용하고 싶다면: + +```bash +/gsd-update --reapply +``` + +이미 최신 버전이면 GSD는 설치 단계를 건너뛰고 바로 패치 재적용으로 진행합니다 — 새 다운로드를 트리거하지 않고도 `--reapply`를 단독으로 실행하는 것이 안전합니다. + +--- + +## npm을 사용할 수 없을 때 + +npm 중단, 네트워크 제한, 또는 소스 저장소에서 작업 중이어서 `npx @opengsd/gsd-core@latest`가 실패하는 경우 [docs/manual-update.md](../../manual-update.md)의 수동 업데이트 절차를 사용하세요. 해당 문서는 최신 커밋 풀링, hooks dist 빌드, `node bin/install.js` 직접 실행을 다룹니다. + +--- + +## 이미 최신 버전인 경우 + +`/gsd-update`는 확인 메시지와 함께 조기 종료합니다 — 다운로드 없음, 설치 없음, 재시작 불필요. + +--- + +## 인스톨러 마이그레이션 + +각 GSD 릴리즈에는 관리 파일을 이름 변경, 이동, 또는 폐기하는 인스톨러 마이그레이션이 포함될 수 있습니다. 마이그레이션 레이어는 새 패키지 페이로드가 작성되기 전에 자동으로 실행됩니다. 수정한 파일에 영향을 주는 마이그레이션은 자동으로 처리되지 않고 확인을 요청합니다. 전체 설계와 런타임 구성 계약 레지스트리는 [docs/installer-migrations.md](../../installer-migrations.md)를 참조하세요. + +--- + +## 관련 문서 + +- [런타임에 설치](install-on-your-runtime.md) +- [명령 참조](../COMMANDS.md) +- [수동 업데이트](../../manual-update.md) +- [인스톨러 마이그레이션](../../installer-migrations.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/how-to/verify-and-ship.md b/docs/ko-KR/how-to/verify-and-ship.md new file mode 100644 index 000000000..fddaff542 --- /dev/null +++ b/docs/ko-KR/how-to/verify-and-ship.md @@ -0,0 +1,124 @@ +# 페이즈를 검증하고 배포하는 방법 + +**목표:** 실행된 작업에 대해 사용자 인수 테스트를 진행하고, 실패를 진단하여 수정하고, 자동 생성된 본문으로 풀 리퀘스트를 엽니다. + +**전제 조건:** 페이즈가 실행되고 `SUMMARY.md` 파일이 존재해야 합니다. 실행이 아직 완료되지 않았다면 [페이즈 실행](execute-a-phase.md)을 참고하세요. + +--- + +## 사용자 인수 테스트 실행 + +```bash +/gsd-verify-work 1 +``` + +GSD는 페이즈의 `SUMMARY.md` 파일을 읽고, 사용자가 관찰 가능한 결과물을 추출하여 하나씩 안내합니다. 각 체크포인트에서 *예상되는 것*을 제시하고 실제와 일치하는지 묻습니다. + +- `yes` / `y` / 빈 값 → 통과, 다음 테스트로 이동 +- 그 외 → 문제로 기록됨, 설명에서 심각도 추론 + +심각도를 직접 분류할 필요가 없습니다. GSD가 표현에서 추론합니다("충돌" → 차단, "작동 안 함" → 주요, "이상해 보임" → 외관상). + +진행 상황은 `.planning/phases/01-/01-UAT.md`에 기록되며 `/clear`에서도 유지됩니다. 세션이 중단된 경우 `/gsd-verify-work 1`을 다시 실행하면 GSD가 마지막 체크포인트에서 재개할 것을 제안합니다. + +--- + +## 실패 발견 시: 자동 진단 및 수정 기획 + +테스트에서 문제가 발견되면 GSD는 자동으로 진행합니다: + +1. **근본 원인 진단** — 문제당 하나씩 병렬 디버그 에이전트를 실행하고 근본 원인으로 `UAT.md`를 업데이트합니다. +2. **갭 해소 기획** — 갭 해소 모드에서 `gsd-planner`를 실행하며, 진단이 포함된 `UAT.md`를 읽고 새 `PLAN.md` 파일을 작성합니다. +3. **수정 계획 검증** — `gsd-plan-checker`를 실행하여 계획이 실행 가능한지 확인합니다. 문제가 발견되면 플래너와 체커가 최대 3회 반복합니다. +4. **다음 단계 제시** — 계획이 체커를 통과하면: + +``` +Plans verified and ready for execution. + +`/clear` then `/gsd-execute-phase 1 --gaps-only` +``` + +제안된 명령을 실행하여 수정을 적용한 후, `/gsd-verify-work 1`을 다시 실행하여 모든 것이 통과하는지 확인하세요. + +--- + +## 모든 테스트 통과 시: 페이즈 배포 + +모든 UAT 테스트가 통과하면(또는 첫 번째 실행에서 문제가 발견되지 않으면) 페이즈는 `ROADMAP.md`와 `STATE.md`에서 자동으로 완료로 표시됩니다. + +```bash +/gsd-ship 1 +``` + +GSD는 사전 점검(검증 상태, 깨끗한 작업 트리, 브랜치, 원격 저장소, `gh` CLI 인증)을 실행하고 브랜치를 푸시한 후 PR을 생성합니다: + +```bash +/gsd-ship 1 # 검토 준비된 PR +/gsd-ship 1 --draft # 초안 PR — 더 많은 페이즈가 뒤따를 때 유용 +``` + +PR 본문은 기획 산출물에서 자동으로 조합됩니다: + +- `ROADMAP.md`의 페이즈 목표 +- `SUMMARY.md` 파일 및 핵심 파일의 계획별 요약 +- 처리된 요구 사항 (REQ-ID) +- `VERIFICATION.md`의 검증 상태 +- `STATE.md`의 핵심 결정 사항 + +본문을 수동으로 작성할 필요가 없습니다. + +--- + +## 선택 사항: 배포 전후 코드 리뷰 + +`/gsd-ship`은 자동으로 코드 리뷰를 실행하지 않지만, 언제든지 추가할 수 있습니다: + +**검증 전** (UAT 전에 문제 발견): + +```bash +/gsd-code-review 1 # 표준 리뷰 +/gsd-code-review 1 --fix # 리뷰 후 Critical + Warning 발견 사항 자동 수정 +``` + +**PR 오픈 후** (병합 전 품질 게이팅): + +```bash +/gsd-code-review 1 --depth=deep # 임포트 그래프를 포함한 파일 간 분석 +``` + +주기 초반의 계획 리뷰를 위해 Gemini, Codex 또는 다른 리뷰어를 설정하려면 [크로스 AI 리뷰 설정](set-up-cross-ai-review.md)을 참고하세요. + +--- + +## 선택 사항: 깔끔한 PR 브랜치 생성 + +브랜치에 리뷰어에게 보여주고 싶지 않은 `.planning/` 커밋이 포함된 경우: + +```bash +/gsd-pr-branch # main에 대해 필터링 +/gsd-pr-branch develop # develop에 대해 필터링 +``` + +`/gsd-pr-branch`는 코드 변경 사항만 포함된 새 브랜치를 생성합니다. 기획 산출물 커밋은 제외됩니다. 팀의 리뷰 정책에서 기획 노이즈를 제외하는 경우 `/gsd-ship` 전에 실행하세요. + +--- + +## 마일스톤 종료 + +이것이 마일스톤의 마지막 페이즈였다면 마일스톤 감사를 실행하고 보관하세요: + +```bash +/gsd-audit-milestone # 모든 요구 사항이 배포되었는지 확인 +/gsd-complete-milestone # 보관, git 태그 생성 +``` + +`/gsd-complete-milestone`은 PR이 병합된 후의 자연스러운 다음 단계입니다. 검증과 배포가 전체 프로젝트 생애주기에 어떻게 적합한지는 [페이즈 루프](../explanation/the-phase-loop.md)를 참고하세요. + +--- + +## 관련 문서 + +- [페이즈 실행](execute-a-phase.md) +- [크로스 AI 리뷰 설정](set-up-cross-ai-review.md) +- [페이즈 루프](../explanation/the-phase-loop.md) +- [명령어 참조](../COMMANDS.md) diff --git a/docs/ko-KR/how-to/work-in-parallel-with-workstreams.md b/docs/ko-KR/how-to/work-in-parallel-with-workstreams.md new file mode 100644 index 000000000..9a8d8fefb --- /dev/null +++ b/docs/ko-KR/how-to/work-in-parallel-with-workstreams.md @@ -0,0 +1,157 @@ +# 워크스트림으로 여러 영역을 병렬로 작업하는 방법 + +**목표:** 백엔드 API, 프론트엔드 대시보드, 인프라 등 서로 다른 마일스톤 영역에서 한 영역의 계획 상태가 다른 영역으로 유입되지 않도록 동시 작업을 수행합니다. + +**사전 조건:** 활성화된 GSD Core 프로젝트(`.planning/ROADMAP.md` 존재). 없는 경우 먼저 `/gsd-new-project`를 실행하세요. + +--- + +## 워크스트림이란 + +워크스트림은 단일 코드베이스 내의 독립된 계획 컨텍스트입니다. 각 워크스트림은 독립적인 `STATE.md`, `ROADMAP.md`, `REQUIREMENTS.md`, `phases/` 디렉터리를 포함하는 `.planning/workstreams//` 서브트리를 가집니다. 코드베이스 자체(소스 코드, git 히스토리, 브랜치)는 모든 워크스트림이 공유합니다. + +``` +.planning/ +├── PROJECT.md ← 공유 +├── config.json ← 공유 +├── codebase/ ← 공유 +└── workstreams/ + ├── backend-api/ + │ ├── STATE.md + │ ├── ROADMAP.md + │ ├── REQUIREMENTS.md + │ └── phases/ + └── frontend-dash/ + ├── STATE.md + ├── ROADMAP.md + ├── REQUIREMENTS.md + └── phases/ +``` + +워크스트림이 활성화되면 모든 GSD 명령인 `/gsd-progress`, `/gsd-discuss-phase`, `/gsd-plan-phase`, `/gsd-execute-phase`가 해당 워크스트림의 디렉터리에서 읽고 씁니다. 워크스트림을 전환하면 소스 트리를 건드리지 않고 모든 명령이 다른 서브트리로 리디렉션됩니다. + +--- + +## 워크스트림 생성 + +```bash +/gsd-workstreams create backend-api +``` + +GSD는 `.planning/workstreams/backend-api/` 아래에 워크스트림 디렉터리를 생성하고 기본 `STATE.md`와 `ROADMAP.md`를 시드합니다. 워크스트림은 자동으로 활성화되지 않으며 명시적으로 전환해야 합니다. + +--- + +## 워크스트림 목록 보기 + +```bash +/gsd-workstreams list +``` + +모든 워크스트림과 현재 세션에서 활성화된 워크스트림을 표시합니다. + +--- + +## 워크스트림으로 전환 + +```bash +/gsd-workstreams switch backend-api +``` + +이 시점부터 모든 GSD 워크플로 명령은 `backend-api` 컨텍스트에서 동작합니다. 전환은 세션 범위로 적용됩니다. 같은 저장소에서 여러 Claude Code 터미널이 열려 있는 경우, 각 세션은 서로 간섭 없이 서로 다른 활성 워크스트림을 유지할 수 있습니다. + +전환 후 일반 페이즈 워크플로를 진행합니다: + +```bash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +/gsd-execute-phase 1 +/gsd-verify-work 1 +``` + +다른 영역에서 작업하려면 두 번째 터미널에서 워크스트림을 전환합니다: + +```bash +/gsd-workstreams switch frontend-dash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +``` + +--- + +## 모든 워크스트림의 진행 상황 확인 + +```bash +/gsd-workstreams progress +``` + +워크스트림 간 전환 없이 모든 워크스트림의 페이즈 상태, 현재 위치, 미완료 작업을 포함한 교차 워크스트림 요약을 출력합니다. + +단일 워크스트림의 상세 상태 확인: + +```bash +/gsd-workstreams status backend-api +``` + +--- + +## 워크스트림에서 작업 재개 + +컨텍스트 초기화나 새 세션 이후 위치를 복원합니다: + +```bash +/gsd-workstreams resume backend-api +``` + +이 명령은 워크스트림을 활성화하고 마지막으로 알려진 위치를 복원합니다. 전환 후 `/gsd-resume-work`를 실행하는 것과 동일합니다. + +--- + +## 완료된 워크스트림 보관 + +워크스트림의 마일스톤 작업이 완료되면: + +```bash +/gsd-workstreams complete backend-api +``` + +GSD는 워크스트림을 보관 상태로 표시하고 활성 목록에서 제거합니다. 계획 아티팩트는 감사 목적으로 `.planning/workstreams/backend-api/`에 보존됩니다. + +--- + +## 세션 컨텍스트 전환 없이 특정 워크스트림에 명령 실행 + +세션의 활성 컨텍스트를 변경하지 않고 특정 워크스트림에 대해 하나의 명령을 실행해야 하는 경우 `--ws` 플래그를 사용합니다: + +```bash +/gsd-progress --ws frontend-dash +/gsd-plan-phase 2 --ws backend-api +``` + +`--ws`는 해석 우선순위에서 가장 높은 우선권을 가지며 세션 범위의 포인터를 변경하지 않습니다. + +--- + +## 워크스트림과 워크스페이스 중 선택 기준 + +워크스트림을 선택할 때: + +- 모든 작업이 **동일한 저장소**에 있고 같은 git 히스토리를 공유할 때 +- 서로의 `STATE.md`를 덮어쓰지 않고 서로 다른 관심 영역(API, UI, 인프라)을 **동시에** 계획하거나 논의하고자 할 때 +- 워크스트림 생성 시 브랜치를 별도로 만들 필요가 없을 때(각 워크스트림의 실행 내에서 일반적으로 브랜칭 가능) +- 전체 git 워크트리 생성 오버헤드가 필요한 격리에 비해 과하다고 느껴질 때 + +[워크스페이스](isolate-work-with-workspaces.md)를 선택할 때: + +- **여러 저장소**(예: `hr-ui`와 `ZeymoAPI`)에서 작업할 때 +- 기능별로 **별도의 git 워크트리** 또는 클론이 필요할 때 — 완전히 독립된 브랜치, 잠금 파일, 빌드 아티팩트 +- 메인 저장소의 `.planning/` 하위 디렉터리가 아닌 완전히 별도의 `.planning/` 루트로 `/gsd-new-project`를 독립적으로 실행하고자 할 때 + +--- + +## 관련 문서 + +- [워크스페이스로 작업 격리](isolate-work-with-workspaces.md) +- [페이즈 루프](../explanation/the-phase-loop.md) +- [명령 참조](../COMMANDS.md) +- [문서 인덱스](../README.md) diff --git a/docs/ko-KR/issue-driven-orchestration.md b/docs/ko-KR/issue-driven-orchestration.md new file mode 100644 index 000000000..52b91080c --- /dev/null +++ b/docs/ko-KR/issue-driven-orchestration.md @@ -0,0 +1,96 @@ +# GSD를 사용한 이슈 주도 오케스트레이션 + +**상태:** 안정적인 워크플로우 가이드 +**대상:** GitHub Issues, Linear, Jira 또는 유사한 이슈 트래커에서 작업을 관리하며 +GSD의 기존 기본 도구들을 통해 AI 보조 구현을 이끌고자 하는 개발자. + +## 이 가이드란 무엇인가 + +GSD가 이미 제공하는 명령어들을 이슈 트래커 → 워크스페이스 → 계획/실행 → 검증/리뷰 → PR 루프로 조합하는 레시피이다. 문서화만을 위한 것이다. 새로운 명령어도, 데몬도, 트래커 통합도 없다 — 아래 참조된 모든 명령어들은 GSD에 이미 존재한다. + +형태는 OpenAI의 오픈 소스 [Symphony 오케스트레이션 레퍼런스](https://openai.com/index/open-source-codex-orchestration-symphony/)([저장소](https://github.com/openai/symphony))에서 영감을 받았다. GSD는 Symphony를 벤더링하거나 래핑하지 않는다. 오케스트레이션 *개념들*이 GSD가 이미 노출하는 기본 도구들에 깔끔하게 매핑된다; 이 가이드는 글루 코드를 작성하거나 GSD의 안전 게이트를 우회하지 않고도 패턴을 채택할 수 있도록 매핑을 명확하게 설명한다. + +## 존재 이유 + +GSD에는 이슈 주도 AI 개발을 위한 구성 요소들이 있다 — +`/gsd-workspace --new`, `/gsd-manager`, `/gsd-autonomous`, `/gsd-verify-work`, +`/gsd-review`, `/gsd-ship`, 그리고 `STATE.md`와 단계 결과물 스위트 +— 하지만 사용자 정의 오케스트레이션 스크립트를 작성하지 않고 단일 트래커 이슈에서 이것들을 구동하는 방법을 안내하는 가이드가 없다. 그 가이드 없이는 실패 모드들이 발생한다: + +- 과소 사용: 개발자들이 discuss/plan/execute를 수동으로 실행하면서 작업 패턴이 적합할 때도 `/gsd-manager`나 `/gsd-autonomous`에 손을 뻗지 않는다. +- 임시방편 스크립트: 개발자들이 트래커와 `claude` 호출 사이에 임시 쉘 루프를 연결하여 `STATE.md`, 단계 매니페스트, 검증 게이트를 우회한다. + +이 가이드는 정규 루프를 발견 가능하게 만든다. + +## 개념 매핑 + +각 행은 Symphony 스타일 오케스트레이션 개념을 GSD가 이미 제공하는 기본 도구에 매핑한다. Symphony 문서, 블로그 게시물, 또는 타사 오케스트레이션 설명을 읽을 때 이 표를 번역 키로 사용하라. + +| Symphony 개념 | GSD 기본 도구 | +|---|---| +| `WORKFLOW.md` (최상위 의도) | `ROADMAP.md` (프로젝트 의도), `STATE.md` (라이브 상태), 단계 `CONTEXT.md` (단계별 범위), 단계 `PLAN.md` (실행 가능한 단계) | +| 작업당 격리된 에이전트 워크스페이스 | `/gsd-workspace --new --strategy worktree` | +| 에이전트 디스패치 및 동시성 | `/gsd-manager` (대화형 대시보드), `/gsd-autonomous` (무인) | +| 단계별 계획 및 논의 단계 | `/gsd-discuss-phase` → `/gsd-plan-phase` → `/gsd-execute-phase` | +| 작업 증명 / 테스트 증거 | `/gsd-verify-work` (`/clear` 전반에 걸쳐 지속되는 UAT.md) | +| 적대적 리뷰 | `/gsd-review` (계획의 교차 AI 동료 리뷰) | +| 사람 병합 게이트 | `/gsd-ship` (PR 생성, 선택적 코드 리뷰, 병합 준비) | +| 후속 캡처 | `/gsd-capture`, `/gsd-capture --seed`, `/gsd-new-milestone`, 또는 수동으로 열린 트래커 이슈 | +| 동시성 제어 | Manager / background-agent 의미 (항상 켜진 폴러 없음) | + +매핑은 단방향이다: GSD가 안전 게이트(검증, 사람 리뷰, 후속 생성에 대한 명시적 확인)를 소유한다. Symphony의 "지속적 오케스트레이션" 프레이밍은 의도적으로 채택하지 않는다 — [비목표](#비목표) 참조. + +## 엔드투엔드 흐름 + +단일 트래커 이슈에서 엔드투엔드로 실행될 수 있도록 작성된 정규 이슈 → PR 루프. 실행 전에 대괄호 플레이스홀더를 교체하라. + +1. **트래커 이슈 선택.** 트래커(GitHub, Linear 등)에서 자율 구현에 충분히 범위가 지정된 이슈 하나를 선택한다 — 범위가 한정되고, 관찰 가능한 수락 기준이 있으며, 실행을 막는 업스트림 의존성이 없는 것. +2. **GSD 단계에 매핑.** 이슈가 `ROADMAP.md`의 기존 단계에 매핑된다면 선택한다. 그렇지 않으면 `/gsd-new-milestone`(관련 이슈들의 새 마일스톤을 위한)을 실행하거나 `/gsd-phase` / `/gsd-phase --insert`를 통해 단계를 열어라. 압축 후에도 추적 가능성이 유지되도록 단계의 `CONTEXT.md`에 트래커 이슈 URL을 캡처하라. +3. **격리된 워크스페이스 생성.** `/gsd-workspace --new --strategy worktree `를 실행하여 독립적인 `.planning/` 디렉터리를 가진 git worktree를 생성한다. worktree가 안전 경계이다: 모든 탐색, 부분 커밋, 중단된 계획이 `main` 밖에 머문다. +4. **GSD를 통해 discuss → plan → execute 실행.** 워크스페이스 내에서 `/gsd-discuss-phase`로 모호함을 명확히 하고, `/gsd-plan-phase`로 `PLAN.md`를 생성하고, `/gsd-manager`(대화형 대시보드) 또는 `/gsd-execute-phase` / `/gsd-autonomous`(무인)로 구현한다. GSD 외부에서 raw `claude` 호출을 구동하는 것을 피하라 — 그것은 `STATE.md` 업데이트와 단계 매니페스트를 우회한다. +5. **작업 증명 요구.** `/gsd-verify-work`를 실행하여 사용자가 단계의 수락 기준에 대해 UAT를 진행하도록 안내한다. 테스트, 스크린샷, 로그 캡처, 설정 차이가 모두 `UAT.md`에 기록되며, 이것은 `/clear` 전반에 걸쳐 지속되고 검증이 놓친 범위를 표면화할 때 `/gsd-plan-phase --gaps`에 공급된다. +6. **리뷰 및 출시 게이트 통과.** `/gsd-review`를 실행하여 독립적인 AI CLI들로부터 계획의 적대적 동료 리뷰를 받고(모델별 맹점 포착), 그런 다음 `/gsd-ship`을 실행하여 계획 결과물로 구성된 풍부한 본문으로 PR을 열어라. 두 게이트 모두 원격에 도달하기 전에 사람의 결정을 요구한다. +7. **후속 작업 명시적으로 캡처.** 인라인 메모에는 `/gsd-capture`를, 미래 단계가 될 아이디어에는 `/gsd-capture --seed`를, 일관된 후속 작업 그룹에는 `/gsd-new-milestone`을 사용하라. 발견된 후속 작업에서 트래커 이슈를 생성하는 것은 명시적인 사용자 확인이 필요하다 — GSD는 원격 트래커에 자동으로 게시하지 않는다. + +PR이 병합되면 루프가 닫힌다. PR 본문의 자동 닫기 키워드들(`Closes #NNN` / `Fixes #NNN`)이 병합 시점에 트래커 이슈를 닫는다. + +## 안전 경계 + +루프는 네 가지 불변성이 구성상 유지되기 때문에 안전하다: + +- **격리된 worktree.** 모든 이슈는 `/gsd-workspace --new` worktree에서 실행되므로 부분 작업, 중단된 계획, 탐색적 커밋이 `main`에 절대 닿지 않는다. `gsd-local-patches/`가 worktree의 수동 편집이 업데이트 후에 다시 돌아와야 할 경우의 복구 표면이다. +- **명시적 사람 리뷰.** `/gsd-review`와 `/gsd-ship` 모두 사람 승인을 위해 중지된다. 자동 병합도 실행에서 자동 PR 경로도 없다. 특정 저장소에 대해 사람 게이트를 제거하고 싶다면, 그것은 사용자의 브랜치 보호 / 병합 큐 정책 결정이지 GSD가 사용자 대신 선택하는 것이 아니다. +- **자동 공개 게시 없음.** GSD는 명시적으로 사용자가 시작한 명령어 없이는 트래커 이슈를 열거나, 댓글을 달거나, 닫지 않는다. 후속 캡처는 기본적으로 로컬 결과물(메모, 시드, 마일스톤)에 저장된다; 트래커에 다시 푸시하는 것은 별도의 수동 단계이다. +- **출시 전 검증.** `/gsd-verify-work`의 UAT.md는 `/gsd-ship`이 실행되기 전에 증거를 기록해야 한다. 권장 원칙은 구현이 올바르게 보일 때도 `verification_failed`를 차단제로 취급하는 것이다 — 실패는 일반적으로 불안정한 테스트가 아닌 놓친 수락 기준을 표면화한다. + +이 불변성 중 하나라도 우회되면(예: worktree에 직접 `claude`를 실행하거나, `/gsd-verify-work`를 건너뛰거나, 사용자 확인 없이 트래커 API를 통해 이슈 생성을 스크립팅하는 경우), 이 가이드의 보장이 적용되지 않는다. + +## 비목표 + +이 가이드는 의도적으로 다음 중 어느 것도 제안하지 않는다. 코드 리뷰에서 재논의되지 않도록 여기에 나열한다: + +- **Symphony 코드 벤더링이나 복사 없음.** GSD는 자체 기본 도구를 재사용한다. 위의 매핑은 개념적이다; 이 저장소에 Symphony 파생 소스가 없다. +- **장시간 실행 데몬 없음.** GSD는 GitHub이나 Linear를 폴링하지 않는다. manager와 autonomous 워크플로우는 데몬이 아닌 background-agent 의미를 통해 동시성을 처리한다. +- **필수 트래커 의존성 없음.** 루프는 트래커 통합 없이도 작동한다. "트래커 이슈" 단계는 *사람 입력*이다 — URL이 `CONTEXT.md`에 들어간다. GSD는 어떤 트래커를 사용하는지, 또는 트래커를 사용하는지에 대해 의견이 없다. +- **검증, 리뷰, 사람 결정 게이트 우회 없음.** `/gsd-autonomous`를 실행할 때도 검증 및 리뷰 게이트가 여전히 실행된다. "autonomous" 레이블은 단계 간 진행을 가리키며, 사람 승인 건너뛰기를 가리키지 않는다. +- **기본 스킬 / 명령어 표면 확장 없음.** 이 가이드에 참조된 모든 명령어들은 이미 존재한다. 이 가이드는 문서 표면이지, 기능 표면이 아니다. + +## 가능한 미래 후속 작업 + +이 루프에 대한 유지관리자 경험이 정당화된다면, 별도의 승인된 개선 사항이 나중에 *최소한의* 트래커 브리지를 추가할 수 있다: + +- 하나의 GitHub 또는 Linear 이슈를 GSD 워크스페이스 / 단계로 가져오기. +- `UAT.md` 증거를 소스 이슈의 댓글로 내보내기. +- `/gsd-capture --seed` 출력에서 후속 트래커 이슈 생성. + +그 각각은 통합 표면과 지속적인 유지 관리 부담을 추가하기 때문에 자체 개선 제안이 될 것이다. 이 가이드의 범위에서 벗어난다. + +## Related + +- [단계 루프](explanation/the-phase-loop.md) — 논의 → 계획 → 실행 → 검증 → 출시가 반복되는 사이클로 어떻게 맞물리는지. +- [워크스페이스 how-to](how-to/work-in-parallel-with-workstreams.md) — 병렬 worktree를 생성하고 관리하는 단계별 가이드. +- [문서 인덱스](README.md) — GSD Core 문서의 전체 목차. +- [docs/USER-GUIDE.md](./USER-GUIDE.md) — 위에 참조된 개별 명령어들의 작업 지향 안내서. +- [docs/COMMANDS.md](COMMANDS.md) — `/gsd-*` 명령어의 전체 레퍼런스. +- [docs/FEATURES.md](FEATURES.md) — 기능 수준 역량 매트릭스 (워크스페이스, manager, autonomous, verify, review, ship). +- [docs/ARCHITECTURE.md](ARCHITECTURE.md) — 단계 결과물 수명 주기와 `STATE.md` 메카닉. diff --git a/docs/ko-KR/reference/context-md.md b/docs/ko-KR/reference/context-md.md new file mode 100644 index 000000000..e4ea74132 --- /dev/null +++ b/docs/ko-KR/reference/context-md.md @@ -0,0 +1,148 @@ +# CONTEXT.md 스키마 참조 + +페이즈별 `CONTEXT.md`는 `/gsd:discuss-phase` 중 캡처된 구현 결정을 담는 GSD Core의 파일입니다. 이 파일은 리서치 에이전트와 플래닝 에이전트 모두를 위한 주요 업스트림 입력입니다. 이 페이지는 해당 파일의 구조를 설명합니다. [문서 인덱스](../../README.md)를 참조하세요. + +--- + +## 개요 + +논의 워크플로를 거친 모든 페이즈는 다음 위치에 하나의 `CONTEXT.md`를 생성합니다: + +``` +.planning/phases/-/-CONTEXT.md +``` + +예: `.planning/phases/03-post-feed/03-CONTEXT.md`. + +이 파일은 `get-shit-done/workflows/discuss-phase.md`의 `write_context`(또는 PRD / ADR 인제스트 익스프레스 경로)에 의해 생성됩니다. 일반적인 운영 중에는 절대로 수동으로 편집하지 않습니다 — discuss-phase 워크플로가 이 파일을 기록하고 다운스트림 에이전트는 이를 봉인된 진실의 원천으로 읽습니다. + +--- + +## 프론트매터 + +`CONTEXT.md`에는 YAML 프론트매터가 없습니다. 메타데이터는 본문 상단에 인라인으로 위치합니다: + +```markdown +# Phase [X]: [Name] - Context + +**Gathered:** [ISO date] +**Status:** Ready for planning +``` + +`Status` 필드는 파일이 처음 기록될 때 항상 `Ready for planning`입니다. 생성 후에는 업데이트되지 않습니다. + +--- + +## 블록 구조 + +본문은 이름이 붙여진 XML 스타일 블록으로 나뉩니다. 블록은 고정된 순서로 나타나며 다운스트림 에이전트는 줄 번호가 아닌 블록 이름으로 읽습니다. + +| 블록 | 목적 | 작성자 | 소비자 | +|---|---|---|---| +| `` | 페이즈 경계를 명시합니다 — 이 페이즈가 무엇을 전달하고 명시적으로 범위 밖인 것이 무엇인지. 플래닝과 실행 전반에 걸쳐 범위 가드레일을 고정합니다. | `discuss-phase` (ROADMAP.md 페이즈 목표에서) | `gsd-planner`, `gsd-plan-checker` (범위 준수) | +| `` | `check_spec` 단계에서 `*-SPEC.md`가 발견된 경우에만 존재합니다. 잠긴 요구사항 수와 범위 경계를 나열하며, 에이전트는 전체 요구사항을 위해 `SPEC.md`를 직접 읽도록 안내됩니다. | `discuss-phase` (조건부) | `gsd-planner` (요구사항을 여기서 재읽지 않고 SPEC.md를 읽음) | +| `` | 논의에서 캡처된 구현 결정으로 `D-NN` 식별자로 키가 지정됩니다. 카테고리는 고정된 분류법이 아닌 실제로 논의된 내용에서 나옵니다. 사용자가 위임한 영역을 위한 `Claude's Discretion` 하위 섹션을 포함합니다. | `discuss-phase` (대화형 토론) | `gsd-planner` (잠긴 결정은 반드시 구현되어야 함), `gsd-plan-checker` (Dimension 7 준수) | +| `` | 이 페이즈와 관련된 모든 spec, ADR, 기능 문서, 또는 설계 문서의 전체 상대 경로. 필수 — 모든 CONTEXT.md에 이 섹션이 있어야 합니다. 에이전트는 플래닝 또는 구현 전에 나열된 파일을 읽어야 합니다. | `discuss-phase` (ROADMAP.md 참조 + 토론 중 사용자 참조 + 코드베이스 스카우트에서 축적) | `gsd-phase-researcher`, `gsd-planner` | +| `` | `scout_codebase` 단계에서 발견된 재사용 가능한 자산, 확립된 패턴, 통합 지점. 에이전트가 재구현하는 대신 기존 코드를 활용하도록 안내합니다. | `discuss-phase` (코드베이스 스카우트) | `gsd-planner`, `gsd-phase-researcher` | +| `` | 토론 중 캡처된 구체적인 "X처럼 하고 싶다" 참조, 제품 비교, 또는 특정 예시. | `discuss-phase` (자유형 사용자 입력) | `gsd-planner` | +| `` | 토론에서 제기되었지만 다른 페이즈에 속하는 아이디어. 잃어버리지 않도록 보존됩니다. todo가 검토되었지만 범위에 포함되지 않은 경우 `Reviewed Todos` 하위 섹션을 포함합니다. | `discuss-phase` (범위 초과 리디렉션) | 자동화된 에이전트가 소비하지 않음; 인간 참조 전용 | + +--- + +## 결정 식별자 형식 + +``의 모든 결정에는 순차적인 `D-NN` 식별자가 있습니다: + +```markdown +### Layout style +- **D-01:** Card-based layout, not timeline or list +- **D-02:** Each card shows: author avatar, name, timestamp, full post content, reaction counts +``` + +식별자는 페이즈 범위입니다. Phase 3의 `D-01`은 Phase 7의 `D-01`과 관계없습니다. 플랜 체커(Dimension 7)는 모든 `D-NN`이 생성된 플랜의 적어도 하나의 태스크 액션에서 다루어지는지 검증합니다. + +--- + +## 표준 참조 + +`` 블록은 **필수**입니다. 이 블록이 없는 CONTEXT.md를 발견한 에이전트는 CONTEXT.md를 불완전한 것으로 처리하고 경고를 표시합니다. 항목은 주제별로 그룹화되며 전체 상대 경로와 파일이 결정하거나 정의하는 내용에 대한 간략한 설명을 포함합니다: + +```markdown + +## Canonical References + +**Downstream agents MUST read these before planning or implementing.** + +### Feed display +- `docs/features/social-feed.md` — Feed requirements, post card fields, engagement display rules +- `docs/decisions/adr-012-infinite-scroll.md` — Scroll strategy decision, virtualisation requirements + +### Empty states +- `docs/design/empty-states.md` — Empty state patterns, illustration guidelines + + +``` + +프로젝트에 외부 spec이 없는 경우, 섹션은 이를 명시적으로 기술합니다: + +``` +No external specs — requirements fully captured in decisions above +``` + +`` 안에 흩어진 "ADR-019 참조" 같은 인라인 언급은 불충분합니다. 에이전트는 전용 섹션에 전체 경로가 필요합니다. + +--- + +## 결정 커버리지 게이트 관계 + +플랜 체커의 **Dimension 7: Context Compliance**는 플래닝 후 커버리지 게이트를 강제합니다: + +1. ``의 모든 `D-NN` 식별자는 적어도 하나의 플랜 태스크의 `` 또는 근거에 나타나야 합니다. +2. 어떤 태스크도 ``에 나열된 것을 구현해서는 안 됩니다(범위 초과). +3. `Claude's Discretion` 영역은 이 확인에서 제외됩니다 — 플래너는 자유롭게 선택할 수 있습니다. + +결정이 플랜에 반영된 CONTEXT.md는 준수 상태로 간주됩니다. 결정이 조용히 삭제되거나 부분적으로만 전달된 CONTEXT.md는 **Dimension 7b: Scope Reduction Detection**을 트리거하며, 이는 항상 BLOCKER입니다. + +--- + +## SPEC.md 통합 + +페이즈를 논의하기 전에 `/gsd:spec-phase`가 실행된 경우, `check_spec` 단계에서 `*-SPEC.md` 파일을 찾아 ``을 활성화합니다: + +```markdown + +## Requirements (locked via SPEC.md) + +**12 requirements are locked.** See `03-SPEC.md` for full requirements, boundaries, and acceptance criteria. + +Downstream agents MUST read `03-SPEC.md` before planning or implementing. Requirements are not duplicated here. + +**In scope (from SPEC.md):** [copied from SPEC.md Boundaries] +**Out of scope (from SPEC.md):** [copied from SPEC.md Boundaries] + + +``` + +``이 있는 경우, ``는 토론에서 나온 구현 결정만 포함합니다 — "무엇을"이 아닌 "어떻게". 요구사항은 두 파일 간에 중복되지 않습니다. + +--- + +## 푸터 + +모든 CONTEXT.md는 아이덴티티 푸터로 끝납니다: + +```markdown +--- + +*Phase: XX-name* +*Context gathered: [date]* +``` + +--- + +## Related + +- [PLAN.md 스키마](plan-md.md) +- [Planning artifacts](planning-artifacts.md) +- [Discuss 모드](../../workflow-discuss-mode.md) +- [docs index](../../README.md) diff --git a/docs/ko-KR/reference/plan-md.md b/docs/ko-KR/reference/plan-md.md new file mode 100644 index 000000000..69c1d3b8c --- /dev/null +++ b/docs/ko-KR/reference/plan-md.md @@ -0,0 +1,249 @@ +# PLAN.md 스키마 참조 + +플랜별 `PLAN.md`는 GSD Core의 실행 가능한 작업 단위입니다 — 실행기 에이전트에게 무엇을 빌드해야 하고 올바르게 빌드되었는지 어떻게 검증할지를 정확히 알려주는 구조화된 문서입니다. 이 페이지는 해당 파일의 구조를 설명합니다. [문서 인덱스](../../README.md)를 참조하세요. + +--- + +## 개요 + +플랜은 다음 위치의 페이즈 디렉터리 내에 있습니다: + +``` +.planning/phases/-/--PLAN.md +``` + +예: `.planning/phases/03-post-feed/03-02-PLAN.md` (Phase 3, Plan 2). + +플랜은 `gsd-planner` 에이전트(`/gsd:plan-phase`에 의해 생성됨)가 만들고 `execute-phase`가 소비합니다. 페이즈는 보통 1~4개의 플랜을 포함하며, 페이즈 내의 플랜은 독립적인 작업이 병렬로 실행되도록 실행 웨이브에 할당됩니다. + +--- + +## YAML 프론트매터 + +모든 PLAN.md는 `---` 구분자 사이의 YAML 프론트매터 블록으로 시작합니다. + +### 주석이 달린 예시 + +```yaml +--- +phase: 03-post-feed +plan: 02 +type: execute +wave: 2 +depends_on: ["03-01"] +files_modified: + - src/components/PostFeed.tsx + - src/components/PostCard.tsx + - src/app/feed/page.tsx +autonomous: true +requirements: ["FEED-01", "FEED-03"] +user_setup: [] + +must_haves: + truths: + - "User can scroll through posts from followed accounts" + - "Each post shows author avatar, name, timestamp, and content" + - "Empty state appears when no posts exist" + artifacts: + - path: "src/components/PostFeed.tsx" + provides: "Scrollable post list" + min_lines: 40 + - path: "src/components/PostCard.tsx" + provides: "Individual post card" + exports: ["PostCard"] + key_links: + - from: "src/components/PostFeed.tsx" + to: "/api/feed" + via: "fetch in useEffect" + pattern: "fetch.*api/feed" +--- +``` + +### 프론트매터 필드 참조 + +| 필드 | 필수 | 타입 | 목적 | +|---|---|---|---| +| `phase` | 예 | string | 페이즈 식별자, 예: `03-post-feed`. | +| `plan` | 예 | string | 페이즈 내 플랜 번호, 예: `02`. | +| `type` | 예 | `execute` 또는 `tdd` | 표준 플랜의 경우 `execute`; 구현 전에 테스트를 먼저 작성하는 테스트 주도 플랜의 경우 `tdd`. | +| `wave` | 예 | integer | 실행 웨이브. 웨이브 1의 플랜은 병렬로 실행됩니다(의존성 없음). 웨이브 2 이상의 플랜은 이전 웨이브의 모든 플랜이 완료될 때까지 기다립니다. `gsd-planner`가 플래닝 시점에 미리 계산합니다. | +| `depends_on` | 예 | 플랜 ID 배열 | 이 플랜이 기다려야 하는 플랜. 빈 배열 = 웨이브 1. 예: `["03-01"]`은 이 플랜이 Phase 3의 Plan 01 이후에 실행됨을 의미합니다. | +| `files_modified` | 예 | 경로 배열 | 이 플랜이 생성하거나 수정하는 모든 파일. 플랜 체커가 동일 웨이브 파일 충돌을 감지하고 execute-phase가 머지 추적에 사용합니다. | +| `autonomous` | 예 | boolean | 모든 태스크가 `auto` 타입일 때 `true`. 플랜에 인간 상호작용이 필요한 `checkpoint:*` 태스크가 포함된 경우 `false`. | +| `requirements` | 예 | ID 배열 | 이 플랜이 처리하는 ROADMAP.md의 요구사항 ID. 모든 페이즈 요구사항 ID는 적어도 하나의 플랜의 `requirements` 필드에 나타나야 합니다. 빈 배열은 BLOCKER입니다. | +| `user_setup` | 아니오 | 객체 배열 | Claude가 자동화할 수 없는 외부 서비스 설정 단계(계정 생성, 시크릿 검색, 대시보드 구성). 있는 경우, execute-phase가 개발자를 위한 `USER-SETUP.md` 체크리스트를 생성합니다. | +| `must_haves` | 예 | 객체 | 목표 역방향 검증 기준. 아래를 참조하세요. | + +--- + +## `must_haves` 필드 + +`must_haves`는 페이즈 목표 달성을 위해 관찰 가능하게 참이어야 하는 것을 캡처합니다. 플래닝 중에 도출되며 실행 후 `gsd-verifier` 에이전트가 검증합니다. + +### 하위 필드 + +| 하위 필드 | 타입 | 목적 | +|---|---|---| +| `truths` | string 배열 | 사용자 관점에서의 관찰 가능한 동작. 각각은 검증 가능해야 합니다. 예: `"User can send a message"` (O), `"WebSocket library installed"` (X). | +| `artifacts` | 객체 배열 | 실질적인 구현이 있어야 하는 파일(스텁 불가). | +| `artifacts[].path` | string | 프로젝트 루트에 대한 상대 파일 경로. | +| `artifacts[].provides` | string | 이 파일이 제공하는 기능. | +| `artifacts[].min_lines` | integer (선택) | 스텁이 아닌 것으로 간주되기 위한 최소 행 수. | +| `artifacts[].exports` | string 배열 (선택) | 검증할 예상 이름 있는 export. | +| `artifacts[].contains` | string (선택) | 파일에 나타나야 하는 정규식 또는 리터럴 패턴. | +| `key_links` | 객체 배열 | 아티팩트 간의 중요한 연결 — 시스템이 엔드 투 엔드로 작동하게 하는 배선. | +| `key_links[].from` | string | 소스 파일 또는 컴포넌트. | +| `key_links[].to` | string | 대상 파일, 엔드포인트, 또는 모듈. | +| `key_links[].via` | string | 연결 방법 설명 (예: `fetch in useEffect`, `Prisma query`, `import`). | +| `key_links[].pattern` | string (선택) | 소스에 연결이 존재하는지 검증하기 위한 정규식. | + +--- + +## 본문 구조 + +프론트매터 이후, 플랜 본문은 실행기 에이전트가 읽는 이름 붙여진 XML 스타일 블록을 사용합니다. + +### `` + +플랜이 무엇을 전달하고 프로젝트에서 왜 중요한지를 기술합니다: + +```xml + +Implement the post feed as a scrollable card list. + +Purpose: Core display feature for the social feed phase. +Output: PostFeed and PostCard components wired to /api/feed. + +``` + +### `` + +실행기가 시작 전에 읽는 워크플로 파일을 나열합니다. 항상 execute-plan 워크플로를 포함하며, 플랜에 체크포인트 태스크가 포함된 경우 체크포인트 참조를 추가합니다: + +```xml + +@~/.claude/get-shit-done/workflows/execute-plan.md +@~/.claude/get-shit-done/templates/summary.md + +``` + +### `` + +실행기가 읽어야 하는 소스 파일을 참조합니다. 프로젝트 수준 플래닝 문서와 플랜이 복제해야 하는 패턴이나 타입을 가진 소스 파일을 포함합니다. 이전 플랜의 `SUMMARY.md` 파일은 타입이나 공유 결정에 대한 실질적인 의존성이 있는 경우에만 포함됩니다 — 반사적으로 포함하지 않습니다: + +```xml + +@.planning/PROJECT.md +@.planning/ROADMAP.md +@.planning/STATE.md +@src/components/UserCard.tsx + +``` + +### `` + +하나 이상의 `` 요소를 포함합니다. 모든 태스크 요소는 `type="auto"` 태스크의 경우 ``, ``, ``, ``, ``, ``, ``을 가져야 합니다. + +--- + +## 태스크 타입 + +| 타입 | 사용 시점 | 자율성 | +|---|---|---| +| `auto` | 실행기가 독립적으로 할 수 있는 모든 것. | 완전 자율. | +| `checkpoint:human-verify` | 실행 중인 UI 또는 서비스를 인간이 직접 봐야 하는 시각적 또는 기능적 검증. | 실행 일시 중지; 개발자에게 표시; 승인 시 재개. | +| `checkpoint:decision` | 실행 중에 발생하여 개발자 입력이 필요한 구현 선택. | 실행 일시 중지; 옵션 표시; 선택 시 재개. | +| `checkpoint:human-action` | 진정으로 불가피한 수동 단계(계정 생성, 하드웨어 상호작용). 드물게 사용. | 실행 일시 중지; 확인 시 재개. | + +체크포인트 태스크가 포함된 플랜은 프론트매터에서 `autonomous: false`로 설정해야 합니다. + +--- + +## `auto` 태스크 구조 + +```xml + + Task 1: Create PostCard component + src/components/PostCard.tsx + src/components/UserCard.tsx, src/types/post.ts + Create PostCard component accepting a Post prop (id, authorId, content, createdAt, + reactionCount). Render author avatar using UserAvatar from UserCard pattern. Show timestamp + using date-fns formatDistanceToNow. Export as named export PostCard. + npx tsc --noEmit + + - src/components/PostCard.tsx exports named export PostCard + - PostCard.tsx contains "reactionCount" prop usage + - npx tsc --noEmit exits 0 + + PostCard renders post content with author and timestamp + +``` + +### `auto` 태스크의 필수 필드 + +| 필드 | 규칙 | +|---|---| +| `` | 태스크가 생성하거나 수정하는 모든 파일. 실행기는 이 파일들만 작성합니다. | +| `` | 무언가를 건드리기 전에 실행기가 읽어야 하는 파일 — 수정할 파일, 진실의 원천 패턴 파일, 타입이나 규칙을 복제해야 하는 파일. | +| `` | 정확한 식별자, 파일 경로, 함수 서명, 예상 값이 포함된 구체적인 지침. 목표 상태를 지정하지 않고 "X를 Y와 맞추세요"라고 말하지 않습니다. 펜스 코드 블록이나 전체 구현을 포함하지 않습니다. | +| `` | 태스크가 성공했음을 증명하는 실행 가능한 명령 또는 확인. 통과와 실패를 구분해야 합니다 — `echo "done"`은 유효하지 않습니다. | +| `` | 검증 가능한 조건: grep으로 검증 가능한 문자열, 명령 종료 코드, 관찰 가능한 동작. 주관적 표현 없음 ("올바르게 보임", "올바르게 구성됨"). | +| `` | 완료된 결과에 대한 짧은 측정 가능한 설명. | + +--- + +## 플랜 품질 차원 + +`gsd-plan-checker` 에이전트는 실행 시작 전에 12개 차원에 걸쳐 모든 PLAN.md를 검토합니다. BLOCKER 심각도 확인에 실패한 플랜은 수정을 위해 `gsd-planner`에 반환됩니다(최대 3회 반복): + +| 차원 | 확인 내용 | +|---|---| +| **1 — 요구사항 커버리지** | ROADMAP.md의 모든 페이즈 요구사항 ID가 적어도 하나의 플랜의 `requirements` 프론트매터 필드에 나타나고 해당 태스크가 있는지. | +| **2 — 태스크 완전성** | 모든 `auto` 태스크에 필수 필드(``, ``, ``, ``, ``)가 있는지. 모호하거나 빈 필드 없음. | +| **3 — 의존성 정확성** | `depends_on` 참조가 유효하고 비순환적이며 웨이브 번호와 일관성이 있는지. 웨이브 N 플랜은 웨이브 < N의 플랜에만 의존합니다. | +| **4 — 키 링크 계획됨** | `must_haves.key_links`의 아티팩트에 배선을 구현하는 해당 태스크가 있는지 — 아티팩트 생성만이 아닌. | +| **5 — 범위 건전성** | 플랜이 컨텍스트 예산 내에 있는지: 플랜당 2–3개 태스크(4개 = 경고, 5개 이상 = BLOCKER), 플랜당 파일 ≤ 8–10개(15개 이상 = BLOCKER). | +| **6 — 검증 도출** | `must_haves.truths`가 구현 세부 사항이 아닌 사용자 관찰 가능한 동작인지. 아티팩트가 truths에 매핑되는지. 키 링크가 중요한 배선을 커버하는지. | +| **7 — 컨텍스트 준수** | CONTEXT.md의 모든 `D-NN` 결정이 적어도 하나의 태스크에서 다루어지는지. 어떤 태스크도 ``의 것을 구현하지 않는지. | +| **7b — 범위 축소 감지** | 태스크 액션이 전체 결정 범위를 전달하지 않고 잠긴 결정을 조용히 "v1", "스텁", 또는 "향후 개선"으로 축소하지 않는지. 발견 시 항상 BLOCKER. | +| **7c — 아키텍처 계층 준수** | 태스크가 RESEARCH.md 아키텍처 책임 맵에 따라 올바른 계층에 기능을 할당하는지 (있는 경우). 잘못된 계층의 보안 민감 기능은 BLOCKER. | +| **8 — Nyquist 준수** | `workflow.nyquist_validation`이 활성화되고 RESEARCH.md가 있는 경우, 모든 태스크에 `` 검증 명령이 있고, 3개 태스크의 연속 구간이 커버리지 없이 없으며, VALIDATION.md가 있는지. | +| **9 — 크로스 플랜 데이터 계약** | 플랜이 데이터 파이프라인을 공유하는 경우, 변환이 호환 가능한지 — 어떤 플랜도 다른 플랜이 원본 형식으로 필요한 데이터를 제거하지 않는지. | +| **10 — CLAUDE.md 준수** | 플랜이 `./CLAUDE.md`의 프로젝트별 규칙, 금지된 패턴, 필수 도구, 보안 요구사항을 존중하는지. | +| **11 — 리서치 해결** | RESEARCH.md가 있는 경우, 플래닝이 진행되기 전에 `## Open Questions` 섹션이 `(RESOLVED)`로 표시되어 있는지. | +| **12 — 패턴 준수** | PATTERNS.md가 있는 경우, 태스크가 각 새로운 또는 수정된 파일에 대해 올바른 유사 패턴을 참조하는지. | + +--- + +## 웨이브 실행 모델 + +웨이브 번호는 플래닝 중에 미리 계산됩니다. Execute-phase는 플랜을 웨이브 번호별로 그룹화하고 각 웨이브의 플랜을 병렬로 실행합니다: + +``` +Wave 1: Plan 01, Plan 02, Plan 03 (모두 동시에 실행 — 의존성 없음) +Wave 2: Plan 04 (Wave 1이 완료될 때까지 대기) +Wave 3: Plan 05 (Wave 2가 완료될 때까지 대기) +``` + +동일한 웨이브 내에서 겹치는 파일을 수정하는 플랜은 동일한 웨이브에 있어서는 안 됩니다 — 플랜 체커의 Dimension 3이 이를 BLOCKER로 플래그합니다. + +--- + +## 플랜 출력 + +플랜이 성공적으로 실행된 후, 실행기는 다음 위치에 SUMMARY.md를 작성합니다: + +``` +.planning/phases/-/--SUMMARY.md +``` + +SUMMARY.md는 빌드된 내용의 표준 기록입니다. 동일 페이즈의 후속 플랜은 타입이나 결정에 대한 실질적인 의존성이 있는 경우 이를 참조할 수 있습니다. + +--- + +## Related + +- [CONTEXT.md 스키마](context-md.md) +- [Planning artifacts](planning-artifacts.md) +- [Features](../../FEATURES.md) +- [docs index](../../README.md) diff --git a/docs/ko-KR/reference/planning-artifacts.md b/docs/ko-KR/reference/planning-artifacts.md new file mode 100644 index 000000000..0447a9392 --- /dev/null +++ b/docs/ko-KR/reference/planning-artifacts.md @@ -0,0 +1,225 @@ +# Planning artifacts 참조 + +`.planning/` 디렉터리는 프로젝트를 위한 GSD Core의 공유 메모리입니다. 모든 워크플로가 여기서 읽고 쓰며, 감사 가능한 결정 추적 기록을 남깁니다. 이 페이지는 모든 파일, 그 목적, 그리고 어떤 명령이 생성하거나 소비하는지를 매핑합니다. [문서 인덱스](../../README.md)를 참조하세요. + +--- + +## 디렉터리 구조 + +``` +.planning/ +├── PROJECT.md # 프로젝트 아이덴티티와 핵심 가치 +├── ROADMAP.md # 마일스톤 + 목표가 있는 페이즈 목록 +├── REQUIREMENTS.md # 번호가 매겨진 인수 기준 +├── STATE.md # 살아있는 위치 추적기 +├── config.json # 워크플로 및 모델 구성 +├── MILESTONES.md # 마일스톤 아카이브 (선택) +├── BACKLOG.md # 미뤄진 및 향후 작업 (선택) +├── LEARNINGS.md # 축적된 크로스 페이즈 학습 (선택) +├── DECISIONS-INDEX.md # 이전 결정의 롤링 요약 (선택) +├── METHODOLOGY.md # 재사용 가능한 해석 프레임워크 (선택) +├── HANDOFF.json # 기계가 읽을 수 있는 일시 정지 상태 (임시) +├── codebase/ # 코드베이스 맵 (선택) +│ ├── architecture.md +│ ├── stack.md +│ └── ... +├── intel/ # 쿼리 가능한 심볼 인덱스 (선택, intel.enabled) +│ └── API-SURFACE.md +└── phases/ + └── -/ # 페이즈당 하나의 디렉터리 + ├── -CONTEXT.md # 구현 결정 (discuss-phase) + ├── -DISCUSSION-LOG.md # 사람이 읽을 수 있는 토론 감사 (discuss-phase) + ├── -RESEARCH.md # 기술 리서치 결과 (plan-phase) + ├── -VALIDATION.md # Nyquist 테스트 커버리지 전략 (plan-phase) + ├── -PATTERNS.md # 코드베이스 유사 맵 (plan-phase, 선택) + ├── --PLAN.md # 실행 가능한 플랜 (plan-phase, 플랜당 하나) + ├── --SUMMARY.md # 실행 기록 (execute-phase, 플랜당 하나) + ├── -VERIFICATION.md # 페이즈 목표 검증 보고서 (verify-phase) + ├── -UAT.md # 지속적인 UAT 세션 상태 (execute-phase) + └── .continue-here.md # 일시 정지 후 재개 지침 (pause-work) +``` + +--- + +## 루트 수준 아티팩트 + +### `PROJECT.md` + +| | | +|---|---| +| **목적** | 표준 프로젝트 아이덴티티: 무엇인지, 누구를 위한 것인지, 핵심 가치, 요구사항, 제약 사항, 주요 결정. 제품이 발전함에 따라 프로젝트 생명주기 전반에 걸쳐 업데이트됩니다. | +| **생성자** | `/gsd-new-project` (최초 생성); 결정이 검증됨에 따라 `/gsd-complete-milestone`에 의해 업데이트됩니다. | +| **소비자** | 모든 플래닝 워크플로; `gsd-phase-researcher`, `gsd-planner` (컨텍스트); `discuss-phase` (이전 결정); `gsd-plan-checker` (프로젝트 제약 사항). | + +### `ROADMAP.md` + +| | | +|---|---| +| **목적** | 목표, 요구사항 ID, 성공 기준, 페이즈별 표준 참조가 있는 마일스톤 및 페이즈 목록. 프로젝트가 무엇을 빌드하고 어떤 순서로 하는지에 대한 단일 진실의 원천. | +| **생성자** | `/gsd-new-project` (최초 생성); `/gsd-phase --insert`와 `/gsd-complete-milestone`에 의해 업데이트됩니다. | +| **소비자** | `/gsd-discuss-phase`, `/gsd-plan-phase`, `/gsd-execute-phase`; 페이즈 정보가 필요한 모든 오케스트레이션 명령; `gsd-planner`, `gsd-plan-checker`, `gsd-phase-researcher`. | + +### `REQUIREMENTS.md` + +| | | +|---|---| +| **목적** | 프로젝트의 번호가 매겨진 체크 가능한 인수 기준. 각 요구사항은 로드맵 페이즈에 매핑되는 ID(예: `AUTH-01`)를 가집니다. 페이즈가 실행됨에 따라 요구사항을 완료로 표시합니다. | +| **생성자** | `/gsd-new-project` (최초 생성); `execute-phase`에 의해 요구사항이 완료로 표시됩니다. | +| **소비자** | `gsd-planner` (플랜은 모든 페이즈 요구사항 ID를 처리해야 함); `gsd-plan-checker` Dimension 1 (요구사항 커버리지); `discuss-phase` (이전 요구사항). | + +### `STATE.md` + +| | | +|---|---| +| **목적** | 살아있는 위치 추적기 — 현재 페이즈와 플랜, 진행 지표, 누적된 결정, 세션 연속성 노트. 모든 워크플로 실행 시작 시 읽힙니다. 중요한 작업 이후 업데이트됩니다. | +| **생성자** | `/gsd-new-project` (최초 생성); 모든 페이즈 워크플로, `/gsd-pause-work`, `/gsd-resume-work`에 의해 지속적으로 업데이트됩니다. | +| **소비자** | 모든 오케스트레이션 워크플로; `/gsd-progress`; `/gsd-quick`을 통한 임시 태스크 실행; `gsd-planner` 및 `gsd-phase-researcher` (프로젝트 결정). | + +전체 필드 참조는 [STATE.md 스키마](state-md.md)를 참조하세요. + +### `config.json` + +| | | +|---|---| +| **목적** | 워크플로 구성: 모델 프로파일, 리서치 및 플랜 체커 토글, git 브랜칭 전략, Nyquist 검증, 병렬화 설정, 에이전트별 모델 오버라이드. | +| **생성자** | `/gsd-new-project` (최초 생성); `/gsd-settings` (대화형 편집). | +| **소비자** | 모든 워크플로 및 서브에이전트 — `gsd-tools query config-get`을 통해 초기화 시점에 읽습니다. | + +전체 스키마는 [CONFIGURATION](../../CONFIGURATION.md)을 참조하세요. + +### `MILESTONES.md` (선택) + +| | | +|---|---| +| **목적** | 완료된 마일스톤의 역사적 기록. 각 마일스톤이 종료될 때 채워지며, 무엇이 언제 출시되었는지의 아카이브 스냅샷을 제공합니다. | +| **생성자** | `/gsd-complete-milestone`. | +| **소비자** | `/gsd-audit-milestone`; 인간 검토. | + +### `DECISIONS-INDEX.md` (선택) + +| | | +|---|---| +| **목적** | 이전 페이즈 CONTEXT.md 파일에서 캡처된 결정의 경계가 있는 롤링 요약. 있는 경우, `discuss-phase`는 최대 세 개의 이전 CONTEXT.md 파일을 개별적으로 읽는 대신 이 단일 파일을 읽어 컨텍스트 예산을 절약합니다. | +| **생성자** | 이전 페이즈 수가 롤링 읽기 임계값을 초과할 때 생성됩니다. | +| **소비자** | `discuss-phase` (`load_prior_context` 단계). | + +### `HANDOFF.json` (임시) + +| | | +|---|---| +| **목적** | 작업이 중단될 때 기록되는 기계가 읽을 수 있는 일시 정지 상태. 재개 지점, 진행 중인 컨텍스트, 연속 지침을 포함합니다. 정확히 한 번 소비됩니다 — 재개 시. | +| **생성자** | `/gsd-pause-work`. | +| **소비자** | `/gsd-resume-work`. | + +--- + +## 페이즈별 아티팩트 + +모든 페이즈별 파일은 `.planning/phases/-/` 아래에 있으며, 여기서 `NN`은 제로 패딩된 페이즈 번호이고 `slug`는 하이픈으로 연결된 페이즈 이름입니다. + +### `-CONTEXT.md` + +| | | +|---|---| +| **목적** | 플래닝 시작 전에 캡처된 구현 결정. 페이즈 경계(``), `D-NN` 식별자가 있는 잠긴 결정(``), 표준 문서 참조(``), 기존 코드 인사이트(``), 특정 영감(``), 미뤄진 아이디어(``)를 포함합니다. | +| **생성자** | `/gsd-discuss-phase` (대화형 토론 또는 PRD/ADR 익스프레스 경로). | +| **소비자** | `gsd-phase-researcher` (무엇을 조사할지); `gsd-planner` (잠긴 결정); `gsd-plan-checker` Dimension 7 (컨텍스트 준수). | + +전체 필드 참조는 [CONTEXT.md 스키마](context-md.md)를 참조하세요. + +### `-DISCUSSION-LOG.md` + +| | | +|---|---| +| **목적** | discuss-phase 세션의 사람이 읽을 수 있는 감사 추적: 논의된 영역, 제시된 옵션, 선택된 항목, 미뤄진 아이디어, Claude의 재량에 맡겨진 항목. 자동화된 워크플로에서 소비되지 않습니다. | +| **생성자** | `/gsd-discuss-phase` (`git_commit` 단계). | +| **소비자** | 인간 검토; 회고. | + +### `-RESEARCH.md` + +| | | +|---|---| +| **목적** | 플래닝 전에 생성된 기술 리서치 결과. "이 페이즈를 잘 계획하기 위해 무엇을 알아야 하는가?"에 답합니다 — 도메인 분석, 패턴, 위험, 아키텍처 책임 맵, 검증 아키텍처 섹션(Nyquist 게이트에서 사용)을 포함합니다. | +| **생성자** | `/gsd-plan-phase` (via `gsd-phase-researcher` 에이전트). | +| **소비자** | `gsd-planner` (플래닝 입력); `gsd-plan-checker` Dimension 7c (계층 준수), Dimension 8 (Nyquist), Dimension 11 (리서치 해결); `gsd-pattern-mapper` (파일 목록 소스). | + +### `-VALIDATION.md` + +| | | +|---|---| +| **목적** | RESEARCH.md의 `## Validation Architecture` 섹션에서 도출된 Nyquist 영감 검증 전략. 플랜이 지켜야 하는 자동화된 테스트 커버리지 요구사항을 지정합니다. | +| **생성자** | `/gsd-plan-phase` (Step 5.5, `workflow.nyquist_validation`이 활성화되고 RESEARCH.md에 Validation Architecture 섹션이 있는 경우). | +| **소비자** | `gsd-plan-checker` Dimension 8 (Check 8e 게이트 — Nyquist 확인이 진행되기 전에 반드시 존재해야 함); `gsd-verifier`. | + +### `-PATTERNS.md` + +| | | +|---|---| +| **목적** | `gsd-pattern-mapper`가 생성한 코드베이스 유사 맵. 이 페이즈에서 생성하거나 수정할 각 파일에 대해, 가장 가까운 기존 유사 파일을 식별하고, 파일의 역할과 데이터 흐름을 분류하며, 구체적인 코드 발췌를 추출합니다. 플래너가 일관된 패턴을 사용하도록 안내합니다. | +| **생성자** | `/gsd-plan-phase` (via `gsd-pattern-mapper` 에이전트, 선택; `workflow.pattern_mapper: false`이면 건너뜀). | +| **소비자** | `gsd-planner` (패턴 안내); `gsd-plan-checker` Dimension 12 (패턴 준수). | + +### `--PLAN.md` + +| | | +|---|---| +| **목적** | 페이즈 내 단일 작업 단위에 대한 실행 가능한 플랜. YAML 프론트매터(웨이브, 의존성, 파일, 요구사항, `must_haves`), 목표, 컨텍스트 참조, ``, ``, ``, `` 필드가 있는 XML 구조의 태스크, 검증 기준을 포함합니다. | +| **생성자** | `/gsd-plan-phase` (via `gsd-planner` 에이전트). 플랜당 하나의 파일 — 예: `03-02-PLAN.md`는 Phase 3, Plan 2. | +| **소비자** | `/gsd-execute-phase` (실행기 에이전트가 플랜을 읽고 태스크를 실행); `gsd-plan-checker` (실행 전 품질 검토); `gsd-verifier` (실행 후 검증을 위해 `must_haves`를 읽음). | + +전체 필드 참조는 [PLAN.md 스키마](plan-md.md)를 참조하세요. + +### `--SUMMARY.md` + +| | | +|---|---| +| **목적** | 플랜이 완료된 후 기록된 실행 기록. 빌드된 내용, 플랜과의 편차, 인수 기준에 대한 자가 점검, 페이즈의 의존성 그래프를 문서화합니다. | +| **생성자** | `execute-phase` 실행기 에이전트 (각 플랜 실행 종료 시 기록). | +| **소비자** | `/gsd-progress` (페이즈 상태); `gsd-planner` (후속 플랜이 이전 플랜 출력에 대한 실질적인 의존성이 있는 경우); `milestone-summary`. | + +### `-VERIFICATION.md` + +| | | +|---|---| +| **목적** | 페이즈 목표 검증 보고서. 실행 후 모든 플랜의 `must_haves.truths`, `must_haves.artifacts`, `must_haves.key_links`를 실제 코드베이스에 대해 확인합니다. `status: passed | gaps_found | human_needed`를 기록합니다. | +| **생성자** | `/gsd-verify-work` (또는 `/gsd-execute-phase` 내의 verify 단계). | +| **소비자** | `plan-phase` 종료된 페이즈 게이트(`status: passed`인 VERIFICATION.md는 페이즈를 `Complete`로 표시하고 `--force` 없이 재플래닝을 차단함); `/gsd-progress`; 인간 검토. | + +### `-UAT.md` + +| | | +|---|---| +| **목적** | 지속적인 UAT 세션 추적. 라이브 UAT 세션 전반에 걸쳐 각 테스트 케이스, 예상 관찰 가능한 동작, 결과, 개발자 응답을 기록합니다. YAML 프론트매터(`status`, `phase`, `source`, 타임스탬프)를 가집니다. | +| **생성자** | `/gsd-audit-uat` (대화형 UAT 세션). | +| **소비자** | `/gsd-audit-uat` (이전 UAT 세션 재개). | + +### `.continue-here.md` + +| | | +|---|---| +| **목적** | 페이즈 작업이 일시 정지될 때 기록되는 사람이 읽을 수 있는 재개 지침. 재개 에이전트를 위한 컨텍스트를 포함합니다: 중요한 안티패턴, 차단 이슈, 필수 읽기, 재개를 위한 정확한 명령. | +| **생성자** | `/gsd-pause-work`. | +| **소비자** | 페이즈에서 시작하는 모든 워크플로 — `discuss-phase`와 `plan-phase` 모두 진입 시 이 파일을 확인하고, 진행하기 전에 에이전트가 `blocking` 안티패턴을 이해했음을 입증하도록 요구합니다. | + +--- + +## 명명 규칙 + +| 세그먼트 | 형식 | 예시 | +|---|---|---| +| 페이즈 디렉터리 | `-` | `03-post-feed` | +| 페이즈 수준 파일 | `-.md` | `03-CONTEXT.md` | +| 플랜 수준 파일 | `--.md` | `03-02-PLAN.md` | +| `NN` | 제로 패딩된 페이즈 번호 | Phase 3의 경우 `03` | +| `PP` | 페이즈 내 제로 패딩된 플랜 번호 | Plan 2의 경우 `02` | + +`config.json`에 `project_code`가 설정된 경우, 페이즈 디렉터리는 프로젝트 코드를 접두사로 사용합니다: 프로젝트 코드 `CK`, Phase 3의 경우 `CK-03-post-feed`. + +--- + +## Related + +- [STATE.md 스키마](state-md.md) +- [CONTEXT.md 스키마](context-md.md) +- [PLAN.md 스키마](plan-md.md) +- [docs index](../../README.md) diff --git a/docs/ko-KR/reference/state-md.md b/docs/ko-KR/reference/state-md.md new file mode 100644 index 000000000..11e597480 --- /dev/null +++ b/docs/ko-KR/reference/state-md.md @@ -0,0 +1,201 @@ +# STATE.md 스키마 참조 + +`STATE.md`는 GSD Core의 살아있는 프로젝트 메모리 파일입니다 — 프로젝트의 현재 상태, 최근 작업 내역, 그리고 다음에 실행할 명령을 기록하는 단일 Markdown 문서입니다. 이 페이지는 해당 파일의 구조를 설명합니다. [문서 인덱스](../../README.md)를 참조하세요. + +--- + +## 개요 + +GSD Core가 관리하는 모든 프로젝트는 `.planning/STATE.md`에 하나의 `STATE.md`를 유지합니다. 이 파일은 모든 워크플로 시작 시 읽히고 중요한 작업 이후에 기록됩니다. 파일은 다음 두 부분으로 구성됩니다: + +- **YAML 프론트매터** — 상태 표시줄 훅(`parseStateMd`)과 `gsd-tools state` 명령이 사용하는 기계가 읽을 수 있는 필드. +- **Markdown 본문** — 현재 위치, 누적된 맥락, 세션 연속성, 성능 지표를 다루는 사람이 읽을 수 있는 섹션. + +파일은 의도적으로 작게 유지됩니다(목표: 100줄 미만). 이 파일은 프로젝트 상태의 요약이며 아카이브가 아닙니다. + +--- + +## YAML 프론트매터 + +프론트매터는 파일 맨 처음의 `---` 구분자 사이에 위치합니다. `gsd_state_version`과 `status`를 제외한 모든 필드는 선택 사항이며, 데이터를 아직 사용할 수 없는 경우 필드가 없을 수 있습니다. + +### 주석이 달린 예시 + +```yaml +--- +gsd_state_version: '1.0' +milestone: v2.0 +milestone_name: Code Quality +status: executing + +# 페이즈 생명주기 필드 — 모두 선택 사항 (v1.40.0에서 추가, issue #2833) +active_phase: "4.5" +next_action: execute-phase +next_phases: ["4.5"] + +progress: + total_phases: 17 + completed_phases: 10 + total_plans: 84 + completed_plans: 47 + percent: 59 + +# syncStateFrontmatter가 기록하는 추가 필드 +current_phase: "4" +current_phase_name: Observability +current_plan: "3" +last_updated: "2026-06-01T12:34:56.789Z" +last_activity: "2026-06-01" +stopped_at: "Phase 4 P3 execution complete" +paused_at: null +--- +``` + +### 필드 참조 + +| 필드 | 타입 | 채워지는 시점 | 목적 | +|---|---|---|---| +| `gsd_state_version` | string (`'1.0'`) | 항상 | 스키마 버전. `syncStateFrontmatter`에 의한 첫 번째 `state.*` 호출 시 기록됩니다. | +| `milestone` | string (예: `v2.0`) | 마일스톤이 구성된 경우 | 프로젝트 설정에서 읽어온 현재 마일스톤 버전. | +| `milestone_name` | string | 마일스톤이 구성된 경우 | 사람이 읽을 수 있는 마일스톤 레이블 (예: `Code Quality`). | +| `status` | string | 항상 | 현재 생명주기 단계. `normalizeStateStatus()`에 의해 정규화됩니다 — [상태 값](#상태-값)을 참조하세요. | +| `active_phase` | string (예: `"4.5"`) | 오케스트레이터 명령이 해당 페이즈에서 실행 중인 경우 | 현재 처리 중인 페이즈 번호. 페이즈 사이에 있을 때는 `null`로 설정됩니다. | +| `next_action` | string | 권장 명령이 있는 유휴 상태일 때 | 다음에 실행할 슬래시 명령: `discuss-phase`, `plan-phase`, `execute-phase`, 또는 `verify-phase`. 오케스트레이터가 실행 중이거나 권장 사항이 없을 때는 `null`로 설정됩니다. | +| `next_phases` | YAML 플로우 배열 (예: `["4.5"]`) | `next_action`과 함께 | `next_action`이 적용되는 페이즈 ID (보통 1–2개 항목). `next_action`과 동일한 조건에서 `null`로 설정됩니다. | +| `progress.total_phases` | integer | 페이즈 데이터를 사용할 수 있는 경우 | ROADMAP.md와 phases 디렉터리에서 파생된 현재 마일스톤의 총 페이즈 수. | +| `progress.completed_phases` | integer | 페이즈 데이터를 사용할 수 있는 경우 | 모든 플랜 요약이 디스크에 존재하는(즉, 모든 플랜이 완료된) 페이즈의 수. | +| `progress.total_plans` | integer | 플랜 파일이 존재하는 경우 | 현재 마일스톤 내 모든 페이즈의 플랜 파일 합계. | +| `progress.completed_plans` | integer | 요약 파일이 존재하는 경우 | 완료된 플랜 요약의 합계 (실행된 플랜당 하나의 SUMMARY.md). | +| `progress.percent` | integer 0–100 | 진행 데이터를 사용할 수 있는 경우 | **페이즈 차원**의 마일스톤 진행도 (`min(completed_plans/total_plans, completed_phases/total_phases)`). 상태 표시줄 진행 막대는 이 필드가 있을 때만 렌더링됩니다 — 필드가 없으면 막대가 표시되지 않습니다. | +| `current_phase` | string | 페이즈가 실행 중인 경우 | 본문 `Current Phase:` 필드에서 추출된 페이즈 번호. | +| `current_phase_name` | string | 페이즈에 이름이 있는 경우 | 본문 `Current Phase Name:` 필드에서 추출된 페이즈 이름. | +| `current_plan` | string | 플랜이 진행 중인 경우 | 본문 `Current Plan:` 필드에서 추출된 플랜 번호. | +| `last_updated` | ISO-8601 타임스탬프 | 항상 (쓰기 시) | 마지막 `syncStateFrontmatter` 호출의 타임스탬프. `realClock.nowIso()`에 의해 기록됩니다. | +| `last_activity` | string | 본문에 설정된 경우 | 본문 `Last Activity:` 필드에서 추출된 마지막 활동 날짜. | +| `stopped_at` | string | 중단점이 기록된 경우 | 마지막으로 완료된 작업의 설명. 아카이브 산문과의 매칭을 피하기 위해 `## Session` 본문 섹션으로 범위가 제한됩니다. | +| `paused_at` | string | 프로젝트가 일시 정지된 경우 | 일시 정지 지점에 대한 자유형 설명. 일시 정지 상태가 아닐 때는 없거나 `null`. | + +### 상태 값 + +`get-shit-done/bin/lib/state-document.cjs`의 `normalizeStateStatus()`는 본문의 원시 텍스트를 다음 표준 값으로 매핑합니다: + +| 표준 값 | 매칭되는 텍스트 (대소문자 무관) | +|---|---| +| `discussing` | `discussing`을 포함 | +| `planning` | `planning` 또는 `ready to plan`을 포함 | +| `executing` | `executing`, `in progress`, 또는 `ready to execute`를 포함 | +| `verifying` | `verif`를 포함 | +| `completed` | `complete` 또는 `done`을 포함 | +| `paused` | `paused` 또는 `stopped`를 포함하거나, `paused_at`이 있는 경우 | +| `unknown` | 위 중 해당 없음 | + +오케스트레이터 명령이 실행 중일 때의 규칙 (issue #2833)은 생명주기 단계를 `status`에 직접 기록하는 것입니다: + +| 명령 | 실행 중 `status` | +|---|---| +| `/gsd-discuss-phase` | `discussing` | +| `/gsd-plan-phase` | `planning` | +| `/gsd-execute-phase` | `executing` | +| `/gsd-verify-work` | `verifying` | + +--- + +## 상태 표시줄 렌더링 장면 + +`hooks/gsd-statusline.js`의 `formatGsdState()`는 파싱된 프론트매터를 읽고 **첫 번째로 일치하는 장면**을 출력합니다. 새로운 생명주기 필드가 적용되지 않으면 렌더링은 v1.38.x와 바이트 단위로 동일한 원래 형식으로 폴백됩니다. + +| 장면 | 트리거 | 표시 예시 | +|---|---|---| +| **1. 페이즈 활성화** | `active_phase`가 채워진 경우 | `v2.0 [██░░░░░░░░] 20% · Phase 4.5 executing` | +| **2. 유휴 상태, 다음 권장** | `active_phase`가 null이고 `next_action`과 `next_phases`가 모두 채워진 경우 | `v2.0 [██░░░░░░░░] 20% · next execute-phase 4.5` | +| **3. 마일스톤 완료** | `percent`가 `100`이거나 `completed_phases == total_phases`인 경우 | `v2.0 [██████████] 100% · milestone complete` | +| **4. 기본 폴백** | 위 중 해당 없음 | `v1.9 Code Quality · executing · ph 1/5` (기존 형식) | + +**장면 우선순위:** `active_phase`와 `next_action`이 모두 채워진 경우 장면 1이 우선합니다 — 오케스트레이터가 실행 중이므로 "다음 권장 사항"은 오해의 소지가 있습니다. 이 우선순위는 `formatGsdState()`의 확인 순서로 강제되며 `tests/enh-2833-phase-lifecycle-statusline.test.cjs`의 `"scene priority"` 스위트에서 테스트됩니다. + +진행 막대(`[██░░░░░░░░] 20%`)는 프론트매터에 `progress.percent`가 있을 때만 마일스톤 세그먼트에 추가됩니다. 없으면 막대가 표시되지 않습니다. + +--- + +## 프론트매터 파싱 제약 사항 + +상태 표시줄 훅은 정규식 기반 파싱을 사용합니다(YAML 라이브러리 없음). 따라서 다음 제약 사항이 적용됩니다. 이는 `tests/enh-2833-phase-lifecycle-statusline.test.cjs`에서 테스트됩니다. + +1. **프론트매터는 파일의 맨 첫 번째 문자에서 시작해야 합니다.** 주석을 포함한 어떤 것이든 여는 `---` 위에 있으면 매칭이 무효화됩니다. 여는 `---` 줄은 정확히 그것이어야 하며, 후행 공백이 없어야 합니다. + +2. **중첩 블록 내의 주석은 지원되지 않습니다.** `progress:` 블록 파서는 다음 줄이 `[ \t]+\w+:`여야 합니다. `progress:`와 첫 번째 키 사이에 `# comment`를 삽입하면 매칭이 깨지고 막대가 사라집니다. 모든 문서는 프론트매터 블록이 아닌 `STATE.md` 본문에 있어야 합니다. + +3. **`next_phases`의 기본 형식은 단일 행 플로우입니다.** 파서는 먼저 `next_phases: ["4.5", "4.6"]`을 시도합니다. 블록 시퀀스(`- 4.5\n- 4.6`)도 파싱되지만 상태 표시줄 렌더링에서는 덜 안정적입니다. 정규식 기반 파서를 예측 가능하게 유지하기 위해 `next_phases`에는 단일 행 플로우를 선호하세요. 문서화 목적으로 많은 후보 페이즈를 기록해야 하는 경우, `STATE.md` 본문에 저장하세요. + +향후 변경으로 정규식 파서를 완전한 YAML 라이브러리로 교체하면 이 제약 사항을 완화하고 테스트를 업데이트할 수 있습니다. + +--- + +## Markdown 본문 섹션 + +본문(닫는 `---` 이후의 모든 것)은 `get-shit-done/templates/state.md`의 템플릿을 따릅니다. 표준 섹션은 다음과 같습니다: + +### Project Reference + +`.planning/PROJECT.md`를 가리킵니다. 다음을 포함합니다: +- **핵심 가치** — `PROJECT.md`의 Core Value 섹션에서 가져온 한 줄짜리 설명. +- **현재 포커스** — 어떤 페이즈가 활성화되어 있는지. + +### Current Position + +프로젝트의 현재 위치: + +| 필드 | 형식 | +|---|---| +| `Phase:` | `X of Y (Phase name)` | +| `Plan:` | `A of B in current phase` | +| `Status:` | 자유 텍스트, 예: `Ready to execute`, `Executing Phase 4`, `Phase complete — ready for verification` | +| `Last activity:` | 핸들러가 기록할 때 ISO 날짜(`YYYY-MM-DD`); 실행기가 작성할 때 서술형 산문 | +| `Progress:` | 시각적 막대, 예: `[████░░░░░░] 40%` | + +이 섹션의 `Status:` 및 `Last activity:` 필드는 기존 값이 알려진 템플릿 기본값인 경우 GSD 핸들러에 의해 업데이트됩니다(크누스 불변량: 실행기가 작성한 값은 보존됩니다). 알려진 핸들러 기본값의 전체 목록은 `get-shit-done/bin/lib/state-document.cjs`의 `KNOWN_TEMPLATE_DEFAULTS`에 있습니다. + +### Performance Metrics + +실행 속도 추적: +- 완료된 총 플랜 수, 플랜당 평균 소요 시간. +- 페이즈별 분석 표(`Phase | Plans | Total | Avg/Plan`). +- 최근 추세: Improving / Stable / Degrading. + +각 플랜 완료 후 업데이트됩니다. + +### Accumulated Context + +**Decisions** — 현재 작업에 영향을 미치는 최근 결정 사항 요약(전체 로그는 `PROJECT.md`에 있음). `gsd-tools state add-decision`을 통해 추가됩니다. + +**Pending Todos** — 개수 및 `.planning/todos/pending/`에 대한 참조. `/gsd-capture`를 통해 캡처됩니다. + +**Blockers/Concerns** — 미래 작업에 영향을 미치는 문제, 발생한 페이즈 접두사 포함. `gsd-tools state add-blocker`를 통해 추가되고, `gsd-tools state resolve-blocker`를 통해 해결됩니다. + +### Session Continuity + +즉각적인 세션 재개를 가능하게 합니다: +- `Last session:` — 마지막 세션의 ISO-8601 타임스탬프. +- `Stopped at:` — 마지막으로 완료된 작업의 설명. +- `Resume file:` — `.continue-here*.md` 파일이 있으면 해당 경로, 없으면 `None`. + +--- + +## 하위 호환성 + +페이즈 생명주기 필드(`active_phase`, `next_action`, `next_phases`, 막대를 위한 `progress.percent`)는 **추가적이며 프로젝트별로 선택 사항**입니다: + +- 생명주기 필드가 하나도 채워지지 않은 `STATE.md`는 v1.38.x 및 이전 버전과 **바이트 단위로 동일하게** 렌더링됩니다. +- 생명주기 필드 추가는 선택 사항입니다 — 렌더러는 필드가 없을 때 우아하게 저하됩니다. +- 진행 막대는 `progress` 블록이 있어도 선택 사항입니다: `progress.percent`만 막대를 트리거하고, `total_phases`와 `completed_phases`만으로는 트리거되지 않습니다. + +`tests/enh-2833-phase-lifecycle-statusline.test.cjs`의 `formatGsdState #2833 backward compatibility` 테스트 스위트는 이 보장을 고정합니다. 레거시 `STATE.md` 렌더링을 깨는 변경 사항은 스위트에서 실패합니다. + +--- + +## Related + +- [Planning artifacts](planning-artifacts.md) +- [Configuration](../../CONFIGURATION.md) +- [The phase loop](../../explanation/the-phase-loop.md) +- [docs index](../../README.md) diff --git a/docs/ko-KR/tutorials/onboarding-an-existing-codebase.md b/docs/ko-KR/tutorials/onboarding-an-existing-codebase.md new file mode 100644 index 000000000..794d62534 --- /dev/null +++ b/docs/ko-KR/tutorials/onboarding-an-existing-codebase.md @@ -0,0 +1,226 @@ +# 기존 코드베이스 온보딩 + +이 튜토리얼에서는 이미 코드가 있는 저장소에 GSD Core를 도입합니다. 코드베이스를 매핑하고, *추가하려는* 내용을 설명하는 프로젝트를 생성한 다음, 작은 변경 사항에 대한 첫 번째 논의-계획 사이클을 실행합니다. 튜토리얼이 끝나면 GSD Core의 계획 파이프라인이 여러분의 기술 스택, 컨벤션, 그리고 관심사를 파악하게 됩니다 — 이후 계획을 수립할 때마다 이 지식을 활용합니다. + +--- + +## 만들 것 + +기존 Express 애플리케이션에 `GET /health` 엔드포인트 하나를 추가합니다. 변경 사항이 충분히 작아서 진짜 핵심 교훈, 즉 GSD Core가 계획을 수립하기 전에 코드베이스를 어떻게 학습하는지에 집중할 수 있습니다. + +--- + +## 사전 준비 + +- **Node.js 18 이상** — `node --version`이 `v18.x.x` 이상을 출력해야 합니다. +- **기존 프로젝트** — 코드가 이미 있는 저장소라면 무엇이든 됩니다. Express일 필요는 없으며, 이 단계들은 어떤 기술 스택에도 적용됩니다. +- **Claude Code** — 저장소 루트에서 열어둡니다. + +--- + +## Step 1 — GSD Core 설치 + +저장소 루트에서 실행합니다: + +```bash +npx @opengsd/gsd-core@latest +``` + +프롬프트가 표시되면 **Claude Code**와 **local**을 선택합니다. 다음과 같이 표시됩니다: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +--- + +## Step 2 — 권한 플래그로 Claude Code 시작 + +```bash +claude --dangerously-skip-permissions +``` + +--- + +## Step 3 — 코드베이스 매핑 + +프로젝트를 생성하기 전에 GSD Core가 이미 존재하는 것을 학습하도록 합니다. 이 단계가 브라운필드 계획의 정확도를 높이는 핵심입니다. + +```text +/gsd-map-codebase +``` + +GSD Core가 4개의 병렬 매퍼 서브 에이전트를 생성합니다("Spawning 4 parallel codebase mapper agents…" 메시지가 표시되며, 1–5분 소요됩니다. 중단하지 마세요). 각 에이전트는 서로 다른 관심사에 집중합니다: + +| 에이전트 | 집중 영역 | +|---------|---------| +| Tech mapper | 기술 스택, 프레임워크, 의존성 | +| Architecture mapper | 패턴, 레이어, 데이터 흐름 | +| Quality mapper | 컨벤션, 테스트 방식 | +| Concerns mapper | 기술 부채, 위험 영역 | + +4개 에이전트가 모두 완료되면 다음과 같이 표시됩니다: + +```text +Codebase mapping complete. + +Created .planning/codebase/: +- STACK.md (47 lines) - Technologies and dependencies +- ARCHITECTURE.md (62 lines) - System design and patterns +- STRUCTURE.md (38 lines) - Directory layout and organisation +- CONVENTIONS.md (55 lines) - Code style and patterns +- TESTING.md (41 lines) - Test structure and practices +- INTEGRATIONS.md (29 lines) - External services and APIs +- CONCERNS.md (33 lines) - Technical debt and issues +``` + +`.planning/codebase/STACK.md`를 열어봅니다. GSD Core가 실제 파일을 읽어서 감지한 언어, 런타임, 프레임워크 버전, 주요 의존성이 표시됩니다 — 추측이 아닌 실제 데이터를 기반으로 합니다. + +`.planning/codebase/CONVENTIONS.md`를 열어봅니다. 소스 코드에서 관찰한 네이밍 컨벤션, 에러 처리 패턴, 코드 스타일 규칙이 표시됩니다. GSD Core가 이 저장소를 위해 생성하는 모든 계획은 이 컨벤션을 자동으로 따릅니다. + +`.planning/codebase/CONCERNS.md`를 열어봅니다. 새로운 기능 작업 전에 가장 먼저 읽어야 할 파일입니다 — 계획에 영향을 줄 수 있는 기술 부채와 취약한 영역을 드러냅니다. + +--- + +## Step 4 — 컨텍스트 초기화 후 프로젝트 생성 + +세션 창을 초기화합니다: + +```text +/clear +``` + +이제 프로젝트를 생성합니다. GSD Core가 이전 단계에서 기존 코드를 발견했으므로, 이미 이것이 브라운필드 프로젝트임을 알고 있습니다. `/gsd-new-project`를 실행하면 기존의 것을 재구성하는 것이 아니라 *추가하는* 것에 집중한 질문을 합니다: + +```text +/gsd-new-project +``` + +GSD Core가 무엇을 만들고 싶은지 묻습니다. 전체 코드베이스에 대한 설명이 아닌 추가하려는 기능으로 답변합니다: + +```text +Add a GET /health endpoint to the Express app. It should return +{ "status": "ok", "uptime": }. We'll use it for load-balancer +health checks. +``` + +GSD Core는 소수의 후속 질문을 한 다음 요구사항과 로드맵 생성을 진행합니다. 이미 `ARCHITECTURE.md`와 `STACK.md`를 읽었으므로, 기존 기능을 `PROJECT.md`의 **Validated** 섹션에 자동으로 매핑합니다 — 기존 API 표면을 직접 설명할 필요가 없습니다. + +모든 워크플로 설정에서 권장 기본값을 선택합니다. + +로드맵 작성 서브 에이전트가 완료되면 제안 로드맵이 표시됩니다. 단일 소규모 변경은 한 단계로 구성됩니다: + +```text +Proposed Roadmap + +1 phase | 2 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|----------------|-----------------------------------------------|--------------| +| 1 | Health endpoint| GET /health returning status and uptime JSON | HLT-01, HLT-02 | +``` + +로드맵을 승인합니다. + +**`.planning/`에 생성되는 파일:** + +```text +.planning/ + PROJECT.md ← 프로젝트 설명; "Validated"에 기존 기능 + REQUIREMENTS.md ← HLT-01, HLT-02 + ROADMAP.md ← Phase 1, 상태: pending + STATE.md ← 세션 메모리 + config.json ← 워크플로 설정 + codebase/ ← Step 3에서 생성된 7개의 맵 파일 +``` + +`.planning/codebase/`는 Step 3에서 이미 생성된 것입니다. `PROJECT.md` 작성 시 GSD Core가 해당 파일들을 읽었기 때문에, 여러분이 직접 설명하지 않아도 Validated 요구사항을 채울 수 있었습니다. + +--- + +## Step 5 — 컨텍스트 초기화 후 Phase 1 논의 + +```text +/clear +``` + +```text +/gsd-discuss-phase 1 +``` + +GSD Core가 `CONVENTIONS.md`와 `ARCHITECTURE.md`를 읽었으므로, 질문들이 실제 코드베이스에 근거합니다 — 일반적인 조언이 아닙니다. 다음과 같은 질문을 받을 수 있습니다: + +```text +> Your routes are registered in src/routes/index.js. Should the health + endpoint live there, or in a dedicated src/routes/health.js? + A dedicated health.js — keep routes separated. + +> Your existing error middleware returns { error: "message" }. Should + /health use the same shape for error responses? + Yes, stay consistent. + +> Should uptime be calculated from process.uptime() or a stored start time? + process.uptime() is fine. +``` + +논의가 끝나면 GSD Core가 다음 파일을 생성합니다: + +```text +.planning/phases/01-health-endpoint/CONTEXT.md +``` + +해당 파일을 열어봅니다. `## Implementation Decisions` 섹션에 여러분의 답변이 기록되어 있습니다. 플래너가 태스크를 하나도 작성하기 전에 이 파일을 읽습니다 — 따라서 파일 배치와 응답 형식에 대한 선호도가 논의뿐 아니라 계획에도 반영됩니다. + +--- + +## Step 6 — Phase 1 계획 + +```text +/gsd-plan-phase 1 +``` + +4개의 리서치 서브 에이전트가 병렬로 실행됩니다(1–5분). 완료되면 플래너가 `CONTEXT.md`, 리서치 결과, 코드베이스 맵을 읽어 컨벤션에 맞는 태스크 계획을 생성합니다. + +**생성되는 파일:** + +```text +.planning/phases/01-health-endpoint/ + RESEARCH.md ← health 엔드포인트 패턴에 대한 리서치 결과 + 01-01-PLAN.md ← 태스크: src/routes/health.js 생성 + 01-02-PLAN.md ← 태스크: src/routes/index.js에 health 라우트 등록 +``` + +`01-01-PLAN.md`를 열어봅니다. `` 태그에 `src/routes/health.js`가 참조되어 있습니다 — 논의에서 지정한 정확한 경로이며, GSD Core가 코드베이스 맵에서 관찰한 라우팅 패턴과 일치합니다. 코드베이스 맵이 실제로 작동하는 모습입니다. + +--- + +## 다음 단계 + +이제 코드베이스 맵, 논의 결정 기록, 검증된 태스크 계획을 갖춘 프로젝트가 완성되었습니다 — 모두 실제 코드에 근거합니다. 이후 워크플로는 그린필드 프로젝트와 동일합니다: + +```text +/gsd-execute-phase 1 +/gsd-verify-work 1 +/gsd-ship 1 +``` + +앞으로 새로운 기능을 추가할 때마다 구조가 크게 바뀌면 `/gsd-map-codebase`를 다시 실행하여 코드베이스 맵을 최신 상태로 유지합니다. + +--- + +## 배운 내용 + +- `/gsd-map-codebase`가 4개의 병렬 에이전트를 실행하여 `.planning/codebase/`에 `STACK.md`, `ARCHITECTURE.md`, `CONVENTIONS.md`, `CONCERNS.md`, `STRUCTURE.md`, `TESTING.md`, `INTEGRATIONS.md`를 생성하는 방법. +- 브라운필드 저장소에서 `/gsd-new-project`가 *추가하는* 것에 집중한 질문을 하고 기존 코드에서 Validated 요구사항을 채우는 방법. +- 코드베이스 맵이 `/gsd-discuss-phase`의 모든 질문을 형성하는 방법 — 파일 경로, 패턴, 컨벤션이 실제 코드에서 옵니다. +- 플래너가 `CONTEXT.md`와 `CONVENTIONS.md`를 함께 읽어 저장소 스타일에 맞는 계획을 생성하는 방법. + +--- + +## Related + +- [Your first project](your-first-project.md) — 설치부터 PR까지 전체 그린필드 루프 +- [Map codebase via Commands](../COMMANDS.md) — `/gsd-map-codebase`의 모든 플래그와 서브커맨드 +- [Documentation index](../README.md) diff --git a/docs/ko-KR/tutorials/your-first-project.md b/docs/ko-KR/tutorials/your-first-project.md new file mode 100644 index 000000000..2e226b036 --- /dev/null +++ b/docs/ko-KR/tutorials/your-first-project.md @@ -0,0 +1,291 @@ +# 첫 번째 프로젝트 + +이 튜토리얼에서는 GSD Core를 설치하고, 간단한 커맨드라인 할 일(to-do) 앱을 처음부터 만들어봅니다 — 하나의 단계(phase), 하나의 PR, 그리고 전체 루프를 경험합니다. 튜토리얼이 끝나면 핵심 단계 루프의 모든 명령어를 최소 한 번씩 실행해보고, 각 명령어가 생성하는 계획 산출물도 확인하게 됩니다. + +--- + +## 만들 것 + +로컬 JSON 파일에 저장된 할 일 항목을 추가하고, 목록을 보고, 완료 처리할 수 있는 Node.js CLI입니다. 한 세션 안에 완성할 만큼 작고, Node.js 표준 라이브러리만 사용하므로 별도로 설치할 것이 없습니다. + +--- + +## 사전 준비 + +- **Node.js 18 이상** — `node --version`이 `v18.x.x` 이상을 출력해야 합니다. +- **Claude Code** — 사용하려는 프로젝트 디렉터리에서 열어둡니다. +- 초기 설치를 위한 인터넷 연결. + +그 외 도구는 필요하지 않습니다. GSD Core는 다음 단계에서 설치합니다. + +--- + +## Step 1 — GSD Core 설치 + +프로젝트 디렉터리에서 터미널을 열고 실행합니다: + +```bash +npx @opengsd/gsd-core@latest +``` + +설치 프로그램이 사용 중인 AI 코딩 런타임과 전역 설치 또는 현재 프로젝트 설치 여부를 묻습니다. 지금은 **Claude Code**와 **local**(이 프로젝트에만)을 선택합니다. + +다음과 같은 출력이 표시됩니다: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +프로젝트 안에 `.claude/` 디렉터리가 생성된 것을 확인할 수 있습니다. GSD Core의 명령어와 에이전트가 이곳에 저장됩니다. + +> 로컬 vs 전역 설치 이유? 로컬 설치는 이 프로젝트에 스킬 버전을 고정합니다. 전역 설치가 필요하다면 [런타임에 설치하기](../how-to/install-on-your-runtime.md)를 참고하세요. + +--- + +## Step 2 — 권한 플래그로 Claude Code 시작 + +GSD Core는 파일을 읽고 쓰는 서브 에이전트를 생성합니다. 모든 파일 작업마다 확인을 요청하지 않도록 권한 플래그를 사용해 Claude Code를 시작합니다: + +```bash +claude --dangerously-skip-permissions +``` + +프로젝트 디렉터리에서 Claude Code 프롬프트로 이동됩니다. + +--- + +## Step 3 — 프로젝트 생성 + +Claude Code 프롬프트에 다음 슬래시 명령어를 입력합니다: + +```text +/gsd-new-project +``` + +GSD Core가 대화를 시작합니다. 먼저 질문을 하나 합니다: + +```text +What do you want to build? +``` + +다음과 같이 입력합니다: + +```text +A Node.js CLI tool for managing to-do items. Users run `todo add "buy milk"`, +`todo list`, and `todo done 1`. Items are saved to a local todos.json file. +No external dependencies — Node built-ins only. +``` + +GSD Core는 몇 가지 후속 질문을 합니다. 자연스럽게 답변하면 됩니다. 계획을 하나도 작성하기 전에 먼저 여러분이 중요하게 생각하는 것을 파악합니다. + +질문이 끝나면 도메인 리서치 실행 여부를 묻습니다. 이 정도 규모의 프로젝트는 리서치를 건너뛰어도 됩니다 — 프롬프트가 표시될 때 **Skip research**를 선택합니다. + +그런 다음 GSD Core가 워크플로 설정(모드, 세분화 수준, 리서치 에이전트)을 선택하도록 안내합니다. 각 항목마다 권장 기본값을 선택합니다. 이 설정들은 `.planning/config.json`에 저장됩니다. + +마지막으로 로드맵 작성 서브 에이전트가 실행됩니다("Spawning roadmapper…" 메시지가 표시되는 것은 정상이며, 약 1분 정도 소요됩니다). 완료되면 GSD Core가 제안 로드맵을 제시합니다. 단일 단계 프로젝트라면 다음과 같이 표시됩니다: + +```text +Proposed Roadmap + +1 phase | 4 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|--------------------|-----------------------------------------|-------------------| +| 1 | Core CLI | add / list / done commands, todos.json | CLI-01 … CLI-04 | +``` + +**Approve**를 입력해 로드맵을 승인합니다. + +**`.planning/`에 생성되는 파일:** + +```text +.planning/ + PROJECT.md ← 프로젝트 설명과 요구사항 + REQUIREMENTS.md ← 모든 v1 기능의 REQ-ID + ROADMAP.md ← Phase 1, 상태: pending + STATE.md ← 세션 메모리, 현재 위치 + config.json ← 워크플로 설정 +``` + +지금 `.planning/ROADMAP.md`를 열어 살펴봅니다. Phase 1에는 목표(Goal), 충족해야 할 요구사항 목록, 그리고 성공 기준(Success Criteria) — 실행이 반드시 달성해야 하는 관찰 가능한 동작 — 이 포함되어 있습니다. + +--- + +## Step 4 — 컨텍스트 초기화 후 Phase 1 논의 + +GSD Core는 새로운 컨텍스트를 기반으로 동작하도록 설계되었습니다. 각 단계를 시작하기 전에 메인 세션 창을 초기화합니다: + +```text +/clear +``` + +그런 다음 Phase 1 논의를 시작합니다: + +```text +/gsd-discuss-phase 1 +``` + +GSD Core가 단계 목표를 읽고 구현 방식에 대해 질문합니다. 이는 *무엇을* 만들지가 아닌 *어떻게* 만들지를 결정하는 과정입니다. 예시 대화: + +```text +> How should done items be stored — mark them in place or move them? + Mark them in place with a "done" flag. + +> Should `todo list` show completed items by default? + No, hide them unless --all is passed. + +> Error format when todos.json doesn't exist yet? + Create it silently on first add. +``` + +논의가 끝나면 GSD Core가 다음 파일을 생성합니다: + +```text +.planning/phases/01-core-cli/CONTEXT.md +``` + +해당 파일을 열어봅니다. `## Implementation Decisions` 섹션에 여러분이 말한 내용이 정확히 기록되어 있습니다. 플래너가 이 파일을 읽으므로, 여기서 결정한 내용이 모든 태스크 계획에 반영됩니다. + +--- + +## Step 5 — Phase 1 계획 + +```text +/gsd-plan-phase 1 +``` + +4개의 리서치 서브 에이전트가 병렬로 실행됩니다("Spawning 4 researchers…" 메시지가 표시됩니다). 1–5분 정도 소요됩니다. 중단하지 마세요. + +완료되면 플래너가 CONTEXT.md와 리서치 결과를 바탕으로 원자적 태스크 계획을 생성합니다. 플랜 검사기가 각 계획이 단계 목표를 달성하는지 확인한 후 저장합니다. + +**생성되는 파일:** + +```text +.planning/phases/01-core-cli/ + RESEARCH.md ← 도메인 리서치 결과 + 01-01-PLAN.md ← 태스크: todos.json 읽기/쓰기 헬퍼 생성 + 01-02-PLAN.md ← 태스크: add / list / done 명령어 구현 +``` + +`01-01-PLAN.md`를 열어봅니다. 이름, 관련 파일, 실행 단계, 검증 명령어, 완료 조건이 담긴 `` 블록을 확인할 수 있습니다. `` 태그에 주목하세요 — GSD Core의 실행기가 코드 작성 후 해당 명령어를 실행합니다. + +--- + +## Step 6 — Phase 1 실행 + +```text +/gsd-execute-phase 1 +``` + +GSD Core가 계획을 웨이브(독립적인 계획은 병렬로 실행)로 묶고, 계획별로 새로운 200k 컨텍스트 실행기를 생성하며, 각 태스크를 원자적으로 커밋합니다. + +다음과 같은 출력이 표시됩니다: + +```text +Wave 1 (parallel): + [Executor A] → 01-01-PLAN.md (read/write helpers) ✓ committed + [Executor B] → 01-02-PLAN.md (CLI commands) ✓ committed + +[Verifier] Checking codebase against phase goals... + CLI-01 todo add ✓ + CLI-02 todo list ✓ + CLI-03 todo done ✓ + CLI-04 --all flag ✓ + Status: PASS +``` + +**생성되는 파일:** + +```text +.planning/phases/01-core-cli/ + 01-01-SUMMARY.md ← Executor A가 빌드하고 커밋한 내용 + 01-02-SUMMARY.md ← Executor B가 빌드하고 커밋한 내용 + VERIFICATION.md ← REQ 커버리지: PASS +``` + +이제 CLI를 실행해봅니다: + +```bash +node todo.js add "buy milk" +node todo.js add "write tests" +node todo.js list +node todo.js done 1 +node todo.js list +``` + +항목이 나타나고, 완료 처리한 항목 1번이 기본 목록에서 사라지는 것을 확인할 수 있습니다. 이것이 GSD Core가 전달하는 첫 번째 가시적인 결과입니다. + +--- + +## Step 7 — 작업 검증 + +```text +/gsd-verify-work 1 +``` + +GSD Core가 단계의 성공 기준을 추출하고 하나씩 확인합니다: + +```text +[1/3] Can you run `node todo.js add "buy milk"` without errors? +> yes + +[2/3] Does `node todo.js list` show only incomplete items by default? +> yes + +[3/3] Does `node todo.js done 1` mark item 1 complete and hide it from the default list? +> yes + +All 3 checks passed. Phase 1 verified. +``` + +검사가 실패하면 GSD Core가 근본 원인을 진단하고 수정 계획을 생성합니다. `/gsd-execute-phase 1`을 다시 실행해 수정을 적용한 후, `/gsd-verify-work 1`을 다시 실행합니다. + +**생성되는 파일:** + +```text +.planning/phases/01-core-cli/UAT.md ← 모든 검사 항목과 결과 +``` + +--- + +## Step 8 — 배포 + +```text +/gsd-ship 1 +``` + +GSD Core가 자동 생성된 본문으로 풀 리퀘스트를 생성합니다. PR 본문에는 항상 요약(Summary), 변경 사항(Changes), 요구사항 반영(Requirements Addressed), 검증(Verification), 핵심 결정사항(Key Decisions)이 포함됩니다. + +다음과 같이 표시됩니다: + +```text +Pull request created: https://github.com/your-org/your-repo/pull/1 + +Title: feat(phase-1): core CLI — add / list / done commands +``` + +이것이 하나의 단계(phase)에 대한 아이디어부터 PR 머지까지의 전체 루프입니다. + +--- + +## 배운 내용 + +- `npx @opengsd/gsd-core@latest`로 GSD Core를 설치하는 방법. +- `/gsd-new-project`가 대화를 통해 `.planning/` 산출물로 뒷받침되는 로드맵으로 전환하는 방법. +- `/gsd-discuss-phase`가 계획 수립 전에 구현 결정사항을 기록하는 방법. +- `/gsd-plan-phase`가 병렬 리서처를 생성하고 원자적 태스크 계획을 만드는 방법. +- `/gsd-execute-phase`가 해당 계획을 병렬 웨이브로 실행하고 각 태스크를 커밋하는 방법. +- `/gsd-verify-work`가 성공 기준을 하나씩 확인하고 필요 시 수정 계획을 생성하는 방법. +- `/gsd-ship`이 검증된 단계를 풀 리퀘스트로 전환하는 방법. + +멀티 단계 프로젝트의 경우 각 단계마다 Step 4–8을 반복한 다음, `/gsd-progress --next`를 실행해 GSD Core가 다음 단계를 자동으로 감지하도록 합니다. + +--- + +## Related + +- [The phase loop](../explanation/the-phase-loop.md) — 루프가 이런 구조를 가지는 이유 +- [How-to guides](../README.md#how-to-guides) — 특정 상황에 대한 태스크 중심 레시피 +- [Onboarding an existing codebase](onboarding-an-existing-codebase.md) — 브라운필드 레포에 GSD Core 도입하기 diff --git a/docs/ko-KR/workflow-discuss-mode.md b/docs/ko-KR/workflow-discuss-mode.md index 4d07f3a56..1300953ed 100644 --- a/docs/ko-KR/workflow-discuss-mode.md +++ b/docs/ko-KR/workflow-discuss-mode.md @@ -1,65 +1,75 @@ -# Discuss 모드: Assumptions vs Interview +# 논의 모드: 가정 vs 인터뷰 -GSD의 discuss 단계는 플래닝 전에 구현 컨텍스트를 수집하는 두 가지 모드를 제공합니다. +GSD Core의 discuss-phase는 계획 전에 구현 컨텍스트를 수집하기 위한 두 가지 모드를 제공한다. 각 모드를 언제 사용해야 하는지 이해하면 더 적은 주고받음으로 확인된 `CONTEXT.md`에 도달할 수 있다. + +두 모드 중 하나를 실행하는 단계별 지침은 [단계 논의하기 how-to](how-to/discuss-a-phase.md)를 참조하라. ## 모드 ### `discuss` (기본값) -기존의 인터뷰 방식 흐름입니다. Claude가 단계에서 불명확한 영역을 파악하고 선택지를 제시한 뒤 영역당 약 4개의 질문을 합니다. 다음 상황에 적합합니다. +원래의 인터뷰 스타일 흐름. Claude가 단계의 회색 영역을 식별하고 선택을 위해 표시한 다음 영역당 약 네 가지 질문을 한다. 다음 경우에 적합하다: -- 코드베이스가 새로운 초기 단계 -- 사용자가 사전에 강한 의견을 표현하고 싶은 단계 -- 안내된 대화식 컨텍스트 수집을 선호하는 사용자 +- 코드베이스가 새로운 초반 단계 +- 사용자가 사전에 표현하고 싶은 강한 의견이 있는 단계 +- 가이드된 대화식 컨텍스트 수집을 선호하는 사용자 ### `assumptions` -코드베이스 우선 방식의 흐름입니다. Claude가 서브에이전트를 통해 코드베이스를 깊이 분석하고 (관련 파일 5~15개 읽기) 근거가 있는 가정을 도출하여 확인 또는 수정을 위해 제시합니다. 다음 상황에 적합합니다. +코드베이스 우선 흐름. Claude가 서브에이전트를 통해 코드베이스를 깊이 분석하고(관련 파일 5-15개 읽기), 증거를 바탕으로 가정을 형성하며, 확인 또는 수정을 위해 표시한다. 다음 경우에 적합하다: -- 명확한 패턴이 있는 기존 코드베이스 -- 인터뷰 질문이 당연하게 느껴지는 사용자 -- 빠른 컨텍스트 수집 (~15~20번 대신 ~2~4번의 상호작용) +- 명확한 패턴을 가진 기존 코드베이스 +- 인터뷰 질문들이 당연하게 느껴지는 사용자 +- 더 빠른 컨텍스트 수집 (~2-4회 상호작용 vs ~15-20회) ## 설정 ```bash # assumptions 모드 활성화 -gsd-tools config-set workflow.discuss_mode assumptions +node gsd-tools.cjs config-set workflow.discuss_mode assumptions -# interview 모드로 전환 -gsd-tools config-set workflow.discuss_mode discuss +# 인터뷰 모드로 전환 +node gsd-tools.cjs config-set workflow.discuss_mode discuss ``` -설정은 프로젝트별로 적용되며 `.planning/config.json`에 저장됩니다. +설정은 프로젝트별이다(`.planning/config.json`에 저장). 두 모드 모두가 생성하는 파일의 전체 구조는 [CONTEXT.md 스키마](reference/context-md.md)를 참조하라. -## Assumptions 모드 동작 방식 +## Assumptions 모드 작동 방식 -1. **Init** — discuss 모드와 동일 (이전 컨텍스트 로드, 코드베이스 스카우트, todo 확인) -2. **심층 분석** — explore 서브에이전트가 단계와 관련된 코드베이스 파일 5~15개를 읽음 -3. **가정 제시** — 각 가정에는 다음이 포함됩니다. - - Claude가 할 작업과 그 이유 (파일 경로 인용) - - 가정이 틀렸을 때 발생하는 문제 +1. **초기화** — discuss 모드와 동일 (이전 컨텍스트 로드, 코드베이스 스카우트, 할 일 확인) +2. **깊이 분석** — 탐색 서브에이전트가 단계와 관련된 코드베이스 파일 5-15개를 읽음 +3. **가정 표시** — 각 가정에 포함: + - Claude가 무엇을 하고 왜 하는지 (파일 경로 인용) + - 가정이 잘못된 경우 무엇이 잘못될 수 있는지 - 신뢰도 수준 (Confident / Likely / Unclear) -4. **확인 또는 수정** — 사용자가 가정을 검토하고 변경이 필요한 항목을 선택 +4. **확인 또는 수정** — 사용자가 가정을 검토하고 변경이 필요한 것을 선택 5. **CONTEXT.md 작성** — discuss 모드와 동일한 출력 형식 ## 플래그 호환성 | 플래그 | `discuss` 모드 | `assumptions` 모드 | -|--------|----------------|-------------------| -| `--auto` | 권장 답변을 자동으로 선택 | 확인 단계를 건너뛰고 Unclear 항목을 자동으로 처리 | -| `--batch` | 질문을 배치로 묶어서 처리 | 해당 없음 (수정 사항이 이미 배치로 처리됨) | -| `--text` | 일반 텍스트 질문 (원격 세션) | 일반 텍스트 질문 (원격 세션) | -| `--analyze` | 질문별 트레이드오프 표 표시 | 해당 없음 (가정에 근거가 포함됨) | +|------|----------------|-------------------| +| `--auto` | 추천 답변 자동 선택 | 확인 게이트 건너뜀, 불분명 항목 자동 해결 | +| `--batch` | 질문을 배치로 그룹화 | 해당 없음 (수정 사항이 이미 배치 처리됨) | +| `--text` | 텍스트 형식 질문 (원격 세션) | 텍스트 형식 질문 (원격 세션) | +| `--analyze` | 질문당 트레이드오프 테이블 표시 | 해당 없음 (가정에 증거 포함) | ## 출력 -두 모드 모두 동일한 6개 섹션을 포함하는 CONTEXT.md를 생성합니다. -- `` — 단계 범위 -- `` — 확정된 구현 결정사항 -- `` — 하위 에이전트가 반드시 읽어야 할 스펙/문서 -- `` — 재사용 가능한 자산, 패턴, 통합 지점 -- `` — 사용자 참고 자료 및 선호사항 -- `` — 향후 단계를 위해 기록된 아이디어 +두 모드 모두 동일한 여섯 섹션을 가진 동일한 `CONTEXT.md`를 생성한다: -하위 에이전트(researcher, planner, checker)는 모드에 관계없이 동일하게 이 파일을 사용합니다. +- `` — 단계 경계 +- `` — 확정된 구현 결정 사항 +- `` — 하위 에이전트들이 읽어야 하는 사양/문서 +- `` — 재사용 가능한 자산, 패턴, 통합 포인트 +- `` — 사용자 참조 사항과 선호도 +- `` — 미래 단계를 위해 메모된 아이디어 + +하위 에이전트들(리서처, 플래너, 검사기)은 어느 모드가 생성했든 관계없이 이 파일을 동일하게 소비한다. 전체 필드 레퍼런스는 [CONTEXT.md 스키마](reference/context-md.md)를 참조하라. + +## Related + +- [단계 논의하기](how-to/discuss-a-phase.md) — 두 모드 중 하나로 `/gsd-discuss-phase`를 실행하는 단계별 how-to. +- [CONTEXT.md 스키마](reference/context-md.md) — 두 모드 모두가 생성하는 파일의 전체 필드 레퍼런스. +- [단계 루프](explanation/the-phase-loop.md) — 논의가 더 넓은 논의 → 계획 → 실행 → 검증 → 출시 사이클에서 어떻게 맞는지. +- [문서 인덱스](README.md) — GSD Core 문서의 전체 목차. diff --git a/docs/pt-BR/ARCHITECTURE.md b/docs/pt-BR/ARCHITECTURE.md index 14cc3b78f..009ddf150 100644 --- a/docs/pt-BR/ARCHITECTURE.md +++ b/docs/pt-BR/ARCHITECTURE.md @@ -1,81 +1,780 @@ # Arquitetura do GSD Core -Visão arquitetural do GSD Core (Git. Ship. Done.) em Português. -Para detalhes de implementação linha a linha, consulte [ARCHITECTURE.md em inglês](../ARCHITECTURE.md). +> Arquitetura do sistema para contribuidores e usuários avançados. Para a documentação voltada ao usuário, consulte a [Referência de Funcionalidades](FEATURES.md) ou o [Guia do Usuário](USER-GUIDE.md). --- -## Princípios +## Índice -- **Orquestração leve** no contexto principal -- **Trabalho pesado em subagentes** -- **Artefatos persistentes** em `.planning/` -- **Validação contínua** por fase -- **Rastreabilidade** por commits atômicos +- [Visão Geral do Sistema](#visão-geral-do-sistema) +- [Princípios de Design](#princípios-de-design) +- [Arquitetura de Componentes](#arquitetura-de-componentes) +- [Modelo de Agentes](#modelo-de-agentes) +- [Fluxo de Dados](#fluxo-de-dados) +- [Estrutura do Sistema de Arquivos](#estrutura-do-sistema-de-arquivos) +- [Arquitetura do Instalador](#arquitetura-do-instalador) +- [Sistema de Hooks](#sistema-de-hooks) +- [Camada de Ferramentas CLI](#camada-de-ferramentas-cli) +- [Abstração de Runtime](#abstração-de-runtime) -## Componentes centrais +--- -1. **Camada de comando** - Recebe entrada do usuário (`/gsd-*`) e roteia fluxo. +## Visão Geral do Sistema -2. **Camada de orquestração** - Coordena pesquisadores, planejadores, executores e verificadores. +O GSD Core é um **framework de meta-prompting** que fica entre o usuário e os agentes de codificação com IA (Claude Code, Gemini CLI, OpenCode, Kilo, Codex, Copilot, Antigravity, Trae, Cline, Augment Code). Ele fornece: -3. **Camada de artefatos** - Mantém `PROJECT.md`, `REQUIREMENTS.md`, `ROADMAP.md`, `STATE.md`, planos e sumários. +1. **Engenharia de contexto** — Artefatos estruturados que fornecem à IA tudo o que ela precisa por tarefa (consulte [Engenharia de contexto](explanation/context-engineering.md)) +2. **Orquestração multi-agente** — Orquestradores leves que criam agentes especializados com janelas de contexto novas (consulte [Orquestração multi-agente](explanation/multi-agent-orchestration.md)) +3. **Desenvolvimento orientado por especificações** — Pipeline de Requisitos → pesquisa → planos → execução → verificação +4. **Gerenciamento de estado** — Memória persistente do projeto entre sessões e reinicializações de contexto -4. **Camada de execução** - Roda tarefas em ondas, respeitando dependências. - -5. **Camada de validação** - Compara entrega contra objetivos, testes e critérios de fase. - -## Fluxo arquitetural (alto nível) - -```text -Entrada (/gsd-comando) - -> Orquestrador - -> Subagentes especializados - -> Artefatos em .planning/ - -> Execução em ondas - -> Verificação/UAT - -> Atualização de estado + commits +``` +┌──────────────────────────────────────────────────────┐ +│ USUÁRIO │ +│ /gsd-command [args] │ +└─────────────────────┬────────────────────────────────┘ + │ +┌─────────────────────▼────────────────────────────────┐ +│ CAMADA DE COMANDOS │ +│ commands/gsd/*.md — Arquivos de comandos baseados │ +│ em prompts (comandos customizados Claude Code / │ +│ skills do Codex) │ +└─────────────────────┬────────────────────────────────┘ + │ +┌─────────────────────▼────────────────────────────────┐ +│ CAMADA DE WORKFLOWS │ +│ get-shit-done/workflows/*.md — Lógica de │ +│ orquestração │ +│ (Lê referências, cria agentes, gerencia estado) │ +└──────┬──────────────┬─────────────────┬──────────────┘ + │ │ │ +┌──────▼──────┐ ┌─────▼─────┐ ┌────────▼───────┐ +│ AGENTE │ │ AGENTE │ │ AGENTE │ +│ (contexto │ │ (contexto│ │ (contexto │ +│ novo) │ │ novo) │ │ novo) │ +└──────┬──────┘ └─────┬─────┘ └────────┬───────┘ + │ │ │ +┌──────▼──────────────▼─────────────────▼──────────────┐ +│ CAMADA DE FERRAMENTAS CLI │ +│ gsd-tools.cjs command families + domain modules │ +│ command-routing-hub + observability seams │ +└──────────────────────┬───────────────────────────────┘ + │ +┌──────────────────────▼───────────────────────────────┐ +│ SISTEMA DE ARQUIVOS (.planning/) │ +│ PROJECT.md | REQUIREMENTS.md | ROADMAP.md │ +│ STATE.md | config.json | phases/ | research/ │ +└──────────────────────────────────────────────────────┘ ``` -## Estado e persistência +--- -- `STATE.md`: memória operacional da jornada -- `ROADMAP.md`: visão de progresso por fase -- `SUMMARY.md`: histórico de decisões e resultados por tarefa -- `VALIDATION.md` (quando aplicável): contrato de feedback automatizado +## Princípios de Design -## Paralelismo +### 1. Contexto Novo por Agente -- Planos independentes: mesma onda (execução paralela) -- Planos dependentes: ondas posteriores (execução sequencial) -- Conflitos de arquivo: serialização controlada +Cada agente criado por um orquestrador recebe uma janela de contexto limpa (até 200 mil tokens). Isso elimina o desgaste do contexto — a degradação de qualidade que ocorre à medida que uma IA preenche sua janela de contexto com a conversa acumulada. -## Segurança +### 2. Orquestradores Leves -- validação de caminhos de arquivo -- detecção de prompt injection -- hooks de guarda para escrita/edição sensível -- scanner CI para padrões de risco +Os arquivos de workflow (`get-shit-done/workflows/*.md`) nunca fazem trabalho pesado. Eles: -## Runtimes suportados (v1.32) +- Carregam contexto via `gsd-tools.cjs init ` +- Criam agentes especializados com prompts focados +- Coletam resultados e encaminham para a próxima etapa +- Atualizam o estado entre as etapas -Claude Code, Gemini CLI, OpenCode, Kilo, Codex, Copilot, Antigravity, Trae, Cline, Augment Code. +### 3. Estado Baseado em Arquivos -## Extensibilidade +Todo o estado fica em `.planning/` como Markdown e JSON legíveis por humanos. Sem banco de dados, sem servidor, sem dependências externas. Isso significa: -GSD suporta evolução por: +- O estado sobrevive a reinicializações de contexto (`/clear`) +- O estado é inspecionável tanto por humanos quanto por agentes +- O estado pode ser commitado no git para visibilidade da equipe -- novos comandos -- novos tipos de agente -- novos artefatos por fase -- novos gates de qualidade/segurança +### 4. Ausente = Habilitado + +Os feature flags de workflow seguem o padrão **ausente = habilitado**. Se uma chave estiver ausente do `config.json`, o padrão é `true`. Os usuários desabilitam funcionalidades explicitamente; não precisam habilitar os padrões. + +### 5. Defesa em Profundidade + +Múltiplas camadas previnem modos comuns de falha: + +- Os planos são verificados antes da execução (agente plan-checker) +- A execução produz commits atômicos por tarefa +- A verificação pós-execução confronta os objetivos da fase +- O UAT fornece verificação humana como portão final --- -> [!NOTE] -> Esta versão foi criada para consulta de arquitetura em Português. A especificação canônica e completa continua no documento em inglês. +## Arquitetura de Componentes + +### Comandos (`commands/gsd/*.md`) + +Pontos de entrada voltados ao usuário. Cada arquivo contém frontmatter YAML (name, description, allowed-tools) e um corpo de prompt que inicializa o workflow. Os comandos são instalados como: + +- **Claude Code:** Comandos slash customizados (forma com hífen, `/gsd-command-name`) +- **OpenCode / Kilo:** Comandos slash (forma com hífen, `/gsd-command-name`) +- **Codex:** Skills (`$gsd-command-name`) +- **Copilot:** Comandos slash (forma com hífen, `/gsd-command-name`) +- **Gemini CLI:** Comandos slash sob o namespace `gsd:` (forma com dois-pontos, `/gsd:command-name`) — o Gemini agrupa todos os comandos customizados sob o id do plugin, portanto a instalação reescreve cada referência no corpo do texto para a forma com dois-pontos +- **Antigravity:** Skills + +**Total de comandos:** consulte [`docs/INVENTORY.md`](INVENTORY.md#commands) para a contagem oficial e o roster completo. + +#### Roteamento hierárquico em dois estágios (v1.40, [#2792](https://github.com/open-gsd/gsd-core/issues/2792)) + +Para manter baixo o custo em tokens da listagem de skills antecipada, a v1.40 introduz seis **meta-skills** de namespace (`gsd-workflow`, `gsd-project`, `gsd-quality`, `gsd-context`, `gsd-manage`, `gsd-ideate` — originados de `commands/gsd/ns-*.md`, mas o `name:` invocável é a forma básica mostrada aqui) dispostos acima das sub-skills concretas. O modelo vê 6 roteadores de namespace (~120 tokens) em vez de uma listagem plana de 86 skills (~2.150 tokens), seleciona um namespace e depois roteia para a sub-skill concreta via tabela de roteamento embutida no corpo do roteador de namespace. As skills de namespace são **aditivas** — cada comando concreto ainda é diretamente invocável. + +As descrições dos roteadores usam tags de palavras-chave separadas por pipe (≤ 60 caracteres) conforme a pesquisa Tool Attention, que mostra que tags ricas em palavras-chave superam a prosa no roteamento com ~40% do custo em tokens. + +#### Interação com o orçamento de tokens do MCP + +A listagem de skills antecipada é um dos dois custos recorrentes de tokens por turno. O outro é o schema de ferramenta MCP injetado por cada servidor MCP habilitado em `.claude/settings.json`. Servidores MCP pesados (browser/playwright, Mac-tools, Windows-tools) podem custar mais de 20 mil tokens por turno cada — muitas vezes eclipsando o que o ajuste do `model_profile` economiza. O controle fica no harness do Claude Code (`enabledMcpjsonServers` / `disabledMcpjsonServers` em `.claude/settings.json`) e **não** é uma preocupação do GSD. Juntos, a camada de roteamento em dois estágios (#2792) e o controle criterioso do MCP são as maiores alavancas de custo por turno. Consulte [`docs/USER-GUIDE.md`](USER-GUIDE.md) e `references/context-budget.md` para o checklist de auditoria. + +### Workflows (`get-shit-done/workflows/*.md`) + +Lógica de orquestração que os comandos referenciam. Contém o processo passo a passo, incluindo: + +- Carregamento de contexto via handlers `gsd-tools.cjs init` +- Instruções de criação de agente com resolução de modelo +- Definições de portões/checkpoints +- Padrões de atualização de estado +- Tratamento de erros e recuperação + +**Total de workflows:** consulte [`docs/INVENTORY.md`](INVENTORY.md#workflows) para a contagem oficial e o roster completo. + +#### Divulgação progressiva para workflows + +Os arquivos de workflow são carregados verbatim no contexto do Claude cada vez que o +comando `/gsd-*` correspondente é invocado. Para manter esse custo limitado, o +orçamento de tamanho de workflow aplicado por `tests/workflow-size-budget.test.cjs` +espelha o orçamento de agentes de #2361: + +| Tier | Limite de linhas por arquivo | +|-----------|------------------------------| +| `XL` | 1700 — orquestradores de nível superior (`execute-phase`, `plan-phase`, `new-project`) | +| `LARGE` | 1500 — planejadores com múltiplas etapas e workflows de funcionalidades grandes | +| `DEFAULT` | 1000 — workflows simples e de propósito único (o tier alvo) | + +`workflows/discuss-phase.md` é mantido em um teto mais restrito de <500 linhas conforme +a issue #2551. Quando um workflow cresce além de seu tier, extraia os corpos por modo +em `workflows//modes/.md`, templates em +`workflows//templates/`, e conhecimento compartilhado em +`get-shit-done/references/`. O arquivo pai se torna um despachante leve que +lê apenas os arquivos de modo e template necessários para a invocação atual. + +`workflows/discuss-phase/` é o exemplo canônico deste padrão — +o pai despacha, modes/ contém o comportamento por flag (`power.md`, `all.md`, +`auto.md`, `chain.md`, `text.md`, `batch.md`, `analyze.md`, `default.md`, +`advisor.md`), e templates/ contém os schemas CONTEXT.md, DISCUSSION-LOG.md e +checkpoint.json que são lidos apenas quando o arquivo de saída correspondente +está sendo escrito. + +### Agentes (`agents/*.md`) + +Definições de agentes especializados com frontmatter especificando: + +- `name` — Identificador do agente +- `description` — Papel e propósito +- `tools` — Acesso às ferramentas permitidas (Read, Write, Edit, Bash, Grep, Glob, WebSearch, etc.) +- `color` — Cor de saída no terminal para distinção visual + +**Total de agentes:** 33 + +### Referências (`get-shit-done/references/*.md`) + +Documentos de conhecimento compartilhado que workflows e agentes `@-referenciam` (consulte [`docs/INVENTORY.md`](INVENTORY.md#references-41-shipped) para a contagem oficial e o roster completo): + +**Referências principais:** + +- `checkpoints.md` — Definições de tipos de checkpoint e padrões de interação +- `gates.md` — 4 tipos canônicos de portões (Confirm, Quality, Safety, Transition) conectados ao plan-checker e ao verifier +- `model-profiles.md` — Atribuições de tier de modelo por agente +- `model-profile-resolution.md` — Documentação do algoritmo de resolução de modelo +- `verification-patterns.md` — Como verificar diferentes tipos de artefatos +- `verification-overrides.md` — Regras de substituição de verificação por artefato +- `planning-config.md` — Schema completo de configuração e comportamento +- `git-integration.md` — Padrões de commit no git, branching e histórico +- `git-planning-commit.md` — Convenções de commit do diretório de planejamento +- `questioning.md` — Filosofia de extração de visão para inicialização de projetos +- `tdd.md` — Padrões de integração de desenvolvimento orientado por testes +- `ui-brand.md` — Padrões de formatação de saída visual +- `common-bug-patterns.md` — Padrões comuns de bugs para revisão de código e verificação + +**Referências de workflow:** + +- `agent-contracts.md` — Interface formal entre orquestradores e agentes +- `context-budget.md` — Regras de alocação do orçamento da janela de contexto +- `continuation-format.md` — Formato de continuação/retomada de sessão +- `domain-probes.md` — Perguntas de sondagem específicas de domínio para a discuss-phase +- `gate-prompts.md` — Templates de prompt para portões/checkpoints +- `revision-loop.md` — Padrões de iteração de revisão de plano +- `universal-anti-patterns.md` — Anti-padrões comuns a detectar e evitar +- `artifact-types.md` — Definições de tipos de artefatos de planejamento +- `phase-argument-parsing.md` — Convenções de análise de argumentos de fase +- `decimal-phase-calculation.md` — Regras de numeração decimal de sub-fases +- `workstream-flag.md` — Convenções do ponteiro ativo de workstream +- `user-profiling.md` — Metodologia de perfilamento comportamental do usuário +- `thinking-partner.md` — Ativação condicional de parceiro de raciocínio em pontos de decisão + +**Referências para modelos de raciocínio:** + +Referências para integrar modelos de classe thinking (o3, o4-mini, Gemini 2.5 Pro) aos workflows do GSD: + +- `thinking-models-debug.md` — Padrões de modelos de raciocínio para workflows de depuração +- `thinking-models-execution.md` — Padrões de modelos de raciocínio para agentes de execução +- `thinking-models-planning.md` — Padrões de modelos de raciocínio para agentes de planejamento +- `thinking-models-research.md` — Padrões de modelos de raciocínio para agentes de pesquisa +- `thinking-models-verification.md` — Padrões de modelos de raciocínio para agentes de verificação + +**Decomposição modular do planner:** + +O agente planner (`agents/gsd-planner.md`) foi decomposto de um único arquivo monolítico em um agente central mais módulos de referência para permanecer abaixo do limite de 50 mil caracteres imposto por alguns runtimes: + +- `planner-gap-closure.md` — Comportamento do modo de fechamento de lacunas (lê VERIFICATION.md, replanejamento direcionado) +- `planner-reviews.md` — Integração de revisão entre IAs (lê REVIEWS.md do `/gsd-review`) +- `planner-revision.md` — Padrões de revisão de plano para refinamento iterativo + +### Templates (`get-shit-done/templates/`) + +Templates Markdown para todos os artefatos de planejamento. Usados por `gsd-tools.cjs template fill` / `phase.scaffold` (e `scaffold` de nível superior) para criar arquivos pré-estruturados: +- `project.md`, `requirements.md`, `roadmap.md`, `state.md` — Arquivos principais do projeto +- `phase-prompt.md` — Template de prompt de execução de fase +- `summary.md` (+ `summary-minimal.md`, `summary-standard.md`, `summary-complex.md`) — Templates de resumo com granularidade ajustável +- `DEBUG.md` — Template de acompanhamento de sessão de depuração +- `UI-SPEC.md`, `UAT.md`, `VALIDATION.md` — Templates de verificação especializados +- `discussion-log.md` — Template de trilha de auditoria de discussão +- `codebase/` — Templates de mapeamento de brownfield (stack, architecture, conventions, concerns, structure, testing, integrations) +- `research-project/` — Templates de saída de pesquisa (SUMMARY, STACK, FEATURES, ARCHITECTURE, PITFALLS) + +### Hooks (`hooks/`) + +Hooks de runtime que se integram ao agente de IA anfitrião: + +| Hook | Evento | Propósito | +|------|--------|-----------| +| `gsd-statusline.js` | `statusLine` | Exibe modelo, tarefa, diretório e barra de uso do contexto | +| `gsd-context-monitor.js` | `PostToolUse` / `AfterTool` | Injeta avisos de contexto voltados ao agente em 35%/25% restante | +| `gsd-check-update.js` | `SessionStart` | Gatilho em primeiro plano para a verificação de atualização em segundo plano | +| `gsd-check-update-worker.js` | (auxiliar) | Worker em segundo plano criado por `gsd-check-update.js`; sem registro de evento direto | +| `gsd-prompt-guard.js` | `PreToolUse` | Escaneia escritas em `.planning/` em busca de padrões de injeção de prompt (consultivo) | +| `gsd-read-injection-scanner.js` | `PostToolUse` | Escaneia saídas da ferramenta Read em busca de instruções injetadas em conteúdo não confiável | +| `gsd-workflow-guard.js` | `PreToolUse` | Detecta edições de arquivos fora do contexto de workflow do GSD (consultivo, ativado via `hooks.workflow_guard`) | +| `gsd-read-guard.js` | `PreToolUse` | Guarda consultivo que impede Edit/Write em arquivos ainda não lidos na sessão | +| `gsd-session-state.sh` | `PostToolUse` | Rastreamento de estado de sessão para runtimes baseados em shell | +| `gsd-validate-commit.sh` | `PostToolUse` | Validação de commit para aplicação de commits convencionais | +| `gsd-phase-boundary.sh` | `PostToolUse` | Detecção de limite de fase para transições de workflow | + +Consulte [`docs/INVENTORY.md`](INVENTORY.md#hooks-11-shipped) para o roster oficial de 11 hooks. + +### Hub de Roteamento de Comandos (`get-shit-done/bin/lib/command-routing-hub.cjs`) + +Os roteadores de família de comandos CJS despacham através do `CommandRoutingHub`. O hub possui o contrato de resultado puro sem lançamento de exceções (`hub.dispatch()` captura exceções internas e retorna `{ ok: false, kind, ...typedPayload }`) e a taxonomia fechada de erros de runtime (`UnknownCommand`, `InvalidArgs`, `HandlerRefusal`, `HandlerFailure`). Os adaptadores de roteador permanecem como tradutores CLI leves — eles constroem o hub, chamam `dispatch` e depois mapeiam o Result para chamadas `output()`/`error()`. O runtime é de caminho único (sem seleção de modo de runtime duplo). Consulte `docs/adr/0174-retire-gsd-sdk-package-boundary.md`. + +### Ferramentas CLI (`get-shit-done/bin/`) + +Utilitário CLI Node.js (`gsd-tools.cjs`) com módulos de domínio distribuídos em `get-shit-done/bin/lib/` (consulte [`docs/INVENTORY.md`](INVENTORY.md#cli-modules-33-shipped) para o roster oficial): + + +| Módulo | Responsabilidade | +| ---------------------- | ----------------------------------------------------------------------------------------------------- | +| `core.cjs` | Tratamento de erros, formatação de saída, utilitários compartilhados; re-exportações de compatibilidade para helpers de planejamento | +| `planning-workspace.cjs` | Camada de planejamento (`planningDir`, `planningPaths`, roteamento de workstream ativo, `.planning/.lock`) | +| `state.cjs` | Análise, atualização, progressão e métricas do STATE.md | +| `phase.cjs` | Operações de diretório de fase, numeração decimal, indexação de planos | +| `roadmap.cjs` | Análise do ROADMAP.md, extração de fases, progresso do plano | +| `config.cjs` | Leitura/escrita do config.json, inicialização de seções | +| `verify.cjs` | Estrutura do plano, integridade de fase, referência, validação de commit | +| `template.cjs` | Seleção e preenchimento de template com substituição de variáveis | +| `frontmatter.cjs` | Operações CRUD de frontmatter YAML | +| `init.cjs` | Carregamento composto de contexto para cada tipo de workflow | +| `milestone.cjs` | Arquivamento de milestones, marcação de requisitos | +| `commands.cjs` | Comandos diversos (slug, timestamp, todos, scaffolding, stats) | +| `model-profiles.cjs` | Tabela de resolução de perfis de modelo | +| `security.cjs` | Prevenção de path traversal, detecção de injeção de prompt, análise segura de JSON, validação de argumentos de shell | +| `uat.cjs` | Análise de arquivo UAT, rastreamento de débito de verificação, suporte a audit-uat | +| `docs.cjs` | Inicialização do workflow de atualização de docs, escaneamento de Markdown, detecção de monorepo | +| `workstream.cjs` | CRUD de workstream, migração, ponteiro ativo com escopo de sessão | +| `schema-detect.cjs` | Detecção de desvio de schema para padrões ORM (Prisma, Drizzle, etc.) | +| `profile-pipeline.cjs` | Pipeline de dados de perfilamento comportamental do usuário, escaneamento de arquivos de sessão | +| `profile-output.cjs` | Renderização de perfil, geração de USER-PROFILE.md e dev-preferences.md | + + +--- + +## Modelo de Agentes + +### Padrão Orquestrador → Agente + +``` +Orquestrador (workflow .md) + │ + ├── Carregar contexto: gsd-tools.cjs init + │ Retorna JSON com: informações do projeto, config, estado, detalhes da fase + │ + ├── Resolver modelo: gsd-tools.cjs resolve-model + │ Retorna: opus | sonnet | haiku | inherit + │ + ├── Criar Agente (chamada Task/SubAgent) + │ ├── Prompt do agente (agents/*.md) + │ ├── Payload de contexto (JSON do init) + │ ├── Atribuição de modelo + │ └── Permissões de ferramentas + │ + ├── Coletar resultado + │ + └── Atualizar estado: gsd-tools.cjs state update / state patch / state advance-plan +``` + +### Categorias Principais de Criação de Agentes + +Taxonomia conceitual de padrões de criação para os 21 agentes primários. Para o roster oficial de 31 agentes (incluindo os 10 agentes avançados/especializados como `gsd-pattern-mapper`, `gsd-code-reviewer`, `gsd-code-fixer`, `gsd-ai-researcher`, `gsd-domain-researcher`, `gsd-eval-planner`, `gsd-eval-auditor`, `gsd-framework-selector`, `gsd-debug-session-manager`, `gsd-intel-updater`), consulte [`docs/INVENTORY.md`](INVENTORY.md#agents-31-shipped). + + +| Categoria | Agentes | Paralelismo | +| ---------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| **Pesquisadores** | gsd-project-researcher, gsd-phase-researcher, gsd-ui-researcher, gsd-advisor-researcher | 4 paralelos (stack, features, architecture, pitfalls); advisor criado durante a discuss-phase | +| **Sintetizadores** | gsd-research-synthesizer | Sequencial (após a conclusão dos pesquisadores) | +| **Planejadores** | gsd-planner, gsd-roadmapper | Sequencial | +| **Verificadores de plano** | gsd-plan-checker, gsd-integration-checker, gsd-ui-checker, gsd-nyquist-auditor | Sequencial (loop de verificação, máximo 3 iterações) | +| **Executores** | gsd-executor | Paralelo dentro de ondas, sequencial entre ondas | +| **Verificadores** | gsd-verifier | Sequencial (após a conclusão de todos os executores) | +| **Mapeadores** | gsd-codebase-mapper | 4 paralelos (tech, arch, quality, concerns) | +| **Depuradores** | gsd-debugger | Sequencial (interativo) | +| **Auditores** | gsd-ui-auditor, gsd-security-auditor | Sequencial | +| **Escritores de doc** | gsd-doc-writer, gsd-doc-verifier | Sequencial (escritor depois verificador) | +| **Perfiladores** | gsd-user-profiler | Sequencial | +| **Analisadores** | gsd-assumptions-analyzer | Sequencial (durante a discuss-phase) | + + +### Modelo de Execução em Ondas + +Durante a `execute-phase`, os planos são agrupados em ondas de dependência: + +``` +Análise de Ondas: + Plano 01 (sem deps) ─┐ + Plano 02 (sem deps) ─┤── Onda 1 (paralelo) + Plano 03 (depende: 01) ─┤── Onda 2 (aguarda a Onda 1) + Plano 04 (depende: 02) ─┘ + Plano 05 (depende: 03,04) ── Onda 3 (aguarda a Onda 2) +``` + +Cada executor recebe: + +- Janela de contexto nova de 200 mil tokens (ou até 1 M para modelos que suportam) +- O PLAN.md específico a executar +- Contexto do projeto (PROJECT.md, STATE.md) +- Contexto da fase (CONTEXT.md, RESEARCH.md se disponível) + +### Enriquecimento Adaptativo de Contexto (Modelos de 1 M) + +Quando a janela de contexto tem 500 mil tokens ou mais (modelos classe 1 M como Opus 4.6, Sonnet 4.6), os prompts de subagentes são automaticamente enriquecidos com contexto adicional que não caberia em janelas de 200 mil tokens padrão: + +- **Agentes executores** recebem os arquivos SUMMARY.md de ondas anteriores e o CONTEXT.md/RESEARCH.md da fase, possibilitando consciência entre planos dentro de uma fase +- **Agentes verificadores** recebem todos os arquivos PLAN.md, SUMMARY.md, CONTEXT.md mais REQUIREMENTS.md, possibilitando verificação com consciência do histórico + +O orquestrador lê `context_window` da configuração (`gsd-tools.cjs config-get context_window`) e inclui condicionalmente um contexto mais rico quando o valor é >= 500.000. Para janelas de 200 mil tokens padrão, os prompts usam versões truncadas com ordenação favorável ao cache para maximizar a eficiência do contexto. + +#### Segurança de Commits Paralelos + +Quando múltiplos executores rodam dentro da mesma onda, dois mecanismos previnem conflitos: + +1. Commits `--no-verify` — Agentes paralelos pulam hooks de pré-commit (que podem causar contenção de lock de build, por exemplo, disputas de cargo lock em projetos Rust). O orquestrador executa `git hook run pre-commit` uma vez após a conclusão de cada onda. +2. **Bloqueio de arquivo STATE.md** — Todas as chamadas `writeStateMd()` usam exclusão mútua baseada em lockfile (`STATE.md.lock` com criação atômica `O_EXCL`). Isso previne a condição de corrida leitura-modificação-escrita onde dois agentes leem o STATE.md, modificam campos diferentes, e o último a escrever sobrescreve as alterações do outro. Inclui detecção de lock obsoleto (timeout de 10 s) e espera em spin com jitter. + +--- + +## Fluxo de Dados + +### Fluxo de Novo Projeto + +``` +Entrada do usuário (descrição da ideia) + │ + ▼ +Perguntas (filosofia questioning.md) + │ + ▼ +4x Pesquisadores de Projeto (paralelo) + ├── Stack → STACK.md + ├── Features → FEATURES.md + ├── Architecture → ARCHITECTURE.md + └── Pitfalls → PITFALLS.md + │ + ▼ +Sintetizador de Pesquisa → SUMMARY.md + │ + ▼ +Extração de requisitos → REQUIREMENTS.md + │ + ▼ +Roadmapper → ROADMAP.md + │ + ▼ +Aprovação do usuário → STATE.md inicializado +``` + +### Fluxo de Execução de Fase + +``` +discuss-phase → CONTEXT.md (preferências do usuário) + │ + ▼ +ui-phase → UI-SPEC.md (contrato de design, opcional) + │ + ▼ +plan-phase + ├── Portão de pesquisa (bloqueia se RESEARCH.md tiver perguntas abertas não resolvidas) + ├── Pesquisador de Fase → RESEARCH.md + │ └── Portão de Legitimidade de Pacotes: slopcheck em cada pacote; [SLOP] removido, + │ [SUS]/[ASSUMED] sinalizados; tabela de Auditoria escrita no RESEARCH.md + ├── Planner (com verificação de alcançabilidade) → arquivos PLAN.md + │ └── checkpoint:human-verify injetado antes de instalações [ASSUMED]/[SUS]; + │ linha STRIDE T-{phase}-SC adicionada para planos com instalação + ├── Plan Checker → Loop de verificação (máximo 3x) + ├── Portão de cobertura de requisitos (REQ-IDs → planos) + └── Portão de cobertura de decisões (CONTEXT.md `` → planos, BLOQUEANTE — #2492) + │ + ▼ +state planned-phase → STATE.md (Planned/Ready to execute) + │ + ▼ +execute-phase (redução de contexto: prompts truncados, ordenação favorável ao cache) + ├── Análise de ondas (agrupamento por dependência) + ├── Executor por plano → código + commits atômicos + ├── SUMMARY.md por plano + └── Verifier → VERIFICATION.md + └── Portão de cobertura de decisões (decisões do CONTEXT.md → artefatos entregues, NÃO BLOQUEANTE — #2492) + │ + ▼ +verify-work → UAT.md (testes de aceitação do usuário) + │ + ▼ +ui-review → UI-REVIEW.md (auditoria visual, opcional) +``` + +### Propagação de Contexto + +Cada estágio de workflow produz artefatos que alimentam as etapas subsequentes: + +``` +PROJECT.md ────────────────────────────────────────────► Todos os agentes +REQUIREMENTS.md ───────────────────────────────────────► Planner, Verifier, Auditor +ROADMAP.md ────────────────────────────────────────────► Orquestradores +STATE.md ──────────────────────────────────────────────► Todos os agentes (decisões, bloqueadores) +CONTEXT.md (por fase) ─────────────────────────────────► Researcher, Planner, Executor +RESEARCH.md (por fase) ────────────────────────────────► Planner, Plan Checker +PLAN.md (por plano) ───────────────────────────────────► Executor, Plan Checker +SUMMARY.md (por plano) ────────────────────────────────► Verifier, rastreamento de estado +UI-SPEC.md (por fase) ─────────────────────────────────► Executor, UI Auditor +``` + +--- + +## Estrutura do Sistema de Arquivos + +### Arquivos de Instalação + +``` +~/.claude/ # Claude Code (instalação global) +├── skills/gsd-*/SKILL.md # Skills globais (roster oficial: docs/INVENTORY.md) +├── commands/gsd/*.md # Instalações locais do Claude usam slash commands em vez de skills globais +├── get-shit-done/ +│ ├── bin/gsd-tools.cjs # Utilitário CLI +│ ├── bin/lib/*.cjs # Módulos de domínio (roster oficial: docs/INVENTORY.md) +│ ├── workflows/*.md # Definições de workflow (roster oficial: docs/INVENTORY.md) +│ ├── references/*.md # Docs de referência compartilhados (roster oficial: docs/INVENTORY.md) +│ └── templates/ # Templates de artefatos de planejamento +├── agents/*.md # Definições de agentes (roster oficial: docs/INVENTORY.md) +├── hooks/*.js # Hooks Node.js (statusline, guards, monitors, verificação de atualização) +├── hooks/*.sh # Hooks shell (estado de sessão, validação de commit, limite de fase) +├── settings.json # Registros de hooks +└── VERSION # Número da versão instalada +``` + +Caminhos equivalentes para outros runtimes: + +- **OpenCode:** `~/.config/opencode/` global ou `./.opencode/` local +- **Kilo:** `~/.config/kilo/` global ou `./.kilo/` local +- **Gemini CLI:** `~/.gemini/` global ou `./.gemini/` local +- **Codex:** `~/.codex/` global ou `./.codex/` local +- **Copilot:** `~/.copilot/` global ou `./.github/` local +- **Antigravity:** raiz global detectada automaticamente (`~/.gemini/antigravity/`, `~/.gemini/antigravity-ide/`, ou `~/.gemini/antigravity-cli/`) ou `./.agent/` local +- **Cursor:** `~/.cursor/` global ou `./.cursor/` local +- **Windsurf:** `~/.codeium/windsurf/` global ou `./.windsurf/` local +- **Augment Code:** `~/.augment/` global ou `./.augment/` local +- **Trae:** `~/.trae/` global ou `./.trae/` local +- **Qwen Code:** `~/.qwen/` global ou `./.qwen/` local +- **Hermes Agent:** `~/.hermes/` global ou `./.hermes/` local +- **CodeBuddy:** `~/.codebuddy/` global ou `./.codebuddy/` local +- **Cline:** `~/.cline/` global ou `.clinerules` local na raiz do projeto + +### Arquivos do Projeto (`.planning/`) + +``` +.planning/ +├── PROJECT.md # Visão do projeto, restrições, decisões, regras de evolução +├── REQUIREMENTS.md # Requisitos com escopo (v1/v2/fora do escopo) +├── ROADMAP.md # Detalhamento de fases com rastreamento de status +├── STATE.md # Memória viva: posição, decisões, bloqueadores, métricas +├── config.json # Configuração de workflow +├── MILESTONES.md # Arquivo de milestones concluídos +├── research/ # Pesquisa de domínio do /gsd-new-project +│ ├── SUMMARY.md +│ ├── STACK.md +│ ├── FEATURES.md +│ ├── ARCHITECTURE.md +│ └── PITFALLS.md +├── codebase/ # Mapeamento de brownfield (do /gsd-map-codebase) +│ ├── STACK.md # Frontmatter YAML carrega `last_mapped_commit` +│ ├── ARCHITECTURE.md # para o portão de desvio pós-execução (#2003) +│ ├── CONVENTIONS.md +│ ├── CONCERNS.md +│ ├── STRUCTURE.md +│ ├── TESTING.md +│ └── INTEGRATIONS.md +├── phases/ +│ └── XX-phase-name/ +│ ├── XX-CONTEXT.md # Preferências do usuário (da discuss-phase) +│ ├── XX-RESEARCH.md # Pesquisa de ecossistema (da plan-phase) +│ ├── XX-YY-PLAN.md # Planos de execução +│ ├── XX-YY-SUMMARY.md # Resultados de execução +│ ├── XX-VERIFICATION.md # Verificação pós-execução +│ ├── XX-VALIDATION.md # Mapeamento de cobertura de testes Nyquist +│ ├── XX-UI-SPEC.md # Contrato de design de UI (da ui-phase) +│ ├── XX-UI-REVIEW.md # Pontuações de auditoria visual (da ui-review) +│ └── XX-UAT.md # Resultados de testes de aceitação do usuário +├── quick/ # Rastreamento de tarefas rápidas +│ └── YYMMDD-xxx-slug/ +│ ├── PLAN.md +│ └── SUMMARY.md +├── todos/ +│ ├── pending/ # Ideias capturadas +│ └── done/ # Todos concluídos +├── threads/ # Threads de contexto persistentes (do /gsd-thread) +├── seeds/ # Ideias prospectivas (do /gsd-capture --seed) +├── debug/ # Sessões de depuração ativas +│ ├── *.md # Sessões ativas +│ ├── resolved/ # Sessões arquivadas +│ └── knowledge-base.md # Aprendizados persistentes de depuração +├── ui-reviews/ # Screenshots do /gsd-ui-review (ignoradas pelo git) +└── continue-here.md # Handoff de contexto (do pause-work) +``` + +### Portão de Desvio de Código Base Pós-Execução (#2003) + +Após a última onda de commits do `/gsd-execute-phase`, o workflow executa uma +etapa `codebase_drift_gate` não bloqueante (entre `schema_drift_gate` e +`verify_phase_goal`). Ele compara o diff `last_mapped_commit..HEAD` +contra `.planning/codebase/STRUCTURE.md` e conta quatro tipos de +elementos estruturais: + +1. Novos diretórios fora dos caminhos mapeados +2. Novas exportações barrel em `(packages|apps)//src/index.*` +3. Novos arquivos de migração +4. Novos módulos de rota em `routes/` ou `api/` + +Se a contagem atingir `workflow.drift_threshold` (padrão 3), o portão +**avisa** (padrão) com o comando `/gsd-map-codebase --paths …` sugerido, +ou **remapeia automaticamente** (`workflow.drift_action = auto-remap`) criando +`gsd-codebase-mapper` com escopo para os caminhos afetados. Qualquer erro na detecção +ou remapeamento é registrado e a fase continua — a detecção de desvio não pode falhar +a verificação. + +`last_mapped_commit` fica no frontmatter YAML no topo de cada +arquivo `.planning/codebase/*.md`; `bin/lib/drift.cjs` fornece +os helpers de ida e volta `readMappedCommit` e `writeMappedCommit`. + +--- + +## Arquitetura do Instalador + +O instalador (`bin/install.js`, ~10.700 linhas) trata de: + +1. **Detecção de runtime** — Prompt interativo ou flags CLI (`--claude`, `--opencode`, `--gemini`, `--kilo`, `--codex`, `--copilot`, `--antigravity`, `--cursor`, `--windsurf`, `--augment`, `--trae`, `--qwen`, `--hermes`, `--codebuddy`, `--cline`, `--all`) +2. **Seleção de local** — Global (`--global`) ou local (`--local`) +3. **Implantação de arquivos** — Copia comandos, skills, workflows, referências, templates, agentes e hooks +4. **Adaptação de runtime** — Transforma o conteúdo de arquivos por runtime: + - Claude Code: Usa como está + - OpenCode: Converte comandos/agentes para o formato de comando plano + subagente compatível com OpenCode + - Kilo: Reutiliza o pipeline de conversão do OpenCode com os caminhos de configuração do Kilo + - Codex: Gera config TOML + skills a partir de comandos + - Copilot: Mapeia nomes de ferramentas (Read→read, Bash→execute, etc.) + - Gemini: Ajusta nomes de eventos de hook (`AfterTool` em vez de `PostToolUse`) + - Antigravity: Skills em primeiro lugar com equivalentes de modelo do Google + - Cursor: Skills em primeiro lugar com referências de regras do Cursor + - Windsurf: Skills em primeiro lugar com referências de regras do Windsurf + - Trae: Instalação skills-first em `~/.trae` / `./.trae` sem `settings.json` ou integração de hooks + - Qwen Code: Skills em primeiro lugar com reescritas de caminho e prompt com marca Qwen + - Hermes Agent: Skills por categoria em `skills/gsd/` + - CodeBuddy: Skills em primeiro lugar com reescritas de caminho e prompt do CodeBuddy + - Cline: Escreve `.clinerules` para integração baseada em regras + - Augment Code: Skills em primeiro lugar com conversão completa de skills e gerenciamento de configuração +5. **Normalização de caminhos** — Substitui caminhos `~/.claude/` por caminhos específicos do runtime +6. **Integração de configurações** — Registra hooks no `settings.json` do runtime +7. **Backup de patches** — Desde a v1.17, faz backup de arquivos modificados localmente em `gsd-local-patches/` para `/gsd-update --reapply` +8. **Rastreamento de manifesto** — Escreve `gsd-file-manifest.json` para desinstalação limpa +9. **Modo de desinstalação** — `--uninstall` remove todos os arquivos, hooks e configurações do GSD + +Movimentações de arquivos no momento da instalação, limpeza de artefatos obsoletos, reescritas de configuração e +preservação de dados do usuário são governadas pelo Módulo de Migração do Instalador. Consulte +[Migrações do Instalador](../installer-migrations.md) e +[ADR 0008](../adr/0008-installer-migration-module.md). +O módulo de migração também controla o escaneamento de linha de base inicial condicionado para +instalações legadas, classificando as superfícies de instalação de runtime conhecidas antes que migrações posteriores +removam ou reescrevam qualquer coisa. + +O guarda de desvio de plano (`plan_review.source_grounding`) — que verifica referências de símbolos em planos gerados contra o código-fonte ativo antes da execução — é especificado no [ADR 22](../adr/22-plan-drift-guard.md). + +### Tratamento de Plataforma + +- **Windows:** `windowsHide` em processos filho, proteção EPERM/EACCES em diretórios protegidos, normalização de separador de caminho +- **WSL:** Detecta o Node.js do Windows rodando no WSL e avisa sobre incompatibilidades de caminho +- **Docker/CI:** Suporta a variável de ambiente `CLAUDE_CONFIG_DIR` para locais de diretório de configuração personalizados + +--- + +## Sistema de Hooks + +### Arquitetura + +``` +Motor de Runtime (Claude Code / Gemini CLI) + │ + ├── evento statusLine ──► gsd-statusline.js + │ Lê: stdin (JSON de sessão) + │ Escreve: stdout (status formatado), /tmp/claude-ctx-{session}.json (bridge) + │ + ├── evento PostToolUse/AfterTool ──► gsd-context-monitor.js + │ Lê: stdin (JSON de evento de ferramenta), /tmp/claude-ctx-{session}.json (bridge) + │ Escreve: stdout (hookSpecificOutput com aviso additionalContext) + │ + └── evento SessionStart ──► gsd-check-update.js + Lê: arquivo VERSION + Escreve: ~/.claude/cache/gsd-update-check.json (cria processo em segundo plano) +``` + +### Limites do Monitor de Contexto + + +| Contexto Restante | Nível | Comportamento do Agente | +| ----------------- | -------- | ------------------------------------------------ | +| > 35% | Normal | Nenhum aviso injetado | +| ≤ 35% | AVISO | "Evite iniciar trabalho complexo novo" | +| ≤ 25% | CRÍTICO | "Contexto quase esgotado, informe o usuário" | + + +Debounce: 5 usos de ferramenta entre avisos repetidos. A escalada de severidade (AVISO→CRÍTICO) contorna o debounce. + +### Propriedades de Segurança + +- Todos os hooks encapsulam em try/catch, saem silenciosamente em caso de erro +- Guarda de timeout de stdin (3 s) evita travamento em problemas de pipe +- Métricas obsoletas (> 60 s) são ignoradas +- Arquivos bridge ausentes são tratados graciosamente (subagentes, sessões novas) +- O monitor de contexto é consultivo — nunca emite comandos imperativos que substituam as preferências do usuário + +### Portão de Legitimidade de Pacotes (v1.42.1) + +O pipeline pesquisador → planner → executor inclui um portão de cadeia de suprimentos contra slopsquatting (nomes de pacotes alucinados por IA pré-registrados com scripts pós-instalação maliciosos). + +**Modelo de ameaça:** O GSD automatiza o caminho completo de "pesquisador nomeia um pacote" a "executor executa `npm install`". Um nome alucinado que passa pelo `npm view` (provando apenas o registro, não a legitimidade) anteriormente fluía sem ser detectado. ~20% das referências de pacotes geradas por IA são alucinadas; ~43% desses nomes recorrem consistentemente entre prompts, tornando o pré-registro economicamente viável para atacantes. + +**Camadas do portão:** + +| Camada | Componente | Ação | +|--------|------------|------| +| Pesquisa | `gsd-phase-researcher` | Executa `slopcheck install --json`; escreve tabela `## Package Legitimacy Audit` no RESEARCH.md; remove pacotes `[SLOP]` antes de o RESEARCH.md ser escrito | +| Planejamento | `gsd-planner` | Lê a tabela de Auditoria; insere `checkpoint:human-verify` antes de qualquer tarefa de instalação `[ASSUMED]` ou `[SUS]`; adiciona linha STRIDE `T-{phase}-SC` supply-chain ao `` | +| Execução | `gsd-executor` | REGRA 3 exclui a instalação de pacotes do escopo de correção automática; instalações com falha surgem como checkpoints, nunca substituições silenciosas | + +**Integração de proveniência de afirmações:** Nomes de pacotes descobertos via WebSearch são marcados como `[ASSUMED]` (não `[VERIFIED]`) independentemente do resultado do `npm view`. Isso estende o sistema de proveniência `[ASSUMED]` / `[VERIFIED]` / `[CITED]` existente, aplicando a tag de proveniência como um portão rígido no limite de instalação — `[ASSUMED]` sempre gera um `checkpoint:human-verify` no PLAN.md. + +**Cobertura de ecossistemas:** O pesquisador usa comandos de verificação específicos de registro — `npm view` (Node), `pip index versions` (Python), `cargo search` (Rust) — em vez de uma única verificação genérica. Isso captura alucinações entre ecossistemas (taxa de ~9% documentada em pesquisa USENIX de 2025). + +**Degradação graceful:** Se o `slopcheck` não estiver disponível, cada pacote recomendado é marcado como `[ASSUMED]` e condicionado com um checkpoint. Pesquisa e planejamento prosseguem; o sistema nunca falha definitivamente por dependência de ferramenta ausente. + +**Dependência externa:** `slopcheck` (MIT, instalável via pip). Se abandonado, o fallback do portão `[ASSUMED]` mantém a cobertura de checkpoint humano. + +--- + +### Hooks de Segurança (v1.27) + +Para uma visão geral conceitual de como as camadas de hook e guarda se encaixam na abordagem de segurança mais ampla, consulte [Modelo de segurança](explanation/security-model.md). + +**Prompt Guard** (`gsd-prompt-guard.js`): + +- Acionado em Write/Edit para arquivos `.planning/` +- Escaneia o conteúdo em busca de padrões de injeção de prompt (substituição de papel, bypass de instrução, injeção de tag de sistema) +- Apenas consultivo — registra a detecção, não bloqueia +- Padrões são embutidos (subconjunto de `security.cjs`) para independência do hook + +**Workflow Guard** (`gsd-workflow-guard.js`): + +- Acionado em Write/Edit para arquivos fora de `.planning/` +- Detecta edições fora do contexto de workflow do GSD (sem comando `/gsd-` ativo ou subagente Task) +- Aconselha o uso de `/gsd-quick` ou `/gsd-fast` para alterações rastreadas por estado +- Ativado via `hooks.workflow_guard: true` (padrão: false) + +--- + +## Abstração de Runtime + +O GSD suporta múltiplos runtimes de codificação com IA por meio de uma arquitetura unificada de comandos/workflows: + +### Matriz de Contrato de Instalação por Runtime + +Esta matriz descreve as superfícies de runtime que o instalador materializa hoje. +A propriedade específica de migração e os snapshots de fonte vivem em +[Migrações do Instalador](../installer-migrations.md#runtime-configuration-contract-registry). + +| Runtime | Raiz global | Raiz local | Superfície de invocação | Superfície de agente | Configuração e hooks | +| --- | --- | --- | --- | --- | --- | +| Claude Code | `~/.claude` | `./.claude` | `skills/gsd-*/SKILL.md` global; `commands/gsd/*.md` local | `agents/gsd-*.md` | Entradas de hook e statusLine em `settings.json` | +| OpenCode | `~/.config/opencode` | `./.opencode` | `command/gsd-*.md` | `agents/gsd-*.md` | `opencode.json` ou `opencode.jsonc`; sem hooks do GSD | +| Kilo | `~/.config/kilo` | `./.kilo` | `command/gsd-*.md` | `agents/gsd-*.md` | `kilo.json` ou `kilo.jsonc`; sem hooks do GSD | +| Gemini CLI | `~/.gemini` | `./.gemini` | `commands/gsd/*.toml` | `agents/gsd-*.md` | flag de funcionalidade, hooks e statusline em `settings.json` | +| Codex | `~/.codex` | `./.codex` | `skills/gsd-*/SKILL.md` | markdown de origem de agentes mais TOML por agente | `config.toml` `[agents.gsd-*]`, `[features].hooks` (canônico; alias legado `codex_hooks` é reconhecido e migrado no reinstall, #3566) e tabelas de hooks | +| GitHub Copilot | `~/.copilot` | `./.github` | `skills/gsd-*/SKILL.md` e `copilot-instructions.md` | arquivos `.agent.md` | Sem hooks ou statusline do GSD | +| Antigravity | detectado automaticamente: `~/.gemini/antigravity`, `~/.gemini/antigravity-ide`, ou `~/.gemini/antigravity-cli` | `./.agent` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | Entradas de hook `settings.json` no estilo Gemini quando instalado pelo GSD | +| Cursor | `~/.cursor` | `./.cursor` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | Referências de regras em `rules/`; sem hooks do GSD | +| Windsurf | `~/.codeium/windsurf` | `./.windsurf` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | Referências de regras em `rules/`; sem hooks do GSD | +| Augment Code | `~/.augment` | `./.augment` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | Sem hooks ou statusline do GSD | +| Trae | `~/.trae` | `./.trae` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | Referências de regras em `rules/`; sem hooks do GSD | +| Qwen Code | `~/.qwen` | `./.qwen` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | Configurações comuns do GSD e entradas de hook onde suportado | +| Hermes Agent | `~/.hermes` | `./.hermes` | `skills/gsd/DESCRIPTION.md` mais `skills/gsd/gsd-*/SKILL.md` | `agents/gsd-*.md` | Configurações comuns do GSD e entradas de hook onde suportado | +| CodeBuddy | `~/.codebuddy` | `./.codebuddy` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | Configurações comuns do GSD e entradas de hook onde suportado | +| Cline | `~/.cline` | raiz do projeto | `.clinerules` | Somente regras | Sem hooks ou statusline do GSD | + +### Fontes do Contrato Upstream + +As expectativas de instalação por runtime são verificadas contra documentação primária quando +disponível. O snapshot de fonte atual é 2026-05-11: + +- Claude Code: Documentação de comandos slash, configurações, hooks e subagentes da Anthropic. +- OpenCode e Kilo: Documentação de configuração do OpenCode e documentação de subagente customizado do Kilo. +- Gemini CLI e Qwen Code: Documentação de comandos/configuração; a documentação de comandos do Qwen foi atualizada pela última vez em 2026-05-06. +- Codex: Documentação do OpenAI Codex e `config-schema.json`; o instalador também carrega compatibilidade com o Codex 0.124.0 para o formato de tabela de agentes. +- Copilot, Cursor, Cline, Augment, Hermes e CodeBuddy: Documentação do fornecedor para instruções customizadas, regras, skills ou configuração. +- Antigravity, Windsurf e Trae: Linhas com fontes limitadas. O instalador documenta os shims de compatibilidade atuais, e as migrações devem atualizar essas fontes antes de reescrever sua configuração. + +### Pontos de Abstração + +1. **Mapeamento de nomes de ferramentas** — Cada runtime tem seus próprios nomes de ferramentas (ex.: `Bash` do Claude → `execute` do Copilot) +2. **Nomes de eventos de hook** — Claude usa `PostToolUse`, Gemini usa `AfterTool` +3. **Frontmatter de agente** — Cada runtime tem seu próprio formato de definição de agente +4. **Convenções de caminho** — Cada runtime armazena a configuração em diretórios diferentes +5. **Referências de modelo** — O perfil `inherit` permite que o GSD adie para a seleção de modelo do runtime + +O instalador trata de toda a tradução no momento da instalação. Workflows e agentes são escritos no formato nativo do Claude Code e transformados durante a implantação. + +--- + +## Relacionados + +- [Orquestração multi-agente](explanation/multi-agent-orchestration.md) +- [Modelo de segurança](explanation/security-model.md) +- [Ferramentas CLI](CLI-TOOLS.md) +- [Índice de documentação](README.md) diff --git a/docs/pt-BR/CLI-TOOLS.md b/docs/pt-BR/CLI-TOOLS.md index 07113c3c8..01dd4d571 100644 --- a/docs/pt-BR/CLI-TOOLS.md +++ b/docs/pt-BR/CLI-TOOLS.md @@ -1,72 +1,502 @@ -# Referência de Ferramentas CLI +# Referência de Ferramentas CLI do GSD -Resumo em Português das ferramentas CLI do GSD. -Para API completa (assinaturas, argumentos e comportamento detalhado), consulte [CLI-TOOLS.md em inglês](../CLI-TOOLS.md) — inclui a secção de uso de `gsd-tools.cjs query`. +> Referência para o CLI `gsd-tools` (`get-shit-done/bin/gsd-tools.cjs`). Para comandos slash e fluxos de usuário, consulte a [Referência de Comandos](COMMANDS.md). Voltar ao [índice de documentação](README.md). --- -## Objetivo +## Visão Geral -As ferramentas CLI permitem que comandos e agentes do GSD executem ações padronizadas de: +`gsd-tools.cjs` centraliza a análise de configuração, resolução de modelos, busca de fases, commits git, verificação de resumos, gerenciamento de estado e operações de templates em comandos, fluxos de trabalho e agentes do GSD. -- leitura e escrita de artefatos -- gerenciamento de fases e roadmap -- execução e validação de planos -- integração com git e automação -## Áreas funcionais +| | | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **Caminho instalado** | `get-shit-done/bin/gsd-tools.cjs` | +| **Implementação** | 20 módulos de domínio em `get-shit-done/bin/lib/` (o diretório é autoritativo) | +| **Status** | Principal superfície de comandos em tempo de execução para orquestração, fluxos de trabalho e automação. | -### Projeto e estado -- inicialização de artefatos (`PROJECT`, `REQUIREMENTS`, `ROADMAP`, `STATE`) -- atualização de estado por fase -- controle de milestones +**Uso (CJS):** -### Planejamento +```bash +node gsd-tools.cjs [args] [--raw] [--cwd ] +``` -- criação de planos atômicos -- validação pré-execução -- consolidação de pesquisa +**Flags globais (CJS):** -### Execução -- despacho de tarefas por onda -- persistência de sumários -- checkpoints de progresso +| Flag | Descrição | +| -------------- | ---------------------------------------------------------------------------- | +| `--raw` | Saída legível por máquina (JSON ou texto simples, sem formatação) | +| `--cwd ` | Substitui o diretório de trabalho (para subagentes em sandbox) | +| `--ws ` | Contexto de fluxo de trabalho para caminhos `.planning/workstreams/` | -### Verificação - -- comparação de saída com objetivos -- geração de relatórios de validação -- apoio ao UAT - -### Utilitários - -- leitura/escrita segura de arquivos -- parsing de argumentos -- normalização de paths - -## Boas práticas para autores de agentes - -- Use artefatos existentes como fonte de verdade -- Evite lógica duplicada entre agentes -- Registre saídas em arquivos canônicos de fase -- Garanta que toda tarefa tenha critério claro de done/verify --- -## Fluxo típico (programático) +## Comandos de Estado -```text -Ler contexto do projeto - -> montar input da etapa - -> executar ferramenta CLI - -> persistir artefatos - -> atualizar estado/roadmap - -> retornar resumo para o orquestrador +Gerencia `.planning/STATE.md` — a memória viva do projeto. + +```bash +# Carrega configuração completa do projeto + estado como JSON +node gsd-tools.cjs state load + +# Exibe o frontmatter do STATE.md como JSON +node gsd-tools.cjs state json + +# Atualiza um único campo +node gsd-tools.cjs state update + +# Obtém o conteúdo do STATE.md ou uma seção específica +node gsd-tools.cjs state get [section] + +# Atualiza múltiplos campos em lote +node gsd-tools.cjs state patch --field1 val1 --field2 val2 + +# Incrementa o contador de planos +node gsd-tools.cjs state advance-plan + +# Registra métricas de execução +node gsd-tools.cjs state record-metric --phase N --plan M --duration Xmin [--tasks N] [--files N] + +# Recalcula a barra de progresso +node gsd-tools.cjs state update-progress + +# Adiciona uma decisão +node gsd-tools.cjs state add-decision --summary "..." [--phase N] [--rationale "..."] +# Ou a partir de arquivos: +node gsd-tools.cjs state add-decision --summary-file path [--rationale-file path] + +# Adiciona/resolve bloqueadores +node gsd-tools.cjs state add-blocker --text "..." +node gsd-tools.cjs state resolve-blocker --text "..." + +# Registra continuidade da sessão +node gsd-tools.cjs state record-session --stopped-at "..." [--resume-file path] + +# Início de fase — atualiza Status/Última atividade do STATE.md para uma nova fase +node gsd-tools.cjs state begin-phase --phase N --name SLUG --plans COUNT + +# Sinalização de bloqueador detectável por agentes (usado por discuss-phase / fluxos de UI) +node gsd-tools.cjs state signal-waiting --type TYPE --question "..." --options "A|B" --phase P +node gsd-tools.cjs state signal-resume +``` + +### Snapshot de Estado + +Análise estruturada do STATE.md completo: + +```bash +node gsd-tools.cjs state-snapshot +``` + +Retorna JSON com: posição atual, fase, plano, status, decisões, bloqueadores, métricas, última atividade. + +--- + +## Comandos de Fase + +Gerencia fases — diretórios, numeração e sincronização com o roadmap. + +```bash +# Localiza diretório de fase pelo número +node gsd-tools.cjs find-phase + +# Calcula o próximo número de fase decimal para inserções +node gsd-tools.cjs phase next-decimal + +# Adiciona nova fase ao roadmap + cria diretório +node gsd-tools.cjs phase add + +# Insere fase decimal após a existente +node gsd-tools.cjs phase insert + +# Remove fase, renumera as subsequentes +node gsd-tools.cjs phase remove [--force] + +# Marca a fase como concluída, atualiza estado + roadmap +node gsd-tools.cjs phase complete + +# Indexa planos com ondas e status +node gsd-tools.cjs phase-plan-index + +# Lista fases com filtragem +node gsd-tools.cjs phases list [--type planned|executed|all] [--phase N] [--include-archived] ``` --- -> [!NOTE] -> Este arquivo é um guia prático em Português para quem integra ou estende workflows. Para contratos estritos e detalhes técnicos completos, use o documento original em inglês. +## Comandos de Roadmap + +Analisa e atualiza o `ROADMAP.md`. + +```bash +# Extrai a seção de fase do ROADMAP.md +node gsd-tools.cjs roadmap get-phase + +# Análise completa do roadmap com status em disco +node gsd-tools.cjs roadmap analyze + +# Atualiza linha da tabela de progresso a partir do disco +node gsd-tools.cjs roadmap update-plan-progress +``` + +--- + +## Comandos de Configuração + +Lê e grava em `.planning/config.json`. + +```bash +# Inicializa config.json com valores padrão +node gsd-tools.cjs config-ensure-section + +# Define um valor de configuração (notação de ponto) +node gsd-tools.cjs config-set + +# Obtém um valor de configuração +node gsd-tools.cjs config-get + +# Define o perfil de modelo +node gsd-tools.cjs config-set-model-profile +``` + +--- + +## Resolução de Modelos + +```bash +# Obtém o modelo para um agente com base no perfil atual +node gsd-tools.cjs resolve-model +# A saída bruta retorna o ID/tier do modelo selecionado. +# A saída JSON também inclui o perfil e, quando o runtime ativo suporta, +# reasoning_effort. +``` + +Nomes de agentes: `gsd-planner`, `gsd-executor`, `gsd-phase-researcher`, `gsd-project-researcher`, `gsd-research-synthesizer`, `gsd-verifier`, `gsd-plan-checker`, `gsd-integration-checker`, `gsd-roadmapper`, `gsd-debugger`, `gsd-codebase-mapper`, `gsd-nyquist-auditor` + +--- + +## Comandos de Verificação + +Valida planos, fases, referências e commits. + +```bash +# Verifica arquivo SUMMARY.md +node gsd-tools.cjs verify-summary [--check-count N] + +# Verifica estrutura + tarefas do PLAN.md +node gsd-tools.cjs verify plan-structure + +# Verifica se todos os planos têm resumos +node gsd-tools.cjs verify phase-completeness + +# Verifica se @-refs + caminhos resolvem +node gsd-tools.cjs verify references + +# Verifica hashes de commit em lote +node gsd-tools.cjs verify commits [hash2] ... + +# Verifica must_haves.artifacts +node gsd-tools.cjs verify artifacts + +# Verifica must_haves.key_links +node gsd-tools.cjs verify key-links +``` + +--- + +## Comandos de Validação + +Verifica a integridade do projeto. + +```bash +# Verifica numeração de fases, sincronização disco/roadmap +node gsd-tools.cjs validate consistency + +# Verifica integridade de .planning/, com opção de reparo +node gsd-tools.cjs validate health [--repair] + +# Verifica utilização da janela de contexto para linha de status / chamadores de hook (v1.40.0) +node gsd-tools.cjs validate context + +# Utilização de contexto como superfície JSON tipada (#455) +node gsd-tools.cjs validate context --json +``` + +`validate context` emite um envelope estruturado com `utilization`, `status` +(`ok` / `warn` / `critical` nos limites de 60% / 70%), e uma +string `suggestion`. Os mesmos dados sustentam `/gsd-health --context`. +Passe `--json` para receber o IR tipado diretamente (útil em scripts e asserções de teste). + +--- + +## Comandos de Template + +Seleção e preenchimento de templates. + +```bash +# Seleciona o template de resumo com base na granularidade +node gsd-tools.cjs template select + +# Preenche o template com variáveis +node gsd-tools.cjs template fill --phase N [--plan M] [--name "..."] [--type execute|tdd] [--wave N] [--fields '{json}'] +``` + +Tipos de template para `fill`: `summary`, `plan`, `verification` + +--- + +## Comandos de Frontmatter + +Operações CRUD de frontmatter YAML em qualquer arquivo Markdown. + +```bash +# Extrai frontmatter como JSON +node gsd-tools.cjs frontmatter get [--field key] + +# Atualiza único campo +node gsd-tools.cjs frontmatter set --field key --value jsonVal + +# Mescla JSON no frontmatter +node gsd-tools.cjs frontmatter merge --data '{json}' + +# Valida campos obrigatórios +node gsd-tools.cjs frontmatter validate --schema plan|summary|verification +``` + +--- + +## Comandos de Scaffold + +Cria arquivos e diretórios pré-estruturados. + +```bash +# Cria template CONTEXT.md +node gsd-tools.cjs scaffold context --phase N + +# Cria template UAT.md +node gsd-tools.cjs scaffold uat --phase N + +# Cria template VERIFICATION.md +node gsd-tools.cjs scaffold verification --phase N + +# Cria diretório de fase +node gsd-tools.cjs scaffold phase-dir --phase N --name "phase name" +``` + +--- + +## Comandos Init (Carregamento de Contexto Composto) + +Carrega todo o contexto necessário para um fluxo de trabalho específico em uma única chamada. Retorna JSON com informações do projeto, configuração, estado e dados específicos do fluxo de trabalho. + +```bash +node gsd-tools.cjs init execute-phase +node gsd-tools.cjs init plan-phase +node gsd-tools.cjs init new-project +node gsd-tools.cjs init new-milestone +node gsd-tools.cjs init quick +node gsd-tools.cjs init resume +node gsd-tools.cjs init verify-work +node gsd-tools.cjs init phase-op +node gsd-tools.cjs init todos [area] +node gsd-tools.cjs init milestone-op +node gsd-tools.cjs init map-codebase +node gsd-tools.cjs init progress + +# Init com escopo de fluxo de trabalho (flag `--ws`) +node gsd-tools.cjs init execute-phase --ws +node gsd-tools.cjs init plan-phase --ws +``` + +**Tratamento de payloads grandes:** Quando a saída excede ~50KB, o CLI grava em um arquivo temporário e retorna `@file:/tmp/gsd-init-XXXXX.json`. Os fluxos de trabalho verificam o prefixo `@file:` e leem do disco: + +```bash +INIT=$(node gsd-tools.cjs init execute-phase "1") +if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi +``` + +--- + +## Comandos de Milestone + +```bash +# Arquiva milestone +node gsd-tools.cjs milestone complete [--name ] [--archive-phases] + +# Marca requisitos como concluídos +node gsd-tools.cjs requirements mark-complete +# Aceita: REQ-01,REQ-02 ou REQ-01 REQ-02 ou [REQ-01, REQ-02] +``` + +--- + +## Habilidades de Agente + +Emite o bloco de habilidades para um tipo de agente específico. + +```bash +# Emite bloco XML bruto de habilidades (padrão — seguro para expansão de shell) +node gsd-tools.cjs agent-skills + +# Emite superfície JSON tipada (#455) — { agent_type, block, skills_count } +node gsd-tools.cjs agent-skills --json +``` + +A flag `--json` retorna um objeto IR tipado adequado para consumo estruturado e asserções de teste, enquanto o padrão (sem flag) preserva a saída XML bruta que as expansões de shell de fluxo de trabalho necessitam. + +--- + +## Manifesto de Habilidades + +Pré-computa e armazena em cache a descoberta de habilidades para carregamento mais rápido de comandos. + +```bash +# Gera manifesto de habilidades (grava em .claude/skill-manifest.json) +node gsd-tools.cjs skill-manifest + +# Gera com caminho de saída personalizado +node gsd-tools.cjs skill-manifest --output +``` + +Retorna mapeamento JSON de todas as habilidades GSD disponíveis com seus metadados (nome, descrição, caminho de arquivo, dicas de argumentos). Usado pelo instalador e hooks de início de sessão para evitar varreduras repetidas do sistema de arquivos. + +--- + +## Comandos Utilitários + +```bash +# Converte texto em slug seguro para URL +node gsd-tools.cjs generate-slug "Some Text Here" +# → some-text-here + +# Obtém timestamp +node gsd-tools.cjs current-timestamp [full|date|filename] + +# Conta e lista tarefas pendentes +node gsd-tools.cjs list-todos [area] + +# Verifica existência de arquivo/diretório +node gsd-tools.cjs verify-path-exists + +# Agrega todos os dados de SUMMARY.md +node gsd-tools.cjs history-digest + +# Extrai dados estruturados de SUMMARY.md +node gsd-tools.cjs summary-extract [--fields field1,field2] + +# Estatísticas do projeto +node gsd-tools.cjs stats [json|table] + +# Renderização de progresso (legível por humanos) +node gsd-tools.cjs progress [json|table|bar] + +# Progresso como superfície JSON tipada (#455) +node gsd-tools.cjs progress --json + +# Conclui uma tarefa +node gsd-tools.cjs todo complete + +# Auditoria UAT — verifica todas as fases em busca de itens não resolvidos +node gsd-tools.cjs audit-uat + +# Fila de auditoria entre artefatos — verifica `.planning/` em busca de itens de auditoria não resolvidos +node gsd-tools.cjs audit-open [--json] + +# Migração reversa de um projeto GSD-2 para a estrutura atual (suporta `/gsd-import --from-gsd2`) +node gsd-tools.cjs from-gsd2 [--path ] [--force] [--dry-run] + +# Commit git com verificações de configuração +node gsd-tools.cjs commit [--files f1 f2] [--amend] [--no-verify] [--respect-staged] +``` + +> `--no-verify`: Ignora hooks de pré-commit. Usado por agentes executores paralelos durante a execução baseada em ondas para evitar contenção de bloqueio de build (ex.: conflitos de cargo lock em projetos Rust). O orquestrador executa os hooks uma vez após cada onda ser concluída. Não use `--no-verify` durante a execução sequencial — deixe os hooks rodarem normalmente. +> `--files ` **comportamento de staging**: por padrão, `--files` executa `git add -- ` para cada arquivo nomeado antes de commitar. Isso sobrescreve qualquer staging por hunk configurado via `git add -p`. Passe `--respect-staged` para ignorar o passo `git add` e commitar apenas o que já está no índice dentro do pathspec solicitado. Se nada estiver staged nesse escopo, o comando retorna `{ committed: false, reason: 'nothing staged' }` sem erro. O `-- ` pathspec final no commit é aplicado em ambos os modos, portanto arquivos staged fora do escopo `--files` nunca são incluídos (invariante #3061). + +```bash +# Busca na web (requer chave de API do Brave) +node gsd-tools.cjs websearch [--limit N] [--freshness day|week|month] +``` + +--- + +## Graphify + +Constrói, consulta e inspeciona o grafo de conhecimento do projeto em `.planning/graphs/`. Requer `graphify.enabled: true` em `config.json` (consulte a [Referência de Configuração](CONFIGURATION.md#graphify-settings)). + +```bash +# Constrói ou reconstrói o grafo de conhecimento +node gsd-tools.cjs graphify build + +# Pesquisa um termo no grafo +node gsd-tools.cjs graphify query + +# Exibe atualidade e estatísticas do grafo +node gsd-tools.cjs graphify status + +# Exibe alterações desde a última construção +node gsd-tools.cjs graphify diff + +# Grava um snapshot nomeado do grafo atual +node gsd-tools.cjs graphify snapshot [name] +``` + +Ponto de entrada para o usuário: `/gsd-graphify` (consulte a [Referência de Comandos](COMMANDS.md#gsd-graphify)). + +--- + +## Arquitetura de Módulos + +| Módulo | Arquivo | Exportações | +|--------|------|---------| +| Core | `lib/core.cjs` | `error()`, `output()`, `parseArgs()`, utilitários compartilhados, re-exportações de compatibilidade | +| State | `lib/state.cjs` | Todos os subcomandos `state`, `state-snapshot` | +| Phase | `lib/phase.cjs` | CRUD de fase, `find-phase`, `phase-plan-index`, `phases list` | +| Planning Workspace | `lib/planning-workspace.cjs` | Costura de planejamento: `planningDir`, `planningPaths`, roteamento de fluxo de trabalho ativo, `.planning/.lock` | +| Roadmap | `lib/roadmap.cjs` | Análise de roadmap, extração de fase, atualizações de progresso | +| Config | `lib/config.cjs` | Leitura/gravação de configuração, inicialização de seção | +| Verify | `lib/verify.cjs` | Todos os comandos de verificação e validação | +| Template | `lib/template.cjs` | Seleção de template e preenchimento de variáveis | +| Frontmatter | `lib/frontmatter.cjs` | CRUD de frontmatter YAML | +| Init | `lib/init.cjs` | Carregamento de contexto composto para todos os fluxos de trabalho | +| Milestone | `lib/milestone.cjs` | Arquivamento de milestone, marcação de requisitos | +| Commands | `lib/commands.cjs` | Diversos: slug, timestamp, todos, scaffold, stats, websearch | +| Model Profiles | `lib/model-profiles.cjs` | Tabela de resolução de perfis | +| UAT | `lib/uat.cjs` | Auditoria UAT/verificação entre fases | +| Profile Output | `lib/profile-output.cjs` | Formatação de perfil do desenvolvedor | +| Profile Pipeline | `lib/profile-pipeline.cjs` | Pipeline de análise de sessão | +| Graphify | `lib/graphify.cjs` | Construção/consulta/status/diff/snapshot do grafo de conhecimento (suporta `/gsd-graphify`) | +| Learnings | `lib/learnings.cjs` | Extrai aprendizados de artefatos de fases/SUMMARY (suporta `/gsd-extract-learnings`) | +| Audit | `lib/audit.cjs` | Manipuladores de fila de auditoria de fase/milestone; helper `audit-open` | +| GSD2 Import | `lib/gsd2-import.cjs` | Importador de migração reversa de projetos GSD-2 (suporta `/gsd-import --from-gsd2`) | +| Intel | `lib/intel.cjs` | Índice de inteligência de código consultável (suporta `/gsd-map-codebase --query`) | + +--- + +## Roteamento CLI do Revisor + +`review.models.` mapeia um sabor de revisor para um comando shell invocado pelo fluxo de trabalho de revisão de código. Defina via [`/gsd-config --integrations`](COMMANDS.md#gsd-config) ou diretamente: + +```bash +node gsd-tools.cjs config-set review.models.codex "codex exec --model gpt-5" +node gsd-tools.cjs config-set review.models.gemini "gemini -m gemini-2.5-pro" +node gsd-tools.cjs config-set review.models.opencode "opencode run --model claude-sonnet-4" +node gsd-tools.cjs config-set review.models.claude "" # limpa — retorna ao modelo da sessão +``` + +Os slugs são validados contra `[a-zA-Z0-9_-]+`; slugs vazios ou contendo caminhos são rejeitados. Consulte [`docs/CONFIGURATION.md`](CONFIGURATION.md#code-review-cli-routing) para a referência completa do campo. + +## Tratamento de Segredos + +As chaves de API configuradas via `/gsd-settings` (`brave_search`, `firecrawl`, `exa_search`) são gravadas em texto simples em `.planning/config.json`, mas são mascaradas (`****`) em toda saída de `config-set` / `config-get`, tabela de confirmação e prompt interativo. Consulte `get-shit-done/bin/lib/secrets.cjs` para a implementação do mascaramento. O próprio arquivo `config.json` é o limite de segurança — proteja-o com permissões do sistema de arquivos e mantenha-o fora do git (`.planning/` está no gitignore por padrão). + +--- + +## Relacionados + +- [Comandos](COMMANDS.md) +- [Configuração](CONFIGURATION.md) +- [Arquitetura](ARCHITECTURE.md) +- [índice de documentação](README.md) diff --git a/docs/pt-BR/COMMANDS.md b/docs/pt-BR/COMMANDS.md index 543e798a2..c4591298a 100644 --- a/docs/pt-BR/COMMANDS.md +++ b/docs/pt-BR/COMMANDS.md @@ -1,98 +1,1526 @@ -# Referência de Comandos do GSD +# Referência de Comandos do GSD Core -Este documento descreve os comandos principais do GSD em Português. -Para detalhes completos de flags avançadas e mudanças recentes, consulte também a [versão em inglês](../COMMANDS.md). +> Referência de comandos do GSD Core — sintaxe, flags, opções e exemplos para cada comando estável. Para detalhes sobre funcionalidades, consulte a [Referência de Funcionalidades](FEATURES.md); para tutoriais de fluxo de trabalho, consulte o [Guia do Usuário](USER-GUIDE.md); para o índice de documentação, consulte o [README](README.md). --- -## Fluxo Principal +## Sintaxe de Comandos -| Comando | Finalidade | Quando usar | -|---------|------------|-------------| -| `/gsd-new-project` | Inicialização completa: perguntas, pesquisa, requisitos e roadmap | Início de projeto | -| `/gsd-discuss-phase [N]` | Captura decisões de implementação (`--chain`, `--power`) | Antes do planejamento | -| `/gsd-ui-phase [N]` | Gera contrato de UI (`UI-SPEC.md`) | Fases com frontend | -| `/gsd-plan-phase [N]` | Pesquisa + planejamento + verificação | Antes de executar uma fase | -| `/gsd-execute-phase ` | Executa planos em ondas paralelas | Após planejamento aprovado | -| `/gsd-verify-work [N]` | UAT manual com diagnóstico automático | Após execução | -| `/gsd-ship [N]` | Cria PR da fase validada | Ao concluir a fase | -| `/gsd-progress --next` | Detecta e executa o próximo passo lógico | Qualquer momento | -| `/gsd-fast ` | Tarefa curta sem planejamento completo | Ajustes triviais | +- **Claude Code / Copilot / OpenCode / Kilo:** `/gsd-command-name [args]` (forma com hífen) +- **Gemini CLI:** `/gsd:command-name [args]` (forma com dois-pontos — o Gemini agrupa comandos sob `gsd:`) +- **Codex:** `$gsd-command-name [args]` -## Navegação e Sessão +As formas com hífen e com dois-pontos são *variações específicas do runtime para o mesmo comando*. Independente do runtime utilizado, o instalador escreve a forma correta no diretório de comandos do seu runtime. -| Comando | Finalidade | -|---------|------------| -| `/gsd-progress` | Mostra status atual e próximos passos | -| `/gsd-resume-work` | Retoma contexto da sessão anterior | -| `/gsd-pause-work` | Salva handoff estruturado | -| `/gsd-pause-work --report` | Gera resumo da sessão | -| `/gsd-autonomous` | Executa todas as fases restantes de forma autônoma (`--from N`, `--to N`, `--only N`) | -| `/gsd-help` | Lista comandos e uso | -| `/gsd-update` | Atualiza o GSD | +--- -## Gestão de Fases +## Meta-Skills de Namespace -| Comando | Finalidade | -|---------|------------| -| `/gsd-phase` | Adiciona fase no roadmap | -| `/gsd-phase --insert [N]` | Insere trabalho urgente entre fases | -| `/gsd-phase --remove [N]` | Remove fase futura e reenumera | -| `/gsd-discuss-phase --assumptions [N]` | Mostra abordagem assumida pelo Claude | +Seis roteadores de namespace são incluídos como pontos de entrada de primeiro estágio na v1.40. Eles mantêm o custo de tokens da listagem antecipada de skills baixo (~120 tokens para 6 roteadores vs ~2.150 para uma listagem plana de 86 skills), enquanto toda a superfície permanece invocável diretamente. O modelo seleciona um namespace e então roteia para a sub-skill concreta. Consulte [#2792](https://github.com/open-gsd/gsd-core/issues/2792). -## Brownfield e Utilidades +| Comando | Roteia para | +|---------|-------------| +| `/gsd-workflow` | Pipeline de fases — discuss / plan / execute / verify / phase / progress | +| `/gsd-project` | Ciclo de vida do projeto — milestones, auditorias, resumo | +| `/gsd-quality` | Portões de qualidade — revisão de código, debug, auditoria, segurança, eval, ui | +| `/gsd-context` | Inteligência da base de código — map, graphify, docs, learnings | +| `/gsd-manage` | Gerenciamento — config, workspace, workstreams, thread, update, ship, inbox | +| `/gsd-ideate` | Exploração e captura — explore, sketch, spike, spec, capture | -| Comando | Finalidade | -|---------|------------| -| `/gsd-map-codebase` | Mapeia base existente antes de novo projeto | -| `/gsd-quick` | Tarefas ad-hoc com garantias do GSD | -| `/gsd-debug [desc]` | Debug sistemático com estado persistente (`--diagnose` para modo diagnóstico) | -| `/gsd-manager --analyze-deps` | Detecta dependências entre fases e sugere `Depends on` no ROADMAP.md (v1.32) | -| `/gsd-forensics` | Diagnóstico de falhas no workflow | -| `/gsd-settings` | Configuração de agentes, perfil e toggles | -| `/gsd-config --profile ` | Troca rápida de perfil de modelo | +Os skills de namespace são **aditivos** — todo comando concreto existente (por exemplo, `/gsd-plan-phase`, `/gsd-code-review --fix`) ainda pode ser invocado diretamente. -## Qualidade de Código +--- -| Comando | Finalidade | -|---------|------------| -| `/gsd-review` | Peer review com múltiplas IAs | -| `/gsd-pr-branch` | Cria branch limpa sem commits de planejamento | -| `/gsd-audit-uat` | Audita dívida de validação/UAT | +## Comandos Principais de Fluxo de Trabalho -## Backlog e Threads +### `/gsd-new-project` -| Comando | Finalidade | -|---------|------------| -| `/gsd-capture --backlog ` | Adiciona item no backlog (999.x) | -| `/gsd-review-backlog` | Promove, mantém ou remove itens | -| `/gsd-capture --seed ` | Registra ideia com gatilho futuro | -| `/gsd-thread [nome]` | Gerencia threads persistentes | +Inicializa um novo projeto com coleta aprofundada de contexto. -## Gerenciamento de Estado +| Flag | Descrição | +|------|-----------| +| `--auto @file.md` | Extrai automaticamente a partir de um documento, sem perguntas interativas | -| Comando | Finalidade | -|---------|------------| -| `state validate` | Detecta drift entre STATE.md e o filesystem real | -| `state sync` | Reconstrói STATE.md a partir do estado real no disco | -| `state sync --verify` | Dry-run: mostra mudanças propostas sem gravar | -| `state planned-phase --phase N --plans N` | Registra transição de estado após plan-phase | +**Pré-requisitos:** Nenhum `.planning/PROJECT.md` existente +**Produz:** `PROJECT.md`, `REQUIREMENTS.md`, `ROADMAP.md`, `STATE.md`, `config.json`, `research/`, `CLAUDE.md` ```bash -node gsd-tools.cjs state validate # Detectar drift -node gsd-tools.cjs state sync --verify # Prévia do que sync mudaria -node gsd-tools.cjs state sync # Reconstruir STATE.md a partir do disco +/gsd-new-project # Modo interativo +/gsd-new-project --auto @prd.md # Extração automática a partir de PRD ``` --- -## Exemplo rápido +### `/gsd-workspace` + +Gerencia workspaces do GSD — cria, lista ou remove ambientes de workspace isolados com cópias de repositório e diretórios `.planning/` independentes. + +| Flag | Descrição | +|------|-----------| +| `--new` | Cria um novo workspace (use com `--name`, `--repos`, etc.) | +| `--list` | Lista os workspaces GSD ativos e seus status | +| `--remove ` | Remove um workspace e limpa as worktrees do git | +| `--name ` | Nome do workspace (usado com `--new`) | +| `--repos repo1,repo2` | Caminhos ou nomes de repositórios separados por vírgula (usado com `--new`) | +| `--path /target` | Diretório de destino (padrão: `~/gsd-workspaces/`) | +| `--strategy worktree\|clone` | Estratégia de cópia (padrão: `worktree`) | +| `--branch ` | Branch para checkout (padrão: `workspace/`) | +| `--auto` | Ignora perguntas interativas | + +**Casos de uso:** +- Multi-repositório: trabalha em um subconjunto de repositórios com estado GSD isolado +- Isolamento de funcionalidade: `--repos .` cria uma worktree do repositório atual + +**Produz:** `WORKSPACE.md`, `.planning/`, cópias de repositórios (worktrees ou clones) ```bash -/gsd-new-project -/gsd-discuss-phase 1 -/gsd-plan-phase 1 -/gsd-execute-phase 1 -/gsd-verify-work 1 -/gsd-ship 1 +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI +/gsd-workspace --new --name feature-b --repos . --strategy worktree # Isolamento no mesmo repositório +/gsd-workspace --list +/gsd-workspace --remove feature-b ``` + +--- + +### `/gsd-discuss-phase` + +Coleta contexto da fase por meio de perguntas adaptativas antes do planejamento. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | Não | Número da fase (padrão: fase atual) | + +| Flag | Descrição | +|------|-----------| +| `--all` | Ignora a seleção de área — discute todas as áreas cinzentas interativamente (sem avanço automático) | +| `--auto` | Seleciona automaticamente os padrões recomendados para todas as perguntas | +| `--batch` | Agrupa perguntas para entrada em lote em vez de uma por vez | +| `--analyze` | Adiciona análise de trade-offs durante a discussão | +| `--power` | Resposta em massa de perguntas baseada em arquivo a partir de um arquivo de respostas preparado | +| `--assumptions` | Expõe as suposições de implementação do Claude sobre a fase sem uma sessão interativa | + +**Pré-requisitos:** `.planning/ROADMAP.md` existe +**Produz:** `{phase}-CONTEXT.md`, `{phase}-DISCUSSION-LOG.md` (trilha de auditoria) + +```bash +/gsd-discuss-phase 1 # Discussão interativa para a fase 1 +/gsd-discuss-phase 1 --all # Discute todas as áreas cinzentas sem etapa de seleção +/gsd-discuss-phase 3 --auto # Seleciona padrões automaticamente para a fase 3 +/gsd-discuss-phase --batch # Modo em lote para a fase atual +/gsd-discuss-phase 2 --analyze # Discussão com análise de trade-offs +/gsd-discuss-phase 1 --power # Respostas em massa a partir de arquivo +/gsd-discuss-phase 3 --assumptions # Expõe as suposições do Claude antes do planejamento +``` + +--- + +### `/gsd-ui-phase` + +Gera contrato de design de UI para fases frontend. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | Não | Número da fase (padrão: fase atual) | + +**Pré-requisitos:** `.planning/ROADMAP.md` existe, a fase tem trabalho de frontend/UI +**Produz:** `{phase}-UI-SPEC.md` + +```bash +/gsd-ui-phase 2 # Contrato de design para a fase 2 +``` + +--- + +### `/gsd-plan-phase` + +Pesquisa, planeja e verifica uma fase. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | Não | Número da fase (padrão: próxima fase não planejada) | + +| Flag | Descrição | +|------|-----------| +| `--auto` | Ignora confirmações interativas | +| `--research` | Força nova pesquisa mesmo que RESEARCH.md exista | +| `--skip-research` | Ignora a etapa de pesquisa de domínio | +| `--research-phase ` | Modo somente pesquisa: cria um agente pesquisador para a fase ``, escreve RESEARCH.md e sai antes do planejador. Substitui o comando de pesquisa autônomo removido (#3042). | +| `--view` | Modificador somente visualização: quando usado com `--research-phase`, imprime o RESEARCH.md existente no stdout e sai (sem criar agente). | +| `--gaps` | Modo de fechamento de lacunas (lê VERIFICATION.md, ignora pesquisa) | +| `--skip-verify` | Ignora o loop de verificação do verificador de plano | +| `--prd ` | Usa um arquivo PRD em vez de discuss-phase para contexto | +| `--ingest ` | Usa arquivo(s) ADR em vez de discuss-phase para síntese de contexto | +| `--ingest-format ` | Substituição opcional do formato do parser ADR para `--ingest` | +| `--reviews` | Replaneja com feedback de revisão cross-AI do REVIEWS.md | +| `--validate` | Executa validação de estado antes de iniciar o planejamento | +| `--bounce` | Executa validação de bounce externo após o planejamento (usa `workflow.plan_bounce_script`) | +| `--skip-bounce` | Ignora o bounce do plano mesmo se habilitado na configuração | +| `--mvp` | Modo MVP vertical — o planejador organiza tarefas como fatias de funcionalidade (UI→API→DB) em vez de camadas horizontais. Na Fase 1 de um novo projeto sem resumos de fases anteriores, também emite `SKELETON.md` (Walking Skeleton). Pode ser persistido em uma fase via `**Mode:** mvp` no ROADMAP.md, o que aplica `--mvp` automaticamente sem a flag. | +| `--tdd` | Modo TDD — o planejador aplica `type: tdd` a tarefas elegíveis que adicionam comportamento, fazendo com que cada uma comece com um teste falho. Combina com `--mvp`: `--mvp --tdd` produz fatias verticais onde cada tarefa que adiciona comportamento começa vermelho-verde. | + +**Pré-requisitos:** `.planning/ROADMAP.md` existe +**Produz:** `{phase}-RESEARCH.md`, `{phase}-{N}-PLAN.md`, `{phase}-VALIDATION.md`; `{phase}/SKELETON.md` quando o modo Walking Skeleton é ativado + +**Modo somente pesquisa (`--research-phase `):** +- Sem modificador: solicita `update / view / skip` se RESEARCH.md já existir. +- Com `--research`: atualização forçada — cria o agente pesquisador novamente incondicionalmente, sem prompt. +- Com `--view`: imprime o RESEARCH.md existente no stdout, sem criar agente. Apresenta erro se RESEARCH.md estiver ausente. + +**Portão de Legitimidade de Pacotes (v1.42.1):** +Quando o pesquisador recomenda pacotes externos, executa `slopcheck install --json` em cada um e escreve uma tabela `## Package Legitimacy Audit` no RESEARCH.md com os campos Registry, Age, Downloads, Source Repo e veredicto do slopcheck. Veredictos: + +- `[SLOP]` — pacote removido do RESEARCH.md completamente; nunca chega ao planejador +- `[SUS]` — pacote sinalizado; o planejador insere `checkpoint:human-verify` antes da tarefa de instalação +- `[OK]` — pacote aprovado; nenhum checkpoint adicionado + +Pacotes obtidos via WebSearch são marcados como `[ASSUMED]` (não `[VERIFIED]`) e tratados da mesma forma que `[SUS]` — recebem um checkpoint humano antes da instalação. Se `slopcheck` não puder ser instalado, cada pacote recomendado é marcado como `[ASSUMED]` e bloqueado. + +Consulte o [Portão de Legitimidade de Pacotes no Guia do Usuário](USER-GUIDE.md#package-legitimacy-gate-v1421) para o formato completo do checkpoint, tabela de veredictos e solução de problemas. + +```bash +/gsd-plan-phase 1 # Pesquisa + plano + verificação da fase 1 +/gsd-plan-phase 3 --skip-research # Planejar sem pesquisa (domínio familiar) +/gsd-plan-phase --auto # Planejamento não interativo +/gsd-plan-phase 2 --validate # Valida estado antes do planejamento +/gsd-plan-phase 1 --bounce # Plano + validação de bounce externo +/gsd-plan-phase 2 --ingest docs/adr/0010.md # Caminho expresso via ADR para síntese de contexto +/gsd-plan-phase 2 --ingest 'docs/adr/00*.md' --ingest-format auto +/gsd-plan-phase --research-phase 4 # Somente pesquisa na fase 4 (solicita se RESEARCH.md existir) +/gsd-plan-phase --research-phase 4 --view # Imprime RESEARCH.md existente, sem criar agente +/gsd-plan-phase --research-phase 4 --research # Força atualização da pesquisa, sem prompt +/gsd-plan-phase 1 --mvp # Plano em fatias verticais para a fase 1 +/gsd-plan-phase 1 --mvp --tdd # Fatias verticais + teste falho por tarefa que adiciona comportamento +``` + +--- + +### `/gsd-plan-review-convergence` + +Loop de convergência de planos cross-AI — replaneja com feedback de revisão até que não restem preocupações de nível HIGH. Executa ciclos `plan-phase → review → replan → re-review` (máximo de 3 ciclos por padrão). Cria agentes isolados para planejamento e revisão; o orquestrador controla o loop, contagem de preocupações HIGH, detecção de estagnação e escalação. + +| Argumento / Flag | Obrigatório | Descrição | +|------------------|-------------|-----------| +| `N` | **Sim** | Número da fase a planejar e revisar | +| `--codex` / `--gemini` / `--claude` / `--opencode` | Não | Seleção de revisor único | +| `--all` | Não | Executa todos os revisores configurados em paralelo | +| `--max-cycles N` | Não | Substitui o limite de ciclos (padrão 3) | + +**Comportamento de saída:** O loop termina quando a contagem HIGH chega a zero. A detecção de estagnação avisa quando a contagem HIGH não diminui entre ciclos. O portão de escalação solicita ao usuário que prossiga ou revise manualmente quando `--max-cycles` é atingido com preocupações HIGH ainda em aberto. + +```bash +/gsd-plan-review-convergence 3 # Revisores padrão, 3 ciclos +/gsd-plan-review-convergence 3 --codex # Revisão somente com Codex +/gsd-plan-review-convergence 3 --all --max-cycles 5 +``` + +--- + +### `/gsd-ultraplan-phase` + +**[BETA]** Delega o planejamento da fase para o ultraplan em nuvem do Claude Code; revise no navegador e importe de volta. O rascunho do plano é feito remotamente, liberando o terminal; revise comentários inline no navegador e importe o plano finalizado de volta para `.planning/` via `/gsd-import`. + +| Flag | Obrigatório | Descrição | +|------|-------------|-----------| +| `N` | **Sim** | Número da fase a planejar remotamente | + +**Isolamento:** Intencionalmente separado de `/gsd-plan-phase` para que mudanças upstream no ultraplan não afetem o pipeline de planejamento principal. + +```bash +/gsd-ultraplan-phase 4 # Delega planejamento para a fase 4 +``` + +--- + +### `/gsd-execute-phase` + +Executa todos os planos de uma fase com paralelização baseada em waves, ou executa uma wave específica. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | **Sim** | Número da fase a executar | +| `--wave N` | Não | Executa somente a Wave `N` da fase | +| `--validate` | Não | Executa validação de estado antes de iniciar a execução | +| `--cross-ai` | Não | Delega a execução para uma CLI de IA externa (usa `workflow.cross_ai_command`) | +| `--no-cross-ai` | Não | Força execução local mesmo se cross-AI estiver habilitado na configuração | + +**Pré-requisitos:** A fase tem arquivos PLAN.md +**Produz:** `{phase}-{N}-SUMMARY.md` por plano, commits no git e `{phase}-VERIFICATION.md` quando a fase é completamente concluída + +**Falhas de instalação de pacotes (v1.42.1):** Se a etapa de instalação de um plano falhar, o executor exibe um `checkpoint:human-verify` e para. Não instala automaticamente uma alternativa com nome similar. Isso é intencional — substituir nomes de pacotes silenciosamente é como o slopsquatting se propaga. Responda ao checkpoint após verificar o pacote na página do seu registro. + +```bash +/gsd-execute-phase 1 # Executa a fase 1 +/gsd-execute-phase 1 --wave 2 # Executa somente a Wave 2 +/gsd-execute-phase 1 --validate # Valida estado antes da execução +/gsd-execute-phase 2 --cross-ai # Delega a fase 2 para CLI de IA externa +``` + +--- + +### `/gsd-verify-work` + +Testes de aceitação do usuário com autodiagnóstico. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | Não | Número da fase (padrão: última fase executada) | + +**Pré-requisitos:** A fase foi executada +**Produz:** `{phase}-UAT.md`, planos de correção caso problemas sejam encontrados + +Para UAT com suporte a navegador, use um servidor MCP de navegador configurado. O companheiro Open GSD atual é `gsd-browser` (`gsd-browser mcp`), que fornece navegação determinística, refs versionadas, asserções, capturas de tela, diffs visuais, gravações e controle humano. Servidores Playwright MCP legados continuam utilizáveis quando já configurados. + +```bash +/gsd-verify-work 1 # UAT para a fase 1 +``` + +--- + +--- + +### `/gsd-ship` + +Cria PR a partir do trabalho concluído em uma fase com body gerado automaticamente. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | Não | Número da fase ou versão do milestone (por exemplo, `4` ou `v1.0`) | +| `--draft` | Não | Cria como PR rascunho | + +**Pré-requisitos:** Fase verificada (`/gsd-verify-work` concluído), CLI `gh` instalada e autenticada +**Produz:** PR no GitHub com body rico gerado a partir dos artefatos de planejamento, STATE.md atualizado + +```bash +/gsd-ship 4 # Publica a fase 4 +/gsd-ship 4 --draft # Publica como PR rascunho +``` + +**O body do PR inclui:** +- Objetivo da fase a partir do ROADMAP.md +- Resumo de mudanças dos arquivos SUMMARY.md +- Requisitos contemplados (REQ-IDs) +- Status de verificação +- Decisões principais +- Seções opcionais configuradas no estilo PRD a partir de `ship.pr_body_sections` + +Consulte [Seções Personalizadas do Body do PR](../ship-pr-body-sections.md) para integração, exemplos e regras de validação. + +--- + +### `/gsd-ui-review` + +Auditoria visual retroativa de 6 pilares do frontend implementado. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | Não | Número da fase (padrão: última fase executada) | + +**Pré-requisitos:** O projeto tem código frontend (funciona de forma autônoma, sem necessidade de projeto GSD) +**Produz:** `{phase}-UI-REVIEW.md`, capturas de tela em `.planning/ui-reviews/` + +Para evidência visual mais rica, combine com `gsd-browser` ou outro servidor MCP de navegador, para que a auditoria possa capturar capturas de tela, estado, contexto de console/rede e etapas de interação reproduzíveis. + +```bash +/gsd-ui-review # Audita a fase atual +/gsd-ui-review 3 # Audita a fase 3 +``` + +--- + +### `/gsd-audit-uat` + +Auditoria entre fases de todos os itens pendentes de UAT e verificação. + +**Pré-requisitos:** Pelo menos uma fase foi executada com UAT ou verificação +**Produz:** Relatório de auditoria categorizado com plano de testes humanos + +```bash +/gsd-audit-uat +``` + +--- + +### `/gsd-audit-milestone` + +Verifica se o milestone atingiu sua definição de pronto. + +**Pré-requisitos:** Todas as fases executadas +**Produz:** Relatório de auditoria com análise de lacunas + +```bash +/gsd-audit-milestone +``` + +--- + +### `/gsd-complete-milestone` + +Arquiva o milestone e cria tag de release. + +**Pré-requisitos:** Auditoria do milestone concluída (recomendado) +**Produz:** Entrada em `MILESTONES.md`, tag no git + +```bash +/gsd-complete-milestone +``` + +--- + +### `/gsd-milestone-summary` + +Gera resumo abrangente do projeto a partir dos artefatos do milestone para onboarding e revisão da equipe. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `version` | Não | Versão do milestone (padrão: milestone atual/mais recente) | + +**Pré-requisitos:** Pelo menos um milestone concluído ou em andamento +**Produz:** `.planning/reports/MILESTONE_SUMMARY-v{version}.md` + +**O resumo inclui:** +- Visão geral, decisões arquiteturais, detalhamento fase a fase +- Decisões principais e trade-offs +- Cobertura de requisitos +- Dívida técnica e itens adiados +- Guia de introdução para novos membros da equipe +- Q&A interativo oferecido após a geração + +```bash +/gsd-milestone-summary # Resume o milestone atual +/gsd-milestone-summary v1.0 # Resume um milestone específico +``` + +--- + +### `/gsd-new-milestone` + +Inicia o próximo ciclo de versão. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `name` | Não | Nome do milestone | +| `--reset-phase-numbers` | Não | Reinicia o novo milestone na Fase 1 e arquiva os diretórios de fases anteriores antes do roadmapping | + +**Pré-requisitos:** Milestone anterior concluído +**Produz:** `PROJECT.md` atualizado, novo `REQUIREMENTS.md`, novo `ROADMAP.md` + +```bash +/gsd-new-milestone # Interativo +/gsd-new-milestone "v2.0 Mobile" # Milestone nomeado +/gsd-new-milestone --reset-phase-numbers "v2.0 Mobile" # Reinicia numeração de milestone na fase 1 +``` + +--- + +## Comandos de Gerenciamento de Fases + +### `/gsd-phase` + +CRUD para fases no ROADMAP.md — adiciona, insere, remove ou edita fases com um único comando consolidado. + +| Flag | Descrição | +|------|-----------| +| (nenhuma) | Acrescenta uma nova fase inteira ao final do milestone atual | +| `--insert ` | Insere trabalho urgente como uma fase decimal (por exemplo, 3.1) após a fase N | +| `--remove ` | Remove uma fase futura e renumera as fases subsequentes | +| `--edit ` | Edita qualquer campo de uma fase existente no lugar | +| `--force` | Permite editar fases em andamento ou concluídas (usado com `--edit`) | + +**Pré-requisitos:** `.planning/ROADMAP.md` existe +**Produz:** ROADMAP.md atualizado + +```bash +/gsd-phase "Add authentication system" # Acrescenta nova fase com descrição +/gsd-phase --insert 3 "Fix auth race condition" # Insere entre a fase 3 e 4 → cria 3.1 +/gsd-phase --remove 7 # Remove a fase 7, renumera 8→7, 9→8, etc. +/gsd-phase --edit 5 # Edita qualquer campo da fase 5 +/gsd-phase --edit 5 --force # Edita a fase 5 mesmo se em andamento ou concluída +``` + +--- + +### `/gsd-mvp-phase` + +Planejamento MVP guiado para uma fase — solicita uma história de usuário, executa verificação de divisão SPIDR, escreve `**Mode:** mvp` no ROADMAP.md e então delega para `/gsd-plan-phase` (que detecta o modo MVP automaticamente pelo campo do roadmap). + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | **Sim** | Número da fase a converter para o modo MVP (inteiro ou decimal como `2.1`) | + +| Flag | Descrição | +|------|-----------| +| `--force` | Permite converter uma fase `in_progress` ou `completed` | + +**Pré-requisitos:** A fase já deve existir no ROADMAP.md (criada via `/gsd-new-project`, `/gsd-phase` ou `/gsd-phase --insert`). O comando não cria novas fases — ele converte uma fase existente. + +**Comportamento:** Coleta uma história de usuário estruturada, valida o formato, executa uma verificação de divisão SPIDR, escreve `**Goal:**` e `**Mode:** mvp` na seção da fase no ROADMAP.md e então delega para `/gsd-plan-phase `. Consulte [Como planejar uma fase MVP](USER-GUIDE.md#mvp-phase-planning) para um tutorial. + +**Walking Skeleton:** Ativado automaticamente quando `--mvp` (ou `mode: mvp`) é usado na Fase 1 de um novo projeto sem resumos de fases anteriores. O planejador produz `SKELETON.md` junto com `PLAN.md`. + +**Produz:** ROADMAP.md atualizado, e então todos os artefatos de `/gsd-plan-phase`; `SKELETON.md` quando o modo Walking Skeleton é ativado. + +```bash +/gsd-mvp-phase 1 # Planejamento MVP para a fase 1 +/gsd-mvp-phase 2.1 # Planejamento MVP para uma fase decimal +/gsd-mvp-phase 3 --force # Converte a fase 3 mesmo se em andamento +``` + +--- + +### `/gsd-validate-phase` + +Audita e preenche retroativamente lacunas de validação Nyquist. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | Não | Número da fase | + +```bash +/gsd-validate-phase 2 # Audita a cobertura de testes para a fase 2 +``` + +--- + +## Comandos de Navegação + +### `/gsd-progress` + +Exibe status, próximos passos e avança automaticamente para a próxima etapa lógica do fluxo de trabalho. Lê o estado do projeto e determina a ação adequada. + +| Flag | Descrição | +|------|-----------| +| `--next` | Avança automaticamente para a próxima etapa lógica do fluxo de trabalho sem seleção manual de rota | +| `--do "task description"` | Analisa intenção em texto livre e despacha para o comando GSD mais adequado | +| `--forensic` | Acrescenta uma auditoria de integridade de 6 verificações após o relatório padrão (consistência de STATE, handoffs órfãos, desvio de escopo adiado, trabalho pendente com flag de memória, todos bloqueantes, código sem commit) | + +**Comportamento de roteamento automático (`--next`):** +- Sem projeto → sugere `/gsd-new-project` +- Fase precisa de discussão → executa `/gsd-discuss-phase` +- Fase precisa de planejamento → executa `/gsd-plan-phase` +- Fase precisa de execução → executa `/gsd-execute-phase` +- Fase precisa de verificação → executa `/gsd-verify-work` +- Todas as fases concluídas → sugere `/gsd-complete-milestone` + +```bash +/gsd-progress # "Onde estou? O que vem a seguir?" com roteamento automático +/gsd-progress --next # Avança automaticamente para a próxima etapa +/gsd-progress --do "fix the auth bug" # Despacha intenção em texto livre para o melhor comando GSD +/gsd-progress --forensic # Relatório padrão + auditoria de integridade +``` + +### `/gsd-resume-work` + +Restaura o contexto completo da última sessão. + +```bash +/gsd-resume-work # Após redefinição de contexto ou nova sessão +``` + +### `/gsd-pause-work` + +Salva handoff de contexto ao parar no meio de uma fase. + +| Flag | Descrição | +|------|-----------| +| `--report` | Gera um resumo pós-sessão em `.planning/reports/` com commits, mudanças de arquivos e progresso da fase | + +```bash +/gsd-pause-work # Cria continue-here.md +/gsd-pause-work --report # Cria continue-here.md + relatório de sessão +``` + +### `/gsd-manager` + +Central de comando interativa para gerenciar múltiplas fases a partir de um único terminal. + +**Pré-requisitos:** `.planning/ROADMAP.md` existe +**Comportamento:** +- Painel com todas as fases e indicadores visuais de status +- Recomenda as melhores ações seguintes com base em dependências e progresso +- Despacha trabalho: discuss executa inline, plan/execute executam como agentes em segundo plano +- Projetado para usuários avançados que paralelizam trabalho entre fases a partir de um único terminal +- Suporta flags de passagem por etapa via configuração `manager.flags` (consulte [Configuração](CONFIGURATION.md#manager-passthrough-flags)) + +```bash +/gsd-manager # Abre o painel da central de comando +/gsd-manager --analyze-deps # Analisa as fases do ROADMAP em busca de relações de dependência antes da execução paralela +``` + +**Heartbeats de Checkpoint (#2410):** + +Execuções de `execute-phase` em segundo plano emitem marcadores `[checkpoint]` a cada wave e limite de plano para que o stream SSE da API do Claude nunca fique ocioso por tempo suficiente para acionar `Stream idle timeout - partial response received` em fases com múltiplos planos. O formato é: + +``` +[checkpoint] phase {N} wave {W}/{M} starting, {count} plan(s), {P}/{Q} plans done +[checkpoint] phase {N} wave {W}/{M} plan {plan_id} starting ({P}/{Q} plans done) +[checkpoint] phase {N} wave {W}/{M} plan {plan_id} complete ({P}/{Q} plans done) +[checkpoint] phase {N} wave {W}/{M} complete, {P}/{Q} plans done ({ok}/{count} ok) +``` + +Se uma fase em segundo plano falhar parcialmente, faça grep da transcrição por `[checkpoint]` +para ver o último limite confirmado. O manipulador de conclusão em segundo plano do manager +usa esses marcadores para reportar progresso parcial quando um agente apresenta erro. + +**Flags de Passagem do Manager:** + +Configure flags por etapa em `.planning/config.json` sob `manager.flags`. Essas flags são adicionadas a cada comando despachado: + +```json +{ + "manager": { + "flags": { + "discuss": "--auto", + "plan": "--skip-research", + "execute": "--validate" + } + } +} +``` + +--- + +### `/gsd-help` + +Exibe os comandos GSD no nível solicitado. O padrão cabe em uma tela; `--full` é a referência completa; `` pula diretamente para uma seção. + +```bash +/gsd-help # Tour de uma página (padrão) +/gsd-help --brief # Recapitulação resumida em ~10 linhas dos principais comandos +/gsd-help --full # Referência completa (todos os comandos, todas as flags) +/gsd-help # Somente uma seção (por exemplo /gsd-help debug) +/gsd-help --brief # Consulta resumida com escopo — assinatura + resumo em uma linha +``` + +Consulte `get-shit-done/workflows/help/modes/topic.md` para a tabela completa de aliases. Tópicos desconhecidos exibem a lista reconhecida. + +--- + +## Comandos Utilitários + +### `/gsd-explore` + +Sessão de ideação socrática — guia uma ideia por meio de perguntas investigativas, opcionalmente cria pesquisa, e então roteia a saída para o artefato GSD adequado (notas, todos, seeds, perguntas de pesquisa, requisitos ou uma nova fase). + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `topic` | Não | Tópico a explorar (por exemplo, `/gsd-explore authentication strategy`) | + +```bash +/gsd-explore # Sessão de ideação aberta +/gsd-explore authentication strategy # Explora um tópico específico +``` + +--- + +### `/gsd-undo` + +Reversão segura no git — reverte commits de fase ou plano do GSD usando o manifesto da fase com verificações de dependências e um portão de confirmação. + +| Flag | Obrigatório | Descrição | +|------|-------------|-----------| +| `--last N` | (um dos três obrigatórios) | Exibe commits GSD recentes para seleção interativa | +| `--phase NN` | (um dos três obrigatórios) | Reverte todos os commits de uma fase | +| `--plan NN-MM` | (um dos três obrigatórios) | Reverte todos os commits de um plano específico | + +**Segurança:** Verifica fases/planos dependentes antes de reverter; sempre exibe um portão de confirmação. + +```bash +/gsd-undo --last 5 # Escolhe entre os 5 commits GSD mais recentes +/gsd-undo --phase 03 # Reverte todos os commits da fase 3 +/gsd-undo --plan 03-02 # Reverte commits do plano 02 da fase 3 +``` + +--- + +### `/gsd-import` + +Ingere um arquivo de plano externo no sistema de planejamento do GSD com detecção de conflitos contra as decisões do `PROJECT.md` antes de escrever qualquer coisa. + +| Flag | Obrigatório | Descrição | +|------|-------------|----------| +| `--from ` | Sim (ou `--from-gsd2`) | Caminho para o arquivo de plano externo a importar | +| `--from-gsd2` | Sim (ou `--from`) | Migração reversa de um projeto GSD-2 (`.gsd/`) de volta para o formato GSD v1 (`.planning/`) | +| `--path ` | Não | Com `--from-gsd2`: caminho para o diretório do projeto GSD-2 (padrão: diretório atual) | + +**Processo:** Detecta conflitos → solicita resolução → escreve como GSD PLAN.md → valida via `gsd-plan-checker` + +```bash +/gsd-import --from /tmp/team-plan.md # Importa e valida um plano externo +/gsd-import --from-gsd2 # Migra do GSD-2 de volta para v1 (diretório atual) +/gsd-import --from-gsd2 --path ~/old-project # Migra a partir de um caminho diferente +``` + +--- + +### `/gsd-ingest-docs` + +Inicializa ou mescla uma configuração `.planning/` a partir de ADRs, PRDs, SPECs e documentos existentes em um repositório. Executa classificação paralela (`gsd-doc-classifier`) mais síntese com regras de precedência e detecção de ciclos (`gsd-doc-synthesizer`). Produz um relatório de conflitos em três categorias (`INGEST-CONFLICTS.md`: auto-resolvidos, variantes-concorrentes, bloqueadores-não-resolvidos) e bloqueia completamente em contradições ADR LOCKED-vs-LOCKED. + +| Argumento / Flag | Obrigatório | Descrição | +|-----------------|-------------|-----------| +| `path` | Não | Diretório alvo para varredura (padrão: raiz do repositório) | +| `--mode new\|merge` | Não | Substitui a detecção automática (padrões: `new` se `.planning/` ausente, `merge` se presente) | +| `--manifest ` | Não | Arquivo YAML listando `{path, type, precedence?}` por documento; substitui a classificação heurística | +| `--resolve auto` | Não | Modo de resolução de conflitos (v1: somente `auto`; `interactive` está reservado) | + +**Limites:** v1 suporta no máximo 50 documentos por invocação. Extrai o contrato compartilhado de detecção de conflitos em `references/doc-conflict-engine.md`, que `/gsd-import` também consome. + +```bash +/gsd-ingest-docs # Varre a raiz do repositório, detecção automática de modo +/gsd-ingest-docs docs/ # Ingere somente sob docs/ +/gsd-ingest-docs --manifest ingest.yaml # Manifesto explícito de precedência +``` + +--- + +### `/gsd-quick` + +Executa tarefa ad-hoc com garantias do GSD. + +| Flag | Descrição | +|------|-----------| +| `--full` | Habilita o pipeline completo de qualidade — discussão + pesquisa + verificação de plano + verificação | +| `--validate` | Somente verificação de plano (máx. 2 iterações) + verificação pós-execução; sem discussão ou pesquisa | +| `--discuss` | Discussão pré-planejamento leve | +| `--research` | Cria agente pesquisador antes do planejamento | + +Flags granulares são combináveis: `--discuss --research --validate` é equivalente a `--full`. + +| Subcomando | Descrição | +|------------|-----------| +| `list` | Lista todas as tarefas quick com status | +| `status ` | Exibe status de uma tarefa quick específica | +| `resume ` | Retoma uma tarefa quick específica pelo slug | + +```bash +/gsd-quick # Tarefa quick básica +/gsd-quick --discuss --research # Discussão + pesquisa + planejamento +/gsd-quick --validate # Somente verificação de plano + verificação +/gsd-quick --full # Pipeline completo de qualidade +/gsd-quick list # Lista todas as tarefas quick +/gsd-quick status my-task-slug # Exibe status de uma tarefa quick +/gsd-quick resume my-task-slug # Retoma uma tarefa quick +``` + +### `/gsd-autonomous` + +Executa todas as fases restantes de forma autônoma. + +| Flag | Descrição | +|------|-----------| +| `--from N` | Inicia a partir de um número de fase específico | +| `--to N` | Para após concluir um número de fase específico | +| `--interactive` | Contexto enxuto com entrada do usuário | + +```bash +/gsd-autonomous # Executa todas as fases restantes +/gsd-autonomous --from 3 # Inicia a partir da fase 3 +/gsd-autonomous --to 5 # Executa até a fase 5, inclusive +/gsd-autonomous --from 3 --to 5 # Executa as fases 3 a 5 +``` + +### `/gsd-debug` + +Depuração sistemática com estado persistente. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `description` | Não | Descrição do bug | + +| Flag | Descrição | +|------|-----------| +| `--diagnose` | Modo somente diagnóstico — investiga sem tentar correções | + +**Subcomandos:** +- `/gsd-debug list` — Lista todas as sessões de debug ativas com status, hipótese e próxima ação +- `/gsd-debug status ` — Imprime resumo completo de uma sessão (contagem de Evidências, Eliminadas, Resolução, checkpoint TDD) sem criar um agente +- `/gsd-debug continue ` — Retoma uma sessão específica pelo slug (exibe Foco Atual e então cria agente de continuação) +- `/gsd-debug [--diagnose] ` — Inicia nova sessão de debug (comportamento existente; `--diagnose` para na causa raiz sem aplicar correção) + +**Modo TDD:** Quando `tdd_mode: true` em `.planning/config.json`, sessões de debug exigem que um teste falho seja escrito e verificado antes que qualquer correção seja aplicada (vermelho → verde → concluído). + +```bash +/gsd-debug "Login button not responding on mobile Safari" +/gsd-debug --diagnose "Intermittent 500 errors on /api/users" +/gsd-debug list +/gsd-debug status auth-token-null +/gsd-debug continue form-submit-500 +``` + +### `/gsd-add-tests` + +Gera testes para uma fase concluída. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | Não | Número da fase | + +```bash +/gsd-add-tests 2 # Gera testes para a fase 2 +``` + +### `/gsd-stats` + +Exibe estatísticas do projeto. + +```bash +/gsd-stats # Painel de métricas do projeto +``` + +### `/gsd-profile-user` + +Gera um perfil comportamental do desenvolvedor a partir da análise de sessões do Claude Code em 8 dimensões (estilo de comunicação, padrões de decisão, abordagem de depuração, preferências de UX, escolhas de fornecedores, gatilhos de frustração, estilo de aprendizado, profundidade de explicação). Produz artefatos que personalizam as respostas do Claude. + +| Flag | Descrição | +|------|-----------| +| `--questionnaire` | Usa questionário interativo em vez de análise de sessões | +| `--refresh` | Reanalisas sessões e regenera o perfil | + +**Artefatos gerados:** +- `USER-PROFILE.md` — Perfil comportamental completo +- Seção de perfil `CLAUDE.md` — Descoberta automaticamente pelo Claude Code + +```bash +/gsd-profile-user # Analisa sessões e constrói perfil +/gsd-profile-user --questionnaire # Alternativa com questionário interativo +/gsd-profile-user --refresh # Regenera a partir de nova análise +``` + +### `/gsd-health` + +Valida a integridade do diretório `.planning/`. Com `--context`, verifica a guarda de utilização da janela de contexto em relação aos limiares de 60% / 70% (adicionado na +v1.40.0, [#2792](https://github.com/open-gsd/gsd-core/issues/2792)). + +| Flag | Descrição | +|------|-----------| +| `--repair` | Corrige automaticamente problemas recuperáveis | +| `--context` | Verifica utilização da janela de contexto; avisa em 60%, crítico em 70% | + +```bash +/gsd-health # Verifica integridade +/gsd-health --repair # Verifica e corrige +/gsd-health --context # Triagem de utilização de contexto +``` + +### `/gsd-cleanup` + +Arquiva diretórios de fases acumulados de milestones concluídos e poda branches locais cujo upstream foi excluído. + +**Comportamento:** Apresenta um resumo em modo dry-run dos diretórios de fases a arquivar (movidos de `.planning/phases/` para `.planning/milestones/v{X.Y}-phases/`) e branches locais cujo upstream não existe mais (podados via `git fetch --prune`). Requer confirmação antes de escrever quaisquer mudanças. O branch atualmente com checkout nunca é podado. + +```bash +/gsd-cleanup +``` + +--- + +## Comandos de Spiking e Sketching + +### `/gsd-spike` + +Executa 2–5 experimentos focados de viabilidade antes de se comprometer com uma abordagem de implementação. Cada experimento usa o enquadramento Given/When/Then, produz código executável e retorna um veredicto VALIDATED / INVALIDATED / PARTIAL. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `idea` | Não | A questão técnica ou abordagem a investigar | +| `--quick` | Não | Ignora a conversa de intake; usa o texto `idea` diretamente | +| `--wrap-up` | Não | Empacota as descobertas concluídas do spike em uma skill reutilizável local do projeto | + +**Produz:** `.planning/spikes/NNN-experiment-name/` com código, resultados e README; `.planning/spikes/MANIFEST.md` +**`--wrap-up` produz:** arquivo de skill `.claude/skills/spike-findings-[project]/` + +```bash +/gsd-spike # Intake interativo +/gsd-spike "can we stream LLM tokens through SSE" +/gsd-spike --quick websocket-vs-polling +/gsd-spike --wrap-up # Empacota descobertas em uma skill reutilizável +``` + +--- + +### `/gsd-sketch` + +Explora direções de design por meio de mockups HTML descartáveis antes de se comprometer com a implementação. Produz 2–3 variantes por questão de design para comparação direta no navegador. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `idea` | Não | A questão ou direção de design de UI a explorar | +| `--quick` | Não | Ignora o intake de mood; usa o texto `idea` diretamente | +| `--text` | Não | Alternativa em modo texto — substitui prompts interativos por listas numeradas (para runtimes que não são o Claude) | +| `--wrap-up` | Não | Empacota as decisões vencedoras do sketch em uma skill reutilizável local do projeto | + +**Produz:** `.planning/sketches/NNN-descriptive-name/index.html` (2–3 variantes interativas), `README.md`, `themes/default.css` compartilhado; `.planning/sketches/MANIFEST.md` +**`--wrap-up` produz:** arquivo de skill `.claude/skills/sketch-findings-[project]/` + +```bash +/gsd-sketch # Intake interativo de mood +/gsd-sketch "dashboard layout" +/gsd-sketch --quick "sidebar navigation" +/gsd-sketch --text "onboarding flow" # Runtime que não é o Claude +/gsd-sketch --wrap-up # Empacota o sketch vencedor em uma skill +``` + +--- + +## Comandos de Diagnósticos + +### `/gsd-forensics` + +Investigação pós-mortem para fluxos de trabalho GSD com falha — diagnostica o que deu errado. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `description` | Não | Descrição do problema (solicitado se omitido) | + +**Pré-requisitos:** Diretório `.planning/` existe +**Produz:** `.planning/forensics/report-{timestamp}.md` + +**A investigação cobre:** +- Análise do histórico do git (commits recentes, padrões de travamento, lacunas de tempo) +- Integridade dos artefatos (arquivos esperados para fases concluídas) +- Anomalias no STATE.md e histórico de sessões +- Trabalho sem commit, conflitos, mudanças abandonadas +- Pelo menos 4 tipos de anomalias verificados (loop travado, artefatos ausentes, trabalho abandonado, crash/interrupção) +- Criação de issue no GitHub oferecida se descobertas acionáveis existirem + +```bash +/gsd-forensics # Interativo — solicitação de problema +/gsd-forensics "Phase 3 execution stalled" # Com descrição do problema +``` + +--- + +### `/gsd-extract-learnings` + +Extrai padrões reutilizáveis, antipadrões e decisões arquiteturais do trabalho concluído de uma fase. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | **Sim** | Número da fase da qual extrair aprendizados | + +| Flag | Descrição | +|------|-----------| +| `--all` | Extrai aprendizados de todas as fases concluídas | +| `--format` | Formato de saída: `markdown` (padrão), `json` | + +**Pré-requisitos:** A fase foi executada (arquivos SUMMARY.md existem) +**Produz:** `.planning/learnings/{phase}-LEARNINGS.md` + +**Extrai:** +- Decisões arquiteturais e sua justificativa +- Padrões que funcionaram bem (reutilizáveis em fases futuras) +- Antipadrões encontrados e como foram resolvidos +- Insights específicos de tecnologia +- Observações de performance e testes + +```bash +/gsd-extract-learnings 3 # Extrai aprendizados da fase 3 +/gsd-extract-learnings --all # Extrai de todas as fases concluídas +``` + +--- + +## Gerenciamento de Workstreams + +### `/gsd-workstreams` + +Gerencia workstreams paralelos para trabalho simultâneo em diferentes áreas do milestone. + +**Subcomandos:** + +| Subcomando | Descrição | +|------------|-----------| +| `list` | Lista todos os workstreams com status (padrão se nenhum subcomando) | +| `create ` | Cria um novo workstream | +| `status ` | Status detalhado de um workstream | +| `switch ` | Define o workstream ativo | +| `progress` | Resumo de progresso entre todos os workstreams | +| `complete ` | Arquiva um workstream concluído | +| `resume ` | Retoma trabalho em um workstream | + +**Pré-requisitos:** Projeto GSD ativo +**Produz:** Diretórios de workstream sob `.planning/`, rastreamento de estado por workstream + +```bash +/gsd-workstreams # Lista todos os workstreams +/gsd-workstreams create backend-api # Cria novo workstream +/gsd-workstreams switch backend-api # Define workstream ativo +/gsd-workstreams status backend-api # Status detalhado +/gsd-workstreams progress # Visão geral de progresso entre workstreams +/gsd-workstreams complete backend-api # Arquiva workstream concluído +/gsd-workstreams resume backend-api # Retoma trabalho no workstream +``` + +--- + +## Comandos de Configuração + +### `/gsd-settings` + +Configuração interativa de toggles de fluxo de trabalho e perfil de modelo. As perguntas são agrupadas em seis seções visuais: + +- **Planning** — Research, Plan Checker, Pattern Mapper, Nyquist, UI Phase, UI Gate, AI Phase +- **Execution** — Verifier, TDD Mode, Code Review, Code Review Depth _(condicional — somente quando Code Review está ativado)_, UI Review +- **Docs & Output** — Commit Docs, Skip Discuss, Worktrees +- **Features** — Intel, Graphify +- **Model & Pipeline** — Model Profile, Auto-Advance, Branching +- **Misc** — Context Warnings, Research Qs + +Todas as respostas são mescladas via `gsd-tools query config-set` no caminho de configuração do projeto resolvido (`.planning/config.json` para uma instalação padrão, ou `.planning/workstreams//config.json` quando um workstream está ativo), preservando chaves não relacionadas. Após a confirmação, o usuário pode salvar o objeto de configurações completo em `~/.gsd/defaults.json` para que execuções futuras de `/gsd-new-project` comecem da mesma linha de base. + +```bash +/gsd-settings # Configuração interativa +``` + +### `/gsd-config` + +Configura as definições do GSD interativamente — toggles de fluxo de trabalho, controles avançados, integrações e perfil de modelo — com um único comando consolidado. + +| Flag | Descrição | +|------|-----------| +| (nenhuma) | Toggles de caso comum: model, research, plan_check, verifier, branching | +| `--advanced` | Controles para usuários avançados: ajuste de planejamento, timeouts, templates de branch, execução cross-AI, runtime/saída | +| `--integrations` | Chaves de API de terceiros, roteamento de CLI de revisão de código, injeção de skill de agente | +| `--profile ` | Troca rápida de perfil: `quality`, `balanced`, `budget` ou `inherit` | + +**Seções de `--advanced`:** + +| Seção | Chaves | +|-------|--------| +| Planning Tuning | `workflow.plan_bounce`, `workflow.plan_bounce_passes`, `workflow.plan_bounce_script`, `workflow.subagent_timeout`, `workflow.inline_plan_threshold` | +| Execution Tuning | `workflow.node_repair`, `workflow.node_repair_budget`, `workflow.auto_prune_state` | +| Discussion Tuning | `workflow.max_discuss_passes` | +| Cross-AI Execution | `workflow.cross_ai_execution`, `workflow.cross_ai_command`, `workflow.cross_ai_timeout` | +| Git Customization | `git.base_branch`, `git.phase_branch_template`, `git.milestone_branch_template` | +| Runtime / Output | `response_language`, `context_window`, `search_gitignored`, `graphify.build_timeout` | + +Todas as respostas são mescladas via `gsd-tools query config-set`, preservando chaves não relacionadas. Chaves de API são mascaradas (`****<últimos-4>`) em todas as saídas. + +```bash +/gsd-config # Configuração interativa de caso comum +/gsd-config --advanced # Controles para usuários avançados (prompt de seis seções) +/gsd-config --integrations # Chaves de API, roteamento de CLI de revisão, skills de agente +/gsd-config --profile budget # Troca para o perfil budget +/gsd-config --profile quality # Troca para o perfil quality +``` + +Consulte [CONFIGURATION.md](CONFIGURATION.md) para o esquema completo e valores padrão. + +### `/gsd-surface` + +Alterna quais skills são expostas — aplica um perfil, lista ou desativa um cluster sem reinstalação. + +| Subcomando | Descrição | +|------------|-----------| +| `list` | Exibe clusters e skills habilitados e desabilitados | +| `status` | Alias para `list` mais resumo de custo de tokens | +| `profile ` | Escreve `baseProfile` e reencena skills | +| `disable ` | Adiciona cluster à lista de desabilitados e reencena | +| `enable ` | Remove cluster da lista de desabilitados e reencena | +| `reset` | Exclui o delta de superfície; retorna ao perfil do momento da instalação | + +```bash +/gsd-surface list # Exibe a superfície atual +/gsd-surface profile standard # Troca para o perfil standard +/gsd-surface disable utility # Desativa o cluster utility +/gsd-surface reset # Restaura o perfil do momento da instalação +``` + +--- + +## Comandos para Brownfield + +### `/gsd-map-codebase` + +Analisa a base de código existente com agentes mapeadores paralelos. Use `--fast` para uma varredura rápida de agente único, ou `--query` para pesquisar intel existente. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `area` | Não | Limita o mapeamento a uma área específica | +| `--fast` | Não | Avaliação rápida de foco único — cria um agente mapeador em vez de quatro paralelos (alternativa leve) | +| `--query ` | Não | Pesquisa arquivos de intel consultáveis da base de código em `.planning/intel/` (requer `intel.enabled: true`) | + +| Flag | Descrição | +|------|-----------| +| `--focus tech\|arch\|quality\|concerns\|tech+arch` | Área de foco para o modo `--fast` (padrão: `tech+arch`) | + +**Produz:** Documentos de análise `.planning/codebase/` (modo completo); documento(s) direcionado(s) em `.planning/codebase/` (`--fast`); resultados de consulta intel (`--query`) + +```bash +/gsd-map-codebase # Análise completa da base de código (4 agentes paralelos) +/gsd-map-codebase auth # Foca na área de autenticação +/gsd-map-codebase --fast # Visão geral rápida de tech + arch (1 agente) +/gsd-map-codebase --fast --focus quality # Somente qualidade e saúde do código +/gsd-map-codebase --query authentication # Pesquisa intel por um termo +``` + +### `/gsd-graphify` + +Constrói, consulta e inspeciona o grafo de conhecimento do projeto armazenado em `.planning/graphs/`. Ativação opt-in via `graphify.enabled: true` em `config.json` (consulte [Referência de Configuração](CONFIGURATION.md#graphify-settings)); quando desabilitado, o comando imprime uma dica de ativação e para. + +| Subcomando | Descrição | +|------------|-----------| +| `build` | Constrói ou reconstrói o grafo de conhecimento (executa `graphify update .` inline e atualiza `.planning/graphs/`) | +| `query ` | Pesquisa o grafo por um termo | +| `status` | Exibe frescor e estatísticas do grafo | +| `diff` | Exibe mudanças desde a última construção | + +**Produz:** Artefatos do grafo `.planning/graphs/` (nós, arestas, snapshots) + +```bash +/gsd-graphify build # Constrói ou reconstrói o grafo de conhecimento +/gsd-graphify query authentication # Pesquisa o grafo por um termo +/gsd-graphify status # Exibe frescor e estatísticas +/gsd-graphify diff # Exibe mudanças desde a última construção +``` + +**Acesso programático:** `node gsd-tools.cjs graphify ` — consulte a [Referência de Ferramentas CLI](CLI-TOOLS.md). + +### `gsd-tools intel api-surface` + +Renderiza o índice `.planning/intel/api-map.json` (construído por `/gsd-map-codebase`) em um `API-SURFACE.md` legível por humanos em `.planning/intel/`. Requer `intel.enabled: true` em `config.json`; quando Intel está desabilitado, o comando imprime uma dica de ativação e sai. O caminho de saída é sempre `.planning/intel/API-SURFACE.md` — não há flag `--out` ou `--format`. Quando `api-map.json` está ausente ou vazio, o comando ainda escreve o arquivo com um banner explícito de "incompleto" para que os consumidores nunca confundam silêncio com "nada existe". + +**Produz:** `.planning/intel/API-SURFACE.md` + +```bash +node gsd-tools.cjs intel api-surface # Renderiza api-map.json → API-SURFACE.md +``` + +A saída de `API-SURFACE.md` lista símbolos exportados (funções, classes, decoradores, constantes) agrupados por arquivo de origem com suas assinaturas e visibilidade detectada. Quando `plan_review.source_grounding_authority` está definido como `intel`, a guarda de desvio de plano lê `api-map.json` diretamente em vez de invocar o renderizador `api-surface`. + +--- + +## Comandos de Integração com IA + +### `/gsd-ai-integration-phase` + +Gera um contrato de design AI-SPEC.md para fases que envolvem a construção de sistemas de IA. Apresenta uma matriz de decisão interativa, expõe modos de falha específicos do domínio e critérios de avaliação, e produz `AI-SPEC.md` com recomendação de framework, orientação de implementação e estratégia de avaliação. + +**Produz:** `{phase}-AI-SPEC.md` no diretório da fase + +**Cria:** 3 agentes especialistas paralelos: domain-researcher, framework-selector, ai-researcher e eval-planner + +```bash +/gsd-ai-integration-phase # Assistente para a fase atual +/gsd-ai-integration-phase 3 # Assistente para uma fase específica +``` + +--- + +### `/gsd-eval-review` + +Audita a cobertura de avaliação de uma fase de IA executada e produz um plano de remediação EVAL-REVIEW.md. Verifica a implementação em relação ao plano de avaliação `AI-SPEC.md` produzido por `/gsd-ai-integration-phase`. Classifica cada dimensão de avaliação como COVERED/PARTIAL/MISSING. + +**Pré-requisitos:** A fase foi executada e possui um `AI-SPEC.md` +**Produz:** `{phase}-EVAL-REVIEW.md` com descobertas, lacunas e orientações de remediação + +```bash +/gsd-eval-review # Audita a fase atual +/gsd-eval-review 3 # Audita uma fase específica +``` + +--- + +## Comandos de Atualização + +### `/gsd-update` + +Atualiza o GSD com prévia do changelog, e opcionalmente sincroniza skills ou reaplicar patches locais. + +| Flag | Descrição | +|------|-----------| +| `--sync` | Sincroniza skills do registro GSD após a atualização | +| `--reapply` | Restaura modificações locais (patches) após a atualização | + +```bash +/gsd-update # Verifica atualizações e instala +/gsd-update --sync # Atualiza e sincroniza skills +/gsd-update --reapply # Atualiza e reaplicar patches locais +``` + +--- + +## Comandos de Qualidade de Código + +### `/gsd-code-review` + +Revisa arquivos de código-fonte alterados durante uma fase em busca de bugs, vulnerabilidades de segurança e problemas de qualidade de código. Use `--fix` para corrigir automaticamente os problemas encontrados após a revisão. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `N` | **Sim** | Número da fase cujas mudanças revisar (por exemplo, `2` ou `02`) | +| `--depth=quick\|standard\|deep` | Não | Nível de profundidade da revisão (substitui a configuração `workflow.code_review_depth`). `quick`: somente correspondência de padrões (~2 min). `standard`: análise por arquivo com verificações específicas de linguagem (~5–15 min, padrão). `deep`: análise entre arquivos incluindo grafos de importação e cadeias de chamadas (~15–30 min) | +| `--files file1,file2,...` | Não | Lista explícita de arquivos separados por vírgula; ignora completamente o escopo SUMMARY/git | +| `--fix` | Não | Corrige automaticamente problemas após a revisão — lê REVIEW.md, cria agente corretor, faz commit de cada correção atomicamente | +| `--fix --all` | Não | Inclui descobertas Info no escopo de correção (padrão: somente Critical + Warning) | +| `--fix --auto` | Não | Loop de correção + nova revisão, limitado a 3 iterações | + +**Pré-requisitos:** A fase foi executada e tem SUMMARY.md ou histórico no git +**Produz:** `{phase}-REVIEW.md` com descobertas classificadas por gravidade; `{phase}-REVIEW-FIX.md` quando `--fix` é usado +**Cria:** agente `gsd-code-reviewer`; agente `gsd-code-fixer` (com `--fix`) + +**Pré-passagem estrutural opcional:** Defina `code_quality.fallow.enabled` como `true` para executar fallow antes da revisão pelo agente. O GSD escreve `{phase}/FALLOW.json` e incorpora uma seção `Structural Findings (fallow)` em `REVIEW.md`. Configure escopo e perfil com `code_quality.fallow.scope` e `code_quality.fallow.profile`. + +```bash +/gsd-code-review 3 # Revisão padrão para a fase 3 +/gsd-code-review 2 --depth=deep # Revisão profunda entre arquivos +/gsd-code-review 4 --files src/auth.ts,src/token.ts # Lista explícita de arquivos +/gsd-code-review 3 --fix # Revisa e corrige descobertas Critical + Warning +/gsd-code-review 3 --fix --all # Revisa e corrige todas as descobertas incluindo Info +/gsd-code-review 3 --fix --auto # Revisa, corrige e revisita até estar limpo (máx. 3 iterações) +``` + +--- + +### `/gsd-audit-fix` + +Pipeline autônomo de auditoria para correção — executa uma auditoria, classifica descobertas, corrige problemas corrigíveis automaticamente com verificação de testes e faz commit de cada correção atomicamente. + +| Flag | Descrição | +|------|-----------| +| `--source ` | Qual auditoria executar (padrão: `audit-uat`) | +| `--severity high\|medium\|all` | Gravidade mínima a processar (padrão: `medium`) | +| `--max N` | Número máximo de descobertas a corrigir (padrão: 5) | +| `--dry-run` | Classifica descobertas sem corrigir (exibe tabela de classificação) | + +**Pré-requisitos:** Pelo menos uma fase foi executada com UAT ou verificação +**Produz:** Commits de correção com verificação de testes; relatório de classificação + +```bash +/gsd-audit-fix # Executa audit-uat, corrige problemas medium+ (máx. 5) +/gsd-audit-fix --severity high # Corrige somente problemas de alta gravidade +/gsd-audit-fix --dry-run # Prévia de classificação sem correção +/gsd-audit-fix --max 10 --severity all # Corrige até 10 problemas de qualquer gravidade +``` + +--- + +## Comandos Rápidos e Inline + +### `/gsd-fast` + +Executa uma tarefa trivial inline — sem subagentes, sem overhead de planejamento. Para correções de tipografia, mudanças de configuração, refatorações pequenas, commits esquecidos. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `task description` | Não | O que fazer (solicitado se omitido) | + +**Não substitui `/gsd-quick`** — use `/gsd-quick` para qualquer coisa que precise de pesquisa, planejamento em múltiplas etapas ou verificação. + +```bash +/gsd-fast "fix typo in README" +/gsd-fast "add .env to gitignore" +``` + +--- + +### `/gsd-review` + +Revisão por pares cross-AI de planos de fase a partir de CLIs de IA externas. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `--phase N` | **Sim** | Número da fase a revisar | + +| Flag | Descrição | +|------|-----------| +| `--gemini` | Inclui revisão pelo Gemini CLI | +| `--claude` | Inclui revisão pelo Claude CLI (sessão separada) | +| `--codex` | Inclui revisão pelo Codex CLI | +| `--coderabbit` | Inclui revisão pelo CodeRabbit | +| `--opencode` | Inclui revisão pelo OpenCode (via GitHub Copilot) | +| `--qwen` | Inclui revisão pelo Qwen Code (modelos Alibaba Qwen) | +| `--cursor` | Inclui revisão pelo agente Cursor | +| `--agy` / `--antigravity` | Inclui revisão pelo Antigravity CLI (gratuito com credenciais Google) | +| `--ollama` | Inclui revisão pelo servidor Ollama | +| `--lm-studio` | Inclui revisão pelo servidor LM Studio | +| `--llama-cpp` | Inclui revisão pelo servidor llama.cpp | +| `--all` | Inclui todos os revisores disponíveis (CLI + servidores de modelos locais) | + +**Comportamento do revisor padrão (sem flags):** +- Se `review.default_reviewers` estiver **não definido**, `/gsd-review` executa todos os revisores detectados (comportamento padrão atual). +- Se `review.default_reviewers` estiver **definido**, `/gsd-review` executa somente esse subconjunto (por exemplo `["gemini","codex"]`). +- `--all` sempre substitui a configuração e executa o conjunto detectado completo. +- Flags explícitas (por exemplo `--cursor`) substituem tanto `--all` quanto os padrões de configuração para aquela execução. + +**Produz:** `{phase}-REVIEWS.md` — consumível por `/gsd-plan-phase --reviews` + +```bash +# define revisores padrão do projeto para execuções de /gsd-review sem flag +gsd config-set review.default_reviewers '["gemini","codex"]' + +/gsd-review --phase 2 # executa gemini+codex da configuração +/gsd-review --phase 3 --all +/gsd-review --phase 2 --gemini +/gsd-review --phase 2 --cursor # substituição avulsa +``` + +--- + +### `/gsd-pr-branch` + +Cria um branch limpo para PR filtrando commits de `.planning/`. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `target branch` | Não | Branch base (padrão: `main`) | + +**Objetivo:** Revisores veem somente mudanças de código, não artefatos de planejamento do GSD. + +```bash +/gsd-pr-branch # Filtra em relação ao main +/gsd-pr-branch develop # Filtra em relação ao develop +``` + +--- + +### `/gsd-secure-phase` + +Verifica retroativamente as mitigações de ameaças para uma fase concluída. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `phase number` | Não | Fase a auditar (padrão: última fase concluída) | + +**Pré-requisitos:** A fase deve ter sido executada. Funciona com ou sem SECURITY.md existente. +**Produz:** `{phase}-SECURITY.md` com resultados de verificação de ameaças +**Cria:** agente `gsd-security-auditor` + +Três modos de operação: +1. SECURITY.md existe — audita e verifica mitigações existentes +2. Sem SECURITY.md mas PLAN.md tem modelo de ameaças — gera a partir dos artefatos +3. Fase não executada — sai com orientações + +```bash +/gsd-secure-phase # Audita a última fase concluída +/gsd-secure-phase 5 # Audita uma fase específica +``` + +--- + +### `/gsd-docs-update` + +Gera ou atualiza a documentação do projeto verificada em relação à base de código. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| `--force` | Não | Ignora prompts de preservação, regenera todos os documentos | +| `--verify-only` | Não | Verifica a precisão dos documentos existentes, sem geração | + +**Produz:** Até 9 arquivos de documentação (README, arquitetura, API, introdução, desenvolvimento, testes, configuração, implantação, contribuição) +**Cria:** agentes `gsd-doc-writer` (um por tipo de documento), e então agentes `gsd-doc-verifier` para verificação factual + +Cada escritor de documentos explora a base de código diretamente — sem caminhos alucinados ou assinaturas desatualizadas. O verificador de documentos confere afirmações em relação ao sistema de arquivos real. + +```bash +/gsd-docs-update # Gera/atualiza documentos interativamente +/gsd-docs-update --force # Regenera todos os documentos +/gsd-docs-update --verify-only # Somente verifica documentos existentes +``` + +--- + +## Comandos de Captura de Tarefas e Backlog + +### `/gsd-capture` + +Captura ideias, tarefas, notas e seeds para seu destino adequado. O modo padrão adiciona um todo estruturado; flags roteiam para fluxos de trabalho de captura especializados. + +| Flag | Descrição | +|------|-----------| +| (nenhuma) | Captura como um todo estruturado para trabalho posterior | +| `--note [text]` | Nota sem fricção — adiciona, lista (`--note list`) ou promove (`--note promote N`) | +| `--backlog ` | Adiciona ao estacionamento de backlog usando numeração 999.x | +| `--seed [idea summary]` | Captura uma ideia prospectiva com condições de ativação | +| `--list` | Lista todos os todos pendentes e seleciona um para trabalhar | +| `--global` | Usa escopo global (para operações de nota) | + +**Backlog:** A numeração 999.x mantém itens fora da sequência de fases ativas; os diretórios de fases são criados imediatamente para que `/gsd-discuss-phase` e `/gsd-plan-phase` funcionem neles. +**Seeds:** Preservam o POR QUÊ completo, QUANDO expor e rastros de contexto — consumidos por `/gsd-new-milestone`. + +**Produz:** `.planning/todos/` (padrão), arquivos de notas (--note), seção de backlog do ROADMAP.md (--backlog), `.planning/seeds/SEED-NNN-slug.md` (--seed) + +```bash +/gsd-capture "Consider adding dark mode support" # Adiciona todo +/gsd-capture --note "Caching strategy idea" # Nota rápida +/gsd-capture --note list # Lista todas as notas +/gsd-capture --note promote 3 # Promove nota 3 para todo +/gsd-capture --backlog "GraphQL API layer" # Adiciona ao backlog +/gsd-capture --seed "Add real-time collaboration when WebSocket infra is in place" +/gsd-capture --list # Navega e age sobre todos +``` + +--- + +### `/gsd-review-backlog` + +Revisa e promove itens de backlog para o milestone ativo. + +**Ações por item:** Promover (mover para a sequência ativa), Manter (deixar no backlog), Remover (excluir). + +```bash +/gsd-review-backlog +``` + +--- + +### `/gsd-thread` + +Gerencia threads de contexto persistentes para trabalho entre sessões. + +| Argumento | Obrigatório | Descrição | +|-----------|-------------|-----------| +| (nenhum) / `list` | — | Lista todas as threads | +| `list --open` | — | Lista threads com status `open` ou `in_progress` apenas | +| `list --resolved` | — | Lista threads com status `resolved` apenas | +| `status ` | — | Exibe status de uma thread específica | +| `close ` | — | Marca uma thread como resolvida | +| `name` | — | Retoma thread existente pelo nome | +| `description` | — | Cria nova thread | + +Threads são armazenamentos de conhecimento leves entre sessões para trabalho que abrange múltiplas sessões, mas não pertence a nenhuma fase específica. Mais leve que `/gsd-pause-work`. + +```bash +/gsd-thread # Lista todas as threads +/gsd-thread list --open # Lista somente threads abertas/em andamento +/gsd-thread list --resolved # Lista somente threads resolvidas +/gsd-thread status fix-deploy-key # Exibe status da thread +/gsd-thread close fix-deploy-key # Marca thread como resolvida +/gsd-thread fix-deploy-key-auth # Retoma thread +/gsd-thread "Investigate TCP timeout in pasta service" # Cria nova +``` + +--- + +## Comandos de Gerenciamento do Roadmap + +### `roadmap validate` + +Valida o ROADMAP.md quanto à integridade estrutural, incluindo consistência de prefixo de milestone. + +**Pré-requisitos:** `.planning/ROADMAP.md` existe +**Produz:** Relatório de validação; sai com código não-zero em qualquer erro ou aviso + +```bash +node gsd-tools.cjs roadmap validate +``` + +--- + +### `roadmap upgrade --convention milestone-prefixed` + +Migra IDs legados `Phase N` para a convenção de prefixo de milestone `Phase M-NN`. + +| Flag | Obrigatório | Descrição | +|------|-------------|-----------| +| `--convention milestone-prefixed` | Sim | Convenção alvo para migrar | +| `--apply` | Não | Escreve mudanças no disco (padrão: somente dry-run) | + +**Pré-requisitos:** `.planning/ROADMAP.md` existe +**Produz:** Diff de dry-run (padrão) ou reescrita in-place do ROADMAP.md (`--apply`) + +```bash +node gsd-tools.cjs roadmap upgrade --convention milestone-prefixed # dry-run +node gsd-tools.cjs roadmap upgrade --convention milestone-prefixed --apply # aplicar +``` + +--- + +## Comandos de Gerenciamento de Estado + +### `state validate` + +Detecta desvio entre STATE.md e o sistema de arquivos real. + +**Pré-requisitos:** `.planning/STATE.md` existe +**Produz:** Relatório de validação mostrando qualquer desvio entre os campos do STATE.md e a realidade do sistema de arquivos + +```bash +node gsd-tools.cjs state validate +``` + +--- + +### `state sync [--verify]` + +Reconstrói STATE.md a partir do estado real do projeto no disco. + +| Flag | Descrição | +|------|-----------| +| `--verify` | Modo dry-run — exibe mudanças propostas sem escrever | + +**Pré-requisitos:** Diretório `.planning/` existe +**Produz:** `STATE.md` atualizado refletindo a realidade do sistema de arquivos + +```bash +node gsd-tools.cjs state sync # Reconstrói STATE.md a partir do disco +node gsd-tools.cjs state sync --verify # Dry-run: exibe mudanças sem escrever +``` + +--- + +### `state planned-phase` + +Registra transição de estado após a conclusão de plan-phase (Planejado/Pronto para executar). + +| Flag | Descrição | +|------|-----------| +| `--phase N` | Número da fase que foi planejada | +| `--plans N` | Número de planos gerados | + +**Pré-requisitos:** A fase foi planejada +**Produz:** `STATE.md` atualizado com estado pós-planejamento + +```bash +node gsd-tools.cjs state planned-phase --phase 3 --plans 2 +``` + +--- + +## Comandos da Comunidade + +### Hooks da Comunidade + +Hooks opcionais de git e sessão disponíveis mediante `hooks.community: true` em `.planning/config.json`. Todos são no-ops a menos que explicitamente habilitados. + +| Hook | Finalidade | +|------|-----------| +| `gsd-validate-commit.sh` | Impõe o formato Conventional Commits nas mensagens de commit do git | +| `gsd-session-state.sh` | Rastreia transições de estado de sessão | +| `gsd-phase-boundary.sh` | Impõe verificações de limite de fase | + +Habilite com: +```json +{ "hooks": { "community": true } } +``` + +--- + +### Convite da Comunidade + +Para participar da comunidade GSD no Discord, visite o link no README do GSD ou execute `/gsd-help` e siga o link do Discord exibido lá. + +--- + +## Contribuindo: Padrões de Descrição de Skills + +As descrições de skills (o campo `description:` no frontmatter de cada `commands/gsd/*.md`) são +injetadas no prompt de sistema de cada sessão. Para manter o overhead por sessão baixo, as descrições +devem ter no máximo 100 caracteres e não devem duplicar a documentação de flags já em `argument-hint:`. + +Um portão de lint impõe o orçamento: + +```bash +npm run lint:descriptions +``` + +A verificação também é executada como parte de `npm test` via `tests/enh-2789-description-budget.test.cjs`. + +--- + +## Relacionados + +- [Referência de Configuração](CONFIGURATION.md) +- [Referência de Ferramentas CLI](CLI-TOOLS.md) +- [Referência de Funcionalidades](FEATURES.md) +- [Índice de documentação](README.md) diff --git a/docs/pt-BR/CONFIGURATION.md b/docs/pt-BR/CONFIGURATION.md index 085d9331c..881afc846 100644 --- a/docs/pt-BR/CONFIGURATION.md +++ b/docs/pt-BR/CONFIGURATION.md @@ -1,101 +1,1364 @@ # Referência de Configuração do GSD -Configurações do projeto ficam em `.planning/config.json`. -Esta versão resume os parâmetros principais em Português. Para schema completo, veja [inglês](../CONFIGURATION.md). +Referência completa do esquema para `.planning/config.json`. Para tutoriais de configuração e guias orientados a tarefas, consulte o [índice da documentação](README.md). + +> Esquema completo de configuração, controles de fluxo de trabalho, perfis de modelo e opções de ramificação git. Para contexto de funcionalidades, consulte a [Referência de Funcionalidades](FEATURES.md). --- -## Estrutura base +## Arquivo de Configuração + +O GSD armazena as configurações do projeto em `.planning/config.json`. Criado durante `/gsd-new-project`, atualizado via `/gsd-settings`. + +### Esquema Completo ```json { "mode": "interactive", "granularity": "standard", "model_profile": "balanced", + "model_overrides": {}, + "models": {}, + "dynamic_routing": null, "planning": { "commit_docs": true, - "search_gitignored": false + "search_gitignored": false, + "sub_repos": [] }, + "context": null, "workflow": { "research": true, "plan_check": true, "verifier": true, + "auto_advance": false, "nyquist_validation": true, "ui_phase": true, "ui_safety_gate": true, + "ui_review": true, + "node_repair": true, + "node_repair_budget": 2, "research_before_questions": false, - "discuss_mode": "standard", - "skip_discuss": false + "discuss_mode": "discuss", + "max_discuss_passes": 3, + "skip_discuss": false, + "human_verify_mode": "end-of-phase", + "tdd_mode": false, + "text_mode": false, + "use_worktrees": true, + "code_review": true, + "code_review_depth": "standard", + "plan_bounce": false, + "plan_bounce_script": null, + "plan_bounce_passes": 2, + "plan_chunked": false, + "code_review_command": null, + "cross_ai_execution": false, + "cross_ai_command": null, + "cross_ai_timeout": 300, + "security_enforcement": true, + "security_asvs_level": 1, + "security_block_on": "high", + "post_planning_gaps": true, + "build_command": null, + "test_command": null + }, + "code_quality": { + "fallow": { + "enabled": false, + "scope": "phase", + "profile": "standard", + "mcp": false + } + }, + "ship": { + "pr_body_sections": [] + }, + "hooks": { + "context_warnings": true, + "workflow_guard": false + }, + "statusline": { + "context_position": "end" + }, + "review": { + "default_reviewers": null, + "models": {} + }, + "parallelization": { + "enabled": true, + "plan_level": true, + "task_level": false, + "skip_checkpoints": true, + "max_concurrent_agents": 3, + "min_plans_for_parallel": 2 + }, + "git": { + "branching_strategy": "none", + "create_tag": true, + "phase_branch_template": "gsd/phase-{phase}-{slug}", + "milestone_branch_template": "gsd/{milestone}-{slug}", + "quick_branch_template": null + }, + "gates": { + "confirm_project": true, + "confirm_phases": true, + "confirm_roadmap": true, + "confirm_breakdown": true, + "confirm_plan": true, + "execute_next_plan": true, + "issues_review": true, + "confirm_transition": true + }, + "safety": { + "always_confirm_destructive": true, + "always_confirm_external_services": true + }, + "project_code": null, + "agent_skills": {}, + "response_language": null, + "features": { + "thinking_partner": false, + "global_learnings": false + }, + "learnings": { + "max_inject": 10 + }, + "intel": { + "enabled": false + }, + "claude_md_path": "./CLAUDE.md" +} +``` + +--- + +## Configurações Principais + +| Configuração | Tipo | Opções | Padrão | Descrição | +|---------|------|---------|---------|-------------| +| `mode` | enum | `interactive`, `yolo` | `interactive` | `yolo` aprova decisões automaticamente; `interactive` confirma em cada etapa | +| `granularity` | enum | `coarse`, `standard`, `fine` | `standard` | Controla a quantidade de fases: `coarse` (3-5), `standard` (5-8), `fine` (8-12) | +| `model_profile` | enum | `quality`, `balanced`, `budget`, `adaptive`, `inherit` | `balanced` | Nível de modelo para cada agente (consulte [Perfis de Modelo](#model-profiles)). `adaptive` foi adicionado conforme [#1713](https://github.com/open-gsd/gsd-core/issues/1713) / [#1806](https://github.com/open-gsd/gsd-core/issues/1806) e resolve da mesma forma que os outros níveis em perfis com reconhecimento de runtime. | +| `runtime` | string | `claude`, `codex`, ou qualquer string | (nenhum) | Runtime ativo para [resolução de perfil com reconhecimento de runtime](#runtime-aware-profiles-2517). Quando definido, os níveis de perfil (opus/sonnet/haiku) resolvem para IDs de modelo nativos do runtime. Atualmente, apenas o caminho de instalação do Codex emite IDs de modelo por agente a partir deste resolvedor; outros runtimes (`opencode`, `gemini`, `qwen`, `copilot`, …) consomem o resolvedor no momento do spawn e ganham suporte a caminho de instalação dedicado em [#2612](https://github.com/open-gsd/gsd-core/issues/2612). Quando não definido (padrão), o comportamento não se altera em relação às versões anteriores. Adicionado na v1.39 | +| `model_profile_overrides..` | string \| object | substituição de nível por runtime | (nenhum) | Substitui o mapeamento de nível com reconhecimento de runtime para um `(runtime, tier)` específico. O nível é um de `opus`, `sonnet`, `haiku`. O valor é uma string de ID de modelo (por exemplo, `"gpt-5-pro"`) ou `{ model, reasoning_effort }`. Consulte [Perfis com Reconhecimento de Runtime](#runtime-aware-profiles-2517). Adicionado na v1.39 | +| `model_policy.provider` | string | `openai`, `anthropic`, `google`, `qwen`, `generic` | (nenhum) | Declara o provedor de modelo. Provedores conhecidos (`openai`, `anthropic`, `google`, `qwen`) desbloqueiam predefinições baseadas em catálogo. `generic` trata todos os IDs de modelo como strings opacas — sem inferência de prefixo, sem padrões de esforço de raciocínio. `model_policy.runtime_tiers` resolve antes do legado `model_profile_overrides`. Consulte [Predefinições de Política de Modelo](#model-policy-presets-model_policy--added-in-v142). Adicionado na v1.42 ([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.budget` | enum | `high`, `medium`, `low` | (nenhum) | Seleciona um nível de orçamento ao usar um provedor conhecido. O GSD materializa a predefinição de catálogo correspondente em mapeamentos de nível explícitos no momento da resolução. Ignorado quando `provider` é `generic` ou `custom`. Adicionado na v1.42 ([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.high` | string | ID do modelo | (nenhum) | ID do modelo de nível de custo alto para provedor `generic`/`custom`. Usado quando `provider: "generic"` ou `"custom"`. Adicionado na v1.42 ([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.medium` | string | ID do modelo | (nenhum) | ID do modelo de nível de custo médio para provedor `generic`/`custom`. Adicionado na v1.42 ([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.low` | string | ID do modelo | (nenhum) | ID do modelo de nível de custo baixo para provedor `generic`/`custom`. Adicionado na v1.42 ([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.runtime_tiers..` | object | `{ model, reasoning_effort? }` | (nenhum) | Entrada de modelo explícita por runtime e por nível. `tier` é um de `opus`, `sonnet`, `haiku` (correspondendo aos nomes de nível de perfil existentes). `reasoning_effort` é encaminhado apenas para runtimes que o suportam; runtimes sem suporte nunca recebem o campo. Tem precedência sobre `model_profile_overrides`. Adicionado na v1.42 ([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `models.` | enum | `opus`, `sonnet`, `haiku`, `inherit` | (nenhum) | Nível de modelo por tipo de fase. Seis slots aceitos: `planning`, `discuss`, `research`, `execution`, `verification`, `completion`. Permite ajuste no nível de fase ("Opus para planejamento, Sonnet para o restante") sem precisar conhecer os nomes dos agentes. Resolve entre `model_overrides` (maior) e `model_profile` (menor); consulte [Modelos Por Tipo de Fase](#per-phase-type-models-models--added-in-v140). Adicionado na v1.40 ([#3023](https://github.com/open-gsd/gsd-core/pull/3030)) | +| `dynamic_routing.enabled` | boolean | `true`, `false` | `false` | Chave mestra para [roteamento dinâmico com escalada por nível em falha](#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140). Quando `true`, os agentes resolvem para `tier_models[default_tier]` e escalam um nível acima em falha soft detectada pelo orquestrador. Adicionado na v1.40 ([#3024](https://github.com/open-gsd/gsd-core/pull/3031)) | +| `dynamic_routing.tier_models.` | enum | `opus`, `sonnet`, `haiku` | (nenhum) | Alias de nível para `light`, `standard` ou `heavy`. Usado quando `dynamic_routing.enabled: true`. Adicionado na v1.40 | +| `dynamic_routing.escalate_on_failure` | boolean | `true`, `false` | `true` | Quando `false`, a escalada é desabilitada mesmo se `enabled: true` — cada tentativa usa o nível padrão. Adicionado na v1.40 | +| `dynamic_routing.max_escalations` | integer | `0`, `1`, `2`, … | `1` | Limite máximo de tentativas por invocação de agente. Além do limite, o resolvedor retorna o modelo do nível-limite. Adicionado na v1.40 | +| `project_code` | string | qualquer string curta | (nenhum) | Prefixo para nomes de diretórios de fase (por exemplo, `"ABC"` produz `ABC-01-setup/`). Adicionado na v1.31 | +| `phase_id_convention` | enum | `"milestone-prefixed"`, `null` | `null` | Convenção de nomenclatura para IDs de fase. `null` = IDs numéricos legados (`Phase 1`, `Phase 2`). `"milestone-prefixed"` = IDs globalmente únicos que codificam o marco envolvente (`Phase 1-01`, `Phase 1-02`). Execute `gsd-tools roadmap upgrade --convention milestone-prefixed` para migrar um ROADMAP.md existente. | +| `response_language` | string | código de idioma | (nenhum) | Idioma para respostas dos agentes (por exemplo, `"pt"`, `"ko"`, `"ja"`). Propagado para todos os agentes gerados para consistência de idioma entre fases. Adicionado na v1.32 | +| `context_window` | number | qualquer inteiro | `200000` | Tamanho da janela de contexto em tokens. Defina `1000000` para modelos com contexto de 1M (por exemplo, `claude-opus-4-7[1m]`). Valores `>= 500000` habilitam enriquecimento adaptativo de contexto (leituras completas de SUMMARY.md anteriores, leituras mais profundas de antipadrões). Configurado via `/gsd-config --advanced`. | +| `context_profile` | string | `dev`, `research`, `review` | (nenhum) | Predefinição de contexto de execução que aplica um conjunto pré-configurado de configurações de modo, modelo e fluxo de trabalho para o tipo atual de trabalho. Adicionado na v1.34 | +| `claude_md_path` | string | qualquer caminho de arquivo | `./CLAUDE.md` | Caminho de saída personalizado para o arquivo CLAUDE.md gerado. Útil para monorepos ou projetos que precisam do CLAUDE.md em um local fora da raiz. Padrão é `./CLAUDE.md` na raiz do projeto. Adicionado na v1.36 | +| `claude_md_assembly.mode` | enum | `embed`, `link` | `embed` | Controla como as seções gerenciadas são escritas no CLAUDE.md. `embed` (padrão) incorpora conteúdo entre marcadores GSD. `link` escreve `@.planning/` — o Claude Code expande a referência em tempo de execução, reduzindo o tamanho do CLAUDE.md em ~65% em projetos típicos. `link` aplica-se apenas a seções que possuem um arquivo-fonte real; as seções `workflow` e fallback sempre são incorporadas. Substituições por bloco: `claude_md_assembly.blocks.
` (por exemplo `claude_md_assembly.blocks.architecture: link`). Adicionado na v1.38 | +| `context` | string | qualquer texto | (nenhum) | String de contexto personalizado injetada em todos os prompts de agente do projeto. Use para fornecer orientações persistentes específicas do projeto (por exemplo, convenções de código, práticas da equipe) que todos os agentes devem conhecer | +| `phase_naming` | string | qualquer string | (nenhum) | Prefixo personalizado para nomes de diretórios de fase. Quando definido, substitui o slug de fase gerado automaticamente (por exemplo, `"feature"` produz `feature-01-setup/` em vez do slug derivado do roadmap) | +| `brave_search` | boolean | `true`/`false` | detectado automaticamente | Substitui a detecção automática de disponibilidade da API Brave Search. Quando não definido, o GSD verifica a variável de ambiente `BRAVE_API_KEY` ou o arquivo `~/.gsd/brave_api_key` | +| `firecrawl` | boolean | `true`/`false` | detectado automaticamente | Substitui a detecção automática de disponibilidade da API Firecrawl. Quando não definido, o GSD verifica a variável de ambiente `FIRECRAWL_API_KEY` ou o arquivo `~/.gsd/firecrawl_api_key` | +| `exa_search` | boolean | `true`/`false` | detectado automaticamente | Substitui a detecção automática de disponibilidade da API Exa Search. Quando não definido, o GSD verifica a variável de ambiente `EXA_API_KEY` ou o arquivo `~/.gsd/exa_api_key` | +| `search_gitignored` | boolean | `true`/`false` | `false` | Alias legado de nível superior para `planning.search_gitignored`. Prefira a forma com namespace; este alias é aceito para compatibilidade retroativa | + +> **Nota:** `granularity` foi renomeado de `depth` na v1.22.3. Configurações existentes são migradas automaticamente. + +--- + +## Configurações de Integração + +Configuradas interativamente via [`/gsd-config --integrations`](COMMANDS.md#gsd-config). Estas são configurações de *conectividade* — chaves de API e roteamento entre ferramentas — e são mantidas intencionalmente separadas de `/gsd-settings` (controles de fluxo de trabalho). + +### Chaves de API de Busca + +Os campos de chave de API aceitam um valor string (a própria chave). Também podem ser definidos como os valores especiais `true`/`false`/`null` para substituir a detecção automática de variáveis de ambiente / arquivos `~/.gsd/*_api_key` (comportamento legado, consulte as linhas acima). + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `brave_search` | string \| boolean \| null | `null` | Chave de API Brave Search usada para pesquisa na web. Exibida como `****<últimos-4>` em toda a interface / saída de `config-set`; nunca exibida em texto simples | +| `firecrawl` | string \| boolean \| null | `null` | Chave de API Firecrawl para raspagem profunda. Mascarada na exibição | +| `exa_search` | string \| boolean \| null | `null` | Chave de API Exa Search para busca semântica. Mascarada na exibição | + +**Convenção de mascaramento (`get-shit-done/bin/lib/secrets.cjs`):** chaves com 8 ou mais caracteres são renderizadas como `****<últimos-4>`; chaves menores são renderizadas como `****`; `null`/vazio é renderizado como `(unset)`. O texto simples é escrito como está em `.planning/config.json` — esse arquivo é o limite de segurança — mas a CLI, tabelas de confirmação, logs e descrições de `AskUserQuestion` nunca exibem o texto simples. Isso se aplica à própria saída do comando `config-set`: `config-set brave_search ` retorna um payload JSON com o valor mascarado. + +### Roteamento de CLI para Revisão de Código + +`review.models.` mapeia um sabor de revisor para um comando shell. O fluxo de trabalho de revisão de código usa este comando quando um sabor correspondente é solicitado. + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `review.models.claude` | string | (modelo da sessão) | Comando para revisão com sabor Claude. Usa o modelo da sessão quando não definido | +| `review.models.codex` | string | `null` | Comando para revisão Codex, por exemplo `"codex exec --model gpt-5"` | +| `review.models.gemini` | string | `null` | Comando para revisão Gemini, por exemplo `"gemini -m gemini-2.5-pro"` | +| `review.models.opencode` | string | `null` | Comando para revisão OpenCode, por exemplo `"opencode run --model claude-sonnet-4"` | + +O slug `` é validado contra `[a-zA-Z0-9_-]+`. Slugs vazios ou que contenham caminhos são rejeitados pelo `config-set`. + +### Revisores Padrão para `/gsd-review` + +Use `review.default_reviewers` para limitar a execução de `/gsd-review` sem flags a um subconjunto de revisores detectados. + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `review.default_reviewers` | string[] \| null | `null` (todos os revisores detectados) | Subconjunto padrão opcional para `/gsd-review` sem flags, por exemplo `["gemini","codex"]`. Precedência: flags de revisor explícitas > `--all` > `review.default_reviewers` > todos detectados. Slugs desconhecidos são ignorados com aviso; slugs conhecidos mas não detectados são ignorados com uma nota informativa; arrays vazios são rejeitados pelo `config-set`. | + +Exemplo: + +```json +{ + "review": { + "default_reviewers": ["gemini", "codex"] } } ``` -## Configurações principais +### Injeção de Habilidades de Agente (dinâmica) -| Chave | Opções | Padrão | Descrição | -|------|--------|--------|-----------| -| `mode` | `interactive`, `yolo` | `interactive` | `yolo` autoaprova; `interactive` confirma cada etapa | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | Granularidade de fases/planos | -| `model_profile` | `quality`, `balanced`, `budget`, `inherit` | `balanced` | Perfil de modelos por agente | +`agent_skills.` estende o mapa `agent_skills` documentado abaixo. O slug é validado contra `[a-zA-Z0-9_-]+` — sem separadores de caminho, sem espaços em branco, sem metacaracteres shell. Configurado interativamente via `/gsd-config --integrations`. -## Planning +--- -| Chave | Padrão | Descrição | -|------|--------|-----------| -| `planning.commit_docs` | `true` | Comitar `.planning/` no git | -| `planning.search_gitignored` | `false` | Incluir arquivos ignorados em buscas amplas | +## Controles de Fluxo de Trabalho -## Workflow toggles +Todos os controles de fluxo de trabalho seguem o padrão **ausente = habilitado**. Se uma chave estiver ausente na configuração, seu padrão é `true`. -| Chave | Padrão | Descrição | -|------|--------|-----------| -| `workflow.research` | `true` | Pesquisa antes de planejar | -| `workflow.plan_check` | `true` | Loop de verificação de plano | -| `workflow.verifier` | `true` | Verificação pós-execução | -| `workflow.nyquist_validation` | `true` | Camada de validação automatizada por requisito | -| `workflow.ui_phase` | `true` | Contrato de UI para fases frontend | -| `workflow.ui_safety_gate` | `true` | Gate de segurança para registry UI | -| `workflow.research_before_questions` | `false` | Pesquisa antes da discussão | -| `workflow.discuss_mode` | `standard` | Discussão aberta; use `assumptions` para modo baseado em código | -| `workflow.skip_discuss` | `false` | Pula discuss-phase no modo autônomo | +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `workflow.research` | boolean | `true` | Investigação de domínio antes de planejar cada fase | +| `workflow.plan_check` | boolean | `true` | Loop de verificação de plano (até 3 iterações) | +| `workflow.verifier` | boolean | `true` | Verificação pós-execução em relação aos objetivos da fase | +| `workflow.auto_advance` | boolean | `false` | Encadeia automaticamente discuss → plan → execute sem parar | +| `workflow.nyquist_validation` | boolean | `true` | Mapeamento de cobertura de testes durante a pesquisa de fase de planejamento | +| `workflow.ui_phase` | boolean | `true` | Gera contratos de design de UI para fases de frontend | +| `workflow.ui_safety_gate` | boolean | `true` | Solicita executar /gsd-ui-phase para fases de frontend durante a fase de planejamento | +| `workflow.ui_review` | boolean | `true` | Executa auditoria de qualidade visual (`/gsd-ui-review`) após execução de fase no modo autônomo. Quando `false`, o passo de auditoria de UI é ignorado. | +| `workflow.node_repair` | boolean | `true` | Reparação autônoma de tarefas em falha de verificação | +| `workflow.node_repair_budget` | number | `2` | Máximo de tentativas de reparo por tarefa com falha | +| `workflow.research_before_questions` | boolean | `false` | Executa pesquisa antes das perguntas de discussão em vez de após | +| `workflow.discuss_mode` | string | `'discuss'` | Controla como `/gsd-discuss-phase` coleta contexto. `'discuss'` (padrão) faz perguntas uma a uma. `'assumptions'` lê a base de código primeiro, gera premissas estruturadas com níveis de confiança e só pede para corrigir o que está errado. Adicionado na v1.28 | +| `workflow.max_discuss_passes` | number | `3` | Número máximo de rodadas de perguntas na fase de discussão antes que o fluxo de trabalho pare de perguntar. Útil em modo headless/automático para evitar loops de discussão infinitos. | +| `workflow.skip_discuss` | boolean | `false` | Quando `true`, `/gsd-autonomous` ignora totalmente a fase de discussão, escrevendo um CONTEXT.md mínimo a partir do objetivo de fase do ROADMAP. Útil para projetos onde as preferências do desenvolvedor estão totalmente capturadas em PROJECT.md/REQUIREMENTS.md. Adicionado na v1.28 | +| `workflow.text_mode` | boolean | `false` | Substitui menus TUI de AskUserQuestion por listas numeradas em texto simples. Necessário para sessões remotas do Claude Code (modo `/rc`) onde menus TUI não são renderizados. Também pode ser definido por sessão com a flag `--text` na fase de discussão. Adicionado na v1.28 | +| `workflow.use_worktrees` | boolean | `true` | Quando `false`, desabilita o isolamento de worktree git para execução paralela. Usuários que preferem execução sequencial ou cujo ambiente não suporta worktrees podem desabilitar isso. Adicionado na v1.31 | +| `workflow.worktree_skip_hooks` | boolean | `false` | Quando `true`, os agentes executores no modo worktree passam `--no-verify` (ignorando hooks de pré-commit) e a validação de hook pós-onda é executada contra o resultado mesclado. Válvula de escape opt-in para projetos cujos hooks não podem ser executados em worktrees de agente. Padrão `false` executa hooks em cada commit (#2924). | +| `workflow.code_review` | boolean | `true` | Habilita os comandos `/gsd-code-review` e `/gsd-code-review --fix`. Quando `false`, os comandos saem com uma mensagem de gate de configuração. Adicionado na v1.34 | +| `workflow.code_review_depth` | string | `standard` | Profundidade de revisão padrão para `/gsd-code-review`: `quick` (somente correspondência de padrão), `standard` (análise por arquivo) ou `deep` (entre arquivos com grafos de importação). Pode ser substituído por execução com `--depth=`. Adicionado na v1.34 | +| `workflow.plan_bounce` | boolean | `false` | Executa script de validação externo nos planos gerados. Quando habilitado, o orquestrador de fase de planejamento encaminha cada PLAN.md pelo script especificado por `plan_bounce_script` e bloqueia em saída diferente de zero. Adicionado na v1.36 | +| `workflow.plan_bounce_script` | string | (nenhum) | Caminho para o script externo invocado na validação de bounce de plano. Recebe o caminho do PLAN.md como primeiro argumento. Obrigatório quando `plan_bounce` é `true`. Adicionado na v1.36 | +| `workflow.plan_bounce_passes` | number | `2` | Número de passagens sequenciais de bounce a executar. Cada passagem alimenta a saída da passagem anterior de volta no validador. Valores maiores aumentam o rigor ao custo de latência. Adicionado na v1.36 | +| `workflow.post_planning_gaps` | boolean | `true` | Relatório unificado de lacunas pós-planejamento (#2493). Após todos os planos serem gerados e commitados, verifica REQUIREMENTS.md e as `` de CONTEXT.md em relação a cada PLAN.md no diretório da fase, então imprime uma tabela `Source \| Item \| Status`. Correspondência por limite de palavra (REQ-1 vs REQ-10) e ordenação natural (REQ-02 antes de REQ-10). Não bloqueante — apenas relatório informativo. Defina como `false` para pular o Passo 13e da fase de planejamento. | +| `workflow.plan_review_convergence` | boolean | `false` | Habilita o comando `/gsd-plan-review-convergence`. Desabilitado por padrão — o comando sai com instrução de habilitação quando esta chave é `false`. O comando automatiza o loop manual de plan→review→replan: gera revisores configurados (Codex, Gemini, Claude, OpenCode, Ollama, LM Studio, llama.cpp), conta preocupações HIGH não resolvidas via contrato CYCLE_SUMMARY, replaneja com feedback `--reviews` e repete até convergir ou atingir o número máximo de ciclos. Habilite com `gsd config-set workflow.plan_review_convergence true`. Adicionado na v1.39 | +| `workflow.plan_chunked` | boolean | `false` | Habilita o modo de planejamento em chunks. Quando `true` (ou quando a flag `--chunked` é passada para `/gsd-plan-phase`), o orquestrador divide a única Task de planejamento de longa duração em uma Task curta de esboço seguida de N Tasks curtas por plano (~3-5 min cada). Cada plano é commitado individualmente para resiliência a falhas. Se uma Task travar e o terminal for forçado a fechar, reexecutar com `--chunked` retoma a partir do último plano concluído. Particularmente útil no Windows onde Tasks de longa duração podem travar em stdio. Adicionado na v1.38 | +| `workflow.code_review_command` | string | (nenhum) | Comando shell para integração de revisão de código externa em `/gsd-ship`. Recebe caminhos de arquivos alterados via stdin. Saída diferente de zero bloqueia o fluxo de trabalho de ship. Adicionado na v1.36 | +| `workflow.tdd_mode` | boolean | `false` | Habilita o pipeline TDD como modo de execução de primeira classe. Quando `true`, o planejador aplica agressivamente `type: tdd` a tarefas elegíveis (lógica de negócios, APIs, validações, algoritmos) e o executor impõe a sequência de gate RED/GREEN/REFACTOR. Um ponto de revisão colaborativa ao final da fase verifica a conformidade com o gate. Adicionado na v1.36 | +| `workflow.human_verify_mode` | string | `'end-of-phase'` | Controla os pontos de verificação humana. `'end-of-phase'` (padrão desde #3309) suprime as tasks `checkpoint:human-verify` e incorpora verificações nos blocos `` para revisão ao final da fase. `'mid-flight'` restaura as tasks de checkpoint bloqueantes. `checkpoint:decision` e `checkpoint:human-action` não são afetados. Consulte [Referência de Checkpoints](../../get-shit-done/references/checkpoints.md#checkpoint_types). | +| `workflow.cross_ai_execution` | boolean | `false` | Delega a execução de fase para uma CLI de IA externa em vez de gerar agentes executores locais. Útil para aproveitar os pontos fortes de um modelo diferente para fases específicas. Adicionado na v1.36 | +| `workflow.cross_ai_command` | string | (nenhum) | Template de comando shell para execução cross-AI. Recebe o prompt de fase via stdin. Deve produzir saída compatível com SUMMARY.md. Obrigatório quando `cross_ai_execution` é `true`. Adicionado na v1.36 | +| `workflow.cross_ai_timeout` | number | `300` | Timeout em segundos para comandos de execução cross-AI. Previne processos externos que não terminam. Adicionado na v1.36 | +| `workflow.ai_integration_phase` | boolean | `true` | Habilita o comando `/gsd-ai-integration-phase`. Quando `false`, o comando sai com uma mensagem de gate de configuração | +| `workflow.auto_prune_state` | boolean | `false` | Quando `true`, poda automaticamente entradas obsoletas de STATE.md nos limites de fase em vez de solicitar confirmação | +| `workflow.pattern_mapper` | boolean | `true` | Executa o agente `gsd-pattern-mapper` entre pesquisa e planejamento para mapear novos arquivos para análogos existentes na base de código | +| `workflow.subagent_timeout` | number | `600` | Timeout em segundos para invocações individuais de subagente. Aumente para fases de pesquisa ou execução de longa duração | +| `executor.stall_detect_interval_minutes` | number | `5` | Minutos entre verificações de travamento do executor enquanto um agente executor está ativo. O orquestrador de fase de execução usa essa cadência para inspecionar commits recentes e evitar espera eterna por um agente silencioso. | +| `executor.stall_threshold_minutes` | number | `10` | Minutos sem conclusão do executor ou atividade de commit no branch esperado antes que a fase de execução ofereça opções de recuperação para um possível executor travado. | +| `workflow.inline_plan_threshold` | number | `3` | Número máximo de tasks em uma fase antes que o planejador gere um arquivo PLAN.md separado em vez de incorporar tasks no prompt | +| `workflow.drift_threshold` | number | `3` | Número mínimo de novos elementos estruturais (novos diretórios, exportações barrel, migrações, módulos de rota) introduzidos durante uma fase antes que o gate de deriva pós-execução da base de código tome ação. Consulte [#2003](https://github.com/open-gsd/gsd-core/issues/2003). Adicionado na v1.39 | +| `workflow.drift_action` | string | `warn` | O que fazer quando `workflow.drift_threshold` é excedido após `/gsd-execute-phase`. `warn` imprime uma mensagem sugerindo `/gsd-map-codebase --paths …`; `auto-remap` gera `gsd-codebase-mapper` com escopo para os caminhos afetados. Adicionado na v1.39 | +| `workflow.build_command` | string | (nenhum) | Comando shell para compilar o projeto no gate de build pós-merge (Passo A do passo 5.6 na fase de execução). Quando não definido, o gate detecta automaticamente: Xcode (`.xcodeproj` presente) → `xcodebuild build`, `Makefile` com alvo `build:` → `make build`, Justfile → `just build`, `Cargo.toml` → `cargo build`, `go.mod` → `go build ./...`, Python → `python -m py_compile`, `package.json` com script `build` → `npm run build`. Executa com timeout de 5 minutos; falha incrementa `WAVE_FAILURE_COUNT`. Adicionado na v1.39 | +| `workflow.test_command` | string | (nenhum) | Comando shell para executar a suíte de testes do projeto no gate de teste pós-merge (Passo B do passo 5.6 na fase de execução) e no gate de regressão. Quando não definido, o gate detecta automaticamente: Xcode (`.xcodeproj` presente) → `xcodebuild test`, `Makefile` com alvo `test:` → `make test`, Justfile → `just test`, `package.json` → `npm test`, `Cargo.toml` → `cargo test`, `go.mod` → `go test ./...`, Python → `python -m pytest`. Executa com timeout de 5 minutos; falha incrementa `WAVE_FAILURE_COUNT`. Adicionado na v1.39 | -## Git branching +## Configurações de Qualidade de Código -| Chave | Opções | Padrão | Descrição | -|------|--------|--------|-----------| -| `git.branching_strategy` | `none`, `phase`, `milestone` | `none` | Estratégia de criação de branches | -| `git.phase_branch_template` | string | `gsd/phase-{phase}-{slug}` | Nome para branch por fase | -| `git.milestone_branch_template` | string | `gsd/{milestone}-{slug}` | Nome para branch de milestone | -| `git.quick_branch_template` | string ou `null` | `null` | Branch opcional para `/gsd-quick` | +O namespace `code_quality.*` controla ferramentas opcionais de análise estrutural que complementam `/gsd-code-review`. As configurações são aditivas: cada ferramenta é habilitada independentemente e está desativada por padrão. -## Perfis de modelo +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `code_quality.fallow.enabled` | boolean | `false` | Habilita a pré-passagem estrutural fallow para `/gsd-code-review`. Quando `false`, nenhuma sondagem de binário fallow ou artefato JSON é produzido. | +| `code_quality.fallow.scope` | string | `phase` | Escopo para análise fallow: `phase` (escopo de arquivo de revisão atual) ou `repo` (repositório inteiro). | +| `code_quality.fallow.profile` | string | `standard` | Seletor de perfil fallow passado para o executor de pré-passagem (`minimal`, `standard`, `strict`). | +| `code_quality.fallow.mcp` | boolean | `false` | **Reservado — ainda não implementado.** Quando `true`, habilita o modo de descobertas estruturais suportadas por MCP para runtimes que suportam roteamento de servidor MCP. Definir como `true` atualmente é um no-op e emite um aviso de runtime. | -| Perfil | Objetivo | -|--------|----------| -| `quality` | Melhor qualidade, maior custo | -| `balanced` | Equilíbrio (padrão recomendado) | -| `budget` | Menor custo | -| `inherit` | Herdar modelo da sessão/runtime | +## Configurações de Ship -Troca rápida: +`ship.pr_body_sections` adiciona seções adicionais ao corpo do PR para conteúdo de PRD/corpo do PR específico do projeto em `/gsd-ship` sem editar `get-shit-done/workflows/ship.md`. -```bash -/gsd-config --profile budget +Para um guia do usuário com exemplos de integração e solução de problemas, consulte [Seções Personalizadas do Corpo do PR](../ship-pr-body-sections.md). + +Esta lista é apenas para adição: as entradas configuradas são adicionadas após as seções principais de `Summary`, `Changes`, `Requirements Addressed`, `Verification` e `Key Decisions`. Elas não podem substituir, remover ou reordenar as seções obrigatórias. + +Os usos recomendados para PRD ágil/lean incluem histórias de usuário, critérios de aceitação, Definição de Pronto ou critérios de lançamento, riscos e dependências, métricas de sucesso e notas de revisão de stakeholders. Mantenha essas seções curtas e orientadas a evidências para que o corpo do PR permaneça um artefato vivo de lançamento em vez de um dump estático de requisitos. + +Cada entrada suporta: + +| Campo | Tipo | Padrão | Descrição | +|-------|------|---------|-------------| +| `heading` | string | obrigatório | Título de seção Markdown renderizado como `## {heading}`. Deve ser uma única linha. | +| `enabled` | boolean | `true` | Quando `false`, a integração pode manter uma seção candidata na configuração sem renderizá-la em corpos de PR gerados. | +| `source` | string | (nenhum) | Cadeia de fallback opcional de títulos de artefatos de planejamento, como `PLAN.md ## Risks \|\| VERIFICATION.md ## Manual Checks`. Os artefatos permitidos são `ROADMAP.md`, `PLAN.md`, `SUMMARY.md`, `VERIFICATION.md`, `STATE.md`, `REQUIREMENTS.md` e `CONTEXT.md`. | +| `template` | string | (nenhum) | Markdown literal com tokens fechados: `{phase_number}`, `{phase_name}`, `{phase_dir}`, `{base_branch}`, `{padded_phase}`. | +| `fallback` | string | (nenhum) | Markdown literal usado quando `source` não produz conteúdo e nenhum `template` é fornecido. | + +Pelo menos um de `source`, `template` ou `fallback` é obrigatório para cada seção. O padrão é `[]`, portanto projetos existentes mantêm sua saída atual de `/gsd-ship` até que a integração adicione entradas habilitadas. + +Exemplo: + +```json +{ + "ship": { + "pr_body_sections": [ + { + "heading": "User Stories & Acceptance Criteria", + "enabled": true, + "source": "REQUIREMENTS.md ## User Stories || REQUIREMENTS.md ## Acceptance Criteria", + "fallback": "- Acceptance criteria are covered by the linked requirements and verification evidence." + }, + { + "heading": "Risks & Rollback", + "enabled": true, + "source": "PLAN.md ## Risks || PLAN.md ## Rollback", + "fallback": "- Rollback: revert this PR." + }, + { + "heading": "Stakeholder Sign-off", + "enabled": false, + "template": "- Product owner: pending for {phase_name}" + } + ] + } +} ``` -## Novidades de configuração v1.31--v1.32 +### Combinações Comuns de Configurações + +As seguintes combinações de `mode`, `granularity`, `model_profile` e controles de fluxo de trabalho são frequentemente usadas juntas. Consulte [Configurar perfis de modelo](how-to/configure-model-profiles.md) para orientação de configuração. + +| Cenário | mode | granularity | profile | research | plan_check | verifier | +|----------|------|-------------|---------|----------|------------|----------| +| Prototipagem | `yolo` | `coarse` | `budget` | `false` | `false` | `false` | +| Desenvolvimento normal | `interactive` | `standard` | `balanced` | `true` | `true` | `true` | +| Lançamento em produção | `interactive` | `fine` | `quality` | `true` | `true` | `true` | + +--- + +## Configurações de Planejamento + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `planning.commit_docs` | boolean | `true` | Define se os arquivos de `.planning/` são commitados no git | +| `planning.search_gitignored` | boolean | `false` | Adiciona `--no-ignore` em buscas amplas para incluir `.planning/` | +| `planning.sub_repos` | array de strings | `[]` | Caminhos de sub-repositórios aninhados relativos à raiz do projeto. Quando definido, as ferramentas com reconhecimento de GSD limitam a busca de fase, resolução de caminho e operações de commit por sub-repo em vez de tratar o repositório externo como um monorepo | + +### Resolução da Raiz do Projeto em Workspaces Multi-Repositório + +Quando `sub_repos` está definido e `gsd-tools.cjs` ou `gsd-tools query` é invocado de dentro de um repositório filho listado, ambas as CLIs sobem até o workspace pai que possui `.planning/` antes de despachar os manipuladores. Ordem de resolução (verificada em cada ancestral até 10 níveis, nunca acima de `$HOME`): + +1. Se o diretório inicial já possui seu próprio `.planning/`, ele é a raiz do projeto (sem subida). +2. O pai possui `.planning/config.json` listando o segmento de nível superior do diretório inicial em `sub_repos` (ou o formato legado `planning.sub_repos`). +3. O pai possui `.planning/config.json` com `multiRepo: true` legado e o diretório inicial está dentro de um repositório git. +4. O pai possui `.planning/` e um ancestral até o pai candidato contém `.git` (fallback heurístico). + +Se nenhum corresponder, o diretório inicial é retornado sem alteração. `--project-dir /caminho/para/workspace` explícito é idempotente sob esta resolução. + +### Detecção Automática + +Se `.planning/` estiver em `.gitignore`, `commit_docs` é automaticamente `false` independentemente do config.json. Isso evita erros do git. + +--- + +## Configurações de Hook + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `hooks.context_warnings` | boolean | `true` | Exibe avisos de uso da janela de contexto via hook do monitor de contexto | +| `hooks.workflow_guard` | boolean | `false` | Avisa quando edições de arquivo ocorrem fora do contexto do fluxo de trabalho GSD (aconselha usar `/gsd-quick` ou `/gsd-fast`) | +| `statusline.show_last_command` | boolean | `false` | Acrescenta o sufixo `last: /` à statusline mostrando o comando slash invocado mais recentemente. Opt-in; lê a transcrição da sessão ativa para extrair a última tag `` (fecha #2538) | +| `statusline.context_position` | string | `"end"` | Posição do medidor de janela de contexto. `"end"` (padrão) renderiza no final da linha; `"front"` renderiza imediatamente após o nome do modelo para que o medidor permaneça visível em terminais estreitos. Fecha #2937 | + +O hook guardião de injeção de prompt (`gsd-prompt-guard.js`) está sempre ativo e não pode ser desabilitado — é uma funcionalidade de segurança, não um controle de fluxo de trabalho. + +### Configuração de Planejamento Privado + +Quando `planning.commit_docs` é `false` e `.planning/` está listado em `.gitignore`, o GSD trata os artefatos de planejamento como locais apenas. `planning.search_gitignored: true` garante que buscas amplas ainda incluam o diretório `.planning/` nesta configuração. Consulte [Configurar planejamento privado](how-to/configure-model-profiles.md) para os passos de configuração. + +--- + +## Injeção de Habilidades de Agente + +Injeta arquivos de habilidades personalizados nos prompts de subagentes GSD. As habilidades são lidas pelos agentes no momento do spawn, fornecendo instruções específicas do projeto além do que o CLAUDE.md oferece. + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `agent_skills` | object | `{}` | Mapa de tipos de agente para caminhos de diretório de habilidades | + +### Configuração + +Adicione uma seção `agent_skills` em `.planning/config.json` mapeando tipos de agente para arrays de caminhos de diretório de habilidades (relativos à raiz do projeto): + +```json +{ + "agent_skills": { + "gsd-executor": ["skills/testing-standards", "skills/api-conventions"], + "gsd-planner": ["skills/architecture-rules"], + "gsd-verifier": ["skills/acceptance-criteria"] + } +} +``` + +Cada caminho deve ser um diretório contendo um arquivo `SKILL.md`. Os caminhos são validados para segurança (sem travessia fora da raiz do projeto). + +### Tipos de Agente Suportados + +Qualquer tipo de agente GSD pode receber habilidades. Tipos comuns: + +- `gsd-executor` -- executa planos de implementação +- `gsd-planner` -- cria planos de fase +- `gsd-checker` -- verifica a qualidade do plano +- `gsd-verifier` -- verificação pós-execução +- `gsd-researcher` -- pesquisa de fase +- `gsd-project-researcher` -- pesquisa de novo projeto +- `gsd-debugger` -- agentes de diagnóstico +- `gsd-codebase-mapper` -- análise da base de código +- `gsd-advisor` -- consultores da fase de discussão +- `gsd-ui-researcher` -- criação de contrato de design de UI +- `gsd-ui-checker` -- verificação de especificação de UI +- `gsd-roadmapper` -- criação de roadmap +- `gsd-synthesizer` -- síntese de pesquisa + +### Como Funciona + +No momento do spawn, os fluxos de trabalho chamam `gsd-tools query agent-skills ` (ou o legado `node gsd-tools.cjs agent-skills `) para carregar as habilidades configuradas. Se existirem habilidades para o tipo de agente, elas são injetadas como um bloco `` no prompt de Task(): + +```xml + +Read these user-configured skills: +- @skills/testing-standards/SKILL.md +- @skills/api-conventions/SKILL.md + +``` + +Se nenhuma habilidade estiver configurada, o bloco é omitido (zero overhead). + +### CLI + +Defina habilidades via CLI: + +```bash +gsd-tools query config-set agent_skills.gsd-executor '["skills/my-skill"]' +``` + +--- + +## Feature Flags + +Ative capacidades opcionais via o namespace de configuração `features.*`. Feature flags têm padrão `false` (desabilitado) — habilitar uma flag ativa o novo comportamento sem afetar os fluxos de trabalho existentes. + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `features.thinking_partner` | boolean | `false` | Habilita análise de parceiro de raciocínio em pontos de decisão do fluxo de trabalho | +| `features.global_learnings` | boolean | `false` | Habilita o pipeline de aprendizados entre projetos (cópia automática na conclusão de fase, injeção no planejador) | +| `learnings.max_inject` | number | `10` | Número máximo de aprendizados entre projetos injetados em cada prompt do planejador. Valores menores reduzem o tamanho do prompt; valores maiores fornecem contexto histórico mais amplo | +| `intel.enabled` | boolean | `false` | Habilita o sistema de inteligência consultável da base de código. Quando `true`, os comandos `/gsd-map-codebase --query` constroem e consultam um índice JSON em `.planning/intel/`. Adicionado na v1.34 | + + +### Configurações de Revisão de Plano + +O namespace `plan_review.*` controla o guardião de deriva de plano, que verifica se os símbolos citados nos planos gerados (decoradores, classes, funções, flags CLI) realmente existem no código-fonte no momento da revisão. Isso detecta nomes alucinados antes que a execução comece. + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `plan_review.source_grounding` | boolean | `true` | Habilita o guardião de deriva de plano. Quando `true` (padrão), a revisão de plano resolve cada referência de símbolo citada em um PLAN.md em relação à árvore de fontes ativa. Planos que citam uma função, classe, decorador ou flag CLI inexistente produzem um aviso `needs-acknowledgement` antes do plano ser aprovado. Desabilite com `false` para ignorar completamente a verificação de símbolo. Ative durante a configuração (`/gsd:new-project`) ou a qualquer momento via `/gsd:settings`. | +| `plan_review.source_grounding_authority` | enum | `grep` | Seleciona o adaptador de resolução usado para verificar a existência de símbolos. Valores permitidos: `grep` (padrão — busca ripgrep/grep de arquivos de fonte, funciona em qualquer projeto sem ferramental adicional), `intel` (consulta o índice `.planning/intel/api-map.json` construído por `/gsd:map-codebase`; requer `intel.enabled: true`), `treesitter` (reservado para adaptador tree-sitter futuro), `lsp` (reservado para adaptador LSP futuro), `scip` (reservado para adaptador SCIP/LSIF futuro). Use `intel` quando tiver executado `/gsd:map-codebase` e quiser a busca mais rápida e pré-indexada. Todos os outros valores além de `grep` e `intel` são reservados e não têm efeito na versão atual. | + + +### Configurações do Graphify + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `graphify.enabled` | boolean | `false` | Habilita o grafo de conhecimento do projeto. Quando `true`, `/gsd-graphify` constrói e consulta um grafo em `.planning/graphs/`. Adicionado na v1.36 | +| `graphify.build_timeout` | number (segundos) | `300` | Segundos máximos permitidos para uma execução de `/gsd-graphify build` antes de abortar. Adicionado na v1.36 | +| `graphify.auto_update` | boolean | `false` | **Opt-in (issue #3347).** Quando `true` (e `graphify.enabled` também é `true`), o hook PostToolUse incluído `hooks/gsd-graphify-update.sh` reconstrói automaticamente o grafo de conhecimento do projeto em um processo em segundo plano após `git commit/merge/pull/rebase --continue/cherry-pick` no branch padrão (substituição `git.base_branch`, senão `main`/`master`/`trunk`). O hook retorna instantaneamente; a reconstrução atualiza `.planning/graphs/{graph.json,graph.html,GRAPH_REPORT.md}` e escreve `.planning/graphs/.last-build-status.json` (`{ts, status: "running"\|"ok"\|"failed", exit_code, duration_ms, head_at_build}`). Bloqueado por PID, ciente de CI (`$CI` env suprime), aborta silenciosamente se `graphify` não estiver no `PATH`. Padrão `false` para que o comportamento existente não mude após atualização. | + +#### Configuração para múltiplos desenvolvedores + +Quando vários desenvolvedores reconstroem o grafo no mesmo repositório, `graphify hook install` (executado uma vez por clone) instala um driver de merge git que mescla por união gravações concorrentes de `graph.json`, eliminando marcadores de conflito. Também registra o hook de reconstrução pós-commit, escreve `.gitattributes` e adiciona `graphify merge-driver` em `.git/config`. Projetos solo podem pular esta etapa. Introduzido upstream no graphify v0.7.0 junto com o sinal de atualidade `built_at_commit` exibido por `/gsd-graphify status`. + +#### Obsolescência baseada em commit + +`/gsd-graphify status` relata dois sinais ortogonais de obsolescência: + +- **`stale`** (baseado em mtime, janela de 24 horas) — quando o arquivo do grafo foi gravado pela última vez. Útil quando graphify não é executado automaticamente. +- **`commit_stale`** (baseado em commit, requer graphify v0.7+) — se o grafo foi construído contra o `git HEAD` atual. Confiável quando presente. + Tri-estado: `true` / `false` / `null`. `null` significa que o sinal não está disponível (grafo pré-v0.7, sem git ou commit inacessível) — use o flag de mtime como fallback. + +Um grafo construído por CI há alguns minutos contra um checkout antigo aparecerá como atualizado pelo mtime mas `commit_stale: true`. Apresente ambos ao responder perguntas de arquitetura. + +### Uso + +```bash +# Habilitar uma feature +gsd-tools query config-set features.global_learnings true + +# Desabilitar uma feature +gsd-tools query config-set features.thinking_partner false +``` + +O namespace `features.*` é um padrão de chave dinâmico — novos feature flags podem ser adicionados sem modificar `VALID_CONFIG_KEYS`. Qualquer chave correspondente a `features.` é aceita pelo sistema de configuração. + +--- + +## Configurações de Paralelização + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `parallelization` | boolean | `true` | Atalho para `parallelization.enabled`. Definir `parallelization false` desabilita a execução paralela sem alterar outras sub-chaves | +| `parallelization.enabled` | boolean | `true` | Executa planos independentes simultaneamente | +| `parallelization.plan_level` | boolean | `true` | Paraleliza no nível do plano | +| `parallelization.task_level` | boolean | `false` | Paraleliza tasks dentro de um plano | +| `parallelization.skip_checkpoints` | boolean | `true` | Ignora checkpoints durante execução paralela | +| `parallelization.max_concurrent_agents` | number | `3` | Máximo de agentes simultâneos | +| `parallelization.min_plans_for_parallel` | number | `2` | Mínimo de planos para acionar execução paralela | + +> **Hooks de pré-commit e execução paralela**: Quando a paralelização está habilitada, os agentes executores fazem commit com `--no-verify` para evitar contenda de bloqueio de build (por exemplo, disputas de cargo lock em projetos Rust). O orquestrador valida os hooks uma vez após cada onda concluir. Gravações em STATE.md são protegidas por bloqueio no nível do arquivo para evitar corrupção por escrita concorrente. Se você precisar que os hooks sejam executados por commit, defina `parallelization.enabled: false`. + +--- + +## Frontmatter do STATE.md (Ciclo de Vida de Fase) + +`STATE.md` carrega frontmatter YAML que o hook da linha de status lê a cada renderização. A v1.40 adiciona quatro campos opcionais de ciclo de vida de fase lidos por `parseStateMd()` e renderizados por `formatGsdState()`: + +| Campo | Tipo | Finalidade | +|-------|------|---------| +| `active_phase` | string (por exemplo `"4.5"`) | Número de fase quando um comando orquestrador está em execução | +| `next_action` | string | Próximo comando recomendado quando inativo (`discuss-phase` / `plan-phase` / `execute-phase` / `verify-phase`) | +| `next_phases` | array de fluxo YAML | Fases às quais o `next_action` se aplica (por exemplo `["4.5"]`) | +| `progress` | bloco | Aninhado `total_phases` / `completed_phases` / `percent` para a barra de progresso do marco | + +Todos os quatro campos são **opcionais e aditivos** — arquivos STATE.md sem eles continuam sendo renderizados exatamente como na v1.38.x. Consulte o [esquema STATE.md](reference/state-md.md) para a referência completa de campos, restrições do parser e cenas de renderização. + +--- + +## Ramificação Git + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `git.branching_strategy` | enum | `none` | `none`, `phase` ou `milestone` | +| `git.base_branch` | string | `main` | O branch de integração a partir do qual os branches de fase/marco são criados e nos quais são mesclados de volta. Substitua quando seu repositório usar `master` ou um branch de release | +| `git.create_tag` | boolean | `true` | Cria uma tag git (`v[X.Y]`) na conclusão do marco. Defina como `false` para projetos com seu próprio fluxo de release | +| `git.phase_branch_template` | string | `gsd/phase-{phase}-{slug}` | Template de nome de branch para estratégia de fase | +| `git.milestone_branch_template` | string | `gsd/{milestone}-{slug}` | Template de nome de branch para estratégia de marco | +| `git.quick_branch_template` | string ou null | `null` | Template opcional de nome de branch para tasks `/gsd-quick` | + +### Comparação de Estratégias + +| Estratégia | Cria Branch | Escopo | Ponto de Merge | Ideal Para | +|----------|---------------|-------|-------------|----------| +| `none` | Nunca | N/A | N/A | Desenvolvimento solo, projetos simples | +| `phase` | No início de `execute-phase` | Uma fase | Usuário faz merge após a fase | Revisão de código por fase, rollback granular | +| `milestone` | No primeiro `execute-phase` | Todas as fases no marco | Em `complete-milestone` | Branches de release, PR por versão | + +### Variáveis de Template + +| Variável | Disponível Em | Exemplo | +|----------|-------------|---------| +| `{phase}` | `phase_branch_template` | `03` (com zero à esquerda) | +| `{slug}` | Ambos os templates | `user-authentication` (minúsculas, com hífens) | +| `{milestone}` | `milestone_branch_template` | `v1.0` | +| `{num}` / `{quick}` | `quick_branch_template` | `260317-abc` (ID de task rápida) | + +Exemplo de ramificação para task rápida: + +```json +"git": { + "quick_branch_template": "gsd/quick-{num}-{slug}" +} +``` + +### Opções de Merge na Conclusão do Marco + +| Opção | Comando Git | Resultado | +|--------|-------------|--------| +| Squash merge (recomendado) | `git merge --squash` | Commit único e limpo por branch | +| Merge com histórico | `git merge --no-ff` | Preserva todos os commits individuais | +| Deletar sem merge | `git branch -D` | Descarta o trabalho do branch | +| Manter branches | (nenhum) | Tratamento manual posterior | + +--- + +## Configurações de Gate + +Controla prompts de confirmação durante os fluxos de trabalho. + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `gates.confirm_project` | boolean | `true` | Confirma detalhes do projeto antes de finalizar | +| `gates.confirm_phases` | boolean | `true` | Confirma a divisão de fases | +| `gates.confirm_roadmap` | boolean | `true` | Confirma o roadmap antes de prosseguir | +| `gates.confirm_breakdown` | boolean | `true` | Confirma a divisão de tasks | +| `gates.confirm_plan` | boolean | `true` | Confirma cada plano antes da execução | +| `gates.execute_next_plan` | boolean | `true` | Confirma antes de executar o próximo plano | +| `gates.issues_review` | boolean | `true` | Revisa issues antes de criar planos de correção | +| `gates.confirm_transition` | boolean | `true` | Confirma a transição de fase | + +--- + +## Configurações de Segurança (Safety) + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `safety.always_confirm_destructive` | boolean | `true` | Confirma operações destrutivas (exclusões, sobrescritas) | +| `safety.always_confirm_external_services` | boolean | `true` | Confirma interações com serviços externos | + +--- + +## Configurações de Segurança (Security) + +Configurações para o recurso de aplicação de segurança (v1.31). Todas seguem o padrão **ausente = habilitado**. Essas chaves ficam sob `workflow.*` em `.planning/config.json` — correspondendo ao template fornecido e às leituras em tempo de execução em `workflows/plan-phase.md`, `workflows/execute-phase.md`, `workflows/secure-phase.md` e `workflows/verify-work.md`. + +Essas chaves ficam sob `workflow.*` — é onde os fluxos de trabalho e o instalador as escrevem e leem. Defini-las no nível superior de `config.json` é silenciosamente ignorado. + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `workflow.security_enforcement` | boolean | `true` | Habilita verificação de segurança ancorada em modelo de ameaças via `/gsd-secure-phase`. Quando `false`, as verificações de segurança são completamente ignoradas | +| `workflow.security_asvs_level` | number (1-3) | `1` | Nível de verificação OWASP ASVS. Nível 1 = oportunístico, Nível 2 = padrão, Nível 3 = abrangente | +| `workflow.security_block_on` | string | `"high"` | Severidade mínima que bloqueia o avanço de fase. Opções: `"high"`, `"medium"`, `"low"` | + +--- + +## Gates de Cobertura de Decisões (`workflow.context_coverage_gate`) + +Quando `discuss-phase` escreve decisões de implementação no `` de CONTEXT.md, +dois gates garantem que essas decisões sobrevivam à jornada até os planos e o código +enviado (issue #2492). + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `workflow.context_coverage_gate` | boolean | `true` | Controle para ambos os gates de cobertura de decisão. Quando `false`, tanto o gate de tradução na fase de planejamento quanto o gate de validação na fase de verificação são ignorados silenciosamente. | + +### O que os gates fazem + +**Gate de tradução na fase de planejamento (BLOQUEANTE).** Executado imediatamente após +o gate de cobertura de requisitos existente, antes que os planos sejam commitados. Para cada +decisão rastreável em ``, verifica se o id da decisão +(`D-NN`) ou seu texto aparece em pelo menos um `must_haves`, +`truths` ou corpo de plano. Uma ausência expõe a decisão faltante por id e recusa +marcar a fase como planejada. + +**Gate de validação na fase de verificação (NÃO BLOQUEANTE).** Executado junto com os +outros passos de verificação. Pesquisa todos os artefatos enviados (PLAN.md, SUMMARY.md, arquivos +modificados, assuntos recentes de commit) para cada decisão rastreável. As ausências são +escritas em VERIFICATION.md como seção de aviso, mas **não** alteram o +status de verificação geral. A assimetria é deliberada — no momento da verificação +o trabalho está concluído, e uma ausência fuzzy de substring não deve reprovar uma fase +caso contrário aprovada. + +### Como escrever decisões que os gates aceitam + +O template de discuss-phase já produz decisões numeradas com `D-NN`. +O gate fica mais satisfeito quando: + +1. Todo plano que implementa uma decisão **cita o id** em algum lugar — + `must_haves.truths: ["D-12: bit offsets exposed"]` ou uma menção de `D-12:` + no corpo do plano. A correspondência estrita por id é o caminho mais barato e determinístico. +2. A correspondência suave de frases é um fallback para paráfrases — se um trecho de 6+ palavras + do texto da decisão aparecer verbatim em um plano/sumário, é aceito. + +### Isenções + +Uma decisão **não** está sujeita aos gates quando qualquer uma das seguintes +condições se aplica: + +- Ela fica sob o título `### Claude's Discretion` dentro de ``. +- Ela é marcada como `[informational]`, `[folded]` ou `[deferred]` em seu + bullet (por exemplo, `- **D-08 [informational]:** Naming style for internal + helpers`). + +Use essas saídas de escape quando uma decisão genuinamente não precisa de +cobertura de plano — discrição de implementação, ideias futuras capturadas para +registro ou itens já adiados para uma fase posterior. + +--- + +## Configurações de Revisão + +Configure a seleção de modelo por CLI para `/gsd-review`. Quando definido, substitui o modelo padrão da CLI para aquele revisor. + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `review.models.gemini` | string | (padrão da CLI) | Modelo usado quando o revisor `--gemini` é invocado | +| `review.models.claude` | string | (padrão da CLI) | Modelo usado quando o revisor `--claude` é invocado | +| `review.models.codex` | string | (padrão da CLI) | Modelo usado quando o revisor `--codex` é invocado | +| `review.models.opencode` | string | (padrão da CLI) | Modelo usado quando o revisor `--opencode` é invocado | +| `review.models.qwen` | string | (padrão da CLI) | Modelo usado quando o revisor `--qwen` é invocado | +| `review.models.cursor` | string | (padrão da CLI) | Modelo usado quando o revisor `--cursor` é invocado | +| `review.models.ollama` | string | (padrão do servidor) | Nome do modelo passado ao Ollama quando o revisor `--ollama` é invocado. Se não definido, o primeiro modelo disponível reportado pelo servidor é usado (por exemplo `llama3`). Defina para uma tag específica: `gsd config-set review.models.ollama codellama` | +| `review.models.lm_studio` | string | (padrão do servidor) | Nome do modelo passado ao LM Studio quando o revisor `--lm-studio` é invocado. Se não definido, o primeiro modelo disponível reportado pelo servidor é usado. | +| `review.models.llama_cpp` | string | (padrão do servidor) | Nome do modelo passado ao llama.cpp quando o revisor `--llama-cpp` é invocado. Se não definido, o primeiro modelo reportado por `/v1/models` é usado. | +| `review.default_reviewers` | string[] \| null | (todos os revisores detectados) | Subconjunto de revisores padrão para `/gsd-review` sem flags. Exemplo: `["gemini","codex"]`. Flags explícitas e `--all` substituem esta configuração. | +| `review.max_prompt_tokens` | number\|null | null | Máximo padrão de tokens estimados para o prompt de revisão montado. Quando definido, o prompt é cortado deterministicamente antes de ser enviado a cada revisor. Substituições por revisor via `review.max_prompt_tokens_per_reviewer` têm precedência. null = sem corte (comportamento atual). | +| `review.max_prompt_tokens_per_reviewer` | object | {} | Substituições de orçamento de tokens por revisor. As chaves são slugs de revisor (ollama, llama_cpp, lm_studio, gemini, claude, codex, opencode, qwen, cursor). Os valores substituem `review.max_prompt_tokens` para aquele revisor. Recomendado para servidores de modelos locais. | +| `review.ollama_host` | string | `http://localhost:11434` | URL base do servidor Ollama. Substitua quando executar o Ollama em uma porta não padrão ou host remoto: `gsd config-set review.ollama_host http://192.168.1.10:11434` | +| `review.lm_studio_host` | string | `http://localhost:1234` | URL base do servidor local LM Studio. Substitua quando usar uma porta não padrão. | +| `review.llama_cpp_host` | string | `http://localhost:8080` | URL base do servidor llama.cpp (`llama-server`). Substitua quando usar uma porta não padrão. | + +### Orçamentos de prompt para revisores com contexto pequeno + +Servidores de modelos locais (Ollama, llama.cpp, LM Studio) geralmente aceitam muito menos tokens que as APIs em nuvem. Definir `review.max_prompt_tokens_per_reviewer` (ou o fallback global `review.max_prompt_tokens`) aciona o corte determinístico do prompt antes de enviá-lo ao revisor: CONTEXT é descartado primeiro, depois RESEARCH, depois REQUIREMENTS; PROJECT.md é reduzido ao cabeçalho das primeiras 40 linhas; PLANs são truncados pela cauda proporcionalmente — instruções e roadmap são sempre preservados. Quando um revisor é cortado, uma nota de divulgação é injetada no topo do prompt e os metadados de corte (orçamento, seções omitidas, porcentagem de truncamento) são registrados no frontmatter de REVIEWS.md em `trimmed_reviewers`. Se até mesmo o conjunto mínimo de revisão (instruções + roadmap + stubs de plano) exceder o orçamento, o revisor é ignorado com um aviso em vez de enviar um prompt truncado que produziria feedback enganoso. + +### Exemplo + +```json +{ + "review": { + "models": { + "gemini": "gemini-2.5-pro", + "qwen": "qwen-max" + } + } +} +``` + +Usa o padrão configurado de cada CLI quando uma chave está ausente. Adicionado na v1.35.0 (#1849). + +--- + +## Flags de Passagem do Manager + +Configure flags por etapa que `/gsd-manager` acrescenta a cada comando despachado. Isso permite personalizar como o manager executa as etapas de discuss, plan e execute sem entrada manual de flags. + +| Configuração | Tipo | Padrão | Descrição | +|---------|------|---------|-------------| +| `manager.flags.discuss` | string | (nenhum) | Flags acrescidas a comandos de discuss-phase (por exemplo, `"--auto"`) | +| `manager.flags.plan` | string | (nenhum) | Flags acrescidas a comandos de plan-phase (por exemplo, `"--skip-research"`) | +| `manager.flags.execute` | string | (nenhum) | Flags acrescidas a comandos de execute-phase (por exemplo, `"--validate"`) | + +**Exemplo:** + +```json +{ + "manager": { + "flags": { + "discuss": "--auto", + "plan": "--skip-research", + "execute": "--validate" + } + } +} +``` + +Tokens de flag inválidos são sanitizados e registrados como avisos. Apenas flags GSD reconhecidas são repassadas. + +--- + +## Perfis de Modelo + +### Definições de Perfil + +| Agente | `quality` | `balanced` | `budget` | `adaptive` | `inherit` | +|-------|-----------|------------|----------|------------|-----------| +| gsd-planner | Opus | Opus | Sonnet | Opus | Inherit | +| gsd-roadmapper | Opus | Sonnet | Sonnet | Opus | Inherit | +| gsd-executor | Opus | Sonnet | Sonnet | Sonnet | Inherit | +| gsd-phase-researcher | Opus | Sonnet | Haiku | Sonnet | Inherit | +| gsd-project-researcher | Opus | Sonnet | Haiku | Sonnet | Inherit | +| gsd-research-synthesizer | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-debugger | Opus | Sonnet | Sonnet | Opus | Inherit | +| gsd-codebase-mapper | Sonnet | Haiku | Haiku | Haiku | Inherit | +| gsd-verifier | Sonnet | Sonnet | Haiku | Sonnet | Inherit | +| gsd-plan-checker | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-integration-checker | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-nyquist-auditor | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-pattern-mapper | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-ui-researcher | Opus | Sonnet | Haiku | Sonnet | Inherit | +| gsd-ui-checker | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-ui-auditor | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-doc-writer | Opus | Sonnet | Haiku | Sonnet | Inherit | +| gsd-doc-verifier | Sonnet | Sonnet | Haiku | Haiku | Inherit | + +> **Todos os 33 agentes incluídos possuem atribuições explícitas de nível por perfil** no catálogo (`sdk/shared/model-catalog.json`). A tabela acima mostra um subconjunto representativo dos agentes mais usados. Para agentes não listados aqui, `model_overrides` aceita qualquer nome de agente incluído. Os dados autoritativos de perfil são derivados de `sdk/shared/model-catalog.json` via `get-shit-done/bin/lib/model-catalog.cjs` e `sdk/src/model-catalog.ts`. + +### Substituições por Agente + +Substitua agentes específicos sem alterar o perfil inteiro: + +```json +{ + "model_profile": "balanced", + "model_overrides": { + "gsd-executor": "opus", + "gsd-planner": "haiku" + } +} +``` + +Valores de substituição válidos: `opus`, `sonnet`, `haiku`, `inherit` ou qualquer ID de modelo totalmente qualificado (por exemplo, `"openai/o3"`, `"google/gemini-2.5-pro"`). + +`model_overrides` pode ser definido em `.planning/config.json` (por projeto) +ou `~/.gsd/defaults.json` (global). Entradas por projeto ganham em conflito e +entradas globais sem conflito são preservadas, então você pode ajustar o modelo de um único +agente em um repositório sem redefinir os padrões globais. Isso se aplica +uniformemente em Claude Code, Codex, OpenCode, Kilo e outros +runtimes suportados. No Codex e OpenCode, o modelo resolvido é incorporado +na configuração estática de cada agente no momento da instalação — `spawn_agent` e +a interface `task` do OpenCode não aceitam um parâmetro `model` inline, então +executar `gsd install ` após editar `model_overrides` é obrigatório +para que a alteração entre em vigor. Consulte a issue #2256. + +### Modelos Por Tipo de Fase (`models`) — adicionado na v1.41 + +> Expresse ajuste no nível de **fase** (planning, research, execution, verification) sem precisar conhecer a taxonomia de agentes. Adicionado em [#3023](https://github.com/open-gsd/gsd-core/pull/3030). + +`model_overrides` é por **agente** (preciso mas verboso; você precisa saber que `gsd-codebase-mapper` é pesquisa e `gsd-doc-writer` é execução). O bloco `models` permite dizer "Opus para planejamento e execução, Sonnet para o restante" em duas linhas: + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +#### Mapeamento tipo de fase → agente + +| Tipo de fase | Agentes | +|---|---| +| `planning` | `gsd-planner`, `gsd-roadmapper`, `gsd-pattern-mapper` | +| `discuss` | (reservado — sem subagente atualmente) | +| `research` | `gsd-phase-researcher`, `gsd-project-researcher`, `gsd-research-synthesizer`, `gsd-codebase-mapper`, `gsd-ui-researcher` | +| `execution` | `gsd-executor`, `gsd-debugger`, `gsd-doc-writer` | +| `verification` | `gsd-verifier`, `gsd-plan-checker`, `gsd-integration-checker`, `gsd-nyquist-auditor`, `gsd-ui-checker`, `gsd-ui-auditor`, `gsd-doc-verifier` | +| `completion` | (reservado — sem subagente atualmente) | + +`discuss` e `completion` são aceitos pelo esquema para compatibilidade futura; defini-los hoje é um no-op até que um subagente seja mapeado para eles. + +#### Precedência de resolução (mais alta → mais baixa) + +```text +1. model_overrides[] ← por agente; IDs completos; exceção direcionada +2. dynamic_routing.tier_models[] ← quando habilitado (consulte §Dynamic Routing) +3. models[] ← nível de fase grosseiro (esta seção) +4. model_profile (coluna por agente) ← estratégia global de nível +5. Padrão de runtime ← quando nada mais se aplica +``` + +As cinco camadas compõem de cima para baixo: `model_profile` é o nível base, `models[]` substitui no nível de fase, `dynamic_routing` (quando habilitado) escala por tentativa em falha soft, `model_overrides[]` cria exceções por agente no topo, e o padrão de runtime se aplica quando nada mais se aplica. No exemplo acima, todos os cinco agentes de pesquisa resolvem para `sonnet` *exceto* `gsd-codebase-mapper`, que a substituição por agente fixa em `haiku`. `dynamic_routing` está desabilitado por padrão — quando desativado (`enabled: false` ou bloco omitido), o comportamento desta seção não se altera em relação ao atual. + +#### Valores aceitos + +`models.` aceita apenas aliases de nível: + +| Valor | Efeito | +|---|---| +| `"opus"` / `"sonnet"` / `"haiku"` | Nível padrão — a resolução de runtime mapeia para o modelo do runtime ativo para aquele nível | +| `"inherit"` | Agentes nesta fase seguem o modelo da sessão (mesma semântica que `model_profile: "inherit"`) | + +Se você precisar de um ID de modelo totalmente qualificado (`"openai/gpt-5"`, `"google/gemini-2.5-pro"`), use `model_overrides` por agente. `models.*` é intencionalmente apenas de nível para que o mapeamento com reconhecimento de runtime permaneça correto nas instalações Codex / OpenCode / Gemini CLI. + +#### Quando usar qual + +| Você quer | Use | +|---|---| +| Uma estratégia global de nível ("balanced em tudo") | `model_profile` | +| Ajuste grosseiro por fase ("Opus para planejamento") | `models.` | +| Precisão por agente ("forçar haiku no mapeador de base de código") | `model_overrides[]` | +| ID de modelo completo para um agente específico | `model_overrides[]: "openai/gpt-5"` | + +Combine livremente — a regra de precedência acima resolve qualquer sobreposição deterministicamente. + +#### Validação + +`config-set` rejeita tipos de fase desconhecidos: + +```bash +$ gsd config-set models.deployment opus +Error: 'models.deployment' is not a valid config key + +# Válido: +$ gsd config-set models.research sonnet +``` + +Edições diretas em `.planning/config.json` são mais permissivas — o resolvedor simplesmente ignora valores que não reconhece e cai para o nível de perfil — então um erro de digitação não quebra silenciosamente a resolução de nível. + +### Roteamento Dinâmico com Escalada por Nível em Falha (`dynamic_routing`) — adicionado na v1.41 + +> Comece barato, escale apenas quando o agente falhar no gate. Adicionado em [#3024](https://github.com/open-gsd/gsd-core/pull/3031). + +`dynamic_routing` permite pagar pelo nível barato por padrão e escalar para o nível mais caro apenas quando o orquestrador detecta uma falha soft (verificação inconclusiva, FLAG no plan-check, etc.). + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +#### Níveis padrão dos agentes + +Cada agente em `MODEL_PROFILES` declara um de três níveis padrão. O resolvedor escolhe `tier_models[default_tier]` para a primeira tentativa. + +| Nível | Agentes | Caso de uso | +|---|---|---| +| `light` | gsd-codebase-mapper, gsd-doc-classifier, gsd-doc-verifier, gsd-integration-checker, gsd-intel-updater, gsd-nyquist-auditor, gsd-pattern-mapper, gsd-plan-checker, gsd-research-synthesizer, gsd-ui-auditor, gsd-ui-checker | Barato/rápido — mapeadores puros, scanners, auditorias de baixo risco | +| `standard` | gsd-advisor-researcher, gsd-ai-researcher, gsd-code-fixer, gsd-code-reviewer, gsd-doc-synthesizer, gsd-doc-writer, gsd-domain-researcher, gsd-eval-auditor, gsd-executor, gsd-phase-researcher, gsd-project-researcher, gsd-ui-researcher, gsd-verifier | Motor padrão — pesquisa, escrita, verificação primária | +| `heavy` | gsd-assumptions-analyzer, gsd-debug-session-manager, gsd-debugger, gsd-eval-planner, gsd-framework-selector, gsd-planner, gsd-roadmapper, gsd-security-auditor, gsd-user-profiler | Raciocínio profundo — já no topo, não pode escalar mais | + +#### Fluxo de escalada + +```text +1. Orquestrador gera agente → resolvedor retorna tier_models[default_tier] +2. Falha soft? + ├─ não → ✓ concluído (caminho barato) + └─ sim → orquestrador re-gera na tentativa+1 + → resolvedor retorna tier_models[next_tier_up] + → limita em max_escalations +3. Falha hard (exceção/crash) → ignora escalada, expõe imediatamente +``` + +Se `dynamic_routing.escalate_on_failure: false`, falhas soft **não** avançam o nível — cada respawn continua usando `tier_models[default_tier]` independentemente do contador de tentativas. A chave kill-switch substitui o ramo de falha soft acima. + +`light → standard → heavy → heavy` (heavy permanece em heavy; não pode ir mais longe). + +#### Precedência de resolução (mais alta → mais baixa) + +1. **`model_overrides[]`** — IDs completos aceitos; exceção direcionada +2. **`dynamic_routing.tier_models[]`** (quando `enabled: true`) +3. **`models[]`** — fase grosseira por nível (#3023) +4. **`model_profile`** — coluna por agente do perfil ativo +5. **Padrão de runtime** + +O bloco `dynamic_routing` está **desabilitado por padrão** — `enabled: false` (ou omitir o bloco) preserva exatamente a resolução estática atual. + +#### Configurações | Chave | Tipo | Padrão | Descrição | -|------|------|--------|-----------| -| `workflow.use_worktrees` | boolean | `true` | Desativa isolamento por git worktree quando `false` (v1.31) | -| `security_enforcement` | boolean | `true` | Ativa verificação de segurança ancorada em threat model (v1.31) | -| `security_asvs_level` | number (1-3) | `1` | Nível de verificação OWASP ASVS (v1.31) | -| `security_block_on` | string | `"high"` | Severidade mínima para bloquear avanço de fase (v1.31) | -| `response_language` | string | (nenhum) | Código de idioma para saída dos agentes (ex: `"pt"`, `"ko"`, `"ja"`) (v1.32) | -| `project_code` | string | (nenhum) | Prefixo para diretórios de fase (ex: `"ABC"` -> `ABC-01-setup/`) (v1.31) | +|---|---|---|---| +| `dynamic_routing.enabled` | boolean | `false` | Chave mestra. Quando `true`, o resolvedor de roteamento dinâmico é usado para seleção de nível. | +| `dynamic_routing.tier_models.light` | enum | (nenhum) | Alias de nível para o nível light. Tipicamente `haiku`. | +| `dynamic_routing.tier_models.standard` | enum | (nenhum) | Alias de nível para standard. Tipicamente `sonnet`. | +| `dynamic_routing.tier_models.heavy` | enum | (nenhum) | Alias de nível para heavy. Tipicamente `opus`. | +| `dynamic_routing.escalate_on_failure` | boolean | `true` | Quando false, a escalada é desabilitada (cada tentativa usa o nível padrão). | +| `dynamic_routing.max_escalations` | integer | `1` | Limite máximo de tentativas por invocação de agente. Previne loops descontrolados. | -**Variáveis de ambiente adicionais:** +#### Quando usar qual + +| Você quer | Use | +|---|---| +| Uma estratégia de nível para todos os agentes | `model_profile` | +| Ajuste grosseiro por fase | `models.` | +| Precisão por agente (IDs completos) | `model_overrides` | +| **Barato por padrão, escalar apenas em falha** | **`dynamic_routing`** | + +`dynamic_routing` é estruturalmente uma *alavanca de custo*: você paga tarifas Opus apenas para os casos difíceis que justificam o Opus. Combine com `model_overrides` para exceções por agente (a substituição sempre vence). + +--- + +### Controle de Esforço (`effort`) — adicionado na v1.42 + +> Controle de esforço unificado entre provedores. Adicionado em [#443](https://github.com/open-gsd/gsd-core/issues/443). + +Controle o esforço de raciocínio das invocações de agente com uma única configuração. A escala universal é: + +``` +minimal < low < medium < high < xhigh < max +``` + +O esforço é renderizado por runtime: `output_config.effort` para Claude (frontmatter `effort` de subagente do Claude Code / env `CLAUDE_CODE_EFFORT_LEVEL`), `model_reasoning_effort` para Codex (Responses API `reasoning.effort`). + +**Limitação entre provedores:** `max` é exclusivo da Anthropic — limita a `xhigh` no Codex. `minimal` é exclusivo do Codex — limita a `low` no Claude. + +O hint `reasoning_effort` por nível do catálogo de modelos é um campo legado mantido para referência; o esforço agora é controlado por configuração. + +**Precedência (mais alta → mais baixa):** +1. Substituição de invocação (por exemplo, flag `--effort` em `resolve-execution`) +2. `effort.agent_overrides[]` +3. `effort.routing_tier_defaults[]` +4. `effort.default` +5. `"high"` (padrão universal do Anthropic Opus 4.8) + +```json +{ + "effort": { + "default": "high", + "routing_tier_defaults": { + "light": "low", + "standard": "high", + "heavy": "xhigh" + }, + "agent_overrides": { + "gsd-planner": "max" + } + } +} +``` + +#### Configurações + +| Chave | Tipo | Padrão | Descrição | +|---|---|---|---| +| `effort.default` | enum | `"high"` | Nível de esforço global fallback. Aplica-se quando nenhuma substituição de nível ou agente corresponde. | +| `effort.routing_tier_defaults.light` | enum | `"low"` | Esforço para agentes de nível light (mapeadores/scanners rápidos). | +| `effort.routing_tier_defaults.standard` | enum | `"high"` | Esforço para agentes de nível standard (agentes motor). | +| `effort.routing_tier_defaults.heavy` | enum | `"xhigh"` | Esforço para agentes de nível heavy (raciocínio profundo). | +| `effort.agent_overrides.` | enum | (nenhum) | Substituição de esforço por agente. Supera os padrões de nível. | + +Valores de esforço válidos: `minimal`, `low`, `medium`, `high`, `xhigh`, `max`. + +--- + +### Modo Rápido (`fast_mode`) — adicionado na v1.42 + +> Controle de propagação de fast_mode por agente. Adicionado em [#443](https://github.com/open-gsd/gsd-core/issues/443). + +Controla se fast_mode é propagado para invocações de agente. Aceita apenas booleanos reais — string `"true"` é rejeitada. + +**Nota:** `fast_mode` só é propagável via runtimes de API (velocidade `api`:"fast"). O Claude Code não possui mecanismo de fast-mode por subagente — `/fast` é apenas no nível de sessão, então emitir uma chave de frontmatter `fast_mode` em um subagente Claude é um no-op silencioso. `fast_mode_supported` na saída de `resolve-execution` informa se o runtime configurado suporta propagação de fast_mode por agente. + +**Precedência (mais alta → mais baixa):** +1. Substituição de invocação (por exemplo, flag `--fast-mode` em `resolve-execution`) +2. `fast_mode.agent_overrides[]` (boolean) +3. `fast_mode.routing_tier_defaults[]` (boolean) +4. `fast_mode.enabled` (boolean) +5. `false` + +```json +{ + "fast_mode": { + "enabled": false, + "routing_tier_defaults": { + "light": true, + "standard": false, + "heavy": false + }, + "agent_overrides": {} + } +} +``` + +#### Configurações + +| Chave | Tipo | Padrão | Descrição | +|---|---|---|---| +| `fast_mode.enabled` | boolean | `false` | Flag global fast_mode. Honorada apenas quando nenhuma substituição de nível/agente corresponde. | +| `fast_mode.routing_tier_defaults.light` | boolean | `true` | Modo rápido para agentes de nível light. | +| `fast_mode.routing_tier_defaults.standard` | boolean | `false` | Modo rápido para agentes de nível standard. | +| `fast_mode.routing_tier_defaults.heavy` | boolean | `false` | Modo rápido para agentes de nível heavy. | +| `fast_mode.agent_overrides.` | boolean | (nenhum) | Substituição de fast_mode por agente. | + +--- + +### Consulta de Execução (`resolve-execution`) + +Use `node gsd-tools.cjs resolve-execution [--effort ] [--fast-mode ] [--attempt ]` para obter o contexto completo de execução resolvido para um agente: + +```json +{ + "model": "opus", + "profile": "balanced", + "effort": "xhigh", + "effort_rendered": "xhigh", + "effort_param": "output_config.effort", + "effort_propagation": "frontmatter", + "fast_mode": false, + "fast_mode_supported": false +} +``` + +`effort_param` informa qual parâmetro de runtime definir. `fast_mode_supported` informa se o runtime configurado suporta propagação de fast_mode por agente. + +--- + +### Runtimes Não-Claude (Codex, OpenCode, Gemini CLI, Kilo) + +> **Versão mínima suportada do Codex CLI: `0.130.0`** (issue [#3562](https://github.com/open-gsd/gsd-core/issues/3562)). +> +> O [Codex CLI 0.130.0](https://github.com/openai/codex/releases/tag/rust-v0.130.0) (lançado em 2026-05-08) removeu a descoberta de extra-skills-roots via [openai/codex#21485](https://github.com/openai/codex/pull/21485). A partir desta versão, o Codex CLI só verifica `~/.codex/skills//SKILL.md`, `/.codex/skills/` e raízes de plugin registradas para habilidades invocáveis. O GSD instala a superfície `$gsd-*` como `~/.codex/skills/gsd-/SKILL.md` para que os comandos resolvam após uma reinicialização do Codex. Versões anteriores do Codex CLI podem mostrar uma listagem duplicada (a varredura legada de extra-roots mais as cópias da raiz do usuário) — reinicie o Codex e atualize para ≥ 0.130.0 ou aceite as duplicatas até fazê-lo. + +Quando o GSD é instalado para um runtime não-Claude, o instalador automaticamente define `resolve_model_ids: "omit"` em `~/.gsd/defaults.json`. Isso faz o GSD retornar um parâmetro de modelo vazio para todos os agentes, para que cada agente use o modelo com que o runtime está configurado. Nenhuma configuração adicional é necessária para o caso padrão. + +Se você quiser que agentes diferentes usem modelos diferentes, use `model_overrides` com IDs de modelo totalmente qualificados que seu runtime reconhece: + +```json +{ + "resolve_model_ids": "omit", + "model_overrides": { + "gsd-planner": "o3", + "gsd-executor": "o4-mini", + "gsd-debugger": "o3", + "gsd-codebase-mapper": "o4-mini" + } +} +``` + +A intenção é a mesma que os níveis de perfil do Claude -- use um modelo mais forte para planejamento e depuração (onde a qualidade de raciocínio mais importa) e um modelo mais barato para execução e mapeamento (onde o plano já contém o raciocínio). + +**Quando usar qual abordagem:** + +| Cenário | Configuração | Efeito | +|----------|---------|--------| +| Runtime não-Claude, modelo único | `resolve_model_ids: "omit"` (padrão do instalador) | Todos os agentes usam o modelo padrão do runtime | +| Runtime não-Claude, modelos em nível | `resolve_model_ids: "omit"` + `model_overrides` | Agentes nomeados usam modelos específicos, outros usam o padrão do runtime | +| Claude Code com OpenRouter/provedor local | `model_profile: "inherit"` | Todos os agentes seguem o modelo da sessão | +| Claude Code com OpenRouter, em nível | `model_profile: "inherit"` + `model_overrides` | Agentes nomeados usam modelos específicos, outros herdam | + +**Valores de `resolve_model_ids`:** + +| Valor | Comportamento | Use Quando | +|-------|----------|----------| +| `false` (padrão) | Retorna aliases Claude (`opus`, `sonnet`, `haiku`) | Claude Code com API Anthropic nativa | +| `true` | Mapeia aliases para IDs completos de modelo Claude (`claude-opus-4-8`) | Claude Code com API que requer IDs completos | +| `"omit"` | Retorna string vazia (runtime escolhe seu padrão) | Runtimes não-Claude (Codex, OpenCode, Gemini CLI, Kilo) | + +### Perfis com Reconhecimento de Runtime (#2517) + +Quando `runtime` é definido, os níveis de perfil (`opus`/`sonnet`/`haiku`) resolvem para IDs de modelo nativos do runtime em vez de aliases Claude. Isso permite que um único `.planning/config.json` compartilhado funcione perfeitamente entre Claude e Codex. + +A saída JSON de `resolve-model` inclui `reasoning_effort` quando o nível de runtime resolvido para o agente (após substituições de tipo de fase) define um `reasoning_effort`. Adaptadores de runtime podem passar esse valor para chamadas de lançamento de agente filho que o suportam; runtimes sem suporte explícito o omitem. + +**Mapas de nível integrados:** + +| Runtime | `opus` | `sonnet` | `haiku` | reasoning_effort | +|---------|--------|----------|---------|------------------| +| `claude` | `claude-opus-4-8` | `claude-sonnet-4-6` | `claude-haiku-4-5` | (não usado) | +| `codex` | `gpt-5.5` | `gpt-5.3-codex` | `gpt-5.4-mini` | `xhigh` / `medium` / `medium` | +| `gemini` | `gemini-3-pro` | `gemini-3-flash` | `gemini-2.5-flash-lite` | (não usado) | +| `qwen` | `qwen3-max-2026-01-23` | `qwen3-coder-plus` | `qwen3-coder-next` | (não usado) | +| `opencode` | `anthropic/claude-opus-4-8` | `anthropic/claude-sonnet-4-6` | `anthropic/claude-haiku-4-5` | (não usado) | +| `copilot` | `claude-opus-4-8` | `claude-sonnet-4-6` | `claude-haiku-4-5` | (não usado) | +| `hermes` | `anthropic/claude-opus-4-8` | `anthropic/claude-sonnet-4-6` | `anthropic/claude-haiku-4-5` | (não usado) | +| Grupo B (`kilo`, `cline`, `cursor`, `windsurf`, `augment`, `trae`, `codebuddy`, `antigravity`) | (sem padrão integrado — seu runtime trata da seleção de modelo) | | | | + +**Exemplo Codex** — uma configuração, modelos em nível, sem bloco grande de `model_overrides`: + +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` + +Isso resolve `gsd-planner` → `gpt-5.5` (xhigh), `gsd-executor` → `gpt-5.3-codex` (medium), `gsd-codebase-mapper` → `gpt-5.4-mini` (medium). O instalador do Codex incorpora `model = "..."` e `model_reasoning_effort = "..."` em cada TOML de agente gerado. + +**Exemplo Claude** — opt-in explícito resolve para IDs Claude completos (sem necessidade de `resolve_model_ids: true`): + +```json +{ + "runtime": "claude", + "model_profile": "quality" +} +``` + +**Substituições por runtime** — substitua um ou mais padrões de nível: + +```json +{ + "runtime": "codex", + "model_profile": "quality", + "model_profile_overrides": { + "codex": { + "opus": "gpt-5-pro", + "haiku": { "model": "gpt-5-nano", "reasoning_effort": "low" } + } + } +} +``` + +**Precedência (mais alta para mais baixa):** + +1. `model_overrides[]` — ID explícito por agente sempre vence. +2. **Resolução de nível com reconhecimento de runtime** (esta seção) — quando `runtime` é definido e o perfil não é `inherit`. +3. `resolve_model_ids: "omit"` — retorna string vazia quando nenhum `runtime` é definido. +4. Padrão nativo Claude — nível de `model_profile` como alias (padrão atual). +5. `inherit` — propaga o literal `inherit` para semântica de `Task(model="inherit")`. + +**Compatibilidade retroativa.** Configurações sem `runtime` definido não veem nenhuma mudança de comportamento — cada configuração existente continua funcionando identicamente. Instalações Codex que auto-definem `resolve_model_ids: "omit"` continuam omitindo o campo de modelo a menos que o usuário opte por definir `runtime: "codex"`. + +**Runtimes desconhecidos.** Se `runtime` for definido para um valor sem mapa de nível integrado e sem `model_profile_overrides[]`, o GSD cai de volta para o padrão seguro de alias Claude em vez de emitir um ID de modelo que o runtime não pode aceitar. Para suportar um novo runtime, popule `model_profile_overrides..{opus,sonnet,haiku}` com IDs válidos. + +### Filosofia de Perfil + +| Perfil | Filosofia | Quando Usar | +|---------|-----------|-------------| +| `quality` | Opus para toda tomada de decisão, Sonnet para verificação | Cota disponível, trabalho arquitetural crítico | +| `balanced` | Opus apenas para planejamento, Sonnet para todo o restante | Desenvolvimento normal (padrão) | +| `budget` | Sonnet para escrita de código, Haiku para pesquisa/verificação | Trabalho de alto volume, fases menos críticas | +| `inherit` | Todos os agentes usam o modelo de sessão atual | Alternância dinâmica de modelo, **provedores não-Anthropic** (OpenRouter, modelos locais) | + +--- + +## Predefinições de Política de Modelo (`model_policy`) — adicionado na v1.42 + +> **[#49](https://github.com/open-gsd/gsd-core/issues/49)** — superfície de configuração de política de modelo neutra em relação ao provedor. Resolve antes do legado `model_profile_overrides`. + +`model_policy` fornece uma maneira mais simples e neutra em relação ao provedor de configurar níveis de modelo entre runtimes. É a superfície preferida para runtimes não-Anthropic onde `model_profile_overrides` exigiria conhecer manualmente os IDs de modelo corretos. Configure via `/gsd:settings` → Seção 8 (Model Policy). + +### Predefinição de provedor conhecido + +Escolha um provedor e nível de orçamento via o fluxo de configurações; o GSD escreve os IDs de modelo canônicos para aquela combinação de provedor/orçamento: + +```json +{ + "runtime": "codex", + "model_policy": { + "provider": "openai", + "budget": "medium", + "high": "gpt-5.5", + "medium": "gpt-5.3-codex", + "low": "gpt-5.4-mini" + } +} +``` + +Provedores conhecidos: `openai`, `anthropic`, `google`, `qwen`. Níveis de orçamento: `high`, `medium`, `low`. + +Para controle avançado por runtime, `runtime_tiers` aceita entradas explícitas usando os nomes internos de nível de perfil (`opus`, `sonnet`, `haiku`): + +```json +{ + "runtime": "codex", + "model_policy": { + "provider": "openai", + "runtime_tiers": { + "codex": { + "opus": { "model": "gpt-5.5", "reasoning_effort": "high" }, + "sonnet": { "model": "gpt-5.3-codex", "reasoning_effort": "medium" }, + "haiku": { "model": "gpt-5.4-mini", "reasoning_effort": "low" } + } + } + } +} +``` + +### Provedor genérico (saída de escape) + +Use `provider: "generic"` (ou `"custom"`) para OpenRouter, LiteLLM, gateways locais ou qualquer runtime onde você fornece IDs de modelo exatos. O GSD trata IDs de modelo como strings opacas — sem inferência de prefixo, sem padrões específicos do provedor: + +```json +{ + "runtime": "opencode", + "model_policy": { + "provider": "generic", + "high": "openrouter/anthropic/claude-opus-4-5", + "medium": "openrouter/anthropic/claude-sonnet-4-5", + "low": "openrouter/anthropic/claude-haiku-4-5" + } +} +``` + +### Limitação de esforço de raciocínio + +`reasoning_effort` dentro de uma entrada `runtime_tiers` é encaminhado apenas para runtimes que declaram suporte para ele (atualmente: `codex`). Qualquer runtime fora da lista de permissões recebe a entrada de nível sem o campo `reasoning_effort` — ele é silenciosamente removido, nunca vazado. + +### Precedência + +A resolução de `model_policy` fica acima de `model_profile_overrides` no resolvedor: + +1. `model_overrides[]` — ID explícito por agente (mais alto) +2. `model_policy.runtime_tiers[][]` — entrada explícita de runtime/nível +3. Chaves flat `high`/`medium`/`low` de `model_policy` — para provedor `generic`/`custom` +4. `model_profile_overrides[][]` — substituição legada por runtime +5. Padrão do catálogo de runtime integrado +6. Alias de nível de `model_profile` + +**Compatibilidade retroativa.** Configurações sem `model_policy` não são afetadas. Blocos `model_profile_overrides` existentes continuam funcionando exatamente como antes. + +--- + +## Variáveis de Ambiente | Variável | Finalidade | -|----------|------------| -| `GSD_SKIP_SCHEMA_CHECK` | Desativa detecção de schema drift (v1.31) | +|----------|---------| +| `CLAUDE_CONFIG_DIR` | Substitui o diretório de configuração padrão (`~/.claude/`) | +| `GEMINI_API_KEY` | Detectada pelo monitor de contexto para alternar o nome do evento hook | +| `GSD_AUDIT` | Defina como `1` para habilitar o arquivo de auditoria de despacho (`.planning/.gsd-trace.jsonl`) | +| `GSD_AUDIT_ARGS` | Defina como `1` para incluir args de comando nos eventos de auditoria/erro (omitidos por padrão) | +| `GSD_PROJECT` | Substitui a raiz do projeto para suporte a workspace multi-projeto (v1.32) | +| `GSD_SKIP_SCHEMA_CHECK` | Ignora a detecção de deriva de esquema durante a fase de execução (v1.31) | +| `WSL_DISTRO_NAME` | Detectado pelo instalador para tratamento de caminhos WSL | + +--- + +## Padrões Globais + +Salve configurações como padrões globais para projetos futuros: + +**Localização:** `~/.gsd/defaults.json` + +Quando `/gsd-new-project` cria um novo `config.json`, ele lê os padrões globais e os mescla como configuração inicial. Configurações por projeto sempre substituem os globais. + +--- + +## Observabilidade + +O Hub de Roteamento de Comandos emite um `DispatchEvent` estruturado após cada despacho. O comportamento padrão é **silencioso em caso de sucesso** e **uma linha JSON estruturada para stderr em caso de erro**. + +### Formato de erro no stderr + +Quando um despacho falha, uma linha JSON é emitida para stderr: + +```json +{ "kind": "HandlerFailure", "traceId": "...", "command": "plan", "timestamp": "...", "message": "..." } +``` + +O campo `kind` corresponde a uma das variantes de erro do Hub: `UnknownCommand`, `InvalidArgs`, `HandlerRefusal` ou `HandlerFailure`. Args são omitidos por padrão (privacidade); consulte `GSD_AUDIT_ARGS` abaixo. + +### Trilha de auditoria (opt-in) + +Habilite o arquivo de auditoria somente-acréscimo para registrar cada despacho (sucesso e erro): + +**Via variável de ambiente:** +```bash +GSD_AUDIT=1 gsd plan +``` + +**Via configuração (`config.audit.enabled`):** +```json +{ + "audit": { + "enabled": true + } +} +``` + +**Localização do arquivo de auditoria:** `.planning/.gsd-trace.jsonl` (gitignored) + +Cada linha é um objeto JSON completo de `DispatchEvent` contendo tanto `traceId` (um UUID v4 único por despacho) quanto `parentTraceId` (presente quando um chamador passa `req.parentTraceId` para `Hub.dispatch`). Um futuro init-composer (Fase 2) irá conectar `parentTraceId` automaticamente para que todos os despachos filhos de uma única invocação de nível superior compartilhem um pai comum; até então, despachos folha emitem `parentTraceId: undefined`. Você pode correlacionar eventos filhos a um pai filtrando o arquivo de auditoria em `parentTraceId === `. O arquivo é somente-acréscimo e nunca truncado; rotacione ou remova-o manualmente quando desejado. `parentTraceId` deve ser um UUID v4 canônico (RFC 4122, formato `xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx`); valores que não correspondem a este formato são silenciosamente descartados do evento emitido e não aparecerão na saída de auditoria. + +### Redação de args + +Por padrão, os args de comando são **omitidos** de todos os eventos emitidos (tanto erros de stderr quanto o arquivo de auditoria). Para incluir args verbatim: + +```bash +GSD_AUDIT_ARGS=1 GSD_AUDIT=1 gsd plan --tdd +``` + +`GSD_AUDIT_ARGS` aplica-se simultaneamente tanto à linha de erro do stderr quanto ao arquivo de auditoria. + +--- + +## Relacionados + +- [Comandos](COMMANDS.md) +- [Configurar perfis de modelo](how-to/configure-model-profiles.md) +- [Esquema STATE.md](reference/state-md.md) +- [Índice da documentação](README.md) diff --git a/docs/pt-BR/INVENTORY.md b/docs/pt-BR/INVENTORY.md new file mode 100644 index 000000000..ed9f9fe1d --- /dev/null +++ b/docs/pt-BR/INVENTORY.md @@ -0,0 +1,493 @@ +# Inventário de Superfícies Entregues do GSD + +> Registro autoritativo de toda superfície GSD entregue: comandos, agentes, workflows, referências, módulos de CLI e hooks. Quando a documentação ampla (AGENTS.md, COMMANDS.md, ARCHITECTURE.md, CLI-TOOLS.md) divergir do sistema de arquivos, este arquivo e a árvore do repositório são a fonte de verdade. + +## Como Usar Este Arquivo + +- As contagens aqui são derivadas do sistema de arquivos no pino v1.36.0 e podem divergir entre versões. Para contagens ao vivo, execute `ls commands/gsd/*.md | wc -l`, `ls agents/gsd-*.md | wc -l`, etc. na cópia local do repositório. +- Este arquivo enumera toda superfície entregue em todas as seis famílias (agentes, comandos, workflows, referências, módulos de CLI, hooks). Documentações amplas podem apresentar narrativas ou subconjuntos curados; quando discordarem do sistema de arquivos, este arquivo e as listagens de diretório são autoritativos. +- Novas superfícies adicionadas após v1.36.0 devem aparecer aqui primeiro, depois propagar para as documentações amplas. Os testes de controle de drift em `tests/inventory-counts.test.cjs`, `tests/commands-doc-parity.test.cjs`, `tests/agents-doc-parity.test.cjs`, `tests/cli-modules-doc-parity.test.cjs`, `tests/hooks-doc-parity.test.cjs`, `tests/architecture-counts.test.cjs` e `tests/command-count-sync.test.cjs` ancoram as contagens e o conteúdo do registro ao sistema de arquivos. + +Este é o registro autoritativo de toda superfície do GSD Core entregue. Veja o [índice de documentação](README.md) para navegar por tópico. + +--- + +## Agentes (33 entregues) + +Registro completo em `agents/gsd-*.md`. A coluna "Documento primário" indica se [`docs/AGENTS.md`](AGENTS.md) apresenta um cartão de função completo (*primary*), um stub resumido na seção "Agentes Avançados e Especializados" (*advanced stub*), ou nenhuma cobertura (*inventory only*). + +| Agente | Função (uma linha) | Invocado por | Documento primário | +|--------|--------------------|--------------|--------------------| +| gsd-project-researcher | Pesquisa o ecossistema do domínio antes da criação do roadmap (stack, funcionalidades, arquitetura, armadilhas). | `/gsd-new-project`, `/gsd-new-milestone` | primary | +| gsd-phase-researcher | Pesquisa a abordagem de implementação para uma fase específica antes do planejamento. | `/gsd-plan-phase` | primary | +| gsd-ui-researcher | Produz contratos de design de UI para fases de frontend. | `/gsd-ui-phase` | primary | +| gsd-assumptions-analyzer | Produz premissas embasadas em evidências para a discuss-phase (modo de premissas). | workflow `discuss-phase-assumptions` | primary | +| gsd-advisor-researcher | Pesquisa uma única decisão em zona cinzenta durante o modo advisordiscuss-phase. | workflow `discuss-phase` (modo advisor) | primary | +| gsd-research-synthesizer | Combina saídas de pesquisadores paralelos em um SUMMARY.md unificado. | `/gsd-new-project` | primary | +| gsd-planner | Cria planos de fase executáveis com detalhamento de tarefas e verificação retroativa a partir dos objetivos. | `/gsd-plan-phase`, `/gsd-quick` | primary | +| gsd-roadmapper | Cria roadmaps de projeto com detalhamento de fases e mapeamento de requisitos. | `/gsd-new-project` | primary | +| gsd-executor | Executa planos GSD com commits atômicos e tratamento de desvios. | `/gsd-execute-phase`, `/gsd-quick` | primary | +| gsd-plan-checker | Verifica se os planos vão atingir os objetivos da fase (8 dimensões de verificação). | `/gsd-plan-phase` (loop de verificação) | primary | +| gsd-integration-checker | Verifica a integração entre fases e fluxos de ponta a ponta. | `/gsd-audit-milestone` | primary | +| gsd-ui-checker | Valida contratos de design UI-SPEC.md contra dimensões de qualidade. | `/gsd-ui-phase` (loop de validação) | primary | +| gsd-verifier | Verifica o alcance dos objetivos da fase por meio de análise retroativa a partir dos objetivos. | `/gsd-execute-phase` | primary | +| gsd-nyquist-auditor | Preenche lacunas de validação Nyquist gerando testes. | `/gsd-validate-phase` | primary | +| gsd-ui-auditor | Auditoria visual retroativa de 6 pilares do código frontend implementado. | `/gsd-ui-review` | primary | +| gsd-codebase-mapper | Explora a base de código e escreve documentos de análise estruturados. | `/gsd-map-codebase` | primary | +| gsd-debugger | Investiga bugs usando o método científico com estado persistente. | `/gsd-debug`, `/gsd-verify-work` | primary | +| gsd-user-profiler | Avalia o comportamento do desenvolvedor em 8 dimensões. | `/gsd-profile-user` | primary | +| gsd-doc-writer | Escreve e atualiza a documentação do projeto. | `/gsd-docs-update` | primary | +| gsd-doc-verifier | Verifica afirmações factuais na documentação gerada. | `/gsd-docs-update` | primary | +| gsd-security-auditor | Verifica mitigações de ameaças do modelo de ameaças do PLAN.md. | `/gsd-secure-phase` | primary | +| gsd-pattern-mapper | Mapeia novos arquivos para os análogos existentes mais próximos; escreve PATTERNS.md para o planejador. | `/gsd-plan-phase` (entre pesquisa e planejamento) | advanced stub | +| gsd-debug-session-manager | Executa o loop completo de checkpoint e continuação do `/gsd-debug` em contexto isolado para manter o contexto principal enxuto. | `/gsd-debug` | advanced stub | +| gsd-code-reviewer | Revisa arquivos-fonte em busca de bugs, problemas de segurança e qualidade de código; produz REVIEW.md. | `/gsd-code-review` | advanced stub | +| gsd-code-fixer | Aplica correções às descobertas do REVIEW.md com commits atômicos por correção; produz REVIEW-FIX.md. | `/gsd-code-review --fix` | advanced stub | +| gsd-ai-researcher | Pesquisa a documentação oficial de um framework de IA escolhido em orientações prontas para implementação (AI-SPEC.md §3–§4b). | `/gsd-ai-integration-phase` | advanced stub | +| gsd-domain-researcher | Levanta critérios de avaliação de especialistas de domínio e modos de falha para um sistema de IA (AI-SPEC.md §1b). | `/gsd-ai-integration-phase` | advanced stub | +| gsd-eval-planner | Projeta uma estratégia de avaliação estruturada para uma fase de IA (AI-SPEC.md §5–§7). | `/gsd-ai-integration-phase` | advanced stub | +| gsd-eval-auditor | Auditoria retroativa da cobertura de avaliação de uma fase de IA; produz EVAL-REVIEW.md (COVERED/PARTIAL/MISSING). | `/gsd-eval-review` | advanced stub | +| gsd-framework-selector | Matriz de decisão interativa com ≤6 perguntas que pontua e recomenda um framework de IA/LLM. | `/gsd-ai-integration-phase` | advanced stub | +| gsd-intel-updater | Escreve arquivos de intel estruturados (`.planning/intel/*.json`) usados como base de conhecimento consultável da base de código. | `/gsd-map-codebase --query` | advanced stub | +| gsd-doc-classifier | Classifica um único documento de planejamento como ADR, PRD, SPEC, DOC ou UNKNOWN; invocado em paralelo para processar o corpus de documentos. | `/gsd-ingest-docs` | advanced stub | +| gsd-doc-synthesizer | Sintetiza documentos de planejamento classificados em um único contexto consolidado com regras de precedência, detecção de ciclos e relatório de conflitos em três categorias. | `/gsd-ingest-docs` | advanced stub | + +**Nota de cobertura.** `docs/AGENTS.md` fornece cartões de função completos para 21 agentes primários, além de stubs concisos para os 12 agentes avançados. O Resumo de Permissões de Ferramenta de Agente nesse arquivo cobre apenas os 21 agentes primários; as listas de ferramentas dos agentes avançados estão capturadas no frontmatter de cada agente em `agents/gsd-*.md`. + +--- + +## Comandos (67 entregues) + +Registro completo em `commands/gsd/*.md`. Os agrupamentos abaixo espelham a ordem das seções de `docs/COMMANDS.md`; cada linha traz o nome do comando, uma função em uma linha derivada do `description:` do frontmatter do comando e um link para o arquivo-fonte. `tests/command-count-sync.test.cjs` trava a contagem contra o sistema de arquivos. + +### Meta-Skills de Namespace + +Esses seis roteadores são entradas apenas descritivas que o modelo seleciona primeiro; o corpo de cada um contém uma tabela de roteamento que aponta para a sub-habilidade concreta correta. Eles existem para manter baixo o custo de tokens da listagem ansiosa de habilidades enquanto toda a superfície permanece acessível. Veja [#2792](https://github.com/open-gsd/gsd-core/issues/2792) para a justificativa; as tabelas de roteamento apontam para a superfície consolidada pós-[#2790](https://github.com/open-gsd/gsd-core/issues/2790). + +| Comando | Função | Fonte | +|---------|--------|-------| +| `/gsd-workflow` | Roteador de pipeline de fase — discuss / plan / execute / verify / phase / progress. | [commands/gsd/ns-workflow.md](../../commands/gsd/ns-workflow.md) | +| `/gsd-project` | Roteador de ciclo de vida do projeto — milestones, auditorias, resumo. | [commands/gsd/ns-project.md](../../commands/gsd/ns-project.md) | +| `/gsd-quality` | Roteador de portão de qualidade — revisão de código, debug, auditoria, segurança, avaliação, ui. | [commands/gsd/ns-review.md](../../commands/gsd/ns-review.md) | +| `/gsd-context` | Roteador de inteligência da base de código — map, graphify, docs, learnings. | [commands/gsd/ns-context.md](../../commands/gsd/ns-context.md) | +| `/gsd-manage` | Roteador de gerenciamento — config, workspace, workstreams, thread, update, ship, inbox. | [commands/gsd/ns-manage.md](../../commands/gsd/ns-manage.md) | +| `/gsd-ideate` | Roteador de exploração e captura — explore, sketch, spike, spec, capture. | [commands/gsd/ns-ideate.md](../../commands/gsd/ns-ideate.md) | + +### Workflow Principal + +| Comando | Função | Fonte | +|---------|--------|-------| +| `/gsd-new-project` | Inicializa um novo projeto com coleta profunda de contexto e PROJECT.md. | [commands/gsd/new-project.md](../../commands/gsd/new-project.md) | +| `/gsd-workspace` | Gerencia workspaces GSD — criar (`--new`), listar (`--list`) ou remover (`--remove`) ambientes de workspace isolados. | [commands/gsd/workspace.md](../../commands/gsd/workspace.md) | +| `/gsd-discuss-phase` | Coleta contexto da fase por meio de perguntas adaptativas antes do planejamento. | [commands/gsd/discuss-phase.md](../../commands/gsd/discuss-phase.md) | +| `/gsd-mvp-phase` | Planeja uma fase como uma fatia vertical de MVP — história de usuário, divisão SPIDR, depois plan-phase. | [commands/gsd/mvp-phase.md](../../commands/gsd/mvp-phase.md) | +| `/gsd-spec-phase` | Refinamento socrático de especificação produzindo um SPEC.md com requisitos falsificáveis. | [commands/gsd/spec-phase.md](../../commands/gsd/spec-phase.md) | +| `/gsd-ui-phase` | Gera contrato de design de UI (UI-SPEC.md) para fases de frontend. | [commands/gsd/ui-phase.md](../../commands/gsd/ui-phase.md) | +| `/gsd-ai-integration-phase` | Gera contrato de design de IA (AI-SPEC.md) via seleção de framework, pesquisa e planejamento de avaliação. | [commands/gsd/ai-integration-phase.md](../../commands/gsd/ai-integration-phase.md) | +| `/gsd-plan-phase` | Cria plano de fase detalhado (PLAN.md) com loop de verificação. | [commands/gsd/plan-phase.md](../../commands/gsd/plan-phase.md) | +| `/gsd-plan-review-convergence` | Loop de convergência de plano entre IAs — replanejar com feedback de revisão até que não restem preocupações HIGH (máx. 3 ciclos). | [commands/gsd/plan-review-convergence.md](../../commands/gsd/plan-review-convergence.md) | +| `/gsd-ultraplan-phase` | [BETA] Delega a fase de planejamento ao ultraplan cloud do Claude Code — rascunhos remotamente, revisar no navegador, importar de volta via `/gsd-import`. Apenas Claude Code. | [commands/gsd/ultraplan-phase.md](../../commands/gsd/ultraplan-phase.md) | +| `/gsd-spike` | Realiza um spike rápido de uma ideia com experimentos descartáveis; use `--wrap-up` para empacotar as descobertas como uma habilidade persistente. | [commands/gsd/spike.md](../../commands/gsd/spike.md) | +| `/gsd-sketch` | Esboça rapidamente ideias de UI/design usando mockups HTML descartáveis; use `--wrap-up` para empacotar as descobertas. | [commands/gsd/sketch.md](../../commands/gsd/sketch.md) | +| `/gsd-execute-phase` | Executa todos os planos de uma fase com paralelização baseada em ondas. | [commands/gsd/execute-phase.md](../../commands/gsd/execute-phase.md) | +| `/gsd-verify-work` | Valida funcionalidades construídas por meio de UAT conversacional com autodiagnóstico. | [commands/gsd/verify-work.md](../../commands/gsd/verify-work.md) | +| `/gsd-ship` | Cria PR, executa revisão e prepara para merge após verificação. | [commands/gsd/ship.md](../../commands/gsd/ship.md) | +| `/gsd-fast` | Executa uma tarefa trivial inline — sem subagentes, sem overhead de planejamento. | [commands/gsd/fast.md](../../commands/gsd/fast.md) | +| `/gsd-quick` | Executa uma tarefa rápida com garantias GSD (commits atômicos, rastreamento de estado) mas pula agentes opcionais. | [commands/gsd/quick.md](../../commands/gsd/quick.md) | +| `/gsd-ui-review` | Auditoria visual retroativa de 6 pilares do código frontend implementado. | [commands/gsd/ui-review.md](../../commands/gsd/ui-review.md) | +| `/gsd-code-review` | Revisa arquivos-fonte alterados durante uma fase em busca de bugs, segurança e problemas de qualidade de código; use `--fix` para aplicar as descobertas automaticamente. | [commands/gsd/code-review.md](../../commands/gsd/code-review.md) | +| `/gsd-eval-review` | Audita retroativamente a cobertura de avaliação de uma fase de IA executada; produz EVAL-REVIEW.md. | [commands/gsd/eval-review.md](../../commands/gsd/eval-review.md) | + +### Gerenciamento de Fases e Milestones + +| Comando | Função | Fonte | +|---------|--------|-------| +| `/gsd-phase` | CRUD de fases — adicionar (padrão), inserir (`--insert`), remover (`--remove`) ou editar (`--edit`) fases no ROADMAP.md. | [commands/gsd/phase.md](../../commands/gsd/phase.md) | +| `/gsd-add-tests` | Gera testes para uma fase concluída com base nos critérios de UAT e na implementação. | [commands/gsd/add-tests.md](../../commands/gsd/add-tests.md) | +| `/gsd-validate-phase` | Audita retroativamente e preenche lacunas de validação Nyquist para uma fase concluída. | [commands/gsd/validate-phase.md](../../commands/gsd/validate-phase.md) | +| `/gsd-secure-phase` | Verifica retroativamente as mitigações de ameaças para uma fase concluída. | [commands/gsd/secure-phase.md](../../commands/gsd/secure-phase.md) | +| `/gsd-audit-milestone` | Audita a conclusão do milestone contra a intenção original antes do arquivamento. | [commands/gsd/audit-milestone.md](../../commands/gsd/audit-milestone.md) | +| `/gsd-audit-uat` | Auditoria entre fases de todos os itens de UAT e verificação pendentes. | [commands/gsd/audit-uat.md](../../commands/gsd/audit-uat.md) | +| `/gsd-audit-fix` | Pipeline autônomo de auditoria para correção — encontrar problemas, classificar, corrigir, testar, commitar. | [commands/gsd/audit-fix.md](../../commands/gsd/audit-fix.md) | +| `/gsd-complete-milestone` | Arquiva o milestone concluído e prepara para a próxima versão. | [commands/gsd/complete-milestone.md](../../commands/gsd/complete-milestone.md) | +| `/gsd-new-milestone` | Inicia um novo ciclo de milestone — atualizar PROJECT.md e rotear para os requisitos. | [commands/gsd/new-milestone.md](../../commands/gsd/new-milestone.md) | +| `/gsd-milestone-summary` | Gera um resumo abrangente do projeto a partir dos artefatos do milestone. | [commands/gsd/milestone-summary.md](../../commands/gsd/milestone-summary.md) | +| `/gsd-cleanup` | Arquiva diretórios de fases acumulados de milestones concluídos. | [commands/gsd/cleanup.md](../../commands/gsd/cleanup.md) | +| `/gsd-manager` | Central de comando interativa para gerenciar múltiplas fases de um terminal. | [commands/gsd/manager.md](../../commands/gsd/manager.md) | +| `/gsd-workstreams` | Gerencia workstreams paralelos — listar, criar, alternar, status, progresso, concluir, retomar. | [commands/gsd/workstreams.md](../../commands/gsd/workstreams.md) | +| `/gsd-autonomous` | Executa todas as fases restantes de forma autônoma — discuss → plan → execute por fase. | [commands/gsd/autonomous.md](../../commands/gsd/autonomous.md) | +| `/gsd-undo` | Reversão git segura — reverter commits de fase ou plano usando o manifesto da fase. | [commands/gsd/undo.md](../../commands/gsd/undo.md) | + +### Sessão e Navegação + +| Comando | Função | Fonte | +|---------|--------|-------| +| `/gsd-progress` | Verifica o progresso do projeto, exibe contexto e roteia para a próxima ação; use `--next` para avançar automaticamente ou `--do` para executar uma tarefa de forma livre. | [commands/gsd/progress.md](../../commands/gsd/progress.md) | +| `/gsd-capture` | Captura ideias, tarefas, notas e seeds — todo (padrão), `--note`, `--backlog`, `--seed` ou `--list` de todos pendentes. | [commands/gsd/capture.md](../../commands/gsd/capture.md) | +| `/gsd-stats` | Exibe estatísticas do projeto — fases, planos, requisitos, métricas git, linha do tempo. | [commands/gsd/stats.md](../../commands/gsd/stats.md) | +| `/gsd-pause-work` | Cria handoff de contexto ao pausar o trabalho no meio de uma fase. | [commands/gsd/pause-work.md](../../commands/gsd/pause-work.md) | +| `/gsd-resume-work` | Retoma o trabalho da sessão anterior com restauração completa do contexto. | [commands/gsd/resume-work.md](../../commands/gsd/resume-work.md) | +| `/gsd-explore` | Ideação socrática e roteamento de ideias — pensar nas ideias antes de se comprometer. | [commands/gsd/explore.md](../../commands/gsd/explore.md) | +| `/gsd-review-backlog` | Revisa e promove itens do backlog para o milestone ativo. | [commands/gsd/review-backlog.md](../../commands/gsd/review-backlog.md) | +| `/gsd-thread` | Gerencia threads de contexto persistentes para trabalho entre sessões. | [commands/gsd/thread.md](../../commands/gsd/thread.md) | + +### Inteligência da Base de Código + +| Comando | Função | Fonte | +|---------|--------|-------| +| `/gsd-map-codebase` | Analisa a base de código com agentes mapeadores paralelos; use `--fast` para varredura leve ou `--query` para consultas de intel. | [commands/gsd/map-codebase.md](../../commands/gsd/map-codebase.md) | +| `/gsd-graphify` | Constrói, consulta e inspeciona o grafo de conhecimento do projeto em `.planning/graphs/`. | [commands/gsd/graphify.md](../../commands/gsd/graphify.md) | +| `/gsd-extract-learnings` | Extrai decisões, lições, padrões e surpresas de artefatos de fases concluídas. | [commands/gsd/extract-learnings.md](../../commands/gsd/extract-learnings.md) | + +### Revisão, Debug e Recuperação + +| Comando | Função | Fonte | +|---------|--------|-------| +| `/gsd-review` | Solicita revisão de pares entre IAs de planos de fase a partir de CLIs de IA externos. | [commands/gsd/review.md](../../commands/gsd/review.md) | +| `/gsd-debug` | Depuração sistemática com estado persistente entre resets de contexto. | [commands/gsd/debug.md](../../commands/gsd/debug.md) | +| `/gsd-forensics` | Investigação post-mortem de workflows GSD com falha — analisa git, artefatos, estado. | [commands/gsd/forensics.md](../../commands/gsd/forensics.md) | +| `/gsd-health` | Diagnostica a integridade do diretório de planejamento e opcionalmente repara problemas. | [commands/gsd/health.md](../../commands/gsd/health.md) | +| `/gsd-import` | Ingere planos externos com detecção de conflitos contra decisões do projeto. | [commands/gsd/import.md](../../commands/gsd/import.md) | +| `/gsd-inbox` | Faz triagem e revisão de todas as issues e PRs abertas do GitHub contra os templates do projeto. | [commands/gsd/inbox.md](../../commands/gsd/inbox.md) | + +### Documentação, Perfil e Utilitários + +| Comando | Função | Fonte | +|---------|--------|-------| +| `/gsd-docs-update` | Gera ou atualiza a documentação do projeto verificada contra a base de código. | [commands/gsd/docs-update.md](../../commands/gsd/docs-update.md) | +| `/gsd-ingest-docs` | Varre um repositório em busca de ADRs/PRDs/SPECs/DOCs mistos e inicializa ou mescla a configuração completa de `.planning/` com classificação, síntese e relatório de conflitos. | [commands/gsd/ingest-docs.md](../../commands/gsd/ingest-docs.md) | +| `/gsd-profile-user` | Gera perfil comportamental do desenvolvedor e artefatos descobríveis pelo Claude. | [commands/gsd/profile-user.md](../../commands/gsd/profile-user.md) | +| `/gsd-settings` | Configura alternâncias de workflow GSD e perfil de modelo. | [commands/gsd/settings.md](../../commands/gsd/settings.md) | +| `/gsd-config` | Configura as definições GSD — alternâncias de workflow (padrão), parâmetros avançados (`--advanced`), integrações (`--integrations`) ou perfil de modelo (`--profile`). | [commands/gsd/config.md](../../commands/gsd/config.md) | +| `/gsd-pr-branch` | Cria um branch limpo de PR filtrando commits de `.planning/`. | [commands/gsd/pr-branch.md](../../commands/gsd/pr-branch.md) | +| `/gsd-surface` | Alterna quais habilidades são expostas — aplica um perfil, lista ou desativa um cluster sem reinstalar. | [commands/gsd/surface.md](../../commands/gsd/surface.md) | +| `/gsd-update` | Atualiza o GSD para a versão mais recente; use `--sync` para sincronizar habilidades entre runtimes ou `--reapply` para reaplicar patches locais. | [commands/gsd/update.md](../../commands/gsd/update.md) | +| `/gsd-help` | Exibe os comandos GSD disponíveis e o guia de uso. | [commands/gsd/help.md](../../commands/gsd/help.md) | + +--- + +## Workflows (88 entregues) + +Registro completo em `get-shit-done/workflows/*.md`. Workflows são orquestradores enxutos que os comandos referenciam internamente; a maioria não é lida diretamente pelos usuários finais. As linhas abaixo mapeiam cada arquivo de workflow para sua função (derivada do bloco ``) e, quando aplicável, para o comando que o invoca. + +| Workflow | Função | Invocado por | +|----------|--------|--------------| +| `add-backlog.md` | Adiciona um item de backlog ao ROADMAP.md usando numeração 999.x. | `/gsd-capture --backlog` | +| `add-phase.md` | Adiciona uma nova fase inteira ao final do milestone atual no roadmap. | `/gsd-phase` (padrão) | +| `add-tests.md` | Gera testes unitários e E2E para uma fase concluída com base em seus artefatos. | `/gsd-add-tests` | +| `add-todo.md` | Captura uma ideia ou tarefa que surge durante uma sessão como um todo estruturado. | `/gsd-capture` (padrão) | +| `ai-integration-phase.md` | Orquestra seleção de framework → pesquisa de IA → pesquisa de domínio → planejamento de avaliação no AI-SPEC.md. | `/gsd-ai-integration-phase` | +| `analyze-dependencies.md` | Analisa as fases do ROADMAP.md para sobreposição de arquivos e dependências semânticas; sugere arestas `Depends on`. | `/gsd-manager --analyze-deps` | +| `audit-fix.md` | Pipeline autônomo de auditoria para correção — executar auditoria, analisar, classificar, corrigir, testar, commitar. | `/gsd-audit-fix` | +| `audit-milestone.md` | Verifica se o milestone atendeu sua definição de pronto ao agregar verificações de fase. | `/gsd-audit-milestone` | +| `audit-uat.md` | Auditoria entre fases de arquivos de UAT e verificação; produz lista priorizada de itens pendentes. | `/gsd-audit-uat` | +| `autonomous.md` | Conduz as fases do milestone de forma autônoma — todas restantes, um intervalo ou uma única fase. | `/gsd-autonomous` | +| `check-todos.md` | Lista todos pendentes, permite seleção, carrega contexto e roteia para a ação apropriada. | `/gsd-capture --list` | +| `cleanup.md` | Arquiva diretórios de fases acumulados de milestones concluídos. | `/gsd-cleanup` | +| `code-review-fix.md` | Autocorrige problemas do REVIEW.md via gsd-code-fixer com commits atômicos por correção. | `/gsd-code-review --fix` | +| `code-review.md` | Revisa alterações de código-fonte da fase via gsd-code-reviewer; produz REVIEW.md. | `/gsd-code-review` | +| `complete-milestone.md` | Marca uma versão entregue como concluída — entrada no MILESTONES.md, evolução do PROJECT.md, tag. | `/gsd-complete-milestone` | +| `diagnose-issues.md` | Orquestra agentes de debug paralelos para investigar lacunas de UAT e encontrar causas raiz. | `/gsd-verify-work` (autodiagnóstico) | +| `discovery-phase.md` | Executa a descoberta no nível de profundidade apropriado. | `/gsd-new-project` (caminho de descoberta) | +| `discuss-phase-assumptions.md` | Discuss no modo de premissas — extrai decisões de implementação via análise com base no código primeiro. | `/gsd-discuss-phase` (quando `discuss_mode=assumptions`) | +| `discuss-phase-power.md` | Discuss para usuário avançado — pré-gera todas as perguntas em um arquivo de estado JSON + UI HTML. | `/gsd-discuss-phase --power` | +| `discuss-phase.md` | Extrai decisões de implementação por meio de discussão iterativa de zonas cinzentas. | `/gsd-discuss-phase` | +| `mvp-phase.md` | Planeja uma fase como uma fatia vertical de MVP — história de usuário, divisão SPIDR, depois plan-phase. | `/gsd-mvp-phase` | +| `do.md` | Roteia texto livre do usuário para o comando GSD mais adequado. | `/gsd-progress --do` | +| `docs-update.md` | Gera, atualiza e verifica documentação canônica e escrita à mão do projeto. | `/gsd-docs-update` | +| `edit-phase.md` | Edita qualquer campo de uma fase existente no ROADMAP.md no lugar, preservando número e posição. | `/gsd-phase --edit` | +| `eval-review.md` | Auditoria retroativa da cobertura de avaliação de uma fase de IA implementada. | `/gsd-eval-review` | +| `execute-phase.md` | Executa todos os planos de uma fase usando execução paralela baseada em ondas. | `/gsd-execute-phase` | +| `execute-plan.md` | Executa um prompt de fase (PLAN.md) e cria o resumo do resultado (SUMMARY.md). | `execute-phase.md` (subagente por plano) | +| `explore.md` | Ideação socrática — guia o desenvolvedor por perguntas investigativas. | `/gsd-explore` | +| `debug.md` | Depuração sistemática — roteamento de subcomandos, criação de sessão, delegação para gsd-debug-session-manager. | `/gsd-debug` | +| `extract-learnings.md` | Extrai decisões, lições, padrões e surpresas de artefatos de fases concluídas. | `/gsd-extract-learnings` | +| `fast.md` | Executa uma tarefa trivial inline sem overhead de subagente. | `/gsd-fast` | +| `forensics.md` | Investigação forense de workflows com falha — análise de git, artefatos e estado. | `/gsd-forensics` | +| `graduation.md` | Agrupa itens recorrentes do LEARNINGS.md entre fases e levanta candidatos de promoção HITL. | `transition.md` (etapa graduation_scan) | +| `health.md` | Valida a integridade do diretório `.planning/` e reporta problemas acionáveis. | `/gsd-health` | +| `help.md` | Exibe a referência completa de comandos do GSD Core. | `/gsd-help` | +| `import.md` | Ingere planos externos com detecção de conflitos contra decisões existentes do projeto. | `/gsd-import` | +| `inbox.md` | Faz triagem de issues e PRs abertas do GitHub contra templates de contribuição do projeto. | `/gsd-inbox` | +| `ingest-docs.md` | Varre um repositório em busca de documentos de planejamento mistos; classifica, sintetiza e inicializa ou mescla no `.planning/` com um relatório de conflitos. | `/gsd-ingest-docs` | +| `insert-phase.md` | Insere uma fase decimal para trabalho urgente descoberto no meio de um milestone. | `/gsd-phase --insert` | +| `list-phase-assumptions.md` | Levanta as premissas do Claude sobre uma fase antes do planejamento. | `/gsd-discuss-phase --assumptions` | +| `list-workspaces.md` | Lista todos os workspaces GSD encontrados em `~/gsd-workspaces/` com seu status. | `/gsd-workspace --list` | +| `manager.md` | Central de comando interativa de milestone — dashboard, discuss inline, plan/execute em segundo plano. | `/gsd-manager` | +| `map-codebase.md` | Orquestra agentes mapeadores paralelos da base de código para produzir documentos em `.planning/codebase/`. | `/gsd-map-codebase` | +| `milestone-summary.md` | Síntese do resumo do milestone — artefato de onboarding e revisão a partir dos artefatos do milestone. | `/gsd-milestone-summary` | +| `new-milestone.md` | Inicia um novo ciclo de milestone — carregar contexto do projeto, coletar objetivos, atualizar PROJECT.md/STATE.md. | `/gsd-new-milestone` | +| `new-project.md` | Fluxo unificado de novo projeto — questionamento, pesquisa (opcional), requisitos, roadmap. | `/gsd-new-project` | +| `new-workspace.md` | Cria um workspace isolado com worktrees/clones do repositório e um `.planning/` independente. | `/gsd-workspace --new` | +| `next.md` | Detecta o estado atual do projeto e avança automaticamente para o próximo passo lógico. | `/gsd-progress --next` | +| `node-repair.md` | Operador de reparo autônomo para verificação de tarefa com falha; invocado por `execute-plan`. | `execute-plan.md` (recuperação) | +| `note.md` | Captura de ideia sem atrito — uma chamada Write, uma linha de confirmação. | `/gsd-capture --note` | +| `pause-work.md` | Cria os arquivos de handoff estruturados `.planning/HANDOFF.json` e `.continue-here.md`. | `/gsd-pause-work` | +| `plan-phase.md` | Cria arquivos PLAN.md executáveis com pesquisa integrada e loop de verificação. | `/gsd-plan-phase`, `/gsd-quick` | +| `plan-review-convergence.md` | Loop de convergência de plano entre IAs — replanejar com feedback de revisão até que não restem preocupações HIGH. | `/gsd-plan-review-convergence` | +| `plant-seed.md` | Captura uma ideia prospectiva como um arquivo de seed estruturado com condições de acionamento. | `/gsd-capture --seed` | +| `pr-branch.md` | Cria um branch limpo para pull requests filtrando commits de `.planning/`. | `/gsd-pr-branch` | +| `profile-user.md` | Orquestra o fluxo completo de perfil do desenvolvedor — consentimento, varredura de sessão, geração de perfil. | `/gsd-profile-user` | +| `progress.md` | Renderização de progresso — contexto do projeto, posição e roteamento para próxima ação. | `/gsd-progress` | +| `quick.md` | Execução de tarefa rápida com garantias GSD (commits atômicos, rastreamento de estado). | `/gsd-quick` | +| `reapply-patches.md` | Reaaplica modificações locais após uma atualização do GSD. | `/gsd-update --reapply` | +| `remove-phase.md` | Remove uma fase futura do roadmap e renumera as fases subsequentes. | `/gsd-phase --remove` | +| `remove-workspace.md` | Remove um workspace GSD e limpa worktrees. | `/gsd-workspace --remove` | +| `resume-project.md` | Retoma o trabalho — restaura o contexto completo do STATE.md, HANDOFF.json e artefatos. | `/gsd-resume-work` | +| `review.md` | Revisão de plano entre IAs via CLIs externos; produz REVIEWS.md. | `/gsd-review` | +| `scan.md` | Varredura rápida e focada da base de código — alternativa leve ao map-codebase. | `/gsd-map-codebase --fast` | +| `secure-phase.md` | Auditoria retroativa de mitigação de ameaças para uma fase concluída. | `/gsd-secure-phase` | +| `session-report.md` | Relatório de sessão — uso de tokens, resumo do trabalho, resultados. | `/gsd-pause-work --report` | +| `settings.md` | Configura alternâncias de workflow GSD e perfil de modelo. | `/gsd-settings`, `/gsd-config --profile` | +| `settings-advanced.md` | Configura parâmetros avançados do GSD — bouncing de plano, timeouts, templates de branch, execução entre IAs, parâmetros de runtime. | `/gsd-config --advanced` | +| `settings-integrations.md` | Configura chaves de API de terceiros (Brave/Firecrawl/Exa), roteamento de CLI `review.models.` e injeção de `agent_skills.` com exibição mascarada (`****`). | `/gsd-config --integrations` | +| `ship.md` | Cria PR, executa revisão e prepara para merge após verificação. | `/gsd-ship` | +| `sketch.md` | Explora direções de design por meio de mockups HTML descartáveis com 2–3 variantes por sketch. | `/gsd-sketch` | +| `sketch-wrap-up.md` | Curadoria das descobertas do sketch e empacotamento como uma habilidade persistente `sketch-findings-[project]`. | `/gsd-sketch --wrap-up` | +| `spec-phase.md` | Refinamento socrático de especificação com pontuação de ambiguidade; produz SPEC.md. | `/gsd-spec-phase` | +| `spike.md` | Validação rápida de viabilidade por meio de experimentos focados e descartáveis. | `/gsd-spike` | +| `spike-wrap-up.md` | Curadoria das descobertas do spike e empacotamento como uma habilidade persistente `spike-findings-[project]`. | `/gsd-spike --wrap-up` | +| `stats.md` | Renderização de estatísticas do projeto — fases, planos, requisitos, métricas git. | `/gsd-stats` | +| `sync-skills.md` | Sincronização de habilidades GSD entre runtimes — diff e aplicação de diretórios de habilidades `gsd-*` entre raízes de runtime. | `/gsd-update --sync` | +| `transition.md` | Workflow de transição de limite de fase — verificações de workstream, avanço de estado. | `execute-phase.md`, `/gsd-progress --next` | +| `ui-phase.md` | Gera contrato de design UI-SPEC.md via gsd-ui-researcher. | `/gsd-ui-phase` | +| `ui-review.md` | Auditoria visual retroativa de 6 pilares via gsd-ui-auditor. | `/gsd-ui-review` | +| `ultraplan-phase.md` | [BETA] Delega o planejamento ao ultraplan cloud do Claude Code; rascunhos remotamente e importa de volta via `/gsd-import`. | `/gsd-ultraplan-phase` | +| `undo.md` | Reversão git segura — commits de fase ou plano usando o manifesto da fase. | `/gsd-undo` | +| `thread.md` | Cria, lista, fecha ou retoma threads de contexto persistentes para trabalho entre sessões. | `/gsd-thread` | +| `update.md` | Atualiza o GSD para a versão mais recente com exibição do changelog. | `/gsd-update` | +| `validate-phase.md` | Audita retroativamente e preenche lacunas de validação Nyquist para uma fase concluída. | `/gsd-validate-phase` | +| `verify-phase.md` | Verifica o alcance dos objetivos da fase por meio de análise retroativa a partir dos objetivos. | `execute-phase.md` (pós-execução) | +| `verify-work.md` | UAT conversacional com autodiagnóstico — produz UAT.md e planos de correção. | `/gsd-verify-work` | + +> **Nota:** Alguns workflows não têm comando direto voltado ao usuário (p. ex. `execute-plan.md`, `verify-phase.md`, `transition.md`, `node-repair.md`, `diagnose-issues.md`) — eles são invocados internamente por workflows orquestradores. `discovery-phase.md` é uma entrada alternativa para `/gsd-new-project`. + +--- + +## Referências (62 entregues) + +Registro completo em `get-shit-done/references/*.md`. Referências são documentos de conhecimento compartilhado que workflows e agentes `@-reference`. Os agrupamentos abaixo correspondem a [`docs/ARCHITECTURE.md`](ARCHITECTURE.md#references-get-shit-donereferencesmd) — clusters principais, de workflow, de modelo de raciocínio e a decomposição modular do planejador. + +### Referências Principais + +| Referência | Função | +|------------|--------| +| `checkpoints.md` | Definições de tipos de checkpoint e padrões de interação. | +| `gates.md` | 4 tipos canônicos de portão (Confirm, Quality, Safety, Transition) conectados ao plan-checker e verifier. | +| `model-profiles.md` | Atribuições de nível de modelo por agente. | +| `model-profile-resolution.md` | Documentação do algoritmo de resolução de modelo. | +| `verification-patterns.md` | Como verificar diferentes tipos de artefato. | +| `verification-overrides.md` | Regras de substituição de verificação por artefato. | +| `planning-config.md` | Esquema completo de configuração e comportamento. | +| `git-integration.md` | Padrões de commit git, ramificação e histórico. | +| `git-planning-commit.md` | Convenções de commit do diretório de planejamento. | +| `questioning.md` | Filosofia de extração de sonhos para a inicialização do projeto. | +| `tdd.md` | Padrões de integração de desenvolvimento orientado a testes. | +| `ui-brand.md` | Padrões de formatação de saída visual. | +| `common-bug-patterns.md` | Padrões comuns de bugs para revisão de código e verificação. | +| `debugger-philosophy.md` | Disciplinas de depuração perenes carregadas pelo `gsd-debugger`. | +| `mandatory-initial-read.md` | Boilerplate de leitura obrigatória compartilhado injetado nos prompts de agentes. | +| `project-skills-discovery.md` | Boilerplate de descoberta de habilidades do projeto injetado nos prompts de agentes. | + +### Referências de Workflow + +| Referência | Função | +|------------|--------| +| `agent-contracts.md` | Interface formal entre orquestradores e agentes. | +| `context-budget.md` | Regras de alocação do orçamento da janela de contexto. | +| `continuation-format.md` | Formato de continuação/retomada de sessão. | +| `domain-probes.md` | Perguntas de sondagem específicas de domínio para a discuss-phase. | +| `gate-prompts.md` | Templates de prompt de portão/checkpoint. | +| `scout-codebase.md` | Tabela de seleção de tipo de fase → mapa de base de código para a etapa de scout da discuss-phase (extraída via #2551). | +| `revision-loop.md` | Padrões de iteração de revisão de plano. | +| `universal-anti-patterns.md` | Antipadrões universais a detectar e evitar. | +| `worktree-path-safety.md` | Suite de guarda do worktree: asserção de HEAD, sentinela de drift de cwd (etapa 0a, #3097) e guarda de caminho absoluto (etapa 0b, #3099) — carregados nos prompts de spawn do executor via ``. | +| `artifact-types.md` | Definições de tipos de artefato de planejamento. | +| `phase-argument-parsing.md` | Convenções de análise de argumentos de fase. | +| `decimal-phase-calculation.md` | Regras de numeração de subfases decimais. | +| `workstream-flag.md` | Convenções de ponteiro ativo de workstream (`--ws`). | +| `user-profiling.md` | Heurísticas de detecção de perfil comportamental do usuário. | +| `thinking-partner.md` | Ativação condicional do parceiro de raciocínio em pontos de decisão. | +| `autonomous-smart-discuss.md` | Lógica de smart-discuss para o modo autônomo. | +| `ios-scaffold.md` | Padrões de scaffolding de aplicativo iOS. | +| `ai-evals.md` | Referência de design de avaliação de IA para `/gsd-ai-integration-phase`. | +| `ai-frameworks.md` | Referência da matriz de decisão de frameworks de IA para `gsd-framework-selector`. | +| `executor-examples.md` | Exemplos resolvidos para o agente gsd-executor. | +| `doc-conflict-engine.md` | Contrato compartilhado de detecção de conflitos para workflows de ingest/import. | +| `execute-mvp-tdd.md` | Semântica de portão de runtime para execute-phase em MVP+TDD — verificação de teste com falha pré-tarefa, revisão bloqueante no final da fase. | +| `mvp-concepts.md` | Índice de referência cruzada dos seis arquivos de referência relacionados a MVP; mapeia cada arquivo para sua finalidade e qual workflow o carrega. | +| `verify-mvp-mode.md` | Regras de enquadramento de UAT para fases em modo MVP — ordenação com fluxo de usuário primeiro, verificações técnicas adiadas, guarda de formato de história de usuário. | + +### Referências de Sketch + +Referências consumidas pelo workflow `/gsd-sketch` e seu companion de wrap-up. + +| Referência | Função | +|------------|--------| +| `sketch-interactivity.md` | Regras para tornar os sketches HTML interativos e vivos. | +| `sketch-theme-system.md` | Sistema de variáveis de tema CSS compartilhado para consistência entre sketches. | +| `sketch-tooling.md` | Utilitários de barra de ferramentas flutuante incluídos em todo sketch. | +| `sketch-variant-patterns.md` | Padrões HTML de múltiplas variantes (abas, lado a lado, sobreposições). | + +### Referências de Modelo de Raciocínio + +Referências para integrar modelos de classe de raciocínio (o3, o4-mini, Gemini 2.5 Pro) em workflows GSD. + +| Referência | Função | +|------------|--------| +| `thinking-models-debug.md` | Padrões de modelo de raciocínio para workflows de debug. | +| `thinking-models-execution.md` | Padrões de modelo de raciocínio para agentes de execução. | +| `thinking-models-planning.md` | Padrões de modelo de raciocínio para agentes de planejamento. | +| `thinking-models-research.md` | Padrões de modelo de raciocínio para agentes de pesquisa. | +| `thinking-models-verification.md` | Padrões de modelo de raciocínio para agentes de verificação. | + +### Decomposição Modular do Planejador + +O agente `gsd-planner` é decomposto em um agente principal mais módulos de referência para caber nos limites de caracteres do runtime. + +| Referência | Função | +|------------|--------| +| `planner-antipatterns.md` | Antipadrões do planejador e exemplos de especificidade. | +| `planner-chunked.md` | Formatos de retorno do modo chunked (`## OUTLINE COMPLETE`, `## PLAN COMPLETE`) para mitigação do travamento de stdio no Windows. | +| `planner-gap-closure.md` | Comportamento do modo de fechamento de lacuna (lê VERIFICATION.md, replanejamento direcionado). | +| `planner-reviews.md` | Integração de revisão entre IAs (lê REVIEWS.md do `/gsd-review`). | +| `planner-revision.md` | Padrões de revisão de plano para refinamento iterativo. | +| `planner-source-audit.md` | Regras de auditoria de fonte e limite de autoridade do planejador. | +| `planner-mvp-mode.md` | Regras de planejamento em fatia vertical para o modo MVP. | +| `planner-human-verify-mode.md` | Regras para `workflow.human_verify_mode = end-of-phase`: suprime a emissão de tarefas `checkpoint:human-verify` e roteia itens adiados via ``. | +| `planner-graphify-auto-update.md` | Como `load_graph_context` levanta o estado de atualização automática de `.last-build-status.json` (running / failed / stale head) junto com a anotação de desatualização existente. Opt-in via `graphify.auto_update` (#3347). | +| `planner-interface-context.md` | Regras de contexto de interface para executores — como extrair interfaces/tipos/exportações chave do código existente e documentar novas interfaces que planos subsequentes consumirão. | +| `skeleton-template.md` | Template do SKELETON.md emitido para o Walking Skeleton de novo projeto (Fase 1 + `--mvp`). | +| `user-story-template.md` | Formato de história de usuário para planejamento MVP — campos estruturados "Como / Quero / Para que". | +| `spidr-splitting.md` | Regras de decomposição de divisão SPIDR para lidar com histórias de usuário grandes no modo MVP. | + +> **Subdiretório:** `get-shit-done/references/few-shot-examples/` contém exemplos adicionais de few-shot (`plan-checker.md`, `verifier.md`) que são referenciados por agentes específicos. Estes não são contados nas 62 referências de nível superior. + +--- + +## Módulos de CLI (81 entregues) + +Listagem completa: `get-shit-done/bin/lib/*.cjs`. + +| Módulo | Responsabilidade | +|--------|-----------------| +| `active-workstream-store.cjs` | Precedência de fonte e seleção de workstream (CLI `--ws` > env `GSD_WORKSTREAM` > ponteiro armazenado); validação de nome e propagação de ambiente | +| `adr-parser.cjs` | Analisador de decisão ADR para o caminho expresso de ingestão da plan-phase; normaliza sinônimos de seção, analisa cercas de status/decisão/escopo e aplica portões de rejeição de status | +| `agent-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools agent` | +| `artifacts.cjs` | Registro canônico de artefatos — nomes de arquivos raiz conhecidos de `.planning/`; usado pelo lint W019 do `gsd-health` | +| `audit.cjs` | Despacho de auditoria, sessões abertas de auditoria, auxiliares de armazenamento de auditoria | +| `check-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools check` | +| `cjs-command-router-adapter.cjs` | Adaptador de compatibilidade compartilhado para roteadores de família de comandos CJS com suporte de manifesto | +| `clock.cjs` | Costura de relógio injetável (now/sleep) para teste determinístico de bloqueio | +| `clusters.cjs` | Definições de cluster de habilidades para o módulo de superfície de runtime (ADR-0011 Fase 2) | +| `code-review-flags.cjs` | Analisador de flags tipado para `/gsd:code-review`; exporta `parseCodeReviewFlags(argv)` (→ `{ fix, all, auto, depth, files }`) e `resolveCodeReviewWorkflow(flags)` (→ `'code-review.md' \| 'code-review-fix.md'`); costura de despacho canônica para roteamento de `--fix`/`--all`/`--auto` | +| `command-aliases.cjs` | Metadados de alias/subcomando para roteadores de família com suporte de manifesto | +| `command-arg-projection.cjs` | Auxiliares de projeção de flag tipada e argumento posicional compartilhados entre roteadores de família de comandos | +| `command-routing-hub.cjs` | Hub de despacho de resultado puro que centraliza a decisão de modo (SDK vs CJS), taxonomia de erros e contrato sem lançamento para todos os roteadores de família de comandos (#3788) | +| `commands.cjs` | Comandos CLI diversos (slug, timestamp, todos, scaffolding, stats) | +| `config-schema.cjs` | Fonte única de verdade para `VALID_CONFIG_KEYS` e padrões de chave dinâmica; importado tanto pelo validador quanto pelo teste de paridade config-schema-docs | +| `config.cjs` | Leitura/escrita de `config.json`, inicialização de seção; importa validador de `config-schema.cjs` | +| `config-types.cjs` | Definições de tipo TypeScript para o bloco de configuração `model_policy` — `ModelPolicyConfig`, `TierEntry`, `RuntimeTiers`; compilado de `src/config-types.cts` no momento da publicação (ADR-457) | +| `configuration.cjs` | Módulo de Configuração — carregamento canônico de configuração, normalização de chave legada, merge de padrões e migração explícita em disco; fonte de verdade para consumidores SDK e CJS | +| `context-utilization.cjs` | Classificador puro para `gsd-health --context` — converte (tokensUsed, contextWindow) em um resultado de triagem `{ percent, state }` contra os limiares de ponto de fratura de 60%/70% (#2792) | +| `core.cjs` | Tratamento de erros, formatação de saída, utilitários compartilhados, fallbacks de runtime; re-exportações de compatibilidade para auxiliares de planning-workspace | +| `decisions.cjs` | Analisa blocos `` do CONTEXT.md; aceita IDs numéricos (D-42) e alfanuméricos (D-INFRA-01); retorna `{id, text, category, tags, trackable}` | +| `docs.cjs` | Inicialização do workflow docs-update, varredura de Markdown, detecção de monorepo | +| `drift.cjs` | Detector de drift estrutural pós-execução da base de código (#2003): classifica alterações de arquivo em categorias new-dir/barrel/migration/route e faz round-trip do frontmatter `last_mapped_commit` | +| `fallow-runner.cjs` | Adaptador de auditoria fallow para `/gsd-code-review`: resolução binária (`PATH` depois `node_modules/.bin`), erros acionáveis de binário ausente e normalização de descobertas estruturais | +| `frontmatter.cjs` | Operações CRUD de frontmatter YAML | +| `gap-checker.cjs` | Análise de lacunas pós-planejamento (#2493): relatório unificado de cobertura de decisões do REQUIREMENTS.md + CONTEXT.md vs PLAN.md (`gsd-tools gap-analysis`) | +| `graphify.cjs` | Build/consulta/status/diff do grafo de conhecimento para `/gsd-graphify` | +| `gsd2-import.cjs` | Ingestão de plano externo para `/gsd-import --from-gsd2` | +| `init-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools init` | +| `init.cjs` | Carregamento de contexto composto para cada tipo de workflow | +| `install-profiles.cjs` | Lista de permissões de perfil de instalação + staging de habilidades para instalação `--minimal` (#2762); fonte única de verdade para quais habilidades/agentes `gsd-*` ficam nos diretórios de configuração de runtime | +| `installer-migration-authoring.cjs` | Barreiras de autoria de migração do instalador para metadados de registro, escopos explícitos, evidência de propriedade e citações de contrato de runtime | +| `installer-migration-report.cjs` | Projeção de relatório de migração do instalador e guarda de ação bloqueada para integração de instalação/atualização | +| `installer-migrations.cjs` | Planejamento de migração do instalador, classificação de artefatos, persistência do estado de instalação, aplicação com journal e auxiliares de rollback | +| `intel.cjs` | Armazenamento de intel da base de código suportando `/gsd-map-codebase --query` e `gsd-intel-updater` | +| `learnings.cjs` | Extração de aprendizados entre fases para `/gsd-extract-learnings` | +| `milestone.cjs` | Arquivamento de milestone, marcação de requisitos | +| `model-catalog.cjs` | Adaptador CJS sobre o JSON do catálogo de modelos compartilhado; exporta padrões canônicos de nível de runtime, mapas de perfil de agente, mapas de alias e metadados de roteamento para todos os consumidores de CLI | +| `model-profiles.cjs` | Auxiliares de perfil compatíveis com versões anteriores derivados de `model-catalog.cjs`; não possui mais sua própria tabela de modelos | +| `package-identity.cjs` | Fonte única gerada para as coordenadas do pacote publicado do GSD (nome npm, nome bin, slug do repositório, URL do changelog, comando de instalação manual), derivado do package.json; lido pelo worker de atualização, `check-latest-version` e instalador (#498) | +| `phase-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools phase` | +| `phase-lifecycle.cjs` | Auxiliares de ciclo de vida de fase de computação pura extraídos do handler SDK de ciclo de vida de fase | +| `phase.cjs` | Operações de diretório de fase, numeração decimal, indexação de planos | +| `phases-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools phases` | +| `plan-scan.cjs` | Scanner canônico de plano de fase para detectar arquivos de plano e resumo em layouts planos e aninhados (k014) | +| `planning-workspace.cjs` | Costura de caminho/workstream de planejamento (`planningDir`, `planningPaths`, roteamento de workstream ativo, orquestração de `.planning/.lock`) | +| `project-root.cjs` | Resolve uma raiz de projeto a partir de um diretório inicial usando quatro heurísticas (guarda de `.planning/` próprio, config `sub_repos`, flag `multiRepo`, heurística `.git`) | +| `profile-output.cjs` | Renderização de perfil, geração de USER-PROFILE.md e dev-preferences.md | +| `profile-pipeline.cjs` | Pipeline de dados de perfil comportamental do usuário, varredura de arquivos de sessão | +| `prompt-budget.cjs` | Contabilidade pura de orçamento de tokens para prompts de revisão — estima tokens, aplica prioridade de corte determinística (redução de cabeça PROJECT.md, truncamento proporcional de plano, descarte de contexto/pesquisa/requisitos, guarda de falha rígida), retorna metadados estruturados para `review.max_prompt_tokens` (#3081) | +| `review-reviewer-selection.cjs` | Auxiliares de seleção/normalização de revisor para política de revisor padrão e precedência do `/gsd-review` | +| `roadmap-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools roadmap` | +| `roadmap-upgrade.cjs` | Ferramenta de migração para converter entradas legadas `Phase N` para a convenção prefixada de milestone `Phase M-NN`; `computeMigrationPlan` + `applyMigration` com padrão dry-run e rollback atômico | +| `roadmap.cjs` | Análise de ROADMAP.md, extração de fases, progresso de plano | +| `runtime-artifact-layout.cjs` | Módulo de layout de artefatos de runtime — resolve as formas do diretório de artefatos (comandos, agentes, habilidades) para cada runtime suportado; fonte única de verdade para posicionamento de artefatos por runtime (#3663) | +| `runtime-name-policy.cjs` | Política de normalização de nome de runtime — sanitização canônica de token para identificadores de runtime usados na construção de caminhos e exibição | +| `runtime-homes.cjs` | Mapeamento canônico de runtime → diretório de configuração/habilidades global; suporte de primeira classe para todos os 15 runtimes incluindo layout aninhado Hermes e exclusão baseada em regras Cline (#3126) | +| `runtime-slash.cjs` | Formatador de comando slash com reconhecimento de runtime — fonte única de verdade para emitir `/gsd-` (runtimes baseados em habilidades) e `$gsd-` (codex) em saída voltada ao usuário e artefatos persistidos (#3584) | +| `schema-detect.cjs` | Detecção de drift de esquema para padrões ORM (Prisma, Drizzle, Supabase, TypeORM, Payload); exporta `detectSchemaFiles`, `detectSchemaOrm`, `checkSchemaDrift`, `SCHEMA_PATTERNS`, `ORM_INFO` | +| `secrets.cjs` | Convenção de mascaramento de configuração de segredo (`****`) para chaves de integração; exporta `SECRET_CONFIG_KEYS`, `isSecretKey`, `maskSecret`, `maskIfSecret` | +| `semver-compare.cjs` | Auxiliares de política de comparação semver compartilhados (`compareSemverCore`, validação de tripla estável, análise de tupla normalizada) consumidos por hooks de verificação de atualização, detecção de instalação dev da linha de status e lógica de intervalo de extração de changeset (#10) | +| `security.cjs` | Prevenção de path traversal, detecção de injeção de prompt, auxiliares JSON/shell seguros | +| `shell-command-projection.cjs` | Projeção de comando shell com reconhecimento de runtime para serialização de hook gerenciado: decide o uso do operador de chamada PowerShell por runtime/plataforma e normaliza tokens de caminho de script Windows | +| `state-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools state` | +| `state.cjs` | Análise, atualização, progressão e métricas do STATE.md | +| `state-document.cjs` | Extração de campo, substituição, normalização de status e transformações de cálculo de progresso puras do STATE.md | +| `surface.cjs` | Módulo de superfície de runtime — gerencia o estado de superfície de habilitação/desabilitação do runtime independentemente do marcador de perfil no momento da instalação (ADR-0011 Fase 2) | +| `task-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools task` | +| `template.cjs` | Seleção e preenchimento de template com substituição de variáveis | +| `uat.cjs` | Análise de arquivo UAT, rastreamento de dívida de verificação, suporte audit-uat | +| `ui-safety-gate.cjs` | Detector de token de UI de limite de palavra sem shell (#3706, #3718); lê texto de seção de fase do stdin, sai com 0 (UI encontrada) ou 1 (sem UI); também implantado em `get-shit-done/bin/lib/` para que o instalador GSD o entregue em `$RUNTIME_DIR` (#448) | +| `update-context.cjs` | Resolvedor de contexto de instalação puro para `/gsd:update` — detecção de runtime/escopo/config-dir/versão (LOCAL/GLOBAL/UNKNOWN) portada do bash de update.md; sustenta `gsd-tools update-context` (#498) | +| `validate-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools validate` | +| `validate.cjs` | Auxiliares de normalização de variante de fase puros (`phaseVariants`, `buildRoadmapPhaseVariants`, `buildNotStartedPhaseVariants`) usados por `verify.cjs` para verificações W006/W007; sem I/O, sem async | +| `verify-command-router.cjs` | Adaptador de roteador de subcomando CJS fino para `gsd-tools verify` | +| `verify.cjs` | Estrutura de plano, completude de fase, referência, validação de commit | +| `workstream-inventory-builder.cjs` | Construtor de projeção de inventário de workstream puro | +| `workstream-inventory.cjs` | Projeção de inventário de workstream compartilhada: campos de estado, contagens de fase/plano/resumo, contagem de fase do roadmap e marcador ativo — orquestrador fino que delega projeção pura para `workstream-inventory-builder.cjs` | +| `workstream-name-policy.cjs` | Validação canônica de nome de workstream (`isValidActiveWorkstreamName`, `hasInvalidPathSegment`, `validateWorkstreamName`) e normalização de slug (`toWorkstreamSlug`) | +| `workstream.cjs` | CRUD de workstream, migração, ponteiro ativo com escopo de sessão | +| `worktree-safety.cjs` | Resolução de raiz de worktree e decisões de política de poda não destrutiva; possui a lógica de verificação de integridade W017 | + +[`docs/CLI-TOOLS.md`](CLI-TOOLS.md) pode descrever um subconjunto desses módulos; quando discordar do sistema de arquivos, esta tabela e a listagem de diretório são autoritativas. + +--- + +## Hooks (14 entregues) + +Listagem completa: `hooks/`. + +| Hook | Evento | Finalidade | +|------|--------|-----------| +| `gsd-statusline.js` | `statusLine` | Exibe modelo, tarefa, diretório, uso de contexto | +| `gsd-context-monitor.js` | `PostToolUse` / `AfterTool` | Injeta avisos de contexto voltados ao agente a 35%/25% de contexto restante | +| `gsd-check-update.js` | `SessionStart` | Verificação em segundo plano de novas versões do GSD | +| `gsd-check-update-worker.js` | (worker) | Auxiliar de worker em segundo plano para check-update | +| `gsd-update-banner.js` | `SessionStart` | Banner opt-in que levanta a disponibilidade de atualização quando a statusline GSD não é usada (PR #2795) | +| `gsd-prompt-guard.js` | `PreToolUse` | Varre escritas em `.planning/` em busca de padrões de injeção de prompt (consultivo) | +| `gsd-workflow-guard.js` | `PreToolUse` | Detecta edições de arquivo fora do contexto de workflow GSD (consultivo, opt-in) | +| `gsd-read-guard.js` | `PreToolUse` | Guarda consultiva que impede Edit/Write em arquivos não lidos | +| `gsd-read-injection-scanner.js` | `PostToolUse` | Varre resultados de Read de ferramenta em busca de padrões de injeção de prompt (v1.36+, PR #2201) | +| `gsd-worktree-path-guard.js` | `PreToolUse` | Bloqueia rigorosamente Edit/Write/MultiEdit com caminhos absolutos fora da raiz do worktree (PR #579, #260) | +| `gsd-session-state.sh` | `PostToolUse` | Rastreamento de estado de sessão para runtimes baseados em shell | +| `gsd-validate-commit.sh` | `PostToolUse` | Validação de commit para aplicação de conventional-commit | +| `gsd-phase-boundary.sh` | `PostToolUse` | Detecção de limite de fase para transições de workflow | +| `gsd-graphify-update.sh` | `PostToolUse` | Reconstrução automática do grafo de conhecimento após o avanço do HEAD principal (opt-in, padrão desativado — #3347) | + +--- + +## Manutenção + +- Quando um novo comando, agente, workflow, referência, módulo de CLI ou hook for entregue, atualize a seção correspondente aqui antes que a versão seja liberada. +- Os testes de guarda de drift em `tests/` (veja "Como Usar Este Arquivo" acima) asseguram que todo arquivo entregue está enumerado neste inventário. Um novo arquivo sem uma linha correspondente aqui falhará no CI. +- Quando o sistema de arquivos divergir das contagens de `docs/ARCHITECTURE.md` ou de documentações de subconjunto curado (p. ex. o registro primário do `docs/AGENTS.md`), este arquivo é a fonte de verdade. + +## Relacionados + +- [Comandos](COMMANDS.md) — referência de comandos voltados ao usuário +- [Arquitetura](ARCHITECTURE.md) — como as superfícies se encaixam +- [índice de documentação](README.md) diff --git a/docs/pt-BR/README.md b/docs/pt-BR/README.md index 0721e225d..657137c69 100644 --- a/docs/pt-BR/README.md +++ b/docs/pt-BR/README.md @@ -1,34 +1,69 @@ # Documentação do GSD Core -Documentação abrangente do GSD Core (Git. Ship. Done.) — um sistema de meta-prompting, engenharia de contexto e desenvolvimento orientado por especificações para agentes de IA. +A documentação está organizada em quatro quadrantes: **tutoriais** ajudam você a aprender na prática, **guias de instruções** resolvem tarefas específicas, **referência** apresenta fatos autorizados, e **explicação** explora conceitos e decisões de design. -## Índice da documentação +Versões por idioma: [English](../README.md) · [Português (pt-BR)](README.md) · [日本語](../ja-JP/README.md) · [简体中文](../zh-CN/README.md) -| Documento | Público | Descrição | -|----------|----------|-------------| -| [Guia do Usuário](USER-GUIDE.md) | Todos os usuários | Fluxos de trabalho, troubleshooting e recuperação | -| [Arquitetura](ARCHITECTURE.md) | Contribuidores, usuários avançados | Arquitetura do sistema, modelo de agentes e design interno | -| [Referência de comandos](COMMANDS.md) | Todos os usuários | Comandos, sintaxe, flags, opções e exemplos | -| [Referência de configuração](CONFIGURATION.md) | Todos os usuários | Schema completo de configuração, toggles e perfis | -| [Referência de recursos](FEATURES.md) | Todos os usuários | Recursos e requisitos detalhados | -| [Referência de agentes](AGENTS.md) | Contribuidores, usuários avançados | Agentes especializados, papéis e padrões de orquestração | -| [Ferramentas CLI](CLI-TOOLS.md) | Contribuidores, autores de agentes | Superfície CJS `gsd-tools.cjs` + guia guia de `gsd-tools.cjs query` | -| [Monitor de contexto](context-monitor.md) | Todos os usuários | Arquitetura de monitoramento da janela de contexto | -| [Discuss Mode](workflow-discuss-mode.md) | Todos os usuários | Modo suposições vs entrevista no `discuss-phase` | -| [Referências](references/) | Todos os usuários | Guias complementares de decisão, verificação e padrões | -| [Superpowers](superpowers/) | Contribuidores | Planos e specs avançadas do projeto | +--- -## Novidades v1.39 +## Tutorials -Perfil de instalação `--minimal` (≥94% de redução no cold-start), `/gsd-phase --edit`, build & test gate pós-merge, `review.models.` para escolha de modelo de review por runtime, herança de configuração de workstream, workflow manual de canary release, consolidação de skills (86 → 59). +- [Seu primeiro projeto](tutorials/your-first-project.md) — da instalação à primeira fase entregue, um caminho garantido +- [Integrando uma base de código existente](tutorials/onboarding-an-existing-codebase.md) — leve o GSD Core a um repositório já existente -## Links rápidos +--- -- **Começar rápido:** [README principal](../../README.pt-BR.md) -> instalação -> `/gsd-new-project` -- **Fluxo completo:** [Guia do usuário](USER-GUIDE.md) -- **Comandos:** [Referência de comandos](COMMANDS.md) -- **Configuração:** [Referência de configuração](CONFIGURATION.md) -- **Arquitetura interna:** [Arquitetura](ARCHITECTURE.md) +## How-to guides -> [!NOTE] -> Esta pasta `pt-BR` contém a versão em Português dos documentos de uso geral. Documentação técnica avançada ainda referencia os arquivos em inglês para manter precisão e atualização. +- [Instalar no seu ambiente de execução](how-to/install-on-your-runtime.md) — passos de instalação específicos para cada um dos 15 ambientes de execução suportados +- [Discutir uma fase](how-to/discuss-a-phase.md) — registrar decisões de implementação antes do início do planejamento +- [Planejar uma fase](how-to/plan-a-phase.md) — executar pesquisa, decompor o trabalho e verificar a qualidade do plano +- [Executar uma fase](how-to/execute-a-phase.md) — rodar planos em ondas paralelas com subagentes com contexto renovado +- [Verificar e entregar](how-to/verify-and-ship.md) — revisar o trabalho concluído, diagnosticar falhas e criar o PR +- [Rodar fases de forma autônoma](how-to/run-phases-autonomously.md) — usar o modo autônomo para execução de fases sem supervisão +- [Lidar com tarefas rápidas e ágeis](how-to/handle-quick-and-fast-tasks.md) — usar `/gsd-quick` e `/gsd-fast` para trabalho avulso fora do ciclo de fases +- [Configurar perfis de modelo](how-to/configure-model-profiles.md) — alternar entre níveis de modelo: qualidade, equilibrado e econômico +- [Configurar revisão entre IAs](how-to/set-up-cross-ai-review.md) — configurar uma segunda IA para revisar o código produzido pelo agente principal +- [Trabalhar em paralelo com workstreams](how-to/work-in-parallel-with-workstreams.md) — executar linhas de trabalho independentes simultaneamente usando workstreams +- [Isolar trabalho com workspaces](how-to/isolate-work-with-workspaces.md) — usar workspaces para isolar mudanças experimentais ou arriscadas +- [Depurar uma execução com falha](how-to/debug-a-failed-execution.md) — diagnosticar e recuperar de execuções de fase quebradas ou incompletas +- [Explorar e esboçar](how-to/spike-and-sketch.md) — usar `/gsd-spike` e `/gsd-sketch` para trabalho exploratório antes de comprometer com um plano +- [Projetar uma fase de UI](how-to/design-a-ui-phase.md) — usar o ciclo de fase de UI para trabalho de frontend e visual +- [Conduzir o GSD a partir de uma issue do rastreador](how-to/drive-gsd-from-a-tracker-issue.md) — iniciar uma fase a partir de uma issue do GitHub, Linear ou Jira +- [Migrar do GSD 2](how-to/migrate-from-gsd-2.md) — atualizar um projeto GSD 2 existente para o GSD Core +- [Atualizar o GSD](how-to/update-gsd.md) — executar novamente o instalador para obter a versão mais recente +- [Recuperar e solucionar problemas](how-to/recover-and-troubleshoot.md) — corrigir problemas comuns, reconstruir contexto e desinstalar + +--- + +## Referência + +- [Comandos](COMMANDS.md) — todos os comandos com flags e exemplos +- [Configuração](CONFIGURATION.md) — schema completo de configuração, perfis de modelo, estratégias de branching git +- [Ferramentas CLI](CLI-TOOLS.md) — API programática `gsd-tools.cjs` para workflows e agentes +- [Funcionalidades](FEATURES.md) — índice completo de funcionalidades +- [Inventário](INVENTORY.md) — skills instaladas e mapa de superfície +- [Schema do STATE.md](reference/state-md.md) — referência campo a campo para `.planning/STATE.md` +- [Schema do CONTEXT.md](reference/context-md.md) — referência campo a campo para `.planning/phases//CONTEXT.md` +- [Schema do PLAN.md](reference/plan-md.md) — referência campo a campo para `.planning/phases//PLAN.md` +- [Artefatos de planejamento](reference/planning-artifacts.md) — todos os arquivos `.planning/` e seus papéis + +--- + +## Explicação + +- [Engenharia de contexto](explanation/context-engineering.md) — como a degradação de contexto se forma e como o GSD Core a previne +- [O ciclo de fase](explanation/the-phase-loop.md) — racional de design para o ciclo Discuss → Plan → Execute → Verify → Ship +- [Orquestração multi-agente](explanation/multi-agent-orchestration.md) — como os subagentes são criados, delimitados e coordenados +- [Modelo de segurança](explanation/security-model.md) — limites de confiança, permissões e automação segura +- [Arquitetura](ARCHITECTURE.md) — arquitetura do sistema, modelo de agentes e fluxo de dados +- [Modos de discussão](workflow-discuss-mode.md) — modo de suposições vs. modo de entrevista para `/gsd-discuss-phase` +- [Monitoramento de contexto](context-monitor.md) — arquitetura do hook de monitoramento da janela de contexto +- [Orquestração orientada por issues](issue-driven-orchestration.md) — receita para conduzir o GSD a partir de uma issue do rastreador usando primitivos existentes + +--- + +## Relacionados + +- [README raiz](../README.md) — página inicial, início rápido e visão geral da documentação +- [Changelog](../../CHANGELOG.md) — histórico de versões diff --git a/docs/pt-BR/USER-GUIDE.md b/docs/pt-BR/USER-GUIDE.md index e69be8ce0..6b63cf518 100644 --- a/docs/pt-BR/USER-GUIDE.md +++ b/docs/pt-BR/USER-GUIDE.md @@ -1,304 +1,840 @@ -# Guia do Usuário do GSD +# Guia do Usuário GSD -Referência detalhada de workflows, troubleshooting e configuração. Para setup rápido, veja o [README](../../README.pt-BR.md). +Um guia narrativo complementar ao GSD Core — comece aqui para se orientar e siga os links para a documentação dedicada. + +> **A documentação do GSD Core é organizada seguindo o modelo [Diataxis](https://diataxis.fr).** +> Navegue por objetivo: [Tutoriais](README.md#tutorials) · [Guias práticos](README.md#how-to-guides) · [Referência](README.md#reference) · [Explicação](README.md#explanation) · [Índice da documentação](README.md) --- ## Sumário -- [Fluxo de trabalho](#fluxo-de-trabalho) -- [Contrato de UI](#contrato-de-ui) +- [Formas do slash-command](#formas-do-slash-command-hífen-vs-dois-pontos) +- [Introdução ao roteamento de namespace](#introdução-ao-roteamento-de-namespace-gsdnamespace-v140) +- [Visão geral do ciclo de vida do projeto](#visão-geral-do-ciclo-de-vida-do-projeto) +- [Diagramas de fluxo](#diagramas-de-fluxo) +- [Contrato de design de UI](#contrato-de-design-de-ui) +- [Spikes e Esboços](#spikes-e-esboços) - [Backlog e Threads](#backlog-e-threads) -- [Workstreams](#workstreams) +- [Workstreams e Workspaces](#workstreams-e-workspaces) - [Segurança](#segurança) -- [Referência de comandos](#referência-de-comandos) -- [Configuração](#configuração) - [Exemplos de uso](#exemplos-de-uso) -- [Troubleshooting](#troubleshooting) -- [Recuperação rápida](#recuperação-rápida) +- [Solução de problemas](#solução-de-problemas) +- [Referência rápida de recuperação](#referência-rápida-de-recuperação) +- [Estrutura de arquivos do projeto](#estrutura-de-arquivos-do-projeto) +- [Relacionados](#relacionados) + +Para conduzir o GSD diretamente a partir de uma issue do GitHub / Linear / Jira, consulte o guia +[Orquestração orientada por issues](issue-driven-orchestration.md) — uma +receita que mapeia issues do rastreador ao ciclo workspace → discuss → plan → +execute → verify → review → ship usando as primitivas GSD existentes. --- -## Fluxo de trabalho +## Formas do slash-command (hífen vs dois-pontos) -Fluxo recomendado por fase: +O GSD fornece **o mesmo conjunto de habilidades** para todos os runtimes suportados, mas dois estilos de barra são utilizados: -1. `/gsd-discuss-phase [N]` — trava preferências de implementação -2. `/gsd-ui-phase [N]` — contrato visual para fases frontend -3. `/gsd-plan-phase [N]` — pesquisa + plano + validação -4. `/gsd-execute-phase [N]` — execução em ondas paralelas -5. `/gsd-verify-work [N]` — UAT manual com diagnóstico -6. `/gsd-ship [N]` — cria PR (opcional) +- **Forma com hífen** — `/gsd-command-name` — usada por Claude Code, Copilot, OpenCode, Kilo, Cursor, Windsurf, Augment, Antigravity e Trae. +- **Forma com dois-pontos** — `/gsd:command-name` — usada **exclusivamente pelo Gemini CLI**. O Gemini coloca todos os comandos de cada plugin sob o ID do plugin, portanto o instalador reescreve todas as referências no corpo do texto e nos arquivos de comando para a forma com dois-pontos durante a instalação com `--gemini`. -Para iniciar projeto novo: +Você não precisa escolher — o instalador grava a forma correta no diretório de comandos de cada runtime que você especificar. Ao seguir um guia passo a passo num terminal Gemini, substitua o hífen após `gsd` por dois-pontos ao ler cada slash-command. -```bash -/gsd-new-project +## Introdução ao roteamento de namespace (`gsd:`, v1.40) + +A v1.40 traz seis **meta-habilidades de namespace** como pontos de entrada de primeiro estágio para roteamento hierárquico — elas mantêm baixo o custo de tokens da listagem antecipada de habilidades (~120 tokens para 6 roteadores versus ~2.150 para uma listagem plana de 86 habilidades), enquanto cada sub-habilidade concreta permanece diretamente invocável. O corpo de cada roteador de namespace contém uma tabela de roteamento que mapeia sua intenção à sub-habilidade concreta correta. + +| Namespace | Roteador | Encaminha para | +|-----------|--------|-----------| +| Pipeline de fases | `/gsd-workflow` | discuss / plan / execute / verify / phase / progress | +| Ciclo de vida do projeto | `/gsd-project` | milestones, audits, summary | +| Gates de qualidade | `/gsd-quality` | code review, debug, audit, security, eval, ui | +| Inteligência de codebase | `/gsd-context` | map, graphify, docs, learnings | +| Gerenciamento | `/gsd-manage` | config, workspace, workstreams, thread, update, ship, inbox | +| Exploração e captura | `/gsd-ideate` | explore, sketch, spike, spec, capture | + +Você quase nunca precisa digitar um roteador de namespace diretamente. Seu valor está na camada de roteamento que o modelo usa para descobrir a sub-habilidade correta — eles existem para que o prompt do sistema possa listar 6 entradas em vez de 86. Se você já conhece o comando concreto (ex.: `/gsd-plan-phase`), invoque-o diretamente. + +--- + +## Visão geral do ciclo de vida do projeto + +O ciclo central do GSD é: **discuss → plan → execute → verify → ship**, repetido por fase. O guia passo a passo completo — incluindo exemplos de saída, quais arquivos são criados e todas as flags em uso — está no tutorial dedicado. + +Consulte [Seu primeiro projeto](tutorials/your-first-project.md). + +Para integrar uma base de código existente antes de iniciar um novo milestone, consulte [Integrando uma base de código existente](tutorials/onboarding-an-existing-codebase.md). + +**Flags relevantes em resumo:** + +| Flag | Comando | Quando usar | +| ---- | ------- | ----------- | +| `--auto` | `/gsd-new-project` | Pular perguntas interativas, ingerir de um arquivo PRD | +| `--research` | `/gsd-quick` | Adicionar um agente de pesquisa a uma tarefa avulsa | +| `--validate` | `/gsd-quick` | Adicionar verificação de plano e verificação pós-execução | +| `--chain` | `/gsd-discuss-phase` | Encadear automaticamente discuss → plan → execute sem pausas | +| `--skip-research` | `/gsd-plan-phase` | Pular agentes de pesquisa quando o domínio já é familiar | +| `--draft` | `/gsd-ship` | Criar um PR como rascunho em vez de pronto para revisão | + +Para a referência completa de comandos com todas as flags, consulte [`docs/COMMANDS.md`](COMMANDS.md). Para opções de configuração (perfis de modelo, agentes de workflow, branching git), consulte [`docs/CONFIGURATION.md`](CONFIGURATION.md). + +--- + +## Diagramas de fluxo + +### Ciclo de vida completo do projeto + +```text + ┌──────────────────────────────────────────────────┐ + │ NEW PROJECT │ + │ /gsd-new-project │ + │ Questions -> Research -> Requirements -> Roadmap│ + └─────────────────────────┬────────────────────────┘ + │ + ┌──────────────▼─────────────┐ + │ FOR EACH PHASE: │ + │ │ + │ ┌────────────────────┐ │ + │ │ /gsd-discuss-phase │ │ <- Lock in preferences + │ └──────────┬─────────┘ │ + │ │ │ + │ ┌──────────▼─────────┐ │ + │ │ /gsd-ui-phase │ │ <- Design contract (frontend) + │ └──────────┬─────────┘ │ + │ │ │ + │ ┌──────────▼─────────┐ │ + │ │ /gsd-plan-phase │ │ <- Research + Plan + Verify + │ └──────────┬─────────┘ │ + │ │ │ + │ ┌──────────▼─────────┐ │ + │ │ /gsd-execute-phase │ │ <- Parallel execution + │ └──────────┬─────────┘ │ + │ │ │ + │ ┌──────────▼─────────┐ │ + │ │ /gsd-verify-work │ │ <- Manual UAT + │ └──────────┬─────────┘ │ + │ │ │ + │ ┌──────────▼─────────┐ │ + │ │ /gsd-ship │ │ <- Create PR (optional) + │ └──────────┬─────────┘ │ + │ │ │ + │ Next Phase?────────────┘ + │ │ No + └─────────────┼──────────────┘ + │ + ┌───────────────▼──────────────┐ + │ /gsd-audit-milestone │ + │ /gsd-complete-milestone │ + └───────────────┬──────────────┘ + │ + Another milestone? + │ │ + Yes No -> Done! + │ + ┌───────▼──────────────┐ + │ /gsd-new-milestone │ + └──────────────────────┘ ``` -Para seguir automaticamente o próximo passo: +### Coordenação de agentes de planejamento -```bash -/gsd-progress --next +```text + /gsd-plan-phase N + │ + ├── Phase Researcher (x4 parallel) + │ ├── Stack researcher + │ ├── Features researcher + │ ├── Architecture researcher + │ └── Pitfalls researcher + │ │ + │ ┌──────▼──────┐ + │ │ RESEARCH.md │ + │ └──────┬──────┘ + │ │ + │ ┌──────▼──────┐ + │ │ Planner │ <- Reads PROJECT.md, REQUIREMENTS.md, + │ │ │ CONTEXT.md, RESEARCH.md + │ └──────┬──────┘ + │ │ + │ ┌──────▼───────────┐ ┌────────┐ + │ │ Plan Checker │────>│ PASS? │ + │ └──────────────────┘ └───┬────┘ + │ │ + │ Yes │ No + │ │ │ │ + │ │ └───┘ (loop, up to 3x) + │ │ + │ ┌─────▼──────┐ + │ │ PLAN files │ + │ └────────────┘ + └── Done ``` -### Nyquist Validation +### Arquitetura de validação (Camada Nyquist) -Durante `plan-phase`, o GSD pode mapear requisitos para comandos de teste automáticos antes da implementação. Isso gera `{phase}-VALIDATION.md` e aumenta a confiabilidade de verificação pós-execução. +Durante a pesquisa da fase de planejamento, o GSD mapeia a cobertura de testes automatizados para cada requisito da fase antes que qualquer código seja escrito. O pesquisador detecta sua infraestrutura de testes existente, mapeia cada requisito para um comando de teste específico e identifica qualquer scaffolding de testes que deve ser criado antes do início da implementação (tarefas da Wave 0). O verificador de planos impõe isso como uma 8ª dimensão de verificação: planos em que as tarefas carecem de comandos de verificação automatizados não serão aprovados. -Desativar: +**Saída:** `{phase}-VALIDATION.md` — o contrato de feedback para a fase. -```json -{ - "workflow": { - "nyquist_validation": false - } -} +**Desativar:** Defina `workflow.nyquist_validation: false` em `/gsd-settings` para fases de prototipagem rápida onde a infraestrutura de testes não é o foco. + +### Validação retroativa (`/gsd-validate-phase`) + +Para fases executadas antes de a validação Nyquist existir, ou para bases de código existentes com apenas suítes de teste tradicionais, audite retroativamente e preencha as lacunas de cobertura: + +```text + /gsd-validate-phase N + | + +-- Detect state (VALIDATION.md exists? SUMMARY.md exists?) + | + +-- Discover: scan implementation, map requirements to tests + | + +-- Analyze gaps: which requirements lack automated verification? + | + +-- Present gap plan for approval + | + +-- Spawn auditor: generate tests, run, debug (max 3 attempts) + | + +-- Update VALIDATION.md + | + +-- COMPLIANT -> all requirements have automated checks + +-- PARTIAL -> some gaps escalated to manual-only ``` +O auditor nunca modifica o código de implementação — apenas arquivos de teste e VALIDATION.md. Se um teste revelar um bug de implementação, ele é sinalizado como escalonamento para que você o resolva. + ### Modo de discussão por suposições -Com `workflow.discuss_mode: "assumptions"`, o GSD analisa o código antes de perguntar, apresenta suposições estruturadas e pede apenas correções. +Por padrão, `/gsd-discuss-phase` faz perguntas abertas sobre suas preferências de implementação. O modo de suposições inverte isso: o GSD lê sua base de código primeiro, levanta suposições estruturadas sobre como construiria a fase e solicita apenas correções. + +**Ativar:** Defina `workflow.discuss_mode` como `'assumptions'` via `/gsd-settings`. + +Consulte [docs/workflow-discuss-mode.md](workflow-discuss-mode.md) para a referência completa do modo discuss. + +### Gates de cobertura de decisões + +A fase de discussão captura decisões de implementação no CONTEXT.md sob um bloco `` como marcadores numerados (`- **D-01:** …`). Dois gates garantem que essas decisões sobrevivam até os planos e o código entregue. + +**Gate de tradução na fase de planejamento (bloqueante).** Após o planejamento, o GSD se recusa a marcar a fase como planejada até que cada decisão rastreável apareça em pelo menos um `must_haves`, `truths` ou corpo de um plano. + +**Gate de validação na fase de verificação (não bloqueante).** Durante a verificação, o GSD pesquisa planos, SUMMARY.md, arquivos modificados e mensagens de commit recentes para cada decisão rastreável. Ausências são registradas no VERIFICATION.md como uma seção de aviso; o status de verificação permanece inalterado. + +**Excluir uma decisão dos gates.** Mova-a para o cabeçalho `### Claude's Discretion` dentro de ``, ou marque-a: `- **D-08 [informational]:** …`, `- **D-09 [folded]:** …`, `- **D-10 [deferred]:** …`. + +**Desativar os gates.** Defina `workflow.context_coverage_gate: false` em `.planning/config.json` (ou via `/gsd-settings`). O padrão é `true`. + +### Coordenação de waves de execução + +```text + /gsd-execute-phase N + │ + ├── Analyze plan dependencies + │ + ├── Wave 1 (independent plans): + │ ├── Executor A (fresh 200K context) -> commit + │ └── Executor B (fresh 200K context) -> commit + │ + ├── Wave 2 (depends on Wave 1): + │ └── Executor C (fresh 200K context) -> commit + │ + └── Verifier + ├── Check codebase against phase goals + ├── Test quality audit (disabled tests, circular patterns, assertion strength) + │ + ├── PASS -> VERIFICATION.md (success) + └── FAIL -> Issues logged for /gsd-verify-work +``` --- -## Contrato de UI +## Contrato de design de UI -### Comandos +Frontends gerados por IA são visualmente inconsistentes não porque o Claude Code seja ruim em UI, mas porque não existia um contrato de design antes da execução. `/gsd-ui-phase` bloqueia o contrato de design antes do planejamento; `/gsd-ui-review` audita o resultado após a execução. -| Comando | Descrição | -|---------|-----------| -| `/gsd-ui-phase [N]` | Gera contrato de design `UI-SPEC.md` para a fase | -| `/gsd-ui-review [N]` | Auditoria visual retroativa em 6 pilares | +Para o fluxo completo, configuração, inicialização do shadcn e o gate de segurança do registry, consulte [Projetar uma fase de UI](how-to/design-a-ui-phase.md). -### Quando usar +**Referência rápida:** -- Rode `/gsd-ui-phase` depois de `/gsd-discuss-phase` e antes de `/gsd-plan-phase`. -- Rode `/gsd-ui-review` após execução/validação para avaliar qualidade visual e consistência. +| Comando | Descrição | +| -------------------- | ------------------------------------------------------------- | +| `/gsd-ui-phase [N]` | Gerar contrato de design UI-SPEC.md para uma fase de frontend | +| `/gsd-ui-review [N]` | Auditoria visual retroativa em 6 pilares da UI implementada | -### Configurações relacionadas +| Configuração | Padrão | Descrição | +| ------------------------- | ------- | ----------------------------------------------------------------------------- | +| `workflow.ui_phase` | `true` | Gerar contratos de design de UI para fases de frontend | +| `workflow.ui_safety_gate` | `true` | A fase de planejamento solicita executar /gsd-ui-phase para fases de frontend | -| Setting | Padrão | O que controla | -|---------|--------|----------------| -| `workflow.ui_phase` | `true` | Gera contratos de UI para fases frontend | -| `workflow.ui_safety_gate` | `true` | Ativa gate de segurança para componentes de registry | +--- + +## Spikes e Esboços + +Use `/gsd-spike` para validar a viabilidade técnica antes do planejamento e `/gsd-sketch` para explorar a direção visual antes de projetar. Ambos armazenam artefatos em `.planning/` e se integram ao sistema de habilidades do projeto por meio de seus companions de encerramento. + +Para o fluxo completo e o diagrama de fluxo, consulte [Spike e esboço](how-to/spike-and-sketch.md). + +**Fluxo típico:** + +```bash +/gsd-spike "SSE vs WebSocket" # Validate the approach +/gsd-spike --wrap-up # Package learnings + +/gsd-sketch "real-time feed UI" # Explore the design +/gsd-sketch --wrap-up # Package decisions + +/gsd-discuss-phase N # Lock in preferences (now informed by spike + sketch) +/gsd-plan-phase N # Plan with confidence +``` --- ## Backlog e Threads -### Backlog (999.x) +### Estacionamento de backlog -Ideias fora da sequência ativa vão para backlog: +Ideias que ainda não estão prontas para planejamento ativo vão para o backlog usando a numeração 999.x, mantendo-as fora da sequência de fases ativas. ```bash -/gsd-capture --backlog "Camada GraphQL" -/gsd-capture --backlog "Responsividade mobile" +/gsd-capture --backlog "GraphQL API layer" # Creates 999.1-graphql-api-layer/ +/gsd-capture --backlog "Mobile responsive" # Creates 999.2-mobile-responsive/ ``` -Promover/revisar: +Os itens de backlog recebem diretórios de fase completos, portanto você pode usar `/gsd-discuss-phase 999.1` para explorar uma ideia mais a fundo ou `/gsd-plan-phase 999.1` quando ela estiver pronta. -```bash -/gsd-review-backlog -``` +**Revisar e promover** com `/gsd-review-backlog` — ele exibe todos os itens do backlog e permite promovê-los (mover para a sequência ativa), mantê-los (deixar no backlog) ou removê-los (excluir). ### Seeds -Seeds guardam ideias futuras com condição de gatilho: +Seeds são ideias voltadas para o futuro com condições de acionamento. Ao contrário dos itens de backlog, as seeds aparecem automaticamente quando o milestone certo chega. ```bash -/gsd-capture --seed "Adicionar colaboração real-time quando infra de WebSocket estiver pronta" +/gsd-capture --seed "Add real-time collab when WebSocket infra is in place" ``` -### Threads persistentes +`/gsd-new-milestone` verifica todas as seeds e apresenta correspondências. **Armazenamento:** `.planning/seeds/SEED-NNN-slug.md` -Threads são contexto leve entre sessões: +### Threads de contexto persistentes + +Threads são armazenamentos de conhecimento leves entre sessões para trabalhos que abrangem múltiplas sessões mas não pertencem a nenhuma fase específica. ```bash -/gsd-thread -/gsd-thread fix-deploy-key-auth -/gsd-thread "Investigar timeout TCP" +/gsd-thread # List all threads +/gsd-thread fix-deploy-key-auth # Resume existing thread +/gsd-thread "Investigate TCP timeout" # Create new thread ``` +As threads podem ser promovidas a fases (`/gsd-phase`) ou itens de backlog (`/gsd-capture --backlog`) quando amadurecerem. **Armazenamento:** `.planning/threads/{slug}.md` + --- -## Workstreams +## Workstreams e Workspaces -Workstreams permitem trabalho paralelo sem colisão de estado de planejamento. +Workstreams e workspaces fornecem isolamento, mas em níveis diferentes. -| Comando | Função | -|---------|--------| -| `/gsd-workstreams create ` | Cria workstream isolado | -| `/gsd-workstreams switch ` | Troca workstream ativo | -| `/gsd-workstreams list` | Lista workstreams | -| `/gsd-workstreams complete ` | Finaliza e arquiva workstream | +**Workstreams** compartilham a mesma base de código e histórico git, mas isolam artefatos de planejamento — mais leves, bons para trabalhar em múltiplas áreas de milestone simultaneamente. Consulte [Trabalhar em paralelo com workstreams](how-to/work-in-parallel-with-workstreams.md). -`workstreams` compartilham o mesmo código/git, mas isolam artefatos de `.planning/`. +**Workspaces** criam worktrees de repositório separados com seus próprios `.planning/` — mais pesados, para isolamento de feature branch ou multi-repositório. Consulte [Isolar trabalho com workspaces](how-to/isolate-work-with-workspaces.md). + +| Comando | Propósito | +| ---------------------------------- | ------------------------------------------------------------- | +| `/gsd-workstreams create ` | Criar um novo workstream com estado de planejamento isolado | +| `/gsd-workstreams switch ` | Alternar contexto ativo para um workstream diferente | +| `/gsd-workstreams list` | Exibir todos os workstreams e qual está ativo | +| `/gsd-workstreams complete ` | Marcar um workstream como concluído e arquivar seu estado | + +```bash +# Workspace example — feature branch isolation +/gsd-workspace --new --name feature-b --repos . +cd ~/gsd-workspaces/feature-b +/gsd-new-project + +/gsd-workspace --list +/gsd-workspace --remove feature-b +``` --- ## Segurança -O GSD aplica defesa em profundidade: +### Defesa em profundidade (v1.27) -- prevenção de path traversal em entradas de arquivo -- detecção de prompt injection em texto do usuário -- hooks de proteção para escrita em `.planning/` -- scanner CI para padrões de injeção em agentes/workflows/comandos +O GSD gera arquivos markdown que se tornam prompts de sistema de LLM. Isso significa que qualquer texto controlado pelo usuário que flua para artefatos de planejamento é um vetor potencial de injeção indireta de prompt. A v1.27 introduziu endurecimento centralizado de segurança: -Para arquivos sensíveis, use deny list no Claude Code. +**Prevenção de Path Traversal:** Todos os caminhos de arquivo fornecidos pelo usuário (`--text-file`, `--prd`) são validados para resolver dentro do diretório do projeto. A resolução de symlinks macOS `/var` → `/private/var` é tratada. + +**Detecção de Injeção de Prompt:** O módulo `security.cjs` verifica padrões de injeção conhecidos no texto fornecido pelo usuário antes de entrar nos artefatos de planejamento. + +**Hooks de runtime:** + +- `gsd-prompt-guard.js` — Verifica chamadas Write/Edit para `.planning/` em busca de padrões de injeção (sempre ativo, somente consultivo) +- `gsd-workflow-guard.js` — Avisa sobre edições de arquivos fora do contexto do workflow GSD (opt-in via `hooks.workflow_guard`) + +**Scanner de CI:** `prompt-injection-scan.test.cjs` verifica todos os arquivos de agentes, workflows e comandos em busca de vetores de injeção incorporados. --- -## Referência de comandos +### Gate de legitimidade de pacotes (v1.42.1) -### Fluxo principal +Ferramentas de codificação com IA alucinam nomes de pacotes. Atacantes pré-registram esses nomes no npm, PyPI e crates.io com scripts maliciosos de pós-instalação — uma técnica chamada *slopsquatting*. A v1.42.1 adiciona um gate de três camadas que interrompe isso antes de chegar ao seu shell. -| Comando | Quando usar | -|---------|-------------| -| `/gsd-new-project` | Início de projeto | -| `/gsd-discuss-phase [N]` | Definir preferências antes do plano | -| `/gsd-plan-phase [N]` | Criar e validar planos | -| `/gsd-execute-phase [N]` | Executar planos em ondas | -| `/gsd-verify-work [N]` | UAT manual | -| `/gsd-ship [N]` | Gerar PR da fase | -| `/gsd-progress --next` | Próximo passo automático | +**No RESEARCH.md** — cada fase que recomenda pacotes externos inclui uma tabela `## Package Legitimacy Audit`: -### Gestão e utilidades +```markdown +## Package Legitimacy Audit -| Comando | Quando usar | -|---------|-------------| -| `/gsd-progress` | Ver status atual | -| `/gsd-resume-work` | Retomar sessão | -| `/gsd-pause-work` | Pausar com handoff | -| `/gsd-pause-work --report` | Resumo da sessão | -| `/gsd-quick` | Tarefa ad-hoc com garantias GSD | -| `/gsd-debug [desc]` | Debug sistemático | -| `/gsd-forensics` | Diagnóstico de workflow quebrado | -| `/gsd-settings` | Ajustar workflow/modelos | -| `/gsd-config --profile ` | Troca rápida de perfil | +| Package | Registry | Age | Downloads | Source Repo | slopcheck | Disposition | +|---------|----------|-----|-----------|-------------|-----------|-------------| +| express | npm | 13 yrs | 100M+/wk | github.com/expressjs/express | [OK] | Approved | +| some-new-util | npm | 3 days | 47 | none | [SLOP] | REMOVED | +| api-bridge | npm | 6 mo | 1.2k/wk | github.com/user/api-bridge | [SUS] | Flagged | +``` -Para lista completa e flags avançadas, consulte [Command Reference](../COMMANDS.md). +Pacotes com `[SLOP]` são removidos do RESEARCH.md inteiramente e nunca chegam ao planejador. + +**No PLAN.md** — pacotes com `[SUS]` ou `[ASSUMED]` acionam uma tarefa `checkpoint:human-verify` antes da instalação. + +**Durante a execução** — se uma instalação falhar, o executor apresenta um checkpoint e para em vez de tentar silenciosamente uma alternativa. + +**Veredictos do slopcheck:** + +| Veredicto | Significado | Ação do GSD | +|---------|---------|------------| +| `[OK]` | Passa em todas as verificações de legitimidade | Prossegue — nenhum checkpoint adicionado | +| `[SUS]` | Sinais suspeitos | Sinalizado; o planejador adiciona `checkpoint:human-verify` | +| `[SLOP]` | Alucinação de alta confiança | Removido do RESEARCH.md; nunca chega ao planejador | + +Para instalar o slopcheck manualmente: + +```bash +pip install slopcheck +# verify: slopcheck install express --json +``` --- -## Configuração +## Workflow de revisão de código -Arquivo de configuração: `.planning/config.json` +Após executar uma fase, execute uma revisão de código estruturada antes do UAT. Consulte [Configurar revisão cross-AI](how-to/set-up-cross-ai-review.md) para o fluxo completo. -### Núcleo +```bash +/gsd-code-review 3 # Review all changed files in phase 3 +/gsd-code-review 3 --depth=deep # Deep cross-file review +/gsd-code-review 3 --fix # Fix Critical + Warning findings atomically +/gsd-code-review 3 --fix --auto # Fix and re-review until clean (max 3 iterations) +/gsd-audit-fix # Audit + classify + fix (medium+ severity, max 5) +``` -| Setting | Opções | Padrão | -|---------|--------|--------| -| `mode` | `interactive`, `yolo` | `interactive` | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | -| `model_profile` | `quality`, `balanced`, `budget`, `inherit` | `balanced` | +A etapa de revisão se encaixa após a execução e antes do UAT: -### Workflow +```text +/gsd-execute-phase N -> /gsd-code-review N -> /gsd-code-review N --fix -> /gsd-verify-work N +``` -| Setting | Padrão | -|---------|--------| -| `workflow.research` | `true` | -| `workflow.plan_check` | `true` | -| `workflow.verifier` | `true` | -| `workflow.nyquist_validation` | `true` | -| `workflow.ui_phase` | `true` | -| `workflow.ui_safety_gate` | `true` | +--- -### Perfis de modelo +## Referência de comandos e configuração -| Perfil | Uso recomendado | -|--------|------------------| -| `quality` | trabalho crítico, maior qualidade | -| `balanced` | padrão recomendado | -| `budget` | reduzir custo de tokens | -| `inherit` | seguir modelo da sessão/runtime | - -Detalhes completos: [Configuration Reference](../CONFIGURATION.md). +- **Referência de comandos:** consulte [`docs/COMMANDS.md`](COMMANDS.md) para flags, subcomandos e exemplos de cada comando estável. +- **Referência de configuração:** consulte [`docs/CONFIGURATION.md`](CONFIGURATION.md) para o esquema completo do `config.json`, tabela de perfis de modelo, estratégias de branching git e configurações de segurança. +- **Modo Discuss:** consulte [`docs/workflow-discuss-mode.md`](workflow-discuss-mode.md) para o modo entrevista vs suposições. --- ## Exemplos de uso -### Projeto novo +### Novo projeto (ciclo completo) ```bash claude --dangerously-skip-permissions -/gsd-new-project -/gsd-discuss-phase 1 -/gsd-ui-phase 1 -/gsd-plan-phase 1 -/gsd-execute-phase 1 -/gsd-verify-work 1 -/gsd-ship 1 +/gsd-new-project # Answer questions, configure, approve roadmap +/clear +/gsd-discuss-phase 1 # Lock in your preferences +/gsd-ui-phase 1 # Design contract (frontend phases) +/gsd-plan-phase 1 # Research + plan + verify +/gsd-execute-phase 1 # Parallel execution +/gsd-verify-work 1 # Manual UAT +/gsd-ship 1 # Create PR from verified work +/gsd-ui-review 1 # Visual audit (frontend phases) +/clear +/gsd-progress --next # Auto-detect and run next step +... +/gsd-audit-milestone # Check everything shipped +/gsd-complete-milestone # Archive, tag, done +/gsd-pause-work --report # Generate session summary ``` -### Código já existente +### Novo projeto a partir de um documento existente ```bash -/gsd-map-codebase -/gsd-new-project +/gsd-new-project --auto @prd.md # Auto-runs research/requirements/roadmap from your doc +/clear +/gsd-discuss-phase 1 # Normal flow from here ``` -### Correção rápida +### Base de código existente + +```bash +/gsd-map-codebase # Analyse what exists (parallel agents) +/gsd-new-project # Questions focus on what you're ADDING +# (normal phase workflow from here) +``` + +**Detecção de drift pós-execução (#2003).** Após cada `/gsd-execute-phase`, o GSD verifica se a fase introduziu mudanças estruturais suficientes para tornar `.planning/codebase/STRUCTURE.md` desatualizado. Altere o comportamento com: + +```bash +/gsd-settings workflow.drift_action auto-remap # remap automatically +/gsd-settings workflow.drift_threshold 5 # tune sensitivity +``` + +### Proteção contra drift de plano + +**Ativada por padrão.** O protetor de drift de plano (`plan_review.source_grounding: true`) é executado durante a revisão do plano e verifica se cada símbolo citado nos seus planos — decorators, classes, funções, flags CLI — realmente existe na sua árvore de código-fonte no momento da revisão. Isso detecta nomes alucinados antes que qualquer agente de execução seja executado. + +**O que detecta:** + +- Funções referenciadas em uma etapa de PLAN.md que não existem no código-fonte +- Nomes de classes ou decorators que foram renomeados ou removidos desde que o plano foi escrito +- Flags CLI documentadas em um plano que não estão definidas no analisador de argumentos +- Caminhos de módulo citados em etapas de implementação que não resolvem para nenhum arquivo + +**Comportamento de needs-acknowledgement.** Quando o protetor encontra um símbolo ausente, ele emite um aviso de needs-acknowledgement na saída da revisão do plano em vez de bloquear permanentemente. Você pode reconhecer e prosseguir (o símbolo pode ser intencionalmente novo) ou solicitar uma revisão do plano. O protetor não rejeita planos automaticamente — ele apresenta sinais para decisão humana. + +**Funciona sem intel.** Por padrão, o protetor usa `grep`/`ripgrep` para pesquisar arquivos de código-fonte — não requer pré-indexação. Se você executou `/gsd:map-codebase` com `intel.enabled: true`, defina `plan_review.source_grounding_authority: intel` para usar o índice pré-construído `api-map.json` mais rápido. + +```bash +# Enable/disable (default: on) +/gsd-settings plan_review.source_grounding true +/gsd-settings plan_review.source_grounding false + +# Switch resolver authority +/gsd-settings plan_review.source_grounding_authority grep # live grep (default) +/gsd-settings plan_review.source_grounding_authority intel # pre-indexed api-map.json +``` + +Alterne na configuração do projeto (`/gsd:new-project` pergunta durante as preferências de workflow) ou a qualquer momento via `/gsd:settings` (seção Planning → Drift Guard). + +### Correção rápida de bug ```bash /gsd-quick -> "Corrigir botão de login no mobile Safari" +> "Fix the login button not responding on mobile Safari" ``` -### Preparação para release +### Retomando após uma pausa ```bash -/gsd-audit-milestone -/gsd-complete-milestone +/gsd-progress # See where you left off and what's next +# or +/gsd-resume-work # Full context restoration from last session +``` + +### Preparando para um release + +```bash +/gsd-audit-milestone # Check requirements coverage, detect stubs +/gsd-complete-milestone # Archive, tag, done +``` + +### Predefinições de velocidade vs qualidade + +| Cenário | Modo | Granularidade | Perfil | Pesquisa | Verificação de plano | Verificador | +| --------------------- | ------------- | ------------- | ---------- | -------- | -------------------- | ----------- | +| Prototipagem | `yolo` | `coarse` | `budget` | off | off | off | +| Desenvolvimento normal | `interactive` | `standard` | `balanced` | on | on | on | +| Produção | `interactive` | `fine` | `quality` | on | on | on | + +**Pulando a fase discuss no modo autônomo:** Ao executar no modo `yolo`, defina `workflow.skip_discuss: true` via `/gsd-settings`. + +### Mudanças de escopo no meio do milestone + +```bash +/gsd-phase # Append a new phase to the roadmap (default mode) +/gsd-phase --insert 3 # Insert urgent work between phases 3 and 4 +/gsd-phase --remove 7 # Descope phase 7 and renumber +/gsd-phase --edit 4 # Edit any field of phase 4 in place ``` --- -## Troubleshooting +## Solução de problemas -### "Project already initialized" +Para um guia abrangente de solução de problemas, consulte [Recuperar e solucionar problemas](how-to/recover-and-troubleshoot.md). Os problemas mais comuns estão resumidos abaixo. -`.planning/PROJECT.md` já existe. Apague `.planning/` se quiser reiniciar do zero. +### CLI programática (`gsd-tools query` vs `gsd-tools.cjs`) -### Sessão longa degradando contexto +Para automação, prefira **`gsd-tools query`** com um subcomando registrado (consulte [CLI-TOOLS.md — SDK e acesso programático](CLI-TOOLS.md#sdk-and-programmatic-access) e QUERY-HANDLERS.md). O CLI legado `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs` continua sendo suportado. -Use `/clear` entre etapas grandes e retome com `/gsd-resume-work` ou `/gsd-progress`. - -### Plano desalinhado - -Rode `/gsd-discuss-phase [N]` antes do plano e valide suposições com `/gsd-discuss-phase --assumptions [N]`. - -### Execução falhou ou saiu com stubs - -Replaneje com escopo menor (tarefas menores por plano). - -### Custo alto - -Use perfil budget: +### STATE.md fora de sincronia ```bash -/gsd-config --profile budget +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate # Detect drift +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify # Preview changes +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync # Reconstruct STATE.md ``` -### Runtime não-Claude (Codex/OpenCode/Gemini/Kilo) +### Um comando parece congelado após "Spawning..." -Use `resolve_model_ids: "omit"` para deixar o runtime resolver modelos padrão. +Os subagentes do GSD rodam em uma janela de contexto separada — seu trabalho fica invisível para a sessão pai enquanto está em andamento. Não interrompa a sessão. Aguarde o resultado; agentes de pesquisa e planejamento rotineiramente levam de 1 a 5 minutos. + +### Degradação de contexto durante sessões longas + +Limpe sua janela de contexto entre os principais comandos: `/clear` no Claude Code. O GSD foi projetado em torno de contextos frescos — cada subagente recebe uma janela limpa de 200K. Use `/gsd-resume-work` ou `/gsd-progress` para restaurar o estado após limpar. + +### Planos parecem errados ou desalinhados + +Execute `/gsd-discuss-phase [N]` antes do planejamento. A maioria dos problemas de qualidade de plano ocorre porque o Claude faz suposições que o `CONTEXT.md` teria prevenido. + +### A execução falha ou produz stubs + +Verifique se o plano não era ambicioso demais. Os planos devem ter no máximo 2 a 3 tarefas. Replaneje com um escopo menor. + +### Perdeu o controle de onde está + +Execute `/gsd-progress`. Ele lê todos os arquivos de estado e informa exatamente onde você está e o que fazer a seguir. + +### Custos de modelo muito altos + +Mude para o perfil budget: `/gsd-config --profile budget`. Desative os agentes de pesquisa e verificação de plano via `/gsd-settings` se o domínio for familiar. + +### Ajuste de custo de modelo por fase (`models`) — adicionado na v1.40 + +Adicione um bloco `models` ao `.planning/config.json`: + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + } +} +``` + +Precisa de uma exceção por agente? Adicione `model_overrides` junto — ele prevalece sobre `models`: + +```json +{ + "models": { "research": "sonnet" }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +Para a tabela de mapeamento completa e as regras de precedência de resolução, consulte [Modelos por tipo de fase](CONFIGURATION.md#per-phase-type-models-models--added-in-v140). + +### Barato por padrão com `dynamic_routing` — adicionado na v1.40 + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +Para o mapeamento completo de agente → tier, consulte [Roteamento dinâmico](CONFIGURATION.md#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140). + +### Reduza servidores MCP para diminuir o custo por turno + +Antes de ajustar `model_profile` ou `models.`, audite quais **servidores MCP** seu harness tem habilitados. Cada servidor MCP habilitado injeta seu esquema de ferramentas em cada turno — servidores pesados podem custar mais de 20k tokens cada. + +Esta é uma **configuração do harness**, não do GSD. O toggle fica em `.claude/settings.json`: + +```json +{ + "enabledMcpjsonServers": ["context7"], + "disabledMcpjsonServers": ["playwright", "mac-tools"] +} +``` + +Auditoria rápida antes de uma fase longa: + +- Alguma ferramenta de browser/playwright está habilitada quando esta fase não tem trabalho de UI? +- Alguma ferramenta específica de plataforma está habilitada quando não é necessária? +- Algum MCP específico de projeto de outro projeto ainda está habilitado aqui? + +Cada servidor desabilitado remove seu esquema de cada turno subsequente. Reduzir MCPs **compõe** com o ajuste de `model_profile` — ambas as alavancas são aditivas, e as economias de MCP aparecem imediatamente em cada subagente que o orquestrador gera. + +Para a auditoria completa, referência do harness e a nota de composição com `model_profile`, consulte [Custo de esquema de ferramentas MCP](../../get-shit-done/references/context-budget.md#mcp-tool-schema-cost-harness-concern) na referência `context-budget.md` incluída. + +### Usando runtimes não-Claude (Codex, OpenCode, Gemini CLI, Kilo) + +> **Versão mínima suportada do Codex CLI: `0.130.0`** (issue [#3562](https://github.com/open-gsd/gsd-core/issues/3562)). + +Se você instalou o GSD para um runtime não-Claude, o instalador já configurou a resolução de modelo. Nenhuma configuração manual é necessária — `resolve_model_ids: "omit"` é definido automaticamente, o que informa ao GSD para pular a resolução de ID de modelo Anthropic e deixar o runtime escolher seu próprio modelo padrão. + +Para atribuir diferentes modelos em um runtime não-Claude: + +```json +{ + "resolve_model_ids": "omit", + "model_overrides": { + "gsd-planner": "o3", + "gsd-executor": "o4-mini", + "gsd-debugger": "o3" + } +} +``` + +#### Mudando de Claude para Codex com uma alteração de configuração (#2517) + +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` + +Consulte [Perfis cientes de runtime](CONFIGURATION.md#runtime-aware-profiles-2517). + +### Instalação manual / configuração sem Node.js + +Se você não puder executar o instalador do GSD, não poderá usar os arquivos de origem em `agents/` diretamente — eles estão no formato nativo de frontmatter do Claude Code. Para o OpenCode, são necessárias duas transformações: + +| Campo | Formato fonte GSD | Formato válido para OpenCode | Ação | +|---|---|---|---| +| `tools:` | `Read, Bash, Grep` (string com vírgula) | Não é um campo frontmatter | Remover a linha `tools:` inteiramente | +| `color:` | Nome de cor CSS simples | Nome hex ou semântico OpenCode | Converter para hex ou remover | + +**Alternativa:** execute o instalador em qualquer máquina com Node.js: + +```bash +npx @opengsd/gsd-core@latest --opencode --global +``` + +### Instalando para o Cline + +```bash +npx @opengsd/gsd-core --cline --global # applies to all projects +npx @opengsd/gsd-core --cline --local # this project only +``` + +### Instalando para o CodeBuddy + +```bash +npx @opengsd/gsd-core --codebuddy --global +``` + +### Instalando para o Qwen Code + +```bash +npx @opengsd/gsd-core --qwen --global +``` + +### Instalando para edições de pré-lançamento + +Defina a variável de ambiente `*_CONFIG_DIR` do runtime para o diretório de pré-lançamento antes de executar o instalador: + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global +``` + +**Referência de variáveis de ambiente para runtimes suportados:** + +| Runtime | Padrão estável | Variável de ambiente para substituição | +|---|---|---| +| Claude Code | `~/.claude` | `CLAUDE_CONFIG_DIR` | +| Gemini CLI | `~/.gemini` | `GEMINI_CONFIG_DIR` | +| OpenCode | `XDG_CONFIG_HOME/opencode` | `OPENCODE_CONFIG_DIR` | +| Codex | (per Codex CLI) | `--config-dir` flag | +| Copilot | `~/.copilot` | `COPILOT_CONFIG_DIR` | +| Cursor | `~/.cursor` | `CURSOR_CONFIG_DIR` | +| Windsurf | `~/.codeium/windsurf` | `WINDSURF_CONFIG_DIR` | +| Antigravity | auto-detected | `ANTIGRAVITY_CONFIG_DIR` | +| Augment | `~/.augment` | `AUGMENT_CONFIG_DIR` | +| Trae | `~/.trae` | `TRAE_CONFIG_DIR` | +| Qwen Code | `~/.qwen` | `QWEN_CONFIG_DIR` | +| Kilo | `~/.config/kilo` | `KILO_CONFIG_DIR` | +| CodeBuddy | `~/.codebuddy` | `CODEBUDDY_CONFIG_DIR` | +| Cline | `~/.cline` | `CLINE_CONFIG_DIR` | + +### Usando o Claude Code com provedores não-Anthropic + +Mude para o perfil `inherit`: `/gsd-config --profile inherit`. Isso faz com que todos os agentes usem o modelo da sua sessão atual. + +### Trabalhando em um projeto sensível/privado + +Defina `commit_docs: false` durante `/gsd-new-project` ou via `/gsd-settings`. Adicione `.planning/` ao seu `.gitignore`. + +### Uma atualização do GSD sobrescreveu minhas alterações locais + +Desde a v1.17, o instalador faz backup de arquivos modificados localmente em `gsd-local-patches/`. Execute `/gsd-update --reapply` para mesclar suas alterações de volta. + +### Não consigo atualizar via npm + +Consulte [docs/manual-update.md](../manual-update.md) para um procedimento de atualização manual passo a passo. + +### Diagnósticos de workflow (`/gsd-forensics`) + +Quando um workflow falha de forma não óbvia, execute `/gsd-forensics` para gerar um relatório de diagnóstico cobrindo anomalias de histórico git, integridade de artefatos e inconsistências de estado. A saída vai para `.planning/forensics/`. + +### Subagente executor recebe "Permission denied" em comandos Bash + +Adicione os padrões necessários ao `~/.claude/settings.json`. Padrões principais necessários para todas as stacks: + +```json +"Bash(git add:*)", +"Bash(git commit:*)", +"Bash(git merge:*)", +"Bash(git worktree:*)", +"Bash(git rebase:*)", +"Bash(git reset:*)", +"Bash(git checkout:*)", +"Bash(git switch:*)", +"Bash(git restore:*)", +"Bash(git stash:*)", +"Bash(git rm:*)", +"Bash(git mv:*)", +"Bash(git fetch:*)", +"Bash(git cherry-pick:*)", +"Bash(git apply:*)", +"Bash(gh:*)" +``` + +**Permissões por projeto:** adicione o mesmo bloco `permissions.allow` ao `.claude/settings.local.json` na raiz do seu projeto em vez de `~/.claude/settings.json`. + +### Execução paralela causa erros de bloqueio de build + +O GSD trata isso automaticamente desde a v1.26. Se você estiver em uma versão mais antiga, adicione ao `CLAUDE.md` do seu projeto: + +```markdown +## Git Commit Rules for Agents +All subagent/executor commits MUST use `--no-verify`. +``` + +Para desativar a execução paralela completamente: `/gsd-settings` → defina `parallelization.enabled` como `false`. --- -## Recuperação rápida +## Referência rápida de recuperação -| Problema | Solução | -|---------|---------| -| Perdeu contexto | `/gsd-resume-work` ou `/gsd-progress` | -| Fase deu errado | `git revert` + replanejar | -| Precisa alterar escopo | `/gsd-phase`, `/gsd-phase --insert`, `/gsd-phase --remove` | -| Bug em workflow | `/gsd-forensics` | -| Correção pontual | `/gsd-quick` | -| Custo alto | `/gsd-config --profile budget` | -| Não sabe próximo passo | `/gsd-progress --next` | +| Problema | Solução | +| ------------------------------------------- | ----------------------------------------------------------------------------- | +| Contexto perdido / nova sessão | `/gsd-resume-work` ou `/gsd-progress` | +| Fase deu errado | `git revert` dos commits da fase, depois replanejar | +| Precisa mudar o escopo | `/gsd-phase` (padrão), `/gsd-phase --insert` ou `/gsd-phase --remove` | +| Algo quebrou | `/gsd-debug "description"` (adicione `--diagnose` para análise sem correções) | +| STATE.md fora de sincronia | `state validate` e depois `state sync` | +| Estado do workflow parece corrompido | `/gsd-forensics` | +| Correção rápida e pontual | `/gsd-quick` | +| Plano não corresponde à sua visão | `/gsd-discuss-phase [N]` e depois replanejar | +| Custos altos | `/gsd-config --profile budget` e `/gsd-settings` para desativar agentes | +| Atualização quebrou alterações locais | `/gsd-update --reapply` | +| Quer resumo de sessão para stakeholders | `/gsd-pause-work --report` | +| Não sabe qual é o próximo passo | `/gsd-progress --next` | +| Erros de build em execução paralela | Atualize o GSD ou defina `parallelization.enabled: false` | --- @@ -306,29 +842,46 @@ Use `resolve_model_ids: "omit"` para deixar o runtime resolver modelos padrão. ```text .planning/ - PROJECT.md - REQUIREMENTS.md - ROADMAP.md - STATE.md - config.json - MILESTONES.md - HANDOFF.json - research/ - reports/ + PROJECT.md # Project vision and context (always loaded) + REQUIREMENTS.md # Scoped v1/v2 requirements with IDs + ROADMAP.md # Phase breakdown with status tracking + STATE.md # Decisions, blockers, session memory + config.json # Workflow configuration + MILESTONES.md # Completed milestone archive + HANDOFF.json # Structured session handoff (from /gsd-pause-work) + research/ # Domain research from /gsd-new-project + reports/ # Session reports (from /gsd-pause-work --report) todos/ - debug/ - codebase/ + pending/ # Captured ideas awaiting work + done/ # Completed todos + debug/ # Active debug sessions + resolved/ # Archived debug sessions + spikes/ # Feasibility experiments (from /gsd-spike) + NNN-name/ # Experiment code + README with verdict + MANIFEST.md # Index of all spikes + sketches/ # HTML mockups (from /gsd-sketch) + NNN-name/ # index.html (2-3 variants) + README + themes/ + default.css # Shared CSS variables for all sketches + MANIFEST.md # Index of all sketches with winners + codebase/ # Brownfield codebase mapping (from /gsd-map-codebase) phases/ XX-phase-name/ - XX-YY-PLAN.md - XX-YY-SUMMARY.md - CONTEXT.md - RESEARCH.md - VERIFICATION.md - XX-UI-SPEC.md - XX-UI-REVIEW.md - ui-reviews/ + XX-YY-PLAN.md # Atomic execution plans + XX-YY-SUMMARY.md # Execution outcomes and decisions + CONTEXT.md # Your implementation preferences + RESEARCH.md # Ecosystem research findings + VERIFICATION.md # Post-execution verification results + XX-UI-SPEC.md # UI design contract (from /gsd-ui-phase) + XX-UI-REVIEW.md # Visual audit scores (from /gsd-ui-review) + ui-reviews/ # Screenshots from /gsd-ui-review (gitignored) ``` -> [!NOTE] -> Esta é a versão pt-BR do guia para uso diário. Para detalhes técnicos exatos e cobertura completa de parâmetros avançados, consulte também o [guia original em inglês](../USER-GUIDE.md). +--- + +## Relacionados + +- [Índice da documentação](README.md) +- [Comandos](COMMANDS.md) +- [Configuração](CONFIGURATION.md) +- [O ciclo de fase](explanation/the-phase-loop.md) diff --git a/docs/pt-BR/context-monitor.md b/docs/pt-BR/context-monitor.md index 63f827dca..1789b4afa 100644 --- a/docs/pt-BR/context-monitor.md +++ b/docs/pt-BR/context-monitor.md @@ -1,40 +1,80 @@ -# Monitor de Contexto +# Monitor de Janela de Contexto -O monitor de contexto ajuda a evitar degradação de qualidade em sessões longas, alertando sobre uso excessivo da janela de contexto. +Um hook pós-ferramenta (`PostToolUse` para o Claude Code, `AfterTool` para o Gemini CLI) que avisa o agente quando o uso da janela de contexto está elevado. -Para detalhes completos de implementação, veja [context-monitor.md em inglês](../context-monitor.md). +## Problema ---- +A barra de status exibe o uso de contexto para o **usuário**, mas o **agente** não tem consciência dos limites de contexto. Quando o contexto está se esgotando, o agente continua trabalhando até atingir o limite — potencialmente no meio de uma tarefa, sem nenhum estado salvo. -## Objetivos +## Como Funciona -- identificar quando a sessão principal está saturando -- recomendar ações de recuperação (`/clear`, `/gsd-resume-work`, `/gsd-progress`) -- manter previsibilidade durante ciclos longos de desenvolvimento +1. O hook da barra de status grava métricas de contexto em `/tmp/claude-ctx-{session_id}.json` +2. Após cada uso de ferramenta, o monitor de contexto lê essas métricas +3. Quando o contexto restante cai abaixo dos limiares, ele injeta um aviso como `additionalContext` +4. O agente recebe o aviso em sua conversa e pode agir de acordo -## Como funciona +## Limiares -1. coleta sinais de uso da janela de contexto -2. compara com limiares de alerta -3. emite avisos progressivos -4. sugere retomada por artefatos persistentes +| Nível | Restante | Comportamento do Agente | +|-------|----------|-------------------------| +| Normal | > 35% | Sem aviso | +| ALERTA | <= 35% | Encerrar a tarefa atual, evitar iniciar trabalhos complexos novos | +| CRÍTICO | <= 25% | Parar imediatamente, salvar estado (`/gsd-pause-work`) | -## Estratégia recomendada +## Debounce -- Limpe contexto entre fases grandes -- Execute tarefas pesadas em subagentes -- Mantenha o estado em `.planning/` como fonte de verdade +Para evitar sobrecarregar o agente com avisos repetidos: +- O primeiro aviso sempre é disparado imediatamente +- Avisos subsequentes exigem 5 usos de ferramenta entre eles +- A escalada de severidade (ALERTA -> CRÍTICO) ignora o debounce -## Recuperação quando há degradação +## Arquitetura -```bash -/clear -/gsd-resume-work -# ou -/gsd-progress +``` +Hook da Barra de Status (gsd-statusline.js) + | escreve + v +/tmp/claude-ctx-{session_id}.json + ^ lê + | +Monitor de Contexto (gsd-context-monitor.js, PostToolUse/AfterTool) + | injeta + v +additionalContext -> Agente recebe o aviso ``` +O arquivo de ponte é um objeto JSON simples: + +```json +{ + "session_id": "abc123", + "remaining_percentage": 28.5, + "used_pct": 71, + "timestamp": 1708200000 +} +``` + +## Integração com o GSD + +O comando `/gsd-pause-work` do GSD salva o estado de execução. A mensagem de ALERTA sugere utilizá-lo. A mensagem CRÍTICA instrui o salvamento imediato do estado. + +## Configuração + +Ambos os hooks são registrados automaticamente durante a instalação do `npx @opengsd/gsd-core` — nenhuma etapa manual é necessária em circunstâncias normais. Para detalhes de configuração de hooks, substituições de limiares e exemplos de registro manual, consulte [Configuração](CONFIGURATION.md). + +Como referência rápida: o hook da barra de status se registra como `statusLine` em `settings.json`; o monitor de contexto (`gsd-context-monitor.js`) se registra como um hook `PostToolUse` (ou `AfterTool` para o Gemini CLI). Ambas as entradas utilizam o caminho absoluto do executável Node que executou o instalador. No Windows PowerShell, prefixe caminhos de executáveis entre aspas com `&`. + +## Segurança + +- O hook envolve tudo em try/catch e encerra silenciosamente em caso de erro +- Ele nunca bloqueia a execução de ferramentas — um monitor com falha não deve interromper o fluxo de trabalho do agente +- Métricas obsoletas (com mais de 60s) são ignoradas +- Arquivos de ponte ausentes são tratados de forma elegante (subagentes, sessões novas) + --- -> [!TIP] -> O monitor não substitui boas práticas de escopo. Planos pequenos e verificáveis continuam sendo o principal fator de qualidade. +## Relacionados + +- [Arquitetura](ARCHITECTURE.md) +- [Configuração](CONFIGURATION.md) +- [Índice da documentação](README.md) diff --git a/docs/pt-BR/explanation/context-engineering.md b/docs/pt-BR/explanation/context-engineering.md new file mode 100644 index 000000000..ca5cb74e8 --- /dev/null +++ b/docs/pt-BR/explanation/context-engineering.md @@ -0,0 +1,90 @@ +# Engenharia de contexto + +> Por que o GSD Core existe e qual problema ele foi projetado para resolver. + +--- + +## O problema: degradação de contexto + +Toda sessão de programação com IA começa do zero. O modelo lê sua pergunta, raciocina sobre ela e responde. Mas raramente uma sessão é composta de uma única troca. Você faz perguntas de acompanhamento, cola mensagens de erro, itera sobre o código, redireciona o modelo quando ele se desvia. Cada turno adiciona tokens à janela de contexto — o buffer finito de texto que o modelo consegue "enxergar" de uma só vez. + +À medida que essa janela vai se preenchendo, algo sutil acontece. O modelo não falha de forma escancarada. Ele continua respondendo. Mas a qualidade das suas respostas vai se degradando silenciosamente. As instruções iniciais são empurradas para as bordas do que ele consegue atentar. A nuance das primeiras trocas — as restrições que você estabeleceu, a arquitetura que você acordou, os casos extremos que você sinalizou — compete por atenção com tudo o que veio depois. Pesquisadores chamam isso de **degradação de contexto** (*context rot*). + +A degradação de contexto se manifesta de várias formas: + +- O modelo começa a contradizer decisões anteriores que havia reconhecido. +- O estilo do código se distancia das convenções estabelecidas no início da sessão. +- Os planos passam a ignorar requisitos que foram claramente declarados, mas que agora estão soterrados no histórico. +- O modelo alucina nomes de arquivos ou assinaturas de funções que tinha corretos vinte mensagens atrás. + +Nada disso é um bug do modelo. É uma propriedade fundamental de como a atenção de transformers funciona sobre sequências longas. O modelo não está esquecendo — ele nunca "lembrou" no sentido humano. Ele está ponderando a relevância ao longo de uma janela finita e, à medida que essa janela se preenche com ruído acumulado, a relação sinal-ruído se degrada. + +A resposta ingênua é usar `/clear` e recomeçar. Mas isso perde a continuidade. Você precisa reexplicar o contexto, recolar os arquivos relevantes, reafirmar as restrições. A sessão essencialmente volta à estaca zero. + +--- + +## A resposta do GSD Core: subagentes com contexto limpo + +O insight central do GSD Core é que *a maior parte* do trabalho em uma sessão de programação não precisa acontecer no contexto principal. Pesquisa, planejamento, escrita de código e verificação são tarefas discretas e delimitadas. Cada uma pode ser entregue a um subagente especializado que começa com uma janela de contexto limpa e cuidadosamente delimitada — e reporta seu resultado de volta a um orquestrador enxuto que permanece leve. + +Isso não é um contorno para a degradação de contexto. É uma solução estrutural. + +O orquestrador — sua sessão principal — nunca toca os arquivos-fonte. Ele spawna agentes, coleta seus resultados, atualiza o estado compartilhado e encaminha para o próximo passo. Como ele faz muito pouco por conta própria, sua janela de contexto cresce de forma lenta e previsível. O trabalho pesado acontece em agentes que cada um começa do zero, recebe exatamente o contexto necessário para sua tarefa e termina quando concluído. + +Considere o que isso significa na prática. Quando você executa `/gsd-plan-phase`, o orquestrador: + +1. Carrega um payload de contexto JSON compacto (resumo do projeto, objetivo da fase, configuração relevante). +2. Spawna um agente pesquisador com uma janela limpa de 200k tokens. +3. Spawna um agente planejador com a saída da pesquisa e os requisitos da fase. +4. Spawna um agente verificador de plano para validar o plano antes da execução. + +Cada agente opera com capacidade total, sem o peso do histórico acumulado da sua sessão. Quando o planejador escreve seus arquivos `PLAN.md` em `.planning/phases/`, essa saída se torna um artefato durável — não uma memória frágil em uma janela de contexto compartilhada. + +--- + +## Desenvolvimento orientado a especificações e meta-prompting + +A engenharia de contexto por si só não é suficiente. Se um agente começa do zero mas recebe instruções vagas, ele vai produzir saídas vagas. O GSD Core combina subagentes com contexto limpo com duas disciplinas complementares: + +**Desenvolvimento orientado a especificações** significa que toda fase produz artefatos estruturados antes de a execução começar. Um `CONTEXT.md` captura as decisões de implementação da etapa Discuss. Um `RESEARCH.md` registra o que o pesquisador encontrou. Um `PLAN.md` divide o trabalho em tarefas discretas, ordenadas por dependência, com critérios de aceite explícitos. Quando um agente executor toca um arquivo, ele tem uma especificação precisa para seguir — não uma reinterpretação de uma conversa longa. + +**Meta-prompting** significa que as próprias definições de agentes são prompts cuidadosamente engenheirados, não instruções ad-hoc. Os arquivos em `get-shit-done/workflows/` e `agents/` codificam conhecimento conquistado a duras penas sobre como delimitar tarefas, o que verificar e quando escalar para um checkpoint humano. O usuário não precisa reexplicar esse conhecimento a cada sessão; ele está integrado aos próprios prompts do sistema. + +A combinação é deliberada. O contexto limpo garante que cada agente raciocine com clareza. Os artefatos orientados a especificações garantem que cada agente raciocine sobre a *coisa certa*. O meta-prompting garante que cada agente saiba *como* raciocinar bem sobre ela. + +--- + +## O papel do `.planning/` + +A engenharia de contexto exige que o conhecimento sobreviva a reinicializações de contexto. O GSD Core usa o sistema de arquivos para isso. Toda saída significativa é escrita em `.planning/` como Markdown ou JSON legível por humanos. Isso significa que: + +- Reiniciar sua sessão (ou uma falha do modelo) não faz você perder trabalho. +- Qualquer agente subsequente pode ler artefatos anteriores diretamente, sem depender de um histórico de conversa compartilhado. +- Você pode inspecionar, editar ou commitar artefatos de planejamento no git — são texto simples, não estado opaco em um banco de dados. + +`STATE.md` é a espinha dorsal desse sistema. Ele registra a posição atual do projeto (qual milestone, qual fase, quais planos estão completos), decisões ativas e bloqueadores, e métricas de progresso. Quando qualquer workflow começa, ele lê o `STATE.md` para se orientar. Quando qualquer workflow conclui uma etapa significativa, ele escreve de volta no `STATE.md`. Os agentes não dependem de memória; dependem do arquivo. + +--- + +## Concessões e limitações + +É importante ser honesto sobre as concessões envolvidas. + +**Sobrecarga.** O ciclo de fases introduz atrito real. Executar `/gsd-discuss-phase`, `/gsd-plan-phase` e `/gsd-execute-phase` como etapas separadas leva mais tempo que digitar "escreva esse recurso" em uma sessão simples. Para uma mudança pequena e bem compreendida, essa sobrecarga não se justifica. + +**Latência.** Spawnar múltiplos subagentes com contexto limpo é mais lento do que uma única edição no contexto. Pesquisa, planejamento e execução incorrem cada um em custos de ida e volta. + +**Cerimônia para tarefas simples.** Se você precisa renomear uma variável, corrigir um erro de digitação ou adicionar um import ausente, o ciclo de fases é exagero. O GSD Core fornece `/gsd-quick` e `/gsd-fast` para trabalho ad-hoc que não justifica uma fase completa. Veja [Lidar com tarefas rápidas](../how-to/handle-quick-and-fast-tasks.md). + +O ciclo de fases se paga quando o trabalho é suficientemente complexo para que a degradação de contexto seja um risco real — recursos com múltiplos arquivos, refatorações transversais, trabalho que se estende por horas ou sessões. Para todo o resto, recorra ao primitivo mais leve. + +Uma regra de bolso útil: se a tarefa pudesse ser totalmente especificada em um prompt único e curto e concluída em um turno de agente sem mais esclarecimentos, pule o ciclo de fases. Se a tarefa requer pesquisa, envolve arquivos que você não leu recentemente, ou depende de decisões que ainda não estão definidas, o ciclo de fases te protege. + +--- + +## Relacionados + +- [O ciclo de fases](the-phase-loop.md) — como o ciclo Discuss → Plan → Execute → Verify → Ship coloca a engenharia de contexto em prática +- [Orquestração multi-agente](multi-agent-orchestration.md) — como subagentes são spawnados, delimitados e coordenados +- [Arquitetura](../ARCHITECTURE.md) — arquitetura do sistema, modelo de agentes e fluxo de dados +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/explanation/multi-agent-orchestration.md b/docs/pt-BR/explanation/multi-agent-orchestration.md new file mode 100644 index 000000000..ac62fa1f1 --- /dev/null +++ b/docs/pt-BR/explanation/multi-agent-orchestration.md @@ -0,0 +1,234 @@ +# Orquestração multi-agente no GSD Core + +> **Explicação** — Este documento descreve *por que* o GSD Core foi projetado em torno da +> orquestração multi-agente e *como as partes se encaixam*. Não é um guia +> passo a passo. Para configuração, consulte +> [Configurar perfis de modelo](../how-to/configure-model-profiles.md) e a +> [Referência de configuração](../CONFIGURATION.md). Para o catálogo completo de agentes, +> consulte [Inventário](../INVENTORY.md). + +--- + +## O problema que este design resolve + +Agentes de codificação com IA degradam. Não porque o modelo piora, mas porque a +*janela de contexto fica cheia*. À medida que uma conversa cresce, decisões e código +anteriores são expulsos ou diluídos pelo ruído das etapas intermediárias. Quando um +agente escreve o quinto arquivo em uma tarefa complexa, pode já ter esquecido +a restrição declarada na primeira mensagem. Isso é às vezes chamado de *podridão +de contexto* (*context rot*). + +O design multi-agente do GSD Core é uma resposta direta a esse problema. Em vez de +um único agente de longa duração carregando toda a sessão, um orquestrador enxuto gera +agentes especializados de curta duração, cada um com uma **janela de contexto fresca de 200 K tokens** +e *somente os artefatos de que precisa* para realizar seu trabalho específico. O orquestrador +nunca faz o trabalho pesado por conta própria; ele carrega o contexto, gera o agente +adequado, coleta o resultado e atualiza o estado compartilhado em `.planning/`. + +--- + +## O padrão orquestrador → agente + +Todos os workflows em `get-shit-done/workflows/` seguem a mesma estrutura: + +```text +Orquestrador (arquivo .md de workflow) + │ + ├── Carregar contexto + │ gsd-tools.cjs init + │ → JSON: informações do projeto, config, estado, detalhes da fase + │ + ├── Resolver modelo + │ gsd-tools.cjs resolve-model + │ → opus | sonnet | haiku | inherit + │ + ├── Gerar agente especializado (chamada Task/SubAgent) + │ ├── Definição do agente (agents/*.md) + │ ├── Payload de contexto (JSON de init) + │ ├── Atribuição de modelo + │ └── Permissões de ferramentas + │ + ├── Coletar resultado + │ + └── Atualizar estado + gsd-tools.cjs state update / state patch / state advance-plan +``` + +O orquestrador é deliberadamente enxuto. Ele não raciocina sobre o domínio, +não escreve código e não interpreta resultados além de roteá-los para a +próxima etapa. Esse limite mantém a responsabilidade de cada camada clara e impede +que o contexto do orquestrador acumule ruído de domínio. + +### O catálogo de agentes + +Os agentes do GSD Core se enquadram em categorias funcionais que mapeiam o +pipeline pesquisa → planejamento → execução → verificação: + +| Categoria | Agentes | Paralelismo típico | +|---|---|---| +| Pesquisadores | `gsd-project-researcher`, `gsd-phase-researcher`, `gsd-ui-researcher`, `gsd-advisor-researcher` | 4 em paralelo (stack, funcionalidades, arquitetura, armadilhas) | +| Sintetizadores | `gsd-research-synthesizer` | Sequencial, após a conclusão dos pesquisadores | +| Planejadores | `gsd-planner`, `gsd-roadmapper` | Sequencial | +| Verificadores | `gsd-plan-checker`, `gsd-integration-checker`, `gsd-ui-checker`, `gsd-nyquist-auditor` | Sequencial, até 3 iterações de revisão | +| Executores | `gsd-executor` | Paralelo dentro de uma onda, sequencial entre ondas | +| Validadores | `gsd-verifier` | Sequencial, após a conclusão de todos os executores | +| Mapeadores | `gsd-codebase-mapper` | 4 sub-sondas em paralelo | +| Auditores | `gsd-ui-auditor`, `gsd-security-auditor` | Sequencial | + +Cada definição de agente (em `agents/*.md`) declara o acesso às ferramentas permitido, +a finalidade e a cor para saída no terminal. Um agente que só precisa ler arquivos +e escrever um único documento de saída recebe exatamente essas permissões — sem +execução de Bash, sem acesso a um estado mais amplo. Essa restrição é intencional: ela +mantém o raio de impacto pequeno caso um agente se comporte de forma inesperada. + +Para o catálogo completo de 31 agentes, consulte [Inventário](../INVENTORY.md#agents-31-shipped). + +--- + +## Execução paralela baseada em ondas + +A expressão mais visível do design multi-agente é como o `/gsd-execute-phase` +lida com um conjunto de planos que podem depender uns dos outros. + +Antes de gerar qualquer executor, o orquestrador realiza uma **análise de ondas**: +ele lê as declarações de dependência em cada arquivo `PLAN.md` e agrupa os planos +em ondas. Planos sem dependências declaradas formam a Onda 1 e executam em +paralelo. Planos que dependem da Onda 1 formam a Onda 2, e assim por diante. + +```text +Plano 01 (sem deps) ─┐ +Plano 02 (sem deps) ─┤─── Onda 1 (paralelo) +Plano 03 (depende de: 01) ─┤─── Onda 2 (aguarda Onda 1) +Plano 04 (depende de: 02) ─┘ +Plano 05 (depende de: 03, 04) ─── Onda 3 (aguarda Onda 2) +``` + +Cada executor dentro de uma onda: + +- recebe uma janela de contexto fresca (200 K tokens, ou até 1 M em modelos capazes) +- recebe o `PLAN.md` específico pelo qual é responsável +- recebe o contexto do projeto (`PROJECT.md`, `STATE.md`) +- recebe o contexto da fase (`CONTEXT.md`, `RESEARCH.md` se disponível) +- produz commits git atômicos ao concluir +- escreve um `SUMMARY.md` descrevendo o que foi construído + +Após a conclusão de todos os executores em uma onda, o orquestrador executa o hook +de pré-commit uma vez para a onda como um todo. Os executores fazem commit com `--no-verify` para +evitar contenção de bloqueio de build (por exemplo, conflitos de lock do Cargo em projetos +Rust) quando múltiplos agentes fazem commit em paralelo. O hook, portanto, é executado +uma vez por onda em vez de uma vez por commit. + +### Segurança de commits paralelos + +Dois mecanismos previnem conflitos de escrita quando múltiplos executores executam +simultaneamente: + +1. **Lock atômico em `STATE.md`** — Toda escrita em `STATE.md` usa um + arquivo de lock (`STATE.md.lock`) com criação atômica `O_EXCL`. Isso previne + a corrida de leitura-modificação-escrita onde dois agentes leem o arquivo, modificam + campos diferentes, e o escritor posterior sobrescreve as alterações do anterior. + Locks obsoletos (com mais de 10 segundos) são automaticamente removidos. + +2. **Execução de hook por onda** — Em vez de cada executor executar hooks de pré-commit + de forma independente (o que pode causar contenção em nível de arquivo em artefatos + de build compartilhados), o orquestrador executa `git hook run pre-commit` uma vez após + a conclusão de cada onda. + +--- + +## Enriquecimento adaptativo de contexto para modelos de janela grande + +Janelas de contexto padrão de 200 K são suficientes para um executor implementar um +plano único e focado. Quando o `context_window` configurado é de 500 K tokens ou +maior (por exemplo, ao usar o Opus 4.6 ou Sonnet 4.6 no modo de 1 M), o orquestrador +automaticamente enriquece os prompts de subagentes com contexto adicional que não +caberia em uma janela padrão: + +- **Agentes executores** recebem arquivos `SUMMARY.md` de ondas anteriores e o + `CONTEXT.md`/`RESEARCH.md` da fase, fornecendo a eles consciência entre planos + dentro da fase +- **Agentes validadores** recebem todos os arquivos `PLAN.md`, `SUMMARY.md` e `CONTEXT.md` + mais `REQUIREMENTS.md`, habilitando verificação com consciência histórica + +Esse enriquecimento é condicional ao valor de `context_window` em +`config.json`. Em configurações de janela padrão, os prompts usam versões truncadas +com ordenação favorável ao cache para maximizar a eficiência de tokens. + +--- + +## Por que este design — a conexão com a engenharia de contexto + +O padrão orquestrador → agente só faz sentido como parte de uma abordagem mais ampla +de *engenharia de contexto*: a ideia de que o que um agente de IA recebe em sua +janela de contexto importa tanto quanto o nível do modelo ou a qualidade do prompt. Consulte +[Engenharia de contexto](context-engineering.md) para o tratamento completo. + +A orquestração multi-agente operacionaliza a engenharia de contexto de duas formas: + +**Isolamento de contexto.** Cada agente recebe apenas o que precisa. Um pesquisador +recebe a descrição do projeto e as questões de domínio; ele não recebe o histórico +completo de planejamento. Um validador recebe todos os planos e resumos; ele não recebe +a pesquisa bruta. O isolamento mantém o contexto de cada agente denso em sinal em vez +de diluído pelo ruído de outros estágios do pipeline. + +**Higiene de contexto entre sessões.** Como todo o estado vive em +`.planning/` como Markdown e JSON legíveis por humanos (não na janela de contexto +de nenhum agente), os workflows do GSD sobrevivem a resets de contexto (`/clear`), trocas de +abas e intervalos de vários dias. O próximo agente sempre começa a partir de artefatos +persistidos e verificados, em vez de uma memória reconstruída de uma longa conversa. + +--- + +## Compensações + +A orquestração multi-agente não é gratuita. + +**Sobrecarga de coordenação.** Cada geração de agente é uma ida e volta: o orquestrador +deve formatar um prompt, repassar o contexto, aguardar a conclusão do subagente +(tipicamente 1–5 minutos) e então analisar o resultado. Um único agente capaz +trabalhando em um contexto terminaria mais rápido para tarefas simples. O GSD mitiga +isso tornando o paralelismo o padrão sempre que as dependências permitirem — os +quatro pesquisadores em um `plan-phase` executam simultaneamente, não sequencialmente. + +**Opacidade durante a execução.** Enquanto um subagente está em execução, seu trabalho é +invisível para a sessão pai. Não há fluxo de progresso ao vivo. Esta é uma +consequência deliberada do design de contexto fresco: o subagente está operando +em sua própria janela de contexto. O orquestrador exibe uma nota de atividade na +linha de geração ("executado em um subagente — sem saída até retornar") para definir +expectativas. + +**Custo de costura de contexto.** Empacotar os artefatos certos para cada agente +requer que o orquestrador gaste tokens montando e transmitindo payloads de contexto. +Este é o custo do isolamento. O handler `gsd-tools.cjs init` +produz um payload JSON que equilibra completude com orçamento de tokens, aplicando +ordenação favorável ao cache para que as partes estáveis do payload (definição do projeto, +config) acertem o cache em invocações repetidas. + +**Amplificação do custo do modelo.** Executar cinco agentes em paralelo no nível Opus +custa mais do que executar um. O sistema de perfis de modelo (`model_profiles.md`, +resolvido por agente pelo `model-profiles.cjs`) permite atribuir níveis mais baratos a +agentes menos críticos. O recurso `dynamic_routing` reduz ainda mais o custo ao +iniciar cada agente em um nível mais barato e escalar apenas em caso de falha suave. +Consulte [Configuração](../CONFIGURATION.md) para as opções completas. + +Em troca desses custos, o design compra *qualidade consistente em fases grandes*. +Um executor escrevendo o décimo arquivo em um plano de 400 linhas não degrada porque +seu contexto está fresco. Um validador verificando vinte requisitos não esquece os +primeiros dez porque os recebeu todos como entrada estruturada em vez de histórico +de conversa. + +--- + +## Relacionados + +- [Engenharia de contexto](context-engineering.md) — o princípio upstream que + motiva este design +- [Configurar perfis de modelo](../how-to/configure-model-profiles.md) — como + atribuir níveis de modelo por agente +- [Referência de configuração](../CONFIGURATION.md) — schema completo de `config.json` + incluindo `models`, `model_overrides`, `dynamic_routing` e + `context_window` +- [Inventário](../INVENTORY.md) — catálogo autoritativo de agentes e lista de workflows +- [Arquitetura](../ARCHITECTURE.md#agent-model) — detalhes em nível de implementação + sobre o padrão orquestrador → agente e o modelo de execução por ondas +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/explanation/security-model.md b/docs/pt-BR/explanation/security-model.md new file mode 100644 index 000000000..fa866c152 --- /dev/null +++ b/docs/pt-BR/explanation/security-model.md @@ -0,0 +1,270 @@ +# Modelo de segurança do GSD Core + +> **Explicação** — Este documento descreve *por que* o GSD Core possui a +> postura de segurança que possui e *como as camadas se articulam*. Não é uma +> referência para todos os parâmetros de hook. Para o comando `/gsd-secure-phase` +> e suas opções, consulte [Comandos](../COMMANDS.md). Para a arquitetura de +> hooks em nível de implementação, consulte +> [Arquitetura § Sistema de Hooks](../ARCHITECTURE.md#hook-system). +> Para a linha de base de segurança organizacional (controles de scanner, +> checklists de incidentes, modelo de responsabilidade), consulte +> [SECURITY.md](../../../SECURITY.md). + +--- + +## Por que o desenvolvimento orientado por IA precisa de uma postura de segurança dedicada + +Um editor de código convencional não executa pacotes arbitrários em seu nome. +O GSD Core sim. O pipeline pesquisa → plano → execução automatiza o caminho +completo de "nomear um pacote" até "executar `npm install `", de +"escrever um artefato de planejamento" até "usar esse artefato como prompt de +sistema de um LLM". Cada etapa de automação remove um humano do ciclo — e cada +remoção é uma superfície de ataque potencial. + +O modelo de segurança do GSD Core é construído em torno de um princípio +organizador: **defesa em profundidade**. Nenhum controle isolado é assumido +como perfeito. Várias camadas sobrepostas reduzem, cada uma, uma classe distinta +de risco e, juntas, tornam a superfície de ataque substancialmente mais difícil +de explorar sem eliminá-la completamente. O resumo honesto ao final deste +documento explica o que o sistema não consegue proteger. + +--- + +## Camada 1 — Proteção da cadeia de suprimentos: o Package Legitimacy Gate + +### A ameaça + +Modelos de IA alucinam nomes de pacotes. Este não é um modo de falha marginal: +pesquisas de 2025 documentam aproximadamente 20% das referências de pacotes +geradas por IA como nomes alucinados que não correspondem a pacotes legítimos. +Um subconjunto desses nomes alucinados — aproximadamente 43% na mesma pesquisa — +recorre consistentemente entre prompts, o que significa que um atacante pode +observar quais nomes as ferramentas de IA costumam produzir e pré-registrar +esses nomes no npm, PyPI ou crates.io com scripts de pós-instalação maliciosos. +A técnica é chamada de *slopsquatting*. + +A qualidade insidiosa do slopsquatting é que um nome alucinado que passa no +`npm view` *parece legítimo*. A entrada no registro prova apenas que alguém +registrou o nome — não que o pacote faz o que a IA disse que faz, não que +possui usuários legítimos e não que seus scripts de instalação são seguros. +Sem uma barreira, um nome alucinado fluiria sem ser detectado pelo pipeline +pesquisador → planejador → executor do GSD e eventualmente seria executado como +`npm install ` na sua máquina. + +### Como a barreira funciona + +A barreira opera em três estágios do pipeline: + +**Estágio de pesquisa.** Quando `gsd-phase-researcher` recomenda pacotes +externos, executa `slopcheck install --json` para cada um. Os resultados +são gravados em uma tabela `## Package Legitimacy Audit` no `RESEARCH.md`. +Pacotes marcados com `[SLOP]` (alucinação de alta confiança ou registrado por +atacante) são **removidos inteiramente do `RESEARCH.md`** antes de o arquivo +ser salvo. Eles nunca chegam ao planejador. + +**Estágio de planejamento.** `gsd-planner` lê a tabela de auditoria. Para +qualquer pacote marcado com `[SUS]` (suspeito: recém-registrado, baixa contagem +de downloads, sem repositório de código-fonte ou padrão de nomenclatura próximo +a um pacote popular) ou `[ASSUMED]` (originado de WebSearch em vez de +verificação direta no registro), o planejador **insere uma tarefa +`checkpoint:human-verify`** antes da etapa de instalação. O checkpoint inclui +um link direto para a página do registro e aspectos específicos a verificar: +histórico do mantenedor, atividade no rastreador de problemas, ausência de +scripts de instalação suspeitos. + +**Estágio de execução.** Se uma instalação falhar, `gsd-executor` **exibe um +checkpoint e para**. Ele não tenta silenciosamente um nome de pacote alternativo +— que poderia ser malicioso. Esta é uma regra explícita no comportamento do +executor (RULE 3 na definição do agente executor). + +### Por que pacotes do WebSearch são sempre `[ASSUMED]` + +Nomes de pacotes descobertos via WebSearch são marcados como `[ASSUMED]` +independentemente de o `npm view` ser bem-sucedido. Um pacote que existe no +registro não é o mesmo que um pacote seguro de instalar. `npm view` prova o +registro, não a legitimidade. A marcação `[ASSUMED]` aciona o mesmo checkpoint +de verificação humana que `[SUS]`, garantindo que qualquer recomendação +descoberta na web e não verificada sempre receba revisão humana antes da +instalação. + +### Cobertura por ecossistema + +O pesquisador usa comandos de verificação específicos de cada registro, em vez +de uma única verificação genérica: + +- Node.js: `npm view` +- Python: `pip index versions` +- Rust: `cargo search` + +Isso cobre alucinações entre ecossistemas, que ocorrem em aproximadamente 9% +dos casos de acordo com a pesquisa USENIX de 2025 — situações em que uma IA +recomenda um pacote que existe em um ecossistema, mas não no que está realmente +em uso. + +### Degradação graciosa + +Se `slopcheck` não estiver disponível (não instalado, ou se a instalação via +pip falhar no momento da pesquisa), o GSD aplica o fallback mais restrito +possível: **todo pacote recomendado é marcado como `[ASSUMED]`**, e o planejador +bloqueia cada instalação com uma tarefa `checkpoint:human-verify`. Pesquisa e +planejamento prosseguem normalmente — o sistema nunca falha irrecuperavelmente +por dependência de ferramenta ausente. Isso é intencionalmente mais restritivo +do que o fluxo normal: a indisponibilidade do slopcheck significa que toda +instalação de pacote recebe um checkpoint humano. + +A ferramenta `slopcheck` é licenciada sob MIT e instalável via pip. Se for +descontinuada, o fallback de barreira `[ASSUMED]` garante que a cobertura por +checkpoint humano seja mantida independentemente. + +--- + +## Camada 2 — Defesas contra injeção de prompt + +### A ameaça + +O GSD Core gera arquivos Markdown que se tornam prompts de sistema de LLMs. O +pipeline de pesquisa lê conteúdo externo da web; o pipeline de planejamento +incorpora texto fornecido pelo usuário (`--text-file`, `--prd`); o pipeline de +execução grava artefatos de planejamento que são relidos posteriormente como +contexto de agente. Qualquer texto controlado pelo usuário que flua para esses +artefatos é um vetor potencial de **injeção indireta de prompt** — uma string +controlada por um atacante que, uma vez dentro de um prompt de sistema, tenta +substituir as instruções do agente ou exfiltrar informações. + +### Como as defesas funcionam + +O GSD Core trata a injeção de prompt em três níveis. + +**Validação de entrada (`security.cjs`).** O módulo +`get-shit-done/bin/lib/security.cjs` é o utilitário central de segurança. +Ele fornece: + +- Prevenção de path traversal: caminhos de arquivo fornecidos pelo usuário + (`--text-file`, `--prd`) são validados para resolver dentro do diretório do + projeto, com resolução explícita do symlink `/var` → `/private/var` no macOS +- Detecção de injeção de prompt: padrões de injeção conhecidos (sobrescritas de + papel, desvios de instrução, injeções de tag de sistema) são escaneados em + texto fornecido pelo usuário antes de entrar em qualquer artefato de + planejamento +- Parsing seguro de JSON: um wrapper que previne ataques de poluição de + protótipo via payloads JSON manipulados +- Validação de argumentos de shell: argumentos passados a comandos de subshell + são validados antes do uso + +**Hook de runtime: `gsd-prompt-guard.js`.** Este hook é acionado a cada +chamada de Write ou Edit que tem como alvo arquivos `.planning/`. Ele escaneia +o conteúdo sendo gravado em busca dos mesmos padrões de injeção que o +`security.cjs` (um subconjunto inlinado diretamente no hook para independência +— o hook não usa `require()` para carregar o módulo, portanto é executado mesmo +que o caminho do módulo mude). A detecção é **apenas consultiva**: o hook +registra a descoberta, mas não bloqueia a gravação. A justificativa é que um +bloqueio falso-positivo em uma gravação de planejamento legítima seria mais +disruptivo do que uma injeção não detectada em uma camada de varredura +secundária. + +**Hook de runtime: `gsd-read-injection-scanner.js`.** Este hook é acionado na +saída de cada chamada da ferramenta Read. Ele escaneia o *conteúdo que acabou +de ser lido* em busca de instruções injetadas em conteúdo não confiável — +capturando casos em que um atacante incorporou instruções em um arquivo que o +GSD está prestes a incorporar ao contexto de um agente. + +**Scanner de CI.** `prompt-injection-scan.test.cjs` escaneia todos os arquivos +de agente, workflow e comando em busca de vetores de injeção embutidos como +parte do conjunto de testes. Isso detecta tentativas de injeção no próprio +código-fonte do GSD — por exemplo, um ataque de cadeia de suprimentos que +modificou um arquivo de workflow para adicionar uma instrução de sobrescrita de +papel. + +### Read Injection Scanner vs Prompt Guard + +Os dois hooks cobrem superfícies complementares. `gsd-prompt-guard.js` monitora +*gravações em artefatos de planejamento* — ele detecta injeções sendo plantadas. +`gsd-read-injection-scanner.js` monitora *leituras de qualquer arquivo* — ele +detecta injeções sendo ingeridas a partir de conteúdo externo (o README de uma +dependência, um arquivo de configuração de terceiros, um documento fornecido +pelo usuário). Juntos, eles delimitam o ciclo de vida ingestão → armazenamento +→ releitura. + +--- + +## Camada 3 — Integridade do repositório e das dependências + +Acima do comportamento de runtime do GSD, a organização `open-gsd` aplica +controles nos níveis de repositório e pacote. Eles estão documentados +integralmente em [`docs/security/baseline.md`](../../security/baseline.md) e são +resumidos aqui para completude. + +**Integridade das dependências.** Todas as dependências de terceiros são +fixadas via `package-lock.json` e verificadas em relação aos checksums +publicados antes da instalação. Uma barreira `scripts/check-npm-integrity.cjs` +detecta versões inválidas, pacotes ausentes e pacotes estranhos no momento do +CI. Isso mitiga ataques de confusão de dependências e typosquatting contra as +próprias dependências do GSD. + +**Varredura de segredos.** Cada commit e PR é escaneado em busca de segredos +codificados no código. Fixtures de teste intencionais devem ser anotadas com a +gramática de exclusão padrão do projeto (consulte `SECURITY.md` para o formato +de anotação). Supressões não anotadas falham no CI. + +**Varredura de texto com segurança de localidade.** Strings de saída e voltadas +ao usuário são escaneadas em busca de homóglifos Unicode, caracteres de +substituição bidirecional e Unicode invisível — a classe de ataques documentada +na CVE-2021-42574 ("Trojan Source") que pode ocultar conteúdo malicioso em +diffs. + +--- + +## Concessões e limitações + +O modelo de segurança descrito aqui reduz significativamente a superfície de +ataque para o desenvolvimento orientado por IA. Ele não elimina o risco da +cadeia de suprimentos. + +**O que o Package Legitimacy Gate reduz:** A probabilidade de que um pacote +alucinado ou registrado por um atacante chegue ao `npm install` sem um +checkpoint humano. A barreira `[SLOP]` remove completamente pacotes ruins de +alta confiança; as barreiras `[SUS]` / `[ASSUMED]` exigem revisão humana antes +da execução. Isso eleva substancialmente o custo de um ataque de slopsquatting +bem-sucedido. + +**O que o Package Legitimacy Gate não elimina:** Um pacote legítimo que é +comprometido posteriormente (tomada de conta, confusão de dependências em sua +própria árvore) não é detectado pelo slopcheck, que verifica sinais de registro +no momento da pesquisa. Lock files e `npm audit` na camada de integridade de +dependências são os controles para essa classe de ataque. + +**O que as defesas contra injeção de prompt reduzem:** A probabilidade de que +texto controlado pelo usuário em artefatos de planejamento substitua com sucesso +as instruções do agente. A correspondência de padrões com formas de injeção +conhecidas detecta os casos comuns; jailbreaks novos ou injeções de baixo sinal +podem passar sem ser detectados. A postura apenas consultiva significa que a +detecção é registrada, mas não bloqueada — uma escolha deliberada que preserva +a continuidade do fluxo de trabalho ao custo de não interromper definitivamente +em uma detecção. + +**O que as defesas contra injeção de prompt não eliminam:** Uma injeção +suficientemente criativa que não corresponde a padrões conhecidos, ou uma +injeção que chega por um canal que os hooks não cobrem (por exemplo, conteúdo +injetado no README publicado de uma dependência que é lido por um subagente +navegando em documentação). Defesa em profundidade significa que cada camada +torna o ataque mais difícil, não que qualquer camada isolada o torna impossível. + +**Reportando vulnerabilidades.** Relate por meio de advisory de segurança +privado do GitHub em +`https://github.com/open-gsd/gsd-core/security/advisories/new`. Não abra +issues públicas. Consulte [SECURITY.md](../../../SECURITY.md) para o cronograma +de resposta e a política de divulgação. + +--- + +## Relacionados + +- [Comandos](../COMMANDS.md) — inclui `/gsd-secure-phase` e + `/gsd-code-review` com flags relevantes para segurança +- [Arquitetura § Sistema de Hooks](../ARCHITECTURE.md#hook-system) — + detalhes de implementação de cada hook, seu gatilho de evento e propriedades + de segurança +- [SECURITY.md](../../../SECURITY.md) — reporte de vulnerabilidades, linha de + base de segurança organizacional, governança de exclusão de varredura de + segredos e verificação de integridade de dependências +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/explanation/the-phase-loop.md b/docs/pt-BR/explanation/the-phase-loop.md new file mode 100644 index 000000000..6ca3808e5 --- /dev/null +++ b/docs/pt-BR/explanation/the-phase-loop.md @@ -0,0 +1,129 @@ +# O loop de fases + +> O modelo mental central de como o GSD Core organiza o trabalho. + +--- + +## O que é o loop + +O GSD Core estrutura todo o trabalho de desenvolvimento como um ciclo que se repete: + +```text +Discuss → (UI design) → Plan → Execute → Verify → Ship +``` + +Cada unidade de trabalho — chamada de **fase** — percorre essas etapas em ordem. O loop não é uma formalidade. Cada etapa existe porque protege contra uma classe específica de falha que a etapa anterior, por si só, não consegue evitar. + +Este documento explica *por que* o loop tem a forma que tem. Para instruções sobre como executar cada etapa, veja os guias práticos linkados ao final. + +--- + +## Por que cada etapa existe + +### Discuss + +O planejamento não pode começar até que você saiba *como* construir a coisa, não apenas *o que* construir. O objetivo da fase em `ROADMAP.md` descreve o resultado. A etapa Discuss captura as decisões de implementação que moldam o caminho até esse resultado: quais bibliotecas, qual estratégia de tratamento de erros, se uma funcionalidade é por rota ou global, como os casos extremos devem se comportar. + +Sem uma etapa Discuss, o planejador precisa tomar essas decisões por conta própria. Às vezes acerta. Muitas vezes acerta de forma plausível, mas errada — produzindo um plano coerente, porém desalinhado com suas preferências reais. Quando a execução termina e você percebe o erro, já está desfazendo um trabalho significativo. + +A etapa Discuss é deliberadamente leve. É uma conversa, não um exercício de especificação. O resultado é um `CONTEXT.md` no diretório da fase: um registro estruturado de decisões que o planejador, executor e verificador podem ler. A conversa leva alguns minutos; pode economizar horas de retrabalho. + +### UI design (opcional) + +Para fases com componente visual, existe uma etapa opcional `/gsd-ui-phase` entre Discuss e Plan. Ela produz um `UI-SPEC.md` — um contrato de design que descreve layout, interação e comportamento visual antes de qualquer código ser escrito. Vale a pena executar essa etapa quando a interface é complexa o suficiente para que ambiguidades no design produzam escolhas de implementação divergentes. Um contrato de design claro é muito mais barato de escrever do que de reimplementar. + +### Plan + +A etapa Plan realiza a pesquisa, a decomposição e o raciocínio estrutural que a execução exige. Ela roda como uma sequência de subagentes com contexto zerado: um pesquisador que investiga o ecossistema e registra os achados em `RESEARCH.md`, um planejador que lê tanto a pesquisa quanto o `CONTEXT.md` para produzir os arquivos `PLAN.md`, e um verificador de planos que confere se os planos estão completos, consistentes e dentro do escopo. + +O que um plano contém? Cada `PLAN.md` descreve uma unidade delimitada de trabalho: os arquivos a serem tocados, as mudanças específicas a serem feitas, os critérios de aceite que definem o que é "concluído". Os planos são ordenados em ondas de dependência para que a execução paralela seja segura — executores na mesma onda tocam preocupações que não se sobrepõem. + +A etapa Plan é o momento em que a ambiguidade é mais cara. Um plano ambíguo produz um executor que faz suposições. Múltiplos executores paralelos fazendo suposições diferentes sobre a mesma preocupação produzem conflitos. O trabalho do verificador de planos é capturar isso antes de a execução começar, não depois. + +### Execute + +A execução roda os planos. Cada executor recebe uma janela de contexto zerada de 200k tokens carregada com exatamente o que precisa: o resumo do projeto, o contexto da fase, a pesquisa e o `PLAN.md` específico para sua tarefa. Nada mais. + +Os executores escrevem código e fazem commits de forma atômica. Cada commit corresponde a uma tarefa concluída em um plano. Quando uma onda de executores paralelos termina, o orquestrador mescla o estado deles e inicia a próxima onda. + +O contexto zerado do executor não é uma conveniência — é o mecanismo pelo qual a degradação de contexto é evitada. Um executor rodando com 180k tokens de histórico de sessão acumulado é um executor degradado. Um executor que começa do zero e lê apenas o que seu plano exige é um executor operando em plena capacidade. + +### Verify + +Após todos os executores terem concluído, um agente verificador lê o objetivo da fase, as decisões do `CONTEXT.md`, os planos e os resumos de execução — e verifica se o que foi construído corresponde ao que foi pretendido. Ele produz um `VERIFICATION.md` e, se houver discrepâncias, gera planos de correção direcionados. + +A verificação não é apenas testes. Ela confere a cobertura de requisitos (todos os REQ-IDs foram endereçados?), a cobertura de decisões (as decisões capturadas no `CONTEXT.md` foram realmente implementadas?) e o alinhamento geral com o objetivo da fase. Uma fase não está concluída porque a execução terminou sem erros. Está concluída porque o que foi construído é o que foi planejado, e o que foi planejado é o que foi decidido. + +### Ship + +A etapa Ship cria o pull request e arquiva os artefatos da fase. O `STATE.md` é atualizado para marcar a fase como concluída. O loop então recomeça para a próxima fase. + +--- + +## Marcos e fases + +Um **marco** é um ciclo de versão — um incremento significativo e entregável do projeto. Tem um nome, um número de versão e um conjunto de requisitos que definem o que deve entregar. Um marco está completo quando todas as suas fases foram entregues e seus requisitos estão cobertos. + +Uma **fase** é uma unidade de trabalho dentro de um marco. Uma fase tem um objetivo, um conjunto de requisitos que endereça e um conjunto de planos que a implementam. + +A relação importa porque marcos e fases têm escopos de preocupação diferentes. Um marco pergunta: "O que esta versão do produto faz e o que ela não faz?" Uma fase pergunta: "Qual é a próxima coisa delimitada que podemos pesquisar, planejar, executar e verificar?" + +Os limites dos marcos são traçados em fronteiras naturais do produto — uma API implantável, um fluxo de interface funcional, um modelo de dados completo. Os limites das fases são traçados nos limites do que pode ser executado com segurança em um loop sem que ele se torne incontrolável. + +--- + +## O que define um bom escopo de fase + +Vale a pena refletir sobre isso, pois é a fonte mais comum de atrito com o loop. + +Uma fase muito grande torna-se um projeto de pesquisa em si mesma. O planejador tem dificuldade para decompô-la em planos independentes. Executores em ondas posteriores ficam bloqueados aguardando ondas anteriores. A verificação torna-se uma auditoria completa em vez de uma revisão direcionada. O ciclo de feedback se estende de horas para dias, e o risco de descobrir um erro de design fundamental tarde — após muito código ter sido escrito — aumenta drasticamente. + +Uma fase muito pequena fragmenta trabalho que naturalmente pertence junto. Você acaba com arquivos de plano de meia dúzia de linhas, fases que completam em minutos e um custo de planejamento que supera em muito o custo de execução. O loop parece burocrático em vez de útil. + +Um bom escopo de fase é aquele em que: + +- O objetivo pode ser enunciado em uma única frase que não seja obviamente trivial nem suspeito de ser ampla demais. +- A pesquisa necessária para planejá-la é delimitada — as questões sobre o ecossistema têm respostas que não dependem de outras fases sendo concluídas primeiro. +- A execução pode ser paralelizada em um punhado de planos que não se sobrepõem, não dezenas. +- Existe uma definição clara e testável de "concluído" que um verificador pode checar sem ler todo o código-base. + +Concretamente: "Adicionar middleware de validação de assinatura HMAC-SHA256" é um bom escopo de fase. "Construir o sistema de autenticação" geralmente não é — quase sempre contém múltiplas preocupações independentes que seriam melhor tratadas como fases separadas. "Corrigir o erro de digitação no README" está abaixo do limite onde o loop agrega valor; use `/gsd-quick` nesse caso. + +Na dúvida, divida. Uma fase menor completa mais rápido, verifica com mais confiança e facilita a correção de curso se uma decisão de design se mostrar errada. + +--- + +## Como `.planning/` transporta estado ao longo do loop + +O loop não é uma sessão única. Pesquisa, planejamento e execução podem acontecer em múltiplas sessões, com reinicializações de contexto no meio. O diretório `.planning/` é o que torna isso possível. + +Cada etapa do loop lê artefatos produzidos por etapas anteriores e escreve artefatos para etapas posteriores. O CONTEXT.md que a etapa Discuss produz ainda está disponível quando o Planejador roda — mesmo que isso ocorra em uma sessão diferente, horas depois. Os arquivos PLAN.md que o Planejador produz ainda estão disponíveis quando o Executor roda — mesmo após uma reinicialização. O VERIFICATION.md que o Verificador escreve ainda está disponível quando você revisa a fase. + +`STATE.md` é a camada de navegação acima de tudo isso. Ele registra exatamente onde no loop o projeto está atualmente: qual marco está ativo, qual fase está em andamento, quais planos estão completos e quais estão pendentes. Qualquer agente ou fluxo de trabalho que precise se orientar lê o `STATE.md` primeiro. + +Para a estrutura precisa desses arquivos, consulte [Artefatos de planejamento](../reference/planning-artifacts.md) e o [esquema do STATE.md](../reference/state-md.md). + +--- + +## O loop é um ritmo, não uma restrição + +É tentador ver o loop como burocracia — um conjunto de etapas obrigatórias que você tem que executar antes de ter permissão para escrever código. Essa visão está errada. + +O loop existe porque cada etapa previne falhas que são genuinamente caras de corrigir depois. O Discuss previne o planejamento com base em suposições erradas. O Plan previne a execução de um design fundamentalmente quebrado. O Verify previne a entrega de trabalho que perdeu o escopo. Esses não são problemas inventados. São os modos de falha reais do desenvolvimento assistido por IA na escala de funcionalidades reais. + +Quando o loop funciona bem, ele parece um ritmo: uma cadência de trabalho focado e delimitado em que cada etapa é clara porque a etapa anterior fez seu trabalho. O custo adicional é real, mas está concentrado no início — pago em minutos de planejamento em vez de horas de retrabalho. + +Para trabalhos que ficam abaixo do limite em que o loop é justificado, o GSD Core oferece primitivas mais leves. O loop de fases é uma ferramenta, não a única ferramenta. + +--- + +## Relacionados + +- [Engenharia de contexto](context-engineering.md) — por que subagentes com contexto zerado evitam a degradação de qualidade que torna o loop necessário +- [Discutir uma fase](../how-to/discuss-a-phase.md) +- [Planejar uma fase](../how-to/plan-a-phase.md) +- [Executar uma fase](../how-to/execute-a-phase.md) +- [Verificar e entregar](../how-to/verify-and-ship.md) +- [Artefatos de planejamento](../reference/planning-artifacts.md) +- [Esquema do STATE.md](../reference/state-md.md) +- [índice de documentação](../README.md) diff --git a/docs/pt-BR/how-to/configure-model-profiles.md b/docs/pt-BR/how-to/configure-model-profiles.md new file mode 100644 index 000000000..66465a740 --- /dev/null +++ b/docs/pt-BR/how-to/configure-model-profiles.md @@ -0,0 +1,218 @@ +# Como configurar perfis de modelo + +Escolha a estratégia de nível de modelo adequada para o seu projeto e ajuste agentes individuais ou tipos de fase inteiros sem precisar escrever um bloco de substituição extenso. Este guia começa pelo controle mais simples e avança até o roteamento dinâmico. + +--- + +## Os quatro perfis (mais `adaptive` e `inherit`) + +Defina `model_profile` em `.planning/config.json` ou via `/gsd-config --profile `: + +| Perfil | Planejador | Executor | Pesquisadores | Verificador | Usar quando | +|--------|-----------|----------|---------------|-------------|-------------| +| `quality` | Opus | Opus | Opus | Sonnet | Trabalho de qualidade para produção onde o custo é secundário | +| `balanced` | Opus | Sonnet | Sonnet | Sonnet | Desenvolvimento normal — o padrão | +| `budget` | Sonnet | Sonnet | Haiku | Haiku | Prototipagem rápida, contextos com restrições de custo | +| `adaptive` | Opus | Sonnet | Sonnet | Sonnet | Resolve da mesma forma que os outros níveis em perfis cientes de runtime; use ao alternar entre runtimes com frequência | +| `inherit` | (modelo da sessão) | (modelo da sessão) | (modelo da sessão) | (modelo da sessão) | Provedores não-Anthropic (OpenRouter, modelos locais) — todos os agentes seguem o modelo atual da sessão | + +A tabela acima mostra um subconjunto representativo. Todos os 33 agentes incluídos possuem atribuições de nível explícitas por perfil em `sdk/shared/model-catalog.json`. Para a tabela completa, consulte [Perfis de Modelo](../CONFIGURATION.md#model-profiles) na referência de configuração. + +**Troca rápida via comando:** + +```bash +/gsd-config --profile balanced # Desenvolvimento normal +/gsd-config --profile budget # Prototipagem ou fases de alto custo +/gsd-config --profile quality # Lançamento em produção +/gsd-config --profile inherit # OpenRouter, modelos locais +``` + +**Ou edite `.planning/config.json` diretamente:** + +```json +{ + "model_profile": "balanced" +} +``` + +--- + +## Substituições por agente (`model_overrides`) + +Se um único agente precisa de um nível diferente sem alterar o perfil inteiro, use `model_overrides`: + +```json +{ + "model_profile": "balanced", + "model_overrides": { + "gsd-executor": "opus", + "gsd-codebase-mapper": "haiku" + } +} +``` + +Valores válidos: `opus`, `sonnet`, `haiku`, `inherit` ou qualquer ID de modelo totalmente qualificado (ex.: `"openai/o3"`, `"google/gemini-2.5-pro"`). + +`model_overrides` pode ser definido por projeto em `.planning/config.json` ou globalmente em `~/.gsd/defaults.json`. Entradas por projeto têm precedência em conflitos; entradas globais sem conflito são preservadas. + +**Importante para Codex e OpenCode:** Esses runtimes incorporam o modelo resolvido na configuração estática de cada agente no momento da instalação. Após editar `model_overrides`, execute novamente o instalador para que a alteração entre em vigor: + +```bash +npx @opengsd/gsd-core@latest --codex --global # ou --opencode, --kilo, etc. +``` + +--- + +## Modelos por tipo de fase (`models`) + +Se você quer dizer "Opus para planejamento, Sonnet para todo o resto" sem precisar aprender todos os 33 nomes de agentes, use o bloco `models`. Ele mapeia seis tipos de fase para aliases de nível: + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + } +} +``` + +Tipos de fase e seus agentes: + +| Tipo de fase | Agentes cobertos | +|---|---| +| `planning` | `gsd-planner`, `gsd-roadmapper`, `gsd-pattern-mapper` | +| `research` | `gsd-phase-researcher`, `gsd-project-researcher`, `gsd-research-synthesizer`, `gsd-codebase-mapper`, `gsd-ui-researcher` | +| `execution` | `gsd-executor`, `gsd-debugger`, `gsd-doc-writer` | +| `verification` | `gsd-verifier`, `gsd-plan-checker`, `gsd-integration-checker`, `gsd-nyquist-auditor`, `gsd-ui-checker`, `gsd-ui-auditor`, `gsd-doc-verifier` | +| `discuss`, `completion` | Reservado — nenhum subagente hoje; aceito pelo esquema para compatibilidade futura | + +O bloco `models` aceita apenas aliases de nível (`opus`, `sonnet`, `haiku`, `inherit`). Para um ID de modelo totalmente qualificado, use `model_overrides` por agente. + +**Combinando `models` com uma exceção por agente:** + +```json +{ + "model_profile": "balanced", + "models": { + "research": "sonnet" + }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +Todos os cinco agentes de pesquisa resolvem para `sonnet` *exceto* `gsd-codebase-mapper`, que está fixado em `haiku`. + +--- + +## Roteamento dinâmico — comece barato, escale em caso de falha + +Se você quiser pagar pelos níveis mais baratos por padrão e só escalar quando um agente falhar em um controle de qualidade, habilite `dynamic_routing`: + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +Cada agente possui um nível padrão (`light`, `standard` ou `heavy`). Na primeira tentativa, o GSD escolhe `tier_models[default_tier]`. Se o orquestrador detectar uma falha suave (verificação inconclusiva, verificação de plano sinalizada, etc.), ele reinicia o agente um nível acima. `max_escalations` limita o total de novas tentativas. + +Agentes que já estão em `heavy` não podem escalar mais. + +**Desativar a escalada mantendo a resolução dinâmica:** + +```json +{ + "dynamic_routing": { + "enabled": true, + "escalate_on_failure": false + } +} +``` + +Cada tentativa usa `tier_models[default_tier]` independentemente do resultado — útil quando você quer mapeamento explícito de nível para modelo sem o comportamento de escalada. + +`dynamic_routing` está **desabilitado por padrão**. Omitir o bloco ou definir `enabled: false` preserva a resolução estática. + +--- + +## Usando o GSD em runtimes não-Anthropic + +Se você instalou o GSD para Codex, OpenCode, Gemini CLI ou Kilo, o instalador já definiu `resolve_model_ids: "omit"` na sua configuração. Isso instrui o GSD a pular a resolução de IDs de modelo Anthropic e deixar o runtime escolher seu próprio modelo padrão. Nenhuma configuração manual é necessária para o caso básico. + +**Se você quiser modelos por nível no Codex:** + +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` + +O GSD resolve cada alias de nível para o modelo nativo do Codex e o esforço de raciocínio definido no mapa de nível do runtime. + +**Se você quiser IDs de modelo por agente em qualquer runtime não-Claude:** + +```json +{ + "resolve_model_ids": "omit", + "model_overrides": { + "gsd-planner": "o3", + "gsd-executor": "o4-mini", + "gsd-debugger": "o3" + } +} +``` + +Para a referência completa de perfis cientes de runtime e a superfície `model_policy` (predefinições neutras em relação ao provedor adicionadas na v1.42), consulte [Referência de configuração — Perfis de Modelo](../CONFIGURATION.md#model-profiles). + +--- + +## Precedência de resolução (maior para menor) + +Quando múltiplas camadas se aplicam, o resolvedor escolhe a entrada de maior prioridade: + +```text +1. model_overrides[] — por agente; IDs completos; exceção direcionada +2. dynamic_routing.tier_models[] — quando habilitado; escala em falha suave +3. models[] — nível de fase grosseiro +4. model_profile (coluna por agente) — estratégia global de nível +5. Padrão do runtime — quando nada mais se aplica +``` + +--- + +## Escolhendo o controle certo + +| O que você quer | Use | +|---|---| +| Uma estratégia de nível para todos os agentes | `model_profile` | +| Ajuste grosseiro por fase ("Opus para planejamento") | `models.` | +| Precisão por agente ("forçar Haiku no mapeador de base de código") | `model_overrides[]` | +| Um ID de modelo totalmente qualificado para um agente específico | `model_overrides[]: "openai/gpt-5"` | +| Começar barato, escalar apenas em falha | `dynamic_routing` | +| Todos os agentes seguem o modelo da sessão (provedor não-Anthropic) | `model_profile: "inherit"` | + +--- + +## Relacionados + +- [Referência de configuração](../CONFIGURATION.md) +- [Orquestração multi-agente](../explanation/multi-agent-orchestration.md) +- [Referência de comandos](../COMMANDS.md) +- [Índice da documentação](../README.md) diff --git a/docs/pt-BR/how-to/debug-a-failed-execution.md b/docs/pt-BR/how-to/debug-a-failed-execution.md new file mode 100644 index 000000000..1611870a4 --- /dev/null +++ b/docs/pt-BR/how-to/debug-a-failed-execution.md @@ -0,0 +1,178 @@ +# Como depurar uma execução com falha + +**Objetivo:** Recuperar quando uma execução de fase falha, trava ou produz trabalho incompleto — e retomar de forma limpa sem perder o progresso ou repetir o trabalho que já foi concluído com sucesso. + +**Pré-requisitos:** Você executou `/gsd-execute-phase N` e a execução parou antes de gravar `VERIFICATION.md`, ou você vê saída inesperada, arquivos ausentes ou um indicador de progresso travado. + +--- + +## Detectar se a execução travou ou falhou + +Antes de tomar qualquer ação de recuperação, determine o que realmente aconteceu. + +### Se você ver "Spawning…" sem saída após 1–5 minutos + +Isso é normal, não é um travamento. Os subagentes GSD são executados em uma janela de contexto isolada. A nota de atividade na linha de spawn confirma isso. Não interrompa a sessão. + +Se já se passaram mais de 10 minutos sem resultado, verifique a barra lateral do Claude Code. Se a tarefa do agente aparecer como concluída mas nenhuma saída tiver aparecido, o resultado pode ter sido perdido em uma troca de contexto — execute novamente o mesmo comando: + +```bash +/gsd-execute-phase 1 +``` + +O GSD verifica a existência de arquivos `SUMMARY.md` antes de despachar os executores. Planos que já possuem um são ignorados automaticamente. + +### Se a execução parou no meio de uma onda com uma mensagem de erro + +Verifique o histórico do git para ver quais planos foram commitados com sucesso: + +```bash +git log --oneline -20 +``` + +Planos que commitaram seu trabalho terão uma entrada como `feat(01-02): …`. Planos sem um commit estão incompletos e serão executados novamente quando você executar o comando novamente. + +### Se o executor commitou o código mas não gravou SUMMARY.md + +O GSD detecta isso na próxima execução e apresenta uma porta de retomada segura com três opções: + +- **Fechar manualmente** — inspecione os commits você mesmo, escreva `SUMMARY.md` e execute novamente. +- **Executar novamente do zero** — reverta ou substitua os commits parciais antes de despachar um novo executor. +- **Marcar e pular** — registre a anomalia e continue, apenas com sua confirmação explícita. + +--- + +## Diagnosticar a causa raiz + +### Execute `/gsd-debug --diagnose` + +Se a execução produziu saída incorreta, código com stubs ou uma falha de verificação, use o modo somente de diagnóstico para investigar sem aplicar nenhuma correção: + +```bash +/gsd-debug --diagnose "Phase 2 executor produced stubs instead of real code" +``` + +`--diagnose` para na causa raiz sem tocar nos seus arquivos. Ele cria um arquivo de sessão em `.planning/debug/.md` para que você possa retomar a investigação mais tarde, se necessário. + +Para iniciar uma sessão de depuração completa que também aplica uma correção: + +```bash +/gsd-debug "Login middleware not handling 401 correctly after phase 3" +``` + +O GSD coleta sintomas, executa uma investigação estruturada usando o método científico e propõe uma correção. Se `tdd_mode: true` estiver definido na sua configuração, ele exige um teste com falha antes de aplicar qualquer correção. + +### Verificar sessões de depuração ativas + +```bash +/gsd-debug list +``` + +Mostra todas as sessões abertas com sua hipótese atual e próxima ação. Para retomar uma sessão específica: + +```bash +/gsd-debug continue +``` + +--- + +## Executar uma análise post-mortem com `/gsd-forensics` + +Se a causa não estiver clara a partir da saída de erro — por exemplo, planos referenciam arquivos inexistentes, a execução produziu resultados inesperados ou o estado parece corrompido — execute uma investigação forense: + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +O GSD analisa o histórico do git, a completude dos artefatos em `.planning/`, a consistência de STATE.md, o trabalho não commitado e as worktrees órfãs. Ele grava um relatório estruturado em `.planning/forensics/report-.md` e apresenta as etapas de remediação recomendadas. + +`/gsd-forensics` é somente leitura — ele nunca modifica os arquivos do seu projeto. + +**O que ele detecta:** + +- **Loop travado** — o mesmo arquivo aparece em três ou mais commits consecutivos em uma janela de tempo curta (confiança ALTA se as mensagens de commit forem semelhantes) +- **Artefatos ausentes** — uma fase tem commits mas não tem `SUMMARY.md` ou `VERIFICATION.md` +- **Trabalho abandonado** — alterações não commitadas com STATE.md mostrando execução em andamento e o último commit com mais de duas horas de idade +- **Falha ou interrupção** — alterações não commitadas combinadas com um estado de execução ativo e worktrees órfãs +- **Desvio de escopo** — commits recentes tocam arquivos fora do conjunto de arquivos esperado da fase atual + +--- + +## Retomar a execução após a recuperação + +Assim que o problema subjacente for resolvido, execute novamente o comando de execução: + +```bash +/gsd-execute-phase 1 +``` + +O GSD ignora planos cujo `SUMMARY.md` já existe e despacha executores apenas para os planos restantes. + +Se precisar executar novamente apenas uma onda específica: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +Se quiser validar a integridade de `.planning/` antes de despachar: + +```bash +/gsd-execute-phase 1 --validate +``` + +--- + +## Reverter com `/gsd-undo` + +Se a execução produziu código que você deseja descartar completamente, reverta usando o manifesto do plano em vez do `git revert` manual: + +### Reverter um único plano + +```bash +/gsd-undo --plan 03-02 +``` + +Reverte todos os commits do plano `02` da fase `3`. O GSD exibe uma porta de confirmação antes de gravar qualquer alteração. + +### Reverter uma fase inteira + +```bash +/gsd-undo --phase 03 +``` + +Reverte todos os commits da fase `3`. O GSD verifica se alguma fase subsequente depende desta fase e avisa você antes de prosseguir. + +### Selecionar interativamente a partir de commits recentes + +```bash +/gsd-undo --last 5 +``` + +Mostra os cinco commits GSD mais recentes e permite que você selecione quais reverter. + +--- + +## Restaurar o contexto da sessão após uma pausa + +Se você retornou ao projeto após uma reinicialização de contexto ou uma nova sessão: + +```bash +/gsd-resume-work +``` + +Restaura o contexto completo da sua sessão a partir do último handoff, incluindo a fase atual, bloqueadores e onde a execução parou. + +Como alternativa, para ver sua posição atual e avançar automaticamente para o próximo passo correto: + +```bash +/gsd-progress --next +``` + +--- + +## Relacionados + +- [Executar uma fase](execute-a-phase.md) +- [Recuperar e solucionar problemas](recover-and-troubleshoot.md) +- [Comandos](../COMMANDS.md) +- [Índice da documentação](../README.md) diff --git a/docs/pt-BR/how-to/design-a-ui-phase.md b/docs/pt-BR/how-to/design-a-ui-phase.md new file mode 100644 index 000000000..88eb10713 --- /dev/null +++ b/docs/pt-BR/how-to/design-a-ui-phase.md @@ -0,0 +1,149 @@ +# Como projetar uma fase de UI + +**Objetivo:** Produzir um contrato de design de UI bloqueado (`UI-SPEC.md`) que fixe decisões de espaçamento, cores, tipografia e textos antes que o planejador escreva as tarefas, prevenindo inconsistências visuais causadas por escolhas de estilo ad-hoc durante a execução. + +**Pré-requisitos:** `.planning/ROADMAP.md` deve existir. A fase precisa ter trabalho de frontend ou UI. Executar `/gsd-discuss-phase N` antes é fortemente recomendado — o pesquisador de UI lê `CONTEXT.md` para evitar fazer perguntas sobre decisões que você já tomou. + +--- + +## Decida se esta fase precisa de um contrato de UI + +Nem todas as fases precisam de `/gsd-ui-phase`. Use quando: + +- A fase introduz novas superfícies de UI (páginas, fluxos, layouts) +- Vários componentes serão construídos e a consistência visual é importante +- Você está iniciando o frontend de um novo projeto e precisa de uma linha de base do sistema de design +- Você está adicionando trabalho significativo de UI a um projeto existente e deseja bloquear tokens, espaçamento e cores antes da execução + +Pule quando: + +- A fase é puramente de backend, infraestrutura ou dados, sem saída voltada ao usuário +- Um UI-SPEC.md já existe para uma fase anterior e esta fase constrói sobre padrões visuais idênticos sem introduzir novas superfícies + +Se não tiver certeza, a trava de segurança irá alertá-lo: quando `workflow.ui_safety_gate` está habilitado (padrão), `/gsd-plan-phase` avisa ao detectar trabalho de frontend sem `UI-SPEC.md` e pergunta se deve executar `/gsd-ui-phase` primeiro. + +--- + +## Execute o contrato de design de UI + +```bash +/gsd-ui-phase 2 +``` + +Se nenhum número de fase for fornecido, o GSD Core usa a fase atual como alvo. + +O comando é executado em dois estágios: + +1. **`gsd-ui-researcher`** — lê `CONTEXT.md`, `RESEARCH.md` e `REQUIREMENTS.md` em busca de decisões existentes, detecta o estado do sistema de design (shadcn `components.json`, configuração do Tailwind, tokens existentes), e faz apenas as perguntas de design não respondidas em cinco áreas: espaçamento, cores, tipografia, textos e segurança do registro. +2. **`gsd-ui-checker`** — valida o `UI-SPEC.md` resultante em seis dimensões. Se problemas forem encontrados, um ciclo de revisão reexecuta o pesquisador (até duas iterações) visando apenas os itens sinalizados. + +**Saída:** `{padded_phase}-UI-SPEC.md` em `.planning/phases/{phase-dir}/`. + +--- + +## O que o UI-SPEC cobre + +O pesquisador bloqueia decisões em cinco áreas: + +| Área | Exemplos | +|---|---| +| **Espaçamento** | Escala base (4px ou 8px), alinhamento de grid, padding de componentes | +| **Cores** | Paleta primária, de destaque e neutra; regra 60/30/10; considerações de modo escuro | +| **Tipografia** | Famílias de fontes, restrições de escala de tamanho/peso, hierarquia de títulos | +| **Textos** | Rótulos de CTA, mensagens de estado vazio, textos de estado de erro, indicadores de carregamento | +| **Segurança do registro** | Protocolo de inspeção de componentes shadcn (veja abaixo) | + +O verificador valida a especificação em seis pilares, com pontuação de 1 a 4 cada: Textos, Visuais, Cores, Tipografia, Espaçamento e Design de Experiência (cobertura de estados de carregamento / erro / vazio). + +--- + +## Inicialização do shadcn + +Para projetos React, Next.js e Vite, o pesquisador oferece inicializar o shadcn se nenhum `components.json` for encontrado. O fluxo: + +1. Acesse `ui.shadcn.com/create` e configure seu preset (cores, raio de borda, fontes) +2. Copie a string do preset +3. Execute: + +```bash +npx shadcn init --preset +``` + +A string do preset torna-se um artefato de planejamento de primeira classe do GSD Core, reproduzível entre fases e marcos. + +--- + +## Trava de segurança do registro + +Registros shadcn de terceiros podem injetar código arbitrário. Quando `workflow.ui_safety_gate` está habilitado (padrão), a especificação exige estas etapas antes de instalar qualquer componente não oficial: + +```bash +npx shadcn view # inspect source before installing +npx shadcn diff # compare against the official registry +``` + +O verificador sinalizará a especificação como BLOCKED se a segurança do registro não for tratada. Desative a trava via `/gsd-settings` se o seu projeto não usa shadcn ou você tem um processo alternativo de verificação. + +--- + +## Use os achados do sketch como ponto de partida + +Se você já executou `/gsd-sketch --wrap-up`, o pesquisador de UI carrega `.claude/skills/sketch-findings-[project]/` automaticamente. Decisões pré-validadas (layout, paleta, tipografia, espaçamento) são tratadas como bloqueadas — o pesquisador não as pergunta novamente. Você verá uma nota no início da execução: + +```text +⚡ Sketch findings detected: .claude/skills/sketch-findings-[project]/SKILL.md + Pre-validated decisions (layout, palette, typography, spacing) should be treated + as locked — not re-asked. +``` + +Esta é a principal razão para executar `/gsd-sketch --wrap-up` antes de `/gsd-ui-phase`: transforma a exploração conversacional de design em entrada vinculante para o contrato. + +--- + +## Auditoria visual retroativa com `/gsd-ui-review` + +`/gsd-ui-review` é executado após a execução, não antes. Use-o para auditar o frontend implementado em relação ao UI-SPEC (ou em relação aos padrões abstratos de 6 pilares quando nenhuma especificação existir). + +```bash +/gsd-ui-review # audit the current phase +/gsd-ui-review 3 # audit phase 3 specifically +``` + +Funciona em qualquer projeto com código frontend — a inicialização de projeto GSD não é necessária. + +**O que verifica (6 pilares, pontuação de 1 a 4 cada):** + +1. Textos — rótulos de CTA, estados vazios, estados de erro +2. Visuais — pontos focais, hierarquia visual, acessibilidade de ícones +3. Cores — disciplina de uso de destaque, conformidade 60/30/10 +4. Tipografia — aderência às restrições de tamanho e peso de fonte +5. Espaçamento — alinhamento de grid, consistência de tokens +6. Design de Experiência — cobertura de estados de carregamento, erro e vazio + +**Saída:** `{padded_phase}-UI-REVIEW.md` com pontuações e as três principais correções prioritárias. Quando um servidor MCP de navegador como `gsd-browser` estiver configurado, a auditoria também captura capturas de tela com evidências visuais. + +**Armazenamento de capturas de tela:** As capturas de tela são salvas em `.planning/ui-reviews/`. Um `.gitignore` é criado automaticamente para evitar que arquivos binários cheguem ao git. As capturas de tela são limpas durante `/gsd-complete-milestone`. + +--- + +## Posição recomendada no ciclo de vida da fase + +```text +/gsd-discuss-phase N ← lock implementation preferences +/gsd-ui-phase N ← lock design contract (frontend phases) +/gsd-plan-phase N ← research + plan (reads UI-SPEC.md as context) +/gsd-execute-phase N ← parallel execution +/gsd-verify-work N ← manual UAT +/gsd-ui-review N ← retroactive visual audit (optional but recommended) +``` + +`/gsd-ui-phase` fica entre discussão e planejamento porque o planejador lê `UI-SPEC.md` como contexto de design — as tarefas em `PLAN.md` referenciam tokens de espaçamento, variáveis de cores e decisões de textos que a especificação bloqueou. + +--- + +## Relacionados + +- [Spike e sketch](spike-and-sketch.md) +- [Planejar uma fase](plan-a-phase.md) +- [Comandos](../COMMANDS.md) +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/how-to/discuss-a-phase.md b/docs/pt-BR/how-to/discuss-a-phase.md new file mode 100644 index 000000000..d2f9cda1b --- /dev/null +++ b/docs/pt-BR/how-to/discuss-a-phase.md @@ -0,0 +1,158 @@ +# Como discutir uma fase + +**Objetivo:** Reunir as decisões de implementação que uma fase precisa antes do planejamento começar — para que o pesquisador e o planejador possam agir sem precisar consultar você novamente. + +**Pré-requisitos:** `.planning/ROADMAP.md` deve existir. Caso contrário, execute `/gsd-new-project` primeiro. + +--- + +## Escolha seu modo de discussão + +GSD Core oferece dois modos. Escolha com base em quão bem compreendida é a base de código. + +**Se você quiser expressar suas preferências de implementação antecipadamente** (modo de entrevista, padrão): + +```bash +/gsd-discuss-phase 2 +``` + +Claude identifica áreas cinzentas no escopo da fase, permite que você selecione quais discutir e trabalha com aproximadamente quatro perguntas por área. + +**Se a base de código já tem padrões claros e você acha a maioria das perguntas óbvias** (modo de suposições): + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode assumptions +/gsd-discuss-phase 2 +``` + +Claude lê de 5 a 15 arquivos relevantes da base de código por meio de um subagente, formula suposições com evidências e níveis de confiança, e as apresenta para confirmação ou correção. Normalmente 2 a 4 interações em vez de 15 a 20. + +Para voltar ao modo anterior: + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode discuss +``` + +Veja [Modos de discussão explicados](../workflow-discuss-mode.md) para uma comparação completa, incluindo quando cada modo tende a economizar tempo. + +--- + +## Discutir todas as áreas cinzentas sem a etapa de seleção + +Por padrão, Claude apresenta as áreas cinzentas e pergunta quais você deseja cobrir. Se você quiser trabalhar em todas elas sem esse prompt de seleção: + +```bash +/gsd-discuss-phase 2 --all +``` + +--- + +## Acelerar uma fase direta + +**Se a fase é bem compreendida e você quer que Claude escolha os padrões recomendados sem fazer perguntas:** + +```bash +/gsd-discuss-phase 3 --auto +``` + +Claude seleciona a resposta recomendada para cada pergunta e registra as escolhas. Use isso para fases em que as decisões são de baixo impacto ou já estão implícitas pelas fases anteriores. + +**Se você tem restrições de sessão remota (sem menus TUI):** + +```bash +/gsd-discuss-phase 2 --text +``` + +Todos os prompts são renderizados como listas numeradas em texto simples em vez de seletores interativos. + +--- + +## Responder perguntas em grupos + +Se você preferir responder várias perguntas de uma vez em vez de uma por uma: + +```bash +/gsd-discuss-phase 2 --batch +``` + +Claude agrupa de 2 a 5 perguntas por turno. + +--- + +## Adicionar análise de trade-offs a cada pergunta + +Se você quiser uma tabela comparativa das opções antes de se comprometer: + +```bash +/gsd-discuss-phase 2 --analyze +``` + +--- + +## Responder em massa a partir de um arquivo preparado + +Se você tem um arquivo de respostas preparado e quer enviar todas as decisões em uma única passagem: + +```bash +/gsd-discuss-phase 1 --power +``` + +--- + +## Visualizar as suposições de Claude antes de discutir + +**Se você quiser ver o que Claude assumiria e faria antes de qualquer sessão interativa** — útil para validar o alinhamento antes de investir tempo em discussão: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +Claude exibe suas suposições (com evidências da base de código e níveis de confiança) e encerra. Nenhum CONTEXT.md é escrito. Revise a saída e, se algo precisar de correção, execute uma sessão normal de discussão ou em modo de suposições. + +--- + +## O que o CONTEXT.md contém + +Tanto o modo de discussão quanto o modo de suposições produzem o mesmo `{phase}-CONTEXT.md` no diretório da fase. Os agentes downstream (pesquisador, planejador, verificador de plano) leem esse arquivo de forma idêntica independentemente do modo que o produziu. Ele contém seis seções: + +| Seção | Finalidade | +|---|---| +| `` | Delimitação da fase — o que esta fase entrega | +| `` | Decisões de implementação confirmadas durante a sessão | +| `` | Especificações, ADRs e documentos que os agentes downstream devem ler | +| `` | Recursos reutilizáveis, padrões e pontos de integração | +| `` | Referências e preferências do usuário | +| `` | Ideias anotadas para fases futuras | + +A seção `` é obrigatória. Se você referenciar um documento, especificação ou ADR durante a discussão, Claude o adiciona imediatamente e o lê para embasar as perguntas subsequentes. + +Veja [Esquema do CONTEXT.md](../reference/context-md.md) para a referência completa dos campos. + +--- + +## Como as decisões alimentam o planejamento + +Quando você executar `/gsd-plan-phase` em seguida, o planejador lê CONTEXT.md para saber quais decisões estão confirmadas. Ele não vai refazer perguntas já respondidas aqui. O pesquisador o lê primeiro para saber o que investigar. + +**Se o CONTEXT.md estiver ausente quando você executar `/gsd-plan-phase`**, você terá a opção de continuar sem contexto (os planos usam apenas pesquisa e requisitos, sem suas preferências de design) ou executar `/gsd-discuss-phase` primeiro. + +--- + +## Se você tiver um PRD ou documento de critérios de aceitação + +Pule a fase de discussão completamente e vá direto para o planejamento: + +```bash +/gsd-plan-phase 1 --prd path/to/prd.md +``` + +O planejador sintetiza o CONTEXT.md a partir do PRD e trata todos os requisitos como decisões confirmadas. + +--- + +## Relacionados + +- [Planejar uma fase](plan-a-phase.md) +- [Modos de discussão](../workflow-discuss-mode.md) +- [Esquema do CONTEXT.md](../reference/context-md.md) +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/how-to/drive-gsd-from-a-tracker-issue.md b/docs/pt-BR/how-to/drive-gsd-from-a-tracker-issue.md new file mode 100644 index 000000000..e03c28774 --- /dev/null +++ b/docs/pt-BR/how-to/drive-gsd-from-a-tracker-issue.md @@ -0,0 +1,176 @@ +# Como conduzir o GSD Core a partir de uma issue do rastreador + +**Objetivo:** Levar uma única issue bem delimitada do GitHub, Linear ou Jira por todo o pipeline do GSD — desde o workspace isolado até o PR mesclado — usando apenas comandos já existentes no GSD Core, sem scripts customizados ou integrações com rastreadores. + +**Pré-requisitos:** GSD Core está instalado. A issue tem escopo delimitado, critérios de aceitação observáveis e nenhum bloqueador upstream. + +Para os conceitos e a justificativa de design por trás desse padrão, consulte [Orquestração orientada a issues explicada](../issue-driven-orchestration.md). + +--- + +## Passo 1: Mapear a issue para uma fase + +Abra sua issue no rastreador e decida como ela se encaixa no `ROADMAP.md`: + +- **A issue corresponde a uma fase existente** → anote o número da fase e avance para o Passo 2. +- **A issue é um trabalho novo independente** → adicione uma fase: + +```bash +/gsd-phase "Descrição correspondente ao título da issue" +``` + +- **A issue é urgente e precisa ser inserida entre fases existentes** → insira uma fase decimal: + +```bash +/gsd-phase --insert 3 "Fix: descrição da issue" +``` + +Copie a URL da issue do rastreador. Você irá colá-la no `CONTEXT.md` no Passo 3 para que a rastreabilidade sobreviva à compactação de contexto. + +--- + +## Passo 2: Criar um workspace isolado + +Cada issue recebe seu próprio workspace — um git worktree com um diretório `.planning/` independente. Trabalhos parciais, planos abandonados e commits exploratórios ficam fora do `main`. + +```bash +/gsd-workspace --new --name my-issue-slug --repos . --strategy worktree +``` + +Entre no diretório do workspace antes de continuar: + +```bash +cd ~/gsd-workspaces/my-issue-slug +``` + +--- + +## Passo 3: Discutir a fase + +Execute discuss-phase para definir as decisões de implementação antes que qualquer planejamento aconteça. Quando a sessão abrir, cole a URL da issue do rastreador na discussão para que ela seja capturada no `CONTEXT.md`. + +```bash +/gsd-discuss-phase N +``` + +O GSD pergunta sobre ambiguidades no escopo da issue — tratamento de erros, casos extremos, contratos de interface, escolhas tecnológicas. Suas respostas moldam o plano que se segue. + +Se você já sabe todas as respostas e quer avançar rapidamente: + +```bash +/gsd-discuss-phase N --auto +``` + +--- + +## Passo 4: Planejar a fase + +```bash +/gsd-plan-phase N +``` + +O GSD cria agentes de pesquisa, lê suas decisões do `CONTEXT.md` (incluindo a URL da issue) e produz arquivos `PLAN.md` atômicos. Um verificador de planos valida cada plano antes de salvá-lo. + +Se você quiser revisão por pares de CLIs externas de IA antes da execução (recomendado para mudanças significativas): + +```bash +/gsd-review --phase N +/gsd-plan-phase N --reviews +``` + +Ou execute o loop completo de planejar–revisar–convergir até que não haja mais preocupações de nível HIGH: + +```bash +/gsd-plan-review-convergence N +``` + +--- + +## Passo 5: Executar a fase + +Para execução interativa, fase por fase: + +```bash +/gsd-execute-phase N +``` + +Para uma execução sem supervisão por todas as fases restantes: + +```bash +/gsd-autonomous +``` + +Para um painel interativo onde você pode acompanhar o progresso e despachar trabalho entre fases: + +```bash +/gsd-manager +``` + +As três abordagens atualizam o `STATE.md`, fazem commit de cada tarefa atomicamente e executam o verificador pós-fase. + +--- + +## Passo 6: Verificar o trabalho + +```bash +/gsd-verify-work N +``` + +O GSD percorre os critérios de aceitação do objetivo da fase (que reflete sua issue do rastreador) um de cada vez. Se algo falhar, o GSD diagnostica a causa raiz e cria um plano de correção. Execute novamente e re-verifique até que todas as verificações passem. + +Trate `verification_failed` como um bloqueador mesmo quando o código parece correto — a falha geralmente revela um critério de aceitação não atendido da issue original. + +--- + +## Passo 7: Revisar e publicar + +Execute uma revisão de código antes de abrir o PR: + +```bash +/gsd-code-review N +/gsd-code-review N --fix +``` + +Em seguida, crie o PR: + +```bash +/gsd-ship N +``` + +O GSD monta o corpo do PR a partir dos seus artefatos de planejamento: objetivo da fase, resumo das mudanças, requisitos atendidos, status de verificação e decisões-chave. Inclua `Closes #NNN` ou `Fixes #NNN` no corpo do PR (ou configure via `/gsd-config`) para que a issue do rastreador seja fechada automaticamente quando o PR for mesclado. + +--- + +## Passo 8: Registrar trabalho de acompanhamento + +Ao trabalhar na issue, você frequentemente descobrirá trabalhos relacionados. Registre-os sem perder o contexto: + +```bash +/gsd-capture "Acompanhamento: descrição do trabalho descoberto" # Adicionar como tarefa +/gsd-capture --seed "Ideia que vale uma fase futura" # Preservar para o próximo milestone +/gsd-capture --backlog "Não urgente, mas vale registrar" # Arquivar no backlog +``` + +O GSD não publica no seu rastreador automaticamente. Criar uma issue no rastreador a partir dos acompanhamentos registrados é uma etapa manual separada — isso mantém a revisão humana no ciclo. + +--- + +## Condicionais + +| Situação | O que fazer | +|-----------|-----------| +| A issue é muito pequena (typo, mudança de config) | Pule workspace + discuss + plan; use `/gsd-quick` em vez disso | +| A issue tem múltiplas subtarefas independentes | Use `/gsd-manager` para paralelizar a execução entre planos | +| A issue está bloqueada em outra issue | Não inicie até que o bloqueador upstream seja resolvido; o GSD não possui poller automático de dependências | +| O escopo da issue se mostra maior do que o esperado durante a execução | Pare, execute `/gsd-phase --insert N` para adicionar subfases, continue | +| Você quer pular a discussão interativa | Use a flag `--auto` com `/gsd-discuss-phase`, ou defina `workflow.skip_discuss: true` para automação em todo o projeto | +| Múltiplas issues formam uma release coerente | Execute `/gsd-new-milestone` para agrupá-las e `/gsd-autonomous` para executar em sequência | + +--- + +## Relacionados + +- [Orquestração orientada a issues explicada](../issue-driven-orchestration.md) +- [Isolar trabalho com workspaces](isolate-work-with-workspaces.md) +- [Verificar e publicar](verify-and-ship.md) +- [índice de documentação](../README.md) diff --git a/docs/pt-BR/how-to/execute-a-phase.md b/docs/pt-BR/how-to/execute-a-phase.md new file mode 100644 index 000000000..7ea493bb3 --- /dev/null +++ b/docs/pt-BR/how-to/execute-a-phase.md @@ -0,0 +1,119 @@ +# Como executar uma fase + +**Objetivo:** Executar uma fase planejada por meio de execução paralela em ondas e registrar cada plano como um commit git atômico. + +**Pré-requisitos:** A fase deve ter pelo menos um arquivo `PLAN.md`. Se o planejamento ainda não foi concluído, execute `/gsd-plan-phase N` primeiro — consulte [Planejar uma fase](plan-a-phase.md). + +--- + +## Executar a fase completa + +```bash +/gsd-execute-phase 1 +``` + +O GSD Core lê os arquivos de plano da fase, agrupa-os em ondas de dependência e cria um agente executor independente por plano. Cada executor confirma seu trabalho atomicamente antes de a próxima onda começar. + +Antes de qualquer agente ser despachado, o GSD Core exibe uma tabela de ondas: + +``` +## Execution Plan + +Phase 1: Core middleware — 3 plans across 2 wave(s) + +| Wave | Plans | What it builds | +|------|----------------|---------------------------| +| 1 | 01-01, 01-02 | Core validation function | +| 2 | 01-03 | Express middleware wrapper | +``` + +Os planos da Onda 1 são executados em paralelo (cada um em um worktree git isolado). A Onda 2 aguarda até que todos os commits da Onda 1 sejam mesclados. + +Para o modelo de coordenação de agentes subjacente, consulte [Orquestração multi-agente](../explanation/multi-agent-orchestration.md). + +--- + +## Executar uma única onda + +Se você quiser executar apenas uma onda — por exemplo, para inspecionar a saída da Onda 1 antes de avançar para a Onda 2 — use `--wave N`: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +O GSD Core executa apenas os planos da Onda 2. Ele primeiro verifica se todas as ondas anteriores estão completas; se algum plano da Onda 1 ainda estiver marcado como incompleto, ele para e solicita que você conclua as ondas anteriores. + +--- + +## Validar o estado antes da execução + +Se você suspeitar que o diretório `.planning/` está fora de sincronia com o sistema de arquivos — por exemplo, após uma falha ou uma execução anterior interrompida — passe `--validate`: + +```bash +/gsd-execute-phase 1 --validate +``` + +O GSD Core executa uma verificação de consistência de estado antes de criar qualquer executor. Desvios detectados são relatados e você pode aceitá-los ou corrigi-los antes de prosseguir. + +--- + +## Retomar uma execução paralisada + +Se a execução parar no meio — um erro de cota, uma queda de rede ou uma sessão travada — o progresso no nível de onda é preservado. O GSD Core verifica a existência de um arquivo `SUMMARY.md` para cada plano; planos que já possuem esse arquivo são ignorados automaticamente ao reexecutar: + +```bash +/gsd-execute-phase 1 +``` + +O GSD Core ignorará os planos onde `SUMMARY.md` já existe e retomará a partir do primeiro plano incompleto. + +**Se commits existem mas `SUMMARY.md` está ausente** (o executor confirmou o commit mas não escreveu o resumo antes de a sessão encerrar), o GSD Core exibe uma porta de retomada segura e oferece três opções: + +- `close out manually` — inspecione os commits, escreva o `SUMMARY.md` e reexecute. +- `re-execute from scratch` — reverta ou substitua os commits parciais antes de despachar um novo executor. +- `mark-and-skip` — registre a anomalia e prossiga, somente com confirmação explícita. + +Para diagnóstico sistemático de falhas, consulte [Depurar uma execução com falha](debug-a-failed-execution.md). + +--- + +## Onde os resultados ficam armazenados + +Após a conclusão de todas as ondas, o diretório da fase contém: + +``` +.planning/phases/01-/ + 01-01-SUMMARY.md # O que o plano 01 construiu, arquivos principais, desvios + 01-02-SUMMARY.md + 01-03-SUMMARY.md + VERIFICATION.md # Status de aprovação/reprovação por requisito +``` + +`STATE.md` e `ROADMAP.md` são atualizados automaticamente após a conclusão de todas as ondas. `VERIFICATION.md` é gerado somente quando a fase está totalmente completa. + +O histórico git exibirá um commit por tarefa (de cada executor), seguido de commits de rastreamento do orquestrador. + +--- + +## Execução Cross-AI + +Para delegar a execução a uma CLI de IA externa (Codex, Gemini, etc.) configurada em `workflow.cross_ai_command`: + +```bash +/gsd-execute-phase 2 --cross-ai +``` + +Para forçar a execução local mesmo quando a execução cross-AI está habilitada na configuração: + +```bash +/gsd-execute-phase 2 --no-cross-ai +``` + +--- + +## Relacionados + +- [Planejar uma fase](plan-a-phase.md) +- [Verificar e publicar](verify-and-ship.md) +- [Depurar uma execução com falha](debug-a-failed-execution.md) +- [Comandos](../COMMANDS.md) diff --git a/docs/pt-BR/how-to/handle-quick-and-fast-tasks.md b/docs/pt-BR/how-to/handle-quick-and-fast-tasks.md new file mode 100644 index 000000000..1b0ff1315 --- /dev/null +++ b/docs/pt-BR/how-to/handle-quick-and-fast-tasks.md @@ -0,0 +1,121 @@ +# Como lidar com tarefas rápidas e ágeis + +Nem todo trabalho cabe dentro de uma fase. O GSD oferece dois comandos leves para trabalhos que não precisam do ciclo completo de discussão → planejamento → execução → verificação. + +Para contexto sobre quando o pipeline completo de fases vale o custo, consulte [Engenharia de contexto](../explanation/context-engineering.md). + +--- + +## Decidindo qual comando usar + +| Situação | Comando | +|-----------|---------| +| Corrigir um bug, adicionar uma funcionalidade pequena ou qualquer tarefa que não possa ser resumida como uma única edição trivial | `/gsd-quick` | +| Corrigir um erro de digitação, atualizar um valor de configuração, adicionar uma entrada ao `.gitignore` ou qualquer alteração que toque ≤ 3 arquivos e leve menos de um minuto | `/gsd-fast` | +| A tarefa tem incógnitas, precisa de pesquisa ou vai tocar em mais do que um punhado de arquivos | `/gsd-quick` com `--research` | + +**A regra prática:** se você hesitar por um momento sobre se a tarefa é trivial, use `/gsd-quick`. O `/gsd-fast` redireciona automaticamente para `/gsd-quick` se o escopo parecer não trivial. + +--- + +## `/gsd-quick` — tarefas ad-hoc com garantias GSD + +O `/gsd-quick` executa um planejador e executor com as mesmas garantias de commit atômico e rastreamento no STATE.md que uma fase completa, mas sem o custo de uma fase (sem entrada no ROADMAP, sem fase de discussão, sem coordenação de ondas entre múltiplos planos). + +### Uso básico + +```bash +/gsd-quick +``` + +O GSD solicita uma descrição da tarefa, então planeja e executa. Os artefatos ficam em `.planning/quick/`. + +Você também pode passar a descrição diretamente: + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +### Flags + +Adicione flags para incluir mais do pipeline de qualidade quando a tarefa exigir. + +| Flag | O que adiciona | +|------|-------------| +| `--discuss` | Uma discussão leve de pré-planejamento que revela áreas cinzentas e registra suas decisões em um `CONTEXT.md` antes de o planejador rodar | +| `--research` | Um agente de pesquisa focado investiga abordagens, bibliotecas e armadilhas antes do planejamento | +| `--validate` | Verificação do plano (até 2 iterações) mais verificação pós-execução | +| `--full` | Tudo o que foi descrito acima — equivalente a `--discuss --research --validate` | + +As flags se combinam livremente: + +```bash +/gsd-quick --research --validate # research + plan-checking + verification, no discuss +/gsd-quick --discuss # just surface grey areas before planning +/gsd-quick --full # the complete quality pipeline +``` + +### Quando adicionar flags + +- Adicione `--research` quando não tiver certeza de como abordar uma tarefa ou qual biblioteca usar. +- Adicione `--validate` quando a tarefa tocar caminhos de código críticos e você quiser que um agente verificador confirme se os requisitos foram atendidos. +- Adicione `--discuss` quando a tarefa tiver escolhas de design que você quer definir antes de o planejador rodar — por exemplo, quando o comportamento correto de tratamento de erros não é óbvio. +- Use `--full` quando uma tarefa for genuinamente significativa e você normalmente a planejaria como uma fase, mas ela não pertence ao ROADMAP. + +### Listando e retomando tarefas rápidas + +```bash +/gsd-quick list # show all quick tasks with status +/gsd-quick status my-task-slug # show status of a specific task +/gsd-quick resume my-task-slug # resume an interrupted task +``` + +--- + +## `/gsd-fast` — edições triviais inline + +O `/gsd-fast` faz o trabalho diretamente no contexto atual. Não há subagentes, nenhum `PLAN.md` e nenhuma pesquisa. É adequado apenas para alterações que você mesmo poderia fazer em menos de um minuto. + +```bash +/gsd-fast "fix typo in README" +/gsd-fast "add .env to .gitignore" +``` + +Se você omitir a descrição, o GSD vai solicitá-la. + +O `/gsd-fast` verifica se a tarefa é realmente trivial antes de prosseguir. Se julgar o escopo muito grande, ele para e redireciona você: + +```text +This looks like it needs planning. Use /gsd-quick instead: + /gsd-quick "your task description" +``` + +Após fazer a alteração, o `/gsd-fast` faz commit atomicamente e, se uma tabela `Quick Tasks Completed` existir em `.planning/STATE.md`, acrescenta uma linha a ela. + +--- + +## O que o `/gsd-quick` faz que o `/gsd-fast` não faz + +| Capacidade | `/gsd-fast` | `/gsd-quick` | +|------------|------------|--------------| +| Planejador subagente | Não | Sim | +| Executor subagente | Não | Sim | +| Agente de pesquisa | Não | Opcional (`--research`) | +| Verificação de plano | Não | Opcional (`--validate`) | +| Verificação pós-execução | Não | Opcional (`--validate`) | +| Fase de discussão | Não | Opcional (`--discuss`) | +| Isolamento em worktree | Não | Sim (padrão) | +| Commits atômicos por tarefa | Commit único | Um por tarefa do plano | +| Rastreamento no STATE.md | Linha acrescentada se a tabela existir | Sempre atualizado | +| Artefatos em `.planning/quick/` | Não | Sim | + +A distinção principal é o isolamento de subagentes. O `/gsd-quick` gera um planejador e executor novos em janelas de contexto separadas, o que significa que o trabalho é planejado adequadamente, os commits são atômicos por tarefa e o orquestrador pode verificar os resultados. O `/gsd-fast` usa apenas a janela de contexto atual e é intencionalmente limitado a alterações triviais o suficiente para não precisar de nada disso. + +--- + +## Relacionados + +- [O ciclo de fases](../explanation/the-phase-loop.md) +- [Engenharia de contexto](../explanation/context-engineering.md) +- [Comandos](../COMMANDS.md) +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/how-to/install-on-your-runtime.md b/docs/pt-BR/how-to/install-on-your-runtime.md new file mode 100644 index 000000000..ba0d31ea1 --- /dev/null +++ b/docs/pt-BR/how-to/install-on-your-runtime.md @@ -0,0 +1,291 @@ +# Como instalar o GSD Core no seu ambiente de execução + +Instale o GSD Core (`@opengsd/gsd-core`) no ambiente de codificação com IA que você usa no dia a dia. Este guia apresenta o caminho padrão de instalação para cada ambiente suportado e, em seguida, cobre o caminho manual para máquinas sem Node.js. + +**O que você precisa:** Node.js 18+ e npm (ou npx). Se você não tem Node.js, vá para [Instalando sem Node.js](#instalando-sem-nodejs). + +--- + +## Por que o instalador é necessário + +O GSD Core distribui arquivos de agente e comando no formato nativo de frontmatter do Claude Code. Cada ambiente suportado espera um schema, layout de diretório e sintaxe de invocação de comandos diferente. O instalador realiza as transformações necessárias — por exemplo, convertendo listas de ferramentas e valores de cor para o OpenCode, escrevendo entradas TOML de agente para o Codex e reescrevendo o corpo de cada comando do formato com hífen (`/gsd-update`) para o formato com dois-pontos (`/gsd:update`) para o Gemini CLI. + +**Não copie arquivos de `agents/` ou `commands/` diretamente.** Fazer isso ignora as transformações e produz erros de validação de schema ou comandos ausentes. + +--- + +## Instalação padrão + +Execute o instalador a partir de qualquer diretório. Ele solicita o seu ambiente e se a instalação deve ser global (todos os projetos) ou local (apenas este projeto). + +```bash +npx @opengsd/gsd-core@latest +``` + +Esse é o único comando necessário para uma instalação nova ou para executar o instalador novamente após trocar de ambiente. + +--- + +## Instruções por ambiente + +### Claude Code + +```bash +npx @opengsd/gsd-core@latest --claude --global +``` + +As habilidades são instaladas em `~/.claude/`. Os comandos aparecem como slash commands `/gsd-*` na sua próxima sessão do Claude Code. Reinicie o Claude Code para carregá-los. + +**Substituir o diretório de instalação:** + +```bash +CLAUDE_CONFIG_DIR=~/.claude-alt npx @opengsd/gsd-core@latest --claude --global +``` + +--- + +### Gemini CLI + +```bash +npx @opengsd/gsd-core@latest --gemini --global +``` + +As habilidades são instaladas em `~/.gemini/`. O instalador reescreve todos os corpos de comando para o namespace de dois-pontos do Gemini (`/gsd:update`, `/gsd:config`, etc.). Reinicie o Gemini CLI após a instalação. + +**Substituir o diretório de instalação:** + +```bash +GEMINI_CONFIG_DIR=~/.gemini-alt npx @opengsd/gsd-core@latest --gemini --global +``` + +--- + +### OpenCode + +```bash +npx @opengsd/gsd-core@latest --opencode --global +``` + +As habilidades são instaladas em `~/.config/opencode/` (XDG) ou `~/.opencode/`. O instalador converte o frontmatter dos agentes para o schema do OpenCode — removendo o campo `tools:` e convertendo valores de cor para hex. Consulte [Instalando sem Node.js — transformações do OpenCode](#opencode--transformações-necessárias) se você precisar entender o que muda. + +**Substituir o diretório de instalação:** + +```bash +OPENCODE_CONFIG_DIR=~/.config/opencode-alt npx @opengsd/gsd-core@latest --opencode --global +``` + +--- + +### Kilo + +```bash +npx @opengsd/gsd-core@latest --kilo --global +``` + +As habilidades são instaladas em `~/.config/kilo/` (XDG) ou `~/.kilo/`. Usa o mesmo formato de comando markdown plano no estilo OpenCode. + +**Substituir o diretório de instalação:** + +```bash +KILO_CONFIG_DIR=~/.config/kilo-alt npx @opengsd/gsd-core@latest --kilo --global +``` + +--- + +### Codex + +```bash +npx @opengsd/gsd-core@latest --codex --global +``` + +As habilidades são instaladas em `~/.codex/skills/gsd-*/SKILL.md`. Os agentes são registrados com entradas TOML por agente em `config.toml`. Reinicie o Codex (ou execute `codex --reload`) após a instalação. + +**Versão mínima suportada:** Codex CLI 0.130.0. Versões anteriores tinham varredura adicional de raiz de habilidades que pode produzir listagens duplicadas. + +--- + +### GitHub Copilot + +```bash +npx @opengsd/gsd-core@latest --copilot --global +``` + +As habilidades são instaladas em `~/.copilot/`. O GSD é instalado como arquivos de agente `.md` e arquivos de instrução de repositório. + +**Substituir o diretório de instalação:** + +```bash +COPILOT_CONFIG_DIR=~/.copilot-alt npx @opengsd/gsd-core@latest --copilot --global +``` + +--- + +### Cursor + +```bash +npx @opengsd/gsd-core@latest --cursor --global +``` + +As habilidades são instaladas em `~/.cursor/`. O GSD instala habilidades, agentes e referências de regras. + +**Substituir o diretório de instalação:** + +```bash +CURSOR_CONFIG_DIR=~/.cursor-alt npx @opengsd/gsd-core@latest --cursor --global +``` + +--- + +### Windsurf + +```bash +npx @opengsd/gsd-core@latest --windsurf --global +``` + +As habilidades são instaladas em `~/.codeium/windsurf/`. O GSD instala habilidades, agentes e regras de workspace. + +**Substituir o diretório de instalação:** + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-alt npx @opengsd/gsd-core@latest --windsurf --global +``` + +--- + +### Cline + +O Cline usa uma integração baseada em regras — o GSD é instalado como `.clinerules` em vez de slash commands. + +```bash +# Instalação global (todos os projetos) +npx @opengsd/gsd-core@latest --cline --global + +# Instalação local (apenas este projeto) +npx @opengsd/gsd-core@latest --cline --local +``` + +Instalações globais escrevem em `~/.cline/`. Instalações locais escrevem em `./.cline/`. As regras são carregadas automaticamente pelo Cline — nenhum slash command personalizado é registrado. + +--- + +### CodeBuddy + +```bash +npx @opengsd/gsd-core@latest --codebuddy --global +``` + +As habilidades são instaladas em `~/.codebuddy/skills/gsd-*/SKILL.md`. + +--- + +### Qwen Code + +O Qwen Code usa o mesmo padrão de habilidades abertas do Claude Code 2.1.88+. + +```bash +npx @opengsd/gsd-core@latest --qwen --global +``` + +As habilidades são instaladas em `~/.qwen/skills/gsd-*/SKILL.md`. + +**Substituir o diretório de instalação:** + +```bash +QWEN_CONFIG_DIR=~/.qwen-alt npx @opengsd/gsd-core@latest --qwen --global +``` + +--- + +### Augment Code + +```bash +npx @opengsd/gsd-core@latest --augment --global +``` + +As habilidades são instaladas em `~/.augment/`. O GSD instala habilidades e agentes. Sem posse de hook ou statusline. + +--- + +### Antigravity + +```bash +npx @opengsd/gsd-core@latest --antigravity --global +``` + +O instalador detecta automaticamente o diretório de configuração do Antigravity (`~/.gemini/antigravity`, `~/.gemini/antigravity-ide` ou `~/.gemini/antigravity-cli`). Usa a política de configurações compatível com Gemini. + +**Substituir o diretório de instalação:** + +```bash +ANTIGRAVITY_CONFIG_DIR=~/.gemini/antigravity-alt npx @opengsd/gsd-core@latest --antigravity --global +``` + +--- + +### Trae + +```bash +npx @opengsd/gsd-core@latest --trae --global +``` + +As habilidades são instaladas em `~/.trae/`. O GSD instala habilidades, agentes e referências de regras. + +--- + +## Instalação local vs global + +Todos os exemplos acima usam `--global`, que instala o GSD uma vez para a sua conta de usuário. Para limitar uma instalação a um único projeto, substitua `--global` por `--local`: + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +Uma instalação local escreve no diretório `.claude/` na raiz do seu projeto. As configurações de instalação local têm precedência sobre as globais quando ambas existem. + +--- + +## Instalando edições de pré-lançamento (Next / Nightly / Insiders / Preview) + +As edições de pré-lançamento dos ambientes (Windsurf Next, Cursor Nightly, VS Code Insiders, canais de preview do Codex, etc.) leem de um diretório de configuração irmão. Defina a variável de ambiente `*_CONFIG_DIR` correspondente antes de executar o instalador: + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global +``` + +Selecione o ambiente estável correspondente no prompt do instalador. O GSD não enumera as edições de pré-lançamento como ambientes nomeados separados — elas são suportadas com melhor esforço por meio desse mecanismo de variável de ambiente e não são testadas separadamente no CI de lançamento. + +--- + +## Instalando sem Node.js + +Se você não pode executar `npx` (por exemplo, em uma máquina Windows sem Node.js), você tem duas opções. + +**Opção A — Use uma máquina que tenha Node.js.** Qualquer máquina com Node.js serve: WSL, uma VM Linux, um runner de CI ou um contêiner Docker. Execute o instalador lá e, em seguida, copie o diretório de saída para a sua máquina de destino. Para o OpenCode: + +```bash +npx @opengsd/gsd-core@latest --opencode --global +# Depois copie ~/.config/opencode/agents/ para a máquina Windows +``` + +**Opção B — Transforme manualmente os arquivos-fonte.** Os arquivos-fonte dos agentes estão em `agents/` no repositório do GSD Core e estão no formato nativo de frontmatter do Claude Code. Cada ambiente espera um formato diferente. Para as transformações de campo exatas por ambiente, consulte [Instalação manual / configuração sem Node.js](../USER-GUIDE.md#manual-install--no-nodejs-setup) no Guia do Usuário, que cobre as transformações do OpenCode em detalhes completos e aponta para as funções `convert*Frontmatter` do instalador para outros ambientes. + +--- + +## Após a instalação + +Reinicie seu ambiente para carregar os novos comandos e agentes. Em seguida, inicie seu primeiro projeto: + +```bash +/gsd-new-project +``` + +Se o comando não for encontrado após o reinício, verifique se o diretório de instalação corresponde ao caminho de configuração esperado pelo ambiente. A seção de edições de pré-lançamento acima cobre a incompatibilidade mais comum. + +--- + +## Relacionados + +- [Seu primeiro projeto](../tutorials/your-first-project.md) +- [Atualizar o GSD Core](update-gsd.md) +- [Configuração](../CONFIGURATION.md) +- [Índice da documentação](../README.md) diff --git a/docs/pt-BR/how-to/isolate-work-with-workspaces.md b/docs/pt-BR/how-to/isolate-work-with-workspaces.md new file mode 100644 index 000000000..d0ab3d0f3 --- /dev/null +++ b/docs/pt-BR/how-to/isolate-work-with-workspaces.md @@ -0,0 +1,144 @@ +# Como isolar trabalho com workspaces + +**Objetivo:** Criar um ambiente GSD completamente isolado — worktree git separado, raiz `.planning/` independente e, opcionalmente, múltiplos repositórios — para branches de funcionalidades ou trabalho em múltiplos repositórios. + +**Pré-requisitos:** O `git` está instalado e o repositório oferece suporte a worktrees. Para workspaces com múltiplos repositórios, os repositórios de destino existem em sua máquina local ou são acessíveis por caminho. + +--- + +## O que são workspaces + +Um workspace é um ambiente autocontido que combina um ou mais worktrees git (ou clones) com seu próprio diretório raiz `.planning/`. Cada workspace possui: + +- Seu próprio diretório `.planning/` que é **completamente independente** do `.planning/` do repositório de origem — não é um subdiretório dele +- Seu próprio manifesto `WORKSPACE.md` que rastreia os repositórios membros +- Worktrees git (padrão) ou clones completos dos repositórios especificados, com checkout em uma branch dedicada (padrão: `workspace/`) + +Por padrão, os workspaces ficam em `~/gsd-workspaces//`. + +``` +~/gsd-workspaces/ +└── feature-b/ + ├── WORKSPACE.md ← manifesto + ├── .planning/ ← estado GSD totalmente independente + │ ├── PROJECT.md + │ ├── ROADMAP.md + │ └── ... + ├── hr-ui/ ← worktree ou clone do repositório hr-ui + └── ZeymoAPI/ ← worktree ou clone do repositório ZeymoAPI +``` + +Como o `.planning/` do workspace é separado dos repositórios de origem, não há sobreposição ou conflito com o estado de planejamento existente nos próprios repositórios de origem. + +--- + +## Criar um workspace para múltiplos repositórios + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI +``` + +O GSD cria worktrees de `hr-ui` e `ZeymoAPI` dentro de `~/gsd-workspaces/feature-b/`, faz checkout de uma branch `workspace/feature-b` em cada um, grava o `WORKSPACE.md` e cria um diretório `.planning/` vazio pronto para `/gsd-new-project`. + +Para personalizar o local: + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI --path /projects/feature-b +``` + +--- + +## Criar um workspace para o repositório atual + +Quando você deseja isolamento por branch de funcionalidade em um único repositório — branch independente, `.planning/` independente, sem vazamento de estado da branch principal: + +```bash +/gsd-workspace --new --name payments-rework --repos . +``` + +O `.` instrui o GSD a criar um worktree do repositório atual. O worktree recebe checkout em `workspace/payments-rework`. + +Para forçar um clone completo em vez de um worktree: + +```bash +/gsd-workspace --new --name payments-rework --repos . --strategy clone +``` + +--- + +## Especificar uma branch explicitamente + +```bash +/gsd-workspace --new --name payments-rework --repos . --branch feature/payments-v2 +``` + +O flag `--branch` define o nome da branch para todos os repositórios do workspace. O padrão é `workspace/`. + +--- + +## Ignorar perguntas interativas + +```bash +/gsd-workspace --new --name payments-rework --repos . --auto +``` + +O GSD aceita todos os padrões sem solicitar confirmação. + +--- + +## Inicializar o GSD dentro do workspace + +Após criar um workspace, acesse-o e inicialize um projeto GSD: + +```bash +cd ~/gsd-workspaces/feature-b +/gsd-new-project +``` + +O diretório `.planning/` dentro do workspace é a raiz para todos os comandos GSD subsequentes executados a partir desse diretório. Ele é completamente separado de qualquer `.planning/` existente nos repositórios de origem. + +--- + +## Listar workspaces + +```bash +/gsd-workspace --list +``` + +Exibe todos os workspaces GSD ativos e seus status. + +--- + +## Remover um workspace + +```bash +/gsd-workspace --remove feature-b +``` + +O GSD remove os worktrees git e limpa o diretório do workspace. Isso não exclui as branches do remote de origem — apenas os worktrees locais e o diretório do workspace. + +--- + +## Quando usar workspaces em vez de workstreams + +Escolha workspaces quando: + +- Você está trabalhando em **múltiplos repositórios** que precisam ser coordenados sob um único projeto GSD (por exemplo, um repositório de API e um repositório de UI que fazem entregas juntos) +- Você precisa de um **worktree git separado** com sua própria branch, arquivos de lock e artefatos de build por funcionalidade — para que builds e instalações de dependências em um ambiente não afetem outro +- Você deseja uma **raiz `.planning/` completamente independente** em vez de um subdiretório do `.planning/` do repositório principal +- Você está seguindo um fluxo de trabalho orientado a issues em que cada issue do rastreador é mapeada para um workspace (consulte [Conduzir o GSD a partir de uma issue do rastreador](drive-gsd-from-a-tracker-issue.md)) + +Escolha [workstreams](work-in-parallel-with-workstreams.md) quando: + +- Todo o trabalho está em **um único repositório** e compartilha o mesmo histórico git +- Você deseja executar `/gsd-plan-phase` ou `/gsd-discuss-phase` em diferentes áreas de interesse simultaneamente — API, UI, infra — sem vazamento de contexto entre os arquivos `STATE.md` +- Você não precisa de um worktree separado por área de interesse; alternar o contexto de planejamento é suficiente + +--- + +## Relacionados + +- [Trabalhar em paralelo com workstreams](work-in-parallel-with-workstreams.md) +- [Conduzir o GSD a partir de uma issue do rastreador](drive-gsd-from-a-tracker-issue.md) +- [Comandos](../COMMANDS.md) +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/how-to/migrate-from-gsd-2.md b/docs/pt-BR/how-to/migrate-from-gsd-2.md new file mode 100644 index 000000000..2dfe9c912 --- /dev/null +++ b/docs/pt-BR/how-to/migrate-from-gsd-2.md @@ -0,0 +1,145 @@ +# Como migrar do GSD-2 + +**Objetivo:** Atualizar um projeto GSD-2 mais antigo (estrutura de diretório `.gsd/`) para o GSD Core (estrutura `.planning/`), e opcionalmente absorver quaisquer ADRs, PRDs ou especificações existentes no repositório para a nova estrutura de planejamento. + +**Pré-requisitos:** GSD Core está instalado. O diretório do projeto GSD-2 está disponível em disco. + +--- + +## Entenda o que é migrado + +O GSD-2 usava um diretório `.gsd/` como raiz de planejamento. O GSD Core usa `.planning/`. A migração faz a conversão: lê os artefatos de `.gsd/` e os grava na estrutura padrão `.planning/` que todos os comandos GSD Core esperam. + +| O que existe no GSD-2 | O que `/gsd-import --from-gsd2` produz | +|-----------------------|----------------------------------------| +| `.gsd/PROJECT.md` | `.planning/PROJECT.md` | +| `.gsd/ROADMAP.md` | `.planning/ROADMAP.md` | +| `.gsd/STATE.md` | `.planning/STATE.md` | +| `.gsd/phases/` diretórios | `.planning/phases/` diretórios | +| Arquivos `PLAN.md` de fase | Arquivos `{NN}-{MM}-PLAN.md` do GSD Core (renomeação aplicada) | + +A detecção de conflitos é executada antes que qualquer arquivo seja gravado. Se o diretório de destino já tiver um `PROJECT.md` e o conteúdo importado contradizê-lo, a migração para no ponto de bloqueio (BLOCKER) e lista os conflitos para você resolver. + +--- + +## Execute a migração + +### Migrar o diretório atual + +```bash +/gsd-import --from-gsd2 +``` + +O GSD lê `.gsd/` no diretório de trabalho atual e grava os artefatos migrados em `.planning/`. + +### Migrar a partir de um caminho diferente + +```bash +/gsd-import --from-gsd2 --path ~/projects/old-project +``` + +Use `--path` quando o projeto GSD-2 não for seu diretório de trabalho atual. + +--- + +## Resolva conflitos + +Se a detecção de conflitos encontrar bloqueadores — por exemplo, uma declaração de stack tecnológico do GSD-2 que contradiz um `.planning/PROJECT.md` existente — ela imprime um relatório de conflitos e para sem gravar nenhum arquivo. + +Leia o relatório, resolva a contradição (edite o documento de origem ou o artefato de planejamento existente) e execute `/gsd-import --from-gsd2` novamente. A migração pode ser executada novamente com segurança até ser concluída sem problemas. + +--- + +## Importe um arquivo de plano externo + +Se você tiver um documento de plano avulso (um documento de planejamento de equipe, uma especificação em Markdown, uma lista de tarefas exportada) em vez de um projeto GSD-2 completo, use `--from`: + +```bash +/gsd-import --from /tmp/team-plan.md +``` + +O GSD executa a mesma passagem de detecção de conflitos, converte o conteúdo para o formato `PLAN.md` do GSD Core e valida o resultado com o verificador de planos. Após a validação, você verá o nome do arquivo de destino e os próximos passos. + +--- + +## Absorva documentação existente + +Se o seu repositório já contiver ADRs (Architecture Decision Records), PRDs ou documentos de especificação, use `/gsd-ingest-docs` para sintetizá-los na estrutura `.planning/` após a migração: + +### Varrer o repositório inteiro (detecta o modo automaticamente) + +```bash +/gsd-ingest-docs +``` + +Se `.planning/` já estiver presente (por exemplo, a partir da migração que você acabou de executar), o GSD usa o modo de mesclagem por padrão — ele sintetiza os documentos ingeridos junto com o que já existe, em vez de sobrescrevê-los. + +### Limitar a um diretório específico + +```bash +/gsd-ingest-docs docs/ +/gsd-ingest-docs docs/adr/ +``` + +### Usar um manifesto de precedência explícito + +Quando os documentos têm tipos mistos ou você deseja controlar qual documento prevalece em caso de conflitos: + +```bash +/gsd-ingest-docs --manifest ingest.yaml +``` + +O manifesto é um arquivo YAML que lista `{path, type, precedence?}` por documento. Consulte a descrição do flag `--manifest` em [Comandos](../COMMANDS.md) para o formato esperado. + +### Forçar um modo específico + +```bash +/gsd-ingest-docs --mode merge # Mesclar com o .planning/ existente +/gsd-ingest-docs --mode new # Inicializar do zero (sobrescreve) +``` + +**Saída:** `/gsd-ingest-docs` sempre produz um `INGEST-CONFLICTS.md` com três categorias — resolvidos automaticamente, variantes concorrentes e bloqueadores não resolvidos. Revise este arquivo após cada execução de ingestão. Paradas forçadas ocorrem apenas em contradições LOCKED-vs-LOCKED de ADRs; todo o resto é apresentado para sua revisão, não descartado silenciosamente. + +--- + +## Verifique o projeto migrado + +Após a migração e qualquer ingestão de documentos, confirme que o estado do projeto está consistente: + +```bash +/gsd-health +/gsd-health --repair +``` + +`/gsd-health` verifica a integridade do diretório `.planning/` e relata qualquer desvio. `--repair` corrige automaticamente os problemas recuperáveis. + +Em seguida, verifique se o GSD Core consegue ler o estado do seu projeto: + +```bash +/gsd-progress +``` + +Se o projeto foi migrado corretamente, você verá o status da fase atual e o próximo passo recomendado. A partir daí, o fluxo de trabalho padrão do GSD Core se aplica. + +--- + +## Condicionais: o que é migrado e o que não é + +| Situação | O que fazer | +|----------|-------------| +| `.gsd/` existe no diretório atual | Execute `/gsd-import --from-gsd2` (sem `--path`) | +| `.gsd/` está em um diretório diferente | Use `--path ~/projects/old-project` | +| Você tem um documento de plano avulso, não um projeto GSD-2 completo | Use `/gsd-import --from /path/to/plan.md` | +| Você tem ADRs em `docs/adr/` | Execute `/gsd-ingest-docs docs/adr/` após a migração | +| Você tem uma mistura de ADRs, PRDs e especificações | Execute `/gsd-ingest-docs` na raiz do repositório; ele classifica automaticamente | +| A detecção de conflitos relata bloqueadores | Resolva as contradições listadas e execute novamente; nenhum arquivo é gravado até que todos os bloqueadores sejam resolvidos | +| Você não tem certeza se a migração funcionou | Execute `/gsd-health` e `/gsd-progress` para confirmar | +| INGEST-CONFLICTS.md lista bloqueadores não resolvidos | Estes exigem resolução manual antes que os documentos afetados sejam incorporados ao planejamento | + +--- + +## Relacionados + +- [Seu primeiro projeto](../tutorials/your-first-project.md) +- [Comandos](../COMMANDS.md) +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/how-to/plan-a-phase.md b/docs/pt-BR/how-to/plan-a-phase.md new file mode 100644 index 000000000..75fd2b061 --- /dev/null +++ b/docs/pt-BR/how-to/plan-a-phase.md @@ -0,0 +1,216 @@ +# Como planejar uma fase + +**Objetivo:** Transformar decisões de fase e pesquisa em um plano de tarefas atômico e verificável, pronto para execução. + +**Pré-requisitos:** `.planning/ROADMAP.md` deve existir. Um `{fase}-CONTEXT.md` gerado pelo `/gsd-discuss-phase` é fortemente recomendado, mas não obrigatório. + +--- + +## Execute o fluxo de planejamento padrão + +```bash +/gsd-plan-phase 2 +``` + +Isso executa três estágios em sequência: + +1. **Pesquisa** — Um subagente `gsd-phase-researcher` investiga o domínio e escreve `{fase}-RESEARCH.md`. +2. **Planejamento** — Um subagente `gsd-planner` lê o contexto, a pesquisa e os requisitos, e então escreve um ou mais arquivos `{fase}-{N}-PLAN.md`. +3. **Verificação** — Um subagente `gsd-plan-checker` valida a qualidade do plano em oito dimensões e aciona um ciclo de revisão (até três iterações) até que os critérios de qualidade sejam aprovados. + +Se nenhum número de fase for fornecido, o GSD Core seleciona a próxima fase não planejada do roadmap. + +--- + +## Pular ou forçar a pesquisa + +**Se o domínio for familiar e não houver necessidade de nova pesquisa:** + +```bash +/gsd-plan-phase 3 --skip-research +``` + +**Se o RESEARCH.md já existir, mas você quiser forçar uma atualização:** + +```bash +/gsd-plan-phase 3 --research +``` + +**Se você quiser executar apenas a pesquisa** — escrever o RESEARCH.md e encerrar antes do planejamento: + +```bash +/gsd-plan-phase --research-phase 4 +``` + +Se o RESEARCH.md já existir, será solicitado que você atualize, visualize ou pule. Para forçar a atualização sem o prompt: + +```bash +/gsd-plan-phase --research-phase 4 --research +``` + +Para imprimir o RESEARCH.md existente no stdout sem acionar o pesquisador: + +```bash +/gsd-plan-phase --research-phase 4 --view +``` + +Nota: `--research-phase ` é uma flag do `/gsd-plan-phase`. Não existe um comando standalone de fase de pesquisa — o comando standalone foi removido em favor desta flag. + +--- + +## Planejar fatias verticais de funcionalidades em vez de camadas horizontais + +**Se você quiser tarefas organizadas como fatias finas de ponta a ponta** (UI → API → BD por funcionalidade) em vez de por camada técnica: + +```bash +/gsd-plan-phase 1 --mvp +``` + +Na Fase 1 de um novo projeto sem resumos de fases anteriores, `--mvp` também produz `SKELETON.md` — um Walking Skeleton que cobre o scaffold do projeto, roteamento, uma leitura/escrita real no BD, uma interação real de UI e implantação de desenvolvimento. + +É possível persistir o modo MVP para uma fase sem a flag, adicionando `**Mode:** mvp` à entrada daquela fase no ROADMAP.md. + +--- + +## Exigir um teste falho por tarefa que adiciona comportamento + +**Se você quiser a aplicação de TDD** — cada tarefa que adiciona comportamento começa com um teste falho antes da implementação: + +```bash +/gsd-plan-phase 1 --tdd +``` + +Combinável com `--mvp`: + +```bash +/gsd-plan-phase 1 --mvp --tdd +``` + +Isso produz fatias verticais onde cada tarefa que adiciona comportamento segue o ciclo RED → GREEN → REFACTOR. O planejador aplica `type: tdd` às tarefas elegíveis (lógica de negócio, endpoints de API, transformações de dados) e usa o `type: execute` padrão para UI, configuração e código de integração. + +O modo TDD também pode ser persistido em config: + +```bash +node gsd-tools.cjs config-set workflow.tdd_mode true +``` + +--- + +## Replanejar usando feedback de revisão cruzada por IA + +**Se você executou `/gsd-review --phase N` e um `REVIEWS.md` existe:** + +```bash +/gsd-plan-phase 3 --reviews +``` + +O planejador lê o `REVIEWS.md` e revisa os planos para endereçar o feedback. Não pode ser combinado com `--gaps`. + +**Se você quiser um ciclo automatizado** — replanejar e revisar até que não restem preocupações de nível HIGH: + +```bash +/gsd-plan-review-convergence 3 +``` + +O ciclo de convergência executa ciclos de planejar → revisar → replanejar → revisar novamente (até três por padrão). Use `--max-cycles N` para substituir o limite máximo. + +--- + +## Fechar lacunas após uma verificação falha + +**Se o `VERIFICATION.md` existir com lacunas não resolvidas e você quiser replanejar apenas para essas lacunas:** + +```bash +/gsd-plan-phase 3 --gaps +``` + +A pesquisa é ignorada; o planejador lê as lacunas de verificação diretamente. + +--- + +## Validar o estado do projeto antes de iniciar o planejamento + +```bash +/gsd-plan-phase 2 --validate +``` + +Executa a validação de estado antes de acionar o pesquisador. Use isso se suspeitar que o ROADMAP.md ou STATE.md derivou. + +--- + +## Executar uma validação externa de bounce após o planejamento + +**Se `workflow.plan_bounce_script` estiver configurado e você quiser validação externa do plano concluído:** + +```bash +/gsd-plan-phase 1 --bounce +``` + +Para pular o bounce mesmo que esteja habilitado em config: + +```bash +/gsd-plan-phase 1 --skip-bounce +``` + +--- + +## Suprimir confirmações interativas + +```bash +/gsd-plan-phase --auto +``` + +Ignora todos os prompts. Útil em pipelines automatizados. A pesquisa é ignorada se `research_enabled` for false em config. + +--- + +## O que o plano produz + +Uma execução bem-sucedida escreve: + +| Arquivo | Finalidade | +|---|---| +| `{fase}-RESEARCH.md` | Pesquisa de domínio, auditoria de legitimidade de pacotes, arquitetura de validação | +| `{fase}-VALIDATION.md` | Mapeamento de testes Nyquist — os casos de teste que o plano deve satisfazer (Dimensão 8) | +| `{fase}-{N}-PLAN.md` | Plano de tarefas executável com frontmatter, atribuições de wave e critérios de aceitação | +| `{fase}/SKELETON.md` | Walking Skeleton (modo MVP, apenas Fase 1 de novo projeto) | + +Cada PLAN.md contém tarefas com os campos obrigatórios `` e ``. Cada entrada de `` é verificável como uma asserção de fonte, asserção de comportamento, comando de teste ou saída de CLI — nunca linguagem subjetiva. + +Para a referência completa de campos, consulte o [schema do PLAN.md](../reference/plan-md.md). + +### Dimensões de qualidade do plano + +O `gsd-plan-checker` valida os planos em oito dimensões antes de permitir a execução: + +1. Atomicidade das tarefas — cada tarefa abrange uma única preocupação +2. Correção das dependências — a ordenação de waves é consistente +3. Verificabilidade dos critérios de aceitação — nenhum critério subjetivo +4. Completude do `` — o arquivo sendo modificado está sempre listado +5. Valores concretos de `` — sem instruções vagas como "alinhar com" +6. `must_haves` derivados do objetivo da fase +7. Cobertura de IDs de requisitos — cada ID de requisito da fase aparece em pelo menos um plano +8. Mapeamento de testes Nyquist — os planos abordam a estratégia de validação no VALIDATION.md + +O ciclo de revisão executa até três vezes. Se os critérios de qualidade não forem aprovados após três iterações, o verificador apresenta os problemas remanescentes para revisão manual. + +--- + +## Replanejamento de uma fase encerrada + +Se uma fase possui `VERIFICATION.md` com `status: passed`, ela é considerada encerrada. Tentar replanejá-la resulta em erro. Se o encerramento foi incorreto, substitua com `--force`: + +```bash +/gsd-plan-phase 2 --force +``` + +Um aviso é emitido na transcrição e em quaisquer documentos de plano confirmados. + +--- + +## Relacionados + +- [Discutir uma fase](discuss-a-phase.md) +- [Executar uma fase](execute-a-phase.md) +- [Schema do PLAN.md](../reference/plan-md.md) +- [Comandos](../COMMANDS.md) diff --git a/docs/pt-BR/how-to/recover-and-troubleshoot.md b/docs/pt-BR/how-to/recover-and-troubleshoot.md new file mode 100644 index 000000000..d4158d91c --- /dev/null +++ b/docs/pt-BR/how-to/recover-and-troubleshoot.md @@ -0,0 +1,323 @@ +# Como recuperar e solucionar problemas + +**Objetivo:** Identificar e corrigir problemas comuns — desde contexto perdido e estado corrompido até falhas de instalação e erros de permissão — usando uma estrutura de receitas condicionais. + +**Pré-requisitos:** GSD Core está instalado. Para problemas específicos de instalação, consulte [Instalar no seu ambiente de execução](install-on-your-runtime.md). + +--- + +## Problemas de contexto e sessão + +### Se você perdeu o controle de onde está + +```bash +/gsd-progress +``` + +Lê todos os arquivos de estado e informa exatamente onde você está e o que fazer a seguir. + +Para avançar automaticamente para o próximo passo correto: + +```bash +/gsd-progress --next +``` + +### Se você está iniciando uma nova sessão e precisa restaurar o contexto + +```bash +/gsd-resume-work +``` + +Restaura o contexto completo da sua sessão a partir do último handoff, incluindo a fase atual, decisões de planejamento e onde o trabalho foi interrompido. + +### Se a qualidade está caindo durante uma sessão longa + +Limpe sua janela de contexto entre comandos principais: + +```bash +/clear +``` + +Em seguida, restaure o estado: + +```bash +/gsd-resume-work +``` + +O GSD foi projetado em torno de contextos frescos. Cada subagente já recebe uma janela limpa de 200k. A sessão principal se degrada com o tempo — limpá-la e retomar é o remédio correto, não continuar forçando. + +### Se você quer salvar o contexto antes de parar + +```bash +/gsd-pause-work +``` + +Cria `.planning/HANDOFF.json` com sua posição atual. Adicione `--report` para também gravar um resumo pós-sessão em `.planning/reports/`: + +```bash +/gsd-pause-work --report +``` + +--- + +## Problemas de integridade do planejamento + +### Se a integridade de `.planning/` está incerta + +```bash +/gsd-health +``` + +Relata o status entre erros, avisos e notas informativas: + +| Status | Significado | +|--------|-------------| +| `HEALTHY` | Todos os artefatos esperados estão presentes e bem formados | +| `DEGRADED` | Avisos que devem ser tratados, mas o trabalho pode continuar | +| `BROKEN` | Erros críticos que bloquearão a execução | + +Problemas comuns que podem ser reparados automaticamente (erros E004, E005; avisos W003, W008): + +```bash +/gsd-health --repair +``` + +Isso recria o `STATE.md` ausente, redefine um `config.json` corrompido para os padrões e adiciona quaisquer chaves de configuração ausentes. Não vai sobrescrever `PROJECT.md` ou `ROADMAP.md`. + +### Se STATE.md referencia uma fase que não existe + +Isso gera o aviso `W002`. Use a CLI de estado para diagnosticar e reparar: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate +``` + +Visualize o que uma sincronização mudaria sem gravar: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify +``` + +Aplique a sincronização: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync +``` + +Esses comandos reconstroem o `STATE.md` a partir do estado real do projeto em disco. Substituem a edição manual do `STATE.md`. + +### Se você vê "Project already initialised" + +`.planning/PROJECT.md` já existe. `/gsd-new-project` é uma verificação de segurança. Se você realmente quer começar do zero, delete o diretório `.planning/` primeiro: + +```bash +rm -rf .planning/ +``` + +Em seguida, execute novamente `/gsd-new-project`. + +### Se a utilização da janela de contexto está alta + +```bash +/gsd-health --context +``` + +Verifica a proteção de utilização da janela de contexto. Emite aviso em 60%, crítico em 70%. Se você estiver acima do limite de aviso, execute `/clear` seguido de `/gsd-resume-work` antes de iniciar o próximo comando principal. + +--- + +## Problemas de execução + +### Se um executor recebe "Permission denied" em comandos Bash + +Os subagentes `gsd-executor` do GSD precisam de acesso Bash com permissão de escrita. Adicione os padrões necessários em `~/.claude/settings.json` sob `permissions.allow`. No mínimo: + +```json +"Bash(git add:*)", +"Bash(git commit:*)", +"Bash(git merge:*)", +"Bash(git checkout:*)" +``` + +Para padrões específicos de stack (Rails, Python, Node, Rust), consulte a tabela completa em `docs/USER-GUIDE.md` em "Executor Subagent Gets Permission denied". + +Alternativa por projeto: adicione o mesmo bloco em `.claude/settings.local.json` na raiz do seu projeto. + +### Se a execução falha ou produz stubs + +Verifique se o plano é ambicioso demais. Os planos devem ter no máximo duas ou três tarefas. Se as tarefas forem muito grandes, elas excedem o que uma única janela de contexto consegue produzir de forma confiável. Replaneje a fase com escopo menor: + +```bash +/gsd-plan-phase 1 +``` + +Para diagnóstico sistemático do que deu errado, consulte [Depurar uma execução com falha](debug-a-failed-execution.md). + +### Se a execução paralela causa erros de bloqueio de build ou falhas no hook de pré-commit + +Isso é causado por múltiplos agentes acionando ferramentas de build simultaneamente. O GSD lida com isso automaticamente desde a v1.26. Se você estiver em uma versão mais antiga, ou ainda vendo contenção, desative a execução paralela: + +```bash +/gsd-settings +``` + +Defina `parallelization.enabled` como `false`. + +### Se um subagente parece ter falhado, mas commits foram feitos + +Verifique o log do git antes de concluir que algo quebrou: + +```bash +git log --oneline -10 +``` + +Um bug de classificação conhecido do Claude Code pode reportar falha enquanto o trabalho foi concluído com sucesso. Os orquestradores do GSD verificam a saída real, mas se você vir uma discrepância, os commits são a fonte da verdade. + +--- + +## Problemas de plano e fase + +### Se os planos parecem errados ou desalinhados com sua intenção + +Execute `/gsd-discuss-phase N` antes de planejar. A maioria dos problemas de qualidade do plano vem de suposições que o `CONTEXT.md` teria prevenido: + +```bash +/gsd-discuss-phase 1 +``` + +Para ver quais suposições o GSD está fazendo atualmente sem iniciar uma sessão completa: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +### Se você precisa mudar algo após a execução + +Não execute novamente `/gsd-execute-phase`. Use `/gsd-quick` para correções direcionadas: + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +Ou use `/gsd-verify-work N` para identificar e corrigir problemas sistematicamente por meio de UAT. + +### Se um comando parece congelado em "Spawning…" + +Aguarde. Os subagentes do GSD são executados em uma janela de contexto separada. O trabalho deles é invisível para a sessão pai enquanto está em andamento. A nota de atividade na linha de spawn confirma que isso é esperado. Agentes de pesquisa e planejamento rotineiramente levam de 1 a 5 minutos; agentes de verificação podem levar mais tempo em fases grandes. + +Não interrompa a sessão. Encerrá-la descarta o trabalho em andamento do subagente. + +Se já passou mais de 10 minutos, verifique se a tarefa do agente ainda aparece como ativa na barra lateral do Claude Code. + +--- + +## Problemas de estado do fluxo de trabalho + +### Se o fluxo de trabalho parece corrompido ou o estado está inconsistente + +```bash +/gsd-forensics +``` + +Ou com uma descrição: + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +`/gsd-forensics` executa uma investigação post-mortem: anomalias no histórico do git, integridade dos artefatos, consistência do STATE.md, trabalho não commitado e worktrees órfãs. Grava um relatório em `.planning/forensics/` e apresenta etapas de remediação recomendadas. É somente leitura e nunca modifica os arquivos do seu projeto. + +### Se você precisa reverter uma fase ou plano + +```bash +/gsd-undo --phase 03 # Reverte todos os commits da fase 3 +/gsd-undo --plan 03-02 # Reverte os commits do plano 02 da fase 3 +/gsd-undo --last 5 # Escolhe interativamente entre os 5 commits GSD mais recentes +``` + +`/gsd-undo` verifica as fases dependentes antes de reverter e sempre apresenta uma confirmação. + +--- + +## Problemas de instalação e atualização + +### Se o GSD não é reconhecido após a instalação + +Reinicie seu ambiente de execução. O GSD instala comandos slash no diretório de comandos do seu ambiente de execução (por exemplo, `~/.claude/commands/gsd/`). A maioria dos ambientes de execução descobre novos comandos apenas na inicialização. + +Se o problema persistir, verifique a instalação: + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +Para caminhos de instalação específicos do ambiente de execução e solução de problemas, consulte [Instalar no seu ambiente de execução](install-on-your-runtime.md). + +### Se uma atualização sobrescreveu suas alterações locais + +Desde a v1.17, o instalador faz backup dos arquivos modificados localmente em `gsd-local-patches/`. Reaplique suas alterações: + +```bash +/gsd-update --reapply +``` + +### Se você não consegue atualizar via npm + +Se `npx @opengsd/gsd-core` falhar devido a interrupções do npm ou restrições de rede, consulte `docs/manual-update.md` para um procedimento de atualização manual passo a passo que funciona sem acesso ao npm. + +Para atualizações de rotina, consulte [Atualizar o GSD](update-gsd.md). + +--- + +## Problemas de custo + +### Se os custos do modelo estão muito altos + +Mude para o perfil de orçamento: + +```bash +/gsd-config --profile budget +``` + +Desative os agentes de pesquisa e verificação de plano via configurações se o domínio for familiar: + +```bash +/gsd-settings +``` + +Audite também quais servidores MCP estão habilitados. Cada servidor MCP habilitado injeta seu esquema de ferramentas em cada turno. Ferramentas específicas de navegador e plataforma podem custar mais de 20k tokens cada. Desabilite os que a fase atual não precisa em `.claude/settings.json`: + +```json +{ + "disabledMcpjsonServers": ["playwright", "mac-tools"] +} +``` + +--- + +## Referência rápida de recuperação + +| Problema | Solução | +|----------|---------| +| Contexto perdido ou nova sessão | `/gsd-resume-work` ou `/gsd-progress` | +| Não sabe qual é o próximo passo | `/gsd-progress --next` | +| Fase deu errado | `/gsd-undo --phase NN`, depois replaneje | +| Algo quebrou | `/gsd-debug "descrição"` (adicione `--diagnose` para análise sem correções) | +| STATE.md fora de sincronia | `state validate` depois `state sync` | +| Integridade de `.planning/` incerta | `/gsd-health`, depois `/gsd-health --repair` | +| Estado do fluxo de trabalho parece corrompido | `/gsd-forensics` | +| Correção direcionada rápida | `/gsd-quick` | +| Plano não corresponde à sua visão | `/gsd-discuss-phase N` depois replaneje | +| Custos elevados | `/gsd-config --profile budget` e `/gsd-settings` para desativar agentes | +| Atualização quebrou alterações locais | `/gsd-update --reapply` | +| Quer resumo da sessão | `/gsd-pause-work --report` | +| Erros de build por execução paralela | Atualize o GSD ou defina `parallelization.enabled: false` | + +--- + +## Relacionados + +- [Depurar uma execução com falha](debug-a-failed-execution.md) +- [Instalar no seu ambiente de execução](install-on-your-runtime.md) +- [Comandos](../COMMANDS.md) +- [Índice da documentação](../README.md) diff --git a/docs/pt-BR/how-to/run-phases-autonomously.md b/docs/pt-BR/how-to/run-phases-autonomously.md new file mode 100644 index 000000000..7a19eb5fb --- /dev/null +++ b/docs/pt-BR/how-to/run-phases-autonomously.md @@ -0,0 +1,124 @@ +# Como executar fases de forma autônoma + +Execute todas as fases restantes — ou um intervalo delimitado delas — sem supervisão, para que o GSD avance por discuss → plan → execute em cada fase sem que você precise conduzir cada etapa. + +Para mais informações sobre o que o loop de fases faz durante uma execução autônoma, consulte [O loop de fases](../explanation/the-phase-loop.md). + +--- + +## Pré-requisitos + +- Um projeto ativo com `.planning/ROADMAP.md` e `.planning/STATE.md` +- Todas as fases que você deseja executar devem estar em um estado que o modo autônomo possa conduzir (pendente ou em andamento; não já concluídas) +- Qualquer decisão de design que você se importe já deve estar em `PROJECT.md` ou registrada via um `/gsd-discuss-phase` anterior — o modo autônomo só consegue apresentar áreas cinzentas de forma interativa quando você usa `--interactive` + +--- + +## Executar todas as fases restantes + +```bash +/gsd-autonomous +``` + +O GSD lê o `ROADMAP.md`, descobre cada fase incompleta em ordem numérica e executa discuss → plan → execute em cada uma. Após todas as fases serem concluídas, ele executa automaticamente o ciclo de vida do milestone: audit → complete → cleanup. + +--- + +## Executar um intervalo específico de fases + +Use `--from` e `--to` para delimitar a execução. Ambos os flags aceitam números de fase decimais (ex.: `3.1`). + +```bash +/gsd-autonomous --from 3 # fases 3, 4, 5 … (ignora as fases 1 e 2 já concluídas) +/gsd-autonomous --to 5 # fases até e incluindo a 5 +/gsd-autonomous --from 3 --to 5 # exatamente as fases 3, 4 e 5 +``` + +Quando `--to` é atingido, a etapa de ciclo de vida é ignorada, pois nem todas as fases do milestone foram concluídas. O banner de conclusão informa como retomar: + +```text +Resume with: /gsd-autonomous --from 6 +``` + +--- + +## Executar com discuss interativo + +Por padrão, o modo autônomo responde às perguntas de discuss automaticamente usando o smart discuss (propostas em tabela em lote). Se você quiser responder às perguntas de design você mesmo, mantendo plan e execute fora do contexto principal: + +```bash +/gsd-autonomous --interactive +``` + +No modo interativo: +- `/gsd-discuss-phase` é executado inline e aguarda suas respostas +- Planejamento e execução são despachados como agentes em segundo plano para que você possa discutir a próxima fase enquanto a atual está sendo construída +- O contexto principal permanece enxuto — apenas as conversas de discuss se acumulam + +--- + +## Quais barreiras de segurança ainda se aplicam + +O modo autônomo não ignora o pipeline de qualidade do GSD. Cada fase ainda: + +- Executa o plan-checker antes da execução +- Lê o `VERIFICATION.md` após a execução e decide o caminho com base no resultado +- Pausa e pergunta o que fazer quando o status de verificação é `human_needed` ou `gaps_found` +- Para e apresenta opções (corrigir e tentar novamente, ignorar fase ou parar) se alguma etapa falhar + +A única diferença em relação à execução manual é que a verificação com resultado `passed` avança automaticamente — você não é questionado entre as fases a menos que uma decisão seja necessária. + +A barreira de legitimidade de pacotes também permanece ativa. Se um plano incluir uma tarefa `checkpoint:human-verify` para um pacote suspeito, o executor irá parar e apresentar o checkpoint. O modo autônomo não instalará silenciosamente pacotes sinalizados. + +--- + +## Quando não usar o modo autônomo + +Não use `/gsd-autonomous` quando: + +- **As fases têm decisões de design não resolvidas.** Se você não executou `/gsd-discuss-phase` e seu `PROJECT.md` não registra suas preferências, o smart discuss fará escolhas autônomas com as quais você pode não concordar. Execute o discuss de forma interativa primeiro, ou use `--interactive`. + +- **Você precisa de controle detalhado sobre uma única fase.** Para uma fase, `/gsd-execute-phase N` fornece saída passo a passo e permite que você reaja antes de continuar. O modo autônomo é projetado para execuções em lote sem supervisão. + +- **A fase tem trabalho novo ou de alto risco.** O modo autônomo ignora pausas a menos que encontre um bloqueador. Em uma fase onde você espera surpresas, mantenha-se no loop com execução manual. + +- **Você está no meio de uma fase com execução parcial.** O modo autônomo retoma fases incompletas, mas não retoma uma onda parcialmente executada. Use `/gsd-execute-phase N` para concluir uma fase que já está em andamento. + +Se uma execução parar no meio do caminho, consulte [Depurar uma execução com falha](debug-a-failed-execution.md) para saber como diagnosticar o que deu errado. + +--- + +## Verificar o progresso durante uma execução + +O modo autônomo exibe um banner de progresso antes de cada fase: + +```text + GSD ► AUTONOMOUS ▸ Phase 3/7: Auth Middleware [████░░░░] 28% +``` + +Se você precisar verificar onde a execução está no meio da sessão, abra outro terminal e execute: + +```bash +/gsd-progress +``` + +--- + +## Retomar após uma parada + +Se o modo autônomo parar — seja porque você escolheu "Stop autonomous mode" no prompt de bloqueio, ou a sessão foi interrompida — retome de onde parou: + +```bash +/gsd-autonomous --from 4 # substitua 4 pelo número da primeira fase incompleta +``` + +O GSD ignora automaticamente as fases já concluídas, portanto é seguro executar novamente a partir de um número de fase anterior caso não tenha certeza de onde a execução parou. + +--- + +## Relacionados + +- [Executar uma fase](execute-a-phase.md) +- [Depurar uma execução com falha](debug-a-failed-execution.md) +- [Comandos](../COMMANDS.md) +- [Índice da documentação](../README.md) diff --git a/docs/pt-BR/how-to/set-up-cross-ai-review.md b/docs/pt-BR/how-to/set-up-cross-ai-review.md new file mode 100644 index 000000000..ab067075d --- /dev/null +++ b/docs/pt-BR/how-to/set-up-cross-ai-review.md @@ -0,0 +1,159 @@ +# Como configurar a revisão entre diferentes IAs + +**Objetivo:** Configurar quais revisores de IA participam da revisão de planos, executar uma revisão de uma fase planejada e usar o feedback para convergir para um plano sem preocupações de severidade ALTA. + +**Pré-requisitos:** A fase foi planejada (os arquivos `{phase}-PLAN.md` existem em `.planning/phases/`). Pelo menos um CLI de IA externo está instalado e autenticado. + +--- + +## Decidir quais revisores usar + +O GSD Core pode encaminhar solicitações de revisão para qualquer combinação de: Gemini CLI, Claude (sessão separada), Codex CLI, CodeRabbit, OpenCode, Qwen Code, Cursor, Antigravity CLI, Ollama, LM Studio e llama.cpp. + +Cada revisor executa o mesmo prompt estruturado contra seus arquivos `PLAN.md` de forma independente. Como diferentes modelos têm diferentes pontos cegos, o consenso de múltiplos revisores detecta mais problemas do que qualquer revisor individual. + +**Se você ainda não tem CLIs externos instalados**, instale pelo menos um: + +```bash +# Gemini CLI (gratuito com credenciais Google) +npm install -g @google/gemini-cli + +# Antigravity CLI (gratuito com credenciais Google) +curl -fsSL https://antigravity.google/cli/install.sh | bash + +# Codex CLI +npm install -g @openai/codex +``` + +--- + +## Definir revisores padrão (opcional) + +Por padrão, `/gsd-review` executa todos os CLIs detectados. Para fixar um subconjunto como padrões do projeto: + +```bash +/gsd-config --integrations +``` + +O assistente de integrações cobre chaves de API, roteamento de CLIs para revisão de código e a lista `review.default_reviewers`. Defina a lista com os revisores que você deseja como padrão sem flags — por exemplo `["gemini","codex"]`. + +Como alternativa, defina diretamente com `gsd-tools`: + +```bash +gsd config-set review.default_reviewers '["gemini","codex"]' +``` + +Para o esquema completo de configurações de integração (chaves de API, substituições de modelo por revisor, endereços de servidor local), consulte [Configuração](../CONFIGURATION.md). + +--- + +## Executar uma revisão + +### Revisão padrão (usa seus padrões configurados ou todos os CLIs detectados) + +```bash +/gsd-review --phase 3 +``` + +O GSD invoca cada revisor em sequência, coleta feedback estruturado (Resumo, Pontos Fortes, Preocupações em ALTA/MÉDIA/BAIXA, Sugestões, Avaliação de Risco) e grava a saída combinada em `.planning/phases/03-.../03-REVIEWS.md`. + +### Selecionar um único revisor para uma execução pontual + +```bash +/gsd-review --phase 3 --gemini +/gsd-review --phase 3 --codex +/gsd-review --phase 3 --cursor +``` + +Qualquer flag explícita substitui tanto o padrão `--all` quanto `review.default_reviewers` para aquela execução. + +### Executar todos os revisores disponíveis em paralelo + +```bash +/gsd-review --phase 3 --all +``` + +`--all` sempre substitui a configuração e executa o conjunto completo detectado, incluindo quaisquer servidores de modelos locais configurados (Ollama, LM Studio, llama.cpp). + +### Revisores com servidor de modelo local + +Se você executa Ollama ou LM Studio localmente, eles são incluídos automaticamente com `--all` quando o servidor está acessível. Você também pode direcioná-los explicitamente: + +```bash +/gsd-review --phase 3 --ollama +/gsd-review --phase 3 --lm-studio +``` + +Configure os endereços de host e a seleção de modelo nas chaves `review.*` via `/gsd-config --integrations` se os padrões (`localhost:11434` / `localhost:1234`) não se aplicarem. + +--- + +## Ler a saída da revisão + +O arquivo `{padded_phase}-REVIEWS.md` contém: + +- Revisões individuais de cada revisor com preocupações classificadas por severidade +- Uma seção de **Resumo de Consenso** que sintetiza preocupações levantadas por dois ou mais revisores — comece aqui para obter o sinal de maior prioridade +- Uma seção de **Visões Divergentes** para áreas onde os revisores discordaram + +--- + +## Incorporar o feedback ao plano + +Após revisar a saída, replaneje incorporando o feedback: + +```bash +/gsd-plan-phase 3 --reviews +``` + +O planejador lê `REVIEWS.md` e ajusta os planos para endereçar as preocupações antes de salvar. + +--- + +## Automatizar o ciclo planejar–revisar–replanejar + +Para fases em que você deseja iterar até que todas as preocupações de severidade ALTA sejam resolvidas, use o ciclo de convergência: + +```bash +/gsd-plan-review-convergence 3 +``` + +Isso executa `plan-phase → review → replan → re-review` por até três ciclos (padrão). O ciclo termina quando a contagem de preocupações ALTAS chega a zero. + +### Convergência com um revisor específico + +```bash +/gsd-plan-review-convergence 3 --codex +/gsd-plan-review-convergence 3 --gemini +``` + +### Convergência com todos os revisores e um limite maior de ciclos + +```bash +/gsd-plan-review-convergence 3 --all --max-cycles 5 +``` + +**Detecção de estagnação:** se a contagem de preocupações ALTAS não estiver diminuindo entre os ciclos, o GSD avisa você. Quando o limite de ciclos é atingido com preocupações ALTAS em aberto, um portão de escalação pergunta se você deseja prosseguir ou revisar manualmente. + +--- + +## Condicionais: quais revisores escolher + +| Situação | Abordagem recomendada | +|-----------|---------------------| +| Você já tem o Gemini CLI instalado | `--gemini` é sempre um bom revisor inicial | +| Você quer cobertura gratuita com múltiplos revisores | `--gemini` + `--agy` (ambos usam credenciais Google) | +| Seu projeto é fortemente baseado em OpenAI | adicione `--codex` para uma perspectiva de modelo OpenAI | +| Você quer o modelo do GitHub Copilot | adicione `--opencode` | +| Você quer evitar custos de API completamente | configure o Ollama com um modelo local e use `--ollama` | +| Você precisa de cobertura máxima antes de um lançamento | `/gsd-plan-review-convergence N --all` | +| Você está iterando rapidamente e quer feedback rápido | escolha um CLI: `/gsd-review --phase N --gemini` | + +--- + +## Relacionados + +- [Verificar e publicar](verify-and-ship.md) +- [Configuração](../CONFIGURATION.md) +- [Comandos](../COMMANDS.md) +- [Índice da documentação](../README.md) diff --git a/docs/pt-BR/how-to/spike-and-sketch.md b/docs/pt-BR/how-to/spike-and-sketch.md new file mode 100644 index 000000000..1e36c873b --- /dev/null +++ b/docs/pt-BR/how-to/spike-and-sketch.md @@ -0,0 +1,160 @@ +# Como fazer spike e sketch antes de se comprometer + +**Objetivo:** Reduzir riscos de implementação por meio de experimentos de viabilidade focados (spikes) e exploração de direções visuais com maquetes HTML descartáveis (sketches) antes de se comprometer com uma fase em uma abordagem específica. + +**Pré-requisitos:** Nenhum. `/gsd-spike` e `/gsd-sketch` criam seus próprios diretórios de armazenamento e não exigem um projeto GSD inicializado. + +--- + +## Decida: spike, sketch ou ambos + +| Você quer responder… | Use | +|---|---| +| "Essa abordagem técnica vai funcionar de verdade?" | `/gsd-spike` | +| "Este layout / interação / tratamento visual parece certo?" | `/gsd-sketch` | +| "Qual é a abordagem técnica correta e como ela deve parecer?" | Ambos, em ordem: spike primeiro, depois sketch | + +Spikes respondem perguntas binárias de viabilidade com código executável e um veredicto VALIDATED / INVALIDATED / PARTIAL. Sketches respondem perguntas visuais com 2 a 3 variantes HTML comparáveis no navegador. Eles são complementares — um spike prova que a abordagem é construível, um sketch prova que o design vale a pena construir. + +--- + +## Executar um spike + +### Coleta interativa (padrão) + +```bash +/gsd-spike +``` + +GSD pergunta sobre a questão técnica, a decompõe em 2 a 5 experimentos independentes estruturados como hipóteses **Given / When / Then**, e solicita confirmação antes de construir. + +### Fornecer a ideia diretamente + +```bash +/gsd-spike "can we stream LLM tokens through SSE" +``` + +### Pular a coleta e executar imediatamente + +```bash +/gsd-spike --quick "websocket vs SSE latency" +``` + +`--quick` ignora a conversa de decomposição e trata o argumento como uma única pergunta de spike. Use isso quando a pergunta já for específica o suficiente para executar sem refinamento. + +### O que cada experimento produz + +Cada spike em `.planning/spikes/NNN-descriptive-name/` inclui: + +- Código funcional (não pseudocódigo) +- Uma hipótese **Given / When / Then** escrita antes de qualquer código +- Um rastro de investigação documentando casos extremos, pivôs e surpresas +- Um veredicto **VALIDATED**, **INVALIDATED** ou **PARTIAL** com evidências +- Um `README.md` com frontmatter, instruções de como executar e resultados + +Todos os spikes são indexados em `.planning/spikes/MANIFEST.md`. + +### Empacotar os resultados + +Quando você tiver um sinal, empacote os resultados em uma skill local do projeto para que sessões futuras os carreguem automaticamente: + +```bash +/gsd-spike --wrap-up +``` + +Isso grava em `.claude/skills/spike-findings-[project]/`. A skill é descoberta automaticamente e carregada por execuções subsequentes de `/gsd-sketch`, `/gsd-ui-phase` e `/gsd-plan-phase` — você não precisa referenciá-la explicitamente. + +--- + +## Executar um sketch + +### Coleta de mood (padrão) + +```bash +/gsd-sketch +``` + +GSD abre uma conversa breve para explorar sensação, referências visuais e a ação principal do usuário antes de qualquer código ser escrito. Faz uma pergunta por vez e só começa a construir quando você diz para ir. + +### Fornecer uma direção de design diretamente + +```bash +/gsd-sketch "dashboard layout" +``` + +### Pular a coleta de mood e executar imediatamente + +```bash +/gsd-sketch --quick "sidebar navigation" +``` + +`--quick` ignora completamente a conversa de coleta e usa o argumento como direção de design. + +### Runtimes não-Claude (Codex, Gemini CLI, etc.) + +```bash +/gsd-sketch --text "onboarding flow" +``` + +`--text` substitui prompts interativos por listas numeradas em texto simples. Use isso quando seu runtime não suporta `AskUserQuestion`. + +### O que cada sketch produz + +Cada sketch em `.planning/sketches/NNN-descriptive-name/` inclui: + +- `index.html` com 2 a 3 variantes acessíveis via navegação por abas — abra diretamente no navegador, sem etapa de build +- Elementos interativos funcionais (hover, clique, transições) +- Conteúdo realista usando nomes de campos e formatos de dados de qualquer resultado de spike anterior +- Variáveis CSS compartilhadas de `.planning/sketches/themes/default.css` +- Um `README.md` com a pergunta de design, variantes e o que observar + +Todos os sketches são indexados em `.planning/sketches/MANIFEST.md`. + +### Empacotar as decisões de design vencedoras + +Após escolher uma variante, capture as decisões visuais em uma skill local do projeto: + +```bash +/gsd-sketch --wrap-up +``` + +Isso grava em `.claude/skills/sketch-findings-[project]/`. A skill é carregada automaticamente por `/gsd-ui-phase` — decisões pré-validadas (layout, paleta de cores, tipografia, espaçamento) são tratadas como bloqueadas e não serão solicitadas novamente. + +--- + +## Fluxo combinado: spike → sketch → fase + +Esta é a sequência recomendada quando você está incerto tanto sobre a viabilidade técnica quanto sobre a direção visual: + +```bash +/gsd-spike "SSE vs WebSocket for real-time feed" +/gsd-spike --wrap-up + +/gsd-sketch "real-time feed UI" +/gsd-sketch --wrap-up + +/gsd-discuss-phase N +/gsd-plan-phase N +``` + +Os resultados do spike informam o sketch (formatos de dados reais, estados de interação reais, restrições realistas). Ambos os wrap-ups persistem decisões que o planejador e o pesquisador de UI carregam automaticamente, portanto você não precisa re-explicar escolhas durante `/gsd-discuss-phase` ou `/gsd-ui-phase`. + +--- + +## Como um spike ou sketch alimenta uma fase + +Artefatos de spike e sketch não precisam ser referenciados manualmente. GSD os lê automaticamente em dois pontos: + +1. **`/gsd-sketch`** — carrega `.claude/skills/spike-findings-*/` antes de construir maquetes, para que as variantes reflitam restrições comprovadas (estados de streaming, nomes de campos reais, etc.) +2. **`/gsd-ui-phase N`** — carrega `.claude/skills/sketch-findings-*/` antes de gerar o contrato de design de UI; decisões de design pré-validadas são tratadas como bloqueadas + +O planejador também lê os resultados do spike quando uma skill `spike-findings-*` está presente, de modo que escolhas técnicas validadas (qual biblioteca, qual protocolo, qual formato de dados) fluem diretamente para os planos de tarefas sem explicação repetida. + +--- + +## Relacionados + +- [Projetar uma fase de UI](design-a-ui-phase.md) +- [Planejar uma fase](plan-a-phase.md) +- [Comandos](../COMMANDS.md) +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/how-to/update-gsd.md b/docs/pt-BR/how-to/update-gsd.md new file mode 100644 index 000000000..128261fd4 --- /dev/null +++ b/docs/pt-BR/how-to/update-gsd.md @@ -0,0 +1,120 @@ +# Como atualizar o GSD Core + +Atualize uma instalação existente do GSD Core para a versão mais recente, visualize o changelog antes de confirmar e recupere personalizações locais que a atualização sobrescreveria. + +**O que você precisa:** O mesmo ambiente de execução para o qual o GSD está instalado. O comando de atualização re-executa o instalador internamente, portanto requer Node.js e npx disponíveis (mesmos requisitos da instalação original). + +--- + +## O caminho padrão de atualização + +De dentro do seu ambiente de execução de IA, execute: + +```bash +/gsd-update +``` + +O GSD irá: + +1. Detectar a versão instalada e o escopo da instalação (global ou local). +2. Verificar no npm a versão mais recente do `@opengsd/gsd-core`. +3. Buscar o changelog e exibir o que mudou entre sua versão instalada e a mais recente. +4. Solicitar confirmação antes de alterar qualquer coisa. +5. Fazer backup de quaisquer arquivos adicionados pelo usuário encontrados dentro de diretórios gerenciados pelo GSD para `gsd-user-files-backup/`. +6. Executar o instalador (`npx @opengsd/gsd-core@latest -- --`). +7. Limpar o cache de verificação de atualização para que o indicador na barra de status seja redefinido. +8. Informar se arquivos GSD modificados localmente foram copiados para `gsd-local-patches/`. + +Reinicie seu ambiente de execução após a atualização para carregar os novos comandos e agentes. + +--- + +## Flags + +| Flag | O que faz | +|------|-----------| +| `--sync` | Após atualizar, sincroniza habilidades do registro GSD | +| `--reapply` | Após atualizar, mescla arquivos GSD modificados localmente de volta a partir de `gsd-local-patches/` | + +```bash +/gsd-update --sync # Update and sync skills +/gsd-update --reapply # Update and reapply local patches +``` + +--- + +## Revisando o changelog antes de atualizar + +`/gsd-update` sempre exibe o diff do changelog entre sua versão instalada e a mais recente *antes* de solicitar confirmação. Não é necessário acessar o GitHub separadamente. A saída tem a seguinte aparência: + +```text +## GSD Update Available + +Installed: 1.39.0 +Latest: 1.41.0 + +### What's New +──────────────────────────────────────────────────────────── +[changelog entries for 1.40.0 and 1.41.0] +──────────────────────────────────────────────────────────── + +Proceed with update? [Yes, update now / No, cancel] +``` + +Se o changelog não puder ser obtido (sem acesso à rede, falha no npm), a atualização ainda prossegue após a confirmação — ela não é bloqueada pela disponibilidade do changelog. + +--- + +## Recuperando personalizações locais + +### Arquivos que você adicionou dentro de diretórios gerenciados pelo GSD + +Se você colocou arquivos personalizados dentro de diretórios que o GSD gerencia (por exemplo, agentes personalizados com o prefixo `gsd-` ou arquivos extras em `commands/gsd/`), o instalador os detectará e os copiará para `gsd-user-files-backup/` antes de limpar esses diretórios. Após a atualização, restaure-os manualmente a partir desse local de backup. + +Arquivos colocados fora de diretórios gerenciados pelo GSD — agentes personalizados sem o prefixo `gsd-`, comandos personalizados fora de `commands/gsd/`, seus arquivos `CLAUDE.md` e hooks personalizados — nunca são tocados pelo instalador. + +### Arquivos GSD que você modificou diretamente + +Se você editou um arquivo instalado pelo GSD (por exemplo, ajustando o prompt de sistema de um agente), o instalador detecta a modificação por meio de uma comparação de hash com seu manifesto, faz backup do arquivo em `gsd-local-patches/` e, em seguida, o substitui pela nova versão. Após a atualização: + +```bash +/gsd-update --reapply +``` + +Esse comando mescla suas modificações de `gsd-local-patches/` de volta aos arquivos recém-instalados. + +Se você pulou o `--reapply` após uma atualização anterior e deseja aplicar os patches agora: + +```bash +/gsd-update --reapply +``` + +É seguro executar `--reapply` de forma independente sem acionar um novo download — se você já estiver na versão mais recente, o GSD ignora a etapa de instalação e vai direto para a reaplicação dos patches. + +--- + +## Quando o npm está indisponível + +Se `npx @opengsd/gsd-core@latest` falhar devido a uma falha no npm, restrições de rede ou porque você está trabalhando a partir do repositório de código-fonte, use o procedimento de atualização manual em [docs/manual-update.md](../../manual-update.md). Esse documento aborda como fazer pull do commit mais recente, compilar o dist dos hooks e executar `node bin/install.js` diretamente. + +--- + +## Se você já está na versão mais recente + +`/gsd-update` encerra imediatamente com uma mensagem de confirmação — sem download, sem instalação, sem necessidade de reinicialização. + +--- + +## Migrações do instalador + +Cada versão do GSD pode incluir migrações do instalador que renomeiam, movem ou removem arquivos gerenciados. A camada de migração é executada automaticamente antes que o novo payload do pacote seja gravado. Migrações que afetariam arquivos que você modificou solicitam confirmação em vez de agir silenciosamente. Para o design completo e o registro do contrato de configuração de tempo de execução, consulte [docs/installer-migrations.md](../../installer-migrations.md). + +--- + +## Relacionados + +- [Instalar no seu ambiente de execução](install-on-your-runtime.md) +- [Referência de comandos](../COMMANDS.md) +- [Atualização manual](../../manual-update.md) +- [Migrações do instalador](../../installer-migrations.md) +- [Índice da documentação](../README.md) diff --git a/docs/pt-BR/how-to/verify-and-ship.md b/docs/pt-BR/how-to/verify-and-ship.md new file mode 100644 index 000000000..53486a655 --- /dev/null +++ b/docs/pt-BR/how-to/verify-and-ship.md @@ -0,0 +1,124 @@ +# Como verificar e publicar uma fase + +**Objetivo:** Conduzir o trabalho executado pelo processo de testes de aceitação do usuário, diagnosticar e corrigir eventuais falhas e, em seguida, abrir um pull request com o corpo gerado automaticamente. + +**Pré-requisitos:** A fase deve ter sido executada e possuir arquivos `SUMMARY.md`. Se a execução ainda não foi concluída, consulte [Executar uma fase](execute-a-phase.md). + +--- + +## Executar os testes de aceitação do usuário + +```bash +/gsd-verify-work 1 +``` + +O GSD lê os arquivos `SUMMARY.md` da fase, extrai as entregas observáveis pelo usuário e guia você por elas uma de cada vez. Para cada ponto de verificação, ele apresenta o que *deveria* acontecer e pergunta se a realidade corresponde. + +- `yes` / `y` / vazio → aprovado, avança para o próximo teste +- Qualquer outra coisa → registrado como um problema; a severidade é inferida a partir da sua descrição + +Você nunca precisa categorizar a severidade — o GSD a infere a partir das suas palavras ("trava" → bloqueador, "não funciona" → grave, "está estranho" → cosmético). + +O progresso é gravado em `.planning/phases/01-/01-UAT.md` e sobrevive a um `/clear`. Se uma sessão for interrompida, execute novamente `/gsd-verify-work 1` e o GSD oferece a opção de retomar a partir do último ponto de verificação. + +--- + +## Quando falhas são encontradas: diagnóstico automático e planejamento de correção + +Se algum teste reportar problemas, o GSD prossegue automaticamente: + +1. **Diagnostica as causas raiz** — cria agentes de depuração paralelos, um por problema, e atualiza o `UAT.md` com as causas raiz. +2. **Planeja o fechamento das lacunas** — cria um `gsd-planner` no modo de fechamento de lacunas, que lê o `UAT.md` (com os diagnósticos) e escreve novos arquivos `PLAN.md`. +3. **Verifica os planos de correção** — cria um `gsd-plan-checker` para garantir que os planos são executáveis. Se problemas forem encontrados, o planner e o checker iterarão até três vezes. +4. **Apresenta o próximo passo** — quando os planos passam pelo checker: + +``` +Plans verified and ready for execution. + +`/clear` then `/gsd-execute-phase 1 --gaps-only` +``` + +Execute o comando sugerido para aplicar as correções e, em seguida, execute novamente `/gsd-verify-work 1` para confirmar que tudo passa. + +--- + +## Quando todos os testes passam: publicar a fase + +Quando todos os testes de aceitação passam (ou se esta é a primeira execução e nenhum problema é encontrado), a fase é marcada como concluída em `ROADMAP.md` e `STATE.md` automaticamente. + +```bash +/gsd-ship 1 +``` + +O GSD executa verificações de pré-voo (status de verificação, árvore de trabalho limpa, branch, remoto, autenticação da CLI `gh`), envia o branch e cria um PR: + +```bash +/gsd-ship 1 # PR pronto para revisão +/gsd-ship 1 --draft # PR em rascunho — útil quando mais fases virão a seguir +``` + +O corpo do PR é montado automaticamente a partir dos artefatos de planejamento: + +- Objetivo da fase em `ROADMAP.md` +- Resumos por plano dos arquivos `SUMMARY.md` e seus arquivos principais +- Requisitos atendidos (REQ-IDs) +- Status de verificação em `VERIFICATION.md` +- Decisões-chave em `STATE.md` + +Não é necessário escrever o corpo manualmente. + +--- + +## Opcional: revisão de código antes ou depois de publicar + +`/gsd-ship` não executa uma revisão de código automaticamente, mas você pode incluir uma a qualquer momento: + +**Antes da verificação** (identifica problemas antes dos testes de aceitação): + +```bash +/gsd-code-review 1 # Revisão padrão +/gsd-code-review 1 --fix # Revisão com correção automática de achados Críticos + Avisos +``` + +**Depois que o PR estiver aberto** (para controlar a qualidade antes do merge): + +```bash +/gsd-code-review 1 --depth=deep # Análise entre arquivos incluindo grafos de importação +``` + +Consulte [Configurar revisão entre IAs](set-up-cross-ai-review.md) para configurar o Gemini, Codex ou outros revisores para revisão de planos mais cedo no ciclo. + +--- + +## Opcional: criar um branch de PR limpo + +Se o seu branch contiver commits de `.planning/` que você não quer que os revisores vejam: + +```bash +/gsd-pr-branch # Filtrar contra main +/gsd-pr-branch develop # Filtrar contra develop +``` + +`/gsd-pr-branch` cria um novo branch apenas com mudanças de código — commits de artefatos de planejamento são excluídos. Execute antes de `/gsd-ship` se a política de revisão da sua equipe exclui ruído de planejamento. + +--- + +## Encerrando um marco + +Se esta foi a última fase do marco, execute a auditoria do marco e arquive-o: + +```bash +/gsd-audit-milestone # Verificar se todos os requisitos foram entregues +/gsd-complete-milestone # Arquivar, criar tag git +``` + +`/gsd-complete-milestone` é o próximo passo natural após o merge do PR. Consulte [O ciclo de fases](../explanation/the-phase-loop.md) para entender como a verificação e a publicação se encaixam no ciclo de vida completo do projeto. + +--- + +## Relacionados + +- [Executar uma fase](execute-a-phase.md) +- [Configurar revisão entre IAs](set-up-cross-ai-review.md) +- [O ciclo de fases](../explanation/the-phase-loop.md) +- [Comandos](../COMMANDS.md) diff --git a/docs/pt-BR/how-to/work-in-parallel-with-workstreams.md b/docs/pt-BR/how-to/work-in-parallel-with-workstreams.md new file mode 100644 index 000000000..02955c1a4 --- /dev/null +++ b/docs/pt-BR/how-to/work-in-parallel-with-workstreams.md @@ -0,0 +1,157 @@ +# Como trabalhar em múltiplas áreas em paralelo com workstreams + +**Objetivo:** Executar trabalho simultâneo em diferentes áreas de um milestone — API backend, painel frontend, infraestrutura ou qualquer outra preocupação — sem que o estado de planejamento de uma área vaze para outra. + +**Pré-requisitos:** Um projeto GSD Core ativo (`.planning/ROADMAP.md` existe). Se não existir, execute `/gsd-new-project` primeiro. + +--- + +## O que são workstreams + +Um workstream é um contexto de planejamento isolado dentro de um único repositório de código. Cada workstream possui seu próprio subárvore `.planning/workstreams//` contendo diretórios independentes `STATE.md`, `ROADMAP.md`, `REQUIREMENTS.md` e `phases/`. O próprio repositório — código-fonte, histórico git e branches — é compartilhado entre todos os workstreams. + +``` +.planning/ +├── PROJECT.md ← compartilhado +├── config.json ← compartilhado +├── codebase/ ← compartilhado +└── workstreams/ + ├── backend-api/ + │ ├── STATE.md + │ ├── ROADMAP.md + │ ├── REQUIREMENTS.md + │ └── phases/ + └── frontend-dash/ + ├── STATE.md + ├── ROADMAP.md + ├── REQUIREMENTS.md + └── phases/ +``` + +Quando um workstream está ativo, todos os comandos GSD — `/gsd-progress`, `/gsd-discuss-phase`, `/gsd-plan-phase`, `/gsd-execute-phase` — leem e escrevem no diretório desse workstream. Alternar workstreams redireciona todos esses comandos para uma subárvore diferente sem tocar na árvore de código-fonte. + +--- + +## Criar um workstream + +```bash +/gsd-workstreams create backend-api +``` + +O GSD cria o diretório do workstream em `.planning/workstreams/backend-api/` e o inicializa com um `STATE.md` e `ROADMAP.md` esqueleto. O workstream não é ativado automaticamente — você precisa alternar para ele explicitamente. + +--- + +## Listar workstreams + +```bash +/gsd-workstreams list +``` + +Exibe todos os workstreams e qual está atualmente ativo na sua sessão. + +--- + +## Alternar para um workstream + +```bash +/gsd-workstreams switch backend-api +``` + +A partir deste ponto, todos os comandos de fluxo de trabalho GSD operam no contexto `backend-api`. A alternância é vinculada à sessão: quando múltiplos terminais do Claude Code estão abertos no mesmo repositório, cada sessão pode ter um workstream ativo diferente sem interferir nos demais. + +Após alternar, execute o fluxo normal de fases: + +```bash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +/gsd-execute-phase 1 +/gsd-verify-work 1 +``` + +Para trabalhar em outra área, alterne workstreams em um segundo terminal: + +```bash +/gsd-workstreams switch frontend-dash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +``` + +--- + +## Verificar o progresso em todos os workstreams + +```bash +/gsd-workstreams progress +``` + +Exibe um resumo entre workstreams — status das fases, posição atual e trabalho pendente para cada workstream — sem exigir que você alterne entre eles. + +Para status detalhado de um único workstream: + +```bash +/gsd-workstreams status backend-api +``` + +--- + +## Retomar o trabalho em um workstream + +Após uma redefinição de contexto ou uma nova sessão, restaure sua posição: + +```bash +/gsd-workstreams resume backend-api +``` + +Isso ativa o workstream e restaura sua última posição conhecida dentro dele, equivalente a alternar e então executar `/gsd-resume-work`. + +--- + +## Arquivar um workstream concluído + +Quando o trabalho do milestone de um workstream estiver concluído: + +```bash +/gsd-workstreams complete backend-api +``` + +O GSD marca o workstream como arquivado e o remove da listagem ativa. Os artefatos de planejamento são preservados em `.planning/workstreams/backend-api/` para fins de auditoria. + +--- + +## Executar um único comando em um workstream sem alternar + +Se você precisar executar um comando em um workstream específico sem alterar o contexto ativo da sua sessão, use a flag `--ws`: + +```bash +/gsd-progress --ws frontend-dash +/gsd-plan-phase 2 --ws backend-api +``` + +`--ws` tem a maior prioridade na ordem de resolução e não altera o ponteiro vinculado à sessão. + +--- + +## Quando usar workstreams em vez de workspaces + +Escolha workstreams quando: + +- Todo o trabalho está no **mesmo repositório** e compartilha o mesmo histórico git +- Você quer planejar ou discutir diferentes áreas de preocupação (API, UI, infra) **de forma simultânea** sem que o `STATE.md` de um workstream sobrescreva o de outro +- Você não precisa de um branch separado por workstream no momento da criação (embora possa criar branches normalmente dentro da execução de cada workstream) +- O custo de criação de worktrees git completos não é justificado pelo nível de isolamento necessário + +Escolha [workspaces](isolate-work-with-workspaces.md) quando: + +- Você está trabalhando em **múltiplos repositórios** (por exemplo, `hr-ui` e `ZeymoAPI`) +- Você precisa do isolamento de uma **worktree ou clone git separado** por funcionalidade — branches, arquivos de lock e artefatos de build totalmente independentes +- Você quer executar `/gsd-new-project` independentemente em cada workspace com uma raiz `.planning/` completamente separada, não um subdiretório do `.planning/` do repositório principal + +--- + +## Relacionados + +- [Isolar trabalho com workspaces](isolate-work-with-workspaces.md) +- [O ciclo de fases](../explanation/the-phase-loop.md) +- [Comandos](../COMMANDS.md) +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/issue-driven-orchestration.md b/docs/pt-BR/issue-driven-orchestration.md new file mode 100644 index 000000000..97652aae4 --- /dev/null +++ b/docs/pt-BR/issue-driven-orchestration.md @@ -0,0 +1,191 @@ +# Orquestração Orientada a Issues com o GSD + +**Status:** guia de fluxo de trabalho estável +**Público:** desenvolvedores que rastreiam trabalho no GitHub Issues, Linear, Jira ou +sistemas similares de rastreamento de issues e querem conduzir a implementação +assistida por IA através dos primitivos existentes do GSD. + +## O que é este guia + +Uma receita para combinar comandos que o GSD já inclui em um loop +rastreador de issues → workspace → planejar/executar → verificar/revisar → PR. +É documentação somente. Sem novos comandos, sem daemon, sem integração com +rastreador — cada comando referenciado abaixo já existe no GSD hoje. + +O formato é inspirado pela referência de orquestração open-source [Symphony da +OpenAI](https://openai.com/index/open-source-codex-orchestration-symphony/) +([repositório](https://github.com/openai/symphony)). O GSD não vende nem +encapsula o Symphony. Os *conceitos* de orquestração se mapeiam claramente +nos primitivos que o GSD já expõe; este guia apenas descreve esse mapeamento +para que você possa adotar o padrão sem escrever código de integração ou +contornar os controles de segurança do GSD. + +## Por que isso existe + +O GSD tem os blocos de construção para desenvolvimento de IA orientado a issues — +`/gsd-workspace --new`, `/gsd-manager`, `/gsd-autonomous`, `/gsd-verify-work`, +`/gsd-review`, `/gsd-ship`, além de `STATE.md` e o conjunto de artefatos de fase +— mas não havia um guia que mostrasse como conduzir tudo isso a partir de uma +única issue do rastreador sem escrever scripts de orquestração personalizados. +Sem esse guia, os modos de falha são: + +- Subutilização: desenvolvedores executam discuss/plan/execute manualmente e + nunca recorrem a `/gsd-manager` ou `/gsd-autonomous`, mesmo quando seu padrão + de trabalho se encaixa. +- Scripts alternativos: desenvolvedores criam loops de shell ad-hoc entre seu + rastreador e invocações de `claude`, contornando `STATE.md`, o manifesto de + fases e os controles de verificação. + +Este guia torna o loop canônico descobrível. + +## Mapeamento de conceitos + +Cada linha mapeia um conceito de orquestração no estilo Symphony para o +primitivo do GSD que já o serve. Use esta tabela como chave de tradução ao +ler documentações do Symphony, posts de blog ou descrições de orquestração +de terceiros. + +| Conceito Symphony | Primitivo GSD | +|---|---| +| `WORKFLOW.md` (intenção de alto nível) | `ROADMAP.md` (intenção do projeto), `STATE.md` (status em tempo real), `CONTEXT.md` de fase (escopo por fase), `PLAN.md` de fase (etapas executáveis) | +| Um workspace isolado de agente por tarefa | `/gsd-workspace --new --strategy worktree` | +| Despacho e concorrência de agentes | `/gsd-manager` (painel interativo), `/gsd-autonomous` (sem supervisão) | +| Etapas de discussão e planejamento por fase | `/gsd-discuss-phase` → `/gsd-plan-phase` → `/gsd-execute-phase` | +| Prova de trabalho / evidência de testes | `/gsd-verify-work` (UAT.md persistido entre `/clear`) | +| Revisão adversarial | `/gsd-review` (revisão por pares entre IAs do plano) | +| Controle humano de merge | `/gsd-ship` (cria PR, revisão de código opcional, prepara merge) | +| Captura de trabalho subsequente | `/gsd-capture`, `/gsd-capture --seed`, `/gsd-new-milestone`, ou uma issue aberta manualmente no rastreador | +| Controle de concorrência | Semântica de agente gerenciador / segundo plano (sem poller sempre ativo) | + +O mapeamento é unidirecional: o GSD é responsável pelos controles de segurança +(verificação, revisão humana, confirmação explícita para criação de trabalho +subsequente). O enquadramento de "orquestração contínua" do Symphony é +intencionalmente não adotado — veja [Não-objetivos](#não-objetivos). + +## Fluxo completo + +O loop canônico issue → PR, escrito para poder ser executado a partir de uma +única issue do rastreador de ponta a ponta. Substitua os marcadores entre +colchetes antes de executar. + +1. **Escolha a issue do rastreador.** Selecione uma issue do seu rastreador + (GitHub, Linear, etc.) com escopo suficientemente bem definido para + implementação autônoma — escopo delimitado, critérios de aceitação + observáveis, sem dependências upstream que bloqueiem a execução. +2. **Mapeie para uma fase do GSD.** Se a issue se mapear para uma fase + existente em `ROADMAP.md`, selecione-a. Caso contrário, execute + `/gsd-new-milestone` (para um novo marco de issues relacionadas) ou abra + uma fase via `/gsd-phase` / `/gsd-phase --insert`. Capture a URL da issue + do rastreador no `CONTEXT.md` da fase para que a rastreabilidade sobreviva + à compactação. +3. **Crie um workspace isolado.** Execute + `/gsd-workspace --new --strategy worktree ` para criar uma git + worktree com um diretório `.planning/` independente. A worktree é o limite + de segurança: qualquer exploração, commits parciais ou planos abandonados + ficam fora do `main`. +4. **Execute discuss → plan → execute através do GSD.** De dentro do + workspace, execute `/gsd-discuss-phase` para esclarecer ambiguidades, + `/gsd-plan-phase` para produzir `PLAN.md`, e `/gsd-manager` + (painel interativo) ou `/gsd-execute-phase` / `/gsd-autonomous` + (sem supervisão) para implementar. Evite conduzir invocações brutas de + `claude` de fora do GSD — isso contorna as atualizações de `STATE.md` + e o manifesto de fases. +5. **Exija prova de trabalho.** Execute `/gsd-verify-work` para conduzir o + usuário pelo UAT em relação aos critérios de aceitação da fase. Testes, + capturas de tela, registros de log e diffs de configuração são todos + gravados em `UAT.md`, que persiste entre `/clear` e alimenta lacunas no + `/gsd-plan-phase --gaps` quando a verificação revela escopo não coberto. +6. **Passe pelos controles de revisão e envio.** Execute `/gsd-review` para + obter revisão por pares adversarial do plano por IAs independentes (detecta + pontos cegos modelo a modelo), depois `/gsd-ship` para abrir o PR com um + corpo rico montado a partir dos artefatos de planejamento. Ambos os + controles exigem uma decisão humana antes de qualquer coisa chegar ao + repositório remoto. +7. **Capture trabalho subsequente explicitamente.** Use `/gsd-capture` para + notas inline, `/gsd-capture --seed` para ideias que valem uma fase futura, + ou `/gsd-new-milestone` para um grupo coerente de trabalhos subsequentes. + Criar uma issue no rastreador a partir de um trabalho subsequente + descoberto requer confirmação explícita do usuário — o GSD não publica em + rastreadores remotos automaticamente. + +Quando o PR é mesclado, o loop se fecha. Palavras-chave de fechamento +automático no corpo do PR (`Closes #NNN` / `Fixes #NNN`) fecham a issue do +rastreador no momento do merge. + +## Limites de segurança + +O loop é seguro porque quatro invariantes se mantêm por construção: + +- **Worktrees isoladas.** Cada issue roda em uma worktree de + `/gsd-workspace --new`, para que trabalho parcial, planos abandonados e + commits exploratórios nunca toquem o `main`. `gsd-local-patches/` é a + superfície de recuperação se edições manuais de uma worktree precisarem + voltar após uma atualização. +- **Revisão humana explícita.** `/gsd-review` e `/gsd-ship` ambos param para + aprovação humana. Não há auto-merge e nenhum caminho de auto-PR a partir + da execução. Se você quiser remover o controle humano para um repositório + específico, essa é a sua decisão de política de proteção de branch / + fila de merge — não algo que o GSD decide por você. +- **Nenhuma publicação automática.** O GSD nunca abre, comenta ou fecha uma + issue do rastreador sem um comando explicitamente iniciado pelo usuário. + A captura de trabalho subsequente padrão são artefatos locais (notas, + seeds, marcos); empurrar de volta para o rastreador é uma etapa manual + separada. +- **Verificação antes do envio.** O `UAT.md` do `/gsd-verify-work` deve + registrar evidências antes que `/gsd-ship` seja executado. A disciplina + recomendada é tratar `verification_failed` como um bloqueador mesmo quando + a implementação parece correta — a falha geralmente revela um critério de + aceitação perdido, não um teste instável. + +Se qualquer um desses invariantes for contornado (ex: executar `claude` +diretamente na worktree, pular `/gsd-verify-work`, ou criar issues via a API +do rastreador sem confirmação do usuário), as garantias deste guia não se +aplicam. + +## Não-objetivos + +Este guia deliberadamente **não** propõe nada do seguinte. Eles estão listados +aqui para que futuros contribuidores não voltem a discuti-los em revisão de +código: + +- **Sem venda ou cópia do código Symphony.** O GSD reutiliza seus próprios + primitivos. O mapeamento acima é conceitual; nenhum código derivado do + Symphony está incluído neste repositório. +- **Sem daemon de longa execução.** O GSD não faz polling no GitHub ou Linear. + Os fluxos de trabalho de manager e autonomous lidam com concorrência através + da semântica de agente em segundo plano, não de um daemon. +- **Sem dependência obrigatória de rastreador.** O loop funciona sem qualquer + integração com rastreador. A etapa "issue do rastreador" é uma *entrada + humana* — a URL vai para `CONTEXT.md`. O GSD não tem opinião sobre qual + rastreador você usa, ou se você usa algum. +- **Sem contorno dos controles de verificação, revisão ou decisão humana.** + Mesmo ao executar `/gsd-autonomous`, os controles de verificação e revisão + ainda disparam. O rótulo "autonomous" se refere à progressão de fase a fase, + não ao pulo da aprovação humana. +- **Sem expansão da superfície padrão de habilidades / comandos.** Cada + comando referenciado neste guia já existe. Este guia é uma superfície de + documentação, não uma superfície de funcionalidades. + +## Possível trabalho subsequente + +Se a experiência dos mantenedores com esse loop justificar, uma melhoria +aprovada poderá adicionar posteriormente uma ponte *mínima* com rastreadores: + +- Importar uma issue do GitHub ou Linear para um workspace / fase do GSD. +- Exportar evidências de `UAT.md` como comentário na issue de origem. +- Gerar issues de trabalho subsequente no rastreador a partir da saída de + `/gsd-capture --seed`. + +Cada uma dessas seria sua própria proposta de melhoria, pois cada uma adiciona +superfície de integração e carga de manutenção contínua. Elas estão fora do +escopo deste guia. + +## Relacionados + +- [O loop de fase](explanation/the-phase-loop.md) — como discuss → plan → execute → verify → ship se encaixam como um ciclo repetitivo. +- [Como trabalhar com workspaces](how-to/work-in-parallel-with-workstreams.md) — guia passo a passo para criar e gerenciar worktrees paralelas. +- [Índice de documentação](README.md) — sumário completo da documentação do GSD Core. +- [docs/USER-GUIDE.md](./USER-GUIDE.md) — guias orientados a tarefas dos comandos individuais referenciados acima. +- [docs/COMMANDS.md](COMMANDS.md) — referência completa dos comandos `/gsd-*`. +- [docs/FEATURES.md](FEATURES.md) — matriz de capacidades por funcionalidade (workspaces, manager, autonomous, verify, review, ship). +- [docs/ARCHITECTURE.md](ARCHITECTURE.md) — ciclo de vida dos artefatos de fase e mecânica do `STATE.md`. diff --git a/docs/pt-BR/reference/context-md.md b/docs/pt-BR/reference/context-md.md new file mode 100644 index 000000000..a6474a55b --- /dev/null +++ b/docs/pt-BR/reference/context-md.md @@ -0,0 +1,148 @@ +# Referência do esquema CONTEXT.md + +Um `CONTEXT.md` por fase é o mecanismo do GSD Core para capturar decisões de implementação durante `/gsd:discuss-phase`. É a principal entrada upstream para os agentes de pesquisa e planejamento. Esta página documenta sua estrutura. Consulte o [índice de documentação](../README.md). + +--- + +## Visão geral + +Toda fase que passou pelo fluxo de trabalho de discussão produz um `CONTEXT.md` em: + +``` +.planning/phases/-/-CONTEXT.md +``` + +Por exemplo: `.planning/phases/03-post-feed/03-CONTEXT.md`. + +O arquivo é produzido por `write_context` em `get-shit-done/workflows/discuss-phase.md` (ou seus caminhos expressos de ingestão de PRD / ADR). Ele nunca é editado manualmente durante a operação normal — o fluxo de trabalho discuss-phase o escreve e os agentes downstream o leem como uma fonte de verdade selada. + +--- + +## Frontmatter + +`CONTEXT.md` não possui frontmatter YAML. Os metadados ficam inline no topo do corpo: + +```markdown +# Phase [X]: [Name] - Context + +**Gathered:** [ISO date] +**Status:** Ready for planning +``` + +O campo `Status` é sempre `Ready for planning` quando o arquivo é escrito pela primeira vez. Ele não é atualizado após a criação. + +--- + +## Estrutura de blocos + +O corpo é dividido em blocos nomeados no estilo XML. Os blocos aparecem em uma ordem fixa e são lidos pelos agentes downstream pelo nome do bloco, não pelo número de linha. + +| Bloco | Finalidade | Preenchido por | Consumido por | +|---|---|---|---| +| `` | Define o limite da fase — o que esta fase entrega e o que está explicitamente fora do escopo. Ancora a barreira de escopo ao longo do planejamento e execução. | `discuss-phase` (do objetivo da fase em ROADMAP.md) | `gsd-planner`, `gsd-plan-checker` (conformidade de escopo) | +| `` | Presente apenas quando um `*-SPEC.md` foi encontrado pela etapa `check_spec`. Lista contagens de requisitos bloqueados e limites de escopo; os agentes são orientados a ler `SPEC.md` diretamente para requisitos completos. | `discuss-phase` (condicional) | `gsd-planner` (lê SPEC.md em vez de reler os requisitos aqui) | +| `` | Decisões de implementação capturadas durante a discussão, identificadas com identificadores `D-NN`. As categorias emergem do que foi realmente discutido, em vez de uma taxonomia fixa. Inclui uma subseção `Claude's Discretion` para áreas que o usuário delegou. | `discuss-phase` (discussão interativa) | `gsd-planner` (decisões bloqueadas devem ser implementadas), `gsd-plan-checker` (conformidade com a Dimensão 7) | +| `` | Caminhos relativos completos para cada spec, ADR, documento de funcionalidade ou documento de design relevante para esta fase. Obrigatório — todo CONTEXT.md deve ter esta seção. Os agentes devem ler os arquivos listados antes de planejar ou implementar. | `discuss-phase` (acumulado de refs do ROADMAP.md + referências do usuário durante a discussão + exploração do código) | `gsd-phase-researcher`, `gsd-planner` | +| `` | Ativos reutilizáveis, padrões estabelecidos e pontos de integração descobertos durante a etapa `scout_codebase`. Orienta os agentes em direção ao código existente em vez de reimplementar. | `discuss-phase` (exploração do código) | `gsd-planner`, `gsd-phase-researcher` | +| `` | Referências concretas do tipo "quero assim", comparações de produtos ou exemplos específicos capturados verbatim durante a discussão. | `discuss-phase` (entrada livre do usuário) | `gsd-planner` | +| `` | Ideias que surgiram na discussão mas pertencem a outras fases. Preservadas para não serem perdidas. Inclui uma subseção `Reviewed Todos` quando os todos foram revisados mas não incorporados ao escopo. | `discuss-phase` (redirecionamento de escopo expandido) | Não consumido por agentes automatizados; somente referência humana | + +--- + +## Formato do identificador de decisão + +Cada decisão em `` carrega um identificador sequencial `D-NN`: + +```markdown +### Layout style +- **D-01:** Card-based layout, not timeline or list +- **D-02:** Each card shows: author avatar, name, timestamp, full post content, reaction counts +``` + +Os identificadores têm escopo por fase. `D-01` na Fase 3 não tem relação com `D-01` na Fase 7. O verificador de planos (Dimensão 7) verifica se cada `D-NN` é atendido por pelo menos uma ação de tarefa nos planos gerados. + +--- + +## Referências canônicas + +O bloco `` é **obrigatório**. Agentes que o encontram ausente tratam o CONTEXT.md como incompleto e exibem um aviso. As entradas são agrupadas por tópico e contêm um caminho relativo completo mais uma breve declaração do que o arquivo decide ou define: + +```markdown + +## Canonical References + +**Downstream agents MUST read these before planning or implementing.** + +### Feed display +- `docs/features/social-feed.md` — Feed requirements, post card fields, engagement display rules +- `docs/decisions/adr-012-infinite-scroll.md` — Scroll strategy decision, virtualisation requirements + +### Empty states +- `docs/design/empty-states.md` — Empty state patterns, illustration guidelines + + +``` + +Quando um projeto não tem specs externas, a seção declara isso explicitamente: + +``` +No external specs — requirements fully captured in decisions above +``` + +Menções inline como "ver ADR-019" espalhadas em `` são insuficientes; os agentes precisam do caminho completo na seção dedicada. + +--- + +## Relação com o portão de cobertura de decisões + +A **Dimensão 7: Conformidade com o Contexto** do verificador de planos impõe um portão de cobertura após o planejamento: + +1. Todo identificador `D-NN` em `` deve aparecer em pelo menos um `` ou justificativa de tarefa do plano. +2. Nenhuma tarefa pode implementar algo listado em `` (expansão de escopo). +3. Áreas de `Claude's Discretion` são isentas desta verificação — o planejador pode escolher livremente. + +Um CONTEXT.md cujas decisões sobrevivem aos planos é considerado conforme. Um CONTEXT.md cujas decisões são silenciosamente descartadas ou parcialmente entregues aciona a **Dimensão 7b: Detecção de Redução de Escopo**, que é sempre um BLOQUEADOR. + +--- + +## Integração com SPEC.md + +Quando `/gsd:spec-phase` foi executado antes de discutir uma fase, a etapa `check_spec` encontra o arquivo `*-SPEC.md` e ativa o ``: + +```markdown + +## Requirements (locked via SPEC.md) + +**12 requirements are locked.** See `03-SPEC.md` for full requirements, boundaries, and acceptance criteria. + +Downstream agents MUST read `03-SPEC.md` before planning or implementing. Requirements are not duplicated here. + +**In scope (from SPEC.md):** [copied from SPEC.md Boundaries] +**Out of scope (from SPEC.md):** [copied from SPEC.md Boundaries] + + +``` + +Quando `` está presente, `` contém apenas decisões de implementação da discussão — o "como", não o "o quê". Os requisitos não são duplicados entre os dois arquivos. + +--- + +## Rodapé + +Todo CONTEXT.md termina com um rodapé de identidade: + +```markdown +--- + +*Phase: XX-name* +*Context gathered: [date]* +``` + +--- + +## Relacionados + +- [Esquema PLAN.md](plan-md.md) +- [Artefatos de planejamento](planning-artifacts.md) +- [Modos de discussão](../workflow-discuss-mode.md) +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/reference/plan-md.md b/docs/pt-BR/reference/plan-md.md new file mode 100644 index 000000000..848503904 --- /dev/null +++ b/docs/pt-BR/reference/plan-md.md @@ -0,0 +1,249 @@ +# Referência do esquema PLAN.md + +Um `PLAN.md` por plano é a unidade executável de trabalho do GSD Core — um documento estruturado que instrui exatamente um agente executor sobre o que construir e como verificar se foi construído corretamente. Esta página documenta sua estrutura. Veja o [índice da documentação](../README.md). + +--- + +## Visão geral + +Os planos ficam dentro de diretórios de fase em: + +``` +.planning/phases/-/--PLAN.md +``` + +Por exemplo: `.planning/phases/03-post-feed/03-02-PLAN.md` (Fase 3, Plano 2). + +Os planos são produzidos pelo agente `gsd-planner` (disparado por `/gsd:plan-phase`) e consumidos por `execute-phase`. Uma fase normalmente contém entre um e quatro planos; os planos dentro de uma fase são atribuídos a ondas de execução para que trabalhos independentes sejam executados em paralelo. + +--- + +## Frontmatter YAML + +Todo PLAN.md começa com um bloco de frontmatter YAML entre delimitadores `---`. + +### Exemplo comentado + +```yaml +--- +phase: 03-post-feed +plan: 02 +type: execute +wave: 2 +depends_on: ["03-01"] +files_modified: + - src/components/PostFeed.tsx + - src/components/PostCard.tsx + - src/app/feed/page.tsx +autonomous: true +requirements: ["FEED-01", "FEED-03"] +user_setup: [] + +must_haves: + truths: + - "User can scroll through posts from followed accounts" + - "Each post shows author avatar, name, timestamp, and content" + - "Empty state appears when no posts exist" + artifacts: + - path: "src/components/PostFeed.tsx" + provides: "Scrollable post list" + min_lines: 40 + - path: "src/components/PostCard.tsx" + provides: "Individual post card" + exports: ["PostCard"] + key_links: + - from: "src/components/PostFeed.tsx" + to: "/api/feed" + via: "fetch in useEffect" + pattern: "fetch.*api/feed" +--- +``` + +### Referência dos campos de frontmatter + +| Campo | Obrigatório | Tipo | Finalidade | +|---|---|---|---| +| `phase` | Sim | string | Identificador da fase, ex.: `03-post-feed`. | +| `plan` | Sim | string | Número do plano dentro da fase, ex.: `02`. | +| `type` | Sim | `execute` ou `tdd` | `execute` para planos padrão; `tdd` para planos orientados a testes, onde os testes são escritos antes da implementação. | +| `wave` | Sim | inteiro | Onda de execução. Planos na onda 1 são executados em paralelo (sem dependências). Planos na onda 2 ou superior aguardam a conclusão de todos os planos da onda anterior. Pré-calculado durante o planejamento pelo `gsd-planner`. | +| `depends_on` | Sim | array de IDs de planos | Planos dos quais este plano depende. Array vazio = onda 1. Exemplo: `["03-01"]` significa que este plano é executado após o Plano 01 da Fase 3. | +| `files_modified` | Sim | array de caminhos | Todos os arquivos que este plano cria ou modifica. Usado pelo verificador de planos para detectar conflitos de arquivos na mesma onda e pelo execute-phase para rastreamento de merge. | +| `autonomous` | Sim | booleano | `true` quando todas as tarefas são do tipo `auto`. `false` quando o plano contém alguma tarefa `checkpoint:*` que requer interação humana. | +| `requirements` | Sim | array de IDs | IDs de requisitos do ROADMAP.md que este plano atende. Todo ID de requisito de fase deve aparecer no campo `requirements` de pelo menos um plano. Arrays vazios são um BLOQUEADOR. | +| `user_setup` | Não | array de objetos | Etapas de configuração de serviços externos que o Claude não pode automatizar (criação de conta, recuperação de segredos, configuração de painel). Quando presente, o execute-phase gera um checklist `USER-SETUP.md` para o desenvolvedor. | +| `must_haves` | Sim | objeto | Critérios de verificação orientados ao objetivo final. Veja abaixo. | + +--- + +## Campo `must_haves` + +`must_haves` captura o que deve ser observavelmente verdadeiro para que o objetivo da fase seja alcançado. É derivado durante o planejamento e verificado após a execução pelo agente `gsd-verifier`. + +### Sub-campos + +| Sub-campo | Tipo | Finalidade | +|---|---|---| +| `truths` | array de strings | Comportamentos observáveis do ponto de vista do usuário. Cada um deve ser verificável. Exemplo: `"User can send a message"`, não `"WebSocket library installed"`. | +| `artifacts` | array de objetos | Arquivos que devem existir com implementação substantiva (não stubs). | +| `artifacts[].path` | string | Caminho do arquivo relativo à raiz do projeto. | +| `artifacts[].provides` | string | Qual capacidade este arquivo entrega. | +| `artifacts[].min_lines` | inteiro (opcional) | Contagem mínima de linhas para não ser considerado um stub. | +| `artifacts[].exports` | array de strings (opcional) | Exportações nomeadas esperadas para verificação. | +| `artifacts[].contains` | string (opcional) | Expressão regular ou padrão literal que deve aparecer no arquivo. | +| `key_links` | array de objetos | Conexões críticas entre artefatos — a ligação que faz o sistema funcionar de ponta a ponta. | +| `key_links[].from` | string | Arquivo ou componente de origem. | +| `key_links[].to` | string | Arquivo, endpoint ou módulo de destino. | +| `key_links[].via` | string | Descrição de como eles se conectam (ex.: `fetch in useEffect`, `Prisma query`, `import`). | +| `key_links[].pattern` | string (opcional) | Expressão regular para verificar se a conexão existe no código-fonte. | + +--- + +## Estrutura do corpo + +Após o frontmatter, o corpo do plano utiliza blocos no estilo XML lidos pelo agente executor. + +### `` + +Declara o que o plano entrega e por que isso importa para o projeto: + +```xml + +Implement the post feed as a scrollable card list. + +Purpose: Core display feature for the social feed phase. +Output: PostFeed and PostCard components wired to /api/feed. + +``` + +### `` + +Lista os arquivos de workflow que o executor lê antes de começar. Sempre inclui o workflow execute-plan; adiciona a referência de checkpoints quando o plano contém tarefas de checkpoint: + +```xml + +@~/.claude/get-shit-done/workflows/execute-plan.md +@~/.claude/get-shit-done/templates/summary.md + +``` + +### `` + +Referencia os arquivos-fonte que o executor precisa ler. Inclui documentos de planejamento no nível do projeto e quaisquer arquivos-fonte cujos padrões ou tipos o plano deve replicar. Arquivos `SUMMARY.md` de planos anteriores são incluídos apenas quando há uma dependência genuína (tipos importados, decisão compartilhada) — não de forma reflexiva: + +```xml + +@.planning/PROJECT.md +@.planning/ROADMAP.md +@.planning/STATE.md +@src/components/UserCard.tsx + +``` + +### `` + +Contém um ou mais elementos ``. Todo elemento de tarefa deve ter ``, ``, ``, ``, ``, `` e `` para tarefas do tipo `type="auto"`. + +--- + +## Tipos de tarefa + +| Tipo | Uso | Autonomia | +|---|---|---| +| `auto` | Tudo o que o executor pode fazer de forma independente. | Totalmente autônomo. | +| `checkpoint:human-verify` | Verificação visual ou funcional que requer que um humano observe uma UI ou serviço em execução. | Pausa a execução; apresenta ao desenvolvedor; retoma com aprovação. | +| `checkpoint:decision` | Escolhas de implementação que surgiram durante a execução e requerem a contribuição do desenvolvedor. | Pausa a execução; apresenta opções; retoma com a seleção. | +| `checkpoint:human-action` | Etapas manuais verdadeiramente inevitáveis (criação de conta, interação com hardware). Usadas com parcimônia. | Pausa a execução; retoma com confirmação. | + +Planos que contêm qualquer tarefa de checkpoint devem definir `autonomous: false` no frontmatter. + +--- + +## Estrutura de tarefa `auto` + +```xml + + Task 1: Create PostCard component + src/components/PostCard.tsx + src/components/UserCard.tsx, src/types/post.ts + Create PostCard component accepting a Post prop (id, authorId, content, createdAt, + reactionCount). Render author avatar using UserAvatar from UserCard pattern. Show timestamp + using date-fns formatDistanceToNow. Export as named export PostCard. + npx tsc --noEmit + + - src/components/PostCard.tsx exports named export PostCard + - PostCard.tsx contains "reactionCount" prop usage + - npx tsc --noEmit exits 0 + + PostCard renders post content with author and timestamp + +``` + +### Campos obrigatórios para tarefas `auto` + +| Campo | Regra | +|---|---| +| `` | Todo arquivo que a tarefa cria ou modifica. O executor escreve apenas nesses arquivos. | +| `` | Arquivos que o executor deve ler antes de tocar em qualquer coisa — o arquivo sendo modificado, qualquer arquivo de padrão de referência, qualquer arquivo cujos tipos ou convenções devem ser replicados. | +| `` | Instruções concretas com identificadores exatos, caminhos de arquivo, assinaturas de função e valores esperados. Nunca diz "alinhe X com Y" sem especificar o estado-alvo. Nunca contém blocos de código cercados ou implementações completas. | +| `` | Um comando ou verificação executável que comprova o sucesso da tarefa. Deve distinguir aprovação de falha — `echo "done"` não é válido. | +| `` | Condições verificáveis: strings verificáveis por grep, códigos de saída de comandos, comportamentos observáveis. Sem linguagem subjetiva ("parece correto", "configurado corretamente"). | +| `` | Uma declaração curta e mensurável do resultado concluído. | + +--- + +## Dimensões de qualidade do plano + +O agente `gsd-plan-checker` avalia cada PLAN.md em 12 dimensões antes do início da execução. Um plano que falha em qualquer verificação de severidade BLOQUEADOR é devolvido ao `gsd-planner` para revisão (até 3 iterações): + +| Dimensão | O que verifica | +|---|---| +| **1 — Cobertura de Requisitos** | Todo ID de requisito de fase do ROADMAP.md aparece no campo de frontmatter `requirements` de pelo menos um plano e possui tarefa(s) correspondente(s). | +| **2 — Completude das Tarefas** | Toda tarefa `auto` contém todos os campos obrigatórios (``, ``, ``, ``, ``). Nenhum campo vago ou vazio. | +| **3 — Correção de Dependências** | As referências de `depends_on` são válidas, acíclicas e consistentes com os números de onda. Um plano da Onda N depende apenas de planos em ondas < N. | +| **4 — Links Principais Planejados** | Artefatos em `must_haves.key_links` possuem tarefas correspondentes que implementam a ligação — não apenas a criação do artefato. | +| **5 — Sanidade do Escopo** | Os planos permanecem dentro do orçamento de contexto: 2–3 tarefas por plano (4 = aviso, 5+ = BLOQUEADOR), ≤ 8–10 arquivos por plano (15+ = BLOQUEADOR). | +| **6 — Derivação de Verificação** | `must_haves.truths` são comportamentos observáveis pelo usuário, não detalhes de implementação. Artefatos mapeiam para truths. Links principais cobrem a ligação crítica. | +| **7 — Conformidade de Contexto** | Toda decisão `D-NN` do CONTEXT.md é abordada por pelo menos uma tarefa. Nenhuma tarefa implementa nada de ``. | +| **7b — Detecção de Redução de Escopo** | As ações das tarefas não reduzem silenciosamente uma decisão bloqueada para um "v1", "stub" ou "melhoria futura" sem entregar o escopo completo da decisão. Sempre é um BLOQUEADOR quando encontrado. | +| **7c — Conformidade de Nível Arquitetural** | As tarefas atribuem capacidades ao nível correto conforme o Mapa de Responsabilidade Arquitetural do RESEARCH.md (quando presente). Capacidades sensíveis à segurança no nível errado são BLOCKEADOREs. | +| **8 — Conformidade Nyquist** | Quando `workflow.nyquist_validation` está habilitado e RESEARCH.md existe, toda tarefa tem um comando de verificação ``, nenhuma janela consecutiva de 3 tarefas carece de cobertura, e VALIDATION.md está presente. | +| **9 — Contratos de Dados Entre Planos** | Quando planos compartilham pipelines de dados, suas transformações são compatíveis — nenhum plano remove dados que outro plano precisa em sua forma original. | +| **10 — Conformidade com CLAUDE.md** | Os planos respeitam convenções específicas do projeto, padrões proibidos, ferramentas obrigatórias e requisitos de segurança do `./CLAUDE.md`. | +| **11 — Resolução de Pesquisa** | Quando RESEARCH.md existe, sua seção `## Open Questions` está marcada como `(RESOLVED)` antes de o planejamento prosseguir. | +| **12 — Conformidade de Padrões** | Quando PATTERNS.md existe, as tarefas referenciam os padrões analógicos corretos para cada arquivo novo ou modificado. | + +--- + +## Modelo de execução por ondas + +Os números de onda são pré-calculados durante o planejamento. O execute-phase agrupa os planos por número de onda e executa os planos de cada onda em paralelo: + +``` +Wave 1: Plan 01, Plan 02, Plan 03 (all run simultaneously — no dependencies) +Wave 2: Plan 04 (waits for Wave 1 to complete) +Wave 3: Plan 05 (waits for Wave 2 to complete) +``` + +Planos dentro de uma mesma onda que modificam arquivos sobrepostos não devem estar na mesma onda — a Dimensão 3 do verificador de planos sinaliza isso como um BLOQUEADOR. + +--- + +## Saída do plano + +Após a execução bem-sucedida de um plano, o executor escreve um SUMMARY.md em: + +``` +.planning/phases/-/--SUMMARY.md +``` + +O SUMMARY.md é o registro canônico do que foi construído. Planos subsequentes na mesma fase podem referenciá-lo quando há uma dependência genuína em seus tipos ou decisões. + +--- + +## Relacionados + +- [Esquema CONTEXT.md](context-md.md) +- [Artefatos de planejamento](planning-artifacts.md) +- [Funcionalidades](../FEATURES.md) +- [Índice da documentação](../README.md) diff --git a/docs/pt-BR/reference/planning-artifacts.md b/docs/pt-BR/reference/planning-artifacts.md new file mode 100644 index 000000000..7d6859acc --- /dev/null +++ b/docs/pt-BR/reference/planning-artifacts.md @@ -0,0 +1,225 @@ +# Referência de artefatos de planejamento + +O diretório `.planning/` é a memória compartilhada do GSD Core para um projeto. Todos os fluxos de trabalho leem, gravam e deixam um rastro auditável de decisões. Esta página mapeia cada arquivo, sua finalidade e qual comando o produz ou consome. Consulte o [índice de documentação](../README.md). + +--- + +## Estrutura de diretórios + +``` +.planning/ +├── PROJECT.md # Identidade do projeto e valor central +├── ROADMAP.md # Listagem de marcos e fases com objetivos +├── REQUIREMENTS.md # Critérios de aceitação numerados +├── STATE.md # Rastreador de posição em andamento +├── config.json # Configuração de fluxo de trabalho e modelo +├── MILESTONES.md # Arquivo de marcos (opcional) +├── BACKLOG.md # Trabalho adiado e futuro (opcional) +├── LEARNINGS.md # Aprendizados acumulados entre fases (opcional) +├── DECISIONS-INDEX.md # Resumo contínuo de decisões anteriores (opcional) +├── METHODOLOGY.md # Frameworks interpretativos reutilizáveis (opcional) +├── HANDOFF.json # Estado de pausa legível por máquina (transitório) +├── codebase/ # Mapas do código-base (opcional) +│ ├── architecture.md +│ ├── stack.md +│ └── ... +├── intel/ # Índice de símbolos consultável (opcional, intel.enabled) +│ └── API-SURFACE.md +└── phases/ + └── -/ # Um diretório por fase + ├── -CONTEXT.md # Decisões de implementação (discuss-phase) + ├── -DISCUSSION-LOG.md # Auditoria legível da discussão (discuss-phase) + ├── -RESEARCH.md # Resultados de pesquisa técnica (plan-phase) + ├── -VALIDATION.md # Estratégia de cobertura de testes Nyquist (plan-phase) + ├── -PATTERNS.md # Mapa de análogos do código-base (plan-phase, opcional) + ├── --PLAN.md # Plano executável (plan-phase, um por plano) + ├── --SUMMARY.md # Registro de execução (execute-phase, um por plano) + ├── -VERIFICATION.md # Relatório de verificação dos objetivos da fase (verify-phase) + ├── -UAT.md # Estado persistente de sessão UAT (execute-phase) + └── .continue-here.md # Instruções de retomada após pausa (pause-work) +``` + +--- + +## Artefatos no nível raiz + +### `PROJECT.md` + +| | | +|---|---| +| **Finalidade** | Identidade canônica do projeto: o que é, para quem é, valor central, requisitos, restrições e decisões-chave. Atualizado ao longo do ciclo de vida do projeto conforme o produto evolui. | +| **Produzido por** | `/gsd-new-project` (criação inicial); atualizado por `/gsd-complete-milestone` à medida que as decisões são validadas. | +| **Consumido por** | Todos os fluxos de trabalho de planejamento; `gsd-phase-researcher`, `gsd-planner` (contexto); `discuss-phase` (decisões anteriores); `gsd-plan-checker` (restrições do projeto). | + +### `ROADMAP.md` + +| | | +|---|---| +| **Finalidade** | Listagem de marcos e fases com objetivos, IDs de requisitos, critérios de sucesso e referências canônicas por fase. A fonte única de verdade sobre o que o projeto está construindo e em que ordem. | +| **Produzido por** | `/gsd-new-project` (criação inicial); atualizado por `/gsd-phase --insert` e `/gsd-complete-milestone`. | +| **Consumido por** | `/gsd-discuss-phase`, `/gsd-plan-phase`, `/gsd-execute-phase`; todos os comandos de orquestração que precisam de informações de fase; `gsd-planner`, `gsd-plan-checker`, `gsd-phase-researcher`. | + +### `REQUIREMENTS.md` + +| | | +|---|---| +| **Finalidade** | Critérios de aceitação numerados e verificáveis para o projeto. Cada requisito possui um ID (ex.: `AUTH-01`) que mapeia para as fases do roadmap. Marca os requisitos como concluídos conforme as fases são executadas. | +| **Produzido por** | `/gsd-new-project` (criação inicial); requisitos marcados como concluídos por `execute-phase`. | +| **Consumido por** | `gsd-planner` (os planos devem contemplar todos os IDs de requisitos da fase); `gsd-plan-checker` Dimensão 1 (cobertura de requisitos); `discuss-phase` (requisitos anteriores). | + +### `STATE.md` + +| | | +|---|---| +| **Finalidade** | Rastreador de posição em andamento — fase e plano atuais, métricas de progresso, decisões acumuladas, notas de continuidade de sessão. Lido no início de toda execução de fluxo de trabalho. Atualizado após cada ação significativa. | +| **Produzido por** | `/gsd-new-project` (criação inicial); atualizado continuamente por todos os fluxos de fase, `/gsd-pause-work`, `/gsd-resume-work`. | +| **Consumido por** | Todos os fluxos de orquestração; `/gsd-progress`; execução de tarefas avulsas via `/gsd-quick`; `gsd-planner` e `gsd-phase-researcher` (decisões do projeto). | + +Consulte o [esquema de STATE.md](state-md.md) para a referência completa de campos. + +### `config.json` + +| | | +|---|---| +| **Finalidade** | Configuração do fluxo de trabalho: perfis de modelo, alternâncias de pesquisa e verificador de plano, estratégia de ramificação git, validação Nyquist, configurações de paralelização e substituições de modelo por agente. | +| **Produzido por** | `/gsd-new-project` (criação inicial); `/gsd-settings` (edição interativa). | +| **Consumido por** | Todos os fluxos de trabalho e subagentes — lido no momento de inicialização via `gsd-tools query config-get`. | + +Consulte [CONFIGURATION](../CONFIGURATION.md) para o esquema completo. + +### `MILESTONES.md` (opcional) + +| | | +|---|---| +| **Finalidade** | Registro histórico de marcos concluídos. Preenchido à medida que cada marco é encerrado; fornece um instantâneo de arquivo do que foi entregue e quando. | +| **Produzido por** | `/gsd-complete-milestone`. | +| **Consumido por** | `/gsd-audit-milestone`; revisão humana. | + +### `DECISIONS-INDEX.md` (opcional) + +| | | +|---|---| +| **Finalidade** | Resumo contínuo limitado de decisões capturadas em arquivos CONTEXT.md de fases anteriores. Quando presente, o `discuss-phase` lê este único arquivo em vez de ler até três arquivos CONTEXT.md anteriores individualmente, economizando orçamento de contexto. | +| **Produzido por** | Gerado quando o número de fases anteriores ultrapassa o limite de leitura contínua. | +| **Consumido por** | `discuss-phase` (etapa `load_prior_context`). | + +### `HANDOFF.json` (transitório) + +| | | +|---|---| +| **Finalidade** | Estado de pausa legível por máquina gravado quando o trabalho é interrompido. Contém o ponto de retomada, contexto em andamento e instruções de continuação. Consumido exatamente uma vez — na retomada. | +| **Produzido por** | `/gsd-pause-work`. | +| **Consumido por** | `/gsd-resume-work`. | + +--- + +## Artefatos por fase + +Todos os arquivos por fase ficam em `.planning/phases/-/`, onde `NN` é o número da fase com zero à esquerda e `slug` é o nome da fase com hifens. + +### `-CONTEXT.md` + +| | | +|---|---| +| **Finalidade** | Decisões de implementação capturadas antes do início do planejamento. Contém o limite da fase (``), decisões bloqueadas com identificadores `D-NN` (``), referências canônicas de documentos (``), insights de código existente (``), inspirações específicas (``) e ideias adiadas (``). | +| **Produzido por** | `/gsd-discuss-phase` (discussão interativa ou caminhos expressos PRD/ADR). | +| **Consumido por** | `gsd-phase-researcher` (o que investigar); `gsd-planner` (decisões bloqueadas); `gsd-plan-checker` Dimensão 7 (conformidade de contexto). | + +Consulte o [esquema de CONTEXT.md](context-md.md) para a referência completa de campos. + +### `-DISCUSSION-LOG.md` + +| | | +|---|---| +| **Finalidade** | Rastro de auditoria legível da sessão de discuss-phase: áreas discutidas, opções apresentadas, seleções feitas, ideias adiadas e itens deixados ao critério do Claude. Não é consumido por fluxos de trabalho automatizados. | +| **Produzido por** | `/gsd-discuss-phase` (etapa `git_commit`). | +| **Consumido por** | Revisão humana; retrospectivas. | + +### `-RESEARCH.md` + +| | | +|---|---| +| **Finalidade** | Resultados de pesquisa técnica produzidos antes do planejamento. Responde à pergunta "O que preciso saber para planejar bem esta fase?" — abrange análise de domínio, padrões, riscos, um Mapa de Responsabilidade Arquitetural e uma seção de Arquitetura de Validação (usada pelo gate Nyquist). | +| **Produzido por** | `/gsd-plan-phase` via agente `gsd-phase-researcher`. | +| **Consumido por** | `gsd-planner` (entradas de planejamento); `gsd-plan-checker` Dimensão 7c (conformidade de camada), Dimensão 8 (Nyquist), Dimensão 11 (resolução de pesquisa); `gsd-pattern-mapper` (fonte de lista de arquivos). | + +### `-VALIDATION.md` + +| | | +|---|---| +| **Finalidade** | Estratégia de validação inspirada no Nyquist, derivada da seção `## Validation Architecture` do RESEARCH.md. Especifica requisitos de cobertura de testes automatizados que os planos devem respeitar. | +| **Produzido por** | `/gsd-plan-phase` (Etapa 5.5, quando `workflow.nyquist_validation` está habilitado e o RESEARCH.md contém uma seção de Arquitetura de Validação). | +| **Consumido por** | `gsd-plan-checker` Dimensão 8 (gate Check 8e — deve existir antes de os checks Nyquist prosseguirem); `gsd-verifier`. | + +### `-PATTERNS.md` + +| | | +|---|---| +| **Finalidade** | Mapa de análogos do código-base produzido pelo `gsd-pattern-mapper`. Para cada arquivo a ser criado ou modificado nesta fase, identifica o análogo existente mais próximo, classifica o papel e o fluxo de dados do arquivo e extrai trechos concretos de código. Orienta o planejador em direção a padrões consistentes. | +| **Produzido por** | `/gsd-plan-phase` via agente `gsd-pattern-mapper` (opcional; ignorado se `workflow.pattern_mapper: false`). | +| **Consumido por** | `gsd-planner` (orientação de padrões); `gsd-plan-checker` Dimensão 12 (conformidade de padrões). | + +### `--PLAN.md` + +| | | +|---|---| +| **Finalidade** | Plano executável para uma única unidade de trabalho dentro da fase. Contém frontmatter YAML (onda, dependências, arquivos, requisitos, `must_haves`), um objetivo, referências de contexto, tarefas estruturadas em XML com campos ``, ``, `` e ``, e critérios de verificação. | +| **Produzido por** | `/gsd-plan-phase` via agente `gsd-planner`. Um arquivo por plano — ex.: `03-02-PLAN.md` é Fase 3, Plano 2. | +| **Consumido por** | `/gsd-execute-phase` (agente executor lê o plano e executa as tarefas); `gsd-plan-checker` (revisão de qualidade pré-execução); `gsd-verifier` (lê `must_haves` para verificação pós-execução). | + +Consulte o [esquema de PLAN.md](plan-md.md) para a referência completa de campos. + +### `--SUMMARY.md` + +| | | +|---|---| +| **Finalidade** | Registro de execução gravado após a conclusão de um plano. Documenta o que foi construído, desvios em relação ao plano, uma autoverificação em relação aos critérios de aceitação e o grafo de dependências da fase. | +| **Produzido por** | Agente executor de `execute-phase` (gravado ao final da execução de cada plano). | +| **Consumido por** | `/gsd-progress` (status da fase); `gsd-planner` (quando um plano subsequente tem dependência genuína da saída de um plano anterior); `milestone-summary`. | + +### `-VERIFICATION.md` + +| | | +|---|---| +| **Finalidade** | Relatório de verificação dos objetivos da fase. Verifica `must_haves.truths`, `must_haves.artifacts` e `must_haves.key_links` de todos os planos em relação ao código-base real após a execução. Registra `status: passed | gaps_found | human_needed`. | +| **Produzido por** | `/gsd-verify-work` (ou a etapa de verificação dentro de `/gsd-execute-phase`). | +| **Consumido por** | Gate de fase encerrada do `plan-phase` (um VERIFICATION.md com `status: passed` marca a fase como `Complete` e bloqueia replanejamento sem `--force`); `/gsd-progress`; revisão humana. | + +### `-UAT.md` + +| | | +|---|---| +| **Finalidade** | Rastreamento persistente de sessão UAT. Registra cada caso de teste, comportamento observável esperado, resultado e resposta do desenvolvedor ao longo de uma sessão UAT ativa. Carrega frontmatter YAML (`status`, `phase`, `source`, timestamps). | +| **Produzido por** | `/gsd-audit-uat` (sessão UAT interativa). | +| **Consumido por** | `/gsd-audit-uat` (retomada de uma sessão UAT anterior). | + +### `.continue-here.md` + +| | | +|---|---| +| **Finalidade** | Instruções de retomada legíveis gravadas quando o trabalho em uma fase é pausado. Contém contexto para agentes retomarem: antipadrões críticos, problemas bloqueantes, leitura obrigatória e o comando exato para retomar. | +| **Produzido por** | `/gsd-pause-work`. | +| **Consumido por** | Qualquer fluxo de trabalho que inicia em uma fase — tanto `discuss-phase` quanto `plan-phase` verificam a existência deste arquivo na entrada e exigem que o agente demonstre compreensão de quaisquer antipadrões `blocking` antes de prosseguir. | + +--- + +## Convenções de nomenclatura + +| Segmento | Formato | Exemplo | +|---|---|---| +| Diretório de fase | `-` | `03-post-feed` | +| Arquivo de nível de fase | `-.md` | `03-CONTEXT.md` | +| Arquivo de nível de plano | `--.md` | `03-02-PLAN.md` | +| `NN` | Número da fase com zero à esquerda | `03` para Fase 3 | +| `PP` | Número do plano com zero à esquerda dentro da fase | `02` para Plano 2 | + +Quando `project_code` está definido no `config.json`, os diretórios de fase usam o código do projeto como prefixo: `CK-03-post-feed` para o código de projeto `CK`, Fase 3. + +--- + +## Relacionados + +- [Esquema de STATE.md](state-md.md) +- [Esquema de CONTEXT.md](context-md.md) +- [Esquema de PLAN.md](plan-md.md) +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/reference/state-md.md b/docs/pt-BR/reference/state-md.md new file mode 100644 index 000000000..12d6f1c65 --- /dev/null +++ b/docs/pt-BR/reference/state-md.md @@ -0,0 +1,201 @@ +# Referência do esquema STATE.md + +`STATE.md` é o arquivo de memória viva do projeto do GSD Core — um único documento Markdown que registra em que ponto o projeto se encontra, o que aconteceu por último e o que executar a seguir. Esta página documenta sua estrutura. Consulte o [índice da documentação](../README.md). + +--- + +## Visão geral + +Todo projeto gerenciado pelo GSD Core mantém um único `STATE.md` em `.planning/STATE.md`. Ele é lido no início de todo fluxo de trabalho e escrito após toda ação significativa. O arquivo combina: + +- **Frontmatter YAML** — campos legíveis por máquina consumidos pelo hook de linha de status (`parseStateMd`) e pelos comandos `gsd-tools state`. +- **Corpo Markdown** — seções legíveis por humanos cobrindo a posição atual, contexto acumulado, continuidade de sessão e métricas de desempenho. + +O arquivo é intencionalmente pequeno (meta: menos de 100 linhas). Ele é um resumo do estado do projeto, não um arquivo histórico. + +--- + +## Frontmatter YAML + +O frontmatter aparece entre delimitadores `---` no início do arquivo. Todos os campos, exceto `gsd_state_version` e `status`, são opcionais; os campos podem estar ausentes quando seus dados ainda não estão disponíveis. + +### Exemplo comentado + +```yaml +--- +gsd_state_version: '1.0' +milestone: v2.0 +milestone_name: Code Quality +status: executing + +# Campos de ciclo de vida de fase — todos opcionais (adicionados na v1.40.0, issue #2833) +active_phase: "4.5" +next_action: execute-phase +next_phases: ["4.5"] + +progress: + total_phases: 17 + completed_phases: 10 + total_plans: 84 + completed_plans: 47 + percent: 59 + +# Campos adicionais escritos por syncStateFrontmatter +current_phase: "4" +current_phase_name: Observability +current_plan: "3" +last_updated: "2026-06-01T12:34:56.789Z" +last_activity: "2026-06-01" +stopped_at: "Phase 4 P3 execution complete" +paused_at: null +--- +``` + +### Referência de campos + +| Campo | Tipo | Quando populado | Finalidade | +|---|---|---|---| +| `gsd_state_version` | string (`'1.0'`) | Sempre | Versão do esquema; escrito na primeira chamada `state.*` por `syncStateFrontmatter`. | +| `milestone` | string (ex.: `v2.0`) | Quando um milestone está configurado | Versão do milestone atual, lida da configuração do projeto. | +| `milestone_name` | string | Quando um milestone está configurado | Rótulo legível do milestone (ex.: `Code Quality`). | +| `status` | string | Sempre | Estágio atual do ciclo de vida. Normalizado por `normalizeStateStatus()` — veja [valores de status](#valores-de-status). | +| `active_phase` | string (ex.: `"4.5"`) | Um comando do orquestrador está em andamento nesta fase | O número da fase atualmente sendo processada. Definido como `null` entre fases. | +| `next_action` | string | Ocioso, com um comando recomendado | O slash command a executar a seguir: `discuss-phase`, `plan-phase`, `execute-phase` ou `verify-phase`. Definido como `null` quando um orquestrador está em andamento ou nenhuma recomendação está disponível. | +| `next_phases` | array YAML flow (ex.: `["4.5"]`) | Acompanha `next_action` | Os IDs de fase aos quais o `next_action` se aplica (tipicamente 1–2 entradas). Definido como `null` nas mesmas condições que `next_action`. | +| `progress.total_phases` | inteiro | Quando dados de fase estão disponíveis | Número total de fases no milestone atual, derivado do ROADMAP.md e do diretório de fases. | +| `progress.completed_phases` | inteiro | Quando dados de fase estão disponíveis | Número de fases que têm todos os resumos de planos em disco (ou seja, todos os planos concluídos). | +| `progress.total_plans` | inteiro | Quando arquivos de plano existem | Soma de todos os arquivos de plano nas fases do milestone atual. | +| `progress.completed_plans` | inteiro | Quando arquivos de resumo existem | Soma dos resumos de planos concluídos (um SUMMARY.md por plano executado). | +| `progress.percent` | inteiro 0–100 | Quando dados de progresso estão disponíveis | Progresso do milestone na **dimensão de fases** (`min(completed_plans/total_plans, completed_phases/total_phases)`). A barra de progresso da linha de status é renderizada somente quando este campo está presente — sua ausência suprime a barra. | +| `current_phase` | string | Quando uma fase está em execução | Número da fase extraído do campo `Current Phase:` do corpo. | +| `current_phase_name` | string | Quando uma fase tem nome | Nome da fase extraído do campo `Current Phase Name:` do corpo. | +| `current_plan` | string | Quando um plano está em andamento | Número do plano extraído do campo `Current Plan:` do corpo. | +| `last_updated` | timestamp ISO-8601 | Sempre (na escrita) | Timestamp da última chamada a `syncStateFrontmatter`; escrito por `realClock.nowIso()`. | +| `last_activity` | string | Quando definido no corpo | Data da última atividade, extraída do campo `Last Activity:` do corpo. | +| `stopped_at` | string | Quando um ponto de parada foi registrado | Descrição da última ação concluída; limitada à seção `## Session` do corpo para evitar correspondência com prosa de arquivo. | +| `paused_at` | string | Quando o projeto está pausado | Descrição de forma livre do ponto de pausa; ausente ou `null` quando não pausado. | + +### Valores de status + +`normalizeStateStatus()` em `get-shit-done/bin/lib/state-document.cjs` mapeia o texto bruto do corpo para estes valores canônicos: + +| Valor canônico | Texto correspondente (sem diferenciação de maiúsculas/minúsculas) | +|---|---| +| `discussing` | contém `discussing` | +| `planning` | contém `planning` ou `ready to plan` | +| `executing` | contém `executing`, `in progress` ou `ready to execute` | +| `verifying` | contém `verif` | +| `completed` | contém `complete` ou `done` | +| `paused` | contém `paused` ou `stopped`, ou `paused_at` está presente | +| `unknown` | nenhuma das anteriores | + +Quando um comando do orquestrador está em andamento, a convenção (issue #2833) é escrever o estágio do ciclo de vida diretamente em `status`: + +| Comando | `status` durante a execução | +|---|---| +| `/gsd-discuss-phase` | `discussing` | +| `/gsd-plan-phase` | `planning` | +| `/gsd-execute-phase` | `executing` | +| `/gsd-verify-work` | `verifying` | + +--- + +## Cenas de renderização da linha de status + +`formatGsdState()` em `hooks/gsd-statusline.js` lê o frontmatter analisado e emite a **primeira cena correspondente**. Se nenhum campo novo do ciclo de vida se aplicar, a renderização cai para o formato original byte a byte, inalterado desde a v1.38.x. + +| Cena | Gatilho | Exemplo de exibição | +|---|---|---| +| **1. Fase ativa** | `active_phase` está populado | `v2.0 [██░░░░░░░░] 20% · Phase 4.5 executing` | +| **2. Ocioso, próximo recomendado** | `active_phase` é null E tanto `next_action` quanto `next_phases` estão populados | `v2.0 [██░░░░░░░░] 20% · next execute-phase 4.5` | +| **3. Milestone completo** | `percent` é `100` OU `completed_phases == total_phases` | `v2.0 [██████████] 100% · milestone complete` | +| **4. Fallback padrão** | Nenhuma das anteriores corresponde | `v1.9 Code Quality · executing · ph 1/5` (formato existente) | + +**Prioridade de cena:** quando `active_phase` e `next_action` estão populados, a Cena 1 prevalece — um orquestrador está em andamento, portanto uma "próxima recomendação" seria enganosa. Essa prioridade é imposta pela ordem de verificação em `formatGsdState()` e coberta pelo conjunto `"scene priority"` em `tests/enh-2833-phase-lifecycle-statusline.test.cjs`. + +A barra de progresso (`[██░░░░░░░░] 20%`) é anexada ao segmento do milestone somente quando `progress.percent` está presente no frontmatter; ausente significa sem barra. + +--- + +## Restrições de análise do frontmatter + +O hook de linha de status usa análise baseada em regex (sem biblioteca YAML completa), portanto as seguintes restrições se aplicam. Elas são testadas em `tests/enh-2833-phase-lifecycle-statusline.test.cjs`. + +1. **O frontmatter deve começar no primeiro caractere do arquivo.** Qualquer coisa — incluindo comentários — acima do `---` de abertura invalida a correspondência. A linha `---` de abertura deve ser exatamente isso, sem espaços no final. + +2. **Comentários dentro de blocos aninhados não são suportados.** O analisador do bloco `progress:` requer que a próxima linha seja `[ \t]+\w+:`. Inserir um `# comment` entre `progress:` e sua primeira chave quebra a correspondência e a barra desaparece. Qualquer documentação pertence ao corpo do `STATE.md`, não dentro dos blocos do frontmatter. + +3. **O formato primário de `next_phases` é flow de linha única.** O analisador tenta primeiro `next_phases: ["4.5", "4.6"]`. Sequências em bloco (`- 4.5\n- 4.6`) também são analisadas, mas são menos confiáveis para renderização da linha de status. Prefira flow de linha única para `next_phases` para manter o analisador baseado em regex previsível. Se muitas fases candidatas precisarem ser registradas para fins de documentação, armazene-as no corpo do `STATE.md`. + +Se uma mudança futura substituir o analisador de regex por uma biblioteca YAML completa, essas restrições poderão ser relaxadas e os testes atualizados adequadamente. + +--- + +## Seções do corpo Markdown + +O corpo (tudo após o `---` de fechamento) segue o template em `get-shit-done/templates/state.md`. As seções padrão são: + +### Referência do Projeto + +Aponta para `.planning/PROJECT.md`. Contém: +- **Valor central** — a frase de uma linha da seção Core Value do `PROJECT.md`. +- **Foco atual** — qual fase está ativa. + +### Posição Atual + +Onde o projeto está agora: + +| Campo | Formato | +|---|---| +| `Phase:` | `X of Y (Phase name)` | +| `Plan:` | `A of B in current phase` | +| `Status:` | Texto livre, ex.: `Ready to execute`, `Executing Phase 4`, `Phase complete — ready for verification` | +| `Last activity:` | Data ISO (`YYYY-MM-DD`) quando escrito por handler; prosa narrativa quando elaborado pelo executor | +| `Progress:` | Barra visual, ex.: `[████░░░░░░] 40%` | + +Os campos `Status:` e `Last activity:` nesta seção são atualizados pelos handlers do GSD quando o valor existente é um padrão de template conhecido (invariante de Knuth: valores elaborados pelo executor são preservados). A lista completa de padrões de handler conhecidos está em `KNOWN_TEMPLATE_DEFAULTS` dentro de `get-shit-done/bin/lib/state-document.cjs`. + +### Métricas de Desempenho + +Rastreamento de velocidade de execução: +- Total de planos concluídos, duração média por plano. +- Tabela de detalhamento por fase (`Phase | Plans | Total | Avg/Plan`). +- Tendência recente: Improving / Stable / Degrading. + +Atualizado após cada conclusão de plano. + +### Contexto Acumulado + +**Decisões** — um resumo das decisões recentes que afetam o trabalho atual (o log completo vive em `PROJECT.md`). Adicionado via `gsd-tools state add-decision`. + +**Todos Pendentes** — contagem e referência a `.planning/todos/pending/`. Capturado via `/gsd-capture`. + +**Bloqueadores/Preocupações** — problemas que afetam trabalhos futuros, prefixados com a fase de origem. Adicionado via `gsd-tools state add-blocker`; resolvido via `gsd-tools state resolve-blocker`. + +### Continuidade de Sessão + +Permite retomada instantânea de sessão: +- `Last session:` — timestamp ISO-8601 da última sessão. +- `Stopped at:` — descrição da última ação concluída. +- `Resume file:` — caminho para um arquivo `.continue-here*.md` se existir, caso contrário `None`. + +--- + +## Compatibilidade retroativa + +Os campos de ciclo de vida de fase (`active_phase`, `next_action`, `next_phases` e `progress.percent` para a barra) são **aditivos e opt-in por projeto**: + +- Um `STATE.md` sem nenhum dos campos de ciclo de vida populados é renderizado **byte a byte de forma idêntica** à v1.38.x e anteriores. +- Adicionar qualquer campo de ciclo de vida é opt-in — o renderizador degrada graciosamente quando os campos estão ausentes. +- A barra de progresso é opt-in mesmo quando o bloco `progress` existe: somente `progress.percent` ativa a barra; `total_phases` e `completed_phases` sozinhos não ativam. + +O conjunto de testes `formatGsdState #2833 backward compatibility` em `tests/enh-2833-phase-lifecycle-statusline.test.cjs` garante essa promessa; qualquer mudança que quebre a renderização legada do `STATE.md` fará o conjunto falhar. + +--- + +## Relacionados + +- [Artefatos de planejamento](planning-artifacts.md) +- [Configuração](../CONFIGURATION.md) +- [O ciclo de fases](../explanation/the-phase-loop.md) +- [índice da documentação](../README.md) diff --git a/docs/pt-BR/superpowers/README.md b/docs/pt-BR/superpowers/README.md index 7618b7543..9df262adf 100644 --- a/docs/pt-BR/superpowers/README.md +++ b/docs/pt-BR/superpowers/README.md @@ -4,7 +4,7 @@ Documentos avançados traduzidos: ## Plans -- [2026-03-18-materialize-new-project-config](plans/2026-03-18-materialize-new-project-config.md) +- [2026-03-23-materialize-new-project-config](plans/2026-03-23-materialize-new-project-config.md) ## Specs diff --git a/docs/pt-BR/tutorials/onboarding-an-existing-codebase.md b/docs/pt-BR/tutorials/onboarding-an-existing-codebase.md new file mode 100644 index 000000000..760cf362f --- /dev/null +++ b/docs/pt-BR/tutorials/onboarding-an-existing-codebase.md @@ -0,0 +1,226 @@ +# Integrando uma base de código existente + +Neste tutorial você integrará o GSD Core a um repositório que já possui código. Você mapeará a base de código, criará um projeto que descreve o que está *adicionando* e executará seu primeiro ciclo de discussão e planejamento para uma mudança pequena e focada. Ao final, o pipeline de planejamento do GSD Core conhecerá sua stack, suas convenções e suas preocupações — e usará esse conhecimento toda vez que planejar. + +--- + +## O que você vai construir + +Adicionaremos um único endpoint `GET /health` a uma aplicação Express existente. A mudança é pequena o suficiente para nunca desviar do objetivo real da lição: como o GSD Core aprende sua base de código antes de planejar qualquer coisa. + +--- + +## Pré-requisitos + +- **Node.js 18 ou superior** — `node --version` deve exibir `v18.x.x` ou mais recente. +- **Um projeto existente** — qualquer repositório com código. Não precisa ser Express; os passos se aplicam a qualquer stack. +- **Claude Code** — aberto na raiz do seu repositório. + +--- + +## Passo 1 — Instalar o GSD Core + +Na raiz do seu repositório: + +```bash +npx @opengsd/gsd-core@latest +``` + +Escolha **Claude Code** e **local** quando solicitado. Você verá: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +--- + +## Passo 2 — Iniciar o Claude Code com permissões + +```bash +claude --dangerously-skip-permissions +``` + +--- + +## Passo 3 — Mapear a base de código + +Antes de criar um projeto, deixe o GSD Core aprender o que já existe. Este é o passo que torna o planejamento brownfield preciso. + +```text +/gsd-map-codebase +``` + +O GSD Core cria quatro sub-agentes mapeadores paralelos (você verá "Spawning 4 parallel codebase mapper agents…" — isso leva de 1 a 5 minutos; não interrompa). Cada agente foca em uma preocupação diferente: + +| Agente | Foco | +|--------|------| +| Tech mapper | Stack, frameworks, dependências | +| Architecture mapper | Padrões, camadas, fluxo de dados | +| Quality mapper | Convenções, práticas de teste | +| Concerns mapper | Dívida técnica, áreas de risco | + +Quando os quatro retornarem, você verá: + +```text +Codebase mapping complete. + +Created .planning/codebase/: +- STACK.md (47 lines) - Technologies and dependencies +- ARCHITECTURE.md (62 lines) - System design and patterns +- STRUCTURE.md (38 lines) - Directory layout and organisation +- CONVENTIONS.md (55 lines) - Code style and patterns +- TESTING.md (41 lines) - Test structure and practices +- INTEGRATIONS.md (29 lines) - External services and APIs +- CONCERNS.md (33 lines) - Technical debt and issues +``` + +Abra `.planning/codebase/STACK.md`. Você verá a linguagem, o runtime, as versões do framework e as dependências principais que o GSD Core detectou — fundamentadas nos arquivos reais que leu, não em suposições. + +Abra `.planning/codebase/CONVENTIONS.md`. Você verá as convenções de nomenclatura, os padrões de tratamento de erros e as regras de estilo de código que ele observou no seu código-fonte. Todos os planos que o GSD Core produzir para este repositório seguirão essas convenções automaticamente. + +Abra `.planning/codebase/CONCERNS.md`. Este é o arquivo mais útil para ler antes de qualquer trabalho em novo recurso — ele expõe dívidas técnicas e áreas frágeis que podem afetar seus planos. + +--- + +## Passo 4 — Limpar o contexto e criar o projeto + +Limpe a janela de sessão: + +```text +/clear +``` + +Agora crie o projeto. Como o GSD Core encontrou código existente no passo anterior, já sabe que se trata de um projeto brownfield. Quando você executa `/gsd-new-project`, as perguntas focam no que você está *adicionando*, e não em reconstruir o que já existe: + +```text +/gsd-new-project +``` + +O GSD Core pergunta o que você quer construir. Responda com o recurso que está adicionando, e não com uma descrição de toda a base de código: + +```text +Add a GET /health endpoint to the Express app. It should return +{ "status": "ok", "uptime": }. We'll use it for load-balancer +health checks. +``` + +O GSD Core faz um pequeno número de perguntas de esclarecimento e depois prossegue para a criação de requisitos e roteiro. Como já leu `ARCHITECTURE.md` e `STACK.md`, mapeará as capacidades existentes para a seção **Validated** de `PROJECT.md` automaticamente — você não precisa descrever a superfície de API existente. + +Escolha os padrões recomendados para todas as configurações do fluxo de trabalho. + +Quando o sub-agente roadmapper retornar, você verá um roteiro proposto. Para uma única mudança pequena, haverá uma fase: + +```text +Proposed Roadmap + +1 phase | 2 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|----------------|-----------------------------------------------|--------------| +| 1 | Health endpoint| GET /health returning status and uptime JSON | HLT-01, HLT-02 | +``` + +Aprove o roteiro. + +**O que é criado em `.planning/`:** + +```text +.planning/ + PROJECT.md ← descrição do projeto; capacidades existentes em "Validated" + REQUIREMENTS.md ← HLT-01, HLT-02 + ROADMAP.md ← Fase 1, status: pending + STATE.md ← memória de sessão + config.json ← configurações do fluxo de trabalho + codebase/ ← os sete arquivos de mapa do Passo 3 +``` + +Observe que `.planning/codebase/` já está lá desde o Passo 3. O GSD Core leu esses arquivos ao escrever `PROJECT.md`, por isso conseguiu preencher os requisitos Validated sem que você os descrevesse. + +--- + +## Passo 5 — Limpar o contexto e discutir a Fase 1 + +```text +/clear +``` + +```text +/gsd-discuss-phase 1 +``` + +Como o GSD Core leu seu `CONVENTIONS.md` e `ARCHITECTURE.md`, suas perguntas são fundamentadas na sua base de código real — não em conselhos genéricos. Você pode ver: + +```text +> Your routes are registered in src/routes/index.js. Should the health + endpoint live there, or in a dedicated src/routes/health.js? + A dedicated health.js — keep routes separated. + +> Your existing error middleware returns { error: "message" }. Should + /health use the same shape for error responses? + Yes, stay consistent. + +> Should uptime be calculated from process.uptime() or a stored start time? + process.uptime() is fine. +``` + +Quando a discussão encerrar, o GSD Core escreverá: + +```text +.planning/phases/01-health-endpoint/CONTEXT.md +``` + +Abra esse arquivo. A seção `## Implementation Decisions` captura suas respostas. O planejador lerá este arquivo antes de escrever qualquer tarefa — portanto, suas preferências sobre posicionamento de arquivos e formato de resposta aparecerão nos planos, não apenas na discussão. + +--- + +## Passo 6 — Planejar a Fase 1 + +```text +/gsd-plan-phase 1 +``` + +Quatro sub-agentes de pesquisa rodam em paralelo (1–5 minutos). Quando retornarem, o planejador lê `CONTEXT.md`, os resultados da pesquisa e o mapa da sua base de código para criar planos de tarefas que correspondem às suas convenções. + +**O que é criado:** + +```text +.planning/phases/01-health-endpoint/ + RESEARCH.md ← descobertas sobre padrões de health endpoint + 01-01-PLAN.md ← Tarefa: criar src/routes/health.js + 01-02-PLAN.md ← Tarefa: registrar rota health em src/routes/index.js +``` + +Abra `01-01-PLAN.md`. Observe que a tag `` referencia `src/routes/health.js` — exatamente o caminho que você especificou na discussão, consistente com o padrão de roteamento que o GSD Core observou no mapa da sua base de código. Isso é o mapa da base de código em ação. + +--- + +## Próximos passos + +Você agora tem um projeto com um mapa da base de código, um registro de decisões de discussão e planos de tarefas verificados — tudo fundamentado no seu código real. A partir daqui, o fluxo de trabalho é idêntico ao de um projeto greenfield: + +```text +/gsd-execute-phase 1 +/gsd-verify-work 1 +/gsd-ship 1 +``` + +Para cada recurso futuro, execute `/gsd-map-codebase` novamente sempre que a estrutura mudar significativamente, para manter o mapa da base de código atualizado. + +--- + +## O que você aprendeu + +- Como `/gsd-map-codebase` executa quatro agentes paralelos para produzir `STACK.md`, `ARCHITECTURE.md`, `CONVENTIONS.md`, `CONCERNS.md`, `STRUCTURE.md`, `TESTING.md` e `INTEGRATIONS.md` em `.planning/codebase/`. +- Como `/gsd-new-project` em um repositório brownfield concentra as perguntas no que você está *adicionando* e preenche os requisitos Validated a partir do código existente. +- Como o mapa da base de código orienta cada pergunta em `/gsd-discuss-phase` — caminhos de arquivos, padrões e convenções vêm do seu código real. +- Como o planejador lê `CONTEXT.md` e `CONVENTIONS.md` para produzir planos que correspondem ao estilo do seu repositório. + +--- + +## Relacionados + +- [Seu primeiro projeto](your-first-project.md) — o ciclo greenfield completo, da instalação ao PR +- [Mapear base de código via Comandos](../COMMANDS.md) — todos os flags e subcomandos de `/gsd-map-codebase` +- [Índice de documentação](../README.md) diff --git a/docs/pt-BR/tutorials/your-first-project.md b/docs/pt-BR/tutorials/your-first-project.md new file mode 100644 index 000000000..3e1b74b01 --- /dev/null +++ b/docs/pt-BR/tutorials/your-first-project.md @@ -0,0 +1,291 @@ +# Seu primeiro projeto + +Neste tutorial você instalará o GSD Core e construirá um pequeno aplicativo de linha de comando para gerenciar tarefas do zero — uma fase, um PR, o ciclo completo. Ao final, você terá executado cada comando do ciclo de fase principal pelo menos uma vez e terá visto os artefatos de planejamento que cada comando produz. + +--- + +## O que você vai construir + +Um CLI em Node.js que permite adicionar, listar e concluir itens de tarefas armazenados em um arquivo JSON local. É pequeno o suficiente para terminar em uma sessão e não utiliza nada além da biblioteca padrão do Node.js, portanto não há nada incomum para instalar. + +--- + +## Pré-requisitos + +- **Node.js 18 ou superior** — `node --version` deve exibir `v18.x.x` ou maior. +- **Claude Code** — aberto no diretório do projeto que você deseja utilizar. +- Uma conexão com a internet para a instalação inicial. + +Nenhuma outra ferramenta é necessária. O próprio GSD Core é instalado no próximo passo. + +--- + +## Passo 1 — Instalar o GSD Core + +Abra um terminal no diretório do seu projeto e execute: + +```bash +npx @opengsd/gsd-core@latest +``` + +O instalador pergunta qual ambiente de execução de IA você está usando e se deseja instalar globalmente ou no projeto atual. Escolha **Claude Code** e **local** (apenas este projeto) por enquanto. + +Você verá uma saída como: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +Observe que um diretório `.claude/` agora existe no seu projeto. É onde os comandos e agentes do GSD Core residem. + +> Por que local vs global? Uma instalação local mantém a versão das skills fixada neste projeto. Consulte [Instalar no seu ambiente de execução](../how-to/install-on-your-runtime.md) quando quiser instalar globalmente. + +--- + +## Passo 2 — Iniciar o Claude Code com permissões + +O GSD Core spawna sub-agentes que leem e escrevem arquivos. Inicie o Claude Code com o sinalizador de permissões para que ele não pause para perguntar sobre cada operação de arquivo: + +```bash +claude --dangerously-skip-permissions +``` + +Você chegará ao prompt do Claude Code no diretório do seu projeto. + +--- + +## Passo 3 — Criar o projeto + +Digite este comando slash no prompt do Claude Code: + +```text +/gsd-new-project +``` + +O GSD Core abrirá uma conversa. Ele faz uma pergunta primeiro: + +```text +What do you want to build? +``` + +Digite algo como: + +```text +A Node.js CLI tool for managing to-do items. Users run `todo add "buy milk"`, +`todo list`, and `todo done 1`. Items are saved to a local todos.json file. +No external dependencies — Node built-ins only. +``` + +O GSD Core faz uma série de perguntas de esclarecimento. Responda naturalmente. Ele está aprendendo o que é importante para você antes de escrever qualquer plano. + +Após as perguntas, ele oferece a opção de realizar pesquisa de domínio. Para um projeto deste tamanho você pode pular a pesquisa — escolha **Skip research** quando solicitado. + +O GSD Core então pede que você escolha as configurações de fluxo de trabalho (modo, granularidade, agentes de pesquisa). Escolha os padrões recomendados para cada um. Eles são gravados em `.planning/config.json`. + +Por fim, um sub-agente de roadmap é executado (você verá o aviso "Spawning roadmapper…" — isso é normal e leva cerca de um minuto). Quando ele retornar, o GSD Core apresentará um roadmap proposto. Para um projeto de uma única fase, ele terá uma aparência semelhante a: + +```text +Proposed Roadmap + +1 phase | 4 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|--------------------|-----------------------------------------|-------------------| +| 1 | Core CLI | add / list / done commands, todos.json | CLI-01 … CLI-04 | +``` + +Digite **Approve** para aceitar o roadmap. + +**O que é criado em `.planning/`:** + +```text +.planning/ + PROJECT.md ← descrição e requisitos do seu projeto + REQUIREMENTS.md ← REQ-IDs para cada capacidade v1 + ROADMAP.md ← Fase 1, status: pending + STATE.md ← memória de sessão, posição atual + config.json ← configurações de fluxo de trabalho +``` + +Abra `.planning/ROADMAP.md` agora e leia. Observe que a Fase 1 tem uma Meta, uma lista de Requisitos que deve satisfazer e Critérios de Sucesso — estes são os comportamentos observáveis que a execução deve entregar. + +--- + +## Passo 4 — Limpar o contexto e discutir a Fase 1 + +O GSD Core é projetado em torno de contextos frescos. Limpe a janela de sessão principal antes de cada fase: + +```text +/clear +``` + +Em seguida, inicie a discussão para a Fase 1: + +```text +/gsd-discuss-phase 1 +``` + +O GSD Core lê a meta da fase e pergunta sobre suas preferências de implementação. Estas são as decisões que moldam *como* ele constrói, não apenas *o que* ele constrói. Exemplo de troca: + +```text +> How should done items be stored — mark them in place or move them? + Mark them in place with a "done" flag. + +> Should `todo list` show completed items by default? + No, hide them unless --all is passed. + +> Error format when todos.json doesn't exist yet? + Create it silently on first add. +``` + +Quando a discussão encerra, o GSD Core escreve: + +```text +.planning/phases/01-core-cli/CONTEXT.md +``` + +Abra esse arquivo. Você verá uma seção `## Implementation Decisions` capturando exatamente o que você disse. O planejador lê este arquivo — portanto, as decisões que você tomou aqui fluirão para cada plano de tarefa. + +--- + +## Passo 5 — Planejar a Fase 1 + +```text +/gsd-plan-phase 1 +``` + +Quatro sub-agentes de pesquisa se expandem em paralelo (você verá o aviso "Spawning 4 researchers…"). Eles levam de 1 a 5 minutos. Não interrompa. + +Quando retornarem, um planejador lê o CONTEXT.md mais os resultados da pesquisa e cria planos de tarefa atômicos. Um verificador de planos então verifica se cada plano atinge a meta da fase antes de salvar. + +**O que é criado:** + +```text +.planning/phases/01-core-cli/ + RESEARCH.md ← descobertas de domínio + 01-01-PLAN.md ← Tarefa: criar helpers de leitura/escrita de todos.json + 01-02-PLAN.md ← Tarefa: implementar os comandos add / list / done +``` + +Abra `01-01-PLAN.md`. Você verá um bloco `` com um nome, os arquivos que toca, as etapas de ação, um comando de verificação e uma condição de conclusão. Observe a tag `` — o executor do GSD Core executará esse comando após escrever o código. + +--- + +## Passo 6 — Executar a Fase 1 + +```text +/gsd-execute-phase 1 +``` + +O GSD Core agrupa os planos em ondas (planos independentes são executados em paralelo), spawna um executor fresco com 200k de contexto por plano e confirma cada tarefa atomicamente. + +Você verá algo como: + +```text +Wave 1 (parallel): + [Executor A] → 01-01-PLAN.md (read/write helpers) ✓ committed + [Executor B] → 01-02-PLAN.md (CLI commands) ✓ committed + +[Verifier] Checking codebase against phase goals... + CLI-01 todo add ✓ + CLI-02 todo list ✓ + CLI-03 todo done ✓ + CLI-04 --all flag ✓ + Status: PASS +``` + +**O que é criado:** + +```text +.planning/phases/01-core-cli/ + 01-01-SUMMARY.md ← o que o Executor A construiu e confirmou + 01-02-SUMMARY.md ← o que o Executor B construiu e confirmou + VERIFICATION.md ← cobertura de REQ: PASS +``` + +Execute seu CLI agora: + +```bash +node todo.js add "buy milk" +node todo.js add "write tests" +node todo.js list +node todo.js done 1 +node todo.js list +``` + +Você deve ver os itens aparecerem e o item 1 desaparecer da lista padrão após marcá-lo como concluído. Esse é o seu primeiro resultado visível entregue pelo GSD Core. + +--- + +## Passo 7 — Verificar o trabalho + +```text +/gsd-verify-work 1 +``` + +O GSD Core extrai os critérios de sucesso da fase e os percorre um a um: + +```text +[1/3] Can you run `node todo.js add "buy milk"` without errors? +> yes + +[2/3] Does `node todo.js list` show only incomplete items by default? +> yes + +[3/3] Does `node todo.js done 1` mark item 1 complete and hide it from the default list? +> yes + +All 3 checks passed. Phase 1 verified. +``` + +Se alguma verificação falhar, o GSD Core diagnostica a causa raiz e cria um plano de correção. Execute `/gsd-execute-phase 1` novamente para aplicá-lo e depois re-execute `/gsd-verify-work 1`. + +**O que é criado:** + +```text +.planning/phases/01-core-cli/UAT.md ← todas as verificações e seus resultados +``` + +--- + +## Passo 8 — Publicar + +```text +/gsd-ship 1 +``` + +O GSD Core cria um pull request com um corpo gerado automaticamente. O corpo do PR sempre inclui: Resumo, Alterações, Requisitos Atendidos, Verificação e Decisões Principais. + +Você verá: + +```text +Pull request created: https://github.com/your-org/your-repo/pull/1 + +Title: feat(phase-1): core CLI — add / list / done commands +``` + +Esse é o ciclo completo — da ideia ao PR mesclado — para uma fase. + +--- + +## O que você aprendeu + +- Como instalar o GSD Core com `npx @opengsd/gsd-core@latest`. +- Como `/gsd-new-project` transforma uma conversa em um roadmap respaldado por artefatos em `.planning/`. +- Como `/gsd-discuss-phase` captura decisões de implementação antes de qualquer planejamento acontecer. +- Como `/gsd-plan-phase` spawna pesquisadores em paralelo e produz planos de tarefa atômicos. +- Como `/gsd-execute-phase` executa esses planos em ondas paralelas e confirma cada tarefa. +- Como `/gsd-verify-work` percorre os critérios de sucesso e gera planos de correção quando necessário. +- Como `/gsd-ship` transforma uma fase verificada em um pull request. + +Para um projeto de múltiplas fases, repita os Passos 4–8 para cada fase e depois execute `/gsd-progress --next` para deixar o GSD Core detectar o próximo passo automaticamente. + +--- + +## Relacionados + +- [O ciclo de fase](../explanation/the-phase-loop.md) — por que o ciclo tem esse formato +- [Guias práticos](../README.md#how-to-guides) — receitas focadas em tarefas para situações específicas +- [Integrando uma base de código existente](onboarding-an-existing-codebase.md) — traga o GSD Core para um repositório já existente diff --git a/docs/pt-BR/workflow-discuss-mode.md b/docs/pt-BR/workflow-discuss-mode.md index ec44c2d07..b86c515a7 100644 --- a/docs/pt-BR/workflow-discuss-mode.md +++ b/docs/pt-BR/workflow-discuss-mode.md @@ -1,62 +1,75 @@ -# Discuss Mode (Modo de Discussão) +# Modo Discuss: Suposições vs Entrevista -O GSD oferece dois estilos para `/gsd-discuss-phase`: +A fase de discuss do GSD Core oferece dois modos para coletar o contexto de implementação antes do início do planejamento. Entender quando usar cada um ajuda a passar da fase de perguntas para um `CONTEXT.md` confirmado com menos idas e vindas. -- **`standard`**: entrevista aberta para levantar preferências -- **`assumptions`**: análise do código primeiro, seguida de confirmação/correção de suposições +Para instruções passo a passo sobre como executar cada modo, consulte o [Como realizar discuss de uma fase](how-to/discuss-a-phase.md). -Para referência completa, veja [workflow-discuss-mode.md em inglês](../workflow-discuss-mode.md). +## Modos ---- +### `discuss` (padrão) -## Quando usar `standard` +O fluxo original no estilo de entrevista. O Claude identifica áreas cinzentas na fase, apresenta-as para seleção e faz aproximadamente quatro perguntas por área. Adequado para: -Use quando: +- Fases iniciais em que o código-base é novo +- Fases em que o usuário tem opiniões firmes que deseja expressar proativamente +- Usuários que preferem coleta de contexto guiada e conversacional -- o projeto ainda não tem padrões claros -- você quer explorar alternativas livremente -- há decisões de produto/UX em aberto +### `assumptions` -Vantagem: descoberta ampla. -Trade-off: pode consumir mais tempo de perguntas. +Um fluxo com foco no código-base. O Claude analisa profundamente o código-base por meio de um subagente (lendo de 5 a 15 arquivos relevantes), formula suposições com evidências e as apresenta para confirmação ou correção. Adequado para: -## Quando usar `assumptions` +- Código-bases consolidados com padrões bem definidos +- Usuários que consideram as perguntas da entrevista óbvias +- Coleta de contexto mais rápida (~2–4 interações vs ~15–20) -Use quando: +## Configuração -- o código já tem convenções estáveis -- você quer reduzir fricção no intake -- o time prefere revisão de propostas em vez de entrevista aberta +```bash +# Habilitar o modo assumptions +node gsd-tools.cjs config-set workflow.discuss_mode assumptions -Vantagem: velocidade e consistência com o código existente. -Trade-off: depende da qualidade do mapeamento de contexto. - -## Como habilitar - -Via `/gsd-settings`, defina: - -```json -{ - "workflow": { - "discuss_mode": "assumptions" - } -} +# Voltar ao modo de entrevista +node gsd-tools.cjs config-set workflow.discuss_mode discuss ``` -## Fluxo no modo `assumptions` +A configuração é por projeto (armazenada em `.planning/config.json`). Consulte o [esquema do CONTEXT.md](reference/context-md.md) para ver a estrutura completa do arquivo produzido por ambos os modos. -1. GSD lê `PROJECT.md`, mapeamento de código e convenções -2. Gera lista estruturada de suposições -3. Você confirma, corrige ou expande -4. GSD escreve `CONTEXT.md` com decisões consolidadas +## Como o Modo Assumptions Funciona -## Boas práticas +1. **Inicialização** — Igual ao modo discuss (carrega contexto anterior, explora o código-base, verifica pendências) +2. **Análise aprofundada** — O subagente de exploração lê de 5 a 15 arquivos do código-base relacionados à fase +3. **Apresentação das suposições** — Cada suposição inclui: + - O que o Claude faria e por quê (citando caminhos de arquivo) + - O que dá errado se a suposição estiver incorreta + - Nível de confiança (Confident / Likely / Unclear) +4. **Confirmar ou corrigir** — O usuário revisa as suposições e seleciona as que precisam ser alteradas +5. **Escrever o CONTEXT.md** — Formato de saída idêntico ao do modo discuss -- Revise suposições antes do `plan-phase` -- Corrija ambiguidades de nomes/paths cedo -- Se o plano sair desalinhado, volte ao discuss-phase e refine +## Compatibilidade de Flags ---- +| Flag | modo `discuss` | modo `assumptions` | +|------|----------------|-------------------| +| `--auto` | Seleciona automaticamente as respostas recomendadas | Ignora a etapa de confirmação e resolve automaticamente itens Unclear | +| `--batch` | Agrupa perguntas em lotes | N/A (correções já agrupadas) | +| `--text` | Perguntas em texto puro (sessões remotas) | Perguntas em texto puro (sessões remotas) | +| `--analyze` | Exibe tabelas de trade-off por pergunta | N/A (suposições já incluem evidências) | -> [!NOTE] -> Para ambientes com múltiplos runtimes e perfis de modelo dinâmicos, prefira `assumptions` quando o reuso de padrões de código for prioridade. +## Saída + +Ambos os modos produzem um `CONTEXT.md` idêntico com as mesmas seis seções: + +- `` — Limite da fase +- `` — Decisões de implementação confirmadas +- `` — Especificações/documentos que os agentes downstream devem ler +- `` — Ativos reutilizáveis, padrões, pontos de integração +- `` — Referências e preferências do usuário +- `` — Ideias registradas para fases futuras + +Os agentes downstream (researcher, planner, checker) consomem esse arquivo de forma idêntica, independentemente do modo que o produziu. Consulte o [esquema do CONTEXT.md](reference/context-md.md) para a referência completa dos campos. + +## Relacionados + +- [Realizar discuss de uma fase](how-to/discuss-a-phase.md) — passo a passo para executar `/gsd-discuss-phase` em qualquer modo. +- [Esquema do CONTEXT.md](reference/context-md.md) — referência completa dos campos do arquivo produzido por ambos os modos. +- [O ciclo de fases](explanation/the-phase-loop.md) — como o discuss se encaixa no ciclo mais amplo de discuss → plan → execute → verify → ship. +- [Índice de documentação](README.md) — sumário completo da documentação do GSD Core. diff --git a/docs/reference/context-md.md b/docs/reference/context-md.md new file mode 100644 index 000000000..dc92d3474 --- /dev/null +++ b/docs/reference/context-md.md @@ -0,0 +1,148 @@ +# CONTEXT.md schema reference + +A per-phase `CONTEXT.md` is GSD Core's carrier for implementation decisions captured during `/gsd:discuss-phase`. It is the primary upstream input for both the research and planning agents. This page documents its structure. See [docs index](../README.md). + +--- + +## Overview + +Every phase that has been through the discuss workflow produces one `CONTEXT.md` at: + +``` +.planning/phases/-/-CONTEXT.md +``` + +For example: `.planning/phases/03-post-feed/03-CONTEXT.md`. + +The file is produced by `write_context` in `get-shit-done/workflows/discuss-phase.md` (or its PRD / ADR ingest express paths). It is never edited by hand during normal operation — the discuss-phase workflow writes it and downstream agents read it as a sealed source of truth. + +--- + +## Frontmatter + +`CONTEXT.md` carries no YAML frontmatter. Metadata is inline at the top of the body: + +```markdown +# Phase [X]: [Name] - Context + +**Gathered:** [ISO date] +**Status:** Ready for planning +``` + +The `Status` field is always `Ready for planning` when the file is first written. It is not updated after creation. + +--- + +## Block structure + +The body is divided into named XML-style blocks. The blocks appear in a fixed order and are read by downstream agents by block name, not by line number. + +| Block | Purpose | Populated by | Consumed by | +|---|---|---|---| +| `` | States the phase boundary — what this phase delivers and what is explicitly out of scope. Anchors the scope guardrail throughout planning and execution. | `discuss-phase` (from ROADMAP.md phase goal) | `gsd-planner`, `gsd-plan-checker` (scope compliance) | +| `` | Present only when a `*-SPEC.md` was found by the `check_spec` step. Lists locked requirement counts and scope boundaries; agents are directed to read `SPEC.md` directly for full requirements. | `discuss-phase` (conditional) | `gsd-planner` (reads SPEC.md rather than re-reading requirements here) | +| `` | Implementation decisions captured from the discussion, keyed with `D-NN` identifiers. Categories emerge from what was actually discussed rather than a fixed taxonomy. Includes a `Claude's Discretion` sub-section for areas the user delegated. | `discuss-phase` (interactive discussion) | `gsd-planner` (locked decisions must be implemented), `gsd-plan-checker` (Dimension 7 compliance) | +| `` | Full relative paths to every spec, ADR, feature doc, or design doc relevant to this phase. Mandatory — every CONTEXT.md must have this section. Agents must read listed files before planning or implementing. | `discuss-phase` (accumulated from ROADMAP.md refs + user references during discussion + codebase scout) | `gsd-phase-researcher`, `gsd-planner` | +| `` | Reusable assets, established patterns, and integration points discovered during the `scout_codebase` step. Guides agents towards existing code rather than re-implementing. | `discuss-phase` (codebase scout) | `gsd-planner`, `gsd-phase-researcher` | +| `` | Concrete "I want it like X" references, product comparisons, or particular examples captured verbatim during discussion. | `discuss-phase` (freeform user input) | `gsd-planner` | +| `` | Ideas that arose in discussion but belong in other phases. Preserved so they are not lost. Includes a `Reviewed Todos` sub-section when todos were reviewed but not folded into scope. | `discuss-phase` (scope-creep redirect) | Not consumed by automated agents; human reference only | + +--- + +## Decision identifier format + +Every decision in `` carries a sequential `D-NN` identifier: + +```markdown +### Layout style +- **D-01:** Card-based layout, not timeline or list +- **D-02:** Each card shows: author avatar, name, timestamp, full post content, reaction counts +``` + +Identifiers are scoped to the phase. `D-01` in Phase 3 is unrelated to `D-01` in Phase 7. The plan-checker (Dimension 7) verifies that every `D-NN` is addressed by at least one task action in the generated plans. + +--- + +## Canonical references + +The `` block is **mandatory**. Agents that find it absent treat the CONTEXT.md as incomplete and surface a warning. Entries are grouped by topic and carry a full relative path plus a brief statement of what the file decides or defines: + +```markdown + +## Canonical References + +**Downstream agents MUST read these before planning or implementing.** + +### Feed display +- `docs/features/social-feed.md` — Feed requirements, post card fields, engagement display rules +- `docs/decisions/adr-012-infinite-scroll.md` — Scroll strategy decision, virtualisation requirements + +### Empty states +- `docs/design/empty-states.md` — Empty state patterns, illustration guidelines + + +``` + +When a project has no external specs, the section states this explicitly: + +``` +No external specs — requirements fully captured in decisions above +``` + +Inline mentions like "see ADR-019" scattered in `` are insufficient; agents need the full path in the dedicated section. + +--- + +## Decision Coverage Gate relationship + +The plan-checker's **Dimension 7: Context Compliance** enforces a coverage gate after planning: + +1. Every `D-NN` identifier in `` must appear in at least one plan task's `` or rationale. +2. No task may implement anything listed in `` (scope creep). +3. `Claude's Discretion` areas are exempted from this check — the planner may choose freely. + +A CONTEXT.md where decisions survive into plans is considered compliant. A CONTEXT.md whose decisions are silently dropped or partially delivered triggers **Dimension 7b: Scope Reduction Detection**, which is always a BLOCKER. + +--- + +## SPEC.md integration + +When `/gsd:spec-phase` has been run before discussing a phase, the `check_spec` step finds the `*-SPEC.md` file and activates ``: + +```markdown + +## Requirements (locked via SPEC.md) + +**12 requirements are locked.** See `03-SPEC.md` for full requirements, boundaries, and acceptance criteria. + +Downstream agents MUST read `03-SPEC.md` before planning or implementing. Requirements are not duplicated here. + +**In scope (from SPEC.md):** [copied from SPEC.md Boundaries] +**Out of scope (from SPEC.md):** [copied from SPEC.md Boundaries] + + +``` + +When `` is present, `` contains only implementation decisions from the discussion — the "how", not the "what". Requirements are not duplicated between the two files. + +--- + +## Footer + +Every CONTEXT.md ends with an identity footer: + +```markdown +--- + +*Phase: XX-name* +*Context gathered: [date]* +``` + +--- + +## Related + +- [PLAN.md schema](plan-md.md) +- [Planning artifacts](planning-artifacts.md) +- [Discuss modes](../workflow-discuss-mode.md) +- [docs index](../README.md) diff --git a/docs/reference/plan-md.md b/docs/reference/plan-md.md new file mode 100644 index 000000000..5c70772f1 --- /dev/null +++ b/docs/reference/plan-md.md @@ -0,0 +1,249 @@ +# PLAN.md schema reference + +A per-plan `PLAN.md` is GSD Core's executable unit of work — a structured document that tells an executor agent exactly what to build and how to verify it was built correctly. This page documents its structure. See [docs index](../README.md). + +--- + +## Overview + +Plans live inside phase directories at: + +``` +.planning/phases/-/--PLAN.md +``` + +For example: `.planning/phases/03-post-feed/03-02-PLAN.md` (Phase 3, Plan 2). + +Plans are produced by the `gsd-planner` agent (spawned by `/gsd:plan-phase`) and consumed by `execute-phase`. A phase typically contains between one and four plans; plans within a phase are assigned to execution waves so that independent work runs in parallel. + +--- + +## YAML frontmatter + +Every PLAN.md opens with a YAML frontmatter block between `---` delimiters. + +### Annotated example + +```yaml +--- +phase: 03-post-feed +plan: 02 +type: execute +wave: 2 +depends_on: ["03-01"] +files_modified: + - src/components/PostFeed.tsx + - src/components/PostCard.tsx + - src/app/feed/page.tsx +autonomous: true +requirements: ["FEED-01", "FEED-03"] +user_setup: [] + +must_haves: + truths: + - "User can scroll through posts from followed accounts" + - "Each post shows author avatar, name, timestamp, and content" + - "Empty state appears when no posts exist" + artifacts: + - path: "src/components/PostFeed.tsx" + provides: "Scrollable post list" + min_lines: 40 + - path: "src/components/PostCard.tsx" + provides: "Individual post card" + exports: ["PostCard"] + key_links: + - from: "src/components/PostFeed.tsx" + to: "/api/feed" + via: "fetch in useEffect" + pattern: "fetch.*api/feed" +--- +``` + +### Frontmatter field reference + +| Field | Required | Type | Purpose | +|---|---|---|---| +| `phase` | Yes | string | Phase identifier, e.g. `03-post-feed`. | +| `plan` | Yes | string | Plan number within the phase, e.g. `02`. | +| `type` | Yes | `execute` or `tdd` | `execute` for standard plans; `tdd` for test-driven plans where tests are written before implementation. | +| `wave` | Yes | integer | Execution wave. Plans in wave 1 run in parallel (no dependencies). Plans in wave 2+ wait for all plans in the previous wave to complete. Pre-computed at plan time by `gsd-planner`. | +| `depends_on` | Yes | array of plan IDs | Plans this plan must wait for. Empty array = wave 1. Example: `["03-01"]` means this plan runs after Plan 01 in Phase 3. | +| `files_modified` | Yes | array of paths | Every file this plan creates or modifies. Used by the plan-checker to detect same-wave file conflicts and by execute-phase for merge tracking. | +| `autonomous` | Yes | boolean | `true` when all tasks are type `auto`. `false` when the plan contains any `checkpoint:*` task that requires human interaction. | +| `requirements` | Yes | array of IDs | Requirement IDs from ROADMAP.md that this plan addresses. Every phase requirement ID must appear in at least one plan's `requirements` field. Empty arrays are a BLOCKER. | +| `user_setup` | No | array of objects | External-service setup steps that Claude cannot automate (account creation, secret retrieval, dashboard configuration). When present, execute-phase generates a `USER-SETUP.md` checklist for the developer. | +| `must_haves` | Yes | object | Goal-backward verification criteria. See below. | + +--- + +## `must_haves` field + +`must_haves` captures what must be observably true for the phase goal to be achieved. It is derived during planning and verified after execution by the `gsd-verifier` agent. + +### Sub-fields + +| Sub-field | Type | Purpose | +|---|---|---| +| `truths` | array of strings | Observable behaviours from the user's perspective. Each must be verifiable. Example: `"User can send a message"`, not `"WebSocket library installed"`. | +| `artifacts` | array of objects | Files that must exist with substantive implementation (not stubs). | +| `artifacts[].path` | string | File path relative to project root. | +| `artifacts[].provides` | string | What capability this file delivers. | +| `artifacts[].min_lines` | integer (optional) | Minimum line count to be considered non-stub. | +| `artifacts[].exports` | array of strings (optional) | Expected named exports to verify. | +| `artifacts[].contains` | string (optional) | Regex or literal pattern that must appear in the file. | +| `key_links` | array of objects | Critical connections between artifacts — the wiring that makes the system work end-to-end. | +| `key_links[].from` | string | Source file or component. | +| `key_links[].to` | string | Target file, endpoint, or module. | +| `key_links[].via` | string | Description of how they connect (e.g. `fetch in useEffect`, `Prisma query`, `import`). | +| `key_links[].pattern` | string (optional) | Regex to verify the connection exists in source. | + +--- + +## Body structure + +After frontmatter, the plan body uses named XML-style blocks read by the executor agent. + +### `` + +States what the plan delivers and why it matters for the project: + +```xml + +Implement the post feed as a scrollable card list. + +Purpose: Core display feature for the social feed phase. +Output: PostFeed and PostCard components wired to /api/feed. + +``` + +### `` + +Lists workflow files the executor reads before starting. Always includes the execute-plan workflow; adds the checkpoints reference when the plan contains checkpoint tasks: + +```xml + +@~/.claude/get-shit-done/workflows/execute-plan.md +@~/.claude/get-shit-done/templates/summary.md + +``` + +### `` + +References source files the executor needs to read. Includes project-level planning docs and any source files whose patterns or types the plan must replicate. Prior plan `SUMMARY.md` files are included only when there is a genuine dependency (imported types, shared decision) — not reflexively: + +```xml + +@.planning/PROJECT.md +@.planning/ROADMAP.md +@.planning/STATE.md +@src/components/UserCard.tsx + +``` + +### `` + +Contains one or more `` elements. Every task element must carry ``, ``, ``, ``, ``, ``, and `` for `type="auto"` tasks. + +--- + +## Task types + +| Type | Use | Autonomy | +|---|---|---| +| `auto` | Everything the executor can do independently. | Fully autonomous. | +| `checkpoint:human-verify` | Visual or functional verification that requires a human to look at a running UI or service. | Pauses execution; presents to the developer; resumes on approval. | +| `checkpoint:decision` | Implementation choices that arose during execution and require the developer's input. | Pauses execution; presents options; resumes on selection. | +| `checkpoint:human-action` | Truly unavoidable manual steps (account creation, hardware interaction). Used sparingly. | Pauses execution; resumes on confirmation. | + +Plans that contain any checkpoint task must set `autonomous: false` in frontmatter. + +--- + +## `auto` task structure + +```xml + + Task 1: Create PostCard component + src/components/PostCard.tsx + src/components/UserCard.tsx, src/types/post.ts + Create PostCard component accepting a Post prop (id, authorId, content, createdAt, + reactionCount). Render author avatar using UserAvatar from UserCard pattern. Show timestamp + using date-fns formatDistanceToNow. Export as named export PostCard. + npx tsc --noEmit + + - src/components/PostCard.tsx exports named export PostCard + - PostCard.tsx contains "reactionCount" prop usage + - npx tsc --noEmit exits 0 + + PostCard renders post content with author and timestamp + +``` + +### Required fields for `auto` tasks + +| Field | Rule | +|---|---| +| `` | Every file the task creates or modifies. The executor writes only these files. | +| `` | Files the executor must read before touching anything — the file being modified, any source-of-truth pattern file, any file whose types or conventions must be replicated. | +| `` | Concrete instructions with exact identifiers, file paths, function signatures, and expected values. Never says "align X with Y" without specifying the target state. Never contains fenced code blocks or full implementations. | +| `` | A runnable command or check that proves the task succeeded. Must distinguish pass from fail — `echo "done"` is not valid. | +| `` | Verifiable conditions: grep-verifiable strings, command exit codes, observable behaviours. No subjective language ("looks correct", "properly configured"). | +| `` | A short measurable statement of the completed outcome. | + +--- + +## Plan quality dimensions + +The `gsd-plan-checker` agent reviews every PLAN.md across 12 dimensions before execution begins. A plan that fails any BLOCKER-severity check is returned to `gsd-planner` for revision (up to 3 iterations): + +| Dimension | What it checks | +|---|---| +| **1 — Requirement Coverage** | Every phase requirement ID from ROADMAP.md appears in at least one plan's `requirements` frontmatter field and has covering task(s). | +| **2 — Task Completeness** | Every `auto` task carries all required fields (``, ``, ``, ``, ``). No vague or empty fields. | +| **3 — Dependency Correctness** | `depends_on` references are valid, acyclic, and consistent with wave numbers. Wave N plan depends only on plans in waves < N. | +| **4 — Key Links Planned** | Artifacts in `must_haves.key_links` have corresponding tasks that implement the wiring — not just the artifact creation. | +| **5 — Scope Sanity** | Plans stay within context budget: 2–3 tasks per plan (4 = warning, 5+ = BLOCKER), ≤ 8–10 files per plan (15+ = BLOCKER). | +| **6 — Verification Derivation** | `must_haves.truths` are user-observable behaviours, not implementation details. Artifacts map to truths. Key links cover critical wiring. | +| **7 — Context Compliance** | Every `D-NN` decision from CONTEXT.md is addressed by at least one task. No task implements anything from ``. | +| **7b — Scope Reduction Detection** | Task actions do not silently reduce a locked decision to a "v1", "stub", or "future enhancement" without delivering the full decision scope. Always a BLOCKER when found. | +| **7c — Architectural Tier Compliance** | Tasks assign capabilities to the correct tier per the RESEARCH.md Architectural Responsibility Map (when present). Security-sensitive capabilities in the wrong tier are BLOCKERs. | +| **8 — Nyquist Compliance** | When `workflow.nyquist_validation` is enabled and RESEARCH.md exists, every task has an `` verify command, no consecutive window of 3 tasks lacks coverage, and VALIDATION.md is present. | +| **9 — Cross-Plan Data Contracts** | When plans share data pipelines, their transformations are compatible — no plan strips data that another plan needs in original form. | +| **10 — CLAUDE.md Compliance** | Plans respect project-specific conventions, forbidden patterns, required tools, and security requirements from `./CLAUDE.md`. | +| **11 — Research Resolution** | When RESEARCH.md exists, its `## Open Questions` section is marked `(RESOLVED)` before planning proceeds. | +| **12 — Pattern Compliance** | When PATTERNS.md exists, tasks reference the correct analog patterns for each new or modified file. | + +--- + +## Wave execution model + +Wave numbers are pre-computed during planning. Execute-phase groups plans by wave number and runs each wave's plans in parallel: + +``` +Wave 1: Plan 01, Plan 02, Plan 03 (all run simultaneously — no dependencies) +Wave 2: Plan 04 (waits for Wave 1 to complete) +Wave 3: Plan 05 (waits for Wave 2 to complete) +``` + +Plans within a wave that modify overlapping files must not be in the same wave — the plan-checker's Dimension 3 flags this as a BLOCKER. + +--- + +## Plan output + +After a plan executes successfully, the executor writes a SUMMARY.md at: + +``` +.planning/phases/-/--SUMMARY.md +``` + +The SUMMARY.md is the canonical record of what was built. Subsequent plans in the same phase may reference it when they have a genuine dependency on its types or decisions. + +--- + +## Related + +- [CONTEXT.md schema](context-md.md) +- [Planning artifacts](planning-artifacts.md) +- [Features](../FEATURES.md) +- [docs index](../README.md) diff --git a/docs/reference/planning-artifacts.md b/docs/reference/planning-artifacts.md new file mode 100644 index 000000000..41ef84113 --- /dev/null +++ b/docs/reference/planning-artifacts.md @@ -0,0 +1,225 @@ +# Planning artifacts reference + +The `.planning/` directory is GSD Core's shared memory for a project. Every workflow reads from it, writes to it, and leaves an auditable trail of decisions. This page maps every file, its purpose, and which command produces or consumes it. See [docs index](../README.md). + +--- + +## Directory layout + +``` +.planning/ +├── PROJECT.md # Project identity and core value +├── ROADMAP.md # Milestone + phase listing with goals +├── REQUIREMENTS.md # Numbered acceptance criteria +├── STATE.md # Living position tracker +├── config.json # Workflow and model configuration +├── MILESTONES.md # Milestone archive (optional) +├── BACKLOG.md # Deferred and future work (optional) +├── LEARNINGS.md # Accumulated cross-phase learnings (optional) +├── DECISIONS-INDEX.md # Rolling summary of prior decisions (optional) +├── METHODOLOGY.md # Reusable interpretive frameworks (optional) +├── HANDOFF.json # Machine-readable pause state (transient) +├── codebase/ # Codebase maps (optional) +│ ├── architecture.md +│ ├── stack.md +│ └── ... +├── intel/ # Queryable symbol index (optional, intel.enabled) +│ └── API-SURFACE.md +└── phases/ + └── -/ # One directory per phase + ├── -CONTEXT.md # Implementation decisions (discuss-phase) + ├── -DISCUSSION-LOG.md # Human-readable discussion audit (discuss-phase) + ├── -RESEARCH.md # Technical research findings (plan-phase) + ├── -VALIDATION.md # Nyquist test-coverage strategy (plan-phase) + ├── -PATTERNS.md # Codebase analog map (plan-phase, optional) + ├── --PLAN.md # Executable plan (plan-phase, one per plan) + ├── --SUMMARY.md # Execution record (execute-phase, one per plan) + ├── -VERIFICATION.md # Phase goal verification report (verify-phase) + ├── -UAT.md # Persistent UAT session state (execute-phase) + └── .continue-here.md # Resume instructions after pause (pause-work) +``` + +--- + +## Root-level artifacts + +### `PROJECT.md` + +| | | +|---|---| +| **Purpose** | Canonical project identity: what it is, who it is for, core value, requirements, constraints, and key decisions. Updated throughout the project lifecycle as the product evolves. | +| **Produced by** | `/gsd-new-project` (initial creation); updated by `/gsd-complete-milestone` as decisions are validated. | +| **Consumed by** | All planning workflows; `gsd-phase-researcher`, `gsd-planner` (context); `discuss-phase` (prior decisions); `gsd-plan-checker` (project constraints). | + +### `ROADMAP.md` + +| | | +|---|---| +| **Purpose** | Milestone and phase listing with goals, requirement IDs, success criteria, and canonical references per phase. The single source of truth for what the project is building and in what order. | +| **Produced by** | `/gsd-new-project` (initial creation); updated by `/gsd-phase --insert` and `/gsd-complete-milestone`. | +| **Consumed by** | `/gsd-discuss-phase`, `/gsd-plan-phase`, `/gsd-execute-phase`; all orchestration commands that need phase information; `gsd-planner`, `gsd-plan-checker`, `gsd-phase-researcher`. | + +### `REQUIREMENTS.md` + +| | | +|---|---| +| **Purpose** | Numbered, checkable acceptance criteria for the project. Each requirement carries an ID (e.g., `AUTH-01`) that maps to roadmap phases. Marks requirements complete as phases are executed. | +| **Produced by** | `/gsd-new-project` (initial creation); requirements marked complete by `execute-phase`. | +| **Consumed by** | `gsd-planner` (plans must address all phase requirement IDs); `gsd-plan-checker` Dimension 1 (requirement coverage); `discuss-phase` (prior requirements). | + +### `STATE.md` + +| | | +|---|---| +| **Purpose** | Living position tracker — current phase and plan, progress metrics, accumulated decisions, session continuity notes. Read at the start of every workflow run. Updated after every significant action. | +| **Produced by** | `/gsd-new-project` (initial creation); updated continuously by all phase workflows, `/gsd-pause-work`, `/gsd-resume-work`. | +| **Consumed by** | All orchestration workflows; `/gsd-progress`; ad-hoc task execution via `/gsd-quick`; `gsd-planner` and `gsd-phase-researcher` (project decisions). | + +See [STATE.md schema](state-md.md) for the full field reference. + +### `config.json` + +| | | +|---|---| +| **Purpose** | Workflow configuration: model profiles, research and plan-checker toggles, git branching strategy, Nyquist validation, parallelisation settings, and per-agent model overrides. | +| **Produced by** | `/gsd-new-project` (initial creation); `/gsd-settings` (interactive editing). | +| **Consumed by** | Every workflow and subagent — read at init time via `gsd-tools query config-get`. | + +See [CONFIGURATION](../CONFIGURATION.md) for the complete schema. + +### `MILESTONES.md` (optional) + +| | | +|---|---| +| **Purpose** | Historical record of completed milestones. Populated as each milestone is closed; provides an archival snapshot of what shipped and when. | +| **Produced by** | `/gsd-complete-milestone`. | +| **Consumed by** | `/gsd-audit-milestone`; human review. | + +### `DECISIONS-INDEX.md` (optional) + +| | | +|---|---| +| **Purpose** | Bounded rolling summary of decisions captured in prior-phase CONTEXT.md files. When present, `discuss-phase` reads this single file instead of reading up to three prior CONTEXT.md files individually, saving context budget. | +| **Produced by** | Generated when the number of prior phases exceeds the rolling-read threshold. | +| **Consumed by** | `discuss-phase` (`load_prior_context` step). | + +### `HANDOFF.json` (transient) + +| | | +|---|---| +| **Purpose** | Machine-readable pause state written when work is interrupted. Contains the resume point, in-progress context, and continuation instructions. Consumed exactly once — on resume. | +| **Produced by** | `/gsd-pause-work`. | +| **Consumed by** | `/gsd-resume-work`. | + +--- + +## Per-phase artifacts + +All per-phase files live under `.planning/phases/-/` where `NN` is the zero-padded phase number and `slug` is the hyphenated phase name. + +### `-CONTEXT.md` + +| | | +|---|---| +| **Purpose** | Implementation decisions captured before planning begins. Contains the phase boundary (``), locked decisions with `D-NN` identifiers (``), canonical document references (``), existing code insights (``), specific inspirations (``), and deferred ideas (``). | +| **Produced by** | `/gsd-discuss-phase` (interactive discussion or PRD/ADR express paths). | +| **Consumed by** | `gsd-phase-researcher` (what to investigate); `gsd-planner` (locked decisions); `gsd-plan-checker` Dimension 7 (context compliance). | + +See [CONTEXT.md schema](context-md.md) for the full field reference. + +### `-DISCUSSION-LOG.md` + +| | | +|---|---| +| **Purpose** | Human-readable audit trail of the discuss-phase session: areas discussed, options presented, selections made, deferred ideas, and items left to Claude's discretion. Not consumed by automated workflows. | +| **Produced by** | `/gsd-discuss-phase` (`git_commit` step). | +| **Consumed by** | Human review; retrospectives. | + +### `-RESEARCH.md` + +| | | +|---|---| +| **Purpose** | Technical research findings produced before planning. Answers "What do I need to know to plan this phase well?" — covers domain analysis, patterns, risks, an Architectural Responsibility Map, and a Validation Architecture section (used by the Nyquist gate). | +| **Produced by** | `/gsd-plan-phase` via `gsd-phase-researcher` agent. | +| **Consumed by** | `gsd-planner` (planning inputs); `gsd-plan-checker` Dimension 7c (tier compliance), Dimension 8 (Nyquist), Dimension 11 (research resolution); `gsd-pattern-mapper` (file list source). | + +### `-VALIDATION.md` + +| | | +|---|---| +| **Purpose** | Nyquist-inspired validation strategy derived from the `## Validation Architecture` section of RESEARCH.md. Specifies automated test coverage requirements that plans must honour. | +| **Produced by** | `/gsd-plan-phase` (Step 5.5, when `workflow.nyquist_validation` is enabled and RESEARCH.md contains a Validation Architecture section). | +| **Consumed by** | `gsd-plan-checker` Dimension 8 (Check 8e gate — must exist before Nyquist checks proceed); `gsd-verifier`. | + +### `-PATTERNS.md` + +| | | +|---|---| +| **Purpose** | Codebase analog map produced by `gsd-pattern-mapper`. For each file to be created or modified this phase, identifies the closest existing analog, classifies the file's role and data flow, and extracts concrete code excerpts. Guides the planner towards consistent patterns. | +| **Produced by** | `/gsd-plan-phase` via `gsd-pattern-mapper` agent (optional; skipped if `workflow.pattern_mapper: false`). | +| **Consumed by** | `gsd-planner` (pattern guidance); `gsd-plan-checker` Dimension 12 (pattern compliance). | + +### `--PLAN.md` + +| | | +|---|---| +| **Purpose** | Executable plan for a single unit of work within the phase. Contains YAML frontmatter (wave, dependencies, files, requirements, `must_haves`), an objective, context references, XML-structured tasks with ``, ``, ``, and `` fields, and verification criteria. | +| **Produced by** | `/gsd-plan-phase` via `gsd-planner` agent. One file per plan — e.g., `03-02-PLAN.md` is Phase 3, Plan 2. | +| **Consumed by** | `/gsd-execute-phase` (executor agent reads plan and runs tasks); `gsd-plan-checker` (pre-execution quality review); `gsd-verifier` (reads `must_haves` for post-execution verification). | + +See [PLAN.md schema](plan-md.md) for the full field reference. + +### `--SUMMARY.md` + +| | | +|---|---| +| **Purpose** | Execution record written after a plan completes. Documents what was built, deviations from the plan, a self-check against acceptance criteria, and the dependency graph for the phase. | +| **Produced by** | `execute-phase` executor agent (written at the end of each plan's execution). | +| **Consumed by** | `/gsd-progress` (phase status); `gsd-planner` (when a subsequent plan has a genuine dependency on prior plan output); `milestone-summary`. | + +### `-VERIFICATION.md` + +| | | +|---|---| +| **Purpose** | Phase goal verification report. Checks `must_haves.truths`, `must_haves.artifacts`, and `must_haves.key_links` from all plans against the actual codebase after execution. Records `status: passed | gaps_found | human_needed`. | +| **Produced by** | `/gsd-verify-work` (or the verify step within `/gsd-execute-phase`). | +| **Consumed by** | `plan-phase` closed-phase gate (a `status: passed` VERIFICATION.md marks the phase `Complete` and blocks replanning without `--force`); `/gsd-progress`; human review. | + +### `-UAT.md` + +| | | +|---|---| +| **Purpose** | Persistent UAT session tracking. Records each test case, expected observable behaviour, result, and developer response across a live UAT session. Carries YAML frontmatter (`status`, `phase`, `source`, timestamps). | +| **Produced by** | `/gsd-audit-uat` (interactive UAT session). | +| **Consumed by** | `/gsd-audit-uat` (resume a previous UAT session). | + +### `.continue-here.md` + +| | | +|---|---| +| **Purpose** | Human-readable resume instructions written when work on a phase is paused. Contains context for resuming agents: critical anti-patterns, blocking issues, required reading, and the exact command to resume. | +| **Produced by** | `/gsd-pause-work`. | +| **Consumed by** | Any workflow that starts on a phase — `discuss-phase` and `plan-phase` both check for this file at entry and require the agent to demonstrate understanding of any `blocking` anti-patterns before proceeding. | + +--- + +## Naming conventions + +| Segment | Format | Example | +|---|---|---| +| Phase directory | `-` | `03-post-feed` | +| Phase-level file | `-.md` | `03-CONTEXT.md` | +| Plan-level file | `--.md` | `03-02-PLAN.md` | +| `NN` | Zero-padded phase number | `03` for Phase 3 | +| `PP` | Zero-padded plan number within phase | `02` for Plan 2 | + +When `project_code` is set in `config.json`, phase directories use the project code as a prefix: `CK-03-post-feed` for project code `CK`, Phase 3. + +--- + +## Related + +- [STATE.md schema](state-md.md) +- [CONTEXT.md schema](context-md.md) +- [PLAN.md schema](plan-md.md) +- [docs index](../README.md) diff --git a/docs/reference/state-md.md b/docs/reference/state-md.md new file mode 100644 index 000000000..882d9eb38 --- /dev/null +++ b/docs/reference/state-md.md @@ -0,0 +1,201 @@ +# STATE.md schema reference + +`STATE.md` is GSD Core's living project-memory file — a single Markdown document that records where a project stands, what happened last, and what to run next. This page documents its structure. See [docs index](../README.md). + +--- + +## Overview + +Every project managed by GSD Core keeps one `STATE.md` at `.planning/STATE.md`. It is read at the start of every workflow and written after every significant action. The file combines: + +- **YAML frontmatter** — machine-readable fields consumed by the status-line hook (`parseStateMd`) and the `gsd-tools state` commands. +- **Markdown body** — human-readable sections covering current position, accumulated context, session continuity, and performance metrics. + +The file is intentionally small (target: under 100 lines). It is a digest of the project's state, not an archive. + +--- + +## YAML frontmatter + +Frontmatter appears between `---` delimiters at the very start of the file. All fields except `gsd_state_version` and `status` are optional; fields may be absent when their data is not yet available. + +### Annotated example + +```yaml +--- +gsd_state_version: '1.0' +milestone: v2.0 +milestone_name: Code Quality +status: executing + +# Phase-lifecycle fields — all optional (added in v1.40.0, issue #2833) +active_phase: "4.5" +next_action: execute-phase +next_phases: ["4.5"] + +progress: + total_phases: 17 + completed_phases: 10 + total_plans: 84 + completed_plans: 47 + percent: 59 + +# Additional fields written by syncStateFrontmatter +current_phase: "4" +current_phase_name: Observability +current_plan: "3" +last_updated: "2026-06-01T12:34:56.789Z" +last_activity: "2026-06-01" +stopped_at: "Phase 4 P3 execution complete" +paused_at: null +--- +``` + +### Field reference + +| Field | Type | When populated | Purpose | +|---|---|---|---| +| `gsd_state_version` | string (`'1.0'`) | Always | Schema version; written on first `state.*` call by `syncStateFrontmatter`. | +| `milestone` | string (e.g. `v2.0`) | When a milestone is configured | Current milestone version, read from the project's config. | +| `milestone_name` | string | When a milestone is configured | Human-readable milestone label (e.g. `Code Quality`). | +| `status` | string | Always | Current lifecycle stage. Normalised by `normalizeStateStatus()` — see [status values](#status-values). | +| `active_phase` | string (e.g. `"4.5"`) | An orchestrator command is in flight on this phase | The phase number currently being processed. Set to `null` when between phases. | +| `next_action` | string | Idle, with a recommended command | The slash command to run next: `discuss-phase`, `plan-phase`, `execute-phase`, or `verify-phase`. Set to `null` when an orchestrator is in flight or no recommendation is available. | +| `next_phases` | YAML flow array (e.g. `["4.5"]`) | Goes with `next_action` | The phase ID(s) the `next_action` applies to (typically 1–2 entries). Set to `null` under the same conditions as `next_action`. | +| `progress.total_phases` | integer | When phase data is available | Total number of phases in the current milestone, derived from ROADMAP.md and the phases directory. | +| `progress.completed_phases` | integer | When phase data is available | Number of phases that have all plan summaries on disk (i.e. every plan completed). | +| `progress.total_plans` | integer | When plan files exist | Sum of all plan files across phases in the current milestone. | +| `progress.completed_plans` | integer | When summary files exist | Sum of completed plan summaries (one SUMMARY.md per executed plan). | +| `progress.percent` | integer 0–100 | When progress data is available | Milestone progress in the **phase dimension** (`min(completed_plans/total_plans, completed_phases/total_phases)`). The status-line progress bar is only rendered when this field is present — its absence suppresses the bar. | +| `current_phase` | string | When a phase is executing | Phase number extracted from the body `Current Phase:` field. | +| `current_phase_name` | string | When a phase has a name | Phase name extracted from the body `Current Phase Name:` field. | +| `current_plan` | string | When a plan is in progress | Plan number extracted from the body `Current Plan:` field. | +| `last_updated` | ISO-8601 timestamp | Always (on write) | Timestamp of the last `syncStateFrontmatter` call; written by `realClock.nowIso()`. | +| `last_activity` | string | When set in body | Date of the last activity, extracted from the body `Last Activity:` field. | +| `stopped_at` | string | When a stop point was recorded | Description of the last completed action; scoped to the `## Session` body section to avoid matching archive prose. | +| `paused_at` | string | When the project is paused | Freeform description of the pause point; absent or `null` when not paused. | + +### Status values + +`normalizeStateStatus()` in `get-shit-done/bin/lib/state-document.cjs` maps raw body text to these canonical values: + +| Canonical value | Matched text (case-insensitive) | +|---|---| +| `discussing` | contains `discussing` | +| `planning` | contains `planning` or `ready to plan` | +| `executing` | contains `executing`, `in progress`, or `ready to execute` | +| `verifying` | contains `verif` | +| `completed` | contains `complete` or `done` | +| `paused` | contains `paused` or `stopped`, or `paused_at` is present | +| `unknown` | none of the above | + +When an orchestrator command is in flight, the convention (issue #2833) is to write the lifecycle stage directly to `status`: + +| Command | `status` while in flight | +|---|---| +| `/gsd-discuss-phase` | `discussing` | +| `/gsd-plan-phase` | `planning` | +| `/gsd-execute-phase` | `executing` | +| `/gsd-verify-work` | `verifying` | + +--- + +## Status-line rendering scenes + +`formatGsdState()` in `hooks/gsd-statusline.js` reads the parsed frontmatter and emits the **first matching scene**. If no new lifecycle fields apply, rendering falls through to the original format byte-for-byte unchanged from v1.38.x. + +| Scene | Trigger | Display example | +|---|---|---| +| **1. Phase active** | `active_phase` is populated | `v2.0 [██░░░░░░░░] 20% · Phase 4.5 executing` | +| **2. Idle, next recommended** | `active_phase` is null AND both `next_action` and `next_phases` are populated | `v2.0 [██░░░░░░░░] 20% · next execute-phase 4.5` | +| **3. Milestone complete** | `percent` is `100` OR `completed_phases == total_phases` | `v2.0 [██████████] 100% · milestone complete` | +| **4. Default fallback** | None of the above match | `v1.9 Code Quality · executing · ph 1/5` (existing format) | + +**Scene priority:** when both `active_phase` and `next_action` are populated, Scene 1 wins — an orchestrator is in flight, so a "next recommendation" would be misleading. This priority is enforced by check order in `formatGsdState()` and covered by the `"scene priority"` suite in `tests/enh-2833-phase-lifecycle-statusline.test.cjs`. + +The progress bar (`[██░░░░░░░░] 20%`) is appended to the milestone segment only when `progress.percent` is present in frontmatter; absent means no bar. + +--- + +## Frontmatter parsing constraints + +The status-line hook uses regex-based parsing (no full YAML library), so the following constraints apply. They are tested in `tests/enh-2833-phase-lifecycle-statusline.test.cjs`. + +1. **Frontmatter must start at the very first character of the file.** Anything — including comments — above the opening `---` invalidates the match. The opening `---` line must be exactly that, with no trailing spaces. + +2. **Comments inside nested blocks are not supported.** The `progress:` block parser requires the next line to be `[ \t]+\w+:`. Inserting a `# comment` between `progress:` and its first key breaks the match and the bar disappears. Any documentation belongs in the `STATE.md` body, not inside frontmatter blocks. + +3. **`next_phases` primary format is single-line flow.** The parser first tries `next_phases: ["4.5", "4.6"]`. Block sequences (`- 4.5\n- 4.6`) are also parsed but are less reliable for status-line rendering. Prefer single-line flow for `next_phases` to keep the regex-based parser predictable. If many candidate phases need recording for documentation purposes, store them in the `STATE.md` body. + +If a future change replaces the regex parser with a full YAML library, these constraints can be relaxed and the tests updated accordingly. + +--- + +## Markdown body sections + +The body (everything after the closing `---`) follows the template in `get-shit-done/templates/state.md`. The standard sections are: + +### Project Reference + +Points to `.planning/PROJECT.md`. Contains: +- **Core value** — the one-liner from `PROJECT.md`'s Core Value section. +- **Current focus** — which phase is active. + +### Current Position + +Where the project stands right now: + +| Field | Format | +|---|---| +| `Phase:` | `X of Y (Phase name)` | +| `Plan:` | `A of B in current phase` | +| `Status:` | Free text, e.g. `Ready to execute`, `Executing Phase 4`, `Phase complete — ready for verification` | +| `Last activity:` | ISO date (`YYYY-MM-DD`) when handler-written; narrative prose when executor-authored | +| `Progress:` | Visual bar, e.g. `[████░░░░░░] 40%` | + +The `Status:` and `Last activity:` fields in this section are updated by GSD handlers when the existing value is a known template default (Knuth invariant: executor-authored values are preserved). The full list of known handler defaults is in `KNOWN_TEMPLATE_DEFAULTS` inside `get-shit-done/bin/lib/state-document.cjs`. + +### Performance Metrics + +Execution velocity tracking: +- Total plans completed, average duration per plan. +- Per-phase breakdown table (`Phase | Plans | Total | Avg/Plan`). +- Recent trend: Improving / Stable / Degrading. + +Updated after each plan completion. + +### Accumulated Context + +**Decisions** — a summary of recent decisions affecting current work (full log lives in `PROJECT.md`). Added via `gsd-tools state add-decision`. + +**Pending Todos** — count and reference to `.planning/todos/pending/`. Captured via `/gsd-capture`. + +**Blockers/Concerns** — issues affecting future work, prefixed with the originating phase. Added via `gsd-tools state add-blocker`; resolved via `gsd-tools state resolve-blocker`. + +### Session Continuity + +Enables instant session resumption: +- `Last session:` — ISO-8601 timestamp of the last session. +- `Stopped at:` — description of the last completed action. +- `Resume file:` — path to a `.continue-here*.md` file if one exists, otherwise `None`. + +--- + +## Backward compatibility + +The phase-lifecycle fields (`active_phase`, `next_action`, `next_phases`, and `progress.percent` for the bar) are **additive and opt-in per project**: + +- A `STATE.md` with none of the lifecycle fields populated renders **byte-for-byte identically** to v1.38.x and earlier. +- Adding any lifecycle field is opt-in — the renderer degrades gracefully when fields are absent. +- The progress bar is opt-in even when the `progress` block exists: only `progress.percent` triggers the bar; `total_phases` and `completed_phases` alone do not. + +The `formatGsdState #2833 backward compatibility` test suite in `tests/enh-2833-phase-lifecycle-statusline.test.cjs` locks this guarantee; any change that breaks legacy `STATE.md` rendering will fail the suite. + +--- + +## Related + +- [Planning artifacts](planning-artifacts.md) +- [Configuration](../CONFIGURATION.md) +- [The phase loop](../explanation/the-phase-loop.md) +- [docs index](../README.md) diff --git a/docs/tutorials/onboarding-an-existing-codebase.md b/docs/tutorials/onboarding-an-existing-codebase.md new file mode 100644 index 000000000..22c536f4a --- /dev/null +++ b/docs/tutorials/onboarding-an-existing-codebase.md @@ -0,0 +1,226 @@ +# Onboarding an existing codebase + +In this tutorial you will bring GSD Core into a repository that already has code in it. You will map the codebase, create a project that describes what you are *adding*, and run your first discuss-and-plan cycle for a small focused change. By the end, GSD Core's planning pipeline will know your stack, your conventions, and your concerns — and it will use that knowledge every time you plan. + +--- + +## What you'll build + +We will add a single `GET /health` endpoint to an existing Express application. The change is small enough that it will never distract from the real lesson: how GSD Core learns your codebase before it plans anything. + +--- + +## Prerequisites + +- **Node.js 18 or later** — `node --version` should print `v18.x.x` or higher. +- **An existing project** — any repo with code already in it. It does not have to be Express; the steps apply to any stack. +- **Claude Code** — open in your repo root. + +--- + +## Step 1 — Install GSD Core + +From your repo root: + +```bash +npx @opengsd/gsd-core@latest +``` + +Choose **Claude Code** and **local** when prompted. You'll see: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +--- + +## Step 2 — Start Claude Code with permissions + +```bash +claude --dangerously-skip-permissions +``` + +--- + +## Step 3 — Map the codebase + +Before creating a project, let GSD Core learn what already exists. This is the step that makes brownfield planning accurate. + +```text +/gsd-map-codebase +``` + +GSD Core spawns four parallel mapper sub-agents (you'll see "Spawning 4 parallel codebase mapper agents…" — this takes 1–5 minutes; do not interrupt). Each agent focuses on a different concern: + +| Agent | Focus | +|-------|-------| +| Tech mapper | Stack, frameworks, dependencies | +| Architecture mapper | Patterns, layers, data flow | +| Quality mapper | Conventions, testing practices | +| Concerns mapper | Technical debt, risk areas | + +When all four return, you'll see: + +```text +Codebase mapping complete. + +Created .planning/codebase/: +- STACK.md (47 lines) - Technologies and dependencies +- ARCHITECTURE.md (62 lines) - System design and patterns +- STRUCTURE.md (38 lines) - Directory layout and organisation +- CONVENTIONS.md (55 lines) - Code style and patterns +- TESTING.md (41 lines) - Test structure and practices +- INTEGRATIONS.md (29 lines) - External services and APIs +- CONCERNS.md (33 lines) - Technical debt and issues +``` + +Open `.planning/codebase/STACK.md`. You'll see the language, runtime, framework versions, and key dependencies GSD Core detected — grounded in the actual files it read, not guessed. + +Open `.planning/codebase/CONVENTIONS.md`. You'll see the naming conventions, error-handling patterns, and code-style rules it observed from your source. Every plan GSD Core produces for this repo will follow these conventions automatically. + +Open `.planning/codebase/CONCERNS.md`. This is the most useful file to read before any new feature work — it surfaces technical debt and fragile areas that might affect your plans. + +--- + +## Step 4 — Clear context and create the project + +Clear the session window: + +```text +/clear +``` + +Now create the project. Because GSD Core found existing code in the last step, it already knows this is a brownfield project. When you run `/gsd-new-project`, the questions focus on what you are *adding*, not rebuilding what already exists: + +```text +/gsd-new-project +``` + +GSD Core asks what you want to build. Answer with the feature you are adding, not a description of the whole codebase: + +```text +Add a GET /health endpoint to the Express app. It should return +{ "status": "ok", "uptime": }. We'll use it for load-balancer +health checks. +``` + +GSD Core follows up with a small number of clarifying questions, then proceeds to requirements and roadmap creation. Because it already read `ARCHITECTURE.md` and `STACK.md`, it will map existing capabilities into the **Validated** section of `PROJECT.md` automatically — you do not need to describe your existing API surface. + +Choose recommended defaults for all workflow settings. + +When the roadmapper sub-agent returns, you'll see a proposed roadmap. For a single small change it will be one phase: + +```text +Proposed Roadmap + +1 phase | 2 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|----------------|-----------------------------------------------|--------------| +| 1 | Health endpoint| GET /health returning status and uptime JSON | HLT-01, HLT-02 | +``` + +Approve the roadmap. + +**What gets created in `.planning/`:** + +```text +.planning/ + PROJECT.md ← project description; existing capabilities in "Validated" + REQUIREMENTS.md ← HLT-01, HLT-02 + ROADMAP.md ← Phase 1, status: pending + STATE.md ← session memory + config.json ← workflow settings + codebase/ ← the seven map files from Step 3 +``` + +Notice that `.planning/codebase/` is already there from Step 3. GSD Core read those files when writing `PROJECT.md`, which is why it could populate the Validated requirements without you describing them. + +--- + +## Step 5 — Clear context and discuss Phase 1 + +```text +/clear +``` + +```text +/gsd-discuss-phase 1 +``` + +Because GSD Core has read your `CONVENTIONS.md` and `ARCHITECTURE.md`, its questions are grounded in your actual codebase — not generic advice. You might see: + +```text +> Your routes are registered in src/routes/index.js. Should the health + endpoint live there, or in a dedicated src/routes/health.js? + A dedicated health.js — keep routes separated. + +> Your existing error middleware returns { error: "message" }. Should + /health use the same shape for error responses? + Yes, stay consistent. + +> Should uptime be calculated from process.uptime() or a stored start time? + process.uptime() is fine. +``` + +When the discussion closes, GSD Core writes: + +```text +.planning/phases/01-health-endpoint/CONTEXT.md +``` + +Open that file. The `## Implementation Decisions` section captures your answers. The planner will read this file before writing a single task — so your preferences about file placement and response shape will appear in the plans, not just in the discussion. + +--- + +## Step 6 — Plan Phase 1 + +```text +/gsd-plan-phase 1 +``` + +Four research sub-agents run in parallel (1–5 minutes). When they return, the planner reads `CONTEXT.md`, the research findings, and your codebase map to create task plans that match your conventions. + +**What gets created:** + +```text +.planning/phases/01-health-endpoint/ + RESEARCH.md ← findings on health endpoint patterns + 01-01-PLAN.md ← Task: create src/routes/health.js + 01-02-PLAN.md ← Task: register health route in src/routes/index.js +``` + +Open `01-01-PLAN.md`. Notice that the `` tag references `src/routes/health.js` — the exact path you specified in the discussion, consistent with the routing pattern GSD Core observed in your codebase map. That is the codebase map at work. + +--- + +## What's next + +You now have a project with a codebase map, a discuss decision record, and verified task plans — all grounded in your actual code. From here, the workflow is identical to a greenfield project: + +```text +/gsd-execute-phase 1 +/gsd-verify-work 1 +/gsd-ship 1 +``` + +For every future feature, run `/gsd-map-codebase` again whenever the structure changes significantly, so the codebase map stays fresh. + +--- + +## What you've learned + +- How `/gsd-map-codebase` runs four parallel agents to produce `STACK.md`, `ARCHITECTURE.md`, `CONVENTIONS.md`, `CONCERNS.md`, `STRUCTURE.md`, `TESTING.md`, and `INTEGRATIONS.md` in `.planning/codebase/`. +- How `/gsd-new-project` in a brownfield repo focuses questions on what you are *adding* and populates Validated requirements from existing code. +- How the codebase map shapes every question in `/gsd-discuss-phase` — file paths, patterns, and conventions come from your actual code. +- How the planner reads `CONTEXT.md` plus `CONVENTIONS.md` to produce plans that match your repo's style. + +--- + +## Related + +- [Your first project](your-first-project.md) — the full greenfield loop from install to PR +- [Map codebase via Commands](../COMMANDS.md) — all `/gsd-map-codebase` flags and subcommands +- [Documentation index](../README.md) diff --git a/docs/tutorials/your-first-project.md b/docs/tutorials/your-first-project.md new file mode 100644 index 000000000..694977322 --- /dev/null +++ b/docs/tutorials/your-first-project.md @@ -0,0 +1,291 @@ +# Your first project + +In this tutorial you will install GSD Core and build a small command-line to-do app from scratch — one phase, one PR, the full loop. By the end you will have run every command in the core phase loop at least once, and you will have seen the planning artefacts that each command produces. + +--- + +## What you'll build + +A Node.js CLI that lets you add, list, and complete to-do items stored in a local JSON file. It is small enough to finish in one session and uses nothing beyond the Node.js standard library, so there is nothing unusual to install. + +--- + +## Prerequisites + +- **Node.js 18 or later** — `node --version` should print `v18.x.x` or higher. +- **Claude Code** — open in the project directory you want to use. +- An internet connection for the initial install. + +No other tools are required. GSD Core itself is installed in the next step. + +--- + +## Step 1 — Install GSD Core + +Open a terminal in your project directory and run: + +```bash +npx @opengsd/gsd-core@latest +``` + +The installer asks which AI coding runtime you are using and whether to install globally or into the current project. Choose **Claude Code** and **local** (just this project) for now. + +You'll see output like: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +Notice that a `.claude/` directory now exists in your project. That is where GSD Core's commands and agents live. + +> Why local vs global? A local install keeps the skills version pinned to this project. See [Install on your runtime](../how-to/install-on-your-runtime.md) when you want to install globally. + +--- + +## Step 2 — Start Claude Code with permissions + +GSD Core spawns sub-agents that read and write files. Start Claude Code with the permissions flag so it does not pause to ask about every file operation: + +```bash +claude --dangerously-skip-permissions +``` + +You'll land at the Claude Code prompt in your project directory. + +--- + +## Step 3 — Create the project + +Type this slash command at the Claude Code prompt: + +```text +/gsd-new-project +``` + +GSD Core will open a conversation. It asks one question first: + +```text +What do you want to build? +``` + +Type something like: + +```text +A Node.js CLI tool for managing to-do items. Users run `todo add "buy milk"`, +`todo list`, and `todo done 1`. Items are saved to a local todos.json file. +No external dependencies — Node built-ins only. +``` + +GSD Core follows up with a handful of clarifying questions. Answer them naturally. It is learning what you care about before it writes a single plan. + +After the questions, it offers to run domain research. For a project this small you can skip research — choose **Skip research** when prompted. + +GSD Core then asks you to pick workflow settings (mode, granularity, research agents). Choose the recommended defaults for each. These are written to `.planning/config.json`. + +Finally, a roadmapper sub-agent runs (you'll see the "Spawning roadmapper…" notice — this is normal and takes roughly a minute). When it returns, GSD Core presents a proposed roadmap. For a single-phase project it will look something like: + +```text +Proposed Roadmap + +1 phase | 4 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|--------------------|-----------------------------------------|-------------------| +| 1 | Core CLI | add / list / done commands, todos.json | CLI-01 … CLI-04 | +``` + +Type **Approve** to accept the roadmap. + +**What gets created in `.planning/`:** + +```text +.planning/ + PROJECT.md ← your project description and requirements + REQUIREMENTS.md ← REQ-IDs for every v1 capability + ROADMAP.md ← Phase 1, status: pending + STATE.md ← session memory, current position + config.json ← workflow settings +``` + +Open `.planning/ROADMAP.md` now and read through it. Notice that Phase 1 has a Goal, a list of Requirements it must satisfy, and Success Criteria — these are the observable behaviours that execution must deliver. + +--- + +## Step 4 — Clear context and discuss Phase 1 + +GSD Core is designed around fresh contexts. Clear the main session window before each phase: + +```text +/clear +``` + +Then start the discussion for Phase 1: + +```text +/gsd-discuss-phase 1 +``` + +GSD Core reads the phase goal and asks about your implementation preferences. These are the decisions that shape *how* it builds, not just *what* it builds. Example exchange: + +```text +> How should done items be stored — mark them in place or move them? + Mark them in place with a "done" flag. + +> Should `todo list` show completed items by default? + No, hide them unless --all is passed. + +> Error format when todos.json doesn't exist yet? + Create it silently on first add. +``` + +When the discussion closes, GSD Core writes: + +```text +.planning/phases/01-core-cli/CONTEXT.md +``` + +Open that file. You'll see an `## Implementation Decisions` section capturing exactly what you said. The planner reads this file — so the decisions you made here will flow through into every task plan. + +--- + +## Step 5 — Plan Phase 1 + +```text +/gsd-plan-phase 1 +``` + +Four research sub-agents fan out in parallel (you'll see the "Spawning 4 researchers…" notice). They take 1–5 minutes. Do not interrupt. + +When they return, a planner reads CONTEXT.md plus the research findings and creates atomic task plans. A plan-checker then verifies each plan achieves the phase goal before saving. + +**What gets created:** + +```text +.planning/phases/01-core-cli/ + RESEARCH.md ← domain findings + 01-01-PLAN.md ← Task: create todos.json read/write helpers + 01-02-PLAN.md ← Task: implement add / list / done commands +``` + +Open `01-01-PLAN.md`. You'll see a `` block with a name, the files it touches, the action steps, a verify command, and a done condition. Notice the `` tag — GSD Core's executor will run that command after writing the code. + +--- + +## Step 6 — Execute Phase 1 + +```text +/gsd-execute-phase 1 +``` + +GSD Core groups the plans into waves (independent plans run in parallel), spawns a fresh 200k-context executor per plan, and commits each task atomically. + +You'll see something like: + +```text +Wave 1 (parallel): + [Executor A] → 01-01-PLAN.md (read/write helpers) ✓ committed + [Executor B] → 01-02-PLAN.md (CLI commands) ✓ committed + +[Verifier] Checking codebase against phase goals... + CLI-01 todo add ✓ + CLI-02 todo list ✓ + CLI-03 todo done ✓ + CLI-04 --all flag ✓ + Status: PASS +``` + +**What gets created:** + +```text +.planning/phases/01-core-cli/ + 01-01-SUMMARY.md ← what Executor A built and committed + 01-02-SUMMARY.md ← what Executor B built and committed + VERIFICATION.md ← REQ coverage: PASS +``` + +Run your CLI now: + +```bash +node todo.js add "buy milk" +node todo.js add "write tests" +node todo.js list +node todo.js done 1 +node todo.js list +``` + +You should see items appear, and item 1 disappear from the default list after marking it done. That is your first visible result delivered by GSD Core. + +--- + +## Step 7 — Verify the work + +```text +/gsd-verify-work 1 +``` + +GSD Core extracts the phase's success criteria and walks you through each one: + +```text +[1/3] Can you run `node todo.js add "buy milk"` without errors? +> yes + +[2/3] Does `node todo.js list` show only incomplete items by default? +> yes + +[3/3] Does `node todo.js done 1` mark item 1 complete and hide it from the default list? +> yes + +All 3 checks passed. Phase 1 verified. +``` + +If any check fails, GSD Core diagnoses the root cause and creates a fix plan. Run `/gsd-execute-phase 1` again to apply it, then re-run `/gsd-verify-work 1`. + +**What gets created:** + +```text +.planning/phases/01-core-cli/UAT.md ← all checks and their outcomes +``` + +--- + +## Step 8 — Ship it + +```text +/gsd-ship 1 +``` + +GSD Core creates a pull request with a generated body. The PR body always includes: Summary, Changes, Requirements Addressed, Verification, and Key Decisions. + +You'll see: + +```text +Pull request created: https://github.com/your-org/your-repo/pull/1 + +Title: feat(phase-1): core CLI — add / list / done commands +``` + +That is the full loop — from idea to merged PR — for one phase. + +--- + +## What you've learned + +- How to install GSD Core with `npx @opengsd/gsd-core@latest`. +- How `/gsd-new-project` turns a conversation into a roadmap backed by `.planning/` artefacts. +- How `/gsd-discuss-phase` captures implementation decisions before any planning happens. +- How `/gsd-plan-phase` spawns parallel researchers and produces atomic task plans. +- How `/gsd-execute-phase` runs those plans in parallel waves and commits each task. +- How `/gsd-verify-work` walks through success criteria and generates fix plans when needed. +- How `/gsd-ship` turns a verified phase into a pull request. + +For a multi-phase project, repeat Steps 4–8 for each phase, then run `/gsd-progress --next` to let GSD Core detect the next step automatically. + +--- + +## Related + +- [The phase loop](../explanation/the-phase-loop.md) — why the loop is shaped this way +- [How-to guides](../README.md#how-to-guides) — task-focused recipes for specific situations +- [Onboarding an existing codebase](onboarding-an-existing-codebase.md) — bring GSD Core to a brownfield repo diff --git a/docs/workflow-discuss-mode.md b/docs/workflow-discuss-mode.md index c6da28b42..2c5daf496 100644 --- a/docs/workflow-discuss-mode.md +++ b/docs/workflow-discuss-mode.md @@ -1,13 +1,14 @@ # Discuss Mode: Assumptions vs Interview -GSD's discuss-phase has two modes for gathering implementation context before planning. +GSD Core's discuss-phase offers two modes for gathering implementation context before planning begins. Understanding when to use each helps you move from question-answering to a confirmed `CONTEXT.md` with less back-and-forth. + +For step-by-step instructions on running either mode, see the [Discuss a phase how-to](how-to/discuss-a-phase.md). ## Modes ### `discuss` (default) -The original interview-style flow. Claude identifies gray areas in the phase, presents them -for selection, then asks ~4 questions per area. Good for: +The original interview-style flow. Claude identifies grey areas in the phase, presents them for selection, then asks approximately four questions per area. Good for: - Early phases where the codebase is new - Phases where the user has strong opinions they want to express proactively @@ -15,13 +16,11 @@ for selection, then asks ~4 questions per area. Good for: ### `assumptions` -A codebase-first flow. Claude deeply analyzes the codebase via a subagent (reading 5-15 -relevant files), forms assumptions with evidence, and presents them for confirmation or -correction. Good for: +A codebase-first flow. Claude deeply analyses the codebase via a subagent (reading 5–15 relevant files), forms assumptions with evidence, and presents them for confirmation or correction. Good for: - Established codebases with clear patterns - Users who find the interview questions obvious -- Faster context gathering (~2-4 interactions vs ~15-20) +- Faster context gathering (~2–4 interactions vs ~15–20) ## Configuration @@ -33,12 +32,12 @@ node gsd-tools.cjs config-set workflow.discuss_mode assumptions node gsd-tools.cjs config-set workflow.discuss_mode discuss ``` -The setting is per-project (stored in `.planning/config.json`). +The setting is per-project (stored in `.planning/config.json`). See the [CONTEXT.md schema](reference/context-md.md) for the full structure of the file both modes produce. ## How Assumptions Mode Works 1. **Init** — Same as discuss mode (load prior context, scout codebase, check todos) -2. **Deep analysis** — Explore subagent reads 5-15 codebase files related to the phase +2. **Deep analysis** — Explore subagent reads 5–15 codebase files related to the phase 3. **Surface assumptions** — Each assumption includes: - What Claude would do and why (citing file paths) - What goes wrong if the assumption is incorrect @@ -57,7 +56,8 @@ The setting is per-project (stored in `.planning/config.json`). ## Output -Both modes produce identical CONTEXT.md with the same 6 sections: +Both modes produce an identical `CONTEXT.md` with the same six sections: + - `` — Phase boundary - `` — Locked implementation decisions - `` — Specs/docs downstream agents must read @@ -65,4 +65,11 @@ Both modes produce identical CONTEXT.md with the same 6 sections: - `` — User references and preferences - `` — Ideas noted for future phases -Downstream agents (researcher, planner, checker) consume this identically regardless of mode. +Downstream agents (researcher, planner, checker) consume this file identically regardless of which mode produced it. See the [CONTEXT.md schema](reference/context-md.md) for the full field reference. + +## Related + +- [Discuss a phase](how-to/discuss-a-phase.md) — step-by-step how-to for running `/gsd-discuss-phase` in either mode. +- [CONTEXT.md schema](reference/context-md.md) — full field reference for the file both modes produce. +- [The phase loop](explanation/the-phase-loop.md) — how discuss fits into the broader discuss → plan → execute → verify → ship cycle. +- [docs index](README.md) — full table of contents for GSD Core documentation. diff --git a/docs/zh-CN/ARCHITECTURE.md b/docs/zh-CN/ARCHITECTURE.md new file mode 100644 index 000000000..08bd971cd --- /dev/null +++ b/docs/zh-CN/ARCHITECTURE.md @@ -0,0 +1,745 @@ +# GSD Core 架构 + +> 面向贡献者和高级用户的系统架构说明。如需面向用户的文档,请参阅[功能参考](FEATURES.md)或[用户指南](USER-GUIDE.md)。 + +--- + +## 目录 + +- [系统概述](#系统概述) +- [设计原则](#设计原则) +- [组件架构](#组件架构) +- [Agent 模型](#agent-模型) +- [数据流](#数据流) +- [文件系统布局](#文件系统布局) +- [安装程序架构](#安装程序架构) +- [Hook 系统](#hook-系统) +- [CLI 工具层](#cli-工具层) +- [运行时抽象](#运行时抽象) + +--- + +## 系统概述 + +GSD Core 是一个**元提示框架**,位于用户与 AI 编码 Agent(Claude Code、Gemini CLI、OpenCode、Kilo、Codex、Copilot、Antigravity、Trae、Cline、Augment Code)之间。它提供: + +1. **上下文工程** — 结构化产物,为每个任务向 AI 提供所需的全部信息(参见[上下文工程](explanation/context-engineering.md)) +2. **多 Agent 编排** — 轻量级编排器,以全新上下文窗口派生专用 Agent(参见[多 Agent 编排](explanation/multi-agent-orchestration.md)) +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 │ +│ gsd-tools.cjs command families + domain modules │ +│ command-routing-hub + observability seams │ +└──────────────────────┬───────────────────────────────┘ + │ +┌──────────────────────▼───────────────────────────────┐ +│ FILE SYSTEM (.planning/) │ +│ PROJECT.md | REQUIREMENTS.md | ROADMAP.md │ +│ STATE.md | config.json | phases/ | research/ │ +└──────────────────────────────────────────────────────┘ +``` + +--- + +## 设计原则 + +### 1. 每个 Agent 拥有全新上下文 + +编排器派生的每个 Agent 都有一个干净的上下文窗口(最多 200K token)。这消除了上下文腐化——即 AI 在其上下文窗口中积累大量对话后导致的质量下降问题。 + +### 2. 轻量级编排器 + +工作流文件(`get-shit-done/workflows/*.md`)不承担繁重工作。它们: + +- 通过 `gsd-tools.cjs init ` 加载上下文 +- 以聚焦的提示词派生专用 Agent +- 收集结果并路由到下一步 +- 在步骤之间更新状态 + +### 3. 基于文件的状态 + +所有状态以人类可读的 Markdown 和 JSON 格式存储在 `.planning/` 中。无需数据库、服务器或外部依赖。这意味着: + +- 状态在上下文重置(`/clear`)后仍然保留 +- 状态可由人类和 Agent 共同检查 +- 状态可提交到 git 以供团队查看 + +### 4. 缺省即启用 + +工作流功能标志遵循**缺省即启用**模式。若 `config.json` 中缺少某个键,则默认为 `true`。用户需显式禁用功能;无需手动启用默认值。 + +### 5. 深度防御 + +多层保护防止常见故障模式: + +- 计划在执行前经过验证(plan-checker agent) +- 执行为每个任务生成原子提交 +- 执行后验证会检查是否符合阶段目标 +- 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`) +- **Gemini CLI:** 在 `gsd:` 命名空间下的斜线命令(冒号形式,`/gsd:command-name`)——Gemini 将所有自定义命令置于其插件 id 的命名空间下,因此安装路径会将正文中的每个引用改写为冒号形式 +- **Antigravity:** 技能 + +**命令总数:** 请参阅 [`docs/INVENTORY.md`](INVENTORY.md#commands) 获取权威数量及完整列表。 + +#### 两阶段层级路由(v1.40,[#2792](https://github.com/open-gsd/gsd-core/issues/2792)) + +为控制急于列举技能的 token 开销,v1.40 引入了六个命名空间**元技能**(`gsd-workflow`、`gsd-project`、`gsd-quality`、`gsd-context`、`gsd-manage`、`gsd-ideate`——源自 `commands/gsd/ns-*.md`,但可调用的 `name:` 为此处显示的简短形式),位于具体子技能之上。模型看到的是 6 个命名空间路由器(约 120 个 token),而非扁平的 86 个技能列表(约 2,150 个 token),选择命名空间后通过嵌入在命名空间路由器主体中的路由表路由到具体子技能。命名空间技能是**可叠加的**——每个具体命令仍可直接调用。 + +路由器描述使用管道分隔的关键词标签(≤ 60 个字符),符合工具注意力研究的结论:关键词密集的标签在路由效果上优于散文,且 token 开销仅约 40%。 + +#### MCP token 预算交互 + +急于列举技能是每轮两种反复出现的 token 开销之一。另一种是 `.claude/settings.json` 中每个已启用 MCP 服务器注入的 MCP 工具 schema。重型 MCP 服务器(browser/playwright、Mac-tools、Windows-tools)每轮各自可消耗 20k+ token——通常远超 `model_profile` 调优所节省的量。该开关位于 Claude Code 框架中(`.claude/settings.json` 中的 `enabledMcpjsonServers` / `disabledMcpjsonServers`),**不属于** GSD 的关注范围。两阶段路由层(#2792)和严格的 MCP 启用管理是每轮最大的成本杠杆。请参阅 [`docs/USER-GUIDE.md`](USER-GUIDE.md) 和 `references/context-budget.md` 了解审计清单。 + +### 工作流(`get-shit-done/workflows/*.md`) + +命令所引用的编排逻辑,包含逐步流程: + +- 通过 `gsd-tools.cjs init` 处理程序加载上下文 +- 带有模型解析的 Agent 派生指令 +- 关卡/检查点定义 +- 状态更新模式 +- 错误处理与恢复 + +**工作流总数:** 请参阅 [`docs/INVENTORY.md`](INVENTORY.md#workflows) 获取权威数量及完整列表。 + +#### 工作流的渐进式披露 + +工作流文件在每次调用对应的 `/gsd-*` 命令时会被完整加载到 Claude 的上下文中。为控制该成本,`tests/workflow-size-budget.test.cjs` 强制执行的工作流大小预算与 #2361 中的 Agent 预算保持一致: + +| 层级 | 每文件行数限制 | +|-----------|--------------------| +| `XL` | 1700 — 顶级编排器(`execute-phase`、`plan-phase`、`new-project`) | +| `LARGE` | 1500 — 多步骤规划器和大型功能工作流 | +| `DEFAULT` | 1000 — 聚焦于单一目的的工作流(目标层级) | + +根据 issue #2551,`workflows/discuss-phase.md` 须严格遵守 <500 行上限。当工作流超出其层级时,应将各模式的主体提取到 `workflows//modes/.md`,将模板提取到 `workflows//templates/`,将共享知识提取到 `get-shit-done/references/`。父文件成为轻量级调度器,仅读取当前调用所需的模式和模板文件。 + +`workflows/discuss-phase/` 是该模式的典型示例——父文件负责调度,`modes/` 存放各标志的行为(`power.md`、`all.md`、`auto.md`、`chain.md`、`text.md`、`batch.md`、`analyze.md`、`default.md`、`advisor.md`),`templates/` 存放 CONTEXT.md、DISCUSSION-LOG.md 以及仅在写入对应输出文件时才读取的 checkpoint.json schema。 + +### Agent(`agents/*.md`) + +带有前置元数据的专用 Agent 定义,指定: + +- `name` — Agent 标识符 +- `description` — 角色与用途 +- `tools` — 允许的工具访问(Read、Write、Edit、Bash、Grep、Glob、WebSearch 等) +- `color` — 用于视觉区分的终端输出颜色 + +**Agent 总数:** 33 + +### 参考文档(`get-shit-done/references/*.md`) + +工作流和 Agent 通过 `@-reference` 引用的共享知识文档(请参阅 [`docs/INVENTORY.md`](INVENTORY.md#references-41-shipped) 获取权威数量及完整列表): + +**核心参考:** + +- `checkpoints.md` — 检查点类型定义和交互模式 +- `gates.md` — 4 种规范关卡类型(确认、质量、安全、转换),与 plan-checker 和 verifier 连接 +- `model-profiles.md` — 各 Agent 的模型层级分配 +- `model-profile-resolution.md` — 模型解析算法文档 +- `verification-patterns.md` — 不同产物类型的验证方式 +- `verification-overrides.md` — 每种产物的验证覆盖规则 +- `planning-config.md` — 完整配置 schema 和行为说明 +- `git-integration.md` — Git 提交、分支及历史记录模式 +- `git-planning-commit.md` — 规划目录提交约定 +- `questioning.md` — 项目初始化的梦想提取理念 +- `tdd.md` — 测试驱动开发集成模式 +- `ui-brand.md` — 视觉输出格式化模式 +- `common-bug-patterns.md` — 代码审查和验证的常见错误模式 + +**工作流参考:** + +- `agent-contracts.md` — 编排器与 Agent 之间的正式接口 +- `context-budget.md` — 上下文窗口预算分配规则 +- `continuation-format.md` — 会话续接/恢复格式 +- `domain-probes.md` — discuss-phase 的领域特定探测问题 +- `gate-prompts.md` — 关卡/检查点提示词模板 +- `revision-loop.md` — 计划修订迭代模式 +- `universal-anti-patterns.md` — 需检测和避免的常见反模式 +- `artifact-types.md` — 规划产物类型定义 +- `phase-argument-parsing.md` — 阶段参数解析约定 +- `decimal-phase-calculation.md` — 十进制子阶段编号规则 +- `workstream-flag.md` — 工作流活动指针约定 +- `user-profiling.md` — 用户行为分析方法 +- `thinking-partner.md` — 在决策点条件性激活思考伙伴 + +**思考模型参考:** + +将思考类模型(o3、o4-mini、Gemini 2.5 Pro)集成到 GSD 工作流的参考文档: + +- `thinking-models-debug.md` — 调试工作流的思考模型模式 +- `thinking-models-execution.md` — 执行 Agent 的思考模型模式 +- `thinking-models-planning.md` — 规划 Agent 的思考模型模式 +- `thinking-models-research.md` — 研究 Agent 的思考模型模式 +- `thinking-models-verification.md` — 验证 Agent 的思考模型模式 + +**模块化规划器分解:** + +规划器 Agent(`agents/gsd-planner.md`)已从单一整体文件分解为一个核心 Agent 加参考模块,以遵守部分运行时强加的 50K 字符限制: + +- `planner-gap-closure.md` — 缺口修复模式行为(读取 VERIFICATION.md,针对性重规划) +- `planner-reviews.md` — 跨 AI 审查集成(从 `/gsd-review` 读取 REVIEWS.md) +- `planner-revision.md` — 用于迭代细化的计划修订模式 + +### 模板(`get-shit-done/templates/`) + +所有规划产物的 Markdown 模板。由 `gsd-tools.cjs template fill` / `phase.scaffold`(以及顶级 `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) + +### Hook(`hooks/`) + +与宿主 AI Agent 集成的运行时 hook: + +| Hook | 事件 | 用途 | +|------|-------|---------| +| `gsd-statusline.js` | `statusLine` | 显示模型、任务、目录及上下文使用量进度条 | +| `gsd-context-monitor.js` | `PostToolUse` / `AfterTool` | 在剩余上下文为 35%/25% 时向 Agent 注入上下文警告 | +| `gsd-check-update.js` | `SessionStart` | 触发后台更新检查的前台触发器 | +| `gsd-check-update-worker.js` | (辅助程序) | 由 `gsd-check-update.js` 派生的后台工作进程;不直接注册事件 | +| `gsd-prompt-guard.js` | `PreToolUse` | 扫描 `.planning/` 写入内容中的提示词注入模式(建议性) | +| `gsd-read-injection-scanner.js` | `PostToolUse` | 扫描 Read 工具输出中不受信任内容里的注入指令 | +| `gsd-workflow-guard.js` | `PreToolUse` | 检测 GSD 工作流上下文之外的文件编辑(建议性,通过 `hooks.workflow_guard` 选择启用) | +| `gsd-read-guard.js` | `PreToolUse` | 建议性防护,防止对本会话中尚未读取的文件执行 Edit/Write | +| `gsd-session-state.sh` | `PostToolUse` | 基于 shell 的运行时的会话状态跟踪 | +| `gsd-validate-commit.sh` | `PostToolUse` | 用于规范提交格式执行的提交验证 | +| `gsd-phase-boundary.sh` | `PostToolUse` | 工作流转换的阶段边界检测 | + +请参阅 [`docs/INVENTORY.md`](INVENTORY.md#hooks-11-shipped) 获取权威的 11 个 hook 列表。 + +### 命令路由中枢(`get-shit-done/bin/lib/command-routing-hub.cjs`) + +CJS 命令族路由器通过 `CommandRoutingHub` 进行调度。中枢拥有不抛出异常的纯结果契约(`hub.dispatch()` 捕获内部异常并返回 `{ ok: false, kind, ...typedPayload }`)以及封闭的运行时错误分类(`UnknownCommand`、`InvalidArgs`、`HandlerRefusal`、`HandlerFailure`)。路由器适配器保持为轻量级 CLI 转换器——它们构建中枢、调用 `dispatch`,然后将结果映射到 `output()`/`error()` 调用。运行时为单路径(无双运行时模式选择)。参见 `docs/adr/0174-retire-gsd-sdk-package-boundary.md`。 + +### CLI 工具(`get-shit-done/bin/`) + +Node.js CLI 工具(`gsd-tools.cjs`),其领域模块分布在 `get-shit-done/bin/lib/` 中(请参阅 [`docs/INVENTORY.md`](INVENTORY.md#cli-modules-33-shipped) 获取权威列表): + + +| 模块 | 职责 | +| ---------------------- | --------------------------------------------------------------------------------------------------- | +| `core.cjs` | 错误处理、输出格式化、共享工具;规划辅助程序的兼容性重导出 | +| `planning-workspace.cjs` | 规划接缝(`planningDir`、`planningPaths`、活动工作流路由、`.planning/.lock`) | +| `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、时间戳、待办事项、脚手架、统计) | +| `model-profiles.cjs` | 模型配置文件解析表 | +| `security.cjs` | 路径遍历防护、提示词注入检测、安全 JSON 解析、shell 参数验证 | +| `uat.cjs` | UAT 文件解析、验证债务跟踪、审计 UAT 支持 | +| `docs.cjs` | 文档更新工作流初始化、Markdown 扫描、Monorepo 检测 | +| `workstream.cjs` | 工作流 CRUD、迁移、会话范围活动指针 | +| `schema-detect.cjs` | ORM 模式(Prisma、Drizzle 等)的 schema 漂移检测 | +| `profile-pipeline.cjs` | 用户行为分析数据管道、会话文件扫描 | +| `profile-output.cjs` | 配置文件渲染、USER-PROFILE.md 和 dev-preferences.md 生成 | + + +--- + +## Agent 模型 + +### 编排器 → Agent 模式 + +``` +Orchestrator (workflow .md) + │ + ├── Load context: gsd-tools.cjs init + │ Returns JSON with: project info, config, state, phase details + │ + ├── Resolve model: gsd-tools.cjs resolve-model + │ 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 / state patch / state advance-plan +``` + +### 主要 Agent 派生类别 + +21 个主要 Agent 的概念派生模式分类。完整的 31 个 Agent 权威列表(包括 10 个高级/专用 Agent,如 `gsd-pattern-mapper`、`gsd-code-reviewer`、`gsd-code-fixer`、`gsd-ai-researcher`、`gsd-domain-researcher`、`gsd-eval-planner`、`gsd-eval-auditor`、`gsd-framework-selector`、`gsd-debug-session-manager`、`gsd-intel-updater`),请参阅 [`docs/INVENTORY.md`](INVENTORY.md#agents-31-shipped)。 + + +| 类别 | Agent | 并行性 | +| ---------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| **研究者** | gsd-project-researcher, gsd-phase-researcher, gsd-ui-researcher, gsd-advisor-researcher | 4 路并行(技术栈、功能、架构、陷阱);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 路并行(技术、架构、质量、关注点) | +| **调试者** | gsd-debugger | 串行(交互式) | +| **审计者** | gsd-ui-auditor, gsd-security-auditor | 串行 | +| **文档写作者** | gsd-doc-writer, gsd-doc-verifier | 串行(写作者后接验证者) | +| **分析者** | gsd-user-profiler | 串行 | +| **假设分析者** | gsd-assumptions-analyzer | 串行(discuss-phase 期间) | + + +### 波次执行模型 + +在 `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 上下文窗口(支持的模型最高可达 1M) +- 待执行的具体 PLAN.md +- 项目上下文(PROJECT.md、STATE.md) +- 阶段上下文(CONTEXT.md、RESEARCH.md(如可用)) + +### 自适应上下文增强(1M 模型) + +当上下文窗口为 500K+ token 时(1M 级模型,如 Opus 4.6、Sonnet 4.6),子 Agent 提示词会自动增强额外上下文,这些内容在标准 200K 窗口中无法容纳: + +- **执行者 Agent** 接收前一波次的 SUMMARY.md 文件和阶段 CONTEXT.md/RESEARCH.md,从而实现阶段内跨计划感知 +- **验证者 Agent** 接收所有 PLAN.md、SUMMARY.md、CONTEXT.md 文件及 REQUIREMENTS.md,实现历史感知验证 + +编排器从配置中读取 `context_window`(`gsd-tools.cjs config-get context_window`),当该值 >= 500,000 时,条件性地包含更丰富的上下文。对于标准 200K 窗口,提示词使用截断版本并以缓存友好的顺序排列,以最大化上下文效率。 + +#### 并行提交安全性 + +当多个执行者在同一波次内运行时,两种机制防止冲突: + +1. `--no-verify` 提交 — 并行 Agent 跳过预提交 hook(可能导致构建锁争用,例如 Rust 项目中的 cargo lock 冲突)。编排器在每个波次完成后运行一次 `git hook run pre-commit`。 +2. **STATE.md 文件锁** — 所有 `writeStateMd()` 调用使用基于锁文件的互斥(`STATE.md.lock`,采用 `O_EXCL` 原子创建)。这防止了读-改-写竞态条件,即两个 Agent 同时读取 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 + ├── Research gate (blocks if RESEARCH.md has unresolved open questions) + ├── Phase Researcher → RESEARCH.md + │ └── Package Legitimacy Gate: slopcheck on every package; [SLOP] removed, + │ [SUS]/[ASSUMED] flagged; Audit table written to RESEARCH.md + ├── Planner (with reachability check) → PLAN.md files + │ └── checkpoint:human-verify injected before [ASSUMED]/[SUS] installs; + │ T-{phase}-SC STRIDE row added for install-bearing plans + ├── Plan Checker → Verify loop (max 3x) + ├── Requirements coverage gate (REQ-IDs → plans) + └── Decision coverage gate (CONTEXT.md `` → plans, BLOCKING — #2492) + │ + ▼ +state planned-phase → STATE.md (Planned/Ready to execute) + │ + ▼ +execute-phase (context reduction: truncated prompts, cache-friendly ordering) + ├── Wave analysis (dependency grouping) + ├── Executor per plan → code + atomic commits + ├── SUMMARY.md per plan + └── Verifier → VERIFICATION.md + └── Decision coverage gate (CONTEXT.md decisions → shipped artifacts, NON-BLOCKING — #2492) + │ + ▼ +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) +├── skills/gsd-*/SKILL.md # Global skills (authoritative roster: docs/INVENTORY.md) +├── commands/gsd/*.md # Local Claude installs use slash commands instead of global skills +├── get-shit-done/ +│ ├── bin/gsd-tools.cjs # CLI utility +│ ├── bin/lib/*.cjs # Domain modules (authoritative roster: docs/INVENTORY.md) +│ ├── workflows/*.md # Workflow definitions (authoritative roster: docs/INVENTORY.md) +│ ├── references/*.md # Shared reference docs (authoritative roster: docs/INVENTORY.md) +│ └── templates/ # Planning artifact templates +├── agents/*.md # Agent definitions (authoritative roster: docs/INVENTORY.md) +├── hooks/*.js # Node.js hooks (statusline, guards, monitors, update check) +├── hooks/*.sh # Shell hooks (session state, commit validation, phase boundary) +├── settings.json # Hook registrations +└── VERSION # Installed version number +``` + +其他运行时的等效路径: + +- **OpenCode:** `~/.config/opencode/` 全局或 `./.opencode/` 本地 +- **Kilo:** `~/.config/kilo/` 全局或 `./.kilo/` 本地 +- **Gemini CLI:** `~/.gemini/` 全局或 `./.gemini/` 本地 +- **Codex:** `~/.codex/` 全局或 `./.codex/` 本地 +- **Copilot:** `~/.copilot/` 全局或 `./.github/` 本地 +- **Antigravity:** 自动检测全局根目录(`~/.gemini/antigravity/`、`~/.gemini/antigravity-ide/` 或 `~/.gemini/antigravity-cli/`)或 `./.agent/` 本地 +- **Cursor:** `~/.cursor/` 全局或 `./.cursor/` 本地 +- **Windsurf:** `~/.codeium/windsurf/` 全局或 `./.windsurf/` 本地 +- **Augment Code:** `~/.augment/` 全局或 `./.augment/` 本地 +- **Trae:** `~/.trae/` 全局或 `./.trae/` 本地 +- **Qwen Code:** `~/.qwen/` 全局或 `./.qwen/` 本地 +- **Hermes Agent:** `~/.hermes/` 全局或 `./.hermes/` 本地 +- **CodeBuddy:** `~/.codebuddy/` 全局或 `./.codebuddy/` 本地 +- **Cline:** `~/.cline/` 全局或项目根目录 `.clinerules` 本地 + +### 项目文件(`.planning/`) + +``` +.planning/ +├── PROJECT.md # Project vision, constraints, decisions, evolution rules +├── REQUIREMENTS.md # Scoped requirements (v1/v2/out-of-scope) +├── ROADMAP.md # Phase breakdown with status tracking +├── STATE.md # Living memory: position, decisions, blockers, metrics +├── config.json # Workflow configuration +├── MILESTONES.md # Completed milestone archive +├── research/ # Domain research from /gsd-new-project +│ ├── SUMMARY.md +│ ├── STACK.md +│ ├── FEATURES.md +│ ├── ARCHITECTURE.md +│ └── PITFALLS.md +├── codebase/ # Brownfield mapping (from /gsd-map-codebase) +│ ├── STACK.md # YAML frontmatter carries `last_mapped_commit` +│ ├── ARCHITECTURE.md # for the post-execute drift gate (#2003) +│ ├── CONVENTIONS.md +│ ├── CONCERNS.md +│ ├── STRUCTURE.md +│ ├── TESTING.md +│ └── INTEGRATIONS.md +├── phases/ +│ └── XX-phase-name/ +│ ├── XX-CONTEXT.md # User preferences (from discuss-phase) +│ ├── XX-RESEARCH.md # Ecosystem research (from plan-phase) +│ ├── XX-YY-PLAN.md # Execution plans +│ ├── XX-YY-SUMMARY.md # Execution outcomes +│ ├── XX-VERIFICATION.md # Post-execution verification +│ ├── XX-VALIDATION.md # Nyquist test coverage mapping +│ ├── XX-UI-SPEC.md # UI design contract (from ui-phase) +│ ├── XX-UI-REVIEW.md # Visual audit scores (from ui-review) +│ └── XX-UAT.md # User acceptance test results +├── quick/ # Quick task tracking +│ └── YYMMDD-xxx-slug/ +│ ├── PLAN.md +│ └── SUMMARY.md +├── todos/ +│ ├── pending/ # Captured ideas +│ └── done/ # Completed todos +├── threads/ # Persistent context threads (from /gsd-thread) +├── seeds/ # Forward-looking ideas (from /gsd-capture --seed) +├── debug/ # Active debug sessions +│ ├── *.md # Active sessions +│ ├── resolved/ # Archived sessions +│ └── knowledge-base.md # Persistent debug learnings +├── ui-reviews/ # Screenshots from /gsd-ui-review (gitignored) +└── continue-here.md # Context handoff (from pause-work) +``` + +### 执行后代码库漂移关卡(#2003) + +在 `/gsd-execute-phase` 最后一个波次提交后,工作流运行一个非阻塞性的 `codebase_drift_gate` 步骤(位于 `schema_drift_gate` 和 `verify_phase_goal` 之间)。它将 diff `last_mapped_commit..HEAD` 与 `.planning/codebase/STRUCTURE.md` 进行对比,并统计四类结构性元素: + +1. 映射路径之外的新目录 +2. `(packages|apps)//src/index.*` 处的新桶形导出 +3. 新迁移文件 +4. `routes/` 或 `api/` 下的新路由模块 + +若数量达到 `workflow.drift_threshold`(默认为 3),关卡将**警告**(默认)并显示建议的 `/gsd-map-codebase --paths …` 命令,或**自动重新映射**(`workflow.drift_action = auto-remap`),方法是派生 `gsd-codebase-mapper` 并将其范围限定为受影响的路径。检测或重新映射过程中的任何错误都会被记录,阶段继续执行——漂移检测不会导致验证失败。 + +`last_mapped_commit` 存储在每个 `.planning/codebase/*.md` 文件顶部的 YAML 前置元数据中;`bin/lib/drift.cjs` 提供 `readMappedCommit` 和 `writeMappedCommit` 往返辅助函数。 + +--- + +## 安装程序架构 + +安装程序(`bin/install.js`,约 10,700 行)处理以下事项: + +1. **运行时检测** — 交互式提示或 CLI 标志(`--claude`、`--opencode`、`--gemini`、`--kilo`、`--codex`、`--copilot`、`--antigravity`、`--cursor`、`--windsurf`、`--augment`、`--trae`、`--qwen`、`--hermes`、`--codebuddy`、`--cline`、`--all`) +2. **位置选择** — 全局(`--global`)或本地(`--local`) +3. **文件部署** — 复制命令、技能、工作流、参考文档、模板、Agent 和 hook +4. **运行时适配** — 按运行时转换文件内容: + - Claude Code:原样使用 + - OpenCode:将命令/Agent 转换为 OpenCode 兼容的扁平命令 + 子 Agent 格式 + - Kilo:复用 OpenCode 转换流水线,使用 Kilo 配置路径 + - Codex:从命令生成 TOML 配置 + 技能 + - Copilot:映射工具名称(Read→read、Bash→execute 等) + - Gemini:调整 hook 事件名称(`AfterTool` 而非 `PostToolUse`) + - Antigravity:以技能为主,使用 Google 模型等效项 + - Cursor:以技能为主,带 Cursor 规则引用 + - Windsurf:以技能为主,带 Windsurf 规则引用 + - Trae:以技能为主安装到 `~/.trae` / `./.trae`,不含 `settings.json` 或 hook 集成 + - Qwen Code:以技能为主,带 Qwen 品牌路径和提示词重写 + - Hermes Agent:在 `skills/gsd/` 下按类别分组的技能 + - CodeBuddy:以技能为主,带 CodeBuddy 路径和提示词重写 + - Cline:为基于规则的集成写入 `.clinerules` + - Augment Code:以技能为主,完整技能转换和配置管理 +5. **路径规范化** — 将 `~/.claude/` 路径替换为特定运行时路径 +6. **设置集成** — 在运行时的 `settings.json` 中注册 hook +7. **补丁备份** — 自 v1.17 起,将本地修改的文件备份到 `gsd-local-patches/`,供 `/gsd-update --reapply` 使用 +8. **清单跟踪** — 写入 `gsd-file-manifest.json` 以支持干净卸载 +9. **卸载模式** — `--uninstall` 移除所有 GSD 文件、hook 和设置 + +安装时的文件移动、陈旧产物清理、配置重写和用户数据保留由安装程序迁移模块管理。请参阅[安装程序迁移](../installer-migrations.md)和 [ADR 0008](../adr/0008-installer-migration-module.md)。迁移模块还负责对旧版安装进行带关卡的首次基线扫描,在后续迁移移除或重写任何内容之前,对已知的运行时安装界面进行分类。 + +计划漂移防护(`plan_review.source_grounding`)——在执行前验证生成计划中的符号引用是否与实时源代码匹配——详见 [ADR 22](../adr/22-plan-drift-guard.md)。 + +### 平台处理 + +- **Windows:** 在子进程上设置 `windowsHide`,对受保护目录进行 EPERM/EACCES 保护,路径分隔符规范化 +- **WSL:** 检测在 WSL 上运行的 Windows Node.js 并警告路径不匹配 +- **Docker/CI:** 支持 `CLAUDE_CONFIG_DIR` 环境变量,用于自定义配置目录位置 + +--- + +## Hook 系统 + +### 架构 + +``` +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) +``` + +### 上下文监控阈值 + + +| 剩余上下文 | 级别 | Agent 行为 | +| --------- | -------- | ----------------------------------------- | +| > 35% | 正常 | 不注入警告 | +| ≤ 35% | 警告 | "避免开始新的复杂工作" | +| ≤ 25% | 严重 | "上下文即将耗尽,请告知用户" | + + +防抖:每次重复警告之间间隔 5 次工具使用。严重性升级(WARNING→CRITICAL)绕过防抖。 + +### 安全属性 + +- 所有 hook 包裹在 try/catch 中,出错时静默退出 +- stdin 超时防护(3 秒),防止管道问题导致挂起 +- 忽略陈旧指标(超过 60 秒) +- 优雅处理缺失的桥接文件(子 Agent、新会话) +- 上下文监控器为建议性——不发出覆盖用户偏好的命令式指令 + +### 软件包合法性关卡(v1.42.1) + +研究者 → 规划者 → 执行者流水线包含一个针对 slopsquatting(AI 幻觉软件包名称被预先注册并附带恶意安装后脚本)的供应链关卡。 + +**威胁模型:** GSD 将从"研究者命名一个软件包"到"执行者运行 `npm install`"的完整路径自动化。一个通过 `npm view`(仅证明已注册,而非合法性)的幻觉名称此前可能未被检测到而流入。约 20% 的 AI 生成软件包引用是幻觉;其中约 43% 的名称在不同提示词中反复出现,使攻击者的预先注册在经济上可行。 + +**关卡层次:** + +| 层次 | 组件 | 操作 | +|-------|-----------|--------| +| 研究 | `gsd-phase-researcher` | 运行 `slopcheck install --json`;向 RESEARCH.md 写入 `## Package Legitimacy Audit` 表格;在写入 RESEARCH.md 之前剥离 `[SLOP]` 软件包 | +| 规划 | `gsd-planner` | 读取审计表;在任何 `[ASSUMED]` 或 `[SUS]` 安装任务之前插入 `checkpoint:human-verify`;向 `` 添加 `T-{phase}-SC` STRIDE 供应链行 | +| 执行 | `gsd-executor` | 规则 3 将软件包安装排除在自动修复范围之外;失败的安装以检查点形式呈现,而非静默替换 | + +**声明溯源集成:** 通过 WebSearch 发现的软件包名称被标记为 `[ASSUMED]`(而非 `[VERIFIED]`),无论 `npm view` 结果如何。这通过在安装边界将溯源标签强制执行为硬关卡,扩展了现有的 `[ASSUMED]` / `[VERIFIED]` / `[CITED]` 溯源系统——`[ASSUMED]` 始终在 PLAN.md 中生成 `checkpoint:human-verify`。 + +**生态系统覆盖:** 研究者使用特定于注册表的验证命令——`npm view`(Node)、`pip index versions`(Python)、`cargo search`(Rust)——而非单一通用检查。这能捕获跨生态系统幻觉(2025 年 USENIX 研究记录的发生率约为 9%)。 + +**优雅降级:** 若 `slopcheck` 不可用,每个推荐软件包都被标记为 `[ASSUMED]` 并通过检查点设置关卡。研究和规划继续进行;系统不会因缺少工具依赖而硬性失败。 + +**外部依赖:** `slopcheck`(MIT 协议,可通过 pip 安装)。若被废弃,`[ASSUMED]` 关卡回退机制维持人工检查点覆盖。 + +--- + +### 安全 Hook(v1.27) + +有关 hook 和防护层如何融入更广泛安全方法的概念概述,请参阅[安全模型](explanation/security-model.md)。 + +**提示词防护**(`gsd-prompt-guard.js`): + +- 触发于对 `.planning/` 文件的 Write/Edit +- 扫描内容中的提示词注入模式(角色覆盖、指令绕过、系统标签注入) +- 仅建议性——记录检测结果,不阻止操作 +- 模式已内联(`security.cjs` 的子集),以实现 hook 独立性 + +**工作流防护**(`gsd-workflow-guard.js`): + +- 触发于对非 `.planning/` 文件的 Write/Edit +- 检测 GSD 工作流上下文之外的编辑(无活动的 `/gsd-` 命令或任务子 Agent) +- 建议使用 `/gsd-quick` 或 `/gsd-fast` 进行状态跟踪的变更 +- 通过 `hooks.workflow_guard: true` 选择启用(默认:false) + +--- + +## 运行时抽象 + +GSD 通过统一的命令/工作流架构支持多种 AI 编码运行时: + +### 运行时安装契约矩阵 + +此矩阵描述安装程序当前实现的运行时界面。迁移特定的所有权和源代码快照位于[安装程序迁移](../installer-migrations.md#runtime-configuration-contract-registry)中。 + +| 运行时 | 全局根目录 | 本地根目录 | 调用界面 | Agent 界面 | 配置与 hook | +| --- | --- | --- | --- | --- | --- | +| Claude Code | `~/.claude` | `./.claude` | 全局 `skills/gsd-*/SKILL.md`;本地 `commands/gsd/*.md` | `agents/gsd-*.md` | `settings.json` hook 和 statusLine 条目 | +| OpenCode | `~/.config/opencode` | `./.opencode` | `command/gsd-*.md` | `agents/gsd-*.md` | `opencode.json` 或 `opencode.jsonc`;无 GSD hook | +| Kilo | `~/.config/kilo` | `./.kilo` | `command/gsd-*.md` | `agents/gsd-*.md` | `kilo.json` 或 `kilo.jsonc`;无 GSD hook | +| Gemini CLI | `~/.gemini` | `./.gemini` | `commands/gsd/*.toml` | `agents/gsd-*.md` | `settings.json` 功能标志、hook 和 statusline | +| Codex | `~/.codex` | `./.codex` | `skills/gsd-*/SKILL.md` | `agents/` 源 markdown 加每个 Agent 的 TOML | `config.toml` `[agents.gsd-*]`、`[features].hooks`(规范;遗留别名 `codex_hooks` 在重新安装时被识别并迁移到新版本,#3566)以及 hook 表 | +| GitHub Copilot | `~/.copilot` | `./.github` | `skills/gsd-*/SKILL.md` 和 `copilot-instructions.md` | `.agent.md` 文件 | 无 GSD hook 或 statusline | +| Antigravity | 自动检测:`~/.gemini/antigravity`、`~/.gemini/antigravity-ide` 或 `~/.gemini/antigravity-cli` | `./.agent` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | GSD 安装时的 Gemini 风格 `settings.json` hook 条目 | +| Cursor | `~/.cursor` | `./.cursor` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | `rules/` 下的规则引用;无 GSD hook | +| Windsurf | `~/.codeium/windsurf` | `./.windsurf` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | `rules/` 下的规则引用;无 GSD hook | +| Augment Code | `~/.augment` | `./.augment` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | 无 GSD hook 或 statusline | +| Trae | `~/.trae` | `./.trae` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | `rules/` 下的规则引用;无 GSD hook | +| Qwen Code | `~/.qwen` | `./.qwen` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | 通用 GSD 设置及在支持时的 hook 条目 | +| Hermes Agent | `~/.hermes` | `./.hermes` | `skills/gsd/DESCRIPTION.md` 加 `skills/gsd/gsd-*/SKILL.md` | `agents/gsd-*.md` | 通用 GSD 设置及在支持时的 hook 条目 | +| CodeBuddy | `~/.codebuddy` | `./.codebuddy` | `skills/gsd-*/SKILL.md` | `agents/gsd-*.md` | 通用 GSD 设置及在支持时的 hook 条目 | +| Cline | `~/.cline` | 项目根目录 | `.clinerules` | 仅规则 | 无 GSD hook 或 statusline | + +### 上游契约来源 + +运行时安装预期在可用时对照主要文档进行检查。当前源代码快照为 2026-05-11: + +- Claude Code:Anthropic 斜线命令、设置、hook 和子 Agent 文档。 +- OpenCode 和 Kilo:OpenCode 配置文档和 Kilo 自定义子 Agent 文档。 +- Gemini CLI 和 Qwen Code:命令/配置文档;Qwen 命令文档最后更新于 2026-05-06。 +- Codex:OpenAI Codex 文档和 `config-schema.json`;安装程序还支持 Codex 0.124.0 的 Agent 表格格式兼容性。 +- Copilot、Cursor、Cline、Augment、Hermes 和 CodeBuddy:自定义指令、规则、技能或配置的供应商文档。 +- Antigravity、Windsurf 和 Trae:来源有限的行。安装程序记录了当前的兼容性垫片,迁移前必须刷新这些来源后再重写其配置。 + +### 抽象点 + +1. **工具名称映射** — 每个运行时有其自己的工具名称(例如 Claude 的 `Bash` → Copilot 的 `execute`) +2. **Hook 事件名称** — Claude 使用 `PostToolUse`,Gemini 使用 `AfterTool` +3. **Agent 前置元数据** — 每个运行时有其自己的 Agent 定义格式 +4. **路径约定** — 每个运行时将配置存储在不同的目录中 +5. **模型引用** — `inherit` 配置文件让 GSD 推迟到运行时的模型选择 + +安装程序在安装时处理所有转换。工作流和 Agent 以 Claude Code 的原生格式编写,并在部署期间进行转换。 + +--- + +## 相关文档 + +- [多 Agent 编排](explanation/multi-agent-orchestration.md) +- [安全模型](explanation/security-model.md) +- [CLI 工具](CLI-TOOLS.md) +- [文档索引](README.md) diff --git a/docs/zh-CN/CLI-TOOLS.md b/docs/zh-CN/CLI-TOOLS.md new file mode 100644 index 000000000..dc6dc6e01 --- /dev/null +++ b/docs/zh-CN/CLI-TOOLS.md @@ -0,0 +1,499 @@ +# GSD CLI 工具参考 + +> `gsd-tools` CLI(`get-shit-done/bin/gsd-tools.cjs`)参考文档。斜杠命令与用户流程请参见[命令参考](COMMANDS.md)。返回[文档索引](README.md)。 + +--- + +## 概述 + +`gsd-tools.cjs` 集中处理配置解析、模型解析、阶段查找、Git 提交、摘要验证、状态管理以及模板操作,供 GSD 命令、工作流和代理使用。 + + +| | | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **发布路径** | `get-shit-done/bin/gsd-tools.cjs` | +| **实现** | `get-shit-done/bin/lib/` 下的 20 个领域模块(以该目录为准) | +| **状态** | 编排、工作流和自动化的主要运行时命令接口。 | + + +**用法(CJS):** + +```bash +node gsd-tools.cjs [args] [--raw] [--cwd ] +``` + +**全局标志(CJS):** + + +| 标志 | 说明 | +| -------------- | ---------------------------------------------------------------------------- | +| `--raw` | 机器可读输出(JSON 或纯文本,无格式) | +| `--cwd ` | 覆盖工作目录(用于沙箱子代理) | +| `--ws ` | `.planning/workstreams/` 路径的工作流上下文 | + + +--- + +## 状态命令 + +管理 `.planning/STATE.md`——项目的活动记忆。 + +```bash +# 以 JSON 格式加载完整项目配置和状态 +node gsd-tools.cjs state load + +# 以 JSON 格式输出 STATE.md frontmatter +node gsd-tools.cjs state json + +# 更新单个字段 +node gsd-tools.cjs state update + +# 获取 STATE.md 内容或特定章节 +node gsd-tools.cjs state get [section] + +# 批量更新多个字段 +node gsd-tools.cjs state patch --field1 val1 --field2 val2 + +# 递增计划计数器 +node gsd-tools.cjs state advance-plan + +# 记录执行指标 +node gsd-tools.cjs state record-metric --phase N --plan M --duration Xmin [--tasks N] [--files N] + +# 重新计算进度条 +node gsd-tools.cjs state update-progress + +# 添加决策 +node gsd-tools.cjs state add-decision --summary "..." [--phase N] [--rationale "..."] +# 或从文件读取: +node gsd-tools.cjs state add-decision --summary-file path [--rationale-file path] + +# 添加/解决阻塞项 +node gsd-tools.cjs state add-blocker --text "..." +node gsd-tools.cjs state resolve-blocker --text "..." + +# 记录会话连续性 +node gsd-tools.cjs state record-session --stopped-at "..." [--resume-file path] + +# 阶段开始——为新阶段更新 STATE.md 的状态/最后活动 +node gsd-tools.cjs state begin-phase --phase N --name SLUG --plans COUNT + +# 代理可发现的阻塞信号(由 discuss-phase / UI 流程使用) +node gsd-tools.cjs state signal-waiting --type TYPE --question "..." --options "A|B" --phase P +node gsd-tools.cjs state signal-resume +``` + +### 状态快照 + +对完整 STATE.md 进行结构化解析: + +```bash +node gsd-tools.cjs state-snapshot +``` + +返回 JSON,包含:当前位置、阶段、计划、状态、决策、阻塞项、指标、最后活动。 + +--- + +## 阶段命令 + +管理阶段——目录、编号和路线图同步。 + +```bash +# 按编号查找阶段目录 +node gsd-tools.cjs find-phase + +# 计算插入用的下一个小数阶段编号 +node gsd-tools.cjs phase next-decimal + +# 向路线图追加新阶段并创建目录 +node gsd-tools.cjs phase add + +# 在现有阶段后插入小数阶段 +node gsd-tools.cjs phase insert + +# 移除阶段,对后续阶段重新编号 +node gsd-tools.cjs phase remove [--force] + +# 标记阶段完成,更新状态和路线图 +node gsd-tools.cjs phase complete + +# 按波次和状态索引计划 +node gsd-tools.cjs phase-plan-index + +# 列出阶段并过滤 +node gsd-tools.cjs phases list [--type planned|executed|all] [--phase N] [--include-archived] +``` + +--- + +## 路线图命令 + +解析和更新 `ROADMAP.md`。 + +```bash +# 从 ROADMAP.md 提取阶段章节 +node gsd-tools.cjs roadmap get-phase + +# 带磁盘状态的完整路线图解析 +node gsd-tools.cjs roadmap analyze + +# 从磁盘更新进度表行 +node gsd-tools.cjs roadmap update-plan-progress +``` + +--- + +## 配置命令 + +读写 `.planning/config.json`。 + +```bash +# 以默认值初始化 config.json +node gsd-tools.cjs config-ensure-section + +# 设置配置值(点号表示法) +node gsd-tools.cjs config-set + +# 获取配置值 +node gsd-tools.cjs config-get + +# 设置模型配置文件 +node gsd-tools.cjs config-set-model-profile +``` + +--- + +## 模型解析 + +```bash +# 根据当前配置文件获取代理使用的模型 +node gsd-tools.cjs resolve-model +# 原始输出返回所选模型 ID/层级。 +# JSON 输出还包括配置文件,以及当活跃运行时支持时的 +# reasoning_effort。 +``` + +代理名称:`gsd-planner`、`gsd-executor`、`gsd-phase-researcher`、`gsd-project-researcher`、`gsd-research-synthesizer`、`gsd-verifier`、`gsd-plan-checker`、`gsd-integration-checker`、`gsd-roadmapper`、`gsd-debugger`、`gsd-codebase-mapper`、`gsd-nyquist-auditor` + +--- + +## 验证命令 + +验证计划、阶段、引用和提交。 + +```bash +# 验证 SUMMARY.md 文件 +node gsd-tools.cjs verify-summary [--check-count N] + +# 检查 PLAN.md 结构和任务 +node gsd-tools.cjs verify plan-structure + +# 检查所有计划是否有摘要 +node gsd-tools.cjs verify phase-completeness + +# 检查 @-引用和路径是否可解析 +node gsd-tools.cjs verify references + +# 批量验证提交哈希 +node gsd-tools.cjs verify commits [hash2] ... + +# 检查 must_haves.artifacts +node gsd-tools.cjs verify artifacts + +# 检查 must_haves.key_links +node gsd-tools.cjs verify key-links +``` + +--- + +## 校验命令 + +检查项目完整性。 + +```bash +# 检查阶段编号、磁盘/路线图同步 +node gsd-tools.cjs validate consistency + +# 检查 .planning/ 完整性,可选修复 +node gsd-tools.cjs validate health [--repair] + +# 探测上下文窗口利用率(用于状态行/钩子调用方)(v1.40.0) +node gsd-tools.cjs validate context + +# 以类型化 JSON 接口输出上下文利用率(#455) +node gsd-tools.cjs validate context --json +``` + +`validate context` 输出包含 `utilization`、`status`(在 60% / 70% 阈值处分别为 `ok` / `warn` / `critical`)以及 `suggestion` 字符串的结构化信封。相同数据支撑 `/gsd-health --context`。 +传入 `--json` 可直接接收类型化中间表示(适用于脚本和测试断言)。 + +--- + +## 模板命令 + +模板选择与填充。 + +```bash +# 根据粒度选择摘要模板 +node gsd-tools.cjs template select + +# 用变量填充模板 +node gsd-tools.cjs template fill --phase N [--plan M] [--name "..."] [--type execute|tdd] [--wave N] [--fields '{json}'] +``` + +`fill` 的模板类型:`summary`、`plan`、`verification` + +--- + +## Frontmatter 命令 + +对任意 Markdown 文件执行 YAML frontmatter 的增删改查。 + +```bash +# 以 JSON 格式提取 frontmatter +node gsd-tools.cjs frontmatter get [--field key] + +# 更新单个字段 +node gsd-tools.cjs frontmatter set --field key --value jsonVal + +# 将 JSON 合并到 frontmatter +node gsd-tools.cjs frontmatter merge --data '{json}' + +# 验证必填字段 +node gsd-tools.cjs frontmatter validate --schema plan|summary|verification +``` + +--- + +## 脚手架命令 + +创建预结构化文件和目录。 + +```bash +# 创建 CONTEXT.md 模板 +node gsd-tools.cjs scaffold context --phase N + +# 创建 UAT.md 模板 +node gsd-tools.cjs scaffold uat --phase N + +# 创建 VERIFICATION.md 模板 +node gsd-tools.cjs scaffold verification --phase N + +# 创建阶段目录 +node gsd-tools.cjs scaffold phase-dir --phase N --name "phase name" +``` + +--- + +## Init 命令(复合上下文加载) + +通过单次调用加载特定工作流所需的所有上下文。返回包含项目信息、配置、状态和工作流专属数据的 JSON。 + +```bash +node gsd-tools.cjs init execute-phase +node gsd-tools.cjs init plan-phase +node gsd-tools.cjs init new-project +node gsd-tools.cjs init new-milestone +node gsd-tools.cjs init quick +node gsd-tools.cjs init resume +node gsd-tools.cjs init verify-work +node gsd-tools.cjs init phase-op +node gsd-tools.cjs init todos [area] +node gsd-tools.cjs init milestone-op +node gsd-tools.cjs init map-codebase +node gsd-tools.cjs init progress + +# 工作流范围的 init(`--ws` 标志) +node gsd-tools.cjs init execute-phase --ws +node gsd-tools.cjs init plan-phase --ws +``` + +**大载荷处理:** 当输出超过约 50KB 时,CLI 会将内容写入临时文件并返回 `@file:/tmp/gsd-init-XXXXX.json`。工作流检查 `@file:` 前缀并从磁盘读取: + +```bash +INIT=$(node gsd-tools.cjs init execute-phase "1") +if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi +``` + +--- + +## 里程碑命令 + +```bash +# 归档里程碑 +node gsd-tools.cjs milestone complete [--name ] [--archive-phases] + +# 将需求标记为完成 +node gsd-tools.cjs requirements mark-complete +# 接受格式:REQ-01,REQ-02 或 REQ-01 REQ-02 或 [REQ-01, REQ-02] +``` + +--- + +## 代理技能 + +输出指定代理类型的技能块。 + +```bash +# 输出原始 XML 技能块(默认——适合 shell 展开) +node gsd-tools.cjs agent-skills + +# 输出类型化 JSON 接口(#455)——{ agent_type, block, skills_count } +node gsd-tools.cjs agent-skills --json +``` + +`--json` 标志返回适合结构化消费和测试断言的类型化中间表示对象,而默认(无标志)保留工作流 shell 展开所依赖的原始 XML 输出。 + +--- + +## 技能清单 + +预计算并缓存技能发现结果,以加快命令加载速度。 + +```bash +# 生成技能清单(写入 .claude/skill-manifest.json) +node gsd-tools.cjs skill-manifest + +# 生成并指定自定义输出路径 +node gsd-tools.cjs skill-manifest --output +``` + +返回所有可用 GSD 技能的 JSON 映射,包含其元数据(名称、描述、文件路径、参数提示)。由安装程序和会话启动钩子使用,以避免重复的文件系统扫描。 + +--- + +## 工具命令 + +```bash +# 将文本转换为 URL 安全的 slug +node gsd-tools.cjs generate-slug "Some Text Here" +# → some-text-here + +# 获取时间戳 +node gsd-tools.cjs current-timestamp [full|date|filename] + +# 统计并列出待办事项 +node gsd-tools.cjs list-todos [area] + +# 检查文件/目录是否存在 +node gsd-tools.cjs verify-path-exists + +# 聚合所有 SUMMARY.md 数据 +node gsd-tools.cjs history-digest + +# 从 SUMMARY.md 提取结构化数据 +node gsd-tools.cjs summary-extract [--fields field1,field2] + +# 项目统计 +node gsd-tools.cjs stats [json|table] + +# 进度渲染(人类可读) +node gsd-tools.cjs progress [json|table|bar] + +# 以类型化 JSON 接口输出进度(#455) +node gsd-tools.cjs progress --json + +# 完成待办事项 +node gsd-tools.cjs todo complete + +# UAT 审计——扫描所有阶段的未解决事项 +node gsd-tools.cjs audit-uat + +# 跨制品审计队列——扫描 `.planning/` 中未解决的审计事项 +node gsd-tools.cjs audit-open [--json] + +# 将 GSD-2 项目反向迁移到当前结构(支撑 `/gsd-import --from-gsd2`) +node gsd-tools.cjs from-gsd2 [--path ] [--force] [--dry-run] + +# 带配置检查的 Git 提交 +node gsd-tools.cjs commit [--files f1 f2] [--amend] [--no-verify] [--respect-staged] +``` + +> `--no-verify`:跳过预提交钩子。由并行执行器代理在基于波次的执行过程中使用,以避免构建锁争用(例如 Rust 项目中的 cargo lock 冲突)。编排器在每个波次完成后运行一次钩子。顺序执行时不要使用 `--no-verify`——让钩子正常运行。 +> `--files ` **暂存行为**:默认情况下,`--files` 在提交前对每个命名文件运行 `git add -- `。这会覆盖通过 `git add -p` 设置的任何按块暂存。传入 `--respect-staged` 可跳过 `git add` 步骤,仅提交已在索引中且在请求路径规格内的内容。如果该范围内没有已暂存的内容,命令将返回 `{ committed: false, reason: 'nothing staged' }` 而不报错。两种模式下提交都会附加 `-- ` 路径规格,因此 `--files` 范围之外已暂存的文件永远不会被包含(#3061 不变量)。 + +# 网页搜索(需要 Brave API 密钥) +node gsd-tools.cjs websearch [--limit N] [--freshness day|week|month] +``` + +--- + +## Graphify + +在 `.planning/graphs/` 中构建、查询和检查项目知识图谱。需要在 `config.json` 中设置 `graphify.enabled: true`(参见[配置参考](CONFIGURATION.md#graphify-settings))。 + +```bash +# 构建或重建知识图谱 +node gsd-tools.cjs graphify build + +# 在图谱中搜索某个词 +node gsd-tools.cjs graphify query + +# 显示图谱新鲜度和统计数据 +node gsd-tools.cjs graphify status + +# 显示自上次构建以来的变更 +node gsd-tools.cjs graphify diff + +# 写入当前图谱的命名快照 +node gsd-tools.cjs graphify snapshot [name] +``` + +用户入口:`/gsd-graphify`(参见[命令参考](COMMANDS.md#gsd-graphify))。 + +--- + +## 模块架构 + +| 模块 | 文件 | 导出 | +|--------|------|---------| +| 核心 | `lib/core.cjs` | `error()`、`output()`、`parseArgs()`、共享工具、兼容性重导出 | +| 状态 | `lib/state.cjs` | 所有 `state` 子命令、`state-snapshot` | +| 阶段 | `lib/phase.cjs` | 阶段增删改查、`find-phase`、`phase-plan-index`、`phases list` | +| 规划工作区 | `lib/planning-workspace.cjs` | 规划接缝:`planningDir`、`planningPaths`、活跃工作流路由、`.planning/.lock` | +| 路线图 | `lib/roadmap.cjs` | 路线图解析、阶段提取、进度更新 | +| 配置 | `lib/config.cjs` | 配置读写、章节初始化 | +| 验证 | `lib/verify.cjs` | 所有验证和校验命令 | +| 模板 | `lib/template.cjs` | 模板选择和变量填充 | +| Frontmatter | `lib/frontmatter.cjs` | YAML frontmatter 增删改查 | +| Init | `lib/init.cjs` | 所有工作流的复合上下文加载 | +| 里程碑 | `lib/milestone.cjs` | 里程碑归档、需求标记 | +| 命令 | `lib/commands.cjs` | 杂项:slug、时间戳、待办事项、脚手架、统计、网页搜索 | +| 模型配置文件 | `lib/model-profiles.cjs` | 配置文件解析表 | +| UAT | `lib/uat.cjs` | 跨阶段 UAT/验证审计 | +| 配置文件输出 | `lib/profile-output.cjs` | 开发者配置文件格式化 | +| 配置文件流水线 | `lib/profile-pipeline.cjs` | 会话分析流水线 | +| Graphify | `lib/graphify.cjs` | 知识图谱构建/查询/状态/差异/快照(支撑 `/gsd-graphify`) | +| 学习记录 | `lib/learnings.cjs` | 从阶段/SUMMARY 制品中提取学习记录(支撑 `/gsd-extract-learnings`) | +| 审计 | `lib/audit.cjs` | 阶段/里程碑审计队列处理器;`audit-open` 助手 | +| GSD2 导入 | `lib/gsd2-import.cjs` | 从 GSD-2 项目反向迁移导入(支撑 `/gsd-import --from-gsd2`) | +| Intel | `lib/intel.cjs` | 可查询的代码库智能索引(支撑 `/gsd-map-codebase --query`) | + +--- + +## 审阅器 CLI 路由 + +`review.models.` 将审阅器类型映射到代码审查工作流调用的 shell 命令。通过 [`/gsd-config --integrations`](COMMANDS.md#gsd-config) 或直接设置: + +```bash +node gsd-tools.cjs config-set review.models.codex "codex exec --model gpt-5" +node gsd-tools.cjs config-set review.models.gemini "gemini -m gemini-2.5-pro" +node gsd-tools.cjs config-set review.models.opencode "opencode run --model claude-sonnet-4" +node gsd-tools.cjs config-set review.models.claude "" # 清除——回退到会话模型 +``` + +Slug 将针对 `[a-zA-Z0-9_-]+` 进行验证;空或包含路径的 slug 将被拒绝。完整字段参考请参见 [`docs/CONFIGURATION.md`](CONFIGURATION.md#code-review-cli-routing)。 + +## 密钥处理 + +通过 `/gsd-settings` 配置的 API 密钥(`brave_search`、`firecrawl`、`exa_search`)以明文形式写入 `.planning/config.json`,但在所有 `config-set` / `config-get` 输出、确认表格和交互式提示中均会被遮蔽(`****`)。遮蔽实现请参见 `get-shit-done/bin/lib/secrets.cjs`。`config.json` 文件本身是安全边界——请通过文件系统权限保护它,并将其排除在 git 之外(`.planning/` 默认已被 gitignore)。 + +--- + +## 相关文档 + +- [命令](COMMANDS.md) +- [配置](CONFIGURATION.md) +- [架构](ARCHITECTURE.md) +- [文档索引](README.md) diff --git a/docs/zh-CN/COMMANDS.md b/docs/zh-CN/COMMANDS.md new file mode 100644 index 000000000..aa187089c --- /dev/null +++ b/docs/zh-CN/COMMANDS.md @@ -0,0 +1,1521 @@ +# GSD Core 命令参考 + +> GSD Core 命令参考手册 — 所有稳定命令的语法、标志、选项及示例。功能详情请参阅[功能参考](FEATURES.md);工作流程演示请参阅[用户指南](USER-GUIDE.md);文档索引请参阅 [README](README.md)。 + +--- + +## 命令语法 + +- **Claude Code / Copilot / OpenCode / Kilo:** `/gsd-command-name [args]`(连字符形式) +- **Gemini CLI:** `/gsd:command-name [args]`(冒号形式 — Gemini 将命令置于 `gsd:` 命名空间下) +- **Codex:** `$gsd-command-name [args]` + +连字符形式与冒号形式是*同一命令在不同运行时中的拼写方式*。无论使用哪种运行时,安装程序都会将正确的形式写入该运行时的命令目录。 + +--- + +## 命名空间元技能 + +v1.40 中,六个命名空间路由器作为第一阶段入口点随附发布。与平铺式 86 个技能列表(约 2150 个 token)相比,它们将预加载技能列表的 token 开销保持在较低水平(6 个路由器约 120 个 token),同时完整功能仍可直接调用。模型先选择命名空间,再路由到具体子技能。详见 [#2792](https://github.com/open-gsd/gsd-core/issues/2792)。 + +| 命令 | 路由至 | +|---------|-----------| +| `/gsd-workflow` | 阶段流水线 — discuss / plan / execute / verify / phase / progress | +| `/gsd-project` | 项目生命周期 — 里程碑、审计、摘要 | +| `/gsd-quality` | 质量关卡 — 代码审查、调试、审计、安全、评估、界面 | +| `/gsd-context` | 代码库智能 — 映射、图谱、文档、学习记录 | +| `/gsd-manage` | 管理 — 配置、工作区、工作流、线程、更新、发布、收件箱 | +| `/gsd-ideate` | 探索与捕捉 — 探索、草图、实验、规格、捕捉 | + +命名空间技能是**叠加式**的 — 每个现有的具体命令(例如 `/gsd-plan-phase`、`/gsd-code-review --fix`)仍可直接调用。 + +--- + +## 核心工作流命令 + +### `/gsd-new-project` + +通过深度上下文收集初始化新项目。 + +| 标志 | 描述 | +|------|-------------| +| `--auto @file.md` | 从文档中自动提取,跳过交互式问题 | + +**前提条件:** 不存在 `.planning/PROJECT.md` +**产出:** `PROJECT.md`、`REQUIREMENTS.md`、`ROADMAP.md`、`STATE.md`、`config.json`、`research/`、`CLAUDE.md` + +```bash +/gsd-new-project # 交互模式 +/gsd-new-project --auto @prd.md # 从 PRD 自动提取 +``` + +--- + +### `/gsd-workspace` + +管理 GSD 工作区 — 创建、列出或移除隔离的工作区环境,包含仓库副本和独立的 `.planning/` 目录。 + +| 标志 | 描述 | +|------|-------------| +| `--new` | 创建新工作区(与 `--name`、`--repos` 等配合使用) | +| `--list` | 列出活动的 GSD 工作区及其状态 | +| `--remove ` | 移除工作区并清理 git 工作树 | +| `--name ` | 工作区名称(与 `--new` 配合使用) | +| `--repos repo1,repo2` | 逗号分隔的仓库路径或名称(与 `--new` 配合使用) | +| `--path /target` | 目标目录(默认:`~/gsd-workspaces/`) | +| `--strategy worktree\|clone` | 复制策略(默认:`worktree`) | +| `--branch ` | 要检出的分支(默认:`workspace/`) | +| `--auto` | 跳过交互式问题 | + +**使用场景:** +- 多仓库:在隔离的 GSD 状态下处理仓库子集 +- 功能隔离:`--repos .` 为当前仓库创建工作树 + +**产出:** `WORKSPACE.md`、`.planning/`、仓库副本(工作树或克隆) + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI +/gsd-workspace --new --name feature-b --repos . --strategy worktree # 同仓库隔离 +/gsd-workspace --list +/gsd-workspace --remove feature-b +``` + +--- + +### `/gsd-discuss-phase` + +在规划前通过自适应提问收集阶段上下文。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | 否 | 阶段编号(默认为当前阶段) | + +| 标志 | 描述 | +|------|-------------| +| `--all` | 跳过领域选择 — 交互式讨论所有灰色地带(不自动推进) | +| `--auto` | 自动为所有问题选择推荐的默认值 | +| `--batch` | 将问题分组批量输入,而非逐条处理 | +| `--analyze` | 在讨论期间添加权衡分析 | +| `--power` | 基于文件的批量问题解答,从预先准备的答案文件中读取 | +| `--assumptions` | 无需交互会话,直接呈现 Claude 对该阶段实现的假设 | + +**前提条件:** `.planning/ROADMAP.md` 已存在 +**产出:** `{phase}-CONTEXT.md`、`{phase}-DISCUSSION-LOG.md`(审计追踪) + +```bash +/gsd-discuss-phase 1 # 阶段 1 的交互式讨论 +/gsd-discuss-phase 1 --all # 不经选择步骤讨论所有灰色地带 +/gsd-discuss-phase 3 --auto # 自动为阶段 3 选择默认值 +/gsd-discuss-phase --batch # 当前阶段的批量模式 +/gsd-discuss-phase 2 --analyze # 含权衡分析的讨论 +/gsd-discuss-phase 1 --power # 从文件批量解答 +/gsd-discuss-phase 3 --assumptions # 在规划前呈现 Claude 的假设 +``` + +--- + +### `/gsd-ui-phase` + +为前端阶段生成 UI 设计契约。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | 否 | 阶段编号(默认为当前阶段) | + +**前提条件:** `.planning/ROADMAP.md` 已存在,该阶段包含前端/UI 工作 +**产出:** `{phase}-UI-SPEC.md` + +```bash +/gsd-ui-phase 2 # 阶段 2 的设计契约 +``` + +--- + +### `/gsd-plan-phase` + +研究、规划并验证一个阶段。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | 否 | 阶段编号(默认为下一个未规划的阶段) | + +| 标志 | 描述 | +|------|-------------| +| `--auto` | 跳过交互式确认 | +| `--research` | 即使 RESEARCH.md 已存在也强制重新研究 | +| `--skip-research` | 跳过领域研究步骤 | +| `--research-phase ` | 仅研究模式:为阶段 `` 生成研究报告,写入 RESEARCH.md 后退出,不进入规划器。取代已删除的独立研究命令(#3042)。 | +| `--view` | 仅研究模式修饰符:与 `--research-phase` 配合使用时,将现有 RESEARCH.md 打印到标准输出并退出(不生成新报告)。RESEARCH.md 不存在时报错。 | +| `--gaps` | 差距闭合模式(读取 VERIFICATION.md,跳过研究) | +| `--skip-verify` | 跳过计划检查器验证循环 | +| `--prd ` | 使用 PRD 文件而非 discuss-phase 获取上下文 | +| `--ingest ` | 使用 ADR 文件代替 discuss-phase 进行上下文综合 | +| `--ingest-format ` | `--ingest` 的可选 ADR 解析器格式覆盖 | +| `--reviews` | 根据 REVIEWS.md 中的跨 AI 审查反馈重新规划 | +| `--validate` | 在规划开始前运行状态验证 | +| `--bounce` | 规划完成后运行外部计划弹回验证(使用 `workflow.plan_bounce_script`) | +| `--skip-bounce` | 即使配置中已启用也跳过计划弹回 | +| `--mvp` | 垂直 MVP 模式 — 规划器将任务组织为功能切片(UI→API→DB),而非水平分层。在无先前阶段摘要的新项目第 1 阶段使用时,还会生成 `SKELETON.md`(行走骨架)。可通过在 ROADMAP.md 中设置 `**Mode:** mvp` 持久化应用于某阶段,届时无需标志即可自动应用 `--mvp`。 | +| `--tdd` | TDD 模式 — 规划器对符合条件的行为添加任务应用 `type: tdd`,使每个任务以失败测试开始。可与 `--mvp` 组合:`--mvp --tdd` 产生每个行为添加任务以红-绿流程开始的垂直切片。 | + +**前提条件:** `.planning/ROADMAP.md` 已存在 +**产出:** `{phase}-RESEARCH.md`、`{phase}-{N}-PLAN.md`、`{phase}-VALIDATION.md`;行走骨架模式触发时产出 `{phase}/SKELETON.md` + +**仅研究模式(`--research-phase `):** +- 无修饰符:如果 RESEARCH.md 已存在,提示 `update / view / skip`。 +- 加 `--research`:强制刷新 — 无条件重新生成,不提示。 +- 加 `--view`:将现有 RESEARCH.md 打印到标准输出,不生成新报告。RESEARCH.md 不存在时报错。 + +**包合法性检查门(v1.42.1):** +当研究者推荐外部包时,会对每个包运行 `slopcheck install --json` 并在 RESEARCH.md 中写入 `## Package Legitimacy Audit` 表格,记录注册表、年龄、下载量、源码仓库和 slopcheck 裁决。裁决结果: + +- `[SLOP]` — 包从 RESEARCH.md 中完全移除,永远不会进入规划器 +- `[SUS]` — 包被标记;规划器在安装任务前插入 `checkpoint:human-verify` +- `[OK]` — 包已批准,不添加检查点 + +来自 WebSearch 的包被标记为 `[ASSUMED]`(而非 `[VERIFIED]`),处理方式与 `[SUS]` 相同 — 安装前需要人工检查点。如果无法安装 `slopcheck`,所有推荐的包都会被标记为 `[ASSUMED]` 并加以限制。 + +完整的检查点格式、裁决表和故障排除,请参阅[用户指南中的包合法性检查门](USER-GUIDE.md#package-legitimacy-gate-v1421)。 + +```bash +/gsd-plan-phase 1 # 研究 + 规划 + 验证阶段 1 +/gsd-plan-phase 3 --skip-research # 无需研究直接规划(熟悉的领域) +/gsd-plan-phase --auto # 非交互式规划 +/gsd-plan-phase 2 --validate # 规划前验证状态 +/gsd-plan-phase 1 --bounce # 规划 + 外部弹回验证 +/gsd-plan-phase 2 --ingest docs/adr/0010.md # 使用 ADR 快速通道进行上下文综合 +/gsd-plan-phase 2 --ingest 'docs/adr/00*.md' --ingest-format auto +/gsd-plan-phase --research-phase 4 # 仅研究阶段 4(RESEARCH.md 存在时提示) +/gsd-plan-phase --research-phase 4 --view # 打印现有 RESEARCH.md,不生成新报告 +/gsd-plan-phase --research-phase 4 --research # 强制刷新研究,不提示 +/gsd-plan-phase 1 --mvp # 阶段 1 的垂直切片规划 +/gsd-plan-phase 1 --mvp --tdd # 垂直切片 + 每个行为添加任务以失败测试开始 +``` + +--- + +### `/gsd-plan-review-convergence` + +跨 AI 计划收敛循环 — 根据审查反馈重新规划,直到没有 HIGH 级别问题为止。运行 `plan-phase → review → replan → re-review` 循环(默认最多 3 个循环)。为规划和审查生成隔离代理;编排器处理循环控制、HIGH 问题计数、停滞检测和升级。 + +| 参数 / 标志 | 必填 | 描述 | +|-----------------|----------|-------------| +| `N` | **是** | 要规划和审查的阶段编号 | +| `--codex` / `--gemini` / `--claude` / `--opencode` | 否 | 单一审查者选择 | +| `--all` | 否 | 并行运行所有已配置的审查者 | +| `--max-cycles N` | 否 | 覆盖循环上限(默认 3) | + +**退出行为:** HIGH 计数归零时循环退出。停滞检测在 HIGH 计数在各循环间未减少时发出警告。当达到 `--max-cycles` 且仍有 HIGH 问题未解决时,升级门询问用户是继续还是手动审查。 + +```bash +/gsd-plan-review-convergence 3 # 默认审查者,3 个循环 +/gsd-plan-review-convergence 3 --codex # 仅 Codex 审查 +/gsd-plan-review-convergence 3 --all --max-cycles 5 +``` + +--- + +### `/gsd-ultraplan-phase` + +**[测试版]** 将阶段规划卸载到 Claude Code 的 ultraplan 云端;在浏览器中审查并导入回来。计划在远程起草,终端保持空闲;在浏览器中审查内联评论,然后通过 `/gsd-import` 将最终计划导入 `.planning/`。 + +| 标志 | 必填 | 描述 | +|------|----------|-------------| +| `N` | **是** | 要远程规划的阶段编号 | + +**隔离性:** 有意与 `/gsd-plan-phase` 分开,以防上游 ultraplan 变更影响核心规划流水线。 + +```bash +/gsd-ultraplan-phase 4 # 卸载阶段 4 的规划 +``` + +--- + +### `/gsd-execute-phase` + +通过基于波次的并行化执行阶段中的所有计划,或运行特定波次。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | **是** | 要执行的阶段编号 | +| `--wave N` | 否 | 仅执行阶段中的第 `N` 波 | +| `--validate` | 否 | 在执行开始前运行状态验证 | +| `--cross-ai` | 否 | 将执行委托给外部 AI CLI(使用 `workflow.cross_ai_command`) | +| `--no-cross-ai` | 否 | 即使配置中启用了跨 AI 也强制本地执行 | + +**前提条件:** 阶段已有 PLAN.md 文件 +**产出:** 每个计划的 `{phase}-{N}-SUMMARY.md`、git 提交,以及阶段完全完成时的 `{phase}-VERIFICATION.md` + +**包安装失败(v1.42.1):** 如果计划的安装步骤失败,执行器会显示 `checkpoint:human-verify` 并停止。它不会自动安装名称相似的替代包。这是有意为之的 — 静默替换包名是 slopsquatting 传播的方式。在注册表页面验证包后再响应检查点。 + +```bash +/gsd-execute-phase 1 # 执行阶段 1 +/gsd-execute-phase 1 --wave 2 # 仅执行第 2 波 +/gsd-execute-phase 1 --validate # 执行前验证状态 +/gsd-execute-phase 2 --cross-ai # 将阶段 2 委托给外部 AI CLI +``` + +--- + +### `/gsd-verify-work` + +带自动诊断的用户验收测试。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | 否 | 阶段编号(默认为最后执行的阶段) | + +**前提条件:** 阶段已被执行 +**产出:** `{phase}-UAT.md`,如果发现问题则生成修复计划 + +如需基于浏览器的 UAT,请使用已配置的浏览器 MCP 服务器。当前的 Open GSD 配套工具是 `gsd-browser`(`gsd-browser mcp`),提供确定性导航、版本化引用、断言、截图、视觉差异对比、录制和人工接管功能。已配置的旧版 Playwright MCP 服务器仍可使用。 + +```bash +/gsd-verify-work 1 # 阶段 1 的 UAT +``` + +--- + +--- + +### `/gsd-ship` + +从已完成的阶段工作创建带自动生成正文的 PR。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | 否 | 阶段编号或里程碑版本(例如 `4` 或 `v1.0`) | +| `--draft` | 否 | 创建为草稿 PR | + +**前提条件:** 阶段已验证(`/gsd-verify-work` 通过),`gh` CLI 已安装并完成身份验证 +**产出:** 带有规划产物丰富正文的 GitHub PR,STATE.md 已更新 + +```bash +/gsd-ship 4 # 发布阶段 4 +/gsd-ship 4 --draft # 作为草稿 PR 发布 +``` + +**PR 正文包含:** +- ROADMAP.md 中的阶段目标 +- SUMMARY.md 文件中的变更摘要 +- 已解决的需求(REQ-IDs) +- 验证状态 +- 关键决策 +- 来自 `ship.pr_body_sections` 的可选配置 PRD 风格章节 + +自定义 PR 正文章节的入门指南、示例和验证规则,请参阅[自定义 PR 正文章节](../ship-pr-body-sections.md)。 + +--- + +### `/gsd-ui-review` + +对已实现前端的追溯性六柱视觉审计。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | 否 | 阶段编号(默认为最后执行的阶段) | + +**前提条件:** 项目有前端代码(可独立运行,无需 GSD 项目) +**产出:** `{phase}-UI-REVIEW.md`,截图保存在 `.planning/ui-reviews/` + +如需更丰富的视觉证据,可将此命令与 `gsd-browser` 或其他浏览器 MCP 服务器配合使用,以便审计可以捕获截图、状态、控制台/网络上下文和可重现的交互步骤。 + +```bash +/gsd-ui-review # 审计当前阶段 +/gsd-ui-review 3 # 审计阶段 3 +``` + +--- + +### `/gsd-audit-uat` + +跨阶段审计所有未完成的 UAT 和验证项目。 + +**前提条件:** 至少有一个阶段已执行并包含 UAT 或验证 +**产出:** 带有人工测试计划的分类审计报告 + +```bash +/gsd-audit-uat +``` + +--- + +### `/gsd-audit-milestone` + +验证里程碑是否满足完成定义。 + +**前提条件:** 所有阶段已执行 +**产出:** 带有差距分析的审计报告 + +```bash +/gsd-audit-milestone +``` + +--- + +### `/gsd-complete-milestone` + +归档里程碑,标记发布版本。 + +**前提条件:** 建议先完成里程碑审计 +**产出:** `MILESTONES.md` 条目,git 标签 + +```bash +/gsd-complete-milestone +``` + +--- + +### `/gsd-milestone-summary` + +从里程碑产物生成全面的项目摘要,用于团队入职和审查。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `version` | 否 | 里程碑版本(默认为当前/最新里程碑) | + +**前提条件:** 至少有一个已完成或进行中的里程碑 +**产出:** `.planning/reports/MILESTONE_SUMMARY-v{version}.md` + +**摘要包含:** +- 概述、架构决策、逐阶段分解 +- 关键决策和权衡 +- 需求覆盖率 +- 技术债务和延期事项 +- 新团队成员入门指南 +- 生成后提供交互式问答 + +```bash +/gsd-milestone-summary # 摘要当前里程碑 +/gsd-milestone-summary v1.0 # 摘要特定里程碑 +``` + +--- + +### `/gsd-new-milestone` + +启动下一个版本周期。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `name` | 否 | 里程碑名称 | +| `--reset-phase-numbers` | 否 | 从第 1 阶段重新开始新里程碑,并在路线图制定前归档旧阶段目录 | + +**前提条件:** 上一个里程碑已完成 +**产出:** 已更新的 `PROJECT.md`、新的 `REQUIREMENTS.md`、新的 `ROADMAP.md` + +```bash +/gsd-new-milestone # 交互式 +/gsd-new-milestone "v2.0 Mobile" # 命名里程碑 +/gsd-new-milestone --reset-phase-numbers "v2.0 Mobile" # 从 1 重新开始里程碑编号 +``` + +--- + +## 阶段管理命令 + +### `/gsd-phase` + +ROADMAP.md 中阶段的 CRUD 操作 — 通过单一合并命令添加、插入、移除或编辑阶段。 + +| 标志 | 描述 | +|------|-------------| +| (无) | 在当前里程碑末尾追加新的整数阶段 | +| `--insert ` | 在阶段 N 后插入紧急工作作为小数阶段(例如 3.1) | +| `--remove ` | 移除未来的某个阶段并重新编号后续阶段 | +| `--edit ` | 就地编辑现有阶段的任意字段 | +| `--force` | 允许编辑进行中或已完成的阶段(与 `--edit` 配合使用) | + +**前提条件:** `.planning/ROADMAP.md` 已存在 +**产出:** 已更新的 ROADMAP.md + +```bash +/gsd-phase "Add authentication system" # 追加带描述的新阶段 +/gsd-phase --insert 3 "Fix auth race condition" # 在阶段 3 和 4 之间插入 → 创建 3.1 +/gsd-phase --remove 7 # 移除阶段 7,8→7、9→8 等重新编号 +/gsd-phase --edit 5 # 编辑阶段 5 的任意字段 +/gsd-phase --edit 5 --force # 即使阶段 5 进行中或已完成也进行编辑 +``` + +--- + +### `/gsd-mvp-phase` + +阶段的引导式 MVP 规划 — 提示输入用户故事,运行 SPIDR 拆分检查,将 `**Mode:** mvp` 写入 ROADMAP.md,然后委托给 `/gsd-plan-phase`(通过路线图字段自动检测 MVP 模式)。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | **是** | 要转换为 MVP 模式的阶段编号(整数或小数,如 `2.1`) | + +| 标志 | 描述 | +|------|-------------| +| `--force` | 允许转换 `in_progress` 或 `completed` 状态的阶段 | + +**前提条件:** 阶段必须已存在于 ROADMAP.md 中(通过 `/gsd-new-project`、`/gsd-phase` 或 `/gsd-phase --insert` 创建)。该命令不创建新阶段 — 它转换现有阶段。 + +**行为:** 收集结构化用户故事,验证格式,运行 SPIDR 拆分检查,将 `**Goal:**` 和 `**Mode:** mvp` 写入阶段的 ROADMAP.md 章节,然后委托给 `/gsd-plan-phase `。演示请参阅[如何规划 MVP 阶段](USER-GUIDE.md#mvp-phase-planning)。 + +**行走骨架:** 当在无先前阶段摘要的新项目第 1 阶段使用 `--mvp`(或 `mode: mvp`)时自动触发。规划器在 `PLAN.md` 旁边生成 `SKELETON.md`。 + +**产出:** 已更新的 ROADMAP.md,以及 `/gsd-plan-phase` 的所有产物;行走骨架模式触发时生成 `SKELETON.md`。 + +```bash +/gsd-mvp-phase 1 # 阶段 1 的 MVP 规划 +/gsd-mvp-phase 2.1 # 小数阶段的 MVP 规划 +/gsd-mvp-phase 3 --force # 即使阶段 3 进行中也进行转换 +``` + +--- + +### `/gsd-validate-phase` + +追溯性审计并填补 Nyquist 验证空白。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | 否 | 阶段编号 | + +```bash +/gsd-validate-phase 2 # 审计阶段 2 的测试覆盖率 +``` + +--- + +## 导航命令 + +### `/gsd-progress` + +显示状态、下一步操作,并自动推进至下一个逻辑工作流步骤。读取项目状态并确定适当的操作。 + +| 标志 | 描述 | +|------|-------------| +| `--next` | 无需手动选择路由,自动推进至下一个逻辑工作流步骤 | +| `--do "task description"` | 分析自由形式的意图并分派到最合适的 GSD 命令 | +| `--forensic` | 在标准报告后附加 6 项完整性审计(STATE 一致性、孤立切换、延期范围漂移、内存标记的待处理工作、阻塞性 todo、未提交代码) | + +**自动路由行为(`--next`):** +- 无项目 → 建议 `/gsd-new-project` +- 阶段需要讨论 → 运行 `/gsd-discuss-phase` +- 阶段需要规划 → 运行 `/gsd-plan-phase` +- 阶段需要执行 → 运行 `/gsd-execute-phase` +- 阶段需要验证 → 运行 `/gsd-verify-work` +- 所有阶段已完成 → 建议 `/gsd-complete-milestone` + +```bash +/gsd-progress # "我在哪里?下一步是什么?"(含自动路由) +/gsd-progress --next # 自动推进至下一步 +/gsd-progress --do "fix the auth bug" # 将自由形式意图分派到最佳 GSD 命令 +/gsd-progress --forensic # 标准报告 + 完整性审计 +``` + +### `/gsd-resume-work` + +从上次会话恢复完整上下文。 + +```bash +/gsd-resume-work # 上下文重置或新会话后使用 +``` + +### `/gsd-pause-work` + +在阶段中途停止时保存上下文切换信息。 + +| 标志 | 描述 | +|------|-------------| +| `--report` | 在 `.planning/reports/` 中生成会话后摘要,捕获提交、文件变更和阶段进度 | + +```bash +/gsd-pause-work # 创建 continue-here.md +/gsd-pause-work --report # 创建 continue-here.md + 会话报告 +``` + +### `/gsd-manager` + +用于从单个终端管理多个阶段的交互式命令中心。 + +**前提条件:** `.planning/ROADMAP.md` 已存在 +**行为:** +- 带有视觉状态指示器的所有阶段仪表板 +- 根据依赖关系和进度推荐最优的下一步操作 +- 分派工作:discuss 在内联运行,plan/execute 作为后台代理运行 +- 专为从单个终端并行处理多个阶段工作的高级用户设计 +- 通过 `manager.flags` 配置支持每步直通标志(参阅[配置](CONFIGURATION.md#manager-passthrough-flags)) + +```bash +/gsd-manager # 打开命令中心仪表板 +/gsd-manager --analyze-deps # 在并行执行前扫描 ROADMAP 阶段的依赖关系 +``` + +**检查点心跳(#2410):** + +后台 `execute-phase` 运行在每个波次和计划边界处发出 `[checkpoint]` 标记,以防 Claude API SSE 流在多计划阶段上因空闲时间过长而触发 `Stream idle timeout - partial response received`。格式为: + +``` +[checkpoint] phase {N} wave {W}/{M} starting, {count} plan(s), {P}/{Q} plans done +[checkpoint] phase {N} wave {W}/{M} plan {plan_id} starting ({P}/{Q} plans done) +[checkpoint] phase {N} wave {W}/{M} plan {plan_id} complete ({P}/{Q} plans done) +[checkpoint] phase {N} wave {W}/{M} complete, {P}/{Q} plans done ({ok}/{count} ok) +``` + +如果后台阶段中途失败,请在转录中 grep `[checkpoint]` 以查看最后确认的边界。管理器的后台完成处理器在代理出错时使用这些标记报告部分进度。 + +**管理器直通标志:** + +在 `.planning/config.json` 的 `manager.flags` 下配置每步标志。这些标志会附加到每个分派的命令中: + +```json +{ + "manager": { + "flags": { + "discuss": "--auto", + "plan": "--skip-research", + "execute": "--validate" + } + } +} +``` + +--- + +### `/gsd-help` + +按请求层级显示 GSD 命令。默认适合单屏显示;`--full` 为完整参考;`` 直接跳转到某一章节。 + +```bash +/gsd-help # 单页导览(默认) +/gsd-help --brief # 约 10 行的顶级命令简明摘要 +/gsd-help --full # 完整参考(每个命令,每个标志) +/gsd-help # 仅一个章节(例如 /gsd-help debug) +/gsd-help --brief # 简洁的范围查找 — 签名 + 单行摘要 +``` + +完整别名表请参阅 `get-shit-done/workflows/help/modes/topic.md`。未知主题将打印已识别的列表。 + +--- + +## 实用工具命令 + +### `/gsd-explore` + +苏格拉底式构思会话 — 通过深度提问引导某个想法,可选择生成研究内容,然后将输出路由到正确的 GSD 产物(笔记、待办、种子、研究问题、需求或新阶段)。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `topic` | 否 | 要探索的主题(例如 `/gsd-explore authentication strategy`) | + +```bash +/gsd-explore # 开放式构思会话 +/gsd-explore authentication strategy # 探索特定主题 +``` + +--- + +### `/gsd-undo` + +安全 git 回退 — 使用阶段清单并通过依赖检查和确认门回滚 GSD 阶段或计划提交。 + +| 标志 | 必填 | 描述 | +|------|----------|-------------| +| `--last N` | (三选一必填) | 显示最近的 GSD 提交以供交互式选择 | +| `--phase NN` | (三选一必填) | 回退某个阶段的所有提交 | +| `--plan NN-MM` | (三选一必填) | 回退特定计划的所有提交 | + +**安全性:** 回退前检查依赖的阶段/计划;始终显示确认门。 + +```bash +/gsd-undo --last 5 # 从最近 5 个 GSD 提交中选择 +/gsd-undo --phase 03 # 回退阶段 3 的所有提交 +/gsd-undo --plan 03-02 # 回退阶段 3 第 02 号计划的提交 +``` + +--- + +### `/gsd-import` + +将外部计划文件导入 GSD 规划系统,在写入任何内容之前检测与 `PROJECT.md` 决策的冲突。 + +| 标志 | 必填 | 描述 | +|------|----------|--------------| +| `--from ` | 是(或 `--from-gsd2`) | 要导入的外部计划文件路径 | +| `--from-gsd2` | 是(或 `--from`) | 将 GSD-2(`.gsd/`)项目反向迁移回 GSD v1(`.planning/`)格式 | +| `--path ` | 否 | 与 `--from-gsd2` 配合:GSD-2 项目目录路径(默认为当前目录) | + +**流程:** 检测冲突 → 提示解决 → 写入为 GSD PLAN.md → 通过 `gsd-plan-checker` 验证 + +```bash +/gsd-import --from /tmp/team-plan.md # 导入并验证外部计划 +/gsd-import --from-gsd2 # 从 GSD-2 迁移回 v1(当前目录) +/gsd-import --from-gsd2 --path ~/old-project # 从不同路径迁移 +``` + +--- + +### `/gsd-ingest-docs` + +从仓库中现有的 ADR、PRD、规格和文档引导或合并 `.planning/` 设置。运行并行分类(`gsd-doc-classifier`)以及带优先级规则和循环检测的综合(`gsd-doc-synthesizer`)。生成三分桶冲突报告(`INGEST-CONFLICTS.md`:自动解决、竞争变体、未解决阻塞项),并对 LOCKED-vs-LOCKED ADR 矛盾实施硬性阻止。 + +| 参数 / 标志 | 必填 | 描述 | +|-----------------|----------|-------------| +| `path` | 否 | 要扫描的目标目录(默认为仓库根目录) | +| `--mode new\|merge` | 否 | 覆盖自动检测(默认:`.planning/` 不存在时为 `new`,存在时为 `merge`) | +| `--manifest ` | 否 | YAML 文件,按文档列出 `{path, type, precedence?}`;覆盖启发式分类 | +| `--resolve auto` | 否 | 冲突解决模式(v1:仅 `auto`;`interactive` 保留) | + +**限制:** v1 每次调用上限为 50 个文档。将共享冲突检测契约提取到 `references/doc-conflict-engine.md`,`/gsd-import` 也会使用。 + +```bash +/gsd-ingest-docs # 扫描仓库根目录,自动检测模式 +/gsd-ingest-docs docs/ # 仅摄取 docs/ 下的内容 +/gsd-ingest-docs --manifest ingest.yaml # 显式优先级清单 +``` + +--- + +### `/gsd-quick` + +执行带 GSD 保障的临时任务。 + +| 标志 | 描述 | +|------|-------------| +| `--full` | 启用完整质量流水线 — 讨论 + 研究 + 计划检查 + 验证 | +| `--validate` | 仅计划检查(最多 2 次迭代)+ 执行后验证;无讨论或研究 | +| `--discuss` | 轻量级预规划讨论 | +| `--research` | 规划前生成专注研究者 | + +细粒度标志可组合:`--discuss --research --validate` 等同于 `--full`。 + +| 子命令 | 描述 | +|------------|-------------| +| `list` | 列出所有带状态的快速任务 | +| `status ` | 显示特定快速任务的状态 | +| `resume ` | 通过 slug 恢复特定快速任务 | + +```bash +/gsd-quick # 基本快速任务 +/gsd-quick --discuss --research # 讨论 + 研究 + 规划 +/gsd-quick --validate # 仅计划检查 + 验证 +/gsd-quick --full # 完整质量流水线 +/gsd-quick list # 列出所有快速任务 +/gsd-quick status my-task-slug # 显示快速任务的状态 +/gsd-quick resume my-task-slug # 恢复快速任务 +``` + +### `/gsd-autonomous` + +自主运行所有剩余阶段。 + +| 标志 | 描述 | +|------|-------------| +| `--from N` | 从特定阶段编号开始 | +| `--to N` | 完成特定阶段编号后停止 | +| `--interactive` | 精简上下文并接受用户输入 | + +```bash +/gsd-autonomous # 运行所有剩余阶段 +/gsd-autonomous --from 3 # 从阶段 3 开始 +/gsd-autonomous --to 5 # 运行到阶段 5(含) +/gsd-autonomous --from 3 --to 5 # 运行阶段 3 到 5 +``` + +### `/gsd-debug` + +带持久状态的系统性调试。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `description` | 否 | 错误描述 | + +| 标志 | 描述 | +|------|-------------| +| `--diagnose` | 仅诊断模式 — 调查但不尝试修复 | + +**子命令:** +- `/gsd-debug list` — 列出所有活动调试会话及状态、假设和下一步操作 +- `/gsd-debug status ` — 打印会话的完整摘要(证据数量、已排除数量、解决方案、TDD 检查点),不生成代理 +- `/gsd-debug continue ` — 通过 slug 恢复特定会话(显示当前焦点后生成延续代理) +- `/gsd-debug [--diagnose] ` — 开始新调试会话(现有行为;`--diagnose` 在找到根本原因后停止,不应用修复) + +**TDD 模式:** 当 `.planning/config.json` 中 `tdd_mode: true` 时,调试会话需要在应用任何修复前编写并验证失败的测试(红 → 绿 → 完成)。 + +```bash +/gsd-debug "Login button not responding on mobile Safari" +/gsd-debug --diagnose "Intermittent 500 errors on /api/users" +/gsd-debug list +/gsd-debug status auth-token-null +/gsd-debug continue form-submit-500 +``` + +### `/gsd-add-tests` + +为已完成的阶段生成测试。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | 否 | 阶段编号 | + +```bash +/gsd-add-tests 2 # 为阶段 2 生成测试 +``` + +### `/gsd-stats` + +显示项目统计信息。 + +```bash +/gsd-stats # 项目指标仪表板 +``` + +### `/gsd-profile-user` + +通过对 Claude Code 会话的 8 个维度分析生成开发者行为档案(沟通风格、决策模式、调试方法、用户体验偏好、供应商选择、挫折触发因素、学习风格、解释深度)。生成用于个性化 Claude 响应的产物。 + +| 标志 | 描述 | +|------|-------------| +| `--questionnaire` | 使用交互式问卷代替会话分析 | +| `--refresh` | 重新分析会话并重新生成档案 | + +**生成的产物:** +- `USER-PROFILE.md` — 完整行为档案 +- `CLAUDE.md` 档案章节 — 由 Claude Code 自动发现 + +```bash +/gsd-profile-user # 分析会话并构建档案 +/gsd-profile-user --questionnaire # 交互式问卷回退方案 +/gsd-profile-user --refresh # 从新分析中重新生成 +``` + +### `/gsd-health` + +验证 `.planning/` 目录完整性。使用 `--context` 时,针对 60% / 70% 阈值探测上下文窗口使用率保护(v1.40.0 新增,[#2792](https://github.com/open-gsd/gsd-core/issues/2792))。 + +| 标志 | 描述 | +|------|-------------| +| `--repair` | 自动修复可恢复的问题 | +| `--context` | 探测上下文窗口使用率;60% 时警告,70% 时严重警告 | + +```bash +/gsd-health # 检查完整性 +/gsd-health --repair # 检查并修复 +/gsd-health --context # 上下文使用率分类 +``` + +### `/gsd-cleanup` + +归档已完成里程碑中积累的阶段目录,并删除上游已删除的本地分支。 + +**行为:** 呈现要归档的阶段目录的演练摘要(从 `.planning/phases/` 移至 `.planning/milestones/v{X.Y}-phases/`)和上游已删除的本地分支(通过 `git fetch --prune` 删除)。写入任何变更前需要确认。当前检出的分支永远不会被删除。 + +```bash +/gsd-cleanup +``` + +--- + +## 实验与草图命令 + +### `/gsd-spike` + +在确定实现方案前运行 2-5 个专注的可行性实验。每个实验使用 Given/When/Then 框架,生成可执行代码,并返回 VALIDATED / INVALIDATED / PARTIAL 裁决。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `idea` | 否 | 要调查的技术问题或方法 | +| `--quick` | 否 | 跳过接收对话;直接使用 `idea` 文本 | +| `--wrap-up` | 否 | 将已完成的实验结果打包成可重用的项目本地技能 | + +**产出:** `.planning/spikes/NNN-experiment-name/`(含代码、结果和 README);`.planning/spikes/MANIFEST.md` +**`--wrap-up` 产出:** `.claude/skills/spike-findings-[project]/` 技能文件 + +```bash +/gsd-spike # 交互式接收 +/gsd-spike "can we stream LLM tokens through SSE" +/gsd-spike --quick websocket-vs-polling +/gsd-spike --wrap-up # 将结果打包为可重用技能 +``` + +--- + +### `/gsd-sketch` + +在确定实现方案前通过一次性 HTML 原型探索设计方向。每个设计问题生成 2-3 个变体供直接浏览器比较。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `idea` | 否 | 要探索的 UI 设计问题或方向 | +| `--quick` | 否 | 跳过风格接收;直接使用 `idea` 文本 | +| `--text` | 否 | 文本模式回退 — 用编号列表替换交互式提示(适用于非 Claude 运行时) | +| `--wrap-up` | 否 | 将获胜的草图决策打包为可重用的项目本地技能 | + +**产出:** `.planning/sketches/NNN-descriptive-name/index.html`(2-3 个交互变体)、`README.md`、共享 `themes/default.css`;`.planning/sketches/MANIFEST.md` +**`--wrap-up` 产出:** `.claude/skills/sketch-findings-[project]/` 技能文件 + +```bash +/gsd-sketch # 交互式风格接收 +/gsd-sketch "dashboard layout" +/gsd-sketch --quick "sidebar navigation" +/gsd-sketch --text "onboarding flow" # 非 Claude 运行时 +/gsd-sketch --wrap-up # 将获胜草图打包为技能 +``` + +--- + +## 诊断命令 + +### `/gsd-forensics` + +失败 GSD 工作流的事后调查 — 诊断出了什么问题。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `description` | 否 | 问题描述(省略时提示输入) | + +**前提条件:** `.planning/` 目录已存在 +**产出:** `.planning/forensics/report-{timestamp}.md` + +**调查内容包括:** +- Git 历史分析(最近提交、卡滞模式、时间间隔) +- 产物完整性(已完成阶段的预期文件) +- STATE.md 异常和会话历史 +- 未提交的工作、冲突、废弃的变更 +- 至少检查 4 种异常类型(卡滞循环、缺失产物、废弃工作、崩溃/中断) +- 如果发现可操作的结果,提供创建 GitHub issue 的选项 + +```bash +/gsd-forensics # 交互式 — 提示输入问题 +/gsd-forensics "Phase 3 execution stalled" # 带问题描述 +``` + +--- + +### `/gsd-extract-learnings` + +从已完成的阶段工作中提取可重用的模式、反模式和架构决策。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | **是** | 要提取学习记录的阶段编号 | + +| 标志 | 描述 | +|------|-------------| +| `--all` | 从所有已完成的阶段中提取学习记录 | +| `--format` | 输出格式:`markdown`(默认)、`json` | + +**前提条件:** 阶段已被执行(SUMMARY.md 文件已存在) +**产出:** `.planning/learnings/{phase}-LEARNINGS.md` + +**提取内容:** +- 架构决策及其依据 +- 运行良好的模式(可在未来阶段复用) +- 遇到的反模式及其解决方式 +- 特定技术的洞察 +- 性能和测试观察 + +```bash +/gsd-extract-learnings 3 # 提取阶段 3 的学习记录 +/gsd-extract-learnings --all # 从所有已完成阶段提取 +``` + +--- + +## 工作流管理 + +### `/gsd-workstreams` + +管理用于并发处理不同里程碑领域的并行工作流。 + +**子命令:** + +| 子命令 | 描述 | +|------------|-------------| +| `list` | 列出所有带状态的工作流(无子命令时的默认操作) | +| `create ` | 创建新工作流 | +| `status ` | 某个工作流的详细状态 | +| `switch ` | 设置活动工作流 | +| `progress` | 所有工作流的进度摘要 | +| `complete ` | 归档已完成的工作流 | +| `resume ` | 在工作流中恢复工作 | + +**前提条件:** 活动的 GSD 项目 +**产出:** `.planning/` 下的工作流目录,每个工作流的状态跟踪 + +```bash +/gsd-workstreams # 列出所有工作流 +/gsd-workstreams create backend-api # 创建新工作流 +/gsd-workstreams switch backend-api # 设置活动工作流 +/gsd-workstreams status backend-api # 详细状态 +/gsd-workstreams progress # 跨工作流进度概览 +/gsd-workstreams complete backend-api # 归档已完成的工作流 +/gsd-workstreams resume backend-api # 在工作流中恢复工作 +``` + +--- + +## 配置命令 + +### `/gsd-settings` + +工作流切换和模型配置的交互式配置。问题分为六个可视化章节: + +- **规划** — 研究、计划检查器、模式映射器、Nyquist、UI 阶段、UI 关卡、AI 阶段 +- **执行** — 验证器、TDD 模式、代码审查、代码审查深度 _(条件性 — 仅在代码审查开启时)_、UI 审查 +- **文档与输出** — 提交文档、跳过讨论、工作树 +- **功能** — Intel、Graphify +- **模型与流水线** — 模型配置、自动推进、分支 +- **杂项** — 上下文警告、研究问题 + +所有答案通过 `gsd-tools query config-set` 合并到已解析的项目配置路径(标准安装为 `.planning/config.json`,工作流处于活动状态时为 `.planning/workstreams//config.json`),保留不相关的键。确认后,用户可以将完整设置对象保存到 `~/.gsd/defaults.json`,以便未来运行 `/gsd-new-project` 时从相同的基线开始。 + +```bash +/gsd-settings # 交互式配置 +``` + +### `/gsd-config` + +通过单一合并命令交互式配置 GSD 设置 — 工作流切换、高级参数、集成和模型配置。 + +| 标志 | 描述 | +|------|-------------| +| (无) | 常用切换:模型、research、plan_check、verifier、branching | +| `--advanced` | 高级用户参数:规划调优、超时、分支模板、跨 AI 执行、运行时/输出 | +| `--integrations` | 第三方 API 密钥、代码审查 CLI 路由、代理技能注入 | +| `--profile ` | 快速配置切换:`quality`、`balanced`、`budget` 或 `inherit` | + +**`--advanced` 章节:** + +| 章节 | 键 | +|---------|------| +| 规划调优 | `workflow.plan_bounce`、`workflow.plan_bounce_passes`、`workflow.plan_bounce_script`、`workflow.subagent_timeout`、`workflow.inline_plan_threshold` | +| 执行调优 | `workflow.node_repair`、`workflow.node_repair_budget`、`workflow.auto_prune_state` | +| 讨论调优 | `workflow.max_discuss_passes` | +| 跨 AI 执行 | `workflow.cross_ai_execution`、`workflow.cross_ai_command`、`workflow.cross_ai_timeout` | +| Git 定制 | `git.base_branch`、`git.phase_branch_template`、`git.milestone_branch_template` | +| 运行时 / 输出 | `response_language`、`context_window`、`search_gitignored`、`graphify.build_timeout` | + +所有答案通过 `gsd-tools query config-set` 合并,保留不相关的键。API 密钥在所有输出中以掩码显示(`****`)。 + +```bash +/gsd-config # 常用交互式配置 +/gsd-config --advanced # 高级用户参数(六章节提示) +/gsd-config --integrations # API 密钥、审查 CLI 路由、代理技能 +/gsd-config --profile budget # 切换到 budget 配置 +/gsd-config --profile quality # 切换到 quality 配置 +``` + +完整的模式和默认值请参阅 [CONFIGURATION.md](CONFIGURATION.md)。 + +### `/gsd-surface` + +切换显示的技能 — 应用配置、列出或禁用集群,无需重新安装。 + +| 子命令 | 描述 | +|------------|-------------| +| `list` | 显示已启用和已禁用的集群和技能 | +| `status` | `list` 的别名,附加 token 成本摘要 | +| `profile ` | 写入 `baseProfile` 并重新暂存技能 | +| `disable ` | 将集群添加到禁用列表并重新暂存 | +| `enable ` | 从禁用列表中删除集群并重新暂存 | +| `reset` | 删除表面增量;恢复安装时的配置 | + +```bash +/gsd-surface list # 显示当前表面 +/gsd-surface profile standard # 切换到 standard 配置 +/gsd-surface disable utility # 禁用 utility 集群 +/gsd-surface reset # 恢复安装时的配置 +``` + +--- + +## 棕地命令 + +### `/gsd-map-codebase` + +使用并行映射代理分析现有代码库。使用 `--fast` 进行快速单代理扫描,或使用 `--query` 搜索现有 intel。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `area` | 否 | 将映射范围限定到特定区域 | +| `--fast` | 否 | 快速单焦点评估 — 生成一个映射代理而非四个并行代理(轻量级替代方案) | +| `--query ` | 否 | 搜索 `.planning/intel/` 中可查询的代码库 intel 文件(需要 `intel.enabled: true`) | + +| 标志 | 描述 | +|------|-------------| +| `--focus tech\|arch\|quality\|concerns\|tech+arch` | `--fast` 模式的焦点区域(默认:`tech+arch`) | + +**产出:** `.planning/codebase/` 分析文档(完整模式);`.planning/codebase/` 中的目标文档(`--fast`);intel 查询结果(`--query`) + +```bash +/gsd-map-codebase # 完整代码库分析(4 个并行代理) +/gsd-map-codebase auth # 聚焦 auth 区域 +/gsd-map-codebase --fast # 快速技术 + 架构概览(1 个代理) +/gsd-map-codebase --fast --focus quality # 仅质量和代码健康状况 +/gsd-map-codebase --query authentication # 搜索 intel 中的某个术语 +``` + +### `/gsd-graphify` + +构建、查询和检查存储在 `.planning/graphs/` 中的项目知识图谱。通过在 `config.json` 中设置 `graphify.enabled: true` 选择启用(参阅[配置参考](CONFIGURATION.md#graphify-settings));禁用时,命令打印激活提示并停止。 + +| 子命令 | 描述 | +|------------|-------------| +| `build` | 构建或重建知识图谱(内联运行 `graphify update .` 并刷新 `.planning/graphs/`) | +| `query ` | 在图谱中搜索某个术语 | +| `status` | 显示图谱新鲜度和统计信息 | +| `diff` | 显示自上次构建以来的变更 | + +**产出:** `.planning/graphs/` 图谱产物(节点、边、快照) + +```bash +/gsd-graphify build # 构建或重建知识图谱 +/gsd-graphify query authentication # 在图谱中搜索某个术语 +/gsd-graphify status # 显示新鲜度和统计信息 +/gsd-graphify diff # 显示自上次构建以来的变更 +``` + +**编程访问:** `node gsd-tools.cjs graphify ` — 参阅 [CLI 工具参考](CLI-TOOLS.md)。 + +### `gsd-tools intel api-surface` + +将 `.planning/intel/api-map.json` 索引(由 `/gsd-map-codebase` 构建)渲染为 `.planning/intel/` 中人类可读的 `API-SURFACE.md`。以 `config.json` 中 `intel.enabled: true` 为门控;当 Intel 被禁用时,命令打印激活提示并退出。输出路径始终为 `.planning/intel/API-SURFACE.md` — 没有 `--out` 或 `--format` 标志。当 `api-map.json` 不存在或为空时,命令仍会写入文件并附带明确的"不完整"横幅,以便使用者不会将沉默误认为"什么都不存在"。 + +**产出:** `.planning/intel/API-SURFACE.md` + +```bash +node gsd-tools.cjs intel api-surface # 渲染 api-map.json → API-SURFACE.md +``` + +`API-SURFACE.md` 输出按源文件分组列出导出的符号(函数、类、装饰器、常量)及其签名和检测到的可见性。当 `plan_review.source_grounding_authority` 设置为 `intel` 时,计划漂移保护直接读取 `api-map.json` 而不是调用 `api-surface` 渲染器。 + +--- + +## AI 集成命令 + +### `/gsd-ai-integration-phase` + +为涉及构建 AI 系统的阶段生成 AI-SPEC.md 设计契约。呈现交互式决策矩阵,显示特定领域的故障模式和评估标准,并生成包含框架推荐、实现指南和评估策略的 `AI-SPEC.md`。 + +**产出:** 阶段目录中的 `{phase}-AI-SPEC.md` + +**生成:** 3 个并行专家代理:domain-researcher、framework-selector、ai-researcher 和 eval-planner + +```bash +/gsd-ai-integration-phase # 当前阶段的向导 +/gsd-ai-integration-phase 3 # 特定阶段的向导 +``` + +--- + +### `/gsd-eval-review` + +审计已执行 AI 阶段的评估覆盖率并生成 EVAL-REVIEW.md 修复计划。根据 `/gsd-ai-integration-phase` 生成的 `AI-SPEC.md` 评估计划检查实现情况。将每个评估维度评分为 COVERED/PARTIAL/MISSING。 + +**前提条件:** 阶段已被执行且有 `AI-SPEC.md` +**产出:** `{phase}-EVAL-REVIEW.md`,包含发现结果、差距和修复指南 + +```bash +/gsd-eval-review # 审计当前阶段 +/gsd-eval-review 3 # 审计特定阶段 +``` + +--- + +## 更新命令 + +### `/gsd-update` + +更新 GSD,预览变更日志,并可选择同步技能或重新应用本地补丁。 + +| 标志 | 描述 | +|------|-------------| +| `--sync` | 更新后从 GSD 注册表同步技能 | +| `--reapply` | 更新后恢复本地修改(补丁) | + +```bash +/gsd-update # 检查更新并安装 +/gsd-update --sync # 更新并同步技能 +/gsd-update --reapply # 更新并重新应用本地补丁 +``` + +--- + +## 代码质量命令 + +### `/gsd-code-review` + +审查阶段期间更改的源文件,查找错误、安全漏洞和代码质量问题。使用 `--fix` 可在审查后自动修复发现的问题。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `N` | **是** | 要审查的阶段编号(例如 `2` 或 `02`) | +| `--depth=quick\|standard\|deep` | 否 | 审查深度级别(覆盖 `workflow.code_review_depth` 配置)。`quick`:仅模式匹配(约 2 分钟)。`standard`:按文件分析,含特定语言检查(约 5-15 分钟,默认)。`deep`:跨文件分析,包括导入图和调用链(约 15-30 分钟) | +| `--files file1,file2,...` | 否 | 显式逗号分隔的文件列表;完全跳过 SUMMARY/git 范围界定 | +| `--fix` | 否 | 审查后自动修复问题 — 读取 REVIEW.md,生成修复代理,原子性地提交每个修复 | +| `--fix --all` | 否 | 将 Info 级别的发现纳入修复范围(默认:仅 Critical + Warning) | +| `--fix --auto` | 否 | 修复 + 重新审查迭代循环,最多 3 次迭代 | + +**前提条件:** 阶段已被执行且有 SUMMARY.md 或 git 历史 +**产出:** `{phase}-REVIEW.md`,包含按严重性分类的发现;使用 `--fix` 时产出 `{phase}-REVIEW-FIX.md` +**生成:** `gsd-code-reviewer` 代理;使用 `--fix` 时生成 `gsd-code-fixer` 代理 + +**可选结构预检:** 将 `code_quality.fallow.enabled` 设置为 `true` 可在代理审查前运行 fallow。GSD 写入 `{phase}/FALLOW.json` 并在 `REVIEW.md` 中嵌入 `Structural Findings (fallow)` 章节。使用 `code_quality.fallow.scope` 和 `code_quality.fallow.profile` 配置范围和配置文件。 + +```bash +/gsd-code-review 3 # 阶段 3 的标准审查 +/gsd-code-review 2 --depth=deep # 深度跨文件审查 +/gsd-code-review 4 --files src/auth.ts,src/token.ts # 显式文件列表 +/gsd-code-review 3 --fix # 审查后修复 Critical + Warning 发现 +/gsd-code-review 3 --fix --all # 审查后修复所有发现(包括 Info) +/gsd-code-review 3 --fix --auto # 审查、修复并重新审查直到清洁(最多 3 次迭代) +``` + +--- + +### `/gsd-audit-fix` + +自主审计到修复流水线 — 运行审计、分类发现、通过测试验证自动修复可修复的问题,并原子性地提交每个修复。 + +| 标志 | 描述 | +|------|-------------| +| `--source ` | 要运行的审计类型(默认:`audit-uat`) | +| `--severity high\|medium\|all` | 要处理的最低严重性(默认:`medium`) | +| `--max N` | 要修复的最大发现数量(默认:5) | +| `--dry-run` | 分类发现但不修复(显示分类表) | + +**前提条件:** 至少有一个阶段已执行并包含 UAT 或验证 +**产出:** 带测试验证的修复提交;分类报告 + +```bash +/gsd-audit-fix # 运行 audit-uat,修复 medium+ 级别的问题(最多 5 个) +/gsd-audit-fix --severity high # 仅修复高严重性问题 +/gsd-audit-fix --dry-run # 预览分类而不修复 +/gsd-audit-fix --max 10 --severity all # 修复任意严重性的最多 10 个问题 +``` + +--- + +## 快速与内联命令 + +### `/gsd-fast` + +内联执行简单任务 — 无子代理,无规划开销。适用于错别字修复、配置变更、小型重构、遗忘的提交。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `task description` | 否 | 要做什么(省略时提示输入) | + +**不是 `/gsd-quick` 的替代品** — 任何需要研究、多步骤规划或验证的事项请使用 `/gsd-quick`。 + +```bash +/gsd-fast "fix typo in README" +/gsd-fast "add .env to gitignore" +``` + +--- + +### `/gsd-review` + +来自外部 AI CLI 的阶段计划跨 AI 同行评审。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `--phase N` | **是** | 要审查的阶段编号 | + +| 标志 | 描述 | +|------|-------------| +| `--gemini` | 包含 Gemini CLI 审查 | +| `--claude` | 包含 Claude CLI 审查(独立会话) | +| `--codex` | 包含 Codex CLI 审查 | +| `--coderabbit` | 包含 CodeRabbit 审查 | +| `--opencode` | 包含 OpenCode 审查(通过 GitHub Copilot) | +| `--qwen` | 包含 Qwen Code 审查(阿里巴巴 Qwen 模型) | +| `--cursor` | 包含 Cursor 代理审查 | +| `--agy` / `--antigravity` | 包含 Antigravity CLI 审查(使用 Google 凭证免费) | +| `--ollama` | 包含 Ollama 服务器审查 | +| `--lm-studio` | 包含 LM Studio 服务器审查 | +| `--llama-cpp` | 包含 llama.cpp 服务器审查 | +| `--all` | 包含所有可用的审查者(CLI + 本地模型服务器) | + +**默认审查者行为(无标志):** +- 如果 `review.default_reviewers` **未设置**,`/gsd-review` 运行所有检测到的审查者(当前默认行为)。 +- 如果 `review.default_reviewers` **已设置**,`/gsd-review` 仅运行该子集(例如 `["gemini","codex"]`)。 +- `--all` 始终覆盖配置并运行完整的检测集。 +- 显式标志(例如 `--cursor`)在该次运行中覆盖 `--all` 和配置默认值。 + +**产出:** `{phase}-REVIEWS.md` — 可供 `/gsd-plan-phase --reviews` 使用 + +```bash +# 设置项目默认审查者,用于无标志的 /gsd-review 运行 +gsd config-set review.default_reviewers '["gemini","codex"]' + +/gsd-review --phase 2 # 使用配置中的 gemini+codex 运行 +/gsd-review --phase 3 --all +/gsd-review --phase 2 --gemini +/gsd-review --phase 2 --cursor # 一次性覆盖 +``` + +--- + +### `/gsd-pr-branch` + +通过过滤 `.planning/` 提交创建干净的 PR 分支。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `target branch` | 否 | 基础分支(默认:`main`) | + +**目的:** 审查者只看到代码变更,而非 GSD 规划产物。 + +```bash +/gsd-pr-branch # 相对于 main 进行过滤 +/gsd-pr-branch develop # 相对于 develop 进行过滤 +``` + +--- + +### `/gsd-secure-phase` + +追溯性验证已完成阶段的威胁缓解措施。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `phase number` | 否 | 要审计的阶段(默认:最后完成的阶段) | + +**前提条件:** 阶段必须已被执行。有无现有 SECURITY.md 均可运行。 +**产出:** `{phase}-SECURITY.md`,包含威胁验证结果 +**生成:** `gsd-security-auditor` 代理 + +三种运行模式: +1. SECURITY.md 已存在 — 审计并验证现有缓解措施 +2. 无 SECURITY.md 但 PLAN.md 有威胁模型 — 从产物生成 +3. 阶段未执行 — 退出并提供指导 + +```bash +/gsd-secure-phase # 审计最后完成的阶段 +/gsd-secure-phase 5 # 审计特定阶段 +``` + +--- + +### `/gsd-docs-update` + +生成或更新经代码库验证的项目文档。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| `--force` | 否 | 跳过保存提示,重新生成所有文档 | +| `--verify-only` | 否 | 检查现有文档的准确性,不生成 | + +**产出:** 最多 9 个文档文件(README、架构、API、入门、开发、测试、配置、部署、贡献) +**生成:** `gsd-doc-writer` 代理(每种文档类型一个),然后是用于事实验证的 `gsd-doc-verifier` 代理 + +每个文档写作代理直接探索代码库 — 不存在幻觉路径或过时签名。文档验证代理对照实时文件系统检查声明。 + +```bash +/gsd-docs-update # 交互式生成/更新文档 +/gsd-docs-update --force # 重新生成所有文档 +/gsd-docs-update --verify-only # 仅验证现有文档 +``` + +--- + +## 任务捕捉与待办命令 + +### `/gsd-capture` + +将想法、任务、笔记和种子捕捉到适当的目的地。默认模式添加结构化待办事项;标志路由到专业的捕捉工作流。 + +| 标志 | 描述 | +|------|-------------| +| (无) | 捕捉为结构化待办事项供后续处理 | +| `--note [text]` | 零摩擦笔记 — 追加、列出(`--note list`)或提升(`--note promote N`) | +| `--backlog ` | 使用 999.x 编号添加到待办停车场 | +| `--seed [idea summary]` | 捕捉具有触发条件的前瞻性想法 | +| `--list` | 列出待处理的待办事项并选择一项处理 | +| `--global` | 使用全局范围(用于笔记操作) | + +**待办停车场:** 999.x 编号使条目保持在活动阶段序列之外;阶段目录立即创建,以便 `/gsd-discuss-phase` 和 `/gsd-plan-phase` 可以在其上运行。 +**种子:** 保留完整的原因、触发时机和面包屑 — 由 `/gsd-new-milestone` 使用。 + +**产出:** `.planning/todos/`(默认)、笔记文件(--note)、ROADMAP.md 待办章节(--backlog)、`.planning/seeds/SEED-NNN-slug.md`(--seed) + +```bash +/gsd-capture "Consider adding dark mode support" # 添加待办事项 +/gsd-capture --note "Caching strategy idea" # 快速笔记 +/gsd-capture --note list # 列出所有笔记 +/gsd-capture --note promote 3 # 将笔记 3 提升为待办事项 +/gsd-capture --backlog "GraphQL API layer" # 添加到待办停车场 +/gsd-capture --seed "Add real-time collaboration when WebSocket infra is in place" +/gsd-capture --list # 浏览并处理待办事项 +``` + +--- + +### `/gsd-review-backlog` + +审查并将待办停车场中的条目提升到活动里程碑。 + +**每个条目的操作:** 提升(移至活动序列)、保留(留在待办停车场)、移除(删除)。 + +```bash +/gsd-review-backlog +``` + +--- + +### `/gsd-thread` + +管理用于跨会话工作的持久上下文线程。 + +| 参数 | 必填 | 描述 | +|----------|----------|-------------| +| (无)/ `list` | — | 列出所有线程 | +| `list --open` | — | 仅列出状态为 `open` 或 `in_progress` 的线程 | +| `list --resolved` | — | 仅列出状态为 `resolved` 的线程 | +| `status ` | — | 显示特定线程的状态 | +| `close ` | — | 将线程标记为已解决 | +| `name` | — | 通过名称恢复现有线程 | +| `description` | — | 创建新线程 | + +线程是用于跨多个会话但不属于任何特定阶段的工作的轻量级跨会话知识存储。比 `/gsd-pause-work` 更轻量。 + +```bash +/gsd-thread # 列出所有线程 +/gsd-thread list --open # 仅列出开放/进行中的线程 +/gsd-thread list --resolved # 仅列出已解决的线程 +/gsd-thread status fix-deploy-key # 显示线程状态 +/gsd-thread close fix-deploy-key # 将线程标记为已解决 +/gsd-thread fix-deploy-key-auth # 恢复线程 +/gsd-thread "Investigate TCP timeout in pasta service" # 创建新线程 +``` + +--- + +## 路线图管理命令 + +### `roadmap validate` + +验证 ROADMAP.md 的结构完整性,包括里程碑前缀一致性。 + +**前提条件:** `.planning/ROADMAP.md` 已存在 +**产出:** 验证报告;发现任何错误或警告时以非零值退出 + +```bash +node gsd-tools.cjs roadmap validate +``` + +--- + +### `roadmap upgrade --convention milestone-prefixed` + +将旧版 `Phase N` ID 迁移到以里程碑为前缀的 `Phase M-NN` 约定。 + +| 标志 | 必填 | 描述 | +|------|----------|-------------| +| `--convention milestone-prefixed` | 是 | 要迁移到的目标约定 | +| `--apply` | 否 | 将变更写入磁盘(默认:仅演练) | + +**前提条件:** `.planning/ROADMAP.md` 已存在 +**产出:** 演练差异(默认)或就地 ROADMAP.md 重写(`--apply`) + +```bash +node gsd-tools.cjs roadmap upgrade --convention milestone-prefixed # 演练 +node gsd-tools.cjs roadmap upgrade --convention milestone-prefixed --apply # 应用 +``` + +--- + +## 状态管理命令 + +### `state validate` + +检测 STATE.md 与实际文件系统之间的漂移。 + +**前提条件:** `.planning/STATE.md` 已存在 +**产出:** 验证报告,显示 STATE.md 字段与文件系统实际情况之间的任何漂移 + +```bash +node gsd-tools.cjs state validate +``` + +--- + +### `state sync [--verify]` + +从磁盘上的实际项目状态重建 STATE.md。 + +| 标志 | 描述 | +|------|-------------| +| `--verify` | 演练模式 — 显示建议的变更而不写入 | + +**前提条件:** `.planning/` 目录已存在 +**产出:** 反映文件系统实际情况的已更新 `STATE.md` + +```bash +node gsd-tools.cjs state sync # 从磁盘重建 STATE.md +node gsd-tools.cjs state sync --verify # 演练:显示变更而不写入 +``` + +--- + +### `state planned-phase` + +在 plan-phase 完成后记录状态转换(已规划/准备执行)。 + +| 标志 | 描述 | +|------|-------------| +| `--phase N` | 已规划的阶段编号 | +| `--plans N` | 生成的计划数量 | + +**前提条件:** 阶段已被规划 +**产出:** 包含规划后状态的已更新 `STATE.md` + +```bash +node gsd-tools.cjs state planned-phase --phase 3 --plans 2 +``` + +--- + +## 社区命令 + +### 社区钩子 + +可选的 git 和会话钩子,由 `.planning/config.json` 中的 `hooks.community: true` 控制。除非明确启用,否则均为无操作。 + +| 钩子 | 用途 | +|------|---------| +| `gsd-validate-commit.sh` | 对 git 提交信息强制执行 Conventional Commits 格式 | +| `gsd-session-state.sh` | 跟踪会话状态转换 | +| `gsd-phase-boundary.sh` | 执行阶段边界检查 | + +启用方式: +```json +{ "hooks": { "community": true } } +``` + +--- + +### 社区邀请 + +加入 GSD Discord 社区,请访问 GSD README 中的链接,或运行 `/gsd-help` 并点击其中显示的 Discord 链接。 + +--- + +## 贡献:技能描述标准 + +技能描述(每个 `commands/gsd/*.md` frontmatter 中的 `description:` 字段)会被注入到每个会话的系统提示中。为保持每会话开销较低,描述必须不超过 100 个字符,且不得重复 `argument-hint:` 中已有的标志文档。 + +一个 lint 门执行此预算: + +```bash +npm run lint:descriptions +``` + +该检查也作为 `npm test` 的一部分通过 `tests/enh-2789-description-budget.test.cjs` 运行。 + +--- + +## 相关文档 + +- [配置参考](CONFIGURATION.md) +- [CLI 工具参考](CLI-TOOLS.md) +- [功能参考](FEATURES.md) +- [文档索引](README.md) diff --git a/docs/zh-CN/CONFIGURATION.md b/docs/zh-CN/CONFIGURATION.md new file mode 100644 index 000000000..4e170d0ef --- /dev/null +++ b/docs/zh-CN/CONFIGURATION.md @@ -0,0 +1,1333 @@ +# GSD 配置参考 + +`.planning/config.json` 的完整 schema 参考。有关设置向导和任务操作指南,请参阅[文档索引](README.md)。 + +> 完整配置 schema、工作流开关、模型配置文件及 git 分支选项。有关功能背景,请参阅[功能参考](FEATURES.md)。 + +--- + +## 配置文件 + +GSD 将项目设置存储在 `.planning/config.json` 中。该文件在 `/gsd-new-project` 时创建,通过 `/gsd-settings` 更新。 + +### 完整 Schema + +```json +{ + "mode": "interactive", + "granularity": "standard", + "model_profile": "balanced", + "model_overrides": {}, + "models": {}, + "dynamic_routing": null, + "planning": { + "commit_docs": true, + "search_gitignored": false, + "sub_repos": [] + }, + "context": null, + "workflow": { + "research": true, + "plan_check": true, + "verifier": true, + "auto_advance": false, + "nyquist_validation": true, + "ui_phase": true, + "ui_safety_gate": true, + "ui_review": true, + "node_repair": true, + "node_repair_budget": 2, + "research_before_questions": false, + "discuss_mode": "discuss", + "max_discuss_passes": 3, + "skip_discuss": false, + "human_verify_mode": "end-of-phase", + "tdd_mode": false, + "text_mode": false, + "use_worktrees": true, + "code_review": true, + "code_review_depth": "standard", + "plan_bounce": false, + "plan_bounce_script": null, + "plan_bounce_passes": 2, + "plan_chunked": false, + "code_review_command": null, + "cross_ai_execution": false, + "cross_ai_command": null, + "cross_ai_timeout": 300, + "security_enforcement": true, + "security_asvs_level": 1, + "security_block_on": "high", + "post_planning_gaps": true, + "build_command": null, + "test_command": null + }, + "code_quality": { + "fallow": { + "enabled": false, + "scope": "phase", + "profile": "standard", + "mcp": false + } + }, + "ship": { + "pr_body_sections": [] + }, + "hooks": { + "context_warnings": true, + "workflow_guard": false + }, + "statusline": { + "context_position": "end" + }, + "review": { + "default_reviewers": null, + "models": {} + }, + "parallelization": { + "enabled": true, + "plan_level": true, + "task_level": false, + "skip_checkpoints": true, + "max_concurrent_agents": 3, + "min_plans_for_parallel": 2 + }, + "git": { + "branching_strategy": "none", + "create_tag": true, + "phase_branch_template": "gsd/phase-{phase}-{slug}", + "milestone_branch_template": "gsd/{milestone}-{slug}", + "quick_branch_template": null + }, + "gates": { + "confirm_project": true, + "confirm_phases": true, + "confirm_roadmap": true, + "confirm_breakdown": true, + "confirm_plan": true, + "execute_next_plan": true, + "issues_review": true, + "confirm_transition": true + }, + "safety": { + "always_confirm_destructive": true, + "always_confirm_external_services": true + }, + "project_code": null, + "agent_skills": {}, + "response_language": null, + "features": { + "thinking_partner": false, + "global_learnings": false + }, + "learnings": { + "max_inject": 10 + }, + "intel": { + "enabled": false + }, + "claude_md_path": "./CLAUDE.md" +} +``` + +--- + +## 核心设置 + +| 设置 | 类型 | 可选值 | 默认值 | 描述 | +|---------|------|---------|---------|-------------| +| `mode` | enum | `interactive`, `yolo` | `interactive` | `yolo` 自动批准决策;`interactive` 在每个步骤进行确认 | +| `granularity` | enum | `coarse`, `standard`, `fine` | `standard` | 控制阶段数量:`coarse`(3-5 个)、`standard`(5-8 个)、`fine`(8-12 个) | +| `model_profile` | enum | `quality`, `balanced`, `budget`, `adaptive`, `inherit` | `balanced` | 每个 agent 的模型层级(参见[模型配置文件](#模型配置文件))。`adaptive` 根据 [#1713](https://github.com/open-gsd/gsd-core/issues/1713) / [#1806](https://github.com/open-gsd/gsd-core/issues/1806) 添加,在运行时感知的配置文件下与其他层级以相同方式解析。 | +| `runtime` | string | `claude`, `codex` 或任意字符串 | (无) | [运行时感知配置文件解析](#运行时感知配置文件-2517)的活跃运行时。设置后,配置文件层级(opus/sonnet/haiku)解析为运行时原生模型 ID。目前仅 Codex 安装路径通过此解析器为每个 agent 生成模型 ID;其他运行时(`opencode`、`gemini`、`qwen`、`copilot` 等)在 spawn 时消费该解析器,并在 [#2612](https://github.com/open-gsd/gsd-core/issues/2612) 中获得专用安装路径支持。未设置时(默认),行为与之前版本相同。v1.39 新增 | +| `model_profile_overrides..` | string \| object | 按运行时的层级覆盖 | (无) | 覆盖特定 `(runtime, tier)` 的运行时感知层级映射。层级为 `opus`、`sonnet`、`haiku` 之一。值为模型 ID 字符串(如 `"gpt-5-pro"`)或 `{ model, reasoning_effort }`。参见[运行时感知配置文件](#运行时感知配置文件-2517)。v1.39 新增 | +| `model_policy.provider` | string | `openai`, `anthropic`, `google`, `qwen`, `generic` | (无) | 声明模型提供商。已知提供商(`openai`、`anthropic`、`google`、`qwen`)启用基于目录的预设。`generic` 将所有模型 ID 视为不透明字符串——无前缀推断,无推理努力默认值。`model_policy.runtime_tiers` 在旧版 `model_profile_overrides` 之前解析。参见[模型策略预设](#模型策略预设-model_policy--v142-新增)。v1.42 新增([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.budget` | enum | `high`, `medium`, `low` | (无) | 使用已知提供商时选择预算层级。GSD 在解析时将匹配的目录预设具体化为显式层级映射。当 `provider` 为 `generic` 或 `custom` 时忽略。v1.42 新增([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.high` | string | 模型 ID | (无) | `generic`/`custom` 提供商的高成本层级模型 ID。当 `provider: "generic"` 或 `"custom"` 时使用。v1.42 新增([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.medium` | string | 模型 ID | (无) | `generic`/`custom` 提供商的中等成本层级模型 ID。v1.42 新增([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.low` | string | 模型 ID | (无) | `generic`/`custom` 提供商的低成本层级模型 ID。v1.42 新增([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `model_policy.runtime_tiers..` | object | `{ model, reasoning_effort? }` | (无) | 按运行时、按层级的显式模型条目。`tier` 为 `opus`、`sonnet`、`haiku` 之一(与现有配置文件层级名称匹配)。`reasoning_effort` 仅转发给支持它的运行时;不支持的运行时不会接收该字段。优先级高于 `model_profile_overrides`。v1.42 新增([#49](https://github.com/open-gsd/gsd-core/issues/49)) | +| `models.` | enum | `opus`, `sonnet`, `haiku`, `inherit` | (无) | 按阶段类型的模型层级。六个可接受的槽位:`planning`、`discuss`、`research`、`execution`、`verification`、`completion`。允许在阶段级别调整("规划用 Opus,其余用 Sonnet"),而无需了解 agent 名称。解析优先级在 `model_overrides`(更高)和 `model_profile`(更低)之间;参见[按阶段类型的模型](#按阶段类型的模型-models--v140-新增)。v1.40 新增([#3023](https://github.com/open-gsd/gsd-core/pull/3030)) | +| `dynamic_routing.enabled` | boolean | `true`, `false` | `false` | [动态路由与失败层级升级](#动态路由与失败层级升级-dynamic_routing--v140-新增)的主开关。为 `true` 时,agent 解析为 `tier_models[default_tier]`,并在编排器检测到软性失败时升级一个层级。v1.40 新增([#3024](https://github.com/open-gsd/gsd-core/pull/3031)) | +| `dynamic_routing.tier_models.` | enum | `opus`, `sonnet`, `haiku` | (无) | `light`、`standard` 或 `heavy` 的层级别名。当 `dynamic_routing.enabled: true` 时使用。v1.40 新增 | +| `dynamic_routing.escalate_on_failure` | boolean | `true`, `false` | `true` | 为 `false` 时,即使 `enabled: true` 也禁用升级——每次尝试使用默认层级。v1.40 新增 | +| `dynamic_routing.max_escalations` | integer | `0`, `1`, `2`, … | `1` | 每次 agent 调用的硬性重试上限。超过上限后,解析器返回上限层级的模型。v1.40 新增 | +| `project_code` | string | 任意短字符串 | (无) | 阶段目录名称的前缀(如 `"ABC"` 生成 `ABC-01-setup/`)。v1.31 新增 | +| `phase_id_convention` | enum | `"milestone-prefixed"`, `null` | `null` | 阶段 ID 命名规范。`null` = 旧版数字 ID(`Phase 1`、`Phase 2`)。`"milestone-prefixed"` = 编码所属里程碑的全局唯一 ID(`Phase 1-01`、`Phase 1-02`)。运行 `gsd-tools roadmap upgrade --convention milestone-prefixed` 迁移现有 ROADMAP.md。 | +| `response_language` | string | 语言代码 | (无) | agent 响应语言(如 `"pt"`、`"ko"`、`"ja"`)。传播至所有派生 agent,实现跨阶段语言一致性。v1.32 新增 | +| `context_window` | number | 任意整数 | `200000` | 上下文窗口大小(token 数)。对于 1M 上下文模型(如 `claude-opus-4-7[1m]`),设置为 `1000000`。`>= 500000` 的值启用自适应上下文增强(完整读取之前的 SUMMARY.md,更深入的反模式读取)。通过 `/gsd-config --advanced` 配置。 | +| `context_profile` | string | `dev`, `research`, `review` | (无) | 执行上下文预设,为当前工作类型应用预配置的模式、模型和工作流设置包。v1.34 新增 | +| `claude_md_path` | string | 任意文件路径 | `./CLAUDE.md` | 生成的 CLAUDE.md 文件的自定义输出路径。适用于需要将 CLAUDE.md 放在非根目录位置的 monorepo 或项目。默认为项目根目录下的 `./CLAUDE.md`。v1.36 新增 | +| `claude_md_assembly.mode` | enum | `embed`, `link` | `embed` | 控制如何将受管理的节写入 CLAUDE.md。`embed`(默认)在 GSD 标记之间内联内容。`link` 改为写入 `@.planning/`——Claude Code 在运行时展开引用,在典型项目中将 CLAUDE.md 大小减少约 65%。`link` 仅适用于有真实源文件的节;`workflow` 和回退节始终嵌入。按块覆盖:`claude_md_assembly.blocks.
`(如 `claude_md_assembly.blocks.architecture: link`)。v1.38 新增 | +| `context` | string | 任意文本 | (无) | 注入到项目所有 agent 提示词中的自定义上下文字符串。用于提供每个 agent 都应了解的持久性项目特定指导(如编码规范、团队实践) | +| `phase_naming` | string | 任意字符串 | (无) | 阶段目录名称的自定义前缀。设置后,覆盖自动生成的阶段 slug(如 `"feature"` 生成 `feature-01-setup/` 而非路线图派生的 slug) | +| `brave_search` | boolean | `true`/`false` | 自动检测 | 覆盖 Brave Search API 可用性的自动检测。未设置时,GSD 检查 `BRAVE_API_KEY` 环境变量或 `~/.gsd/brave_api_key` 文件 | +| `firecrawl` | boolean | `true`/`false` | 自动检测 | 覆盖 Firecrawl API 可用性的自动检测。未设置时,GSD 检查 `FIRECRAWL_API_KEY` 环境变量或 `~/.gsd/firecrawl_api_key` 文件 | +| `exa_search` | boolean | `true`/`false` | 自动检测 | 覆盖 Exa Search API 可用性的自动检测。未设置时,GSD 检查 `EXA_API_KEY` 环境变量或 `~/.gsd/exa_api_key` 文件 | +| `search_gitignored` | boolean | `true`/`false` | `false` | `planning.search_gitignored` 的旧版顶层别名。优先使用命名空间形式;此别名为向后兼容而保留 | + +> **注意:** `granularity` 在 v1.22.3 中从 `depth` 重命名而来。现有配置会自动迁移。 + +--- + +## 集成设置 + +通过 [`/gsd-config --integrations`](COMMANDS.md#gsd-config) 交互式配置。这些是*连接*设置——API 密钥和跨工具路由——特意与 `/gsd-settings`(工作流开关)分开。 + +### 搜索 API 密钥 + +API 密钥字段接受字符串值(密钥本身)。也可以设置为哨兵值 `true`/`false`/`null` 来覆盖来自环境变量 / `~/.gsd/*_api_key` 文件的自动检测(旧版行为,参见上方各行)。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `brave_search` | string \| boolean \| null | `null` | 用于网络研究的 Brave Search API 密钥。在所有 UI / `config-set` 输出中显示为 `****<末4位>`;从不以明文回显 | +| `firecrawl` | string \| boolean \| null | `null` | 用于深度抓取的 Firecrawl API 密钥。显示时已脱敏 | +| `exa_search` | string \| boolean \| null | `null` | 用于语义搜索的 Exa Search API 密钥。显示时已脱敏 | + +**脱敏规范(`get-shit-done/bin/lib/secrets.cjs`):** 8 个字符及以上的密钥显示为 `****<末4位>`;较短的密钥显示为 `****`;`null`/空值显示为 `(unset)`。明文原样写入 `.planning/config.json`——该文件是安全边界——但 CLI、确认表格、日志和 `AskUserQuestion` 描述中不显示明文。这也适用于 `config-set` 命令本身的输出:`config-set brave_search ` 返回带脱敏值的 JSON 负载。 + +### 代码审查 CLI 路由 + +`review.models.` 将审查器类型映射到 shell 命令。当请求匹配的类型时,代码审查工作流使用此命令进行 shell 调用。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `review.models.claude` | string | (会话模型) | Claude 风格审查的命令。未设置时默认使用会话模型 | +| `review.models.codex` | string | `null` | Codex 审查命令,如 `"codex exec --model gpt-5"` | +| `review.models.gemini` | string | `null` | Gemini 审查命令,如 `"gemini -m gemini-2.5-pro"` | +| `review.models.opencode` | string | `null` | OpenCode 审查命令,如 `"opencode run --model claude-sonnet-4"` | + +`` slug 需通过 `[a-zA-Z0-9_-]+` 验证。空值或包含路径的 slug 会被 `config-set` 拒绝。 + +### `/gsd-review` 的默认审查器 + +使用 `review.default_reviewers` 将无标志的 `/gsd-review` 运行限定为已检测审查器的子集。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `review.default_reviewers` | string[] \| null | `null`(所有已检测审查器) | 无标志 `/gsd-review` 的可选默认子集,如 `["gemini","codex"]`。优先级顺序:显式审查器标志 > `--all` > `review.default_reviewers` > 所有已检测。未知 slug 以警告忽略;已知但未检测到的 slug 以信息提示忽略;空数组会被 `config-set` 拒绝。 | + +示例: + +```json +{ + "review": { + "default_reviewers": ["gemini", "codex"] + } +} +``` + +### Agent 技能注入(动态) + +`agent_skills.` 扩展下方记录的 `agent_skills` 映射。slug 需通过 `[a-zA-Z0-9_-]+` 验证——无路径分隔符、无空格、无 shell 元字符。通过 `/gsd-config --integrations` 交互式配置。 + +--- + +## 工作流开关 + +所有工作流开关遵循**缺失 = 启用**模式。如果配置中缺少某个键,默认值为 `true`。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `workflow.research` | boolean | `true` | 规划每个阶段前进行领域调研 | +| `workflow.plan_check` | boolean | `true` | 计划验证循环(最多 3 次迭代) | +| `workflow.verifier` | boolean | `true` | 执行后针对阶段目标的验证 | +| `workflow.auto_advance` | boolean | `false` | 自动串联 discuss → plan → execute,无需停顿 | +| `workflow.nyquist_validation` | boolean | `true` | 计划阶段研究期间的测试覆盖率映射 | +| `workflow.ui_phase` | boolean | `true` | 为前端阶段生成 UI 设计契约 | +| `workflow.ui_safety_gate` | boolean | `true` | 在计划阶段期间,提示为前端阶段运行 /gsd-ui-phase | +| `workflow.ui_review` | boolean | `true` | 在自主模式下阶段执行后运行视觉质量审计(`/gsd-ui-review`)。为 `false` 时跳过 UI 审计步骤。 | +| `workflow.node_repair` | boolean | `true` | 验证失败时自主任务修复 | +| `workflow.node_repair_budget` | number | `2` | 每个失败任务的最大修复尝试次数 | +| `workflow.research_before_questions` | boolean | `false` | 在讨论问题之前而非之后运行研究 | +| `workflow.discuss_mode` | string | `'discuss'` | 控制 `/gsd-discuss-phase` 如何收集上下文。`'discuss'`(默认)逐一提问。`'assumptions'` 先读取代码库,生成带置信度的结构化假设,只要求纠正错误内容。v1.28 新增 | +| `workflow.max_discuss_passes` | number | `3` | 工作流停止提问前讨论阶段的最大轮数。在无头/自动模式下防止无限讨论循环。 | +| `workflow.skip_discuss` | boolean | `false` | 为 `true` 时,`/gsd-autonomous` 完全跳过讨论阶段,从 ROADMAP 阶段目标写入最简 CONTEXT.md。适用于开发者偏好已完整写入 PROJECT.md/REQUIREMENTS.md 的项目。v1.28 新增 | +| `workflow.text_mode` | boolean | `false` | 将 AskUserQuestion TUI 菜单替换为纯文本编号列表。在 TUI 菜单无法渲染的 Claude Code 远程会话(`/rc` 模式)中必需。也可通过讨论阶段的 `--text` 标志按会话设置。v1.28 新增 | +| `workflow.use_worktrees` | boolean | `true` | 为 `false` 时,禁用并行执行的 git worktree 隔离。偏好顺序执行或环境不支持 worktree 的用户可以禁用此选项。v1.31 新增 | +| `workflow.worktree_skip_hooks` | boolean | `false` | 为 `true` 时,worktree 模式下的执行器 agent 传递 `--no-verify`(跳过提交前钩子),波次后的钩子验证改为针对合并结果运行。适用于钩子无法在 agent worktree 中运行的项目的可选逃生舱口。默认 `false` 对每次提交运行钩子(#2924)。 | +| `workflow.code_review` | boolean | `true` | 启用 `/gsd-code-review` 和 `/gsd-code-review --fix` 命令。为 `false` 时,命令以配置门禁消息退出。v1.34 新增 | +| `workflow.code_review_depth` | string | `standard` | `/gsd-code-review` 的默认审查深度:`quick`(仅模式匹配)、`standard`(按文件分析)或 `deep`(带导入图的跨文件)。可通过 `--depth=` 按次运行覆盖。v1.34 新增 | +| `workflow.plan_bounce` | boolean | `false` | 针对生成的计划运行外部验证脚本。启用后,计划阶段编排器将每个 PLAN.md 通过 `plan_bounce_script` 指定的脚本管道处理,并在非零退出时阻塞。v1.36 新增 | +| `workflow.plan_bounce_script` | string | (无) | 用于计划反弹验证的外部脚本路径。接收 PLAN.md 路径作为第一个参数。当 `plan_bounce` 为 `true` 时必需。v1.36 新增 | +| `workflow.plan_bounce_passes` | number | `2` | 顺序执行的反弹轮数。每轮将上一轮的输出反馈给验证器。较高的值提升严格性,但会增加延迟。v1.36 新增 | +| `workflow.post_planning_gaps` | boolean | `true` | 统一的规划后差距报告(#2493)。所有计划生成并提交后,扫描 REQUIREMENTS.md 和 CONTEXT.md 的 `` 与阶段目录中的每个 PLAN.md,然后打印一个 `Source \| Item \| Status` 表格。单词边界匹配(REQ-1 vs REQ-10)和自然排序(REQ-02 在 REQ-10 之前)。非阻塞——仅为信息性报告。设为 `false` 跳过计划阶段的步骤 13e。 | +| `workflow.plan_review_convergence` | boolean | `false` | 启用 `/gsd-plan-review-convergence` 命令。默认禁用——此键为 `false` 时命令以启用说明退出。该命令自动化手动计划→审查→重新规划循环:派生已配置的审查器(Codex、Gemini、Claude、OpenCode、Ollama、LM Studio、llama.cpp),通过 CYCLE_SUMMARY 契约计算未解决的 HIGH 问题,用 `--reviews` 反馈重新规划,并重复直至收敛或达到最大循环次数。通过 `gsd config-set workflow.plan_review_convergence true` 启用。v1.39 新增 | +| `workflow.plan_chunked` | boolean | `false` | 启用分块规划模式。为 `true`(或向 `/gsd-plan-phase` 传递 `--chunked` 标志)时,编排器将单个长期规划器任务拆分为一个简短的轮廓任务,后跟 N 个简短的按计划任务(每个约 3-5 分钟)。每个计划单独提交以具备崩溃韧性。如果任务挂起且终端被强制终止,使用 `--chunked` 重新运行将从最后完成的计划处恢复。在长期任务可能在 stdio 上挂起的 Windows 上特别有用。v1.38 新增 | +| `workflow.code_review_command` | string | (无) | `/gsd-ship` 中外部代码审查集成的 shell 命令。通过 stdin 接收更改的文件路径。非零退出阻塞发布工作流。v1.36 新增 | +| `workflow.tdd_mode` | boolean | `false` | 将 TDD 流水线作为一等执行模式启用。为 `true` 时,规划器积极地将 `type: tdd` 应用于符合条件的任务(业务逻辑、API、验证、算法),执行器强制执行 RED/GREEN/REFACTOR 门禁序列。阶段结束时的协作审查检查点验证门禁合规性。v1.36 新增 | +| `workflow.human_verify_mode` | string | `'end-of-phase'` | 控制人工验证检查点。`'end-of-phase'`(自 #3309 起为默认值)抑制 `checkpoint:human-verify` 任务,并将检查嵌入 `` 块以供阶段结束审查。`'mid-flight'` 恢复阻塞式检查点任务。`checkpoint:decision` 和 `checkpoint:human-action` 不受影响。参见[检查点参考](../../get-shit-done/references/checkpoints.md#checkpoint_types)。 | +| `workflow.cross_ai_execution` | boolean | `false` | 将阶段执行委托给外部 AI CLI,而非派生本地执行器 agent。适用于利用不同模型在特定阶段的优势。v1.36 新增 | +| `workflow.cross_ai_command` | string | (无) | 跨 AI 执行的 shell 命令模板。通过 stdin 接收阶段提示词。必须生成与 SUMMARY.md 兼容的输出。当 `cross_ai_execution` 为 `true` 时必需。v1.36 新增 | +| `workflow.cross_ai_timeout` | number | `300` | 跨 AI 执行命令的超时秒数。防止失控的外部进程。v1.36 新增 | +| `workflow.ai_integration_phase` | boolean | `true` | 启用 `/gsd-ai-integration-phase` 命令。为 `false` 时,命令以配置门禁消息退出 | +| `workflow.auto_prune_state` | boolean | `false` | 为 `true` 时,在阶段边界自动清理 STATE.md 中的过期条目,而非提示确认 | +| `workflow.pattern_mapper` | boolean | `true` | 在研究和规划之间运行 `gsd-pattern-mapper` agent,将新文件映射到现有代码库类似物 | +| `workflow.subagent_timeout` | number | `600` | 单个 subagent 调用的超时秒数。对于长时间运行的研究或执行阶段可适当增加 | +| `executor.stall_detect_interval_minutes` | number | `5` | 执行器 agent 活跃时,执行器停滞检测的间隔分钟数。执行阶段编排器以此频率检查最近的提交,避免无限等待静默的 agent。 | +| `executor.stall_threshold_minutes` | number | `10` | 执行器完成或预期分支提交活动缺失超过此分钟数后,执行阶段为可能停滞的执行器提供恢复选项。 | +| `workflow.inline_plan_threshold` | number | `3` | 阶段中任务数量的最大值,超过此值后规划器生成单独的 PLAN.md 文件而非在提示词中内联任务 | +| `workflow.drift_threshold` | number | `3` | 阶段期间引入的新结构元素(新目录、桶形导出、迁移、路由模块)的最小数量,超过此值后执行后代码库漂移门禁采取行动。参见 [#2003](https://github.com/open-gsd/gsd-core/issues/2003)。v1.39 新增 | +| `workflow.drift_action` | string | `warn` | `/gsd-execute-phase` 后超过 `workflow.drift_threshold` 时的处理方式。`warn` 打印建议运行 `/gsd-map-codebase --paths …` 的消息;`auto-remap` 派生 `gsd-codebase-mapper` 限定于受影响路径。v1.39 新增 | +| `workflow.build_command` | string | (无) | 在执行阶段步骤 5.6 的步骤 A 中(合并后构建门禁)构建项目的 shell 命令。未设置时,门禁自动检测:Xcode(存在 `.xcodeproj`)→ `xcodebuild build`,带 `build:` 目标的 `Makefile` → `make build`,Justfile → `just build`,`Cargo.toml` → `cargo build`,`go.mod` → `go build ./...`,Python → `python -m py_compile`,带 `build` 脚本的 `package.json` → `npm run build`。5 分钟超时运行;失败时递增 `WAVE_FAILURE_COUNT`。v1.39 新增 | +| `workflow.test_command` | string | (无) | 在执行阶段步骤 5.6 的步骤 B 中(合并后测试门禁)和回归门禁中运行项目测试套件的 shell 命令。未设置时,门禁自动检测:Xcode(存在 `.xcodeproj`)→ `xcodebuild test`,带 `test:` 目标的 `Makefile` → `make test`,Justfile → `just test`,`package.json` → `npm test`,`Cargo.toml` → `cargo test`,`go.mod` → `go test ./...`,Python → `python -m pytest`。5 分钟超时运行;失败时递增 `WAVE_FAILURE_COUNT`。v1.39 新增 | + +## 代码质量设置 + +`code_quality.*` 命名空间控制可选的结构分析工具,作为 `/gsd-code-review` 的补充。各设置为增量式:每个工具独立选择启用,默认关闭。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `code_quality.fallow.enabled` | boolean | `false` | 为 `/gsd-code-review` 启用 fallow 结构预处理。为 `false` 时,不生成 fallow 二进制探针或 JSON 产物。 | +| `code_quality.fallow.scope` | string | `phase` | fallow 分析范围:`phase`(当前审查文件范围)或 `repo`(整个仓库)。 | +| `code_quality.fallow.profile` | string | `standard` | 传递给预处理运行器的 fallow 配置文件选择器(`minimal`、`standard`、`strict`)。 | +| `code_quality.fallow.mcp` | boolean | `false` | **保留——尚未实现。** 为 `true` 时,为支持 MCP 服务器路由的运行时启用基于 MCP 的结构性发现模式。当前将此设为 `true` 是无操作,并会发出运行时警告。 | + +## 发布设置 + +`ship.pr_body_sections` 为 `/gsd-ship` 添加额外的 PR 正文节,用于项目特定的 PRD/PR 正文内容,而无需编辑 `get-shit-done/workflows/ship.md`。 + +有关入门示例和故障排除的用户指南,请参阅[自定义 PR 正文节](../ship-pr-body-sections.md)。 + +此列表为仅追加:已配置的条目在核心的 `Summary`、`Changes`、`Requirements Addressed`、`Verification` 和 `Key Decisions` 节之后添加。它们不能替换、删除或重新排序必需节。 + +推荐的精益/敏捷 PRD 用途包括用户故事、验收标准、完成定义或发布标准、风险和依赖关系、成功指标以及利益相关者审查说明。保持这些节简短且以证据为导向,使 PR 正文成为活跃的发布产物而非静态需求转储。 + +每个条目支持: + +| 字段 | 类型 | 默认值 | 描述 | +|-------|------|---------|-------------| +| `heading` | string | 必需 | 渲染为 `## {heading}` 的 Markdown 节标题。必须为单行。 | +| `enabled` | boolean | `true` | 为 `false` 时,入门时可在配置中保留候选节而不在生成的 PR 正文中渲染。 | +| `source` | string | (无) | 规划产物标题的可选回退链,如 `PLAN.md ## Risks \|\| VERIFICATION.md ## Manual Checks`。允许的产物有 `ROADMAP.md`、`PLAN.md`、`SUMMARY.md`、`VERIFICATION.md`、`STATE.md`、`REQUIREMENTS.md` 和 `CONTEXT.md`。 | +| `template` | string | (无) | 带封闭 token 的字面 Markdown:`{phase_number}`、`{phase_name}`、`{phase_dir}`、`{base_branch}`、`{padded_phase}`。 | +| `fallback` | string | (无) | 当 `source` 不产生内容且未提供 `template` 时使用的字面 Markdown。 | + +每个节至少需要 `source`、`template` 或 `fallback` 之一。默认为 `[]`,因此现有项目在入门添加启用条目之前保持当前的 `/gsd-ship` 输出。 + +示例: + +```json +{ + "ship": { + "pr_body_sections": [ + { + "heading": "User Stories & Acceptance Criteria", + "enabled": true, + "source": "REQUIREMENTS.md ## User Stories || REQUIREMENTS.md ## Acceptance Criteria", + "fallback": "- Acceptance criteria are covered by the linked requirements and verification evidence." + }, + { + "heading": "Risks & Rollback", + "enabled": true, + "source": "PLAN.md ## Risks || PLAN.md ## Rollback", + "fallback": "- Rollback: revert this PR." + }, + { + "heading": "Stakeholder Sign-off", + "enabled": false, + "template": "- Product owner: pending for {phase_name}" + } + ] + } +} +``` + +### 常用设置组合 + +以下 `mode`、`granularity`、`model_profile` 和工作流开关的组合常常一起使用。有关设置指导,请参阅[配置模型配置文件](how-to/configure-model-profiles.md)。 + +| 场景 | mode | granularity | profile | research | plan_check | verifier | +|----------|------|-------------|---------|----------|------------|----------| +| 原型开发 | `yolo` | `coarse` | `budget` | `false` | `false` | `false` | +| 常规开发 | `interactive` | `standard` | `balanced` | `true` | `true` | `true` | +| 生产发布 | `interactive` | `fine` | `quality` | `true` | `true` | `true` | + +--- + +## 规划设置 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `planning.commit_docs` | boolean | `true` | `.planning/` 文件是否提交到 git | +| `planning.search_gitignored` | boolean | `false` | 向大范围搜索添加 `--no-ignore` 以包含 `.planning/` | +| `planning.sub_repos` | string 数组 | `[]` | 相对于项目根目录的嵌套子仓库路径。设置后,GSD 感知工具按子仓库划定阶段查找、路径解析和提交操作的范围,而非将外层仓库视为 monorepo | + +### 多仓库工作空间中的项目根目录解析 + +当设置了 `sub_repos` 且从列出的子仓库内部调用 `gsd-tools.cjs` 或 `gsd-tools query` 时,两个 CLI 都会向上走到拥有 `.planning/` 的父工作空间,然后再分发处理程序。解析顺序(在每个祖先最多向上检查 10 层,不超过 `$HOME`): + +1. 如果起始目录本身有 `.planning/`,则其为项目根目录(不向上走)。 +2. 父目录有 `.planning/config.json`,且其 `sub_repos`(或旧版 `planning.sub_repos` 形式)中列出了起始目录的顶层段。 +3. 父目录有 `.planning/config.json`,带旧版 `multiRepo: true`,且起始目录在某个 git 仓库内。 +4. 父目录有 `.planning/`,且候选父目录到某个祖先之间包含 `.git`(启发式回退)。 + +如果都不匹配,则返回起始目录不变。显式的 `--project-dir /path/to/workspace` 在此解析下是幂等的。 + +### 自动检测 + +如果 `.planning/` 在 `.gitignore` 中,则 `commit_docs` 自动为 `false`,无论 config.json 如何设置。这可防止 git 错误。 + +--- + +## 钩子设置 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `hooks.context_warnings` | boolean | `true` | 通过上下文监控钩子显示上下文窗口使用警告 | +| `hooks.workflow_guard` | boolean | `false` | 当文件编辑发生在 GSD 工作流上下文之外时发出警告(建议使用 `/gsd-quick` 或 `/gsd-fast`) | +| `statusline.show_last_command` | boolean | `false` | 向状态行追加 `last: /` 后缀,显示最近调用的斜杠命令。选择性启用;读取活跃会话记录以提取最新的 `` 标签(关闭 #2538) | +| `statusline.context_position` | string | `"end"` | 上下文窗口计量器的位置。`"end"`(默认)在行尾渲染;`"front"` 在模型名称后立即渲染,使计量器在窄终端中保持可见。关闭 #2937 | + +提示词注入防护钩子(gsd-prompt-guard.js)始终激活,无法禁用——它是安全特性,而非工作流开关。 + +### 私有规划设置 + +当 `planning.commit_docs` 为 `false` 且 `.planning/` 在 `.gitignore` 中时,GSD 将规划产物视为仅本地存在。`planning.search_gitignored: true` 确保此配置下大范围搜索仍然包含 `.planning/` 目录。有关设置步骤,请参阅[配置私有规划](how-to/configure-model-profiles.md)。 + +--- + +## Agent 技能注入 + +向 GSD subagent 提示词注入自定义技能文件。技能在 agent spawn 时读取,为其提供 CLAUDE.md 之外的项目特定指令。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `agent_skills` | object | `{}` | agent 类型到技能目录路径的映射 | + +### 配置 + +在 `.planning/config.json` 中添加 `agent_skills` 节,将 agent 类型映射到技能目录路径数组(相对于项目根目录): + +```json +{ + "agent_skills": { + "gsd-executor": ["skills/testing-standards", "skills/api-conventions"], + "gsd-planner": ["skills/architecture-rules"], + "gsd-verifier": ["skills/acceptance-criteria"] + } +} +``` + +每个路径必须是包含 `SKILL.md` 文件的目录。路径经过安全验证(不允许遍历到项目根目录之外)。 + +### 支持的 Agent 类型 + +任何 GSD agent 类型都可以接收技能。常用类型: + +- `gsd-executor` -- 执行实施计划 +- `gsd-planner` -- 创建阶段计划 +- `gsd-checker` -- 验证计划质量 +- `gsd-verifier` -- 执行后验证 +- `gsd-researcher` -- 阶段研究 +- `gsd-project-researcher` -- 新项目研究 +- `gsd-debugger` -- 诊断 agent +- `gsd-codebase-mapper` -- 代码库分析 +- `gsd-advisor` -- 讨论阶段顾问 +- `gsd-ui-researcher` -- UI 设计契约创建 +- `gsd-ui-checker` -- UI 规格验证 +- `gsd-roadmapper` -- 路线图创建 +- `gsd-synthesizer` -- 研究综合 + +### 工作原理 + +在 spawn 时,工作流调用 `gsd-tools query agent-skills `(或旧版 `node gsd-tools.cjs agent-skills `)来加载已配置的技能。如果该 agent 类型存在技能,它们将作为 `` 块注入到 Task() 提示词中: + +```xml + +Read these user-configured skills: +- @skills/testing-standards/SKILL.md +- @skills/api-conventions/SKILL.md + +``` + +如果未配置技能,则省略该块(零开销)。 + +### CLI + +通过 CLI 设置技能: + +```bash +gsd-tools query config-set agent_skills.gsd-executor '["skills/my-skill"]' +``` + +--- + +## 功能标志 + +通过 `features.*` 配置命名空间切换可选功能。功能标志默认为 `false`(禁用)——启用标志即选择新行为,不影响现有工作流。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `features.thinking_partner` | boolean | `false` | 在工作流决策点启用思维伙伴分析 | +| `features.global_learnings` | boolean | `false` | 启用跨项目学习流水线(阶段完成时自动复制,注入规划器) | +| `learnings.max_inject` | number | `10` | 注入每个规划器提示词的最大跨项目学习数量。较低值减少提示词大小;较高值提供更广泛的历史上下文 | +| `intel.enabled` | boolean | `false` | 启用可查询的代码库情报系统。为 `true` 时,`/gsd-map-codebase --query` 命令在 `.planning/intel/` 中构建和查询 JSON 索引。v1.34 新增 | + + +### 计划审查设置 + +`plan_review.*` 命名空间控制计划漂移防护,该功能验证生成计划中引用的符号(装饰器、类、函数、CLI 标志)在审查时实际存在于源代码中。这在执行开始前捕获幻觉名称。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `plan_review.source_grounding` | boolean | `true` | 启用计划漂移防护。为 `true`(默认)时,计划审查将 PLAN.md 中引用的每个符号与实时源代码树对比解析。引用不存在的函数、类、装饰器或 CLI 标志的计划在计划批准前产生 `needs-acknowledgement` 通知。设为 `false` 完全跳过符号验证。可在设置期间(`/gsd:new-project`)或随时通过 `/gsd:settings` 切换。 | +| `plan_review.source_grounding_authority` | enum | `grep` | 选择用于验证符号存在性的解析器适配器。允许值:`grep`(默认——对源文件进行 ripgrep/grep 搜索,任何项目无需额外工具即可使用),`intel`(查询 `/gsd:map-codebase` 构建的 `.planning/intel/api-map.json` 索引;需要 `intel.enabled: true`),`treesitter`(保留用于未来的 tree-sitter 适配器),`lsp`(保留用于未来的 LSP 适配器),`scip`(保留用于未来的 SCIP/LSIF 适配器)。当您已运行 `/gsd:map-codebase` 并希望使用更快的预索引查找时,使用 `intel`。`grep` 和 `intel` 之外的所有值均为保留值,在当前版本中无效。 | + + +### Graphify 设置 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `graphify.enabled` | boolean | `false` | 启用项目知识图谱。为 `true` 时,`/gsd-graphify` 在 `.planning/graphs/` 中构建和查询图谱。v1.36 新增 | +| `graphify.build_timeout` | number(秒) | `300` | `/gsd-graphify build` 运行中止前的最大允许秒数。v1.36 新增 | +| `graphify.auto_update` | boolean | `false` | **选择性启用(issue #3347)。** 为 `true`(且 `graphify.enabled` 也为 `true`)时,捆绑的 PostToolUse 钩子 `hooks/gsd-graphify-update.sh` 在默认分支(`git.base_branch` 覆盖,否则为 `main`/`master`/`trunk`)上执行 `git commit/merge/pull/rebase --continue/cherry-pick` 后,在后台分离进程中自动重建项目知识图谱。钩子立即返回;重建更新 `.planning/graphs/{graph.json,graph.html,GRAPH_REPORT.md}` 并写入 `.planning/graphs/.last-build-status.json`(`{ts, status: "running"\|"ok"\|"failed", exit_code, duration_ms, head_at_build}`)。PID 锁定,CI 感知(`$CI` 环境变量抑制),若 `graphify` 不在 `PATH` 中则静默退出。默认 `false`,升级后现有行为不变。 | + +#### 多开发者设置 + +当多个开发者在同一仓库中重建图谱时,`graphify hook install`(每个克隆运行一次)安装一个 git 合并驱动程序,对并发的 `graph.json` 写入进行联合合并,消除冲突标记。它还注册提交后重建钩子,写入 `.gitattributes`,并将 `graphify merge-driver` 添加到 `.git/config`。单人项目可跳过此步骤。随 graphify v0.7.0 一同引入,以及 `/gsd-graphify status` 显示的 `built_at_commit` 新鲜度信号。 + +#### 基于提交的过期性 + +`/gsd-graphify status` 报告两个正交的过期性信号: + +- **`stale`**(基于 mtime,24 小时窗口)——图谱文件最后写入时间。在 graphify 未自动运行时有用。 +- **`commit_stale`**(基于提交,需要 graphify v0.7+)——图谱是否针对当前 `git HEAD` 构建。存在时可信。 + 三态值:`true` / `false` / `null`。`null` 表示信号不可用(v0.7 之前的图谱、无 git 或无法访问提交)——回退到 mtime 标志。 + +在旧检出上重建的 CI 图谱在 mtime 上显示为新鲜,但 `commit_stale: true`。回答架构问题时两者都应呈现。 + +### 用法 + +```bash +# 启用功能 +gsd-tools query config-set features.global_learnings true + +# 禁用功能 +gsd-tools query config-set features.thinking_partner false +``` + +`features.*` 命名空间是动态键模式——无需修改 `VALID_CONFIG_KEYS` 即可添加新的功能标志。任何匹配 `features.` 的键都被配置系统接受。 + +--- + +## 并行化设置 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `parallelization` | boolean | `true` | `parallelization.enabled` 的简写。设置 `parallelization false` 禁用并行执行而不更改其他子键 | +| `parallelization.enabled` | boolean | `true` | 同时运行独立计划 | +| `parallelization.plan_level` | boolean | `true` | 在计划级别并行化 | +| `parallelization.task_level` | boolean | `false` | 并行化计划内的任务 | +| `parallelization.skip_checkpoints` | boolean | `true` | 并行执行期间跳过检查点 | +| `parallelization.max_concurrent_agents` | number | `3` | 最大同时 agent 数 | +| `parallelization.min_plans_for_parallel` | number | `2` | 触发并行执行的最小计划数 | + +> **提交前钩子和并行执行**:当并行化启用时,执行器 agent 使用 `--no-verify` 提交,以避免构建锁争用(如 Rust 项目中的 cargo lock 冲突)。编排器在每个波次完成后统一验证钩子。STATE.md 写入通过文件级锁保护,防止并发写入损坏。如果需要每次提交都运行钩子,请设置 `parallelization.enabled: false`。 + +--- + +## STATE.md 前言(阶段生命周期) + +`STATE.md` 携带 YAML 前言,状态行钩子在每次渲染时读取。v1.40 添加了四个可选的阶段生命周期字段,由 `parseStateMd()` 读取并由 `formatGsdState()` 渲染: + +| 字段 | 类型 | 用途 | +|-------|------|---------| +| `active_phase` | string(如 `"4.5"`) | 编排器命令执行中时的阶段编号 | +| `next_action` | string | 空闲时推荐的下一个命令(`discuss-phase` / `plan-phase` / `execute-phase` / `verify-phase`) | +| `next_phases` | YAML 流数组 | `next_action` 适用的阶段(如 `["4.5"]`) | +| `progress` | block | 嵌套的 `total_phases` / `completed_phases` / `percent`,用于里程碑进度条 | + +所有四个字段均为**可选且增量式**——没有这些字段的 STATE.md 文件与 v1.38.x 中的渲染完全相同。有关完整字段参考、解析器约束和渲染场景,请参阅 [STATE.md schema](reference/state-md.md)。 + +--- + +## Git 分支 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `git.branching_strategy` | enum | `none` | `none`、`phase` 或 `milestone` | +| `git.base_branch` | string | `main` | 创建阶段/里程碑分支并合并回的集成分支。当仓库使用 `master` 或发布分支时可覆盖 | +| `git.create_tag` | boolean | `true` | 在里程碑完成时创建 git 标签(`v[X.Y]`)。对于有自己发布流程的项目,设为 `false` | +| `git.phase_branch_template` | string | `gsd/phase-{phase}-{slug}` | 阶段策略的分支名称模板 | +| `git.milestone_branch_template` | string | `gsd/{milestone}-{slug}` | 里程碑策略的分支名称模板 | +| `git.quick_branch_template` | string 或 null | `null` | `/gsd-quick` 任务的可选分支名称模板 | + +### 策略对比 + +| 策略 | 创建分支 | 范围 | 合并点 | 最适合 | +|----------|---------------|-------|-------------|----------| +| `none` | 从不 | 不适用 | 不适用 | 单人开发、简单项目 | +| `phase` | 在 `execute-phase` 开始时 | 一个阶段 | 用户在阶段后合并 | 按阶段代码审查、细粒度回滚 | +| `milestone` | 在首次 `execute-phase` 时 | 里程碑中的所有阶段 | 在 `complete-milestone` 时 | 发布分支、按版本 PR | + +### 模板变量 + +| 变量 | 适用于 | 示例 | +|----------|-------------|---------| +| `{phase}` | `phase_branch_template` | `03`(零填充) | +| `{slug}` | 两种模板 | `user-authentication`(小写、连字符) | +| `{milestone}` | `milestone_branch_template` | `v1.0` | +| `{num}` / `{quick}` | `quick_branch_template` | `260317-abc`(快速任务 ID) | + +快速任务分支示例: + +```json +"git": { + "quick_branch_template": "gsd/quick-{num}-{slug}" +} +``` + +### 里程碑完成时的合并选项 + +| 选项 | Git 命令 | 结果 | +|--------|-------------|--------| +| Squash 合并(推荐) | `git merge --squash` | 每个分支一个干净的提交 | +| 带历史合并 | `git merge --no-ff` | 保留所有单独提交 | +| 不合并直接删除 | `git branch -D` | 丢弃分支工作 | +| 保留分支 | (无) | 稍后手动处理 | + +--- + +## 门禁设置 + +控制工作流期间的确认提示。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `gates.confirm_project` | boolean | `true` | 最终确定前确认项目详情 | +| `gates.confirm_phases` | boolean | `true` | 确认阶段分解 | +| `gates.confirm_roadmap` | boolean | `true` | 继续前确认路线图 | +| `gates.confirm_breakdown` | boolean | `true` | 确认任务分解 | +| `gates.confirm_plan` | boolean | `true` | 执行前确认每个计划 | +| `gates.execute_next_plan` | boolean | `true` | 执行下一个计划前确认 | +| `gates.issues_review` | boolean | `true` | 创建修复计划前审查 issue | +| `gates.confirm_transition` | boolean | `true` | 确认阶段过渡 | + +--- + +## 安全设置 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `safety.always_confirm_destructive` | boolean | `true` | 确认破坏性操作(删除、覆盖) | +| `safety.always_confirm_external_services` | boolean | `true` | 确认外部服务交互 | + +--- + +## 安全加固设置 + +安全加固功能(v1.31)的设置。所有设置遵循**缺失 = 启用**模式。这些键位于 `.planning/config.json` 的 `workflow.*` 下——与 `workflows/plan-phase.md`、`workflows/execute-phase.md`、`workflows/secure-phase.md` 和 `workflows/verify-work.md` 中的发布模板和运行时读取位置一致。 + +这些键位于 `workflow.*` 下——工作流和安装器在此处写入和读取。在 `config.json` 顶层设置它们会被静默忽略。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `workflow.security_enforcement` | boolean | `true` | 通过 `/gsd-secure-phase` 启用威胁模型锚定的安全验证。为 `false` 时完全跳过安全检查 | +| `workflow.security_asvs_level` | number(1-3) | `1` | OWASP ASVS 验证级别。级别 1 = 机会性,级别 2 = 标准,级别 3 = 全面 | +| `workflow.security_block_on` | string | `"high"` | 阻止阶段推进的最低严重性。选项:`"high"`、`"medium"`、`"low"` | + +--- + +## 决策覆盖门禁(`workflow.context_coverage_gate`) + +当 `discuss-phase` 将实施决策写入 CONTEXT.md 的 `` 时,两个门禁确保这些决策在进入计划和发布代码的过程中得以保留(issue #2492)。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `workflow.context_coverage_gate` | boolean | `true` | 两个决策覆盖门禁的总开关。为 `false` 时,计划阶段转化门禁和验证阶段确认门禁均静默跳过。 | + +### 门禁作用 + +**计划阶段转化门禁(阻塞性)。** 在现有需求覆盖门禁之后、计划提交之前立即运行。对于 `` 中的每个可追踪决策,检查决策 id(`D-NN`)或其文本是否出现在至少一个计划的 `must_haves`、`truths` 或正文中。遗漏会按 id 显示缺失的决策,并拒绝将阶段标记为已规划。 + +**验证阶段确认门禁(非阻塞性)。** 与其他验证步骤同时运行。在每个可追踪决策的所有发布产物(PLAN.md、SUMMARY.md、已修改文件、最近的提交主题)中搜索。遗漏作为警告节写入 VERIFICATION.md,但**不**翻转整体验证状态。这种不对称是有意为之——在验证阶段,工作已完成,模糊的子字符串遗漏不应使其他通过的阶段失败。 + +### 编写门禁可接受的决策 + +讨论阶段模板已生成带 `D-NN` 编号的决策。当满足以下条件时门禁最为高效: + +1. 每个实施决策的计划在某处**引用该 id**——`must_haves.truths: ["D-12: bit offsets exposed"]` 或计划正文中的 `D-12:` 提及。严格 id 匹配是最便宜、最确定的路径。 +2. 软短语匹配是同义表达的回退——如果决策文本的 6 个以上单词的片段逐字出现在计划/摘要中,则计入。 + +### 豁免 + +在以下任何情况下,决策**不受**门禁约束: + +- 它位于 `` 中的 `### Claude's Discretion` 标题下。 +- 它在项目符号中标记为 `[informational]`、`[folded]` 或 `[deferred]`(如 `- **D-08 [informational]:** Naming style for internal helpers`)。 + +当决策真正不需要计划覆盖时,使用这些逃生舱口——实施决策权、为记录捕获的未来想法,或已推迟到后续阶段的项目。 + +--- + +## 审查设置 + +为 `/gsd-review` 配置按 CLI 的模型选择。设置后,覆盖该审查器的 CLI 默认模型。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `review.models.gemini` | string | (CLI 默认) | 调用 `--gemini` 审查器时使用的模型 | +| `review.models.claude` | string | (CLI 默认) | 调用 `--claude` 审查器时使用的模型 | +| `review.models.codex` | string | (CLI 默认) | 调用 `--codex` 审查器时使用的模型 | +| `review.models.opencode` | string | (CLI 默认) | 调用 `--opencode` 审查器时使用的模型 | +| `review.models.qwen` | string | (CLI 默认) | 调用 `--qwen` 审查器时使用的模型 | +| `review.models.cursor` | string | (CLI 默认) | 调用 `--cursor` 审查器时使用的模型 | +| `review.models.ollama` | string | (服务器默认) | 调用 `--ollama` 审查器时传递给 Ollama 的模型名称。未设置时使用服务器报告的第一个可用模型(如 `llama3`)。设置为特定标签:`gsd config-set review.models.ollama codellama` | +| `review.models.lm_studio` | string | (服务器默认) | 调用 `--lm-studio` 审查器时传递给 LM Studio 的模型名称。未设置时使用服务器报告的第一个可用模型。 | +| `review.models.llama_cpp` | string | (服务器默认) | 调用 `--llama-cpp` 审查器时传递给 llama.cpp 的模型名称。未设置时使用 `/v1/models` 报告的第一个模型。 | +| `review.default_reviewers` | string[] \| null | (所有已检测审查器) | 无标志 `/gsd-review` 的默认审查器子集。示例:`["gemini","codex"]`。显式标志和 `--all` 覆盖此设置。 | +| `review.max_prompt_tokens` | number\|null | null | 组装审查提示词的默认最大预估 token 数。设置后,在发送给每个审查器之前对提示词进行确定性裁剪。按审查器覆盖通过 `review.max_prompt_tokens_per_reviewer` 优先。null = 不裁剪(当前行为)。 | +| `review.max_prompt_tokens_per_reviewer` | object | {} | 按审查器的 token 预算覆盖。键为审查器 slug(ollama、llama_cpp、lm_studio、gemini、claude、codex、opencode、qwen、cursor)。值覆盖该审查器的 `review.max_prompt_tokens`。推荐用于本地模型服务器。 | +| `review.ollama_host` | string | `http://localhost:11434` | Ollama 服务器的基础 URL。在非默认端口或远程主机上运行 Ollama 时覆盖:`gsd config-set review.ollama_host http://192.168.1.10:11434` | +| `review.lm_studio_host` | string | `http://localhost:1234` | LM Studio 本地服务器的基础 URL。使用非默认端口时覆盖。 | +| `review.llama_cpp_host` | string | `http://localhost:8080` | llama.cpp 服务器(`llama-server`)的基础 URL。使用非默认端口时覆盖。 | + +### 小上下文审查器的提示词预算 + +本地模型服务器(Ollama、llama.cpp、LM Studio)通常接受的 token 数远少于云 API。设置 `review.max_prompt_tokens_per_reviewer`(或全局 `review.max_prompt_tokens` 回退)会在将提示词发送给该审查器之前触发确定性裁剪:首先删除 CONTEXT,然后是 RESEARCH,然后是 REQUIREMENTS;PROJECT.md 头部收缩至前 40 行;PLAN 按比例尾部截断——指令和路线图始终保留。当审查器被裁剪时,在提示词顶部注入一条披露说明,并将裁剪元数据(预算、省略节、截断百分比)记录在 REVIEWS.md 前言的 `trimmed_reviewers` 下。如果即使是最小审查集(指令 + 路线图 + 计划存根)也超出预算,则跳过该审查器并发出警告,而非发送会产生误导性反馈的截断提示词。 + +### 示例 + +```json +{ + "review": { + "models": { + "gemini": "gemini-2.5-pro", + "qwen": "qwen-max" + } + } +} +``` + +键缺失时回退到各 CLI 的配置默认值。v1.35.0 新增(#1849)。 + +--- + +## 管理器透传标志 + +配置 `/gsd-manager` 追加到每个分发命令的按步骤标志。这允许在不手动输入标志的情况下自定义管理器运行 discuss、plan 和 execute 步骤的方式。 + +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `manager.flags.discuss` | string | (无) | 追加到 discuss-phase 命令的标志(如 `"--auto"`) | +| `manager.flags.plan` | string | (无) | 追加到 plan-phase 命令的标志(如 `"--skip-research"`) | +| `manager.flags.execute` | string | (无) | 追加到 execute-phase 命令的标志(如 `"--validate"`) | + +**示例:** + +```json +{ + "manager": { + "flags": { + "discuss": "--auto", + "plan": "--skip-research", + "execute": "--validate" + } + } +} +``` + +无效的标志 token 会被净化并记录为警告。只有已识别的 GSD 标志才会透传。 + +--- + +## 模型配置文件 + +### 配置文件定义 + +| Agent | `quality` | `balanced` | `budget` | `adaptive` | `inherit` | +|-------|-----------|------------|----------|------------|-----------| +| gsd-planner | Opus | Opus | Sonnet | Opus | Inherit | +| gsd-roadmapper | Opus | Sonnet | Sonnet | Opus | Inherit | +| gsd-executor | Opus | Sonnet | Sonnet | Sonnet | Inherit | +| gsd-phase-researcher | Opus | Sonnet | Haiku | Sonnet | Inherit | +| gsd-project-researcher | Opus | Sonnet | Haiku | Sonnet | Inherit | +| gsd-research-synthesizer | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-debugger | Opus | Sonnet | Sonnet | Opus | Inherit | +| gsd-codebase-mapper | Sonnet | Haiku | Haiku | Haiku | Inherit | +| gsd-verifier | Sonnet | Sonnet | Haiku | Sonnet | Inherit | +| gsd-plan-checker | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-integration-checker | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-nyquist-auditor | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-pattern-mapper | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-ui-researcher | Opus | Sonnet | Haiku | Sonnet | Inherit | +| gsd-ui-checker | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-ui-auditor | Sonnet | Sonnet | Haiku | Haiku | Inherit | +| gsd-doc-writer | Opus | Sonnet | Haiku | Sonnet | Inherit | +| gsd-doc-verifier | Sonnet | Sonnet | Haiku | Haiku | Inherit | + +> **所有 33 个发布 agent 在目录(`sdk/shared/model-catalog.json`)中均有显式的按配置文件层级分配。** 上表显示最常用 agent 的代表性子集。对于此处未列出的 agent,`model_overrides` 接受任何已发布的 agent 名称。权威的配置文件数据通过 `get-shit-done/bin/lib/model-catalog.cjs` 和 `sdk/src/model-catalog.ts` 从 `sdk/shared/model-catalog.json` 导出。 + +### 按 Agent 覆盖 + +覆盖特定 agent 而不更改整个配置文件: + +```json +{ + "model_profile": "balanced", + "model_overrides": { + "gsd-executor": "opus", + "gsd-planner": "haiku" + } +} +``` + +有效的覆盖值:`opus`、`sonnet`、`haiku`、`inherit`,或任何完全限定的模型 ID(如 `"openai/o3"`、`"google/gemini-2.5-pro"`)。 + +`model_overrides` 可以设置在 `.planning/config.json`(按项目)或 `~/.gsd/defaults.json`(全局)中。按项目条目在冲突时优先,不冲突的全局条目被保留,因此可以在一个仓库中调整单个 agent 的模型而无需重新设置全局默认值。这在 Claude Code、Codex、OpenCode、Kilo 和其他支持的运行时中统一适用。在 Codex 和 OpenCode 上,解析后的模型在安装时嵌入每个 agent 的静态配置中——`spawn_agent` 和 OpenCode 的 `task` 接口不接受内联 `model` 参数,因此编辑 `model_overrides` 后需要运行 `gsd install ` 才能使更改生效。参见 issue #2256。 + +### 按阶段类型的模型(`models`)— v1.41 新增 + +> 在**阶段**级别(规划、研究、执行、验证)进行调整,无需了解 agent 分类。添加于 [#3023](https://github.com/open-gsd/gsd-core/pull/3030)。 + +`model_overrides` 是按 **agent** 的(精确但冗长;需要知道 `gsd-codebase-mapper` 属于研究,`gsd-doc-writer` 属于执行)。`models` 块允许用两行表达"规划和执行用 Opus,其余用 Sonnet": + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +#### 阶段类型 → agent 映射 + +| 阶段类型 | Agents | +|---|---| +| `planning` | `gsd-planner`, `gsd-roadmapper`, `gsd-pattern-mapper` | +| `discuss` | (保留——当前无 subagent) | +| `research` | `gsd-phase-researcher`, `gsd-project-researcher`, `gsd-research-synthesizer`, `gsd-codebase-mapper`, `gsd-ui-researcher` | +| `execution` | `gsd-executor`, `gsd-debugger`, `gsd-doc-writer` | +| `verification` | `gsd-verifier`, `gsd-plan-checker`, `gsd-integration-checker`, `gsd-nyquist-auditor`, `gsd-ui-checker`, `gsd-ui-auditor`, `gsd-doc-verifier` | +| `completion` | (保留——当前无 subagent) | + +`discuss` 和 `completion` 被 schema 接受以保持前向兼容性;今天设置它们是无操作,直到某个 subagent 映射到它们为止。 + +#### 解析优先级(从高到低) + +```text +1. model_overrides[] ← 按 agent;完整 ID;针对性例外 +2. dynamic_routing.tier_models[] ← 启用时(参见§动态路由) +3. models[] ← 粗粒度阶段级层级(本节) +4. model_profile(按 agent 列) ← 全局层级策略 +5. 运行时默认值 ← 其他均不适用时 +``` + +五层从上到下组合:`model_profile` 是基础层级,`models[]` 在阶段级别覆盖,`dynamic_routing`(启用时)在软性失败时按尝试次数升级,`model_overrides[]` 在顶层切出按 agent 的例外,运行时默认值在其他均不适用时生效。在上面的示例中,所有五个研究 agent 解析为 `sonnet`,*除了* `gsd-codebase-mapper`,它被按 agent 覆盖固定为 `haiku`。`dynamic_routing` 默认禁用——关闭时(`enabled: false` 或省略该块),本节的行为与当前相同。 + +#### 可接受的值 + +`models.` 仅接受层级别名: + +| 值 | 效果 | +|---|---| +| `"opus"` / `"sonnet"` / `"haiku"` | 标准层级——运行时解析映射到该层级的活跃运行时模型 | +| `"inherit"` | 此阶段的 agent 遵循会话模型(与 `model_profile: "inherit"` 语义相同) | + +如果需要完全限定的模型 ID(`"openai/gpt-5"`、`"google/gemini-2.5-pro"`),请改为按 agent 使用 `model_overrides`。`models.*` 有意仅接受层级别名,以便运行时感知映射在 Codex / OpenCode / Gemini CLI 安装上保持正确。 + +#### 何时使用哪种方式 + +| 您想要 | 使用 | +|---|---| +| 一个全局层级策略("全部 balanced") | `model_profile` | +| 粗粒度阶段级调整("规划用 Opus") | `models.` | +| 按 agent 精度("强制代码库映射器使用 haiku") | `model_overrides[]` | +| 特定 agent 的完整模型 ID | `model_overrides[]: "openai/gpt-5"` | + +自由混合——上述优先规则确定性地解决任何重叠。 + +#### 验证 + +`config-set` 拒绝未知阶段类型: + +```bash +$ gsd config-set models.deployment opus +Error: 'models.deployment' is not a valid config key + +# 有效: +$ gsd config-set models.research sonnet +``` + +直接编辑 `.planning/config.json` 较为宽松——解析器简单地忽略无法识别的值并回退到配置文件层级——因此拼写错误不会静默破坏层级解析。 + +### 动态路由与失败层级升级(`dynamic_routing`)— v1.41 新增 + +> 默认使用廉价层级,仅在 agent 失败门禁时升级。添加于 [#3024](https://github.com/open-gsd/gsd-core/pull/3031)。 + +`dynamic_routing` 让您默认支付廉价层级的费用,仅在编排器检测到软性失败(验证不确定、计划检查 FLAG 等)时升级到更昂贵的层级。 + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +#### Agent 默认层级 + +`MODEL_PROFILES` 中的每个 agent 声明三个默认层级之一。解析器为第一次尝试选择 `tier_models[default_tier]`。 + +| 层级 | Agents | 用途 | +|---|---|---| +| `light` | gsd-codebase-mapper, gsd-doc-classifier, gsd-doc-verifier, gsd-integration-checker, gsd-intel-updater, gsd-nyquist-auditor, gsd-pattern-mapper, gsd-plan-checker, gsd-research-synthesizer, gsd-ui-auditor, gsd-ui-checker | 廉价/快速——纯映射器、扫描器、低风险审计 | +| `standard` | gsd-advisor-researcher, gsd-ai-researcher, gsd-code-fixer, gsd-code-reviewer, gsd-doc-synthesizer, gsd-doc-writer, gsd-domain-researcher, gsd-eval-auditor, gsd-executor, gsd-phase-researcher, gsd-project-researcher, gsd-ui-researcher, gsd-verifier | 默认主力——研究、写作、主要验证 | +| `heavy` | gsd-assumptions-analyzer, gsd-debug-session-manager, gsd-debugger, gsd-eval-planner, gsd-framework-selector, gsd-planner, gsd-roadmapper, gsd-security-auditor, gsd-user-profiler | 深度推理——已处于顶层,无法进一步升级 | + +#### 升级流程 + +```text +1. 编排器派生 agent → 解析器返回 tier_models[default_tier] +2. 软性失败? + ├─ 否 → ✓ 完成(廉价路径) + └─ 是 → 编排器以 attempt+1 重新派生 + → 解析器返回 tier_models[next_tier_up] + → 上限为 max_escalations +3. 硬性失败(异常/崩溃)→ 绕过升级,立即显示 +``` + +如果 `dynamic_routing.escalate_on_failure: false`,软性失败**不会**推进层级——每次重新派生都继续使用 `tier_models[default_tier]`,不论尝试计数如何。此终止开关覆盖上述软性失败分支。 + +`light → standard → heavy → heavy`(heavy 保持在 heavy;无法进一步)。 + +#### 解析优先级(从高到低) + +1. **`model_overrides[]`** — 接受完整 ID;针对性例外 +2. **`dynamic_routing.tier_models[]`**(当 `enabled: true` 时) +3. **`models[]`** — 粗粒度阶段级(#3023) +4. **`model_profile`** — 活跃配置文件中按 agent 的列 +5. **运行时默认值** + +`dynamic_routing` 块**默认禁用**——`enabled: false`(或省略该块)完全保留当前的静态解析行为。 + +#### 设置 + +| 键 | 类型 | 默认值 | 描述 | +|---|---|---|---| +| `dynamic_routing.enabled` | boolean | `false` | 主开关。为 `true` 时,动态路由解析器用于层级选择。 | +| `dynamic_routing.tier_models.light` | enum | (无) | 轻量层级的层级别名。通常为 `haiku`。 | +| `dynamic_routing.tier_models.standard` | enum | (无) | 标准层级的别名。通常为 `sonnet`。 | +| `dynamic_routing.tier_models.heavy` | enum | (无) | 重量层级的别名。通常为 `opus`。 | +| `dynamic_routing.escalate_on_failure` | boolean | `true` | 为 false 时禁用升级(每次尝试使用默认层级)。 | +| `dynamic_routing.max_escalations` | integer | `1` | 每次 agent 调用的硬性重试上限。防止失控循环。 | + +#### 何时使用哪种方式 + +| 您想要 | 使用 | +|---|---| +| 所有 agent 的一种层级策略 | `model_profile` | +| 粗粒度阶段级调整 | `models.` | +| 按 agent 精度(完整 ID) | `model_overrides` | +| **默认廉价,仅失败时升级** | **`dynamic_routing`** | + +`dynamic_routing` 在结构上是*成本杠杆*:只有在真正需要 Opus 的困难情况下才支付 Opus 费率。与 `model_overrides` 组合以实现按 agent 例外(覆盖始终优先)。 + +--- + +### 努力控制(`effort`)— v1.42 新增 + +> 统一的跨提供商努力旋钮。添加于 [#443](https://github.com/open-gsd/gsd-core/issues/443)。 + +使用单个配置控制 agent 调用的推理努力。通用阶梯为: + +``` +minimal < low < medium < high < xhigh < max +``` + +努力按运行时渲染:Claude 的 `output_config.effort`(Claude Code subagent `effort` 前言 / `CLAUDE_CODE_EFFORT_LEVEL` 环境变量),Codex 的 `model_reasoning_effort`(Responses API `reasoning.effort`)。 + +**跨提供商限制:** `max` 仅适用于 Anthropic——在 Codex 上限制为 `xhigh`。`minimal` 仅适用于 Codex——在 Claude 上限制为 `low`。 + +模型目录的按层级 `reasoning_effort` 提示是保留供参考的旧版字段;努力现在由配置驱动。 + +**优先级(从高到低):** +1. 调用覆盖(如 `resolve-execution` 上的 `--effort` 标志) +2. `effort.agent_overrides[]` +3. `effort.routing_tier_defaults[]` +4. `effort.default` +5. `"high"`(Anthropic Opus 4.8 通用默认值) + +```json +{ + "effort": { + "default": "high", + "routing_tier_defaults": { + "light": "low", + "standard": "high", + "heavy": "xhigh" + }, + "agent_overrides": { + "gsd-planner": "max" + } + } +} +``` + +#### 设置 + +| 键 | 类型 | 默认值 | 描述 | +|---|---|---|---| +| `effort.default` | enum | `"high"` | 全局回退努力级别。无层级或 agent 覆盖匹配时应用。 | +| `effort.routing_tier_defaults.light` | enum | `"low"` | 轻量层级 agent(快速映射器/扫描器)的努力。 | +| `effort.routing_tier_defaults.standard` | enum | `"high"` | 标准层级 agent(主力 agent)的努力。 | +| `effort.routing_tier_defaults.heavy` | enum | `"xhigh"` | 重量层级 agent(深度推理)的努力。 | +| `effort.agent_overrides.` | enum | (无) | 按 agent 的努力覆盖。优先于层级默认值。 | + +有效努力值:`minimal`、`low`、`medium`、`high`、`xhigh`、`max`。 + +--- + +### 快速模式(`fast_mode`)— v1.42 新增 + +> 按 agent 的 fast_mode 传播旋钮。添加于 [#443](https://github.com/open-gsd/gsd-core/issues/443)。 + +控制是否将 fast_mode 传播到 agent 调用。仅接受真正的布尔值——字符串 `"true"` 会被拒绝。 + +**注意:** `fast_mode` 仅可通过 API 运行时传播(`api` speed:"fast")。Claude Code 没有按 subagent 的快速模式机制——`/fast` 仅在会话级别,因此在 Claude subagent 上发出 `fast_mode` 前言键是静默无操作。`resolve-execution` 输出中的 `fast_mode_supported` 告知您配置的运行时是否支持它。 + +**优先级(从高到低):** +1. 调用覆盖(如 `resolve-execution` 上的 `--fast-mode` 标志) +2. `fast_mode.agent_overrides[]`(布尔值) +3. `fast_mode.routing_tier_defaults[]`(布尔值) +4. `fast_mode.enabled`(布尔值) +5. `false` + +```json +{ + "fast_mode": { + "enabled": false, + "routing_tier_defaults": { + "light": true, + "standard": false, + "heavy": false + }, + "agent_overrides": {} + } +} +``` + +#### 设置 + +| 键 | 类型 | 默认值 | 描述 | +|---|---|---|---| +| `fast_mode.enabled` | boolean | `false` | 全局 fast_mode 标志。无层级/agent 覆盖匹配时才生效。 | +| `fast_mode.routing_tier_defaults.light` | boolean | `true` | 轻量层级 agent 的快速模式。 | +| `fast_mode.routing_tier_defaults.standard` | boolean | `false` | 标准层级 agent 的快速模式。 | +| `fast_mode.routing_tier_defaults.heavy` | boolean | `false` | 重量层级 agent 的快速模式。 | +| `fast_mode.agent_overrides.` | boolean | (无) | 按 agent 的 fast_mode 覆盖。 | + +--- + +### 执行查询(`resolve-execution`) + +使用 `node gsd-tools.cjs resolve-execution [--effort ] [--fast-mode ] [--attempt ]` 获取 agent 的完整解析后执行上下文: + +```json +{ + "model": "opus", + "profile": "balanced", + "effort": "xhigh", + "effort_rendered": "xhigh", + "effort_param": "output_config.effort", + "effort_propagation": "frontmatter", + "fast_mode": false, + "fast_mode_supported": false +} +``` + +`effort_param` 告知您要设置哪个运行时参数。`fast_mode_supported` 告知您配置的运行时是否支持按 agent 的 fast_mode 传播。 + +--- + +### 非 Claude 运行时(Codex、OpenCode、Gemini CLI、Kilo) + +> **Codex CLI 最低支持版本:`0.130.0`**(issue [#3562](https://github.com/open-gsd/gsd-core/issues/3562))。 +> +> [Codex CLI 0.130.0](https://github.com/openai/codex/releases/tag/rust-v0.130.0)(2026-05-08 发布)通过 [openai/codex#21485](https://github.com/openai/codex/pull/21485) 移除了通过 extra-skills-roots 发现功能。从此版本起,Codex CLI 仅扫描 `~/.codex/skills//SKILL.md`、`/.codex/skills/` 和已注册的插件根目录以查找可调用技能。GSD 将 `$gsd-*` 界面安装为 `~/.codex/skills/gsd-/SKILL.md`,因此命令在 Codex 重启后解析。早期 Codex CLI 版本可能显示重复列表(旧版 extra-roots 扫描加上用户根目录副本)——重启 Codex 并升级到 ≥ 0.130.0,或在升级前接受重复项。 + +当 GSD 为非 Claude 运行时安装时,安装器自动在 `~/.gsd/defaults.json` 中设置 `resolve_model_ids: "omit"`。这使 GSD 为所有 agent 返回空模型参数,因此每个 agent 使用运行时配置的任何模型。默认情况下无需额外设置。 + +如果您希望不同 agent 使用不同模型,请使用带有运行时可识别的完全限定模型 ID 的 `model_overrides`: + +```json +{ + "resolve_model_ids": "omit", + "model_overrides": { + "gsd-planner": "o3", + "gsd-executor": "o4-mini", + "gsd-debugger": "o3", + "gsd-codebase-mapper": "o4-mini" + } +} +``` + +意图与 Claude 配置文件层级相同——对规划和调试使用更强的模型(推理质量最重要的地方),对执行和映射使用更廉价的模型(计划中已包含推理)。 + +**何时使用哪种方式:** + +| 场景 | 设置 | 效果 | +|----------|---------|--------| +| 非 Claude 运行时,单一模型 | `resolve_model_ids: "omit"`(安装器默认) | 所有 agent 使用运行时默认模型 | +| 非 Claude 运行时,分层模型 | `resolve_model_ids: "omit"` + `model_overrides` | 命名 agent 使用特定模型,其他使用运行时默认 | +| 带 OpenRouter/本地提供商的 Claude Code | `model_profile: "inherit"` | 所有 agent 遵循会话模型 | +| 带 OpenRouter 的 Claude Code,分层 | `model_profile: "inherit"` + `model_overrides` | 命名 agent 使用特定模型,其他继承 | + +**`resolve_model_ids` 值:** + +| 值 | 行为 | 使用场景 | +|-------|----------|----------| +| `false`(默认) | 返回 Claude 别名(`opus`、`sonnet`、`haiku`) | 使用原生 Anthropic API 的 Claude Code | +| `true` | 将别名映射到完整 Claude 模型 ID(`claude-opus-4-8`) | 使用需要完整 ID 的 API 的 Claude Code | +| `"omit"` | 返回空字符串(运行时选择其默认值) | 非 Claude 运行时(Codex、OpenCode、Gemini CLI、Kilo) | + +### 运行时感知配置文件(#2517) + +当设置了 `runtime` 时,配置文件层级(`opus`/`sonnet`/`haiku`)解析为运行时原生模型 ID,而非 Claude 别名。这让单个共享的 `.planning/config.json` 在 Claude 和 Codex 之间干净运行。 + +`resolve-model` JSON 输出包含 `reasoning_effort`(当为该 agent 解析的运行时层级定义了 `reasoning_effort` 时)。运行时适配器可将该值传递给支持它的子 agent 启动调用;不明确支持的运行时省略它。 + +**内置层级映射:** + +| 运行时 | `opus` | `sonnet` | `haiku` | reasoning_effort | +|---------|--------|----------|---------|------------------| +| `claude` | `claude-opus-4-8` | `claude-sonnet-4-6` | `claude-haiku-4-5` | (不使用) | +| `codex` | `gpt-5.5` | `gpt-5.3-codex` | `gpt-5.4-mini` | `xhigh` / `medium` / `medium` | +| `gemini` | `gemini-3-pro` | `gemini-3-flash` | `gemini-2.5-flash-lite` | (不使用) | +| `qwen` | `qwen3-max-2026-01-23` | `qwen3-coder-plus` | `qwen3-coder-next` | (不使用) | +| `opencode` | `anthropic/claude-opus-4-8` | `anthropic/claude-sonnet-4-6` | `anthropic/claude-haiku-4-5` | (不使用) | +| `copilot` | `claude-opus-4-8` | `claude-sonnet-4-6` | `claude-haiku-4-5` | (不使用) | +| `hermes` | `anthropic/claude-opus-4-8` | `anthropic/claude-sonnet-4-6` | `anthropic/claude-haiku-4-5` | (不使用) | +| B 组(`kilo`、`cline`、`cursor`、`windsurf`、`augment`、`trae`、`codebuddy`、`antigravity`) | (无内置默认——您的运行时处理模型选择) | | | | + +**Codex 示例** — 单个配置,分层模型,无大型 `model_overrides` 块: + +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` + +这将 `gsd-planner` 解析为 `gpt-5.5`(xhigh),`gsd-executor` 解析为 `gpt-5.3-codex`(medium),`gsd-codebase-mapper` 解析为 `gpt-5.4-mini`(medium)。Codex 安装器将 `model = "..."` 和 `model_reasoning_effort = "..."` 嵌入每个生成的 agent TOML。 + +**Claude 示例** — 显式选择解析到完整 Claude ID(无需 `resolve_model_ids: true`): + +```json +{ + "runtime": "claude", + "model_profile": "quality" +} +``` + +**按运行时覆盖** — 替换一个或多个层级默认值: + +```json +{ + "runtime": "codex", + "model_profile": "quality", + "model_profile_overrides": { + "codex": { + "opus": "gpt-5-pro", + "haiku": { "model": "gpt-5-nano", "reasoning_effort": "low" } + } + } +} +``` + +**优先级(从高到低):** + +1. `model_overrides[]` — 显式的按 agent ID 始终优先。 +2. **运行时感知层级解析**(本节)——当设置了 `runtime` 且配置文件不是 `inherit` 时。 +3. `resolve_model_ids: "omit"` — 未设置 `runtime` 时返回空字符串。 +4. Claude 原生默认——`model_profile` 层级作为别名(当前默认)。 +5. `inherit` — 为 `Task(model="inherit")` 语义传播字面量 `inherit`。 + +**向后兼容性。** 未设置 `runtime` 的配置零行为变化——每个现有配置继续完全相同地工作。自动设置 `resolve_model_ids: "omit"` 的 Codex 安装继续省略模型字段,除非用户通过设置 `runtime: "codex"` 选择启用。 + +**未知运行时。** 如果 `runtime` 设置为没有内置层级映射且没有 `model_profile_overrides[]` 的值,GSD 回退到 Claude 别名安全默认值,而非发出运行时无法接受的模型 ID。要支持新运行时,请在 `model_profile_overrides..{opus,sonnet,haiku}` 中填入有效 ID。 + +### 配置文件哲学 + +| 配置文件 | 哲学 | 何时使用 | +|---------|-----------|-------------| +| `quality` | 所有决策用 Opus,验证用 Sonnet | 配额充足、关键架构工作 | +| `balanced` | 仅规划用 Opus,其余一切用 Sonnet | 常规开发(默认) | +| `budget` | 代码编写用 Sonnet,研究/验证用 Haiku | 大批量工作、不太关键的阶段 | +| `inherit` | 所有 agent 使用当前会话模型 | 动态模型切换、**非 Anthropic 提供商**(OpenRouter、本地模型) | + +--- + +## 模型策略预设(`model_policy`)— v1.42 新增 + +> **[#49](https://github.com/open-gsd/gsd-core/issues/49)** — 提供商中立的模型策略配置界面。在旧版 `model_profile_overrides` 之前解析。 + +`model_policy` 提供了一种更简单、提供商中立的方式来跨运行时配置模型层级。对于手动知道正确模型 ID 需要使用 `model_profile_overrides` 的非 Anthropic 运行时,这是首选界面。通过 `/gsd:settings` → 第 8 节(模型策略)配置。 + +### 已知提供商预设 + +通过设置工作流选择提供商和预算级别;GSD 为该提供商/预算组合写入规范模型 ID: + +```json +{ + "runtime": "codex", + "model_policy": { + "provider": "openai", + "budget": "medium", + "high": "gpt-5.5", + "medium": "gpt-5.3-codex", + "low": "gpt-5.4-mini" + } +} +``` + +已知提供商:`openai`、`anthropic`、`google`、`qwen`。预算级别:`high`、`medium`、`low`。 + +对于高级的按运行时控制,`runtime_tiers` 接受使用内部配置文件层级名称(`opus`、`sonnet`、`haiku`)的显式条目: + +```json +{ + "runtime": "codex", + "model_policy": { + "provider": "openai", + "runtime_tiers": { + "codex": { + "opus": { "model": "gpt-5.5", "reasoning_effort": "high" }, + "sonnet": { "model": "gpt-5.3-codex", "reasoning_effort": "medium" }, + "haiku": { "model": "gpt-5.4-mini", "reasoning_effort": "low" } + } + } + } +} +``` + +### 通用提供商(逃生舱口) + +对于 OpenRouter、LiteLLM、本地网关或任何需要提供精确模型 ID 的运行时,使用 `provider: "generic"`(或 `"custom"`)。GSD 将模型 ID 视为不透明字符串——无前缀推断,无提供商特定默认值: + +```json +{ + "runtime": "opencode", + "model_policy": { + "provider": "generic", + "high": "openrouter/anthropic/claude-opus-4-5", + "medium": "openrouter/anthropic/claude-sonnet-4-5", + "low": "openrouter/anthropic/claude-haiku-4-5" + } +} +``` + +### 推理努力门控 + +`runtime_tiers` 条目中的 `reasoning_effort` 仅转发给声明支持它的运行时(当前:`codex`)。不在允许列表中的任何运行时都不接收该字段——它被静默剥离,从不泄露。 + +### 优先级 + +`model_policy` 解析位于解析器中 `model_profile_overrides` 之上: + +1. `model_overrides[]` — 按 agent 显式 ID(最高) +2. `model_policy.runtime_tiers[][]` — 显式运行时/层级条目 +3. `model_policy` 扁平 `high`/`medium`/`low` 键 — 用于 `generic`/`custom` 提供商 +4. `model_profile_overrides[][]` — 旧版按运行时覆盖 +5. 内置运行时目录默认值 +6. `model_profile` 层级别名 + +**向后兼容性。** 没有 `model_policy` 的配置不受影响。现有的 `model_profile_overrides` 块继续完全按之前工作。 + +--- + +## 环境变量 + +| 变量 | 用途 | +|----------|---------| +| `CLAUDE_CONFIG_DIR` | 覆盖默认配置目录(`~/.claude/`) | +| `GEMINI_API_KEY` | 由上下文监控器检测以切换钩子事件名称 | +| `GSD_AUDIT` | 设置为 `1` 以启用调度审计文件(`.planning/.gsd-trace.jsonl`) | +| `GSD_AUDIT_ARGS` | 设置为 `1` 以在审计/错误事件中包含命令参数(默认省略) | +| `GSD_PROJECT` | 覆盖多项目工作空间支持的项目根目录(v1.32) | +| `GSD_SKIP_SCHEMA_CHECK` | 跳过执行阶段期间的 schema 漂移检测(v1.31) | +| `WSL_DISTRO_NAME` | 由安装器检测以处理 WSL 路径 | + +--- + +## 全局默认值 + +将设置保存为未来项目的全局默认值: + +**位置:** `~/.gsd/defaults.json` + +当 `/gsd-new-project` 创建新的 `config.json` 时,它读取全局默认值并将其作为初始配置合并。按项目设置始终覆盖全局设置。 + +--- + +## 可观测性 + +命令路由中心在每次调度后发出结构化的 `DispatchEvent`。默认行为是**成功时静默**,**错误时向 stderr 输出一行结构化 JSON**。 + +### Stderr 错误格式 + +当调度失败时,向 stderr 输出一行 JSON: + +```json +{ "kind": "HandlerFailure", "traceId": "...", "command": "plan", "timestamp": "...", "message": "..." } +``` + +`kind` 字段匹配中心的错误变体之一:`UnknownCommand`、`InvalidArgs`、`HandlerRefusal` 或 `HandlerFailure`。参数默认省略(隐私);参见下方 `GSD_AUDIT_ARGS`。 + +### 审计跟踪(选择性启用) + +启用仅追加审计文件以记录每次调度(成功和错误): + +**通过环境变量:** +```bash +GSD_AUDIT=1 gsd plan +``` + +**通过配置(`config.audit.enabled`):** +```json +{ + "audit": { + "enabled": true + } +} +``` + +**审计文件位置:** `.planning/.gsd-trace.jsonl`(已 gitignore) + +每行都是一个完整的 `DispatchEvent` JSON 对象,包含 `traceId`(每次调度的唯一 UUID v4)和 `parentTraceId`(当调用者将 `req.parentTraceId` 传入 `Hub.dispatch` 时存在)。未来的初始化编排器(第 2 阶段)将自动连接 `parentTraceId`,使单个顶层调用的所有子调度共享一个公共父级;在此之前,叶子调度发出 `parentTraceId: undefined`。您可以通过在审计文件上过滤 `parentTraceId === ` 来将子事件关联到父级。文件为仅追加,从不截断;需要时手动轮换或删除。`parentTraceId` 必须是规范的 UUID v4(RFC 4122,格式 `xxxxxxxx-xxxx-4xxx-[89ab]xxx-xxxxxxxxxxxx`);不匹配此格式的值会从发出的事件中静默删除,不会出现在审计输出中。 + +### 参数编辑 + +默认情况下,命令参数从所有发出的事件(stderr 错误和审计文件)中**省略**。要逐字包含参数: + +```bash +GSD_AUDIT_ARGS=1 GSD_AUDIT=1 gsd plan --tdd +``` + +`GSD_AUDIT_ARGS` 同时适用于 stderr 错误行和审计文件。 + +--- + +## 相关链接 + +- [命令参考](COMMANDS.md) +- [配置模型配置文件](how-to/configure-model-profiles.md) +- [STATE.md schema](reference/state-md.md) +- [文档索引](README.md) diff --git a/docs/zh-CN/FEATURES.md b/docs/zh-CN/FEATURES.md new file mode 100644 index 000000000..e72be9ca6 --- /dev/null +++ b/docs/zh-CN/FEATURES.md @@ -0,0 +1,3006 @@ +# GSD 功能参考 + +> GSD Core 的功能索引与参考文档。架构细节请参见[架构文档](ARCHITECTURE.md)。命令语法请参见[命令参考](COMMANDS.md)。返回[文档索引](README.md)。 + +--- + +## 目录 + +- [核心功能](#core-features) + - [项目初始化](#1-project-initialization) + - [阶段讨论](#2-phase-discussion) + - [UI 设计契约](#3-ui-design-contract) + - [阶段规划](#4-phase-planning) + - [阶段执行](#5-phase-execution) + - [工作验收](#6-work-verification) + - [UI 审查](#7-ui-review) + - [里程碑管理](#8-milestone-management) +- [规划功能](#planning-features) + - [阶段管理](#9-phase-management) + - [快速模式](#10-quick-mode) + - [自主模式](#11-autonomous-mode) + - [自由路由](#12-freeform-routing) + - [笔记捕获](#13-note-capture) + - [自动推进 (Next)](#14-auto-advance-next) +- [质量保障功能](#quality-assurance-features) + - [Nyquist 验证](#15-nyquist-validation) + - [计划检查](#16-plan-checking) + - [执行后验证](#17-post-execution-verification) + - [节点修复](#18-node-repair) + - [健康验证](#19-health-validation) + - [跨阶段回归门控](#20-cross-phase-regression-gate) + - [需求覆盖门控](#21-requirements-coverage-gate) +- [上下文工程功能](#context-engineering-features) + - [上下文窗口监控](#22-context-window-monitoring) + - [会话管理](#23-session-management) + - [会话报告](#24-session-reporting) + - [多智能体编排](#25-multi-agent-orchestration) + - [模型配置](#26-model-profiles) +- [棕地功能](#brownfield-features) + - [代码库映射](#27-codebase-mapping) +- [实用功能](#utility-features) + - [调试系统](#28-debug-system) + - [待办事项管理](#29-todo-management) + - [统计仪表板](#30-statistics-dashboard) + - [更新系统](#31-update-system) + - [设置管理](#32-settings-management) + - [测试生成](#33-test-generation) +- [基础设施功能](#infrastructure-features) + - [Git 集成](#34-git-integration) + - [CLI 工具](#35-cli-tools) + - [多运行时支持](#36-multi-runtime-support) + - [钩子系统](#37-hook-system) + - [开发者画像](#38-developer-profiling) + - [执行加固](#39-execution-hardening) + - [验证债务追踪](#40-verification-debt-tracking) +- [v1.27 功能](#v127-features) + - [快速模式](#41-fast-mode) + - [跨 AI 同行评审](#42-cross-ai-peer-review) + - [待办停车场](#43-backlog-parking-lot) + - [持久化上下文线程](#44-persistent-context-threads) + - [PR 分支过滤](#45-pr-branch-filtering) + - [安全加固](#46-security-hardening) + - [多仓库工作区支持](#47-multi-repo-workspace-support) + - [讨论审计追踪](#48-discussion-audit-trail) +- [v1.28 功能](#v128-features) + - [取证分析](#49-forensics) + - [里程碑摘要](#50-milestone-summary) + - [工作流命名空间](#51-workstream-namespacing) + - [管理仪表板](#52-manager-dashboard) + - [假设讨论模式](#53-assumptions-discussion-mode) + - [UI 阶段自动检测](#54-ui-phase-auto-detection) + - [多运行时安装选择](#55-multi-runtime-installer-selection) +- [v1.29 功能](#v129-features) + - [Windsurf 运行时支持](#56-windsurf-runtime-support) + - [国际化文档](#57-internationalized-documentation) +- [v1.31 功能](#v131-features) + - [Schema 漂移检测](#59-schema-drift-detection) + - [安全强制执行](#60-security-enforcement) + - [文档生成](#61-documentation-generation) + - [讨论链模式](#62-discuss-chain-mode) + - [单阶段自主执行](#63-single-phase-autonomous) + - [范围缩减检测](#64-scope-reduction-detection) + - [声明来源标记](#65-claim-provenance-tagging) + - [工作树切换](#66-worktree-toggle) + - [项目代码前缀](#67-project-code-prefixing) + - [Claude Code 技能迁移](#68-claude-code-skills-migration) +- [v1.32 功能](#v132-features) + - [STATE.md 一致性门控](#69-statemd-consistency-gates) + - [自主 `--to N` 标志](#70-autonomous---to-n-flag) + - [研究门控](#71-research-gate) + - [验证器里程碑范围过滤](#72-verifier-milestone-scope-filtering) + - [编辑前读取守护钩子](#73-read-before-edit-guard-hook) + - [上下文压缩](#74-context-reduction) + - [讨论阶段 `--power` 标志](#75-discuss-phase---power-flag) + - [调试 `--diagnose` 标志](#76-debug---diagnose-flag) + - [阶段依赖分析](#77-phase-dependency-analysis) + - [反模式严重级别](#78-anti-pattern-severity-levels) + - [方法论构件类型](#79-methodology-artifact-type) + - [规划器可达性检查](#80-planner-reachability-check) + - [Playwright-MCP UI 验证](#81-playwright-mcp-ui-verification) + - [暂停工作扩展](#82-pause-work-expansion) + - [响应语言配置](#83-response-language-config) + - [手动更新流程](#84-manual-update-procedure) + - [新运行时支持(Trae、Cline、Augment Code)](#85-new-runtime-support-trae-cline-augment-code) + - [自主 `--interactive` 标志](#86-autonomous---interactive-flag) + - [提交文档守护钩子](#87-commit-docs-guard-hook) + - [社区钩子选项](#88-community-hooks-opt-in) +- [v1.34.0 功能](#v1340-features) + - [全局学习存储](#89-global-learnings-store) + - [可查询代码库智能](#90-queryable-codebase-intelligence) + - [执行上下文配置](#91-execution-context-profiles) + - [门控分类](#92-gates-taxonomy) + - [代码审查流水线](#93-code-review-pipeline) + - [苏格拉底式探索](#94-socratic-exploration) + - [安全撤销](#95-safe-undo) + - [计划导入](#96-plan-import) + - [快速代码库扫描](#97-rapid-codebase-scan) + - [自主审计修复](#98-autonomous-audit-to-fix) + - [改进的提示注入扫描器](#99-improved-prompt-injection-scanner) + - [规划阶段停滞检测](#100-stall-detection-in-plan-phase) + - [/gsd-progress --next 中的硬停止安全门控](#101-hard-stop-safety-gates-in-gsd-progress---next) + - [自适应模型预设](#102-adaptive-model-preset) + - [合并后 Hunk 验证](#103-post-merge-hunk-verification) +- [v1.35.0 功能](#v1350-features) + - [新运行时支持(Cline、CodeBuddy、Qwen Code)](#104-new-runtime-support-cline-codebuddy-qwen-code) + - [GSD-2 反向迁移](#105-gsd-2-reverse-migration) + - [AI 集成阶段向导](#106-ai-integration-phase-wizard) + - [AI 评估审查](#107-ai-eval-review) +- [v1.36.0 功能](#v1360-features) + - [计划弹跳](#108-plan-bounce) + - [外部代码审查命令](#109-external-code-review-command) + - [跨 AI 执行委托](#110-cross-ai-execution-delegation) + - [架构职责映射](#111-architectural-responsibility-mapping) + - [提取学习成果](#112-extract-learnings) + - [上下文窗口感知提示精简](#114-context-window-aware-prompt-thinning) + - [可配置的 CLAUDE.md 路径](#115-configurable-claudemd-path) + - [TDD 流水线模式](#116-tdd-pipeline-mode) +- [v1.37.0 功能](#v1370-features) + - [Spike 命令](#117-spike-command) + - [Sketch 命令](#118-sketch-command) + - [智能体大小预算强制](#119-agent-size-budget-enforcement) + - [共享样板提取](#120-shared-boilerplate-extraction) + - [知识图谱集成](#121-knowledge-graph-integration) +- [v1.40.0 功能](#v1400-features) + - [技能界面整合](#122-skill-surface-consolidation) + - [命名空间元技能(两阶段路由)](#123-namespace-meta-skills-two-stage-routing) + - [上下文窗口利用率守护](#124-context-window-utilization-guard) + - [阶段生命周期状态行读取侧](#125-phase-lifecycle-status-line-read-side) +- [v1.41.0 功能](#v1410-features) + - [按阶段类型选择模型](#126-per-phase-type-model-selection) + - [带失败层级升级的动态路由](#127-dynamic-routing-with-failure-tier-escalation) + - [更新横幅选项](#128-update-banner-opt-in) + - [Issue 驱动编排指南](#129-issue-driven-orchestration-guide) + - [Graphify 基于提交的过期检测](#130-graphify-commit-based-staleness) +- [v1.42.1 功能](#v1421-features) + - [包合法性门控](#132-package-legitimacy-gate) + - [技能界面预算](#133-skill-surface-budgeting) + - [安装迁移](#134-installer-migrations) + - [自定义 Ship PR 正文节区](#135-custom-ship-pr-body-sections) + - [评审默认审查者](#136-review-default-reviewers) + - [Fallow 结构性审查预处理](#137-fallow-structural-review-pre-pass) + - [阶段末人工验证模式](#138-end-of-phase-human-verification-mode) + - [配额与速率限制失败分类](#139-quota-and-rate-limit-failure-classification) + - [状态栏上下文位置](#140-statusline-context-position) + - [里程碑标签创建开关](#141-milestone-tag-creation-toggle) + - [结构化 JSON 错误模式](#142-structured-json-error-mode) + +--- + +## 核心功能 + +### 1. 项目初始化 + +**命令:** `/gsd-new-project [--auto @file.md]` + +**目的:** 将用户想法转化为具有研究支撑、范围需求和阶段路线图的完整结构化项目。 + +**需求:** +- REQ-INIT-01:系统必须进行自适应提问,直到充分理解项目范围 +- REQ-INIT-02:系统必须派生并行研究智能体,调查领域生态系统 +- REQ-INIT-03:系统必须将需求提取并分类为 v1(必须有)、v2(未来)和超出范围三类 +- REQ-INIT-04:系统必须生成具有需求可追溯性的阶段路线图 +- REQ-INIT-05:系统必须在继续之前要求用户审批路线图 +- REQ-INIT-06:当 `.planning/PROJECT.md` 已存在时,系统必须阻止重新初始化 +- REQ-INIT-07:系统必须支持 `--auto @file.md` 标志,以跳过交互式问题并从文档中提取信息 + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| `PROJECT.md` | 项目愿景、约束条件、技术决策、演进规则 | +| `REQUIREMENTS.md` | 带唯一 ID(REQ-XX)的范围化需求 | +| `ROADMAP.md` | 带状态跟踪和需求映射的阶段分解 | +| `STATE.md` | 含位置、决策、指标的初始项目状态 | +| `config.json` | 工作流配置 | +| `research/SUMMARY.md` | 综合领域研究 | +| `research/STACK.md` | 技术栈调研 | +| `research/FEATURES.md` | 功能实现模式 | +| `research/ARCHITECTURE.md` | 架构模式与权衡 | +| `research/PITFALLS.md` | 常见失败模式与缓解措施 | + +**流程:** +1. **提问** — 以"梦想提取"理念(而非需求收集)为指导的自适应提问 +2. **研究** — 4 个并行研究智能体分别调查技术栈、功能、架构和陷阱 +3. **综合** — 研究综合器将发现汇总为 SUMMARY.md +4. **需求** — 从用户回答与研究成果中提取,按范围分类 +5. **路线图** — 阶段分解映射至需求,粒度设置控制阶段数量 + +**功能需求:** +- 问题根据检测到的项目类型(Web 应用、CLI、移动端、API 等)自适应调整 +- 研究智能体具备网页搜索能力,可获取当前生态系统信息 +- 粒度设置控制阶段数量:`coarse`(3-5)、`standard`(5-8)、`fine`(8-12) +- `--auto` 模式从提供的文档中提取所有信息,无需交互式提问 +- 如果存在来自 `/gsd-map-codebase` 的代码库上下文,将自动加载 + +--- + +### 2. 阶段讨论 + +**命令:** `/gsd-discuss-phase [N] [--auto] [--batch]` + +**目的:** 在研究和规划开始之前,捕获用户的实现偏好和决策。消除导致 AI 猜测的灰色地带。 + +**需求:** +- REQ-DISC-01:系统必须分析阶段范围并识别决策区域(灰色地带) +- REQ-DISC-02:系统必须按类型(视觉、API、内容、组织等)对灰色地带进行分类 +- REQ-DISC-03:系统必须只提问先前 CONTEXT.md 文件中尚未回答的问题 +- REQ-DISC-04:系统必须将决策持久化到 `{phase}-CONTEXT.md`,并附带规范引用 +- REQ-DISC-05:系统必须支持 `--auto` 标志,自动选择推荐的默认值 +- REQ-DISC-06:系统必须支持 `--batch` 标志,用于分组问题采集 +- REQ-DISC-07:系统必须在识别灰色地带之前侦查相关源文件(代码感知讨论) +- REQ-DISC-08:当 USER-PROFILE.md 显示用户为非技术负责人时(learning_style: guided、frustration_triggers 中含行话,或解释深度偏高层),系统必须将灰色地带语言调整为产品成果术语 +- REQ-DISC-09:当 REQ-DISC-08 适用时,advisor_research 理由段落必须用通俗语言改写——相同的决策,转化后的表达方式 + +**产出物:** `{padded_phase}-CONTEXT.md` — 输入研究和规划的用户偏好 + +**灰色地带类别:** +| 类别 | 决策示例 | +|----------|-------------------| +| 视觉功能 | 布局、密度、交互、空状态 | +| API/CLI | 响应格式、标志、错误处理、详细程度 | +| 内容系统 | 结构、语气、深度、流程 | +| 组织 | 分组标准、命名、重复项、例外情况 | + +--- + +### 3. UI 设计契约 + +**命令:** `/gsd-ui-phase [N]` + +**目的:** 在规划之前锁定设计决策,使阶段中所有组件共享一致的视觉标准。 + +**需求:** +- REQ-UI-01:系统必须检测现有设计系统状态(shadcn components.json、Tailwind 配置、令牌) +- REQ-UI-02:系统必须只提问尚未回答的设计契约问题 +- REQ-UI-03:系统必须从 6 个维度进行验证(文案、视觉、颜色、排版、间距、注册表安全) +- REQ-UI-04:当验证返回 BLOCKED 时,系统必须进入修订循环(最多 2 次迭代) +- REQ-UI-05:对于没有 `components.json` 的 React/Next.js/Vite 项目,系统必须提供 shadcn 初始化 +- REQ-UI-06:系统必须对第三方 shadcn 注册表实施注册表安全门控 + +**产出物:** `{padded_phase}-UI-SPEC.md` — 执行者使用的设计契约 + +**6 个验证维度:** +1. **文案** — CTA 标签、空状态、错误消息 +2. **视觉** — 焦点、视觉层次、图标无障碍 +3. **颜色** — 强调色使用规范、60/30/10 合规性 +4. **排版** — 字体大小/粗细约束遵守情况 +5. **间距** — 网格对齐、令牌一致性 +6. **注册表安全** — 第三方组件检查要求 + +**shadcn 集成:** +- 检测 React/Next.js/Vite 项目中缺失的 `components.json` +- 引导用户完成 `ui.shadcn.com/create` 预设配置 +- 预设字符串成为可跨阶段复现的规划构件 +- 安全门控要求在使用第三方组件前执行 `npx shadcn view` 和 `npx shadcn diff` + +--- + +### 4. 阶段规划 + +**命令:** `/gsd-plan-phase [N] [--auto] [--skip-research] [--skip-verify]` + +**目的:** 研究实现领域,生成经过验证的原子化执行计划。 + +**需求:** +- REQ-PLAN-01:系统必须派生阶段研究员来调查实现方案 +- REQ-PLAN-02:系统必须生成每个包含 2-3 个任务的计划,大小适合单个上下文窗口 +- REQ-PLAN-03:系统必须将计划结构化为 XML,`` 元素包含 `name`、`files`、`action`、`verify` 和 `done` 字段 +- REQ-PLAN-04:系统必须在每个计划中包含 `read_first` 和 `acceptance_criteria` 节区 +- REQ-PLAN-05:系统必须运行计划检查验证循环(最多 3 次迭代),除非设置了 `--skip-verify` +- REQ-PLAN-06:系统必须支持 `--skip-research` 标志以绕过研究阶段 +- REQ-PLAN-07:当检测到前端阶段且不存在 UI-SPEC.md 时,系统必须提示用户运行 `/gsd-ui-phase`(UI 安全门控) +- REQ-PLAN-08:当 `workflow.nyquist_validation` 启用时,系统必须包含 Nyquist 验证映射 +- REQ-PLAN-09:规划完成前,系统必须验证所有阶段需求至少被一个计划覆盖(需求覆盖门控) + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| `{phase}-RESEARCH.md` | 生态系统研究发现 | +| `{phase}-{N}-PLAN.md` | 原子化执行计划(每个 2-3 个任务) | +| `{phase}-VALIDATION.md` | 测试覆盖映射(Nyquist 层) | + +**计划结构(XML):** +```xml + + Create login endpoint + src/app/api/auth/login/route.ts + + Use jose for JWT. Validate credentials against users table. + Return httpOnly cookie on success. + + curl -X POST localhost:3000/api/auth/login returns 200 + Set-Cookie + Valid credentials return cookie, invalid return 401 + +``` + +**计划检查验证(8 个维度):** +1. 需求覆盖 — 计划覆盖所有阶段需求 +2. 任务原子性 — 每个任务可独立提交 +3. 依赖顺序 — 任务正确排序 +4. 文件范围 — 计划之间无过多文件重叠 +5. 验证命令 — 每个任务有可测试的完成标准 +6. 上下文适配 — 任务适合单个上下文窗口 +7. 间隙检测 — 无缺失的实现步骤 +8. Nyquist 合规 — 任务有自动化验证命令(启用时) + +--- + +### 5. 阶段执行 + +**命令:** `/gsd-execute-phase ` + +**目的:** 使用基于波次的并行化方式执行阶段中所有计划,每个执行器使用全新的上下文窗口。 + +**需求:** +- REQ-EXEC-01:系统必须分析计划依赖关系并将其分组为执行波次 +- REQ-EXEC-02:系统必须在每个波次内并行派生独立计划 +- REQ-EXEC-03:系统必须为每个执行器提供全新的上下文窗口(200K tokens) +- REQ-EXEC-04:系统必须为每个任务生成原子化 git 提交 +- REQ-EXEC-05:系统必须为每个已完成的计划生成 SUMMARY.md +- REQ-EXEC-06:系统必须运行执行后验证器,检查阶段目标是否达成 +- REQ-EXEC-07:系统必须支持 git 分支策略(`none`、`phase`、`milestone`) +- REQ-EXEC-08:当任务验证失败时,系统必须调用节点修复操作符(启用时) +- REQ-EXEC-09:在验证之前,系统必须运行先前阶段的测试套件,以捕获跨阶段回归 + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| `{phase}-{N}-SUMMARY.md` | 每个计划的执行结果 | +| `{phase}-VERIFICATION.md` | 执行后验证报告 | +| Git 提交 | 每个任务的原子化提交 | + +**波次执行:** +- 无依赖的计划 → 波次 1(并行) +- 依赖波次 1 的计划 → 波次 2(并行,等待波次 1 完成) +- 持续直到所有计划完成 +- 文件冲突迫使同一波次内顺序执行 + +**执行器能力:** +- 读取包含完整任务指令的 PLAN.md +- 可访问 PROJECT.md、STATE.md、CONTEXT.md、RESEARCH.md +- 使用结构化提交消息原子化地提交每个任务 +- 并行执行期间使用 `--no-verify` 提交,避免构建锁竞争 +- 处理检查点类型:`auto`、`checkpoint:human-verify`、`checkpoint:decision`、`checkpoint:human-action` +- 在 SUMMARY.md 中报告对计划的偏差 + +**并行安全:** +- **pre-commit 钩子**:并行智能体跳过(`--no-verify`),每个波次后由编排器统一运行一次 +- **STATE.md 锁定**:文件级锁文件防止智能体间并发写入损坏 + +--- + +### 6. 工作验收 + +**命令:** `/gsd-verify-work [N]` + +**目的:** 用户验收测试 — 引导用户逐一测试每个可交付成果,并自动诊断失败。 + +**需求:** +- REQ-VERIFY-01:系统必须从阶段中提取可测试的可交付成果 +- REQ-VERIFY-02:系统必须逐一呈现可交付成果供用户确认 +- REQ-VERIFY-03:系统必须派生调试智能体自动诊断失败 +- REQ-VERIFY-04:系统必须为识别出的问题创建修复计划 +- REQ-VERIFY-05:对于修改服务器/数据库/种子/启动文件的阶段,系统必须注入冷启动冒烟测试 +- REQ-VERIFY-06:系统必须生成包含通过/失败结果的 UAT.md + +**产出物:** `{phase}-UAT.md` — 用户验收测试结果,如有问题则附修复计划 + +--- + +### 6.5. Ship + +**命令:** `/gsd-ship [N] [--draft]` + +**目的:** 将本地完成状态桥接到已合并的 PR。验证通过后,推送分支,根据规划构件自动生成 PR 正文,创建 PR,可选触发审查,并在 STATE.md 中跟踪。 + +**需求:** +- REQ-SHIP-01:系统必须在发布前验证阶段已通过验证 +- REQ-SHIP-02:系统必须通过 `gh` CLI 推送分支并创建 PR +- REQ-SHIP-03:系统必须从 SUMMARY.md、VERIFICATION.md 和 REQUIREMENTS.md 自动生成 PR 正文 +- REQ-SHIP-04:系统必须用发布状态和 PR 号更新 STATE.md +- REQ-SHIP-05:系统必须支持 `--draft` 标志,用于草稿 PR +- REQ-SHIP-06:系统必须支持通过 `ship.pr_body_sections` 配置的仅追加项目 PR 正文节区 + +**前提条件:** 阶段已验证、已安装并认证 `gh` CLI、工作在功能分支上 + +**产出物:** 具有丰富正文的 GitHub PR,可选配置的 PRD 风格节区,STATE.md 已更新 + +**用户文档:** [自定义 PR 正文节区](../ship-pr-body-sections.md) + +--- + +### 7. UI 审查 + +**命令:** `/gsd-ui-review [N]` + +**目的:** 对已实现的前端代码进行追溯性 6 支柱视觉审计。可作为独立工具用于任何项目。 + +**需求:** +- REQ-UIREVIEW-01:系统必须对 6 个支柱分别按 1-4 分进行评分 +- REQ-UIREVIEW-02:系统必须通过 Playwright CLI 截图并保存到 `.planning/ui-reviews/` +- REQ-UIREVIEW-03:系统必须为截图目录创建 `.gitignore` +- REQ-UIREVIEW-04:系统必须识别优先级最高的 3 个修复点 +- REQ-UIREVIEW-05:系统必须能独立运行(无需 UI-SPEC.md),使用抽象质量标准 + +**6 个审计支柱(1-4 分):** +1. **文案** — CTA 标签、空状态、错误状态 +2. **视觉** — 焦点、视觉层次、图标无障碍 +3. **颜色** — 强调色使用规范、60/30/10 合规性 +4. **排版** — 字体大小/粗细约束遵守情况 +5. **间距** — 网格对齐、令牌一致性 +6. **体验设计** — 加载/错误/空状态覆盖 + +**产出物:** `{padded_phase}-UI-REVIEW.md` — 评分和优先级修复建议 + +--- + +### 8. 里程碑管理 + +**命令:** `/gsd-audit-milestone`、`/gsd-complete-milestone`、`/gsd-new-milestone [name]` + +**目的:** 验证里程碑完成情况,归档,打发布标签,启动下一个开发周期。 + +**需求:** +- REQ-MILE-01:审计必须验证所有里程碑需求均已满足 +- REQ-MILE-02:审计必须检测存根、占位符实现和未测试代码 +- REQ-MILE-03:审计必须检查各阶段的 Nyquist 验证合规性 +- REQ-MILE-04:完成时必须将里程碑数据归档到 MILESTONES.md +- REQ-MILE-05:完成时必须提供发布的 git 标签创建选项 +- REQ-MILE-06:完成时必须提供压缩合并或带历史合并的选项(用于分支策略) +- REQ-MILE-07:完成时必须清理 UI 审查截图 +- REQ-MILE-08:新里程碑必须遵循与新项目相同的流程(提问 → 研究 → 需求 → 路线图) +- REQ-MILE-09:新里程碑不得重置现有工作流配置 + + +--- + +## 规划功能 + +### 9. 阶段管理 + +**命令:** `/gsd-phase`、`/gsd-phase --insert [N]`、`/gsd-phase --remove [N]` + +**目的:** 开发过程中动态修改路线图。 + +**需求:** +- REQ-PHASE-01:添加操作必须在当前路线图末尾追加新阶段 +- REQ-PHASE-02:插入操作必须在现有阶段之间使用小数编号(例如 3.1) +- REQ-PHASE-03:删除操作必须对后续所有阶段重新编号 +- REQ-PHASE-04:删除操作必须阻止删除已执行的阶段 +- REQ-PHASE-05:所有操作必须更新 ROADMAP.md 并创建/删除阶段目录 + +--- + +### 10. 快速模式 + +**命令:** `/gsd-quick [--full] [--discuss] [--research]` + +**目的:** 临时任务执行,具备 GSD 保证但路径更快。 + +**需求:** +- REQ-QUICK-01:系统必须接受自由格式的任务描述 +- REQ-QUICK-02:系统必须使用与完整工作流相同的规划器 + 执行器智能体 +- REQ-QUICK-03:默认情况下,系统必须跳过研究、计划检查和验证器 +- REQ-QUICK-04:`--full` 标志必须启用计划检查(最多 2 次迭代)和执行后验证 +- REQ-QUICK-05:`--discuss` 标志必须运行轻量级预规划讨论 +- REQ-QUICK-06:`--research` 标志必须在规划之前派生专注研究智能体 +- REQ-QUICK-07:标志必须可组合(`--discuss --research --full`) +- REQ-QUICK-08:系统必须在 `.planning/quick/YYMMDD-xxx-slug/` 中跟踪快速任务 +- REQ-QUICK-09:系统必须为快速任务执行生成原子化提交 + +--- + +### 11. 自主模式 + +**命令:** `/gsd-autonomous [--from N]` + +**目的:** 自主运行所有剩余阶段 — 每个阶段依次执行讨论 → 规划 → 执行。 + +**需求:** +- REQ-AUTO-01:系统必须按路线图顺序遍历所有未完成的阶段 +- REQ-AUTO-02:系统必须为每个阶段运行讨论 → 规划 → 执行 +- REQ-AUTO-03:系统必须暂停以获取明确的用户决策(灰色地带确认、阻塞问题、验证) +- REQ-AUTO-04:系统必须在每个阶段完成后重新读取 ROADMAP.md,以捕获动态插入的阶段 +- REQ-AUTO-05:`--from N` 标志必须从指定的阶段号开始 + +--- + +### 12. 自由路由 + +**命令:** `/gsd-progress --do`(另见 `/gsd-manager` 用于交互式路由) + +**目的:** 分析自由文本并路由到适当的 GSD 命令。 + +**需求:** +- REQ-DO-01:系统必须从自然语言输入中解析用户意图 +- REQ-DO-02:系统必须将意图映射到最匹配的 GSD 命令 +- REQ-DO-03:系统必须在执行前向用户确认路由 +- REQ-DO-04:系统必须针对项目已存在与无项目的上下文采用不同处理方式 + +--- + +### 13. 笔记捕获 + +**命令:** `/gsd-capture` + +**目的:** 零摩擦的想法捕获,不中断工作流。追加带时间戳的笔记、列出所有笔记,或将笔记提升为结构化待办事项。 + +**需求:** +- REQ-NOTE-01:系统必须通过单次 Write 调用保存带时间戳的笔记文件 +- REQ-NOTE-02:系统必须支持 `list` 子命令,显示项目和全局范围内的所有笔记 +- REQ-NOTE-03:系统必须支持 `promote N` 子命令,将笔记转换为结构化待办事项 +- REQ-NOTE-04:系统必须支持 `--global` 标志用于全局范围操作 +- REQ-NOTE-05:系统不得使用 Task、AskUserQuestion 或 Bash — 仅内联运行 + +--- + +### 14. 自动推进 (Next) + +**命令:** `/gsd-progress --next` + +**目的:** 自动检测当前项目状态并推进到下一个逻辑工作流步骤,无需记忆所在的阶段/步骤。 + +**需求:** +- REQ-NEXT-01:系统必须读取 STATE.md、ROADMAP.md 和阶段目录以确定当前位置 +- REQ-NEXT-02:系统必须检测是否需要讨论、规划、执行或验证 +- REQ-NEXT-03:系统必须自动调用正确的命令 +- REQ-NEXT-04:如果不存在项目,系统必须建议 `/gsd-new-project` +- REQ-NEXT-05:当所有阶段完成时,系统必须建议 `/gsd-complete-milestone` + +**状态检测逻辑:** +| 状态 | 操作 | +|-------|--------| +| 无 `.planning/` 目录 | 建议 `/gsd-new-project` | +| 阶段无 CONTEXT.md | 运行 `/gsd-discuss-phase` | +| 阶段无 PLAN.md 文件 | 运行 `/gsd-plan-phase` | +| 阶段有计划但无 SUMMARY.md | 运行 `/gsd-execute-phase` | +| 阶段已执行但无 VERIFICATION.md | 运行 `/gsd-verify-work` | +| 所有阶段完成 | 建议 `/gsd-complete-milestone` | + +--- + +## 质量保障功能 + +### 15. Nyquist 验证 + +**目的:** 在编写任何代码之前,将自动化测试覆盖映射到阶段需求。以奈奎斯特采样定理命名 — 确保每个需求都有反馈信号。 + +**需求:** +- REQ-NYQ-01:系统必须在规划阶段研究期间检测现有测试基础设施 +- REQ-NYQ-02:系统必须将每个需求映射到特定的测试命令 +- REQ-NYQ-03:系统必须识别波次 0 任务(实现之前需要测试脚手架) +- REQ-NYQ-04:计划检查器必须将 Nyquist 合规性作为第 8 个验证维度强制执行 +- REQ-NYQ-05:系统必须通过 `/gsd-validate-phase` 支持追溯验证 +- REQ-NYQ-06:系统必须可通过 `workflow.nyquist_validation: false` 禁用 + +**产出物:** `{phase}-VALIDATION.md` — 测试覆盖契约 + +**追溯验证(`/gsd-validate-phase [N]`):** +- 扫描实现并将需求映射到测试 +- 识别需求缺乏自动化验证的间隙 +- 派生审计器生成测试(最多 3 次尝试) +- 绝不修改实现代码 — 仅修改测试文件和 VALIDATION.md +- 将实现错误标记为需要用户处理的升级项 + +--- + +### 16. 计划检查 + +**目的:** 目标反向验证,确保计划在执行前能够实现阶段目标。 + +**需求:** +- REQ-PLANCK-01:系统必须从 8 个质量维度验证计划 +- REQ-PLANCK-02:系统必须循环最多 3 次迭代,直到计划通过 +- REQ-PLANCK-03:系统必须对失败提供具体、可操作的反馈 +- REQ-PLANCK-04:系统必须可通过 `workflow.plan_check: false` 禁用 + +--- + +### 17. 执行后验证 + +**目的:** 自动检查代码库是否交付了阶段所承诺的内容。 + +**需求:** +- REQ-POSTVER-01:系统必须对照阶段目标进行检查,而不仅仅是任务完成情况 +- REQ-POSTVER-02:系统必须生成带有通过/失败分析的 VERIFICATION.md +- REQ-POSTVER-03:系统必须记录问题供 `/gsd-verify-work` 处理 +- REQ-POSTVER-04:系统必须可通过 `workflow.verifier: false` 禁用 + +--- + +### 18. 节点修复 + +**目的:** 当执行期间任务验证失败时进行自主恢复。 + +**需求:** +- REQ-REPAIR-01:系统必须分析失败并选择一种策略:RETRY(重试)、DECOMPOSE(分解)或 PRUNE(修剪) +- REQ-REPAIR-02:RETRY 必须通过具体调整进行尝试 +- REQ-REPAIR-03:DECOMPOSE 必须将任务分解为更小的可验证子步骤 +- REQ-REPAIR-04:PRUNE 必须删除不可实现的任务并向用户升级 +- REQ-REPAIR-05:系统必须遵守修复预算(默认:每个任务 2 次尝试) +- REQ-REPAIR-06:系统必须可通过 `workflow.node_repair_budget` 和 `workflow.node_repair` 配置 + +--- + +### 19. 健康验证 + +**命令:** `/gsd-health [--repair]` + +**目的:** 验证 `.planning/` 目录完整性并自动修复问题。 + +**需求:** +- REQ-HEALTH-01:系统必须检查缺少的必需文件 +- REQ-HEALTH-02:系统必须验证配置一致性 +- REQ-HEALTH-03:系统必须检测无摘要的孤立计划 +- REQ-HEALTH-04:系统必须检查阶段编号和路线图同步 +- REQ-HEALTH-05:`--repair` 标志必须自动修复可恢复的问题 + +--- + +### 20. 跨阶段回归门控 + +**目的:** 通过在执行后运行先前阶段的测试套件,防止回归问题在阶段间累积。 + +**需求:** +- REQ-REGR-01:系统必须在阶段执行后运行所有已完成的先前阶段的测试套件 +- REQ-REGR-02:系统必须将任何测试失败报告为跨阶段回归 +- REQ-REGR-03:回归问题必须在执行后验证之前浮现 +- REQ-REGR-04:系统必须识别哪个先前阶段的测试被破坏 + +**触发时机:** 在 `/gsd-execute-phase` 期间,在验证器步骤之前自动运行。 + +--- + +### 21. 需求覆盖门控 + +**目的:** 确保所有阶段需求在规划完成前至少被一个计划覆盖。 + +**需求:** +- REQ-COVGATE-01:系统必须从 ROADMAP.md 中提取分配到该阶段的所有需求 ID +- REQ-COVGATE-02:系统必须验证每个需求至少出现在一个 PLAN.md 中 +- REQ-COVGATE-03:未覆盖的需求必须阻止规划完成 +- REQ-COVGATE-04:系统必须报告哪些具体需求缺乏计划覆盖 + +**触发时机:** 在 `/gsd-plan-phase` 结束时,在计划检查器循环之后自动运行。 + +--- + +## 上下文工程功能 + +### 22. 上下文窗口监控 + +**目的:** 在上下文即将耗尽时向用户和智能体发出警报,防止上下文腐烂。 + +**需求:** +- REQ-CTX-01:状态行必须向用户显示上下文使用百分比 +- REQ-CTX-02:上下文监控器必须在剩余 ≤35% 时注入面向智能体的警告(WARNING) +- REQ-CTX-03:上下文监控器必须在剩余 ≤25% 时注入面向智能体的警告(CRITICAL) +- REQ-CTX-04:警告必须去抖动(两次重复警告之间间隔 5 次工具使用) +- REQ-CTX-05:严重性升级(WARNING→CRITICAL)必须绕过去抖动 +- REQ-CTX-06:上下文监控器必须区分 GSD 激活与非 GSD 激活项目 +- REQ-CTX-07:警告必须是建议性的,绝不是覆盖用户偏好的命令式指令 +- REQ-CTX-08:所有钩子必须静默失败,绝不阻止工具执行 + +**架构:** 双部分桥接系统: +1. 状态行将指标写入 `/tmp/claude-ctx-{session}.json` +2. 上下文监控器读取指标并注入 `additionalContext` 警告 + +--- + +### 23. 会话管理 + +**命令:** `/gsd-pause-work`、`/gsd-resume-work`、`/gsd-progress` + +**目的:** 在上下文重置和会话间维护项目连续性。 + +**需求:** +- REQ-SESSION-01:暂停必须将当前位置和后续步骤保存到 `continue-here.md` 和结构化的 `HANDOFF.json` +- REQ-SESSION-02:恢复必须从 HANDOFF.json(优先)或状态文件(回退)恢复完整项目上下文 +- REQ-SESSION-03:进度必须显示当前位置、下一步操作和整体完成情况 +- REQ-SESSION-04:进度必须读取所有状态文件(STATE.md、ROADMAP.md、阶段目录) +- REQ-SESSION-05:所有会话操作必须在 `/clear`(上下文重置)后正常工作 +- REQ-SESSION-06:HANDOFF.json 必须包含阻塞问题、待处理的人工操作和正在进行的任务状态 +- REQ-SESSION-07:恢复必须在会话开始时立即呈现人工操作和阻塞问题 + +--- + +### 24. 会话报告 + +**命令:** `/gsd-pause-work --report` + +**目的:** 生成结构化的会话后摘要文档,记录已执行的工作、取得的成果和预估的资源使用情况。 + +**需求:** +- REQ-REPORT-01:系统必须从 STATE.md、git 日志和计划/摘要文件中收集数据 +- REQ-REPORT-02:系统必须包含已提交的记录、已执行的计划和推进的阶段 +- REQ-REPORT-03:系统必须根据会话活动估算 token 使用量和成本 +- REQ-REPORT-04:系统必须包含活跃的阻塞问题和已做出的决策 +- REQ-REPORT-05:系统必须推荐后续步骤 + +**产出物:** `.planning/reports/SESSION_REPORT.md` + +**报告节区:** +- 会话概览(持续时间、里程碑、阶段) +- 已执行工作(提交、计划、阶段) +- 成果和可交付成果 +- 阻塞问题和决策 +- 资源估算(tokens、成本) +- 后续步骤建议 + +--- + +### 25. 多智能体编排 + +**目的:** 协调专业智能体,每个任务使用全新的上下文窗口。 + +**需求:** +- REQ-ORCH-01:每个智能体必须接收全新的上下文窗口 +- REQ-ORCH-02:编排器必须保持精简 — 派生智能体、收集结果、路由到下一步 +- REQ-ORCH-03:上下文负载必须包含所有相关的项目构件 +- REQ-ORCH-04:并行智能体必须完全独立(无共享可变状态) +- REQ-ORCH-05:智能体结果必须在编排器处理之前写入磁盘 +- REQ-ORCH-06:失败的智能体必须被检测到(抽查实际输出与报告的失败) + +--- + +### 26. 模型配置 + +**命令:** `/gsd-config --profile ` + +**目的:** 控制每个智能体使用的 AI 模型,平衡质量与成本。 + +**需求:** +- REQ-MODEL-01:系统必须支持 4 种配置:`quality`、`balanced`、`budget`、`inherit` +- REQ-MODEL-02:每种配置必须为每个智能体定义模型层级(见配置表) +- REQ-MODEL-03:每个智能体的覆盖设置必须优先于配置文件 +- REQ-MODEL-04:`inherit` 配置必须遵从运行时当前的模型选择 +- REQ-MODEL-04a:在使用非 Anthropic 提供商(OpenRouter、本地模型)时,必须使用 `inherit` 配置,以避免意外的 API 费用 +- REQ-MODEL-05:配置文件切换必须是程序化的(脚本,而非 LLM 驱动) +- REQ-MODEL-06:模型解析必须在每次编排时发生一次,而非每次派生时发生 + +**配置分配:** + +| 智能体 | `quality` | `balanced` | `budget` | `inherit` | +|-------|-----------|------------|----------|-----------| +| gsd-planner | Opus | Opus | Sonnet | Inherit | +| gsd-roadmapper | Opus | Sonnet | Sonnet | Inherit | +| gsd-executor | Opus | Sonnet | Sonnet | Inherit | +| gsd-phase-researcher | Opus | Sonnet | Haiku | Inherit | +| gsd-project-researcher | Opus | Sonnet | Haiku | Inherit | +| gsd-research-synthesizer | Sonnet | Sonnet | Haiku | Inherit | +| gsd-debugger | Opus | Sonnet | Sonnet | Inherit | +| gsd-codebase-mapper | Sonnet | Haiku | Haiku | Inherit | +| gsd-verifier | Sonnet | Sonnet | Haiku | Inherit | +| gsd-plan-checker | Sonnet | Sonnet | Haiku | Inherit | +| gsd-integration-checker | Sonnet | Sonnet | Haiku | Inherit | +| gsd-nyquist-auditor | Sonnet | Sonnet | Haiku | Inherit | + +--- + +## 棕地功能 + +### 27. 代码库映射 + +**命令:** `/gsd-map-codebase [area]` + +**目的:** 在启动新项目之前分析现有代码库,使 GSD 了解已有内容。 + +**需求:** +- REQ-MAP-01:系统必须为每个分析领域派生并行映射智能体 +- REQ-MAP-02:系统必须在 `.planning/codebase/` 中生成结构化文档 +- REQ-MAP-03:系统必须检测:技术栈、架构模式、编码规范、关注点 +- REQ-MAP-04:后续的 `/gsd-new-project` 必须加载代码库映射,并将问题集中在新增内容上 +- REQ-MAP-05:可选的 `[area]` 参数必须将映射范围限定到特定区域 + +**产出物:** +| 文档 | 内容 | +|----------|---------| +| `STACK.md` | 语言、框架、数据库、基础设施 | +| `ARCHITECTURE.md` | 模式、层次、数据流、边界 | +| `CONVENTIONS.md` | 命名规范、文件组织、代码风格、测试模式 | +| `CONCERNS.md` | 技术债务、安全问题、性能瓶颈 | +| `STRUCTURE.md` | 目录布局和文件组织 | +| `TESTING.md` | 测试基础设施、覆盖率、模式 | +| `INTEGRATIONS.md` | 外部服务、API、第三方依赖 | + +**增量重映射 — `--paths` (#2003):** 映射器接受可选的 `--paths ` 范围提示。提供时,它将探索限制在列出的仓库相对前缀,而非扫描整个代码树。这是执行后代码库漂移门控用于仅刷新阶段实际修改的子树的路径。每个生成的文档在其 YAML 前置元数据中携带 `last_mapped_commit`,以便相对于映射点(而非 HEAD)来测量漂移。 + +### 27a. 执行后代码库漂移检测 + +**引入版本:** #2003 +**触发条件:** 在每次 `/gsd-execute-phase` 结束时自动运行 +**配置:** +- `workflow.drift_threshold`(整数,默认 `3`)— 门控触发前的最小新增结构元素数。 +- `workflow.drift_action`(`warn` | `auto-remap`,默认 `warn`)— 仅警告或派生 `gsd-codebase-mapper` 并将 `--paths` 限定到受影响的子树。 + +**漂移计入的情况:** +- 映射路径之外的新目录 +- `(packages|apps)/*/src/index.*` 处的新桶导出 +- 新的迁移文件(supabase/prisma/drizzle/src/migrations/…) +- `routes/` 或 `api/` 下的新路由模块 + +**非阻塞保证:** 任何内部失败(缺少 STRUCTURE.md、git 错误、映射器派生失败)都只记录一行日志,阶段继续执行。漂移检测不能导致验证失败。 + +**需求:** +- REQ-DRIFT-01:系统必须从 `git diff --name-status last_mapped_commit..HEAD` 检测四类漂移 +- REQ-DRIFT-02:仅当元素数量 ≥ `workflow.drift_threshold` 时才触发操作 +- REQ-DRIFT-03:`warn` 操作不得派生任何智能体 +- REQ-DRIFT-04:`auto-remap` 操作必须向映射器传递经过净化的 `--paths` +- REQ-DRIFT-05:检测/重映射失败对 `/gsd-execute-phase` 必须是非阻塞的 +- REQ-DRIFT-06:`last_mapped_commit` 通过每个 `.planning/codebase/*.md` 文件的 YAML 前置元数据进行往返 + +--- + +## 实用功能 + +### 28. 调试系统 + +**命令:** `/gsd-debug [description]` + +**目的:** 系统化调试,在上下文重置后保持持久状态。 + +**需求:** +- REQ-DEBUG-01:系统必须在 `.planning/debug/` 中创建调试会话文件 +- REQ-DEBUG-02:系统必须跟踪假设、证据和已排除的理论 +- REQ-DEBUG-03:系统必须持久化状态,以便调试能在上下文重置后继续 +- REQ-DEBUG-04:系统必须在标记为已解决之前要求人工验证 +- REQ-DEBUG-05:已解决的会话必须追加到 `.planning/debug/knowledge-base.md` +- REQ-DEBUG-06:新调试会话必须参考知识库,防止重复调查 + +**调试会话状态:** `gathering` → `investigating` → `fixing` → `verifying` → `awaiting_human_verify` → `resolved` + +--- + +### 29. 待办事项管理 + +**命令:** `/gsd-capture [desc]`、`/gsd-capture --list` + +**目的:** 在会话期间捕获想法和任务以供后续工作。 + +**需求:** +- REQ-TODO-01:系统必须从当前对话上下文中捕获待办事项 +- REQ-TODO-02:待办事项必须存储在 `.planning/todos/pending/` +- REQ-TODO-03:已完成的待办事项必须移至 `.planning/todos/completed/` +- REQ-TODO-04:查看待办事项必须列出所有待处理项目,并提供选择处理其中一项的功能 + +--- + +### 30. 统计仪表板 + +**命令:** `/gsd-stats` + +**目的:** 显示项目指标 — 阶段、计划、需求、git 历史和时间线。 + +**需求:** +- REQ-STATS-01:系统必须显示阶段/计划完成数量 +- REQ-STATS-02:系统必须显示需求覆盖情况 +- REQ-STATS-03:系统必须显示 git 提交指标 +- REQ-STATS-04:系统必须支持多种输出格式(json、table、bar) + +--- + +### 31. 更新系统 + +**命令:** `/gsd-update` + +**目的:** 使用变更日志预览将 GSD 更新至最新版本。 + +**需求:** +- REQ-UPDATE-01:系统必须通过 npm 检查新版本 +- REQ-UPDATE-02:系统必须在更新前显示新版本的变更日志 +- REQ-UPDATE-03:系统必须感知运行时并针对正确的目录 +- REQ-UPDATE-04:系统必须将本地修改的文件备份到 `gsd-local-patches/` +- REQ-UPDATE-05:`/gsd-update --reapply` 必须在更新后恢复本地修改 + +--- + +### 32. 设置管理 + +**命令:** `/gsd-settings` + +**目的:** 交互式配置工作流开关和模型配置。 + +**需求:** +- REQ-SETTINGS-01:系统必须以切换选项呈现当前设置 +- REQ-SETTINGS-02:系统必须更新 `.planning/config.json` +- REQ-SETTINGS-03:系统必须支持保存为全局默认值(`~/.gsd/defaults.json`) + +**可配置设置:** +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `mode` | enum | `interactive` | `interactive` 或 `yolo`(自动审批) | +| `granularity` | enum | `standard` | `coarse`、`standard` 或 `fine` | +| `model_profile` | enum | `balanced` | `quality`、`balanced`、`budget` 或 `inherit` | +| `models.` | enum | (无) | 每阶段类型层级覆盖(`planning`、`discuss`、`research`、`execution`、`verification`、`completion`)。取值:`opus`、`sonnet`、`haiku`、`inherit`。粗粒度阶段级调优,优先于 `model_profile`,但低于每智能体 `model_overrides`。参见 [CONFIGURATION.md](CONFIGURATION.md#per-phase-type-models-models--added-in-v140)。v1.40 新增 | +| `dynamic_routing.enabled` | boolean | `false` | 失败层级升级的主开关。为 `true` 时,智能体解析到 `tier_models[default_tier]`,并在编排器检测到软失败时升级一级。受 `max_escalations` 限制。参见 [CONFIGURATION.md](CONFIGURATION.md#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140)。v1.40 新增 | +| `workflow.research` | boolean | `true` | 规划前的领域研究 | +| `workflow.plan_check` | boolean | `true` | 计划验证循环 | +| `workflow.verifier` | boolean | `true` | 执行后验证 | +| `workflow.auto_advance` | boolean | `false` | 自动链接讨论→规划→执行 | +| `workflow.nyquist_validation` | boolean | `true` | Nyquist 测试覆盖映射 | +| `workflow.ui_phase` | boolean | `true` | UI 设计契约生成 | +| `workflow.ui_safety_gate` | boolean | `true` | 在前端阶段提示运行 ui-phase | +| `workflow.node_repair` | boolean | `true` | 自主任务修复 | +| `workflow.node_repair_budget` | number | `2` | 每个任务的最大修复尝试次数 | +| `planning.commit_docs` | boolean | `true` | 将 `.planning/` 文件提交到 git | +| `planning.search_gitignored` | boolean | `false` | 在搜索中包含 gitignored 文件 | +| `parallelization.enabled` | boolean | `true` | 同时运行独立计划 | +| `git.branching_strategy` | enum | `none` | `none`、`phase` 或 `milestone` | + +--- + +### 33. 测试生成 + +**命令:** `/gsd-add-tests [N]` + +**目的:** 根据 UAT 标准和实现,为已完成的阶段生成测试。 + +**需求:** +- REQ-TEST-01:系统必须分析已完成阶段的实现 +- REQ-TEST-02:系统必须根据 UAT 标准和验收标准生成测试 +- REQ-TEST-03:系统必须使用现有的测试基础设施模式 + +--- + +## 基础设施功能 + +### 34. Git 集成 + +**目的:** 原子化提交、分支策略和清晰的历史管理。 + +**需求:** +- REQ-GIT-01:每个任务必须有其原子化提交 +- REQ-GIT-02:提交消息必须遵循结构化格式:`type(scope): description` +- REQ-GIT-03:系统必须支持 3 种分支策略:`none`、`phase`、`milestone` +- REQ-GIT-04:phase 策略必须为每个阶段创建一个分支 +- REQ-GIT-05:milestone 策略必须为每个里程碑创建一个分支 +- REQ-GIT-06:完成里程碑必须提供压缩合并(推荐)或带历史合并选项 +- REQ-GIT-07:系统必须遵守 `.planning/` 文件的 `commit_docs` 设置 +- REQ-GIT-08:系统必须自动检测 `.gitignore` 中的 `.planning/` 并跳过提交 + +**提交格式:** +``` +type(phase-plan): description + +# 示例: +docs(08-02): complete user registration plan +feat(08-02): add email confirmation flow +fix(03-01): correct auth token expiry +``` + +--- + +### 35. CLI 工具 + +**目的:** 工作流和智能体的程序化实用工具,替代重复性的内联 bash 模式。 + +**需求:** +- REQ-CLI-01:系统必须提供用于状态、配置、阶段、路线图操作的原子化命令 +- REQ-CLI-02:系统必须提供复合 `init` 命令,为每个工作流加载所有上下文 +- REQ-CLI-03:系统必须支持 `--raw` 标志用于机器可读输出 +- REQ-CLI-04:系统必须支持 `--cwd` 标志用于沙箱子智能体操作 +- REQ-CLI-05:所有操作在 Windows 上必须使用正斜杠路径 + +**命令类别:** 状态(11 个子命令)、阶段(5)、路线图(3)、验证(8)、模板(2)、前置元数据(4)、脚手架(4)、初始化(12)、验证(2)、进度、统计、待办 + +--- + +### 36. 多运行时支持 + +**目的:** 跨多个 AI 编程智能体运行时运行 GSD。 + +**需求:** +- REQ-RUNTIME-01:系统必须支持 Claude Code、OpenCode、Gemini CLI、Kilo、Codex、Copilot、Antigravity、Trae、Cline、Augment Code、CodeBuddy、Qwen Code +- REQ-RUNTIME-02:安装器必须按运行时转换内容(工具名称、路径、前置元数据) +- REQ-RUNTIME-03:安装器必须支持交互式和非交互式(`--claude --global`)模式 +- REQ-RUNTIME-04:安装器必须支持全局和本地安装 +- REQ-RUNTIME-05:卸载必须干净地移除所有 GSD 文件,不影响其他配置 +- REQ-RUNTIME-06:安装器必须处理平台差异(Windows、macOS、Linux、WSL、Docker) + +**运行时转换:** + +| 方面 | Claude Code | OpenCode | Gemini | Kilo | Codex | Copilot | Antigravity | Trae | Cline | Augment | CodeBuddy | Qwen Code | +|--------|------------|----------|--------|-------|-------|---------|-------------|------|-------|---------|-----------|-----------| +| 命令 | 斜杠命令 | 斜杠命令 | 斜杠命令 | 斜杠命令 | Skills (TOML) | 斜杠命令 | Skills | Skills | Rules | Skills | Skills | Skills | +| 智能体格式 | Claude 原生 | `mode: subagent` | Claude 原生 | `mode: subagent` | Skills | 工具映射 | Skills | Skills | Rules | Skills | Skills | Skills | +| 钩子事件 | `PostToolUse` | N/A | `AfterTool` | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | +| 配置 | `settings.json` | `opencode.json(c)` | `settings.json` | `kilo.json(c)` | TOML | Instructions | Config | Config | `.clinerules` | Config | Config | Config | + +--- + +### 37. 钩子系统 + +**目的:** 用于上下文监控、状态显示和更新检查的运行时事件钩子。 + +**需求:** +- REQ-HOOK-01:状态行必须显示模型、当前任务、目录和上下文使用情况 +- REQ-HOOK-02:上下文监控器必须在阈值级别注入面向智能体的警告 +- REQ-HOOK-03:更新检查器必须在会话开始时在后台运行 +- REQ-HOOK-04:所有钩子必须遵守 `CLAUDE_CONFIG_DIR` 环境变量 +- REQ-HOOK-05:所有钩子必须包含 3 秒 stdin 超时守护 +- REQ-HOOK-06:所有钩子在发生任何错误时必须静默失败 +- REQ-HOOK-07:上下文使用情况必须针对自动压缩缓冲区进行归一化(保留 16.5%) +- REQ-HOOK-08:更新横幅必须是选项,且在没有可用更新时保持静默(PR #2795) + +**状态行显示:** +```text +[⬆ /gsd-update │] model │ [current task │] directory [█████░░░░░ 50%] +``` + +颜色编码:<50% 绿色,<65% 黄色,<80% 橙色,≥80% 红色带骷髅表情 + +**更新横幅(选项,当未使用 GSD 状态行时):** + +当用户拒绝(或保留非 GSD)状态行时,安装器提供一个 SessionStart 横幅,在不占用状态行空间的情况下显示更新可用性。横幅读取 `~/.cache/gsd/gsd-update-check.json`(由 `gsd-check-update-worker.js` 写入),仅在有可用更新时输出一行: + +```text +GSD update available: 1.39.0 → 1.40.0. Run /gsd-update. +``` + +无更新时横幅保持静默,"检查失败"诊断每 24 小时限流一次。通过 `npx @opengsd/gsd-core --uninstall` 或删除引用 `gsd-update-banner.js` 的 SessionStart 条目可干净移除。 + +### 38. 开发者画像 + +**命令:** `/gsd-profile-user [--questionnaire] [--refresh]` + +**目的:** 分析 Claude Code 会话历史,从 8 个维度构建行为画像,生成可个性化 Claude 响应风格的构件。 + +**维度:** +1. 沟通风格(简洁 vs 冗长,正式 vs 随意) +2. 决策模式(快速 vs 审慎,风险承受度) +3. 调试方式(系统化 vs 直觉化,日志偏好) +4. 用户体验偏好(设计敏感度、无障碍意识) +5. 供应商/技术选择(框架偏好、生态系统熟悉度) +6. 挫折触发点(工作流中造成摩擦的因素) +7. 学习风格(文档 vs 示例,深度偏好) +8. 解释深度(高层次 vs 实现细节) + +**生成的构件:** +- `USER-PROFILE.md` — 带证据引用的完整行为画像 +- `CLAUDE.md` 画像节区 — 由 Claude Code 自动发现 + +**标志:** +- `--questionnaire` — 当会话历史不可用时的交互式问卷回退 +- `--refresh` — 重新分析会话并重新生成画像 + +**流水线模块:** +- `profile-pipeline.cjs` — 会话扫描、消息提取、采样 +- `profile-output.cjs` — 画像渲染、问卷、构件生成 +- `gsd-user-profiler` 智能体 — 从会话数据进行行为分析 + +**需求:** +- REQ-PROF-01:会话分析必须涵盖至少 8 个行为维度 +- REQ-PROF-02:画像必须引用实际会话消息中的证据 +- REQ-PROF-03:当没有会话历史时,必须提供问卷作为回退 +- REQ-PROF-04:生成的构件必须可被 Claude Code 发现(CLAUDE.md 集成) + +### 39. 执行加固 + +**目的:** 执行流水线的三项附加质量改进,在级联之前捕获跨计划失败。 + +**组件:** + +**1. 波次前依赖检查**(execute-phase) +在派生波次 N+1 之前,验证先前波次构件中的关键链接是否存在并正确连接。在下游失败级联之前捕获跨计划依赖间隙。 + +**2. 跨计划数据契约 — 维度 9**(plan-checker) +新增分析维度,检查共享数据流水线的计划具有兼容的转换。当一个计划剥离了另一个计划在原始形式下需要的数据时进行标记。 + +**3. 导出级别抽查**(verify-phase) +在第 3 级连接验证通过后,对单个导出进行实际使用抽查。捕获存在于连接文件中但从未被调用的死存储。 + +**需求:** +- REQ-HARD-01:波次前检查必须在派生下一波次之前验证所有先前波次构件中的关键链接 +- REQ-HARD-02:跨计划契约检查必须检测计划间不兼容的数据转换 +- REQ-HARD-03:导出抽查必须识别连接文件中的死存储 + +--- + +### 40. 验证债务追踪 + +**命令:** `/gsd-audit-uat` + +**目的:** 当项目在有待处理测试的阶段后推进时,防止 UAT/验证项目的静默丢失。跨所有先前阶段呈现验证债务,确保项目不被遗忘。 + +**组件:** + +**1. 跨阶段健康检查**(progress.md 步骤 1.6) +每次 `/gsd-progress` 调用都会扫描当前里程碑中的所有阶段,查找未处理项目(pending、skipped、blocked、human_needed)。显示带可操作链接的非阻塞警告节区。 + +**2. `status: partial`**(verify-work.md、UAT.md) +新的 UAT 状态,区分"会话结束"和"所有测试已解决"。当测试仍处于待处理、阻塞或无故跳过状态时,阻止 `status: complete`。 + +**3. 带 `blocked_by` 标签的 `result: blocked`**(verify-work.md、UAT.md) +被外部依赖项(服务器、物理设备、发布构建、第三方服务)阻塞的测试的新结果类型。与跳过的测试分开分类。 + +**4. HUMAN-UAT.md 持久化**(execute-phase.md) +当验证返回 `human_needed` 时,项目作为带 `status: partial` 的可追踪 HUMAN-UAT.md 文件持久化。用于跨阶段健康检查和审计系统。 + +**5. 阶段完成警告**(phase.cjs、transition.md) +`phase complete` CLI 在其 JSON 输出中返回验证债务警告。过渡工作流在确认前呈现未处理项目。 + +**需求:** +- REQ-DEBT-01:系统必须在 `/gsd-progress` 中呈现所有先前阶段的未处理 UAT/验证项目 +- REQ-DEBT-02:系统必须区分不完整测试(partial)和已完成测试(complete) +- REQ-DEBT-03:系统必须使用 `blocked_by` 标签对阻塞的测试进行分类 +- REQ-DEBT-04:系统必须将 human_needed 验证项目持久化为可追踪的 UAT 文件 +- REQ-DEBT-05:系统在阶段完成和过渡期间发现验证债务时,必须发出(非阻塞)警告 +- REQ-DEBT-06:`/gsd-audit-uat` 必须扫描所有阶段,按可测试性分类项目,并生成人工测试计划 + +--- + +## v1.27 功能 + +### 41. 快速模式 + +**命令:** `/gsd-fast [task description]` + +**目的:** 内联执行简单任务,无需派生子智能体或生成 PLAN.md 文件。适用于不值得规划开销的任务:修复拼写错误、配置更改、小型重构、遗漏的提交、简单添加。 + +**需求:** +- REQ-FAST-01:系统必须直接在当前上下文中执行任务,无需子智能体 +- REQ-FAST-02:系统必须为更改生成原子化 git 提交 +- REQ-FAST-03:系统必须在 `.planning/quick/` 中跟踪任务以保持状态一致性 +- REQ-FAST-04:系统不得用于需要研究、多步骤规划或验证的任务 + +**何时使用 vs `/gsd-quick`:** +- `/gsd-fast` — 可在 2 分钟内完成的一句话任务(拼写错误、配置更改、小型添加) +- `/gsd-quick` — 任何需要研究、多步骤规划或验证的事项 + +--- + +### 42. 跨 AI 同行评审 + +**命令:** `/gsd-review --phase N [--gemini] [--claude] [--codex] [--coderabbit] [--opencode] [--qwen] [--cursor] [--agy] [--ollama] [--lm-studio] [--llama-cpp] [--all]` + +**目的:** 调用外部 AI CLI(Gemini、Claude、Codex、CodeRabbit、OpenCode、Qwen Code、Cursor、Antigravity)独立审查阶段计划。生成包含每位审查者反馈的结构化 REVIEWS.md。 + +**需求:** +- REQ-REVIEW-01:系统必须检测系统上可用的 AI CLI +- REQ-REVIEW-02:系统必须从阶段计划构建结构化审查提示 +- REQ-REVIEW-03:系统必须独立调用每个选定的 CLI +- REQ-REVIEW-04:系统必须收集响应并生成 `REVIEWS.md` +- REQ-REVIEW-05:审查结果必须可被 `/gsd-plan-phase --reviews` 使用 +- REQ-REVIEW-06:系统必须通过 `review.default_reviewers` 支持项目级无标志默认值 +- REQ-REVIEW-07:审查者优先级必须为:明确标志 > `--all` > `review.default_reviewers` > 所有检测到的审查者 + +**产出物:** `{phase}-REVIEWS.md` — 每位审查者的结构化反馈 + +**用户配置说明:** +- 在 `.planning/config.json` 中(或通过 `gsd config-set`)设置 `review.default_reviewers`,控制无标志 `/gsd-review` 的扇出。 +- 使用 `--all` 进行完整的预合并扫描,而不更改项目默认值。 +- 对于上下文窗口较小的本地模型服务器,设置 `review.max_prompt_tokens_per_reviewer` 可按审查者自动裁剪提示 — 参见 CONFIGURATION.md 中的[小上下文审查者提示预算](../CONFIGURATION.md#prompt-budgets-for-small-context-reviewers)。 + +--- + +### 43. 待办停车场 + +**命令:** `/gsd-capture --backlog `、`/gsd-review-backlog`、`/gsd-capture --seed ` + +**目的:** 捕获尚未准备好进行主动规划的想法。待办事项使用 999.x 编号,保持在活跃阶段序列之外。种子是具有触发条件的前瞻性想法,在适当的里程碑时自动浮现。 + +**需求:** +- REQ-BACKLOG-01:待办事项必须使用 999.x 编号,保持在活跃阶段序列之外 +- REQ-BACKLOG-02:必须立即创建阶段目录,以便 `/gsd-discuss-phase` 和 `/gsd-plan-phase` 可以在其上运行 +- REQ-BACKLOG-03:`/gsd-review-backlog` 必须支持每个项目的提升、保留和删除操作 +- REQ-BACKLOG-04:提升的项目必须重新编号进入活跃里程碑序列 +- REQ-SEED-01:种子必须捕获完整的原因和浮现时机条件 +- REQ-SEED-02:`/gsd-new-milestone` 必须扫描种子并呈现匹配项 + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| `.planning/phases/999.x-slug/` | 待办事项目录 | +| `.planning/seeds/SEED-NNN-slug.md` | 带触发条件的种子 | + +--- + +### 44. 持久化上下文线程 + +**命令:** `/gsd-thread [name | description]` + +**目的:** 跨会话的轻量级知识存储,用于跨多个会话但不属于任何特定阶段的工作。比 `/gsd-pause-work` 更轻量 — 无阶段状态,无计划上下文。 + +**需求:** +- REQ-THREAD-01:系统必须支持创建、列出和恢复模式 +- REQ-THREAD-02:线程必须以 Markdown 文件形式存储在 `.planning/threads/` +- REQ-THREAD-03:线程文件必须包含目标、上下文、参考资料和后续步骤节区 +- REQ-THREAD-04:恢复线程必须将其完整上下文加载到当前会话 +- REQ-THREAD-05:线程必须可提升为阶段或待办事项 + +**产出物:** `.planning/threads/{slug}.md` — 持久化上下文线程 + +--- + +### 45. PR 分支过滤 + +**命令:** `/gsd-pr-branch [target branch]` + +**目的:** 通过过滤掉 `.planning/` 提交,创建适合拉取请求的干净分支。审查者只看到代码更改,而不是 GSD 规划构件。 + +**需求:** +- REQ-PRBRANCH-01:系统必须识别仅修改 `.planning/` 文件的提交 +- REQ-PRBRANCH-02:系统必须创建过滤掉规划提交的新分支 +- REQ-PRBRANCH-03:代码更改必须完全按照提交时的状态保留 + +--- + +### 46. 安全加固 + +**目的:** GSD 规划构件的纵深防御安全机制。由于 GSD 生成的 Markdown 文件会成为 LLM 系统提示,流入这些文件的用户控制文本是潜在的间接提示注入向量。 + +**组件:** + +**1. 集中式安全模块**(`security.cjs`) +- 路径遍历防护 — 验证文件路径是否解析在项目目录内 +- 提示注入检测 — 扫描用户提供的文本中的已知注入模式 +- 安全 JSON 解析 — 在状态损坏之前捕获格式错误的输入 +- 字段名验证 — 通过配置字段名防止注入 +- Shell 参数验证 — 在 shell 插值之前对用户文本进行净化 + +**2. 提示注入守护钩子**(`gsd-prompt-guard.js`) +PreToolUse 钩子,扫描针对 `.planning/` 的 Write/Edit 调用中的注入模式。仅为建议 — 记录检测结果以提高意识,不阻止合法操作。 + +**3. 工作流守护钩子**(`gsd-workflow-guard.js`) +PreToolUse 钩子,检测 Claude 在 GSD 工作流上下文之外尝试文件编辑的情况。建议使用 `/gsd-quick` 或 `/gsd-fast` 替代直接编辑。可通过 `hooks.workflow_guard` 配置(默认:false)。 + +**4. CI 就绪注入扫描器**(`prompt-injection-scan.test.cjs`) +扫描所有智能体、工作流和命令文件中嵌入注入向量的测试套件。 + +**需求:** +- REQ-SEC-01:所有用户提供的文件路径必须针对项目目录进行验证 +- REQ-SEC-02:提示注入模式必须在文本进入规划构件之前被检测 +- REQ-SEC-03:安全钩子必须仅为建议性(永不阻止合法操作) +- REQ-SEC-04:对用户输入的 JSON 解析必须优雅地捕获格式错误的数据 +- REQ-SEC-05:macOS `/var` → `/private/var` 符号链接解析必须在路径验证中处理 + +--- + +### 47. 多仓库工作区支持 + +**目的:** 单体仓库和多仓库设置的自动检测和项目根路径解析。支持 `.planning/` 可能需要跨仓库边界解析的工作区。 + +**需求:** +- REQ-MULTIREPO-01:系统必须自动检测多仓库工作区配置 +- REQ-MULTIREPO-02:系统必须跨仓库边界解析项目根路径 +- REQ-MULTIREPO-03:执行器必须在多仓库模式下记录每个仓库的提交哈希 + +--- + +### 48. 讨论审计追踪 + +**目的:** 在 `/gsd-discuss-phase` 期间自动生成 `DISCUSSION-LOG.md`,提供讨论期间做出决策的完整审计追踪。 + +**需求:** +- REQ-DISCLOG-01:系统必须在 discuss-phase 期间自动生成 DISCUSSION-LOG.md +- REQ-DISCLOG-02:日志必须捕获提出的问题、呈现的选项和做出的决策 +- REQ-DISCLOG-03:决策 ID 必须实现从 discuss-phase 到 plan-phase 的可追溯性 + +--- + +## v1.28 功能 + +### 49. 取证分析 + +**命令:** `/gsd-forensics [description]` + +**目的:** 对失败或卡住的 GSD 工作流进行事后调查。 + +**需求:** +- REQ-FORENSICS-01:系统必须分析 git 历史中的异常(卡住的循环、长时间间隔、重复提交) +- REQ-FORENSICS-02:系统必须检查构件完整性(已完成阶段应有预期的文件) +- REQ-FORENSICS-03:系统必须生成保存到 `.planning/forensics/` 的 Markdown 报告 +- REQ-FORENSICS-04:系统必须提供创建 GitHub Issue 的选项并附上发现结果 +- REQ-FORENSICS-05:系统不得修改项目文件(只读调查) + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| `.planning/forensics/report-{timestamp}.md` | 事后调查报告 | + +**流程:** +1. **扫描** — 分析 git 历史中的异常:卡住的循环、提交间的长时间间隔、重复的相同提交 +2. **完整性检查** — 验证已完成阶段是否有预期的构件文件 +3. **报告** — 生成 Markdown 报告,保存到 `.planning/forensics/` +4. **Issue** — 提供创建 GitHub Issue 的选项,以便团队了解发现结果 + +--- + +### 50. 里程碑摘要 + +**命令:** `/gsd-milestone-summary [version]` + +**目的:** 从里程碑构件生成全面的项目摘要,用于团队入职。 + +**需求:** +- REQ-SUMMARY-01:系统必须聚合阶段计划、摘要和验证结果 +- REQ-SUMMARY-02:系统必须适用于当前和已归档的里程碑 +- REQ-SUMMARY-03:系统必须生成单个可导航的文档 + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| `MILESTONE-SUMMARY.md` | 里程碑构件的全面可导航摘要 | + +**流程:** +1. **收集** — 从目标里程碑聚合阶段计划、摘要和验证结果 +2. **综合** — 将构件合并为带交叉引用的单个可导航文档 +3. **输出** — 编写适合团队入职和利益相关方审查的 `MILESTONE-SUMMARY.md` + +--- + +### 51. 工作流命名空间 + +**命令:** `/gsd-workstreams` + +**目的:** 并行工作流,用于在不同里程碑区域上同时工作。 + +**需求:** +- REQ-WS-01:系统必须在独立的 `.planning/workstreams/{name}/` 目录中隔离工作流状态 +- REQ-WS-02:系统必须验证工作流名称(仅限字母数字 + 连字符,无路径遍历) +- REQ-WS-03:系统必须支持 list、create、switch、status、progress、complete、resume 子命令 + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| `.planning/workstreams/{name}/` | 隔离的工作流目录结构 | + +**流程:** +1. **创建** — 使用隔离的 `.planning/workstreams/{name}/` 目录初始化命名工作流 +2. **切换** — 为后续 GSD 命令更改活跃工作流上下文 +3. **管理** — 列出、检查状态、跟踪进度、完成或恢复工作流 + +--- + +### 52. 管理仪表板 + +**命令:** `/gsd-manager` + +**目的:** 从一个终端管理多个阶段的交互式命令中心。 + +**需求:** +- REQ-MGR-01:系统必须显示所有阶段及其状态的概览 +- REQ-MGR-02:系统必须过滤到当前里程碑范围 +- REQ-MGR-03:系统必须显示阶段依赖关系和冲突 + +**产出物:** 交互式终端输出 + +**流程:** +1. **扫描** — 加载当前里程碑中的所有阶段及其状态 +2. **显示** — 渲染显示阶段依赖关系、冲突和进度的概览 +3. **交互** — 接受命令以导航、检查或对单个阶段采取行动 + +--- + +### 53. 假设讨论模式 + +**命令:** `/gsd-discuss-phase` 配合 `workflow.discuss_mode: 'assumptions'` + +**目的:** 用代码库优先的假设分析替代访谈式提问。 + +**需求:** +- REQ-ASSUME-01:系统必须在提问之前分析代码库以生成结构化假设 +- REQ-ASSUME-02:系统必须按置信度(Confident/Likely/Unclear)对假设进行分类 +- REQ-ASSUME-03:系统必须生成与默认讨论模式格式相同的 CONTEXT.md +- REQ-ASSUME-04:系统必须支持基于置信度的跳过门控(全部 HIGH = 不提问) + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| `{phase}-CONTEXT.md` | 与默认讨论模式格式相同 | + +**流程:** +1. **分析** — 扫描代码库以生成关于实现方法的结构化假设 +2. **分类** — 按置信度级别对假设进行分类:Confident、Likely、Unclear +3. **门控** — 如果所有假设都具有高置信度,则完全跳过提问 +4. **确认** — 将不明确的假设作为有针对性的问题呈现给用户 +5. **输出** — 以与默认讨论模式相同的格式生成 `{phase}-CONTEXT.md` + +--- + +### 54. UI 阶段自动检测 + +**属于:** `/gsd-new-project` 和 `/gsd-progress` + +**目的:** 自动检测 UI 密集型项目并呈现 `/gsd-ui-phase` 建议。 + +**需求:** +- REQ-UI-DETECT-01:系统必须检测项目描述中的 UI 信号(关键字、框架引用) +- REQ-UI-DETECT-02:当适用时,系统必须在 ROADMAP.md 阶段中添加 `ui_hint` 注释 +- REQ-UI-DETECT-03:系统必须在 UI 密集型阶段的后续步骤中建议 `/gsd-ui-phase` +- REQ-UI-DETECT-04:系统不得将 `/gsd-ui-phase` 设为强制性 + +**流程:** +1. **检测** — 扫描项目描述和技术栈中的 UI 信号(关键字、框架引用) +2. **标注** — 在 ROADMAP.md 中为适用阶段添加 `ui_hint` 标记 +3. **呈现** — 在 UI 密集型阶段的后续步骤中包含 `/gsd-ui-phase` 建议 + +--- + +### 55. 多运行时安装选择 + +**属于:** `npx @opengsd/gsd-core` + +**目的:** 在单个交互式安装会话中选择多个运行时。 + +**需求:** +- REQ-MULTI-RT-01:交互式提示必须支持多选(例如 Claude Code + Gemini) +- REQ-MULTI-RT-02:CLI 标志必须继续适用于非交互式安装 + +**流程:** +1. **检测** — 识别系统上可用的 AI CLI 运行时 +2. **提示** — 呈现运行时选择的多选界面 +3. **安装** — 在单个会话中为所有选定的运行时配置 GSD + +--- + +## v1.29 功能 + +### 56. Windsurf 运行时支持 + +**属于:** `npx @opengsd/gsd-core` + +**目的:** 将 Windsurf 添加为 GSD 安装和执行支持的 AI CLI 运行时。 + +**需求:** +- REQ-WINDSURF-01:安装器必须检测 Windsurf 运行时并将其作为目标提供 +- REQ-WINDSURF-02:GSD 命令必须在 Windsurf 会话中正确运行 + +**流程:** +1. **检测** — 识别系统上 Windsurf 运行时的可用性 +2. **安装** — 为 Windsurf 环境配置 GSD 技能和钩子 + +--- + +### 57. 国际化文档 + +**属于:** `docs/` + +**目的:** 提供葡萄牙语、韩语和日语版本的 GSD 文档。 + +**需求:** +- REQ-I18N-01:文档必须提供葡萄牙语(pt)、韩语(ko)和日语(ja)版本 +- REQ-I18N-02:翻译必须与英文源文档保持同步 + +**流程:** +1. **翻译** — 将核心文档转换为目标语言 +2. **发布** — 使翻译后的文档与英文原版一同可访问 + +--- + +## v1.31 功能 + +### 59. Schema 漂移检测 + +**命令:** 在 `/gsd-execute-phase` 期间自动执行 + +**目的:** 检测 ORM schema 文件在没有相应迁移或推送命令的情况下被修改,防止误报验证。 + +**需求:** +- REQ-SCHEMA-01:系统必须检测对 ORM schema 文件的修改(Prisma、Drizzle、Payload、Sanity、Mongoose) +- REQ-SCHEMA-02:当检测到 schema 变更时,系统必须验证对应的迁移/推送命令是否存在 +- REQ-SCHEMA-03:系统必须实现双层防护:计划时注入和执行时门控 +- REQ-SCHEMA-04:系统必须支持 `GSD_SKIP_SCHEMA_CHECK` 环境变量以覆盖检测 +- REQ-SCHEMA-05:系统必须防止 schema 在没有迁移的情况下修改导致的误报验证 + +**流程:** +1. **检测** — 在计划执行期间监控 ORM schema 文件修改 +2. **验证** — 检查计划中是否存在对应的迁移/推送命令 +3. **门控** — 如果检测到没有迁移的 schema 漂移,则阻止执行(执行时门控) +4. **注入** — 在计划生成期间添加迁移提醒(计划时注入) + +**配置:** `GSD_SKIP_SCHEMA_CHECK` 环境变量,用于绕过检测。 + +--- + +### 60. 安全强制执行 + +**命令:** `/gsd-secure-phase ` + +**目的:** 对阶段实现进行以威胁模型为基础的安全验证。 + +**需求:** +- REQ-SEC-01:系统必须执行以威胁模型为基础的验证(非盲目扫描) +- REQ-SEC-02:系统必须支持可配置的 OWASP ASVS 验证级别(1-3) +- REQ-SEC-03:系统必须根据可配置的严重性阈值阻止阶段推进 +- REQ-SEC-04:系统必须派生 `gsd-security-auditor` 智能体进行分析 + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| 安全审计报告 | 带严重性分类的以威胁模型为基础的发现结果 | + +**流程:** +1. **建模** — 从阶段实现上下文构建威胁模型 +2. **审计** — 派生 `gsd-security-auditor` 根据威胁模型进行验证 +3. **门控** — 如果发现结果达到或超过 `security_block_on` 严重性,则阻止阶段推进 + +**配置:** +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `security_enforcement` | boolean | `true` | 启用以威胁模型为基础的安全验证 | +| `security_asvs_level` | number (1-3) | `1` | OWASP ASVS 验证级别 | +| `security_block_on` | string | `"high"` | 阻止阶段推进的最低严重性 | + +--- + +### 61. 文档生成 + +**命令:** `/gsd-docs-update` + +**目的:** 通过准确性检查生成和验证项目文档。 + +**需求:** +- REQ-DOCS-01:系统必须派生 `gsd-doc-writer` 智能体生成文档 +- REQ-DOCS-02:系统必须派生 `gsd-doc-verifier` 智能体检查准确性 +- REQ-DOCS-03:系统必须验证生成的文档与实际实现的一致性 + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| 更新的项目文档 | 已生成和验证的文档文件 | + +**流程:** +1. **生成** — 派生 `gsd-doc-writer` 从实现创建或更新文档 +2. **验证** — 派生 `gsd-doc-verifier` 根据代码库检查文档准确性 +3. **输出** — 生成带准确性注释的已验证文档 + +--- + +### 62. 讨论链模式 + +**标志:** `/gsd-discuss-phase --chain` + +**目的:** 在一个流程中自动链接讨论、规划和执行阶段,减少手动命令排序。 + +**需求:** +- REQ-CHAIN-01:提供 `--chain` 标志时,系统必须自动链接讨论 → 规划 → 执行 +- REQ-CHAIN-02:系统必须在链接阶段之间遵守所有门控设置 +- REQ-CHAIN-03:如果任何阶段失败,系统必须停止链 + +**流程:** +1. **讨论** — 运行 discuss-phase 以收集上下文 +2. **规划** — 使用收集的上下文自动调用 plan-phase +3. **执行** — 使用生成的计划自动调用 execute-phase + +--- + +### 63. 单阶段自主执行 + +**标志:** `/gsd-autonomous --only N` + +**目的:** 仅自主执行一个阶段,而不是所有剩余阶段。 + +**需求:** +- REQ-ONLY-01:提供 `--only N` 时,系统必须只执行指定的阶段号 +- REQ-ONLY-02:系统必须遵循与完整自主模式相同的讨论 → 规划 → 执行流程 +- REQ-ONLY-03:指定阶段完成后,系统必须停止 + +**流程:** +1. **选择** — 从 `--only N` 参数识别目标阶段 +2. **执行** — 为该单个阶段运行完整的自主流程(讨论 → 规划 → 执行) +3. **停止** — 阶段完成后停止,而不是推进到下一个 + +--- + +### 64. 范围缩减检测 + +**属于:** `/gsd-plan-phase` + +**目的:** 通过三层防护防止计划生成期间需求被静默删除。 + +**需求:** +- REQ-SCOPE-01:系统必须禁止规划器在没有明确理由的情况下缩减范围 +- REQ-SCOPE-02:系统必须让计划检查器验证需求维度覆盖 +- REQ-SCOPE-03:系统必须让编排器恢复被删除的需求并重新注入 +- REQ-SCOPE-04:系统必须实现三层防护:规划器禁止、检查器维度、编排器恢复 + +**流程:** +1. **禁止** — 规划器指令明确禁止范围缩减 +2. **检查** — 计划检查器验证计划中涵盖了所有阶段需求 +3. **恢复** — 编排器检测被删除的需求并将其重新注入规划循环 + +--- + +### 65. 声明来源标记 + +**属于:** `/gsd-plan-phase --research-phase ` + +**目的:** 确保研究声明被标记有来源证据,假设单独记录。 + +**需求:** +- REQ-PROVENANCE-01:研究员必须用来源证据引用标记声明 +- REQ-PROVENANCE-02:假设必须与有来源的声明分开记录 +- REQ-PROVENANCE-03:系统必须区分有证据的事实和推断的假设 + +**流程:** +1. **研究** — 研究员从代码库和领域来源收集信息 +2. **标记** — 每个声明都用其来源进行注释(文件路径、文档、API 响应) +3. **分离** — 没有直接证据的假设记录在独立节区 + +--- + +### 66. 工作树切换 + +**配置:** `workflow.use_worktrees: false` + +**目的:** 对于偏好顺序执行的用户,禁用 git 工作树隔离。 + +**需求:** +- REQ-WORKTREE-01:系统在决定隔离策略时必须遵守 `workflow.use_worktrees` 设置 +- REQ-WORKTREE-02:系统必须默认为 `true`(启用工作树)以保持向后兼容 +- REQ-WORKTREE-03:禁用工作树时,系统必须回退到顺序执行 + +**配置:** +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `workflow.use_worktrees` | boolean | `true` | 为 `false` 时,禁用 git 工作树隔离 | + +--- + +### 67. 项目代码前缀 + +**配置:** `project_code: "ABC"` + +**目的:** 使用项目代码为阶段目录名称添加前缀,用于多项目消歧义。 + +**需求:** +- REQ-PREFIX-01:配置后,系统必须为阶段目录添加项目代码前缀(例如 `ABC-01-setup/`) +- REQ-PREFIX-02:未设置 `project_code` 时,系统必须使用标准命名 +- REQ-PREFIX-03:系统必须在所有阶段操作中一致应用前缀 + +**配置:** +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `project_code` | string | (无) | 阶段目录名称的前缀 | + +--- + +### 68. Claude Code 技能迁移 + +**属于:** `npx @opengsd/gsd-core` + +**目的:** 将 GSD 命令迁移到 Claude Code 2.1.88+ 技能格式,同时保持向后兼容性。 + +**需求:** +- REQ-SKILLS-01:安装器必须为 Claude Code 2.1.88+ 写入 `skills/gsd-*/SKILL.md` +- REQ-SKILLS-02:安装器必须自动清理旧版 `commands/gsd/` 目录 +- REQ-SKILLS-03:安装器必须通过 Gemini 路径维护与旧版 Claude Code 的向后兼容性 + +**流程:** +1. **检测** — 检查 Claude Code 版本以确定技能支持情况 +2. **迁移** — 为每个 GSD 命令写入 `skills/gsd-*/SKILL.md` 文件 +3. **清理** — 如果已安装技能,则删除旧版 `commands/gsd/` 目录 +4. **回退** — 为旧版 Claude Code 维护 Gemini 路径兼容性 + +--- + +## v1.32 功能 + +### 69. STATE.md 一致性门控 + +**命令:** `state validate`、`state sync [--verify]`、`state planned-phase --phase N --plans N` + +**目的:** 检测并修复 STATE.md 与实际文件系统之间的漂移,防止过时状态导致的级联错误。 + +**需求:** +- REQ-STATE-01:`state validate` 必须检测 STATE.md 字段与文件系统现实之间的漂移 +- REQ-STATE-02:`state sync` 必须从磁盘上的实际项目状态重建 STATE.md +- REQ-STATE-03:`state sync --verify` 必须执行演习,显示建议的更改而不写入 +- REQ-STATE-04:`state planned-phase` 必须在 plan-phase 完成后记录状态转换(已计划/准备执行) + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| 更新的 `STATE.md` | 反映文件系统现实的已更正状态 | + +**流程:** +1. **验证** — 将 STATE.md 字段与文件系统(阶段目录、计划文件、摘要)进行比较 +2. **同步** — 检测到漂移时从磁盘重建 STATE.md +3. **转换** — 记录带有计划数量的规划后状态,用于执行阶段准备就绪 + +--- + +### 70. 自主 `--to N` 标志 + +**标志:** `/gsd-autonomous --to N` + +**目的:** 在完成特定阶段后停止自主执行,允许部分自主运行。 + +**需求:** +- REQ-TO-01:系统必须在指定的阶段号完成后停止执行 +- REQ-TO-02:系统必须对每个直到 N 的阶段遵循相同的讨论 -> 规划 -> 执行流程 +- REQ-TO-03:`--to N` 必须可与 `--from N` 组合,用于有界自主范围 + +**流程:** +1. **限制** — 从 `--to N` 参数设置阶段上限 +2. **执行** — 对每个直到(包括)阶段 N 的阶段运行自主流程 +3. **停止** — 阶段 N 完成后停止 + +--- + +### 71. 研究门控 + +**属于:** `/gsd-plan-phase` + +**目的:** 当 RESEARCH.md 有未解决的开放问题时阻止规划,防止在不完整信息基础上制定计划。 + +**需求:** +- REQ-RESGATE-01:规划开始前,系统必须扫描 RESEARCH.md 中未解决的开放问题 +- REQ-RESGATE-02:当存在开放问题时,系统必须阻止进入 plan-phase +- REQ-RESGATE-03:系统必须向用户呈现具体的未解决问题 + +**流程:** +1. **扫描** — 检查 RESEARCH.md 中带有未解决项目的开放问题节区 +2. **门控** — 发现未解决问题时阻止规划 +3. **呈现** — 显示需要解决的具体开放问题 + +--- + +### 72. 验证器里程碑范围过滤 + +**属于:** `/gsd-execute-phase`(验证器步骤) + +**目的:** 区分真正的间隙和推迟到后续阶段的项目,减少验证中的假阴性。 + +**需求:** +- REQ-VSCOPE-01:验证器必须检查间隙是否在后续里程碑阶段中得到解决 +- REQ-VSCOPE-02:在后续阶段中解决的间隙必须标记为"推迟",而不是"间隙" +- REQ-VSCOPE-03:只有真正的间隙(未被任何未来阶段覆盖)必须报告为失败 + +**流程:** +1. **验证** — 运行标准的目标反向验证 +2. **过滤** — 将检测到的间隙与后续里程碑阶段进行交叉引用 +3. **分类** — 将推迟的项目与真正的间隙分开标记 + +--- + +### 73. 编辑前读取守护钩子 + +**属于:** 钩子(`PreToolUse`) + +**目的:** 通过确保在编辑之前读取文件,防止非 Claude 运行时中的无限重试循环。 + +**需求:** +- REQ-RBE-01:钩子必须检测针对在会话中未先读取的文件的 Edit/Write 工具调用 +- REQ-RBE-02:钩子必须建议先读取文件(建议性,非阻塞) +- REQ-RBE-03:钩子必须防止在没有内置编辑前读取强制的运行时中常见的无限重试循环 + +--- + +### 74. 上下文压缩 + +**属于:** 提示组装流水线 + +**目的:** 通过 Markdown 截断和缓存友好的提示排序来减少上下文提示大小。 + +**需求:** +- REQ-CTXRED-01:系统必须截断超大 Markdown 构件以适应上下文预算 +- REQ-CTXRED-02:系统必须为缓存友好的组装对提示进行排序(稳定的前缀优先) +- REQ-CTXRED-03:压缩必须保留必要信息(标题、需求、任务结构) +- REQ-CTXRED-04:技能 `description:` 字段必须 ≤ 100 个字符;由 `npm run lint:descriptions` 强制执行(参见 `scripts/lint-descriptions.cjs` 和 `tests/enh-2789-description-budget.test.cjs`) + +**流程:** +1. **测量** — 计算工作流的总提示大小 +2. **截断** — 对超大构件应用 Markdown 感知截断 +3. **排序** — 为最优 KV 缓存重用安排提示节区 + +--- + +### 75. 讨论阶段 `--power` 标志 + +**标志:** `/gsd-discuss-phase --power` + +**目的:** 基于文件的 discuss-phase 批量问题回答,支持从准备好的答案文件进行批量输入。 + +**需求:** +- REQ-POWER-01:系统必须接受包含讨论问题预写答案的文件 +- REQ-POWER-02:系统必须将答案映射到对应的灰色地带问题 +- REQ-POWER-03:系统必须生成与交互式 discuss-phase 相同的 CONTEXT.md + +--- + +### 76. 调试 `--diagnose` 标志 + +**标志:** `/gsd-debug --diagnose` + +**目的:** 仅诊断模式,调查但不尝试修复。 + +**需求:** +- REQ-DIAG-01:系统必须执行完整的调试调查(假设、证据、根因) +- REQ-DIAG-02:系统不得尝试任何代码修改 +- REQ-DIAG-03:系统必须生成包含发现结果和推荐修复的诊断报告 + +--- + +### 77. 阶段依赖分析 + +**命令:** `/gsd-manager --analyze-deps` + +**目的:** 在运行 `/gsd-manager` 之前检测阶段依赖关系,并建议在 ROADMAP.md 中添加 `Depends on` 条目。 + +**需求:** +- REQ-DEP-01:系统必须检测阶段间的文件重叠 +- REQ-DEP-02:系统必须检测语义依赖(API/Schema 生产者和消费者) +- REQ-DEP-03:系统必须检测数据流依赖(输出生产者和读取者) +- REQ-DEP-04:系统必须在写入前提出带用户确认的依赖条目建议 + +**产出物:** 依赖建议表;可选择更新 ROADMAP.md `Depends on` 字段 + +--- + +### 78. 反模式严重级别 + +**属于:** `/gsd-resume-work` + +**目的:** 在恢复时进行强制性理解检查,并基于严重性的反模式强制执行。 + +**需求:** +- REQ-ANTI-01:系统必须按严重级别对反模式进行分类 +- REQ-ANTI-02:系统必须在会话恢复时强制执行理解检查 +- REQ-ANTI-03:较高严重性的反模式必须在被确认之前阻止工作流推进 + +--- + +### 79. 方法论构件类型 + +**属于:** 规划构件 + +**目的:** 为方法论文档定义消费机制,确保智能体正确消费它们。 + +**需求:** +- REQ-METHOD-01:系统必须将方法论支持为独特的构件类型 +- REQ-METHOD-02:方法论构件必须为智能体定义消费机制 + +--- + +### 80. 规划器可达性检查 + +**属于:** `/gsd-plan-phase` + +**目的:** 在提交执行之前验证计划步骤是否可实现。 + +**需求:** +- REQ-REACH-01:规划器必须验证每个计划步骤引用的文件和 API 是否可达 +- REQ-REACH-02:不可达的步骤必须在规划期间标记,而不是在执行期间发现 + +--- + +### 81. Playwright-MCP UI 验证 + +**属于:** `/gsd-verify-work`(可选) + +**目的:** 在 verify-phase 期间使用 Playwright-MCP 进行自动化视觉验证。 + +**需求:** +- REQ-PLAY-01:系统必须支持在 verify-phase 期间进行可选的 Playwright-MCP 视觉验证 +- REQ-PLAY-02:视觉验证必须是选项,而非强制 +- REQ-PLAY-03:系统必须根据 UI-SPEC.md 预期捕获并比较视觉状态 + +--- + +### 82. 暂停工作扩展 + +**属于:** `/gsd-pause-work` + +**目的:** 支持非阶段上下文,提供更丰富的切换数据,扩大暂停工作的适用性。 + +**需求:** +- REQ-PAUSE-01:系统必须支持在非阶段上下文(快速任务、调试会话、线程)中暂停 +- REQ-PAUSE-02:切换数据必须包含适合当前工作类型的更丰富上下文 + +--- + +### 83. 响应语言配置 + +**配置:** `response_language` + +**目的:** 为非英语用户实现跨阶段语言一致性。 + +**需求:** +- REQ-LANG-01:系统必须在所有阶段和智能体中遵守 `response_language` 设置 +- REQ-LANG-02:设置必须传播到所有派生智能体,以保持一致的语言输出 + +**配置:** +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `response_language` | string | (无) | 智能体响应的语言代码(例如 `"pt"`、`"ko"`、`"ja"`) | + +--- + +### 84. 手动更新流程 + +**属于:** `docs/manual-update.md` + +**目的:** 为 `npx` 不可用或 npm 发布出现故障的环境记录手动更新路径。 + +**需求:** +- REQ-MANUAL-01:文档必须描述逐步的手动更新流程 +- REQ-MANUAL-02:流程必须在不使用 npm 访问的情况下正常工作 + +--- + +### 85. 新运行时支持(Trae、Cline、Augment Code) + +**属于:** `npx @opengsd/gsd-core` + +**目的:** 将 GSD 安装扩展到 Trae IDE、Cline 和 Augment Code 运行时。 + +**需求:** +- REQ-TRAE-01:安装器必须支持 `--trae` 标志用于 Trae IDE 安装 +- REQ-CLINE-01:安装器必须通过 `.clinerules` 配置支持 Cline +- REQ-AUGMENT-01:安装器必须支持带有技能转换和配置管理的 Augment Code + +--- + +### 86. 自主 `--interactive` 标志 + +**标志:** `/gsd-autonomous --interactive` + +**目的:** 精简上下文自主模式,保持 discuss-phase 交互(用户回答问题),同时将规划和执行作为后台智能体派发。 + +**需求:** +- REQ-INTERACT-01:`--interactive` 必须在主上下文中内联运行 discuss-phase,进行交互式提问(不自动回答) +- REQ-INTERACT-02:`--interactive` 必须将 plan-phase 和 execute-phase 作为后台智能体派发,用于上下文隔离 +- REQ-INTERACT-03:`--interactive` 必须启用流水线并行性 — 在阶段 N 构建时讨论阶段 N+1 +- REQ-INTERACT-04:主上下文必须只积累讨论对话(精简上下文) + +**流程:** +1. **内联讨论** — 在主上下文中与用户交互运行 discuss-phase +2. **派发** — 将规划和执行发送到带全新上下文窗口的后台智能体 +3. **流水线** — 当后台智能体构建阶段 N 时,开始讨论阶段 N+1 + +--- + +### 87. 提交文档守护钩子 + +**钩子:** `gsd-commit-docs.js` + +**目的:** PreToolUse 钩子,强制执行 `commit_docs` 配置,当 `planning.commit_docs` 为 `false` 时防止提交 `.planning/` 文件。 + +**需求:** +- REQ-COMMITDOCS-01:钩子必须拦截暂存 `.planning/` 文件的 git commit 命令 +- REQ-COMMITDOCS-02:当 `commit_docs` 为 `false` 时,钩子必须阻止包含 `.planning/` 文件的提交 +- REQ-COMMITDOCS-03:钩子必须是建议性的 — 当 `commit_docs` 为 `true` 或不存在时不阻止 + +--- + +### 88. 社区钩子选项 + +**钩子:** `gsd-validate-commit.sh`、`gsd-session-state.sh`、`gsd-phase-boundary.sh` + +**目的:** GSD 项目的可选 git 和会话钩子,在配置中通过 `hooks.community: true` 门控。 + +**需求:** +- REQ-COMMUNITY-01:所有社区钩子在 `.planning/config.json` 中 `hooks.community` 为 `true` 之前必须为无操作 +- REQ-COMMUNITY-02:`gsd-validate-commit.sh` 必须对 git commit 消息强制执行常规提交格式 +- REQ-COMMUNITY-03:`gsd-session-state.sh` 必须跟踪会话状态转换 +- REQ-COMMUNITY-04:`gsd-phase-boundary.sh` 必须强制执行阶段边界检查 + +**配置:** +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `hooks.community` | boolean | `false` | 启用用于提交验证、会话状态和阶段边界的可选社区钩子 | + +--- + +## v1.34.0 功能 + + - [全局学习存储](#89-global-learnings-store) + - [可查询代码库智能](#90-queryable-codebase-intelligence) + - [执行上下文配置](#91-execution-context-profiles) + - [门控分类](#92-gates-taxonomy) + - [代码审查流水线](#93-code-review-pipeline) + - [苏格拉底式探索](#94-socratic-exploration) + - [安全撤销](#95-safe-undo) + - [计划导入](#96-plan-import) + - [快速代码库扫描](#97-rapid-codebase-scan) + - [自主审计修复](#98-autonomous-audit-to-fix) + - [改进的提示注入扫描器](#99-improved-prompt-injection-scanner) + - [规划阶段停滞检测](#100-stall-detection-in-plan-phase) + - [/gsd-progress --next 中的硬停止安全门控](#101-hard-stop-safety-gates-in-gsd-progress---next) + - [自适应模型预设](#102-adaptive-model-preset) + - [合并后 Hunk 验证](#103-post-merge-hunk-verification) + +--- + +### 89. 全局学习存储 + +**命令:** 在阶段完成时自动触发;由规划器使用 +**配置:** `features.global_learnings` + +**目的:** 在全局存储中持久化跨会话、跨项目的学习成果,以便规划智能体能够从整个项目历史中的模式学习,而不仅仅是当前会话。 + +**需求:** +- REQ-LEARN-01:学习成果必须在阶段完成时自动从 `.planning/` 复制到全局存储 +- REQ-LEARN-02:规划智能体必须在派生时通过注入接收相关学习成果 +- REQ-LEARN-03:注入必须受 `learnings.max_inject` 限制,以避免上下文膨胀 +- REQ-LEARN-04:功能必须通过 `features.global_learnings: true` 选项启用 + +**配置:** +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `features.global_learnings` | boolean | `false` | 启用跨项目学习流水线 | +| `learnings.max_inject` | number | (系统默认值) | 注入规划器的最大学习条目数 | + +--- + +### 90. 可查询代码库智能 + +**命令:** `/gsd-map-codebase --query [|status|diff|refresh]` +**配置:** `intel.enabled` + +**目的:** 在 `.planning/intel/` 中维护可查询的代码库结构、API 表面、依赖图、文件角色和架构决策的 JSON 索引。支持在不读取整个代码库的情况下进行有针对性的查找。 + +**需求:** +- REQ-INTEL-01:Intel 文件必须作为 JSON 存储在 `.planning/intel/` +- REQ-INTEL-02:`query` 模式必须在所有 intel 文件中搜索某个词并按文件分组结果 +- REQ-INTEL-03:`status` 模式必须报告新鲜度(FRESH/STALE,过期阈值:24 小时) +- REQ-INTEL-04:`diff` 模式必须将当前 intel 状态与上一个快照进行比较 +- REQ-INTEL-05:`refresh` 模式必须派生 intel 更新器智能体重建所有文件 +- REQ-INTEL-06:功能必须通过 `intel.enabled: true` 选项启用 + +**生成的 Intel 文件:** +| 文件 | 内容 | +|------|----------| +| `stack.json` | 技术栈和依赖项 | +| `api-map.json` | 导出函数和 API 表面 | +| `dependency-graph.json` | 模块间依赖关系 | +| `file-roles.json` | 每个源文件的角色分类 | +| `arch-decisions.json` | 检测到的架构决策 | + +--- + +### 91. 执行上下文配置 + +**配置:** `context_profile` + +**目的:** 选择针对特定类型工作调整的预配置执行上下文(模式、模型、工作流设置),无需手动调整单个设置。 + +**需求:** +- REQ-CTX-01:`dev` 配置必须针对迭代开发优化(balanced 模型,启用 plan_check) +- REQ-CTX-02:`research` 配置必须针对研究密集型工作优化(较高模型层级,启用研究) +- REQ-CTX-03:`review` 配置必须针对代码审查工作优化(启用 verifier 和 code_review) + +**可用配置:** `dev`、`research`、`review` + +**配置:** +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `context_profile` | string | (无) | 执行上下文预设:`dev`、`research` 或 `review` | + +--- + +### 92. 门控分类 + +**参考:** `get-shit-done/references/gates.md` +**智能体:** plan-checker、verifier + +**目的:** 定义构建所有工作流决策点的 4 种规范门控类型,使 plan-checker 和 verifier 智能体能够应用一致的门控逻辑。 + +**门控类型:** +| 类型 | 描述 | +|------|-------------| +| **确认(Confirm)** | 继续前用户审批(例如,路线图审查) | +| **质量(Quality)** | 自动化质量检查必须通过(例如,计划验证循环) | +| **安全(Safety)** | 检测到风险或违反策略时的硬停止 | +| **过渡(Transition)** | 阶段或里程碑边界确认 | + +**需求:** +- REQ-GATES-01:plan-checker 必须将每个检查点分类为 4 种门控类型之一 +- REQ-GATES-02:verifier 必须应用适合门控类型的门控逻辑 +- REQ-GATES-03:硬停止安全门控绝不得被 `--auto` 标志绕过 + +--- + +### 93. 代码审查流水线 + +**命令:** `/gsd-code-review`、`/gsd-code-review --fix` + +**目的:** 对阶段期间更改的源文件进行结构化审查,并通过单独的自动修复过程,每次修复以原子化提交。 + +**需求:** +- REQ-REVIEW-01:`gsd-code-review` 必须使用 SUMMARY.md 和 git diff 回退将文件范围限定到阶段 +- REQ-REVIEW-02:审查必须支持三个深度级别:`quick`、`standard`、`deep` +- REQ-REVIEW-03:发现结果必须按严重性分类:Critical、Warning、Info +- REQ-REVIEW-04:`gsd-code-review --fix` 必须读取 REVIEW.md 并默认修复 Critical + Warning 发现 +- REQ-REVIEW-05:每次修复必须以描述性消息原子化提交 +- REQ-REVIEW-06:`--auto` 标志必须启用修复 + 重新审查的迭代循环,上限为 3 次迭代 +- REQ-REVIEW-07:功能必须受 `workflow.code_review` 配置标志门控 + +**配置:** +| 设置 | 类型 | 默认值 | 描述 | +|---------|------|---------|-------------| +| `workflow.code_review` | boolean | `true` | 启用代码审查命令 | +| `workflow.code_review_depth` | string | `standard` | 默认审查深度:`quick`、`standard` 或 `deep` | + +--- + +### 94. 苏格拉底式探索 + +**命令:** `/gsd-explore [topic]` + +**目的:** 在提交计划之前,通过苏格拉底式探究性问题引导开发者探索想法。将输出路由到适当的 GSD 构件:笔记、待办事项、种子、研究问题、需求更新或新阶段。 + +**需求:** +- REQ-EXPLORE-01:探索必须使用苏格拉底式探究 — 在提出解决方案之前提问 +- REQ-EXPLORE-02:会话必须提供将输出路由到适当 GSD 构件的选项 +- REQ-EXPLORE-03:可选的主题参数必须为第一个问题提供引导 +- REQ-EXPLORE-04:探索必须可选择派生研究智能体进行技术可行性分析 + +--- + +### 95. 安全撤销 + +**命令:** `/gsd-undo --last N | --phase NN | --plan NN-MM` + +**目的:** 使用阶段清单和 git 日志安全回滚 GSD 阶段或计划提交,进行依赖性检查,并在应用任何回滚之前设置硬确认门控。 + +**需求:** +- REQ-UNDO-01:`--phase` 模式必须通过清单和 git 日志回退识别阶段的所有提交 +- REQ-UNDO-02:`--plan` 模式必须识别特定计划的所有提交 +- REQ-UNDO-03:`--last N` 模式必须显示最近的 GSD 提交供交互式选择 +- REQ-UNDO-04:系统必须在回滚之前检查依赖的阶段/计划 +- REQ-UNDO-05:执行任何 git revert 之前必须显示确认门控 + +--- + +### 96. 计划导入 + +**命令:** `/gsd-import --from ` + +**目的:** 将外部计划文件摄入 GSD 规划系统,检测与 `PROJECT.md` 决策的冲突,将其转换为有效的 GSD PLAN.md,并通过 plan-checker 进行验证。 + +**需求:** +- REQ-IMPORT-01:导入器必须检测外部计划与现有 PROJECT.md 决策之间的冲突 +- REQ-IMPORT-02:所有检测到的冲突必须在写入之前呈现给用户解决 +- REQ-IMPORT-03:导入的计划必须以有效的 GSD PLAN.md 格式写入 +- REQ-IMPORT-04:写入的计划必须通过 `gsd-plan-checker` 验证 + +--- + +### 97. 快速代码库扫描 + +**命令:** `/gsd-map-codebase --fast [--focus tech|arch|quality|concerns]` + +**目的:** `/gsd-map-codebase` 的轻量级替代方案,为一两个组合的焦点区域派生单个映射智能体,在 `.planning/codebase/` 中生成有针对性的输出,无需 4 个并行智能体的开销。 + +**需求:** +- REQ-SCAN-01:扫描必须精确派生一个映射智能体(而非四个并行智能体) +- REQ-SCAN-02:焦点区域必须是以下之一:`tech`、`arch`、`quality`、`concerns` 或组合的 `tech+arch` 简写(默认:`tech+arch`);组合焦点在单次通过中作为单个智能体运行,覆盖两个区域 +- REQ-SCAN-03:输出必须以与 `/gsd-map-codebase` 相同的格式写入 `.planning/codebase/` + +--- + +### 98. 自主审计修复 + +**命令:** `/gsd-audit-fix [--source ] [--severity high|medium|all] [--max N] [--dry-run]` + +**目的:** 端到端流水线,运行审计,将发现结果分类为可自动修复与仅手动处理,然后自主修复可自动修复的问题,进行测试验证并原子化提交。 + +**需求:** +- REQ-AUDITFIX-01:进行任何更改之前,发现结果必须被分类为可自动修复或仅手动处理 +- REQ-AUDITFIX-02:每次修复必须在提交之前通过测试验证 +- REQ-AUDITFIX-03:每次修复必须原子化提交 +- REQ-AUDITFIX-04:`--dry-run` 必须显示分类表而不应用任何修复 +- REQ-AUDITFIX-05:`--max N` 必须限制单次运行中应用的修复数量(默认:5) + +--- + +### 99. 改进的提示注入扫描器 + +**钩子:** `gsd-prompt-guard.js` +**脚本:** `scripts/prompt-injection-scan.sh` + +**目的:** 增强对规划构件中提示注入尝试的检测,添加不可见 Unicode 字符检测、编码混淆模式和基于熵的分析。 + +**需求:** +- REQ-SCAN-INJ-01:扫描器必须检测不可见 Unicode 字符(零宽空格、软连字符等) +- REQ-SCAN-INJ-02:扫描器必须检测编码混淆模式(base64 编码的指令、同形字) +- REQ-SCAN-INJ-03:扫描器必须应用熵分析以标记意外位置的高熵字符串 +- REQ-SCAN-INJ-04:扫描器必须保持仅建议性 — 检测会被记录,而不会阻止 + +--- + +### 100. 规划阶段停滞检测 + +**命令:** `/gsd-plan-phase` + +**目的:** 检测规划器修订循环何时停滞——在多次迭代中产生相同的输出——并通过升级到不同策略或以明确诊断退出来打破循环。 + +**需求:** +- REQ-STALL-01:修订循环必须检测连续迭代中相同的计划输出 +- REQ-STALL-02:检测到停滞时,系统必须在重试之前升级策略 +- REQ-STALL-03:最大停滞重试次数必须有界(上限为现有最大 3 次迭代) + +--- + +### 101. /gsd-progress --next 中的硬停止安全门控 + +**命令:** `/gsd-progress --next` + +**目的:** 通过添加硬停止安全门控和连续调用守护来阻止 `/gsd-progress --next` 进入失控循环,该守护在检测到重复的相同步骤时中断自主链式操作。 + +**需求:** +- REQ-NEXT-GATE-01:`/gsd-progress --next` 必须跟踪连续的相同步骤调用 +- REQ-NEXT-GATE-02:重复相同步骤时,系统必须向用户呈现硬停止门控 +- REQ-NEXT-GATE-03:用户必须明确确认才能通过硬停止门控继续 + +--- + +### 102. 自适应模型预设 + +**配置:** `model_profile: "adaptive"` + +**目的:** 基于角色的模型分配,根据当前智能体的角色自动选择适当的模型层级,而不是对所有智能体应用单一层级。 + +**需求:** +- REQ-ADAPTIVE-01:`adaptive` 预设必须根据智能体角色分配模型层级(规划器 → quality 层,执行器 → balanced 层等) +- REQ-ADAPTIVE-02:`adaptive` 必须可通过 `/gsd-config --profile adaptive` 选择 + +--- + +### 103. 合并后 Hunk 验证 + +**命令:** `/gsd-update --reapply` + +**目的:** 在更新后应用本地补丁后,通过将预期的补丁内容与实时文件系统进行比较,验证所有 hunk 是否实际被应用。立即呈现任何被丢弃或部分应用的 hunk,而不是静默接受不完整的合并。 + +**需求:** +- REQ-PATCH-VERIFY-01:重新应用补丁必须在合并后验证每个 hunk 是否被应用 +- REQ-PATCH-VERIFY-02:被丢弃或部分应用的 hunk 必须向用户报告,附带文件和行上下文 +- REQ-PATCH-VERIFY-03:验证必须在所有补丁应用后运行,而不是逐个补丁运行 + +--- + +## v1.35.0 功能 + +- [新运行时支持(Cline、CodeBuddy、Qwen Code)](#104-new-runtime-support-cline-codebuddy-qwen-code) +- [GSD-2 反向迁移](#105-gsd-2-reverse-migration) +- [AI 集成阶段向导](#106-ai-integration-phase-wizard) +- [AI 评估审查](#107-ai-eval-review) + +--- + +### 104. 新运行时支持(Cline、CodeBuddy、Qwen Code) + +**属于:** `npx @opengsd/gsd-core` + +**目的:** 将 GSD 安装扩展到 Cline、CodeBuddy 和 Qwen Code 运行时。 + +**需求:** +- REQ-CLINE-02:Cline 安装必须将 `.clinerules` 写入 `~/.cline/`(全局)或 `./.cline/`(本地)。无自定义斜杠命令 — 仅基于规则的集成。标志:`--cline`。 +- REQ-CODEBUDDY-01:CodeBuddy 安装必须将技能部署到 `~/.codebuddy/skills/gsd-*/SKILL.md`。标志:`--codebuddy`。 +- REQ-QWEN-01:Qwen Code 安装必须将技能部署到 `~/.qwen/skills/gsd-*/SKILL.md`,遵循 Claude Code 2.1.88+ 使用的开放标准。`QWEN_CONFIG_DIR` 环境变量覆盖默认路径。标志:`--qwen`。 + +**运行时摘要:** + +| 运行时 | 安装格式 | 配置路径 | 标志 | +|---------|---------------|-------------|------| +| Cline | `.clinerules` | `~/.cline/` 或 `./.cline/` | `--cline` | +| CodeBuddy | Skills (`SKILL.md`) | `~/.codebuddy/skills/` | `--codebuddy` | +| Qwen Code | Skills (`SKILL.md`) | `~/.qwen/skills/` | `--qwen` | + +--- + +### 105. GSD-2 反向迁移 + +**命令:** `/gsd-import --from-gsd2 [--dry-run] [--force] [--path ]` + +**目的:** 将项目从 GSD-2 格式(带里程碑→切片→任务层次结构的 `.gsd/` 目录)迁移回 v1 `.planning/` 格式,恢复与所有 GSD v1 命令的完整兼容性。 + +**需求:** +- REQ-FROM-GSD2-01:导入器必须从指定或当前目录读取 `.gsd/` +- REQ-FROM-GSD2-02:里程碑→切片层次结构必须展平为顺序阶段号(M001/S01→阶段 01,M001/S02→阶段 02,M002/S01→阶段 03,等) +- REQ-FROM-GSD2-03:系统必须防止在没有 `--force` 的情况下覆盖现有的 `.planning/` 目录 +- REQ-FROM-GSD2-04:`--dry-run` 必须预览所有更改而不写入任何文件 +- REQ-FROM-GSD2-05:迁移必须生成 `PROJECT.md`、`REQUIREMENTS.md`、`ROADMAP.md`、`STATE.md` 和顺序阶段目录 + +**标志:** + +| 标志 | 描述 | +|------|-------------| +| `--dry-run` | 预览迁移输出而不写入文件 | +| `--force` | 覆盖现有的 `.planning/` 目录 | +| `--path ` | 指定 GSD-2 根目录 | + +--- + +### 106. AI 集成阶段向导 + +**命令:** `/gsd-ai-integration-phase [N]` + +**目的:** 引导开发者在项目阶段选择、集成和规划 AI/LLM 能力的评估。生成结构化的 `AI-SPEC.md`,输入规划和验证。 + +**需求:** +- REQ-AISPEC-01:向导必须呈现涵盖框架选择、模型选择和集成方式的交互式决策矩阵 +- REQ-AISPEC-02:系统必须呈现与项目类型相关的特定领域失败模式和评估标准 +- REQ-AISPEC-03:系统必须派生 3 个并行专业智能体:领域研究员、框架选择器和评估规划器 +- REQ-AISPEC-04:输出必须生成带有框架推荐、实现指南和评估策略的 `{phase}-AI-SPEC.md` + +**产出物:** 阶段目录中的 `{phase}-AI-SPEC.md` + +--- + +### 107. AI 评估审查 + +**命令:** `/gsd-eval-review [N]` + +**目的:** 对已执行 AI 阶段的评估覆盖与 `AI-SPEC.md` 计划进行追溯审计。在阶段关闭之前识别计划与实现评估之间的间隙。 + +**需求:** +- REQ-EVALREVIEW-01:审查必须读取指定阶段的 `AI-SPEC.md` +- REQ-EVALREVIEW-02:每个评估维度必须被评为 COVERED、PARTIAL 或 MISSING +- REQ-EVALREVIEW-03:输出必须包含发现结果、间隙描述和补救指南 +- REQ-EVALREVIEW-04:`EVAL-REVIEW.md` 必须写入阶段目录 + +**产出物:** 带评分评估维度、间隙分析和补救步骤的 `{phase}-EVAL-REVIEW.md` + +--- + +## v1.36.0 功能 + +### 108. 计划弹跳 + +**命令:** `/gsd-plan-phase N --bounce` + +**目的:** 计划通过检查器后,可选地通过外部脚本(第二个 AI、linter、自定义验证器)对其进行优化。弹跳步骤备份每个计划,运行脚本,验证结果的 YAML 前置元数据完整性,重新运行计划检查器,如果任何步骤失败则从备份恢复。 + +**需求:** +- REQ-BOUNCE-01:`--bounce` 标志或 `workflow.plan_bounce: true` 激活该步骤;`--skip-bounce` 始终禁用它 +- REQ-BOUNCE-02:`workflow.plan_bounce_script` 必须指向有效的可执行文件;缺少脚本会产生警告并跳过 +- REQ-BOUNCE-03:在脚本运行之前,每个计划都备份到 `*-PLAN.pre-bounce.md` +- REQ-BOUNCE-04:YAML 前置元数据损坏或无法通过 plan-checker 的弹跳计划将从备份恢复 +- REQ-BOUNCE-05:`workflow.plan_bounce_passes`(默认:2)控制脚本接收多少次优化遍历 + +**配置:** `workflow.plan_bounce`、`workflow.plan_bounce_script`、`workflow.plan_bounce_passes` + +--- + +### 109. 外部代码审查命令 + +**命令:** `/gsd-ship`(增强版) + +**目的:** 在 `/gsd-ship` 的手动审查步骤之前,如果已配置,自动运行外部代码审查命令。命令通过 stdin 接收 diff 和阶段上下文,并返回 JSON 判决(`APPROVED` 或 `REVISE`)。无论结果如何,都进入现有的手动审查流程。 + +**需求:** +- REQ-EXTREVIEW-01:`workflow.code_review_command` 必须设置为命令字符串;null 表示跳过 +- REQ-EXTREVIEW-02:diff 使用 `--stat` 摘要针对 `BASE_BRANCH` 生成 +- REQ-EXTREVIEW-03:审查提示通过 stdin 传递(从不进行 shell 插值) +- REQ-EXTREVIEW-04:120 秒超时;失败时捕获 stderr +- REQ-EXTREVIEW-05:解析 JSON 输出中的 `verdict`、`confidence`、`summary`、`issues` 字段 + +**配置:** `workflow.code_review_command` + +--- + +### 110. 跨 AI 执行委托 + +**命令:** `/gsd-execute-phase N --cross-ai` + +**目的:** 将单个计划委托给外部 AI 运行时执行。前置元数据中带 `cross_ai: true` 的计划(或使用 `--cross-ai` 时的所有计划)通过 stdin 发送到配置的命令。成功处理的计划从普通执行器队列中删除。 + +**需求:** +- REQ-CROSSAI-01:`--cross-ai` 强制所有计划通过跨 AI;`--no-cross-ai` 禁用它 +- REQ-CROSSAI-02:每个计划激活需要 `workflow.cross_ai_execution: true` 和计划前置元数据 `cross_ai: true` +- REQ-CROSSAI-03:任务提示通过 stdin 传递,以防止注入 +- REQ-CROSSAI-04:脏工作树在执行前产生警告 +- REQ-CROSSAI-05:失败时,用户选择:重试、跳过(回退到普通执行器)或中止 + +**配置:** `workflow.cross_ai_execution`、`workflow.cross_ai_command`、`workflow.cross_ai_timeout` + +--- + +### 111. 架构职责映射 + +**命令:** `/gsd-plan-phase`(增强研究步骤) + +**目的:** 在阶段研究期间,阶段研究员现在将每个能力映射到其架构层所有者(浏览器、前端服务器、API、CDN/静态、数据库)。规划器对照此映射交叉检查任务,plan-checker 将层级合规性作为维度 7c 强制执行。 + +**需求:** +- REQ-ARM-01:阶段研究员在 RESEARCH.md 中生成架构职责映射表(步骤 1.5) +- REQ-ARM-02:规划器对照映射进行任务到层级分配的健全性检查 +- REQ-ARM-03:计划检查器将层级合规性验证为维度 7c(一般不匹配时为 WARNING,安全敏感时为 BLOCKER) + +**产出物:** `{phase}-RESEARCH.md` 中的 `## Architectural Responsibility Map` 节区 + +--- + +### 112. 提取学习成果 + +**命令:** `/gsd-extract-learnings N` + +**目的:** 从已完成阶段构件中提取结构化知识。读取 PLAN.md 和 SUMMARY.md(必需)以及 VERIFICATION.md、UAT.md 和 STATE.md(可选),生成四类学习成果:决策、教训、模式和惊喜。可选择通过 `capture_thought` 工具将每个项目捕获到外部知识库。 + +**需求:** +- REQ-LEARN-01:需要 PLAN.md 和 SUMMARY.md;缺失时以清晰的错误退出 +- REQ-LEARN-02:每个提取的项目包括来源归属(构件和节区) +- REQ-LEARN-03:如果 `capture_thought` 工具可用,使用 `source`、`project` 和 `phase` 元数据捕获项目 +- REQ-LEARN-04:如果 `capture_thought` 不可用,成功完成并记录外部捕获已跳过 +- REQ-LEARN-05:运行两次会覆盖之前的 `LEARNINGS.md` + +**产出物:** 带 YAML 前置元数据(阶段、项目、每类别计数、missing_artifacts)的 `{phase}-LEARNINGS.md` + +**可选集成 — `capture_thought`:** `capture_thought` 是**一种约定,而非捆绑工具**。GSD 不附带一个,也不要求一个。工作流检查当前会话中是否有任何 MCP 服务器暴露名为 `capture_thought` 的工具,如果有,则为每个提取的学习调用一次,签名如下。如果不存在此类工具,则该步骤静默跳过,`LEARNINGS.md` 仍然是主要输出。 + +预期的工具签名: +```javascript +capture_thought({ + category: "decision" | "lesson" | "pattern" | "surprise", + phase: , + content: , + source: +}) +``` + +运行内存/知识库 MCP 服务器(例如 ExoCortex 风格服务器、`claude-mem` 或 `mem0` 风格服务器)的用户可以实现此工具名称,以便学习成果自动路由到其知识库,附带 `project`、`phase` 和 `source` 元数据。其他用户可以在不进行任何额外设置的情况下使用 `/gsd-extract-learnings` — `LEARNINGS.md` 构件就是该功能。 + +--- + +### 114. 上下文窗口感知提示精简 + +**目的:** 对于上下文窗口低于 200K tokens 的模型,将静态提示开销减少约 40%。将扩展示例和反模式列表从智能体定义中提取到按需通过 `@` required_reading 加载的参考文件中。 + +**需求:** +- REQ-THIN-01:当 `CONTEXT_WINDOW < 200000` 时,执行器和规划器智能体提示省略内联示例 +- REQ-THIN-02:提取的内容存储在 `references/executor-examples.md` 和 `references/planner-antipatterns.md` +- REQ-THIN-03:标准(200K-500K)和富集(500K+)层级不受影响 +- REQ-THIN-04:核心规则和决策逻辑保留内联;只提取冗长的示例 + +**参考文件:** `executor-examples.md`、`planner-antipatterns.md` + +--- + +### 115. 可配置的 CLAUDE.md 路径 + +**目的:** 允许项目将其 CLAUDE.md 存储在非根位置。`claude_md_path` 配置键控制 `/gsd-profile-user` 和相关命令写入生成的 CLAUDE.md 文件的位置。 + +**需求:** +- REQ-CMDPATH-01:`claude_md_path` 默认为 `./CLAUDE.md` +- REQ-CMDPATH-02:画像生成命令从配置读取路径并写入指定位置 +- REQ-CMDPATH-03:相对路径从项目根路径解析 + +**配置:** `claude_md_path` + +--- + +### 116. TDD 流水线模式 + +**目的:** 将 TDD(红-绿-重构)作为一等阶段执行模式选项启用。启用后,规划器积极地为符合条件的任务选择 `type: tdd`,执行器强制执行 RED/GREEN/REFACTOR 门控序列,并在 RED 之前出现意外的 GREEN 时快速失败。 + +**需求:** +- REQ-TDD-01:`workflow.tdd_mode` 配置键(布尔值,默认 `false`) +- REQ-TDD-02:启用后,规划器对所有符合条件的任务(业务逻辑、API、验证、算法、状态机)应用 `references/tdd.md` 中的 TDD 启发式方法 +- REQ-TDD-03:执行器对 `type: tdd` 计划强制执行门控序列 — RED 提交(`test(...)`)必须在 GREEN 提交(`feat(...)`)之前 +- REQ-TDD-04:在 RED 阶段测试意外通过时执行器快速失败(功能已存在或测试有误) +- REQ-TDD-05:阶段末协作审查检查点验证所有 TDD 计划的门控合规性(建议性,非阻塞) +- REQ-TDD-06:门控违规在 SUMMARY.md 的 `## TDD Gate Compliance` 节区中呈现 + +**配置:** `workflow.tdd_mode` +**参考文件:** `tdd.md`、`checkpoints.md` + +--- + +## v1.37.0 功能 + +### 117. Spike 命令 + +**命令:** `/gsd-spike [idea] [--quick]` + +**目的:** 在提交实现方案之前运行 2–5 个专注的可行性实验。每个实验使用 Given/When/Then 框架,生成可执行代码,并返回 VALIDATED / INVALIDATED / PARTIAL 判决。配套的 `/gsd-spike --wrap-up` 将发现结果打包为项目本地技能。 + +**需求:** +- REQ-SPIKE-01:在编写任何代码之前,每个实验必须生成 Given/When/Then 假设 +- REQ-SPIKE-02:每个实验必须包含可运行的代码或最小化复现 +- REQ-SPIKE-03:每个实验必须返回以下之一:带证据的 VALIDATED、INVALIDATED 或 PARTIAL 判决 +- REQ-SPIKE-04:结果必须存储在 `.planning/spikes/NNN-experiment-name/` 中,附带 README 和 MANIFEST.md +- REQ-SPIKE-05:`--quick` 标志跳过摄入对话,使用参数文本作为实验方向 +- REQ-SPIKE-06:`/gsd-spike --wrap-up` 必须将发现结果打包到 `.claude/skills/spike-findings-[project]/` + +**产出物:** + +| 构件 | 描述 | +|----------|-------------| +| `.planning/spikes/NNN-name/README.md` | 假设、实验代码、判决和证据 | +| `.planning/spikes/MANIFEST.md` | 所有 spike 的带判决索引 | +| `.claude/skills/spike-findings-[project]/` | 打包的发现结果(通过 `/gsd-spike --wrap-up`) | + +--- + +### 118. Sketch 命令 + +**命令:** `/gsd-sketch [idea] [--quick] [--text]` + +**目的:** 在提交实现之前通过一次性 HTML 模型探索设计方向。每个设计问题生成 2–3 个交互式变体,无需构建步骤即可直接在浏览器中查看。配套的 `/gsd-sketch --wrap-up` 将获胜决策打包为项目本地技能。 + +**需求:** +- REQ-SKETCH-01:每个 sketch 必须回答一个具体的视觉设计问题 +- REQ-SKETCH-02:每个 sketch 必须在带标签导航的单个 `index.html` 中包含 2–3 个有意义的不同变体 +- REQ-SKETCH-03:所有交互元素(悬停、点击、过渡)必须可正常运行 +- REQ-SKETCH-04:Sketch 必须使用真实感内容,而非 lorem ipsum +- REQ-SKETCH-05:共享的 `themes/default.css` 必须提供根据商定美学调整的 CSS 变量 +- REQ-SKETCH-06:`--quick` 标志跳过情绪采集;`--text` 标志用编号列表替换 `AskUserQuestion`,适用于非 Claude 运行时 +- REQ-SKETCH-07:获胜变体必须在 README 前置元数据和 HTML 标签中用 ★ 标记 +- REQ-SKETCH-08:`/gsd-sketch --wrap-up` 必须将获胜决策打包到 `.claude/skills/sketch-findings-[project]/` + +**产出物:** +| 构件 | 描述 | +|----------|-------------| +| `.planning/sketches/NNN-name/index.html` | 2–3 个交互式 HTML 变体 | +| `.planning/sketches/NNN-name/README.md` | 设计问题、变体、获胜者、关注点 | +| `.planning/sketches/themes/default.css` | 共享 CSS 主题变量 | +| `.planning/sketches/MANIFEST.md` | 所有 sketch 的带获胜者索引 | +| `.claude/skills/sketch-findings-[project]/` | 打包的决策(通过 `/gsd-sketch --wrap-up`) | + +--- + +### 119. 智能体大小预算强制 + +**目的:** 在 CI 中通过分级行数限制使智能体提示文件保持精简。超大智能体在投入生产膨胀上下文窗口之前被捕获。 + +**需求:** +- REQ-BUDGET-01:`agents/gsd-*.md` 文件分为三个层级:XL(≤ 1 600 行)、Large(≤ 1 000 行)、Default(≤ 500 行) +- REQ-BUDGET-02:层级分配在文件的 YAML 前置元数据中声明(`size: xl | large | default`) +- REQ-BUDGET-03:`tests/agent-size-budget.test.cjs` 强制执行限制,违规时 CI 失败 +- REQ-BUDGET-04:没有 `size` 前置元数据键的文件默认为 Default(500 行)限制 + +**测试文件:** `tests/agent-size-budget.test.cjs` + +--- + +### 120. 共享样板提取 + +**目的:** 通过将两个常见样板块提取到按需加载的共享参考文件中,减少智能体间的重复。使智能体文件保持在大小预算内,并使样板更新成为单文件更改。 + +**需求:** +- REQ-BOILER-01:强制初始读取指令提取到 `references/mandatory-initial-read.md` +- REQ-BOILER-02:项目技能发现指令提取到 `references/project-skills-discovery.md` +- REQ-BOILER-03:之前内联这些块的智能体现在必须通过 `@` required_reading 引用它们 + +**参考文件:** `references/mandatory-initial-read.md`、`references/project-skills-discovery.md` + +--- + +### 121. 知识图谱集成 + +**目的:** 在 `.planning/graphs/` 中构建、查询和检查项目的轻量级知识图谱。按项目选项启用。作为 `/gsd-graphify` 用户界面命令和 `gsd-tools.cjs graphify …` 程序化动词族公开。通过图谱视图补充 `/gsd-map-codebase --query`(快照导向),覆盖命令、智能体、工作流和阶段的节点和边。 + +**需求:** +- REQ-GRAPH-01:通过 `.planning/config.json` 中的 `graphify.enabled: true` 选项启用。禁用时,`/gsd-graphify` 打印激活提示并停止,不写入任何内容。 +- REQ-GRAPH-02:斜杠命令 `/gsd-graphify` 公开子命令 `build`、`query `、`status`、`diff`。程序化 CLI `node gsd-tools.cjs graphify …` 额外公开 `snapshot`,也在 `graphify build` 的最后一步自动调用。 +- REQ-GRAPH-03:Build 在可配置的 `graphify.build_timeout`(秒)内运行;超过超时时干净中止,不留下部分图谱。 +- REQ-GRAPH-04:`graphify.cjs` 在 `graph.edges` 不存在时回退到 `graph.links`,以便旧图谱构件继续渲染。 +- REQ-GRAPH-05:Graphify 通过 `gsd-tools.cjs graphify ...` 命令处理器调用。 + +**配置:** `graphify.enabled`、`graphify.build_timeout` +**参考文件:** `commands/gsd/graphify.md`、`bin/lib/graphify.cjs` + +--- + +## v1.40.0 功能 + +### 122. 技能界面整合 + +**目的:** 通过将 31 个微技能折叠到 4 个新的分组父技能和 6 个现有父技能(作为标志吸收子操作)中来降低急切技能列表开销。零功能损失 — 每个删除的微技能的行为通过整合父技能上的标志保留。整合后,`commands/gsd/*.md` 包含 59 个子技能(加上 6 个命名空间元技能,见 #123)。 + +**需求:** +- REQ-CONSOLIDATE-01:四个新的分组技能替换微技能集群: + - `/gsd-capture` — 折叠 add-todo(默认)、note(`--note`)、add-backlog(`--backlog`)、plant-seed(`--seed`)、check-todos(`--list`) + - `/gsd-phase` — 折叠 add-phase(默认)、insert-phase(`--insert`)、remove-phase(`--remove`)、edit-phase(`--edit`) + - `/gsd-config` — 折叠 settings-advanced(`--advanced`)、settings-integrations(`--integrations`)、set-profile(`--profile`) + - `/gsd-workspace` — 折叠 new-workspace(`--new`)、list-workspaces(`--list`)、remove-workspace(`--remove`) +- REQ-CONSOLIDATE-02:六个现有父技能将 wrap-up / 子操作作为标志吸收:`/gsd-update --sync`、`/gsd-update --reapply`、`/gsd-sketch --wrap-up`、`/gsd-spike --wrap-up`、`/gsd-map-codebase --fast`、`/gsd-map-codebase --query`、`/gsd-code-review --fix`、`/gsd-progress --do`、`/gsd-progress --next`。 +- REQ-CONSOLIDATE-03:删除的微技能斜杠形式(裸 `gsd-add-todo`、`gsd-add-backlog`、`gsd-plant-seed`、`gsd-check-todos`、`gsd-add-phase`、`gsd-insert-phase`、`gsd-remove-phase`、`gsd-edit-phase`、`gsd-new-workspace`、`gsd-list-workspaces`、`gsd-remove-workspace`、`gsd-settings-advanced`、`gsd-settings-integrations`、`gsd-set-profile`、`gsd-sketch-wrap-up`、`gsd-spike-wrap-up`、`gsd-reapply-patches`、`gsd-code-review-fix`、…)必须解析为"未知命令" — 无影子存根。 +- REQ-CONSOLIDATE-04:`autonomous.md` 调用 `/gsd-code-review --fix`(之前调用已删除的 `gsd-code-review-fix`)。 + +**参考 issue:** [#2790](https://github.com/open-gsd/gsd-core/issues/2790) + +--- + +### 123. 命名空间元技能(两阶段路由) + +**目的:** 用两阶段层次路由层替换扁平的急切技能列表。模型看到 6 个命名空间路由器而不是 86 个条目,选择命名空间,然后路由到子技能。描述使用管道分隔的关键字标签(≤ 60 个字符)以获得路由密度。 + +**命令:** +- `/gsd-workflow` — 阶段流水线路由器(讨论/规划/执行/验证/阶段/进度) +- `/gsd-project` — 项目生命周期(里程碑、审计、摘要) +- `/gsd-quality` — 质量门控(代码审查、调试、审计、安全、评估、UI) +- `/gsd-context` — 代码库智能(映射、graphify、文档、学习) +- `/gsd-manage` — 配置/工作区/工作流/线程/更新/发布/收件箱 +- `/gsd-ideate` — 探索与捕获(探索、sketch、spike、规范、捕获) + +**Token 成本:** + +| | 条目 | 大约 tokens | +|---|---|---| +| v1.40 之前完整安装 | 86 | ~2,150 | +| 命名空间元技能 | 6 | ~120 | + +**需求:** +- REQ-NS-01:六个 `commands/gsd/ns-*.md` 命名空间路由器带管道分隔的关键字标签描述(≤ 60 个字符)。 +- REQ-NS-02:现有子技能保持不变,仍可直接调用 — 命名空间技能是附加的,不是替换直接斜杠形式的。 +- REQ-NS-03:每个命名空间路由器的正文包含一个路由表,将用户意图映射到 #2790 后整合界面上正确的具体子技能。 + +**参考 issue:** [#2792](https://github.com/open-gsd/gsd-core/issues/2792) + +--- + +### 124. 上下文窗口利用率守护 + +**命令:** `/gsd-health --context` + +**目的:** 上下文窗口饱和的质量守护。两个阈值:60% 利用率警告("考虑使用 `/gsd-thread`"),70% 为临界("推理质量可能下降";根据最近的上下文注意力研究,与断裂点匹配)。 + +**需求:** +- REQ-CTX-GUARD-01:`/gsd-health --context` 打印带当前利用率、阈值层级(`ok` / `warn` / `critical`)和补救建议的结构化状态行。 +- REQ-CTX-GUARD-02:相同的分类以 `gsd-tools.cjs validate context --tokens-used --context-window ` 公开 — 状态行和钩子调用者的结构化封装(#125)。两个标志都是必需的;处理器返回与 REQ-CTX-GUARD-03 中纯分类器相同的 `{ percent, state }` 封装。 +- REQ-CTX-GUARD-03:分类器(`bin/lib/context-utilization.cjs`)是纯函数:输入 `(tokensUsed, contextWindow)`,输出 `{ percent, state }`。易于单元测试,易于从任何调用者重用。 + +**参考 issue:** [#2792](https://github.com/open-gsd/gsd-core/issues/2792) + +--- + +### 125. 阶段生命周期状态行读取侧 + +**目的:** 在状态行上呈现阶段编排状态。`parseStateMd()` 读取四个新的 STATE.md 前置元数据字段,`formatGsdState()` 渲染进行中、空闲和进度场景。写入侧连接将在后续 RC 中进行。 + +**需求:** +- REQ-LIFECYCLE-01:`parseStateMd()` 读取四个可选字段: + - `active_phase` — 编排器运行时的阶段号 + - `next_action` — 空闲时的推荐下一命令 + - `next_phases` — 下一个阶段号的 YAML 流数组 + - `progress` — 嵌套的 `total_phases` / `completed_phases` / `percent` 块 +- REQ-LIFECYCLE-02:`formatGsdState()` 按优先级检查生命周期字段并输出第一个匹配的场景(阶段激活 → 空闲下一推荐 → 里程碑完成 → 默认回退)。 +- REQ-LIFECYCLE-03:所有四个字段默认为 undefined;现有 STATE.md 文件的渲染与字节相同。 + +**参考 issue:** [#2833](https://github.com/open-gsd/gsd-core/issues/2833) — 完整字段参考和渲染规则见 [`docs/STATE-MD-LIFECYCLE.md`](reference/state-md.md)。 + +--- + +## v1.41.0 功能 + +### 126. 按阶段类型选择模型 + +**目的:** 在阶段级别(规划、研究、执行、验证)表达模型调优,无需学习完整的智能体分类。位于每智能体 `model_overrides`(精确、冗长)和全局 `model_profile` 层级(粗粒度、统一)之间。 + +**配置键:** `.planning/config.json` 中的 `models` + +**阶段类型槽位:** + +| 槽位 | 分配的智能体 | +|------|-----------------| +| `planning` | `gsd-planner`、`gsd-roadmapper`、`gsd-pattern-mapper` | +| `discuss` | (为未来子智能体保留) | +| `research` | `gsd-phase-researcher`、`gsd-project-researcher`、`gsd-research-synthesizer`、`gsd-codebase-mapper`、`gsd-ui-researcher` | +| `execution` | `gsd-executor`、`gsd-debugger`、`gsd-doc-writer` | +| `verification` | `gsd-verifier`、`gsd-plan-checker`、`gsd-integration-checker`、`gsd-nyquist-auditor`、`gsd-ui-checker`、`gsd-ui-auditor`、`gsd-doc-verifier` | +| `completion` | (为未来子智能体保留) | + +**接受的值:** `"opus"` / `"sonnet"` / `"haiku"` / `"inherit"` + +**解析优先级(从高到低):** + +```text +1. model_overrides[] +2. dynamic_routing.tier_models[] (启用时) +3. models[] (此功能) +4. model_profile +5. 运行时默认值 +``` + +**需求:** +- REQ-PHASE-MODELS-01:`config-schema.cjs` 和 `config-schema.ts` 接受六个命名的 `models.*` 槽位;`config-set` 拒绝未知的阶段类型。 +- REQ-PHASE-MODELS-02:没有 `models` 块的配置与 v1.41 之前的行为完全相同。 +- REQ-PHASE-MODELS-03:`discuss` 和 `completion` 被 schema 接受以实现向前兼容性;今天设置它们是无操作,直到子智能体映射到每个。 + +**参考 issue:** [#3023](https://github.com/open-gsd/gsd-core/pull/3030) + +--- + +### 127. 带失败层级升级的动态路由 + +**目的:** 默认使用低成本层级;当编排器检测到软失败(验证不确定、plan-check FLAG 等)时自动升级到更强大的模型。 + +**配置键:** `.planning/config.json` 中的 `dynamic_routing` + +**行为:** +- `enabled: false`(默认)— 功能关闭;所有智能体使用优先级链不变。 +- `enabled: true` — 解析器为第一次派生选择 `tier_models[default_tier]`,在编排器检测到软失败时升级一级,受 `max_escalations` 限制。 + +**组合:** `model_overrides` 始终优先;`dynamic_routing.tier_models[]` 解析高于 `models.` 和 `model_profile`。 + +**需求:** +- REQ-DYNROUTE-01:`dynamic_routing.enabled` 作为主开关;为 `false` 或块不存在时,零行为变化。 +- REQ-DYNROUTE-02:`core.cjs` 中的新解析器 `resolveModelForTier(cwd, agent, attempt)` 是编排器集成的单个调用点。 +- REQ-DYNROUTE-03:`max_escalations` 限制升级链,防止失控成本。 + +**参考 issue:** [#3024](https://github.com/open-gsd/gsd-core/pull/3031) + +--- + +### 128. 更新横幅选项 + +**目的:** 向已拒绝或绕过 GSD 状态行的用户呈现更新可用性,无需状态行。 + +**行为:** +- 安装时,如果安装器检测到没有 GSD 状态行,它提供一个选项 `SessionStart` 钩子。 +- 钩子读取现有的 `~/.cache/gsd/gsd-update-check.json` 缓存 — 与状态行使用的相同缓存 — 仅在有可用更新时打印横幅。 +- 无更新时保持静默。 +- 失败诊断每 24 小时限流一次。 +- 通过 `npx @opengsd/gsd-core --uninstall` 干净移除。 + +**需求:** +- REQ-BANNER-01:横幅不在没有明确选项的情况下安装。 +- REQ-BANNER-02:无额外网络请求 — 重用现有的后台更新检查缓存。 +- REQ-BANNER-03:卸载路径删除横幅钩子。 + +**参考 issue:** [#2795](https://github.com/open-gsd/gsd-core/pull/2795) + +--- + +### 129. Issue 驱动编排指南 + +**目的:** 记录从 GitHub / Linear / Jira issue 驱动完整 GSD 工作流的方法,将跟踪器中心概念映射到现有 GSD 原语。 + +**文档:** [`docs/issue-driven-orchestration.md`](issue-driven-orchestration.md) + +**覆盖的工作流:** +1. 为每个 issue 创建隔离的工作区(`/gsd-workspace --new`) +2. 运行管理仪表板以了解情况(`/gsd-manager`) +3. 自主执行(`/gsd-autonomous`) +4. 验证和审查(`/gsd-verify-work`、`/gsd-review`) +5. 发布并关闭 issue(`/gsd-ship`) + +无新命令或守护进程 — 纯粹是将现有原语映射到跟踪器驱动工作流的文档构件。 + +**参考 issue:** [#2840](https://github.com/open-gsd/gsd-core/pull/2840) + +--- + +### 130. Graphify 基于提交的过期检测 + +**目的:** 呈现架构图是从当前提交还是旧提交构建的,补充现有的基于 mtime 的过期信号。 + +**命令:** `/gsd-graphify status` + +**返回的新字段(graphify v0.7+ 图谱):** + +| 字段 | 类型 | 描述 | +|-------|------|-------------| +| `built_at_commit` | string | 构建图谱的提交 SHA | +| `current_commit` | string | 当前 `git HEAD` | +| `commits_behind` | number | 图谱落后 HEAD 多少个提交 | +| `commit_stale` | boolean \| null | `true`=过期,`false`=最新,`null`=不可用(v0.7 之前,非 git) | + +**渲染输出(当信号可用时):** +``` +Source commit: abc1234 (3 commits behind HEAD) +``` + +**安全性:** `built_at_commit` 在到达 `git` 之前被验证为 4–40 个十六进制字符 — 恶意的 `graph.json` 无法向 argv 注入破折号选项。 + +**回退:** v0.7 之前的图谱和非 git 检出返回 `commit_stale: null`;调用者回退到现有的基于 mtime 的 `stale` 标志。现有用户无行为变化。 + +**参考 issue:** [#3170](https://github.com/open-gsd/gsd-core/issues/3170) + +--- + +## v1.42.1 功能 + +### 132. 包合法性门控 + +**目的:** 在被幻觉产生、可疑或 slopsquatting 的包名到达 shell 安装命令之前将其阻止。 + +**行为:** +- 阶段研究为推荐的包编写 `## Package Legitimacy Audit` 表格。 +- 仅通过搜索验证的包被视为 `[ASSUMED]`,而不是可信的。 +- `[SLOP]` 包从推荐中删除。 +- 需要 `[ASSUMED]` 或可疑包的计划添加人工验证检查点。 +- 执行器安装失败会暂停进行人工验证,而不是自动尝试类似命名的包。 + +**需求:** +- REQ-PKG-GATE-01:研究必须记录包注册表、年龄、下载/来源信号、slopcheck 判决和处置。 +- REQ-PKG-GATE-02:规划器必须在执行前门控未验证或可疑的包安装。 +- REQ-PKG-GATE-03:执行器在包管理器安装失败后不得自动替换包名。 + +**参考:** [v1.42.1 发布说明](../RELEASE-v1.42.1.md) + +--- + +### 133. 技能界面预算 + +**目的:** 让用户在上下文预算重要时减少已安装的技能和智能体界面面积。 + +**安装配置文件:** +| 配置文件 | 目的 | +|---------|---------| +| `core` | 最小主循环界面 | +| `standard` | 核心加常用阶段管理命令 | +| `full` | 完整界面;默认 | + +**运行时控制:** `/gsd:surface` 列出配置文件状态,无需重新安装即可启用、禁用或重置技能集群。 + +**需求:** +- REQ-SURFACE-01:安装器必须解析 `--profile=` 并将活跃配置文件持久化在 `.gsd-profile` 中。 +- REQ-SURFACE-02:`--minimal` 和 `--core-only` 必须保持为 `--profile=core` 的别名。 +- REQ-SURFACE-03:运行时界面状态必须在安装配置文件标记之外持久化。 + +**参考:** [ADR-0011](../adr/0011-skill-surface-budget-module.md) + +--- + +### 134. 安装迁移 + +**目的:** 在安装和更新期间使运行时配置清理变得明确、可审计且具有回滚意识。 + +**能力:** +- 首次基线迁移记录管理的文件。 +- 旧版过期文件清理在删除或重写之前使用所有权证据。 +- 用户拥有的构件被保留。 +- 模糊的 GSD 风格文件通过清晰的报告阻止,而不是被静默覆盖。 +- 迁移计划支持演习报告和回滚保护。 + +**需求:** +- REQ-INSTALL-MIGRATION-01:迁移记录必须包含元数据、安装范围和所有权证据。 +- REQ-INSTALL-MIGRATION-02:所有权模糊时,破坏性操作必须封闭失败。 +- REQ-INSTALL-MIGRATION-03:安装失败时,如果存在回滚数据,必须恢复预安装状态。 + +**参考:** [安装迁移](../installer-migrations.md) + +--- + +### 135. 自定义 Ship PR 正文节区 + +**命令:** `/gsd-ship` + +**配置键:** `ship.pr_body_sections` + +**目的:** 在不编辑 GSD 工作流文件的情况下,将项目特定的 PRD 风格节区添加到生成的 PR 正文中。 + +**行为:** 配置的节区追加在必需的 `Summary`、`Changes`、`Requirements Addressed`、`Verification` 和 `Key Decisions` 节区之后。它们可以从构件标题复制、渲染模板或回退到静态文本。 + +**需求:** +- REQ-SHIP-SECTIONS-01:自定义节区不得替换、删除或重新排序必需的 PR 节区。 +- REQ-SHIP-SECTIONS-02:配置验证必须拒绝未知的模板标记。 +- REQ-SHIP-SECTIONS-03:禁用的节区必须保留在配置中而不出现在 PR 输出中。 + +**参考:** [自定义 PR 正文节区](../ship-pr-body-sections.md) + +--- + +### 136. 评审默认审查者 + +**命令:** `/gsd-review` + +**配置键:** `review.default_reviewers` + +**目的:** 让团队为无标志 `/gsd-review` 运行选择默认的审查者子集。 + +**优先级:** +```text +explicit reviewer flags -> --all -> review.default_reviewers -> all detected reviewers +``` + +**需求:** +- REQ-REVIEW-DEFAULTS-01:缺少 `review.default_reviewers` 必须保留之前的全部检测行为。 +- REQ-REVIEW-DEFAULTS-02:空数组必须被拒绝;删除该键以恢复全部检测行为。 +- REQ-REVIEW-DEFAULTS-03:已知但不可用的审查者必须在诊断中跳过,而不是硬失败运行。 + +**参考:** [配置参考](CONFIGURATION.md#reviewer-defaults-for-gsd-review) + +--- + +### 137. Fallow 结构性审查预处理 + +**命令:** `/gsd-code-review` + +**配置键:** `code_quality.fallow.*` + +**目的:** 在智能体审查之前添加可选的结构性分析遍历。 + +**行为:** 启用后,GSD 解析 `fallow` 二进制文件,运行有界审计,写入 `FALLOW.json`,并将结构性发现嵌入 `REVIEW.md`。 + +**需求:** +- REQ-FALLOW-01:Fallow 必须是选项,默认禁用。 +- REQ-FALLOW-02:缺少或失败的 fallow 运行必须产生清晰的诊断。 +- REQ-FALLOW-03:大于嵌入预算的发现必须在警告的情况下跳过,保留原始 JSON 构件。 + +**参考:** [配置参考](CONFIGURATION.md#code-quality-settings) + +--- + +### 138. 阶段末人工验证模式 + +**配置键:** `workflow.human_verify_mode` + +**目的:** 在保留人工验证要求的同时减少飞行中的人工检查点中断。 + +**行为:** 默认的 `"end-of-phase"` 模式将人工检查嵌入 `` 块用于阶段审查。`"mid-flight"` 恢复阻塞的 `checkpoint:human-verify` 任务。 + +**需求:** +- REQ-HUMAN-VERIFY-01:`checkpoint:decision` 和 `checkpoint:human-action` 无论模式如何都必须保持阻塞。 +- REQ-HUMAN-VERIFY-02:人工需要的验证必须保持待处理,直到阶段末审查解决。 +- REQ-HUMAN-VERIFY-03:没有该键的配置必须使用 `"end-of-phase"`。 + +**参考:** [检查点参考](../../get-shit-done/references/checkpoints.md) + +--- + +### 139. 配额与速率限制失败分类 + +**命令:** `/gsd-execute-phase` + +**目的:** 将提供商配额和速率限制失败视为等待并恢复的条件,而不是正常的执行器失败。 + +**行为:** 智能体输出被分类为诸如 `429`、`rate limit`、`usage limit`、`RESOURCE_EXHAUSTED` 和 `usage_limit_reached` 等信号。匹配的失败呈现等待重置的恢复路径。 + +**需求:** +- REQ-QUOTA-01:配额失败不得将立即重试作为主要恢复选项。 +- REQ-QUOTA-02:分类必须涵盖 Claude、Copilot、Codex、Gemini 和通用提供商哨兵。 +- REQ-QUOTA-03:非配额失败必须继续通过正常的执行失败路径。 + +**参考:** [提供商速率限制信号](../research/provider-rate-limit-signals.md) + +--- + +### 140. 状态栏上下文位置 + +**配置键:** `statusline.context_position` + +**目的:** 在窄终端中保持上下文计量器可见。 + +**选项:** +| 值 | 行为 | +|-------|----------| +| `"end"` | 默认;在行尾附近渲染上下文计量器 | +| `"front"` | 在模型名称之后立即渲染上下文计量器 | + +**需求:** +- REQ-STATUSLINE-POS-01:无效值必须被配置验证拒绝。 +- REQ-STATUSLINE-POS-02:缺少配置必须保留现有的末尾位置渲染。 + +**参考:** [配置参考](CONFIGURATION.md#statusline-settings) + +--- + +### 141. 里程碑标签创建开关 + +**命令:** `/gsd-complete-milestone` + +**配置键:** `git.create_tag` + +**目的:** 让具有外部发布自动化的项目在不创建本地 git 标签的情况下完成里程碑。 + +**行为:** `git.create_tag: false` 跳过里程碑标签创建。工作流仍然更新里程碑构件和状态。 + +**需求:** +- REQ-MILESTONE-TAG-01:缺少配置必须保留自动标签创建。 +- REQ-MILESTONE-TAG-02:现有标签冲突必须清晰地失败,而不是覆盖标签。 +- REQ-MILESTONE-TAG-03:禁用标签创建不得跳过里程碑归档。 + +**参考:** [配置参考](CONFIGURATION.md#git-branching) + +--- + +### 142. 结构化 JSON 错误模式 + +**CLI:** `gsd-tools --json-errors` + +**目的:** 为自动化调用者提供稳定的机器可读错误封装。 + +**行为:** 在 `--json-errors` 下失败的命令返回带错误类型、消息、命令上下文和退出映射的结构化 `ok: false` 有效负载,而不是仅有散文的 stderr。 + +**需求:** +- REQ-JSON-ERRORS-01:未知命令、验证错误、超时、原生失败、回退失败和内部错误必须映射到规范的错误类型。 +- REQ-JSON-ERRORS-02:CLI 退出代码映射对于自动化调用者必须保持稳定。 +- REQ-JSON-ERRORS-03:缺少 `--json-errors` 时,人类可读的输出必须保持为默认值。 + +--- + +## 相关文档 + +- [命令](COMMANDS.md) +- [配置](CONFIGURATION.md) +- [文档索引](README.md) + +**参考:** [JSON 错误模式](../json-errors.md) diff --git a/docs/zh-CN/INVENTORY.md b/docs/zh-CN/INVENTORY.md new file mode 100644 index 000000000..4b6b01a4b --- /dev/null +++ b/docs/zh-CN/INVENTORY.md @@ -0,0 +1,493 @@ +# GSD 已发布功能清单 + +> 所有已发布 GSD 功能面的权威目录:命令、代理、工作流、参考资料、CLI 模块和钩子。当广义文档(AGENTS.md、COMMANDS.md、ARCHITECTURE.md、CLI-TOOLS.md)与文件系统不一致时,以本文件及代码库目录树为准。 + +## 使用说明 + +- 本文件中的数量基于 v1.36.0 快照,版本之间可能存在偏差。如需实时数量,请在检出目录中运行 `ls commands/gsd/*.md | wc -l`、`ls agents/gsd-*.md | wc -l` 等命令。 +- 本文件列举了所有六大类别(代理、命令、工作流、参考资料、CLI 模块、钩子)中的每个已发布功能面。广义文档可能呈现叙述性内容或精选子集;当其与文件系统不一致时,本文件及目录清单为准。 +- v1.36.0 之后新增的功能面应首先在此处记录,再传播到广义文档中。`tests/inventory-counts.test.cjs`、`tests/commands-doc-parity.test.cjs`、`tests/agents-doc-parity.test.cjs`、`tests/cli-modules-doc-parity.test.cjs`、`tests/hooks-doc-parity.test.cjs`、`tests/architecture-counts.test.cjs` 和 `tests/command-count-sync.test.cjs` 中的漂移控制测试将数量和清单内容锚定到文件系统。 + +这是所有已发布 GSD Core 功能面的权威目录。请参阅 [文档索引](README.md) 按主题导航。 + +--- + +## 代理 (33 shipped) + +完整清单位于 `agents/gsd-*.md`。"主要文档"列标注了 [`docs/AGENTS.md`](../AGENTS.md) 是否提供完整角色卡(*primary*)、"高级与专项代理"章节中的简短存根(*advanced stub*),或未覆盖(*inventory only*)。 + +| 代理 | 角色(一行描述) | 由谁启动 | 主要文档 | +|------|----------------|----------|----------| +| gsd-project-researcher | 在路线图创建前研究领域生态系统(技术栈、功能、架构、潜在问题)。 | `/gsd-new-project`、`/gsd-new-milestone` | primary | +| gsd-phase-researcher | 在规划前研究特定阶段的实施方案。 | `/gsd-plan-phase` | primary | +| gsd-ui-researcher | 为前端阶段生成 UI 设计契约。 | `/gsd-ui-phase` | primary | +| gsd-assumptions-analyzer | 为 discuss-phase(假设模式)生成有证据支撑的假设。 | `discuss-phase-assumptions` 工作流 | primary | +| gsd-advisor-researcher | 在 discuss-phase 顾问模式下研究单个灰色地带决策。 | `discuss-phase` 工作流(顾问模式) | primary | +| gsd-research-synthesizer | 将并行研究者的输出整合为统一的 SUMMARY.md。 | `/gsd-new-project` | primary | +| gsd-planner | 创建可执行的阶段计划,包含任务分解和目标反向验证。 | `/gsd-plan-phase`、`/gsd-quick` | primary | +| gsd-roadmapper | 创建包含阶段分解和需求映射的项目路线图。 | `/gsd-new-project` | primary | +| gsd-executor | 以原子提交和偏差处理方式执行 GSD 计划。 | `/gsd-execute-phase`、`/gsd-quick` | primary | +| gsd-plan-checker | 验证计划是否能实现阶段目标(8 个验证维度)。 | `/gsd-plan-phase`(验证循环) | primary | +| gsd-integration-checker | 验证跨阶段集成和端到端流程。 | `/gsd-audit-milestone` | primary | +| gsd-ui-checker | 根据质量维度验证 UI-SPEC.md 设计契约。 | `/gsd-ui-phase`(验证循环) | primary | +| gsd-verifier | 通过目标反向分析验证阶段目标的达成情况。 | `/gsd-execute-phase` | primary | +| gsd-nyquist-auditor | 通过生成测试填补奈奎斯特验证空缺。 | `/gsd-validate-phase` | primary | +| gsd-ui-auditor | 对已实现前端代码进行六柱回溯视觉审计。 | `/gsd-ui-review` | primary | +| gsd-codebase-mapper | 探索代码库并撰写结构化分析文档。 | `/gsd-map-codebase` | primary | +| gsd-debugger | 使用科学方法和持久状态调查缺陷。 | `/gsd-debug`、`/gsd-verify-work` | primary | +| gsd-user-profiler | 从 8 个维度评分开发者行为。 | `/gsd-profile-user` | primary | +| gsd-doc-writer | 撰写并更新项目文档。 | `/gsd-docs-update` | primary | +| gsd-doc-verifier | 验证生成文档中的事实声明。 | `/gsd-docs-update` | primary | +| gsd-security-auditor | 验证 PLAN.md 威胁模型中的威胁缓解措施。 | `/gsd-secure-phase` | primary | +| gsd-pattern-mapper | 将新文件映射到最近似的已有类似文件;为规划者撰写 PATTERNS.md。 | `/gsd-plan-phase`(在研究与规划之间) | advanced stub | +| gsd-debug-session-manager | 在隔离上下文中运行完整的 `/gsd-debug` 检查点和续传循环,保持主上下文精简。 | `/gsd-debug` | advanced stub | +| gsd-code-reviewer | 审查源文件中的缺陷、安全问题和代码质量问题;生成 REVIEW.md。 | `/gsd-code-review` | advanced stub | +| gsd-code-fixer | 以每次修复原子提交的方式应用 REVIEW.md 中的修复;生成 REVIEW-FIX.md。 | `/gsd-code-review --fix` | advanced stub | +| gsd-ai-researcher | 将所选 AI 框架的官方文档研究成可实施的指导(AI-SPEC.md §3–§4b)。 | `/gsd-ai-integration-phase` | advanced stub | +| gsd-domain-researcher | 为 AI 系统提供领域专家评估标准和失效模式(AI-SPEC.md §1b)。 | `/gsd-ai-integration-phase` | advanced stub | +| gsd-eval-planner | 为 AI 阶段设计结构化评估策略(AI-SPEC.md §5–§7)。 | `/gsd-ai-integration-phase` | advanced stub | +| gsd-eval-auditor | 对 AI 阶段评估覆盖率进行回溯审计;生成 EVAL-REVIEW.md(COVERED/PARTIAL/MISSING)。 | `/gsd-eval-review` | advanced stub | +| gsd-framework-selector | ≤6 个问题的交互式决策矩阵,为 AI/LLM 框架评分并给出推荐。 | `/gsd-ai-integration-phase` | advanced stub | +| gsd-intel-updater | 撰写结构化 intel 文件(`.planning/intel/*.json`),用作可查询的代码库知识库。 | `/gsd-map-codebase --query` | advanced stub | +| gsd-doc-classifier | 将单个规划文档分类为 ADR、PRD、SPEC、DOC 或 UNKNOWN;并行生成以处理文档语料库。 | `/gsd-ingest-docs` | advanced stub | +| gsd-doc-synthesizer | 将已分类的规划文档综合为一个统一上下文,具有优先级规则、循环检测和三桶冲突报告。 | `/gsd-ingest-docs` | advanced stub | + +**覆盖说明。** `docs/AGENTS.md` 为 21 个主要代理提供了完整角色卡,并为 12 个高级代理提供了简洁存根。该文件中的代理工具权限摘要仅涵盖主要的 21 个代理;高级代理的工具列表记录在 `agents/gsd-*.md` 中各代理的 frontmatter 里。 + +--- + +## 命令 (67 shipped) + +完整清单位于 `commands/gsd/*.md`。以下分组与 `docs/COMMANDS.md` 的章节顺序一致;每行包含命令名称、从命令 frontmatter `description:` 派生的一行角色描述,以及源文件链接。`tests/command-count-sync.test.cjs` 将数量锁定到文件系统。 + +### 命名空间元技能 + +以下六个路由器是仅包含描述符的条目,模型优先选择这些条目;每个条目的主体包含一个路由表,指向正确的具体子技能。它们的存在是为了在完整功能面仍可访问的情况下降低急切技能列举的令牌成本。请参阅 [#2792](https://github.com/open-gsd/gsd-core/issues/2792) 了解原因;路由表指向 [#2790](https://github.com/open-gsd/gsd-core/issues/2790) 合并后的功能面。 + +| 命令 | 角色 | 源文件 | +|------|------|--------| +| `/gsd-workflow` | 阶段流水线路由器 — 讨论 / 规划 / 执行 / 验证 / 阶段 / 进度。 | [commands/gsd/ns-workflow.md](../../commands/gsd/ns-workflow.md) | +| `/gsd-project` | 项目生命周期路由器 — 里程碑、审计、摘要。 | [commands/gsd/ns-project.md](../../commands/gsd/ns-project.md) | +| `/gsd-quality` | 质量关卡路由器 — 代码审查、调试、审计、安全、评估、UI。 | [commands/gsd/ns-review.md](../../commands/gsd/ns-review.md) | +| `/gsd-context` | 代码库智能路由器 — 映射、图形化、文档、学习。 | [commands/gsd/ns-context.md](../../commands/gsd/ns-context.md) | +| `/gsd-manage` | 管理路由器 — 配置、工作区、工作流、线程、更新、发布、收件箱。 | [commands/gsd/ns-manage.md](../../commands/gsd/ns-manage.md) | +| `/gsd-ideate` | 探索与捕获路由器 — 探索、草图、尖峰、规格、捕获。 | [commands/gsd/ns-ideate.md](../../commands/gsd/ns-ideate.md) | + +### 核心工作流 + +| 命令 | 角色 | 源文件 | +|------|------|--------| +| `/gsd-new-project` | 通过深度上下文收集和 PROJECT.md 初始化新项目。 | [commands/gsd/new-project.md](../../commands/gsd/new-project.md) | +| `/gsd-workspace` | 管理 GSD 工作区 — 创建(`--new`)、列出(`--list`)或移除(`--remove`)隔离的工作区环境。 | [commands/gsd/workspace.md](../../commands/gsd/workspace.md) | +| `/gsd-discuss-phase` | 在规划前通过自适应提问收集阶段上下文。 | [commands/gsd/discuss-phase.md](../../commands/gsd/discuss-phase.md) | +| `/gsd-mvp-phase` | 将阶段规划为垂直 MVP 切片 — 用户故事、SPIDR 拆分,然后进行阶段规划。 | [commands/gsd/mvp-phase.md](../../commands/gsd/mvp-phase.md) | +| `/gsd-spec-phase` | 苏格拉底式规格细化,生成包含可证伪需求的 SPEC.md。 | [commands/gsd/spec-phase.md](../../commands/gsd/spec-phase.md) | +| `/gsd-ui-phase` | 为前端阶段生成 UI 设计契约(UI-SPEC.md)。 | [commands/gsd/ui-phase.md](../../commands/gsd/ui-phase.md) | +| `/gsd-ai-integration-phase` | 通过框架选择、研究和评估规划生成 AI 设计契约(AI-SPEC.md)。 | [commands/gsd/ai-integration-phase.md](../../commands/gsd/ai-integration-phase.md) | +| `/gsd-plan-phase` | 创建带有验证循环的详细阶段计划(PLAN.md)。 | [commands/gsd/plan-phase.md](../../commands/gsd/plan-phase.md) | +| `/gsd-plan-review-convergence` | 跨 AI 计划收敛循环 — 根据审查反馈重新规划,直到没有 HIGH 级别问题为止(最多 3 个循环)。 | [commands/gsd/plan-review-convergence.md](../../commands/gsd/plan-review-convergence.md) | +| `/gsd-ultraplan-phase` | [BETA] 将计划阶段卸载到 Claude Code 的 ultraplan 云端 — 远程起草,在浏览器中审查,通过 `/gsd-import` 导入回来。仅限 Claude Code。 | [commands/gsd/ultraplan-phase.md](../../commands/gsd/ultraplan-phase.md) | +| `/gsd-spike` | 通过一次性实验快速验证想法;使用 `--wrap-up` 将发现打包为持久技能。 | [commands/gsd/spike.md](../../commands/gsd/spike.md) | +| `/gsd-sketch` | 使用一次性 HTML 原型快速勾画 UI/设计想法;使用 `--wrap-up` 打包发现。 | [commands/gsd/sketch.md](../../commands/gsd/sketch.md) | +| `/gsd-execute-phase` | 使用基于波次的并行化执行阶段中的所有计划。 | [commands/gsd/execute-phase.md](../../commands/gsd/execute-phase.md) | +| `/gsd-verify-work` | 通过自动诊断的对话式 UAT 验证已构建的功能。 | [commands/gsd/verify-work.md](../../commands/gsd/verify-work.md) | +| `/gsd-ship` | 验证后创建 PR、运行审查并准备合并。 | [commands/gsd/ship.md](../../commands/gsd/ship.md) | +| `/gsd-fast` | 内联执行简单任务 — 无子代理、无规划开销。 | [commands/gsd/fast.md](../../commands/gsd/fast.md) | +| `/gsd-quick` | 以 GSD 保证(原子提交、状态跟踪)执行快速任务,但跳过可选代理。 | [commands/gsd/quick.md](../../commands/gsd/quick.md) | +| `/gsd-ui-review` | 对已实现前端代码进行六柱回溯视觉审计。 | [commands/gsd/ui-review.md](../../commands/gsd/ui-review.md) | +| `/gsd-code-review` | 审查阶段中更改的源文件中的缺陷、安全问题和代码质量问题;使用 `--fix` 自动应用发现。 | [commands/gsd/code-review.md](../../commands/gsd/code-review.md) | +| `/gsd-eval-review` | 回溯审计已执行 AI 阶段的评估覆盖率;生成 EVAL-REVIEW.md。 | [commands/gsd/eval-review.md](../../commands/gsd/eval-review.md) | + +### 阶段与里程碑管理 + +| 命令 | 角色 | 源文件 | +|------|------|--------| +| `/gsd-phase` | 阶段的增删改查 — 在 ROADMAP.md 中添加(默认)、插入(`--insert`)、移除(`--remove`)或编辑(`--edit`)阶段。 | [commands/gsd/phase.md](../../commands/gsd/phase.md) | +| `/gsd-add-tests` | 根据 UAT 标准和实现,为已完成阶段生成测试。 | [commands/gsd/add-tests.md](../../commands/gsd/add-tests.md) | +| `/gsd-validate-phase` | 回溯审计并填补已完成阶段的奈奎斯特验证空缺。 | [commands/gsd/validate-phase.md](../../commands/gsd/validate-phase.md) | +| `/gsd-secure-phase` | 回溯验证已完成阶段的威胁缓解措施。 | [commands/gsd/secure-phase.md](../../commands/gsd/secure-phase.md) | +| `/gsd-audit-milestone` | 在归档前根据原始意图审计里程碑完成情况。 | [commands/gsd/audit-milestone.md](../../commands/gsd/audit-milestone.md) | +| `/gsd-audit-uat` | 跨阶段审计所有待处理的 UAT 和验证项目。 | [commands/gsd/audit-uat.md](../../commands/gsd/audit-uat.md) | +| `/gsd-audit-fix` | 自主审计到修复流水线 — 查找问题、分类、修复、测试、提交。 | [commands/gsd/audit-fix.md](../../commands/gsd/audit-fix.md) | +| `/gsd-complete-milestone` | 归档已完成的里程碑并为下一个版本做准备。 | [commands/gsd/complete-milestone.md](../../commands/gsd/complete-milestone.md) | +| `/gsd-new-milestone` | 启动新的里程碑周期 — 更新 PROJECT.md 并路由到需求。 | [commands/gsd/new-milestone.md](../../commands/gsd/new-milestone.md) | +| `/gsd-milestone-summary` | 从里程碑产物生成全面的项目摘要。 | [commands/gsd/milestone-summary.md](../../commands/gsd/milestone-summary.md) | +| `/gsd-cleanup` | 归档已完成里程碑中积累的阶段目录。 | [commands/gsd/cleanup.md](../../commands/gsd/cleanup.md) | +| `/gsd-manager` | 用于从单个终端管理多个阶段的交互式指挥中心。 | [commands/gsd/manager.md](../../commands/gsd/manager.md) | +| `/gsd-workstreams` | 管理并行工作流 — 列出、创建、切换、状态、进度、完成、恢复。 | [commands/gsd/workstreams.md](../../commands/gsd/workstreams.md) | +| `/gsd-autonomous` | 自主运行所有剩余阶段 — 每个阶段依次讨论 → 规划 → 执行。 | [commands/gsd/autonomous.md](../../commands/gsd/autonomous.md) | +| `/gsd-undo` | 安全的 git 回退 — 使用阶段清单回滚阶段或计划提交。 | [commands/gsd/undo.md](../../commands/gsd/undo.md) | + +### 会话与导航 + +| 命令 | 角色 | 源文件 | +|------|------|--------| +| `/gsd-progress` | 检查项目进度、显示上下文并路由到下一个操作;使用 `--next` 自动推进或使用 `--do` 运行自由格式任务。 | [commands/gsd/progress.md](../../commands/gsd/progress.md) | +| `/gsd-capture` | 捕获想法、任务、笔记和种子 — todo(默认)、`--note`、`--backlog`、`--seed` 或 `--list` 待处理 todo。 | [commands/gsd/capture.md](../../commands/gsd/capture.md) | +| `/gsd-stats` | 显示项目统计信息 — 阶段、计划、需求、git 指标、时间线。 | [commands/gsd/stats.md](../../commands/gsd/stats.md) | +| `/gsd-pause-work` | 在阶段中途暂停工作时创建上下文交接。 | [commands/gsd/pause-work.md](../../commands/gsd/pause-work.md) | +| `/gsd-resume-work` | 从上一个会话恢复工作并完整还原上下文。 | [commands/gsd/resume-work.md](../../commands/gsd/resume-work.md) | +| `/gsd-explore` | 苏格拉底式构思和想法路由 — 在承诺之前思考想法。 | [commands/gsd/explore.md](../../commands/gsd/explore.md) | +| `/gsd-review-backlog` | 审查并将待办事项提升到活跃里程碑。 | [commands/gsd/review-backlog.md](../../commands/gsd/review-backlog.md) | +| `/gsd-thread` | 管理用于跨会话工作的持久上下文线程。 | [commands/gsd/thread.md](../../commands/gsd/thread.md) | + +### 代码库智能 + +| 命令 | 角色 | 源文件 | +|------|------|--------| +| `/gsd-map-codebase` | 使用并行映射代理分析代码库;使用 `--fast` 进行轻量级扫描或使用 `--query` 进行 intel 查询。 | [commands/gsd/map-codebase.md](../../commands/gsd/map-codebase.md) | +| `/gsd-graphify` | 在 `.planning/graphs/` 中构建、查询和检查项目知识图谱。 | [commands/gsd/graphify.md](../../commands/gsd/graphify.md) | +| `/gsd-extract-learnings` | 从已完成阶段产物中提取决策、经验、模式和意外发现。 | [commands/gsd/extract-learnings.md](../../commands/gsd/extract-learnings.md) | + +### 审查、调试与恢复 + +| 命令 | 角色 | 源文件 | +|------|------|--------| +| `/gsd-review` | 通过外部 AI CLI 请求跨 AI 同行审查阶段计划。 | [commands/gsd/review.md](../../commands/gsd/review.md) | +| `/gsd-debug` | 在上下文重置时进行跨会话持久状态的系统化调试。 | [commands/gsd/debug.md](../../commands/gsd/debug.md) | +| `/gsd-forensics` | 针对失败 GSD 工作流的事后调查 — 分析 git、产物、状态。 | [commands/gsd/forensics.md](../../commands/gsd/forensics.md) | +| `/gsd-health` | 诊断规划目录健康状态并可选择修复问题。 | [commands/gsd/health.md](../../commands/gsd/health.md) | +| `/gsd-import` | 摄取外部计划,并与项目决策进行冲突检测。 | [commands/gsd/import.md](../../commands/gsd/import.md) | +| `/gsd-inbox` | 根据项目模板分类审查所有未处理的 GitHub 问题和 PR。 | [commands/gsd/inbox.md](../../commands/gsd/inbox.md) | + +### 文档、用户档案与实用工具 + +| 命令 | 角色 | 源文件 | +|------|------|--------| +| `/gsd-docs-update` | 生成或更新经代码库验证的项目文档。 | [commands/gsd/docs-update.md](../../commands/gsd/docs-update.md) | +| `/gsd-ingest-docs` | 扫描仓库中混合的 ADR/PRD/SPEC/DOC 文档,通过分类、综合和冲突报告引导或合并到完整的 `.planning/` 设置中。 | [commands/gsd/ingest-docs.md](../../commands/gsd/ingest-docs.md) | +| `/gsd-profile-user` | 生成开发者行为档案和 Claude 可发现的产物。 | [commands/gsd/profile-user.md](../../commands/gsd/profile-user.md) | +| `/gsd-settings` | 配置 GSD 工作流开关和模型档案。 | [commands/gsd/settings.md](../../commands/gsd/settings.md) | +| `/gsd-config` | 配置 GSD 设置 — 工作流开关(默认)、高级旋钮(`--advanced`)、集成(`--integrations`)或模型档案(`--profile`)。 | [commands/gsd/config.md](../../commands/gsd/config.md) | +| `/gsd-pr-branch` | 通过过滤掉 `.planning/` 提交来创建干净的 PR 分支。 | [commands/gsd/pr-branch.md](../../commands/gsd/pr-branch.md) | +| `/gsd-surface` | 切换哪些技能被呈现 — 应用配置文件、列出或禁用集群而无需重新安装。 | [commands/gsd/surface.md](../../commands/gsd/surface.md) | +| `/gsd-update` | 将 GSD 更新到最新版本;使用 `--sync` 跨运行时同步技能或使用 `--reapply` 重新应用本地补丁。 | [commands/gsd/update.md](../../commands/gsd/update.md) | +| `/gsd-help` | 显示可用的 GSD 命令和使用指南。 | [commands/gsd/help.md](../../commands/gsd/help.md) | + +--- + +## 工作流 (88 shipped) + +完整清单位于 `get-shit-done/workflows/*.md`。工作流是命令在内部引用的轻量编排器;大多数不由最终用户直接阅读。以下行将每个工作流文件映射到其角色(来源于 `` 块),以及在适用情况下映射到调用它的命令。 + +| 工作流 | 角色 | 调用者 | +|--------|------|--------| +| `add-backlog.md` | 使用 999.x 编号将待办事项添加到 ROADMAP.md。 | `/gsd-capture --backlog` | +| `add-phase.md` | 在路线图中当前里程碑的末尾添加新的整数阶段。 | `/gsd-phase`(默认) | +| `add-tests.md` | 根据已完成阶段的产物生成单元测试和 E2E 测试。 | `/gsd-add-tests` | +| `add-todo.md` | 将会话中出现的想法或任务捕获为结构化 todo。 | `/gsd-capture`(默认) | +| `ai-integration-phase.md` | 将框架选择 → AI 研究 → 领域研究 → 评估规划编排为 AI-SPEC.md。 | `/gsd-ai-integration-phase` | +| `analyze-dependencies.md` | 分析 ROADMAP.md 阶段的文件重叠和语义依赖;建议 `Depends on` 边。 | `/gsd-manager --analyze-deps` | +| `audit-fix.md` | 自主审计到修复流水线 — 运行审计、解析、分类、修复、测试、提交。 | `/gsd-audit-fix` | +| `audit-milestone.md` | 通过聚合阶段验证来验证里程碑是否满足完成定义。 | `/gsd-audit-milestone` | +| `audit-uat.md` | 跨阶段审计 UAT 和验证文件;生成优先排序的待处理事项列表。 | `/gsd-audit-uat` | +| `autonomous.md` | 自主驱动里程碑阶段 — 所有剩余阶段、一个范围或单个阶段。 | `/gsd-autonomous` | +| `check-todos.md` | 列出待处理 todo,允许选择,加载上下文,并路由到适当的操作。 | `/gsd-capture --list` | +| `cleanup.md` | 归档已完成里程碑中积累的阶段目录。 | `/gsd-cleanup` | +| `code-review-fix.md` | 通过 gsd-code-fixer 以每次修复原子提交的方式自动修复 REVIEW.md 中的问题。 | `/gsd-code-review --fix` | +| `code-review.md` | 通过 gsd-code-reviewer 审查阶段源码变更;生成 REVIEW.md。 | `/gsd-code-review` | +| `complete-milestone.md` | 将已发布版本标记为完成 — MILESTONES.md 条目、PROJECT.md 演进、标签。 | `/gsd-complete-milestone` | +| `diagnose-issues.md` | 编排并行调试代理以调查 UAT 差距并找出根本原因。 | `/gsd-verify-work`(自动诊断) | +| `discovery-phase.md` | 以适当的深度级别执行发现。 | `/gsd-new-project`(发现路径) | +| `discuss-phase-assumptions.md` | 假设模式讨论 — 通过以代码库为先的分析提取实施决策。 | `/gsd-discuss-phase`(当 `discuss_mode=assumptions` 时) | +| `discuss-phase-power.md` | 高级用户讨论 — 将所有问题预生成到 JSON 状态文件和 HTML UI 中。 | `/gsd-discuss-phase --power` | +| `discuss-phase.md` | 通过迭代灰色地带讨论提取实施决策。 | `/gsd-discuss-phase` | +| `mvp-phase.md` | 将阶段规划为垂直 MVP 切片 — 用户故事、SPIDR 拆分,然后进行阶段规划。 | `/gsd-mvp-phase` | +| `do.md` | 将用户的自由格式文本路由到最匹配的 GSD 命令。 | `/gsd-progress --do` | +| `docs-update.md` | 生成、更新和验证规范的和手写的项目文档。 | `/gsd-docs-update` | +| `edit-phase.md` | 就地编辑 ROADMAP.md 中现有阶段的任何字段,保留编号和位置。 | `/gsd-phase --edit` | +| `eval-review.md` | 对已实现 AI 阶段的评估覆盖率进行回溯审计。 | `/gsd-eval-review` | +| `execute-phase.md` | 使用基于波次的并行执行方式执行阶段中的所有计划。 | `/gsd-execute-phase` | +| `execute-plan.md` | 执行阶段提示(PLAN.md)并创建结果摘要(SUMMARY.md)。 | `execute-phase.md`(每个计划的子代理) | +| `explore.md` | 苏格拉底式构思 — 通过探究性问题引导开发者。 | `/gsd-explore` | +| `debug.md` | 系统化调试 — 子命令路由、会话创建、委托给 gsd-debug-session-manager。 | `/gsd-debug` | +| `extract-learnings.md` | 从已完成阶段产物中提取决策、经验、模式和意外发现。 | `/gsd-extract-learnings` | +| `fast.md` | 内联执行简单任务,无子代理开销。 | `/gsd-fast` | +| `forensics.md` | 针对失败工作流的取证调查 — git、产物和状态分析。 | `/gsd-forensics` | +| `graduation.md` | 跨阶段聚类 LEARNINGS.md 中的重复项,并显示 HITL 提升候选项。 | `transition.md`(graduation_scan 步骤) | +| `health.md` | 验证 `.planning/` 目录完整性并报告可操作问题。 | `/gsd-health` | +| `help.md` | 显示完整的 GSD Core 命令参考。 | `/gsd-help` | +| `import.md` | 摄取外部计划,并与现有项目决策进行冲突检测。 | `/gsd-import` | +| `inbox.md` | 根据项目贡献模板分类未处理的 GitHub 问题和 PR。 | `/gsd-inbox` | +| `ingest-docs.md` | 扫描仓库中混合的规划文档;分类、综合,并通过冲突报告引导或合并到 `.planning/` 中。 | `/gsd-ingest-docs` | +| `insert-phase.md` | 为里程碑中途发现的紧急工作插入十进制阶段。 | `/gsd-phase --insert` | +| `list-phase-assumptions.md` | 在规划前显示 Claude 对某个阶段的假设。 | `/gsd-discuss-phase --assumptions` | +| `list-workspaces.md` | 列出在 `~/gsd-workspaces/` 中找到的所有 GSD 工作区及其状态。 | `/gsd-workspace --list` | +| `manager.md` | 交互式里程碑指挥中心 — 仪表板、内联讨论、后台规划/执行。 | `/gsd-manager` | +| `map-codebase.md` | 编排并行代码库映射代理以生成 `.planning/codebase/` 文档。 | `/gsd-map-codebase` | +| `milestone-summary.md` | 里程碑摘要综合 — 从里程碑产物生成的入职和审查产物。 | `/gsd-milestone-summary` | +| `new-milestone.md` | 启动新里程碑周期 — 加载项目上下文、收集目标、更新 PROJECT.md/STATE.md。 | `/gsd-new-milestone` | +| `new-project.md` | 统一的新项目流程 — 提问、研究(可选)、需求、路线图。 | `/gsd-new-project` | +| `new-workspace.md` | 创建带有仓库 worktree/克隆和独立 `.planning/` 的隔离工作区。 | `/gsd-workspace --new` | +| `next.md` | 检测当前项目状态并自动推进到下一个逻辑步骤。 | `/gsd-progress --next` | +| `node-repair.md` | 用于失败任务验证的自主修复算子;由 `execute-plan` 调用。 | `execute-plan.md`(恢复) | +| `note.md` | 零摩擦想法捕获 — 一次 Write 调用,一行确认。 | `/gsd-capture --note` | +| `pause-work.md` | 创建结构化的 `.planning/HANDOFF.json` 和 `.continue-here.md` 交接文件。 | `/gsd-pause-work` | +| `plan-phase.md` | 创建包含集成研究和验证循环的可执行 PLAN.md 文件。 | `/gsd-plan-phase`、`/gsd-quick` | +| `plan-review-convergence.md` | 跨 AI 计划收敛循环 — 根据审查反馈重新规划,直到没有 HIGH 级别问题为止。 | `/gsd-plan-review-convergence` | +| `plant-seed.md` | 将前瞻性想法捕获为带有触发条件的结构化种子文件。 | `/gsd-capture --seed` | +| `pr-branch.md` | 通过过滤 `.planning/` 提交为 PR 创建干净的分支。 | `/gsd-pr-branch` | +| `profile-user.md` | 编排完整的开发者档案流程 — 同意、会话扫描、档案生成。 | `/gsd-profile-user` | +| `progress.md` | 进度渲染 — 项目上下文、位置和下一步操作路由。 | `/gsd-progress` | +| `quick.md` | 以 GSD 保证(原子提交、状态跟踪)快速执行任务。 | `/gsd-quick` | +| `reapply-patches.md` | GSD 更新后重新应用本地修改。 | `/gsd-update --reapply` | +| `remove-phase.md` | 从路线图中移除未来的阶段并重新编号后续阶段。 | `/gsd-phase --remove` | +| `remove-workspace.md` | 移除 GSD 工作区并清理 worktree。 | `/gsd-workspace --remove` | +| `resume-project.md` | 恢复工作 — 从 STATE.md、HANDOFF.json 和产物中完整还原上下文。 | `/gsd-resume-work` | +| `review.md` | 通过外部 CLI 进行跨 AI 计划审查;生成 REVIEWS.md。 | `/gsd-review` | +| `scan.md` | 快速单焦点代码库扫描 — map-codebase 的轻量替代方案。 | `/gsd-map-codebase --fast` | +| `secure-phase.md` | 对已完成阶段进行回溯威胁缓解审计。 | `/gsd-secure-phase` | +| `session-report.md` | 会话报告 — 令牌使用情况、工作摘要、成果。 | `/gsd-pause-work --report` | +| `settings.md` | 配置 GSD 工作流开关和模型档案。 | `/gsd-settings`、`/gsd-config --profile` | +| `settings-advanced.md` | 配置 GSD 高级用户旋钮 — 计划回弹、超时、分支模板、跨 AI 执行、运行时旋钮。 | `/gsd-config --advanced` | +| `settings-integrations.md` | 配置第三方 API 密钥(Brave/Firecrawl/Exa)、`review.models.` CLI 路由和带掩码(`****`)显示的 `agent_skills.` 注入。 | `/gsd-config --integrations` | +| `ship.md` | 验证后创建 PR、运行审查并准备合并。 | `/gsd-ship` | +| `sketch.md` | 通过一次性 HTML 原型(每次草图 2-3 个变体)探索设计方向。 | `/gsd-sketch` | +| `sketch-wrap-up.md` | 整理草图发现并将其打包为持久的 `sketch-findings-[project]` 技能。 | `/gsd-sketch --wrap-up` | +| `spec-phase.md` | 带歧义评分的苏格拉底式规格细化;生成 SPEC.md。 | `/gsd-spec-phase` | +| `spike.md` | 通过聚焦的一次性实验进行快速可行性验证。 | `/gsd-spike` | +| `spike-wrap-up.md` | 整理尖峰发现并将其打包为持久的 `spike-findings-[project]` 技能。 | `/gsd-spike --wrap-up` | +| `stats.md` | 项目统计信息渲染 — 阶段、计划、需求、git 指标。 | `/gsd-stats` | +| `sync-skills.md` | 跨运行时 GSD 技能同步 — 跨运行时根目录差异并应用 `gsd-*` 技能目录。 | `/gsd-update --sync` | +| `transition.md` | 阶段边界过渡工作流 — 工作流检查、状态推进。 | `execute-phase.md`、`/gsd-progress --next` | +| `ui-phase.md` | 通过 gsd-ui-researcher 生成 UI-SPEC.md 设计契约。 | `/gsd-ui-phase` | +| `ui-review.md` | 通过 gsd-ui-auditor 进行六柱回溯视觉审计。 | `/gsd-ui-review` | +| `ultraplan-phase.md` | [BETA] 将规划卸载到 Claude Code 的 ultraplan 云端;远程起草并通过 `/gsd-import` 导入回来。 | `/gsd-ultraplan-phase` | +| `undo.md` | 安全的 git 回退 — 使用阶段清单回滚阶段或计划提交。 | `/gsd-undo` | +| `thread.md` | 为跨会话工作创建、列出、关闭或恢复持久上下文线程。 | `/gsd-thread` | +| `update.md` | 将 GSD 更新到最新版本并显示变更日志。 | `/gsd-update` | +| `validate-phase.md` | 回溯审计并填补已完成阶段的奈奎斯特验证空缺。 | `/gsd-validate-phase` | +| `verify-phase.md` | 通过目标反向分析验证阶段目标的达成情况。 | `execute-phase.md`(执行后) | +| `verify-work.md` | 带自动诊断的对话式 UAT — 生成 UAT.md 和修复计划。 | `/gsd-verify-work` | + +> **注意:** 某些工作流没有直接面向用户的命令(例如 `execute-plan.md`、`verify-phase.md`、`transition.md`、`node-repair.md`、`diagnose-issues.md`)— 它们由编排器工作流在内部调用。`discovery-phase.md` 是 `/gsd-new-project` 的备用入口。 + +--- + +## 参考资料 (62 shipped) + +完整清单位于 `get-shit-done/references/*.md`。参考资料是工作流和代理 `@-reference` 的共享知识文档。以下分组与 [`docs/ARCHITECTURE.md`](ARCHITECTURE.md#references-get-shit-donereferencesmd) 一致 — 核心、工作流、思维模型集群和模块化规划器分解。 + +### 核心参考资料 + +| 参考资料 | 角色 | +|----------|------| +| `checkpoints.md` | 检查点类型定义和交互模式。 | +| `gates.md` | 4 种规范关卡类型(Confirm、Quality、Safety、Transition),已连接到 plan-checker 和 verifier。 | +| `model-profiles.md` | 每个代理的模型层级分配。 | +| `model-profile-resolution.md` | 模型解析算法文档。 | +| `verification-patterns.md` | 如何验证不同的产物类型。 | +| `verification-overrides.md` | 每种产物的验证覆盖规则。 | +| `planning-config.md` | 完整的配置模式和行为。 | +| `git-integration.md` | Git 提交、分支和历史模式。 | +| `git-planning-commit.md` | 规划目录提交约定。 | +| `questioning.md` | 项目初始化的梦想提取哲学。 | +| `tdd.md` | 测试驱动开发集成模式。 | +| `ui-brand.md` | 视觉输出格式模式。 | +| `common-bug-patterns.md` | 代码审查和验证的常见缺陷模式。 | +| `debugger-philosophy.md` | 由 `gsd-debugger` 加载的长青调试准则。 | +| `mandatory-initial-read.md` | 注入到代理提示中的共享必读样板文本。 | +| `project-skills-discovery.md` | 注入到代理提示中的共享项目技能发现样板文本。 | + +### 工作流参考资料 + +| 参考资料 | 角色 | +|----------|------| +| `agent-contracts.md` | 编排器与代理之间的正式接口。 | +| `context-budget.md` | 上下文窗口预算分配规则。 | +| `continuation-format.md` | 会话续传/恢复格式。 | +| `domain-probes.md` | discuss-phase 的领域特定探究问题。 | +| `gate-prompts.md` | 关卡/检查点提示模板。 | +| `scout-codebase.md` | discuss-phase 侦察步骤的阶段类型→代码库映射选择表(通过 #2551 提取)。 | +| `revision-loop.md` | 计划修订迭代模式。 | +| `universal-anti-patterns.md` | 需要检测和避免的通用反模式。 | +| `worktree-path-safety.md` | Worktree 守卫套件:HEAD 断言、cwd 漂移哨兵(步骤 0a,#3097)和绝对路径守卫(步骤 0b,#3099)— 通过 `` 加载到执行器生成提示中。 | +| `artifact-types.md` | 规划产物类型定义。 | +| `phase-argument-parsing.md` | 阶段参数解析约定。 | +| `decimal-phase-calculation.md` | 十进制子阶段编号规则。 | +| `workstream-flag.md` | 工作流活跃指针约定(`--ws`)。 | +| `user-profiling.md` | 用户行为档案检测启发式方法。 | +| `thinking-partner.md` | 决策点处的条件性思维伙伴激活。 | +| `autonomous-smart-discuss.md` | 自主模式的智能讨论逻辑。 | +| `ios-scaffold.md` | iOS 应用程序脚手架模式。 | +| `ai-evals.md` | `/gsd-ai-integration-phase` 的 AI 评估设计参考。 | +| `ai-frameworks.md` | `gsd-framework-selector` 的 AI 框架决策矩阵参考。 | +| `executor-examples.md` | gsd-executor 代理的已完成示例。 | +| `doc-conflict-engine.md` | 摄取/导入工作流的共享冲突检测契约。 | +| `execute-mvp-tdd.md` | MVP+TDD 模式下 execute-phase 的运行时关卡语义 — 任务前失败测试验证、阶段结束阻塞性审查。 | +| `mvp-concepts.md` | 六个 MVP 相关参考文件的交叉引用索引;将每个文件映射到其目的和加载它的工作流。 | +| `verify-mvp-mode.md` | MVP 模式阶段的 UAT 框架规则 — 用户流程优先排序、延迟技术检查、用户故事格式守卫。 | + +### 草图参考资料 + +`/gsd-sketch` 工作流及其收尾配套使用的参考资料。 + +| 参考资料 | 角色 | +|----------|------| +| `sketch-interactivity.md` | 使 HTML 草图感觉交互性强且富有活力的规则。 | +| `sketch-theme-system.md` | 用于跨草图一致性的共享 CSS 主题变量系统。 | +| `sketch-tooling.md` | 每个草图中包含的浮动工具栏实用工具。 | +| `sketch-variant-patterns.md` | 多变体 HTML 模式(标签页、并排、叠加层)。 | + +### 思维模型参考资料 + +将思维类模型(o3、o4-mini、Gemini 2.5 Pro)集成到 GSD 工作流中的参考资料。 + +| 参考资料 | 角色 | +|----------|------| +| `thinking-models-debug.md` | 用于调试工作流的思维模型模式。 | +| `thinking-models-execution.md` | 用于执行代理的思维模型模式。 | +| `thinking-models-planning.md` | 用于规划代理的思维模型模式。 | +| `thinking-models-research.md` | 用于研究代理的思维模型模式。 | +| `thinking-models-verification.md` | 用于验证代理的思维模型模式。 | + +### 模块化规划器分解 + +`gsd-planner` 代理被分解为一个核心代理加上参考模块,以适应运行时字符限制。 + +| 参考资料 | 角色 | +|----------|------| +| `planner-antipatterns.md` | 规划器反模式和特异性示例。 | +| `planner-chunked.md` | 分块模式返回格式(`## OUTLINE COMPLETE`、`## PLAN COMPLETE`),用于缓解 Windows stdio 挂起问题。 | +| `planner-gap-closure.md` | 间隙闭合模式行为(读取 VERIFICATION.md,有针对性地重新规划)。 | +| `planner-reviews.md` | 跨 AI 审查集成(读取来自 `/gsd-review` 的 REVIEWS.md)。 | +| `planner-revision.md` | 迭代细化的计划修订模式。 | +| `planner-source-audit.md` | 规划器源代码审计和权限限制规则。 | +| `planner-mvp-mode.md` | MVP 模式的垂直切片规划规则。 | +| `planner-human-verify-mode.md` | `workflow.human_verify_mode = end-of-phase` 的规则:抑制 `checkpoint:human-verify` 任务发射,并通过 `` 路由延迟的项目。 | +| `planner-graphify-auto-update.md` | `load_graph_context` 如何在现有陈旧性注释旁边显示 `.last-build-status.json` 自动更新状态(运行中/失败/陈旧头部)。通过 `graphify.auto_update` 选择启用(#3347)。 | +| `planner-interface-context.md` | 执行器的接口上下文规则 — 如何从现有代码中提取关键接口/类型/导出,并记录下游计划将使用的新接口。 | +| `skeleton-template.md` | 为新项目行走骨架(阶段 1 + `--mvp`)生成的 SKELETON.md 模板。 | +| `user-story-template.md` | MVP 规划的用户故事格式 — "作为 / 我想要 / 以便" 结构化字段。 | +| `spidr-splitting.md` | 用于在 MVP 模式下处理大型用户故事的 SPIDR 拆分分解规则。 | + +> **子目录:** `get-shit-done/references/few-shot-examples/` 包含额外的少样本示例(`plan-checker.md`、`verifier.md`),这些示例从特定代理中引用。它们不计入 62 个顶级参考资料。 + +--- + +## CLI 模块 (81 shipped) + +完整清单:`get-shit-done/bin/lib/*.cjs`。 + +| 模块 | 职责 | +|------|------| +| `active-workstream-store.cjs` | 工作流来源优先级和选择(CLI `--ws` > `GSD_WORKSTREAM` 环境变量 > 存储的指针);名称验证和环境传播 | +| `adr-parser.cjs` | 用于 plan-phase 摄取快速路径的 ADR 决策解析器;规范化章节同义词,解析状态/决策/范围围栏,并强制执行状态拒绝关卡 | +| `agent-command-router.cjs` | `gsd-tools agent` 的轻量 CJS 子命令路由适配器 | +| `artifacts.cjs` | 规范产物注册表 — 已知的 `.planning/` 根文件名;被 `gsd-health` W019 lint 使用 | +| `audit.cjs` | 审计分发、审计开放会话、审计存储帮助器 | +| `check-command-router.cjs` | `gsd-tools check` 的轻量 CJS 子命令路由适配器 | +| `cjs-command-router-adapter.cjs` | 清单支持的 CJS 命令族路由器的共享兼容性适配器 | +| `clock.cjs` | 用于确定性锁测试的可注入时钟接缝(now/sleep) | +| `clusters.cjs` | 运行时 surface 模块的技能集群定义(ADR-0011 阶段 2) | +| `code-review-flags.cjs` | `/gsd:code-review` 的类型化标志解析器;导出 `parseCodeReviewFlags(argv)`(→ `{ fix, all, auto, depth, files }`)和 `resolveCodeReviewWorkflow(flags)`(→ `'code-review.md' \| 'code-review-fix.md'`);`--fix`/`--all`/`--auto` 路由的规范分发接缝 | +| `command-aliases.cjs` | 清单支持的族路由器的别名/子命令元数据 | +| `command-arg-projection.cjs` | 跨命令族路由器共享的类型化标志和位置参数投影帮助器 | +| `command-routing-hub.cjs` | 纯结果分发中心,集中了所有命令族路由器的模式决策(SDK vs CJS)、错误分类和无抛出契约(#3788) | +| `commands.cjs` | 杂项 CLI 命令(slug、时间戳、todo、脚手架、统计信息) | +| `config-schema.cjs` | `VALID_CONFIG_KEYS` 和动态键模式的单一真实来源;由验证器和 config-schema-docs 奇偶性测试导入 | +| `config.cjs` | `config.json` 读写、章节初始化;从 `config-schema.cjs` 导入验证器 | +| `config-types.cjs` | `model_policy` 配置块的 TypeScript 类型定义 — `ModelPolicyConfig`、`TierEntry`、`RuntimeTiers`;在发布时从 `src/config-types.cts` 编译(ADR-457) | +| `configuration.cjs` | 配置模块 — 规范的配置加载、旧版键规范化、默认值合并和显式磁盘迁移;SDK 和 CJS 消费者的真实来源 | +| `context-utilization.cjs` | `gsd-health --context` 的纯分类器 — 根据 60%/70% 断裂点阈值将(tokensUsed, contextWindow)转换为 `{ percent, state }` 分类结果(#2792) | +| `core.cjs` | 错误处理、输出格式化、共享工具、运行时回退;规划工作区帮助器的兼容性重新导出 | +| `decisions.cjs` | 解析 CONTEXT.md `` 块;接受数字(D-42)和字母数字(D-INFRA-01)ID;返回 `{id, text, category, tags, trackable}` | +| `docs.cjs` | 文档更新工作流初始化、Markdown 扫描、单体仓库检测 | +| `drift.cjs` | 执行后代码库结构漂移检测器(#2003):将文件更改分类为新目录/桶/迁移/路由类别,并循环处理 `last_mapped_commit` frontmatter | +| `fallow-runner.cjs` | `/gsd-code-review` 的 fallow 审计适配器:二进制解析(`PATH` 然后 `node_modules/.bin`)、可操作的缺少二进制错误和结构性发现规范化 | +| `frontmatter.cjs` | YAML frontmatter 增删改查操作 | +| `gap-checker.cjs` | 规划后间隙分析(#2493):REQUIREMENTS.md + CONTEXT.md 决策 vs PLAN.md 覆盖率报告(`gsd-tools gap-analysis`) | +| `graphify.cjs` | `/gsd-graphify` 的知识图谱构建/查询/状态/差异 | +| `gsd2-import.cjs` | `/gsd-import --from-gsd2` 的外部计划摄取 | +| `init-command-router.cjs` | `gsd-tools init` 的轻量 CJS 子命令路由适配器 | +| `init.cjs` | 每种工作流类型的复合上下文加载 | +| `install-profiles.cjs` | `--minimal` 安装的安装配置文件允许列表和技能暂存(#2762);哪些 `gsd-*` 技能/代理落入运行时配置目录的单一真实来源 | +| `installer-migration-authoring.cjs` | 记录元数据、显式范围、所有权证据和运行时契约引用的安装程序迁移创作守卫 | +| `installer-migration-report.cjs` | 安装/更新集成的安装程序迁移报告投影和阻止操作守卫 | +| `installer-migrations.cjs` | 安装程序迁移规划、产物分类、安装状态持久化、日志化应用和回滚帮助器 | +| `intel.cjs` | 支持 `/gsd-map-codebase --query` 和 `gsd-intel-updater` 的代码库 intel 存储 | +| `learnings.cjs` | `/gsd-extract-learnings` 的跨阶段学习提取 | +| `milestone.cjs` | 里程碑归档、需求标记 | +| `model-catalog.cjs` | 共享模型目录 JSON 上的 CJS 适配器;导出所有 CLI 消费者的规范运行时层级默认值、代理配置文件映射、别名映射和路由元数据 | +| `model-profiles.cjs` | 源自 `model-catalog.cjs` 的向后兼容配置文件帮助器;不再拥有自己的模型表 | +| `package-identity.cjs` | GSD 已发布包坐标(npm 名称、bin 名称、仓库 slug、变更日志 URL、手动安装命令)的生成单一来源,源自 package.json;由更新工作进程、`check-latest-version` 和安装程序读取(#498) | +| `phase-command-router.cjs` | `gsd-tools phase` 的轻量 CJS 子命令路由适配器 | +| `phase-lifecycle.cjs` | 从 phase-lifecycle SDK 处理程序中提取的纯计算阶段生命周期帮助器 | +| `phase.cjs` | 阶段目录操作、十进制编号、计划索引 | +| `phases-command-router.cjs` | `gsd-tools phases` 的轻量 CJS 子命令路由适配器 | +| `plan-scan.cjs` | 用于检测平面和嵌套布局中计划和摘要文件的规范阶段计划扫描器(k014) | +| `planning-workspace.cjs` | 规划路径/工作流接缝(`planningDir`、`planningPaths`、活跃工作流路由、`.planning/.lock` 编排) | +| `project-root.cjs` | 使用四种启发式方法从起始目录解析项目根目录(自己的 `.planning/` 守卫、`sub_repos` 配置、`multiRepo` 标志、`.git` 启发式) | +| `profile-output.cjs` | 档案渲染、USER-PROFILE.md 和 dev-preferences.md 生成 | +| `profile-pipeline.cjs` | 用户行为档案数据流水线、会话文件扫描 | +| `prompt-budget.cjs` | 审查提示的纯令牌预算核算 — 估算令牌,应用确定性修剪优先级(缩减 PROJECT.md 头部、按比例截断计划、删除上下文/研究/需求、硬失败守卫),返回 `review.max_prompt_tokens` 的结构化元数据(#3081) | +| `review-reviewer-selection.cjs` | `/gsd-review` 默认审查者策略和优先级的审查者选择/规范化帮助器 | +| `roadmap-command-router.cjs` | `gsd-tools roadmap` 的轻量 CJS 子命令路由适配器 | +| `roadmap-upgrade.cjs` | 将旧版 `Phase N` 条目转换为里程碑前缀 `Phase M-NN` 约定的迁移工具;`computeMigrationPlan` + `applyMigration`,默认为试运行并具有原子回滚 | +| `roadmap.cjs` | ROADMAP.md 解析、阶段提取、计划进度 | +| `runtime-artifact-layout.cjs` | 运行时产物布局模块 — 解析每个受支持运行时的产物目录形状(命令、代理、技能);每个运行时产物放置的单一真实来源(#3663) | +| `runtime-name-policy.cjs` | 运行时名称规范化策略 — 用于路径构建和显示的运行时标识符的规范令牌清理 | +| `runtime-homes.cjs` | 规范的运行时 → 全局配置/技能目录映射;对所有 15 个运行时的一流支持,包括 Hermes 嵌套布局和 Cline 基于规则的排除(#3126) | +| `runtime-slash.cjs` | 运行时感知的斜杠命令格式化器 — 在面向用户的输出和持久化产物中发出 `/gsd-`(基于技能的运行时)和 `$gsd-`(codex)的单一真实来源(#3584) | +| `schema-detect.cjs` | ORM 模式的模式漂移检测(Prisma、Drizzle、Supabase、TypeORM、Payload);导出 `detectSchemaFiles`、`detectSchemaOrm`、`checkSchemaDrift`、`SCHEMA_PATTERNS`、`ORM_INFO` | +| `secrets.cjs` | 集成密钥的密钥配置掩码约定(`****`);导出 `SECRET_CONFIG_KEYS`、`isSecretKey`、`maskSecret`、`maskIfSecret` | +| `semver-compare.cjs` | 共享 semver 比较策略帮助器(`compareSemverCore`、稳定三元组验证、规范化元组解析),由更新检查钩子、statusline 开发安装检测和变更集提取范围逻辑使用(#10) | +| `security.cjs` | 路径遍历防护、提示注入检测、安全 JSON/shell 帮助器 | +| `shell-command-projection.cjs` | 托管钩子序列化的运行时感知 shell 命令投影:根据运行时/平台决定 PowerShell 调用操作符使用,并规范化 Windows 脚本路径令牌 | +| `state-command-router.cjs` | `gsd-tools state` 的轻量 CJS 子命令路由适配器 | +| `state.cjs` | STATE.md 解析、更新、进度推进、指标 | +| `state-document.cjs` | 纯 STATE.md 字段提取、替换、状态规范化和进度计算转换 | +| `surface.cjs` | 运行时 surface 模块 — 独立于安装时配置文件标记管理运行时启用/禁用 surface 状态(ADR-0011 阶段 2) | +| `task-command-router.cjs` | `gsd-tools task` 的轻量 CJS 子命令路由适配器 | +| `template.cjs` | 带变量替换的模板选择和填充 | +| `uat.cjs` | UAT 文件解析、验证债务跟踪、audit-uat 支持 | +| `ui-safety-gate.cjs` | 无 shell 的词边界 UI 令牌检测器(#3706,#3718);从 stdin 读取阶段章节文本,退出 0(找到 UI)或 1(未找到 UI);也部署到 `get-shit-done/bin/lib/`,以便 GSD 安装程序将其传送到 `$RUNTIME_DIR`(#448) | +| `update-context.cjs` | `/gsd:update` 的纯安装上下文解析器 — 从 update.md bash 移植的运行时/范围/配置目录/版本检测(LOCAL/GLOBAL/UNKNOWN);支持 `gsd-tools update-context`(#498) | +| `validate-command-router.cjs` | `gsd-tools validate` 的轻量 CJS 子命令路由适配器 | +| `validate.cjs` | 纯阶段变体规范化帮助器(`phaseVariants`、`buildRoadmapPhaseVariants`、`buildNotStartedPhaseVariants`),被 `verify.cjs` 用于 W006/W007 检查;无 I/O,无异步 | +| `verify-command-router.cjs` | `gsd-tools verify` 的轻量 CJS 子命令路由适配器 | +| `verify.cjs` | 计划结构、阶段完整性、参考、提交验证 | +| `workstream-inventory-builder.cjs` | 纯工作流清单投影构建器 | +| `workstream-inventory.cjs` | 共享工作流清单投影:状态字段、阶段/计划/摘要计数、路线图阶段计数和活跃标记 — 将纯投影委托给 `workstream-inventory-builder.cjs` 的轻量编排器 | +| `workstream-name-policy.cjs` | 规范的工作流名称验证(`isValidActiveWorkstreamName`、`hasInvalidPathSegment`、`validateWorkstreamName`)和 slug 规范化(`toWorkstreamSlug`) | +| `workstream.cjs` | 工作流增删改查、迁移、会话作用域活跃指针 | +| `worktree-safety.cjs` | Worktree 根目录解析和非破坏性清理策略决策;拥有 W017 健康检查逻辑 | + +[`docs/CLI-TOOLS.md`](CLI-TOOLS.md) 可能描述这些模块的子集;当其与文件系统不一致时,本表和目录清单为准。 + +--- + +## 钩子 (14 shipped) + +完整清单:`hooks/`。 + +| 钩子 | 事件 | 目的 | +|------|------|------| +| `gsd-statusline.js` | `statusLine` | 显示模型、任务、目录、上下文使用情况 | +| `gsd-context-monitor.js` | `PostToolUse` / `AfterTool` | 在剩余 35%/25% 时注入面向代理的上下文警告 | +| `gsd-check-update.js` | `SessionStart` | 后台检查新的 GSD 版本 | +| `gsd-check-update-worker.js` | (工作进程) | check-update 的后台工作进程帮助器 | +| `gsd-update-banner.js` | `SessionStart` | 当未使用 GSD statusline 时选择性地显示更新可用横幅(PR #2795) | +| `gsd-prompt-guard.js` | `PreToolUse` | 扫描 `.planning/` 写入中的提示注入模式(建议性) | +| `gsd-workflow-guard.js` | `PreToolUse` | 检测 GSD 工作流上下文之外的文件编辑(建议性,可选启用) | +| `gsd-read-guard.js` | `PreToolUse` | 防止对未读文件执行 Edit/Write 的建议性守卫 | +| `gsd-read-injection-scanner.js` | `PostToolUse` | 扫描工具 Read 结果中的提示注入模式(v1.36+,PR #2201) | +| `gsd-worktree-path-guard.js` | `PreToolUse` | 硬性阻止对 worktree 根目录之外绝对路径执行 Edit/Write/MultiEdit(PR #579,#260) | +| `gsd-session-state.sh` | `PostToolUse` | 基于 shell 运行时的会话状态跟踪 | +| `gsd-validate-commit.sh` | `PostToolUse` | 常规提交强制执行的提交验证 | +| `gsd-phase-boundary.sh` | `PostToolUse` | 工作流过渡的阶段边界检测 | +| `gsd-graphify-update.sh` | `PostToolUse` | 在主 HEAD 推进后自动重建知识图谱(可选启用,默认关闭 — #3347) | + +--- + +## 维护 + +- 当新的命令、代理、工作流、参考资料、CLI 模块或钩子发布时,请在发布前更新此处对应的章节。 +- `tests/` 下的漂移守卫测试(参见上方的"使用说明")断言每个已发布文件都在此清单中列举。未在此处有对应行的新文件将导致 CI 失败。 +- 当文件系统与 `docs/ARCHITECTURE.md` 的数量或精选子集文档(例如 `docs/AGENTS.md` 的主要名册)不一致时,本文件为准。 + +## 相关资料 + +- [命令](COMMANDS.md) — 面向用户的命令参考 +- [架构](ARCHITECTURE.md) — 功能面如何协同工作 +- [文档索引](README.md) diff --git a/docs/zh-CN/README.md b/docs/zh-CN/README.md index 3742214c7..2132cb38f 100644 --- a/docs/zh-CN/README.md +++ b/docs/zh-CN/README.md @@ -1,729 +1,69 @@ -
+# GSD Core 文档 -# GSD Core +文档按四个象限组织:**教程**通过实践帮助你学习,**操作指南**解决具体任务,**参考文档**提供权威信息,**概念说明**探讨设计理念与决策。 -**Git. Ship. Done.** - -**一个轻量级且强大的元提示、上下文工程和规格驱动开发系统,支持 Claude Code、OpenCode、Gemini CLI、Kilo、Codex、Copilot、Cursor、Windsurf、Antigravity、Augment、Trae 和 Cline。** - -**解决上下文衰减 —— 即 Claude 填充上下文窗口时发生的质量退化问题。** - -[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) -[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) -[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/gsd-core/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/gsd-core/actions/workflows/test.yml) -[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r) -[![X (Twitter)](https://img.shields.io/badge/X-@gsd__foundation-000000?style=for-the-badge&logo=x&logoColor=white)](https://x.com/gsd_foundation) -[![$GSD Token](https://img.shields.io/badge/$GSD-Dexscreener-1C1C1C?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgZmlsbD0iIzAwRkYwMCIvPjwvc3ZnPg==&logoColor=00FF00)](https://dexscreener.com/solana/dwudwjvan7bzkw9zwlbyv6kspdlvhwzrqy6ebk8xzxkv) -[![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) -[![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE) - -
- -```bash -npx @opengsd/gsd-core@latest -``` - -**支持 Mac、Windows 和 Linux。** - -
- -![GSD Install](../assets/terminal.svg) - -
- -*"如果你清楚自己想要什么,它真的会帮你构建出来。不忽悠。"* - -*"我试过 SpecKit、OpenSpec 和 Taskmaster —— 这是我用过的效果最好的。"* - -*"这是我用过的 Claude Code 最强大的扩展。没有过度设计。真的就是把事情做完。"* - -
- -**被 Amazon、Google、Shopify 和 Webflow 的工程师信赖使用。** - -[我为什么开发这个](#我为什么开发这个) · [工作原理](#工作原理) · [命令](#命令) · [为什么有效](#为什么有效) · [用户指南](USER-GUIDE.md) - -
+语言版本:[English](../README.md) · [Português (pt-BR)](../pt-BR/README.md) · [日本語](../ja-JP/README.md) · [简体中文](README.md) --- -## 我为什么开发这个 +## Tutorials -我是一名独立开发者。我不写代码 —— Claude Code 写。 - -其他规格驱动开发工具确实存在,比如 BMAD、Speckit... 但它们似乎都把事情搞得比实际需要的复杂得多(冲刺会议、故事点、干系人同步、回顾、Jira 工作流),或者缺乏对你正在构建的东西的真正大局理解。我不是一个 50 人的软件公司。我不想搞企业级表演。我只是个想构建出好用的东西的创意人。 - -所以我开发了 GSD。复杂性在系统内部,不在你的工作流里。幕后是:上下文工程、XML 提示格式、子代理编排、状态管理。你看到的是:几个命令,用就完了。 - -系统给 Claude 提供了它完成工作**以及**验证工作所需的一切。我信任这个工作流。它就是做得好。 - -这就是它的本质。没有企业级角色扮演的废话。只是一个让 Claude Code 稳定可靠地构建酷东西的极其有效的系统。 - -— **TÂCHES** +- [第一个项目](tutorials/your-first-project.md) — 从安装到首个已交付阶段,一条有保障的路径 +- [接入现有代码库](tutorials/onboarding-an-existing-codebase.md) — 将 GSD Core 引入已有项目的代码库 --- -Vibecoding 名声不好。你描述想要什么,AI 生成代码,结果得到不一致的垃圾,规模一大就崩。 +## How-to guides -GSD 解决了这个问题。它是让 Claude Code 变得可靠的上下文工程层。描述你的想法,让系统提取它需要知道的一切,然后让 Claude Code 开始工作。 +- [在你的运行时上安装](how-to/install-on-your-runtime.md) — 适用于全部 15 个受支持运行时的安装步骤 +- [讨论一个阶段](how-to/discuss-a-phase.md) — 在规划开始前记录实现决策 +- [规划一个阶段](how-to/plan-a-phase.md) — 执行调研、分解工作并验证计划质量 +- [执行一个阶段](how-to/execute-a-phase.md) — 使用全新上下文的子代理以并行波次运行计划 +- [验证并交付](how-to/verify-and-ship.md) — 审查已完成的工作、诊断失败并创建 PR +- [自主运行阶段](how-to/run-phases-autonomously.md) — 使用自主模式进行无人值守的阶段执行 +- [处理快速临时任务](how-to/handle-quick-and-fast-tasks.md) — 使用 `/gsd-quick` 和 `/gsd-fast` 处理阶段循环之外的临时工作 +- [配置模型配置文件](how-to/configure-model-profiles.md) — 在高质量、均衡和经济模型层级之间切换 +- [设置跨 AI 审查](how-to/set-up-cross-ai-review.md) — 配置第二个 AI 对主代理生成的代码进行审查 +- [使用工作流并行工作](how-to/work-in-parallel-with-workstreams.md) — 使用工作流同时运行独立的工作线 +- [使用工作空间隔离工作](how-to/isolate-work-with-workspaces.md) — 使用工作空间对实验性或高风险变更进行沙箱隔离 +- [调试失败的执行](how-to/debug-a-failed-execution.md) — 诊断并从中断或不完整的阶段执行中恢复 +- [探索与草图](how-to/spike-and-sketch.md) — 在提交计划之前,使用 `/gsd-spike` 和 `/gsd-sketch` 进行探索性工作 +- [设计 UI 阶段](how-to/design-a-ui-phase.md) — 使用 UI 阶段循环处理前端和视觉工作 +- [从追踪器 Issue 驱动 GSD](how-to/drive-gsd-from-a-tracker-issue.md) — 从 GitHub、Linear 或 Jira issue 启动一个阶段 +- [从 GSD 2 迁移](how-to/migrate-from-gsd-2.md) — 将现有的 GSD 2 项目升级到 GSD Core +- [更新 GSD](how-to/update-gsd.md) — 重新运行安装程序以获取最新版本 +- [恢复与故障排查](how-to/recover-and-troubleshoot.md) — 修复常见问题、重建上下文并卸载 --- -## 这个工具适合谁 +## Reference -想要描述需求然后正确构建出来的人 —— 不用假装自己在运营一个 50 人的工程组织。 - -内置的质量门禁能捕获真正的问题:模式漂移检测会标记缺少迁移的 ORM 变更,安全强制将验证锚定到威胁模型,范围缩减检测防止规划器默默丢弃你的需求。 +- [命令](COMMANDS.md) — 每个命令的标志和示例 +- [配置](CONFIGURATION.md) — 完整配置模式、模型配置文件、Git 分支策略 +- [CLI 工具](CLI-TOOLS.md) — `gsd-tools.cjs` 用于工作流和代理的编程式 API +- [功能特性](FEATURES.md) — 完整功能索引 +- [清单](INVENTORY.md) — 已安装的技能与界面映射 +- [STATE.md 模式](reference/state-md.md) — `.planning/STATE.md` 的逐字段参考 +- [CONTEXT.md 模式](reference/context-md.md) — `.planning/phases//CONTEXT.md` 的逐字段参考 +- [PLAN.md 模式](reference/plan-md.md) — `.planning/phases//PLAN.md` 的逐字段参考 +- [规划产物](reference/planning-artifacts.md) — 所有 `.planning/` 文件及其作用 --- -## 快速开始 +## Explanation -```bash -npx @opengsd/gsd-core@latest -``` - -安装程序会提示你选择: -1. **运行时** —— Claude Code、OpenCode、Gemini、Kilo、Codex 或全部 -2. **位置** —— 全局(所有项目)或本地(仅当前项目) - -验证安装: -- Claude Code / Gemini: `/gsd-help` -- OpenCode: `/gsd-help` -- Kilo: `/gsd-help` -- Codex: `$gsd-help` - -> [!NOTE] -> Codex 安装使用技能(`skills/gsd-*/SKILL.md`)而非自定义提示。 - -### 保持更新 - -GSD 快速迭代。定期更新: - -```bash -npx @opengsd/gsd-core@latest -``` - -
-非交互式安装(Docker、CI、脚本) - -```bash -# Claude Code -npx @opengsd/gsd-core --claude --global # 安装到 ~/.claude/ -npx @opengsd/gsd-core --claude --local # 安装到 ./.claude/ - -# OpenCode -npx @opengsd/gsd-core --opencode --global # 安装到 ~/.config/opencode/ - -# Gemini CLI -npx @opengsd/gsd-core --gemini --global # 安装到 ~/.gemini/ - -# Kilo -npx @opengsd/gsd-core --kilo --global # 安装到 ~/.config/kilo/ -npx @opengsd/gsd-core --kilo --local # 安装到 ./.kilo/ - -# Codex -npx @opengsd/gsd-core --codex --global # 安装到 ~/.codex/ -npx @opengsd/gsd-core --codex --local # 安装到 ./.codex/ - -# 所有运行时 -npx @opengsd/gsd-core --all --global # 安装到所有目录 -``` - -使用 `--global`(`-g`)或 `--local`(`-l`)跳过位置提示。 -使用 `--claude`、`--opencode`、`--gemini`、`--kilo`、`--codex` 或 `--all` 跳过运行时提示。 - -
- -
-开发安装 - -克隆仓库并本地运行安装程序: - -```bash -git clone https://github.com/open-gsd/gsd-core.git -cd gsd-core -node bin/install.js --claude --local -``` - -安装到 `./.claude/` 用于在贡献前测试修改。 - -
- -### 推荐:跳过权限模式 - -GSD 设计为无摩擦自动化。运行 Claude Code 时使用: - -```bash -claude --dangerously-skip-permissions -``` - -> [!TIP] -> 这是 GSD 的预期使用方式 —— 停下来 50 次批准 `date` 和 `git commit` 会失去意义。 - -
-替代方案:细粒度权限 - -如果你不想使用那个标志,在项目的 `.claude/settings.json` 中添加: - -```json -{ - "permissions": { - "allow": [ - "Bash(date:*)", - "Bash(echo:*)", - "Bash(cat:*)", - "Bash(ls:*)", - "Bash(mkdir:*)", - "Bash(wc:*)", - "Bash(head:*)", - "Bash(tail:*)", - "Bash(sort:*)", - "Bash(grep:*)", - "Bash(tr:*)", - "Bash(git add:*)", - "Bash(git commit:*)", - "Bash(git status:*)", - "Bash(git log:*)", - "Bash(git diff:*)", - "Bash(git tag:*)" - ] - } -} -``` - -
+- [上下文工程](explanation/context-engineering.md) — 上下文腐化如何形成,以及 GSD Core 如何防止它 +- [阶段循环](explanation/the-phase-loop.md) — 讨论 → 规划 → 执行 → 验证 → 交付循环的设计原理 +- [多代理编排](explanation/multi-agent-orchestration.md) — 子代理的生成、范围界定和协调方式 +- [安全模型](explanation/security-model.md) — 信任边界、权限和安全自动化 +- [架构](ARCHITECTURE.md) — 系统架构、代理模型和数据流 +- [讨论模式](workflow-discuss-mode.md) — `/gsd-discuss-phase` 的假设模式与访谈模式 +- [上下文监控](context-monitor.md) — 上下文窗口监控钩子架构 +- [Issue 驱动编排](issue-driven-orchestration.md) — 使用现有原语从追踪器 issue 驱动 GSD 的方案 --- -## 工作原理 +## Related -> **已有代码?** 先运行 `/gsd-map-codebase`。它会生成并行代理分析你的技术栈、架构、约定和关注点。然后 `/gsd-new-project` 就了解你的代码库了 —— 问题聚焦在你正在**添加**什么,规划会自动加载你的模式。 - -### 1. 初始化项目 - -``` -/gsd-new-project -``` - -一条命令,一个流程。系统: - -1. **提问** —— 问到完全理解你的想法为止(目标、约束、技术偏好、边缘情况) -2. **研究** —— 生成并行代理调查领域(可选但推荐) -3. **需求** —— 提取哪些是 v1、v2 和范围外 -4. **路线图** —— 创建映射到需求的阶段 - -你批准路线图。现在准备好构建了。 - -**创建:** `PROJECT.md`、`REQUIREMENTS.md`、`ROADMAP.md`、`STATE.md`、`.planning/research/` - ---- - -### 2. 讨论阶段 - -``` -/gsd-discuss-phase 1 -``` - -**这是你塑造实现方式的地方。** - -你的路线图每个阶段有一两句话。这不足以按照**你**想象的方式构建东西。这一步在研究或规划之前捕获你的偏好。 - -系统分析阶段并根据正在构建的内容识别灰色区域: - -- **视觉功能** → 布局、密度、交互、空状态 -- **API/CLI** → 响应格式、标志、错误处理、详细程度 -- **内容系统** → 结构、语气、深度、流程 -- **组织任务** → 分组标准、命名、重复项、例外 - -对于你选择的每个领域,它会问到让你满意为止。输出 —— `CONTEXT.md` —— 直接输入接下来的两个步骤: - -1. **研究员读取它** —— 知道要调查什么模式("用户想要卡片布局" → 研究卡片组件库) -2. **规划者读取它** —— 知道哪些决策已锁定("无限滚动已决定" → 规划包含滚动处理) - -你在这里走得越深,系统构建的就越是你真正想要的。跳过它你会得到合理的默认值。使用它你会得到**你的**愿景。 - -**创建:** `{阶段号}-CONTEXT.md` - ---- - -### 3. 规划阶段 - -``` -/gsd-plan-phase 1 -``` - -系统: - -1. **研究** —— 调查如何实现这个阶段,由你的 CONTEXT.md 决策指导 -2. **规划** —— 创建 2-3 个带有 XML 结构的原子任务计划 -3. **验证** —— 根据需求检查计划,循环直到通过 - -每个计划足够小,可以在全新的上下文窗口中执行。没有退化,没有"我现在会更简洁"。 - -**创建:** `{阶段号}-RESEARCH.md`、`{阶段号}-{N}-PLAN.md` - ---- - -### 4. 执行阶段 - -``` -/gsd-execute-phase 1 -``` - -系统: - -1. **按波次运行计划** —— 可能的话并行,有依赖时顺序 -2. **每个计划全新上下文** —— 200k token 纯粹用于实现,零累积垃圾 -3. **每个任务提交** —— 每个任务都有自己的原子提交 -4. **根据目标验证** —— 检查代码库是否交付了阶段承诺的内容 - -离开,回来看到完成的工作和干净的 git 历史。 - -**波次执行工作原理:** - -计划根据依赖关系分组到"波次"。在每个波次内,计划并行运行。波次顺序执行。 - -``` -┌─────────────────────────────────────────────────────────────────────┐ -│ 阶段执行 │ -├─────────────────────────────────────────────────────────────────────┤ -│ │ -│ 波次 1 (并行) 波次 2 (并行) 波次 3 │ -│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ -│ │ 计划 01 │ │ 计划 02 │ → │ 计划 03 │ │ 计划 04 │ → │ 计划 05 │ │ -│ │ │ │ │ │ │ │ │ │ │ │ -│ │ 用户 │ │ 产品 │ │ 订单 │ │ 购物车 │ │ 结账 │ │ -│ │ 模型 │ │ 模型 │ │ API │ │ API │ │ UI │ │ -│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ -│ │ │ ↑ ↑ ↑ │ -│ └───────────┴──────────────┴───────────┘ │ │ -│ 依赖关系: 计划 03 需要计划 01 │ │ -│ 计划 04 需要计划 02 │ │ -│ 计划 05 需要计划 03 + 04 │ │ -│ │ -└─────────────────────────────────────────────────────────────────────┘ -``` - -**为什么波次重要:** -- 独立计划 → 同一波次 → 并行运行 -- 依赖计划 → 后续波次 → 等待依赖 -- 文件冲突 → 顺序计划或同一计划 - -这就是为什么"垂直切片"(计划 01: 用户功能端到端)比"水平分层"(计划 01: 所有模型,计划 02: 所有 API)并行化更好。 - -**创建:** `{阶段号}-{N}-SUMMARY.md`、`{阶段号}-VERIFICATION.md` - ---- - -### 5. 验证工作 - -``` -/gsd-verify-work 1 -``` - -**这是你确认它真的有效的地方。** - -自动化验证检查代码存在和测试通过。但功能是否按你预期的方式**工作**?这是你使用它的机会。 - -系统: - -1. **提取可测试交付物** —— 你现在应该能做什么 -2. **逐个引导你** —— "你能用邮箱登录吗?" 是/否,或描述有什么问题 -3. **自动诊断失败** —— 生成调试代理找根本原因 -4. **创建已验证的修复计划** —— 准备立即重新执行 - -如果一切通过,继续。如果有东西坏了,不用手动调试 —— 只需再次运行 `/gsd-execute-phase`,使用它创建的修复计划。 - -**创建:** `{阶段号}-UAT.md`,如果发现问题则创建修复计划 - ---- - -### 6. 循环 → 完成 → 下一个里程碑 - -``` -/gsd-discuss-phase 2 -/gsd-plan-phase 2 -/gsd-execute-phase 2 -/gsd-verify-work 2 -... -/gsd-complete-milestone -/gsd-new-milestone -``` - -循环 **讨论 → 规划 → 执行 → 验证** 直到里程碑完成。 - -如果你想在讨论期间更快速地输入,使用 `/gsd-discuss-phase --batch` 一次回答一组小问题,而不是一个一个来。使用 `--chain` 可以自动链式执行从讨论到规划+执行,中间不停顿。 - -每个阶段都会获得你的输入(讨论)、适当的研究(规划)、干净的执行(执行)和人工验证(验证)。上下文保持新鲜。质量保持高水平。 - -当所有阶段完成后,`/gsd-complete-milestone` 归档里程碑并标记发布。 - -然后 `/gsd-new-milestone` 开始下一个版本 —— 与 `new-project` 相同的流程,但针对你现有的代码库。你描述接下来想构建什么,系统研究领域,你界定需求范围,它创建新的路线图。每个里程碑是一个干净的周期:定义 → 构建 → 发布。 - ---- - -### 快速模式 - -``` -/gsd-quick -``` - -**用于不需要完整规划的临时任务。** - -快速模式给你 GSD 保证(原子提交、状态跟踪)和更快的路径: - -- **相同代理** —— 规划者 + 执行者,相同质量 -- **跳过可选步骤** —— 默认无研究、无计划检查器、无验证器 -- **独立跟踪** —— 存放在 `.planning/quick/`,不是阶段 - -**`--discuss` 标志:** 规划前的轻量讨论,发现灰色地带。 - -**`--research` 标志:** 规划前启动聚焦研究员。调查实现方法、库选项和陷阱。当你不确定如何处理任务时使用。 - -**`--full` 标志:** 启用所有阶段 —— 讨论 + 研究 + 计划检查 + 验证。快速任务形式的完整 GSD 管道。 - -**`--validate` 标志:** 仅启用计划检查 + 执行后验证(之前 `--full` 的行为)。 - -标志可组合:`--discuss --research --validate` 提供讨论 + 研究 + 计划检查 + 验证。 - -``` -/gsd-quick -> 你想做什么?"在设置中添加深色模式切换" -``` - -**创建:** `.planning/quick/001-add-dark-mode-toggle/PLAN.md`、`SUMMARY.md` - ---- - -## 为什么有效 - -### 上下文工程 - -Claude Code 非常强大,**如果你**给它需要的上下文。大多数人没有。 - -GSD 为你处理: - -| 文件 | 作用 | -|------|------| -| `PROJECT.md` | 项目愿景,始终加载 | -| `research/` | 生态知识(技术栈、功能、架构、陷阱) | -| `REQUIREMENTS.md` | 界定 v1/v2 需求及阶段可追溯性 | -| `ROADMAP.md` | 你要去哪里,完成了什么 | -| `STATE.md` | 决策、阻塞项、位置 —— 跨会话记忆 | -| `PLAN.md` | 带有 XML 结构和验证步骤的原子任务 | -| `SUMMARY.md` | 发生了什么,改了什么,提交到历史 | -| `todos/` | 为后续工作捕获的想法和任务 | - -基于 Claude 质量退化的位置设置大小限制。保持在限制内,获得一致的卓越。 - -### XML 提示格式 - -每个计划都是为 Claude 优化的结构化 XML: - -```xml - - 创建登录端点 - src/app/api/auth/login/route.ts - - 使用 jose 处理 JWT(不用 jsonwebtoken - CommonJS 问题)。 - 根据 users 表验证凭据。 - 成功时返回 httpOnly cookie。 - - curl -X POST localhost:3000/api/auth/login 返回 200 + Set-Cookie - 有效凭据返回 cookie,无效返回 401 - -``` - -精确的指令。不猜测。内置验证。 - -### 多代理编排 - -每个阶段使用相同模式:轻量编排器生成专门代理,收集结果,路由到下一步。 - -| 阶段 | 编排器做 | 代理做 | -|-------|------------------|-----------| -| 研究 | 协调,呈现发现 | 4 个并行研究员调查技术栈、功能、架构、陷阱 | -| 规划 | 验证,管理迭代 | 规划者创建计划,检查器验证,循环直到通过 | -| 执行 | 分组为波次,跟踪进度 | 执行者并行实现,每个有全新 200k 上下文 | -| 验证 | 呈现结果,路由下一步 | 验证器根据目标检查代码库,调试器诊断失败 | - -编排器从不做重活。它生成代理,等待,整合结果。 - -**结果:** 你可以运行整个阶段 —— 深度研究、多个计划创建和验证、跨并行执行者编写数千行代码、根据目标自动化验证 —— 你的主上下文窗口保持在 30-40%。工作在全新的子代理上下文中完成。你的会话保持快速和响应。 - -### 原子 Git 提交 - -每个任务在完成后立即获得自己的提交: - -```bash -abc123f docs(08-02): 完成用户注册计划 -def456g feat(08-02): 添加邮箱确认流程 -hij789k feat(08-02): 实现密码哈希 -lmn012o feat(08-02): 创建注册端点 -``` - -> [!NOTE] -> **好处:** Git bisect 找到确切的失败任务。每个任务独立可回滚。未来会话中 Claude 的清晰历史。AI 自动化工作流中更好的可观察性。 - -每个提交都是精确的、可追溯的、有意义的。 - -### 模块化设计 - -- 向当前里程碑添加阶段 -- 在阶段之间插入紧急工作 -- 完成里程碑并重新开始 -- 调整计划而不重建一切 - -你永远不会被锁定。系统会适应。 - ---- - -## 命令 - -### 核心工作流 - -| 命令 | 作用 | -|---------|--------------| -| `/gsd-new-project [--auto]` | 完整初始化:提问 → 研究 → 需求 → 路线图 | -| `/gsd-discuss-phase [N] [--auto] [--chain] [--power]` | 在规划前捕获实现决策(`--chain` 自动链式执行规划+执行,`--power` 文件批量输入) | -| `/gsd-plan-phase [N] [--auto]` | 阶段的研究 + 规划 + 验证 | -| `/gsd-execute-phase ` | 在并行波次中执行所有计划,完成后验证 | -| `/gsd-verify-work [N]` | 手动用户验收测试 ¹ | -| `/gsd-audit-milestone` | 验证里程碑达到了其完成定义 | -| `/gsd-complete-milestone` | 归档里程碑,标记发布 | -| `/gsd-new-milestone [name]` | 开始下一个版本:提问 → 研究 → 需求 → 路线图 | - -### 导航 - -| 命令 | 作用 | -|---------|--------------| -| `/gsd-progress` | 我在哪?接下来做什么? | -| `/gsd-help` | 显示所有命令和使用指南 | -| `/gsd-update` | 更新 GSD 并预览变更日志 | - -### 现有代码库 - -| 命令 | 作用 | -|---------|--------------| -| `/gsd-map-codebase` | 在 new-project 之前分析现有代码库 | - -### 阶段管理 - -| 命令 | 作用 | -|---------|--------------| -| `/gsd-phase` | 向路线图追加阶段 | -| `/gsd-phase --insert [N]` | 在阶段之间插入紧急工作 | -| `/gsd-phase --remove [N]` | 删除未来阶段,重新编号 | -| `/gsd-discuss-phase --assumptions [N]` | 规划前查看 Claude 的预期方法 | -| `/gsd-autonomous [--from N] [--to N] [--only N]` | 自主执行所有剩余阶段(`--to N` 执行到阶段 N 停止,`--only N` 只执行单个阶段) | -| `/gsd-manager --analyze-deps` | 检测阶段间依赖关系并建议 ROADMAP.md 的 `Depends on` 条目 | - -### 会话 - -| 命令 | 作用 | -|---------|--------------| -| `/gsd-pause-work` | 阶段中途停止时创建交接 | -| `/gsd-resume-work` | 从上次会话恢复 | - -### 工具 - -| 命令 | 作用 | -|---------|--------------| -| `/gsd-settings` | 配置模型配置文件和工作流代理 | -| `/gsd-config --profile ` | 切换模型配置文件(quality/balanced/budget/inherit) | -| `/gsd-capture [desc]` | 捕获想法留待后用 | -| `/gsd-capture --list` | 列出待处理事项 | -| `/gsd-debug [desc] [--diagnose]` | 带持久状态的系统化调试(`--diagnose` 仅诊断不修复) | -| `/gsd-quick [--full] [--discuss] [--research]` | 用 GSD 保证执行临时任务(`--full` 启用全部阶段,`--discuss` 先收集上下文,`--research` 规划前调查方法) | -| `/gsd-health [--repair]` | 验证 `.planning/` 目录完整性,用 `--repair` 自动修复 | - -¹ 由 Reddit 用户 OracleGreyBeard 贡献 - ---- - -## 配置 - -GSD 在 `.planning/config.json` 中存储项目设置。在 `/gsd-new-project` 期间配置或稍后用 `/gsd-settings` 更新。完整配置模式、工作流开关、git 分支选项和每个代理的模型分解,请参阅[用户指南](USER-GUIDE.md#配置参考)。 - -### 核心设置 - -| 设置 | 选项 | 默认值 | 控制内容 | -|---------|---------|---------|------------------| -| `mode` | `yolo`, `interactive` | `interactive` | 自动批准 vs 每步确认 | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | 阶段粒度 —— 范围切分多细(阶段 × 计划) | - -### 模型配置 - -控制每个代理使用哪个 Claude 模型。平衡质量和 token 消耗。 - -| 配置 | 规划 | 执行 | 验证 | -|---------|----------|-----------|--------------| -| `quality` | Opus | Opus | Sonnet | -| `balanced`(默认) | Opus | Sonnet | Sonnet | -| `budget` | Sonnet | Sonnet | Haiku | - -切换配置: -``` -/gsd-config --profile budget -``` - -或通过 `/gsd-settings` 配置。 - -### 工作流代理 - -这些在规划/执行期间生成额外代理。它们提高质量但增加 token 和时间。 - -| 设置 | 默认值 | 作用 | -|---------|---------|--------------| -| `workflow.research` | `true` | 每个阶段规划前研究领域 | -| `workflow.plan_check` | `true` | 执行前验证计划是否达到阶段目标 | -| `workflow.verifier` | `true` | 执行后确认必须项已交付 | -| `workflow.auto_advance` | `false` | 自动链式执行 讨论 → 规划 → 执行 | -| `workflow.use_worktrees` | `true` | `false` 时禁用 git worktree 隔离 | -| `security_enforcement` | `true` | 启用威胁模型安全验证 | -| `response_language` | (无) | 代理响应的语言代码(如 `"zh"`、`"ja"`、`"ko"`) | - -使用 `/gsd-settings` 切换这些,或每次调用时覆盖: -- `/gsd-plan-phase --skip-research` -- `/gsd-plan-phase --skip-verify` - -### 执行 - -| 设置 | 默认值 | 控制内容 | -|---------|---------|------------------| -| `parallelization.enabled` | `true` | 同时运行独立计划 | -| `planning.commit_docs` | `true` | 在 git 中跟踪 `.planning/` | - -### Git 分支 - -控制 GSD 在执行期间如何处理分支。 - -| 设置 | 选项 | 默认值 | 作用 | -|---------|---------|---------|--------------| -| `git.branching_strategy` | `none`, `phase`, `milestone` | `none` | 分支创建策略 | -| `git.phase_branch_template` | 字符串 | `gsd/phase-{phase}-{slug}` | 阶段分支模板 | -| `git.milestone_branch_template` | 字符串 | `gsd/{milestone}-{slug}` | 里程碑分支模板 | - -**策略:** -- **`none`** —— 提交到当前分支(默认 GSD 行为) -- **`phase`** —— 每个阶段创建一个分支,阶段完成时合并 -- **`milestone`** —— 为整个里程碑创建一个分支,完成时合并 - -在里程碑完成时,GSD 提供 squash 合并(推荐)或带历史合并。 - ---- - -## 安全 - -### 保护敏感文件 - -GSD 的代码库映射和分析命令读取文件以了解你的项目。**保护包含密钥的文件**,将它们添加到 Claude Code 的拒绝列表: - -1. 打开 Claude Code 设置(`.claude/settings.json` 或全局) -2. 将敏感文件模式添加到拒绝列表: - -```json -{ - "permissions": { - "deny": [ - "Read(.env)", - "Read(.env.*)", - "Read(**/secrets/*)", - "Read(**/*credential*)", - "Read(**/*.pem)", - "Read(**/*.key)" - ] - } -} -``` - -这完全阻止 Claude 读取这些文件,无论你运行什么命令。 - -> [!IMPORTANT] -> GSD 包含内置保护以防止提交密钥,但纵深防御是最佳实践。拒绝读取敏感文件作为第一道防线。 - ---- - -## 故障排除 - -**安装后找不到命令?** -- 重启运行时以重新加载命令/技能 -- 验证文件是否存在于 `~/.claude/commands/gsd/`(全局)或 `./.claude/commands/gsd/`(本地) -- 对于 Codex,验证技能是否存在于 `~/.codex/skills/gsd-*/SKILL.md`(全局)或 `./.codex/skills/gsd-*/SKILL.md`(本地) - -**命令没有按预期工作?** -- 运行 `/gsd-help` 验证安装 -- 重新运行 `npx @opengsd/gsd-core` 重新安装 - -**更新到最新版本?** -```bash -npx @opengsd/gsd-core@latest -``` - -**使用 Docker 或容器化环境?** - -如果用波浪号路径(`~/.claude/...`)读取文件失败,在安装前设置 `CLAUDE_CONFIG_DIR`: -```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global -``` -这确保使用绝对路径而不是 `~`,后者在容器中可能无法正确展开。 - -### 卸载 - -完全删除 GSD: - -```bash -# 全局安装 -npx @opengsd/gsd-core --claude --global --uninstall -npx @opengsd/gsd-core --opencode --global --uninstall -npx @opengsd/gsd-core --kilo --global --uninstall -npx @opengsd/gsd-core --codex --global --uninstall - -# 本地安装(当前项目) -npx @opengsd/gsd-core --claude --local --uninstall -npx @opengsd/gsd-core --opencode --local --uninstall -npx @opengsd/gsd-core --kilo --local --uninstall -npx @opengsd/gsd-core --codex --local --uninstall -``` - -这删除所有 GSD 命令、代理、钩子和设置,同时保留你的其他配置。 - ---- - -## 社区移植 - -OpenCode、Gemini CLI、Kilo 和 Codex 现在通过 `npx @opengsd/gsd-core` 原生支持。 - -这些社区移植开创了多运行时支持: - -| 项目 | 平台 | 描述 | -|---------|----------|-------------| -| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | OpenCode | 原始 OpenCode 适配 | -| gsd-gemini (已归档) | Gemini CLI | 由 uberfuzzy 开发的原始 Gemini 适配 | - ---- - -## Star 历史 - - - - - - Star History Chart - - - ---- - -## 许可证 - -MIT 许可证。详见 [LICENSE](../LICENSE)。 - ---- - -
- -**Claude Code 很强大。GSD 让它可靠。** - -
+- [根目录 README](../README.md) — 首页、快速开始和文档概览 +- [变更日志](../../CHANGELOG.md) — 发布历史 diff --git a/docs/zh-CN/USER-GUIDE.md b/docs/zh-CN/USER-GUIDE.md index e3bba7ca1..51610bf8b 100644 --- a/docs/zh-CN/USER-GUIDE.md +++ b/docs/zh-CN/USER-GUIDE.md @@ -1,52 +1,124 @@ # GSD 用户指南 -工作流、故障排除和配置的详细参考。快速入门设置请参阅 [README](README.md)。 +GSD Core 的叙述性辅助指南——从这里开始了解系统全貌,然后按链接进入各专项文档。 + +> **GSD Core 的文档按照 [Diataxis](https://diataxis.fr) 框架组织。** +> 按目标浏览:[教程](README.md#tutorials) · [操作指南](README.md#how-to-guides) · [参考手册](README.md#reference) · [说明](README.md#explanation) · [文档索引](README.md) --- ## 目录 -- [工作流图解](#工作流图解) -- [命令参考](#命令参考) -- [配置参考](#配置参考) -- [使用示例](#使用示例) -- [故障排除](#故障排除) -- [恢复快速参考](#恢复快速参考) +- [斜杠命令形式](#slash-command-forms-hyphen-vs-colon) +- [命名空间路由入门](#namespace-routing-primer-gsdnamespace-v140) +- [项目生命周期概览](#project-lifecycle-overview) +- [工作流程图](#workflow-diagrams) +- [UI 设计契约](#ui-design-contract) +- [探针与草图](#spiking--sketching) +- [待办事项与线程](#backlog--threads) +- [工作流与工作区](#workstreams--workspaces) +- [安全](#security) +- [使用示例](#usage-examples) +- [故障排查](#troubleshooting) +- [快速恢复参考](#recovery-quick-reference) +- [项目文件结构](#project-file-structure) +- [相关资源](#related) + +如需从 GitHub / Linear / Jira issue 直接驱动 GSD,请参阅 +[issue-driven-orchestration](issue-driven-orchestration.md) 指南——该指南将跟踪器 issue +映射到工作区 → 讨论 → 计划 → 执行 → 验证 → 审查 → 发布的循环,使用现有的 GSD 基础功能实现。 --- -## 工作流图解 +## 斜杠命令形式(连字符 vs 冒号) + +GSD 向所有支持的运行时提供**同一套技能**,但有两种斜杠拼写方式: + +- **连字符形式** — `/gsd-command-name` — 供 Claude Code、Copilot、OpenCode、Kilo、Cursor、Windsurf、Augment、Antigravity 和 Trae 使用。 +- **冒号形式** — `/gsd:command-name` — **仅供 Gemini CLI 使用**。Gemini 将每个插件的命令置于插件 ID 的命名空间下,因此安装时会在 `--gemini` 安装过程中将所有正文引用和命令文件改写为冒号形式。 + +无需手动选择——安装器会为您所针对的每个运行时写入正确形式。在 Gemini 终端上阅读演示时,将每个斜杠命令中 `gsd` 后的连字符替换为冒号即可。 + +## 命名空间路由入门(`gsd:`,v1.40) + +v1.40 提供了六个**命名空间元技能**,作为分层路由的第一阶段入口——它们将贪婪技能列举的 token 成本保持在较低水平(6 个路由器约 120 个 token,而扁平列举 86 个技能约需 2,150 个 token),同时每个具体子技能仍可直接调用。每个命名空间路由器的正文包含一张路由表,将您的意图映射到正确的具体子技能。 + +| 命名空间 | 路由器 | 路由目标 | +|-----------|--------|-----------| +| 阶段流水线 | `/gsd-workflow` | discuss / plan / execute / verify / phase / progress | +| 项目生命周期 | `/gsd-project` | milestones, audits, summary | +| 质量关卡 | `/gsd-quality` | code review, debug, audit, security, eval, ui | +| 代码库情报 | `/gsd-context` | map, graphify, docs, learnings | +| 管理 | `/gsd-manage` | config, workspace, workstreams, thread, update, ship, inbox | +| 探索与捕获 | `/gsd-ideate` | explore, sketch, spike, spec, capture | + +您几乎不需要亲自输入命名空间路由器。它们的价值在于为模型提供发现正确子技能的路由层——其存在使系统提示只需列出 6 条而非 86 条。如果您已经知道具体命令(例如 `/gsd-plan-phase`),可直接调用。 + +--- + +## 项目生命周期概览 + +GSD 核心循环为:**discuss → plan → execute → verify → ship**,每个阶段重复一次。包括示例输出、创建哪些文件以及所有生效标志的完整逐步演练,请参阅专项教程。 + +参见 [您的第一个项目](tutorials/your-first-project.md)。 + +在开始新里程碑之前对现有代码库进行引导,请参见 [引导现有代码库](tutorials/onboarding-an-existing-codebase.md)。 + +**相关标志速览:** + +| 标志 | 命令 | 使用场景 | +| ---- | ------- | ----------- | +| `--auto` | `/gsd-new-project` | 跳过交互式问题,从 PRD 文件导入 | +| `--research` | `/gsd-quick` | 为临时任务添加研究 Agent | +| `--validate` | `/gsd-quick` | 添加计划检查和执行后验证 | +| `--chain` | `/gsd-discuss-phase` | 自动链式运行 discuss → plan → execute 而不中断 | +| `--skip-research` | `/gsd-plan-phase` | 在领域已熟悉时跳过研究 Agent | +| `--draft` | `/gsd-ship` | 创建草稿 PR 而非待审查 PR | + +完整命令参考(含所有标志)请参阅 [`docs/COMMANDS.md`](COMMANDS.md)。配置选项(模型配置文件、工作流 Agent、git 分支策略)请参阅 [`docs/CONFIGURATION.md`](CONFIGURATION.md)。 + +--- + +## 工作流程图 ### 完整项目生命周期 -``` +```text ┌──────────────────────────────────────────────────┐ - │ 新建项目 │ + │ NEW PROJECT │ │ /gsd-new-project │ - │ 提问 -> 研究 -> 需求 -> 路线图 │ + │ Questions -> Research -> Requirements -> Roadmap│ └─────────────────────────┬────────────────────────┘ │ ┌──────────────▼─────────────┐ - │ 每个阶段: │ + │ FOR EACH PHASE: │ │ │ │ ┌────────────────────┐ │ - │ │ /gsd-discuss-phase │ │ <- 锁定偏好 + │ │ /gsd-discuss-phase │ │ <- Lock in preferences │ └──────────┬─────────┘ │ │ │ │ │ ┌──────────▼─────────┐ │ - │ │ /gsd-plan-phase │ │ <- 研究 + 规划 + 验证 + │ │ /gsd-ui-phase │ │ <- Design contract (frontend) │ └──────────┬─────────┘ │ │ │ │ │ ┌──────────▼─────────┐ │ - │ │ /gsd-execute-phase │ │ <- 并行执行 + │ │ /gsd-plan-phase │ │ <- Research + Plan + Verify │ └──────────┬─────────┘ │ │ │ │ │ ┌──────────▼─────────┐ │ - │ │ /gsd-verify-work │ │ <- 手动 UAT + │ │ /gsd-execute-phase │ │ <- Parallel execution │ └──────────┬─────────┘ │ │ │ │ - │ 下一阶段?────────────┘ - │ │ 否 + │ ┌──────────▼─────────┐ │ + │ │ /gsd-verify-work │ │ <- Manual UAT + │ └──────────┬─────────┘ │ + │ │ │ + │ ┌──────────▼─────────┐ │ + │ │ /gsd-ship │ │ <- Create PR (optional) + │ └──────────┬─────────┘ │ + │ │ │ + │ Next Phase?────────────┘ + │ │ No └─────────────┼──────────────┘ │ ┌───────────────▼──────────────┐ @@ -54,463 +126,761 @@ │ /gsd-complete-milestone │ └───────────────┬──────────────┘ │ - 另一个里程碑? + Another milestone? │ │ - 是 否 -> 完成! + Yes No -> Done! │ ┌───────▼──────────────┐ │ /gsd-new-milestone │ └──────────────────────┘ ``` -### 规划代理协调 +### 计划 Agent 协调 -``` +```text /gsd-plan-phase N │ - ├── 阶段研究员 (x4 并行) - │ ├── 技术栈研究员 - │ ├── 功能研究员 - │ ├── 架构研究员 - │ └── 陷阱研究员 + ├── Phase Researcher (x4 parallel) + │ ├── Stack researcher + │ ├── Features researcher + │ ├── Architecture researcher + │ └── Pitfalls researcher │ │ │ ┌──────▼──────┐ │ │ RESEARCH.md │ │ └──────┬──────┘ │ │ │ ┌──────▼──────┐ - │ │ 规划者 │ <- 读取 PROJECT.md, REQUIREMENTS.md, + │ │ Planner │ <- Reads PROJECT.md, REQUIREMENTS.md, │ │ │ CONTEXT.md, RESEARCH.md │ └──────┬──────┘ │ │ │ ┌──────▼───────────┐ ┌────────┐ - │ │ 计划检查器 │────>│ 通过? │ + │ │ Plan Checker │────>│ PASS? │ │ └──────────────────┘ └───┬────┘ │ │ - │ 是 │ 否 + │ Yes │ No │ │ │ │ - │ │ └───┘ (循环,最多 3 次) + │ │ └───┘ (loop, up to 3x) │ │ │ ┌─────▼──────┐ - │ │ PLAN 文件 │ + │ │ PLAN files │ │ └────────────┘ - └── 完成 + └── Done ``` -### 验证架构 (Nyquist 层) +### 验证架构(奈奎斯特层) -在 plan-phase 研究期间,GSD 现在在任何代码编写之前将自动化测试覆盖率映射到每个阶段需求。这确保当 Claude 的执行者提交任务时,反馈机制已经存在可以在几秒钟内验证它。 +在计划阶段研究期间,GSD 会在编写任何代码之前将自动化测试覆盖率映射到每个阶段的需求上。研究者会检测您现有的测试基础设施,将每个需求映射到特定的测试命令,并识别在实施开始前必须创建的测试脚手架(Wave 0 任务)。计划检查器将此作为第 8 个验证维度执行:缺少自动化验证命令的任务计划将不会被批准。 -研究员检测你现有的测试基础设施,将每个需求映射到特定的测试命令,并识别在实现开始之前必须创建的任何测试脚手架(波次 0 任务)。 +**输出:** `{phase}-VALIDATION.md` — 阶段的反馈契约。 -计划检查器将其强制作为第 8 个验证维度:缺少自动化验证命令的计划将不会被批准。 +**禁用:** 在 `/gsd-settings` 中将 `workflow.nyquist_validation: false` 设置为 false,适用于测试基础设施不是重点的快速原型阶段。 -**输出:** `{阶段}-VALIDATION.md` —— 阶段的反馈契约。 +### 追溯验证(`/gsd-validate-phase`) -**禁用:** 在 `/gsd-settings` 中设置 `workflow.nyquist_validation: false`,用于测试基础设施不是重点的快速原型阶段。 +对于在奈奎斯特验证出现之前执行的阶段,或仅有传统测试套件的现有代码库,可追溯审计并填补覆盖缺口: -### 追溯验证 (`/gsd-validate-phase`) - -对于在 Nyquist 验证存在之前执行的阶段,或只有传统测试套件的现有代码库,追溯审计并填补覆盖缺口: - -``` +```text /gsd-validate-phase N | - +-- 检测状态 (VALIDATION.md 存在? SUMMARY.md 存在?) + +-- Detect state (VALIDATION.md exists? SUMMARY.md exists?) | - +-- 发现: 扫描实现,将需求映射到测试 + +-- Discover: scan implementation, map requirements to tests | - +-- 分析缺口: 哪些需求缺少自动化验证? + +-- Analyze gaps: which requirements lack automated verification? | - +-- 呈现缺口计划供审批 + +-- Present gap plan for approval | - +-- 生成审计器: 生成测试,运行,调试(最多 3 次尝试) + +-- Spawn auditor: generate tests, run, debug (max 3 attempts) | - +-- 更新 VALIDATION.md + +-- Update VALIDATION.md | - +-- COMPLIANT -> 所有需求都有自动化检查 - +-- PARTIAL -> 部分缺口升级为仅手动 + +-- COMPLIANT -> all requirements have automated checks + +-- PARTIAL -> some gaps escalated to manual-only ``` -审计器从不修改实现代码 —— 只修改测试文件和 VALIDATION.md。如果测试发现实现 bug,它会标记为升级让你处理。 +审计器永不修改实现代码——仅修改测试文件和 VALIDATION.md。如果测试揭示了实现中的错误,将以升级问题的形式标记供您处理。 -**何时使用:** 在启用了 Nyquist 之前规划的阶段执行后,或在 `/gsd-audit-milestone` 发现 Nyquist 合规缺口后。 +### 假设讨论模式 + +默认情况下,`/gsd-discuss-phase` 会就您的实现偏好提出开放性问题。假设模式将此倒转:GSD 首先读取您的代码库,提出关于如何构建该阶段的结构化假设,然后仅就修正内容提问。 + +**启用:** 通过 `/gsd-settings` 将 `workflow.discuss_mode` 设置为 `'assumptions'`。 + +完整的讨论模式参考请参阅 [docs/workflow-discuss-mode.md](workflow-discuss-mode.md)。 + +### 决策覆盖关卡 + +讨论阶段将实现决策以编号项(`- **D-01:** …`)的形式捕获到 CONTEXT.md 的 `` 块中。两个关卡确保这些决策能延续到计划和交付代码中。 + +**计划阶段转换关卡(阻塞)。** 计划完成后,GSD 会拒绝将阶段标记为已计划,直到每个可跟踪决策出现在至少一个计划的 `must_haves`、`truths` 或正文中。 + +**验证阶段验证关卡(非阻塞)。** 在验证期间,GSD 会在计划、SUMMARY.md、修改文件和最近提交消息中搜索每个可跟踪决策。遗漏项以警告章节的形式记录到 VERIFICATION.md;验证状态不变。 + +**将决策排除在外。** 将其移至 `` 内的 `### Claude's Discretion` 标题下,或添加标签:`- **D-08 [informational]:** …`、`- **D-09 [folded]:** …`、`- **D-10 [deferred]:** …`。 + +**禁用关卡。** 在 `.planning/config.json` 中设置 `workflow.context_coverage_gate: false`(或通过 `/gsd-settings`)。默认值为 `true`。 ### 执行波次协调 -``` +```text /gsd-execute-phase N │ - ├── 分析计划依赖 + ├── Analyze plan dependencies │ - ├── 波次 1 (独立计划): - │ ├── 执行者 A (全新 200K 上下文) -> 提交 - │ └── 执行者 B (全新 200K 上下文) -> 提交 + ├── Wave 1 (independent plans): + │ ├── Executor A (fresh 200K context) -> commit + │ └── Executor B (fresh 200K context) -> commit │ - ├── 波次 2 (依赖波次 1): - │ └── 执行者 C (全新 200K 上下文) -> 提交 + ├── Wave 2 (depends on Wave 1): + │ └── Executor C (fresh 200K context) -> commit │ - └── 验证器 - └── 根据阶段目标检查代码库 - │ - ├── 通过 -> VERIFICATION.md (成功) - └── 失败 -> 问题记录到 /gsd-verify-work -``` - -### 现有代码库工作流 - -``` - /gsd-map-codebase - │ - ├── 技术栈映射器 -> codebase/STACK.md - ├── 架构映射器 -> codebase/ARCHITECTURE.md - ├── 约定映射器 -> codebase/CONVENTIONS.md - └── 关注点映射器 -> codebase/CONCERNS.md - │ - ┌───────▼──────────┐ - │ /gsd-new-project │ <- 问题聚焦于你正在添加的内容 - └──────────────────┘ + └── Verifier + ├── Check codebase against phase goals + ├── Test quality audit (disabled tests, circular patterns, assertion strength) + │ + ├── PASS -> VERIFICATION.md (success) + └── FAIL -> Issues logged for /gsd-verify-work ``` --- -## 命令参考 +## UI 设计契约 -### 核心工作流 +AI 生成的前端在视觉上不一致,原因不在于 Claude Code 在 UI 方面能力不足,而在于执行前没有建立设计契约。`/gsd-ui-phase` 在计划前锁定设计契约;`/gsd-ui-review` 在执行后审计结果。 -| 命令 | 用途 | 何时使用 | -|---------|---------|-------------| -| `/gsd-new-project` | 完整项目初始化:提问、研究、需求、路线图 | 新项目开始时 | -| `/gsd-new-project --auto @idea.md` | 从文档自动初始化 | 有现成的 PRD 或想法文档 | -| `/gsd-discuss-phase [N] [--chain] [--power]` | 捕获实现决策(`--chain` 自动链式,`--power` 文件批量输入) | 规划前,塑造构建方式 | -| `/gsd-plan-phase [N]` | 研究 + 规划 + 验证 | 执行阶段前 | -| `/gsd-execute-phase ` | 在并行波次中执行所有计划 | 规划完成后 | -| `/gsd-verify-work [N]` | 带自动诊断的手动 UAT | 执行完成后 | -| `/gsd-audit-milestone` | 验证里程碑达到其完成定义 | 完成里程碑前 | -| `/gsd-complete-milestone` | 归档里程碑,标记发布 | 所有阶段已验证 | -| `/gsd-new-milestone [name]` | 开始下一个版本周期 | 完成里程碑后 | +完整工作流、配置、shadcn 初始化以及注册表安全关卡,请参阅 [设计 UI 阶段](how-to/design-a-ui-phase.md)。 -### 导航 +**快速参考:** -| 命令 | 用途 | 何时使用 | -|---------|---------|-------------| -| `/gsd-progress` | 显示状态和下一步 | 任何时候 -- "我在哪?" | -| `/gsd-resume-work` | 从上次会话恢复完整上下文 | 开始新会话 | -| `/gsd-pause-work` | 保存上下文交接 | 阶段中途停止 | -| `/gsd-help` | 显示所有命令 | 快速参考 | -| `/gsd-update` | 更新 GSD 并预览变更日志 | 检查新版本 | +| 命令 | 描述 | +| -------------------- | -------------------------------------------------------- | +| `/gsd-ui-phase [N]` | 为前端阶段生成 UI-SPEC.md 设计契约 | +| `/gsd-ui-review [N]` | 对已实现 UI 进行追溯性六维视觉审计 | -### 阶段管理 - -| 命令 | 用途 | 何时使用 | -|---------|---------|-------------| -| `/gsd-phase` | 向路线图追加新阶段 | 初始规划后范围增长 | -| `/gsd-phase --insert [N]` | 插入紧急工作(小数编号) | 里程碑中途紧急修复 | -| `/gsd-phase --remove [N]` | 删除未来阶段并重新编号 | 移除某个功能 | -| `/gsd-discuss-phase --assumptions [N]` | 预览 Claude 的预期方法 | 规划前,验证方向 | -| `/gsd-plan-phase --research-phase [N]` | 仅深度生态研究 | 复杂或不熟悉的领域 | -| `/gsd-autonomous [--from N] [--to N] [--only N]` | 自主执行剩余阶段(`--to N` 到阶段 N 停止) | 批量自动处理 | -| `/gsd-manager --analyze-deps` | 检测阶段间依赖关系 | `/gsd-manager` 前分析 | - -### 状态管理 - -| 命令 | 用途 | 何时使用 | -|---------|---------|-------------| -| `state validate` | 检测 STATE.md 与文件系统之间的偏差 | STATE.md 看起来不对时 | -| `state sync` | 从磁盘上的实际项目状态重建 STATE.md | 验证发现偏差后 | -| `state sync --verify` | 干运行:显示提议的更改但不写入 | sync 前预览 | -| `state planned-phase --phase N --plans N` | 记录 plan-phase 完成后的状态转换 | plan-phase 后 | - -### 现有代码库和工具 - -| 命令 | 用途 | 何时使用 | -|---------|---------|-------------| -| `/gsd-map-codebase` | 分析现有代码库 | 在现有代码上运行 `/gsd-new-project` 之前 | -| `/gsd-quick` | 带 GSD 保证的临时任务 | Bug 修复、小功能、配置更改 | -| `/gsd-debug [desc] [--diagnose]` | 带持久状态的系统化调试(`--diagnose` 仅诊断) | 出问题时 | -| `/gsd-capture [desc]` | 捕获想法留待后用 | 会话期间想到什么 | -| `/gsd-capture --list` | 列出待处理事项 | 查看捕获的想法 | -| `/gsd-settings` | 配置工作流开关和模型配置 | 更改模型、切换代理 | -| `/gsd-config --profile ` | 快速切换配置 | 更改成本/质量权衡 | -| `/gsd-update --reapply` | 更新后恢复本地修改 | 如果你有本地编辑,在 `/gsd-update` 后 | +| 设置 | 默认值 | 描述 | +| ------------------------- | ------- | ----------------------------------------------------------- | +| `workflow.ui_phase` | `true` | 为前端阶段生成 UI 设计契约 | +| `workflow.ui_safety_gate` | `true` | 计划阶段提示为前端阶段运行 /gsd-ui-phase | --- -## 配置参考 +## 探针与草图 -GSD 在 `.planning/config.json` 中存储项目设置。在 `/gsd-new-project` 期间配置或稍后用 `/gsd-settings` 更新。 +使用 `/gsd-spike` 在计划前验证技术可行性,使用 `/gsd-sketch` 在设计前探索视觉方向。两者均将产物存储在 `.planning/` 中,并通过其配套的收尾工具与项目技能系统集成。 -### 完整 config.json 模式 +完整工作流和流程图请参阅 [探针与草图](how-to/spike-and-sketch.md)。 -```json -{ - "mode": "interactive", - "granularity": "standard", - "model_profile": "balanced", - "planning": { - "commit_docs": true, - "search_gitignored": false - }, - "workflow": { - "research": true, - "plan_check": true, - "verifier": true, - "nyquist_validation": true - }, - "git": { - "branching_strategy": "none", - "phase_branch_template": "gsd/phase-{phase}-{slug}", - "milestone_branch_template": "gsd/{milestone}-{slug}" - } -} +**典型流程:** + +```bash +/gsd-spike "SSE vs WebSocket" # Validate the approach +/gsd-spike --wrap-up # Package learnings + +/gsd-sketch "real-time feed UI" # Explore the design +/gsd-sketch --wrap-up # Package decisions + +/gsd-discuss-phase N # Lock in preferences (now informed by spike + sketch) +/gsd-plan-phase N # Plan with confidence ``` -### 核心设置 +--- -| 设置 | 选项 | 默认值 | 控制内容 | -|---------|---------|---------|------------------| -| `mode` | `interactive`, `yolo` | `interactive` | `yolo` 自动批准决策;`interactive` 每步确认 | -| `granularity` | `coarse`, `standard`, `fine` | `standard` | 阶段粒度:范围切分多细(3-5、5-8 或 8-12 个阶段) | -| `model_profile` | `quality`, `balanced`, `budget` | `balanced` | 每个代理的模型层级(见下表) | +## 待办事项与线程 -### 规划设置 +### 待办事项停车场 -| 设置 | 选项 | 默认值 | 控制内容 | -|---------|---------|---------|------------------| -| `planning.commit_docs` | `true`, `false` | `true` | `.planning/` 文件是否提交到 git | -| `planning.search_gitignored` | `true`, `false` | `false` | 在广泛搜索中添加 `--no-ignore` 以包含 `.planning/` | +尚未准备好进入主动计划的想法使用 999.x 编号进入待办事项,保持在活跃阶段序列之外。 -> **注意:** 如果 `.planning/` 在 `.gitignore` 中,无论配置值如何,`commit_docs` 自动为 `false`。 +```bash +/gsd-capture --backlog "GraphQL API layer" # Creates 999.1-graphql-api-layer/ +/gsd-capture --backlog "Mobile responsive" # Creates 999.2-mobile-responsive/ +``` -### 工作流开关 +待办事项获得完整的阶段目录,因此您可以使用 `/gsd-discuss-phase 999.1` 进一步探索某个想法,或在准备好时使用 `/gsd-plan-phase 999.1`。 -| 设置 | 选项 | 默认值 | 控制内容 | -|---------|---------|---------|------------------| -| `workflow.research` | `true`, `false` | `true` | 规划前的领域调查 | -| `workflow.plan_check` | `true`, `false` | `true` | 计划验证循环(最多 3 次迭代) | -| `workflow.verifier` | `true`, `false` | `true` | 根据阶段目标的执行后验证 | -| `workflow.nyquist_validation` | `true`, `false` | `true` | plan-phase 期间的验证架构研究;第 8 个计划检查维度 | +**审查和提升**使用 `/gsd-review-backlog`——它显示所有待办事项,并让您选择提升(移至活跃序列)、保留(留在待办事项中)或移除(删除)。 -在熟悉的领域或需要节省 token 时禁用这些以加速阶段。 +### 种子 -### Git 分支 +种子是带有触发条件的前瞻性想法。与待办事项不同,种子会在正确的里程碑到来时自动浮现。 -| 设置 | 选项 | 默认值 | 控制内容 | -|---------|---------|---------|------------------| -| `git.branching_strategy` | `none`, `phase`, `milestone` | `none` | 何时以及如何创建分支 | -| `git.phase_branch_template` | 模板字符串 | `gsd/phase-{phase}-{slug}` | 阶段策略的分支名 | -| `git.milestone_branch_template` | 模板字符串 | `gsd/{milestone}-{slug}` | 里程碑策略的分支名 | +```bash +/gsd-capture --seed "Add real-time collab when WebSocket infra is in place" +``` -**分支策略说明:** +`/gsd-new-milestone` 会扫描所有种子并呈现匹配项。**存储位置:** `.planning/seeds/SEED-NNN-slug.md` -| 策略 | 创建分支 | 范围 | 适用于 | -|----------|---------------|-------|----------| -| `none` | 从不 | N/A | 独立开发、简单项目 | -| `phase` | 每次 `execute-phase` | 每个阶段一个分支 | 每阶段代码审查、细粒度回滚 | -| `milestone` | 第一次 `execute-phase` | 所有阶段共享一个分支 | 发布分支、每个版本一个 PR | +### 持久上下文线程 -**模板变量:** `{phase}` = 零填充数字(如 "03"),`{slug}` = 小写连字符名称,`{milestone}` = 版本(如 "v1.0")。 +线程是轻量级的跨会话知识存储,用于跨多个会话但不属于任何特定阶段的工作。 -### 模型配置(每个代理分解) +```bash +/gsd-thread # List all threads +/gsd-thread fix-deploy-key-auth # Resume existing thread +/gsd-thread "Investigate TCP timeout" # Create new thread +``` -| 代理 | `quality` | `balanced` | `budget` | -|-------|-----------|------------|----------| -| gsd-planner | Opus | Opus | Sonnet | -| gsd-roadmapper | Opus | Sonnet | Sonnet | -| gsd-executor | Opus | Sonnet | Sonnet | -| gsd-phase-researcher | Opus | Sonnet | Haiku | -| gsd-project-researcher | Opus | Sonnet | Haiku | -| gsd-research-synthesizer | Sonnet | Sonnet | Haiku | -| gsd-debugger | Opus | Sonnet | Sonnet | -| gsd-codebase-mapper | Sonnet | Haiku | Haiku | -| gsd-verifier | Sonnet | Sonnet | Haiku | -| gsd-plan-checker | Sonnet | Sonnet | Haiku | -| gsd-integration-checker | Sonnet | Sonnet | Haiku | +线程成熟后可提升为阶段(`/gsd-phase`)或待办事项(`/gsd-capture --backlog`)。**存储位置:** `.planning/threads/{slug}.md` -**配置理念:** -- **quality** —— 所有决策代理使用 Opus,只读验证使用 Sonnet。有配额可用且工作关键时使用。 -- **balanced** —— 仅规划(架构决策发生的地方)使用 Opus,其他全部使用 Sonnet。这是默认,有充分理由。 -- **budget** —— 编写代码的使用 Sonnet,研究和验证使用 Haiku。大量工作或不太关键的阶段使用。 +--- + +## 工作流与工作区 + +工作流(Workstreams)和工作区(Workspaces)都提供隔离,但级别不同。 + +**Workstreams** 共享同一代码库和 git 历史,但隔离规划产物——更轻量,适合并发处理多个里程碑区域。参见 [使用 Workstreams 并行工作](how-to/work-in-parallel-with-workstreams.md)。 + +**Workspaces** 创建各自拥有 `.planning/` 的独立仓库工作树——更重,用于特性分支或多仓库隔离。参见 [使用 Workspaces 隔离工作](how-to/isolate-work-with-workspaces.md)。 + +| 命令 | 用途 | +| ---------------------------------- | ---------------------------------------------------- | +| `/gsd-workstreams create ` | 创建具有隔离计划状态的新工作流 | +| `/gsd-workstreams switch ` | 将活跃上下文切换到不同的工作流 | +| `/gsd-workstreams list` | 显示所有工作流及当前活跃的工作流 | +| `/gsd-workstreams complete ` | 将工作流标记为完成并归档其状态 | + +```bash +# Workspace example — feature branch isolation +/gsd-workspace --new --name feature-b --repos . +cd ~/gsd-workspaces/feature-b +/gsd-new-project + +/gsd-workspace --list +/gsd-workspace --remove feature-b +``` + +--- + +## 安全 + +### 纵深防御(v1.27) + +GSD 生成的 Markdown 文件会成为 LLM 系统提示。这意味着流入规划产物的任何用户控制文本都是潜在的间接提示注入向量。v1.27 引入了集中式安全加固: + +**路径遍历防护:** 所有用户提供的文件路径(`--text-file`、`--prd`)均经过验证,确保解析在项目目录内。macOS 的 `/var` → `/private/var` 符号链接解析已处理。 + +**提示注入检测:** `security.cjs` 模块在用户提供的文本进入规划产物之前扫描已知的注入模式。 + +**运行时钩子:** + +- `gsd-prompt-guard.js` — 扫描写入 `.planning/` 的 Write/Edit 调用中的注入模式(始终活跃,仅建议) +- `gsd-workflow-guard.js` — 对 GSD 工作流上下文之外的文件编辑发出警告(通过 `hooks.workflow_guard` 选择性启用) + +**CI 扫描器:** `prompt-injection-scan.test.cjs` 扫描所有 agent、工作流和命令文件中的嵌入式注入向量。 + +--- + +### 包合法性关卡(v1.42.1) + +AI 编码工具会幻觉出包名。攻击者会在 npm、PyPI 和 crates.io 上预先注册这些名称,并附带恶意的安装后脚本——这种技术称为 *slopsquatting*。v1.42.1 增加了三层关卡,在到达您的 shell 之前阻止这一问题。 + +**在 RESEARCH.md 中** — 每个推荐外部包的阶段都包含一个 `## Package Legitimacy Audit` 表: + +```markdown +## Package Legitimacy Audit + +| Package | Registry | Age | Downloads | Source Repo | slopcheck | Disposition | +|---------|----------|-----|-----------|-------------|-----------|-------------| +| express | npm | 13 yrs | 100M+/wk | github.com/expressjs/express | [OK] | Approved | +| some-new-util | npm | 3 days | 47 | none | [SLOP] | REMOVED | +| api-bridge | npm | 6 mo | 1.2k/wk | github.com/user/api-bridge | [SUS] | Flagged | +``` + +`[SLOP]` 包将从 RESEARCH.md 中完全删除,永远不会到达规划器。 + +**在 PLAN.md 中** — `[SUS]` 或 `[ASSUMED]` 包会在安装前触发 `checkpoint:human-verify` 任务。 + +**执行期间** — 如果安装失败,执行器会显示检查点并停止,而不是静默尝试替代方案。 + +**Slopcheck 判定:** + +| 判定 | 含义 | GSD 操作 | +|---------|---------|------------| +| `[OK]` | 通过所有合法性检查 | 继续——不添加检查点 | +| `[SUS]` | 存在可疑信号 | 标记;规划器添加 `checkpoint:human-verify` | +| `[SLOP]` | 高置信度幻觉 | 从 RESEARCH.md 中删除;永远不会到达规划器 | + +手动安装 slopcheck: + +```bash +pip install slopcheck +# verify: slopcheck install express --json +``` + +--- + +## 代码审查工作流 + +执行阶段后,在 UAT 前进行结构化代码审查。完整工作流请参阅 [设置跨 AI 审查](how-to/set-up-cross-ai-review.md)。 + +```bash +/gsd-code-review 3 # Review all changed files in phase 3 +/gsd-code-review 3 --depth=deep # Deep cross-file review +/gsd-code-review 3 --fix # Fix Critical + Warning findings atomically +/gsd-code-review 3 --fix --auto # Fix and re-review until clean (max 3 iterations) +/gsd-audit-fix # Audit + classify + fix (medium+ severity, max 5) +``` + +审查步骤插入在执行之后、UAT 之前: + +```text +/gsd-execute-phase N -> /gsd-code-review N -> /gsd-code-review N --fix -> /gsd-verify-work N +``` + +--- + +## 命令与配置参考 + +- **命令参考:** 参见 [`docs/COMMANDS.md`](COMMANDS.md),包含每个稳定命令的标志、子命令和示例。 +- **配置参考:** 参见 [`docs/CONFIGURATION.md`](CONFIGURATION.md),包含完整的 `config.json` 模式、模型配置文件表、git 分支策略和安全设置。 +- **讨论模式:** 参见 [`docs/workflow-discuss-mode.md`](workflow-discuss-mode.md),了解访谈模式与假设模式。 --- ## 使用示例 -### 新项目(完整周期) +### 新建项目(完整周期) ```bash claude --dangerously-skip-permissions -/gsd-new-project # 回答问题,配置,批准路线图 +/gsd-new-project # Answer questions, configure, approve roadmap /clear -/gsd-discuss-phase 1 # 锁定你的偏好 -/gsd-plan-phase 1 # 研究 + 规划 + 验证 -/gsd-execute-phase 1 # 并行执行 -/gsd-verify-work 1 # 手动 UAT +/gsd-discuss-phase 1 # Lock in your preferences +/gsd-ui-phase 1 # Design contract (frontend phases) +/gsd-plan-phase 1 # Research + plan + verify +/gsd-execute-phase 1 # Parallel execution +/gsd-verify-work 1 # Manual UAT +/gsd-ship 1 # Create PR from verified work +/gsd-ui-review 1 # Visual audit (frontend phases) /clear -/gsd-discuss-phase 2 # 对每个阶段重复 +/gsd-progress --next # Auto-detect and run next step ... -/gsd-audit-milestone # 检查所有内容已发布 -/gsd-complete-milestone # 归档,标记,完成 +/gsd-audit-milestone # Check everything shipped +/gsd-complete-milestone # Archive, tag, done +/gsd-pause-work --report # Generate session summary ``` -### 从现有文档创建新项目 +### 从现有文档新建项目 ```bash -/gsd-new-project --auto @prd.md # 从你的文档自动运行研究/需求/路线图 +/gsd-new-project --auto @prd.md # Auto-runs research/requirements/roadmap from your doc /clear -/gsd-discuss-phase 1 # 从这里开始正常流程 +/gsd-discuss-phase 1 # Normal flow from here ``` ### 现有代码库 ```bash -/gsd-map-codebase # 分析现有内容(并行代理) -/gsd-new-project # 问题聚焦于你正在添加的内容 -# (从这里开始正常阶段工作流) +/gsd-map-codebase # Analyse what exists (parallel agents) +/gsd-new-project # Questions focus on what you're ADDING +# (normal phase workflow from here) ``` -### 快速 Bug 修复 +**执行后漂移检测(#2003)。** 每次 `/gsd-execute-phase` 之后,GSD 会检查该阶段是否引入了足够的结构变化,使 `.planning/codebase/STRUCTURE.md` 过时。通过以下方式调整行为: + +```bash +/gsd-settings workflow.drift_action auto-remap # remap automatically +/gsd-settings workflow.drift_threshold 5 # tune sensitivity +``` + +### 计划漂移守卫 + +**默认开启。** 计划漂移守卫(`plan_review.source_grounding: true`)在计划审查期间运行,验证计划中引用的每个符号——装饰器、类、函数、CLI 标志——在审查时实际存在于源代码树中。这可以在任何执行 Agent 运行前捕获幻觉的名称。 + +**捕获内容:** + +- PLAN.md 步骤中引用的函数在源代码中不存在 +- 自计划编写以来被重命名或删除的类或装饰器名称 +- 计划中记录的 CLI 标志未在参数解析器中定义 +- 实现步骤中引用的模块路径未解析到任何文件 + +**needs-acknowledgement 行为。** 当守卫发现缺失的符号时,它会在计划审查输出中发出 needs-acknowledgement 通知,而不是硬性阻塞。您可以确认并继续(该符号可能是有意新增的),或请求修改计划。守卫不会自动拒绝计划——它为人工决策提供信号。 + +**无需 intel 即可工作。** 默认情况下,守卫使用 `grep`/`ripgrep` 搜索源文件——无需预先索引。如果您已使用 `intel.enabled: true` 运行 `/gsd:map-codebase`,请将 `plan_review.source_grounding_authority: intel` 设置为使用更快的预构建 `api-map.json` 索引。 + +```bash +# Enable/disable (default: on) +/gsd-settings plan_review.source_grounding true +/gsd-settings plan_review.source_grounding false + +# Switch resolver authority +/gsd-settings plan_review.source_grounding_authority grep # live grep (default) +/gsd-settings plan_review.source_grounding_authority intel # pre-indexed api-map.json +``` + +在项目设置时切换(`/gsd:new-project` 在工作流偏好设置期间询问)或随时通过 `/gsd:settings`(计划部分 → 漂移守卫)切换。 + +### 快速修复 Bug ```bash /gsd-quick -> "修复移动端 Safari 上登录按钮无响应的问题" +> "Fix the login button not responding on mobile Safari" ``` -### 中断后恢复 +### 休息后恢复工作 ```bash -/gsd-progress # 查看你停在哪和接下来做什么 -# 或 -/gsd-resume-work # 从上次会话完整恢复上下文 +/gsd-progress # See where you left off and what's next +# or +/gsd-resume-work # Full context restoration from last session ``` ### 准备发布 ```bash -/gsd-audit-milestone # 检查需求覆盖率,检测存根 -/gsd-complete-milestone # 归档,标记,完成 +/gsd-audit-milestone # Check requirements coverage, detect stubs +/gsd-complete-milestone # Archive, tag, done ``` ### 速度与质量预设 -| 场景 | 模式 | 粒度 | 配置 | 研究 | 计划检查 | 验证器 | -|----------|------|-------|---------|----------|------------|----------| -| 原型开发 | `yolo` | `coarse` | `budget` | 关 | 关 | 关 | -| 正常开发 | `interactive` | `standard` | `balanced` | 开 | 开 | 开 | -| 生产环境 | `interactive` | `fine` | `quality` | 开 | 开 | 开 | +| 场景 | 模式 | 粒度 | 配置文件 | 研究 | 计划检查 | 验证器 | +| ----------- | ------------- | ----------- | ---------- | -------- | ---------- | -------- | +| 原型开发 | `yolo` | `coarse` | `budget` | 关闭 | 关闭 | 关闭 | +| 常规开发 | `interactive` | `standard` | `balanced` | 开启 | 开启 | 开启 | +| 生产环境 | `interactive` | `fine` | `quality` | 开启 | 开启 | 开启 | -### 里程碑中途范围变更 +**在自主模式下跳过讨论阶段:** 以 `yolo` 模式运行时,通过 `/gsd-settings` 设置 `workflow.skip_discuss: true`。 + +### 里程碑中期范围变更 ```bash -/gsd-phase # 向路线图追加新阶段 -# 或 -/gsd-phase --insert 3 # 在阶段 3 和 4 之间插入紧急工作 -# 或 -/gsd-phase --remove 7 # 移除阶段 7 并重新编号 +/gsd-phase # Append a new phase to the roadmap (default mode) +/gsd-phase --insert 3 # Insert urgent work between phases 3 and 4 +/gsd-phase --remove 7 # Descope phase 7 and renumber +/gsd-phase --edit 4 # Edit any field of phase 4 in place ``` --- -## 故障排除 +## 故障排查 -### "项目已初始化" +完整的故障排查指南请参阅 [恢复与故障排查](how-to/recover-and-troubleshoot.md)。以下是最常见问题的摘要。 -你运行了 `/gsd-new-project` 但 `.planning/PROJECT.md` 已存在。这是安全检查。如果你想重新开始,先删除 `.planning/` 目录。 +### 程序化 CLI(`gsd-tools query` 与 `gsd-tools.cjs`) -### 长会话期间上下文退化 - -在主要命令之间清除上下文窗口:Claude Code 中的 `/clear`。GSD 设计围绕全新上下文 —— 每个子代理获得干净的 200K 窗口。如果主会话质量下降,清除并使用 `/gsd-resume-work` 或 `/gsd-progress` 恢复状态。 - -### 计划看起来错误或不一致 - -在规划前运行 `/gsd-discuss-phase [N]`。大多数计划质量问题来自 Claude 做出了 `CONTEXT.md` 本可以防止的假设。你也可以运行 `/gsd-discuss-phase --assumptions [N]` 在提交计划前查看 Claude 打算做什么。 - -### 执行失败或产生存根 - -检查计划是否太雄心勃勃。计划最多应有 2-3 个任务。如果任务太大,它们超出了单个上下文窗口可以可靠产生的内容。用更小的范围重新规划。 - -### 忘记你在哪里 - -运行 `/gsd-progress`。它读取所有状态文件,准确告诉你位置和下一步。 - -### 执行后需要更改某些内容 - -不要重新运行 `/gsd-execute-phase`。使用 `/gsd-quick` 进行针对性修复,或用 `/gsd-verify-work` 通过 UAT 系统识别和修复问题。 +对于自动化,优先使用带有已注册子命令的 **`gsd-tools query`**(参见 [CLI-TOOLS.md — SDK 和程序化访问](CLI-TOOLS.md#sdk-and-programmatic-access) 及 QUERY-HANDLERS.md)。旧版 `node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs` CLI 仍受支持。 ### STATE.md 不同步 -如果 STATE.md 显示不正确的阶段状态或位置,使用状态一致性命令: - ```bash -node gsd-tools.cjs state validate # 检测 STATE.md 与文件系统之间的偏差 -node gsd-tools.cjs state sync --verify # 预览 sync 将更改的内容 -node gsd-tools.cjs state sync # 从磁盘重建 STATE.md +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate # Detect drift +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify # Preview changes +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync # Reconstruct STATE.md ``` -这些命令是 v1.32 新增的,替代了手动编辑 STATE.md。 +### 命令在"Spawning..."后似乎冻结 -### 研究门控(Research Gate) +GSD 子 Agent 在单独的上下文窗口中运行——其工作在进行中对父会话不可见。请勿中断会话。等待结果;研究和计划 Agent 通常需要 1–5 分钟。 -`/gsd-plan-phase` 在规划开始前会检查 RESEARCH.md 是否存在未解决的开放问题。如果存在未解决的问题,规划将被阻止,系统会显示需要解决的具体问题。这防止了基于不完整信息构建计划。 +### 长会话期间上下文退化 -### 模型成本太高 +在主要命令之间清除上下文窗口:在 Claude Code 中使用 `/clear`。GSD 围绕全新上下文设计——每个子 Agent 获得一个干净的 200K 窗口。清除后使用 `/gsd-resume-work` 或 `/gsd-progress` 恢复状态。 -切换到 budget 配置:`/gsd-config --profile budget`。如果领域对你(或 Claude)熟悉,通过 `/gsd-settings` 禁用研究和计划检查代理。 +### 计划似乎不正确或不一致 + +在计划前运行 `/gsd-discuss-phase [N]`。大多数计划质量问题来源于 Claude 在 `CONTEXT.md` 本可避免的情况下做出假设。 + +### 执行失败或产生存根 + +检查计划是否过于雄心勃勃。计划最多应有 2–3 个任务。以更小的范围重新计划。 + +### 不知道当前位置 + +运行 `/gsd-progress`。它读取所有状态文件,精确告诉您当前所在位置和下一步操作。 + +### 模型成本过高 + +切换到预算配置文件:`/gsd-config --profile budget`。如果领域已熟悉,通过 `/gsd-settings` 禁用研究和计划检查 Agent。 + +### 按阶段调整模型成本(`models`)——v1.40 新增 + +在 `.planning/config.json` 中添加 `models` 块: + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + } +} +``` + +需要针对单个 Agent 的例外情况?在旁边添加 `model_overrides`——它优先于 `models`: + +```json +{ + "models": { "research": "sonnet" }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +完整的映射表和解析优先级规则,请参阅 [按阶段类型分配模型](CONFIGURATION.md#per-phase-type-models-models--added-in-v140)。 + +### 使用 `dynamic_routing` 默认降低成本——v1.40 新增 + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +完整的 Agent → 层级映射,请参阅 [动态路由](CONFIGURATION.md#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140)。 + +### 精简 MCP 服务器以降低每次交互成本 + +在调整 `model_profile` 或 `models.` 之前,请审计您的运行时启用了哪些 **MCP 服务器**。每个启用的 MCP 服务器都会将其工具模式注入每次交互——重量级服务器每次可能消耗超过 20k 个 token。 + +这是**运行时设置**,不是 GSD 设置。切换项位于 `.claude/settings.json`: + +```json +{ + "enabledMcpjsonServers": ["context7"], + "disabledMcpjsonServers": ["playwright", "mac-tools"] +} +``` + +长阶段前的快速审计: + +- 此阶段没有 UI 工作时,是否有任何浏览器 / playwright 工具被启用? +- 不需要时,是否有任何平台特定工具被启用? +- 是否有来自其他项目的项目专属 MCP 仍在此处启用? + +每个被禁用的服务器都会从后续每次交互中移除其模式。精简 MCP **与** `model_profile` 调整形成叠加效果——两个杠杆是累加的,MCP 节省效果立即体现在编排器生成的每个子 Agent 上。 + +完整审计、运行时参考及与 `model_profile` 的组合说明,请参阅捆绑的 `context-budget.md` 参考中的 [MCP 工具模式成本](../../get-shit-done/references/context-budget.md#mcp-tool-schema-cost-harness-concern)。 + +### 使用非 Claude 运行时(Codex、OpenCode、Gemini CLI、Kilo) + +> **Codex CLI 最低支持版本:`0.130.0`**(issue [#3562](https://github.com/open-gsd/gsd-core/issues/3562))。 + +如果您为非 Claude 运行时安装了 GSD,安装器已配置好模型解析。无需手动设置——`resolve_model_ids: "omit"` 会自动设置,告知 GSD 跳过 Anthropic 模型 ID 解析,让运行时选择其默认模型。 + +在非 Claude 运行时上分配不同模型: + +```json +{ + "resolve_model_ids": "omit", + "model_overrides": { + "gsd-planner": "o3", + "gsd-executor": "o4-mini", + "gsd-debugger": "o3" + } +} +``` + +#### 通过一次配置更改从 Claude 切换到 Codex(#2517) + +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` + +参见 [运行时感知配置文件](CONFIGURATION.md#runtime-aware-profiles-2517)。 + +### 手动安装 / 无 Node.js 设置 + +如果无法运行 GSD 安装器,则无法直接使用 `agents/` 中的源文件——它们采用 Claude Code 的原生 frontmatter 格式。对于 OpenCode,需要进行两项转换: + +| 字段 | GSD 源格式 | OpenCode 有效格式 | 操作 | +|---|---|---|---| +| `tools:` | `Read, Bash, Grep`(逗号字符串) | 不是 frontmatter 字段 | 完全删除 `tools:` 行 | +| `color:` | 纯 CSS 颜色名称 | 十六进制或 OpenCode 语义名称 | 转换为十六进制或删除 | + +**替代方案:** 在任何有 Node.js 的机器上运行安装器: + +```bash +npx @opengsd/gsd-core@latest --opencode --global +``` + +### 为 Cline 安装 + +```bash +npx @opengsd/gsd-core --cline --global # applies to all projects +npx @opengsd/gsd-core --cline --local # this project only +``` + +### 为 CodeBuddy 安装 + +```bash +npx @opengsd/gsd-core --codebuddy --global +``` + +### 为 Qwen Code 安装 + +```bash +npx @opengsd/gsd-core --qwen --global +``` + +### 为预发布版本安装 + +在运行安装器前,将运行时的 `*_CONFIG_DIR` 环境变量设置为预发布目录: + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global +``` + +**支持运行时的环境变量参考:** + +| 运行时 | 稳定默认值 | 覆盖环境变量 | +|---|---|---| +| Claude Code | `~/.claude` | `CLAUDE_CONFIG_DIR` | +| Gemini CLI | `~/.gemini` | `GEMINI_CONFIG_DIR` | +| OpenCode | `XDG_CONFIG_HOME/opencode` | `OPENCODE_CONFIG_DIR` | +| Codex | (按 Codex CLI) | `--config-dir` 标志 | +| Copilot | `~/.copilot` | `COPILOT_CONFIG_DIR` | +| Cursor | `~/.cursor` | `CURSOR_CONFIG_DIR` | +| Windsurf | `~/.codeium/windsurf` | `WINDSURF_CONFIG_DIR` | +| Antigravity | 自动检测 | `ANTIGRAVITY_CONFIG_DIR` | +| Augment | `~/.augment` | `AUGMENT_CONFIG_DIR` | +| Trae | `~/.trae` | `TRAE_CONFIG_DIR` | +| Qwen Code | `~/.qwen` | `QWEN_CONFIG_DIR` | +| Kilo | `~/.config/kilo` | `KILO_CONFIG_DIR` | +| CodeBuddy | `~/.codebuddy` | `CODEBUDDY_CONFIG_DIR` | +| Cline | `~/.cline` | `CLINE_CONFIG_DIR` | + +### 将 Claude Code 与非 Anthropic 提供商结合使用 + +切换到 `inherit` 配置文件:`/gsd-config --profile inherit`。这使所有 Agent 使用您当前的会话模型。 ### 处理敏感/私有项目 -在 `/gsd-new-project` 期间或通过 `/gsd-settings` 设置 `commit_docs: false`。将 `.planning/` 添加到 `.gitignore`。规划工件保留在本地,从不接触 git。 +在 `/gsd-new-project` 期间或通过 `/gsd-settings` 设置 `commit_docs: false`。将 `.planning/` 添加到您的 `.gitignore`。 ### GSD 更新覆盖了我的本地更改 -从 v1.17 开始,安装程序将本地修改的文件备份到 `gsd-local-patches/`。运行 `/gsd-update --reapply` 将你的更改合并回来。 +自 v1.17 起,安装器会将本地修改的文件备份到 `gsd-local-patches/`。运行 `/gsd-update --reapply` 将您的更改合并回来。 -### 子代理似乎失败但工作已完成 +### 无法通过 npm 更新 -存在 Claude Code 分类 bug 的已知解决方法。GSD 的编排器(execute-phase、quick)在报告失败前抽查实际输出。如果你看到失败消息但提交已创建,检查 `git log` —— 工作可能已成功。 +参见 [docs/manual-update.md](../manual-update.md) 中的逐步手动更新程序。 + +### 工作流诊断(`/gsd-forensics`) + +当工作流以不明显的方式失败时,运行 `/gsd-forensics` 生成涵盖 git 历史异常、产物完整性和状态不一致的诊断报告。输出写入 `.planning/forensics/`。 + +### 执行器子 Agent 在 Bash 命令上遇到"Permission denied" + +将所需模式添加到 `~/.claude/settings.json`。所有技术栈所需的核心模式: + +```json +"Bash(git add:*)", +"Bash(git commit:*)", +"Bash(git merge:*)", +"Bash(git worktree:*)", +"Bash(git rebase:*)", +"Bash(git reset:*)", +"Bash(git checkout:*)", +"Bash(git switch:*)", +"Bash(git restore:*)", +"Bash(git stash:*)", +"Bash(git rm:*)", +"Bash(git mv:*)", +"Bash(git fetch:*)", +"Bash(git cherry-pick:*)", +"Bash(git apply:*)", +"Bash(gh:*)" +``` + +**项目级权限:** 将相同的 `permissions.allow` 块添加到项目根目录的 `.claude/settings.local.json`,而不是 `~/.claude/settings.json`。 + +### 并行执行导致构建锁定错误 + +GSD 自 v1.26 起自动处理此问题。如果您使用的是旧版本,请在项目的 `CLAUDE.md` 中添加: + +```markdown +## Git Commit Rules for Agents +All subagent/executor commits MUST use `--no-verify`. +``` + +完全禁用并行执行:`/gsd-settings` → 将 `parallelization.enabled` 设置为 `false`。 --- -## 恢复快速参考 +## 快速恢复参考 -| 问题 | 解决方案 | -|---------|----------| -| 丢失上下文 / 新会话 | `/gsd-resume-work` 或 `/gsd-progress` | -| 阶段出错 | `git revert` 阶段提交,然后重新规划 | -| 需要更改范围 | `/gsd-phase`、`/gsd-phase --insert` 或 `/gsd-phase --remove` | -| 出问题了 | `/gsd-debug "描述"` | -| STATE.md 不同步 | `state validate` 然后 `state sync` | -| 快速针对性修复 | `/gsd-quick` | -| 计划与你的愿景不符 | `/gsd-discuss-phase [N]` 然后重新规划 | -| 成本过高 | `/gsd-config --profile budget` 和 `/gsd-settings` 关闭代理 | -| 更新破坏了本地更改 | `/gsd-update --reapply` | +| 问题 | 解决方案 | +| ------------------------------------ | ------------------------------------------------------------------------ | +| 丢失上下文 / 新会话 | `/gsd-resume-work` 或 `/gsd-progress` | +| 阶段出错 | `git revert` 阶段提交,然后重新计划 | +| 需要更改范围 | `/gsd-phase`(默认)、`/gsd-phase --insert` 或 `/gsd-phase --remove` | +| 出现问题 | `/gsd-debug "description"`(添加 `--diagnose` 进行分析而不修复) | +| STATE.md 不同步 | `state validate` 然后 `state sync` | +| 工作流状态似乎损坏 | `/gsd-forensics` | +| 快速定向修复 | `/gsd-quick` | +| 计划与您的愿景不符 | `/gsd-discuss-phase [N]` 然后重新计划 | +| 成本持续上涨 | `/gsd-config --profile budget` 并通过 `/gsd-settings` 关闭 Agent | +| 更新破坏了本地更改 | `/gsd-update --reapply` | +| 需要为利益相关者生成会话摘要 | `/gsd-pause-work --report` | +| 不知道下一步是什么 | `/gsd-progress --next` | +| 并行执行构建错误 | 更新 GSD 或设置 `parallelization.enabled: false` | --- ## 项目文件结构 -供参考,这是 GSD 在你的项目中创建的内容: - -``` +```text .planning/ - PROJECT.md # 项目愿景和上下文(始终加载) - REQUIREMENTS.md # 界定 v1/v2 需求及 ID - ROADMAP.md # 带状态跟踪的阶段分解 - STATE.md # 决策、阻塞项、会话记忆 - config.json # 工作流配置 - MILESTONES.md # 已完成里程碑归档 - research/ # 来自 /gsd-new-project 的领域研究 + PROJECT.md # Project vision and context (always loaded) + REQUIREMENTS.md # Scoped v1/v2 requirements with IDs + ROADMAP.md # Phase breakdown with status tracking + STATE.md # Decisions, blockers, session memory + config.json # Workflow configuration + MILESTONES.md # Completed milestone archive + HANDOFF.json # Structured session handoff (from /gsd-pause-work) + research/ # Domain research from /gsd-new-project + reports/ # Session reports (from /gsd-pause-work --report) todos/ - pending/ # 等待处理的捕获想法 - done/ # 已完成的待办事项 - debug/ # 活跃调试会话 - resolved/ # 已归档的调试会话 - codebase/ # 现有代码库映射(来自 /gsd-map-codebase) + pending/ # Captured ideas awaiting work + done/ # Completed todos + debug/ # Active debug sessions + resolved/ # Archived debug sessions + spikes/ # Feasibility experiments (from /gsd-spike) + NNN-name/ # Experiment code + README with verdict + MANIFEST.md # Index of all spikes + sketches/ # HTML mockups (from /gsd-sketch) + NNN-name/ # index.html (2-3 variants) + README + themes/ + default.css # Shared CSS variables for all sketches + MANIFEST.md # Index of all sketches with winners + codebase/ # Brownfield codebase mapping (from /gsd-map-codebase) phases/ XX-phase-name/ - XX-YY-PLAN.md # 原子执行计划 - XX-YY-SUMMARY.md # 执行结果和决策 - CONTEXT.md # 你的实现偏好 - RESEARCH.md # 生态研究发现 - VERIFICATION.md # 执行后验证结果 -``` \ No newline at end of file + XX-YY-PLAN.md # Atomic execution plans + XX-YY-SUMMARY.md # Execution outcomes and decisions + CONTEXT.md # Your implementation preferences + RESEARCH.md # Ecosystem research findings + VERIFICATION.md # Post-execution verification results + XX-UI-SPEC.md # UI design contract (from /gsd-ui-phase) + XX-UI-REVIEW.md # Visual audit scores (from /gsd-ui-review) + ui-reviews/ # Screenshots from /gsd-ui-review (gitignored) +``` + +--- + +## 相关资源 + +- [文档索引](README.md) +- [命令](COMMANDS.md) +- [配置](CONFIGURATION.md) +- [阶段循环](explanation/the-phase-loop.md) diff --git a/docs/zh-CN/context-monitor.md b/docs/zh-CN/context-monitor.md new file mode 100644 index 000000000..4bb3a40db --- /dev/null +++ b/docs/zh-CN/context-monitor.md @@ -0,0 +1,80 @@ +# 上下文窗口监视器 + +一个后置工具钩子(Claude Code 中的 `PostToolUse`,Gemini CLI 中的 `AfterTool`),当上下文窗口使用率较高时向 Agent 发出警告。 + +## 问题背景 + +状态栏向**用户**展示上下文使用情况,但 **Agent** 本身并不感知上下文限制。当上下文剩余量不足时,Agent 会持续工作直至触及上限——可能在任务进行到一半、状态尚未保存时就被迫中断。 + +## 工作原理 + +1. 状态栏钩子将上下文指标写入 `/tmp/claude-ctx-{session_id}.json` +2. 每次工具调用结束后,上下文监视器读取这些指标 +3. 当剩余上下文低于阈值时,以 `additionalContext` 的形式注入警告 +4. Agent 在对话中接收到警告后即可采取相应措施 + +## 阈值 + +| 级别 | 剩余量 | Agent 行为 | +|-------|-----------|----------------| +| 正常 | > 35% | 无警告 | +| 警告 | <= 35% | 完成当前任务收尾,避免开启新的复杂工作 | +| 严重 | <= 25% | 立即停止,保存状态(`/gsd-pause-work`) | + +## 防抖机制 + +为避免反复向 Agent 发送重复警告: +- 首次警告始终立即触发 +- 后续警告需间隔 5 次工具调用才会再次触发 +- 严重级别升级(WARNING -> CRITICAL)可绕过防抖机制 + +## 架构 + +``` +Statusline Hook (gsd-statusline.js) + | writes + v +/tmp/claude-ctx-{session_id}.json + ^ reads + | +Context Monitor (gsd-context-monitor.js, PostToolUse/AfterTool) + | injects + v +additionalContext -> Agent sees warning +``` + +中间桥接文件是一个简单的 JSON 对象: + +```json +{ + "session_id": "abc123", + "remaining_percentage": 28.5, + "used_pct": 71, + "timestamp": 1708200000 +} +``` + +## 与 GSD 的集成 + +GSD 的 `/gsd-pause-work` 命令用于保存执行状态。WARNING 消息建议使用该命令,CRITICAL 消息则要求立即保存状态。 + +## 配置 + +两个钩子均在执行 `npx @opengsd/gsd-core` 安装时自动注册——正常情况下无需手动操作。有关钩子配置详情、阈值覆盖以及手动注册示例,请参阅[配置文档](CONFIGURATION.md)。 + +简要参考:状态栏钩子在 `settings.json` 中注册为 `statusLine`;上下文监视器(`gsd-context-monitor.js`)注册为 `PostToolUse` 钩子(Gemini CLI 中为 `AfterTool`)。两项配置均使用运行安装程序时的 Node 可执行文件绝对路径。在 Windows PowerShell 中,需在带引号的可执行文件路径前添加 `&` 前缀。 + +## 安全性 + +- 钩子对所有操作进行 try/catch 包裹,出错时静默退出 +- 不会阻塞工具执行——监视器出现故障不应影响 Agent 的工作流程 +- 过期指标(超过 60 秒)将被忽略 +- 缺失的桥接文件可被优雅处理(适用于子 Agent 及新会话) + +--- + +## 相关文档 + +- [架构](ARCHITECTURE.md) +- [配置](CONFIGURATION.md) +- [文档索引](README.md) diff --git a/docs/zh-CN/explanation/context-engineering.md b/docs/zh-CN/explanation/context-engineering.md new file mode 100644 index 000000000..1caf70a01 --- /dev/null +++ b/docs/zh-CN/explanation/context-engineering.md @@ -0,0 +1,90 @@ +# 上下文工程 + +> GSD Core 的存在原因及其旨在解决的问题。 + +--- + +## 问题:上下文腐化 + +每次 AI 编码会话都从全新开始。模型读取你的问题,对其进行推理,然后作出回复。但一次会话很少只有一轮交互。你会追问后续问题、粘贴错误信息、迭代代码,并在模型偏离方向时加以纠正。每一轮都会向上下文窗口中添加令牌——这是一个模型在同一时刻能"看到"的有限文本缓冲区。 + +随着该窗口逐渐填满,一些微妙的变化随之而来。模型不会高调地出错,它仍然持续作答,但答案的质量会悄然下降。早期的指令被推到它所能关注范围的边缘。最初几轮交互中的细节——你陈述的约束、你达成共识的架构、你标注的边界情况——都在与后续堆积的内容争夺注意力。研究人员将这种现象称为**上下文腐化**。 + +上下文腐化会以多种方式显现: + +- 模型开始与它此前已认可的决定相矛盾。 +- 代码风格偏离了会话开始时确立的规范。 +- 计划开始忽略那些明确陈述过、但如今已深埋于历史记录中的需求。 +- 模型产生幻觉,给出二十条消息前还正确的文件名或函数签名。 + +这些问题都不是模型的 bug。这是 Transformer 注意力机制在长序列上运作的基本属性。模型并非在"遗忘"——它从未以人类的方式"记住"过任何东西。它在有限窗口中对相关性进行加权,而随着窗口被积累的噪声填满,信噪比不断下降。 + +最直觉的应对方式是使用 `/clear` 重新开始。但这会丢失连贯性。你必须重新解释背景、重新粘贴相关文件、重新陈述约束条件。会话实质上归零重启了。 + +--- + +## GSD Core 的答案:全新上下文的子智能体 + +GSD Core 的核心洞见是:编码会话中*大多数*工作根本无需在主上下文中完成。研究、规划、代码编写和验证各自是独立且边界清晰的任务。每项任务都可以交给一个专门的子智能体来处理——该智能体以一个干净、精心限定范围的上下文窗口启动,并将其结果报告给一个保持精简状态的薄层编排器。 + +这不是上下文腐化的变通之法,而是一种结构性解决方案。 + +编排器——也就是你的主会话——从不接触源文件。它生成智能体、收集其结果、更新共享状态,并路由到下一个步骤。正因为它自身承担的工作很少,其上下文窗口的增长缓慢且可预测。繁重的工作发生在各个智能体中——每个智能体都以全新状态启动,仅接收完成其任务所需的上下文,并在完成后终止。 + +考虑这在实践中意味着什么。当你运行 `/gsd-plan-phase` 时,编排器会: + +1. 加载一个紧凑的 JSON 上下文有效载荷(项目摘要、阶段目标、相关配置)。 +2. 生成一个拥有 20 万令牌全新窗口的研究智能体。 +3. 以研究输出和阶段需求为输入,生成一个规划智能体。 +4. 生成一个计划检查智能体,在执行前验证计划。 + +每个智能体都以满负荷运行,不受会话积累历史的拖累。当规划器将其 `PLAN.md` 文件写入 `.planning/phases/` 时,该输出成为持久的产物——而非共享上下文窗口中脆弱的记忆。 + +--- + +## 规格驱动开发与元提示 + +仅靠上下文工程还不够。如果一个智能体以全新状态启动,却接收到模糊的指令,它产生的输出也将是模糊的。GSD Core 将全新上下文的子智能体与两项互补的原则相结合: + +**规格驱动开发**意味着每个阶段在执行开始之前都会生成结构化产物。`CONTEXT.md` 捕获来自讨论步骤的实现决策。`RESEARCH.md` 记录研究智能体的发现。`PLAN.md` 将工作分解为离散的、按依赖关系排序的任务,并附有明确的验收标准。在执行器智能体接触文件之时,它已拥有一份精确的规格说明——而非对一段漫长对话的重新解读。 + +**元提示**意味着智能体定义本身就是经过精心设计的提示,而非临时指令。`get-shit-done/workflows/` 和 `agents/` 中的文件编码了关于如何限定任务范围、需要验证什么,以及何时上报至人工检查点的宝贵经验。用户无需在每次会话中重新解释这些知识;它已内嵌于系统自身的提示中。 + +这种组合是刻意为之的。全新上下文确保每个智能体清晰推理。规格驱动的产物确保每个智能体针对*正确的*事物进行推理。元提示确保每个智能体知道*如何*将其做好。 + +--- + +## `.planning/` 的作用 + +上下文工程要求知识能在上下文重置后得以保留。GSD Core 为此使用文件系统。每一项有意义的输出都以人类可读的 Markdown 或 JSON 格式写入 `.planning/`。这意味着: + +- 重启会话(或模型崩溃)不会丢失工作成果。 +- 任何后续智能体都可以直接读取先前的产物,而无需依赖共享的对话历史。 +- 你可以检查、编辑规划产物,或将其提交到 git——它们是纯文本,而非数据库中不透明的状态。 + +`STATE.md` 是这个系统的支柱。它记录项目的当前位置(处于哪个里程碑、哪个阶段、哪些计划已完成)、活跃的决策和阻碍项,以及进度指标。每当工作流启动时,它都会读取 `STATE.md` 来定向自身。每当工作流完成一个有意义的步骤时,它都会回写 `STATE.md`。智能体不依赖记忆;它们依赖文件。 + +--- + +## 权衡 + +这里需要如实说明权衡之处。 + +**额外开销。** 阶段循环引入了真实的摩擦。将 `/gsd-discuss-phase`、`/gsd-plan-phase` 和 `/gsd-execute-phase` 作为独立步骤运行,比直接在普通会话中输入"实现这个功能"需要更多的耗时。对于小型、已充分理解的改动,这种开销并不值得。 + +**延迟。** 生成多个拥有全新上下文的子智能体,比单次上下文内编辑要慢。研究、规划和执行各自都会产生往返成本。 + +**简单任务的繁文缛节。** 如果你只需要重命名一个变量、修复一个错别字,或添加一个缺失的导入,阶段循环就是杀鸡用牛刀。GSD Core 提供了 `/gsd-quick` 和 `/gsd-fast`,用于处理不需要完整阶段的临时工作。请参阅[处理快速任务](../how-to/handle-quick-and-fast-tasks.md)。 + +当工作足够复杂、上下文腐化成为真实风险时,阶段循环才物有所值——例如多文件功能、横切重构、跨越数小时或多个会话的工作。其他情况下,请使用更轻量的原语。 + +一个有用的经验法则:如果任务可以用一个简短的提示完整描述,且无需进一步澄清就能在一次智能体回合中完成,跳过阶段循环。如果任务需要研究、涉及你近期未读取的文件,或依赖尚未确定的决策,阶段循环则能保护你。 + +--- + +## 相关内容 + +- [阶段循环](the-phase-loop.md) — 讨论 → 规划 → 执行 → 验证 → 发布的循环如何将上下文工程付诸实践 +- [多智能体编排](multi-agent-orchestration.md) — 子智能体如何被生成、限定范围和协调 +- [架构](../ARCHITECTURE.md) — 系统架构、智能体模型和数据流 +- [文档索引](../README.md) diff --git a/docs/zh-CN/explanation/multi-agent-orchestration.md b/docs/zh-CN/explanation/multi-agent-orchestration.md new file mode 100644 index 000000000..8a991da9c --- /dev/null +++ b/docs/zh-CN/explanation/multi-agent-orchestration.md @@ -0,0 +1,216 @@ +# GSD Core 中的多智能体编排 + +> **说明文档** — 本文档阐述 GSD Core *为何*围绕多智能体编排进行设计,以及*各组件如何协同工作*。这不是操作指南。有关配置,请参阅 +> [配置模型配置文件](../how-to/configure-model-profiles.md) 和 +> [配置参考](../CONFIGURATION.md)。有关完整的智能体清单, +> 请参阅 [清单](../INVENTORY.md)。 + +--- + +## 本设计解决的问题 + +AI 编程智能体会逐渐退化。这并非因为模型变差,而是因为 +*上下文窗口被填满*。随着对话的增长,早期的决策和代码 +会被中间步骤的噪音挤出或稀释。当智能体在复杂任务中写到第五个文件时, +它可能已经忘记了第一条消息中说明的约束条件。这种现象有时被称为*上下文腐化*。 + +GSD Core 的多智能体设计正是对这一问题的直接回应。与其让一个 +长期运行的智能体承担整个会话,不如让一个轻量编排器派生出 +短暂存在的专用智能体,每个智能体都拥有**全新的 200K token 上下文窗口**, +并且*只获取完成其特定工作所需的工件*。编排器自身从不承担繁重工作; +它加载上下文、派生合适的智能体、收集结果,并在 `.planning/` 中更新共享状态。 + +--- + +## 编排器 → 智能体模式 + +`get-shit-done/workflows/` 中的每个工作流都遵循相同的结构: + +```text +Orchestrator (workflow .md file) + │ + ├── Load context + │ gsd-tools.cjs init + │ → JSON: project info, config, state, phase details + │ + ├── Resolve model + │ gsd-tools.cjs resolve-model + │ → opus | sonnet | haiku | inherit + │ + ├── Spawn specialised agent (Task/SubAgent call) + │ ├── Agent definition (agents/*.md) + │ ├── Context payload (init JSON) + │ ├── Model assignment + │ └── Tool permissions + │ + ├── Collect result + │ + └── Update state + gsd-tools.cjs state update / state patch / state advance-plan +``` + +编排器被刻意设计为轻量级。它不对领域进行推理, +不编写代码,也不解读结果——仅将结果路由到下一个步骤。 +这种边界使每一层的职责清晰,并防止编排器的上下文积累领域噪音。 + +### 智能体清单 + +GSD Core 的智能体按功能类别划分,对应 +研究 → 规划 → 执行 → 验证的流水线: + +| 类别 | 智能体 | 典型并行度 | +|---|---|---| +| 研究员 | `gsd-project-researcher`、`gsd-phase-researcher`、`gsd-ui-researcher`、`gsd-advisor-researcher` | 4 个并行(技术栈、功能、架构、潜在问题) | +| 综合员 | `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 个并行子探针 | +| 审计员 | `gsd-ui-auditor`、`gsd-security-auditor` | 顺序执行 | + +每个智能体定义(位于 `agents/*.md`)声明了其允许的工具访问权限、 +用途以及终端输出颜色。仅需读取文件并写入单个输出文档的智能体 +只获得这些权限——无 Bash 执行权限,无法访问更广泛的状态。 +该约束是刻意为之的:如果智能体行为异常,可将影响范围控制在最小。 + +有关完整的 31 个智能体清单,请参阅 [清单](../INVENTORY.md#agents-31-shipped)。 + +--- + +## 基于波次的并行执行 + +多智能体设计最直观的体现是 `/gsd-execute-phase` +如何处理一组可能相互依赖的计划。 + +在派生任何执行员之前,编排器会执行**波次分析**: +读取每个 `PLAN.md` 文件中的依赖声明,并将计划分组成波次。 +没有声明依赖的计划构成第 1 波次并并行运行。 +依赖第 1 波次的计划构成第 2 波次,以此类推。 + +```text +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 token,或在支持的模型上最高 1M) +- 接收其负责的特定 `PLAN.md` +- 接收项目上下文(`PROJECT.md`、`STATE.md`) +- 接收阶段上下文(`CONTEXT.md`、`RESEARCH.md`,如果可用) +- 完成时生成原子 git 提交 +- 写入描述构建内容的 `SUMMARY.md` + +当一个波次内的所有执行员完成后,编排器对整个波次运行一次 +pre-commit 钩子。执行员使用 `--no-verify` 提交,以防止 +多个智能体并行提交时发生构建锁定争用(例如 Rust 项目中的 Cargo 锁定冲突)。 +因此,钩子每个波次运行一次,而非每次提交运行一次。 + +### 并行提交安全性 + +两种机制防止多个执行员同时运行时发生写入冲突: + +1. **`STATE.md` 的原子锁** — 每次写入 `STATE.md` 都使用 + 带有 `O_EXCL` 原子创建的锁文件(`STATE.md.lock`)。这防止了 + 两个智能体各自读取文件、修改不同字段、后写入者覆盖先写入者 + 更改的读-改-写竞态条件。过期锁(超过 10 秒)会被自动清除。 + +2. **每波次运行钩子** — 每个执行员独立运行 pre-commit 钩子 + (这可能在共享构建工件上引发文件级争用),编排器在 + 每个波次完成后运行一次 `git hook run pre-commit`。 + +--- + +## 针对大窗口模型的自适应上下文丰富 + +标准的 200K 上下文窗口足以让执行员实现一个专注的计划。 +当配置的 `context_window` 达到 500K token 或更大时 +(例如在 1M 级模式下使用 Opus 4.6 或 Sonnet 4.6), +编排器会自动使用标准窗口无法容纳的额外上下文来丰富子智能体提示: + +- **执行员智能体**接收前一波次的 `SUMMARY.md` 文件和阶段 + `CONTEXT.md`/`RESEARCH.md`,使其在阶段内具备跨计划感知能力 +- **验证员智能体**接收所有 `PLAN.md`、`SUMMARY.md` 和 `CONTEXT.md` + 文件以及 `REQUIREMENTS.md`,实现具有历史感知能力的验证 + +此丰富功能以 `config.json` 中的 `context_window` 值为条件。 +在标准窗口配置下,提示使用截断版本,并采用缓存友好的排序 +以最大化 token 效率。 + +--- + +## 为何采用此设计——与上下文工程的关联 + +只有作为更广泛的*上下文工程*方法的一部分, +编排器 → 智能体模式才有意义:这一理念认为, +AI 智能体上下文窗口中包含的内容与模型层级或提示质量同样重要。 +完整论述请参阅[上下文工程](context-engineering.md)。 + +多智能体编排以两种方式将上下文工程付诸实践: + +**上下文隔离。** 每个智能体只接收它所需要的内容。研究员 +获取项目描述和领域问题;它不会获取完整的规划历史。 +验证员获取每个计划和摘要;它不会获取原始研究资料。 +隔离使每个智能体的上下文充满信号,而非被其他流水线阶段的噪音稀释。 + +**跨会话的上下文卫生。** 由于所有状态都以人类可读的 Markdown 和 JSON +存储在 `.planning/` 中(而非任何智能体的上下文窗口中), +GSD 工作流能够在上下文重置(`/clear`)、标签页切换和 +多日中断后继续运行。下一个智能体始终从持久化的、经过验证的 +工件启动,而非从漫长对话的重建记忆中启动。 + +--- + +## 权衡 + +多智能体编排并非没有代价。 + +**协调开销。** 每次智能体派生都是一次往返:编排器 +必须格式化提示、移交上下文、等待子智能体完成 +(通常需 1–5 分钟),然后解析结果。对于简单任务, +单个能力强大的智能体在一个上下文中工作会更快完成。GSD 通过 +将并行化作为默认方式来缓解这一问题(在依赖关系允许的情况下)—— +`plan-phase` 中的四个研究员同时运行,而非顺序运行。 + +**执行期间的不透明性。** 当子智能体运行时,其工作对父会话不可见。 +没有实时进度流。这是全新上下文设计的刻意结果: +子智能体在其自己的上下文窗口中运行。编排器在 +派生行显示活跃性提示("runs in a subagent — no output until it returns") +以设定预期。 + +**上下文拼接成本。** 为每个智能体打包正确的工件 +需要编排器花费 token 来组装和传输上下文负载。 +这是隔离的代价。`gsd-tools.cjs init` 处理器 +生成一个在完整性与 token 预算之间取得平衡的 JSON 负载, +采用缓存友好的排序,使负载中稳定的部分(项目定义、配置) +在重复调用时命中缓存。 + +**模型成本放大。** 在 Opus 层级并行运行五个智能体 +比运行一个成本更高。模型配置文件系统(`model_profiles.md`, +由 `model-profiles.cjs` 按智能体解析)让您可以为 +不那么关键的智能体分配更低成本的层级。`dynamic_routing` 功能 +通过以更低层级启动每个智能体并仅在软失败时升级来进一步降低成本。 +完整选项请参阅[配置](../CONFIGURATION.md)。 + +为换取这些代价,该设计实现了*大型阶段的一致质量*。 +在 400 行计划中编写第十个文件的执行员不会退化, +因为其上下文是全新的。检查二十个需求的验证员不会忘记前十个, +因为它以结构化输入而非对话历史的形式接收了所有需求。 + +--- + +## 相关资源 + +- [上下文工程](context-engineering.md) — 驱动本设计的上游原则 +- [配置模型配置文件](../how-to/configure-model-profiles.md) — 如何按智能体分配模型层级 +- [配置参考](../CONFIGURATION.md) — 完整的 `config.json` 架构, + 包括 `models`、`model_overrides`、`dynamic_routing` 和 + `context_window` +- [清单](../INVENTORY.md) — 权威的智能体清单和工作流列表 +- [架构](../ARCHITECTURE.md#agent-model) — 编排器 → 智能体模式和 + 波次执行模型的实现层面细节 +- [文档索引](../README.md) diff --git a/docs/zh-CN/explanation/security-model.md b/docs/zh-CN/explanation/security-model.md new file mode 100644 index 000000000..9250066bb --- /dev/null +++ b/docs/zh-CN/explanation/security-model.md @@ -0,0 +1,117 @@ +# GSD Core 安全模型 + +> **说明** — 本文档描述 GSD Core 为何采用当前的安全立场,以及各防护层如何协同工作。本文不是每个钩子参数的参考手册。有关 `/gsd-secure-phase` 命令及其选项,请参阅[命令文档](../COMMANDS.md)。有关实现层面的钩子架构,请参阅[架构文档 § 钩子系统](../ARCHITECTURE.md#hook-system)。有关组织级安全基线(扫描器控制、事件处理清单、所有权模型),请参阅 [SECURITY.md](../../../SECURITY.md)。 + +--- + +## 为何 AI 驱动的开发需要专项安全立场 + +传统代码编辑器不会代表用户执行任意软件包。GSD Core 会。其研究 → 计划 → 执行的流水线将从"命名一个软件包"到"运行 `npm install `"、从"编写规划产物"到"将该产物用作 LLM 系统提示"的完整路径全部自动化。每一个自动化步骤都将人从环路中移除——而每次移除都是潜在的攻击面。 + +GSD Core 的安全模型围绕一个核心原则构建:**纵深防御**。没有任何单一控制措施被认为是完美的。多个相互重叠的层各自降低一类特定风险,共同使攻击面大幅难以利用——尽管并未彻底消除。本文档末尾的诚实总结说明了该系统无法防御的内容。 + +--- + +## 第一层 — 供应链保护:软件包合法性门控 + +### 威胁 + +AI 模型会产生幻觉性软件包名称。这并非边缘故障模式:2025 年的研究表明,AI 生成的软件包引用中约有 20% 是幻觉名称,与合法软件包并不对应。这些幻觉名称中有一部分——同一研究中约 43%——在提示词中持续重复出现,这意味着攻击者可以观察 AI 工具常见生成的名称,然后在 npm、PyPI 或 crates.io 上预先注册这些名称,并附带恶意的安装后脚本。这种技术称为 *slopsquatting*。 + +Slopsquatting 的隐蔽之处在于,通过 `npm view` 验证的幻觉名称*看起来是合法的*。注册表条目仅证明有人注册了该名称——并不能证明该软件包实现了 AI 所描述的功能,也不能证明它有任何合法用户,更不能证明其安装脚本是安全的。若没有门控,幻觉名称将无声地流过 GSD 的研究员 → 规划员 → 执行员流水线,最终在您的机器上作为 `npm install ` 运行。 + +### 门控机制 + +门控机制跨三个流水线阶段运行: + +**研究阶段。** 当 `gsd-phase-researcher` 推荐外部软件包时,它会对每个软件包运行 `slopcheck install --json`。结果会以 `## Package Legitimacy Audit` 表格的形式写入 `RESEARCH.md`。标记为 `[SLOP]`(高置信度幻觉或攻击者注册)的软件包在保存前会**从 `RESEARCH.md` 中完全删除**,永远不会到达规划员。 + +**规划阶段。** `gsd-planner` 读取审计表。对于任何标记为 `[SUS]`(可疑:新注册、下载量低、无源代码仓库,或命名模式接近某热门软件包)或 `[ASSUMED]`(来自 WebSearch 而非直接注册表验证)的软件包,规划员会在安装步骤之前**插入一个 `checkpoint:human-verify` 任务**。该检查点包含指向注册表页面的直接链接,以及需要重点核查的内容:维护者历史、问题跟踪器活动、是否存在可疑的安装脚本。 + +**执行阶段。** 若安装失败,`gsd-executor` 会**触发检查点并停止**。它不会静默地尝试备用软件包名称——因为备用名称本身可能也是恶意的。这是执行员行为定义中的明确规则(执行员代理定义中的 RULE 3)。 + +### 为何 WebSearch 软件包始终标记为 `[ASSUMED]` + +通过 WebSearch 发现的软件包名称无论 `npm view` 是否成功,均标记为 `[ASSUMED]`。在注册表中存在的软件包不等于可以安全安装的软件包。`npm view` 仅证明注册,而非合法性。`[ASSUMED]` 标签与 `[SUS]` 触发相同的人工验证检查点,确保任何未经验证的网络发现推荐在安装前均须经过人工审核。 + +### 生态系统覆盖范围 + +研究员使用各生态系统专属的验证命令,而非单一通用检查: + +- Node.js:`npm view` +- Python:`pip index versions` +- Rust:`cargo search` + +这覆盖了跨生态系统幻觉——根据 2025 年 USENIX 研究,其发生率约为 9%——即 AI 推荐的软件包存在于某个生态系统,但并不存在于实际使用的生态系统中。 + +### 优雅降级 + +若 `slopcheck` 不可用(未安装,或研究阶段 pip 安装失败),GSD 应用最严格的兜底策略:**每个推荐软件包均标记为 `[ASSUMED]`**,规划员对每次安装均设置 `checkpoint:human-verify` 任务。研究和规划照常进行——系统不会因缺少工具依赖而硬性失败。这有意比正常流程更严格:`slopcheck` 不可用意味着每次软件包安装都会有人工检查点。 + +`slopcheck` 工具采用 MIT 协议,可通过 pip 安装。若该工具被废弃,`[ASSUMED]` 门控兜底策略确保人工检查点覆盖无论如何均能维持。 + +--- + +## 第二层 — 提示注入防御 + +### 威胁 + +GSD Core 生成的 Markdown 文件会成为 LLM 系统提示。研究流水线读取外部网页内容;规划流水线接受用户提供的文本(`--text-file`、`--prd`);执行流水线写入规划产物,这些产物稍后会作为代理上下文被重新读取。任何流入这些产物的用户可控文本都是潜在的**间接提示注入**向量——攻击者控制的字符串一旦进入系统提示,就会尝试覆盖代理指令或窃取信息。 + +### 防御机制 + +GSD Core 在三个层面应对提示注入。 + +**输入验证(`security.cjs`)。** `get-shit-done/bin/lib/security.cjs` 模块是核心安全工具。它提供: + +- 路径遍历防护:用户提供的文件路径(`--text-file`、`--prd`)经过验证,确保解析在项目目录内,并显式处理 macOS `/var` → `/private/var` 符号链接解析 +- 提示注入检测:已知注入模式(角色覆盖、指令绕过、系统标签注入)在用户提供的文本进入任何规划产物之前进行扫描 +- 安全 JSON 解析:防止通过精心构造的 JSON 负载发动原型污染攻击的包装器 +- Shell 参数验证:传递给子 Shell 命令的参数在使用前经过验证 + +**运行时钩子:`gsd-prompt-guard.js`。** 该钩子在每次针对 `.planning/` 文件的 Write 或 Edit 调用时触发。它扫描待写入内容中的注入模式,与 `security.cjs` 相同(部分模式直接内联到钩子中以实现独立性——钩子不 `require()` 该模块,因此即使模块路径改变也能运行)。检测结果**仅供参考**:钩子记录发现但不阻止写入。其原因在于,对合法规划写入的误报拦截比二级扫描层漏掉一次注入更具破坏性。 + +**运行时钩子:`gsd-read-injection-scanner.js`。** 该钩子在每次 Read 工具调用的输出时触发。它扫描*刚刚读取的内容*中在不可信内容中注入的指令——捕获攻击者在 GSD 即将纳入代理上下文的文件中嵌入指令的情况。 + +**CI 扫描器。** `prompt-injection-scan.test.cjs` 作为测试套件的一部分,扫描所有代理、工作流和命令文件中嵌入的注入向量。这能捕获 GSD 源代码本身的注入尝试——例如,修改工作流文件以添加角色覆盖指令的供应链攻击。 + +### 读取注入扫描器与提示守卫的对比 + +两个钩子覆盖互补的攻击面。`gsd-prompt-guard.js` 监视*对规划产物的写入*——捕获注入的植入。`gsd-read-injection-scanner.js` 监视*任何文件的读取*——捕获来自外部内容的注入摄取(依赖项的 README、第三方配置文件、用户提供的文档)。两者共同覆盖了摄取 → 存储 → 再读取的完整生命周期。 + +--- + +## 第三层 — 仓库与依赖完整性 + +在 GSD 运行时行为的上游,`open-gsd` 组织在仓库和软件包层面实施控制。这些控制在 [`docs/security/baseline.md`](../../security/baseline.md) 中有完整文档,此处为完整性摘要。 + +**依赖完整性。** 所有第三方依赖通过 `package-lock.json` 锁定,并在安装前与已发布的校验和进行验证。`scripts/check-npm-integrity.cjs` 门控在 CI 阶段检测版本无效、缺失软件包和多余软件包。这能缓解针对 GSD 自身依赖的依赖混淆和拼写抢注攻击。 + +**密钥扫描。** 每次提交和 PR 均扫描硬编码密钥。有意的测试夹具必须使用项目标准排除语法进行标注(标注格式见 `SECURITY.md`)。未标注的抑制项将导致 CI 失败。 + +**区域设置安全文本扫描。** 输出和面向用户的字符串会扫描 Unicode 同形字符、双向覆盖字符以及不可见 Unicode——即 CVE-2021-42574("特洛伊木马源代码")中记录的那类可在差异中隐藏恶意内容的攻击。 + +--- + +## 权衡与局限 + +本文描述的安全模型切实降低了 AI 驱动开发的攻击面,但并未消除供应链风险。 + +**软件包合法性门控降低的风险:** 幻觉或攻击者注册的软件包在没有人工检查点的情况下到达 `npm install` 的概率。`[SLOP]` 门控彻底删除高置信度的恶意软件包;`[SUS]` / `[ASSUMED]` 门控要求在执行前进行人工审核。这大幅提升了成功 slopsquatting 攻击的成本。 + +**软件包合法性门控无法消除的风险:** 之后遭到入侵的合法软件包(账户接管、其自身依赖树中的依赖混淆)不会被 slopcheck 捕获——slopcheck 在研究阶段检查注册信号。锁定文件和依赖完整性层的 `npm audit` 才是应对此类攻击的控制手段。 + +**提示注入防御降低的风险:** 规划产物中用户可控文本成功覆盖代理指令的概率。基于模式匹配的已知注入形式能捕获常见情况;新颖的越狱方法或低信号注入可能无法被检测到。仅供参考的立场意味着检测结果被记录但不会被阻止——这是一个经过深思熟虑的选择,以牺牲在检测时硬性停止为代价换取工作流的连续性。 + +**提示注入防御无法消除的风险:** 足够有创意的、与已知模式不匹配的注入,或通过钩子未覆盖渠道到来的注入(例如,注入到依赖项已发布 README 中、由子代理在浏览文档时读取的内容)。纵深防御意味着每一层使攻击更难——而非任何单一层使其不可能。 + +**漏洞报告。** 请通过 GitHub 私有安全公告提交,地址为 `https://github.com/open-gsd/gsd-core/security/advisories/new`。请勿开启公开 issue。响应时间表和披露政策请参阅 [SECURITY.md](../../../SECURITY.md)。 + +--- + +## 相关文档 + +- [命令文档](../COMMANDS.md) — 包含 `/gsd-secure-phase` 和 `/gsd-code-review` 及安全相关标志 +- [架构文档 § 钩子系统](../ARCHITECTURE.md#hook-system) — 每个钩子的实现细节、事件触发器及安全属性 +- [SECURITY.md](../../../SECURITY.md) — 漏洞报告、组织级安全基线、密钥扫描排除治理及依赖完整性验证 +- [文档索引](../README.md) diff --git a/docs/zh-CN/explanation/the-phase-loop.md b/docs/zh-CN/explanation/the-phase-loop.md new file mode 100644 index 000000000..90d3ebbb6 --- /dev/null +++ b/docs/zh-CN/explanation/the-phase-loop.md @@ -0,0 +1,129 @@ +# 阶段循环 + +> GSD Core 组织工作的核心思维模型。 + +--- + +## 循环是什么 + +GSD Core 将所有开发工作结构化为一个重复周期: + +```text +Discuss → (UI design) → Plan → Execute → Verify → Ship +``` + +每个工作单元——称为**阶段**——按顺序经历这些步骤。循环并非形式主义。每个步骤的存在都是为了防范某一类特定的失败,而这类失败是上一步骤单独无法预防的。 + +本文档解释*为什么*循环是这种形态。有关运行每个步骤的操作说明,请参见底部链接的操作指南。 + +--- + +## 每个步骤存在的原因 + +### Discuss + +在知道*如何*构建某物之前,规划无法开始——而不仅仅是*构建什么*。`ROADMAP.md` 中的阶段目标描述了结果。Discuss 步骤捕捉塑造通往该结果路径的实现决策:选用哪些库、采用哪种错误处理策略、某功能是按路由还是全局实现、边缘情况应如何处理。 + +没有 Discuss 步骤,规划器必须自行做出这些判断。有时它猜对了。但往往猜得似是而非却实际有误——产出一个逻辑连贯却与你实际偏好相悖的计划。等到执行完成、发现错误时,你已经在撤销大量工作了。 + +Discuss 步骤刻意保持轻量。它是一次对话,而非规格说明练习。输出是阶段目录中的 `CONTEXT.md`:一份规划器、执行器和验证器都可以阅读的结构化决策记录。对话只需几分钟,却能节省数小时的返工时间。 + +### UI design(可选) + +对于有视觉组件的阶段,在 Discuss 和 Plan 之间有一个可选的 `/gsd-ui-phase` 步骤。它生成 `UI-SPEC.md`——一份在编写任何代码之前描述布局、交互和视觉行为的设计契约。当 UI 足够复杂,设计中的歧义会导致不同的实现选择时,值得运行此步骤。一份清晰的设计契约比重新实现要便宜得多。 + +### Plan + +Plan 步骤完成执行所需的研究、分解和结构性思考。它以一系列全新上下文的子代理运行:一个研究者调查生态系统并将发现记录在 `RESEARCH.md` 中,一个规划器同时阅读研究结果和 `CONTEXT.md` 以生成 `PLAN.md` 文件,以及一个计划检查器验证计划是否完整、一致且在范围内。 + +计划包含什么?每个 `PLAN.md` 描述一个有边界的工作单元:需要修改的文件、要做的具体更改、定义完成状态的验收标准。计划按依赖波次排序,以便并行执行是安全的——同一波次中的执行器处理互不重叠的关注点。 + +Plan 步骤是歧义代价最高的时刻。一个模糊的计划会产生一个需要做假设的执行器。多个并行执行器对同一关注点做出不同假设会产生冲突。计划检查器的工作是在执行开始前捕捉这些问题,而不是事后。 + +### Execute + +执行运行计划。每个执行器获得一个全新的 200k token 上下文窗口,其中精确加载了它所需的内容:项目摘要、阶段上下文、研究结果,以及其任务对应的特定 `PLAN.md`。仅此而已。 + +执行器编写代码并原子性地提交。每次提交对应计划中的一个已完成任务。当一波并行执行器完成时,协调器合并其状态并开始下一波。 + +执行器的全新上下文不是便利设施——它是防止上下文腐化的机制。一个带着 180k token 积累会话历史运行的执行器是一个性能退化的执行器。一个干净启动、只读取其计划所需内容的执行器,是以满状态运行的执行器。 + +### Verify + +所有执行器完成后,一个验证器代理读取阶段目标、`CONTEXT.md` 决策、计划和执行摘要——并检查构建的内容是否与预期相符。它生成 `VERIFICATION.md`,如果存在差异,则生成有针对性的修复计划。 + +验证不仅仅是测试。它检查需求覆盖率(所有 REQ-ID 都被处理了吗?)、决策覆盖率(`CONTEXT.md` 中记录的决策是否实际实现了?),以及整体阶段目标对齐情况。阶段完成不是因为执行没有报错。而是因为构建的内容符合计划,计划的内容符合决策。 + +### Ship + +Ship 步骤创建拉取请求并归档阶段产出物。`STATE.md` 更新以标记阶段完成。循环随后为下一个阶段重新开始。 + +--- + +## 里程碑与阶段 + +**里程碑**是一个版本周期——项目有意义的、可发布的增量。它有名称、版本号,以及定义其必须交付内容的一组需求。当里程碑的所有阶段都已发布且需求都已覆盖时,里程碑才算完成。 + +**阶段**是里程碑中的一个工作单元。阶段有目标、它所处理的一组需求,以及实现它的一组计划。 + +这种关系很重要,因为里程碑和阶段有不同的关注范围。里程碑问:"这个版本的产品能做什么,不能做什么?"阶段问:"下一个我们可以研究、规划、执行和验证的有边界的事情是什么?" + +里程碑边界划定在自然产品边界处——一个可部署的 API、一个可用的 UI 流程、一个完整的数据模型。阶段边界划定在可以在一次循环中安全执行而不使循环变得笨重的工作量极限处。 + +--- + +## 什么是好的阶段范围 + +这值得深入探讨,因为它是循环中最常见的摩擦来源。 + +阶段太大会变成一个独立的研究项目。规划器难以将其分解为独立计划。后续波次的执行器被阻塞,等待前面的波次。验证变成全面审计而非有针对性的审查。反馈周期从数小时延伸到数天,而在大量代码编写后期才发现根本性设计错误的风险急剧上升。 + +阶段太小则会将本属于一体的工作碎片化。你最终会得到只有几行的计划文件、在几分钟内完成的阶段,以及规划开销远超执行成本的局面。循环感觉像官僚主义而非帮助。 + +好的阶段范围具备以下特征: + +- 目标可以用一句话表述,既不显然琐碎,也不可疑宽泛。 +- 规划所需的研究是有边界的——生态系统问题有答案,且不依赖于其他阶段的先行完成。 +- 执行可以并行化为少数几个不重叠的计划,而不是几十个。 +- 有清晰的、可测试的完成定义,验证器无需阅读整个代码库即可检查。 + +具体来说:"添加 HMAC-SHA256 签名验证中间件"是一个好的阶段范围。"构建认证系统"通常不是——它几乎总是包含多个独立关注点,作为单独阶段会更好。"修复 README 中的拼写错误"低于循环能增添价值的门槛;请使用 `/gsd-quick` 代替。 + +有疑问时,拆分。更小的阶段完成得更快,验证更有把握,当设计决策被证明有误时也更容易纠偏。 + +--- + +## `.planning/` 如何在循环中保持状态 + +循环不是单次会话。研究、规划和执行可能跨越多个会话,中间有上下文重置。`.planning/` 目录使这成为可能。 + +循环的每个步骤都读取早期步骤产生的产出物,并为后续步骤写入产出物。Discuss 步骤生成的 CONTEXT.md 在规划器运行时仍然可用——即使那是数小时后的不同会话。规划器生成的 PLAN.md 文件在执行器运行时仍然可用——即使跨越重启。验证器写入的 VERIFICATION.md 在你审查阶段时仍然可用。 + +`STATE.md` 是凌驾于这一切之上的导航层。它精确记录项目当前在循环中所处的位置:哪个里程碑处于活动状态,哪个阶段正在进行,哪些计划已完成,哪些待处理。任何需要定向的代理或工作流都首先读取 `STATE.md`。 + +有关这些文件的精确结构,请参见[规划产出物](../reference/planning-artifacts.md)和 [STATE.md 架构](../reference/state-md.md)。 + +--- + +## 循环是一种节奏,而非约束 + +很容易将循环视为官僚主义——一组你在被允许编写代码之前必须执行的步骤。这种框架是错误的。 + +循环之所以存在,是因为每个步骤都能防范在事后修复真正代价高昂的失败。Discuss 防止在错误假设上规划。Plan 防止执行从根本上存在缺陷的设计。Verify 防止发布偏离了需求的工作。这些不是人为制造的问题。它们是真实功能规模的 AI 辅助开发的实际失败模式。 + +循环运行良好时,感觉像是一种节奏:有节奏的专注、有边界的工作,每个步骤都清晰,因为上一步骤做好了它的工作。开销是真实的,但它是前置支付的——用几分钟规划换取而不是数小时返工。 + +对于低于循环门槛的工作,GSD Core 提供更轻量的原语。阶段循环是一种工具,而非唯一工具。 + +--- + +## 相关内容 + +- [上下文工程](context-engineering.md) — 为什么全新上下文子代理能防止使循环成为必要的质量退化 +- [讨论一个阶段](../how-to/discuss-a-phase.md) +- [规划一个阶段](../how-to/plan-a-phase.md) +- [执行一个阶段](../how-to/execute-a-phase.md) +- [验证与发布](../how-to/verify-and-ship.md) +- [规划产出物](../reference/planning-artifacts.md) +- [STATE.md 架构](../reference/state-md.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/configure-model-profiles.md b/docs/zh-CN/how-to/configure-model-profiles.md new file mode 100644 index 000000000..f3e790985 --- /dev/null +++ b/docs/zh-CN/how-to/configure-model-profiles.md @@ -0,0 +1,218 @@ +# 如何配置模型配置文件 + +为您的项目选择合适的模型层级策略,然后在不编写大型覆盖块的情况下调整单个代理或整个阶段类型。本指南从最简单的控制选项开始,逐步介绍到动态路由。 + +--- + +## 四种配置文件(以及 `adaptive` 和 `inherit`) + +在 `.planning/config.json` 中设置 `model_profile`,或通过 `/gsd-config --profile ` 设置: + +| 配置文件 | 规划器 | 执行器 | 研究员 | 验证器 | 适用场景 | +|---------|---------|----------|-------------|----------|----------| +| `quality` | Opus | Opus | Opus | Sonnet | 对成本要求较低、注重生产质量的工作 | +| `balanced` | Opus | Sonnet | Sonnet | Sonnet | 常规开发——默认选项 | +| `budget` | Sonnet | Sonnet | Haiku | Haiku | 快速原型开发、成本敏感场景 | +| `adaptive` | Opus | Sonnet | Sonnet | Sonnet | 与其他层级在运行时感知配置文件下的解析方式相同;在频繁切换运行时环境时使用 | +| `inherit` | (会话模型) | (会话模型) | (会话模型) | (会话模型) | 非 Anthropic 提供商(OpenRouter、本地模型)——所有代理遵循当前会话模型 | + +上表展示的是代表性子集。全部 33 个内置代理在 `sdk/shared/model-catalog.json` 中均有明确的按配置文件层级分配。完整表格请参阅配置参考中的 [模型配置文件](../CONFIGURATION.md#model-profiles)。 + +**通过命令快速切换:** + +```bash +/gsd-config --profile balanced # Normal development +/gsd-config --profile budget # Prototyping or high-cost phases +/gsd-config --profile quality # Production release +/gsd-config --profile inherit # OpenRouter, local models +``` + +**或直接编辑 `.planning/config.json`:** + +```json +{ + "model_profile": "balanced" +} +``` + +--- + +## 按代理覆盖(`model_overrides`) + +如果某个代理需要不同的层级而不想更改整个配置文件,请使用 `model_overrides`: + +```json +{ + "model_profile": "balanced", + "model_overrides": { + "gsd-executor": "opus", + "gsd-codebase-mapper": "haiku" + } +} +``` + +有效值:`opus`、`sonnet`、`haiku`、`inherit`,或任何完全限定的模型 ID(例如 `"openai/o3"`、`"google/gemini-2.5-pro"`)。 + +`model_overrides` 可在 `.planning/config.json` 中按项目设置,也可在 `~/.gsd/defaults.json` 中全局设置。项目级条目在冲突时优先;不冲突的全局条目会被保留。 + +**关于 Codex 和 OpenCode 的重要说明:** 这些运行时会在安装时将解析后的模型嵌入每个代理的静态配置中。编辑 `model_overrides` 后,需重新运行安装程序使更改生效: + +```bash +npx @opengsd/gsd-core@latest --codex --global # or --opencode, --kilo, etc. +``` + +--- + +## 按阶段类型设置模型(`models`) + +如果您希望在不学习全部 33 个代理名称的情况下实现"规划阶段用 Opus、其余用 Sonnet"的效果,请使用 `models` 块。它将六种阶段类型映射到层级别名: + +```json +{ + "model_profile": "balanced", + "models": { + "planning": "opus", + "discuss": "opus", + "research": "sonnet", + "execution": "opus", + "verification": "sonnet", + "completion": "sonnet" + } +} +``` + +阶段类型及其对应的代理: + +| 阶段类型 | 涵盖的代理 | +|---|---| +| `planning` | `gsd-planner`、`gsd-roadmapper`、`gsd-pattern-mapper` | +| `research` | `gsd-phase-researcher`、`gsd-project-researcher`、`gsd-research-synthesizer`、`gsd-codebase-mapper`、`gsd-ui-researcher` | +| `execution` | `gsd-executor`、`gsd-debugger`、`gsd-doc-writer` | +| `verification` | `gsd-verifier`、`gsd-plan-checker`、`gsd-integration-checker`、`gsd-nyquist-auditor`、`gsd-ui-checker`、`gsd-ui-auditor`、`gsd-doc-verifier` | +| `discuss`、`completion` | 保留——目前无子代理;已被模式接受以备向后兼容 | + +`models` 块仅接受层级别名(`opus`、`sonnet`、`haiku`、`inherit`)。如需使用完全限定的模型 ID,请改用按代理设置的 `model_overrides`。 + +**将 `models` 与按代理例外结合使用:** + +```json +{ + "model_profile": "balanced", + "models": { + "research": "sonnet" + }, + "model_overrides": { + "gsd-codebase-mapper": "haiku" + } +} +``` + +全部五个研究代理解析为 `sonnet`,*除* `gsd-codebase-mapper` 被固定为 `haiku` 之外。 + +--- + +## 动态路由——默认使用低成本层级,失败时升级 + +如果您希望默认使用较低成本的层级,仅在代理未通过质量门控时才升级,请启用 `dynamic_routing`: + +```json +{ + "dynamic_routing": { + "enabled": true, + "tier_models": { + "light": "haiku", + "standard": "sonnet", + "heavy": "opus" + }, + "escalate_on_failure": true, + "max_escalations": 1 + } +} +``` + +每个代理都有一个默认层级(`light`、`standard` 或 `heavy`)。第一次尝试时,GSD Core 选择 `tier_models[default_tier]`。如果编排器检测到软失败(验证不确定、计划检查被标记等),则将代理提升一级重新启动。`max_escalations` 限制总重试次数。 + +已处于 `heavy` 层级的代理无法进一步升级。 + +**在保留动态解析的同时关闭升级:** + +```json +{ + "dynamic_routing": { + "enabled": true, + "escalate_on_failure": false + } +} +``` + +无论结果如何,每次尝试都使用 `tier_models[default_tier]`——适用于希望明确指定层级到模型的映射但不需要升级行为的场景。 + +`dynamic_routing` **默认禁用**。省略该块或设置 `enabled: false` 将保留静态解析。 + +--- + +## 在非 Anthropic 运行时上使用 GSD Core + +如果您为 Codex、OpenCode、Gemini CLI 或 Kilo 安装了 GSD Core,安装程序已在您的配置中设置了 `resolve_model_ids: "omit"`。这告知 GSD Core 跳过 Anthropic 模型 ID 解析,让运行时选择其自己的默认模型。基本情况下无需手动设置。 + +**如果您希望在 Codex 上使用分层模型:** + +```json +{ + "runtime": "codex", + "model_profile": "balanced" +} +``` + +GSD Core 将每个层级别名解析为运行时层级映射中定义的 Codex 原生模型和推理力度。 + +**如果您希望在任意非 Claude 运行时上使用按代理模型 ID:** + +```json +{ + "resolve_model_ids": "omit", + "model_overrides": { + "gsd-planner": "o3", + "gsd-executor": "o4-mini", + "gsd-debugger": "o3" + } +} +``` + +有关完整的运行时感知配置文件参考及 `model_policy` 接口(v1.42 中新增的提供商中立预设),请参阅[配置参考——模型配置文件](../CONFIGURATION.md#model-profiles)。 + +--- + +## 解析优先级(从高到低) + +当多个层级同时适用时,解析器选取优先级最高的条目: + +```text +1. model_overrides[] — per-agent; full IDs; targeted exception +2. dynamic_routing.tier_models[] — when enabled; escalates on soft failure +3. models[] — coarse phase-level tier +4. model_profile (per-agent column) — global tier strategy +5. Runtime default — when nothing else applies +``` + +--- + +## 选择合适的控制选项 + +| 您的需求 | 使用 | +|---|---| +| 对所有代理采用统一的层级策略 | `model_profile` | +| 粗粒度的阶段级调整("规划阶段用 Opus") | `models.` | +| 按代理精细控制("强制代码库映射器使用 Haiku") | `model_overrides[]` | +| 为特定代理指定完全限定的模型 ID | `model_overrides[]: "openai/gpt-5"` | +| 默认低成本,仅在失败时升级 | `dynamic_routing` | +| 所有代理遵循会话模型(非 Anthropic 提供商) | `model_profile: "inherit"` | + +--- + +## 相关文档 + +- [配置参考](../CONFIGURATION.md) +- [多代理编排](../explanation/multi-agent-orchestration.md) +- [命令参考](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/debug-a-failed-execution.md b/docs/zh-CN/how-to/debug-a-failed-execution.md new file mode 100644 index 000000000..522b16508 --- /dev/null +++ b/docs/zh-CN/how-to/debug-a-failed-execution.md @@ -0,0 +1,178 @@ +# 如何调试失败的执行 + +**目标:** 在某个阶段执行失败、卡住或产生不完整工作时进行恢复,并在不丢失进度或重复已成功工作的情况下干净地继续。 + +**前提条件:** 您已运行 `/gsd-execute-phase N`,执行在写入 `VERIFICATION.md` 之前停止,或者您看到意外输出、缺少文件,或进度条卡住不动。 + +--- + +## 判断执行是卡住还是失败 + +在采取任何恢复操作之前,先确认实际发生了什么。 + +### 如果您看到"Spawning…"后超过 1–5 分钟没有输出 + +这是正常现象,并非冻结。GSD 子代理在独立的上下文窗口中运行。spawn 行上的存活注释可以确认这一点。请不要中断会话。 + +如果超过 10 分钟仍无结果,请检查 Claude Code 侧边栏。如果代理任务显示已完成但没有输出,结果可能在上下文切换中丢失——请重新运行相同的命令: + +```bash +/gsd-execute-phase 1 +``` + +GSD 在分派执行器之前会检查 `SUMMARY.md` 文件。已有该文件的计划将被自动跳过。 + +### 如果执行在某个 wave 中途停止并显示错误信息 + +检查 git 历史记录,查看哪些计划已成功提交: + +```bash +git log --oneline -20 +``` + +已提交工作的计划会有类似 `feat(01-02): …` 的条目。没有提交的计划是不完整的,重新运行时会被重新执行。 + +### 如果执行器已提交代码但未写入 SUMMARY.md + +GSD 会在下次运行时检测到这一情况,并弹出一个安全恢复确认界面,提供三个选项: + +- **手动收尾** — 自行检查提交内容,写入 `SUMMARY.md`,然后重新运行。 +- **从头重新执行** — 在分派新执行器之前,回滚或覆盖部分提交。 +- **标记并跳过** — 记录异常并继续,仅在您明确确认后执行。 + +--- + +## 诊断根本原因 + +### 运行 `/gsd-debug --diagnose` + +如果执行产生了错误输出、存根代码或验证失败,使用诊断模式进行调查,而不应用任何修复: + +```bash +/gsd-debug --diagnose "Phase 2 executor produced stubs instead of real code" +``` + +`--diagnose` 在找到根本原因后停止,不修改您的文件。它会在 `.planning/debug/.md` 创建一个会话文件,以便您在需要时稍后继续调查。 + +要启动同时应用修复的完整调试会话: + +```bash +/gsd-debug "Login middleware not handling 401 correctly after phase 3" +``` + +GSD 收集症状,使用科学方法进行结构化调查,并提出修复方案。如果您的配置中设置了 `tdd_mode: true`,则在应用任何修复之前需要先有一个失败的测试。 + +### 查看活动调试会话 + +```bash +/gsd-debug list +``` + +显示所有打开的会话及其当前假设和下一步操作。要恢复特定会话: + +```bash +/gsd-debug continue +``` + +--- + +## 使用 `/gsd-forensics` 进行事后分析 + +如果根本原因从错误输出中无法判断——例如,计划引用了不存在的文件、执行产生了意外结果,或状态似乎已损坏——请运行取证调查: + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +GSD 分析 git 历史记录、`.planning/` 制品完整性、STATE.md 一致性、未提交的工作和孤立的 worktree。它将结构化报告写入 `.planning/forensics/report-.md`,并给出推荐的修复步骤。 + +`/gsd-forensics` 是只读的——它不会修改您的项目文件。 + +**可检测的问题:** + +- **卡死循环** — 同一文件在短时间内出现在三个或更多连续提交中(如果提交消息相似,则置信度为 HIGH) +- **缺失制品** — 某阶段有提交但没有 `SUMMARY.md` 或 `VERIFICATION.md` +- **遗弃的工作** — 存在未提交的更改,且 STATE.md 显示执行进行到一半,最后一次提交超过两小时前 +- **崩溃或中断** — 未提交的更改结合活动的执行状态和孤立的 worktree +- **范围漂移** — 最近的提交触及了当前阶段预期文件集之外的文件 + +--- + +## 恢复后继续执行 + +一旦底层问题解决,重新运行执行命令: + +```bash +/gsd-execute-phase 1 +``` + +GSD 会跳过 `SUMMARY.md` 已存在的计划,仅为剩余计划分派执行器。 + +如果您只需要重新执行特定的 wave: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +如果您想在分派前验证 `.planning/` 的完整性: + +```bash +/gsd-execute-phase 1 --validate +``` + +--- + +## 使用 `/gsd-undo` 回滚 + +如果执行产生了您想完全丢弃的代码,请使用计划清单进行回滚,而不是手动 `git revert`: + +### 回滚单个计划 + +```bash +/gsd-undo --plan 03-02 +``` + +回滚阶段 `3` 中计划 `02` 的所有提交。GSD 在写入任何更改之前会显示确认界面。 + +### 回滚整个阶段 + +```bash +/gsd-undo --phase 03 +``` + +回滚阶段 `3` 的所有提交。GSD 会检查后续阶段是否依赖该阶段,并在继续之前发出警告。 + +### 从最近的提交中交互式选择 + +```bash +/gsd-undo --last 5 +``` + +显示最近五个 GSD 提交,让您选择要回滚的内容。 + +--- + +## 中断后恢复会话上下文 + +如果您在上下文重置或新会话后返回项目: + +```bash +/gsd-resume-work +``` + +从上次交接中恢复您的完整会话上下文,包括当前阶段、阻塞项以及执行停止的位置。 + +或者,要查看当前进度并自动跳转到下一个正确步骤: + +```bash +/gsd-progress --next +``` + +--- + +## 相关内容 + +- [执行阶段](execute-a-phase.md) +- [恢复与故障排查](recover-and-troubleshoot.md) +- [命令](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/design-a-ui-phase.md b/docs/zh-CN/how-to/design-a-ui-phase.md new file mode 100644 index 000000000..c7b7b38c9 --- /dev/null +++ b/docs/zh-CN/how-to/design-a-ui-phase.md @@ -0,0 +1,149 @@ +# 如何为阶段设计 UI + +**目标:** 生成一份已锁定的 UI 设计契约(`UI-SPEC.md`),在规划者编写任务之前,确定间距、颜色、字体和文案的决策,从而防止执行阶段因随意选择样式导致视觉不一致。 + +**前置条件:** `.planning/ROADMAP.md` 已存在,且该阶段包含前端或 UI 工作。强烈建议先运行 `/gsd-discuss-phase N`——UI 研究员会读取 `CONTEXT.md`,以避免重复询问您已经做出的决策。 + +--- + +## 判断此阶段是否需要 UI 契约 + +并非所有阶段都需要 `/gsd-ui-phase`。在以下情况下使用它: + +- 该阶段引入新的 UI 界面(页面、流程、布局) +- 将构建多个组件,且视觉一致性至关重要 +- 您正在为新项目的前端建立设计系统基线 +- 您正在为现有项目新增大量 UI 工作,希望在执行前锁定 token、间距和颜色 + +在以下情况下跳过它: + +- 该阶段纯粹是后端、基础设施或数据工作,没有面向用户的输出 +- 早期阶段已存在 UI-SPEC.md,且此阶段在完全相同的视觉模式上构建,不引入新界面 + +如果不确定,安全门会提示您:当 `workflow.ui_safety_gate` 启用时(默认启用),`/gsd-plan-phase` 在检测到前端工作但没有 UI-SPEC.md 时会发出警告,并询问是否先运行 `/gsd-ui-phase`。 + +--- + +## 运行 UI 设计契约 + +```bash +/gsd-ui-phase 2 +``` + +如果未指定阶段编号,GSD Core 会以当前阶段为目标。 + +该命令分两个阶段运行: + +1. **`gsd-ui-researcher`** — 读取 `CONTEXT.md`、`RESEARCH.md` 和 `REQUIREMENTS.md` 中的已有决策,检测设计系统状态(shadcn `components.json`、Tailwind 配置、现有 token),并仅针对以下五个领域中尚未回答的设计问题进行提问:间距、颜色、字体、文案和注册表安全。 +2. **`gsd-ui-checker`** — 从六个维度验证生成的 `UI-SPEC.md`。如果发现问题,修订循环会重新运行研究员(最多两次迭代),专门针对被标记的项目。 + +**输出:** `.planning/phases/{phase-dir}/` 中的 `{padded_phase}-UI-SPEC.md`。 + +--- + +## UI-SPEC 涵盖的内容 + +研究员在五个领域锁定决策: + +| 领域 | 示例 | +|---|---| +| **间距** | 基础比例(4px 或 8px)、网格对齐、组件内边距 | +| **颜色** | 主色、强调色、中性色调色板;60/30/10 规则;深色模式考量 | +| **字体** | 字体家族、字号/字重比例约束、标题层次结构 | +| **文案** | CTA 标签、空状态消息、错误状态文案、加载指示器 | +| **注册表安全** | shadcn 组件检查协议(见下文) | + +检查器按六个支柱验证规格,每项评分 1–4:文案、视觉、颜色、字体、间距和体验设计(加载/错误/空状态覆盖)。 + +--- + +## shadcn 初始化 + +对于 React、Next.js 和 Vite 项目,若未找到 `components.json`,研究员会提议初始化 shadcn。流程如下: + +1. 访问 `ui.shadcn.com/create`,配置您的预设(颜色、边框圆角、字体) +2. 复制预设字符串 +3. 运行: + +```bash +npx shadcn init --preset +``` + +预设字符串成为 GSD Core 规划产物中的一等公民,可在各阶段和里程碑间复现。 + +--- + +## 注册表安全门 + +第三方 shadcn 注册表可能注入任意代码。当 `workflow.ui_safety_gate` 启用时(默认启用),规格要求在安装任何非官方组件之前执行以下步骤: + +```bash +npx shadcn view # inspect source before installing +npx shadcn diff # compare against the official registry +``` + +如果未处理注册表安全问题,检查器会将规格标记为 BLOCKED。若您的项目不使用 shadcn,或您有其他审查流程,可通过 `/gsd-settings` 禁用此门控。 + +--- + +## 使用草图发现结果作为起点 + +如果您已运行 `/gsd-sketch --wrap-up`,UI 研究员会自动加载 `.claude/skills/sketch-findings-[project]/`。经过预验证的决策(布局、调色板、字体、间距)将被视为已锁定——研究员不会重新询问它们。运行开始时会显示一条提示: + +```text +⚡ Sketch findings detected: .claude/skills/sketch-findings-[project]/SKILL.md + Pre-validated decisions (layout, palette, typography, spacing) should be treated + as locked — not re-asked. +``` + +这是在 `/gsd-ui-phase` 之前运行 `/gsd-sketch --wrap-up` 的主要原因:它将对话式的设计探索转化为具有约束力的契约输入。 + +--- + +## 使用 `/gsd-ui-review` 进行事后视觉审计 + +`/gsd-ui-review` 在执行之后运行,而非之前。用它来对照 UI-SPEC 审计已实现的前端(当没有规格时,则对照抽象的六支柱标准进行审计)。 + +```bash +/gsd-ui-review # audit the current phase +/gsd-ui-review 3 # audit phase 3 specifically +``` + +它适用于任何包含前端代码的项目——不需要 GSD 项目初始化。 + +**检查内容(六支柱,每项评分 1–4):** + +1. 文案 — CTA 标签、空状态、错误状态 +2. 视觉 — 焦点、视觉层次、图标无障碍性 +3. 颜色 — 强调色使用规范、60/30/10 合规性 +4. 字体 — 字号和字重约束遵循情况 +5. 间距 — 网格对齐、token 一致性 +6. 体验设计 — 加载、错误和空状态覆盖 + +**输出:** `{padded_phase}-UI-REVIEW.md`,包含评分和前三项优先修复事项。当配置了 `gsd-browser` 等浏览器 MCP 服务器时,审计还会捕获截图作为视觉证据。 + +**截图存储:** 截图保存至 `.planning/ui-reviews/`。系统会自动创建 `.gitignore` 以防止二进制文件提交到 git。截图会在 `/gsd-complete-milestone` 期间清理。 + +--- + +## 在阶段生命周期中的推荐位置 + +```text +/gsd-discuss-phase N ← lock implementation preferences +/gsd-ui-phase N ← lock design contract (frontend phases) +/gsd-plan-phase N ← research + plan (reads UI-SPEC.md as context) +/gsd-execute-phase N ← parallel execution +/gsd-verify-work N ← manual UAT +/gsd-ui-review N ← retroactive visual audit (optional but recommended) +``` + +`/gsd-ui-phase` 位于 discuss 和 plan 之间,因为规划者会将 `UI-SPEC.md` 作为设计上下文读取——`PLAN.md` 中的任务会引用规格锁定的间距 token、颜色变量和文案决策。 + +--- + +## 相关文档 + +- [Spike 与草图](spike-and-sketch.md) +- [规划阶段](plan-a-phase.md) +- [命令参考](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/discuss-a-phase.md b/docs/zh-CN/how-to/discuss-a-phase.md new file mode 100644 index 000000000..50774abf3 --- /dev/null +++ b/docs/zh-CN/how-to/discuss-a-phase.md @@ -0,0 +1,158 @@ +# 如何讨论一个阶段 + +**目标:** 在规划开始之前收集某个阶段所需的实施决策,以便研究员和规划员无需再次询问您。 + +**前提条件:** `.planning/ROADMAP.md` 文件已存在。如果没有,请先运行 `/gsd-new-project`。 + +--- + +## 选择讨论模式 + +GSD Core 提供两种模式。根据对代码库的熟悉程度进行选择。 + +**如果您想预先表达自己的实施偏好**(访谈模式,默认): + +```bash +/gsd-discuss-phase 2 +``` + +Claude 会识别阶段范围中的模糊地带,让您选择要讨论的内容,然后针对每个领域处理大约四个问题。 + +**如果代码库已有明确的模式,且大多数问题对您来说显而易见**(假设模式): + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode assumptions +/gsd-discuss-phase 2 +``` + +Claude 通过子代理读取 5–15 个相关代码库文件,形成带有证据和置信度级别的假设,并呈现给您确认或纠正。通常只需 2–4 次交互,而非 15–20 次。 + +切换回原模式: + +```bash +node gsd-tools.cjs config-set workflow.discuss_mode discuss +``` + +请参阅[讨论模式说明](../workflow-discuss-mode.md)以获取完整对比,包括各模式可能节省时间的场景。 + +--- + +## 不经选择步骤直接讨论所有模糊地带 + +默认情况下,Claude 会呈现模糊地带并询问您希望覆盖哪些内容。如果您想跳过该选择提示,直接处理所有内容: + +```bash +/gsd-discuss-phase 2 --all +``` + +--- + +## 加快处理简单明了的阶段 + +**如果该阶段已充分理解,您希望 Claude 无需提示即可选择推荐的默认值:** + +```bash +/gsd-discuss-phase 3 --auto +``` + +Claude 为每个问题选择推荐答案并记录选择。适用于决策风险较低或已在先前阶段中隐含的阶段。 + +**如果您有远程会话限制(无 TUI 菜单):** + +```bash +/gsd-discuss-phase 2 --text +``` + +所有提示将以纯文本编号列表的形式呈现,而不是交互式选择器。 + +--- + +## 分组处理问题 + +如果您希望一次回答多个问题,而不是逐一回答: + +```bash +/gsd-discuss-phase 2 --batch +``` + +Claude 每轮分组 2–5 个问题。 + +--- + +## 为每个问题添加权衡分析 + +如果您希望在做出决定之前查看选项对比表: + +```bash +/gsd-discuss-phase 2 --analyze +``` + +--- + +## 从准备好的文件中批量回答 + +如果您已有准备好的答案文件,并希望一次性提交所有决策: + +```bash +/gsd-discuss-phase 1 --power +``` + +--- + +## 在讨论之前查看 Claude 的假设 + +**如果您希望在任何交互式会话之前了解 Claude 的假设和计划** — 适用于在投入讨论时间之前验证对齐情况: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +Claude 输出其假设(附带代码库证据和置信度级别)后退出。不会写入 CONTEXT.md。查看输出后,如有需要纠正的内容,再运行正常的讨论或假设模式会话。 + +--- + +## CONTEXT.md 的内容 + +讨论模式和假设模式都会在阶段目录中生成相同的 `{phase}-CONTEXT.md`。下游代理(研究员、规划员、计划检查员)以相同方式读取该文件,无论由哪种模式生成。它包含六个部分: + +| 部分 | 用途 | +|---|---| +| `` | 阶段边界 — 本阶段交付的内容 | +| `` | 会话中锁定的实施决策 | +| `` | 下游代理必须阅读的规格说明、ADR 和文档 | +| `` | 可复用资产、模式和集成点 | +| `` | 用户参考资料和偏好 | +| `` | 记录留待未来阶段处理的想法 | + +`` 部分是必填项。如果您在讨论中引用了某个文档、规格说明或 ADR,Claude 会立即将其添加并读取,以便为后续问题提供参考。 + +请参阅 [CONTEXT.md 模式](../reference/context-md.md)以获取完整的字段参考。 + +--- + +## 决策如何影响规划 + +当您接下来运行 `/gsd-plan-phase` 时,规划员会读取 CONTEXT.md 以了解哪些决策已锁定。它不会重新询问此处已回答的问题。研究员会首先读取该文件以了解需要调查的内容。 + +**如果运行 `/gsd-plan-phase` 时 CONTEXT.md 缺失**,系统将提供两种选择:不使用上下文继续(计划仅使用研究和需求,不包含您的设计偏好),或先运行 `/gsd-discuss-phase`。 + +--- + +## 如果您已有 PRD 或验收标准文档 + +完全跳过 discuss-phase,直接进入规划: + +```bash +/gsd-plan-phase 1 --prd path/to/prd.md +``` + +规划员会从 PRD 综合生成 CONTEXT.md,并将所有需求视为锁定决策。 + +--- + +## 相关内容 + +- [规划一个阶段](plan-a-phase.md) +- [讨论模式](../workflow-discuss-mode.md) +- [CONTEXT.md 模式](../reference/context-md.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/drive-gsd-from-a-tracker-issue.md b/docs/zh-CN/how-to/drive-gsd-from-a-tracker-issue.md new file mode 100644 index 000000000..7b292c3e4 --- /dev/null +++ b/docs/zh-CN/how-to/drive-gsd-from-a-tracker-issue.md @@ -0,0 +1,176 @@ +# 如何从追踪器议题驱动 GSD Core + +**目标:** 将一个范围明确的 GitHub、Linear 或 Jira 议题,通过完整的 GSD 流水线从隔离工作区推进至合并 PR——仅使用 GSD Core 中已有的命令,无需任何自定义脚本或追踪器集成。 + +**前提条件:** GSD Core 已安装。议题范围有边界、验收标准可观测,且无上游阻塞依赖。 + +有关该模式背后的概念与设计理由,请参阅[议题驱动编排详解](../issue-driven-orchestration.md)。 + +--- + +## 第一步:将议题映射到阶段 + +打开追踪器议题,决定它如何对应 `ROADMAP.md` 中的阶段: + +- **议题与现有阶段匹配** → 记下阶段编号,转至第二步。 +- **议题是独立的新工作** → 添加一个阶段: + +```bash +/gsd-phase "描述与议题标题一致的内容" +``` + +- **议题紧急,必须插入现有阶段之间** → 插入一个小数阶段: + +```bash +/gsd-phase --insert 3 "Fix: 来自议题的描述" +``` + +复制追踪器议题的 URL。您将在第三步中将其粘贴到 `CONTEXT.md`,以便在上下文压缩后仍保留可追溯性。 + +--- + +## 第二步:创建隔离工作区 + +每个议题都有专属工作区——一个带有独立 `.planning/` 目录的 git worktree。未完成的工作、中止的计划和探索性提交均保留在 `main` 之外。 + +```bash +/gsd-workspace --new --name my-issue-slug --repos . --strategy worktree +``` + +继续操作前,切换到工作区目录: + +```bash +cd ~/gsd-workspaces/my-issue-slug +``` + +--- + +## 第三步:讨论阶段 + +运行 discuss-phase,在规划开始之前确定实现决策。会话打开后,将追踪器议题 URL 粘贴到讨论中,以便记录到 `CONTEXT.md`。 + +```bash +/gsd-discuss-phase N +``` + +GSD 会就议题范围中的模糊点进行提问——错误处理、边界情况、接口契约、技术选型。您的回答将影响后续生成的计划。 + +如果您已知晓所有答案并希望快速推进: + +```bash +/gsd-discuss-phase N --auto +``` + +--- + +## 第四步:规划阶段 + +```bash +/gsd-plan-phase N +``` + +GSD 会派生研究代理,读取您的 `CONTEXT.md` 决策(包括议题 URL),并生成原子化的 `PLAN.md` 文件。计划检查器会在保存前验证每份计划。 + +如果您希望在执行前由外部 AI CLI 进行同行评审(对于重大变更推荐使用): + +```bash +/gsd-review --phase N +/gsd-plan-phase N --reviews +``` + +或运行完整的计划-评审-收敛循环,直到不再有 HIGH 级别的问题: + +```bash +/gsd-plan-review-convergence N +``` + +--- + +## 第五步:执行阶段 + +交互式逐阶段执行: + +```bash +/gsd-execute-phase N +``` + +无人值守地运行所有剩余阶段: + +```bash +/gsd-autonomous +``` + +在可视化仪表盘中监控进度并跨阶段调度工作: + +```bash +/gsd-manager +``` + +三种方式均会更新 `STATE.md`,原子化提交每项任务,并运行阶段后验证器。 + +--- + +## 第六步:验证工作 + +```bash +/gsd-verify-work N +``` + +GSD 会逐条引导您核对阶段目标中的验收标准(与追踪器议题对应)。如有失败,GSD 会诊断根本原因并创建修复计划。重复执行和重新验证,直到所有检查通过。 + +即使代码看起来正确,也应将 `verification_failed` 视为阻塞——失败通常会揭示原始议题中遗漏的验收标准。 + +--- + +## 第七步:评审与发布 + +在开启 PR 前先进行代码评审: + +```bash +/gsd-code-review N +/gsd-code-review N --fix +``` + +然后创建 PR: + +```bash +/gsd-ship N +``` + +GSD 会从您的规划产物中组装 PR 正文:阶段目标、变更摘要、已满足的需求、验证状态和关键决策。在 PR 正文中加入 `Closes #NNN` 或 `Fixes #NNN`(或通过 `/gsd-config` 设置),以便在 PR 合并时自动关闭追踪器议题。 + +--- + +## 第八步:记录后续工作 + +在处理议题的过程中,您常常会发现相关工作。在不丢失上下文的情况下进行记录: + +```bash +/gsd-capture "Follow-up: 发现的工作描述" # 作为待办事项添加 +/gsd-capture --seed "值得未来阶段考虑的想法" # 为下一个里程碑保留 +/gsd-capture --backlog "不紧急但值得跟踪的内容" # 存入待办列表 +``` + +GSD 不会自动向追踪器发布内容。从已记录的后续工作中创建追踪器议题是独立的手动步骤——这保留了人工审核的环节。 + +--- + +## 条件场景 + +| 情境 | 处理方式 | +|-----------|-----------| +| 议题非常小(拼写错误、配置变更) | 跳过工作区 + 讨论 + 规划;改用 `/gsd-quick` | +| 议题包含多个独立子任务 | 使用 `/gsd-manager` 跨计划并行执行 | +| 议题被其他议题阻塞 | 在上游阻塞解除前不要开始;GSD 没有自动依赖轮询 | +| 执行中途发现议题范围比预期大 | 停止,运行 `/gsd-phase --insert N` 添加子阶段,然后继续 | +| 想跳过交互式讨论 | 对 `/gsd-discuss-phase` 使用 `--auto` 标志,或为项目级自动化设置 `workflow.skip_discuss: true` | +| 多个议题构成一个连贯的发布版本 | 运行 `/gsd-new-milestone` 将其分组,并运行 `/gsd-autonomous` 按顺序执行 | + +--- + +## 相关资源 + +- [议题驱动编排详解](../issue-driven-orchestration.md) +- [使用工作区隔离工作](isolate-work-with-workspaces.md) +- [验证与发布](verify-and-ship.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/execute-a-phase.md b/docs/zh-CN/how-to/execute-a-phase.md new file mode 100644 index 000000000..043fcfc4f --- /dev/null +++ b/docs/zh-CN/how-to/execute-a-phase.md @@ -0,0 +1,119 @@ +# 如何执行阶段 + +**目标:** 通过基于波次的并行执行来运行已规划的阶段,并将每个计划作为原子性 git 提交落地。 + +**前置条件:** 该阶段至少有一个 `PLAN.md` 文件。如果规划尚未完成,请先运行 `/gsd-plan-phase N` —— 参见[规划阶段](plan-a-phase.md)。 + +--- + +## 运行完整阶段 + +```bash +/gsd-execute-phase 1 +``` + +GSD Core 读取阶段的计划文件,将其按依赖关系分组为若干波次,并为每个计划生成独立的执行器代理。每个执行器在下一波次开始前以原子方式提交其工作。 + +在分发任何代理之前,GSD Core 会打印波次表: + +``` +## Execution Plan + +Phase 1: Core middleware — 3 plans across 2 wave(s) + +| Wave | Plans | What it builds | +|------|----------------|---------------------------| +| 1 | 01-01, 01-02 | Core validation function | +| 2 | 01-03 | Express middleware wrapper | +``` + +第 1 波次的计划并行运行(每个在独立的 git 工作树中)。第 2 波次等待所有第 1 波次提交合并后才开始。 + +关于底层代理协调模型,请参见[多代理编排](../explanation/multi-agent-orchestration.md)。 + +--- + +## 运行单个波次 + +如果只想执行一个波次——例如,在进入第 2 波次之前先检查第 1 波次的输出——请使用 `--wave N`: + +```bash +/gsd-execute-phase 1 --wave 2 +``` + +GSD Core 仅执行第 2 波次的计划。它会首先检查所有较早波次是否已完成;如果任何第 1 波次计划仍标记为未完成,则会停止并提示你先完成较早波次。 + +--- + +## 执行前验证状态 + +如果你怀疑 `.planning/` 目录与文件系统不同步——例如在崩溃或上一次运行中断之后——请传入 `--validate`: + +```bash +/gsd-execute-phase 1 --validate +``` + +GSD Core 在生成任何执行器之前运行状态一致性检查。检测到的偏差会被上报,你可以在继续之前接受或纠正。 + +--- + +## 恢复停滞的执行 + +如果执行中途停止——配额错误、网络断开或会话崩溃——波次级别的进度会被保留。GSD Core 会检查每个计划的 `SUMMARY.md` 文件;已有该文件的计划在重新运行时会自动跳过: + +```bash +/gsd-execute-phase 1 +``` + +GSD Core 会跳过 `SUMMARY.md` 已存在的计划,并从第一个未完成的计划继续。 + +**如果提交存在但 `SUMMARY.md` 缺失**(执行器已提交,但在会话结束前未写入摘要),GSD Core 会弹出一个安全恢复门并提供三个选项: + +- `close out manually` — 检查提交,手动编写 `SUMMARY.md`,然后重新运行。 +- `re-execute from scratch` — 在分发新执行器前回滚或替代部分提交。 +- `mark-and-skip` — 记录异常并继续,仅在明确确认后执行。 + +关于系统性故障诊断,请参见[调试失败的执行](debug-a-failed-execution.md)。 + +--- + +## 输出位置 + +所有波次完成后,阶段目录包含: + +``` +.planning/phases/01-/ + 01-01-SUMMARY.md # What plan 01 built, key files, deviations + 01-02-SUMMARY.md + 01-03-SUMMARY.md + VERIFICATION.md # Requirement-by-requirement pass/fail status +``` + +所有波次完成后,`STATE.md` 和 `ROADMAP.md` 会自动更新。`VERIFICATION.md` 仅在阶段完全完成时写入。 + +Git 历史记录中每个任务会有一个提交(来自各执行器),随后是编排器的跟踪提交。 + +--- + +## 跨 AI 执行 + +要将执行委托给在 `workflow.cross_ai_command` 中配置的外部 AI CLI(Codex、Gemini 等): + +```bash +/gsd-execute-phase 2 --cross-ai +``` + +要在配置中启用跨 AI 时强制本地执行: + +```bash +/gsd-execute-phase 2 --no-cross-ai +``` + +--- + +## 相关内容 + +- [规划阶段](plan-a-phase.md) +- [验证与发布](verify-and-ship.md) +- [调试失败的执行](debug-a-failed-execution.md) +- [命令参考](../COMMANDS.md) diff --git a/docs/zh-CN/how-to/handle-quick-and-fast-tasks.md b/docs/zh-CN/how-to/handle-quick-and-fast-tasks.md new file mode 100644 index 000000000..8febb6797 --- /dev/null +++ b/docs/zh-CN/how-to/handle-quick-and-fast-tasks.md @@ -0,0 +1,121 @@ +# 如何处理快速轻量级任务 + +并非每项工作都需要完整的阶段流程。GSD 提供了两个轻量级命令,适用于不需要完整的讨论 → 计划 → 执行 → 验证循环的工作。 + +有关何时值得使用完整阶段流水线的说明,请参阅[上下文工程](../explanation/context-engineering.md)。 + +--- + +## 决定使用哪个命令 + +| 场景 | 命令 | +|-----------|---------| +| 修复 Bug、添加小功能,或任何无法概括为单一琐碎编辑的任务 | `/gsd-quick` | +| 修复错别字、更新配置值、添加 `.gitignore` 条目,或任何涉及 ≤ 3 个文件且耗时不到一分钟的更改 | `/gsd-fast` | +| 任务有未知因素、需要调研,或将涉及超过几个文件 | `/gsd-quick` 加 `--research` | + +**经验法则:** 如果你哪怕有一刻犹豫该任务是否属于琐碎操作,就使用 `/gsd-quick`。当范围看起来不够简单时,`/gsd-fast` 会自动将你重定向到 `/gsd-quick`。 + +--- + +## `/gsd-quick` — 带有 GSD 保证的临时任务 + +`/gsd-quick` 运行一个规划器和执行器,提供与完整阶段相同的原子提交和 STATE.md 跟踪保证,但无需阶段开销(无 ROADMAP 条目、无讨论阶段、无跨多个计划的波次协调)。 + +### 基本用法 + +```bash +/gsd-quick +``` + +GSD 会提示你输入任务描述,然后进行规划和执行。产出物保存在 `.planning/quick/` 中。 + +你也可以直接传入描述: + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +### 标志 + +当任务需要时,添加标志可引入更多质量流水线步骤。 + +| 标志 | 功能说明 | +|------|-------------| +| `--discuss` | 在规划器运行前进行轻量级的预规划讨论,梳理灰色地带并将决策记录到 `CONTEXT.md` 中 | +| `--research` | 由专注的调研代理在规划前调查方案、库和潜在问题 | +| `--validate` | 计划检查(最多 2 次迭代)加上执行后验证 | +| `--full` | 以上全部 — 等同于 `--discuss --research --validate` | + +标志可自由组合: + +```bash +/gsd-quick --research --validate # research + plan-checking + verification, no discuss +/gsd-quick --discuss # just surface grey areas before planning +/gsd-quick --full # the complete quality pipeline +``` + +### 何时添加标志 + +- 当你不确定如何处理任务或使用哪个库时,添加 `--research`。 +- 当任务涉及关键代码路径,且你希望验证代理确认必要条件已满足时,添加 `--validate`。 +- 当任务有设计选择需要在规划器运行前锁定时,添加 `--discuss`——例如,当正确的错误处理行为不够明显时。 +- 当任务确实比较重要,通常应作为阶段规划,但又不属于 ROADMAP 范畴时,使用 `--full`。 + +### 列出和恢复快速任务 + +```bash +/gsd-quick list # show all quick tasks with status +/gsd-quick status my-task-slug # show status of a specific task +/gsd-quick resume my-task-slug # resume an interrupted task +``` + +--- + +## `/gsd-fast` — 内联琐碎编辑 + +`/gsd-fast` 直接在当前上下文中完成工作。没有子代理、没有 `PLAN.md`,也没有调研。它仅适用于你自己在一分钟内即可完成的更改。 + +```bash +/gsd-fast "fix typo in README" +/gsd-fast "add .env to .gitignore" +``` + +如果你省略描述,GSD 会提示你输入。 + +`/gsd-fast` 在继续操作前会检查任务是否确实属于琐碎操作。如果判断范围过大,它会停止并重定向你: + +```text +This looks like it needs planning. Use /gsd-quick instead: + /gsd-quick "your task description" +``` + +完成更改后,`/gsd-fast` 以原子方式提交,并且如果 `.planning/STATE.md` 中存在 `Quick Tasks Completed` 表格,则向其追加一行。 + +--- + +## `/gsd-quick` 相比 `/gsd-fast` 多提供的能力 + +| 能力 | `/gsd-fast` | `/gsd-quick` | +|------------|------------|--------------| +| 子代理规划器 | 否 | 是 | +| 子代理执行器 | 否 | 是 | +| 调研代理 | 否 | 可选(`--research`) | +| 计划检查 | 否 | 可选(`--validate`) | +| 执行后验证 | 否 | 可选(`--validate`) | +| 讨论阶段 | 否 | 可选(`--discuss`) | +| 工作树隔离 | 否 | 是(默认) | +| 每任务原子提交 | 单次提交 | 每个计划任务一次 | +| STATE.md 跟踪 | 若表格存在则追加行 | 始终更新 | +| `.planning/quick/` 产出物 | 否 | 是 | + +关键区别在于子代理隔离。`/gsd-quick` 在独立的上下文窗口中启动全新的规划器和执行器,这意味着工作会被妥善规划,提交按任务原子化,且编排器可验证结果。`/gsd-fast` 仅使用当前上下文窗口,有意限制于无需上述任何流程的琐碎更改。 + +--- + +## 相关文档 + +- [阶段循环](../explanation/the-phase-loop.md) +- [上下文工程](../explanation/context-engineering.md) +- [命令参考](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/install-on-your-runtime.md b/docs/zh-CN/how-to/install-on-your-runtime.md new file mode 100644 index 000000000..63a97cce3 --- /dev/null +++ b/docs/zh-CN/how-to/install-on-your-runtime.md @@ -0,0 +1,291 @@ +# 如何在您的运行时上安装 GSD Core + +将 GSD Core(`@opengsd/gsd-core`)安装到您日常使用的 AI 编码运行时中。本指南提供各支持运行时的标准安装路径,以及适用于未安装 Node.js 的机器的手动安装路径。 + +**所需条件:** Node.js 18+ 及 npm(或 npx)。如果您没有 Node.js,请跳转至[不使用 Node.js 安装](#不使用-nodejs-安装)。 + +--- + +## 为什么需要安装程序 + +GSD Core 以 Claude Code 原生 frontmatter 格式分发代理和命令文件。每个支持的运行时需要不同的 schema、目录结构和命令调用语法。安装程序负责执行必要的转换——例如,为 OpenCode 转换工具列表和颜色值、为 Codex 写入 TOML 代理条目,以及将所有命令体从连字符格式(`/gsd-update`)重写为冒号格式(`/gsd:update`)以适配 Gemini CLI。 + +**请勿直接从 `agents/` 或 `commands/` 复制文件。** 这样做会绕过转换过程,导致 schema 验证错误或命令缺失。 + +--- + +## 标准安装 + +在任意目录运行安装程序。它会提示您选择运行时,以及是全局安装(所有项目)还是本地安装(仅此项目)。 + +```bash +npx @opengsd/gsd-core@latest +``` + +这是全新安装或切换运行时后重新运行安装程序所需的唯一命令。 + +--- + +## 各运行时安装说明 + +### Claude Code + +```bash +npx @opengsd/gsd-core@latest --claude --global +``` + +技能文件存放于 `~/.claude/`。下次 Claude Code 会话中,命令将以 `/gsd-*` 斜杠命令的形式出现。重启 Claude Code 以加载它们。 + +**覆盖安装目录:** + +```bash +CLAUDE_CONFIG_DIR=~/.claude-alt npx @opengsd/gsd-core@latest --claude --global +``` + +--- + +### Gemini CLI + +```bash +npx @opengsd/gsd-core@latest --gemini --global +``` + +技能文件存放于 `~/.gemini/`。安装程序将所有命令体重写为 Gemini 的冒号命名空间格式(`/gsd:update`、`/gsd:config` 等)。安装后重启 Gemini CLI。 + +**覆盖安装目录:** + +```bash +GEMINI_CONFIG_DIR=~/.gemini-alt npx @opengsd/gsd-core@latest --gemini --global +``` + +--- + +### OpenCode + +```bash +npx @opengsd/gsd-core@latest --opencode --global +``` + +技能文件存放于 `~/.config/opencode/`(XDG)或 `~/.opencode/`。安装程序将代理 frontmatter 转换为 OpenCode 的 schema——移除 `tools:` 字段并将颜色值转换为十六进制格式。如需了解具体变更内容,请参阅[不使用 Node.js 安装 — OpenCode 转换](#opencode--必要转换)。 + +**覆盖安装目录:** + +```bash +OPENCODE_CONFIG_DIR=~/.config/opencode-alt npx @opengsd/gsd-core@latest --opencode --global +``` + +--- + +### Kilo + +```bash +npx @opengsd/gsd-core@latest --kilo --global +``` + +技能文件存放于 `~/.config/kilo/`(XDG)或 `~/.kilo/`。使用与 OpenCode 相同的平铺 Markdown 命令格式。 + +**覆盖安装目录:** + +```bash +KILO_CONFIG_DIR=~/.config/kilo-alt npx @opengsd/gsd-core@latest --kilo --global +``` + +--- + +### Codex + +```bash +npx @opengsd/gsd-core@latest --codex --global +``` + +技能文件存放于 `~/.codex/skills/gsd-*/SKILL.md`。代理以每个代理独立的 TOML 条目写入 `config.toml`。安装后重启 Codex(或运行 `codex --reload`)。 + +**最低支持版本:** Codex CLI 0.130.0。更早版本额外扫描技能根目录,可能导致重复列出条目。 + +--- + +### GitHub Copilot + +```bash +npx @opengsd/gsd-core@latest --copilot --global +``` + +技能文件存放于 `~/.copilot/`。GSD 以代理 `.md` 文件和仓库指令文件的形式安装。 + +**覆盖安装目录:** + +```bash +COPILOT_CONFIG_DIR=~/.copilot-alt npx @opengsd/gsd-core@latest --copilot --global +``` + +--- + +### Cursor + +```bash +npx @opengsd/gsd-core@latest --cursor --global +``` + +技能文件存放于 `~/.cursor/`。GSD 安装技能、代理和规则引用。 + +**覆盖安装目录:** + +```bash +CURSOR_CONFIG_DIR=~/.cursor-alt npx @opengsd/gsd-core@latest --cursor --global +``` + +--- + +### Windsurf + +```bash +npx @opengsd/gsd-core@latest --windsurf --global +``` + +技能文件存放于 `~/.codeium/windsurf/`。GSD 安装技能、代理和工作区规则。 + +**覆盖安装目录:** + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-alt npx @opengsd/gsd-core@latest --windsurf --global +``` + +--- + +### Cline + +Cline 使用基于规则的集成方式——GSD 以 `.clinerules` 形式安装,而非斜杠命令。 + +```bash +# 全局安装(所有项目) +npx @opengsd/gsd-core@latest --cline --global + +# 本地安装(仅此项目) +npx @opengsd/gsd-core@latest --cline --local +``` + +全局安装写入 `~/.cline/`。本地安装写入 `./.cline/`。规则由 Cline 自动加载——不注册自定义斜杠命令。 + +--- + +### CodeBuddy + +```bash +npx @opengsd/gsd-core@latest --codebuddy --global +``` + +技能文件存放于 `~/.codebuddy/skills/gsd-*/SKILL.md`。 + +--- + +### Qwen Code + +Qwen Code 使用与 Claude Code 2.1.88+ 相同的开放技能标准。 + +```bash +npx @opengsd/gsd-core@latest --qwen --global +``` + +技能文件存放于 `~/.qwen/skills/gsd-*/SKILL.md`。 + +**覆盖安装目录:** + +```bash +QWEN_CONFIG_DIR=~/.qwen-alt npx @opengsd/gsd-core@latest --qwen --global +``` + +--- + +### Augment Code + +```bash +npx @opengsd/gsd-core@latest --augment --global +``` + +技能文件存放于 `~/.augment/`。GSD 安装技能和代理,不拥有 hook 或状态栏所有权。 + +--- + +### Antigravity + +```bash +npx @opengsd/gsd-core@latest --antigravity --global +``` + +安装程序自动检测 Antigravity 配置目录(`~/.gemini/antigravity`、`~/.gemini/antigravity-ide` 或 `~/.gemini/antigravity-cli`)。使用与 Gemini 兼容的设置策略。 + +**覆盖安装目录:** + +```bash +ANTIGRAVITY_CONFIG_DIR=~/.gemini/antigravity-alt npx @opengsd/gsd-core@latest --antigravity --global +``` + +--- + +### Trae + +```bash +npx @opengsd/gsd-core@latest --trae --global +``` + +技能文件存放于 `~/.trae/`。GSD 安装技能、代理和规则引用。 + +--- + +## 本地安装与全局安装 + +上述所有示例均使用 `--global`,即为您的用户账户全局安装 GSD。若要将安装范围限定到单个项目,请将 `--global` 替换为 `--local`: + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +本地安装写入项目根目录下的 `.claude/` 目录。当全局安装和本地安装同时存在时,本地安装的设置优先于全局设置。 + +--- + +## 安装预发布版(Next / Nightly / Insiders / Preview) + +运行时的预发布版(Windsurf Next、Cursor Nightly、VS Code Insiders、Codex 预览通道等)从同级配置目录读取配置。在运行安装程序前设置对应的 `*_CONFIG_DIR` 环境变量: + +```bash +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global +``` + +在安装程序提示中选择对应的稳定版运行时。GSD 不将预发布版作为独立命名运行时枚举——它们通过此环境变量机制提供尽力支持,不在发布 CI 中单独测试。 + +--- + +## 不使用 Node.js 安装 + +如果您无法运行 `npx`(例如在没有 Node.js 的 Windows 机器上),有两种方案可选。 + +**方案 A——使用有 Node.js 的机器。** 任何有 Node.js 的机器均可:WSL、Linux 虚拟机、CI runner 或 Docker 容器。在那台机器上运行安装程序,然后将输出目录复制到目标机器。以 OpenCode 为例: + +```bash +npx @opengsd/gsd-core@latest --opencode --global +# 然后将 ~/.config/opencode/agents/ 复制到 Windows 机器 +``` + +**方案 B——手动转换源文件。** 代理源文件位于 GSD Core 仓库的 `agents/` 目录下,格式为 Claude Code 原生 frontmatter 格式。每个运行时期望不同的结构。有关各运行时的具体字段转换说明,请参阅用户指南中的[手动安装 / 无 Node.js 设置](../USER-GUIDE.md#manual-install--no-nodejs-setup),其中详细介绍了 OpenCode 的转换内容,并指向安装程序中其他运行时对应的 `convert*Frontmatter` 函数。 + +--- + +## 安装后 + +重启您的运行时以加载新命令和代理。然后启动您的第一个项目: + +```bash +/gsd-new-project +``` + +如果重启后找不到该命令,请确认安装目录与运行时预期的配置路径匹配。上方的预发布版章节介绍了最常见的路径不匹配情况。 + +--- + +## 相关链接 + +- [您的第一个项目](../tutorials/your-first-project.md) +- [更新 GSD Core](update-gsd.md) +- [配置](../CONFIGURATION.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/isolate-work-with-workspaces.md b/docs/zh-CN/how-to/isolate-work-with-workspaces.md new file mode 100644 index 000000000..f187e0bb3 --- /dev/null +++ b/docs/zh-CN/how-to/isolate-work-with-workspaces.md @@ -0,0 +1,144 @@ +# 如何使用工作区隔离工作 + +**目标:** 创建一个完全隔离的 GSD 环境——独立的 git worktree、独立的 `.planning/` 根目录,以及可选的多仓库支持——适用于功能分支或多仓库工作场景。 + +**前提条件:** 已安装 `git` 且仓库支持 worktree。对于多仓库工作区,目标仓库需存在于本地或可通过路径访问。 + +--- + +## 什么是工作区 + +工作区是一个自包含的环境,将一个或多个 git worktree(或克隆)与独立的 `.planning/` 根目录配对。每个工作区包含: + +- 独立的 `.planning/` 目录,**完全独立**于源仓库的 `.planning/`——并非其子目录 +- 独立的 `WORKSPACE.md` 清单文件,用于跟踪成员仓库 +- git worktree(默认)或指定仓库的完整克隆,在专用分支上检出(默认:`workspace/`) + +工作区默认存放在 `~/gsd-workspaces//` 下。 + +``` +~/gsd-workspaces/ +└── feature-b/ + ├── WORKSPACE.md ← 清单文件 + ├── .planning/ ← 完全独立的 GSD 状态 + │ ├── PROJECT.md + │ ├── ROADMAP.md + │ └── ... + ├── hr-ui/ ← hr-ui 仓库的 worktree 或克隆 + └── ZeymoAPI/ ← ZeymoAPI 仓库的 worktree 或克隆 +``` + +由于工作区的 `.planning/` 与源仓库相互独立,不会与源仓库中已有的规划状态发生重叠或冲突。 + +--- + +## 为多个仓库创建工作区 + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI +``` + +GSD 会在 `~/gsd-workspaces/feature-b/` 中创建 `hr-ui` 和 `ZeymoAPI` 的 worktree,在每个仓库中检出 `workspace/feature-b` 分支,写入 `WORKSPACE.md`,并创建一个空的 `.planning/` 目录,准备好供 `/gsd-new-project` 使用。 + +自定义位置: + +```bash +/gsd-workspace --new --name feature-b --repos hr-ui,ZeymoAPI --path /projects/feature-b +``` + +--- + +## 为当前仓库创建工作区 + +当你需要在单个仓库上进行功能分支隔离——独立分支、独立 `.planning/`、不受 main 分支状态影响时: + +```bash +/gsd-workspace --new --name payments-rework --repos . +``` + +`.` 表示为当前仓库创建 worktree,该 worktree 会在 `workspace/payments-rework` 分支上检出。 + +若要强制使用完整克隆而非 worktree: + +```bash +/gsd-workspace --new --name payments-rework --repos . --strategy clone +``` + +--- + +## 显式指定分支 + +```bash +/gsd-workspace --new --name payments-rework --repos . --branch feature/payments-v2 +``` + +`--branch` 标志为工作区中所有仓库设置分支名称,默认为 `workspace/`。 + +--- + +## 跳过交互式询问 + +```bash +/gsd-workspace --new --name payments-rework --repos . --auto +``` + +GSD 将接受所有默认值,无需提示确认。 + +--- + +## 在工作区内初始化 GSD + +创建工作区后,进入工作区目录并初始化 GSD 项目: + +```bash +cd ~/gsd-workspaces/feature-b +/gsd-new-project +``` + +工作区内的 `.planning/` 目录是从该目录运行所有后续 GSD 命令的根目录。它与源仓库中存在的任何 `.planning/` 完全独立。 + +--- + +## 列出工作区 + +```bash +/gsd-workspace --list +``` + +打印所有活跃的 GSD 工作区及其状态。 + +--- + +## 删除工作区 + +```bash +/gsd-workspace --remove feature-b +``` + +GSD 会移除 git worktree 并清理工作区目录。此操作不会从远程仓库删除分支——仅删除本地 worktree 和工作区目录。 + +--- + +## 何时使用工作区而非工作流 + +选择工作区的场景: + +- 你需要跨**多个仓库**协同工作,且这些仓库需要在同一个 GSD 项目下进行协调(例如,一个 API 仓库和一个 UI 仓库需要一起发布) +- 你需要每个功能拥有**独立的 git worktree**,带有各自的分支、锁文件和构建产物——以确保一个环境中的构建和依赖安装不会影响另一个环境 +- 你希望拥有**完全独立的 `.planning/` 根目录**,而非主仓库 `.planning/` 的子目录 +- 你正在采用 Issue 驱动的工作流,将每个跟踪器 Issue 映射到一个工作区(参见[从跟踪器 Issue 驱动 GSD](drive-gsd-from-a-tracker-issue.md)) + +选择[工作流](work-in-parallel-with-workstreams.md)的场景: + +- 所有工作都在**单一仓库**中进行,共享相同的 git 历史 +- 你希望在不同关注领域(API、UI、基础设施)上并发运行 `/gsd-plan-phase` 或 `/gsd-discuss-phase`,且各自的 `STATE.md` 文件之间互不干扰 +- 你不需要每个关注领域拥有独立的 worktree;切换规划上下文即可满足需求 + +--- + +## 相关内容 + +- [使用工作流并行工作](work-in-parallel-with-workstreams.md) +- [从跟踪器 Issue 驱动 GSD](drive-gsd-from-a-tracker-issue.md) +- [命令](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/migrate-from-gsd-2.md b/docs/zh-CN/how-to/migrate-from-gsd-2.md new file mode 100644 index 000000000..843bdae5a --- /dev/null +++ b/docs/zh-CN/how-to/migrate-from-gsd-2.md @@ -0,0 +1,145 @@ +# 如何从 GSD-2 迁移 + +**目标:** 将较旧的 GSD-2 项目(`.gsd/` 目录布局)升级迁移到 GSD Core(`.planning/` 布局),并可选择将项目仓库中已有的 ADR、PRD 或规范文档纳入新的规划结构。 + +**前提条件:** GSD Core 已安装。GSD-2 项目目录在磁盘上可访问。 + +--- + +## 了解迁移内容 + +GSD-2 使用 `.gsd/` 目录作为规划根目录,GSD Core 使用 `.planning/`。迁移过程读取 `.gsd/` 中的工件,并将其写入所有 GSD Core 命令所期望的标准 `.planning/` 结构中。 + +| GSD-2 中的现有内容 | `/gsd-import --from-gsd2` 产生的内容 | +|----------------------|-----------------------------------------| +| `.gsd/PROJECT.md` | `.planning/PROJECT.md` | +| `.gsd/ROADMAP.md` | `.planning/ROADMAP.md` | +| `.gsd/STATE.md` | `.planning/STATE.md` | +| `.gsd/phases/` 目录 | `.planning/phases/` 目录 | +| 阶段 `PLAN.md` 文件 | GSD Core `{NN}-{MM}-PLAN.md` 文件(强制重命名) | + +冲突检测会在写入任何文件之前运行。如果目标目录中已存在 `PROJECT.md` 且导入内容与之矛盾,迁移将在 BLOCKER 门控处停止,并列出需要您解决的冲突。 + +--- + +## 执行迁移 + +### 迁移当前目录 + +```bash +/gsd-import --from-gsd2 +``` + +GSD 读取当前工作目录下的 `.gsd/`,并将迁移后的工件写入 `.planning/`。 + +### 从其他路径迁移 + +```bash +/gsd-import --from-gsd2 --path ~/projects/old-project +``` + +当 GSD-2 项目不在当前工作目录时,使用 `--path` 指定路径。 + +--- + +## 解决冲突 + +如果冲突检测发现阻断项——例如,GSD-2 的技术栈声明与现有的 `.planning/PROJECT.md` 相矛盾——它会打印冲突报告并停止,不写入任何文件。 + +阅读报告,解决矛盾(编辑源文档或现有规划工件),然后重新运行 `/gsd-import --from-gsd2`。迁移可以安全地重复运行,直至顺利通过。 + +--- + +## 导入外部计划文件 + +如果您拥有的是独立的计划文档(团队规划文档、Markdown 规范、导出的任务列表),而非完整的 GSD-2 项目,请使用 `--from` 代替: + +```bash +/gsd-import --from /tmp/team-plan.md +``` + +GSD 执行相同的冲突检测流程,将内容转换为 GSD Core `PLAN.md` 格式,并使用计划检查器验证结果。验证完成后,您将看到目标文件名和后续步骤。 + +--- + +## 吸收现有文档 + +如果您的仓库中已包含 ADR(架构决策记录)、PRD 或规范文档,可在迁移完成后使用 `/gsd-ingest-docs` 将其合并到 `.planning/` 结构中: + +### 扫描整个仓库(自动检测模式) + +```bash +/gsd-ingest-docs +``` + +如果 `.planning/` 已经存在(例如,刚完成迁移后),GSD 默认使用合并模式——将导入的文档与已有内容并行合并,而非覆盖。 + +### 限定到特定目录 + +```bash +/gsd-ingest-docs docs/ +/gsd-ingest-docs docs/adr/ +``` + +### 使用显式优先级清单 + +当文档类型混合,或您希望控制冲突时哪份文档优先: + +```bash +/gsd-ingest-docs --manifest ingest.yaml +``` + +清单是一个 YAML 文件,每个文档列出 `{path, type, precedence?}`。请参阅 [Commands](../COMMANDS.md) 中 `--manifest` 标志说明,了解其期望的结构。 + +### 强制指定模式 + +```bash +/gsd-ingest-docs --mode merge # 合并到现有 .planning/ +/gsd-ingest-docs --mode new # 从零开始引导(覆盖) +``` + +**输出:** `/gsd-ingest-docs` 始终生成一个 `INGEST-CONFLICTS.md`,其中包含三个类别——自动解决、竞争变体和未解决的阻断项。每次导入运行后请审查此文件。仅在 LOCKED 与 LOCKED 的 ADR 矛盾时才会硬停止;其他所有情况均会呈现供您审查,而不会被静默丢弃。 + +--- + +## 验证迁移后的项目 + +迁移及文档导入完成后,确认项目状态的一致性: + +```bash +/gsd-health +/gsd-health --repair +``` + +`/gsd-health` 检查 `.planning/` 目录的完整性并报告任何偏差。`--repair` 会自动修复可恢复的问题。 + +然后检查 GSD Core 是否能够读取您的项目状态: + +```bash +/gsd-progress +``` + +如果项目迁移顺利,您将看到当前阶段状态和推荐的下一步操作。从此处起,适用标准 GSD Core 工作流程。 + +--- + +## 条件说明:什么能迁移,什么不能 + +| 情形 | 处理方式 | +|-----------|-----------| +| 当前目录中存在 `.gsd/` | 运行 `/gsd-import --from-gsd2`(无需 `--path`) | +| `.gsd/` 在其他目录 | 使用 `--path ~/projects/old-project` | +| 您有独立的计划文档,而非完整的 GSD-2 项目 | 使用 `/gsd-import --from /path/to/plan.md` | +| 您在 `docs/adr/` 中有 ADR | 迁移后运行 `/gsd-ingest-docs docs/adr/` | +| 您有 ADR、PRD 和规范的混合文档 | 在仓库根目录运行 `/gsd-ingest-docs`,它会自动分类 | +| 冲突检测报告阻断项 | 解决列出的矛盾后重新运行;在所有阻断项清除前不会写入任何文件 | +| 您不确定迁移是否成功 | 运行 `/gsd-health` 和 `/gsd-progress` 进行确认 | +| INGEST-CONFLICTS.md 列出未解决的阻断项 | 这些需要手动解决,相关文档才能被纳入规划 | + +--- + +## 相关内容 + +- [您的第一个项目](../tutorials/your-first-project.md) +- [Commands](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/plan-a-phase.md b/docs/zh-CN/how-to/plan-a-phase.md new file mode 100644 index 000000000..017f99c51 --- /dev/null +++ b/docs/zh-CN/how-to/plan-a-phase.md @@ -0,0 +1,216 @@ +# 如何规划阶段 + +**目标:** 将阶段决策和研究成果转化为可原子化执行、可验证的任务计划。 + +**前提条件:** `.planning/ROADMAP.md` 已存在。强烈建议(但非必须)先通过 `/gsd-discuss-phase` 生成 `{phase}-CONTEXT.md`。 + +--- + +## 运行标准规划流程 + +```bash +/gsd-plan-phase 2 +``` + +该命令按顺序执行三个阶段: + +1. **研究** — `gsd-phase-researcher` 子代理调查相关领域并写入 `{phase}-RESEARCH.md`。 +2. **规划** — `gsd-planner` 子代理读取上下文、研究成果和需求,然后写入一个或多个 `{phase}-{N}-PLAN.md` 文件。 +3. **验证** — `gsd-plan-checker` 子代理从八个维度验证计划质量,并触发修订循环(最多三次迭代),直至质量门控通过。 + +若未指定阶段编号,GSD Core 将自动定位 ROADMAP.md 中下一个未规划的阶段。 + +--- + +## 跳过或强制执行研究 + +**如果领域已熟悉且无需新的研究:** + +```bash +/gsd-plan-phase 3 --skip-research +``` + +**如果 RESEARCH.md 已存在但需要强制刷新:** + +```bash +/gsd-plan-phase 3 --research +``` + +**如果只想运行研究** — 写入 RESEARCH.md 后在规划前退出: + +```bash +/gsd-plan-phase --research-phase 4 +``` + +若 RESEARCH.md 已存在,系统会提示选择更新、查看或跳过。如需强制刷新而不显示提示: + +```bash +/gsd-plan-phase --research-phase 4 --research +``` + +将现有 RESEARCH.md 打印到标准输出而不启动研究代理: + +```bash +/gsd-plan-phase --research-phase 4 --view +``` + +注意:`--research-phase ` 是 `/gsd-plan-phase` 上的标志。不存在独立的研究阶段命令——原来的独立研究命令已被弃用,以此标志取而代之。 + +--- + +## 按垂直功能切片而非水平层次进行规划 + +**如果希望任务按端到端的薄切片组织**(每个功能从 UI → API → DB),而非按技术层次: + +```bash +/gsd-plan-phase 1 --mvp +``` + +在新项目的第一阶段且无先前阶段摘要的情况下,`--mvp` 还会生成 `SKELETON.md`——一份 Walking Skeleton,涵盖项目脚手架、路由、一次真实的数据库读写、一次真实的 UI 交互以及开发部署。 + +也可在 ROADMAP.md 中该阶段的条目里添加 `**Mode:** mvp`,无需每次使用标志即可持久启用 MVP 模式。 + +--- + +## 要求每个新增行为任务包含一个失败测试 + +**如果需要强制 TDD** — 每个新增行为的任务在实现前先编写一个失败测试: + +```bash +/gsd-plan-phase 1 --tdd +``` + +可与 `--mvp` 组合使用: + +```bash +/gsd-plan-phase 1 --mvp --tdd +``` + +这将生成垂直切片,其中每个新增行为的任务均遵循 RED → GREEN → REFACTOR 流程。规划器会对符合条件的任务(业务逻辑、API 端点、数据转换)应用 `type: tdd`,并对 UI、配置和胶水代码使用标准的 `type: execute`。 + +TDD 模式也可在配置中持久化: + +```bash +node gsd-tools.cjs config-set workflow.tdd_mode true +``` + +--- + +## 基于跨 AI 评审反馈重新规划 + +**如果已运行 `/gsd-review --phase N` 且存在 `REVIEWS.md`:** + +```bash +/gsd-plan-phase 3 --reviews +``` + +规划器会读取 `REVIEWS.md` 并修订计划以解决反馈问题。不可与 `--gaps` 组合使用。 + +**如果需要自动化循环** — 持续重新规划和重新评审,直至不再存在 HIGH 级别关注点: + +```bash +/gsd-plan-review-convergence 3 +``` + +收敛循环执行规划 → 评审 → 重新规划 → 再评审的周期(默认最多三次)。使用 `--max-cycles N` 可覆盖上限。 + +--- + +## 在验证失败后弥补差距 + +**如果 `VERIFICATION.md` 存在未解决的差距,且只想针对这些差距重新规划:** + +```bash +/gsd-plan-phase 3 --gaps +``` + +研究阶段将被跳过;规划器直接读取验证中的差距信息。 + +--- + +## 在规划开始前验证项目状态 + +```bash +/gsd-plan-phase 2 --validate +``` + +在启动研究代理前运行状态验证。如果怀疑 ROADMAP.md 或 STATE.md 已发生偏移,请使用此选项。 + +--- + +## 规划完成后运行外部弹跳验证 + +**如果已配置 `workflow.plan_bounce_script` 且需要对完成的计划进行外部验证:** + +```bash +/gsd-plan-phase 1 --bounce +``` + +即使在配置中已启用弹跳,也可跳过: + +```bash +/gsd-plan-phase 1 --skip-bounce +``` + +--- + +## 禁止交互式确认 + +```bash +/gsd-plan-phase --auto +``` + +跳过所有提示。适用于自动化流水线。若配置中 `research_enabled` 为 false,则跳过研究阶段。 + +--- + +## 计划输出内容 + +成功运行后会写入以下文件: + +| 文件 | 用途 | +|---|---| +| `{phase}-RESEARCH.md` | 领域研究、软件包合法性审计、验证架构 | +| `{phase}-VALIDATION.md` | 奈奎斯特测试映射——计划必须满足的测试用例(第 8 维度) | +| `{phase}-{N}-PLAN.md` | 包含前置信息、波次分配和验收标准的可执行任务计划 | +| `{phase}/SKELETON.md` | Walking Skeleton(MVP 模式,仅限新项目的第一阶段) | + +每个 PLAN.md 包含带有强制 `` 和 `` 字段的任务。每个 `` 条目均可作为源断言、行为断言、测试命令或 CLI 输出进行验证——绝不使用主观性语言。 + +完整的字段参考请参阅 [PLAN.md 模式](../reference/plan-md.md)。 + +### 计划质量维度 + +`gsd-plan-checker` 在允许执行前从八个维度验证计划: + +1. 任务原子性——每个任务只关注单一问题 +2. 依赖正确性——波次顺序一致 +3. 验收标准可验证性——无主观标准 +4. `` 完整性——被修改的文件始终列入其中 +5. 具体的 `` 值——无模糊的"对齐"类指令 +6. `must_haves` 源自阶段目标 +7. 需求 ID 覆盖率——每个阶段需求 ID 至少出现在一个计划中 +8. 奈奎斯特测试映射——计划涵盖 VALIDATION.md 中的验证策略 + +修订循环最多运行三次。若三次迭代后质量门控仍未通过,检查器将显示剩余问题供人工审查。 + +--- + +## 重新规划已关闭的阶段 + +如果某阶段的 `VERIFICATION.md` 中 `status: passed`,则该阶段被视为已关闭。尝试重新规划会以错误终止。如果关闭操作有误,可使用 `--force` 覆盖: + +```bash +/gsd-plan-phase 2 --force +``` + +警告信息将写入转录记录和所有已提交的计划文档中。 + +--- + +## 相关内容 + +- [讨论阶段](discuss-a-phase.md) +- [执行阶段](execute-a-phase.md) +- [PLAN.md 模式](../reference/plan-md.md) +- [命令](../COMMANDS.md) diff --git a/docs/zh-CN/how-to/recover-and-troubleshoot.md b/docs/zh-CN/how-to/recover-and-troubleshoot.md new file mode 100644 index 000000000..1a5062c2d --- /dev/null +++ b/docs/zh-CN/how-to/recover-and-troubleshoot.md @@ -0,0 +1,323 @@ +# 如何恢复与排查问题 + +**目标:** 识别并修复常见问题——从上下文丢失、状态损坏,到安装失败和权限错误——采用条件化的处理步骤结构。 + +**前提条件:** GSD Core 已安装。若遇到安装问题,请参阅 [在您的运行时中安装](install-on-your-runtime.md)。 + +--- + +## 上下文与会话问题 + +### 如果您不清楚当前所处的位置 + +```bash +/gsd-progress +``` + +读取所有状态文件,并精确告知您当前位置以及下一步操作。 + +若要自动跳转到正确的下一步: + +```bash +/gsd-progress --next +``` + +### 如果您正在开始新会话并需要恢复上下文 + +```bash +/gsd-resume-work +``` + +从上次交接中恢复完整的会话上下文,包括当前阶段、规划决策以及工作停止的位置。 + +### 如果长时间会话中质量开始下降 + +在执行主要命令之间清空上下文窗口: + +```bash +/clear +``` + +然后恢复状态: + +```bash +/gsd-resume-work +``` + +GSD 的设计围绕全新上下文展开。每个子代理已获得干净的 200k 窗口。主会话会随时间退化——清空并恢复才是正确的处理方式,而非继续硬撑。 + +### 如果您希望在停止前保存上下文 + +```bash +/gsd-pause-work +``` + +将当前位置创建为 `.planning/HANDOFF.json`。添加 `--report` 可同时将会话后摘要写入 `.planning/reports/`: + +```bash +/gsd-pause-work --report +``` + +--- + +## 规划完整性问题 + +### 如果 `.planning/` 完整性不确定 + +```bash +/gsd-health +``` + +以错误、警告和信息说明的形式报告状态: + +| 状态 | 含义 | +|--------|---------| +| `HEALTHY` | 所有预期产物存在且格式正确 | +| `DEGRADED` | 存在应当处理的警告,但工作可以继续 | +| `BROKEN` | 存在将阻断执行的严重错误 | + +可自动修复的常见问题(错误 E004、E005;警告 W003、W008): + +```bash +/gsd-health --repair +``` + +该命令会重新创建缺失的 `STATE.md`,将损坏的 `config.json` 重置为默认值,并补充所有缺失的配置键。它不会覆盖 `PROJECT.md` 或 `ROADMAP.md`。 + +### 如果 STATE.md 引用了不存在的阶段 + +这会产生警告 `W002`。使用状态 CLI 进行诊断和修复: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state validate +``` + +在不写入的情况下预览同步将更改的内容: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync --verify +``` + +应用同步: + +```bash +node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state sync +``` + +这些命令从磁盘上的实际项目状态重建 `STATE.md`,取代手动编辑 `STATE.md` 的操作。 + +### 如果看到"项目已初始化" + +`.planning/PROJECT.md` 已存在。`/gsd-new-project` 是一项安全检查。如果您确实想重新开始,请先删除 `.planning/` 目录: + +```bash +rm -rf .planning/ +``` + +然后重新运行 `/gsd-new-project`。 + +### 如果上下文窗口利用率过高 + +```bash +/gsd-health --context +``` + +探测上下文窗口利用率保护机制。警告阈值为 60%,严重阈值为 70%。如果超过警告阈值,请在开始下一个主要命令前运行 `/clear` 后跟 `/gsd-resume-work`。 + +--- + +## 执行问题 + +### 如果执行器在执行 Bash 命令时遇到"Permission denied" + +GSD 的 `gsd-executor` 子代理需要具有写入权限的 Bash 访问。在 `~/.claude/settings.json` 的 `permissions.allow` 下添加所需模式。至少需要: + +```json +"Bash(git add:*)", +"Bash(git commit:*)", +"Bash(git merge:*)", +"Bash(git checkout:*)" +``` + +针对特定技术栈的模式(Rails、Python、Node、Rust),请参阅 `docs/USER-GUIDE.md` 中"执行器子代理遇到 Permission denied"一节的完整表格。 + +按项目配置的替代方案:在项目根目录的 `.claude/settings.local.json` 中添加相同的配置块。 + +### 如果执行失败或产生存根代码 + +检查计划是否过于宏大。计划最多应包含两到三个任务。如果任务太大,则超出单个上下文窗口能可靠产出的范围。请以更小的范围重新规划该阶段: + +```bash +/gsd-plan-phase 1 +``` + +若要系统性地诊断出错原因,请参阅 [调试失败的执行](debug-a-failed-execution.md)。 + +### 如果并行执行导致构建锁定错误或预提交钩子失败 + +这是由多个代理同时触发构建工具引起的。自 v1.26 起,GSD 自动处理此问题。如果您使用的是旧版本,或仍然出现竞争问题,请禁用并行执行: + +```bash +/gsd-settings +``` + +将 `parallelization.enabled` 设置为 `false`。 + +### 如果子代理显示失败但提交已完成 + +在得出某些内容出错的结论之前,请检查 git 日志: + +```bash +git log --oneline -10 +``` + +Claude Code 中存在一个已知的分类错误,可能在工作实际成功时报告失败。GSD 的编排器会抽查实际输出,但如果您发现不一致,提交记录才是最终依据。 + +--- + +## 计划与阶段问题 + +### 如果计划看起来有误或与您的意图不符 + +在规划之前运行 `/gsd-discuss-phase N`。大多数计划质量问题来自本可由 `CONTEXT.md` 预防的假设: + +```bash +/gsd-discuss-phase 1 +``` + +若要查看 GSD 当前做出的假设而无需开始完整会话: + +```bash +/gsd-discuss-phase 3 --assumptions +``` + +### 如果您需要在执行后更改某些内容 + +不要重新运行 `/gsd-execute-phase`。请使用 `/gsd-quick` 进行有针对性的修复: + +```bash +/gsd-quick "Fix the login button not responding on mobile Safari" +``` + +或使用 `/gsd-verify-work N` 通过 UAT 系统性地识别和修复问题。 + +### 如果命令在"Spawning…"处似乎卡住了 + +请等待。GSD 子代理在独立的上下文窗口中运行。其工作在进行中对父会话不可见。生成行上的活跃度提示确认这是预期行为。研究和规划代理通常需要 1–5 分钟;验证代理在大型阶段中可能需要更长时间。 + +不要中断会话。终止它会丢弃进行中的子代理工作。 + +如果已超过 10 分钟,请检查代理任务在 Claude Code 侧边栏中是否仍显示为活跃状态。 + +--- + +## 工作流状态问题 + +### 如果工作流似乎已损坏或状态不一致 + +```bash +/gsd-forensics +``` + +或附带描述: + +```bash +/gsd-forensics "Phase 3 execution stalled after wave 1" +``` + +`/gsd-forensics` 执行事后调查:git 历史异常、产物完整性、STATE.md 一致性、未提交的工作以及孤立的工作树。它将报告写入 `.planning/forensics/` 并给出推荐的补救步骤。该命令为只读,不会修改您的项目文件。 + +### 如果您需要回滚某个阶段或计划 + +```bash +/gsd-undo --phase 03 # 回滚阶段 3 的所有提交 +/gsd-undo --plan 03-02 # 回滚阶段 3 中计划 02 的提交 +/gsd-undo --last 5 # 从最近 5 个 GSD 提交中交互式选择 +``` + +`/gsd-undo` 在回滚前检查依赖阶段,并始终显示确认步骤。 + +--- + +## 安装与更新问题 + +### 如果安装后 GSD 未被识别 + +重启您的运行时。GSD 将斜杠命令安装到您运行时的命令目录中(例如 `~/.claude/commands/gsd/`)。大多数运行时仅在启动时发现新命令。 + +如果问题仍然存在,请验证安装: + +```bash +npx @opengsd/gsd-core@latest --claude --local +``` + +有关特定运行时的安装路径和排查说明,请参阅 [在您的运行时中安装](install-on-your-runtime.md)。 + +### 如果更新覆盖了您的本地更改 + +自 v1.17 起,安装程序将本地修改的文件备份到 `gsd-local-patches/`。重新应用您的更改: + +```bash +/gsd-update --reapply +``` + +### 如果无法通过 npm 更新 + +如果 `npx @opengsd/gsd-core` 因 npm 故障或网络限制而失败,请参阅 `docs/manual-update.md` 了解无需 npm 访问即可完成更新的逐步手动更新流程。 + +有关常规更新,请参阅 [更新 GSD](update-gsd.md)。 + +--- + +## 成本问题 + +### 如果模型费用过高 + +切换到预算配置文件: + +```bash +/gsd-config --profile budget +``` + +如果对该领域已很熟悉,请通过设置禁用研究和计划检查代理: + +```bash +/gsd-settings +``` + +另外,请审核已启用的 MCP 服务器。每个已启用的 MCP 服务器都会在每个回合中将其工具架构注入。浏览器和平台特定工具每个可能消耗 20k+ 个令牌。在 `.claude/settings.json` 中禁用当前阶段不需要的服务器: + +```json +{ + "disabledMcpjsonServers": ["playwright", "mac-tools"] +} +``` + +--- + +## 恢复快速参考 + +| 问题 | 解决方案 | +|---------|---------| +| 上下文丢失或新会话 | `/gsd-resume-work` 或 `/gsd-progress` | +| 不知道下一步是什么 | `/gsd-progress --next` | +| 阶段出错 | `/gsd-undo --phase NN`,然后重新规划 | +| 某些内容损坏 | `/gsd-debug "description"`(添加 `--diagnose` 可仅分析而不修复) | +| STATE.md 不同步 | `state validate` 后 `state sync` | +| `.planning/` 完整性不确定 | `/gsd-health`,然后 `/gsd-health --repair` | +| 工作流状态似乎损坏 | `/gsd-forensics` | +| 快速针对性修复 | `/gsd-quick` | +| 计划与您的愿景不符 | `/gsd-discuss-phase N` 后重新规划 | +| 成本过高 | `/gsd-config --profile budget` 和 `/gsd-settings` 关闭代理 | +| 更新破坏了本地更改 | `/gsd-update --reapply` | +| 需要会话摘要 | `/gsd-pause-work --report` | +| 并行执行构建错误 | 更新 GSD 或设置 `parallelization.enabled: false` | + +--- + +## 相关内容 + +- [调试失败的执行](debug-a-failed-execution.md) +- [在您的运行时中安装](install-on-your-runtime.md) +- [命令](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/run-phases-autonomously.md b/docs/zh-CN/how-to/run-phases-autonomously.md new file mode 100644 index 000000000..4d92b56f2 --- /dev/null +++ b/docs/zh-CN/how-to/run-phases-autonomously.md @@ -0,0 +1,124 @@ +# 如何自主运行阶段 + +无需人工干预地运行所有剩余阶段——或指定范围内的阶段——GSD 将自动完成每个阶段的讨论 → 规划 → 执行流程。 + +有关自主运行期间阶段循环的工作原理,请参阅[阶段循环](../explanation/the-phase-loop.md)。 + +--- + +## 前提条件 + +- 已有包含 `.planning/ROADMAP.md` 和 `.planning/STATE.md` 的活跃项目 +- 所有要运行的阶段必须处于自主模式可驱动的状态(待处理或进行中;非已完成状态) +- 您关心的所有设计决策应已记录在 `PROJECT.md` 中,或通过之前的 `/gsd-discuss-phase` 捕获——自主模式仅在使用 `--interactive` 时才能交互式地处理灰色地带 + +--- + +## 运行所有剩余阶段 + +```bash +/gsd-autonomous +``` + +GSD 读取 `ROADMAP.md`,按数字顺序发现所有未完成的阶段,并对每个阶段执行讨论 → 规划 → 执行。所有阶段完成后,它会自动运行里程碑生命周期:审计 → 完成 → 清理。 + +--- + +## 运行特定范围的阶段 + +使用 `--from` 和 `--to` 来限定运行范围。两个标志都接受十进制阶段编号(例如 `3.1`)。 + +```bash +/gsd-autonomous --from 3 # 阶段 3、4、5 …(跳过已完成的阶段 1 和 2) +/gsd-autonomous --to 5 # 直到并包括阶段 5 +/gsd-autonomous --from 3 --to 5 # 恰好是阶段 3、4 和 5 +``` + +到达 `--to` 时,生命周期步骤会被跳过,因为并非所有里程碑阶段都已完成。完成横幅会告诉您如何继续: + +```text +Resume with: /gsd-autonomous --from 6 +``` + +--- + +## 以交互式讨论模式运行 + +默认情况下,自主模式使用智能讨论(批量表格提案)自动回答讨论问题。如果您希望自己回答设计问题,同时将规划和执行保持在主上下文之外: + +```bash +/gsd-autonomous --interactive +``` + +交互模式下: +- `/gsd-discuss-phase` 内联运行并等待您的回答 +- 规划和执行作为后台代理分发,以便您在讨论下一阶段时当前阶段仍在构建 +- 主上下文保持精简——只有讨论对话会累积 + +--- + +## 哪些安全门控仍然适用 + +自主模式不会绕过 GSD 的质量流水线。每个阶段仍然会: + +- 在执行前运行计划检查器 +- 执行后读取 `VERIFICATION.md` 并根据结果进行路由 +- 当验证状态为 `human_needed` 或 `gaps_found` 时暂停并询问您的处理意见 +- 任何步骤失败时停止并提供选项(修复并重试、跳过阶段或停止) + +与手动执行的唯一区别是:`passed` 状态的验证会自动推进——除非需要做出决策,否则不会在阶段间提示您。 + +包合法性门控也保持激活。如果计划中包含针对可疑包的 `checkpoint:human-verify` 任务,执行器将停止并显示检查点。自主模式不会静默安装被标记的包。 + +--- + +## 何时不使用自主模式 + +以下情况请勿使用 `/gsd-autonomous`: + +- **阶段存在未解决的设计决策。** 如果您尚未运行 `/gsd-discuss-phase` 且 `PROJECT.md` 未捕获您的偏好,智能讨论将做出您可能不认同的自主选择。请先交互式地运行讨论,或使用 `--interactive`。 + +- **您需要对单个阶段进行精细控制。** 对于单个阶段,`/gsd-execute-phase N` 会提供逐步输出并允许您在继续之前做出反应。自主模式专为批量无人值守运行而设计。 + +- **阶段包含新颖或高风险的工作。** 自主模式除非遇到阻碍,否则会跳过暂停。对于预期有意外情况的阶段,请通过手动执行保持在循环中。 + +- **您正处于已部分执行的阶段中途。** 自主模式可以接管未完成的阶段,但不会恢复部分执行的波次。使用 `/gsd-execute-phase N` 完成已在进行中的阶段。 + +如果运行中途停止,请参阅[调试失败的执行](debug-a-failed-execution.md)了解如何诊断问题所在。 + +--- + +## 运行期间检查进度 + +自主模式在每个阶段前打印进度横幅: + +```text + GSD ► AUTONOMOUS ▸ Phase 3/7: Auth Middleware [████░░░░] 28% +``` + +如果您需要在会话中途查看运行进度,请打开另一个终端并运行: + +```bash +/gsd-progress +``` + +--- + +## 停止后恢复 + +如果自主模式停止——无论是您从阻碍提示中选择了"停止自主模式",还是会话被中断——请从停止处继续: + +```bash +/gsd-autonomous --from 4 # 将 4 替换为第一个未完成的阶段编号 +``` + +GSD 会自动跳过已完成的阶段,因此如果您不确定运行在何处停止,从较早的阶段编号重新运行是安全的。 + +--- + +## 相关内容 + +- [执行阶段](execute-a-phase.md) +- [调试失败的执行](debug-a-failed-execution.md) +- [命令](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/set-up-cross-ai-review.md b/docs/zh-CN/how-to/set-up-cross-ai-review.md new file mode 100644 index 000000000..5cd718321 --- /dev/null +++ b/docs/zh-CN/how-to/set-up-cross-ai-review.md @@ -0,0 +1,159 @@ +# 如何设置跨 AI 评审 + +**目标:** 配置参与计划评审的 AI 评审者,对已规划的阶段运行评审,并利用反馈收敛出无 HIGH 级别问题的计划。 + +**前提条件:** 该阶段已完成规划(`.planning/phases/` 目录中存在 `{phase}-PLAN.md` 文件),且至少安装并认证了一个外部 AI CLI。 + +--- + +## 决定使用哪些评审者 + +GSD Core 可将评审请求路由至以下任意组合:Gemini CLI、Claude(独立会话)、Codex CLI、CodeRabbit、OpenCode、Qwen Code、Cursor、Antigravity CLI、Ollama、LM Studio 以及 llama.cpp。 + +每位评审者会独立地对您的 `PLAN.md` 文件执行相同的结构化提示。由于不同模型存在不同的盲区,多评审者共识能比任何单一评审者发现更多问题。 + +**如果您尚未安装任何外部 CLI**,请至少安装一个: + +```bash +# Gemini CLI(使用 Google 凭据免费使用) +npm install -g @google/gemini-cli + +# Antigravity CLI(使用 Google 凭据免费使用) +curl -fsSL https://antigravity.google/cli/install.sh | bash + +# Codex CLI +npm install -g @openai/codex +``` + +--- + +## 设置默认评审者(可选) + +默认情况下,`/gsd-review` 会运行所有检测到的 CLI。若要将特定子集固定为项目默认值: + +```bash +/gsd-config --integrations +``` + +集成向导涵盖 API 密钥、代码评审 CLI 路由以及 `review.default_reviewers` 列表。将该列表设置为您希望作为无标志默认值的评审者——例如 `["gemini","codex"]`。 + +或者,也可通过 `gsd-tools` 直接设置: + +```bash +gsd config-set review.default_reviewers '["gemini","codex"]' +``` + +完整的集成设置架构(API 密钥、每个评审者的模型覆盖、本地服务器主机地址)请参阅[配置](../CONFIGURATION.md)。 + +--- + +## 运行评审 + +### 标准评审(使用已配置的默认值或所有检测到的 CLI) + +```bash +/gsd-review --phase 3 +``` + +GSD 会依次调用每位评审者,收集结构化反馈(摘要、优点、HIGH/MEDIUM/LOW 级别问题、建议、风险评估),并将合并后的输出写入 `.planning/phases/03-.../03-REVIEWS.md`。 + +### 为一次性运行选择单个评审者 + +```bash +/gsd-review --phase 3 --gemini +/gsd-review --phase 3 --codex +/gsd-review --phase 3 --cursor +``` + +任何显式标志都会覆盖该次运行的 `--all` 默认值和 `review.default_reviewers`。 + +### 并行运行所有可用评审者 + +```bash +/gsd-review --phase 3 --all +``` + +`--all` 始终覆盖配置,运行完整的检测集合,包括任何已配置的本地模型服务器(Ollama、LM Studio、llama.cpp)。 + +### 本地模型服务器评审者 + +如果您在本地运行 Ollama 或 LM Studio,当服务器可达时,使用 `--all` 会自动将其包含在内。您也可以显式指定: + +```bash +/gsd-review --phase 3 --ollama +/gsd-review --phase 3 --lm-studio +``` + +如果默认值(`localhost:11434` / `localhost:1234`)不适用,请通过 `/gsd-config --integrations` 在 `review.*` 键下配置主机地址和模型选择。 + +--- + +## 读取评审输出 + +`{padded_phase}-REVIEWS.md` 文件包含: + +- 每位评审者的独立评审,附带按严重程度分类的问题 +- **共识摘要**部分,综合了两位或更多评审者提出的问题——从此处开始获取最高优先级信号 +- **分歧观点**部分,记录评审者意见不一致的领域 + +--- + +## 将反馈纳入计划 + +查看输出后,结合反馈重新规划: + +```bash +/gsd-plan-phase 3 --reviews +``` + +规划器会读取 `REVIEWS.md`,并在保存前调整计划以解决相关问题。 + +--- + +## 自动化计划-评审-重规划循环 + +对于希望迭代直至所有 HIGH 级别问题解决的阶段,请使用收敛循环: + +```bash +/gsd-plan-review-convergence 3 +``` + +此命令运行 `plan-phase → review → replan → re-review`,最多循环三次(默认)。当 HIGH 级别问题数量降至零时,循环退出。 + +### 使用特定评审者进行收敛 + +```bash +/gsd-plan-review-convergence 3 --codex +/gsd-plan-review-convergence 3 --gemini +``` + +### 使用所有评审者并提高循环上限进行收敛 + +```bash +/gsd-plan-review-convergence 3 --all --max-cycles 5 +``` + +**停滞检测:** 如果 HIGH 级别问题数量在各轮次间未减少,GSD 会向您发出警告。当循环上限已达但仍存在未解决的 HIGH 级别问题时,升级门控会询问是否继续或手动审查。 + +--- + +## 条件判断:选择哪些评审者 + +| 场景 | 推荐方式 | +|-----------|---------------------| +| 已安装 Gemini CLI | `--gemini` 始终是良好的起始评审者 | +| 希望免费多评审者覆盖 | `--gemini` + `--agy`(两者均使用 Google 凭据) | +| 项目以 OpenAI 为主 | 添加 `--codex` 以获取 OpenAI 模型视角 | +| 希望使用 GitHub Copilot 的模型 | 添加 `--opencode` | +| 希望完全避免 API 费用 | 使用本地模型配置 Ollama 并使用 `--ollama` | +| 发布前需要最大覆盖率 | `/gsd-plan-review-convergence N --all` | +| 快速迭代并希望获得快速反馈 | 选择一个 CLI:`/gsd-review --phase N --gemini` | + +--- + +## 相关内容 + +- [验证并发布](verify-and-ship.md) +- [配置](../CONFIGURATION.md) +- [命令](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/spike-and-sketch.md b/docs/zh-CN/how-to/spike-and-sketch.md new file mode 100644 index 000000000..8717b14b1 --- /dev/null +++ b/docs/zh-CN/how-to/spike-and-sketch.md @@ -0,0 +1,160 @@ +# 如何在正式提交前进行技术验证与界面草图 + +**目标:** 在将某个阶段锁定到具体方案之前,通过聚焦的可行性实验(spike)和一次性 HTML 原型(sketch)来降低实现风险。 + +**前提条件:** 无。`/gsd-spike` 和 `/gsd-sketch` 会自行创建所需的存储目录,不要求已初始化 GSD 项目。 + +--- + +## 决策:spike、sketch,还是两者都用 + +| 你想回答的问题… | 使用 | +|---|---| +| "这个技术方案真的可行吗?" | `/gsd-spike` | +| "这个布局 / 交互 / 视觉处理感觉对吗?" | `/gsd-sketch` | +| "正确的技术方案是什么,它应该长什么样?" | 两者都用,顺序是:先 spike,再 sketch | + +Spike 通过可执行代码和 VALIDATED / INVALIDATED / PARTIAL 结论来回答二元可行性问题。Sketch 通过 2–3 个可在浏览器中对比的 HTML 变体来回答视觉问题。两者互为补充——spike 证明方案可构建,sketch 证明设计值得构建。 + +--- + +## 运行 spike + +### 交互式引导(默认) + +```bash +/gsd-spike +``` + +GSD 会询问技术问题,将其分解为 2–5 个独立实验,以 **Given / When / Then** 假设形式呈现,并在开始构建前请求确认。 + +### 直接提供想法 + +```bash +/gsd-spike "can we stream LLM tokens through SSE" +``` + +### 跳过引导,直接运行 + +```bash +/gsd-spike --quick "websocket vs SSE latency" +``` + +`--quick` 跳过分解对话,直接将参数作为单个 spike 问题处理。当问题已经足够具体、无需进一步细化时使用此选项。 + +### 每个实验产出内容 + +`.planning/spikes/NNN-descriptive-name/` 中的每个 spike 包含: + +- 可运行的代码(非伪代码) +- 在编写任何代码之前写好的 **Given / When / Then** 假设 +- 记录边界情况、方向调整和意外发现的调查轨迹 +- 附有证据的 **VALIDATED**、**INVALIDATED** 或 **PARTIAL** 结论 +- 包含 frontmatter、运行说明和结果的 `README.md` + +所有 spike 均在 `.planning/spikes/MANIFEST.md` 中建立索引。 + +### 打包调查结果 + +当你获得有效信号后,将调查结果封装成项目本地技能,以便后续会话自动加载: + +```bash +/gsd-spike --wrap-up +``` + +此命令会写入 `.claude/skills/spike-findings-[project]/`。该技能会被自动发现,并在后续的 `/gsd-sketch`、`/gsd-ui-phase` 和 `/gsd-plan-phase` 运行时加载——无需显式引用。 + +--- + +## 运行 sketch + +### 风格引导(默认) + +```bash +/gsd-sketch +``` + +GSD 会开启一段简短对话,在编写任何代码之前探索感觉、视觉参考和核心用户操作。它每次只问一个问题,只有在你说"开始"后才动手构建。 + +### 直接提供设计方向 + +```bash +/gsd-sketch "dashboard layout" +``` + +### 跳过风格引导,直接运行 + +```bash +/gsd-sketch --quick "sidebar navigation" +``` + +`--quick` 完全跳过引导对话,直接使用参数作为设计方向。 + +### 非 Claude 运行时(Codex、Gemini CLI 等) + +```bash +/gsd-sketch --text "onboarding flow" +``` + +`--text` 将交互式提示替换为纯文本编号列表。当你的运行时不支持 `AskUserQuestion` 时使用此选项。 + +### 每个草图产出内容 + +`.planning/sketches/NNN-descriptive-name/` 中的每个 sketch 包含: + +- 带有 2–3 个变体、可通过选项卡导航访问的 `index.html`——直接在浏览器中打开,无需构建步骤 +- 功能性交互元素(悬停、点击、过渡动画) +- 使用来自先前 spike 调查结果的字段名和数据结构的近似真实内容 +- 来自 `.planning/sketches/themes/default.css` 的共享 CSS 变量 +- 包含设计问题、变体说明和关注点的 `README.md` + +所有 sketch 均在 `.planning/sketches/MANIFEST.md` 中建立索引。 + +### 打包获胜的设计决策 + +选定变体后,将视觉决策捕获到项目本地技能中: + +```bash +/gsd-sketch --wrap-up +``` + +此命令会写入 `.claude/skills/sketch-findings-[project]/`。该技能由 `/gsd-ui-phase` 自动获取——经过预验证的决策(布局、色彩方案、排版、间距)被视为已锁定,不会再次询问。 + +--- + +## 组合流程:spike → sketch → phase + +当你对技术可行性和视觉方向都不确定时,推荐使用以下顺序: + +```bash +/gsd-spike "SSE vs WebSocket for real-time feed" +/gsd-spike --wrap-up + +/gsd-sketch "real-time feed UI" +/gsd-sketch --wrap-up + +/gsd-discuss-phase N +/gsd-plan-phase N +``` + +spike 调查结果会为 sketch 提供参考(真实数据结构、真实交互状态、实际约束)。两次 wrap-up 均会持久化决策,规划器和 UI 研究员会自动加载,因此在 `/gsd-discuss-phase` 或 `/gsd-ui-phase` 期间无需重新解释选择。 + +--- + +## spike 或 sketch 如何流入某个阶段 + +Spike 和 sketch 的产物不需要手动引用。GSD 会在以下两个时间点自动读取它们: + +1. **`/gsd-sketch`** — 在构建原型前加载 `.claude/skills/spike-findings-*/`,使变体反映已验证的约束(流式状态、真实字段名等) +2. **`/gsd-ui-phase N`** — 在生成 UI 设计契约前加载 `.claude/skills/sketch-findings-*/`;经过预验证的设计决策被视为已锁定 + +当存在 `spike-findings-*` 技能时,规划器也会读取 spike 调查结果,从而使已验证的技术选择(采用哪个库、哪种协议、哪种数据格式)直接流入任务计划,无需反复解释。 + +--- + +## 相关文档 + +- [设计 UI 阶段](design-a-ui-phase.md) +- [规划阶段](plan-a-phase.md) +- [命令参考](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/update-gsd.md b/docs/zh-CN/how-to/update-gsd.md new file mode 100644 index 000000000..3dc3c740c --- /dev/null +++ b/docs/zh-CN/how-to/update-gsd.md @@ -0,0 +1,120 @@ +# 如何更新 GSD Core + +将现有的 GSD Core 安装更新到最新版本,在确认前预览变更日志,并恢复可能被更新覆盖的本地自定义配置。 + +**所需条件:** 与 GSD 安装时相同的运行时环境。更新命令在后台重新运行安装程序,因此需要 Node.js 和 npx(与最初安装时的要求相同)。 + +--- + +## 标准更新流程 + +在 AI 运行时内,执行: + +```bash +/gsd-update +``` + +GSD 将执行以下操作: + +1. 检测已安装的版本和安装范围(全局或本地)。 +2. 通过 npm 检查 `@opengsd/gsd-core` 的最新版本。 +3. 获取变更日志,并显示您已安装版本与最新版本之间的变更内容。 +4. 在执行任何操作前请求确认。 +5. 将 GSD 管理目录中发现的用户添加文件备份至 `gsd-user-files-backup/`。 +6. 运行安装程序(`npx @opengsd/gsd-core@latest -- --`)。 +7. 清除更新检查缓存,使状态栏指示器重置。 +8. 报告本地修改的 GSD 文件是否已备份至 `gsd-local-patches/`。 + +更新完成后请重启运行时,以加载新的命令和代理。 + +--- + +## 命令标志 + +| 标志 | 功能说明 | +|------|--------------| +| `--sync` | 更新后,从 GSD 注册表同步技能 | +| `--reapply` | 更新后,将 `gsd-local-patches/` 中本地修改的 GSD 文件合并回来 | + +```bash +/gsd-update --sync # Update and sync skills +/gsd-update --reapply # Update and reapply local patches +``` + +--- + +## 更新前查看变更日志 + +`/gsd-update` 在请求确认*之前*,始终会显示您已安装版本与最新版本之间的变更日志差异。您无需另行访问 GitHub。输出内容如下所示: + +```text +## GSD Update Available + +Installed: 1.39.0 +Latest: 1.41.0 + +### What's New +──────────────────────────────────────────────────────────── +[changelog entries for 1.40.0 and 1.41.0] +──────────────────────────────────────────────────────────── + +Proceed with update? [Yes, update now / No, cancel] +``` + +如果无法获取变更日志(无网络访问、npm 中断),更新在确认后仍会继续进行——不会因变更日志不可用而被阻断。 + +--- + +## 恢复本地自定义配置 + +### 您在 GSD 管理目录中添加的文件 + +如果您在 GSD 管理的目录中放置了自定义文件(例如,以 `gsd-` 为前缀的自定义代理,或 `commands/gsd/` 中的额外文件),安装程序会在清除这些目录前检测到它们,并将其复制到 `gsd-user-files-backup/`。更新完成后,请从该备份位置手动恢复这些文件。 + +您放置在 GSD 管理目录之外的文件——不以 `gsd-` 为前缀的自定义代理、`commands/gsd/` 之外的自定义命令、您的 `CLAUDE.md` 文件以及自定义钩子——安装程序不会对其进行任何操作。 + +### 您直接修改的 GSD 文件 + +如果您编辑了 GSD 安装的某个文件(例如,调整了某个代理的系统提示),安装程序会通过与清单的哈希比对检测到该修改,将文件备份至 `gsd-local-patches/`,然后用新版本替换它。更新完成后,执行: + +```bash +/gsd-update --reapply +``` + +此命令会将您在 `gsd-local-patches/` 中的修改合并回新安装的文件中。 + +如果您在之前的更新后跳过了 `--reapply`,现在想应用补丁,执行: + +```bash +/gsd-update --reapply +``` + +单独运行 `--reapply` 而不触发新下载是安全的——如果您已是最新版本,GSD 会跳过安装步骤,直接执行补丁重新应用。 + +--- + +## 当 npm 不可用时 + +如果 `npx @opengsd/gsd-core@latest` 因 npm 中断、网络限制,或因您正在使用源代码仓库而失败,请使用 [docs/manual-update.md](../../manual-update.md) 中的手动更新流程。该文档涵盖拉取最新提交、构建钩子分发包以及直接运行 `node bin/install.js` 的步骤。 + +--- + +## 如果您已是最新版本 + +`/gsd-update` 会提前退出并显示确认消息——无需下载、无需安装、无需重启。 + +--- + +## 安装程序迁移 + +每个 GSD 版本可能包含安装程序迁移,用于重命名、移动或停用管理文件。迁移层会在写入新包内容之前自动运行。会影响您已修改文件的迁移操作将提示确认,而不是静默执行。有关完整设计和运行时配置合约注册表,请参阅 [docs/installer-migrations.md](../../installer-migrations.md)。 + +--- + +## 相关内容 + +- [在您的运行时上安装](install-on-your-runtime.md) +- [命令参考](../COMMANDS.md) +- [手动更新](../../manual-update.md) +- [安装程序迁移](../../installer-migrations.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/how-to/verify-and-ship.md b/docs/zh-CN/how-to/verify-and-ship.md new file mode 100644 index 000000000..c7c66dba7 --- /dev/null +++ b/docs/zh-CN/how-to/verify-and-ship.md @@ -0,0 +1,124 @@ +# 如何验证并发布阶段 + +**目标:** 对已执行的工作进行用户验收测试,诊断并修复任何失败,然后开启一个带有自动生成正文的拉取请求。 + +**前提条件:** 该阶段已执行完毕并包含 `SUMMARY.md` 文件。如果执行尚未完成,请参阅[执行阶段](execute-a-phase.md)。 + +--- + +## 运行用户验收测试 + +```bash +/gsd-verify-work 1 +``` + +GSD Core 读取该阶段的 `SUMMARY.md` 文件,提取用户可观测的交付物,并逐一引导您完成验证。对于每个检查点,它会展示*应该*发生的情况,并询问实际情况是否与之匹配。 + +- `yes` / `y` / 直接回车 → 通过,进入下一项测试 +- 其他任何输入 → 记录为问题,严重程度根据您的描述推断 + +您无需手动分类严重程度——GSD Core 会从您的描述中推断("崩溃" → 阻塞级,"无法使用" → 严重级,"看起来不对" → 外观级)。 + +进度将写入 `.planning/phases/01-/01-UAT.md`,在 `/clear` 之后依然保留。若会话中断,重新运行 `/gsd-verify-work 1`,GSD Core 会提示是否从上次检查点恢复。 + +--- + +## 发现失败时:自动诊断与修复规划 + +如果有测试报告问题,GSD Core 会自动执行以下步骤: + +1. **诊断根本原因** — 为每个问题并行启动调试代理,并将根本原因更新至 `UAT.md`。 +2. **规划差距弥补** — 在差距弥补模式下启动 `gsd-planner`,读取 `UAT.md`(含诊断结果)并生成新的 `PLAN.md` 文件。 +3. **验证修复计划** — 启动 `gsd-plan-checker` 确保计划可执行。若发现问题,规划器与检查器最多迭代三次。 +4. **呈现下一步** — 当计划通过检查器时: + +``` +Plans verified and ready for execution. + +`/clear` then `/gsd-execute-phase 1 --gaps-only` +``` + +运行提示的命令以应用修复,然后重新运行 `/gsd-verify-work 1` 确认一切通过。 + +--- + +## 所有测试通过时:发布阶段 + +一旦所有 UAT 测试通过(或首次运行且未发现问题),该阶段将自动在 `ROADMAP.md` 和 `STATE.md` 中标记为已完成。 + +```bash +/gsd-ship 1 +``` + +GSD Core 执行预检(验证状态、干净的工作树、分支、远程仓库、`gh` CLI 身份验证),推送分支并创建 PR: + +```bash +/gsd-ship 1 # 准备审查的 PR +/gsd-ship 1 --draft # 草稿 PR — 当后续还有更多阶段时很有用 +``` + +PR 正文由规划产物自动组装: + +- 来自 `ROADMAP.md` 的阶段目标 +- 来自 `SUMMARY.md` 文件及其关键文件的各计划摘要 +- 已解决的需求(REQ-IDs) +- 来自 `VERIFICATION.md` 的验证状态 +- 来自 `STATE.md` 的关键决策 + +无需手动编写正文。 + +--- + +## 可选:发布前或发布后的代码审查 + +`/gsd-ship` 不会自动运行代码审查,但您可以在任意节点插入审查: + +**验证前**(在 UAT 之前发现问题): + +```bash +/gsd-code-review 1 # 标准审查 +/gsd-code-review 1 --fix # 审查后自动修复 Critical 和 Warning 发现 +``` + +**PR 开启后**(在合并前把关质量): + +```bash +/gsd-code-review 1 --depth=deep # 包含导入图的跨文件分析 +``` + +请参阅[配置跨 AI 审查](set-up-cross-ai-review.md),了解如何在周期早期为计划审查配置 Gemini、Codex 或其他审查工具。 + +--- + +## 可选:创建干净的 PR 分支 + +如果您的分支包含不希望审查者看到的 `.planning/` 提交: + +```bash +/gsd-pr-branch # 相对于 main 进行过滤 +/gsd-pr-branch develop # 相对于 develop 进行过滤 +``` + +`/gsd-pr-branch` 会创建一个仅包含代码变更的新分支——规划产物提交将被排除。若您的团队审查规范不包含规划噪音,请在 `/gsd-ship` 之前运行此命令。 + +--- + +## 关闭里程碑 + +如果这是里程碑中的最后一个阶段,请运行里程碑审计并将其归档: + +```bash +/gsd-audit-milestone # 验证所有需求已发布 +/gsd-complete-milestone # 归档,创建 git 标签 +``` + +`/gsd-complete-milestone` 是 PR 合并后的自然下一步。请参阅[阶段循环](../explanation/the-phase-loop.md),了解验证与发布如何融入完整的项目生命周期。 + +--- + +## 相关内容 + +- [执行阶段](execute-a-phase.md) +- [配置跨 AI 审查](set-up-cross-ai-review.md) +- [阶段循环](../explanation/the-phase-loop.md) +- [命令参考](../COMMANDS.md) diff --git a/docs/zh-CN/how-to/work-in-parallel-with-workstreams.md b/docs/zh-CN/how-to/work-in-parallel-with-workstreams.md new file mode 100644 index 000000000..88e319af0 --- /dev/null +++ b/docs/zh-CN/how-to/work-in-parallel-with-workstreams.md @@ -0,0 +1,157 @@ +# 如何通过工作流并行处理多个领域 + +**目标:** 并发推进不同里程碑领域(后端 API、前端仪表板、基础设施或其他关注点)的工作,同时避免一个领域的规划状态污染另一个领域。 + +**前提条件:** 已激活的 GSD Core 项目(`.planning/ROADMAP.md` 存在)。若尚未创建,请先运行 `/gsd-new-project`。 + +--- + +## 什么是工作流 + +工作流是单一代码库内部的隔离规划上下文。每个工作流拥有独立的 `.planning/workstreams//` 子树,其中包含独立的 `STATE.md`、`ROADMAP.md`、`REQUIREMENTS.md` 以及 `phases/` 目录。代码库本身——源代码、git 历史记录和分支——在所有工作流之间共享。 + +``` +.planning/ +├── PROJECT.md ← shared +├── config.json ← shared +├── codebase/ ← shared +└── workstreams/ + ├── backend-api/ + │ ├── STATE.md + │ ├── ROADMAP.md + │ ├── REQUIREMENTS.md + │ └── phases/ + └── frontend-dash/ + ├── STATE.md + ├── ROADMAP.md + ├── REQUIREMENTS.md + └── phases/ +``` + +当某个工作流处于激活状态时,所有 GSD 命令——`/gsd-progress`、`/gsd-discuss-phase`、`/gsd-plan-phase`、`/gsd-execute-phase`——都将从该工作流的目录读取并写入。切换工作流会将所有这些命令重定向到另一个子树,而不会影响源代码树。 + +--- + +## 创建工作流 + +```bash +/gsd-workstreams create backend-api +``` + +GSD 会在 `.planning/workstreams/backend-api/` 下创建工作流目录,并初始化一个框架 `STATE.md` 和 `ROADMAP.md`。工作流不会自动激活——需要显式切换。 + +--- + +## 列出工作流 + +```bash +/gsd-workstreams list +``` + +显示所有工作流,以及当前会话中哪个工作流处于激活状态。 + +--- + +## 切换到某个工作流 + +```bash +/gsd-workstreams switch backend-api +``` + +从此时起,所有 GSD 工作流命令均在 `backend-api` 上下文中运行。切换是会话范围的:当多个 Claude Code 终端同时打开同一仓库时,每个会话可以持有不同的激活工作流,互不干扰。 + +切换后,按正常阶段工作流推进: + +```bash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +/gsd-execute-phase 1 +/gsd-verify-work 1 +``` + +如需在另一个领域工作,在第二个终端中切换工作流: + +```bash +/gsd-workstreams switch frontend-dash +/gsd-discuss-phase 1 +/gsd-plan-phase 1 +``` + +--- + +## 查看所有工作流的进度 + +```bash +/gsd-workstreams progress +``` + +打印跨工作流摘要——每个工作流的阶段状态、当前位置和未完成工作——无需在工作流之间来回切换。 + +查看单个工作流的详细状态: + +```bash +/gsd-workstreams status backend-api +``` + +--- + +## 在工作流中恢复工作 + +在上下文重置或新会话后,恢复您的位置: + +```bash +/gsd-workstreams resume backend-api +``` + +此命令会激活该工作流并恢复上次已知位置,等价于切换后再运行 `/gsd-resume-work`。 + +--- + +## 归档已完成的工作流 + +当某个工作流的里程碑工作完成时: + +```bash +/gsd-workstreams complete backend-api +``` + +GSD 会将该工作流标记为已归档,并将其从活跃列表中移出。规划产物将保留在 `.planning/workstreams/backend-api/` 下以供审计。 + +--- + +## 在不切换工作流的情况下将单条命令定向到特定工作流 + +如需对某个特定工作流运行一条命令,而不更改当前会话的激活上下文,请使用 `--ws` 标志: + +```bash +/gsd-progress --ws frontend-dash +/gsd-plan-phase 2 --ws backend-api +``` + +`--ws` 在解析顺序中具有最高优先级,不会更改会话范围的指针。 + +--- + +## 何时选择工作流而非工作区 + +在以下情况下选择工作流: + +- 所有工作都位于**同一仓库**并共享相同的 git 历史记录 +- 您希望**并发**规划或讨论不同关注领域(API、UI、基础设施),而不让一个工作流的 `STATE.md` 覆盖另一个的 +- 创建时不需要为每个工作流单独建立分支(当然,您仍可在每个工作流的执行过程中正常创建分支) +- 创建完整 git worktree 的开销与所需隔离程度不匹配 + +在以下情况下选择[工作区](isolate-work-with-workspaces.md): + +- 您需要在**多个仓库**之间工作(例如 `hr-ui` 和 `ZeymoAPI`) +- 每个功能需要**独立 git worktree** 或克隆的隔离——完全独立的分支、锁文件和构建产物 +- 您希望在每个工作区中独立运行 `/gsd-new-project`,拥有完全独立的 `.planning/` 根目录,而不是主仓库 `.planning/` 的子目录 + +--- + +## 相关文档 + +- [用工作区隔离工作](isolate-work-with-workspaces.md) +- [阶段循环](../explanation/the-phase-loop.md) +- [命令](../COMMANDS.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/issue-driven-orchestration.md b/docs/zh-CN/issue-driven-orchestration.md new file mode 100644 index 000000000..f078a80ae --- /dev/null +++ b/docs/zh-CN/issue-driven-orchestration.md @@ -0,0 +1,96 @@ +# 使用 GSD 进行议题驱动的编排 + +**状态:** 稳定工作流指南 +**受众:** 在 GitHub Issues、Linear、Jira 或类似议题跟踪系统中管理工作的开发者,希望通过 GSD 现有原语驱动 AI 辅助实现。 + +## 本指南的内容 + +本指南提供一套方案,将 GSD 已有的命令组合成一个"议题跟踪 → 工作区 → 计划/执行 → 验证/审核 → PR"的循环。这仅是文档说明。无新命令、无守护进程、无跟踪系统集成 —— 下文引用的每一条命令在 GSD 中均已存在。 + +本方案的结构受到 OpenAI 开源 [Symphony 编排参考](https://openai.com/index/open-source-codex-orchestration-symphony/)([代码库](https://github.com/openai/symphony))的启发。GSD 不内嵌或封装 Symphony。Symphony 中的编排*概念*可以清晰地映射到 GSD 已有的原语上;本指南只是将这种映射明确阐述出来,让你无需编写粘合代码或绕过 GSD 的安全门控即可采用该模式。 + +## 为何存在本指南 + +GSD 具备议题驱动 AI 开发的基础构建块 —— +`/gsd-workspace --new`、`/gsd-manager`、`/gsd-autonomous`、`/gsd-verify-work`、 +`/gsd-review`、`/gsd-ship`,以及 `STATE.md` 和阶段产物套件 +—— 但缺少一份说明如何从单个跟踪议题驱动它们、无需编写自定义编排脚本的指南。没有这份指南,常见的失效模式是: + +- 使用不足:开发者手动运行 discuss/plan/execute,即使工作模式完全适合,也从未使用 + `/gsd-manager` 或 `/gsd-autonomous`。 +- 绕过脚本:开发者在跟踪系统与 `claude` 调用之间编写临时 shell 循环,绕过 `STATE.md`、阶段清单和验证门控。 + +本指南使规范循环变得易于发现。 + +## 概念映射 + +每行将 Symphony 风格的编排概念映射到 GSD 中对应的原语。在阅读 Symphony 文档、博客文章或第三方编排资料时,可将此表用作转换参考。 + +| Symphony 概念 | GSD 原语 | +|---|---| +| `WORKFLOW.md`(顶层意图) | `ROADMAP.md`(项目意图)、`STATE.md`(实时状态)、阶段 `CONTEXT.md`(每阶段范围)、阶段 `PLAN.md`(可执行步骤) | +| 每个任务一个独立的代理工作区 | `/gsd-workspace --new --strategy worktree` | +| 代理调度与并发 | `/gsd-manager`(交互式仪表板)、`/gsd-autonomous`(无人值守) | +| 每阶段的计划与讨论步骤 | `/gsd-discuss-phase` → `/gsd-plan-phase` → `/gsd-execute-phase` | +| 工作证明 / 测试证据 | `/gsd-verify-work`(UAT.md 在 `/clear` 后持久保存) | +| 对抗性审核 | `/gsd-review`(由独立 AI CLI 对计划进行交叉对等审核) | +| 人工合并门控 | `/gsd-ship`(创建 PR,可选代码审查,准备合并) | +| 后续工作捕获 | `/gsd-capture`、`/gsd-capture --seed`、`/gsd-new-milestone`,或手动打开的跟踪议题 | +| 并发控制 | Manager / 后台代理语义(无持续轮询器) | + +映射是单向的:GSD 持有安全门控(验证、人工审核、后续工作创建的明确确认)。Symphony 的"持续编排"框架被有意地未采用 —— 参见[非目标](#非目标)。 + +## 端到端流程 + +规范的"议题 → PR"循环,设计为可从单个跟踪议题端到端运行。运行前请替换括号中的占位符。 + +1. **选择跟踪议题。** 从你的跟踪系统(GitHub、Linear 等)中选择一个范围足够明确可供自主实现的议题 —— 边界清晰、验收标准可观察、没有阻碍执行的上游依赖。 +2. **映射到 GSD 阶段。** 如果该议题对应 `ROADMAP.md` 中已有的阶段,选择它。若无,运行 `/gsd-new-milestone`(用于一批相关议题的新里程碑),或通过 `/gsd-phase` / `/gsd-phase --insert` 打开一个阶段。将跟踪议题 URL 写入该阶段的 `CONTEXT.md`,确保可追溯性在压缩后依然保留。 +3. **创建独立工作区。** 运行 `/gsd-workspace --new --strategy worktree `,以创建一个带有独立 `.planning/` 目录的 git 工作树。工作树是安全边界:任何探索、部分提交或中止的计划都保留在 `main` 之外。 +4. **通过 GSD 运行 discuss → plan → execute。** 在工作区内部运行 `/gsd-discuss-phase` 澄清歧义,运行 `/gsd-plan-phase` 生成 `PLAN.md`,再通过 `/gsd-manager`(交互式仪表板)或 `/gsd-execute-phase` / `/gsd-autonomous`(无人值守)来实现。避免从 GSD 外部直接驱动原始 `claude` 调用 —— 这会绕过 `STATE.md` 更新和阶段清单。 +5. **要求工作证明。** 运行 `/gsd-verify-work`,引导用户根据阶段的验收标准进行 UAT。测试、截图、日志捕获和配置差异均记录在 `UAT.md` 中,该文件在 `/clear` 后持久保存,并在验证发现遗漏范围时通过 `/gsd-plan-phase --gaps` 补充缺口。 +6. **通过审核和发布门控。** 运行 `/gsd-review`,从独立 AI CLI 获取对计划的对抗性对等审核(逐模型发现盲点),然后运行 `/gsd-ship`,从规划产物中组装丰富的 PR 正文并打开 PR。两个门控都需要人工决策,之后才能推送到远端。 +7. **明确捕获后续工作。** 使用 `/gsd-capture` 记录内联备注,使用 `/gsd-capture --seed` 记录值得未来阶段处理的想法,或使用 `/gsd-new-milestone` 记录一组有关联的后续工作。从发现的后续工作创建跟踪议题需要明确的用户确认 —— GSD 不会自动向远程跟踪系统发布内容。 + +PR 合并后,循环关闭。PR 正文中的自动关闭关键词(`Closes #NNN` / `Fixes #NNN`)会在合并时关闭跟踪议题。 + +## 安全边界 + +该循环之所以安全,是因为四项不变量在构建上得到保证: + +- **独立工作树。** 每个议题在 `/gsd-workspace --new` 工作树中运行,因此部分工作、中止的计划和探索性提交永远不会触及 `main`。`gsd-local-patches/` 是恢复入口,当工作树的手动编辑需要跨更新带回时可使用。 +- **明确的人工审核。** `/gsd-review` 和 `/gsd-ship` 均会停下来等待人工批准。没有自动合并,也没有从执行路径自动创建 PR 的路径。如果你想为特定代码库移除人工门控,那是你的分支保护 / 合并队列策略决定,而非 GSD 代为选择的。 +- **不自动公开发布。** GSD 从不在没有明确用户发起命令的情况下打开、评论或关闭跟踪议题。后续工作捕获默认写入本地产物(备注、种子、里程碑);推回跟踪系统是单独的手动步骤。 +- **发布前先验证。** `/gsd-verify-work` 的 UAT.md 必须记录证据,才能运行 `/gsd-ship`。推荐的规范是将 `verification_failed` 视为阻塞项,即使实现看起来正确 —— 失败通常意味着遗漏了验收标准,而非测试不稳定。 + +如果这些不变量中的任何一项被绕过(例如直接对工作树运行 `claude`、跳过 `/gsd-verify-work`,或在没有用户确认的情况下通过跟踪 API 脚本化创建议题),本指南的保证将不再适用。 + +## 非目标 + +本指南刻意**不**提出以下任何内容。在此列出,以防止未来贡献者在代码审查中重新讨论: + +- **不内嵌或复制 Symphony 代码。** GSD 复用自身原语。上述映射是概念性的;本代码库中不包含任何 Symphony 衍生源码。 +- **无长期运行的守护进程。** GSD 不轮询 GitHub 或 Linear。Manager 和自主工作流通过后台代理语义处理并发,而非通过守护进程。 +- **无强制跟踪系统依赖。** 该循环无需任何跟踪系统集成即可运行。"跟踪议题"步骤是一种*人工输入* —— URL 写入 `CONTEXT.md`。GSD 不关心你使用哪个跟踪系统,或者你是否使用跟踪系统。 +- **不绕过验证、审核或人工决策门控。** 即使在运行 `/gsd-autonomous` 时,验证和审核门控依然触发。"autonomous(自主)"标签指的是阶段间的推进,而非跳过人工批准。 +- **不扩展默认技能 / 命令面。** 本指南引用的每一条命令均已存在。本指南是文档面,而非功能面。 + +## 可能的未来后续 + +如果维护者在使用该循环的过程中积累了足够的经验,一个独立的 approved-enhancement 可在未来添加*最小化*的跟踪桥接: + +- 将一个 GitHub 或 Linear 议题导入 GSD 工作区 / 阶段。 +- 将 `UAT.md` 证据作为评论导出到源议题。 +- 从 `/gsd-capture --seed` 输出生成后续跟踪议题。 + +上述每一项都将是独立的增强提案,因为每项都增加了集成面和持续维护负担。它们超出了本指南的范围。 + +## 相关资源 + +- [阶段循环](explanation/the-phase-loop.md) — 说明 discuss → plan → execute → verify → ship 如何作为重复循环组合在一起。 +- [工作区操作指南](how-to/work-in-parallel-with-workstreams.md) — 创建和管理并行工作树的逐步指南。 +- [文档索引](README.md) — GSD Core 文档的完整目录。 +- [docs/USER-GUIDE.md](./USER-GUIDE.md) — 上述各命令以任务为导向的操作指南。 +- [docs/COMMANDS.md](COMMANDS.md) — `/gsd-*` 命令的完整参考。 +- [docs/FEATURES.md](FEATURES.md) — 功能级能力矩阵(工作区、manager、autonomous、verify、review、ship)。 +- [docs/ARCHITECTURE.md](ARCHITECTURE.md) — 阶段产物生命周期与 `STATE.md` 机制。 diff --git a/docs/zh-CN/reference/context-md.md b/docs/zh-CN/reference/context-md.md new file mode 100644 index 000000000..349735ca8 --- /dev/null +++ b/docs/zh-CN/reference/context-md.md @@ -0,0 +1,148 @@ +# CONTEXT.md 结构参考 + +每个阶段的 `CONTEXT.md` 是 GSD Core 用于保存 `/gsd:discuss-phase` 阶段所收集的实现决策的载体。它是研究代理和规划代理的主要上游输入。本页面记录其结构。参见[文档索引](../README.md)。 + +--- + +## 概述 + +每个经过讨论工作流处理的阶段,均会在以下路径生成一份 `CONTEXT.md`: + +``` +.planning/phases/-/-CONTEXT.md +``` + +示例:`.planning/phases/03-post-feed/03-CONTEXT.md`。 + +该文件由 `get-shit-done/workflows/discuss-phase.md` 中的 `write_context` 步骤生成(或通过 PRD/ADR 摄入快速路径生成)。在正常操作中,该文件不会被手动编辑——讨论阶段工作流负责写入,下游代理将其作为封闭的可信来源读取。 + +--- + +## 前言(Frontmatter) + +`CONTEXT.md` 不包含 YAML 前言。元数据以内联形式写在正文顶部: + +```markdown +# Phase [X]: [Name] - Context + +**Gathered:** [ISO date] +**Status:** Ready for planning +``` + +`Status` 字段在文件首次写入时始终为 `Ready for planning`,创建后不再更新。 + +--- + +## 块结构 + +正文由若干具名 XML 风格的块组成,以固定顺序出现。下游代理通过块名而非行号来读取各块内容。 + +| 块名 | 用途 | 由谁填充 | 由谁消费 | +|---|---|---|---| +| `` | 声明阶段边界——本阶段交付内容及明确排除在范围之外的内容。在规划和执行过程中为范围护栏提供锚点。 | `discuss-phase`(来自 ROADMAP.md 阶段目标) | `gsd-planner`、`gsd-plan-checker`(范围合规性) | +| `` | 仅在 `check_spec` 步骤发现 `*-SPEC.md` 时才存在。列出锁定的需求数量和范围边界;代理被指示直接读取 `SPEC.md` 以获取完整需求。 | `discuss-phase`(条件性) | `gsd-planner`(直接读取 SPEC.md,而非在此重读需求) | +| `` | 从讨论中收集的实现决策,使用 `D-NN` 标识符标注。分类由实际讨论内容产生,而非固定分类体系。包含 `Claude's Discretion` 子节,用于用户委托代理自行决定的领域。 | `discuss-phase`(交互式讨论) | `gsd-planner`(锁定的决策必须实现)、`gsd-plan-checker`(维度 7 合规性) | +| `` | 与本阶段相关的所有规格文档、ADR、功能文档或设计文档的完整相对路径。必填——每份 CONTEXT.md 必须包含此节。代理在规划或实现之前必须读取列出的文件。 | `discuss-phase`(从 ROADMAP.md 引用 + 讨论中的用户引用 + 代码库侦查积累) | `gsd-phase-researcher`、`gsd-planner` | +| `` | 在 `scout_codebase` 步骤中发现的可复用资产、已建立的模式和集成点。引导代理使用现有代码,而非重新实现。 | `discuss-phase`(代码库侦查) | `gsd-planner`、`gsd-phase-researcher` | +| `` | 讨论期间逐字记录的具体"我希望它像 X 一样"的参考、产品对比或特定示例。 | `discuss-phase`(自由形式用户输入) | `gsd-planner` | +| `` | 讨论中出现但属于其他阶段的想法,予以保留以免遗失。当待办事项经过审查但未纳入范围时,包含 `Reviewed Todos` 子节。 | `discuss-phase`(范围蔓延重定向) | 不被自动化代理消费;仅供人工参考 | + +--- + +## 决策标识符格式 + +`` 中的每条决策均带有顺序编号的 `D-NN` 标识符: + +```markdown +### Layout style +- **D-01:** Card-based layout, not timeline or list +- **D-02:** Each card shows: author avatar, name, timestamp, full post content, reaction counts +``` + +标识符的作用域限定在阶段内。第 3 阶段中的 `D-01` 与第 7 阶段中的 `D-01` 无关。计划检查器(维度 7)会验证每个 `D-NN` 是否在生成计划中至少有一个任务动作加以覆盖。 + +--- + +## 规范引用 + +`` 块为**必填项**。如果代理发现其缺失,会将该 CONTEXT.md 视为不完整并发出警告。条目按主题分组,包含完整相对路径以及对文件所决定或定义内容的简要说明: + +```markdown + +## Canonical References + +**Downstream agents MUST read these before planning or implementing.** + +### Feed display +- `docs/features/social-feed.md` — Feed requirements, post card fields, engagement display rules +- `docs/decisions/adr-012-infinite-scroll.md` — Scroll strategy decision, virtualisation requirements + +### Empty states +- `docs/design/empty-states.md` — Empty state patterns, illustration guidelines + + +``` + +当项目没有外部规格文档时,该节应明确说明: + +``` +No external specs — requirements fully captured in decisions above +``` + +在 `` 中散落的内联提及(如"参见 ADR-019")是不够的;代理需要在专用节中获取完整路径。 + +--- + +## 决策覆盖关卡关系 + +计划检查器的**维度 7:上下文合规性**在规划完成后执行覆盖关卡检查: + +1. `` 中的每个 `D-NN` 标识符必须出现在至少一个计划任务的 `` 或说明中。 +2. 任何任务均不得实现 `` 中列出的内容(即范围蔓延)。 +3. `Claude's Discretion` 领域免于此检查——规划者可自由选择。 + +决策被成功纳入计划的 CONTEXT.md 被视为合规。决策被悄然丢弃或部分交付的 CONTEXT.md 会触发**维度 7b:范围缩减检测**,这始终是一个**阻断项**。 + +--- + +## SPEC.md 集成 + +当 `/gsd:spec-phase` 在讨论阶段之前运行时,`check_spec` 步骤会找到 `*-SPEC.md` 文件并激活 ``: + +```markdown + +## Requirements (locked via SPEC.md) + +**12 requirements are locked.** See `03-SPEC.md` for full requirements, boundaries, and acceptance criteria. + +Downstream agents MUST read `03-SPEC.md` before planning or implementing. Requirements are not duplicated here. + +**In scope (from SPEC.md):** [copied from SPEC.md Boundaries] +**Out of scope (from SPEC.md):** [copied from SPEC.md Boundaries] + + +``` + +当 `` 存在时,`` 中仅包含来自讨论的实现决策——即"如何做",而非"做什么"。需求不会在两个文件之间重复。 + +--- + +## 页脚 + +每份 CONTEXT.md 以身份页脚结尾: + +```markdown +--- + +*Phase: XX-name* +*Context gathered: [date]* +``` + +--- + +## 相关内容 + +- [PLAN.md 结构](plan-md.md) +- [规划产物](planning-artifacts.md) +- [讨论模式](../workflow-discuss-mode.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/reference/plan-md.md b/docs/zh-CN/reference/plan-md.md new file mode 100644 index 000000000..97643ce55 --- /dev/null +++ b/docs/zh-CN/reference/plan-md.md @@ -0,0 +1,249 @@ +# PLAN.md 模式参考 + +每个计划的 `PLAN.md` 是 GSD Core 的可执行工作单元——一份结构化文档,精确告知执行器代理需要构建什么以及如何验证构建是否正确完成。本页记录其结构。参见[文档索引](../README.md)。 + +--- + +## 概述 + +计划存放在以下位置的阶段目录中: + +``` +.planning/phases/-/--PLAN.md +``` + +例如:`.planning/phases/03-post-feed/03-02-PLAN.md`(第 3 阶段,第 2 计划)。 + +计划由 `gsd-planner` 代理生成(由 `/gsd:plan-phase` 触发),并由 `execute-phase` 消费。一个阶段通常包含一到四个计划;同一阶段内的计划被分配到执行波次,以便独立工作并行运行。 + +--- + +## YAML 前置元数据 + +每个 PLAN.md 以位于 `---` 分隔符之间的 YAML 前置元数据块开头。 + +### 注释示例 + +```yaml +--- +phase: 03-post-feed +plan: 02 +type: execute +wave: 2 +depends_on: ["03-01"] +files_modified: + - src/components/PostFeed.tsx + - src/components/PostCard.tsx + - src/app/feed/page.tsx +autonomous: true +requirements: ["FEED-01", "FEED-03"] +user_setup: [] + +must_haves: + truths: + - "User can scroll through posts from followed accounts" + - "Each post shows author avatar, name, timestamp, and content" + - "Empty state appears when no posts exist" + artifacts: + - path: "src/components/PostFeed.tsx" + provides: "Scrollable post list" + min_lines: 40 + - path: "src/components/PostCard.tsx" + provides: "Individual post card" + exports: ["PostCard"] + key_links: + - from: "src/components/PostFeed.tsx" + to: "/api/feed" + via: "fetch in useEffect" + pattern: "fetch.*api/feed" +--- +``` + +### 前置元数据字段参考 + +| 字段 | 是否必填 | 类型 | 用途 | +|---|---|---|---| +| `phase` | 是 | string | 阶段标识符,例如 `03-post-feed`。 | +| `plan` | 是 | string | 阶段内的计划编号,例如 `02`。 | +| `type` | 是 | `execute` 或 `tdd` | 标准计划使用 `execute`;测试驱动计划使用 `tdd`,测试在实现之前编写。 | +| `wave` | 是 | integer | 执行波次。波次 1 中的计划并行运行(无依赖关系)。波次 2 及以上的计划等待上一波次的所有计划完成后才开始。由 `gsd-planner` 在规划时预先计算。 | +| `depends_on` | 是 | array of plan IDs | 该计划必须等待的前置计划。空数组表示波次 1。示例:`["03-01"]` 表示该计划在第 3 阶段计划 01 完成后运行。 | +| `files_modified` | 是 | array of paths | 该计划创建或修改的所有文件。被计划检查器用于检测同波次文件冲突,也被 execute-phase 用于合并跟踪。 | +| `autonomous` | 是 | boolean | 当所有任务类型均为 `auto` 时为 `true`。当计划包含任何需要人工交互的 `checkpoint:*` 任务时为 `false`。 | +| `requirements` | 是 | array of IDs | 该计划所对应的 ROADMAP.md 中的需求 ID。每个阶段需求 ID 必须出现在至少一个计划的 `requirements` 字段中。空数组是阻断项(BLOCKER)。 | +| `user_setup` | 否 | array of objects | Claude 无法自动化的外部服务设置步骤(账户创建、密钥获取、控制台配置)。存在时,execute-phase 会为开发者生成 `USER-SETUP.md` 检查清单。 | +| `must_haves` | 是 | object | 以目标为导向的验证标准。详见下文。 | + +--- + +## `must_haves` 字段 + +`must_haves` 描述了阶段目标达成后必须可观测到的真实状态。该字段在规划阶段派生,并在执行后由 `gsd-verifier` 代理验证。 + +### 子字段 + +| 子字段 | 类型 | 用途 | +|---|---|---| +| `truths` | array of strings | 从用户视角可观测到的行为。每项必须可验证。示例:`"User can send a message"`,而非 `"WebSocket library installed"`。 | +| `artifacts` | array of objects | 必须存在且具有实质性实现(非桩代码)的文件。 | +| `artifacts[].path` | string | 相对于项目根目录的文件路径。 | +| `artifacts[].provides` | string | 该文件所提供的能力。 | +| `artifacts[].min_lines` | integer(可选) | 被视为非桩代码的最小行数。 | +| `artifacts[].exports` | array of strings(可选) | 需要验证的预期命名导出项。 | +| `artifacts[].contains` | string(可选) | 必须出现在文件中的正则表达式或字面量模式。 | +| `key_links` | array of objects | 制品之间的关键连接——使系统端到端运行的接线。 | +| `key_links[].from` | string | 源文件或组件。 | +| `key_links[].to` | string | 目标文件、端点或模块。 | +| `key_links[].via` | string | 连接方式描述(例如 `fetch in useEffect`、`Prisma query`、`import`)。 | +| `key_links[].pattern` | string(可选) | 用于验证源代码中连接是否存在的正则表达式。 | + +--- + +## 正文结构 + +前置元数据之后,计划正文使用执行器代理读取的具名 XML 风格块。 + +### `` + +说明计划所交付的内容及其对项目的重要性: + +```xml + +Implement the post feed as a scrollable card list. + +Purpose: Core display feature for the social feed phase. +Output: PostFeed and PostCard components wired to /api/feed. + +``` + +### `` + +列出执行器在开始前读取的工作流文件。始终包含 execute-plan 工作流;当计划包含检查点任务时,额外添加检查点参考: + +```xml + +@~/.claude/get-shit-done/workflows/execute-plan.md +@~/.claude/get-shit-done/templates/summary.md + +``` + +### `` + +引用执行器需要读取的源文件。包括项目级规划文档以及计划必须复用其模式或类型的源文件。仅当后续计划对其类型或决策存在真实依赖时,才引用前序计划的 `SUMMARY.md` 文件——而非无条件引用: + +```xml + +@.planning/PROJECT.md +@.planning/ROADMAP.md +@.planning/STATE.md +@src/components/UserCard.tsx + +``` + +### `` + +包含一个或多个 `` 元素。对于 `type="auto"` 的任务,每个任务元素必须包含 ``、``、``、``、``、`` 和 ``。 + +--- + +## 任务类型 + +| 类型 | 使用场景 | 自主程度 | +|---|---|---| +| `auto` | 执行器可独立完成的所有内容。 | 完全自主。 | +| `checkpoint:human-verify` | 需要人工查看运行中的界面或服务进行视觉或功能验证。 | 暂停执行;呈现给开发者;批准后恢复。 | +| `checkpoint:decision` | 执行过程中出现的需要开发者输入的实现选择。 | 暂停执行;呈现选项;选择后恢复。 | +| `checkpoint:human-action` | 真正不可避免的手动步骤(账户创建、硬件交互)。谨慎使用。 | 暂停执行;确认后恢复。 | + +包含任何检查点任务的计划必须在前置元数据中设置 `autonomous: false`。 + +--- + +## `auto` 任务结构 + +```xml + + Task 1: Create PostCard component + src/components/PostCard.tsx + src/components/UserCard.tsx, src/types/post.ts + Create PostCard component accepting a Post prop (id, authorId, content, createdAt, + reactionCount). Render author avatar using UserAvatar from UserCard pattern. Show timestamp + using date-fns formatDistanceToNow. Export as named export PostCard. + npx tsc --noEmit + + - src/components/PostCard.tsx exports named export PostCard + - PostCard.tsx contains "reactionCount" prop usage + - npx tsc --noEmit exits 0 + + PostCard renders post content with author and timestamp + +``` + +### `auto` 任务必填字段 + +| 字段 | 规则 | +|---|---| +| `` | 任务创建或修改的所有文件。执行器只写入这些文件。 | +| `` | 执行器在修改任何内容之前必须读取的文件——包括待修改文件、任何真实来源的模式文件以及必须复用其类型或约定的文件。 | +| `` | 包含精确标识符、文件路径、函数签名和预期值的具体指令。不能在未指定目标状态的情况下说"将 X 与 Y 对齐"。不包含代码围栏块或完整实现。 | +| `` | 可运行的命令或检查,用于证明任务已成功完成。必须能区分通过与失败——`echo "done"` 无效。 | +| `` | 可验证的条件:可通过 grep 验证的字符串、命令退出码、可观测行为。不含主观性语言("看起来正确"、"配置正确")。 | +| `` | 已完成结果的简短可量化陈述。 | + +--- + +## 计划质量维度 + +`gsd-plan-checker` 代理在执行开始前对每个 PLAN.md 进行 12 个维度的审查。任何未通过 BLOCKER 级别检查的计划将被退回给 `gsd-planner` 修订(最多 3 次迭代): + +| 维度 | 检查内容 | +|---|---| +| **1 — 需求覆盖率** | ROADMAP.md 中每个阶段需求 ID 出现在至少一个计划的 `requirements` 前置元数据字段中,并有相应的覆盖任务。 | +| **2 — 任务完整性** | 每个 `auto` 任务携带所有必填字段(``、``、``、``、``)。无模糊或空字段。 | +| **3 — 依赖正确性** | `depends_on` 引用有效、无循环,并与波次编号一致。第 N 波次计划仅依赖波次 < N 的计划。 | +| **4 — 关键链接规划** | `must_haves.key_links` 中的制品有对应的实现接线任务——而非仅创建制品。 | +| **5 — 范围合理性** | 计划保持在上下文预算内:每个计划 2–3 个任务(4 个 = 警告,5 个及以上 = BLOCKER),每个计划 ≤ 8–10 个文件(15 个及以上 = BLOCKER)。 | +| **6 — 验证推导** | `must_haves.truths` 是用户可观测行为,而非实现细节。制品映射到真实状态。关键链接覆盖关键接线。 | +| **7 — 上下文合规性** | CONTEXT.md 中每个 `D-NN` 决策至少由一个任务处理。没有任务实现 `` 中的内容。 | +| **7b — 范围缩减检测** | 任务操作不会在未交付完整决策范围的情况下,悄悄将已锁定决策降级为"v1"、"桩代码"或"未来增强"。发现时始终为 BLOCKER。 | +| **7c — 架构层级合规性** | 任务按照 RESEARCH.md 架构责任映射(如存在)将能力分配到正确层级。安全敏感能力分配到错误层级时为 BLOCKER。 | +| **8 — 奈奎斯特合规性** | 当 `workflow.nyquist_validation` 已启用且 RESEARCH.md 存在时,每个任务有 `` 验证命令,连续 3 个任务的窗口内不缺少覆盖,且 VALIDATION.md 存在。 | +| **9 — 跨计划数据契约** | 当计划共享数据管道时,其转换相互兼容——没有计划删除另一个计划需要原始形式的数据。 | +| **10 — CLAUDE.md 合规性** | 计划遵守 `./CLAUDE.md` 中的项目特定约定、禁止模式、必需工具和安全要求。 | +| **11 — 研究解决** | 当 RESEARCH.md 存在时,其 `## Open Questions` 部分在规划继续之前标记为 `(RESOLVED)`。 | +| **12 — 模式合规性** | 当 PATTERNS.md 存在时,任务为每个新建或修改的文件引用正确的类比模式。 | + +--- + +## 波次执行模型 + +波次编号在规划阶段预先计算。Execute-phase 按波次编号对计划进行分组,并行运行每个波次的计划: + +``` +Wave 1: Plan 01, Plan 02, Plan 03 (all run simultaneously — no dependencies) +Wave 2: Plan 04 (waits for Wave 1 to complete) +Wave 3: Plan 05 (waits for Wave 2 to complete) +``` + +同一波次中修改重叠文件的计划不得处于同一波次——计划检查器的维度 3 会将此标记为 BLOCKER。 + +--- + +## 计划输出 + +计划成功执行后,执行器在以下路径写入 SUMMARY.md: + +``` +.planning/phases/-/--SUMMARY.md +``` + +SUMMARY.md 是所构建内容的权威记录。同一阶段内的后续计划,仅当对其类型或决策存在真实依赖时,才可引用该文件。 + +--- + +## 相关内容 + +- [CONTEXT.md 模式](context-md.md) +- [规划制品](planning-artifacts.md) +- [功能特性](../FEATURES.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/reference/planning-artifacts.md b/docs/zh-CN/reference/planning-artifacts.md new file mode 100644 index 000000000..7039e8cd5 --- /dev/null +++ b/docs/zh-CN/reference/planning-artifacts.md @@ -0,0 +1,225 @@ +# 规划产物参考 + +`.planning/` 目录是 GSD Core 项目的共享记忆。所有工作流都会读取和写入该目录,并留下可审计的决策记录。本页列出每个文件、其用途,以及哪些命令负责生成或消费它。参见[文档索引](../README.md)。 + +--- + +## 目录结构 + +``` +.planning/ +├── PROJECT.md # 项目标识与核心价值 +├── ROADMAP.md # 里程碑 + 阶段列表及目标 +├── REQUIREMENTS.md # 编号化验收标准 +├── STATE.md # 实时进度跟踪器 +├── config.json # 工作流与模型配置 +├── MILESTONES.md # 里程碑归档(可选) +├── BACKLOG.md # 延期与未来工作(可选) +├── LEARNINGS.md # 跨阶段积累的经验(可选) +├── DECISIONS-INDEX.md # 历史决策滚动摘要(可选) +├── METHODOLOGY.md # 可复用的解释框架(可选) +├── HANDOFF.json # 机器可读的暂停状态(临时文件) +├── codebase/ # 代码库映射(可选) +│ ├── architecture.md +│ ├── stack.md +│ └── ... +├── intel/ # 可查询的符号索引(可选,intel.enabled) +│ └── API-SURFACE.md +└── phases/ + └── -/ # 每个阶段一个目录 + ├── -CONTEXT.md # 实现决策(discuss-phase) + ├── -DISCUSSION-LOG.md # 人类可读的讨论审计(discuss-phase) + ├── -RESEARCH.md # 技术研究结果(plan-phase) + ├── -VALIDATION.md # Nyquist 测试覆盖策略(plan-phase) + ├── -PATTERNS.md # 代码库类比映射(plan-phase,可选) + ├── --PLAN.md # 可执行计划(plan-phase,每个计划一个) + ├── --SUMMARY.md # 执行记录(execute-phase,每个计划一个) + ├── -VERIFICATION.md # 阶段目标验证报告(verify-phase) + ├── -UAT.md # 持久化 UAT 会话状态(execute-phase) + └── .continue-here.md # 暂停后的恢复说明(pause-work) +``` + +--- + +## 根级产物 + +### `PROJECT.md` + +| | | +|---|---| +| **用途** | 规范的项目标识:项目内容、目标用户、核心价值、需求、约束和关键决策。随项目演进持续更新。 | +| **生成者** | `/gsd-new-project`(初始创建);由 `/gsd-complete-milestone` 在决策验证后更新。 | +| **消费者** | 所有规划工作流;`gsd-phase-researcher`、`gsd-planner`(上下文);`discuss-phase`(历史决策);`gsd-plan-checker`(项目约束)。 | + +### `ROADMAP.md` + +| | | +|---|---| +| **用途** | 里程碑与阶段列表,含目标、需求 ID、成功标准以及每个阶段的规范参考。是项目构建内容和顺序的唯一可信来源。 | +| **生成者** | `/gsd-new-project`(初始创建);由 `/gsd-phase --insert` 和 `/gsd-complete-milestone` 更新。 | +| **消费者** | `/gsd-discuss-phase`、`/gsd-plan-phase`、`/gsd-execute-phase`;所有需要阶段信息的编排命令;`gsd-planner`、`gsd-plan-checker`、`gsd-phase-researcher`。 | + +### `REQUIREMENTS.md` + +| | | +|---|---| +| **用途** | 编号化、可勾选的项目验收标准。每条需求带有 ID(如 `AUTH-01`),映射到路线图阶段。随着阶段执行,逐步标记需求为已完成。 | +| **生成者** | `/gsd-new-project`(初始创建);需求由 `execute-phase` 标记为已完成。 | +| **消费者** | `gsd-planner`(计划必须覆盖所有阶段需求 ID);`gsd-plan-checker` 维度 1(需求覆盖);`discuss-phase`(历史需求)。 | + +### `STATE.md` + +| | | +|---|---| +| **用途** | 实时进度跟踪器——当前阶段与计划、进度指标、积累的决策、会话连续性说明。每次工作流运行时首先读取,每次重要操作后更新。 | +| **生成者** | `/gsd-new-project`(初始创建);由所有阶段工作流、`/gsd-pause-work`、`/gsd-resume-work` 持续更新。 | +| **消费者** | 所有编排工作流;`/gsd-progress`;通过 `/gsd-quick` 执行的临时任务;`gsd-planner` 和 `gsd-phase-researcher`(项目决策)。 | + +完整字段参考请参见 [STATE.md 模式](state-md.md)。 + +### `config.json` + +| | | +|---|---| +| **用途** | 工作流配置:模型配置文件、研究与计划检查器开关、Git 分支策略、Nyquist 验证、并行化设置,以及每个代理的模型覆盖。 | +| **生成者** | `/gsd-new-project`(初始创建);`/gsd-settings`(交互式编辑)。 | +| **消费者** | 每个工作流和子代理——在初始化时通过 `gsd-tools query config-get` 读取。 | + +完整模式请参见 [CONFIGURATION](../CONFIGURATION.md)。 + +### `MILESTONES.md`(可选) + +| | | +|---|---| +| **用途** | 已完成里程碑的历史记录。每个里程碑关闭时填充;提供已交付内容及时间的存档快照。 | +| **生成者** | `/gsd-complete-milestone`。 | +| **消费者** | `/gsd-audit-milestone`;人工审查。 | + +### `DECISIONS-INDEX.md`(可选) + +| | | +|---|---| +| **用途** | 先前阶段 CONTEXT.md 文件中捕获的决策的有界滚动摘要。存在时,`discuss-phase` 读取此单一文件,而不是逐一读取最多三个先前的 CONTEXT.md 文件,从而节省上下文预算。 | +| **生成者** | 当先前阶段数量超过滚动读取阈值时生成。 | +| **消费者** | `discuss-phase`(`load_prior_context` 步骤)。 | + +### `HANDOFF.json`(临时文件) + +| | | +|---|---| +| **用途** | 工作中断时写入的机器可读暂停状态。包含恢复点、进行中的上下文以及继续说明。恰好消费一次——在恢复时。 | +| **生成者** | `/gsd-pause-work`。 | +| **消费者** | `/gsd-resume-work`。 | + +--- + +## 每阶段产物 + +所有每阶段文件均位于 `.planning/phases/-/` 下,其中 `NN` 是补零的阶段编号,`slug` 是用连字符连接的阶段名称。 + +### `-CONTEXT.md` + +| | | +|---|---| +| **用途** | 规划开始前捕获的实现决策。包含阶段边界(``)、带有 `D-NN` 标识符的锁定决策(``)、规范文档参考(``)、现有代码洞察(``)、具体灵感(``)以及推迟的想法(``)。 | +| **生成者** | `/gsd-discuss-phase`(交互式讨论或 PRD/ADR 快速路径)。 | +| **消费者** | `gsd-phase-researcher`(待调查内容);`gsd-planner`(锁定决策);`gsd-plan-checker` 维度 7(上下文合规性)。 | + +完整字段参考请参见 [CONTEXT.md 模式](context-md.md)。 + +### `-DISCUSSION-LOG.md` + +| | | +|---|---| +| **用途** | discuss-phase 会话的人类可读审计记录:讨论的领域、提出的选项、所做的选择、推迟的想法以及留给 Claude 自行决定的事项。不被自动化工作流消费。 | +| **生成者** | `/gsd-discuss-phase`(`git_commit` 步骤)。 | +| **消费者** | 人工审查;回顾总结。 | + +### `-RESEARCH.md` + +| | | +|---|---| +| **用途** | 规划前产生的技术研究结果。回答"为了很好地规划此阶段,我需要了解什么?"——涵盖领域分析、模式、风险、架构职责映射以及验证架构部分(由 Nyquist 门控使用)。 | +| **生成者** | `/gsd-plan-phase` 通过 `gsd-phase-researcher` 代理。 | +| **消费者** | `gsd-planner`(规划输入);`gsd-plan-checker` 维度 7c(层级合规性)、维度 8(Nyquist)、维度 11(研究解决);`gsd-pattern-mapper`(文件列表来源)。 | + +### `-VALIDATION.md` + +| | | +|---|---| +| **用途** | 源自 RESEARCH.md 中 `## Validation Architecture` 部分的 Nyquist 启发式验证策略。指定计划必须遵守的自动化测试覆盖要求。 | +| **生成者** | `/gsd-plan-phase`(步骤 5.5,当 `workflow.nyquist_validation` 已启用且 RESEARCH.md 包含验证架构部分时)。 | +| **消费者** | `gsd-plan-checker` 维度 8(检查 8e 门控——Nyquist 检查进行前必须存在);`gsd-verifier`。 | + +### `-PATTERNS.md` + +| | | +|---|---| +| **用途** | 由 `gsd-pattern-mapper` 生成的代码库类比映射。针对本阶段每个待创建或修改的文件,识别最近似的现有类比,对文件的角色和数据流进行分类,并提取具体代码摘录。引导规划者采用一致的模式。 | +| **生成者** | `/gsd-plan-phase` 通过 `gsd-pattern-mapper` 代理(可选;如果 `workflow.pattern_mapper: false` 则跳过)。 | +| **消费者** | `gsd-planner`(模式指导);`gsd-plan-checker` 维度 12(模式合规性)。 | + +### `--PLAN.md` + +| | | +|---|---| +| **用途** | 阶段内单个工作单元的可执行计划。包含 YAML 前置内容(wave、dependencies、files、requirements、`must_haves`)、目标、上下文参考、带有 ``、``、`` 和 `` 字段的 XML 结构化任务,以及验证标准。 | +| **生成者** | `/gsd-plan-phase` 通过 `gsd-planner` 代理。每个计划一个文件——例如,`03-02-PLAN.md` 是第 3 阶段第 2 个计划。 | +| **消费者** | `/gsd-execute-phase`(执行器代理读取计划并运行任务);`gsd-plan-checker`(执行前质量审查);`gsd-verifier`(读取 `must_haves` 进行执行后验证)。 | + +完整字段参考请参见 [PLAN.md 模式](plan-md.md)。 + +### `--SUMMARY.md` + +| | | +|---|---| +| **用途** | 计划完成后写入的执行记录。记录已构建内容、与计划的偏差、对验收标准的自查,以及阶段的依赖关系图。 | +| **生成者** | `execute-phase` 执行器代理(在每个计划执行结束时写入)。 | +| **消费者** | `/gsd-progress`(阶段状态);`gsd-planner`(当后续计划对先前计划输出存在真实依赖时);`milestone-summary`。 | + +### `-VERIFICATION.md` + +| | | +|---|---| +| **用途** | 阶段目标验证报告。在执行完成后,对照实际代码库检查所有计划中的 `must_haves.truths`、`must_haves.artifacts` 和 `must_haves.key_links`。记录 `status: passed | gaps_found | human_needed`。 | +| **生成者** | `/gsd-verify-work`(或 `/gsd-execute-phase` 内的验证步骤)。 | +| **消费者** | `plan-phase` 已关闭阶段门控(`status: passed` 的 VERIFICATION.md 将阶段标记为 `Complete`,并在没有 `--force` 的情况下阻止重新规划);`/gsd-progress`;人工审查。 | + +### `-UAT.md` + +| | | +|---|---| +| **用途** | 持久化的 UAT 会话跟踪。在实时 UAT 会话中记录每个测试用例、预期的可观察行为、结果以及开发者响应。带有 YAML 前置内容(`status`、`phase`、`source`、时间戳)。 | +| **生成者** | `/gsd-audit-uat`(交互式 UAT 会话)。 | +| **消费者** | `/gsd-audit-uat`(恢复先前的 UAT 会话)。 | + +### `.continue-here.md` + +| | | +|---|---| +| **用途** | 阶段工作暂停时写入的人类可读恢复说明。包含供恢复代理使用的上下文:关键反模式、阻塞问题、必读内容以及恢复的确切命令。 | +| **生成者** | `/gsd-pause-work`。 | +| **消费者** | 任何在阶段上启动的工作流——`discuss-phase` 和 `plan-phase` 在入口处均检查此文件,并要求代理在继续之前证明其理解了所有 `blocking` 反模式。 | + +--- + +## 命名约定 + +| 片段 | 格式 | 示例 | +|---|---|---| +| 阶段目录 | `-` | `03-post-feed` | +| 阶段级文件 | `-.md` | `03-CONTEXT.md` | +| 计划级文件 | `--.md` | `03-02-PLAN.md` | +| `NN` | 补零的阶段编号 | `03` 表示第 3 阶段 | +| `PP` | 阶段内补零的计划编号 | `02` 表示第 2 个计划 | + +当 `config.json` 中设置了 `project_code` 时,阶段目录使用项目代码作为前缀:对于项目代码 `CK`、第 3 阶段,目录为 `CK-03-post-feed`。 + +--- + +## 相关内容 + +- [STATE.md 模式](state-md.md) +- [CONTEXT.md 模式](context-md.md) +- [PLAN.md 模式](plan-md.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/reference/state-md.md b/docs/zh-CN/reference/state-md.md new file mode 100644 index 000000000..5d2da91f8 --- /dev/null +++ b/docs/zh-CN/reference/state-md.md @@ -0,0 +1,201 @@ +# STATE.md 架构参考 + +`STATE.md` 是 GSD Core 的动态项目记忆文件——一个记录项目当前状态、最近发生的事情以及下一步操作的单一 Markdown 文档。本页面记录其结构。参见[文档索引](../README.md)。 + +--- + +## 概述 + +由 GSD Core 管理的每个项目在 `.planning/STATE.md` 处保存一个 `STATE.md`。该文件在每次工作流开始时被读取,并在每次重要操作后被写入。该文件包含: + +- **YAML 前置数据** — 机器可读字段,由状态行钩子(`parseStateMd`)和 `gsd-tools state` 命令使用。 +- **Markdown 正文** — 人类可读的章节,涵盖当前位置、累积的上下文、会话连续性以及性能指标。 + +该文件有意保持较小(目标:不超过 100 行)。它是项目状态的摘要,而非存档。 + +--- + +## YAML 前置数据 + +前置数据出现在文件最开头的 `---` 分隔符之间。除 `gsd_state_version` 和 `status` 外,所有字段均为可选;当相关数据尚不可用时,字段可以缺失。 + +### 注释示例 + +```yaml +--- +gsd_state_version: '1.0' +milestone: v2.0 +milestone_name: Code Quality +status: executing + +# Phase-lifecycle fields — all optional (added in v1.40.0, issue #2833) +active_phase: "4.5" +next_action: execute-phase +next_phases: ["4.5"] + +progress: + total_phases: 17 + completed_phases: 10 + total_plans: 84 + completed_plans: 47 + percent: 59 + +# Additional fields written by syncStateFrontmatter +current_phase: "4" +current_phase_name: Observability +current_plan: "3" +last_updated: "2026-06-01T12:34:56.789Z" +last_activity: "2026-06-01" +stopped_at: "Phase 4 P3 execution complete" +paused_at: null +--- +``` + +### 字段参考 + +| 字段 | 类型 | 填充时机 | 用途 | +|---|---|---|---| +| `gsd_state_version` | 字符串(`'1.0'`) | 始终 | 架构版本;在第一次 `state.*` 调用时由 `syncStateFrontmatter` 写入。 | +| `milestone` | 字符串(如 `v2.0`) | 配置了里程碑时 | 当前里程碑版本,从项目配置中读取。 | +| `milestone_name` | 字符串 | 配置了里程碑时 | 里程碑的人类可读标签(如 `Code Quality`)。 | +| `status` | 字符串 | 始终 | 当前生命周期阶段。由 `normalizeStateStatus()` 规范化——参见[状态值](#状态值)。 | +| `active_phase` | 字符串(如 `"4.5"`) | 编排器命令正在处理该阶段时 | 当前正在处理的阶段编号。阶段之间时设为 `null`。 | +| `next_action` | 字符串 | 空闲且有推荐命令时 | 下一步要运行的斜线命令:`discuss-phase`、`plan-phase`、`execute-phase` 或 `verify-phase`。当编排器正在运行或无可用推荐时设为 `null`。 | +| `next_phases` | YAML 流数组(如 `["4.5"]`) | 与 `next_action` 配合使用 | `next_action` 适用的阶段 ID(通常 1–2 项)。与 `next_action` 相同条件下设为 `null`。 | +| `progress.total_phases` | 整数 | 阶段数据可用时 | 当前里程碑中的阶段总数,从 ROADMAP.md 和阶段目录派生。 | +| `progress.completed_phases` | 整数 | 阶段数据可用时 | 磁盘上所有计划摘要均已存在的阶段数量(即每个计划均已完成)。 | +| `progress.total_plans` | 整数 | 计划文件存在时 | 当前里程碑中所有阶段的计划文件总数。 | +| `progress.completed_plans` | 整数 | 摘要文件存在时 | 已完成的计划摘要总数(每个已执行计划一个 SUMMARY.md)。 | +| `progress.percent` | 整数 0–100 | 进度数据可用时 | 里程碑在**阶段维度**的进度(`min(completed_plans/total_plans, completed_phases/total_phases)`)。状态行进度条仅在该字段存在时渲染——缺失时进度条不显示。 | +| `current_phase` | 字符串 | 阶段正在执行时 | 从正文 `Current Phase:` 字段提取的阶段编号。 | +| `current_phase_name` | 字符串 | 阶段有名称时 | 从正文 `Current Phase Name:` 字段提取的阶段名称。 | +| `current_plan` | 字符串 | 计划进行中时 | 从正文 `Current Plan:` 字段提取的计划编号。 | +| `last_updated` | ISO-8601 时间戳 | 始终(写入时) | 最后一次 `syncStateFrontmatter` 调用的时间戳;由 `realClock.nowIso()` 写入。 | +| `last_activity` | 字符串 | 正文中设置时 | 最后活动日期,从正文 `Last Activity:` 字段提取。 | +| `stopped_at` | 字符串 | 记录了停止点时 | 最后完成操作的描述;限定在 `## Session` 正文章节内,以避免匹配存档文本。 | +| `paused_at` | 字符串 | 项目已暂停时 | 暂停点的自由描述;未暂停时缺失或为 `null`。 | + +### 状态值 + +`get-shit-done/bin/lib/state-document.cjs` 中的 `normalizeStateStatus()` 将原始正文文本映射到以下规范值: + +| 规范值 | 匹配文本(不区分大小写) | +|---|---| +| `discussing` | 包含 `discussing` | +| `planning` | 包含 `planning` 或 `ready to plan` | +| `executing` | 包含 `executing`、`in progress` 或 `ready to execute` | +| `verifying` | 包含 `verif` | +| `completed` | 包含 `complete` 或 `done` | +| `paused` | 包含 `paused` 或 `stopped`,或 `paused_at` 有值 | +| `unknown` | 以上均不符合 | + +当编排器命令正在运行时,惯例(issue #2833)是直接将生命周期阶段写入 `status`: + +| 命令 | 运行期间的 `status` | +|---|---| +| `/gsd-discuss-phase` | `discussing` | +| `/gsd-plan-phase` | `planning` | +| `/gsd-execute-phase` | `executing` | +| `/gsd-verify-work` | `verifying` | + +--- + +## 状态行渲染场景 + +`hooks/gsd-statusline.js` 中的 `formatGsdState()` 读取已解析的前置数据并输出**第一个匹配的场景**。如果没有新的生命周期字段适用,渲染将回退到与 v1.38.x 完全一致的原始格式。 + +| 场景 | 触发条件 | 显示示例 | +|---|---|---| +| **1. 阶段活跃** | `active_phase` 已填充 | `v2.0 [██░░░░░░░░] 20% · Phase 4.5 executing` | +| **2. 空闲,有下一步推荐** | `active_phase` 为 null 且 `next_action` 和 `next_phases` 均已填充 | `v2.0 [██░░░░░░░░] 20% · next execute-phase 4.5` | +| **3. 里程碑完成** | `percent` 为 `100` 或 `completed_phases == total_phases` | `v2.0 [██████████] 100% · milestone complete` | +| **4. 默认回退** | 以上均不匹配 | `v1.9 Code Quality · executing · ph 1/5`(现有格式) | + +**场景优先级:** 当 `active_phase` 和 `next_action` 均已填充时,场景 1 优先——编排器正在运行,显示"下一步推荐"会造成误导。此优先级由 `formatGsdState()` 中的检查顺序强制执行,并由 `tests/enh-2833-phase-lifecycle-statusline.test.cjs` 中的 `"scene priority"` 测试套件覆盖。 + +进度条(`[██░░░░░░░░] 20%`)仅在前置数据中存在 `progress.percent` 时才追加到里程碑段;缺失则不显示进度条。 + +--- + +## 前置数据解析约束 + +状态行钩子使用基于正则表达式的解析(无完整 YAML 库),因此以下约束适用。这些约束在 `tests/enh-2833-phase-lifecycle-statusline.test.cjs` 中经过测试。 + +1. **前置数据必须从文件的第一个字符开始。** 任何内容——包括注释——出现在开头 `---` 之前都会使匹配失效。开头的 `---` 行必须恰好如此,不能有尾随空格。 + +2. **不支持嵌套块内的注释。** `progress:` 块解析器要求下一行为 `[ \t]+\w+:`。在 `progress:` 和其第一个键之间插入 `# comment` 会破坏匹配,进度条将消失。任何说明文档应放在 `STATE.md` 正文中,而不是放在前置数据块内。 + +3. **`next_phases` 首选格式为单行流式。** 解析器首先尝试 `next_phases: ["4.5", "4.6"]`。块序列(`- 4.5\n- 4.6`)也可解析,但对状态行渲染的可靠性较低。优先使用单行流式格式的 `next_phases` 以保持基于正则表达式的解析器的可预测性。如果需要记录大量候选阶段以供文档说明,请将其存储在 `STATE.md` 正文中。 + +如果未来的变更将正则表达式解析器替换为完整的 YAML 库,则这些约束可以放宽,并相应更新测试。 + +--- + +## Markdown 正文章节 + +正文(结束 `---` 之后的所有内容)遵循 `get-shit-done/templates/state.md` 中的模板。标准章节为: + +### 项目参考 + +指向 `.planning/PROJECT.md`。包含: +- **核心价值** — 来自 `PROJECT.md` 核心价值章节的一句话说明。 +- **当前焦点** — 哪个阶段处于活跃状态。 + +### 当前位置 + +项目当前所处的状态: + +| 字段 | 格式 | +|---|---| +| `Phase:` | `X of Y (Phase name)` | +| `Plan:` | `A of B in current phase` | +| `Status:` | 自由文本,如 `Ready to execute`、`Executing Phase 4`、`Phase complete — ready for verification` | +| `Last activity:` | 处理器写入时为 ISO 日期(`YYYY-MM-DD`);执行器编写时为叙述性文本 | +| `Progress:` | 可视化进度条,如 `[████░░░░░░] 40%` | + +当现有值为已知模板默认值时,该章节中的 `Status:` 和 `Last activity:` 字段由 GSD 处理器更新(Knuth 不变式:执行器编写的值被保留)。已知处理器默认值的完整列表位于 `get-shit-done/bin/lib/state-document.cjs` 中的 `KNOWN_TEMPLATE_DEFAULTS`。 + +### 性能指标 + +执行速度跟踪: +- 已完成计划总数,每个计划的平均耗时。 +- 每阶段明细表(`Phase | Plans | Total | Avg/Plan`)。 +- 近期趋势:改善中 / 稳定 / 下降中。 + +每次计划完成后更新。 + +### 累积的上下文 + +**决策** — 影响当前工作的近期决策摘要(完整日志在 `PROJECT.md` 中)。通过 `gsd-tools state add-decision` 添加。 + +**待处理的待办事项** — 数量及对 `.planning/todos/pending/` 的引用。通过 `/gsd-capture` 捕获。 + +**阻碍/关切** — 影响未来工作的问题,以发起阶段为前缀。通过 `gsd-tools state add-blocker` 添加;通过 `gsd-tools state resolve-blocker` 解决。 + +### 会话连续性 + +实现即时会话恢复: +- `Last session:` — 上次会话的 ISO-8601 时间戳。 +- `Stopped at:` — 最后完成操作的描述。 +- `Resume file:` — 指向 `.continue-here*.md` 文件的路径(若存在),否则为 `None`。 + +--- + +## 向后兼容性 + +阶段生命周期字段(`active_phase`、`next_action`、`next_phases` 以及用于进度条的 `progress.percent`)是**按项目可选添加**的: + +- 未填充任何生命周期字段的 `STATE.md` 渲染结果与 v1.38.x 及更早版本**逐字节完全相同**。 +- 添加任何生命周期字段是可选的——当字段缺失时,渲染器会优雅降级。 +- 即使 `progress` 块存在,进度条也是可选的:只有 `progress.percent` 触发进度条;单独的 `total_phases` 和 `completed_phases` 不会触发。 + +`tests/enh-2833-phase-lifecycle-statusline.test.cjs` 中的 `formatGsdState #2833 backward compatibility` 测试套件锁定了此保证;任何破坏旧版 `STATE.md` 渲染的变更都将导致该套件失败。 + +--- + +## 相关内容 + +- [规划产物](planning-artifacts.md) +- [配置](../CONFIGURATION.md) +- [阶段循环](../explanation/the-phase-loop.md) +- [文档索引](../README.md) diff --git a/docs/zh-CN/tutorials/onboarding-an-existing-codebase.md b/docs/zh-CN/tutorials/onboarding-an-existing-codebase.md new file mode 100644 index 000000000..05576183b --- /dev/null +++ b/docs/zh-CN/tutorials/onboarding-an-existing-codebase.md @@ -0,0 +1,226 @@ +# 将现有代码库纳入工作流 + +在本教程中,您将把 GSD Core 引入一个已有代码的仓库。您将对代码库进行映射,创建一个描述您所*新增*内容的项目,并针对一个小型聚焦变更运行首次讨论与规划循环。完成后,GSD Core 的规划流水线将了解您的技术栈、规范和关注点——并在每次规划时运用这些知识。 + +--- + +## 您将构建的内容 + +我们将向一个现有的 Express 应用程序添加一个 `GET /health` 端点。该变更足够小,不会分散您对真正核心内容的注意力:GSD Core 在规划任何内容之前如何学习您的代码库。 + +--- + +## 前提条件 + +- **Node.js 18 或更高版本** — `node --version` 应输出 `v18.x.x` 或更高版本。 +- **一个现有项目** — 任何已有代码的仓库。不必须是 Express;这些步骤适用于任何技术栈。 +- **Claude Code** — 在您的仓库根目录中打开。 + +--- + +## 第 1 步 — 安装 GSD Core + +在您的仓库根目录执行: + +```bash +npx @opengsd/gsd-core@latest +``` + +在提示时选择 **Claude Code** 和 **local**。您将看到: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +--- + +## 第 2 步 — 使用权限启动 Claude Code + +```bash +claude --dangerously-skip-permissions +``` + +--- + +## 第 3 步 — 映射代码库 + +在创建项目之前,先让 GSD Core 了解已有的内容。这是使棕地规划准确的关键步骤。 + +```text +/gsd-map-codebase +``` + +GSD Core 会派生四个并行映射子代理(您将看到"Spawning 4 parallel codebase mapper agents…"——这需要 1–5 分钟;请勿中断)。每个代理专注于不同的关注点: + +| 代理 | 关注点 | +|-------|-------| +| 技术映射器 | 技术栈、框架、依赖项 | +| 架构映射器 | 模式、层次、数据流 | +| 质量映射器 | 规范、测试实践 | +| 关注点映射器 | 技术债务、风险领域 | + +当所有四个代理返回后,您将看到: + +```text +Codebase mapping complete. + +Created .planning/codebase/: +- STACK.md (47 lines) - Technologies and dependencies +- ARCHITECTURE.md (62 lines) - System design and patterns +- STRUCTURE.md (38 lines) - Directory layout and organisation +- CONVENTIONS.md (55 lines) - Code style and patterns +- TESTING.md (41 lines) - Test structure and practices +- INTEGRATIONS.md (29 lines) - External services and APIs +- CONCERNS.md (33 lines) - Technical debt and issues +``` + +打开 `.planning/codebase/STACK.md`。您将看到 GSD Core 检测到的语言、运行时、框架版本和关键依赖项——这些内容基于实际读取的文件,而非猜测。 + +打开 `.planning/codebase/CONVENTIONS.md`。您将看到它从您的源代码中观察到的命名规范、错误处理模式和代码风格规则。GSD Core 为该仓库生成的每个计划都将自动遵循这些规范。 + +打开 `.planning/codebase/CONCERNS.md`。在进行任何新功能开发之前,这是最值得阅读的文件——它会展现可能影响您计划的技术债务和脆弱区域。 + +--- + +## 第 4 步 — 清除上下文并创建项目 + +清除会话窗口: + +```text +/clear +``` + +现在创建项目。由于 GSD Core 在上一步中发现了现有代码,它已经知道这是一个棕地项目。当您运行 `/gsd-new-project` 时,问题将聚焦于您所*新增*的内容,而非重新描述已有的内容: + +```text +/gsd-new-project +``` + +GSD Core 会询问您想构建什么。请用您正在添加的功能来回答,而不是描述整个代码库: + +```text +Add a GET /health endpoint to the Express app. It should return +{ "status": "ok", "uptime": }. We'll use it for load-balancer +health checks. +``` + +GSD Core 会进一步提出少量澄清问题,然后继续创建需求和路线图。由于它已读取 `ARCHITECTURE.md` 和 `STACK.md`,它会自动将现有能力映射到 `PROJECT.md` 的 **Validated** 部分——您无需描述现有的 API 接口。 + +对所有工作流设置选择推荐默认值。 + +当路线图子代理返回后,您将看到一个建议的路线图。对于单个小型变更,它将只有一个阶段: + +```text +Proposed Roadmap + +1 phase | 2 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|----------------|-----------------------------------------------|--------------| +| 1 | Health endpoint| GET /health returning status and uptime JSON | HLT-01, HLT-02 | +``` + +批准路线图。 + +**在 `.planning/` 中创建的内容:** + +```text +.planning/ + PROJECT.md ← project description; existing capabilities in "Validated" + REQUIREMENTS.md ← HLT-01, HLT-02 + ROADMAP.md ← Phase 1, status: pending + STATE.md ← session memory + config.json ← workflow settings + codebase/ ← the seven map files from Step 3 +``` + +注意 `.planning/codebase/` 已经从第 3 步存在。GSD Core 在编写 `PROJECT.md` 时读取了这些文件,这就是为什么它无需您描述即可填充已验证的需求。 + +--- + +## 第 5 步 — 清除上下文并讨论第 1 阶段 + +```text +/clear +``` + +```text +/gsd-discuss-phase 1 +``` + +由于 GSD Core 已读取您的 `CONVENTIONS.md` 和 `ARCHITECTURE.md`,其问题基于您的实际代码库——而非通用建议。您可能会看到: + +```text +> Your routes are registered in src/routes/index.js. Should the health + endpoint live there, or in a dedicated src/routes/health.js? + A dedicated health.js — keep routes separated. + +> Your existing error middleware returns { error: "message" }. Should + /health use the same shape for error responses? + Yes, stay consistent. + +> Should uptime be calculated from process.uptime() or a stored start time? + process.uptime() is fine. +``` + +讨论结束后,GSD Core 将写入: + +```text +.planning/phases/01-health-endpoint/CONTEXT.md +``` + +打开该文件。`## Implementation Decisions` 部分记录了您的回答。规划器将在编写任何任务之前读取此文件——因此您关于文件位置和响应格式的偏好将出现在计划中,而不仅仅停留在讨论里。 + +--- + +## 第 6 步 — 规划第 1 阶段 + +```text +/gsd-plan-phase 1 +``` + +四个研究子代理并行运行(1–5 分钟)。当它们返回后,规划器读取 `CONTEXT.md`、研究结果和您的代码库映射,创建符合您规范的任务计划。 + +**创建的内容:** + +```text +.planning/phases/01-health-endpoint/ + RESEARCH.md ← findings on health endpoint patterns + 01-01-PLAN.md ← Task: create src/routes/health.js + 01-02-PLAN.md ← Task: register health route in src/routes/index.js +``` + +打开 `01-01-PLAN.md`。注意 `` 标签引用了 `src/routes/health.js`——正是您在讨论中指定的路径,与 GSD Core 在代码库映射中观察到的路由模式一致。这正是代码库映射发挥作用的体现。 + +--- + +## 下一步 + +您现在拥有一个带有代码库映射、讨论决策记录和经过验证的任务计划的项目——所有内容均基于您的实际代码。从这里开始,工作流与绿地项目完全相同: + +```text +/gsd-execute-phase 1 +/gsd-verify-work 1 +/gsd-ship 1 +``` + +对于每个未来的功能,当结构发生重大变化时,再次运行 `/gsd-map-codebase`,以保持代码库映射的时效性。 + +--- + +## 您学到了什么 + +- `/gsd-map-codebase` 如何运行四个并行代理,在 `.planning/codebase/` 中生成 `STACK.md`、`ARCHITECTURE.md`、`CONVENTIONS.md`、`CONCERNS.md`、`STRUCTURE.md`、`TESTING.md` 和 `INTEGRATIONS.md`。 +- 在棕地仓库中运行 `/gsd-new-project` 如何将问题聚焦于您所*新增*的内容,并从现有代码中填充已验证的需求。 +- 代码库映射如何塑造 `/gsd-discuss-phase` 中的每个问题——文件路径、模式和规范均来自您的实际代码。 +- 规划器如何读取 `CONTEXT.md` 和 `CONVENTIONS.md` 来生成符合您仓库风格的计划。 + +--- + +## 相关内容 + +- [您的第一个项目](your-first-project.md) — 从安装到 PR 的完整绿地循环 +- [通过命令使用映射代码库](../COMMANDS.md) — 所有 `/gsd-map-codebase` 标志和子命令 +- [文档索引](../README.md) diff --git a/docs/zh-CN/tutorials/your-first-project.md b/docs/zh-CN/tutorials/your-first-project.md new file mode 100644 index 000000000..557239046 --- /dev/null +++ b/docs/zh-CN/tutorials/your-first-project.md @@ -0,0 +1,291 @@ +# 你的第一个项目 + +在本教程中,你将安装 GSD Core 并从头构建一个小型命令行待办事项应用——一个阶段、一个 PR、完整的流程循环。完成后,你将至少运行过核心阶段循环中的每一条命令一次,并看到每条命令所生成的规划产物。 + +--- + +## 你将构建什么 + +一个 Node.js CLI 工具,支持添加、列出和完成存储在本地 JSON 文件中的待办事项。它足够小,可以在一次会话中完成,且仅使用 Node.js 标准库,无需安装任何额外依赖。 + +--- + +## 前提条件 + +- **Node.js 18 或更高版本** — `node --version` 应打印 `v18.x.x` 或更高版本。 +- **Claude Code** — 在你想使用的项目目录中打开。 +- 初次安装需要网络连接。 + +不需要其他工具。GSD Core 本身将在下一步安装。 + +--- + +## 第 1 步 — 安装 GSD Core + +在项目目录中打开终端并运行: + +```bash +npx @opengsd/gsd-core@latest +``` + +安装程序会询问你使用的 AI 编程运行时,以及是全局安装还是安装到当前项目。现在选择 **Claude Code** 和**本地安装**(仅此项目)。 + +你将看到类似如下的输出: + +```text +✓ Installed 86 skills to .claude/commands/ +✓ Installed agents to .claude/agents/ +✓ GSD Core ready — run /gsd-new-project to start +``` + +注意项目中现在存在一个 `.claude/` 目录。这是 GSD Core 的命令和代理所在的位置。 + +> 为什么选本地而不是全局?本地安装可将技能版本固定到该项目。如需全局安装,请参阅 [在你的运行时上安装](../how-to/install-on-your-runtime.md)。 + +--- + +## 第 2 步 — 以权限模式启动 Claude Code + +GSD Core 会生成读写文件的子代理。以权限标志启动 Claude Code,这样它就不会在每次文件操作时暂停询问: + +```bash +claude --dangerously-skip-permissions +``` + +你将进入项目目录中的 Claude Code 提示符。 + +--- + +## 第 3 步 — 创建项目 + +在 Claude Code 提示符处输入以下斜杠命令: + +```text +/gsd-new-project +``` + +GSD Core 将开启一段对话。它首先提问: + +```text +What do you want to build? +``` + +输入类似以下内容: + +```text +A Node.js CLI tool for managing to-do items. Users run `todo add "buy milk"`, +`todo list`, and `todo done 1`. Items are saved to a local todos.json file. +No external dependencies — Node built-ins only. +``` + +GSD Core 会继续提出几个澄清性问题。自然地回答即可。它在撰写任何计划之前,正在了解你的关注点。 + +问题结束后,它会提议进行领域调研。对于如此小的项目,你可以跳过调研——在提示时选择**跳过调研**。 + +GSD Core 随后会要求你选择工作流设置(模式、粒度、调研代理)。每项均选择推荐的默认值。这些设置将写入 `.planning/config.json`。 + +最后,一个路线图子代理开始运行(你会看到"Spawning roadmapper…"的提示——这是正常的,大约需要一分钟)。返回后,GSD Core 会展示一份路线图提案。对于单阶段项目,它看起来类似: + +```text +Proposed Roadmap + +1 phase | 4 requirements mapped | All v1 requirements covered ✓ + +| # | Phase | Goal | Requirements | +|---|--------------------|-----------------------------------------|-------------------| +| 1 | Core CLI | add / list / done commands, todos.json | CLI-01 … CLI-04 | +``` + +输入 **Approve** 以接受路线图。 + +**`.planning/` 中创建的内容:** + +```text +.planning/ + PROJECT.md ← 你的项目描述和需求 + REQUIREMENTS.md ← 每个 v1 功能的 REQ-ID + ROADMAP.md ← 第 1 阶段,状态:待处理 + STATE.md ← 会话记忆,当前位置 + config.json ← 工作流设置 +``` + +现在打开 `.planning/ROADMAP.md` 并阅读。注意第 1 阶段有目标、必须满足的需求列表和成功标准——这些是执行必须交付的可观测行为。 + +--- + +## 第 4 步 — 清除上下文并讨论第 1 阶段 + +GSD Core 的设计围绕全新的上下文。在每个阶段之前清除主会话窗口: + +```text +/clear +``` + +然后开始第 1 阶段的讨论: + +```text +/gsd-discuss-phase 1 +``` + +GSD Core 读取阶段目标并询问你的实现偏好。这些决定将影响*如何*构建,而不仅仅是*构建什么*。示例交流: + +```text +> How should done items be stored — mark them in place or move them? + Mark them in place with a "done" flag. + +> Should `todo list` show completed items by default? + No, hide them unless --all is passed. + +> Error format when todos.json doesn't exist yet? + Create it silently on first add. +``` + +讨论结束后,GSD Core 会写入: + +```text +.planning/phases/01-core-cli/CONTEXT.md +``` + +打开该文件。你会看到一个 `## Implementation Decisions` 章节,准确记录了你所说的内容。规划器读取该文件——因此你在此处做出的决定将贯穿到每个任务计划中。 + +--- + +## 第 5 步 — 规划第 1 阶段 + +```text +/gsd-plan-phase 1 +``` + +四个调研子代理并行展开工作(你会看到"Spawning 4 researchers…"的提示)。这需要 1–5 分钟,请勿中断。 + +返回后,规划器读取 CONTEXT.md 和调研结果,创建原子任务计划。然后,计划检查器在保存之前验证每个计划是否实现了阶段目标。 + +**创建的内容:** + +```text +.planning/phases/01-core-cli/ + RESEARCH.md ← 领域调研结果 + 01-01-PLAN.md ← 任务:创建 todos.json 读写助手 + 01-02-PLAN.md ← 任务:实现 add / list / done 命令 +``` + +打开 `01-01-PLAN.md`。你会看到一个 `` 块,包含名称、涉及的文件、操作步骤、验证命令和完成条件。注意 `` 标签——GSD Core 的执行器将在写入代码后运行该命令。 + +--- + +## 第 6 步 — 执行第 1 阶段 + +```text +/gsd-execute-phase 1 +``` + +GSD Core 将计划分组为波次(独立计划并行运行),为每个计划生成一个全新的 200k 上下文执行器,并原子性地提交每个任务。 + +你将看到类似如下内容: + +```text +Wave 1 (parallel): + [Executor A] → 01-01-PLAN.md (read/write helpers) ✓ committed + [Executor B] → 01-02-PLAN.md (CLI commands) ✓ committed + +[Verifier] Checking codebase against phase goals... + CLI-01 todo add ✓ + CLI-02 todo list ✓ + CLI-03 todo done ✓ + CLI-04 --all flag ✓ + Status: PASS +``` + +**创建的内容:** + +```text +.planning/phases/01-core-cli/ + 01-01-SUMMARY.md ← 执行器 A 构建并提交的内容 + 01-02-SUMMARY.md ← 执行器 B 构建并提交的内容 + VERIFICATION.md ← REQ 覆盖情况:PASS +``` + +现在运行你的 CLI: + +```bash +node todo.js add "buy milk" +node todo.js add "write tests" +node todo.js list +node todo.js done 1 +node todo.js list +``` + +你应该看到条目出现,并且在标记完成后,条目 1 从默认列表中消失。这是 GSD Core 交付的你的第一个可见结果。 + +--- + +## 第 7 步 — 验证工作 + +```text +/gsd-verify-work 1 +``` + +GSD Core 提取阶段的成功标准并逐一引导你完成: + +```text +[1/3] Can you run `node todo.js add "buy milk"` without errors? +> yes + +[2/3] Does `node todo.js list` show only incomplete items by default? +> yes + +[3/3] Does `node todo.js done 1` mark item 1 complete and hide it from the default list? +> yes + +All 3 checks passed. Phase 1 verified. +``` + +如果任何检查失败,GSD Core 会诊断根本原因并创建修复计划。再次运行 `/gsd-execute-phase 1` 应用修复,然后重新运行 `/gsd-verify-work 1`。 + +**创建的内容:** + +```text +.planning/phases/01-core-cli/UAT.md ← 所有检查及其结果 +``` + +--- + +## 第 8 步 — 发布 + +```text +/gsd-ship 1 +``` + +GSD Core 使用自动生成的正文创建拉取请求。PR 正文始终包含:摘要、变更内容、已解决的需求、验证情况和关键决策。 + +你将看到: + +```text +Pull request created: https://github.com/your-org/your-repo/pull/1 + +Title: feat(phase-1): core CLI — add / list / done commands +``` + +这就是完整的流程——从想法到合并 PR——一个阶段。 + +--- + +## 你学到了什么 + +- 如何使用 `npx @opengsd/gsd-core@latest` 安装 GSD Core。 +- `/gsd-new-project` 如何将一段对话转化为由 `.planning/` 产物支撑的路线图。 +- `/gsd-discuss-phase` 如何在任何规划开始之前捕获实现决策。 +- `/gsd-plan-phase` 如何生成并行调研器并产出原子任务计划。 +- `/gsd-execute-phase` 如何以并行波次运行这些计划并提交每个任务。 +- `/gsd-verify-work` 如何引导完成成功标准并在需要时生成修复计划。 +- `/gsd-ship` 如何将已验证的阶段转化为拉取请求。 + +对于多阶段项目,对每个阶段重复第 4–8 步,然后运行 `/gsd-progress --next`,让 GSD Core 自动检测下一步。 + +--- + +## 相关资源 + +- [阶段循环](../explanation/the-phase-loop.md) — 循环为何如此设计 +- [操作指南](../README.md#how-to-guides) — 针对特定情况的任务型操作说明 +- [接入现有代码库](onboarding-an-existing-codebase.md) — 将 GSD Core 引入棕地仓库 diff --git a/docs/zh-CN/workflow-discuss-mode.md b/docs/zh-CN/workflow-discuss-mode.md new file mode 100644 index 000000000..f2ac0df3d --- /dev/null +++ b/docs/zh-CN/workflow-discuss-mode.md @@ -0,0 +1,75 @@ +# 讨论模式:假设模式与访谈模式 + +GSD Core 的讨论阶段提供两种模式,用于在规划开始前收集实现上下文。了解何时使用哪种模式,有助于减少来回沟通,更快地生成确认后的 `CONTEXT.md`。 + +有关运行任一模式的分步说明,请参阅[讨论阶段使用指南](how-to/discuss-a-phase.md)。 + +## 模式 + +### `discuss`(默认) + +原始访谈式流程。Claude 识别阶段中的模糊区域,呈现供选择,然后针对每个区域提出大约四个问题。适用于: + +- 代码库较新的早期阶段 +- 用户有强烈意见希望主动表达的阶段 +- 偏好有引导的对话式上下文收集的用户 + +### `assumptions` + +以代码库为中心的流程。Claude 通过子代理深度分析代码库(读取 5–15 个相关文件),形成带有证据的假设,并呈现供确认或纠正。适用于: + +- 具有清晰规范的成熟代码库 +- 觉得访谈问题显而易见的用户 +- 更快的上下文收集(约 2–4 次交互,而非约 15–20 次) + +## 配置 + +```bash +# 启用假设模式 +node gsd-tools.cjs config-set workflow.discuss_mode assumptions + +# 切换回访谈模式 +node gsd-tools.cjs config-set workflow.discuss_mode discuss +``` + +该设置为每个项目独立存储(保存于 `.planning/config.json`)。有关两种模式所生成文件的完整结构,请参阅 [CONTEXT.md 结构说明](reference/context-md.md)。 + +## 假设模式的工作原理 + +1. **初始化** — 与讨论模式相同(加载先前上下文、探查代码库、检查待办事项) +2. **深度分析** — 探索子代理读取与阶段相关的 5–15 个代码库文件 +3. **呈现假设** — 每条假设包含: + - Claude 将做什么以及原因(引用文件路径) + - 若假设不正确会出现什么问题 + - 置信度(确信 / 可能 / 不明确) +4. **确认或纠正** — 用户审查假设,选择需要修改的条目 +5. **写入 CONTEXT.md** — 与讨论模式输出格式完全相同 + +## 标志兼容性 + +| 标志 | `discuss` 模式 | `assumptions` 模式 | +|------|----------------|-------------------| +| `--auto` | 自动选择推荐答案 | 跳过确认步骤,自动解决"不明确"项 | +| `--batch` | 将问题分批分组 | 不适用(纠正已批量处理) | +| `--text` | 纯文本问题(远程会话) | 纯文本问题(远程会话) | +| `--analyze` | 每个问题显示权衡表 | 不适用(假设已包含证据) | + +## 输出 + +两种模式均生成包含相同六个章节的 `CONTEXT.md`: + +- `` — 阶段边界 +- `` — 已锁定的实现决策 +- `` — 下游代理必须阅读的规范/文档 +- `` — 可复用资产、规范、集成点 +- `` — 用户参考和偏好 +- `` — 记录供未来阶段使用的想法 + +下游代理(researcher、planner、checker)以相同方式使用此文件,无论由哪种模式生成。有关完整字段参考,请参阅 [CONTEXT.md 结构说明](reference/context-md.md)。 + +## 相关资源 + +- [讨论阶段](how-to/discuss-a-phase.md) — 运行 `/gsd-discuss-phase` 的分步指南(支持两种模式)。 +- [CONTEXT.md 结构说明](reference/context-md.md) — 两种模式所生成文件的完整字段参考。 +- [阶段循环](explanation/the-phase-loop.md) — 讨论如何融入更广泛的 讨论 → 规划 → 执行 → 验证 → 发布 循环。 +- [文档索引](README.md) — GSD Core 文档的完整目录。