spec-runner 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +64 -24
  2. package/bin/spec-runner.js +27 -6
  3. package/package.json +1 -1
  4. package/templates/base/.github/PULL_REQUEST_TEMPLATE.md +11 -11
  5. package/templates/base/.github/workflows/phase-gate-check.yml +22 -22
  6. package/templates/base/scripts/spec-runner.sh +117 -66
  7. package/templates/base/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210//343/202/244/343/203/263/343/203/225/343/203/251.md +14 -0
  8. package/templates/base/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210//343/203/206/343/203/274/343/203/226/343/203/253.md +17 -0
  9. package/templates/base/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210//343/203/211/343/203/241/343/202/244/343/203/263.md +18 -0
  10. package/templates/base/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271.md +12 -0
  11. package/templates/base/{docs/adr/TEMPLATE.md → templates/99_/350/250/255/350/250/210/345/210/244/346/226/255/350/250/230/351/214/262//343/201/262/343/201/252/345/275/242.md} +1 -1
  12. package/templates/base/templates/README.md +32 -0
  13. package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210/01_/346/206/262/347/253/240.md +48 -0
  14. package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210/02_/344/273/225/346/247/230.md +39 -0
  15. package/templates/base/{docs/glossary.md → templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210/03_/347/224/250/350/252/236/351/233/206.md} +1 -1
  16. package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210/99_/350/250/255/350/250/210/345/210/244/346/226/255/350/250/230/351/214/262/.gitkeep +0 -0
  17. package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210//343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210/344/270/200/350/246/247.md +14 -0
  18. package/templates/claude/.claude/commands/{sr-set-gate.md → sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.md} +2 -2
  19. package/templates/{cursor/.cursor/commands/sr-test-design.md → claude/.claude/commands/sr-/343/203/206/343/202/271/343/203/210/350/250/255/350/250/210.md} +1 -1
  20. package/templates/claude/.claude/commands/{sr-review.md → sr-/343/203/254/343/203/223/343/203/245/343/203/274.md} +3 -3
  21. package/templates/claude/.claude/commands/sr-/344/273/225/346/247/230.md +9 -0
  22. package/templates/claude/.claude/commands/{sr-fix.md → sr-/344/277/256/346/255/243.md} +2 -2
  23. package/templates/claude/.claude/commands/{sr-init.md → sr-/345/210/235/346/234/237/345/214/226.md} +3 -3
  24. package/templates/claude/.claude/commands/{sr-complete.md → sr-/345/256/214/344/272/206.md} +1 -1
  25. package/templates/{cursor/.cursor/commands/sr-implement.md → claude/.claude/commands/sr-/345/256/237/350/243/205.md} +1 -1
  26. package/templates/claude/.claude/commands/sr-/346/206/262/347/253/240.md +9 -0
  27. package/templates/claude/.claude/commands/{sr-design-high.md → sr-/346/246/202/350/246/201/350/250/255/350/250/210.md} +1 -1
  28. package/templates/{cursor/.cursor/commands/sr-status.md → claude/.claude/commands/sr-/347/212/266/346/205/213.md} +1 -1
  29. package/templates/claude/.claude/commands/{sr-hotfix.md → sr-/347/267/212/346/200/245/344/277/256/346/255/243.md} +2 -2
  30. package/templates/{cursor/.cursor/commands/sr-configure.md → claude/.claude/commands/sr-/350/250/255/345/256/232.md} +2 -2
  31. package/templates/claude/.claude/commands/{sr-design-detail.md → sr-/350/251/263/347/264/260/350/250/255/350/250/210.md} +2 -2
  32. package/templates/claude/.claude/hooks/pre-tool-use.sh +1 -1
  33. package/templates/claude/CLAUDE.md +22 -22
  34. package/templates/copilot/.github/copilot-instructions.md +1 -1
  35. package/templates/copilot/.github/prompts/{sr-set-gate.prompt.md → sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.prompt.md} +1 -1
  36. package/templates/copilot/.github/prompts/{sr-test-design.prompt.md → sr-/343/203/206/343/202/271/343/203/210/350/250/255/350/250/210.prompt.md} +1 -1
  37. package/templates/copilot/.github/prompts/{sr-review.prompt.md → sr-/343/203/254/343/203/223/343/203/245/343/203/274.prompt.md} +2 -2
  38. package/templates/copilot/.github/prompts/sr-/344/273/225/346/247/230.prompt.md +13 -0
  39. package/templates/copilot/.github/prompts/{sr-fix.prompt.md → sr-/344/277/256/346/255/243.prompt.md} +1 -1
  40. package/templates/copilot/.github/prompts/{sr-init.prompt.md → sr-/345/210/235/346/234/237/345/214/226.prompt.md} +3 -3
  41. package/templates/copilot/.github/prompts/{sr-complete.prompt.md → sr-/345/256/214/344/272/206.prompt.md} +1 -1
  42. package/templates/copilot/.github/prompts/{sr-implement.prompt.md → sr-/345/256/237/350/243/205.prompt.md} +1 -1
  43. package/templates/copilot/.github/prompts/sr-/346/206/262/347/253/240.prompt.md +13 -0
  44. package/templates/copilot/.github/prompts/{sr-design-high.prompt.md → sr-/346/246/202/350/246/201/350/250/255/350/250/210.prompt.md} +1 -1
  45. package/templates/copilot/.github/prompts/{sr-status.prompt.md → sr-/347/212/266/346/205/213.prompt.md} +1 -1
  46. package/templates/copilot/.github/prompts/{sr-hotfix.prompt.md → sr-/347/267/212/346/200/245/344/277/256/346/255/243.prompt.md} +1 -1
  47. package/templates/copilot/.github/prompts/{sr-configure.prompt.md → sr-/350/250/255/345/256/232.prompt.md} +1 -1
  48. package/templates/copilot/.github/prompts/{sr-design-detail.prompt.md → sr-/350/251/263/347/264/260/350/250/255/350/250/210.prompt.md} +1 -1
  49. package/templates/cursor/.cursor/commands/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.md +9 -0
  50. package/templates/{claude/.claude/commands/sr-test-design.md → cursor/.cursor/commands/sr-/343/203/206/343/202/271/343/203/210/350/250/255/350/250/210.md} +1 -1
  51. package/templates/cursor/.cursor/commands/sr-/343/203/254/343/203/223/343/203/245/343/203/274.md +9 -0
  52. package/templates/cursor/.cursor/commands/sr-/344/273/225/346/247/230.md +9 -0
  53. package/templates/cursor/.cursor/commands/{sr-fix.md → sr-/344/277/256/346/255/243.md} +2 -2
  54. package/templates/cursor/.cursor/commands/{sr-init.md → sr-/345/210/235/346/234/237/345/214/226.md} +3 -3
  55. package/templates/cursor/.cursor/commands/{sr-complete.md → sr-/345/256/214/344/272/206.md} +1 -1
  56. package/templates/{claude/.claude/commands/sr-implement.md → cursor/.cursor/commands/sr-/345/256/237/350/243/205.md} +1 -1
  57. package/templates/cursor/.cursor/commands/sr-/346/206/262/347/253/240.md +9 -0
  58. package/templates/cursor/.cursor/commands/{sr-design-high.md → sr-/346/246/202/350/246/201/350/250/255/350/250/210.md} +1 -1
  59. package/templates/{claude/.claude/commands/sr-status.md → cursor/.cursor/commands/sr-/347/212/266/346/205/213.md} +1 -1
  60. package/templates/cursor/.cursor/commands/{sr-hotfix.md → sr-/347/267/212/346/200/245/344/277/256/346/255/243.md} +2 -2
  61. package/templates/{claude/.claude/commands/sr-configure.md → cursor/.cursor/commands/sr-/350/250/255/345/256/232.md} +2 -2
  62. package/templates/cursor/.cursor/commands/{sr-design-detail.md → sr-/350/251/263/347/264/260/350/250/255/350/250/210.md} +2 -2
  63. package/templates/cursor/.cursor/commands/sr-review.md +0 -9
  64. package/templates/cursor/.cursor/commands/sr-set-gate.md +0 -9
  65. /package/templates/base/templates/{requirement/template.md → 01_/350/246/201/344/273/266/345/256/232/347/276/251//343/201/262/343/201/252/345/275/242.md"} +0 -0
  66. /package/templates/base/{docs/review/debt.md → templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210//346/214/257/343/202/212/350/277/224/343/202/212//350/262/240/345/202/265.md"} +0 -0
package/README.md CHANGED
@@ -32,6 +32,14 @@ npx spec-runner
32
32
  対話では**どの開発環境か**だけ聞かれる(AI ツール・CI・ドキュメント言語)。
33
33
  ここまでで、`.spec-runner/config.sh`(既定値)と `scripts/`・`docs/`・`.github/` などができる。
34
34
 
35
+ ### 3.5 プロジェクトの土台を書く(推奨・init の前)
36
+
37
+ - **`docs/01_憲章.md`** … プロジェクト憲章(不変原則・品質ルール・フォルダ構成の考え方)。技術に依存しない。
38
+ - **`docs/02_仕様.md`** … 何を作るか・なぜか・スコープ・想定ユーザー。
39
+
40
+ チャットで `/sr-憲章` または `/sr-仕様` と入力すると編集を案内できる。
41
+ ([Spec Kit](https://github.com/tessl-labs/spec-kit) の constitution / specify に相当。)
42
+
35
43
  ### 4. init で詳細設定と最初のユースケースを開始する
36
44
 
37
45
  ```bash
@@ -46,7 +54,7 @@ npx spec-runner
46
54
  - Domain が import してはいけないパターン(正規表現)
47
55
  - DDD を使うか / TDD を必須にするか / CI / ドキュメントの言語
48
56
 
49
- 設定後、`docs/requirements/会員登録.md` ができ、ブランチ `feature/uc-会員登録` が作られる。
57
+ 設定後、`docs/01_要件/会員登録.md` ができ、ブランチ `feature/uc-会員登録` が作られる。
50
58
 
51
59
  - 引数なしで `./scripts/spec-runner.sh init` だけ実行すると、**設定対話のみ**(ユースケースは作らない)。
52
60
  - すでに設定済みの場合は対話をスキップし、そのままユースケース作成に進む。
@@ -55,28 +63,28 @@ npx spec-runner
55
63
 
56
64
  ```
57
65
  ① 要件定義
58
- docs/requirements/会員登録.md を書く
66
+ docs/01_要件/会員登録.md を書く
59
67
 
60
68
  ② 要件レビュー通過
61
- ./scripts/spec-runner.sh review-pass docs/requirements/会員登録.md
69
+ ./scripts/spec-runner.sh review-pass docs/01_要件/会員登録.md
62
70
  ./scripts/spec-runner.sh set-gate glossary_checked
63
71
 
64
72
  ③ 概要設計
65
73
  ./scripts/spec-runner.sh design-high
66
- docs/high-level/会員登録.md を書く → review-pass
74
+ docs/02_概要設計/会員登録.md を書く → review-pass
67
75
 
68
76
  ④ 詳細設計(この順)
69
- ./scripts/spec-runner.sh design-detail domain → domain.md を書く → review-pass
70
- ./scripts/spec-runner.sh design-detail usecase → usecase.md を書く → review-pass
71
- ./scripts/spec-runner.sh design-detail table → table.md を書く → review-pass
72
- ./scripts/spec-runner.sh design-detail infra → infra.md を書く → review-pass
77
+ ./scripts/spec-runner.sh design-detail domain → ドメイン.md を書く → review-pass
78
+ ./scripts/spec-runner.sh design-detail usecase → ユースケース.md を書く → review-pass
79
+ ./scripts/spec-runner.sh design-detail table → テーブル.md を書く → review-pass
80
+ ./scripts/spec-runner.sh design-detail infra → インフラ.md を書く → review-pass
73
81
 
74
82
  ⑤ テスト設計
75
83
  ./scripts/spec-runner.sh test-design
76
- docs/test-design/会員登録.md を書く
84
+ docs/04_テスト設計/会員登録.md を書く
77
85
  テストコードを先に書く(Red)→ コミット
78
86
  ./scripts/spec-runner.sh set-gate test_code_committed
79
- ./scripts/spec-runner.sh review-pass docs/test-design/会員登録.md
87
+ ./scripts/spec-runner.sh review-pass docs/04_テスト設計/会員登録.md
80
88
 
81
89
  ⑥ 実装
82
90
  ./scripts/spec-runner.sh implement
@@ -120,6 +128,22 @@ curl -sSL https://raw.githubusercontent.com/spec-runner/spec-runner/main/install
120
128
 
121
129
  ---
122
130
 
131
+ ## Spec Kit との対応
132
+
133
+ [Spec Kit](https://github.com/tessl-labs/spec-kit) 風の「憲章 → 仕様 → 計画 → 実装」を取り入れている。
134
+
135
+ | Spec Kit | spec-runner での対応 |
136
+ |----------|----------------------|
137
+ | ① constitution(憲章) | `docs/01_憲章.md`。不変原則・品質ルール。`/sr-憲章` |
138
+ | ② specify(仕様) | `docs/02_仕様.md`(プロジェクト全体)+ `docs/01_要件/<UC>.md`(機能単位)。`/sr-仕様` |
139
+ | ③ clarify(曖昧さ解消) | 各フェーズのレビュー・`docs/03_用語集.md` での用語統一 |
140
+ | ④ plan(技術計画) | `design-high` → `design-detail`(domain / usecase / table / infra) |
141
+ | ⑤ analyze(整合性) | `review-pass` と CI の phase-gate-check |
142
+ | ⑥ tasks(タスク分割) | テスト設計・実装フェーズでのタスク単位の進め方 |
143
+ | ⑦ implement | `implement` → `complete` |
144
+
145
+ ---
146
+
123
147
  ## 設定
124
148
 
125
149
  `.spec-runner/config.sh` でパスやコマンドを変えられる。CI とゲートはこの設定を参照する。
@@ -140,9 +164,23 @@ curl -sSL https://raw.githubusercontent.com/spec-runner/spec-runner/main/install
140
164
  ├── .github/
141
165
  │ ├── workflows/phase-gate-check.yml
142
166
  │ └── PULL_REQUEST_TEMPLATE.md
143
- ├── docs/ # 要件・概要・詳細設計・テスト設計
167
+ ├── docs/ # 付番済み(01_〜04_、99_)要件・概要・詳細設計・テスト設計・設計判断記録
144
168
  ├── scripts/spec-runner.sh
145
- └── templates/requirement/template.md
169
+ └── templates/ # すべてのテンプレート(DDD用語・付番は日本語)
170
+ ├── 01_要件定義/ひな形.md # init で docs/01_要件/<UC>.md を生成
171
+ ├── 03_詳細設計/ # design-detail で docs/03_詳細設計/<UC>/*.md を生成
172
+ │ ├── ドメイン.md
173
+ │ ├── ユースケース.md
174
+ │ ├── テーブル.md
175
+ │ └── インフラ.md
176
+ ├── 99_設計判断記録/ひな形.md # ADR ひな形(docs/99_設計判断記録/ にもコピー)
177
+ └── 初期ドキュメント/ # deploy 時に docs/ に展開
178
+ ├── 01_憲章.md
179
+ ├── 02_仕様.md
180
+ ├── 03_用語集.md
181
+ ├── テンプレート一覧.md
182
+ ├── 振り返り/負債.md
183
+ └── 99_設計判断記録/.gitkeep
146
184
  ```
147
185
 
148
186
  選択した AI ツールに応じて `.claude/` や `.cursorrules` や `.github/copilot-instructions.md` などが追加される。
@@ -161,21 +199,23 @@ npx spec-runner --update
161
199
 
162
200
  ## スラッシュコマンド
163
201
 
164
- **`/sr-status` を実行すると、現在のフェーズと「次にやるべきこと」(次に打つコマンド)が動的に表示される。** フェーズ移行(概要設計〜実装完了)はこの案内に従えばよい。
202
+ **`/sr-状態` を実行すると、現在のフェーズと「次にやるべきこと」(次に打つコマンド)が動的に表示される。** フェーズ移行(概要設計〜実装完了)はこの案内に従えばよい。
165
203
 
166
204
  | コマンド | 説明 |
167
205
  |----------|------|
168
- | `/sr-configure` | 詳細設定の対話のみ |
169
- | `/sr-init` [ユースケース名] [集約名] | ユースケース開始(未設定時は対話から) |
170
- | `/sr-status` | フェーズ・ゲート+**次にやるべきこと**を表示 |
171
- | `/sr-review` ファイル | レビュー通過 |
172
- | `/sr-set-gate` ゲート名 | ゲート手動通過 |
173
- | `/sr-fix` 内容 | 修正 |
174
- | `/sr-hotfix` 内容 | 緊急修正 |
175
-
176
- design-high / design-detail / test-design / implement / complete は、status の案内に表示されるので個別に指定不要。
177
-
178
- 定義: Claude `.claude/commands/` / Cursor `.cursor/commands/` / Copilot `.github/prompts/*.prompt.md`
206
+ | `/sr-設定` | 詳細設定の対話のみ |
207
+ | `/sr-憲章` | プロジェクト憲章(`docs/01_憲章.md`)を編集(init 前推奨) |
208
+ | `/sr-仕様` | プロジェクト仕様(`docs/02_仕様.md`)を編集(init 前推奨) |
209
+ | `/sr-初期化` [ユースケース名] [集約名] | ユースケース開始(未設定時は対話から) |
210
+ | `/sr-状態` | フェーズ・ゲート+**次にやるべきこと**を表示 |
211
+ | `/sr-レビュー` ファイル | レビュー通過 |
212
+ | `/sr-ゲート設定` ゲート名 | ゲート手動通過 |
213
+ | `/sr-修正` 内容 | 修正 |
214
+ | `/sr-緊急修正` 内容 | 緊急修正 |
215
+
216
+ 概要設計・詳細設計・テスト設計・実装・完了は、`/sr-状態` の案内に表示されるので個別に指定不要。
217
+
218
+ 定義: Claude `.claude/commands/` / Cursor `.cursor/commands/` / Copilot `.github/prompts/*.prompt.md`(いずれもファイル名・コマンド名は日本語)
179
219
 
180
220
  ---
181
221
 
@@ -31,6 +31,8 @@ try {
31
31
 
32
32
  // ── 定数 ──────────────────────────────────────────────────────────────────────
33
33
  const PKG_DIR = path.resolve(__dirname, '..');
34
+ const PKG_JSON = (() => { try { return require(path.join(PKG_DIR, 'package.json')); } catch { return {}; } })();
35
+ const VERSION = PKG_JSON.version || '?.?.?';
34
36
  const CWD = process.cwd();
35
37
  const CONFIG_DIR = path.join(CWD, '.spec-runner');
36
38
  const CONFIG_SH = path.join(CONFIG_DIR, 'config.sh');
@@ -152,7 +154,8 @@ const DEFAULT_STRUCTURE = {
152
154
  async function main() {
153
155
  log('');
154
156
  log(chalk.bold('╔════════════════════════════════════════╗'));
155
- log(chalk.bold('║ spec-runner v1.0.0-alpha ║'));
157
+ const verPad = Math.max(0, 17 - String(VERSION).length);
158
+ log(chalk.bold(`║ spec-runner v${VERSION}${' '.repeat(verPad)}║`));
156
159
  log(chalk.bold('║ AI-driven DDD Phase Gate System ║'));
157
160
  log(chalk.bold('╚════════════════════════════════════════╝'));
158
161
  log('');
@@ -276,8 +279,14 @@ async function main() {
276
279
  log(chalk.bold.green('✅ spec-runner のセットアップが完了しました!'));
277
280
  log('');
278
281
  log(chalk.bold('次のステップ:'));
282
+ log(' • まずプロジェクトの土台を書く(init の前に行う):');
283
+ log(chalk.cyan(' docs/01_憲章.md … 不変原則・品質ルール(プロジェクト憲章)'));
284
+ log(chalk.cyan(' docs/02_仕様.md … 何を作るか・なぜか・スコープ(仕様)'));
285
+ log(' チャットで /sr-憲章 または /sr-仕様 と入力すると編集を案内できます。');
286
+ log('');
279
287
  log(' • パス・TDD 等の設定と最初のユースケース開始:');
280
288
  log(chalk.cyan(' ./scripts/spec-runner.sh init "ユースケース名" "集約名"'));
289
+ log(' またはチャットで: ' + chalk.cyan('/sr-初期化 ユースケース名 集約名'));
281
290
  log('');
282
291
  log(' init を実行すると対話で Domain/UseCase のパスやテスト設定を聞かれます。');
283
292
  log(' 引数なしで init だけ実行すると設定対話のみ行えます。');
@@ -361,10 +370,22 @@ async function deployFiles(answers) {
361
370
  log('');
362
371
  log(chalk.bold('展開するファイル:'));
363
372
 
364
- // 1. 共通(base): scripts, docs, templates, .github/workflows, .github/PULL_REQUEST_TEMPLATE
373
+ // 1. 共通(base): scripts, templates(生成用+初期ドキュメント), .github
365
374
  copyPathFrom(baseDir, 'scripts');
366
- copyPathFrom(baseDir, 'docs');
367
375
  copyPathFrom(baseDir, 'templates');
376
+ // templates/初期ドキュメント/ の中身を docs/ に展開(憲章・仕様・用語集等)
377
+ const docsInitialSrc = path.join(CWD, 'templates', '初期ドキュメント');
378
+ const docsDest = path.join(CWD, 'docs');
379
+ if (fs.existsSync(docsInitialSrc)) {
380
+ copyDir(docsInitialSrc, docsDest, vars);
381
+ }
382
+ // 生成用テンプレートのうち設計判断記録ひな形は docs/99_設計判断記録/ にも置く(新規 ADR 作成時のコピー元)
383
+ const adrTemplateSrc = path.join(CWD, 'templates', '99_設計判断記録', 'ひな形.md');
384
+ const adrTemplateDest = path.join(CWD, 'docs', '99_設計判断記録', 'ひな形.md');
385
+ if (fs.existsSync(adrTemplateSrc)) {
386
+ fs.mkdirSync(path.dirname(adrTemplateDest), { recursive: true });
387
+ if (!isDryRun) fs.copyFileSync(adrTemplateSrc, adrTemplateDest);
388
+ }
368
389
  copyPathFrom(baseDir, '.github/workflows');
369
390
  copyPathFrom(baseDir, '.github/PULL_REQUEST_TEMPLATE.md');
370
391
 
@@ -685,10 +706,10 @@ async function runUpdate() {
685
706
  DATE: new Date().toISOString().slice(0, 10),
686
707
  };
687
708
 
688
- // 要件テンプレートが無ければ追加(init で必須のため)
689
- const requirementTemplateDest = path.join(CWD, 'templates', 'requirement', 'template.md');
709
+ // 要件定義テンプレートが無ければ追加(init で必須のため)
710
+ const requirementTemplateDest = path.join(CWD, 'templates', '01_要件定義', 'ひな形.md');
690
711
  if (!fs.existsSync(requirementTemplateDest)) {
691
- const requirementTemplateSrc = path.join(templatesDir, 'base', 'templates', 'requirement', 'template.md');
712
+ const requirementTemplateSrc = path.join(templatesDir, 'base', 'templates', '01_要件定義', 'ひな形.md');
692
713
  if (fs.existsSync(requirementTemplateSrc)) {
693
714
  copyFile(requirementTemplateSrc, requirementTemplateDest, vars);
694
715
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-runner",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "AI-driven DDD phase gate system — design-first enforcement for Claude Code, Cursor, and Copilot",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -16,21 +16,21 @@
16
16
 
17
17
  | ドキュメント | 更新済み | パス |
18
18
  |------------|---------|------|
19
- | ドメインモデル設計 | [ ] | docs/detailed/*/domain.md |
20
- | ユースケース設計 | [ ] | docs/detailed/*/usecase.md |
21
- | テーブル設計 | [ ] | docs/detailed/*/table.md |
22
- | インフラ設計 | [ ] | docs/detailed/*/infra.md |
23
- | テスト設計 | [ ] | docs/test-design/*.md |
24
- | glossary.md | [ ] | docs/glossary.md |
25
- | ADR | [ ] / N/A | docs/adr/XXX-*.md |
19
+ | ドメインモデル設計 | [ ] | docs/03_詳細設計/*/ドメイン.md |
20
+ | ユースケース設計 | [ ] | docs/03_詳細設計/*/ユースケース.md |
21
+ | テーブル設計 | [ ] | docs/03_詳細設計/*/テーブル.md |
22
+ | インフラ設計 | [ ] | docs/03_詳細設計/*/インフラ.md |
23
+ | テスト設計 | [ ] | docs/04_テスト設計/*.md |
24
+ | 用語集 | [ ] | docs/03_用語集.md |
25
+ | ADR | [ ] / N/A | docs/99_設計判断記録/XXX-*.md |
26
26
 
27
27
  ---
28
28
 
29
29
  ## レビュアー向け読み順
30
30
 
31
- 1. **設計ドキュメント** `docs/detailed/<UC名>/` — 何を作るか
32
- 2. **ADR** `docs/adr/` — なぜその設計か(該当する場合)
33
- 3. **テスト設計** `docs/test-design/<UC名>.md` — 何を検証するか
31
+ 1. **設計ドキュメント** `docs/03_詳細設計/<UC名>/` — 何を作るか
32
+ 2. **ADR** `docs/99_設計判断記録/` — なぜその設計か(該当する場合)
33
+ 3. **テスト設計** `docs/04_テスト設計/<UC名>.md` — 何を検証するか
34
34
  4. **テストコード** — 振る舞いの確認
35
35
  5. **実装コード** — 設計との整合性確認
36
36
 
@@ -40,4 +40,4 @@
40
40
 
41
41
  - 影響ユースケース:
42
42
  - 修正内容の要約:
43
- - debt.md への記録: [ ] 完了
43
+ - 負債.md への記録: [ ] 完了(docs/振り返り/負債.md)
@@ -72,45 +72,45 @@ jobs:
72
72
  echo "$CHANGED"
73
73
  echo ""
74
74
 
75
- # DOMAIN_PATH が変更されたら docs/detailed/*/domain.md も更新が必要
75
+ # DOMAIN_PATH が変更されたら docs/03_詳細設計/*/ドメイン.md も更新が必要
76
76
  if [[ -n "$DOMAIN_PATH" ]]; then
77
77
  DOMAIN_CHANGED=$(echo "$CHANGED" | grep -E "^${DOMAIN_PATH}/" || true)
78
78
  if [[ -n "$DOMAIN_CHANGED" ]]; then
79
- DETAIL_DOC_CHANGED=$(echo "$CHANGED" | grep -E 'docs/detailed/.*/domain\.md' || true)
79
+ DETAIL_DOC_CHANGED=$(echo "$CHANGED" | grep -E 'docs/03_詳細設計/.*/ドメイン\.md' || true)
80
80
  if [[ -z "$DETAIL_DOC_CHANGED" ]]; then
81
- echo "✗ $DOMAIN_PATH/ が変更されましたが docs/detailed/*/domain.md が更新されていません"
81
+ echo "✗ $DOMAIN_PATH/ が変更されましたが docs/03_詳細設計/*/ドメイン.md が更新されていません"
82
82
  echo "$DOMAIN_CHANGED" | sed 's/^/ /'
83
83
  ERRORS=$((ERRORS + 1))
84
84
  else
85
- echo "✓ $DOMAIN_PATH/ 変更 → domain.md 更新確認"
85
+ echo "✓ $DOMAIN_PATH/ 変更 → ドメイン.md 更新確認"
86
86
  fi
87
87
  fi
88
88
  fi
89
89
 
90
- # USECASE_PATH が変更されたら docs/detailed/*/usecase.md も更新が必要
90
+ # USECASE_PATH が変更されたら docs/03_詳細設計/*/ユースケース.md も更新が必要
91
91
  if [[ -n "$USECASE_PATH" ]]; then
92
92
  USECASE_CHANGED=$(echo "$CHANGED" | grep -E "^${USECASE_PATH}/" || true)
93
93
  if [[ -n "$USECASE_CHANGED" ]]; then
94
- USECASE_DOC_CHANGED=$(echo "$CHANGED" | grep -E 'docs/detailed/.*/usecase\.md' || true)
94
+ USECASE_DOC_CHANGED=$(echo "$CHANGED" | grep -E 'docs/03_詳細設計/.*/ユースケース\.md' || true)
95
95
  if [[ -z "$USECASE_DOC_CHANGED" ]]; then
96
- echo "✗ $USECASE_PATH/ が変更されましたが docs/detailed/*/usecase.md が更新されていません"
96
+ echo "✗ $USECASE_PATH/ が変更されましたが docs/03_詳細設計/*/ユースケース.md が更新されていません"
97
97
  ERRORS=$((ERRORS + 1))
98
98
  else
99
- echo "✓ $USECASE_PATH/ 変更 → usecase.md 更新確認"
99
+ echo "✓ $USECASE_PATH/ 変更 → ユースケース.md 更新確認"
100
100
  fi
101
101
  fi
102
102
  fi
103
103
 
104
- # MIGRATION_DIR が変更されたら docs/detailed/*/table.md も更新が必要
104
+ # MIGRATION_DIR が変更されたら docs/03_詳細設計/*/テーブル.md も更新が必要
105
105
  if [[ -n "$MIGRATION_DIR" ]]; then
106
106
  MIGRATION_CHANGED=$(echo "$CHANGED" | grep -E "^${MIGRATION_DIR}/" || true)
107
107
  if [[ -n "$MIGRATION_CHANGED" ]]; then
108
- TABLE_DOC_CHANGED=$(echo "$CHANGED" | grep -E 'docs/detailed/.*/table\.md' || true)
108
+ TABLE_DOC_CHANGED=$(echo "$CHANGED" | grep -E 'docs/03_詳細設計/.*/テーブル\.md' || true)
109
109
  if [[ -z "$TABLE_DOC_CHANGED" ]]; then
110
- echo "✗ $MIGRATION_DIR/ が変更されましたが docs/detailed/*/table.md が更新されていません"
110
+ echo "✗ $MIGRATION_DIR/ が変更されましたが docs/03_詳細設計/*/テーブル.md が更新されていません"
111
111
  ERRORS=$((ERRORS + 1))
112
112
  else
113
- echo "✓ $MIGRATION_DIR/ 変更 → table.md 更新確認"
113
+ echo "✓ $MIGRATION_DIR/ 変更 → テーブル.md 更新確認"
114
114
  fi
115
115
  fi
116
116
  fi
@@ -129,10 +129,10 @@ jobs:
129
129
  run: |
130
130
  BRANCH="${{ github.head_ref }}"
131
131
  if [[ "$BRANCH" =~ ^hotfix/ ]]; then
132
- if git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -q 'docs/review/debt.md'; then
133
- echo "✓ hotfix: debt.md への記録確認"
132
+ if git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -q 'docs/振り返り/負債.md'; then
133
+ echo "✓ hotfix: 負債.md への記録確認"
134
134
  else
135
- echo "✗ hotfix PR では docs/review/debt.md への負債記録が必要です"
135
+ echo "✗ hotfix PR では docs/振り返り/負債.md への負債記録が必要です"
136
136
  echo " ./scripts/spec-runner.sh hotfix を使用してください"
137
137
  exit 1
138
138
  fi
@@ -174,8 +174,8 @@ jobs:
174
174
  - name: ADR 対応コードリンクチェック
175
175
  run: |
176
176
  WARNINGS=0
177
- if [[ -d "docs/adr" ]]; then
178
- for adr in docs/adr/[0-9]*.md; do
177
+ if [[ -d "docs/99_設計判断記録" ]]; then
178
+ for adr in docs/99_設計判断記録/[0-9]*.md; do
179
179
  [[ -f "$adr" ]] || continue
180
180
  # 「## 対応コード」セクションからファイルパスを抽出
181
181
  code_refs=$(awk '/^## 対応コード/{found=1; next} /^## /{found=0} found && /`.*\.(php|ts|tsx)`/{print}' "$adr" | grep -oP '`[^`]+`' | tr -d '`' || true)
@@ -196,8 +196,8 @@ jobs:
196
196
  echo "✓ ADR対応コードリンク: OK"
197
197
  fi
198
198
 
199
- # ─── 6. glossary.md の新エンティティチェック(config.sh の DOMAIN_PATH / SOURCE_EXTENSIONS)──
200
- - name: 新規Domain classのglossary.md登録チェック
199
+ # ─── 6. 用語集.md の新エンティティチェック(config.sh の DOMAIN_PATH / SOURCE_EXTENSIONS)──
200
+ - name: 新規Domain classの用語集登録チェック
201
201
  env:
202
202
  DOMAIN_PATH: ${{ env.DOMAIN_PATH }}
203
203
  SOURCE_EXTENSIONS: ${{ env.SOURCE_EXTENSIONS }}
@@ -207,10 +207,10 @@ jobs:
207
207
  NEW_DOMAIN=$(echo "$CHANGED" | grep -E "^${DOMAIN_PATH}/.*\.(${EXT_PATTERN})$" | xargs git diff --diff-filter=A --name-only origin/${{ github.base_ref }}...HEAD 2>/dev/null || true)
208
208
 
209
209
  if [[ -n "$NEW_DOMAIN" && -n "$DOMAIN_PATH" ]]; then
210
- if echo "$CHANGED" | grep -q 'docs/glossary.md'; then
211
- echo "✓ 新規Domainクラス追加 → glossary.md 更新確認"
210
+ if echo "$CHANGED" | grep -q 'docs/03_用語集.md'; then
211
+ echo "✓ 新規Domainクラス追加 → 用語集.md 更新確認"
212
212
  else
213
- echo "⚠ 新規Domainクラスが追加されましたが glossary.md が更新されていません"
213
+ echo "⚠ 新規Domainクラスが追加されましたが 用語集.md が更新されていません"
214
214
  echo " 新しいエンティティ/値オブジェクトにはユビキタス言語の追加が必要です"
215
215
  fi
216
216
  fi