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