spec-runner 1.1.10 → 1.1.16

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 (69) hide show
  1. package/package.json +1 -2
  2. package/spec-runner/templates/.claude/agents/code-reviewer.md +6 -36
  3. package/spec-runner/templates/.claude/agents/design-reviewer.md +9 -9
  4. package/spec-runner/templates/.claude/agents/impact-analyzer.md +75 -0
  5. package/spec-runner/templates/.claude/agents/test-runner.md +1 -1
  6. package/spec-runner/templates/.claude/rules/coding.md +11 -0
  7. package/spec-runner/templates/.claude/rules/design-docs.md +33 -16
  8. package/spec-runner/templates/.claude/rules/harness-formats.md +90 -0
  9. package/spec-runner/templates/.claude/rules/sub-agent-delegation.md +37 -0
  10. package/spec-runner/templates/.claude/settings.json +15 -0
  11. package/spec-runner/templates/.claude/skills/architecture-definition/SKILL.md +3 -3
  12. package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +22 -6
  13. package/spec-runner/templates/.claude/skills/design-change/SKILL.md +14 -13
  14. package/spec-runner/templates/.claude/skills/design-change/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +1 -1
  15. package/spec-runner/templates/.claude/skills/docs-driven-seed/SKILL.md +140 -0
  16. package/spec-runner/templates/.claude/skills/docs-driven-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/343/203/211/343/203/241/343/202/244/343/203/263/{/343/203/211/343/203/241/343/202/244/343/203/263/345/220/215}.md +39 -0
  17. package/spec-runner/templates/.claude/skills/docs-driven-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/UC-{/346/227/245/346/234/254/350/252/236/345/220/215}.md +55 -0
  18. package/spec-runner/templates/.claude/skills/existing-project-to-docs/SKILL.md +12 -9
  19. package/spec-runner/templates/.claude/skills/harness-engineering/SKILL.md +5 -0
  20. package/spec-runner/templates/.claude/skills/test-driven-development/SKILL.md +104 -7
  21. package/spec-runner/templates/.github/agents/code-reviewer.agent.md +6 -36
  22. package/spec-runner/templates/.github/agents/design-reviewer.agent.md +9 -9
  23. package/spec-runner/templates/.github/agents/impact-analyzer.agent.md +75 -0
  24. package/spec-runner/templates/.github/agents/test-runner.agent.md +1 -1
  25. package/spec-runner/templates/.github/instructions/coding.instructions.md +11 -0
  26. package/spec-runner/templates/.github/instructions/design-docs.instructions.md +33 -16
  27. package/spec-runner/templates/.github/instructions/harness-formats.instructions.md +84 -0
  28. package/spec-runner/templates/.github/instructions/sub-agent-delegation.instructions.md +37 -0
  29. package/spec-runner/templates/.github/skills/architecture-definition/SKILL.md +3 -3
  30. package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +22 -6
  31. package/spec-runner/templates/.github/skills/design-change/SKILL.md +14 -13
  32. package/spec-runner/templates/.github/skills/design-change/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +1 -1
  33. package/spec-runner/templates/.github/skills/docs-driven-seed/SKILL.md +140 -0
  34. package/spec-runner/templates/.github/skills/docs-driven-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/343/203/211/343/203/241/343/202/244/343/203/263/{/343/203/211/343/203/241/343/202/244/343/203/263/345/220/215}.md +39 -0
  35. package/spec-runner/templates/.github/skills/docs-driven-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/UC-{/346/227/245/346/234/254/350/252/236/345/220/215}.md +55 -0
  36. package/spec-runner/templates/.github/skills/existing-project-to-docs/SKILL.md +12 -9
  37. package/spec-runner/templates/.github/skills/harness-engineering/SKILL.md +5 -0
  38. package/spec-runner/templates/.github/skills/test-driven-development/SKILL.md +104 -7
  39. package/spec-runner/templates/.spec-runner/scripts/scan.js +156 -0
  40. package/spec-runner/templates/.claude/skills/plugin-development/SKILL.md +0 -173
  41. package/spec-runner/templates/.claude/skills/plugin-development/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//346/246/202/350/246/201/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -88
  42. package/spec-runner/templates/.claude/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -81
  43. package/spec-runner/templates/.claude/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/202/267/343/202/271/343/203/206/343/203/240/345/205/250/344/275/223/344/277/257/347/236/260/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -80
  44. package/spec-runner/templates/.claude/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/270/200/350/246/247/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -57
  45. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/aws.md +0 -53
  46. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/database.md +0 -54
  47. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/schema.dbml +0 -25
  48. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/sequence//343/202/267/343/203/274/343/202/261/343/203/263/343/202/271/345/233/263/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -28
  49. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/agent.md +0 -56
  50. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/config.md +0 -47
  51. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/domain.md +0 -67
  52. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/prompts.md +0 -72
  53. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/skills/{skill_name}/skill.md +0 -53
  54. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/tools/{tool_name}/tool.md +0 -51
  55. package/spec-runner/templates/.github/skills/plugin-development/SKILL.md +0 -173
  56. package/spec-runner/templates/.github/skills/plugin-development/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//346/246/202/350/246/201/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -88
  57. package/spec-runner/templates/.github/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -81
  58. package/spec-runner/templates/.github/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/202/267/343/202/271/343/203/206/343/203/240/345/205/250/344/275/223/344/277/257/347/236/260/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -80
  59. package/spec-runner/templates/.github/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/270/200/350/246/247/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -57
  60. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/aws.md +0 -53
  61. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/database.md +0 -54
  62. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/schema.dbml +0 -25
  63. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/sequence//343/202/267/343/203/274/343/202/261/343/203/263/343/202/271/345/233/263/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +0 -28
  64. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/agent.md +0 -56
  65. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/config.md +0 -47
  66. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/domain.md +0 -67
  67. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/prompts.md +0 -72
  68. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/skills/{skill_name}/skill.md +0 -53
  69. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/tools/{tool_name}/tool.md +0 -51
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-runner",
3
- "version": "1.1.10",
3
+ "version": "1.1.16",
4
4
  "description": "docs を正本にした開発運用ハーネスを Claude / Copilot に導入する",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -20,7 +20,6 @@
20
20
  "rails",
21
21
  "django",
22
22
  "nextjs",
23
- "spec-kit",
24
23
  "docs-as-code",
25
24
  "architecture-driven"
26
25
  ],
@@ -1,51 +1,21 @@
1
1
  ---
2
2
  name: code-reviewer
3
- description: コーディング規約ファイルへの適合をチェックする。コード変更後のレビューに使用する。
3
+ description: 実装・修正が完了したときに自動で呼ぶ。変更ファイルをコーディング規約と照合し違反を報告する。修正はしない。
4
4
  tools: Read, Grep, Glob, Bash
5
5
  model: sonnet
6
6
  ---
7
7
 
8
8
  # コーディング規約チェックエージェント
9
9
 
10
- 同梱のコーディング規約ファイルに定義されたコーディング規約への適合をチェックする。
10
+ 変更されたコードをコーディング規約と照合し、違反を報告する。
11
11
 
12
12
  ## 手順
13
13
 
14
14
  1. `git diff --name-only` で変更ファイルを確認する(引数でファイルが指定された場合はそちらを使用)
15
- 2. 変更された `.py` ファイルを読み込む
16
- 3. 以下のチェック項目を検証する
17
- 4. 違反を報告する
18
-
19
- ## チェック項目
20
-
21
- ### 命名規則
22
- - ファイル名: snake_case
23
- - クラス名: PascalCase
24
- - 関数・メソッド: snake_case
25
- - 変数: snake_case
26
- - 定数: UPPER_SNAKE_CASE
27
- - モジュール内部定数: _UPPER_SNAKE_CASE(先頭アンダースコア)
28
- - テストクラス: Test + PascalCase
29
- - テストメソッド: test_ + snake_case(日本語不可)
30
-
31
- ### 型ヒント
32
- - Python 3.12+ のビルトイン型を使用(`list[str]`, `dict[str, int]`, `str | None`)
33
- - `typing` モジュールの `List`, `Dict`, `Optional` を使っていないか
34
- - 値オブジェクトに `frozen=True` の dataclass を使っているか
35
-
36
- ### コメント・docstring
37
- - コメントが日本語であるか(英語コメント禁止)
38
- - モジュール先頭に1行概要があるか
39
- - 不要なdocstring(名前で意図が伝わる関数へのdocstring)がないか
40
-
41
- ### テストコメント
42
- - 全テストメソッドにdocstring(テスト意図を日本語1行)があるか
43
- - セットアップ5行以上のテストに `# 準備` / `# 実行` / `# 検証` があるか
44
- - テストクラスが3つ以上のファイルにセクション区切り(`# ====`)があるか
45
-
46
- ### プロジェクト構造
47
- - テストファイルが実装と同じディレクトリ構造にあるか
48
- - `__init__.py` が存在するか
15
+ 2. `.claude/rules/coding.md` を読み、チェック項目を把握する
16
+ 3. 変更されたソースファイルを読み込む
17
+ 4. チェック項目に照らして違反を検出する
18
+ 5. 違反を報告する
49
19
 
50
20
  ## 報告フォーマット
51
21
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: design-reviewer
3
- description: 設計書(docs/)と実装コード(src/)の整合性をチェックする。設計書と実装の乖離が心配なときに使用する。
3
+ description: 設計書を変更したとき、またはフェーズレビュー時に自動で呼ぶ。docssrc の乖離を報告する。修正はしない。
4
4
  tools: Read, Grep, Glob
5
5
  model: sonnet
6
6
  ---
@@ -11,12 +11,12 @@ docs/ 配下の設計書と src/ 配下の実装コードを突合し、乖離
11
11
 
12
12
  ## 手順
13
13
 
14
- 1. docs/ 配下の設計書ファイルを一覧取得する
14
+ 1. `docs/` 配下の設計書ファイルを一覧取得する
15
15
  2. 各設計書の frontmatter を読み、`spec_runner.node_id` / `kind` / `depends_on` / `maps_to` を確認する
16
- 3. `docs/02_概要設計/**` は上位設計として扱い、ユースケース・責務・外部 IF・非機能方針が実装に反映されているか確認する
17
- 4. `docs/03_詳細設計/src/**` `maps_to` で対応先コードを特定し、責務・入出力・判断条件・テスト観点を比較する
18
- 5. `docs/03_詳細設計/infrastructure/**` などの例外文書も `maps_to` を起点に IaC / 設定 / DB 定義と比較する
19
- 6. 乖離を報告する
16
+ 3. `docs/02_概要設計/**` の各ファイルを読む。ユースケース・責務・外部 IF が実装に反映されているか確認するために、`maps_to` から対応する `src/` ファイルを特定して実際に読んで比較する
17
+ 4. `docs/03_詳細設計/**` の各ファイルを読む。`maps_to` に列挙された `src/` / `tests/` ファイルを**実際に読み**、責務・入出力・判断条件・テスト観点を設計書と行レベルで比較する
18
+ - `maps_to` が空または未設定の場合はフロントマターの問題として報告する(パス推定は行わない)
19
+ 5. 乖離を報告する
20
20
 
21
21
  ## チェック項目
22
22
 
@@ -28,13 +28,13 @@ docs/ 配下の設計書と src/ 配下の実装コードを突合し、乖離
28
28
 
29
29
  ### 概要設計
30
30
 
31
- - **ユースケース整合**: `ユースケース一覧.md` と個別 UC が実装のエンドポイント・コマンド・画面遷移と一致しているか
31
+ - **ユースケース整合**: `ユースケース一覧.md` の各 UC が実装のエンドポイント・コマンド・画面遷移と一致しているか
32
32
  - **全体俯瞰**: `システム全体俯瞰.md` の責務分割・連携フロー・外部 IF が実装構造と一致しているか
33
33
  - **ADR 反映**: `docs/02_概要設計/90_ADR/**` の採用方針が概要設計・詳細設計に反映されているか
34
34
 
35
35
  ### 詳細設計
36
36
 
37
- - **責務整合**: `docs/03_詳細設計/src/**` の責務記述が対応コードの責務と一致しているか
37
+ - **責務整合**: `docs/03_詳細設計/**` の責務記述が `maps_to` 先コードの責務と一致しているか
38
38
  - **入出力整合**: 関数シグネチャ、設定値、エラー処理、外部依存の扱いが設計どおりか
39
39
  - **テスト整合**: `maps_to` に含まれる `tests/**` が設計上の主要シナリオをカバーしているか
40
40
  - **不足 / 過剰**: 設計書にあるがコードにない、またはコードにあるが設計書にない要素があるか
@@ -62,4 +62,4 @@ docs/ 配下の設計書と src/ 配下の実装コードを突合し、乖離
62
62
  - 読み取り専用(コードや設計書の変更は行わない)
63
63
  - 日本語で報告する
64
64
  - ADR はコードと 1 対 1 の突合対象ではないが、配置先と反映有無は確認する
65
- - hard code のパス推定より frontmatter の `maps_to` を優先する
65
+ - `maps_to` を唯一の参照先とする。パス推定は行わない
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: impact-analyzer
3
+ description: design-change で影響範囲を調査するときに呼ぶ。変更対象の node_id またはファイルパスを受け取り、.spec-runner/scan/graph.json のキャッシュを参照して影響ファイルを一覧化し、maps_to の参照整合性も報告する。
4
+ tools: Bash
5
+ model: sonnet
6
+ ---
7
+
8
+ # 影響範囲分析エージェント
9
+
10
+ `.spec-runner/scan/graph.json`(`scan.js` が生成するキャッシュ)を読み、変更対象の node_id から連鎖する影響ファイルを一覧化する。
11
+
12
+ ## 入力
13
+
14
+ - 変更対象の `node_id`(例: `detail.usecase.order_registration`)またはファイルパス
15
+
16
+ ## 手順
17
+
18
+ ### 1. グラフキャッシュの確認・更新
19
+
20
+ ```bash
21
+ node .spec-runner/scripts/scan.js
22
+ ```
23
+
24
+ キャッシュが古い場合や存在しない場合は再生成する。
25
+
26
+ ### 2. 影響範囲をグラフから取得
27
+
28
+ ```bash
29
+ node -e "
30
+ const g = require('./.spec-runner/scan/graph.json');
31
+ const id = '{node_id}';
32
+ const node = g.nodes[id] || {};
33
+ const direct = g.reverse_index[id] || [];
34
+ const indirect = [...new Set(
35
+ direct.flatMap(n => g.reverse_index[n] || []).filter(n => !direct.includes(n) && n !== id)
36
+ )];
37
+ console.log(JSON.stringify({ node, direct: direct.map(n => ({id: n, ...g.nodes[n]})), indirect: indirect.map(n => ({id: n, ...g.nodes[n]})), missing: g.missing_maps_to }, null, 2));
38
+ "
39
+ ```
40
+
41
+ ### 3. 結果を一覧化して報告する
42
+
43
+ ## 報告フォーマット
44
+
45
+ ```
46
+ ## 影響範囲分析
47
+
48
+ ### 起点
49
+ - node_id: {node_id}
50
+ - ファイル: {ファイルパス}
51
+ - kind: {kind}
52
+
53
+ ### 直接影響(1階層目)
54
+ - [ファイルパス] — node_id: {node_id}, kind: {kind}
55
+
56
+ ### 間接影響(2階層目)
57
+ - [ファイルパス] — node_id: {node_id}, kind: {kind}
58
+
59
+ ### 実装影響(maps_to で対応)
60
+ - [src/ または tests/ のファイルパス]
61
+
62
+ ### maps_to 整合性チェック
63
+ - OK: 全参照ファイルが存在する
64
+ - MISSING: {missing} — {source} ({node_id}) に記載されているが存在しない
65
+
66
+ ### 影響なし(確認済みで変更不要)
67
+ - [ファイルパス] — 理由: {理由}
68
+ ```
69
+
70
+ ## 注意事項
71
+
72
+ - 読み取り専用(ファイルの変更は行わない)
73
+ - 日本語で報告する
74
+ - graph.json が存在しない場合は scan.js を実行してから進む
75
+ - 影響ファイルが多い場合は kind 別にグループ化する
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: test-runner
3
- description: コード変更後にテストを実行し、失敗時は原因分析まで行う。コード修正・機能追加の後に使用する。
3
+ description: 実装・修正が完了したときに自動で呼ぶ。テストを実行し、失敗時は原因と修正案を報告する。コードは修正しない。
4
4
  tools: Read, Grep, Glob, Bash
5
5
  model: sonnet
6
6
  ---
@@ -24,6 +24,7 @@ paths: ["src/**", "tests/**"]
24
24
  - **言語**: 日本語
25
25
  - **docstring**: モジュール先頭に1行で概要を書く。関数・クラスには原則不要(名前で意図が伝わる場合)
26
26
  - **インラインコメント**: ビジネスロジックの「なぜ」を説明する場合のみ。処理内容の「何」は書かない
27
+ - **変更履歴コメント禁止**: `# 新機能追加`, `# ここを修正`, `# v2 で変更` のような変更経緯はコードに書かない。git の commit message で管理する
27
28
 
28
29
  ```python
29
30
  # 良い例
@@ -89,6 +90,16 @@ truncated_json = '[{"account_name": "売掛金", ...'
89
90
 
90
91
  - **英語コメント禁止**: `Arrange` / `Act` / `Assert` 等の英語は使わない
91
92
 
93
+ ## 後方互換ハックの禁止
94
+
95
+ 使われなくなったコードは完全に削除する。互換性維持のための温存は行わない。
96
+
97
+ 禁止パターン:
98
+ - 未使用の引数・変数を `_` プレフィックスで残す(`_old_param`)
99
+ - 削除した型・関数を `from x import Y` で再公開する
100
+ - `# removed`, `# deprecated`, `# 旧実装` コメントとともにコードを残す
101
+ - 後方互換用のラッパー関数・エイリアスを追加する
102
+
92
103
  ## 検索ルール
93
104
 
94
105
  - コードの検索・置換は `src/` と `tests/` の両方を対象にする
@@ -20,44 +20,61 @@ paths: ["docs/**"]
20
20
  - **`docs/**` の全設計書に frontmatter を付ける**
21
21
  - 正本の必須項目は `spec_runner.node_id` / `spec_runner.kind` / `spec_runner.depends_on` / `spec_runner.maps_to`
22
22
  - `depends_on` はまず文字列配列でよい。依存理由が必要な場合のみオブジェクト形式を使う
23
- - `maps_to` には見直し対象となる `src/` / `tests/` / IaC / 設定ファイルを列挙する
23
+ - `maps_to` には見直し対象となる `src/` / `tests/` / IaC / 設定ファイルを列挙する。**必ず設定する(空にしない)**
24
24
  - `modules` / `source_files` などの拡張項目を足す場合でも、`maps_to` と矛盾させない
25
25
 
26
26
  ```yaml
27
27
  ---
28
28
  spec_runner:
29
- node_id: detail.src.agents.reconciliation.agent
29
+ node_id: detail.usecase.注文確定
30
30
  kind: detailed_design
31
31
  depends_on:
32
- - overview.system_context
33
- - use_case.reconciliation.list
32
+ - overview.use_case_list
33
+ - detail.domain.注文
34
34
  maps_to:
35
- - src/agents/reconciliation/agent.py
36
- - tests/agents/reconciliation/test_agent.py
35
+ - src/application/order/confirm.py
36
+ - src/domain/order/aggregate.py
37
+ - tests/application/order/test_confirm.py
37
38
  ---
38
39
  ```
39
40
 
41
+ ### node_id 体系
42
+
43
+ | 対象 | node_id 形式 | 例 |
44
+ |------|-------------|-----|
45
+ | 要件定義 | `requirement.{名前}` | `requirement.要件定義` |
46
+ | システム全体俯瞰 | `overview.system_context` | — |
47
+ | ドメインモデル | `overview.domain_model` | — |
48
+ | ユースケース一覧 | `overview.use_case_list` | — |
49
+ | ADR | `overview.adr.{slug}` | `overview.adr.0404-ドメイン-注文集約` |
50
+ | ドメイン詳細設計 | `detail.domain.{ドメイン名}` | `detail.domain.注文` |
51
+ | UC 詳細設計 | `detail.usecase.{UC名}` | `detail.usecase.注文確定` |
52
+ | DB・外部サービス | `detail.db.{名前}` | `detail.db.スキーマ定義` |
53
+
40
54
  ## 命名規則
41
55
 
42
56
  | 対象 | 規則 | 例 |
43
57
  |------|------|-----|
44
- | `docs/01_要件定義` | 日本語 | `要件定義.md` |
45
- | `docs/02_概要設計` | 日本語 | `ユースケース一覧.md`, `システム全体俯瞰.md` |
46
- | `docs/02_概要設計/ユースケース` | `UC-{日本語名}.md` | `UC-差異一覧表示.md` |
47
- | `docs/02_概要設計/90_ADR` | `ADR-0001-{slug}.md` | `ADR-0001-detailed-design-mirrors-src.md` |
48
- | `docs/03_詳細設計/src/**` | `src/` に合わせた英語 `snake_case` | `agent.md`, `domain.md`, `skill.md` |
49
- | `docs/03_詳細設計/infrastructure/**` | 対応先に合わせる。例外で置く場合も `maps_to` 必須 | `database.md`, `schema.dbml` |
58
+ | `docs/01_要件定義` | 日本語 | `要件定義.md`, `ユビキタス言語辞書.md` |
59
+ | `docs/02_概要設計` | 日本語 | `ユースケース一覧.md`, `システム全体俯瞰.md`, `ドメインモデル.md` |
60
+ | `docs/02_概要設計/90_ADR/{対象}/` | `mmdd-{日本語タイトル}.md` | `0404-注文集約の設計.md` |
61
+ | `{対象}` の選択肢 | `全体` / `ドメイン` / `UC` / `DB` | — |
62
+ | `docs/03_詳細設計/01_ドメイン` | 日本語 | `注文.md`, `在庫.md` |
63
+ | `docs/03_詳細設計/02_ユースケース` | `UC-{日本語名}.md` | `UC-注文確定.md` |
64
+ | `docs/03_詳細設計/03_DB・外部サービス` | 日本語 | `スキーマ定義.dbml`, `外部サービス.md` |
50
65
 
51
66
  ## ADR
52
67
 
53
68
  - **ADR は必ず 3 案を比較してから採用案を決める**
54
- - ADR は原則 `docs/02_概要設計/90_ADR/` に置く
55
- - ドメインローカル ADR が必要な場合だけ `docs/02_概要設計/<ドメイン>/90_ADR/` を使う
69
+ - ADR `docs/02_概要設計/90_ADR/{対象}/` で管理する(`全体` / `ドメイン` / `UC` / `DB`)
70
+ - ファイル名は `mmdd-{日本語タイトル}.md`。対象はフォルダで表す
56
71
  - ADR は理由の記録であり、詳細設計の代わりにしない
72
+ - 廃止 UC の理由も ADR に記録する(UC ファイル本体は削除)
57
73
 
58
74
  ## 文書品質
59
75
 
60
76
  - **概要設計では「何をするか」を書き、コード片・DDL・クラス定義は持ち込まない**
61
- - **詳細設計では `src/` に対応する責務・入出力・判断条件・テスト観点を書く**
62
- - **`docs/03_詳細設計` は原則 `src/` ミラーにする。例外文書は `maps_to` で根拠を残す**
77
+ - **詳細設計ではドメインルール・UC の責務・入出力・判断条件・テスト観点を書く。コード・プロンプト本文は書かない**
78
+ - **`maps_to` を唯一の src 対応として使う。パス推定に頼らない**
63
79
  - **Markdown に HTML タグ(details, summary, br など)を使わない**
80
+ - **`概要.md` のような汎用的な名前のファイルは作らない。内容を具体的に示す名前(`要件定義.md`、`ユースケース一覧.md`、`システム全体俯瞰.md` など)を使う**
@@ -0,0 +1,90 @@
1
+ ---
2
+ description: rules・agents・skills ファイルのフォーマット定義。harness-engineering や architecture-skill-development で新規作成・修正するときに参照する。
3
+ ---
4
+
5
+ # ハーネスファイルフォーマット
6
+
7
+ `harness-engineering` や `architecture-skill-development` で rules / agents / skills を作成・修正するときは、このフォーマットに従う。
8
+
9
+ ## rule ファイル(`.claude/rules/*.md`)
10
+
11
+ ```markdown
12
+ ---
13
+ description: このルールの概要(1行)
14
+ paths: ["対象パス/**"] # 省略すると全ファイルに適用
15
+ ---
16
+
17
+ # ルール名
18
+
19
+ 本文...
20
+ ```
21
+
22
+ - `description` は必須。Claude がルールを選択するときに使う
23
+ - `paths` は省略可。省略すると `**` 相当(全ファイルに適用)
24
+ - 対応する `.github/instructions/{name}.instructions.md` も同時に作成・更新する
25
+ - `.github/` 版の frontmatter は `applyTo: "対象パス/**"` 形式に変換する
26
+
27
+ ## agent ファイル(`.claude/agents/*.md`)
28
+
29
+ ```markdown
30
+ ---
31
+ name: agent-name
32
+ description: いつ・何のために呼ぶかを具体的に書く(トリガー型)
33
+ tools: Read, Grep, Glob # 必要最小限のツールだけ付与
34
+ model: sonnet # 通常は sonnet
35
+ ---
36
+
37
+ # エージェント名
38
+
39
+ 本文...
40
+ ```
41
+
42
+ - `description` はトリガー型で書く(「〇〇のときに自動で呼ぶ」形式)
43
+ - `tools` は最小権限原則。読み取りのみなら `Read, Grep, Glob`
44
+ - 書き込みが必要な場合のみ `Edit, Write` を追加する
45
+ - 対応する `.github/agents/{name}.agent.md` も同時に作成・更新する
46
+
47
+ ## skill ファイル(`.claude/skills/{name}/SKILL.md`)
48
+
49
+ ```markdown
50
+ ---
51
+ name: skill-name
52
+ description: このスキルの目的と使うタイミング(1〜2行)
53
+ ---
54
+
55
+ # スキル名
56
+
57
+ 本文...
58
+ ```
59
+
60
+ - `description` は Claude がスキルを選択するときに使う。「いつ使うか」を含める
61
+ - 対応する `.github/skills/{name}/SKILL.md` も同時に作成・更新する
62
+
63
+ ## CLAUDE.md
64
+
65
+ CLAUDE.md は**全会話で常にコンテキストに読み込まれる**。書くほどコストが増えるため、最小に保つ。
66
+
67
+ ### 書いてよいもの
68
+
69
+ - よく使う skill の名前と起動タイミング(開発ワークフローの入口)
70
+ - プロジェクト全体に常時適用すべき制約(例: 言語、承認フロー)
71
+
72
+ ### 書いてはいけないもの(代わりの置き場所)
73
+
74
+ | 内容 | 正しい置き場所 |
75
+ |------|--------------|
76
+ | コーディング規約の詳細 | `.claude/rules/coding.md` |
77
+ | フォーマット定義・手順 | `.claude/rules/*.md` |
78
+ | スキルの詳細フロー | `.claude/skills/*/SKILL.md` |
79
+ | 過去の決定・背景 | `docs/02_概要設計/90_ADR/` |
80
+
81
+ ### 目安
82
+
83
+ - 20行を超えたら見直しを検討する
84
+ - 新しい内容を追加する前に「rules / skills に移せないか」を先に考える
85
+
86
+ ## 共通原則
87
+
88
+ - `.claude/` と `.github/` は常に対で更新する(片系だけ更新しない)
89
+ - `description` は「何をするか」より「**いつ・なぜ使うか**」を優先して書く
90
+ - 新規作成時は既存ファイルを参考にフォーマットを確認してから作る
@@ -0,0 +1,37 @@
1
+ ---
2
+ description: メインエージェントがサブエージェントへ委任すべきタスクの指針
3
+ ---
4
+
5
+ # サブエージェント委任ルール
6
+
7
+ **メインエージェントは判断・対話・ファイル編集に集中する。検証・調査・実行は積極的にサブエージェントへ委任する。**
8
+
9
+ ## 委任する場面と委任先
10
+
11
+ | 場面 | 委任先 | タイミング |
12
+ |------|--------|-----------|
13
+ | 設計書⇔実装の整合性確認 | `@design-reviewer` | 設計書を変更したとき、フェーズレビュー時 |
14
+ | コーディング規約チェック | `@code-reviewer` | 実装・修正が完了したとき |
15
+ | テスト実行+失敗分析 | `@test-runner` | 実装・修正が完了したとき |
16
+ | 変更の影響範囲調査 | `@impact-analyzer` | design-change で影響範囲を洗うとき |
17
+
18
+ ## 並行起動
19
+
20
+ 独立して動けるエージェントは同時に起動する。
21
+
22
+ 例: 実装完了後 → `@test-runner` と `@code-reviewer` を**同時に**起動し、両方の結果を待ってからユーザーへ報告する。
23
+
24
+ ## メインエージェントが自分でやること
25
+
26
+ サブエージェントは会話の文脈を持たない。以下はメインエージェントが担う:
27
+
28
+ - ユーザーとの対話・意思決定・承認の受け取り
29
+ - フェーズの進行管理・次のアクションの判断
30
+ - ファイルの作成・編集
31
+ - サブエージェントの結果を解釈してユーザーへ伝える
32
+
33
+ ## 原則
34
+
35
+ - ファイルの検索・調査はスケールに関わらずサブエージェントに任せる(メインのコンテキスト節約)
36
+ - 検証タスクをメインエージェントが自分でやらない
37
+ - サブエージェントの報告はポイントを絞ってユーザーへ伝える(生の出力をそのまま貼らない)
@@ -0,0 +1,15 @@
1
+ {
2
+ "hooks": {
3
+ "PostToolUse": [
4
+ {
5
+ "matcher": "Edit|Write",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "node .spec-runner/scripts/scan.js 2>&1 | tail -3"
10
+ }
11
+ ]
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -28,14 +28,14 @@ Phase 5: 次の skill へ引き渡し
28
28
  ## Phase 2: 概要設計の骨格作成
29
29
 
30
30
  1. `docs/02_概要設計/ユースケース一覧.md` を作る
31
- 2. `docs/02_概要設計/システム全体俯瞰.md` を作る
32
- 3. 必要に応じて `ユースケース/`、`外部IF一覧.md`、`非機能・運用方針.md` を追加する
31
+ 2. UC から集約・境界コンテキストを整理し `docs/02_概要設計/ドメインモデル.md` を作る
32
+ 3. `docs/02_概要設計/システム全体俯瞰.md` を作る
33
33
  4. ユーザーに確認・承認を得る
34
34
 
35
35
  ## Phase 3: アーキテクチャ判断の明文化
36
36
 
37
37
  1. ドメイン分割、責務境界、実装単位、インフラ方針を整理する
38
- 2. 必要なら `docs/02_概要設計/90_ADR/` ADR を作る
38
+ 2. 必要なら対象フォルダに ADR を作る(`90_ADR/全体/` / `ドメイン/` / `UC/` / `DB/`)
39
39
  3. ユーザーに確認・承認を得る
40
40
 
41
41
  ## Phase 4: architecture contract 作成
@@ -35,20 +35,22 @@ Phase 7: セットアップ専用 skill のアーカイブ提案
35
35
 
36
36
  ## Phase 3: skill / rule / template へ分解
37
37
 
38
+ ファイルを作成する前に **`.claude/rules/harness-formats.md`** を読み、フォーマットを確認する。
39
+
38
40
  1. 会話フローは skill にする
39
41
  2. 常時守る約束は rule にする
40
42
  3. 毎回コピーする設計書は template にする
41
43
 
42
- ### plugin-development を種として使う
44
+ ### docs-driven-seed を種として使う
43
45
 
44
- 新規開発フローの skill を作る場合は、`plugin-development` を種として使う。
45
- `plugin-development` はプラグイン型アーキテクチャ向けの reference workflow であり、
46
+ 新規開発フローの skill を作る場合は、`docs-driven-seed` を種として使う。
47
+ `docs-driven-seed` UC/DDD 駆動の docs 正本開発フローの参照実装であり、
46
48
  そのまま使うのではなく、**このプロジェクトのアーキテクチャに合わせて書き換えた project 専用 skill を作る**ことを目的とする。
47
49
 
48
50
  具体的には:
49
- - `.claude/skills/plugin-development/SKILL.md` をコピーして、project 専用の開発 skill の土台にする
51
+ - `.claude/skills/docs-driven-seed/SKILL.md` をコピーして、project 専用の開発 skill の土台にする
50
52
  - フェーズ構成・テンプレートパス・用語をこのプロジェクトの実態に合わせて書き換える
51
- - 元の `plugin-development` は書き換え完了後にアーカイブ候補とする(Phase 7 で提案する)
53
+ - 元の `docs-driven-seed` は書き換え完了後にアーカイブ候補とする(Phase 7 で提案する)
52
54
 
53
55
  ユーザーに確認・承認を得る
54
56
 
@@ -109,7 +111,7 @@ Phase 7: セットアップ専用 skill のアーカイブ提案
109
111
  |---|---|
110
112
  | `architecture-definition` | 新規プロジェクト初期化専用。アーキテクチャ確定後は不要 |
111
113
  | `existing-project-to-docs` | 既存プロジェクト取り込み専用。docs 生成後は不要 |
112
- | `plugin-development` | Phase 3 で project 専用 skill の種として使い終えたら不要 |
114
+ | `docs-driven-seed` | Phase 3 で project 専用 skill の種として使い終えたら不要 |
113
115
  | `architecture-skill-development`(このファイル自身) | project 専用 skill が安定したら不要。ただしアーキテクチャが大きく変わる場合は再利用する可能性があるため、削除ではなくアーカイブを推奨 |
114
116
 
115
117
  ### 手順
@@ -117,6 +119,20 @@ Phase 7: セットアップ専用 skill のアーカイブ提案
117
119
  1. 上記の候補をユーザーに提示し、整理してよいか確認する
118
120
  2. 承認を得た skill を `.claude/skills/` と `.github/skills/` から削除する
119
121
  3. 必要であれば削除前にバックアップ先をユーザーに伝える
122
+ 4. `.spec-runner/` の不要ファイルも整理する
123
+ - `intake/current-system-inventory.md` — docs に昇格済みなら削除してよい
124
+ - `architecture/architecture.yaml` — project 専用 skill が完成し、参照不要になったら削除してよい
125
+ 5. `CLAUDE.md` を更新する
126
+ - 「初回自動起動」セクション(spec-runner インストール時に生成されたもの)を削除する
127
+ - 作成した project 専用 skill の名前と使いどころを記載する
128
+ - 例:
129
+ ```markdown
130
+ ## 開発ワークフロー
131
+ 新機能を実装するときは `/feature-development` を使う。
132
+ 既存機能を変更するときは `/design-change` を使う。
133
+ テストを書くときは `/test-driven-development` を使う。
134
+ ```
135
+ - `.claude/` と `.github/` 両系で内容が変わる場合は、それぞれに反映する
120
136
 
121
137
  ## 原則
122
138
 
@@ -30,7 +30,7 @@ Phase 6: TDD → 実装 → 検証
30
30
  - 影響を受ける機能カテゴリ
31
31
  - 技術的・ビジネス的制約
32
32
  2. 変更起点となる docs を特定する
33
- 3. frontmatter `depends_on` / `maps_to` を使って影響候補を軽く洗う
33
+ 3. `@impact-analyzer` に委任して `depends_on` / `maps_to` を辿る影響ファイルを洗い出す
34
34
  4. 変更が影響するドメインと成果物を一覧化する
35
35
  5. ユーザーに確認・承認を得る
36
36
 
@@ -41,16 +41,16 @@ Phase 6: TDD → 実装 → 検証
41
41
  3. 各案について概要・メリット・デメリット・適合性を示す
42
42
  4. ユーザーが案を決定する
43
43
  5. テンプレート `templates/90_ADR/ADRテンプレート.md` をコピーして生成する
44
- 6. ファイル名は `ADR-0001-{slug}.md` 形式にする
44
+ 6. ファイル名は `mmdd-{日本語タイトル}.md`、配置先は対象フォルダ
45
45
 
46
46
  ### ADR 配置ルール
47
47
 
48
- | 変更スコープ | 配置先 |
49
- |------------|--------|
50
- | 横断的な決定 | `docs/02_概要設計/90_ADR/` |
51
- | 特定ドメイン寄りの決定 | `docs/02_概要設計/<ドメイン>/90_ADR/` |
52
-
53
- MVP では `docs/02_概要設計/90_ADR/` に集約する。
48
+ | 対象 | 配置先 |
49
+ |------|--------|
50
+ | システム横断の決定 | `docs/02_概要設計/90_ADR/全体/` |
51
+ | ドメイン設計の決定 | `docs/02_概要設計/90_ADR/ドメイン/` |
52
+ | UC フローの決定 | `docs/02_概要設計/90_ADR/UC/` |
53
+ | DB・外部サービスの決定 | `docs/02_概要設計/90_ADR/DB/` |
54
54
 
55
55
  ## Phase 3: 影響ドキュメントの確定
56
56
 
@@ -62,7 +62,7 @@ MVP では `docs/02_概要設計/90_ADR/` に集約する。
62
62
 
63
63
  ## Phase 4: 概要設計の修正
64
64
 
65
- 1. `ユースケース一覧.md` / `システム全体俯瞰.md` / UC 個別文書 / ADR を必要順に修正する
65
+ 1. `ユースケース一覧.md` / `システム全体俯瞰.md` / `ドメインモデル.md` / ADR を必要順に修正する
66
66
  2. 修正完了ごとにチェックリストを更新する
67
67
  3. 全概要設計の修正完了後、ユーザーに確認・承認を得る
68
68
 
@@ -73,10 +73,11 @@ MVP では `docs/02_概要設計/90_ADR/` に集約する。
73
73
 
74
74
  ## Phase 5: 詳細設計の修正
75
75
 
76
- 1. `docs/03_詳細設計/src/**` を `src/` ミラーで修正する
77
- 2. 補助設計が必要な場合だけ `docs/03_詳細設計/infrastructure/**` を修正する
78
- 3. frontmatter `depends_on` / `maps_to` を更新する
79
- 4. ユーザーに最終確認を得る
76
+ 1. `docs/03_詳細設計/01_ドメイン/**` のドメイン設計を修正する
77
+ 2. `docs/03_詳細設計/02_ユースケース/**` の UC 設計を修正する
78
+ 3. DB・外部サービスの変更がある場合は `docs/03_詳細設計/03_DB・外部サービス/**` を修正する
79
+ 4. frontmatter の `depends_on` / `maps_to` を更新する
80
+ 5. ユーザーに最終確認を得る
80
81
 
81
82
  ## Phase 6: TDD → 実装 → 検証
82
83
 
@@ -7,7 +7,7 @@ spec_runner:
7
7
  maps_to: []
8
8
  ---
9
9
 
10
- # ADR-0001 {決定内容のタイトル}
10
+ # {決定内容のタイトル}
11
11
 
12
12
  **ステータス**: 提案 / 採用 / 廃止 / 置換
13
13
  **日付**: YYYY-MM-DD