spec-runner 1.1.16 → 1.1.18

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 (58) hide show
  1. package/bin/spec-runner-installer.js +63 -0
  2. package/package.json +1 -1
  3. package/spec-runner/templates/.claude/agents/code-reviewer.md +2 -8
  4. package/spec-runner/templates/.claude/agents/design-reviewer.md +6 -12
  5. package/spec-runner/templates/.claude/agents/impact-analyzer.md +4 -9
  6. package/spec-runner/templates/.claude/agents/test-runner.md +6 -10
  7. package/spec-runner/templates/.claude/rules/coding.md +28 -79
  8. package/spec-runner/templates/.claude/rules/design-docs.md +28 -10
  9. package/spec-runner/templates/.claude/rules/harness-formats.md +10 -7
  10. package/spec-runner/templates/.claude/rules/sub-agent-delegation.md +1 -1
  11. package/spec-runner/templates/.claude/skills/architecture-definition/SKILL.md +43 -15
  12. package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +56 -30
  13. package/spec-runner/templates/.claude/skills/commit/SKILL.md +1 -1
  14. package/spec-runner/templates/.claude/skills/design-change/SKILL.md +19 -11
  15. package/spec-runner/templates/.claude/skills/design-change/references//345/275/261/351/237/277/347/257/204/345/233/262/343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +30 -37
  16. 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 +0 -32
  17. package/spec-runner/templates/.claude/skills/docs-driven-seed/SKILL.md +10 -26
  18. package/spec-runner/templates/.claude/skills/docs-driven-seed/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//343/203/246/343/203/223/343/202/255/343/202/277/343/202/271/350/250/200/350/252/236/350/276/236/346/233/270.md +15 -0
  19. package/spec-runner/templates/.claude/skills/docs-driven-seed/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//350/246/201/344/273/266/345/256/232/347/276/251.md +34 -0
  20. package/spec-runner/templates/.claude/skills/docs-driven-seed/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.md +33 -0
  21. package/spec-runner/templates/.claude/skills/docs-driven-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253.md +32 -0
  22. package/spec-runner/templates/.claude/skills/docs-driven-seed/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.md +15 -0
  23. 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 +17 -0
  24. package/spec-runner/templates/.claude/skills/existing-project-to-docs/SKILL.md +13 -6
  25. package/spec-runner/templates/.claude/skills/harness-engineering/SKILL.md +9 -11
  26. package/spec-runner/templates/.claude/skills/simple-seed/SKILL.md +102 -0
  27. package/spec-runner/templates/.claude/skills/simple-seed/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.md +33 -0
  28. package/spec-runner/templates/.claude/skills/simple-seed/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.md +15 -0
  29. package/spec-runner/templates/.claude/skills/simple-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/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 +53 -0
  30. package/spec-runner/templates/.claude/skills/test-driven-development/SKILL.md +20 -19
  31. package/spec-runner/templates/.github/agents/code-reviewer.agent.md +2 -8
  32. package/spec-runner/templates/.github/agents/design-reviewer.agent.md +6 -12
  33. package/spec-runner/templates/.github/agents/impact-analyzer.agent.md +4 -9
  34. package/spec-runner/templates/.github/agents/test-runner.agent.md +6 -10
  35. package/spec-runner/templates/.github/instructions/coding.instructions.md +27 -78
  36. package/spec-runner/templates/.github/instructions/design-docs.instructions.md +28 -10
  37. package/spec-runner/templates/.github/instructions/harness-formats.instructions.md +10 -7
  38. package/spec-runner/templates/.github/instructions/sub-agent-delegation.instructions.md +1 -1
  39. package/spec-runner/templates/.github/skills/architecture-definition/SKILL.md +43 -15
  40. package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +54 -28
  41. package/spec-runner/templates/.github/skills/commit/SKILL.md +1 -1
  42. package/spec-runner/templates/.github/skills/design-change/SKILL.md +19 -11
  43. package/spec-runner/templates/.github/skills/design-change/references//345/275/261/351/237/277/347/257/204/345/233/262/343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +30 -37
  44. 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 +0 -32
  45. package/spec-runner/templates/.github/skills/docs-driven-seed/SKILL.md +10 -26
  46. package/spec-runner/templates/.github/skills/docs-driven-seed/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//343/203/246/343/203/223/343/202/255/343/202/277/343/202/271/350/250/200/350/252/236/350/276/236/346/233/270.md +15 -0
  47. package/spec-runner/templates/.github/skills/docs-driven-seed/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//350/246/201/344/273/266/345/256/232/347/276/251.md +34 -0
  48. package/spec-runner/templates/.github/skills/docs-driven-seed/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.md +33 -0
  49. package/spec-runner/templates/.github/skills/docs-driven-seed/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253.md +32 -0
  50. package/spec-runner/templates/.github/skills/docs-driven-seed/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.md +15 -0
  51. 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 +17 -0
  52. package/spec-runner/templates/.github/skills/existing-project-to-docs/SKILL.md +13 -6
  53. package/spec-runner/templates/.github/skills/harness-engineering/SKILL.md +10 -12
  54. package/spec-runner/templates/.github/skills/simple-seed/SKILL.md +102 -0
  55. package/spec-runner/templates/.github/skills/simple-seed/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.md +33 -0
  56. package/spec-runner/templates/.github/skills/simple-seed/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.md +15 -0
  57. package/spec-runner/templates/.github/skills/simple-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/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 +53 -0
  58. package/spec-runner/templates/.github/skills/test-driven-development/SKILL.md +20 -19
@@ -4,89 +4,44 @@ applyTo: "src/**,tests/**"
4
4
 
5
5
  # コーディング規約
6
6
 
7
+ > このファイルはテンプレートです。`architecture-skill-development` で言語・フレームワーク・プロジェクト構造に合わせて書き換えてください。
8
+
7
9
  ## 命名規則
8
10
 
11
+ > 以下の表をプロジェクトの言語・規約に合わせて書き換える。
12
+
9
13
  | 対象 | 規則 | 例 |
10
14
  |------|------|-----|
11
- | ファイル名 | snake_case | `domain.py`, `journal_search.py` |
12
- | クラス名 | PascalCase | `CheckExecution`, `AccountBalance` |
13
- | 関数・メソッド | snake_case | `aggregate_by_account()`, `determine_severity()` |
14
- | 変数 | snake_case | `journal_entries`, `diff_amount` |
15
- | 定数 | UPPER_SNAKE_CASE | `THRESHOLD_ERROR`, `_VALID_SEVERITIES` |
16
- | モジュール内部定数 | _UPPER_SNAKE_CASE(先頭アンダースコア) | `_THRESHOLD_WARNING` |
17
- | テストクラス | Test + PascalCase | `TestDetermineSeverity` |
18
- | テストメソッド | test_ + snake_case(日本語不可) | `test_empty_entries_raises` |
19
- | ディレクトリ | snake_case | `agents/reconciliation/`, `plugins/tools/` |
20
-
21
- ## コメント・docstring
15
+ | ファイル名 | `<規則>` | `<例>` |
16
+ | クラス名 | `<規則>` | `<例>` |
17
+ | 関数・メソッド | `<規則>` | `<例>` |
18
+ | 変数 | `<規則>` | `<例>` |
19
+ | 定数 | `<規則>` | `<例>` |
20
+ | テストクラス | `<規則>` | `<例>` |
21
+ | テストメソッド | `<規則>` | `<例>` |
22
+ | ディレクトリ | `<規則>` | `<例>` |
23
+
24
+ ## コメント
22
25
 
23
26
  - **言語**: 日本語
24
- - **docstring**: モジュール先頭に1行で概要を書く。関数・クラスには原則不要(名前で意図が伝わる場合)
25
27
  - **インラインコメント**: ビジネスロジックの「なぜ」を説明する場合のみ。処理内容の「何」は書かない
26
- - **変更履歴コメント禁止**: `# 新機能追加`, `# ここを修正`, `# v2 で変更` のような変更経緯はコードに書かない。git の commit message で管理する
28
+ - **変更履歴コメント禁止**: 変更経緯はコードに書かない。git の commit message で管理する
27
29
 
28
- ```python
29
- # 良い例
30
- # 貸方は負の値として扱う(借方 - 貸方 = 残高)
31
- balances[credit_key] = balances.get(credit_key, 0) - entry.credit_amount
32
- ```
30
+ ## 言語・型固有ルール
33
31
 
34
- ##
32
+ > このセクションを言語・フレームワークに合わせて書き換える。
35
33
 
36
- - Python 3.12+ のビルトイン型を使用(`list[str]`, `dict[str, int]`, `str | None`)
37
- - `typing` モジュールのインポートは不要(`List`, `Dict`, `Optional` は使わない)
38
- - dataclass の `frozen=True` を値オブジェクトに使用
34
+ `<your-language-and-type-rules>`
39
35
 
40
36
  ## テスト
41
37
 
42
- - テストファイルは実装と同じディレクトリ構造: `tests/agents/reconciliation/test_domain.py`
43
- - TDDサイクル: RED → GREEN → REFACTOR
38
+ - テストファイルは実装と同じディレクトリ構造を維持する(`tests/` 配下に `src/` と同じ構造)
39
+ - TDD サイクル: RED → GREEN → REFACTOR
44
40
 
45
41
  ### テストコメント規約
46
42
 
47
- - **docstring**: 全テストメソッドにテスト意図を日本語1行で書く(メソッド名の言い換えではなく「なぜそのテストが必要か」を書く)
48
- - **セクション区切り**: テストクラスが3つ以上あるファイルでは、クラス間に区切りコメントを入れる
49
-
50
- ```python
51
- # ============================================================
52
- # 重要度判定
53
- # ============================================================
54
- class TestDetermineSeverity:
55
- ```
56
-
57
- - **準備・実行・検証**: セットアップが5行以上のテストでは `# 準備` / `# 実行` / `# 検証` で構造を明示する。`—` で簡潔な意図を添える(推奨)
58
-
59
- ```python
60
- def test_full_flow(self):
61
- """集計→比較→分析の全フローが動作する"""
62
- # 準備 — 仕訳と調書に50K円の差異を作る
63
- agent = self._make_agent()
64
- entries = [_make_entry("売掛金", "売上高", 1_000_000)]
65
- worksheet = [_make_balance("worksheet", "売掛金", 950_000)]
66
-
67
- # 実行
68
- results = agent.run_check(entries, worksheet, [])
69
-
70
- # 検証 — 差異がある科目のみ返る
71
- assert len(results) == 1
72
- assert results[0].severity.value == "error"
73
- ```
74
-
75
- - **インラインコメント**: データ構造やモック応答の意図が分かりにくい箇所には積極的にコメントを付ける。特にリスト要素やside_effectの各要素には `# 計画`、`# 1パス目分析` のように役割を明示する
76
-
77
- ```python
78
- llm.chat.side_effect = [
79
- plan_json, # 計画
80
- _make_analysis_response(), # 1パス目分析
81
- investigation_needs, # 調査判断1: 追加調査必要
82
- _make_analysis_response(), # 再分析1
83
- # ここで上限到達 → ループ終了
84
- ]
85
-
86
- # 1回目: 途中で切れたJSON、2回目: リトライで正しいJSON
87
- truncated_json = '[{"account_name": "売掛金", ...'
88
- ```
89
-
43
+ - **意図の記述**: 全テストにテスト意図を日本語 1 行で書く(メソッド名の言い換えではなく「なぜそのテストが必要か」を書く)
44
+ - **準備・実行・検証**: セットアップが 5 行以上のテストでは `# 準備` / `# 実行` / `# 検証` で構造を明示する
90
45
  - **英語コメント禁止**: `Arrange` / `Act` / `Assert` 等の英語は使わない
91
46
 
92
47
  ## 後方互換ハックの禁止
@@ -94,23 +49,17 @@ truncated_json = '[{"account_name": "売掛金", ...'
94
49
  使われなくなったコードは完全に削除する。互換性維持のための温存は行わない。
95
50
 
96
51
  禁止パターン:
97
- - 未使用の引数・変数を `_` プレフィックスで残す(`_old_param`)
98
- - 削除した型・関数を `from x import Y` で再公開する
52
+ - 使われない引数・変数を残す
53
+ - 削除した型・関数を再公開する
99
54
  - `# removed`, `# deprecated`, `# 旧実装` コメントとともにコードを残す
100
55
  - 後方互換用のラッパー関数・エイリアスを追加する
101
56
 
102
57
  ## 検索ルール
103
58
 
104
59
  - コードの検索・置換は `src/` と `tests/` の両方を対象にする
105
- - 日本語のキーワード(後方互換、レガシー等)も検索対象に含める
106
60
 
107
61
  ## プロジェクト構造
108
62
 
109
- ```
110
- src/
111
- agents/{agent_name}/ # agent.py, domain.py, prompts.py, config.py
112
- plugins/tools/{tool}/ # tool.py
113
- plugins/skills/{skill}/ # skill.py
114
- web/ # FastAPI + HTMX
115
- tests/ # src/ と同じ構造
116
- ```
63
+ > `architecture.yaml` の `folder_structure` に合わせて書き換える。
64
+
65
+ `<your-project-structure>`
@@ -6,20 +6,21 @@ applyTo: "docs/**"
6
6
 
7
7
  ## フェーズ管理
8
8
 
9
- - **ユーザー承認なしにフェーズを進めない**
9
+ - ユーザー承認なしにフェーズを進めない
10
10
  - フェーズは必ず `要件定義 -> 概要設計 -> 詳細設計 -> TDD -> 実装` の順に進める
11
11
 
12
12
  ## テンプレート
13
13
 
14
- - **設計書は必ずテンプレートをコピーして生成する。独自にゼロから作成しない**
14
+ - 設計書は必ずテンプレートをコピーして生成する。独自にゼロから作成しない
15
15
  - 手順: テンプレートを読む → 出力先へコピーする → プレースホルダーを埋める
16
16
 
17
17
  ## frontmatter
18
18
 
19
- - **`docs/**` の全設計書に frontmatter を付ける**
19
+ - `docs/**` の全設計書に frontmatter を付ける
20
20
  - 正本の必須項目は `spec_runner.node_id` / `spec_runner.kind` / `spec_runner.depends_on` / `spec_runner.maps_to`
21
21
  - `depends_on` はまず文字列配列でよい。依存理由が必要な場合のみオブジェクト形式を使う
22
- - `maps_to` には見直し対象となる `src/` / `tests/` / IaC / 設定ファイルを列挙する。**必ず設定する(空にしない)**
22
+ - `maps_to` には `src/` / `tests/` / IaC / 設定ファイルを列挙する。必ず設定する(空にしない)
23
+ - ADR は `node_id` と `kind` のみ。`depends_on` / `maps_to` は不要(決定の記録であり実装トレーサビリティに乗らない)
23
24
  - `modules` / `source_files` などの拡張項目を足す場合でも、`maps_to` と矛盾させない
24
25
 
25
26
  ```yaml
@@ -64,7 +65,7 @@ spec_runner:
64
65
 
65
66
  ## ADR
66
67
 
67
- - **ADR は必ず 3 案を比較してから採用案を決める**
68
+ - ADR は提案時に必ず 3 案を比較してから採用案を決める。ドキュメントには採用案と採用理由のみ記録する
68
69
  - ADR は `docs/02_概要設計/90_ADR/{対象}/` で管理する(`全体` / `ドメイン` / `UC` / `DB`)
69
70
  - ファイル名は `mmdd-{日本語タイトル}.md`。対象はフォルダで表す
70
71
  - ADR は理由の記録であり、詳細設計の代わりにしない
@@ -72,8 +73,25 @@ spec_runner:
72
73
 
73
74
  ## 文書品質
74
75
 
75
- - **概要設計では「何をするか」を書き、コード片・DDL・クラス定義は持ち込まない**
76
- - **詳細設計ではドメインルール・UC の責務・入出力・判断条件・テスト観点を書く。コード・プロンプト本文は書かない**
77
- - **`maps_to` を唯一の src 対応として使う。パス推定に頼らない**
78
- - **Markdown HTML タグ(details, summary, br など)を使わない**
79
- - **`概要.md` のような汎用的な名前のファイルは作らない。内容を具体的に示す名前(`要件定義.md`、`ユースケース一覧.md`、`システム全体俯瞰.md` など)を使う**
76
+ - docs にコードを書かない(コード片・DDL・クラス定義・プロンプト本文)。コードは `src/` / `tests/` に書く
77
+ - 概要設計では「何をするか」を書く。実装の詳細は持ち込まない
78
+ - 詳細設計ではドメインルール・UC の責務・入出力・判断条件・テスト観点を書く
79
+ - `maps_to` を唯一の src 対応として使う。パス推定に頼らない
80
+ - Markdown HTML タグ(details, summary, br など)を使わない
81
+ - 設計書に絵文字を使わない
82
+ - `概要.md` のような汎用的な名前は使わない(`要件定義.md`、`ユースケース一覧.md` のように内容を示す名前にする)
83
+ - 「関連ドキュメント」セクションを設計書に作らない。依存関係は frontmatter の `depends_on` で管理する
84
+ - 「スケジュール」セクションを設計書に作らない。進捗管理は設計書の責務ではない
85
+
86
+ ## ドメインモデルとデータモデルの分離
87
+
88
+ ドメインモデルとデータモデルは別物であり、置き場所も内容も分ける。
89
+
90
+ | 種別 | 内容 | 置き場所 |
91
+ |------|------|---------|
92
+ | ドメインモデル | ビジネスルール・集約・値オブジェクト・不変条件 | `docs/03_詳細設計/01_ドメイン/` |
93
+ | データモデル | DBスキーマ・テーブル定義・カラム定義・インデックス | `docs/03_詳細設計/03_DB・外部サービス/` |
94
+
95
+ - `01_ドメイン/` に DB スキーマ・テーブル定義・カラム定義を書かない
96
+ - `03_DB・外部サービス/` にビジネスルール・ドメインロジックを書かない
97
+ - 概要設計の `ドメインモデル.md` も同様。集約と境界コンテキストの概念図であり、永続化の構造ではない
@@ -18,7 +18,7 @@ applyTo: "対象パス/**" # 省略すると "**"(全ファイルに適用
18
18
  本文...
19
19
  ```
20
20
 
21
- - 対応する `.claude/rules/{name}.md` も同時に作成・更新する
21
+ - `integrations` に `claude` が含まれる場合、対応する `.claude/rules/{name}.md` も作成・更新する
22
22
 
23
23
  ## agent ファイル(`.github/agents/*.agent.md`)
24
24
 
@@ -37,7 +37,7 @@ model: sonnet
37
37
 
38
38
  - `description` はトリガー型で書く(「〇〇のときに自動で呼ぶ」形式)
39
39
  - `tools` は最小権限原則。読み取りのみなら `Read, Grep, Glob`
40
- - 対応する `.claude/agents/{name}.md` も同時に作成・更新する
40
+ - `integrations` に `claude` が含まれる場合、対応する `.claude/agents/{name}.md` も作成・更新する
41
41
 
42
42
  ## skill ファイル(`.github/skills/{name}/SKILL.md`)
43
43
 
@@ -52,11 +52,11 @@ description: このスキルの目的と使うタイミング(1〜2行)
52
52
  本文...
53
53
  ```
54
54
 
55
- - 対応する `.claude/skills/{name}/SKILL.md` も同時に作成・更新する
55
+ - `integrations` に `claude` が含まれる場合、対応する `.claude/skills/{name}/SKILL.md` も作成・更新する
56
56
 
57
57
  ## CLAUDE.md
58
58
 
59
- CLAUDE.md は**全会話で常にコンテキストに読み込まれる**。書くほどコストが増えるため、最小に保つ。
59
+ CLAUDE.md は全会話で常にコンテキストに読み込まれる。書くほどコストが増えるため、最小に保つ。
60
60
 
61
61
  ### 書いてよいもの
62
62
 
@@ -74,11 +74,14 @@ CLAUDE.md は**全会話で常にコンテキストに読み込まれる**。書
74
74
 
75
75
  ### 目安
76
76
 
77
- - 20行を超えたら見直しを検討する
77
+ - 20 行を超えたら見直しを検討する
78
78
  - 新しい内容を追加する前に「instructions / skills に移せないか」を先に考える
79
79
 
80
80
  ## 共通原則
81
81
 
82
- - `.claude/` `.github/` は常に対で更新する(片系だけ更新しない)
83
- - `description` は「何をするか」より「**いつ・なぜ使うか**」を優先して書く
82
+ - 更新する連携先は `architecture.yaml` `integrations` に従う
83
+ - `claude` のみ → `.claude/` だけ更新する。`.github/` を作成しない
84
+ - `github` のみ → `.github/` だけ更新する。`.claude/` を作成しない
85
+ - 両方 → `.claude/` と `.github/` を対で更新する
86
+ - `description` は「何をするか」より「いつ・なぜ使うか」を優先して書く
84
87
  - 新規作成時は既存ファイルを参考にフォーマットを確認してから作る
@@ -4,7 +4,7 @@ applyTo: "**"
4
4
 
5
5
  # サブエージェント委任ルール
6
6
 
7
- **メインエージェントは判断・対話・ファイル編集に集中する。検証・調査・実行は積極的にサブエージェントへ委任する。**
7
+ メインエージェントは判断・対話・ファイル編集に集中する。検証・調査・実行は積極的にサブエージェントへ委任する。
8
8
 
9
9
  ## 委任する場面と委任先
10
10
 
@@ -6,31 +6,54 @@ description: 新規プロジェクトで docs と `.spec-runner/architecture/arc
6
6
  # architecture-definition
7
7
 
8
8
  新規プロジェクト向けの初期化フロー。
9
- 要件定義から概要設計、architecture contract の作成までを先に固め、その後に project 専用 skill の開発へ渡す。
9
+ 要件定義・フォルダ構造の決定・architecture contract の作成までを先に固め、スキル整備を経てから概要設計へ進む。
10
10
 
11
11
  ## 全体フロー
12
12
 
13
13
  ```
14
14
  Phase 1: 要件整理
15
- Phase 2: 概要設計の骨格作成
15
+ Phase 2: フォルダ構造の決定(対話)
16
16
  Phase 3: アーキテクチャ判断の明文化
17
17
  Phase 4: architecture contract 作成
18
- Phase 5: 次の skill へ引き渡し
18
+ Phase 5: architecture-skill-development へ自動移行
19
+ └→ スキル整備完了後、プロジェクト専用スキルで概要設計へ進む
19
20
  ```
20
21
 
21
22
  ## Phase 1: 要件整理
22
23
 
24
+ テンプレート: `.claude/skills/docs-driven-seed/templates/01_要件定義/`
25
+
23
26
  1. ユーザーから背景、提供価値、制約、スコープ外を確認する
24
- 2. `docs/01_要件定義/要件定義.md` を作る
25
- 3. frontmatter を付ける
26
- 4. ユーザーに確認・承認を得る
27
+ 2. テンプレートをコピーして `docs/01_要件定義/要件定義.md` を作る
28
+ 3. ドメイン用語が出てきたら `docs/01_要件定義/ユビキタス言語辞書.md` に随時追記する
29
+ 4. アーキテクチャスタイルを選択する
30
+
31
+ | スタイル | 選ぶ基準 |
32
+ |---------|---------|
33
+ | `ddd` | 複雑なビジネスドメインがある。集約・境界コンテキストで設計する必要がある |
34
+ | `layered` | CRUD 中心またはビジネスロジックがシンプル。UC・サービス層で設計すれば十分 |
35
+
36
+ 5. 使用する AI 連携を確認する
37
+
38
+ | 連携 | フォルダ |
39
+ |------|---------|
40
+ | `claude` | `.claude/`(Claude Code) |
41
+ | `github` | `.github/`(GitHub Copilot) |
42
+ | 両方 | `.claude/` と `.github/` |
27
43
 
28
- ## Phase 2: 概要設計の骨格作成
44
+ 6. ユーザーに確認・承認を得る
29
45
 
30
- 1. `docs/02_概要設計/ユースケース一覧.md` を作る
31
- 2. UC から集約・境界コンテキストを整理し `docs/02_概要設計/ドメインモデル.md` を作る
32
- 3. `docs/02_概要設計/システム全体俯瞰.md` を作る
33
- 4. ユーザーに確認・承認を得る
46
+ ## Phase 2: フォルダ構造の決定
47
+
48
+ 対話でプロジェクトのフォルダ構造を決める。この段階で決めた構造がテンプレートの `maps_to` パスに焼き込まれるため、概要設計より前に確定させる。
49
+
50
+ 1. 以下をユーザーと対話しながら決める
51
+ - `src/` 配下のパッケージ・モジュール構成
52
+ - `tests/` の種別ディレクトリ構成(`unit/` / `integration/` / `e2e/` など)
53
+ - `docs/` の構成(デフォルトから変える場合)
54
+ - その他プロジェクト固有のディレクトリ(IaC、設定ファイルなど)
55
+ 2. 決定した構造を箇条書きでまとめてユーザーに提示する
56
+ 3. ユーザーに確認・承認を得る
34
57
 
35
58
  ## Phase 3: アーキテクチャ判断の明文化
36
59
 
@@ -42,7 +65,10 @@ Phase 5: 次の skill へ引き渡し
42
65
 
43
66
  1. `.spec-runner/architecture/architecture.yaml` を作る
44
67
  2. 最低限、以下を構造化する
45
- - domain_structure
68
+ - **integrations**: Phase 1 で確認した連携(`[claude]` / `[github]` / `[claude, github]`)
69
+ - **style**: Phase 1 で選択したスタイル(`ddd` / `layered`)
70
+ - **folder_structure**: Phase 2 で決定した構造(`src/` / `tests/` / `docs/` など)
71
+ - domain_structure(style: ddd のときのみ)
46
72
  - runtime_units
47
73
  - design_policy
48
74
  - testing_policy
@@ -50,14 +76,16 @@ Phase 5: 次の skill へ引き渡し
50
76
 
51
77
  ## Phase 5: architecture-skill-development へ自動移行
52
78
 
53
- Phase 4 が承認されたら、**ユーザーにコマンドを打たせずに `architecture-skill-development` を続けて開始する**。
79
+ Phase 4 が承認されたら、ユーザーにコマンドを打たせずに `architecture-skill-development` を続けて開始する。
54
80
 
55
- 1. `architecture-skill-development` に渡す前提(docsarchitecture.yaml の所在)を要約する
81
+ 1. `architecture-skill-development` に渡す前提(docsarchitecture.yaml・確定済みフォルダ構造)を要約する
56
82
  2. project 専用 skill に切り出すべき反復フローを列挙する
57
83
  3. 確認なしに `architecture-skill-development` Phase 1 へ進む
84
+ 4. スキル整備完了後、プロジェクト専用スキルを使って概要設計へ進む
58
85
 
59
86
  ## 原則
60
87
 
61
- - docs を先に作る
88
+ - フォルダ構造を概要設計より前に確定する
89
+ - スキル整備が完了してから概要設計へ進む(テンプレートの `maps_to` を確定済み構造で焼き込むため)
62
90
  - `.spec-runner/` は補助情報として扱う
63
91
  - project 専用 skill を作る前にアーキテクチャを固める
@@ -15,14 +15,13 @@ Phase 1: 入力の確認
15
15
  Phase 2: 反復フローの抽出
16
16
  Phase 3: skill / rule / template へ分解
17
17
  Phase 4: 基盤 skill のプロジェクト固有化
18
- Phase 5: Claude / Copilot テンプレートへ反映
19
- Phase 6: 一貫性の検証
20
- Phase 7: セットアップ専用 skill のアーカイブ提案
18
+ Phase 5: 一貫性の検証
19
+ Phase 6: セットアップ専用 skill のアーカイブ提案
21
20
  ```
22
21
 
23
22
  ## Phase 1: 入力の確認
24
23
 
25
- 1. `docs/01_要件定義/**`, `docs/02_概要設計/**`, `docs/03_詳細設計/**` を読む
24
+ 1. `docs/01_要件定義/**` を読む
26
25
  2. `.spec-runner/architecture/architecture.yaml` を読む
27
26
  3. 固定化すべき判断と project 固有判断を切り分ける
28
27
 
@@ -35,34 +34,42 @@ Phase 7: セットアップ専用 skill のアーカイブ提案
35
34
 
36
35
  ## Phase 3: skill / rule / template へ分解
37
36
 
38
- ファイルを作成する前に **`.github/instructions/harness-formats.instructions.md`** を読み、フォーマットを確認する。
37
+ ファイルを作成する前に `.github/instructions/harness-formats.instructions.md` を読み、フォーマットを確認する。
39
38
 
40
39
  1. 会話フローは skill にする
41
40
  2. 常時守る約束は rule にする
42
41
  3. 毎回コピーする設計書は template にする
43
42
 
44
- ### docs-driven-seed を種として使う
43
+ ### seed の選択
45
44
 
46
- 新規開発フローの skill を作る場合は、`docs-driven-seed` を種として使う。
47
- `docs-driven-seed` は UC/DDD 駆動の docs 正本開発フローの参照実装であり、
48
- そのまま使うのではなく、**このプロジェクトのアーキテクチャに合わせて書き換えた project 専用 skill を作る**ことを目的とする。
45
+ `architecture.yaml` `style` を読み、使う seed を決める。
46
+
47
+ | style | 使う seed | 説明 |
48
+ |-------|----------|------|
49
+ | `ddd` | `docs-driven-seed` | ドメイン層(集約・値オブジェクト)を持つ DDD 向けフロー |
50
+ | `layered` | `simple-seed` | ドメイン層を持たない UC・サービス層中心のフロー |
51
+
52
+ 選んだ seed の SKILL.md をコピーして、このプロジェクトのアーキテクチャに合わせて書き換えた project 専用 skill を作ることを目的とする。
49
53
 
50
54
  具体的には:
51
- - `.claude/skills/docs-driven-seed/SKILL.md` をコピーして、project 専用の開発 skill の土台にする
55
+ - 選んだ seedSKILL.md をコピーして、project 専用の開発 skill の土台にする
52
56
  - フェーズ構成・テンプレートパス・用語をこのプロジェクトの実態に合わせて書き換える
53
- - 元の `docs-driven-seed` は書き換え完了後にアーカイブ候補とする(Phase 7 で提案する)
57
+ - Phase 1(要件定義)は architecture-definition で完了済みのため削除する
58
+ - 元の seed は書き換え完了後にアーカイブ候補とする(Phase 6 で提案する)
54
59
 
55
- ユーザーに確認・承認を得る
60
+ 4. ユーザーに確認・承認を得る
56
61
 
57
62
  ## Phase 4: 基盤 skill のプロジェクト固有化
58
63
 
59
64
  インストール時に配布された基盤 skill のプレースホルダーを、このプロジェクトの実態に書き換える。
60
65
 
66
+ > 以降の書き換えはすべて `architecture.yaml` の `integrations` に従う。`claude` のみなら `.claude/` だけ、`github` のみなら `.github/` だけ、両方なら対で更新する。
67
+
61
68
  ### test-driven-development の書き換え
62
69
 
63
70
  `architecture.yaml` の `testing_policy` と `language` を参照して、以下を実際の値に置き換える。
64
71
 
65
- 1. **テスト実行コマンド** `<your-test-command>` を実際のコマンドに書き換える
72
+ 1. **テスト実行コマンド**: `<your-test-command>` を実際のコマンドに書き換える
66
73
 
67
74
  例:
68
75
  ```bash
@@ -76,34 +83,52 @@ Phase 7: セットアップ専用 skill のアーカイブ提案
76
83
  docker compose run --rm test pytest --cov=. --cov-report=term-missing
77
84
  ```
78
85
 
79
- 2. **コード例** 言語・フレームワークに合わせて RED / GREEN の例を書き直す
86
+ 2. **コード例**: 言語・フレームワークに合わせて RED / GREEN の例を書き直す
80
87
 
81
- 3. **fixture / テストデータ** このプロジェクトの実際のクラス名・DB 接続方法・ヘルパ関数パターンを記述する
88
+ 3. **fixture / テストデータ**: このプロジェクトの実際のクラス名・DB 接続方法・ヘルパ関数パターンを記述する
82
89
 
83
- 4. **モックのルール** 使用する外部サービスとモック手段(ライブラリ名など)を具体化する
90
+ 4. **モックのルール**: 使用する外部サービスとモック手段(ライブラリ名など)を具体化する
84
91
 
85
92
  書き換えは `.claude/skills/test-driven-development/SKILL.md` と `.github/skills/test-driven-development/SKILL.md` の両方に反映する。
86
93
 
87
- ### その他の基盤 skill
94
+ ### test-runner エージェントの書き換え
88
95
 
89
- 同様のプレースホルダーや汎用記述が他の skill にあれば、同じ要領で書き換える。
96
+ `architecture.yaml` `testing_policy` を参照して、以下を実際の値に置き換える。
97
+
98
+ 1. **テスト実行コマンド**: `<your-test-command>` を実際のコマンドに書き換える
99
+ 2. **説明文**: 実行環境(Docker / ローカル など)が分かるよう補足する
100
+
101
+ ### 影響範囲チェックリストの書き換え
90
102
 
91
- ユーザーに確認・承認を得る
103
+ `.claude/skills/design-change/references/影響範囲チェックリスト.md` をプロジェクト固有の変更カテゴリとパスに合わせて書き換える。
92
104
 
93
- ## Phase 5: Claude / Copilot テンプレートへ反映
105
+ 1. 変更カテゴリをプロジェクトの構成要素(モジュール・サービス・ドメインなど)に合わせて追加・削除する
106
+ 2. 詳細設計のパスを `architecture.yaml` の `folder_structure` に合わせて書き換える
107
+
108
+ ### coding.md の書き換え
109
+
110
+ `architecture.yaml` の `language` と `folder_structure` を参照して、以下を実際の値に置き換える。
111
+
112
+ 1. **命名規則**: 言語の慣習に合わせてテーブルの規則・例を書き換える
113
+ 2. **言語・型固有ルール**: `<your-language-and-type-rules>` を言語・フレームワークに合わせた具体的なルールに書き換える
114
+ 3. **プロジェクト構造**: `<your-project-structure>` を `folder_structure` の実際のディレクトリ構成に書き換える
115
+
116
+ 書き換えは `.claude/rules/coding.md` と `.github/instructions/coding.instructions.md` の両方に反映する。
117
+
118
+ ### その他の基盤 skill
119
+
120
+ 同様のプレースホルダーや汎用記述が他の skill にあれば、同じ要領で書き換える。
94
121
 
95
- 1. `.claude/` と `.github/` の両方へ反映する
96
- 2. path や naming がずれないよう対応ファイルを揃える
122
+ 5. ユーザーに確認・承認を得る
97
123
 
98
- ## Phase 6: 一貫性の検証
124
+ ## Phase 5: 一貫性の検証
99
125
 
100
126
  1. 既存 skill / rule / agent と矛盾しないか確認する
101
127
  2. `harness-engineering` が必要な改善点を洗い出す
102
128
 
103
- ## Phase 7: セットアップ専用 skill のアーカイブ提案
129
+ ## Phase 6: セットアップ専用 skill のアーカイブ提案
104
130
 
105
- セットアップ時にしか使わない skill は、開発ループに入ると不要になる。
106
- **ユーザーの承認を得てから** 整理する。絶対に自動で削除・移動しない。
131
+ セットアップ時にしか使わない skill は、開発ループに入ると不要になる。ユーザーの承認を得てから整理する。絶対に自動で削除・移動しない。
107
132
 
108
133
  ### アーカイブ候補
109
134
 
@@ -111,7 +136,8 @@ Phase 7: セットアップ専用 skill のアーカイブ提案
111
136
  |---|---|
112
137
  | `architecture-definition` | 新規プロジェクト初期化専用。アーキテクチャ確定後は不要 |
113
138
  | `existing-project-to-docs` | 既存プロジェクト取り込み専用。docs 生成後は不要 |
114
- | `docs-driven-seed` | Phase 3 で project 専用 skill の種として使い終えたら不要 |
139
+ | `docs-driven-seed` | Phase 3 で project 専用 skill の種として使い終えたら不要(`style: ddd` のとき)。ただし `templates/01_要件定義/` は `architecture-definition` が参照するため、`architecture-definition` も同時にアーカイブする場合のみ削除する |
140
+ | `simple-seed` | Phase 3 で project 専用 skill の種として使い終えたら不要(`style: layered` のとき) |
115
141
  | `architecture-skill-development`(このファイル自身) | project 専用 skill が安定したら不要。ただしアーキテクチャが大きく変わる場合は再利用する可能性があるため、削除ではなくアーカイブを推奨 |
116
142
 
117
143
  ### 手順
@@ -139,4 +165,4 @@ Phase 7: セットアップ専用 skill のアーカイブ提案
139
165
  - 固定の architecture pack を増やしすぎない
140
166
  - project 専用 skill を先に考える
141
167
  - docs と architecture contract の両方を入力にする
142
- - **skill の削除・移動はユーザー承認なしに行わない**
168
+ - skill の削除・移動はユーザー承認なしに行わない
@@ -13,7 +13,7 @@ description: 変更を Conventional Commits 形式でコミットする。
13
13
  2. `git log --oneline -10` で直近のコミット履歴を確認する
14
14
  3. 変更内容に基づいてコミットメッセージを生成する
15
15
  4. 未ステージの場合は適切なファイルを `git add` する
16
- 5. **機密情報チェック**: `git diff --cached` の内容を確認し、以下のパターンが含まれていないか検査する
16
+ 5. 機密情報チェック: `git diff --cached` の内容を確認し、以下のパターンが含まれていないか検査する
17
17
  - API キー、シークレットキー、パスワード、トークン、秘密鍵、接続文字列
18
18
  - `.env` ファイルの内容、認証情報ファイル(`credentials.json` 等)
19
19
  - 検出した場合はコミットを中止し、ユーザーに報告する
@@ -5,8 +5,7 @@ description: 既存機能の変更を docs 正本で進めるフローガイド
5
5
 
6
6
  # design-change
7
7
 
8
- 既存機能の変更・修正を設計書駆動で進めるフローガイド。
9
- **フェーズを必ず順番通りに進める。ユーザーの承認なしにフェーズを先に進めない。**
8
+ 既存機能の変更・修正を設計書駆動で進めるフローガイド。フェーズは順番通りに進める。ユーザーの承認なしに先へ進めない。
10
9
 
11
10
  影響範囲のチェックリストは `references/影響範囲チェックリスト.md` を参照する。
12
11
  ADR テンプレートは `templates/90_ADR/ADRテンプレート.md` を使用する。
@@ -37,11 +36,12 @@ Phase 6: TDD → 実装 → 検証
37
36
  ## Phase 2: ADR 作成(必要時)
38
37
 
39
38
  1. アーキテクチャ、責務境界、保存方式、外部 IF などの意思決定が必要か判定する
40
- 2. 必要な場合は **3 案を提示する**
39
+ 2. 必要な場合は 3 案を提示する
41
40
  3. 各案について概要・メリット・デメリット・適合性を示す
42
41
  4. ユーザーが案を決定する
43
42
  5. テンプレート `templates/90_ADR/ADRテンプレート.md` をコピーして生成する
44
43
  6. ファイル名は `mmdd-{日本語タイトル}.md`、配置先は対象フォルダ
44
+ 7. ユーザーに確認・承認を得る
45
45
 
46
46
  ### ADR 配置ルール
47
47
 
@@ -62,9 +62,10 @@ Phase 6: TDD → 実装 → 検証
62
62
 
63
63
  ## Phase 4: 概要設計の修正
64
64
 
65
- 1. `ユースケース一覧.md` / `システム全体俯瞰.md` / `ドメインモデル.md` / ADR を必要順に修正する
66
- 2. 修正完了ごとにチェックリストを更新する
67
- 3. 全概要設計の修正完了後、ユーザーに確認・承認を得る
65
+ 1. `ユースケース一覧.md` / `システム全体俯瞰.md` / ADR を必要順に修正する
66
+ 2. `style: ddd` の場合: `ドメインモデル.md` も必要に応じて修正する
67
+ 3. 修正完了ごとにチェックリストを更新する
68
+ 4. 全概要設計の修正完了後、ユーザーに確認・承認を得る
68
69
 
69
70
  ### 修正時の注意
70
71
 
@@ -73,11 +74,18 @@ Phase 6: TDD → 実装 → 検証
73
74
 
74
75
  ## Phase 5: 詳細設計の修正
75
76
 
77
+ `style: ddd` の場合:
78
+
76
79
  1. `docs/03_詳細設計/01_ドメイン/**` のドメイン設計を修正する
77
80
  2. `docs/03_詳細設計/02_ユースケース/**` の UC 設計を修正する
78
81
  3. DB・外部サービスの変更がある場合は `docs/03_詳細設計/03_DB・外部サービス/**` を修正する
79
- 4. frontmatter の `depends_on` / `maps_to` を更新する
80
- 5. ユーザーに最終確認を得る
82
+
83
+ `style: layered` の場合:
84
+
85
+ 1. `docs/03_詳細設計/01_ユースケース/**` の UC 設計を修正する
86
+ 2. DB・外部サービスの変更がある場合は `docs/03_詳細設計/02_DB・外部サービス/**` を修正する
87
+
88
+ frontmatter の `depends_on` / `maps_to` を更新する。ユーザーに最終確認を得る。
81
89
 
82
90
  ## Phase 6: TDD → 実装 → 検証
83
91
 
@@ -90,6 +98,6 @@ Phase 6: TDD → 実装 → 検証
90
98
 
91
99
  ## 原則
92
100
 
93
- - **影響候補の洗い出しを ADR より先に行う**
94
- - **概要設計を先に直し、そのあと詳細設計を直す**
95
- - **frontmatter の更新を後回しにしない**
101
+ - 影響候補の洗い出しを ADR より先に行う
102
+ - 概要設計を先に直し、そのあと詳細設計を直す
103
+ - frontmatter の更新を後回しにしない