docs: add Japanese documents

This commit is contained in:
Ikko Ashimine
2026-03-23 14:09:39 +09:00
parent dab0c47111
commit 1f1575992b
15 changed files with 6656 additions and 3 deletions

833
README.ja-JP.md Normal file
View File

@@ -0,0 +1,833 @@
<div align="center">
# GET SHIT DONE
[English](README.md) · [简体中文](README.zh-CN.md) · **日本語**
**Claude Code、OpenCode、Gemini CLI、Codex、Copilot、Antigravity向けの軽量かつ強力なメタプロンプティング、コンテキストエンジニアリング、仕様駆動開発システム。**
**コンテキストロット(Claudeがコンテキストウィンドウを消費するにつれ品質が劣化する現象)を解決します。**
[**English**](README.md) | [**简体中文**](docs/zh-CN/README.md) | [**日本語**](docs/ja-JP/README.md)
[![npm version](https://img.shields.io/npm/v/get-shit-done-cc?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-cc)
[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-cc?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-cc)
[![Tests](https://img.shields.io/github/actions/workflow/status/glittercowboy/get-shit-done/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/glittercowboy/get-shit-done/actions/workflows/test.yml)
[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/gsd)
[![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/glittercowboy/get-shit-done?style=for-the-badge&logo=github&color=181717)](https://github.com/glittercowboy/get-shit-done)
[![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
<br>
```bash
npx get-shit-done-cc@latest
```
**Mac、Windows、Linuxで動作します。**
<br>
![GSD Install](assets/terminal.svg)
<br>
*「自分が何を作りたいか明確に分かっていれば、これが確実に作ってくれる。嘘じゃない。」*
*「SpecKit、OpenSpec、Taskmasterを試してきたが、これが一番良い結果を出してくれた。」*
*「Claude Codeへの最強の追加ツール。過剰な設計は一切なし。文字通り、やるべきことをやってくれる。」*
<br>
**Amazon、Google、Shopify、Webflowのエンジニアに信頼されています。**
[なぜ作ったのか](#なぜ作ったのか) · [仕組み](#仕組み) · [コマンド](#コマンド) · [なぜ効果的なのか](#なぜ効果的なのか) · [ユーザーガイド](docs/ja-JP/USER-GUIDE.md)
</div>
---
## なぜ作ったのか
私はソロ開発者です。コードは自分で書きません — Claude Codeが書きます。
仕様駆動開発ツールは他にもあります。BMAD、Spekkitなど。しかしどれも必要以上に複雑にしているように見えます(スプリントセレモニー、ストーリーポイント、ステークホルダーとの同期、振り返り、Jiraワークフローなど)。あるいは、何を作ろうとしているのかの全体像を本当には理解していません。私は50人規模のソフトウェア会社ではありません。エンタープライズごっこをしたいわけではありません。ただ、うまく動く素晴らしいものを作りたいクリエイティブな人間です。
だからGSDを作りました。複雑さはシステムの中にあり、ワークフローの中にはありません。裏側では、コンテキストエンジニアリング、XMLプロンプトフォーマッティング、サブエージェントのオーケストレーション、状態管理が動いています。あなたが目にするのは、ただ動くいくつかのコマンドだけです。
このシステムは、Claudeが仕事をし、*かつ*検証するために必要なすべてを提供します。私はこのワークフローを信頼しています。ちゃんといい仕事をしてくれます。
これがGSDです。エンタープライズごっこは一切なし。Claude Codeを使って一貫してクールなものを作るための、非常に効果的なシステムです。
— **TÂCHES**
---
バイブコーディングは評判が悪い。やりたいことを説明し、AIがコードを生成し、スケールすると崩壊する一貫性のないゴミが出来上がる。
GSDはそれを解決します。Claude Codeを信頼性の高いものにするコンテキストエンジニアリングレイヤーです。アイデアを説明し、システムに必要なすべてを抽出させ、Claude Codeに仕事をさせましょう。
---
## こんな人のために
やりたいことを説明するだけで正しく構築してほしい人 — 50人のエンジニア組織を運営しているふりをせずに。
---
## はじめに
```bash
npx get-shit-done-cc@latest
```
インストーラーが以下の選択を求めます:
1. **ランタイム** — Claude Code、OpenCode、Gemini、Codex、Copilot、Cursor、Antigravity、またはすべて(インタラクティブ複数選択 — 1回のインストールセッションで複数のランタイムを選択可能)
2. **インストール先** — グローバル(全プロジェクト)またはローカル(現在のプロジェクトのみ)
確認方法:
- Claude Code / Gemini: `/gsd:help`
- OpenCode: `/gsd-help`
- Codex: `$gsd-help`
- Copilot: `/gsd:help`
- Antigravity: `/gsd:help`
> [!NOTE]
> Codexのインストールでは、カスタムプロンプトではなくスキル(`skills/gsd-*/SKILL.md`)を使用します。
### 最新の状態を保つ
GSDは急速に進化しています。定期的にアップデートしてください:
```bash
npx get-shit-done-cc@latest
```
<details>
<summary><strong>非インタラクティブインストール(Docker、CI、スクリプト)</strong></summary>
```bash
# Claude Code
npx get-shit-done-cc --claude --global # ~/.claude/ にインストール
npx get-shit-done-cc --claude --local # ./.claude/ にインストール
# OpenCode(オープンソース、無料モデル)
npx get-shit-done-cc --opencode --global # ~/.config/opencode/ にインストール
# Gemini CLI
npx get-shit-done-cc --gemini --global # ~/.gemini/ にインストール
# Codex(スキルファースト)
npx get-shit-done-cc --codex --global # ~/.codex/ にインストール
npx get-shit-done-cc --codex --local # ./.codex/ にインストール
# Copilot(GitHub Copilot CLI)
npx get-shit-done-cc --copilot --global # ~/.github/ にインストール
npx get-shit-done-cc --copilot --local # ./.github/ にインストール
# Cursor CLI
npx get-shit-done-cc --cursor --global # ~/.cursor/ にインストール
npx get-shit-done-cc --cursor --local # ./.cursor/ にインストール
# Antigravity(Google、スキルファースト、Geminiベース)
npx get-shit-done-cc --antigravity --global # ~/.gemini/antigravity/ にインストール
npx get-shit-done-cc --antigravity --local # ./.agent/ にインストール
# 全ランタイム
npx get-shit-done-cc --all --global # すべてのディレクトリにインストール
```
`--global`(`-g`)または `--local`(`-l`)でインストール先の質問をスキップできます。
`--claude`、`--opencode`、`--gemini`、`--codex`、`--copilot`、`--cursor`、`--antigravity`、または `--all` でランタイムの質問をスキップできます。
</details>
<details>
<summary><strong>開発用インストール</strong></summary>
リポジトリをクローンしてインストーラーをローカルで実行します:
```bash
git clone https://github.com/glittercowboy/get-shit-done.git
cd get-shit-done
node bin/install.js --claude --local
```
コントリビュートする前に変更をテストするため、`./.claude/` にインストールされます。
</details>
### 推奨:パーミッションスキップモード
GSDは摩擦のない自動化のために設計されています。Claude Codeを以下のように実行してください:
```bash
claude --dangerously-skip-permissions
```
> [!TIP]
> これがGSDの意図された使い方です — `date` や `git commit` を50回も承認するために止まっていては目的が台無しです。
<details>
<summary><strong>代替案:詳細なパーミッション設定</strong></summary>
このフラグを使いたくない場合は、プロジェクトの `.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:*)"
]
}
}
```
</details>
---
## 仕組み
> **既存のコードがある場合は?** まず `/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/`
---
### 2. フェーズの議論
```
/gsd:discuss-phase 1
```
**ここで実装の方向性を決めます。**
ロードマップには各フェーズにつき1〜2文しかありません。あなたが*想像する*通りに構築するには十分なコンテキストではありません。このステップでは、リサーチや計画の前にあなたの好みを記録します。
システムがフェーズを分析し、構築内容に基づいてグレーゾーンを特定します:
- **ビジュアル機能** → レイアウト、密度、インタラクション、空状態
- **API/CLI** → レスポンス形式、フラグ、エラーハンドリング、詳細度
- **コンテンツシステム** → 構造、トーン、深さ、フロー
- **整理タスク** → グルーピング基準、命名、重複、例外
選択した各領域について、あなたが満足するまで質問します。出力される `CONTEXT.md` は、次の2つのステップに直接反映されます:
1. **リサーチャーが読む** — どんなパターンを調査すべきかを把握(「ユーザーはカードレイアウトを希望」→ カードコンポーネントライブラリを調査)
2. **プランナーが読む** — どの決定が確定済みかを把握(「無限スクロールに決定」→ スクロール処理を計画に含める)
ここで深く掘り下げるほど、システムはあなたが本当に望むものを構築します。スキップすれば妥当なデフォルトが使われます。活用すれば*あなたのビジョン*が反映されます。
**作成されるファイル:** `{phase_num}-CONTEXT.md`
> **前提モード:** 質問よりもコードベース分析を優先したい場合は、`/gsd:settings` で `workflow.discuss_mode` を `assumptions` に設定してください。システムがコードを読み、何をなぜそうするかを提示し、間違っている部分だけ修正を求めます。詳しくは[ディスカスモード](docs/ja-JP/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. **プランごとにフレッシュなコンテキスト** — 実装に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:next # 次のステップを自動検出して実行
```
**discuss → plan → execute → verify → ship** のループをマイルストーン完了まで繰り返します。
ディスカッション中のインプットを速くしたい場合は、`/gsd:discuss-phase <n> --batch` で1つずつではなく小さなグループにまとめた質問に一括で回答できます。
各フェーズであなたのインプット(discuss)、適切なリサーチ(plan)、クリーンな実行(execute)、人間による検証(verify)が行われます。コンテキストは常にフレッシュ。品質は常に高い。
すべてのフェーズが完了したら、`/gsd:complete-milestone` でマイルストーンをアーカイブしリリースをタグ付けします。
次に `/gsd:new-milestone` で次のバージョンを開始します — `new-project` と同じフローですが既存のコードベース向けです。次に構築したいものを説明し、システムがドメインを調査し、要件をスコーピングし、新しいロードマップを作成します。各マイルストーンはクリーンなサイクルです:定義 → 構築 → シップ。
---
### クイックモード
```
/gsd:quick
```
**フル計画が不要なアドホックタスク向け。**
クイックモードはGSDの保証(アトミックコミット、状態トラッキング)をより速いパスで提供します:
- **同じエージェント** — プランナー + エグゼキューター、同じ品質
- **オプションステップをスキップ** — デフォルトではリサーチ、プランチェッカー、ベリファイアなし
- **別トラッキング** — `.planning/quick/` に保存、フェーズとは別管理
**`--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` | フェーズとのトレーサビリティを持つスコープ済みv1/v2要件 |
| `ROADMAP.md` | 進む方向、完了済みの作業 |
| `STATE.md` | 決定事項、ブロッカー、現在地 — セッション間のメモリ |
| `PLAN.md` | XML構造のアトミックタスク、検証ステップ付き |
| `SUMMARY.md` | 何が起きたか、何が変わったか、履歴にコミット |
| `todos/` | 後で取り組むアイデアやタスクのキャプチャ |
| `threads/` | セッションをまたぐ作業のための永続コンテキストスレッド |
| `seeds/` | 適切なマイルストーンで浮上する将来志向のアイデア |
サイズ制限はClaudeの品質が劣化するポイントに基づいています。制限内に収まれば、一貫した高品質が得られます。
### XMLプロンプトフォーマッティング
すべてのプランはClaude向けに最適化された構造化XMLです:
```xml
<task type="auto">
<name>Create login endpoint</name>
<files>src/app/api/auth/login/route.ts</files>
<action>
<!-- CommonJSの問題があるため、jsonwebtokenではなくjoseをJWTに使用。 -->
<!-- usersテーブルに対して認証情報を検証。 -->
<!-- 成功時にhttpOnly cookieを返す。 -->
Use jose for JWT (not jsonwebtoken - CommonJS issues).
Validate credentials against users table.
Return httpOnly cookie on success.
</action>
<verify>curl -X POST localhost:3000/api/auth/login returns 200 + Set-Cookie</verify>
<done>Valid credentials return cookie, invalid return 401</done>
</task>
```
正確な指示。推測なし。検証が組み込み済み。
### マルチエージェントオーケストレーション
すべてのステージで同じパターンを使用します:薄いオーケストレーターが専門エージェントを起動し、結果を収集し、次のステップにルーティングします。
| ステージ | オーケストレーターの役割 | エージェントの役割 |
|-------|------------------|-----------|
| リサーチ | 調整し、発見事項を提示 | 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]` | 計画前に実装の決定事項をキャプチャ(`--analyze` でトレードオフ分析を追加) |
| `/gsd:plan-phase [N] [--auto] [--reviews]` | フェーズのリサーチ + プラン + 検証(`--reviews` でコードベースレビューの発見事項を読み込み) |
| `/gsd:execute-phase <N>` | 全プランを並列ウェーブで実行し、完了時に検証 |
| `/gsd:verify-work [N]` | 手動ユーザー受入テスト ¹ |
| `/gsd:ship [N] [--draft]` | 検証済みのフェーズ作業から自動生成された本文付きのPRを作成 |
| `/gsd:next` | 次の論理的なワークフローステップに自動的に進む |
| `/gsd:fast <text>` | インラインの軽微タスク — 計画を完全にスキップし即座に実行 |
| `/gsd:audit-milestone` | マイルストーンが完了の定義を達成したか検証 |
| `/gsd:complete-milestone` | マイルストーンをアーカイブし、リリースをタグ付け |
| `/gsd:new-milestone [name]` | 次のバージョンを開始:質問 → リサーチ → 要件定義 → ロードマップ |
| `/gsd:forensics [desc]` | 失敗したワークフロー実行の事後分析(停止ループ、欠落成果物、git異常の診断) |
| `/gsd:milestone-summary [version]` | チームオンボーディングとレビュー向けの包括的なプロジェクトサマリーを生成 |
### ワークストリーム
| コマンド | 説明 |
|---------|--------------|
| `/gsd:workstreams list` | 全ワークストリームとそのステータスを表示 |
| `/gsd:workstreams create <name>` | 並列マイルストーン作業用の名前空間付きワークストリームを作成 |
| `/gsd:workstreams switch <name>` | アクティブなワークストリームを切り替え |
| `/gsd:workstreams complete <name>` | ワークストリームを完了しマージ |
### マルチプロジェクトワークスペース
| コマンド | 説明 |
|---------|--------------|
| `/gsd:new-workspace` | リポジトリのコピー(worktreeまたはクローン)で隔離されたワークスペースを作成 |
| `/gsd:list-workspaces` | すべてのGSDワークスペースとそのステータスを表示 |
| `/gsd:remove-workspace` | ワークスペースを削除しworktreeをクリーンアップ |
### UIデザイン
| コマンド | 説明 |
|---------|--------------|
| `/gsd:ui-phase [N]` | フロントエンドフェーズ用のUIデザイン契約(UI-SPEC.md)を生成 |
| `/gsd:ui-review [N]` | 実装済みフロントエンドコードの6つの柱によるビジュアル監査(遡及的) |
### ナビゲーション
| コマンド | 説明 |
|---------|--------------|
| `/gsd:progress` | 今どこにいる?次は何? |
| `/gsd:next` | 状態を自動検出し次のステップを実行 |
| `/gsd:help` | 全コマンドと使い方ガイドを表示 |
| `/gsd:update` | チェンジログプレビュー付きでGSDをアップデート |
| `/gsd:join-discord` | GSD Discordコミュニティに参加 |
| `/gsd:manager` | 複数フェーズ管理用のインタラクティブコマンドセンター |
### ブラウンフィールド
| コマンド | 説明 |
|---------|--------------|
| `/gsd:map-codebase [area]` | new-project前に既存のコードベースを分析 |
### フェーズ管理
| コマンド | 説明 |
|---------|--------------|
| `/gsd:add-phase` | ロードマップにフェーズを追加 |
| `/gsd:insert-phase [N]` | フェーズ間に緊急作業を挿入 |
| `/gsd:remove-phase [N]` | 将来のフェーズを削除し番号を振り直し |
| `/gsd:list-phase-assumptions [N]` | 計画前にClaudeの意図するアプローチを確認 |
| `/gsd:plan-milestone-gaps` | 監査で見つかったギャップを埋めるフェーズを作成 |
### セッション
| コマンド | 説明 |
|---------|--------------|
| `/gsd:pause-work` | フェーズ途中で停止する際の引き継ぎを作成(HANDOFF.jsonを書き込み) |
| `/gsd:resume-work` | 前回のセッションから復元 |
| `/gsd:session-report` | 実行した作業と結果のセッションサマリーを生成 |
### ワークストリーム
| コマンド | 説明 |
|---------|--------------|
| `/gsd:workstreams` | 並列ワークストリームを管理(list、create、switch、status、progress、complete) |
### コード品質
| コマンド | 説明 |
|---------|--------------|
| `/gsd:review` | 現在のフェーズまたはブランチのクロスAIピアレビュー |
| `/gsd:pr-branch` | `.planning/` コミットをフィルタリングしたクリーンなPRブランチを作成 |
| `/gsd:audit-uat` | 検証負債を監査 — UATが未実施のフェーズを検出 |
### バックログ & スレッド
| コマンド | 説明 |
|---------|--------------|
| `/gsd:plant-seed <idea>` | トリガー条件付きの将来志向のアイデアをキャプチャ — 適切なマイルストーンで浮上 |
| `/gsd:add-backlog <desc>` | バックログのパーキングロットにアイデアを追加(999.xナンバリング、アクティブシーケンス外) |
| `/gsd:review-backlog` | バックログ項目をレビューし、アクティブマイルストーンに昇格またはstaleエントリを削除 |
| `/gsd:thread [name]` | 永続コンテキストスレッド — 複数セッションにまたがる作業用の軽量クロスセッション知識 |
### ユーティリティ
| コマンド | 説明 |
|---------|--------------|
| `/gsd:settings` | モデルプロファイルとワークフローエージェントを設定 |
| `/gsd:set-profile <profile>` | モデルプロファイルを切り替え(quality/balanced/budget/inherit) |
| `/gsd:add-todo [desc]` | 後で取り組むアイデアをキャプチャ |
| `/gsd:check-todos` | 保留中のtodoを一覧表示 |
| `/gsd:debug [desc]` | 永続状態を持つ体系的デバッグ |
| `/gsd:do <text>` | フリーフォームテキストを適切なGSDコマンドに自動ルーティング |
| `/gsd:note <text>` | ゼロフリクションのアイデアキャプチャ — ノートの追加、一覧、todoへの昇格 |
| `/gsd:quick [--full] [--discuss] [--research]` | GSDの保証付きでアドホックタスクを実行(`--full` でプランチェックと検証を追加、`--discuss` で事前にコンテキストを収集、`--research` で計画前にアプローチを調査) |
| `/gsd:health [--repair]` | `.planning/` ディレクトリの整合性を検証、`--repair` で自動修復 |
| `/gsd:stats` | プロジェクト統計を表示 — フェーズ、プラン、要件、gitメトリクス |
| `/gsd:profile-user [--questionnaire] [--refresh]` | セッション分析から開発者行動プロファイルを生成し、パーソナライズされた応答を提供 |
<sup>¹ Redditユーザー OracleGreyBeard による貢献</sup>
---
## 設定
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:set-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 get-shit-done-cc` を再実行して再インストールしてください
**最新バージョンへのアップデート?**
```bash
npx get-shit-done-cc@latest
```
**Dockerまたはコンテナ化環境を使用している?**
チルダパス(`~/.claude/...`)でファイル読み取りが失敗する場合、インストール前に `CLAUDE_CONFIG_DIR` を設定してください:
```bash
CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-cc --global
```
これにより、コンテナ内で正しく展開されない可能性がある `~` の代わりに絶対パスが使用されます。
### アンインストール
GSDを完全に削除するには:
```bash
# グローバルインストール
npx get-shit-done-cc --claude --global --uninstall
npx get-shit-done-cc --opencode --global --uninstall
npx get-shit-done-cc --gemini --global --uninstall
npx get-shit-done-cc --codex --global --uninstall
npx get-shit-done-cc --copilot --global --uninstall
npx get-shit-done-cc --cursor --global --uninstall
npx get-shit-done-cc --antigravity --global --uninstall
# ローカルインストール(現在のプロジェクト)
npx get-shit-done-cc --claude --local --uninstall
npx get-shit-done-cc --opencode --local --uninstall
npx get-shit-done-cc --codex --local --uninstall
npx get-shit-done-cc --copilot --local --uninstall
npx get-shit-done-cc --cursor --local --uninstall
npx get-shit-done-cc --antigravity --local --uninstall
```
これにより、他の設定を保持しながら、すべてのGSDコマンド、エージェント、フック、設定が削除されます。
---
## コミュニティポート
OpenCode、Gemini CLI、Codexは `npx get-shit-done-cc` でネイティブサポートされています。
以下のコミュニティポートがマルチランタイムサポートの先駆けとなりました:
| プロジェクト | プラットフォーム | 説明 |
|---------|----------|-------------|
| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | OpenCode | オリジナルのOpenCode対応版 |
| gsd-gemini(アーカイブ済み) | Gemini CLI | uberfuzzyによるオリジナルのGemini対応版 |
---
## スター履歴
<a href="https://star-history.com/#glittercowboy/get-shit-done&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=glittercowboy/get-shit-done&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=glittercowboy/get-shit-done&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=glittercowboy/get-shit-done&type=Date" />
</picture>
</a>
---
## ライセンス
MITライセンス。詳細は [LICENSE](LICENSE) をご覧ください。
---
<div align="center">
**Claude Codeは強力です。GSDはそれを信頼性の高いものにします。**
</div>

View File

@@ -2,13 +2,13 @@
# GET SHIT DONE
**English** · [简体中文](README.zh-CN.md)
**English** · [简体中文](README.zh-CN.md) · [日本語](README.ja-JP.md)
**A light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code, OpenCode, Gemini CLI, Codex, Copilot, and Antigravity.**
**Solves context rot — the quality degradation that happens as Claude fills its context window.**
[**English**](README.md) | [**简体中文**](docs/zh-CN/README.md)
[**English**](README.md) | [**简体中文**](docs/zh-CN/README.md) | [**日本語**](docs/ja-JP/README.md)
[![npm version](https://img.shields.io/npm/v/get-shit-done-cc?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-cc)
[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-cc?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-cc)

View File

@@ -2,7 +2,7 @@
# GET SHIT DONE
[English](README.md) · **简体中文**
[English](README.md) · **简体中文** · [日本語](README.ja-JP.md)
**一个轻量但强大的元提示、上下文工程与规格驱动开发系统,适用于 Claude Code、OpenCode、Gemini CLI、Codex、Copilot、Cursor 和 Antigravity。**

428
docs/ja-JP/AGENTS.md Normal file
View File

@@ -0,0 +1,428 @@
# GSD エージェントリファレンス
> 全18種の専門エージェント — 役割、ツール、スポーンパターン、相互関係。アーキテクチャの詳細は[アーキテクチャ](ARCHITECTURE.md)を参照してください。
---
## 概要
GSD はマルチエージェントアーキテクチャを採用しており、軽量なオーケストレーター(ワークフローファイル)が新しいコンテキストウィンドウを持つ専門エージェントをスポーンします。各エージェントは特定の役割に特化し、限定的なツールアクセス権を持ち、特定の成果物を生成します。
### エージェントカテゴリ
| カテゴリ | 数 | エージェント |
|----------|-----|-------------|
| リサーチャー | 3 | project-researcher, phase-researcher, ui-researcher |
| アナライザー | 2 | assumptions-analyzer, advisor-researcher |
| シンセサイザー | 1 | research-synthesizer |
| プランナー | 1 | planner |
| ロードマッパー | 1 | roadmapper |
| エグゼキューター | 1 | executor |
| チェッカー | 3 | plan-checker, integration-checker, ui-checker |
| ベリファイヤー | 1 | verifier |
| オーディター | 2 | nyquist-auditor, ui-auditor |
| マッパー | 1 | codebase-mapper |
| デバッガー | 1 | debugger |
---
## エージェント詳細
### gsd-project-researcher
**役割:** ロードマップ作成前にドメインエコシステムを調査する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:new-project`, `/gsd:new-milestone` |
| **並列数** | 4インスタンス(stack, features, architecture, pitfalls) |
| **ツール** | Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp (context7) |
| **モデル (balanced)** | Sonnet |
| **生成物** | `.planning/research/STACK.md`, `FEATURES.md`, `ARCHITECTURE.md`, `PITFALLS.md` |
**機能:**
- Web検索による最新のエコシステム情報の取得
- Context7 MCP統合によるライブラリドキュメントの参照
- リサーチドキュメントを直接ディスクに書き込み(オーケストレーターのコンテキスト負荷を軽減)
---
### gsd-phase-researcher
**役割:** 計画策定前に、特定フェーズの実装方法を調査する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:plan-phase` |
| **並列数** | 4インスタンス(project-researcher と同じフォーカスエリア) |
| **ツール** | Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp (context7) |
| **モデル (balanced)** | Sonnet |
| **生成物** | `{phase}-RESEARCH.md` |
**機能:**
- CONTEXT.md を読み取り、ユーザーの決定事項に焦点を当てた調査を実施
- 特定フェーズのドメインに対する実装パターンの調査
- Nyquist バリデーションマッピング用のテストインフラの検出
---
### gsd-ui-researcher
**役割:** フロントエンドフェーズ向けのUIデザインコントラクトを作成する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:ui-phase` |
| **並列数** | 単一インスタンス |
| **ツール** | Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp (context7) |
| **モデル (balanced)** | Sonnet |
| **カラー** | `#E879F9`(フクシア) |
| **生成物** | `{phase}-UI-SPEC.md` |
**機能:**
- デザインシステムの状態を検出(shadcn の components.json、Tailwind 設定、既存トークン)
- React/Next.js/Vite プロジェクト向けの shadcn 初期化を提案
- 未回答のデザインコントラクトに関する質問のみを提示
- サードパーティコンポーネントに対するレジストリ安全ゲートの適用
---
### gsd-assumptions-analyzer
**役割:** フェーズに対してコードベースを深く分析し、エビデンス・信頼度・誤った場合の影響を含む構造化された前提条件を返す。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `discuss-phase-assumptions` ワークフロー(`workflow.discuss_mode = 'assumptions'` の場合) |
| **並列数** | 単一インスタンス |
| **ツール** | Read, Bash, Grep, Glob |
| **モデル (balanced)** | Sonnet |
| **カラー** | Cyan |
| **生成物** | 決定ステートメント、エビデンスファイルパス、信頼度レベルを含む構造化された前提条件 |
**主な動作:**
- ROADMAP.md のフェーズ説明と過去の CONTEXT.md ファイルを読み取り
- フェーズに関連するファイル(コンポーネント、パターン、類似機能)をコードベースから検索
- エビデンスに基づく前提条件を形成するため、最も関連性の高いソースファイルを5〜15件読み取り
- 信頼度の分類: Confident(コードから明確)、Likely(妥当な推論)、Unclear(複数の方向性がありうる)
- 外部調査が必要なトピック(ライブラリ互換性、エコシステムのベストプラクティス)にフラグを付与
- ティアによる出力の調整: full_maturity(3〜5領域)、standard(3〜4)、minimal_decisive(2〜3)
---
### gsd-advisor-researcher
**役割:** discuss-phase のアドバイザーモードにおいて、単一のグレーエリアの決定事項を調査し、構造化された比較表を返す。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `discuss-phase` ワークフロー(ADVISOR_MODE = true の場合) |
| **並列数** | 複数インスタンス(グレーエリアごとに1つ) |
| **ツール** | Read, Bash, Grep, Glob, WebSearch, WebFetch, mcp (context7) |
| **モデル (balanced)** | Sonnet |
| **カラー** | Cyan |
| **生成物** | 根拠パラグラフ付きの5列比較表(Option / Pros / Cons / Complexity / Recommendation) |
**主な動作:**
- Claude の知識、Context7、Web検索を使用して、割り当てられた単一のグレーエリアを調査
- 実質的に有効な選択肢を提示 — 水増しのための代替案は含めない
- Complexity 列は影響範囲+リスクで表記(時間見積もりは使用しない)
- 推奨は条件付き(「Xの場合は推奨」「Yの場合は推奨」)— 単一の勝者ランキングにはしない
- ティアによる出力の調整: full_maturity(成熟度シグナル付き3〜5選択肢)、standard(2〜4)、minimal_decisive(2選択肢、決定的な推奨)
---
### gsd-research-synthesizer
**役割:** 並列リサーチャーの出力を統合サマリーにまとめる。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:new-project`(4つのリサーチャー完了後) |
| **並列数** | 単一インスタンス(リサーチャー後に順次実行) |
| **ツール** | Read, Write, Bash |
| **モデル (balanced)** | Sonnet |
| **カラー** | Purple |
| **生成物** | `.planning/research/SUMMARY.md` |
---
### gsd-planner
**役割:** タスク分解、依存関係分析、ゴール逆算検証を含む実行可能なフェーズ計画を作成する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:plan-phase`, `/gsd:quick` |
| **並列数** | 単一インスタンス |
| **ツール** | Read, Write, Bash, Glob, Grep, WebFetch, mcp (context7) |
| **モデル (balanced)** | Opus |
| **カラー** | Green |
| **生成物** | `{phase}-{N}-PLAN.md` ファイル |
**主な動作:**
- PROJECT.md、REQUIREMENTS.md、CONTEXT.md、RESEARCH.md を読み取り
- 単一のコンテキストウィンドウに収まるサイズの原子的タスク計画を2〜3個作成
- `<task>` 要素を含むXML構造を使用
- `read_first` および `acceptance_criteria` セクションを含む
- 計画を依存関係のウェーブにグループ化
---
### gsd-roadmapper
**役割:** フェーズ分解と要件マッピングを含むプロジェクトロードマップを作成する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:new-project` |
| **並列数** | 単一インスタンス |
| **ツール** | Read, Write, Bash, Glob, Grep |
| **モデル (balanced)** | Sonnet |
| **カラー** | Purple |
| **生成物** | `ROADMAP.md` |
**主な動作:**
- 要件をフェーズにマッピング(トレーサビリティ)
- 要件から成功基準を導出
- 粒度設定に基づくフェーズ数の調整
- カバレッジの検証(すべての v1 要件がフェーズにマッピングされていること)
---
### gsd-executor
**役割:** アトミックコミット、逸脱処理、チェックポイントプロトコルを使用して GSD 計画を実行する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:execute-phase`, `/gsd:quick` |
| **並列数** | 複数(ウェーブ内は並列、ウェーブ間は順次) |
| **ツール** | Read, Write, Edit, Bash, Grep, Glob |
| **モデル (balanced)** | Sonnet |
| **カラー** | Yellow |
| **生成物** | コード変更、git コミット、`{phase}-{N}-SUMMARY.md` |
**主な動作:**
- 計画ごとに新しい200Kコンテキストウィンドウを使用
- XMLタスク指示に正確に従う
- 完了したタスクごとにアトミックな git コミットを作成
- チェックポイントタイプの処理: auto, human-verify, decision, human-action
- 計画からの逸脱を SUMMARY.md に報告
- 検証失敗時にノードリペアを実行
---
### gsd-plan-checker
**役割:** 実行前に計画がフェーズ目標を達成できるかを検証する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:plan-phase`(検証ループ、最大3回の反復) |
| **並列数** | 単一インスタンス(反復型) |
| **ツール** | Read, Bash, Glob, Grep |
| **モデル (balanced)** | Sonnet |
| **カラー** | Green |
| **生成物** | 具体的なフィードバック付きの PASS/FAIL 判定 |
**8つの検証ディメンション:**
1. 要件カバレッジ
2. タスクの原子性
3. 依存関係の順序
4. ファイルスコープ
5. 検証コマンド
6. コンテキスト適合性
7. ギャップ検出
8. Nyquist コンプライアンス(有効時)
---
### gsd-integration-checker
**役割:** フェーズ間の統合とエンドツーエンドフローを検証する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:audit-milestone` |
| **並列数** | 単一インスタンス |
| **ツール** | Read, Bash, Grep, Glob |
| **モデル (balanced)** | Sonnet |
| **カラー** | Blue |
| **生成物** | 統合検証レポート |
---
### gsd-ui-checker
**役割:** UI-SPEC.md のデザインコントラクトを品質ディメンションに対して検証する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:ui-phase`(検証ループ、最大2回の反復) |
| **並列数** | 単一インスタンス |
| **ツール** | Read, Bash, Glob, Grep |
| **モデル (balanced)** | Sonnet |
| **カラー** | `#22D3EE`(シアン) |
| **生成物** | BLOCK/FLAG/PASS 判定 |
---
### gsd-verifier
**役割:** ゴール逆算分析によりフェーズ目標の達成を検証する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:execute-phase`(すべてのエグゼキューター完了後) |
| **並列数** | 単一インスタンス |
| **ツール** | Read, Write, Bash, Grep, Glob |
| **モデル (balanced)** | Sonnet |
| **カラー** | Green |
| **生成物** | `{phase}-VERIFICATION.md` |
**主な動作:**
- タスク完了だけでなく、フェーズ目標に対してコードベースを検証
- 具体的なエビデンス付きの PASS/FAIL 判定
- `/gsd:verify-work` で対処すべき問題をログに記録
---
### gsd-nyquist-auditor
**役割:** テストを生成して Nyquist バリデーションのギャップを埋める。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:validate-phase` |
| **並列数** | 単一インスタンス |
| **ツール** | Read, Write, Edit, Bash, Grep, Glob |
| **モデル (balanced)** | Sonnet |
| **生成物** | テストファイル、更新された `VALIDATION.md` |
**主な動作:**
- 実装コードは一切変更しない — テストファイルのみ
- ギャップごとに最大3回の試行
- 実装のバグはユーザーへのエスカレーションとしてフラグを付与
---
### gsd-ui-auditor
**役割:** 実装済みフロントエンドコードの事後的な6ピラービジュアル監査を行う。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:ui-review` |
| **並列数** | 単一インスタンス |
| **ツール** | Read, Write, Bash, Grep, Glob |
| **モデル (balanced)** | Sonnet |
| **カラー** | `#F472B6`(ピンク) |
| **生成物** | スコア付きの `{phase}-UI-REVIEW.md` |
**6つの監査ピラー(1〜4でスコアリング):**
1. コピーライティング
2. ビジュアル
3. カラー
4. タイポグラフィ
5. スペーシング
6. エクスペリエンスデザイン
---
### gsd-codebase-mapper
**役割:** コードベースを探索し、構造化された分析ドキュメントを作成する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:map-codebase` |
| **並列数** | 4インスタンス(tech, architecture, quality, concerns) |
| **ツール** | Read, Bash, Grep, Glob, Write |
| **モデル (balanced)** | Haiku |
| **カラー** | Cyan |
| **生成物** | `.planning/codebase/*.md`(7ドキュメント) |
**主な動作:**
- 読み取り専用の探索 + 構造化された出力
- ドキュメントを直接ディスクに書き込み
- 推論不要 — ファイル内容からのパターン抽出
---
### gsd-debugger
**役割:** 永続的な状態を持つ科学的手法でバグを調査する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:debug`, `/gsd:verify-work`(失敗時) |
| **並列数** | 単一インスタンス(インタラクティブ) |
| **ツール** | Read, Write, Edit, Bash, Grep, Glob, WebSearch |
| **モデル (balanced)** | Sonnet |
| **カラー** | Orange |
| **生成物** | `.planning/debug/*.md`、ナレッジベースの更新 |
**デバッグセッションのライフサイクル:**
`gathering` → `investigating` → `fixing` → `verifying` → `awaiting_human_verify` → `resolved`
**主な動作:**
- 仮説、エビデンス、排除された理論を追跡
- コンテキストリセット後も状態が永続化
- 解決済みとマークする前に人間による検証を要求
- 解決時に永続的なナレッジベースに追記
- 新しいセッション開始時にナレッジベースを参照
---
### gsd-user-profiler
**役割:** 8つの行動ディメンションにわたってセッションメッセージを分析し、スコア付きの開発者プロファイルを作成する。
| プロパティ | 値 |
|------------|-----|
| **スポーン元** | `/gsd:profile-user` |
| **並列数** | 単一インスタンス |
| **ツール** | Read |
| **モデル (balanced)** | Sonnet |
| **カラー** | Magenta |
| **生成物** | `USER-PROFILE.md`、`/gsd:dev-preferences`、`CLAUDE.md` プロファイルセクション |
**行動ディメンション:**
コミュニケーションスタイル、意思決定パターン、デバッグアプローチ、UXの好み、ベンダー選択、フラストレーショントリガー、学習スタイル、説明の深度。
**主な動作:**
- 読み取り専用エージェント — 抽出されたセッションデータを分析し、ファイルは変更しない
- 信頼度レベルとエビデンス引用を含むスコア付きディメンションを生成
- セッション履歴が利用できない場合はアンケートにフォールバック
---
## エージェントツール権限サマリー
| エージェント | Read | Write | Edit | Bash | Grep | Glob | WebSearch | WebFetch | MCP |
|-------------|------|-------|------|------|------|------|-----------|----------|-----|
| project-researcher | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| phase-researcher | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ui-researcher | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| assumptions-analyzer | ✓ | | | ✓ | ✓ | ✓ | | | |
| advisor-researcher | ✓ | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| research-synthesizer | ✓ | ✓ | | ✓ | | | | | |
| planner | ✓ | ✓ | | ✓ | ✓ | ✓ | | ✓ | ✓ |
| roadmapper | ✓ | ✓ | | ✓ | ✓ | ✓ | | | |
| executor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| plan-checker | ✓ | | | ✓ | ✓ | ✓ | | | |
| integration-checker | ✓ | | | ✓ | ✓ | ✓ | | | |
| ui-checker | ✓ | | | ✓ | ✓ | ✓ | | | |
| verifier | ✓ | ✓ | | ✓ | ✓ | ✓ | | | |
| nyquist-auditor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| ui-auditor | ✓ | ✓ | | ✓ | ✓ | ✓ | | | |
| codebase-mapper | ✓ | ✓ | | ✓ | ✓ | ✓ | | | |
| debugger | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
| user-profiler | ✓ | | | | | | | | |
**最小権限の原則:**
- チェッカーは読み取り専用(Write/Edit なし) — 評価のみを行い、変更は行わない
- リサーチャーは Web アクセスを持つ — 最新のエコシステム情報が必要なため
- エグゼキューターは Edit を持つ — コードを変更するが Web アクセスは不要
- マッパーは Write を持つ — 分析ドキュメントを作成するが Edit は不要(コード変更なし)

527
docs/ja-JP/ARCHITECTURE.md Normal file
View File

@@ -0,0 +1,527 @@
# GSD アーキテクチャ
> コントリビューターおよび上級ユーザー向けのシステムアーキテクチャ文書です。ユーザー向けドキュメントは[機能リファレンス](FEATURES.md)または[ユーザーガイド](USER-GUIDE.md)をご覧ください。
---
## 目次
- [システム概要](#システム概要)
- [設計原則](#設計原則)
- [コンポーネントアーキテクチャ](#コンポーネントアーキテクチャ)
- [エージェントモデル](#エージェントモデル)
- [データフロー](#データフロー)
- [ファイルシステムレイアウト](#ファイルシステムレイアウト)
- [インストーラーアーキテクチャ](#インストーラーアーキテクチャ)
- [フックシステム](#フックシステム)
- [CLIツールレイヤー](#cliツールレイヤー)
- [ランタイム抽象化](#ランタイム抽象化)
---
## システム概要
GSDは、ユーザーとAIコーディングエージェント(Claude Code、Gemini CLI、OpenCode、Codex、Copilot、Antigravity)の間に位置する**メタプロンプティングフレームワーク**です。以下の機能を提供します:
1. **コンテキストエンジニアリング** — タスクごとにAIが必要とするすべてを提供する構造化アーティファクト
2. **マルチエージェントオーケストレーション** — 専門エージェントをフレッシュなコンテキストウィンドウで起動する軽量オーケストレーター
3. **仕様駆動開発** — 要件 → 調査 → 計画 → 実行 → 検証のパイプライン
4. **状態管理** — セッションやコンテキストリセットをまたいだ永続的なプロジェクトメモリ
```
┌──────────────────────────────────────────────────────┐
│ USER │
│ /gsd:command [args] │
└─────────────────────┬────────────────────────────────┘
│
┌─────────────────────▼────────────────────────────────┐
│ COMMAND LAYER │
│ commands/gsd/*.md — Prompt-based command files │
│ (Claude Code custom commands / Codex skills) │
└─────────────────────┬────────────────────────────────┘
│
┌─────────────────────▼────────────────────────────────┐
│ WORKFLOW LAYER │
│ get-shit-done/workflows/*.md — Orchestration logic │
│ (Reads references, spawns agents, manages state) │
└──────┬──────────────┬─────────────────┬──────────────┘
│ │ │
┌──────▼──────┐ ┌─────▼─────┐ ┌────────▼───────┐
│ AGENT │ │ AGENT │ │ AGENT │
│ (fresh │ │ (fresh │ │ (fresh │
│ context) │ │ context)│ │ context) │
└──────┬──────┘ └─────┬─────┘ └────────┬───────┘
│ │ │
┌──────▼──────────────▼─────────────────▼──────────────┐
│ CLI TOOLS LAYER │
│ get-shit-done/bin/gsd-tools.cjs │
│ (State, config, phase, roadmap, verify, templates) │
└──────────────────────┬───────────────────────────────┘
│
┌──────────────────────▼───────────────────────────────┐
│ FILE SYSTEM (.planning/) │
│ PROJECT.md | REQUIREMENTS.md | ROADMAP.md │
│ STATE.md | config.json | phases/ | research/ │
└──────────────────────────────────────────────────────┘
```
---
## 設計原則
### 1. エージェントごとにフレッシュなコンテキスト
オーケストレーターが起動するすべてのエージェントは、クリーンなコンテキストウィンドウ(最大200Kトークン)を取得します。これにより、AIがコンテキストウィンドウに蓄積された会話で埋め尽くされることによる品質低下(コンテキストの劣化)が排除されます。
### 2. 軽量オーケストレーター
ワークフローファイル(`get-shit-done/workflows/*.md`)は重い処理を行いません。以下の役割に徹します:
- `gsd-tools.cjs init <workflow>` でコンテキストを読み込む
- 焦点を絞ったプロンプトで専門エージェントを起動する
- 結果を収集し、次のステップにルーティングする
- ステップ間で状態を更新する
### 3. ファイルベースの状態管理
すべての状態は `.planning/` 内に人間が読めるMarkdownとJSONとして保存されます。データベースもサーバーも外部依存もありません。これにより:
- コンテキストリセット(`/clear`)後も状態が維持される
- 人間とエージェントの両方が状態を確認できる
- チームでの可視性のためにgitにコミットできる
### 4. 未設定 = 有効
ワークフローの機能フラグは **未設定 = 有効** のパターンに従います。`config.json` にキーが存在しない場合、デフォルトで `true` になります。ユーザーは機能を明示的に無効化します。デフォルトを有効化する操作は不要です。
### 5. 多層防御
複数のレイヤーで一般的な障害モードを防止します:
- 実行前に計画が検証される(plan-checkerエージェント)
- 実行時にタスクごとにアトミックなコミットが生成される
- 実行後の検証でフェーズ目標との整合性を確認する
- UATが最終ゲートとして人間による検証を提供する
---
## コンポーネントアーキテクチャ
### コマンド(`commands/gsd/*.md`)
ユーザー向けのエントリーポイントです。各ファイルにはYAMLフロントマター(name、description、allowed-tools)とワークフローをブートストラップするプロンプト本文が含まれています。コマンドは以下の形式でインストールされます:
- **Claude Code:** カスタムスラッシュコマンド(`/gsd:command-name`)
- **OpenCode:** スラッシュコマンド(`/gsd-command-name`)
- **Codex:** スキル(`$gsd-command-name`)
- **Copilot:** スラッシュコマンド(`/gsd:command-name`)
- **Antigravity:** スキル
**コマンド総数:** 44
### ワークフロー(`get-shit-done/workflows/*.md`)
コマンドが参照するオーケストレーションロジックです。以下を含むステップバイステップのプロセスが記述されています:
- `gsd-tools.cjs init` によるコンテキスト読み込み
- モデル解決を伴うエージェント起動の指示
- ゲート/チェックポイントの定義
- 状態更新パターン
- エラーハンドリングとリカバリー
**ワークフロー総数:** 46
### エージェント(`agents/*.md`)
フロントマターで以下を指定する専門エージェント定義:
- `name` — エージェント識別子
- `description` — 役割と目的
- `tools` — 許可されたツールアクセス(Read、Write、Edit、Bash、Grep、Glob、WebSearchなど)
- `color` — 視覚的な区別のためのターミナル出力色
**エージェント総数:** 16
### リファレンス(`get-shit-done/references/*.md`)
ワークフローとエージェントが `@-reference` で参照する共有知識ドキュメント:
- `checkpoints.md` — チェックポイントタイプの定義とインタラクションパターン
- `model-profiles.md` — エージェントごとのモデルティア割り当て
- `verification-patterns.md` — 各種アーティファクトの検証方法
- `planning-config.md` — 設定スキーマの全体像と動作
- `git-integration.md` — gitコミット、ブランチ、履歴のパターン
- `questioning.md` — プロジェクト初期化のためのドリーム抽出フィロソフィー
- `tdd.md` — テスト駆動開発の統合パターン
- `ui-brand.md` — 視覚的な出力フォーマットパターン
### テンプレート(`get-shit-done/templates/`)
すべてのプランニングアーティファクト用のMarkdownテンプレートです。`gsd-tools.cjs template fill` および `scaffold` コマンドにより、事前構造化されたファイルを作成するために使用されます:
- `project.md`、`requirements.md`、`roadmap.md`、`state.md` — コアプロジェクトファイル
- `phase-prompt.md` — フェーズ実行プロンプトテンプレート
- `summary.md`(+ `summary-minimal.md`、`summary-standard.md`、`summary-complex.md`)— 粒度対応のサマリーテンプレート
- `DEBUG.md` — デバッグセッション追跡テンプレート
- `UI-SPEC.md`、`UAT.md`、`VALIDATION.md` — 専門検証テンプレート
- `discussion-log.md` — ディスカッション監査証跡テンプレート
- `codebase/` — ブラウンフィールドマッピングテンプレート(スタック、アーキテクチャ、規約、懸念事項、構造、テスト、統合)
- `research-project/` — リサーチ出力テンプレート(SUMMARY、STACK、FEATURES、ARCHITECTURE、PITFALLS)
### フック(`hooks/`)
ホストAIエージェントと統合するランタイムフック:
| フック | イベント | 目的 |
|------|-------|---------|
| `gsd-statusline.js` | `statusLine` | モデル、タスク、ディレクトリ、コンテキスト使用量バーを表示 |
| `gsd-context-monitor.js` | `PostToolUse` / `AfterTool` | コンテキスト残量35%/25%でエージェント向け警告を注入 |
| `gsd-check-update.js` | `SessionStart` | GSDの新バージョンをバックグラウンドで確認 |
| `gsd-prompt-guard.js` | `PreToolUse` | `.planning/` への書き込みにプロンプトインジェクションパターンがないかスキャン(アドバイザリー) |
| `gsd-workflow-guard.js` | `PreToolUse` | GSDワークフローコンテキスト外でのファイル編集を検出(アドバイザリー、`hooks.workflow_guard` によるオプトイン) |
### CLIツール(`get-shit-done/bin/`)
17のドメインモジュールを持つNode.js CLIユーティリティ(`gsd-tools.cjs`):
| モジュール | 責務 |
|--------|---------------|
| `core.cjs` | エラーハンドリング、出力フォーマット、共有ユーティリティ |
| `state.cjs` | STATE.md の解析、更新、進行、メトリクス |
| `phase.cjs` | フェーズディレクトリ操作、小数番号付け、プランインデックス |
| `roadmap.cjs` | ROADMAP.md の解析、フェーズ抽出、プラン進捗 |
| `config.cjs` | config.json の読み書き、セクション初期化 |
| `verify.cjs` | プラン構造、フェーズ完了度、リファレンス、コミット検証 |
| `template.cjs` | テンプレート選択と変数置換による穴埋め |
| `frontmatter.cjs` | YAMLフロントマターのCRUD操作 |
| `init.cjs` | ワークフロータイプごとの複合コンテキスト読み込み |
| `milestone.cjs` | マイルストーンのアーカイブ、要件マーキング |
| `commands.cjs` | その他コマンド(slug、タイムスタンプ、todos、スキャフォールディング、統計) |
| `model-profiles.cjs` | モデルプロファイル解決テーブル |
| `security.cjs` | パストラバーサル防止、プロンプトインジェクション検出、安全なJSON解析、シェル引数バリデーション |
| `uat.cjs` | UATファイル解析、検証デット追跡、audit-uatサポート |
---
## エージェントモデル
### オーケストレーター → エージェントパターン
```
Orchestrator (workflow .md)
│
├── Load context: gsd-tools.cjs init <workflow> <phase>
│ Returns JSON with: project info, config, state, phase details
│
├── Resolve model: gsd-tools.cjs resolve-model <agent-name>
│ Returns: opus | sonnet | haiku | inherit
│
├── Spawn Agent (Task/SubAgent call)
│ ├── Agent prompt (agents/*.md)
│ ├── Context payload (init JSON)
│ ├── Model assignment
│ └── Tool permissions
│
├── Collect result
│
└── Update state: gsd-tools.cjs state update/patch/advance-plan
```
### エージェント起動カテゴリ
| カテゴリ | エージェント | 並列実行 |
|----------|--------|-------------|
| **リサーチャー** | gsd-project-researcher, gsd-phase-researcher, gsd-ui-researcher, gsd-advisor-researcher | 4並列(stack、features、architecture、pitfalls); advisorはdiscuss-phase中に起動 |
| **シンセサイザー** | gsd-research-synthesizer | 逐次(リサーチャー完了後) |
| **プランナー** | gsd-planner, gsd-roadmapper | 逐次 |
| **チェッカー** | gsd-plan-checker, gsd-integration-checker, gsd-ui-checker, gsd-nyquist-auditor | 逐次(検証ループ、最大3回反復) |
| **エグゼキューター** | gsd-executor | ウェーブ内は並列、ウェーブ間は逐次 |
| **ベリファイアー** | gsd-verifier | 逐次(全エグゼキューター完了後) |
| **マッパー** | gsd-codebase-mapper | 4並列(tech、arch、quality、concerns) |
| **デバッガー** | gsd-debugger | 逐次(インタラクティブ) |
| **オーディター** | gsd-ui-auditor | 逐次 |
### ウェーブ実行モデル
`execute-phase` では、プランが依存関係に基づいてウェーブにグループ化されます:
```
Wave Analysis:
Plan 01 (no deps) ─┐
Plan 02 (no deps) ─┤── Wave 1 (parallel)
Plan 03 (depends: 01) ─┤── Wave 2 (waits for Wave 1)
Plan 04 (depends: 02) ─┘
Plan 05 (depends: 03,04) ── Wave 3 (waits for Wave 2)
```
各エグゼキューターには以下が与えられます:
- フレッシュな200Kコンテキストウィンドウ
- 実行対象の特定のPLAN.md
- プロジェクトコンテキスト(PROJECT.md、STATE.md)
- フェーズコンテキスト(CONTEXT.md、利用可能な場合はRESEARCH.md)
#### 並列コミットの安全性
同一ウェーブ内で複数のエグゼキューターが実行される場合、2つの仕組みで競合を防止します:
1. **`--no-verify` コミット** — 並列エージェントはpre-commitフックをスキップします(ビルドロックの競合を引き起こす可能性があるため。例:Rustプロジェクトでのcargo lockファイルの競合)。オーケストレーターは各ウェーブ完了後に `git hook run pre-commit` を1回実行します。
2. **STATE.md ファイルロック** — すべての `writeStateMd()` 呼び出しはロックファイルベースの相互排他(`STATE.md.lock`、`O_EXCL` によるアトミック作成)を使用します。これにより、2つのエージェントがSTATE.mdを読み取り、異なるフィールドを変更し、最後の書き込みが他方の変更を上書きする読み取り-変更-書き込みの競合状態を防止します。古いロックの検出(10秒タイムアウト)とジッター付きのスピンウェイトを含みます。
---
## データフロー
### 新規プロジェクトフロー
```
User input (idea description)
│
▼
Questions (questioning.md philosophy)
│
▼
4x Project Researchers (parallel)
├── Stack → STACK.md
├── Features → FEATURES.md
├── Architecture → ARCHITECTURE.md
└── Pitfalls → PITFALLS.md
│
▼
Research Synthesizer → SUMMARY.md
│
▼
Requirements extraction → REQUIREMENTS.md
│
▼
Roadmapper → ROADMAP.md
│
▼
User approval → STATE.md initialized
```
### フェーズ実行フロー
```
discuss-phase → CONTEXT.md (user preferences)
│
▼
ui-phase → UI-SPEC.md (design contract, optional)
│
▼
plan-phase
├── Phase Researcher → RESEARCH.md
├── Planner → PLAN.md files
└── Plan Checker → Verify loop (max 3x)
│
▼
execute-phase
├── Wave analysis (dependency grouping)
├── Executor per plan → code + atomic commits
├── SUMMARY.md per plan
└── Verifier → VERIFICATION.md
│
▼
verify-work → UAT.md (user acceptance testing)
│
▼
ui-review → UI-REVIEW.md (visual audit, optional)
```
### コンテキスト伝播
各ワークフローステージは後続のステージに供給されるアーティファクトを生成します:
```
PROJECT.md ────────────────────────────────────────────► All agents
REQUIREMENTS.md ───────────────────────────────────────► Planner, Verifier, Auditor
ROADMAP.md ────────────────────────────────────────────► Orchestrators
STATE.md ──────────────────────────────────────────────► All agents (decisions, blockers)
CONTEXT.md (per phase) ────────────────────────────────► Researcher, Planner, Executor
RESEARCH.md (per phase) ───────────────────────────────► Planner, Plan Checker
PLAN.md (per plan) ────────────────────────────────────► Executor, Plan Checker
SUMMARY.md (per plan) ─────────────────────────────────► Verifier, State tracking
UI-SPEC.md (per phase) ────────────────────────────────► Executor, UI Auditor
```
---
## ファイルシステムレイアウト
### インストールファイル
```
~/.claude/ # Claude Code (global install)
├── commands/gsd/*.md # 37 slash commands
├── get-shit-done/
│ ├── bin/gsd-tools.cjs # CLI utility
│ ├── bin/lib/*.cjs # 15 domain modules
│ ├── workflows/*.md # 42 workflow definitions
│ ├── references/*.md # 13 shared reference docs
│ └── templates/ # Planning artifact templates
├── agents/*.md # 15 agent definitions
├── hooks/
│ ├── gsd-statusline.js # Statusline hook
│ ├── gsd-context-monitor.js # Context warning hook
│ └── gsd-check-update.js # Update check hook
├── settings.json # Hook registrations
└── VERSION # Installed version number
```
他のランタイムでの同等パス:
- **OpenCode:** `~/.config/opencode/` または `~/.opencode/`
- **Gemini CLI:** `~/.gemini/`
- **Codex:** `~/.codex/`(コマンドの代わりにスキルを使用)
- **Copilot:** `~/.github/`
- **Antigravity:** `~/.gemini/antigravity/`(グローバル)または `./.agent/`(ローカル)
### プロジェクトファイル(`.planning/`)
```
.planning/
├── PROJECT.md # プロジェクトビジョン、制約、決定事項、発展ルール
├── REQUIREMENTS.md # スコープ付き要件(v1/v2/スコープ外)
├── ROADMAP.md # ステータス追跡付きフェーズ分解
├── STATE.md # 生きたメモリ:位置、決定事項、ブロッカー、メトリクス
├── config.json # ワークフロー設定
├── MILESTONES.md # 完了済みマイルストーンのアーカイブ
├── research/ # /gsd:new-project によるドメインリサーチ
│ ├── SUMMARY.md
│ ├── STACK.md
│ ├── FEATURES.md
│ ├── ARCHITECTURE.md
│ └── PITFALLS.md
├── codebase/ # ブラウンフィールドマッピング(/gsd:map-codebase から)
│ ├── STACK.md
│ ├── ARCHITECTURE.md
│ ├── CONVENTIONS.md
│ ├── CONCERNS.md
│ ├── STRUCTURE.md
│ ├── TESTING.md
│ └── INTEGRATIONS.md
├── phases/
│ └── XX-phase-name/
│ ├── XX-CONTEXT.md # ユーザー設定(discuss-phase から)
│ ├── XX-RESEARCH.md # エコシステムリサーチ(plan-phase から)
│ ├── XX-YY-PLAN.md # 実行プラン
│ ├── XX-YY-SUMMARY.md # 実行結果
│ ├── XX-VERIFICATION.md # 実行後の検証
│ ├── XX-VALIDATION.md # ナイキストテストカバレッジマッピング
│ ├── XX-UI-SPEC.md # UIデザインコントラクト(ui-phase から)
│ ├── XX-UI-REVIEW.md # ビジュアル監査スコア(ui-review から)
│ └── XX-UAT.md # ユーザー受け入れテスト結果
├── quick/ # クイックタスク追跡
│ └── YYMMDD-xxx-slug/
│ ├── PLAN.md
│ └── SUMMARY.md
├── todos/
│ ├── pending/ # キャプチャされたアイデア
│ └── done/ # 完了済みtodo
├── threads/ # 永続コンテキストスレッド(/gsd:thread から)
├── seeds/ # 将来に向けたアイデア(/gsd:plant-seed から)
├── debug/ # アクティブなデバッグセッション
│ ├── *.md # アクティブセッション
│ ├── resolved/ # アーカイブ済みセッション
│ └── knowledge-base.md # 永続的なデバッグ知見
├── ui-reviews/ # /gsd:ui-review からのスクリーンショット(gitignore対象)
└── continue-here.md # コンテキスト引き継ぎ(pause-work から)
```
---
## インストーラーアーキテクチャ
インストーラー(`bin/install.js`、約3,000行)は以下を処理します:
1. **ランタイム検出** — インタラクティブプロンプトまたはCLIフラグ(`--claude`、`--opencode`、`--gemini`、`--codex`、`--copilot`、`--antigravity`、`--all`)
2. **インストール先の選択** — グローバル(`--global`)またはローカル(`--local`)
3. **ファイルデプロイ** — コマンド、ワークフロー、リファレンス、テンプレート、エージェント、フックをコピー
4. **ランタイム適応** — ランタイムごとにファイル内容を変換:
- Claude Code: そのまま使用
- OpenCode: エージェントフロントマターを `name:`、`model: inherit`、`mode: subagent` に変換
- Codex: コマンドからTOML設定 + スキルを生成
- Copilot: ツール名をマッピング(Read→read、Bash→executeなど)
- Gemini: フックイベント名を調整(`PostToolUse` の代わりに `AfterTool`)
- Antigravity: Googleモデル同等品によるスキルファースト
5. **パス正規化** — `~/.claude/` パスをランタイム固有のパスに置換
6. **設定統合** — ランタイムの `settings.json` にフックを登録
7. **パッチバックアップ** — v1.17以降、ローカルで変更されたファイルを `/gsd:reapply-patches` 用に `gsd-local-patches/` へバックアップ
8. **マニフェスト追跡** — クリーンアンインストールのために `gsd-file-manifest.json` を書き込み
9. **アンインストールモード** — `--uninstall` ですべてのGSDファイル、フック、設定を削除
### プラットフォーム対応
- **Windows:** 子プロセスでの `windowsHide`、保護ディレクトリへのEPERM/EACCES対策、パスセパレーターの正規化
- **WSL:** WindowsのNode.jsがWSL上で実行されていることを検出し、パスの不一致について警告
- **Docker/CI:** カスタム設定ディレクトリの場所に `CLAUDE_CONFIG_DIR` 環境変数をサポート
---
## フックシステム
### アーキテクチャ
```
Runtime Engine (Claude Code / Gemini CLI)
│
├── statusLine event ──► gsd-statusline.js
│ Reads: stdin (session JSON)
│ Writes: stdout (formatted status), /tmp/claude-ctx-{session}.json (bridge)
│
├── PostToolUse/AfterTool event ──► gsd-context-monitor.js
│ Reads: stdin (tool event JSON), /tmp/claude-ctx-{session}.json (bridge)
│ Writes: stdout (hookSpecificOutput with additionalContext warning)
│
└── SessionStart event ──► gsd-check-update.js
Reads: VERSION file
Writes: ~/.claude/cache/gsd-update-check.json (spawns background process)
```
### コンテキストモニターの閾値
| コンテキスト残量 | レベル | エージェントの動作 |
|-------------------|-------|----------------|
| > 35% | Normal | 警告なし |
| ≤ 35% | WARNING | 「新しい複雑な作業の開始を避けてください」 |
| ≤ 25% | CRITICAL | 「コンテキストがほぼ枯渇、ユーザーに通知してください」 |
デバウンス:繰り返し警告の間隔は5回のツール使用。重大度のエスカレーション(WARNING→CRITICAL)はデバウンスをバイパスします。
### 安全性の特性
- すべてのフックはtry/catchでラップされ、エラー時はサイレントに終了
- stdin タイムアウトガード(3秒)でパイプの問題によるハングを防止
- 古いメトリクス(60秒超)は無視される
- ブリッジファイルの欠落は適切に処理される(サブエージェント、新規セッション)
- コンテキストモニターはアドバイザリーのみ — ユーザーの設定を上書きする命令的なコマンドは発行しない
### セキュリティフック(v1.27)
**Prompt Guard**(`gsd-prompt-guard.js`):
- `.planning/` ファイルへのWrite/Edit時にトリガー
- プロンプトインジェクションパターン(ロールオーバーライド、指示バイパス、systemタグインジェクション)をスキャン
- アドバイザリーのみ — 検出をログに記録するが、ブロックはしない
- フックの独立性のため、パターンはインライン化(`security.cjs` のサブセット)
**Workflow Guard**(`gsd-workflow-guard.js`):
- `.planning/` 以外のファイルへのWrite/Edit時にトリガー
- GSDワークフローコンテキスト外での編集を検出(アクティブな `/gsd:` コマンドやTaskサブエージェントがない場合)
- 状態追跡される変更には `/gsd:quick` や `/gsd:fast` の使用をアドバイス
- `hooks.workflow_guard: true` によるオプトイン(デフォルト: false)
---
## ランタイム抽象化
GSDは統一されたコマンド/ワークフローアーキテクチャを通じて6つのAIコーディングランタイムをサポートしています:
| ランタイム | コマンド形式 | エージェントシステム | 設定場所 |
|---------|---------------|--------------|-----------------|
| Claude Code | `/gsd:command` | Task起動 | `~/.claude/` |
| OpenCode | `/gsd-command` | サブエージェントモード | `~/.config/opencode/` |
| Gemini CLI | `/gsd:command` | Task起動 | `~/.gemini/` |
| Codex | `$gsd-command` | スキル | `~/.codex/` |
| Copilot | `/gsd:command` | エージェント委譲 | `~/.github/` |
| Antigravity | スキル | スキル | `~/.gemini/antigravity/` |
### 抽象化ポイント
1. **ツール名マッピング** — 各ランタイムは独自のツール名を持つ(例:ClaudeのBash → Copilotのexecute)
2. **フックイベント名** — Claude Codeは `PostToolUse`、Geminiは `AfterTool` を使用
3. **エージェントフロントマター** — 各ランタイムは独自のエージェント定義形式を持つ
4. **パス規約** — 各ランタイムは異なるディレクトリに設定を保存
5. **モデル参照** — `inherit` プロファイルにより、GSDはランタイムのモデル選択に委譲
インストーラーはインストール時にすべての変換を処理します。ワークフローとエージェントはClaude Codeのネイティブ形式で記述され、デプロイ時に変換されます。

367
docs/ja-JP/CLI-TOOLS.md Normal file
View File

@@ -0,0 +1,367 @@
# GSD CLI ツールリファレンス
> `gsd-tools.cjs` のプログラマティック API リファレンスです。ワークフローやエージェントが内部的に使用します。ユーザー向けコマンドについては、[コマンドリファレンス](COMMANDS.md) を参照してください。
---
## 概要
`gsd-tools.cjs` は、GSD の約50個のコマンド、ワークフロー、エージェントファイル全体で繰り返し使われるインライン bash パターンを置き換える Node.js CLI ユーティリティです。設定の解析、モデル解決、フェーズ検索、git コミット、サマリー検証、状態管理、テンプレート操作を一元化しています。
**配置場所:** `get-shit-done/bin/gsd-tools.cjs`
**モジュール:** `get-shit-done/bin/lib/` 内の15個のドメインモジュール
**使い方:**
```bash
node gsd-tools.cjs <command> [args] [--raw] [--cwd <path>]
```
**グローバルフラグ:**
| フラグ | 説明 |
|--------|------|
| `--raw` | 機械可読な出力(JSON またはプレーンテキスト、フォーマットなし) |
| `--cwd <path>` | 作業ディレクトリの上書き(サンドボックス化されたサブエージェント向け) |
---
## State コマンド
`.planning/STATE.md` を管理します — プロジェクトの生きた記憶です。
```bash
# プロジェクトの全設定 + 状態を JSON として読み込む
node gsd-tools.cjs state load
# STATE.md のフロントマターを JSON として出力
node gsd-tools.cjs state json
# 単一フィールドを更新
node gsd-tools.cjs state update <field> <value>
# 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 スナップショット
STATE.md 全体の構造化パース:
```bash
node gsd-tools.cjs state-snapshot
```
現在位置、フェーズ、プラン、ステータス、決定事項、ブロッカー、メトリクス、最終アクティビティを含む JSON を返します。
---
## Phase コマンド
フェーズを管理します — ディレクトリ、番号付け、ロードマップとの同期。
```bash
# 番号でフェーズディレクトリを検索
node gsd-tools.cjs find-phase <phase>
# 挿入用の次の小数フェーズ番号を計算
node gsd-tools.cjs phase next-decimal <phase>
# ロードマップに新しいフェーズを追加 + ディレクトリを作成
node gsd-tools.cjs phase add <description>
# 既存フェーズの後に小数フェーズを挿入
node gsd-tools.cjs phase insert <after> <description>
# フェーズを削除し、後続を振り直し
node gsd-tools.cjs phase remove <phase> [--force]
# フェーズを完了としてマークし、状態 + ロードマップを更新
node gsd-tools.cjs phase complete <phase>
# ウェーブとステータス付きでプランをインデックス化
node gsd-tools.cjs phase-plan-index <phase>
# フィルタリング付きでフェーズを一覧表示
node gsd-tools.cjs phases list [--type planned|executed|all] [--phase N] [--include-archived]
```
---
## Roadmap コマンド
`ROADMAP.md` の解析と更新。
```bash
# ROADMAP.md からフェーズセクションを抽出
node gsd-tools.cjs roadmap get-phase <phase>
# ディスク状態を含む完全なロードマップ解析
node gsd-tools.cjs roadmap analyze
# ディスクからプログレステーブル行を更新
node gsd-tools.cjs roadmap update-plan-progress <N>
```
---
## Config コマンド
`.planning/config.json` の読み書き。
```bash
# デフォルト値で config.json を初期化
node gsd-tools.cjs config-ensure-section
# 設定値をセット(ドット記法)
node gsd-tools.cjs config-set <key> <value>
# 設定値を取得
node gsd-tools.cjs config-get <key>
# モデルプロファイルを設定
node gsd-tools.cjs config-set-model-profile <profile>
```
---
## モデル解決
```bash
# 現在のプロファイルに基づいてエージェント用モデルを取得
node gsd-tools.cjs resolve-model <agent-name>
# 戻り値: opus | sonnet | haiku | inherit
```
エージェント名: `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 コマンド
プラン、フェーズ、参照、コミットを検証します。
```bash
# SUMMARY.md ファイルを検証
node gsd-tools.cjs verify-summary <path> [--check-count N]
# PLAN.md の構造 + タスクをチェック
node gsd-tools.cjs verify plan-structure <file>
# 全プランにサマリーがあるか確認
node gsd-tools.cjs verify phase-completeness <phase>
# @参照 + パスが解決可能か確認
node gsd-tools.cjs verify references <file>
# コミットハッシュの一括検証
node gsd-tools.cjs verify commits <hash1> [hash2] ...
# must_haves.artifacts をチェック
node gsd-tools.cjs verify artifacts <plan-file>
# must_haves.key_links をチェック
node gsd-tools.cjs verify key-links <plan-file>
```
---
## Validation コマンド
プロジェクトの整合性をチェックします。
```bash
# フェーズ番号、ディスク/ロードマップの同期を確認
node gsd-tools.cjs validate consistency
# .planning/ の整合性チェック、任意で修復
node gsd-tools.cjs validate health [--repair]
```
---
## Template コマンド
テンプレートの選択と穴埋め。
```bash
# 粒度に基づいてサマリーテンプレートを選択
node gsd-tools.cjs template select <type>
# 変数でテンプレートを穴埋め
node gsd-tools.cjs template fill <type> --phase N [--plan M] [--name "..."] [--type execute|tdd] [--wave N] [--fields '{json}']
```
`fill` のテンプレートタイプ: `summary`, `plan`, `verification`
---
## Frontmatter コマンド
任意の Markdown ファイルに対する YAML フロントマターの CRUD 操作。
```bash
# フロントマターを JSON として抽出
node gsd-tools.cjs frontmatter get <file> [--field key]
# 単一フィールドを更新
node gsd-tools.cjs frontmatter set <file> --field key --value jsonVal
# JSON をフロントマターにマージ
node gsd-tools.cjs frontmatter merge <file> --data '{json}'
# 必須フィールドを検証
node gsd-tools.cjs frontmatter validate <file> --schema plan|summary|verification
```
---
## Scaffold コマンド
事前構造化されたファイルとディレクトリを作成します。
```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 <phase>
node gsd-tools.cjs init plan-phase <phase>
node gsd-tools.cjs init new-project
node gsd-tools.cjs init new-milestone
node gsd-tools.cjs init quick <description>
node gsd-tools.cjs init resume
node gsd-tools.cjs init verify-work <phase>
node gsd-tools.cjs init phase-op <phase>
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
```
**大容量ペイロードの処理:** 出力が約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
```
---
## Milestone コマンド
```bash
# マイルストーンをアーカイブ
node gsd-tools.cjs milestone complete <version> [--name <name>] [--archive-phases]
# 要件を完了としてマーク
node gsd-tools.cjs requirements mark-complete <ids>
# 受け付ける形式: REQ-01,REQ-02 または REQ-01 REQ-02 または [REQ-01, REQ-02]
```
---
## ユーティリティコマンド
```bash
# テキストを URL セーフなスラッグに変換
node gsd-tools.cjs generate-slug "Some Text Here"
# → some-text-here
# タイムスタンプを取得
node gsd-tools.cjs current-timestamp [full|date|filename]
# 保留中の TODO をカウントして一覧表示
node gsd-tools.cjs list-todos [area]
# ファイル/ディレクトリの存在確認
node gsd-tools.cjs verify-path-exists <path>
# 全 SUMMARY.md データを集約
node gsd-tools.cjs history-digest
# SUMMARY.md から構造化データを抽出
node gsd-tools.cjs summary-extract <path> [--fields field1,field2]
# プロジェクト統計
node gsd-tools.cjs stats [json|table]
# 進捗表示
node gsd-tools.cjs progress [json|table|bar]
# TODO を完了にする
node gsd-tools.cjs todo complete <filename>
# UAT 監査 — 全フェーズの未解決項目をスキャン
node gsd-tools.cjs audit-uat
# 設定チェック付き git コミット
node gsd-tools.cjs commit <message> [--files f1 f2] [--amend] [--no-verify]
```
> **`--no-verify`**: プリコミットフックをスキップします。ウェーブベース実行時に並列エグゼキューターエージェントが使用し、ビルドロックの競合(例: Rust プロジェクトでの cargo ロック競合)を回避します。オーケストレーターは各ウェーブ完了後にフックを一度実行します。順次実行時には `--no-verify` を使用せず、フックを通常通り実行してください。
```bash
# Web 検索(Brave API キーが必要)
node gsd-tools.cjs websearch <query> [--limit N] [--freshness day|week|month]
```
---
## モジュールアーキテクチャ
| モジュール | ファイル | エクスポート |
|------------|----------|--------------|
| 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` |
| Roadmap | `lib/roadmap.cjs` | ロードマップ解析、フェーズ抽出、進捗更新 |
| 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` | マイルストーンアーカイブ、要件マーキング |
| Commands | `lib/commands.cjs` | その他: slug、タイムスタンプ、TODO、scaffold、統計、Web 検索 |
| Model Profiles | `lib/model-profiles.cjs` | プロファイル解決テーブル |
| UAT | `lib/uat.cjs` | 全フェーズ横断 UAT/検証監査 |
| Profile Output | `lib/profile-output.cjs` | 開発者プロファイルのフォーマット |
| Profile Pipeline | `lib/profile-pipeline.cjs` | セッション分析パイプライン |

933
docs/ja-JP/COMMANDS.md Normal file
View File

@@ -0,0 +1,933 @@
# GSD コマンドリファレンス
> コマンド構文、フラグ、オプション、使用例の完全なリファレンスです。機能の詳細については[機能リファレンス](FEATURES.md)を、ワークフローのチュートリアルについては[ユーザーガイド](USER-GUIDE.md)をご覧ください。
---
## コマンド構文
- **Claude Code / Gemini / Copilot:** `/gsd:command-name [args]`
- **OpenCode:** `/gsd-command-name [args]`
- **Codex:** `$gsd-command-name [args]`
---
## コアワークフローコマンド
### `/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:new-workspace`
リポジトリのコピーと独立した `.planning/` ディレクトリを持つ分離されたワークスペースを作成します。
| フラグ | 説明 |
|------|-------------|
| `--name <name>` | ワークスペース名(必須) |
| `--repos repo1,repo2` | カンマ区切りのリポジトリパスまたは名前 |
| `--path /target` | 対象ディレクトリ(デフォルト: `~/gsd-workspaces/<name>`) |
| `--strategy worktree\|clone` | コピー戦略(デフォルト: `worktree`) |
| `--branch <name>` | チェックアウトするブランチ(デフォルト: `workspace/<name>`) |
| `--auto` | 対話的な質問をスキップ |
**ユースケース:**
- マルチリポ: リポジトリのサブセットを分離されたGSD状態で作業
- 機能の分離: `--repos .` で現在のリポジトリのworktreeを作成
**生成物:** `WORKSPACE.md`、`.planning/`、リポジトリコピー(worktreeまたはclone)
```bash
/gsd:new-workspace --name feature-b --repos hr-ui,ZeymoAPI
/gsd:new-workspace --name feature-b --repos . --strategy worktree # 同一リポジトリの分離
/gsd:new-workspace --name spike --repos api,web --strategy clone # フルクローン
```
---
### `/gsd:list-workspaces`
アクティブなGSDワークスペースとそのステータスを一覧表示します。
**スキャン対象:** `~/gsd-workspaces/` 内の `WORKSPACE.md` マニフェスト
**表示内容:** 名前、リポジトリ数、戦略、GSDプロジェクトのステータス
```bash
/gsd:list-workspaces
```
---
### `/gsd:remove-workspace`
ワークスペースを削除し、git worktreeをクリーンアップします。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `<name>` | はい | 削除するワークスペース名 |
**安全性:** コミットされていない変更があるリポジトリの削除を拒否します。名前の確認が必要です。
```bash
/gsd:remove-workspace feature-b
```
---
### `/gsd:discuss-phase`
計画の前に実装に関する意思決定を記録します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | いいえ | フェーズ番号(デフォルトは現在のフェーズ) |
| フラグ | 説明 |
|------|-------------|
| `--auto` | すべての質問で推奨デフォルトを自動選択 |
| `--batch` | 質問を一つずつではなくバッチ取り込みでグループ化 |
| `--analyze` | ディスカッション中にトレードオフ分析を追加 |
**前提条件:** `.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: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` | ドメイン調査ステップをスキップ |
| `--gaps` | ギャップ解消モード(VERIFICATION.mdを読み込み、調査をスキップ) |
| `--skip-verify` | プランチェッカーの検証ループをスキップ |
| `--prd <file>` | discuss-phaseの代わりにPRDファイルをコンテキストとして使用 |
| `--reviews` | REVIEWS.mdのクロスAIレビューフィードバックで再計画 |
**前提条件:** `.planning/ROADMAP.md` が存在すること
**生成物:** `{phase}-RESEARCH.md`、`{phase}-{N}-PLAN.md`、`{phase}-VALIDATION.md`
```bash
/gsd:plan-phase 1 # フェーズ1の調査+計画+検証
/gsd:plan-phase 3 --skip-research # 調査なしで計画(馴染みのあるドメイン)
/gsd:plan-phase --auto # 非対話型の計画
```
---
### `/gsd:execute-phase`
フェーズ内のすべてのプランをウェーブベースの並列化で実行するか、特定のウェーブを実行します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | **はい** | 実行するフェーズ番号 |
| `--wave N` | いいえ | フェーズ内のウェーブ `N` のみを実行 |
**前提条件:** フェーズにPLAN.mdファイルがあること
**生成物:** プランごとの `{phase}-{N}-SUMMARY.md`、gitコミット、フェーズ完了時に `{phase}-VERIFICATION.md`
```bash
/gsd:execute-phase 1 # フェーズ1を実行
/gsd:execute-phase 1 --wave 2 # ウェーブ2のみを実行
```
---
### `/gsd:verify-work`
自動診断付きのユーザー受入テスト。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | いいえ | フェーズ番号(デフォルトは最後に実行されたフェーズ) |
**前提条件:** フェーズが実行済みであること
**生成物:** `{phase}-UAT.md`、問題が見つかった場合は修正プラン
```bash
/gsd:verify-work 1 # フェーズ1のUAT
```
---
### `/gsd:next`
次の論理的なワークフローステップに自動的に進みます。プロジェクトの状態を読み取り、適切なコマンドを実行します。
**前提条件:** `.planning/` ディレクトリが存在すること
**動作:**
- プロジェクトなし → `/gsd:new-project` を提案
- フェーズにディスカッションが必要 → `/gsd:discuss-phase` を実行
- フェーズに計画が必要 → `/gsd:plan-phase` を実行
- フェーズに実行が必要 → `/gsd:execute-phase` を実行
- フェーズに検証が必要 → `/gsd:verify-work` を実行
- 全フェーズ完了 → `/gsd:complete-milestone` を提案
```bash
/gsd:next # 次のステップを自動検出して実行
```
---
### `/gsd:session-report`
作業サマリー、成果、推定リソース使用量を含むセッションレポートを生成します。
**前提条件:** 直近の作業があるアクティブなプロジェクト
**生成物:** `.planning/reports/SESSION_REPORT.md`
```bash
/gsd:session-report # セッション後のサマリーを生成
```
**レポートに含まれる内容:**
- 実施した作業(コミット、実行したプラン、進行したフェーズ)
- 成果と成果物
- ブロッカーと意思決定
- 推定トークン/コスト使用量
- 次のステップの推奨事項
---
### `/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-ID)
- 検証ステータス
- 主要な意思決定
---
### `/gsd:ui-review`
実装済みフロントエンドの事後的な6軸ビジュアル監査。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | いいえ | フェーズ番号(デフォルトは最後に実行されたフェーズ) |
**前提条件:** プロジェクトにフロントエンドコードがあること(単体で動作、GSDプロジェクト不要)
**生成物:** `{phase}-UI-REVIEW.md`、`.planning/ui-reviews/` 内のスクリーンショット
```bash
/gsd:ui-review # 現在のフェーズを監査
/gsd:ui-review 3 # フェーズ3を監査
```
---
### `/gsd:audit-uat`
全フェーズを横断した未処理のUATおよび検証項目の監査。
**前提条件:** 少なくとも1つのフェーズが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` | いいえ | マイルストーンバージョン(デフォルトは現在/最新のマイルストーン) |
**前提条件:** 少なくとも1つの完了済みまたは進行中のマイルストーンがあること
**生成物:** `.planning/reports/MILESTONE_SUMMARY-v{version}.md`
**サマリーに含まれる内容:**
- 概要、アーキテクチャの意思決定、フェーズごとの詳細分析
- 主要な意思決定とトレードオフ
- 要件カバレッジ
- 技術的負債と先送り項目
- 新しいチームメンバー向けのスタートガイド
- 生成後に対話的なQ&Aを提供
```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:add-phase`
ロードマップに新しいフェーズを追加します。
```bash
/gsd:add-phase # 対話型 — フェーズの説明を入力
```
### `/gsd:insert-phase`
小数番号を使用して、フェーズ間に緊急の作業を挿入します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | いいえ | このフェーズ番号の後に挿入 |
```bash
/gsd:insert-phase 3 # フェーズ3と4の間に挿入 → 3.1を作成
```
### `/gsd:remove-phase`
将来のフェーズを削除し、後続のフェーズの番号を振り直します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | いいえ | 削除するフェーズ番号 |
```bash
/gsd:remove-phase 7 # フェーズ7を削除、8→7、9→8等に番号振り直し
```
### `/gsd:list-phase-assumptions`
計画前にClaudeの意図するアプローチをプレビューします。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | いいえ | フェーズ番号 |
```bash
/gsd:list-phase-assumptions 2 # フェーズ2の前提を確認
```
### `/gsd:plan-milestone-gaps`
マイルストーン監査のギャップを解消するフェーズを作成します。
```bash
/gsd:plan-milestone-gaps # 各監査ギャップに対してフェーズを作成
```
### `/gsd:research-phase`
詳細なエコシステム調査のみを実行します(単体機能 — 通常は `/gsd:plan-phase` を使用してください)。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | いいえ | フェーズ番号 |
```bash
/gsd:research-phase 4 # フェーズ4のドメインを調査
```
### `/gsd:validate-phase`
遡及的にNyquistバリデーションのギャップを監査・補填します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | いいえ | フェーズ番号 |
```bash
/gsd:validate-phase 2 # フェーズ2のテストカバレッジを監査
```
---
## ナビゲーションコマンド
### `/gsd:progress`
ステータスと次のステップを表示します。
```bash
/gsd:progress # "今どこにいる?次は何?"
```
### `/gsd:resume-work`
前回のセッションから完全なコンテキストを復元します。
```bash
/gsd:resume-work # コンテキストリセットまたは新しいセッション後に使用
```
### `/gsd:pause-work`
フェーズの途中で中断する際にコンテキストのハンドオフを保存します。
```bash
/gsd:pause-work # continue-here.mdを作成
```
### `/gsd:manager`
1つのターミナルから複数のフェーズを管理する対話的なコマンドセンター。
**前提条件:** `.planning/ROADMAP.md` が存在すること
**動作:**
- 全フェーズのビジュアルステータスインジケータ付きダッシュボード
- 依存関係と進捗に基づいた最適な次のアクションを推奨
- 作業のディスパッチ: discussはインラインで実行、plan/executeはバックグラウンドエージェントとして実行
- 1つのターミナルから複数フェーズの作業を並列化するパワーユーザー向け
```bash
/gsd:manager # コマンドセンターダッシュボードを開く
```
---
### `/gsd:help`
すべてのコマンドと使用ガイドを表示します。
```bash
/gsd:help # クイックリファレンス
```
---
## ユーティリティコマンド
### `/gsd:quick`
GSDの保証付きでアドホックタスクを実行します。
| フラグ | 説明 |
|------|-------------|
| `--full` | プランチェック(2回のイテレーション)+実行後検証を有効化 |
| `--discuss` | 軽量な事前計画ディスカッション |
| `--research` | 計画前にフォーカスされたリサーチャーを起動 |
フラグは組み合わせ可能です。
```bash
/gsd:quick # 基本的なクイックタスク
/gsd:quick --discuss --research # ディスカッション+調査+計画
/gsd:quick --full # プランチェックと検証付き
/gsd:quick --discuss --research --full # すべてのオプションステージ
```
### `/gsd:autonomous`
残りのすべてのフェーズを自律的に実行します。
| フラグ | 説明 |
|------|-------------|
| `--from N` | 特定のフェーズ番号から開始 |
```bash
/gsd:autonomous # 残りの全フェーズを実行
/gsd:autonomous --from 3 # フェーズ3から開始
```
### `/gsd:do`
フリーテキストを適切なGSDコマンドにルーティングします。
```bash
/gsd:do # その後、やりたいことを説明
```
### `/gsd:note`
手軽にアイデアをキャプチャ — メモの追加、一覧表示、またはTodoへの昇格。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `text` | いいえ | キャプチャするメモテキスト(デフォルト: 追加モード) |
| `list` | いいえ | プロジェクトおよびグローバルスコープからすべてのメモを一覧表示 |
| `promote N` | いいえ | メモNを構造化されたTodoに変換 |
| フラグ | 説明 |
|------|-------------|
| `--global` | メモ操作にグローバルスコープを使用 |
```bash
/gsd:note "Consider caching strategy for API responses"
/gsd:note list
/gsd:note promote 3
```
### `/gsd:debug`
永続的な状態を持つ体系的なデバッグ。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `description` | いいえ | バグの説明 |
```bash
/gsd:debug "Login button not responding on mobile Safari"
```
### `/gsd:add-todo`
後で取り組むアイデアやタスクをキャプチャします。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `description` | いいえ | Todoの説明 |
```bash
/gsd:add-todo "Consider adding dark mode support"
```
### `/gsd:check-todos`
保留中のTodoを一覧表示し、取り組むものを選択します。
```bash
/gsd:check-todos
```
### `/gsd:add-tests`
完了したフェーズのテストを生成します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `N` | いいえ | フェーズ番号 |
```bash
/gsd:add-tests 2 # フェーズ2のテストを生成
```
### `/gsd:stats`
プロジェクトの統計情報を表示します。
```bash
/gsd:stats # プロジェクトメトリクスダッシュボード
```
### `/gsd:profile-user`
Claude Codeのセッション分析から8つの次元(コミュニケーションスタイル、意思決定パターン、デバッグアプローチ、UXプリファレンス、ベンダー選択、フラストレーションのトリガー、学習スタイル、説明の深さ)にわたる開発者行動プロファイルを生成します。Claudeのレスポンスをパーソナライズするアーティファクトを生成します。
| フラグ | 説明 |
|------|-------------|
| `--questionnaire` | セッション分析の代わりに対話型アンケートを使用 |
| `--refresh` | セッションを再分析してプロファイルを再生成 |
**生成されるアーティファクト:**
- `USER-PROFILE.md` — 完全な行動プロファイル
- `/gsd:dev-preferences` コマンド — 任意のセッションでプリファレンスをロード
- `CLAUDE.md` プロファイルセクション — Claude Codeが自動検出
```bash
/gsd:profile-user # セッションを分析してプロファイルを構築
/gsd:profile-user --questionnaire # 対話型アンケートのフォールバック
/gsd:profile-user --refresh # 新鮮な分析からの再生成
```
### `/gsd:health`
`.planning/` ディレクトリの整合性を検証します。
| フラグ | 説明 |
|------|-------------|
| `--repair` | 回復可能な問題を自動修復 |
```bash
/gsd:health # 整合性チェック
/gsd:health --repair # チェックして修復
```
### `/gsd:cleanup`
完了したマイルストーンの蓄積されたフェーズディレクトリをアーカイブします。
```bash
/gsd:cleanup
```
---
## 診断コマンド
### `/gsd:forensics`
失敗またはスタックしたGSDワークフローの事後調査。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `description` | いいえ | 問題の説明(省略時はプロンプトで入力) |
**前提条件:** `.planning/` ディレクトリが存在すること
**生成物:** `.planning/forensics/report-{timestamp}.md`
**調査の対象:**
- Git履歴分析(直近のコミット、スタックパターン、時間的ギャップ)
- アーティファクトの整合性(完了フェーズで期待されるファイル)
- STATE.mdの異常とセッション履歴
- コミットされていない作業、コンフリクト、放棄された変更
- 少なくとも4種類の異常をチェック(スタックループ、欠損アーティファクト、放棄された作業、クラッシュ/中断)
- アクション可能な所見がある場合、GitHubイシューの作成を提案
```bash
/gsd:forensics # 対話型 — 問題の入力を促す
/gsd:forensics "Phase 3 execution stalled" # 問題の説明付き
```
---
## ワークストリーム管理
### `/gsd:workstreams`
マイルストーンの異なる領域で並行作業するためのワークストリームを管理します。
**サブコマンド:**
| サブコマンド | 説明 |
|------------|-------------|
| `list` | すべてのワークストリームをステータス付きで一覧表示(サブコマンド未指定時のデフォルト) |
| `create <name>` | 新しいワークストリームを作成 |
| `status <name>` | 1つのワークストリームの詳細ステータス |
| `switch <name>` | アクティブなワークストリームを設定 |
| `progress` | 全ワークストリームの進捗サマリー |
| `complete <name>` | 完了したワークストリームをアーカイブ |
| `resume <name>` | ワークストリームでの作業を再開 |
**前提条件:** アクティブな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`
ワークフロートグルとモデルプロファイルの対話的な設定。
```bash
/gsd:settings # 対話型設定
```
### `/gsd:set-profile`
クイックプロファイル切り替え。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `profile` | **はい** | `quality`、`balanced`、`budget`、または `inherit` |
```bash
/gsd:set-profile budget # budgetプロファイルに切り替え
/gsd:set-profile quality # qualityプロファイルに切り替え
```
---
## ブラウンフィールドコマンド
### `/gsd:map-codebase`
並列マッパーエージェントで既存のコードベースを分析します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `area` | いいえ | マッピングを特定の領域にスコープ |
```bash
/gsd:map-codebase # コードベース全体を分析
/gsd:map-codebase auth # auth領域にフォーカス
```
---
## アップデートコマンド
### `/gsd:update`
変更履歴のプレビュー付きでGSDをアップデートします。
```bash
/gsd:update # アップデートを確認してインストール
```
### `/gsd:reapply-patches`
GSDアップデート後にローカルの変更を復元します。
```bash
/gsd:reapply-patches # ローカルの変更をマージバック
```
---
## 高速&インラインコマンド
### `/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レビューを含める |
| `--all` | 利用可能なすべてのCLIを含める |
**生成物:** `{phase}-REVIEWS.md` — `/gsd:plan-phase --reviews` で利用可能
```bash
/gsd:review --phase 3 --all
/gsd:review --phase 2 --gemini
```
---
### `/gsd:pr-branch`
`.planning/` のコミットをフィルタリングしてクリーンなPRブランチを作成します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `target branch` | いいえ | ベースブランチ(デフォルト: `main`) |
**目的:** レビュアーにはコード変更のみを表示し、GSD計画アーティファクトは含めません。
```bash
/gsd:pr-branch # mainに対してフィルタリング
/gsd:pr-branch develop # developに対してフィルタリング
```
---
### `/gsd:audit-uat`
全フェーズを横断した未処理のUATおよび検証項目の監査。
**前提条件:** 少なくとも1つのフェーズがUATまたは検証付きで実行されていること
**生成物:** カテゴリ分類された監査レポートと人間用テストプラン
```bash
/gsd:audit-uat
```
---
## バックログ&スレッドコマンド
### `/gsd:add-backlog`
999.x番号付けを使用して、バックログのパーキングロットにアイデアを追加します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `description` | **はい** | バックログ項目の説明 |
**999.x番号付け**により、バックログ項目はアクティブなフェーズシーケンスの外に保持されます。フェーズディレクトリは即座に作成されるため、`/gsd:discuss-phase` や `/gsd:plan-phase` がそれらに対して動作します。
```bash
/gsd:add-backlog "GraphQL API layer"
/gsd:add-backlog "Mobile responsive redesign"
```
---
### `/gsd:review-backlog`
バックログ項目をレビューし、アクティブなマイルストーンに昇格させます。
**項目ごとのアクション:** 昇格(アクティブシーケンスに移動)、保持(バックログに残す)、削除。
```bash
/gsd:review-backlog
```
---
### `/gsd:plant-seed`
トリガー条件付きの将来のアイデアをキャプチャ — 適切なマイルストーンで自動的に表面化します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| `idea summary` | いいえ | シードの説明(省略時はプロンプトで入力) |
シードはコンテキストの劣化を解決します:誰も読まないDeferredの一行メモの代わりに、シードは完全なWHY、いつ表面化すべきか、詳細への手がかりを保存します。
**生成物:** `.planning/seeds/SEED-NNN-slug.md`
**利用先:** `/gsd:new-milestone`(シードをスキャンしてマッチするものを提示)
```bash
/gsd:plant-seed "Add real-time collaboration when WebSocket infra is in place"
```
---
### `/gsd:thread`
クロスセッション作業のための永続的なコンテキストスレッドを管理します。
| 引数 | 必須 | 説明 |
|----------|----------|-------------|
| (なし) | — | すべてのスレッドを一覧表示 |
| `name` | — | 名前で既存のスレッドを再開 |
| `description` | — | 新しいスレッドを作成 |
スレッドは、複数のセッションにまたがるが特定のフェーズに属さない作業のための軽量なクロスセッション知識ストアです。`/gsd:pause-work` よりも軽量です。
```bash
/gsd:thread # すべてのスレッドを一覧表示
/gsd:thread fix-deploy-key-auth # スレッドを再開
/gsd:thread "Investigate TCP timeout in pasta service" # 新規作成
```
---
## コミュニティコマンド
### `/gsd:join-discord`
Discordコミュニティの招待を開きます。
```bash
/gsd:join-discord
```

342
docs/ja-JP/CONFIGURATION.md Normal file
View File

@@ -0,0 +1,342 @@
# GSD 設定リファレンス
> 設定スキーマの全容、ワークフロートグル、モデルプロファイル、Git ブランチオプション。機能の詳細については[機能リファレンス](FEATURES.md)を参照してください。
---
## 設定ファイル
GSD はプロジェクト設定を `.planning/config.json` に保存します。`/gsd:new-project` 実行時に作成され、`/gsd:settings` で更新できます。
### 完全スキーマ
```json
{
"mode": "interactive",
"granularity": "standard",
"model_profile": "balanced",
"model_overrides": {},
"planning": {
"commit_docs": true,
"search_gitignored": false
},
"workflow": {
"research": true,
"plan_check": true,
"verifier": true,
"auto_advance": false,
"nyquist_validation": true,
"ui_phase": true,
"ui_safety_gate": true,
"node_repair": true,
"node_repair_budget": 2,
"research_before_questions": false,
"discuss_mode": "discuss",
"skip_discuss": false,
"text_mode": false
},
"hooks": {
"context_warnings": true,
"workflow_guard": false
},
"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",
"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
}
}
```
---
## コア設定
| 設定 | 型 | 選択肢 | デフォルト | 説明 |
|------|-----|--------|-----------|------|
| `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`, `inherit` | `balanced` | 各エージェントのモデルティア([モデルプロファイル](#モデルプロファイル)を参照) |
> **注意:** `granularity` は v1.22.3 で `depth` から改名されました。既存の設定は自動的に移行されます。
---
## ワークフロートグル
すべてのワークフロートグルは **未設定 = 有効** のパターンに従います。config にキーが存在しない場合、デフォルトは `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` | plan-phase のリサーチ中にテストカバレッジマッピングを実施 |
| `workflow.ui_phase` | boolean | `true` | フロントエンドフェーズで UI デザインコントラクトを生成 |
| `workflow.ui_safety_gate` | boolean | `true` | plan-phase 中にフロントエンドフェーズに対して /gsd:ui-phase の実行を促すプロンプトを表示 |
| `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'`(デフォルト)は質問を1つずつ行います。`'assumptions'` はまずコードベースを読み取り、信頼度レベル付きの構造化された仮説を生成し、誤っている点のみ修正を求めます。v1.28 で追加 |
| `workflow.skip_discuss` | boolean | `false` | `true` の場合、`/gsd:autonomous` は discuss-phase を完全にスキップし、ROADMAP のフェーズ目標から最小限の CONTEXT.md を作成します。開発者の要望が PROJECT.md/REQUIREMENTS.md に十分に記載されているプロジェクトに適しています。v1.28 で追加 |
| `workflow.text_mode` | boolean | `false` | AskUserQuestion の TUI メニューをプレーンテキストの番号付きリストに置き換えます。TUI メニューが表示されない Claude Code リモートセッション(`/rc` モード)で必要です。discuss-phase で `--text` フラグを使用してセッションごとに設定することもできます。v1.28 で追加 |
### 推奨プリセット
| シナリオ | 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` | `.planning/` を含めるために広範な検索に `--no-ignore` を追加 |
### 自動検出
`.planning/` が `.gitignore` に含まれている場合、config.json の設定に関係なく `commit_docs` は自動的に `false` になります。これにより git エラーが防止されます。
---
## フック設定
| 設定 | 型 | デフォルト | 説明 |
|------|-----|-----------|------|
| `hooks.context_warnings` | boolean | `true` | コンテキストモニターフックによるコンテキストウィンドウ使用量の警告を表示 |
| `hooks.workflow_guard` | boolean | `false` | GSD ワークフローのコンテキスト外でファイル編集が行われた場合に警告(`/gsd:quick` または `/gsd:fast` の使用を推奨) |
プロンプトインジェクションガードフック(`gsd-prompt-guard.js`)は常に有効であり、無効にすることはできません。これはワークフロートグルではなく、セキュリティ機能です。
### プライベートプランニングのセットアップ
プランニング成果物を git から除外するには:
1. `planning.commit_docs: false` と `planning.search_gitignored: true` を設定
2. `.planning/` を `.gitignore` に追加
3. 既にトラッキング済みの場合: `git rm -r --cached .planning/ && git commit -m "chore: stop tracking planning docs"`
---
## 並列化設定
| 設定 | 型 | デフォルト | 説明 |
|------|-----|-----------|------|
| `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` | 同時実行エージェントの最大数 |
| `parallelization.min_plans_for_parallel` | number | `2` | 並列実行をトリガーする最小プラン数 |
> **pre-commit フックと並列実行について**: 並列化が有効な場合、executor エージェントはビルドロックの競合(例: Rust プロジェクトでの cargo lock の競合)を回避するために `--no-verify` でコミットします。オーケストレーターは各ウェーブの完了後にフックを1回検証します。STATE.md の書き込みはファイルレベルのロックで保護され、同時書き込みによる破損を防ぎます。コミットごとにフックを実行する必要がある場合は、`parallelization.enabled: false` に設定してください。
---
## Git ブランチ
| 設定 | 型 | デフォルト | 説明 |
|------|-----|-----------|------|
| `git.branching_strategy` | enum | `none` | `none`、`phase`、または `milestone` |
| `git.phase_branch_template` | string | `gsd/phase-{phase}-{slug}` | phase 戦略のブランチ名テンプレート |
| `git.milestone_branch_template` | string | `gsd/{milestone}-{slug}` | milestone 戦略のブランチ名テンプレート |
| `git.quick_branch_template` | string or null | `null` | `/gsd:quick` タスク用のオプションのブランチ名テンプレート |
### 戦略の比較
| 戦略 | ブランチ作成 | スコープ | マージポイント | 適したケース |
|------|------------|---------|--------------|-------------|
| `none` | なし | N/A | N/A | 個人開発、シンプルなプロジェクト |
| `phase` | `execute-phase` 開始時 | 1フェーズ | フェーズ後にユーザーがマージ | フェーズごとのコードレビュー、きめ細かいロールバック |
| `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`(quick タスク ID) |
quick タスクのブランチ設定例:
```json
"git": {
"quick_branch_template": "gsd/quick-{num}-{slug}"
}
```
### マイルストーン完了時のマージオプション
| オプション | Git コマンド | 結果 |
|-----------|-------------|------|
| スカッシュマージ(推奨) | `git merge --squash` | ブランチごとに1つのクリーンなコミット |
| 履歴付きマージ | `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` | 修正プラン作成前に課題をレビュー |
| `gates.confirm_transition` | boolean | `true` | フェーズ遷移を確認 |
---
## セーフティ設定
| 設定 | 型 | デフォルト | 説明 |
|------|-----|-----------|------|
| `safety.always_confirm_destructive` | boolean | `true` | 破壊的操作(削除、上書き)の確認 |
| `safety.always_confirm_external_services` | boolean | `true` | 外部サービスとのやり取りの確認 |
---
## フック設定
| 設定 | 型 | デフォルト | 説明 |
|------|-----|-----------|------|
| `hooks.context_warnings` | boolean | `true` | セッション中にコンテキストウィンドウの使用量警告を表示 |
---
## モデルプロファイル
### プロファイル定義
| エージェント | `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 |
### エージェントごとのオーバーライド
プロファイル全体を変更せずに特定のエージェントをオーバーライドできます:
```json
{
"model_profile": "balanced",
"model_overrides": {
"gsd-executor": "opus",
"gsd-planner": "haiku"
}
}
```
有効なオーバーライド値: `opus`、`sonnet`、`haiku`、`inherit`、または完全修飾モデル ID(例: `"openai/o3"`、`"google/gemini-2.5-pro"`)。
### 非 Claude ランタイム(Codex、OpenCode、Gemini CLI)
GSD が非 Claude ランタイム向けにインストールされると、インストーラーは自動的に `~/.gsd/defaults.json` に `resolve_model_ids: "omit"` を設定します。これにより GSD はすべてのエージェントに対して空のモデルパラメータを返し、各エージェントはランタイムで設定されたモデルを使用します。デフォルトの場合、追加のセットアップは不要です。
異なるエージェントに異なるモデルを使用させたい場合は、ランタイムが認識する完全修飾モデル 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"`(インストーラーのデフォルト) | すべてのエージェントがランタイムのデフォルトモデルを使用 |
| 非 Claude ランタイム、ティアードモデル | `resolve_model_ids: "omit"` + `model_overrides` | 指定されたエージェントは特定のモデルを使用、それ以外はランタイムのデフォルト |
| Claude Code + OpenRouter/ローカルプロバイダー | `model_profile: "inherit"` | すべてのエージェントがセッションモデルに従う |
| Claude Code + OpenRouter、ティアード | `model_profile: "inherit"` + `model_overrides` | 指定されたエージェントは特定のモデルを使用、それ以外は継承 |
**`resolve_model_ids` の値:**
| 値 | 動作 | 使用場面 |
|----|------|---------|
| `false`(デフォルト) | Claude エイリアス(`opus`、`sonnet`、`haiku`)を返す | Claude Code + ネイティブ Anthropic API |
| `true` | エイリアスを完全な Claude モデル ID(`claude-opus-4-0`)にマッピング | 完全な ID が必要な API を使用する Claude Code |
| `"omit"` | 空文字列を返す(ランタイムがデフォルトを選択) | 非 Claude ランタイム(Codex、OpenCode、Gemini CLI) |
### プロファイルの設計思想
| プロファイル | 設計思想 | 使用場面 |
|------------|---------|---------|
| `quality` | すべての意思決定に Opus、検証に Sonnet | クォータに余裕がある場合、重要なアーキテクチャ作業 |
| `balanced` | 計画のみ Opus、それ以外は Sonnet | 通常の開発(デフォルト) |
| `budget` | コード記述に Sonnet、リサーチ/検証に Haiku | 大量の作業、重要度の低いフェーズ |
| `inherit` | すべてのエージェントが現在のセッションモデルを使用 | 動的なモデル切り替え、**非 Anthropic プロバイダー**(OpenRouter、ローカルモデル) |
---
## 環境変数
| 変数 | 用途 |
|------|------|
| `CLAUDE_CONFIG_DIR` | デフォルトの設定ディレクトリ(`~/.claude/`)をオーバーライド |
| `GEMINI_API_KEY` | コンテキストモニターがフックイベント名を切り替えるために検出 |
| `WSL_DISTRO_NAME` | インストーラーが WSL のパス処理のために検出 |
---
## グローバルデフォルト
将来のプロジェクト向けにグローバルデフォルトとして設定を保存できます。
**保存場所:** `~/.gsd/defaults.json`
`/gsd:new-project` が新しい `config.json` を作成する際、グローバルデフォルトを読み込み、初期設定としてマージします。プロジェクトごとの設定は常にグローバル設定を上書きします。

1290
docs/ja-JP/FEATURES.md Normal file

File diff suppressed because it is too large Load Diff

27
docs/ja-JP/README.md Normal file
View File

@@ -0,0 +1,27 @@
# GSD ドキュメント
Get Shit Done(GSD)フレームワークの包括的なドキュメントです。GSD は、AI コーディングエージェント向けのメタプロンプティング、コンテキストエンジニアリング、仕様駆動開発システムです。
## ドキュメント一覧
| ドキュメント | 対象読者 | 説明 |
|------------|---------|------|
| [アーキテクチャ](ARCHITECTURE.md) | コントリビューター、上級ユーザー | システムアーキテクチャ、エージェントモデル、データフロー、内部設計 |
| [機能リファレンス](FEATURES.md) | 全ユーザー | 全機能の詳細ドキュメントと要件 |
| [コマンドリファレンス](COMMANDS.md) | 全ユーザー | 全コマンドの構文、フラグ、オプション、使用例 |
| [設定リファレンス](CONFIGURATION.md) | 全ユーザー | 設定スキーマ、ワークフロートグル、モデルプロファイル、Git ブランチ |
| [CLI ツールリファレンス](CLI-TOOLS.md) | コントリビューター、エージェント作成者 | `gsd-tools.cjs` のプログラマティック API(ワークフローおよびエージェント向け) |
| [エージェントリファレンス](AGENTS.md) | コントリビューター、上級ユーザー | 全15種の専門エージェント — 役割、ツール、スポーンパターン |
| [ユーザーガイド](USER-GUIDE.md) | 全ユーザー | ワークフローのウォークスルー、トラブルシューティング、リカバリー |
| [コンテキストモニター](context-monitor.md) | 全ユーザー | コンテキストウィンドウ監視フックのアーキテクチャ |
| [ディスカスモード](workflow-discuss-mode.md) | 全ユーザー | discuss フェーズにおける assumptions モードと interview モード |
## クイックリンク
- **v1.28 の新機能:** フォレンジクス、マイルストーンサマリー、ワークストリーム、assumptions モード、UI 自動検出、マネージャーダッシュボード
- **はじめに:** [README](../README.md) → インストール → `/gsd:new-project`
- **ワークフロー完全ガイド:** [ユーザーガイド](USER-GUIDE.md)
- **コマンド一覧:** [コマンドリファレンス](COMMANDS.md)
- **GSD の設定:** [設定リファレンス](CONFIGURATION.md)
- **システム内部の仕組み:** [アーキテクチャ](ARCHITECTURE.md)
- **コントリビュートや拡張:** [CLI ツールリファレンス](CLI-TOOLS.md) + [エージェントリファレンス](AGENTS.md)

842
docs/ja-JP/USER-GUIDE.md Normal file
View File

@@ -0,0 +1,842 @@
# GSD ユーザーガイド
ワークフロー、トラブルシューティング、設定の詳細なリファレンスです。クイックスタートの設定については、[README](../README.md) をご覧ください。
---
## 目次
- [ワークフロー図](#ワークフロー図)
- [UI デザインコントラクト](#ui-デザインコントラクト)
- [バックログとスレッド](#バックログとスレッド)
- [ワークストリーム](#ワークストリーム)
- [セキュリティ](#セキュリティ)
- [コマンドリファレンス](#コマンドリファレンス)
- [設定リファレンス](#設定リファレンス)
- [使用例](#使用例)
- [トラブルシューティング](#トラブルシューティング)
- [リカバリークイックリファレンス](#リカバリークイックリファレンス)
---
## ワークフロー図
### プロジェクト全体のライフサイクル
```
┌──────────────────────────────────────────────────┐
│ 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 │
└──────────────────────┘
```
### プランニングエージェントの連携
```
/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 レイヤー)
plan-phase のリサーチ時に、GSD はコードが書かれる前に各フェーズ要件に対する自動テストカバレッジをマッピングします。これにより、Claude のエグゼキューターがタスクをコミットした際に、数秒以内で検証できるフィードバックメカニズムが既に存在することが保証されます。
リサーチャーは既存のテストインフラを検出し、各要件を特定のテストコマンドにマッピングし、実装開始前に作成が必要なテストスキャフォールディングを特定します(Wave 0 タスク)。
プランチェッカーはこれを8番目の検証次元として強制します:自動検証コマンドが不足しているタスクを含むプランは承認されません。
**出力:** `{phase}-VALIDATION.md` -- フェーズのフィードバックコントラクト。
**無効化:** テストインフラが重視されないラピッドプロトタイピングフェーズでは、`/gsd:settings` で `workflow.nyquist_validation: false` を設定してください。
### 遡及バリデーション (`/gsd:validate-phase`)
Nyquist バリデーションが存在する前に実行されたフェーズ、または従来のテストスイートのみを持つ既存コードベースに対して、遡及的に監査しカバレッジのギャップを埋めます:
```
/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
```
オーディターは実装コードを変更しません — テストファイルと VALIDATION.md のみを変更します。テストが実装のバグを発見した場合、対処が必要なエスカレーションとしてフラグが立てられます。
**使用タイミング:** Nyquist が有効化される前にプランニングされたフェーズを実行した後、または `/gsd:audit-milestone` が Nyquist コンプライアンスのギャップを検出した後。
### 前提確認ディスカッションモード
デフォルトでは、`/gsd:discuss-phase` は実装の好みについてオープンエンドな質問を行います。前提確認モードではこれを反転させます:GSD がまずコードベースを読み込み、フェーズの構築方法に関する構造化された前提を提示し、修正が必要な箇所のみを確認します。
**有効化:** `/gsd:settings` で `workflow.discuss_mode` を `'assumptions'` に設定します。
**動作の仕組み:**
1. PROJECT.md、コードベースマッピング、既存の規約を読み込む
2. 前提の構造化リストを生成(技術選定、パターン、ファイル配置)
3. 前提を提示し、確認・修正・補足を求める
4. 確認された前提から CONTEXT.md を作成
**使用タイミング:**
- コードベースを熟知している経験豊富な開発者
- オープンエンドな質問が作業を遅らせる高速イテレーション
- パターンが確立されていて予測可能なプロジェクト
ディスカッションモードの完全なリファレンスは [docs/workflow-discuss-mode.md](../workflow-discuss-mode.md) をご覧ください。
---
## UI デザインコントラクト
### 背景
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:add-backlog "GraphQL API layer" # Creates 999.1-graphql-api-layer/
/gsd:add-backlog "Mobile responsive" # Creates 999.2-mobile-responsive/
```
バックログアイテムは完全なフェーズディレクトリを取得するため、`/gsd:discuss-phase 999.1` でアイデアをさらに探索したり、準備が整ったら `/gsd:plan-phase 999.1` を使用できます。
**レビューとプロモーション** は `/gsd:review-backlog` で行います — すべてのバックログアイテムを表示し、プロモーション(アクティブシーケンスへの移動)、保持(バックログに残す)、または削除を選択できます。
### シード
シードは、トリガー条件を持つ将来を見据えたアイデアです。バックログアイテムとは異なり、適切なマイルストーンが到来すると自動的に表面化されます。
```
/gsd:plant-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:add-phase`) やバックログアイテム (`/gsd:add-backlog`) にプロモーションできます。
**保存場所:** `.planning/threads/{slug}.md`
---
## ワークストリーム
ワークストリームを使うと、状態の衝突なしに複数のマイルストーン領域で並行作業できます。各ワークストリームは独立した `.planning/` 状態を持つため、切り替え時に進捗が上書きされることはありません。
**使用タイミング:** 異なる関心領域にまたがるマイルストーン機能(例:バックエンド API とフロントエンドダッシュボード)に取り組んでいて、コンテキストの混在なしに独立してプランニング・実行・ディスカッションしたい場合。
### コマンド
| コマンド | 用途 |
|---------|---------|
| `/gsd:workstreams create <name>` | 独立したプランニング状態を持つ新しいワークストリームを作成 |
| `/gsd:workstreams switch <name>` | アクティブコンテキストを別のワークストリームに切り替え |
| `/gsd:workstreams list` | すべてのワークストリームとアクティブなものを表示 |
| `/gsd:workstreams complete <name>` | ワークストリームを完了としてマークし、状態をアーカイブ |
### 動作の仕組み
各ワークストリームは独自の `.planning/` ディレクトリサブツリーを維持します。ワークストリームを切り替えると、GSD はアクティブなプランニングコンテキストを入れ替え、`/gsd:progress`、`/gsd:discuss-phase`、`/gsd:plan-phase` などのコマンドがそのワークストリームの状態に対して動作するようにします。
これは `/gsd:new-workspace`(別のリポジトリワークツリーを作成)より軽量です。ワークストリームは同じコードベースと 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` は、すべてのエージェント、ワークフロー、コマンドファイルに埋め込まれたインジェクションベクターをスキャンします。テストスイートの一部として実行されます。
---
### 実行ウェーブの調整
```
/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
│
├── 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
└──────────────────┘
```
---
## コマンドリファレンス
### コアワークフロー
| コマンド | 用途 | 使用タイミング |
|---------|---------|-------------|
| `/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 <N>` | すべてのプランを並列ウェーブで実行 | プランニング完了後 |
| `/gsd:verify-work [N]` | 自動診断付き手動 UAT | 実行完了後 |
| `/gsd:ship [N]` | 検証済みの作業から PR を作成 | 検証合格後 |
| `/gsd:fast <text>` | インラインの軽微なタスク — プランニングを完全にスキップ | タイプミス修正、設定変更、小規模リファクタリング |
| `/gsd:next` | 状態を自動検出して次のステップを実行 | いつでも — 「次に何をすべき?」 |
| `/gsd:ui-review [N]` | 遡及的6ピラービジュアル監査 | 実行後または verify-work 後(フロントエンドプロジェクト) |
| `/gsd:audit-milestone` | マイルストーンの完了定義を満たしているか検証 | マイルストーン完了前 |
| `/gsd:complete-milestone` | マイルストーンをアーカイブし、リリースタグを作成 | 全フェーズの検証完了後 |
| `/gsd:new-milestone [name]` | 次のバージョンサイクルを開始 | マイルストーン完了後 |
### ナビゲーション
| コマンド | 用途 | 使用タイミング |
|---------|---------|-------------|
| `/gsd:progress` | 状態と次のステップを表示 | いつでも -- 「今どこにいる?」 |
| `/gsd:resume-work` | 前回のセッションからフルコンテキストを復元 | 新しいセッションの開始時 |
| `/gsd:pause-work` | 構造化されたハンドオフを保存(HANDOFF.json + continue-here.md) | フェーズの途中で作業を中断する時 |
| `/gsd:session-report` | 作業内容と成果を含むセッションサマリーを生成 | セッション終了時、ステークホルダーへの共有時 |
| `/gsd:help` | すべてのコマンドを表示 | クイックリファレンス |
| `/gsd:update` | 変更履歴プレビュー付きで GSD を更新 | 新バージョンの確認時 |
| `/gsd:join-discord` | Discord コミュニティの招待リンクを開く | 質問やコミュニティ参加時 |
### フェーズ管理
| コマンド | 用途 | 使用タイミング |
|---------|---------|-------------|
| `/gsd:add-phase` | ロードマップに新しいフェーズを追加 | 初期プランニング後にスコープが拡大した場合 |
| `/gsd:insert-phase [N]` | 緊急作業を挿入(小数番号) | マイルストーン中の緊急修正 |
| `/gsd:remove-phase [N]` | 将来のフェーズを削除して番号を振り直す | 機能のスコープ縮小 |
| `/gsd:list-phase-assumptions [N]` | Claude の意図するアプローチをプレビュー | プランニング前に方向性を確認 |
| `/gsd:plan-milestone-gaps` | 監査ギャップに対するフェーズを作成 | 監査で不足項目が見つかった後 |
| `/gsd:research-phase [N]` | エコシステムの深いリサーチのみ | 複雑または不慣れなドメイン |
### ブラウンフィールドとユーティリティ
| コマンド | 用途 | 使用タイミング |
|---------|---------|-------------|
| `/gsd:map-codebase` | 既存コードベースを分析 | 既存コードに対する `/gsd:new-project` の前 |
| `/gsd:quick` | GSD 保証付きのアドホックタスク | バグ修正、小機能、設定変更 |
| `/gsd:debug [desc]` | 永続状態を持つ体系的デバッグ | 何かが壊れた時 |
| `/gsd:forensics` | ワークフロー障害の診断レポート | 状態、アーティファクト、git 履歴が破損していると思われる場合 |
| `/gsd:add-todo [desc]` | 後でやるアイデアを記録 | セッション中にアイデアが浮かんだ時 |
| `/gsd:check-todos` | 保留中の TODO を一覧表示 | 記録したアイデアのレビュー |
| `/gsd:settings` | ワークフロートグルとモデルプロファイルを設定 | モデル変更、エージェントのトグル |
| `/gsd:set-profile <profile>` | クイックプロファイル切り替え | コスト/品質トレードオフの変更 |
| `/gsd:reapply-patches` | アップデート後にローカル変更を復元 | ローカル編集がある場合の `/gsd:update` 後 |
### コード品質とレビュー
| コマンド | 用途 | 使用タイミング |
|---------|---------|-------------|
| `/gsd:review --phase N` | 外部 CLI からのクロス AI ピアレビュー | 実行前にプランを検証 |
| `/gsd:pr-branch` | `.planning/` コミットをフィルタリングしたクリーンな PR ブランチ | プランニングフリーの diff で PR を作成する前 |
| `/gsd:audit-uat` | 全フェーズの検証負債を監査 | マイルストーン完了前 |
### バックログとスレッド
| コマンド | 用途 | 使用タイミング |
|---------|---------|-------------|
| `/gsd:add-backlog <desc>` | バックログパーキングロットにアイデアを追加(999.x) | アクティブなプランニングの準備ができていないアイデア |
| `/gsd:review-backlog` | バックログアイテムのプロモーション/保持/削除 | 新マイルストーン前の優先順位付け |
| `/gsd:plant-seed <idea>` | トリガー条件付きの将来を見据えたアイデア | 将来のマイルストーンで表面化すべきアイデア |
| `/gsd:thread [name]` | 永続コンテキストスレッド | フェーズ構造外のクロスセッション作業 |
---
## 設定リファレンス
GSD はプロジェクト設定を `.planning/config.json` に保存します。`/gsd:new-project` 時に設定するか、後から `/gsd:settings` で更新できます。
### 完全な config.json スキーマ
```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
}
}
```
### コア設定
| 設定 | オプション | デフォルト | 制御内容 |
|---------|---------|---------|------------------|
| `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 の `/model`)や、Claude Code を非 Anthropic プロバイダー(OpenRouter、ローカルモデル)で使用する場合に最適で、予期しない API コストを回避できます。非 Claude ランタイム(Codex、OpenCode、Gemini CLI)では、インストーラーが自動的に `resolve_model_ids: "omit"` を設定します -- [非 Claude ランタイムの使用](#非-claude-ランタイムの使用codexopencodegemini-cli)を参照。
---
## 使用例
### 新規プロジェクト(フルサイクル)
```bash
claude --dangerously-skip-permissions
/gsd:new-project # 質問に回答、設定、ロードマップを承認
/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 # ビジュアル監査(フロントエンドフェーズ)
/clear
/gsd:next # 自動検出して次のステップを実行
...
/gsd:audit-milestone # すべて出荷されたか確認
/gsd:complete-milestone # アーカイブ、タグ付け、完了
/gsd:session-report # セッションサマリーを生成
```
### 既存ドキュメントからの新規プロジェクト
```bash
/gsd:new-project --auto @prd.md # ドキュメントからリサーチ/要件/ロードマップを自動実行
/clear
/gsd:discuss-phase 1 # ここから通常のフロー
```
### 既存コードベース
```bash
/gsd:map-codebase # 既存のコードを分析(並列エージェント)
/gsd:new-project # 追加する内容に焦点を当てた質問
# (ここから通常のフェーズワークフロー)
```
### クイックバグ修正
```bash
/gsd:quick
> "Fix the login button not responding on mobile Safari"
```
### 休憩後の再開
```bash
/gsd:progress # 前回の続きと次のステップを確認
# または
/gsd:resume-work # 前回のセッションからフルコンテキストを復元
```
### リリース準備
```bash
/gsd:audit-milestone # 要件カバレッジを確認、スタブを検出
/gsd:plan-milestone-gaps # 監査でギャップが見つかった場合、フェーズを作成して埋める
/gsd:complete-milestone # アーカイブ、タグ付け、完了
```
### スピード vs 品質プリセット
| シナリオ | モード | 粒度 | プロファイル | リサーチ | プランチェック | ベリファイア |
|----------|------|-------|---------|----------|------------|----------|
| プロトタイピング | `yolo` | `coarse` | `budget` | オフ | オフ | オフ |
| 通常開発 | `interactive` | `standard` | `balanced` | オン | オン | オン |
| プロダクション | `interactive` | `fine` | `quality` | オン | オン | オン |
**自律モードでの discuss-phase スキップ:** `yolo` モードで実行中に、PROJECT.md に既に十分な設定が記録されている場合は、`/gsd:settings` で `workflow.skip_discuss: true` を設定してください。これにより discuss-phase を完全にバイパスし、ROADMAP のフェーズ目標から最小限の CONTEXT.md を作成します。PROJECT.md と規約がディスカッションで新しい情報を追加しないほど包括的な場合に有用です。
### マイルストーン中のスコープ変更
```bash
/gsd:add-phase # ロードマップに新しいフェーズを追加
# または
/gsd:insert-phase 3 # フェーズ 3 と 4 の間に緊急作業を挿入
# または
/gsd:remove-phase 7 # フェーズ 7 をスコープ外にして番号を振り直す
```
### マルチプロジェクトワークスペース
独立した GSD 状態を持つ複数のリポジトリや機能で並行作業できます。
```bash
# モノレポからリポジトリを含むワークスペースを作成
/gsd:new-workspace --name feature-b --repos hr-ui,ZeymoAPI
# フィーチャーブランチの分離 — 独自の .planning/ を持つ現在のリポジトリのワークツリー
/gsd:new-workspace --name feature-b --repos .
# ワークスペースに移動して GSD を初期化
cd ~/gsd-workspaces/feature-b
/gsd:new-project
# ワークスペースの一覧と管理
/gsd:list-workspaces
/gsd:remove-workspace feature-b
```
各ワークスペースには以下が含まれます:
- 独自の `.planning/` ディレクトリ(ソースリポジトリから完全に独立)
- 指定されたリポジトリの Git ワークツリー(デフォルト)またはクローン
- メンバーリポジトリを追跡する `WORKSPACE.md` マニフェスト
---
## トラブルシューティング
### 「Project already initialized」
`/gsd:new-project` を実行したが、`.planning/PROJECT.md` が既に存在しています。これは安全チェックです。やり直したい場合は、まず `.planning/` ディレクトリを削除してください。
### 長時間セッションでのコンテキスト劣化
主要なコマンド間でコンテキストウィンドウをクリアしてください:Claude Code では `/clear` を使用します。GSD はフレッシュなコンテキストを前提に設計されています — すべてのサブエージェントはクリーンな 200K ウィンドウを取得します。メインセッションで品質が低下している場合は、クリアして `/gsd:resume-work` または `/gsd:progress` で状態を復元してください。
### プランが誤っている、または方向性がずれている
プランニング前に `/gsd:discuss-phase [N]` を実行してください。プランの品質問題のほとんどは、CONTEXT.md があれば防げたはずの前提を Claude が置いてしまうことに起因します。`/gsd:list-phase-assumptions [N]` を使用して、プランにコミットする前に Claude の意図を確認することもできます。
### 実行が失敗する、またはスタブが生成される
プランが野心的すぎなかったか確認してください。プランは最大2-3タスクにすべきです。タスクが大きすぎると、単一のコンテキストウィンドウで確実に生成できる範囲を超えてしまいます。より小さなスコープで再プランニングしてください。
### 現在地がわからなくなった
`/gsd:progress` を実行してください。すべての状態ファイルを読み込み、現在地と次にやるべきことを正確に教えてくれます。
### 実行後に変更が必要
`/gsd:execute-phase` を再実行しないでください。ターゲットを絞った修正には `/gsd:quick` を使用するか、`/gsd:verify-work` で体系的に問題を特定し UAT を通じて修正してください。
### モデルのコストが高すぎる
budget プロファイルに切り替えてください:`/gsd:set-profile budget`。ドメインに慣れている場合(またはClaude が慣れている場合)は、`/gsd:settings` でリサーチエージェントと plan-check エージェントを無効にしてください。
### 非 Claude ランタイムの使用(Codex、OpenCode、Gemini CLI)
非 Claude ランタイム用に GSD をインストールした場合、インストーラーがモデル解決を設定済みのため、すべてのエージェントがランタイムのデフォルトモデルを使用します。手動設定は不要です。具体的には、インストーラーが設定に `resolve_model_ids: "omit"` を設定し、GSD に Anthropic モデル ID の解決をスキップしてランタイム独自のデフォルトモデルを使用するよう指示します。
非 Claude ランタイムで異なるエージェントに異なるモデルを割り当てるには、ランタイムが認識する完全修飾モデル ID を使用して `.planning/config.json` に `model_overrides` を追加します:
```json
{
"resolve_model_ids": "omit",
"model_overrides": {
"gsd-planner": "o3",
"gsd-executor": "o4-mini",
"gsd-debugger": "o3"
}
}
```
インストーラーは Gemini CLI、OpenCode、Codex 用に `resolve_model_ids: "omit"` を自動設定します。非 Claude ランタイムを手動で設定する場合は、`.planning/config.json` に自分で追加してください。
完全な説明は[設定リファレンス](../CONFIGURATION.md#non-claude-runtimes-codex-opencode-gemini-cli)をご覧ください。
### 非 Anthropic プロバイダーでの Claude Code の使用(OpenRouter、ローカル)
GSD サブエージェントが Anthropic モデルを呼び出し、OpenRouter やローカルプロバイダーを通じて支払っている場合は、`inherit` プロファイルに切り替えてください:`/gsd:set-profile inherit`。これにより、すべてのエージェントが特定の Anthropic モデルの代わりに現在のセッションモデルを使用します。`/gsd:settings` → モデルプロファイル → Inherit も参照してください。
### 機密/プライベートプロジェクトでの作業
`/gsd:new-project` 時または `/gsd:settings` で `commit_docs: false` を設定してください。`.planning/` を `.gitignore` に追加してください。プランニングアーティファクトはローカルに保持され、git に含まれません。
### GSD アップデートがローカル変更を上書きした
v1.17 以降、インストーラーはローカルで変更されたファイルを `gsd-local-patches/` にバックアップします。`/gsd:reapply-patches` を実行して変更をマージし直してください。
### ワークフロー診断 (`/gsd:forensics`)
ワークフローが明確でない形で失敗した場合 -- プランが存在しないファイルを参照する、実行が予期しない結果を生成する、状態が破損しているように見える -- `/gsd:forensics` を実行して診断レポートを生成してください。
**チェック内容:**
- Git 履歴の異常(孤立コミット、予期しないブランチ状態、rebase アーティファクト)
- アーティファクトの整合性(欠落または不正なプランニングファイル、壊れた相互参照)
- 状態の不整合(ROADMAP のステータスと実際のファイル存在の不一致、設定のドリフト)
**出力:** `.planning/forensics/` に書き出される診断レポート。検出事項と推奨される修復手順が含まれます。
### サブエージェントが失敗したように見えるが作業は完了している
Claude Code の分類バグに対する既知の回避策があります。GSD のオーケストレーター(execute-phase、quick)は、失敗を報告する前に実際の出力をスポットチェックします。失敗メッセージが表示されてもコミットが作成されている場合は、`git log` を確認してください -- 作業は成功している可能性があります。
### 並列実行によるビルドロックエラー
並列ウェーブ実行中に pre-commit フックの失敗、cargo ロックの競合、30分以上の実行時間が発生した場合、これは複数のエージェントが同時にビルドツールをトリガーすることが原因です。GSD は v1.26 以降これを自動的に処理します — 並列エージェントはコミット時に `--no-verify` を使用し、オーケストレーターが各ウェーブ後にフックを1回実行します。古いバージョンを使用している場合は、プロジェクトの `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:resume-work` または `/gsd:progress` |
| フェーズが失敗した | フェーズのコミットを `git revert` して再プランニング |
| スコープ変更が必要 | `/gsd:add-phase`、`/gsd:insert-phase`、または `/gsd:remove-phase` |
| マイルストーン監査でギャップを発見 | `/gsd:plan-milestone-gaps` |
| 何かが壊れた | `/gsd:debug "description"` |
| ワークフロー状態が破損している可能性 | `/gsd:forensics` |
| ターゲットを絞った修正 | `/gsd:quick` |
| プランがビジョンに合わない | `/gsd:discuss-phase [N]` で再プランニング |
| コストが高い | `/gsd:set-profile budget` と `/gsd:settings` でエージェントをオフ |
| アップデートがローカル変更を壊した | `/gsd:reapply-patches` |
| ステークホルダー向けセッションサマリーが欲しい | `/gsd:session-report` |
| 次のステップがわからない | `/gsd:next` |
| 並列実行でビルドエラー | GSD を更新するか `parallelization.enabled: false` を設定 |
---
## プロジェクトファイル構造
参考として、GSD がプロジェクトに作成するファイル構造を示します:
```
.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:session-report から)
todos/
pending/ # 作業待ちのキャプチャされたアイデア
done/ # 完了した TODO
debug/ # アクティブなデバッグセッション
resolved/ # アーカイブされたデバッグセッション
codebase/ # ブラウンフィールドコードベースマッピング(/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 対象)
```

View File

@@ -0,0 +1,115 @@
# コンテキストウィンドウモニター
ツール使用後に実行されるフック(Claude Code では `PostToolUse`、Gemini CLI では `AfterTool`)で、コンテキストウィンドウの使用量が高くなった際にエージェントに警告します。
## 課題
ステータスラインはコンテキスト使用量を**ユーザー**に表示しますが、**エージェント**自身はコンテキストの制限を認識していません。コンテキストが不足すると、エージェントは限界に達するまで作業を続行し、タスクの途中で状態を保存できないまま停止する可能性があります。
## 仕組み
1. ステータスラインフックがコンテキストメトリクスを `/tmp/claude-ctx-{session_id}.json` に書き込む
2. 各ツール使用後、コンテキストモニターがこのメトリクスを読み取る
3. 残りコンテキストがしきい値を下回ると、`additionalContext` として警告を注入する
4. エージェントが会話内で警告を受け取り、適切に対応できる
## しきい値
| レベル | 残量 | エージェントの動作 |
|--------|------|------------------|
| Normal | > 35% | 警告なし |
| WARNING | <= 35% | 現在のタスクをまとめ、新しい複雑な作業の開始を避ける |
| CRITICAL | <= 25% | 即座に停止し、状態を保存する(`/gsd:pause-work`) |
## デバウンス
エージェントへの繰り返し警告を防ぐため:
- 最初の警告は即座に発火
- 以降の警告は間に5回のツール使用が必要
- 深刻度のエスカレーション(WARNING -> CRITICAL)はデバウンスをバイパス
## アーキテクチャ
```
ステータスラインフック (gsd-statusline.js)
| 書き込み
v
/tmp/claude-ctx-{session_id}.json
^ 読み取り
|
コンテキストモニター (gsd-context-monitor.js, PostToolUse/AfterTool)
| 注入
v
additionalContext -> エージェントが警告を確認
```
ブリッジファイルはシンプルな JSON オブジェクトです:
```json
{
"session_id": "abc123",
"remaining_percentage": 28.5,
"used_pct": 71,
"timestamp": 1708200000
}
```
## GSD との統合
GSD の `/gsd:pause-work` コマンドは実行状態を保存します。WARNING メッセージはこのコマンドの使用を提案し、CRITICAL メッセージは即座の状態保存を指示します。
## セットアップ
両フックは `npx get-shit-done-cc` のインストール時に自動的に登録されます:
- **ステータスライン**(ブリッジファイルの書き込み): 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"
}
]
}
]
}
}
```
## 安全性
- フックは全体を try/catch で囲み、エラー時はサイレントに終了
- ツール実行をブロックしない — モニターの故障がエージェントのワークフローを壊してはならない
- 古いメトリクス(60秒以上前)は無視
- ブリッジファイルが存在しない場合も正常に処理(サブエージェント、新規セッション)

View File

@@ -0,0 +1,699 @@
# 初期化時に new-project の設定を完全展開する
> **エージェント型ワーカー向け:** 必須サブスキル: superpowers:subagent-driven-development(推奨)または superpowers:executing-plans を使用して、このプランをタスクごとに実装してください。各ステップはチェックボックス(`- [ ]`)構文で進捗を追跡します。
**目標:** `/gsd:new-project` が `.planning/config.json` を作成する際、ユーザーが選択した6つのキーだけでなく、すべての有効なデフォルト値を含むファイルを生成する。これにより、開発者はソースコードを読まなくてもすべての設定を確認できるようになる。
**アーキテクチャ:** `config.cjs` に単一の JS 関数 `buildNewProjectConfig(cwd, userChoices)` を追加し、新規プロジェクトの完全な設定の唯一の信頼できる情報源とする。これを CLI コマンド `config-new-project` として公開する。`new-project.md` ワークフローを更新し、部分的な JSON をインラインで書き込む代わりにこのコマンドを呼び出すようにする。
**技術スタック:** Node.js/CommonJS、既存の gsd-tools CLI、テストには `node:test` を使用。
---
## 背景: 現在の状態
`new-project.md` のステップ 5 では、以下の部分的な設定を書き込む(AI がテンプレートを埋める):
```json
{
"mode": "...", "granularity": "...", "parallelization": "...",
"commit_docs": "...", "model_profile": "...",
"workflow": { "research", "plan_check", "verifier", "nyquist_validation" }
}
```
欠落しているキーは実行時に `loadConfig()` が暗黙的に解決する:
- `search_gitignored: false`
- `brave_search: false`(または環境検出による `true`)
- `git.branching_strategy: "none"`
- `git.phase_branch_template: "gsd/phase-{phase}-{slug}"`
- `git.milestone_branch_template: "gsd/{milestone}-{slug}"`
最初から存在すべき完全な設定:
```json
{
"mode": "yolo|interactive",
"granularity": "coarse|standard|fine",
"model_profile": "balanced",
"commit_docs": true,
"parallelization": true,
"search_gitignored": false,
"brave_search": false,
"git": {
"branching_strategy": "none",
"phase_branch_template": "gsd/phase-{phase}-{slug}",
"milestone_branch_template": "gsd/{milestone}-{slug}"
},
"workflow": {
"research": true,
"plan_check": true,
"verifier": true,
"nyquist_validation": true
}
}
```
---
## ファイルマップ
| ファイル | 操作 | 目的 |
|------|--------|---------|
| `get-shit-done/bin/lib/config.cjs` | 変更 | `buildNewProjectConfig()` + `cmdConfigNewProject()` を追加 |
| `get-shit-done/bin/gsd-tools.cjs` | 変更 | `config-new-project` の case を登録 + usage 文字列を更新 |
| `get-shit-done/workflows/new-project.md` | 変更 | ステップ 2a + 5: インライン JSON 書き込みを CLI 呼び出しに置換 |
| `tests/config.test.cjs` | 変更 | `config-new-project` テストスイートを追加 |
---
## タスク 1: `buildNewProjectConfig` と `cmdConfigNewProject` を config.cjs に追加
**ファイル:**
- 変更: `get-shit-done/bin/lib/config.cjs`
- [ ] **ステップ 1.1: まず失敗するテストを書く**
`tests/config.test.cjs` に追加する(`config-get` スイートの後、`module.exports` の前):
```js
// ─── config-new-project ──────────────────────────────────────────────────────
describe('config-new-project command', () => {
let tmpDir;
beforeEach(() => {
tmpDir = createTempProject();
});
afterEach(() => {
cleanup(tmpDir);
});
test('creates full config with all expected top-level and nested keys', () => {
const choices = JSON.stringify({
mode: 'interactive',
granularity: 'standard',
parallelization: true,
commit_docs: true,
model_profile: 'balanced',
workflow: { research: true, plan_check: true, verifier: true, nyquist_validation: true },
});
const result = runGsdTools(['config-new-project', choices], tmpDir);
assert.ok(result.success, `Command failed: ${result.error}`);
const config = readConfig(tmpDir);
// ユーザーの選択が反映されている
assert.strictEqual(config.mode, 'interactive');
assert.strictEqual(config.granularity, 'standard');
assert.strictEqual(config.parallelization, true);
assert.strictEqual(config.commit_docs, true);
assert.strictEqual(config.model_profile, 'balanced');
// デフォルト値が展開されている
assert.strictEqual(typeof config.search_gitignored, 'boolean');
assert.strictEqual(typeof config.brave_search, 'boolean');
// git セクションが3つのキーすべてを持つ
assert.ok(config.git && typeof config.git === 'object', 'git section should exist');
assert.strictEqual(config.git.branching_strategy, 'none');
assert.strictEqual(config.git.phase_branch_template, 'gsd/phase-{phase}-{slug}');
assert.strictEqual(config.git.milestone_branch_template, 'gsd/{milestone}-{slug}');
// workflow セクションが4つのキーすべてを持つ
assert.ok(config.workflow && typeof config.workflow === 'object', 'workflow section should exist');
assert.strictEqual(config.workflow.research, true);
assert.strictEqual(config.workflow.plan_check, true);
assert.strictEqual(config.workflow.verifier, true);
assert.strictEqual(config.workflow.nyquist_validation, true);
});
test('user choices override defaults', () => {
const choices = JSON.stringify({
mode: 'yolo',
granularity: 'coarse',
parallelization: false,
commit_docs: false,
model_profile: 'quality',
workflow: { research: false, plan_check: false, verifier: true, nyquist_validation: false },
});
const result = runGsdTools(['config-new-project', choices], tmpDir);
assert.ok(result.success, `Command failed: ${result.error}`);
const config = readConfig(tmpDir);
assert.strictEqual(config.mode, 'yolo');
assert.strictEqual(config.granularity, 'coarse');
assert.strictEqual(config.parallelization, false);
assert.strictEqual(config.commit_docs, false);
assert.strictEqual(config.model_profile, 'quality');
assert.strictEqual(config.workflow.research, false);
assert.strictEqual(config.workflow.plan_check, false);
assert.strictEqual(config.workflow.verifier, true);
assert.strictEqual(config.workflow.nyquist_validation, false);
// 未選択のキーにもデフォルト値が設定されている
assert.strictEqual(config.git.branching_strategy, 'none');
assert.strictEqual(typeof config.search_gitignored, 'boolean');
});
test('works with empty choices — all defaults materialized', () => {
const result = runGsdTools(['config-new-project', '{}'], tmpDir);
assert.ok(result.success, `Command failed: ${result.error}`);
const config = readConfig(tmpDir);
assert.strictEqual(config.model_profile, 'balanced');
assert.strictEqual(config.commit_docs, true);
assert.strictEqual(config.parallelization, true);
assert.strictEqual(config.search_gitignored, false);
assert.ok(config.git && typeof config.git === 'object');
assert.strictEqual(config.git.branching_strategy, 'none');
assert.ok(config.workflow && typeof config.workflow === 'object');
assert.strictEqual(config.workflow.nyquist_validation, true);
});
test('is idempotent — returns already_exists if config exists', () => {
// 1回目の呼び出し: 作成
const choices = JSON.stringify({ mode: 'yolo', granularity: 'fine' });
const first = runGsdTools(['config-new-project', choices], tmpDir);
assert.ok(first.success, `First call failed: ${first.error}`);
const firstOut = JSON.parse(first.output);
assert.strictEqual(firstOut.created, true);
// 2回目の呼び出し: 冪等性の確認
const second = runGsdTools(['config-new-project', choices], tmpDir);
assert.ok(second.success, `Second call failed: ${second.error}`);
const secondOut = JSON.parse(second.output);
assert.strictEqual(secondOut.created, false);
assert.strictEqual(secondOut.reason, 'already_exists');
// 設定が変更されていない
const config = readConfig(tmpDir);
assert.strictEqual(config.mode, 'yolo');
assert.strictEqual(config.granularity, 'fine');
});
test('auto_advance in workflow choices is preserved', () => {
const choices = JSON.stringify({
mode: 'yolo',
granularity: 'standard',
workflow: { research: true, plan_check: true, verifier: true, nyquist_validation: true, auto_advance: true },
});
const result = runGsdTools(['config-new-project', choices], tmpDir);
assert.ok(result.success, `Command failed: ${result.error}`);
const config = readConfig(tmpDir);
assert.strictEqual(config.workflow.auto_advance, true);
});
test('rejects invalid JSON choices', () => {
const result = runGsdTools(['config-new-project', '{not-json}'], tmpDir);
assert.strictEqual(result.success, false);
assert.ok(result.error.includes('Invalid JSON'), `Expected "Invalid JSON" in: ${result.error}`);
});
test('output JSON has created:true on success', () => {
const choices = JSON.stringify({ mode: 'interactive', granularity: 'standard' });
const result = runGsdTools(['config-new-project', choices], tmpDir);
assert.ok(result.success, `Command failed: ${result.error}`);
const out = JSON.parse(result.output);
assert.strictEqual(out.created, true);
assert.strictEqual(out.path, '.planning/config.json');
});
});
```
- [ ] **ステップ 1.2: 失敗するテストを実行して失敗を確認する**
```bash
cd /Users/diego/Dev/get-shit-done
node --test tests/config.test.cjs 2>&1 | grep -E "config-new-project|FAIL|Error"
```
期待結果: すべての `config-new-project` テストが "config-new-project is not a valid command" などのエラーで失敗する。
- [ ] **ステップ 1.3: config.cjs に `buildNewProjectConfig` と `cmdConfigNewProject` を実装する**
`get-shit-done/bin/lib/config.cjs` の `validateKnownConfigKeyPath` 関数の後(35行目付近)、`ensureConfigFile` の前に以下を追加する:
```js
/**
* 新規プロジェクト用の完全展開された設定を構築する。
*
* 以下の優先順位(昇順)でマージする:
* 1. ハードコードされたデフォルト値
* 2. ~/.gsd/defaults.json のユーザーレベルデフォルト(存在する場合)
* 3. userChoices(new-project 時にユーザーが明示的に選択した設定)
*
* プレーンオブジェクトを返す — ファイルの書き込みは行わない。
*/
function buildNewProjectConfig(cwd, userChoices) {
const choices = userChoices || {};
const homedir = require('os').homedir();
// Brave Search API キーの利用可能性を検出
const braveKeyFile = path.join(homedir, '.gsd', 'brave_api_key');
const hasBraveSearch = !!(process.env.BRAVE_API_KEY || fs.existsSync(braveKeyFile));
// ~/.gsd/defaults.json からユーザーレベルのデフォルトを読み込む(存在する場合)
const globalDefaultsPath = path.join(homedir, '.gsd', 'defaults.json');
let userDefaults = {};
try {
if (fs.existsSync(globalDefaultsPath)) {
userDefaults = JSON.parse(fs.readFileSync(globalDefaultsPath, 'utf-8'));
// 非推奨の "depth" キーを "granularity" に移行
if ('depth' in userDefaults && !('granularity' in userDefaults)) {
const depthToGranularity = { quick: 'coarse', standard: 'standard', comprehensive: 'fine' };
userDefaults.granularity = depthToGranularity[userDefaults.depth] || userDefaults.depth;
delete userDefaults.depth;
try {
fs.writeFileSync(globalDefaultsPath, JSON.stringify(userDefaults, null, 2), 'utf-8');
} catch {}
}
}
} catch {
// 不正なグローバルデフォルトは無視
}
const hardcoded = {
model_profile: 'balanced',
commit_docs: true,
parallelization: true,
search_gitignored: false,
brave_search: hasBraveSearch,
git: {
branching_strategy: 'none',
phase_branch_template: 'gsd/phase-{phase}-{slug}',
milestone_branch_template: 'gsd/{milestone}-{slug}',
},
workflow: {
research: true,
plan_check: true,
verifier: true,
nyquist_validation: true,
},
};
// 3段階マージ: hardcoded <- userDefaults <- choices
return {
...hardcoded,
...userDefaults,
...choices,
git: {
...hardcoded.git,
...(userDefaults.git || {}),
...(choices.git || {}),
},
workflow: {
...hardcoded.workflow,
...(userDefaults.workflow || {}),
...(choices.workflow || {}),
},
};
}
/**
* コマンド: 新規プロジェクト用の完全展開された .planning/config.json を作成する。
*
* ユーザーが選択した設定を JSON 文字列として受け取る(/gsd:new-project 時に
* ユーザーが明示的に設定したキー)。残りのキーはハードコードされたデフォルトと
* オプションの ~/.gsd/defaults.json から補完される。
*
* 冪等: config.json が既に存在する場合は { created: false } を返す。
*/
function cmdConfigNewProject(cwd, choicesJson, raw) {
const configPath = path.join(cwd, '.planning', 'config.json');
const planningDir = path.join(cwd, '.planning');
// 冪等: 既存の設定を上書きしない
if (fs.existsSync(configPath)) {
output({ created: false, reason: 'already_exists' }, raw, 'exists');
return;
}
// ユーザーの選択をパース
let userChoices = {};
if (choicesJson && choicesJson.trim() !== '') {
try {
userChoices = JSON.parse(choicesJson);
} catch (err) {
error('Invalid JSON for config-new-project: ' + err.message);
}
}
// .planning ディレクトリが存在することを確認
try {
if (!fs.existsSync(planningDir)) {
fs.mkdirSync(planningDir, { recursive: true });
}
} catch (err) {
error('Failed to create .planning directory: ' + err.message);
}
const config = buildNewProjectConfig(cwd, userChoices);
try {
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
output({ created: true, path: '.planning/config.json' }, raw, 'created');
} catch (err) {
error('Failed to write config.json: ' + err.message);
}
}
```
また、`config.cjs` の末尾にある `module.exports` に `cmdConfigNewProject` を追加する。
- [ ] **ステップ 1.4: テストを実行してパスすることを確認する**
```bash
cd /Users/diego/Dev/get-shit-done
node --test tests/config.test.cjs 2>&1 | tail -20
```
期待結果: すべての `config-new-project` テストがパスする。既存テストも引き続きパスする。
- [ ] **ステップ 1.5: コミット**
```bash
cd /Users/diego/Dev/get-shit-done
git add get-shit-done/bin/lib/config.cjs tests/config.test.cjs
git commit -m "feat: add config-new-project command for full config materialization"
```
---
## タスク 2: gsd-tools.cjs に `config-new-project` を登録する
**ファイル:**
- 変更: `get-shit-done/bin/gsd-tools.cjs`
- [ ] **ステップ 2.1: gsd-tools.cjs の switch 文に case を追加する**
`config-get` の case の後(401行目付近)に以下を追加する:
```js
case 'config-new-project': {
config.cmdConfigNewProject(cwd, args[1], raw);
break;
}
```
また、178行目の usage 文字列を更新して `config-new-project` を含める:
変更前: `...config-ensure-section, init`
変更後: `...config-ensure-section, config-new-project, init`
- [ ] **ステップ 2.2: CLI 登録のスモークテスト**
```bash
cd /Users/diego/Dev/get-shit-done
node get-shit-done/bin/gsd-tools.cjs config-new-project '{"mode":"interactive","granularity":"standard"}' --cwd /tmp/gsd-smoke-$(date +%s)
```
期待結果: `{"created":true,"path":".planning/config.json"}` (または類似の出力)が表示される。
クリーンアップ: `rm -rf /tmp/gsd-smoke-*`
- [ ] **ステップ 2.3: フルテストスイートを実行する**
```bash
cd /Users/diego/Dev/get-shit-done
node --test tests/config.test.cjs 2>&1 | tail -10
```
期待結果: すべてパスする。
- [ ] **ステップ 2.4: コミット**
```bash
cd /Users/diego/Dev/get-shit-done
git add get-shit-done/bin/gsd-tools.cjs
git commit -m "feat: register config-new-project in gsd-tools CLI router"
```
---
## タスク 3: new-project.md ワークフローを config-new-project を使うように更新する
**ファイル:**
- 変更: `get-shit-done/workflows/new-project.md`
これが中心となる変更。2箇所を更新する必要がある:
- **ステップ 2a**(自動モードでの設定作成、168〜195行目付近)
- **ステップ 5**(対話モードでの設定作成、470〜498行目付近)
- [ ] **ステップ 3.1: ステップ 2a(自動モード)を更新する**
ステップ 2a で config.json を作成しているブロックを探す:
```markdown
Create `.planning/config.json` with mode set to "yolo":
```json
{
"mode": "yolo",
"granularity": "[selected]",
...
}
```
```
インライン JSON 書き込みの指示を以下に置き換える:
```markdown
Create `.planning/config.json` using the CLI (fills in all defaults automatically):
```bash
mkdir -p .planning
node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" config-new-project "$(cat <<'CHOICES'
{
"mode": "yolo",
"granularity": "[selected: coarse|standard|fine]",
"parallelization": [true|false],
"commit_docs": [true|false],
"model_profile": "[selected: quality|balanced|budget|inherit]",
"workflow": {
"research": [true|false],
"plan_check": [true|false],
"verifier": [true|false],
"nyquist_validation": [true|false],
"auto_advance": true
}
}
CHOICES
)"
```
このコマンドはユーザーの選択をすべてのランタイムデフォルト(`search_gitignored`、`brave_search`、`git` セクション)とマージし、完全に展開された設定を生成する。
```
- [ ] **ステップ 3.2: ステップ 5(対話モード)を更新する**
ステップ 5 で config.json を作成しているブロックを探す:
```markdown
Create `.planning/config.json` with all settings:
```json
{
"mode": "yolo|interactive",
...
}
```
```
以下に置き換える:
```markdown
Create `.planning/config.json` using the CLI (fills in all defaults automatically):
```bash
mkdir -p .planning
node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" config-new-project "$(cat <<'CHOICES'
{
"mode": "[selected: yolo|interactive]",
"granularity": "[selected: coarse|standard|fine]",
"parallelization": [true|false],
"commit_docs": [true|false],
"model_profile": "[selected: quality|balanced|budget|inherit]",
"workflow": {
"research": [true|false],
"plan_check": [true|false],
"verifier": [true|false],
"nyquist_validation": [true|false]
}
}
CHOICES
)"
```
このコマンドはユーザーの選択をすべてのランタイムデフォルト(`search_gitignored`、`brave_search`、`git` セクション)とマージし、完全に展開された設定を生成する。
```
- [ ] **ステップ 3.3: ワークフローファイルが正しく読めることを確認する**
```bash
cd /Users/diego/Dev/get-shit-done
grep -n "config-new-project\|config\.json\|CHOICES" get-shit-done/workflows/new-project.md
```
期待結果: `config-new-project` が2箇所(各ステップに1つ)で出現し、設定作成用のインライン JSON テンプレートがなくなっている。
- [ ] **ステップ 3.4: コミット**
```bash
cd /Users/diego/Dev/get-shit-done
git add get-shit-done/workflows/new-project.md
git commit -m "feat: use config-new-project in new-project workflow for full config materialization"
```
---
## タスク 4: 検証
- [ ] **ステップ 4.1: フルテストスイートを実行する**
```bash
cd /Users/diego/Dev/get-shit-done
node --test tests/ 2>&1 | tail -30
```
期待結果: すべてのテストがパスする(リグレッションなし)。
- [ ] **ステップ 4.2: 手動のエンドツーエンド検証**
`new-project.md` が新規プロジェクトに対して行う処理をシミュレートする:
```bash
# 新しいプロジェクトディレクトリを作成
TMP=$(mktemp -d)
cd "$TMP"
# ステップ 1 のシミュレーション: init new-project の実行結果
node /Users/diego/Dev/get-shit-done/get-shit-done/bin/gsd-tools.cjs init new-project --cwd "$TMP"
# ステップ 5 のシミュレーション: 完全な設定を作成
node /Users/diego/Dev/get-shit-done/get-shit-done/bin/gsd-tools.cjs config-new-project '{
"mode": "interactive",
"granularity": "standard",
"parallelization": true,
"commit_docs": true,
"model_profile": "balanced",
"workflow": {
"research": true,
"plan_check": true,
"verifier": true,
"nyquist_validation": true
}
}' --cwd "$TMP"
# ファイルに期待される12個のキーがすべて含まれていることを確認
echo "=== Generated config.json ==="
cat "$TMP/.planning/config.json"
# クリーンアップ
rm -rf "$TMP"
```
期待される出力: `mode`、`granularity`、`model_profile`、`commit_docs`、`parallelization`、`search_gitignored`、`brave_search`、`git`(サブキー3つ)、`workflow`(サブキー4つ)を含む config.json — トップレベルキーは合計12個(`git` と `workflow` を単一キーとして数える場合は10個)。
- [ ] **ステップ 4.3: 冪等性の確認**
```bash
TMP=$(mktemp -d)
CHOICES='{"mode":"yolo","granularity":"coarse"}'
node /Users/diego/Dev/get-shit-done/get-shit-done/bin/gsd-tools.cjs config-new-project "$CHOICES" --cwd "$TMP"
FIRST=$(cat "$TMP/.planning/config.json")
# 2回目の呼び出しは何も変更しないはず
node /Users/diego/Dev/get-shit-done/get-shit-done/bin/gsd-tools.cjs config-new-project "$CHOICES" --cwd "$TMP"
SECOND=$(cat "$TMP/.planning/config.json")
[ "$FIRST" = "$SECOND" ] && echo "IDEMPOTENT: OK" || echo "IDEMPOTENT: FAIL"
rm -rf "$TMP"
```
期待結果: `IDEMPOTENT: OK`
- [ ] **ステップ 4.4: loadConfig が新しいフォーマットを正しく読み込めることを確認する**
```bash
TMP=$(mktemp -d)
node /Users/diego/Dev/get-shit-done/get-shit-done/bin/gsd-tools.cjs config-new-project '{
"mode":"yolo","granularity":"standard","parallelization":true,"commit_docs":true,
"model_profile":"balanced",
"workflow":{"research":true,"plan_check":false,"verifier":true,"nyquist_validation":true}
}' --cwd "$TMP"
# loadConfig が正しく plan_check(workflow.plan_check としてネスト)を読み取るか
node /Users/diego/Dev/get-shit-done/get-shit-done/bin/gsd-tools.cjs config-get workflow.plan_check --cwd "$TMP"
# 期待値: false
node /Users/diego/Dev/get-shit-done/get-shit-done/bin/gsd-tools.cjs config-get git.branching_strategy --cwd "$TMP"
# 期待値: "none"
rm -rf "$TMP"
```
- [ ] **ステップ 4.5: 最終フルテストスイート + コミット**
```bash
cd /Users/diego/Dev/get-shit-done
node --test tests/ 2>&1 | grep -E "pass|fail|error" | tail -5
```
期待結果: すべてパス、失敗0件。
---
## 付録: アップストリーム向け PR 説明文
```
feat: materialize all config defaults at new-project initialization
**問題:**
`/gsd:new-project` はオンボーディング時にユーザーが明示的に選択した6つのキーのみで
`.planning/config.json` を作成する。5つの追加キー
(`search_gitignored`、`brave_search`、`git.branching_strategy`、
`git.phase_branch_template`、`git.milestone_branch_template`)は実行時に
`loadConfig()` が暗黙的に解決するが、ディスクには書き込まれない。
これにより2つの問題が生じる:
1. **発見可能性**: ユーザーがソースコードを読まない限り `git.branching_strategy` を
確認・理解できない — 設定ファイルに表示されない。
2. **暗黙的な拡張**: `/gsd:settings` や `config-set` が初めて設定に書き込む際にも、
これらのキーは追加されない。設定ファイルは実効設定のごく一部しか反映しない。
**解決策:**
`gsd-tools.cjs` に `config-new-project` CLI コマンドを追加する。このコマンドは:
- ユーザーが選択した値を JSON として受け取る
- すべてのランタイムデフォルト(環境検出される `brave_search` を含む)とマージする
- 完全に展開された設定を一度に書き込む
`new-project.md` ワークフロー(ステップ 2a と 5)を更新し、ハードコードされた部分的な
JSON テンプレートの書き込みの代わりにこのコマンドを呼び出すようにする。デフォルト値は
`config.cjs` の `buildNewProjectConfig()` という一箇所だけで管理される。
**保守的なアプローチである理由:**
- `loadConfig()`、`ensureConfigFile()`、その他の読み取りパスに変更なし
- 新しい設定キーの導入なし
- セマンティクスの変更なし — システムが既に暗黙的に解決していたのと同じ値
- 完全な後方互換性: `loadConfig()` は古い部分的フォーマット(既存プロジェクト)と
新しい完全フォーマットの両方を引き続き処理可能
- 冪等: `config-new-project` を2回呼んでも安全
- 新しいユーザー向けフラグなし
**発見可能性が向上する理由:**
初めて `.planning/config.json` を開いた開発者が `git.branching_strategy: "none"` を
見て、GSD のソースコードを読まなくてもブランチ戦略機能が利用可能で設定変更できることを
即座に理解できるようになる。
```

View File

@@ -0,0 +1,185 @@
# マルチプロジェクトワークスペース (`/gsd:new-workspace`)
**Issue:** #1241
**Date:** 2026-03-20
**Status:** Approved
## 課題
GSD は作業ディレクトリごとに1つの `.planning/` ディレクトリに紐づいています。複数の独立したプロジェクトを持つユーザー(20以上の子リポジトリを含むモノレポ構成など)や、同一リポジトリ内でフィーチャーブランチの分離が必要なユーザーは、手動でのクローンや状態管理なしに並行して GSD セッションを実行することができません。
## 解決策
3つの新しいコマンドで**物理的なワークスペースディレクトリ**を作成・一覧表示・削除します。各ワークスペースにはリポジトリのコピー(git worktree またはクローン)と独立した `.planning/` ディレクトリが含まれます。
これにより2つのユースケースに対応します:
- **マルチリポジトリオーケストレーション (A):** 親ディレクトリから複数のリポジトリにまたがるワークスペース
- **フィーチャーブランチの分離 (B):** 現在のリポジトリの worktree を含むワークスペース(`--repos .` を使用した A の特殊ケース)
## コマンド
### `/gsd:new-workspace`
リポジトリのコピーと独自の `.planning/` を持つワークスペースディレクトリを作成します。
```
/gsd:new-workspace --name feature-b --repos hr-ui,ZeymoAPI --path ~/workspaces/feature-b
/gsd:new-workspace --name feature-b --repos . --strategy worktree # same-repo isolation
```
**引数:**
| フラグ | 必須 | デフォルト | 説明 |
|------|----------|---------|-------------|
| `--name` | はい | — | ワークスペース名 |
| `--repos` | いいえ | 対話的な選択 | カンマ区切りのリポジトリパスまたは名前 |
| `--path` | いいえ | `~/gsd-workspaces/<name>` | 出力先ディレクトリ |
| `--strategy` | いいえ | `worktree` | `worktree`(軽量、.git を共有)または `clone`(完全に独立) |
| `--branch` | いいえ | `workspace/<name>` | チェックアウトするブランチ |
| `--auto` | いいえ | false | 対話的な質問をスキップし、デフォルト値を使用 |
### `/gsd:list-workspaces`
`~/gsd-workspaces/*/WORKSPACE.md` をスキャンしてワークスペースマニフェストを検索します。名前、パス、リポジトリ数、GSD ステータス(PROJECT.md の有無、現在のフェーズ)をテーブル形式で表示します。
### `/gsd:remove-workspace`
確認後にワークスペースディレクトリを削除します。worktree 戦略の場合、まず各メンバーリポジトリに対して `git worktree remove` を実行します。コミットされていない変更があるリポジトリがある場合は削除を拒否します。
## ディレクトリ構造
```
~/gsd-workspaces/feature-b/ # workspace root
├── WORKSPACE.md # manifest
├── .planning/ # independent GSD planning directory
│ ├── PROJECT.md # (if user ran /gsd:new-project)
│ ├── STATE.md
│ └── config.json
├── hr-ui/ # git worktree of source repo
│ └── (repo contents on workspace/feature-b branch)
└── ZeymoAPI/ # git worktree of source repo
└── (repo contents on workspace/feature-b branch)
```
主要な特性:
- `.planning/` はワークスペースのルートに配置され、個々のリポジトリ内には配置されない
- 各リポジトリはワークスペースルート直下の対等なディレクトリ
- `WORKSPACE.md` はルートにある唯一の GSD 固有ファイル(`.planning/` を除く)
- `--strategy clone` の場合も同じ構造だが、リポジトリは完全なクローンとなる
## WORKSPACE.md のフォーマット
```markdown
# Workspace: feature-b
Created: 2026-03-20
Strategy: worktree
## Member Repos
| Repo | Source | Branch | Strategy |
|------|--------|--------|----------|
| hr-ui | /root/source/repos/hr-ui | workspace/feature-b | worktree |
| ZeymoAPI | /root/source/repos/ZeymoAPI | workspace/feature-b | worktree |
## Notes
[User can add context about what this workspace is for]
```
## ワークフロー
### `/gsd:new-workspace` のワークフロー手順
1. **セットアップ** — `init new-workspace` を呼び出し、JSON コンテキストを解析する
2. **入力の収集** — `--name`/`--repos`/`--path` が指定されていない場合、対話的に質問する。リポジトリの選択時は、カレントディレクトリ内の子 `.git` ディレクトリを選択肢として表示する
3. **バリデーション** — 出力先パスが存在しない(または空である)こと。ソースリポジトリが存在し、git リポジトリであることを確認する
4. **ワークスペースディレクトリの作成** — `mkdir -p <path>`
5. **リポジトリのコピー** — 各リポジトリについて:
- Worktree: `git worktree add <workspace>/<repo-name> -b workspace/<name>`
- Clone: `git clone <source> <workspace>/<repo-name>`
6. **WORKSPACE.md の書き込み** — ソースパス、戦略、ブランチを含むマニフェスト
7. **.planning/ の初期化** — `mkdir -p <workspace>/.planning`
8. **/gsd:new-project の提案** — 新しいワークスペースでプロジェクト初期化を実行するか確認する
9. **コミット** — commit_docs が有効な場合、WORKSPACE.md のアトミックコミット
10. **完了** — ワークスペースのパスと次のステップを表示する
### Init 関数 (`cmdInitNewWorkspace`)
検出項目:
- カレントディレクトリ内の子 git リポジトリ(対話的なリポジトリ選択用)
- 出力先パスが既に存在するかどうか
- ソースリポジトリにコミットされていない変更があるかどうか
- `git worktree` が利用可能かどうか
- デフォルトのワークスペースベースディレクトリ (`~/gsd-workspaces/`)
ワークフローの分岐制御用フラグを含む JSON を返します。
## エラーハンドリング
### バリデーションエラー(作成をブロック)
- **出力先パスが存在し、空でない場合** — 別の名前/パスを選択するよう提案するエラー
- **ソースリポジトリのパスが存在しない、または git リポジトリでない場合** — 失敗したリポジトリを一覧表示するエラー
- **`git worktree add` が失敗した場合**(例:ブランチが既に存在する) — `workspace/<name>-<timestamp>` ブランチにフォールバックし、それも失敗した場合はエラー
### グレースフルハンドリング
- **ソースリポジトリにコミットされていない変更がある場合** — 警告するが許可する(worktree はブランチを新規にチェックアウトし、作業ディレクトリの状態はコピーしない)
- **マルチリポジトリワークスペースでの部分的な失敗** — 成功したリポジトリでワークスペースを作成し、失敗を報告し、部分的な WORKSPACE.md を書き込む
- **`--repos .`(現在のリポジトリ、ケース B)** — ディレクトリ名または git remote からリポジトリ名を検出し、サブディレクトリ名として使用する
### Remove-Workspace の安全性
- **ワークスペース内のリポジトリにコミットされていない変更がある場合** — 削除を拒否し、変更のあるリポジトリを表示する
- **Worktree の削除が失敗した場合**(例:ソースリポジトリが削除されている) — 警告し、ディレクトリのクリーンアップを続行する
- **確認** — ワークスペース名を入力する明示的な確認を要求する
### List-Workspaces のエッジケース
- **`~/gsd-workspaces/` が存在しない場合** — 「ワークスペースが見つかりません」
- **WORKSPACE.md は存在するが、内部のリポジトリがなくなっている場合** — ワークスペースを表示し、リポジトリを欠落としてマークする
## テスト
### ユニットテスト (`tests/workspace.test.cjs`)
1. `cmdInitNewWorkspace` が正しい JSON を返す — 子 git リポジトリの検出、出力先パスのバリデーション、git worktree の利用可能性の検出
2. WORKSPACE.md の生成 — リポジトリテーブル、戦略、日付を含む正しいフォーマット
3. リポジトリの検出 — カレントディレクトリの子要素内の `.git` ディレクトリを識別し、git 以外のディレクトリやファイルをスキップする
4. バリデーション — 既存の空でない出力先パスを拒否し、git リポジトリでないソースパスを拒否する
### 統合テスト(同一ファイル)
5. Worktree の作成 — ワークスペースを作成し、リポジトリディレクトリが有効な git worktree であることを検証する
6. クローンの作成 — ワークスペースを作成し、リポジトリが独立したクローンであることを検証する
7. ワークスペースの一覧表示 — 2つのワークスペースを作成し、一覧出力に両方が含まれることを検証する
8. ワークスペースの削除 — worktree でワークスペースを作成し、削除してクリーンアップを検証する
9. 部分的な失敗 — 有効なリポジトリ1つと無効なパス1つで、有効なリポジトリのみでワークスペースが作成されることを検証する
すべてのテストは一時ディレクトリを使用し、終了時にクリーンアップします。既存の `node:test` + `node:assert` パターンに従います。
## 実装ファイル
| コンポーネント | パス |
|-----------|------|
| コマンド: new-workspace | `commands/gsd/new-workspace.md` |
| コマンド: list-workspaces | `commands/gsd/list-workspaces.md` |
| コマンド: remove-workspace | `commands/gsd/remove-workspace.md` |
| ワークフロー: new-workspace | `get-shit-done/workflows/new-workspace.md` |
| ワークフロー: list-workspaces | `get-shit-done/workflows/list-workspaces.md` |
| ワークフロー: remove-workspace | `get-shit-done/workflows/remove-workspace.md` |
| Init 関数 | `get-shit-done/bin/lib/init.cjs`(`cmdInitNewWorkspace`、`cmdInitListWorkspaces`、`cmdInitRemoveWorkspace` を追加) |
| ルーティング | `get-shit-done/bin/gsd-tools.cjs`(init switch にケースを追加) |
| テスト | `tests/workspace.test.cjs` |
## 設計上の決定
| 決定事項 | 根拠 |
|----------|-----------|
| 論理的なレジストリではなく物理ディレクトリを採用 | ファイルシステムを信頼の源とする — GSD の既存の cwd ベースの検出パターンと一致する |
| Worktree をデフォルト戦略とする | 軽量(.git オブジェクトを共有)、作成が高速、クリーンアップが容易 |
| `.planning/` をワークスペースルートに配置 | 個々のリポジトリの planning から完全に分離できる。各ワークスペースは独立した GSD プロジェクトとなる |
| 中央レジストリを使用しない | 状態の乖離を回避する。`list-workspaces` はファイルシステムを直接スキャンする |
| ケース B を A の特殊ケースとする | `--repos .` で同じ仕組みを再利用し、フィーチャーブランチ専用のコードが不要 |
| デフォルトパスを `~/gsd-workspaces/<name>` とする | `list-workspaces` がスキャンしやすい予測可能な場所に配置し、ワークスペースをソースリポジトリの外に保つ |

View File

@@ -0,0 +1,65 @@
# ディスカスモード: Assumptions vs Interview
GSD の discuss フェーズには、プランニング前に実装コンテキストを収集するための2つのモードがあります。
## モード
### `discuss`(デフォルト)
従来のインタビュー形式のフローです。Claude がフェーズ内の不明瞭な領域を特定し、選択肢として提示した後、各領域について約4つの質問を行います。以下のケースに適しています:
- コードベースが初めてで、初期フェーズの場合
- ユーザーが積極的に意見を表明したい場合
- ガイド付きの対話的なコンテキスト収集を好むユーザー
### `assumptions`
コードベース優先のフローです。Claude がサブエージェントを通じてコードベースを深く分析し(関連ファイルを5〜15個読み取り)、根拠付きの仮説を立てて確認・修正を求めます。以下のケースに適しています:
- 明確なパターンが確立されたコードベース
- インタビューの質問が自明と感じるユーザー
- より高速なコンテキスト収集(約2〜4回のやり取り vs 約15〜20回)
## 設定
```bash
# assumptions モードを有効にする
gsd-tools config-set workflow.discuss_mode assumptions
# interview モードに戻す
gsd-tools config-set workflow.discuss_mode discuss
```
この設定はプロジェクト単位です(`.planning/config.json` に保存されます)。
## Assumptions モードの仕組み
1. **初期化** — discuss モードと同様(前回のコンテキスト読み込み、コードベース調査、TODO チェック)
2. **深層分析** — Explore サブエージェントがフェーズに関連するコードベースファイルを5〜15個読み取る
3. **仮説の提示** — 各仮説には以下が含まれる:
- Claude が何をどのような理由で行うか(ファイルパスを引用)
- 仮説が間違っていた場合のリスク
- 確信度レベル(Confident / Likely / Unclear)
4. **確認または修正** — ユーザーが仮説をレビューし、変更が必要なものを選択
5. **CONTEXT.md の生成** — discuss モードと同一の出力フォーマット
## フラグの互換性
| フラグ | `discuss` モード | `assumptions` モード |
|--------|-----------------|---------------------|
| `--auto` | 推奨回答を自動選択 | 確認ゲートをスキップし、Unclear 項目を自動解決 |
| `--batch` | 質問をバッチでグループ化 | N/A(修正は既にバッチ化済み) |
| `--text` | プレーンテキスト形式の質問(リモートセッション向け) | プレーンテキスト形式の質問(リモートセッション向け) |
| `--analyze` | 質問ごとにトレードオフ表を表示 | N/A(仮説に根拠が含まれる) |
## 出力
両モードとも、同じ6セクション構成の CONTEXT.md を生成します:
- `<domain>` — フェーズの境界
- `<decisions>` — 確定した実装上の決定事項
- `<canonical_refs>` — 下流エージェントが読むべき仕様・ドキュメント
- `<code_context>` — 再利用可能なアセット、パターン、統合ポイント
- `<specifics>` — ユーザーの参照情報と好み
- `<deferred>` — 将来のフェーズに先送りするアイデア
下流エージェント(researcher、planner、checker)は、モードに関係なくこの出力を同一に消費します。