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.
- package/package.json +1 -1
- package/spec-runner/templates/.claude/agents/code-reviewer.md +2 -8
- package/spec-runner/templates/.claude/agents/design-reviewer.md +6 -12
- package/spec-runner/templates/.claude/agents/impact-analyzer.md +4 -9
- package/spec-runner/templates/.claude/agents/test-runner.md +6 -10
- package/spec-runner/templates/.claude/rules/coding.md +28 -79
- package/spec-runner/templates/.claude/rules/design-docs.md +18 -17
- package/spec-runner/templates/.claude/rules/harness-formats.md +4 -4
- package/spec-runner/templates/.claude/rules/sub-agent-delegation.md +1 -1
- package/spec-runner/templates/.claude/skills/architecture-definition/SKILL.md +3 -3
- package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +39 -13
- package/spec-runner/templates/.claude/skills/commit/SKILL.md +1 -1
- package/spec-runner/templates/.claude/skills/design-change/SKILL.md +18 -11
- 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
- package/spec-runner/templates/.claude/skills/docs-driven-seed/SKILL.md +6 -9
- 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
- package/spec-runner/templates/.claude/skills/existing-project-to-docs/SKILL.md +13 -6
- package/spec-runner/templates/.claude/skills/harness-engineering/SKILL.md +9 -11
- package/spec-runner/templates/.claude/skills/simple-seed/SKILL.md +7 -10
- 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
- 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
- package/spec-runner/templates/.claude/skills/test-driven-development/SKILL.md +20 -19
- package/spec-runner/templates/.github/agents/code-reviewer.agent.md +2 -8
- package/spec-runner/templates/.github/agents/design-reviewer.agent.md +6 -12
- package/spec-runner/templates/.github/agents/impact-analyzer.agent.md +4 -9
- package/spec-runner/templates/.github/agents/test-runner.agent.md +6 -10
- package/spec-runner/templates/.github/instructions/coding.instructions.md +27 -78
- package/spec-runner/templates/.github/instructions/design-docs.instructions.md +18 -17
- package/spec-runner/templates/.github/instructions/harness-formats.instructions.md +4 -4
- package/spec-runner/templates/.github/instructions/sub-agent-delegation.instructions.md +1 -1
- package/spec-runner/templates/.github/skills/architecture-definition/SKILL.md +3 -3
- package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +37 -11
- package/spec-runner/templates/.github/skills/commit/SKILL.md +1 -1
- package/spec-runner/templates/.github/skills/design-change/SKILL.md +18 -11
- 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
- package/spec-runner/templates/.github/skills/docs-driven-seed/SKILL.md +6 -9
- 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
- package/spec-runner/templates/.github/skills/existing-project-to-docs/SKILL.md +13 -6
- package/spec-runner/templates/.github/skills/harness-engineering/SKILL.md +10 -12
- package/spec-runner/templates/.github/skills/simple-seed/SKILL.md +7 -10
- 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
- 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
- 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
|
-
| ファイル名 |
|
|
12
|
-
| クラス名 |
|
|
13
|
-
| 関数・メソッド |
|
|
14
|
-
| 変数 |
|
|
15
|
-
| 定数 |
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
## コメント・docstring
|
|
15
|
+
| ファイル名 | `<規則>` | `<例>` |
|
|
16
|
+
| クラス名 | `<規則>` | `<例>` |
|
|
17
|
+
| 関数・メソッド | `<規則>` | `<例>` |
|
|
18
|
+
| 変数 | `<規則>` | `<例>` |
|
|
19
|
+
| 定数 | `<規則>` | `<例>` |
|
|
20
|
+
| テストクラス | `<規則>` | `<例>` |
|
|
21
|
+
| テストメソッド | `<規則>` | `<例>` |
|
|
22
|
+
| ディレクトリ | `<規則>` | `<例>` |
|
|
23
|
+
|
|
24
|
+
## コメント
|
|
22
25
|
|
|
23
26
|
- **言語**: 日本語
|
|
24
|
-
- **docstring**: モジュール先頭に1行で概要を書く。関数・クラスには原則不要(名前で意図が伝わる場合)
|
|
25
27
|
- **インラインコメント**: ビジネスロジックの「なぜ」を説明する場合のみ。処理内容の「何」は書かない
|
|
26
|
-
- **変更履歴コメント禁止**:
|
|
28
|
+
- **変更履歴コメント禁止**: 変更経緯はコードに書かない。git の commit message で管理する
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
# 良い例
|
|
30
|
-
# 貸方は負の値として扱う(借方 - 貸方 = 残高)
|
|
31
|
-
balances[credit_key] = balances.get(credit_key, 0) - entry.credit_amount
|
|
32
|
-
```
|
|
30
|
+
## 言語・型固有ルール
|
|
33
31
|
|
|
34
|
-
|
|
32
|
+
> このセクションを言語・フレームワークに合わせて書き換える。
|
|
35
33
|
|
|
36
|
-
-
|
|
37
|
-
- `typing` モジュールのインポートは不要(`List`, `Dict`, `Optional` は使わない)
|
|
38
|
-
- dataclass の `frozen=True` を値オブジェクトに使用
|
|
34
|
+
`<your-language-and-type-rules>`
|
|
39
35
|
|
|
40
36
|
## テスト
|
|
41
37
|
|
|
42
|
-
-
|
|
43
|
-
- TDDサイクル: RED → GREEN → REFACTOR
|
|
38
|
+
- テストファイルは実装と同じディレクトリ構造を維持する(`tests/` 配下に `src/` と同じ構造)
|
|
39
|
+
- TDD サイクル: RED → GREEN → REFACTOR
|
|
44
40
|
|
|
45
41
|
### テストコメント規約
|
|
46
42
|
|
|
47
|
-
-
|
|
48
|
-
-
|
|
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
|
-
-
|
|
98
|
-
-
|
|
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
|
-
|
|
111
|
-
|
|
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
|
-
-
|
|
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`
|
|
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
|
-
-
|
|
68
|
+
- ADR は提案時に必ず 3 案を比較してから採用案を決める。ドキュメントには採用案と採用理由のみ記録する
|
|
68
69
|
- ADR は `docs/02_概要設計/90_ADR/{対象}/` で管理する(`全体` / `ドメイン` / `UC` / `DB`)
|
|
69
70
|
- ファイル名は `mmdd-{日本語タイトル}.md`。対象はフォルダで表す
|
|
70
71
|
- ADR は理由の記録であり、詳細設計の代わりにしない
|
|
@@ -72,25 +73,25 @@ spec_runner:
|
|
|
72
73
|
|
|
73
74
|
## 文書品質
|
|
74
75
|
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
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
|
+
- 「スケジュール」セクションを設計書に作らない。進捗管理は設計書の責務ではない
|
|
84
85
|
|
|
85
86
|
## ドメインモデルとデータモデルの分離
|
|
86
87
|
|
|
87
|
-
|
|
88
|
+
ドメインモデルとデータモデルは別物であり、置き場所も内容も分ける。
|
|
88
89
|
|
|
89
90
|
| 種別 | 内容 | 置き場所 |
|
|
90
91
|
|------|------|---------|
|
|
91
92
|
| ドメインモデル | ビジネスルール・集約・値オブジェクト・不変条件 | `docs/03_詳細設計/01_ドメイン/` |
|
|
92
93
|
| データモデル | DBスキーマ・テーブル定義・カラム定義・インデックス | `docs/03_詳細設計/03_DB・外部サービス/` |
|
|
93
94
|
|
|
94
|
-
-
|
|
95
|
-
-
|
|
95
|
+
- `01_ドメイン/` に DB スキーマ・テーブル定義・カラム定義を書かない
|
|
96
|
+
- `03_DB・外部サービス/` にビジネスルール・ドメインロジックを書かない
|
|
96
97
|
- 概要設計の `ドメインモデル.md` も同様。集約と境界コンテキストの概念図であり、永続化の構造ではない
|
|
@@ -56,7 +56,7 @@ description: このスキルの目的と使うタイミング(1〜2行)
|
|
|
56
56
|
|
|
57
57
|
## CLAUDE.md
|
|
58
58
|
|
|
59
|
-
CLAUDE.md
|
|
59
|
+
CLAUDE.md は全会話で常にコンテキストに読み込まれる。書くほどコストが増えるため、最小に保つ。
|
|
60
60
|
|
|
61
61
|
### 書いてよいもの
|
|
62
62
|
|
|
@@ -74,14 +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
|
-
-
|
|
82
|
+
- 更新する連携先は `architecture.yaml` の `integrations` に従う
|
|
83
83
|
- `claude` のみ → `.claude/` だけ更新する。`.github/` を作成しない
|
|
84
84
|
- `github` のみ → `.github/` だけ更新する。`.claude/` を作成しない
|
|
85
85
|
- 両方 → `.claude/` と `.github/` を対で更新する
|
|
86
|
-
- `description`
|
|
86
|
+
- `description` は「何をするか」より「いつ・なぜ使うか」を優先して書く
|
|
87
87
|
- 新規作成時は既存ファイルを参考にフォーマットを確認してから作る
|
|
@@ -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
|
|
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
|
-
ファイルを作成する前に
|
|
37
|
+
ファイルを作成する前に `.github/instructions/harness-formats.instructions.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
|
|
52
|
+
選んだ seed の SKILL.md をコピーして、このプロジェクトのアーキテクチャに合わせて書き換えた project 専用 skill を作ることを目的とする。
|
|
53
53
|
|
|
54
54
|
具体的には:
|
|
55
55
|
- 選んだ seed の SKILL.md をコピーして、project 専用の開発 skill の土台にする
|
|
56
56
|
- フェーズ構成・テンプレートパス・用語をこのプロジェクトの実態に合わせて書き換える
|
|
57
|
-
-
|
|
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.
|
|
72
|
+
1. **テスト実行コマンド**: `<your-test-command>` を実際のコマンドに書き換える
|
|
71
73
|
|
|
72
74
|
例:
|
|
73
75
|
```bash
|
|
@@ -81,14 +83,38 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
81
83
|
docker compose run --rm test pytest --cov=. --cov-report=term-missing
|
|
82
84
|
```
|
|
83
85
|
|
|
84
|
-
2.
|
|
86
|
+
2. **コード例**: 言語・フレームワークに合わせて RED / GREEN の例を書き直す
|
|
85
87
|
|
|
86
|
-
3. **fixture /
|
|
88
|
+
3. **fixture / テストデータ**: このプロジェクトの実際のクラス名・DB 接続方法・ヘルパ関数パターンを記述する
|
|
87
89
|
|
|
88
|
-
4.
|
|
90
|
+
4. **モックのルール**: 使用する外部サービスとモック手段(ライブラリ名など)を具体化する
|
|
89
91
|
|
|
90
92
|
書き換えは `.claude/skills/test-driven-development/SKILL.md` と `.github/skills/test-driven-development/SKILL.md` の両方に反映する。
|
|
91
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 の書き換え
|
|
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
|
+
|
|
92
118
|
### その他の基盤 skill
|
|
93
119
|
|
|
94
120
|
同様のプレースホルダーや汎用記述が他の skill にあれば、同じ要領で書き換える。
|
|
@@ -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,7 +136,8 @@ 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
|
### 手順
|
|
@@ -139,4 +165,4 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
139
165
|
- 固定の architecture pack を増やしすぎない
|
|
140
166
|
- project 専用 skill を先に考える
|
|
141
167
|
- docs と architecture contract の両方を入力にする
|
|
142
|
-
-
|
|
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.
|
|
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. 必要な場合は
|
|
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` /
|
|
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
|
-
|
|
81
|
-
|
|
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
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
101
|
+
- 影響候補の洗い出しを ADR より先に行う
|
|
102
|
+
- 概要設計を先に直し、そのあと詳細設計を直す
|
|
103
|
+
- frontmatter の更新を後回しにしない
|
|
@@ -1,66 +1,59 @@
|
|
|
1
1
|
# 影響範囲チェックリスト
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> このファイルはテンプレートです。`architecture-skill-development` でプロジェクトの変更カテゴリと詳細設計パスに合わせて書き換えてください。
|
|
4
|
+
|
|
5
|
+
design-change の Phase 3(影響ドキュメントの確定)で参照する。
|
|
4
6
|
変更の種類に応じて、修正が必要なドキュメントを網羅的に特定する。
|
|
5
7
|
|
|
6
8
|
## 変更種別ごとのチェック項目
|
|
7
9
|
|
|
8
|
-
###
|
|
10
|
+
### ユースケース(UC)の追加・変更・削除
|
|
9
11
|
|
|
10
12
|
| ドキュメント | パス | チェック |
|
|
11
13
|
|------------|------|------|
|
|
12
|
-
| ユースケース一覧 | `docs/02_概要設計/ユースケース一覧.md` |
|
|
13
|
-
| システム全体俯瞰 | `docs/02_概要設計/システム全体俯瞰.md` |
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
| プロンプト設計 | `docs/03_詳細設計/src/agents/{agent_name}/prompts.md` | プロンプト構成・指示内容の変更 |
|
|
17
|
-
| 設定 | `docs/03_詳細設計/src/agents/{agent_name}/config.md` | 設定パラメータ・閾値の変更 |
|
|
14
|
+
| ユースケース一覧 | `docs/02_概要設計/ユースケース一覧.md` | UC の追加・修正・削除を反映 |
|
|
15
|
+
| システム全体俯瞰 | `docs/02_概要設計/システム全体俯瞰.md` | 責務分割・外部 IF への影響 |
|
|
16
|
+
| UC 詳細設計 | `docs/03_詳細設計/<UC詳細設計パス>/UC-{日本語名}.md` | シーケンス・入出力・判断条件の変更 |
|
|
17
|
+
| DB・外部サービス | `docs/03_詳細設計/<DB・外部サービスパス>/` | UC が利用するスキーマ・外部 IF への影響 |
|
|
18
18
|
|
|
19
|
-
###
|
|
19
|
+
### ドメイン設計の変更(style: ddd のみ)
|
|
20
20
|
|
|
21
21
|
| ドキュメント | パス | チェック |
|
|
22
22
|
|------------|------|------|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
| スキーマ定義 | `docs/03_詳細設計/infrastructure/schema.dbml` | カラム・型・制約の変更 |
|
|
28
|
-
| スキル設計 | `docs/03_詳細設計/src/plugins/skills/{skill_name}/skill.md` | スキルの入出力・判定ロジックへの影響 |
|
|
29
|
-
| ツール設計 | `docs/03_詳細設計/src/plugins/tools/{tool_name}/tool.md` | ツールの入出力への影響 |
|
|
23
|
+
| ドメインモデル | `docs/02_概要設計/ドメインモデル.md` | 集約・境界コンテキストへの影響 |
|
|
24
|
+
| ドメイン詳細設計 | `docs/03_詳細設計/<ドメイン詳細設計パス>/{ドメイン名}.md` | エンティティ・値オブジェクト・不変条件の変更 |
|
|
25
|
+
| UC 詳細設計 | `docs/03_詳細設計/<UC詳細設計パス>/UC-{日本語名}.md` | ドメイン変更が UC フローに影響する場合 |
|
|
26
|
+
| DB・外部サービス | `docs/03_詳細設計/<DB・外部サービスパス>/` | スキーマ・保存方針への影響 |
|
|
30
27
|
|
|
31
|
-
###
|
|
28
|
+
### DB・外部サービスの変更
|
|
32
29
|
|
|
33
30
|
| ドキュメント | パス | チェック |
|
|
34
31
|
|------------|------|------|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
| ユースケース一覧 | `docs/02_概要設計/ユースケース一覧.md` | 対応する UC がある場合 |
|
|
39
|
-
| システム全体俯瞰 | `docs/02_概要設計/システム全体俯瞰.md` | プラグイン構成の変更が全体構造に影響する場合 |
|
|
32
|
+
| DB・外部サービス | `docs/03_詳細設計/<DB・外部サービスパス>/` | テーブル定義・外部 API 仕様の変更 |
|
|
33
|
+
| UC 詳細設計 | `docs/03_詳細設計/<UC詳細設計パス>/UC-{日本語名}.md` | 保存フロー・外部呼び出しへの影響 |
|
|
34
|
+
| ドメイン詳細設計 | `docs/03_詳細設計/<ドメイン詳細設計パス>/{ドメイン名}.md` | ドメインモデルへの影響(style: ddd のみ) |
|
|
40
35
|
|
|
41
|
-
###
|
|
36
|
+
### アーキテクチャ・設計方針の変更
|
|
42
37
|
|
|
43
38
|
| ドキュメント | パス | チェック |
|
|
44
39
|
|------------|------|------|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
40
|
+
| ADR | `docs/02_概要設計/90_ADR/全体/` | 横断的な決定を記録 |
|
|
41
|
+
| システム全体俯瞰 | `docs/02_概要設計/システム全体俯瞰.md` | 技術方針・全体構成の変更 |
|
|
42
|
+
| 要件定義 | `docs/01_要件定義/要件定義.md` | 要件レベルの変更がある場合 |
|
|
43
|
+
| 詳細設計一式 | `docs/03_詳細設計/**` | 方針変更の具体反映 |
|
|
49
44
|
|
|
50
|
-
###
|
|
45
|
+
### 要件の変更
|
|
51
46
|
|
|
52
47
|
| ドキュメント | パス | チェック |
|
|
53
48
|
|------------|------|------|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
| 詳細設計一式 | `docs/03_詳細設計/src/**` | 方針変更の具体反映 |
|
|
49
|
+
| 要件定義 | `docs/01_要件定義/要件定義.md` | 要件・スコープの変更 |
|
|
50
|
+
| ユビキタス言語辞書 | `docs/01_要件定義/ユビキタス言語辞書.md` | 用語の追加・変更 |
|
|
51
|
+
| ユースケース一覧 | `docs/02_概要設計/ユースケース一覧.md` | 要件変更に伴う UC の追加・削除 |
|
|
52
|
+
| システム全体俯瞰 | `docs/02_概要設計/システム全体俯瞰.md` | スコープ変更による構成への影響 |
|
|
59
53
|
|
|
60
54
|
## 二次影響の確認観点
|
|
61
55
|
|
|
62
|
-
- **ユースケース一覧 ↔
|
|
63
|
-
- **システム全体俯瞰 ↔ 詳細設計**:
|
|
64
|
-
- **ドメイン設計 ↔ DBスキーマ**: ドメインのフィールドが DB
|
|
65
|
-
- **schema.dbml ↔ database.md**: dbml と設計書の内容が一致しているか
|
|
56
|
+
- **ユースケース一覧 ↔ 詳細設計**: 一覧に記載の UC が詳細設計でカバーされているか
|
|
57
|
+
- **システム全体俯瞰 ↔ 詳細設計**: 責務分割が詳細設計に落ちているか
|
|
58
|
+
- **ドメイン設計 ↔ DB スキーマ**: ドメインのフィールドが DB カラムと対応しているか(style: ddd のみ)
|
|
66
59
|
- **frontmatter ↔ 実ファイル**: `depends_on` と `maps_to` が現状に追随しているか
|
|
@@ -5,10 +5,8 @@ description: UC/DDD 駆動の docs 正本開発フローの種。新規プロジ
|
|
|
5
5
|
|
|
6
6
|
# docs-driven-seed
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
**このスキルをそのまま使い続けない。`architecture-skill-development` で自プロジェクト専用スキルに育てることを前提とする。**
|
|
8
|
+
> DDD を採用するプロジェクト向けの docs 正本開発フロー(種)。`architecture.yaml` の `style: ddd` で使う。レイヤード / CRUD 中心は `simple-seed` を使う。
|
|
9
|
+
> このスキルは種。`architecture-skill-development` でプロジェクト専用スキルに育てる。
|
|
12
10
|
|
|
13
11
|
## 全体フロー
|
|
14
12
|
|
|
@@ -65,7 +63,7 @@ docs/02_概要設計/
|
|
|
65
63
|
## Phase 3: ADR(必要時のみ)
|
|
66
64
|
|
|
67
65
|
1. 設計判断が必要な場合だけ ADR を作る
|
|
68
|
-
2.
|
|
66
|
+
2. 提案時に必ず 3 案を比較する。ドキュメントには採用案と採用理由のみ記録する
|
|
69
67
|
3. ファイル名は `mmdd-{日本語タイトル}.md`、配置先は対象フォルダ
|
|
70
68
|
|
|
71
69
|
| 対象 | 配置先 |
|
|
@@ -79,7 +77,7 @@ docs/02_概要設計/
|
|
|
79
77
|
|
|
80
78
|
## Phase 4: 詳細設計
|
|
81
79
|
|
|
82
|
-
|
|
80
|
+
ドメイン → UC → DB・外部サービス の順に設計する。
|
|
83
81
|
|
|
84
82
|
### 4-1. ドメイン
|
|
85
83
|
|
|
@@ -122,6 +120,5 @@ docs/03_詳細設計/03_DB・外部サービス/
|
|
|
122
120
|
|
|
123
121
|
## 原則
|
|
124
122
|
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
- **`maps_to` は必ず設定する。パス推定に頼らない**
|
|
123
|
+
- ドメインを先に設計し、UC はドメインを参照する形で書く
|
|
124
|
+
- `maps_to` は必ず設定する。パス推定に頼らない
|