spec-runner 1.9.0 → 2.0.1
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/README.md +2 -1
- package/bin/spec-runner-installer.js +9 -6
- package/package.json +1 -1
- package/spec-runner/templates/.claude/rules/code-style.md +4 -0
- package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +18 -2
- package/spec-runner/templates/.claude/skills/ddd-seed/SKILL.md +22 -4
- package/spec-runner/templates/.claude/skills/ddd-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/03_DB/343/203/273/345/244/226/351/203/250/343/202/265/343/203/274/343/203/223/343/202/271/DB//343/203/236/343/202/244/343/202/260/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/346/210/246/347/225/245.md +40 -0
- package/spec-runner/templates/.claude/skills/design-change/SKILL.md +13 -0
- package/spec-runner/templates/.claude/skills/frontend-seed/SKILL.md +3 -1
- package/spec-runner/templates/.claude/skills/frontend-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/347/224/273/351/235/242/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/347/224/273/351/235/242/345/220/215}.md +2 -0
- package/spec-runner/templates/.claude/skills/simple-seed/SKILL.md +23 -3
- package/spec-runner/templates/.claude/skills/simple-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_DB/343/203/273/345/244/226/351/203/250/343/202/265/343/203/274/343/203/223/343/202/271/DB//343/203/236/343/202/244/343/202/260/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/346/210/246/347/225/245.md +40 -0
- package/spec-runner/templates/.github/instructions/code-style.instructions.md +4 -0
- package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +18 -2
- package/spec-runner/templates/.github/skills/ddd-seed/SKILL.md +22 -4
- package/spec-runner/templates/.github/skills/ddd-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/03_DB/343/203/273/345/244/226/351/203/250/343/202/265/343/203/274/343/203/223/343/202/271/DB//343/203/236/343/202/244/343/202/260/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/346/210/246/347/225/245.md +40 -0
- package/spec-runner/templates/.github/skills/design-change/SKILL.md +13 -0
- package/spec-runner/templates/.github/skills/frontend-seed/SKILL.md +3 -1
- package/spec-runner/templates/.github/skills/frontend-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/347/224/273/351/235/242/{/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/{/347/224/273/351/235/242/345/220/215}.md +2 -0
- package/spec-runner/templates/.github/skills/simple-seed/SKILL.md +23 -3
- package/spec-runner/templates/.github/skills/simple-seed/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_DB/343/203/273/345/244/226/351/203/250/343/202/265/343/203/274/343/203/223/343/202/271/DB//343/203/236/343/202/244/343/202/260/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/346/210/246/347/225/245.md +40 -0
- package/spec-runner/templates/copilot-instructions.md +42 -0
- /package/spec-runner/templates/.claude/skills/ddd-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-{ → {/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/UC-{}/346/227/245/346/234/254/350/252/236/345/220/215}.md" +0 -0
- /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-{ → {/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/UC-{}/346/227/245/346/234/254/350/252/236/345/220/215}.md" +0 -0
- /package/spec-runner/templates/.github/skills/ddd-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-{ → {/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/UC-{}/346/227/245/346/234/254/350/252/236/345/220/215}.md" +0 -0
- /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-{ → {/343/202/253/343/203/206/343/202/264/343/203/252/345/220/215}/UC-{}/346/227/245/346/234/254/350/252/236/345/220/215}.md" +0 -0
package/README.md
CHANGED
|
@@ -51,8 +51,9 @@ curl -sSL https://raw.githubusercontent.com/TEEE88/spec-runner/main/install.sh |
|
|
|
51
51
|
- `architecture-definition`: 新規プロジェクトで docs と architecture contract を起こす
|
|
52
52
|
- `existing-project-to-docs`: 既存コードから docs の draft と構造化情報を起こす
|
|
53
53
|
- `architecture-skill-development`: architecture contract から project 専用 skill を育てる
|
|
54
|
-
- `
|
|
54
|
+
- `ddd-seed`: DDD 向けの project 専用 skill の種(`style: ddd` のとき)
|
|
55
55
|
- `simple-seed`: レイヤードアーキテクチャ向けの project 専用 skill の種(`style: layered` のとき)
|
|
56
|
+
- `frontend-seed`: フロントエンド向けの project 専用 skill の種
|
|
56
57
|
|
|
57
58
|
**開発ループ用**(日常的に使う)
|
|
58
59
|
|
|
@@ -119,6 +119,7 @@ function copySettingsJsonWithMerge(src, dest, archiveRoot) {
|
|
|
119
119
|
fs.copyFileSync(dest, ap);
|
|
120
120
|
}
|
|
121
121
|
writeFileText(dest, JSON.stringify(merged, null, 2) + "\n");
|
|
122
|
+
console.log(` マージ: ${path.relative(CWD, dest)}`);
|
|
122
123
|
}
|
|
123
124
|
|
|
124
125
|
function appendToGitignore(lines, dest) {
|
|
@@ -351,12 +352,6 @@ function main() {
|
|
|
351
352
|
throw new Error(`Claude テンプレートが見つかりません: ${CLAUDE_TEMPLATE_DIR}`);
|
|
352
353
|
}
|
|
353
354
|
|
|
354
|
-
// CLAUDE.md をプロジェクトルートへインストール(target によらず常に配置)
|
|
355
|
-
const claudeMdSrc = path.join(TEMPLATE_ROOT, "CLAUDE.md");
|
|
356
|
-
if (exists(claudeMdSrc)) {
|
|
357
|
-
copyFileWithPolicy(claudeMdSrc, path.join(CWD, "CLAUDE.md"), archiveRoot);
|
|
358
|
-
}
|
|
359
|
-
|
|
360
355
|
// .spec-runner/scripts を導入(target によらず常に配置)
|
|
361
356
|
const specRunnerTemplateDir = path.join(TEMPLATE_ROOT, ".spec-runner");
|
|
362
357
|
if (exists(specRunnerTemplateDir)) {
|
|
@@ -368,10 +363,18 @@ function main() {
|
|
|
368
363
|
|
|
369
364
|
console.log("");
|
|
370
365
|
if (target === "claude" || target === "both") {
|
|
366
|
+
const claudeMdSrc = path.join(TEMPLATE_ROOT, "CLAUDE.md");
|
|
367
|
+
if (exists(claudeMdSrc)) {
|
|
368
|
+
copyFileWithPolicy(claudeMdSrc, path.join(CWD, "CLAUDE.md"), archiveRoot);
|
|
369
|
+
}
|
|
371
370
|
mirrorTreeTo(DEST_CLAUDE_DIR, CLAUDE_TEMPLATE_DIR, archiveRoot);
|
|
372
371
|
}
|
|
373
372
|
if (target === "copilot" || target === "both") {
|
|
374
373
|
ensureDir(DEST_GITHUB_DIR);
|
|
374
|
+
const copilotInstructionsSrc = path.join(TEMPLATE_ROOT, "copilot-instructions.md");
|
|
375
|
+
if (exists(copilotInstructionsSrc)) {
|
|
376
|
+
copyFileWithPolicy(copilotInstructionsSrc, path.join(CWD, ".github", "copilot-instructions.md"), archiveRoot);
|
|
377
|
+
}
|
|
375
378
|
if (dirHasFiles(COPILOT_TEMPLATE_DIR)) {
|
|
376
379
|
mirrorTreeTo(DEST_GITHUB_DIR, COPILOT_TEMPLATE_DIR, archiveRoot);
|
|
377
380
|
const copilotSkillsRoot = path.join(COPILOT_TEMPLATE_DIR, "skills");
|
package/package.json
CHANGED
|
@@ -7,6 +7,10 @@ paths: ["src/**", "tests/**"]
|
|
|
7
7
|
|
|
8
8
|
> このファイルはテンプレートです。`architecture-skill-development` で言語・フレームワーク・プロジェクト構造に合わせて書き換えてください。
|
|
9
9
|
|
|
10
|
+
## スキルファースト原則
|
|
11
|
+
|
|
12
|
+
コードの修正・実装を始める前に、必ず CLAUDE.md の「開発ワークフロー」を確認し、対応するスキルを特定してから着手する。スキルなしで直接コードや設計書を変更してはならない。
|
|
13
|
+
|
|
10
14
|
## 命名規則
|
|
11
15
|
|
|
12
16
|
> 以下の表をプロジェクトの言語・規約に合わせて書き換える。
|
|
@@ -51,6 +51,19 @@ seed が存在しない場合は「新規に作る」で進める。
|
|
|
51
51
|
|
|
52
52
|
`has_frontend: true` の場合は、`frontend-seed` と バックエンド seed の両方を並走させる旨を専用スキルに明記する。
|
|
53
53
|
|
|
54
|
+
### テンプレートの移行
|
|
55
|
+
|
|
56
|
+
seed からスキルを作成した場合(リネーム・リネーム+構成変更)、seed の `templates/` を新しいスキルの `templates/` にそのままコピーする。
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
# 例: ddd-seed → my-feature の場合
|
|
60
|
+
cp -r .claude/skills/ddd-seed/templates/ .claude/skills/my-feature/templates/
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
コピー後、このプロジェクトで不要なテンプレートファイルを削除し、必要なテンプレートファイルを追加してユーザーに承認を得る。プレースホルダー(`{カテゴリ名}` 等)はそのまま残す。
|
|
64
|
+
|
|
65
|
+
`integrations` に従い `.claude/` / `.github/` 両系で同様に実施する。seed 本体は Phase 6 でアーカイブするまで削除しない。
|
|
66
|
+
|
|
54
67
|
4. ユーザーに確認・承認を得る
|
|
55
68
|
|
|
56
69
|
## Phase 4: 基盤 skill のプロジェクト固有化
|
|
@@ -144,10 +157,13 @@ seed が存在しない場合は「新規に作る」で進める。
|
|
|
144
157
|
- `scripts/scan.js` — **削除しない**。`@analyze-impact` が常時依存しているため
|
|
145
158
|
5. `CLAUDE.md` を更新する
|
|
146
159
|
- 「初回自動起動」セクション(spec-runner インストール時に生成されたもの)を削除する
|
|
147
|
-
-
|
|
148
|
-
-
|
|
160
|
+
- **必ず「開発ワークフロー」セクションを設け、各作業でどの skill を使うかを全て明記する。** skill の記載がない CLAUDE.md は未完成とみなす
|
|
161
|
+
- 以下のフォーマットをベースに、このプロジェクトで使う skill を全て列挙する:
|
|
149
162
|
```markdown
|
|
150
163
|
## 開発ワークフロー
|
|
164
|
+
|
|
165
|
+
作業を開始するときは必ず対応するスキルを使うこと。スキルなしで直接実装・設計を進めてはならない。
|
|
166
|
+
|
|
151
167
|
新機能を実装するときは `/feature-development` を使う。
|
|
152
168
|
既存機能を変更するときは `/design-change` を使う。
|
|
153
169
|
テストを書くときは `/test-driven-development` を使う。
|
|
@@ -124,29 +124,47 @@ docs/バックエンド/03_詳細設計/01_ドメイン/
|
|
|
124
124
|
|
|
125
125
|
### 5-2. ユースケース
|
|
126
126
|
|
|
127
|
-
シーケンス図は UC ファイルに Mermaid
|
|
127
|
+
シーケンス図は UC ファイルに Mermaid で埋め込む。カテゴリ(集約・境界コンテキスト)でディレクトリを切る。
|
|
128
128
|
|
|
129
|
-
テンプレート: `templates/03_詳細設計/02_ユースケース/UC-{日本語名}.md`
|
|
129
|
+
テンプレート: `templates/03_詳細設計/02_ユースケース/{カテゴリ名}/UC-{日本語名}.md`
|
|
130
130
|
|
|
131
131
|
```
|
|
132
132
|
docs/バックエンド/03_詳細設計/02_ユースケース/
|
|
133
|
-
|
|
133
|
+
{カテゴリ名}/ # 例: 注文/, 在庫/, ユーザー/
|
|
134
|
+
UC-{日本語名}.md
|
|
134
135
|
```
|
|
135
136
|
|
|
136
137
|
### 5-3. DB・外部サービス(必要時のみ)
|
|
137
138
|
|
|
139
|
+
テンプレート: `templates/03_詳細設計/03_DB・外部サービス/{プロバイダー名}/{サービス名}.md`
|
|
140
|
+
|
|
138
141
|
```
|
|
139
142
|
docs/バックエンド/03_詳細設計/03_DB・外部サービス/
|
|
140
|
-
|
|
143
|
+
DB/
|
|
144
|
+
スキーマ定義.dbml
|
|
145
|
+
マイグレーション戦略.md
|
|
141
146
|
{プロバイダー名}/ # 例: AWS/, GCP/, Azure/
|
|
142
147
|
{サービス名}.md # 例: S3.md, DynamoDB.md, Athena.md
|
|
143
148
|
```
|
|
144
149
|
|
|
150
|
+
- DB 関連ファイルは `DB/` カテゴリに置く
|
|
145
151
|
- 外部サービスはクラウドプロバイダー(AWS / GCP / Azure など)をカテゴリフォルダとし、中にサービス名の md を置く
|
|
146
152
|
- `外部サービス.md` のような汎用名は使わない
|
|
147
153
|
|
|
148
154
|
4. ユーザーに確認・承認を得る
|
|
149
155
|
|
|
156
|
+
## Phase 5.5: マイグレーション戦略
|
|
157
|
+
|
|
158
|
+
スキーマ定義が確定した後、TDD に入る前に実施する。
|
|
159
|
+
|
|
160
|
+
1. Migration ツール・命名規則・Up/Down 方針をユーザーと確認する
|
|
161
|
+
2. ゼロダウンタイムの要否を確認する
|
|
162
|
+
3. ロールバック方針・既存データの扱いを決める
|
|
163
|
+
4. `docs/バックエンド/03_詳細設計/03_DB・外部サービス/DB/マイグレーション戦略.md` を作る
|
|
164
|
+
5. ユーザーに確認・承認を得る
|
|
165
|
+
|
|
166
|
+
テンプレート: `templates/03_詳細設計/03_DB・外部サービス/DB/マイグレーション戦略.md`
|
|
167
|
+
|
|
150
168
|
## Phase 6: TDD → 実装
|
|
151
169
|
|
|
152
170
|
`test-driven-development` スキルへ移行する。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: detail.db.マイグレーション戦略
|
|
4
|
+
kind: migration_strategy
|
|
5
|
+
depends_on:
|
|
6
|
+
- detail.db.スキーマ定義
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# マイグレーション戦略
|
|
10
|
+
|
|
11
|
+
## ツール
|
|
12
|
+
|
|
13
|
+
- **Migration ツール**: {Flyway / Alembic / Prisma Migrate / その他}
|
|
14
|
+
- **ファイル命名規則**: {例: V{バージョン}__{説明}.sql}
|
|
15
|
+
|
|
16
|
+
## Up / Down 方針
|
|
17
|
+
|
|
18
|
+
- **Up**: {適用時の方針}
|
|
19
|
+
- **Down**: {ロールバック時の方針 / Down 不要の場合はその理由}
|
|
20
|
+
|
|
21
|
+
## 既存データの扱い
|
|
22
|
+
|
|
23
|
+
| ケース | 対応方針 |
|
|
24
|
+
|--------|---------|
|
|
25
|
+
| {既存レコードの変換} | {方針} |
|
|
26
|
+
| {seed データ} | {方針} |
|
|
27
|
+
| {データ移行スクリプト} | {方針} |
|
|
28
|
+
|
|
29
|
+
## ゼロダウンタイム戦略
|
|
30
|
+
|
|
31
|
+
- **要否**: {必要 / 不要}
|
|
32
|
+
- **方針**: {例: backward compatible な変更を先に適用 → デプロイ → 旧カラム削除}
|
|
33
|
+
|
|
34
|
+
## ロールバック方針
|
|
35
|
+
|
|
36
|
+
- {ロールバック手順・条件}
|
|
37
|
+
|
|
38
|
+
## 適用順序・依存関係
|
|
39
|
+
|
|
40
|
+
- {Migration ファイル間の依存がある場合に記載}
|
|
@@ -130,6 +130,19 @@ docs/バックエンド/04_調査資料/
|
|
|
130
130
|
|
|
131
131
|
ヘッダーの `depends_on` / `maps_to` を更新する。ユーザーに最終確認を得る。
|
|
132
132
|
|
|
133
|
+
## Phase 6.5: マイグレーション戦略(DB 変更がある場合のみ)
|
|
134
|
+
|
|
135
|
+
Phase 6 でスキーマ定義の変更があった場合に実施する。DB 変更がなければスキップして Phase 7 へ進む。
|
|
136
|
+
|
|
137
|
+
1. 既存の `DB/マイグレーション戦略.md` を確認し、今回の変更で影響する項目を洗い出す
|
|
138
|
+
2. 変更内容に応じて以下を更新する
|
|
139
|
+
- Up / Down 方針の変更有無
|
|
140
|
+
- ゼロダウンタイムの要否(既存データへの影響があるか)
|
|
141
|
+
- ロールバック方針の変更有無
|
|
142
|
+
- 既存データの変換が必要かどうか
|
|
143
|
+
3. `DB/マイグレーション戦略.md` を更新する
|
|
144
|
+
4. ユーザーに確認・承認を得る
|
|
145
|
+
|
|
133
146
|
## Phase 7: TDD → 実装 → 検証
|
|
134
147
|
|
|
135
148
|
設計書修正が承認されたら `test-driven-development` スキルへ移行する。
|
|
@@ -130,11 +130,13 @@ docs/フロントエンド/03_詳細設計/01_画面/
|
|
|
130
130
|
|
|
131
131
|
概要設計のコンポーネント一覧をもとに、共通コンポーネントごとに 1 ファイル作成する。
|
|
132
132
|
|
|
133
|
+
ファイル名は日本語にする(例: `検索バー.md`, `モーダル.md`, `ヘッダー.md`)。
|
|
134
|
+
|
|
133
135
|
テンプレート: `templates/03_詳細設計/02_コンポーネント/{コンポーネント名}.md`
|
|
134
136
|
|
|
135
137
|
```
|
|
136
138
|
docs/フロントエンド/03_詳細設計/02_コンポーネント/
|
|
137
|
-
{
|
|
139
|
+
{日本語コンポーネント名}.md
|
|
138
140
|
```
|
|
139
141
|
|
|
140
142
|
ユーザーに確認・承認を得る。
|
|
@@ -104,27 +104,47 @@ UC → DB・外部サービス の順に設計する。
|
|
|
104
104
|
|
|
105
105
|
### 5-1. ユースケース
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
カテゴリ(機能ドメイン)でディレクトリを切る。
|
|
108
|
+
|
|
109
|
+
テンプレート: `templates/03_詳細設計/01_ユースケース/{カテゴリ名}/UC-{日本語名}.md`
|
|
108
110
|
|
|
109
111
|
```
|
|
110
112
|
docs/バックエンド/03_詳細設計/01_ユースケース/
|
|
111
|
-
|
|
113
|
+
{カテゴリ名}/ # 例: 注文/, 在庫/, ユーザー/
|
|
114
|
+
UC-{日本語名}.md
|
|
112
115
|
```
|
|
113
116
|
|
|
114
117
|
### 5-2. DB・外部サービス(必要時のみ)
|
|
115
118
|
|
|
119
|
+
テンプレート: `templates/03_詳細設計/02_DB・外部サービス/{プロバイダー名}/{サービス名}.md`
|
|
120
|
+
|
|
116
121
|
```
|
|
117
122
|
docs/バックエンド/03_詳細設計/02_DB・外部サービス/
|
|
118
|
-
|
|
123
|
+
DB/
|
|
124
|
+
スキーマ定義.dbml
|
|
125
|
+
マイグレーション戦略.md
|
|
119
126
|
{プロバイダー名}/ # 例: AWS/, GCP/, Azure/
|
|
120
127
|
{サービス名}.md # 例: S3.md, DynamoDB.md, Athena.md
|
|
121
128
|
```
|
|
122
129
|
|
|
130
|
+
- DB 関連ファイルは `DB/` カテゴリに置く
|
|
123
131
|
- 外部サービスはクラウドプロバイダー(AWS / GCP / Azure など)をカテゴリフォルダとし、中にサービス名の md を置く
|
|
124
132
|
- `外部サービス.md` のような汎用名は使わない
|
|
125
133
|
|
|
126
134
|
3. ユーザーに確認・承認を得る
|
|
127
135
|
|
|
136
|
+
## Phase 5.5: マイグレーション戦略
|
|
137
|
+
|
|
138
|
+
スキーマ定義が確定した後、TDD に入る前に実施する。
|
|
139
|
+
|
|
140
|
+
1. Migration ツール・命名規則・Up/Down 方針をユーザーと確認する
|
|
141
|
+
2. ゼロダウンタイムの要否を確認する
|
|
142
|
+
3. ロールバック方針・既存データの扱いを決める
|
|
143
|
+
4. `docs/バックエンド/03_詳細設計/02_DB・外部サービス/DB/マイグレーション戦略.md` を作る
|
|
144
|
+
5. ユーザーに確認・承認を得る
|
|
145
|
+
|
|
146
|
+
テンプレート: `templates/03_詳細設計/02_DB・外部サービス/DB/マイグレーション戦略.md`
|
|
147
|
+
|
|
128
148
|
## Phase 6: TDD → 実装
|
|
129
149
|
|
|
130
150
|
`test-driven-development` スキルへ移行する。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: detail.db.マイグレーション戦略
|
|
4
|
+
kind: migration_strategy
|
|
5
|
+
depends_on:
|
|
6
|
+
- detail.db.スキーマ定義
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# マイグレーション戦略
|
|
10
|
+
|
|
11
|
+
## ツール
|
|
12
|
+
|
|
13
|
+
- **Migration ツール**: {Flyway / Alembic / Prisma Migrate / その他}
|
|
14
|
+
- **ファイル命名規則**: {例: V{バージョン}__{説明}.sql}
|
|
15
|
+
|
|
16
|
+
## Up / Down 方針
|
|
17
|
+
|
|
18
|
+
- **Up**: {適用時の方針}
|
|
19
|
+
- **Down**: {ロールバック時の方針 / Down 不要の場合はその理由}
|
|
20
|
+
|
|
21
|
+
## 既存データの扱い
|
|
22
|
+
|
|
23
|
+
| ケース | 対応方針 |
|
|
24
|
+
|--------|---------|
|
|
25
|
+
| {既存レコードの変換} | {方針} |
|
|
26
|
+
| {seed データ} | {方針} |
|
|
27
|
+
| {データ移行スクリプト} | {方針} |
|
|
28
|
+
|
|
29
|
+
## ゼロダウンタイム戦略
|
|
30
|
+
|
|
31
|
+
- **要否**: {必要 / 不要}
|
|
32
|
+
- **方針**: {例: backward compatible な変更を先に適用 → デプロイ → 旧カラム削除}
|
|
33
|
+
|
|
34
|
+
## ロールバック方針
|
|
35
|
+
|
|
36
|
+
- {ロールバック手順・条件}
|
|
37
|
+
|
|
38
|
+
## 適用順序・依存関係
|
|
39
|
+
|
|
40
|
+
- {Migration ファイル間の依存がある場合に記載}
|
|
@@ -7,6 +7,10 @@ paths: ["src/**", "tests/**"]
|
|
|
7
7
|
|
|
8
8
|
> このファイルはテンプレートです。`architecture-skill-development` で言語・フレームワーク・プロジェクト構造に合わせて書き換えてください。
|
|
9
9
|
|
|
10
|
+
## スキルファースト原則
|
|
11
|
+
|
|
12
|
+
コードの修正・実装を始める前に、必ず CLAUDE.md の「開発ワークフロー」を確認し、対応するスキルを特定してから着手する。スキルなしで直接コードや設計書を変更してはならない。
|
|
13
|
+
|
|
10
14
|
## 命名規則
|
|
11
15
|
|
|
12
16
|
> 以下の表をプロジェクトの言語・規約に合わせて書き換える。
|
|
@@ -51,6 +51,19 @@ seed が存在しない場合は「新規に作る」で進める。
|
|
|
51
51
|
|
|
52
52
|
`has_frontend: true` の場合は、`frontend-seed` と バックエンド seed の両方を並走させる旨を専用スキルに明記する。
|
|
53
53
|
|
|
54
|
+
### テンプレートの移行
|
|
55
|
+
|
|
56
|
+
seed からスキルを作成した場合(リネーム・リネーム+構成変更)、seed の `templates/` を新しいスキルの `templates/` にそのままコピーする。
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
# 例: ddd-seed → my-feature の場合
|
|
60
|
+
cp -r .github/skills/ddd-seed/templates/ .github/skills/my-feature/templates/
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
コピー後、このプロジェクトで不要なテンプレートファイルを削除し、必要なテンプレートファイルを追加してユーザーに承認を得る。プレースホルダー(`{カテゴリ名}` 等)はそのまま残す。
|
|
64
|
+
|
|
65
|
+
`integrations` に従い `.claude/` / `.github/` 両系で同様に実施する。seed 本体は Phase 6 でアーカイブするまで削除しない。
|
|
66
|
+
|
|
54
67
|
4. ユーザーに確認・承認を得る
|
|
55
68
|
|
|
56
69
|
## Phase 4: 基盤 skill のプロジェクト固有化
|
|
@@ -144,10 +157,13 @@ seed が存在しない場合は「新規に作る」で進める。
|
|
|
144
157
|
- `scripts/scan.js` — **削除しない**。`@analyze-impact` が常時依存しているため
|
|
145
158
|
5. `CLAUDE.md` を更新する
|
|
146
159
|
- 「初回自動起動」セクション(spec-runner インストール時に生成されたもの)を削除する
|
|
147
|
-
-
|
|
148
|
-
-
|
|
160
|
+
- **必ず「開発ワークフロー」セクションを設け、各作業でどの skill を使うかを全て明記する。** skill の記載がない CLAUDE.md は未完成とみなす
|
|
161
|
+
- 以下のフォーマットをベースに、このプロジェクトで使う skill を全て列挙する:
|
|
149
162
|
```markdown
|
|
150
163
|
## 開発ワークフロー
|
|
164
|
+
|
|
165
|
+
作業を開始するときは必ず対応するスキルを使うこと。スキルなしで直接実装・設計を進めてはならない。
|
|
166
|
+
|
|
151
167
|
新機能を実装するときは `/feature-development` を使う。
|
|
152
168
|
既存機能を変更するときは `/design-change` を使う。
|
|
153
169
|
テストを書くときは `/test-driven-development` を使う。
|
|
@@ -124,29 +124,47 @@ docs/バックエンド/03_詳細設計/01_ドメイン/
|
|
|
124
124
|
|
|
125
125
|
### 5-2. ユースケース
|
|
126
126
|
|
|
127
|
-
シーケンス図は UC ファイルに Mermaid
|
|
127
|
+
シーケンス図は UC ファイルに Mermaid で埋め込む。カテゴリ(集約・境界コンテキスト)でディレクトリを切る。
|
|
128
128
|
|
|
129
|
-
テンプレート: `templates/03_詳細設計/02_ユースケース/UC-{日本語名}.md`
|
|
129
|
+
テンプレート: `templates/03_詳細設計/02_ユースケース/{カテゴリ名}/UC-{日本語名}.md`
|
|
130
130
|
|
|
131
131
|
```
|
|
132
132
|
docs/バックエンド/03_詳細設計/02_ユースケース/
|
|
133
|
-
|
|
133
|
+
{カテゴリ名}/ # 例: 注文/, 在庫/, ユーザー/
|
|
134
|
+
UC-{日本語名}.md
|
|
134
135
|
```
|
|
135
136
|
|
|
136
137
|
### 5-3. DB・外部サービス(必要時のみ)
|
|
137
138
|
|
|
139
|
+
テンプレート: `templates/03_詳細設計/03_DB・外部サービス/{プロバイダー名}/{サービス名}.md`
|
|
140
|
+
|
|
138
141
|
```
|
|
139
142
|
docs/バックエンド/03_詳細設計/03_DB・外部サービス/
|
|
140
|
-
|
|
143
|
+
DB/
|
|
144
|
+
スキーマ定義.dbml
|
|
145
|
+
マイグレーション戦略.md
|
|
141
146
|
{プロバイダー名}/ # 例: AWS/, GCP/, Azure/
|
|
142
147
|
{サービス名}.md # 例: S3.md, DynamoDB.md, Athena.md
|
|
143
148
|
```
|
|
144
149
|
|
|
150
|
+
- DB 関連ファイルは `DB/` カテゴリに置く
|
|
145
151
|
- 外部サービスはクラウドプロバイダー(AWS / GCP / Azure など)をカテゴリフォルダとし、中にサービス名の md を置く
|
|
146
152
|
- `外部サービス.md` のような汎用名は使わない
|
|
147
153
|
|
|
148
154
|
4. ユーザーに確認・承認を得る
|
|
149
155
|
|
|
156
|
+
## Phase 5.5: マイグレーション戦略
|
|
157
|
+
|
|
158
|
+
スキーマ定義が確定した後、TDD に入る前に実施する。
|
|
159
|
+
|
|
160
|
+
1. Migration ツール・命名規則・Up/Down 方針をユーザーと確認する
|
|
161
|
+
2. ゼロダウンタイムの要否を確認する
|
|
162
|
+
3. ロールバック方針・既存データの扱いを決める
|
|
163
|
+
4. `docs/バックエンド/03_詳細設計/03_DB・外部サービス/DB/マイグレーション戦略.md` を作る
|
|
164
|
+
5. ユーザーに確認・承認を得る
|
|
165
|
+
|
|
166
|
+
テンプレート: `templates/03_詳細設計/03_DB・外部サービス/DB/マイグレーション戦略.md`
|
|
167
|
+
|
|
150
168
|
## Phase 6: TDD → 実装
|
|
151
169
|
|
|
152
170
|
`test-driven-development` スキルへ移行する。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: detail.db.マイグレーション戦略
|
|
4
|
+
kind: migration_strategy
|
|
5
|
+
depends_on:
|
|
6
|
+
- detail.db.スキーマ定義
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# マイグレーション戦略
|
|
10
|
+
|
|
11
|
+
## ツール
|
|
12
|
+
|
|
13
|
+
- **Migration ツール**: {Flyway / Alembic / Prisma Migrate / その他}
|
|
14
|
+
- **ファイル命名規則**: {例: V{バージョン}__{説明}.sql}
|
|
15
|
+
|
|
16
|
+
## Up / Down 方針
|
|
17
|
+
|
|
18
|
+
- **Up**: {適用時の方針}
|
|
19
|
+
- **Down**: {ロールバック時の方針 / Down 不要の場合はその理由}
|
|
20
|
+
|
|
21
|
+
## 既存データの扱い
|
|
22
|
+
|
|
23
|
+
| ケース | 対応方針 |
|
|
24
|
+
|--------|---------|
|
|
25
|
+
| {既存レコードの変換} | {方針} |
|
|
26
|
+
| {seed データ} | {方針} |
|
|
27
|
+
| {データ移行スクリプト} | {方針} |
|
|
28
|
+
|
|
29
|
+
## ゼロダウンタイム戦略
|
|
30
|
+
|
|
31
|
+
- **要否**: {必要 / 不要}
|
|
32
|
+
- **方針**: {例: backward compatible な変更を先に適用 → デプロイ → 旧カラム削除}
|
|
33
|
+
|
|
34
|
+
## ロールバック方針
|
|
35
|
+
|
|
36
|
+
- {ロールバック手順・条件}
|
|
37
|
+
|
|
38
|
+
## 適用順序・依存関係
|
|
39
|
+
|
|
40
|
+
- {Migration ファイル間の依存がある場合に記載}
|
|
@@ -130,6 +130,19 @@ docs/バックエンド/04_調査資料/
|
|
|
130
130
|
|
|
131
131
|
ヘッダーの `depends_on` / `maps_to` を更新する。ユーザーに最終確認を得る。
|
|
132
132
|
|
|
133
|
+
## Phase 6.5: マイグレーション戦略(DB 変更がある場合のみ)
|
|
134
|
+
|
|
135
|
+
Phase 6 でスキーマ定義の変更があった場合に実施する。DB 変更がなければスキップして Phase 7 へ進む。
|
|
136
|
+
|
|
137
|
+
1. 既存の `DB/マイグレーション戦略.md` を確認し、今回の変更で影響する項目を洗い出す
|
|
138
|
+
2. 変更内容に応じて以下を更新する
|
|
139
|
+
- Up / Down 方針の変更有無
|
|
140
|
+
- ゼロダウンタイムの要否(既存データへの影響があるか)
|
|
141
|
+
- ロールバック方針の変更有無
|
|
142
|
+
- 既存データの変換が必要かどうか
|
|
143
|
+
3. `DB/マイグレーション戦略.md` を更新する
|
|
144
|
+
4. ユーザーに確認・承認を得る
|
|
145
|
+
|
|
133
146
|
## Phase 7: TDD → 実装 → 検証
|
|
134
147
|
|
|
135
148
|
設計書修正が承認されたら `test-driven-development` スキルへ移行する。
|
|
@@ -130,11 +130,13 @@ docs/フロントエンド/03_詳細設計/01_画面/
|
|
|
130
130
|
|
|
131
131
|
概要設計のコンポーネント一覧をもとに、共通コンポーネントごとに 1 ファイル作成する。
|
|
132
132
|
|
|
133
|
+
ファイル名は日本語にする(例: `検索バー.md`, `モーダル.md`, `ヘッダー.md`)。
|
|
134
|
+
|
|
133
135
|
テンプレート: `templates/03_詳細設計/02_コンポーネント/{コンポーネント名}.md`
|
|
134
136
|
|
|
135
137
|
```
|
|
136
138
|
docs/フロントエンド/03_詳細設計/02_コンポーネント/
|
|
137
|
-
{
|
|
139
|
+
{日本語コンポーネント名}.md
|
|
138
140
|
```
|
|
139
141
|
|
|
140
142
|
ユーザーに確認・承認を得る。
|
|
@@ -104,27 +104,47 @@ UC → DB・外部サービス の順に設計する。
|
|
|
104
104
|
|
|
105
105
|
### 5-1. ユースケース
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
カテゴリ(機能ドメイン)でディレクトリを切る。
|
|
108
|
+
|
|
109
|
+
テンプレート: `templates/03_詳細設計/01_ユースケース/{カテゴリ名}/UC-{日本語名}.md`
|
|
108
110
|
|
|
109
111
|
```
|
|
110
112
|
docs/バックエンド/03_詳細設計/01_ユースケース/
|
|
111
|
-
|
|
113
|
+
{カテゴリ名}/ # 例: 注文/, 在庫/, ユーザー/
|
|
114
|
+
UC-{日本語名}.md
|
|
112
115
|
```
|
|
113
116
|
|
|
114
117
|
### 5-2. DB・外部サービス(必要時のみ)
|
|
115
118
|
|
|
119
|
+
テンプレート: `templates/03_詳細設計/02_DB・外部サービス/{プロバイダー名}/{サービス名}.md`
|
|
120
|
+
|
|
116
121
|
```
|
|
117
122
|
docs/バックエンド/03_詳細設計/02_DB・外部サービス/
|
|
118
|
-
|
|
123
|
+
DB/
|
|
124
|
+
スキーマ定義.dbml
|
|
125
|
+
マイグレーション戦略.md
|
|
119
126
|
{プロバイダー名}/ # 例: AWS/, GCP/, Azure/
|
|
120
127
|
{サービス名}.md # 例: S3.md, DynamoDB.md, Athena.md
|
|
121
128
|
```
|
|
122
129
|
|
|
130
|
+
- DB 関連ファイルは `DB/` カテゴリに置く
|
|
123
131
|
- 外部サービスはクラウドプロバイダー(AWS / GCP / Azure など)をカテゴリフォルダとし、中にサービス名の md を置く
|
|
124
132
|
- `外部サービス.md` のような汎用名は使わない
|
|
125
133
|
|
|
126
134
|
3. ユーザーに確認・承認を得る
|
|
127
135
|
|
|
136
|
+
## Phase 5.5: マイグレーション戦略
|
|
137
|
+
|
|
138
|
+
スキーマ定義が確定した後、TDD に入る前に実施する。
|
|
139
|
+
|
|
140
|
+
1. Migration ツール・命名規則・Up/Down 方針をユーザーと確認する
|
|
141
|
+
2. ゼロダウンタイムの要否を確認する
|
|
142
|
+
3. ロールバック方針・既存データの扱いを決める
|
|
143
|
+
4. `docs/バックエンド/03_詳細設計/02_DB・外部サービス/DB/マイグレーション戦略.md` を作る
|
|
144
|
+
5. ユーザーに確認・承認を得る
|
|
145
|
+
|
|
146
|
+
テンプレート: `templates/03_詳細設計/02_DB・外部サービス/DB/マイグレーション戦略.md`
|
|
147
|
+
|
|
128
148
|
## Phase 6: TDD → 実装
|
|
129
149
|
|
|
130
150
|
`test-driven-development` スキルへ移行する。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
spec_runner:
|
|
3
|
+
node_id: detail.db.マイグレーション戦略
|
|
4
|
+
kind: migration_strategy
|
|
5
|
+
depends_on:
|
|
6
|
+
- detail.db.スキーマ定義
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# マイグレーション戦略
|
|
10
|
+
|
|
11
|
+
## ツール
|
|
12
|
+
|
|
13
|
+
- **Migration ツール**: {Flyway / Alembic / Prisma Migrate / その他}
|
|
14
|
+
- **ファイル命名規則**: {例: V{バージョン}__{説明}.sql}
|
|
15
|
+
|
|
16
|
+
## Up / Down 方針
|
|
17
|
+
|
|
18
|
+
- **Up**: {適用時の方針}
|
|
19
|
+
- **Down**: {ロールバック時の方針 / Down 不要の場合はその理由}
|
|
20
|
+
|
|
21
|
+
## 既存データの扱い
|
|
22
|
+
|
|
23
|
+
| ケース | 対応方針 |
|
|
24
|
+
|--------|---------|
|
|
25
|
+
| {既存レコードの変換} | {方針} |
|
|
26
|
+
| {seed データ} | {方針} |
|
|
27
|
+
| {データ移行スクリプト} | {方針} |
|
|
28
|
+
|
|
29
|
+
## ゼロダウンタイム戦略
|
|
30
|
+
|
|
31
|
+
- **要否**: {必要 / 不要}
|
|
32
|
+
- **方針**: {例: backward compatible な変更を先に適用 → デプロイ → 旧カラム削除}
|
|
33
|
+
|
|
34
|
+
## ロールバック方針
|
|
35
|
+
|
|
36
|
+
- {ロールバック手順・条件}
|
|
37
|
+
|
|
38
|
+
## 適用順序・依存関係
|
|
39
|
+
|
|
40
|
+
- {Migration ファイル間の依存がある場合に記載}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
## spec-runner セットアップ
|
|
4
|
+
|
|
5
|
+
このプロジェクトは spec-runner を使用しています。
|
|
6
|
+
|
|
7
|
+
### 開発ワークフロー
|
|
8
|
+
|
|
9
|
+
設計書は `docs/` に格納されています。実装前に必ず設計書を参照してください。
|
|
10
|
+
|
|
11
|
+
| 状態 | 判定方法 | 起動するスキル |
|
|
12
|
+
|------|---------|--------------|
|
|
13
|
+
| 新規プロジェクト | `docs/` が存在しないか空 | `architecture-definition` |
|
|
14
|
+
| 既存プロジェクト | `docs/` にファイルがある | `existing-project-to-docs` |
|
|
15
|
+
|
|
16
|
+
どちらの場合も、そのスキルが完了したら続けて `architecture-skill-development` を起動する。
|
|
17
|
+
|
|
18
|
+
### 判定の注意
|
|
19
|
+
|
|
20
|
+
- `docs/` の中身を確認してから判断する(ディレクトリ存在だけで判断しない)
|
|
21
|
+
- ユーザーが「〇〇を作りたい」「〇〇の開発を始めたい」のように要件・作業開始を示す発言をしたら起動する
|
|
22
|
+
- 雑談や質問など、明らかに要件でない場合は起動しない
|
|
23
|
+
|
|
24
|
+
詳細な指示は `.github/instructions/` の各ファイルを参照してください。
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## エージェント継続ループ(必須)
|
|
29
|
+
|
|
30
|
+
**すべての応答の末尾に、必ず `docker ps` を実行すること。**
|
|
31
|
+
|
|
32
|
+
### ルール
|
|
33
|
+
|
|
34
|
+
1. **エージェント自身が実行する** — ユーザーに「実行してください」と依頼してはならない。
|
|
35
|
+
2. **出力を確認するまでチャットを終了しない** — `docker ps` の結果が表示されるまで待機する。
|
|
36
|
+
3. **コマンド欄に新しい指示があれば最優先で対応する**
|
|
37
|
+
- `docker ps` の実行許可ダイアログのコマンド欄にユーザーが追記した内容を、新しい指示として受け取る。
|
|
38
|
+
- その指示を確認・実装・修正してから、再度 `docker ps` を実行する。
|
|
39
|
+
- これを繰り返すことで、ユーザーは許可ダイアログ経由で無限に指示を追加できる。
|
|
40
|
+
4. **サブエージェントは `docker ps` を実行しない**
|
|
41
|
+
- サブエージェントを呼び出す際は、`docker ps` の実行が不要であることを明示的に伝える。
|
|
42
|
+
- すべてのサブエージェントの処理が完了した後、**親エージェントが** `docker ps` を実行する。
|