spec-runner 1.0.4 → 1.0.6
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 +6 -8
- package/bin/spec-runner.js +5 -2
- package/package.json +1 -1
- package/templates/base/scripts/spec-runner.sh +34 -63
- package/templates/claude/.claude/commands/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.md +2 -2
- package/templates/claude/CLAUDE.md +1 -1
- package/templates/copilot/.github/copilot-instructions.md +1 -1
- package/templates/copilot/.github/prompts/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.prompt.md +2 -2
- package/templates/cursor/.cursor/commands/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.md +4 -2
- package/templates/cursor/.cursor/commands/sr-/345/210/235/346/234/237/345/214/226.md +31 -6
- package/templates/cursor/.cursor/commands/sr-/350/250/255/345/256/232.md +15 -6
- package/templates/cursor/.cursorrules +2 -1
- package/templates/claude/.claude/commands/sr-/345/256/214/344/272/206.md +0 -9
- package/templates/copilot/.github/prompts/sr-/345/256/214/344/272/206.prompt.md +0 -13
- package/templates/cursor/.cursor/commands/sr-/345/256/214/344/272/206.md +0 -9
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ npx spec-runner
|
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
対話では**どの開発環境か**だけ聞かれる(AI ツール・CI・ドキュメント言語)。
|
|
33
|
-
ここまでで、`.spec-runner/config.sh`(既定値)と
|
|
33
|
+
ここまでで、`.spec-runner/config.sh`(既定値)と `.spec-runner/scripts`・`.spec-runner/templates`・`docs/` ができる。CI で github-actions などを選んだ場合は `.github/` もできる。
|
|
34
34
|
|
|
35
35
|
### 3.5 プロジェクトの土台を書く(推奨・init の前)
|
|
36
36
|
|
|
@@ -89,9 +89,7 @@ npx spec-runner
|
|
|
89
89
|
⑥ 実装
|
|
90
90
|
./.spec-runner/scripts/spec-runner.sh implement
|
|
91
91
|
テストを Green にする実装を書く
|
|
92
|
-
|
|
93
|
-
⑦ 完了
|
|
94
|
-
./.spec-runner/scripts/spec-runner.sh complete
|
|
92
|
+
完了したら: git push → PR 作成。次のユースケースは init <名前> で開始
|
|
95
93
|
```
|
|
96
94
|
|
|
97
95
|
TDD はデフォルトで有効。実装に進むには「テスト設計ドキュメント」と「テストコードのコミット」が必須。無効にしたいときは `.spec-runner/config.sh` で `export TDD_ENABLED="false"`。
|
|
@@ -140,7 +138,7 @@ curl -sSL https://raw.githubusercontent.com/spec-runner/spec-runner/main/install
|
|
|
140
138
|
| ④ plan(技術計画) | `design-high` → `design-detail`(domain / usecase / table / infra) |
|
|
141
139
|
| ⑤ analyze(整合性) | `review-pass` と CI の phase-gate-check |
|
|
142
140
|
| ⑥ tasks(タスク分割) | テスト設計・実装フェーズでのタスク単位の進め方 |
|
|
143
|
-
| ⑦ implement |
|
|
141
|
+
| ⑦ implement | 実装完了後は push → PR。次の UC は `init` で開始 |
|
|
144
142
|
|
|
145
143
|
---
|
|
146
144
|
|
|
@@ -178,7 +176,7 @@ curl -sSL https://raw.githubusercontent.com/spec-runner/spec-runner/main/install
|
|
|
178
176
|
│ ├── テンプレート一覧.md
|
|
179
177
|
│ ├── 振り返り/負債.md
|
|
180
178
|
│ └── 99_設計判断記録/.gitkeep
|
|
181
|
-
├── .github/
|
|
179
|
+
├── .github/ # CI で github-actions を選択した場合のみ
|
|
182
180
|
│ ├── workflows/phase-gate-check.yml
|
|
183
181
|
│ └── PULL_REQUEST_TEMPLATE.md
|
|
184
182
|
└── docs/ # 付番済み(01_〜04_、99_)要件・概要・詳細設計・テスト設計・設計判断記録
|
|
@@ -200,7 +198,7 @@ npx spec-runner --update
|
|
|
200
198
|
|
|
201
199
|
## スラッシュコマンド
|
|
202
200
|
|
|
203
|
-
**`/sr-状態` を実行すると、現在のフェーズと「次にやるべきこと」(次に打つコマンド)が動的に表示される。**
|
|
201
|
+
**`/sr-状態` を実行すると、現在のフェーズと「次にやるべきこと」(次に打つコマンド)が動的に表示される。** フェーズ移行(概要設計〜実装)はこの案内に従い、実装完了後は push → PR → 次の UC は init で開始。
|
|
204
202
|
|
|
205
203
|
| コマンド | 説明 |
|
|
206
204
|
|----------|------|
|
|
@@ -214,7 +212,7 @@ npx spec-runner --update
|
|
|
214
212
|
| `/sr-修正` 内容 | 修正 |
|
|
215
213
|
| `/sr-緊急修正` 内容 | 緊急修正 |
|
|
216
214
|
|
|
217
|
-
|
|
215
|
+
概要設計・詳細設計・テスト設計・実装は、`/sr-状態` の案内に表示されるので個別に指定不要。実装完了後は push → PR。次の UC は `/sr-初期化` で開始。
|
|
218
216
|
|
|
219
217
|
定義: Claude `.claude/commands/` / Cursor `.cursor/commands/` / Copilot `.github/prompts/*.prompt.md`(いずれもファイル名・コマンド名は日本語)
|
|
220
218
|
|
package/bin/spec-runner.js
CHANGED
|
@@ -387,8 +387,11 @@ async function deployFiles(answers) {
|
|
|
387
387
|
fs.mkdirSync(path.dirname(adrTemplateDest), { recursive: true });
|
|
388
388
|
if (!isDryRun) fs.copyFileSync(adrTemplateSrc, adrTemplateDest);
|
|
389
389
|
}
|
|
390
|
-
|
|
391
|
-
|
|
390
|
+
// CI で github-actions を選んだときだけ .github のワークフロー・PR テンプレートを配置
|
|
391
|
+
if (answers.ci === 'github-actions') {
|
|
392
|
+
copyPathFrom(baseDir, '.github/workflows');
|
|
393
|
+
copyPathFrom(baseDir, '.github/PULL_REQUEST_TEMPLATE.md');
|
|
394
|
+
}
|
|
392
395
|
|
|
393
396
|
// 2. Claude Code 選択時: templates/claude/ をそのままコピー
|
|
394
397
|
if (tools.includes('claude')) {
|
package/package.json
CHANGED
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
# ./.spec-runner/scripts/spec-runner.sh fix <修正内容>
|
|
19
19
|
# ./.spec-runner/scripts/spec-runner.sh hotfix <内容>
|
|
20
20
|
# ./.spec-runner/scripts/spec-runner.sh review-pass <ドキュメントパス>
|
|
21
|
-
# ./.spec-runner/scripts/spec-runner.sh complete
|
|
22
21
|
# =============================================================================
|
|
23
22
|
|
|
24
23
|
set -euo pipefail
|
|
@@ -245,13 +244,17 @@ cmd_init() {
|
|
|
245
244
|
step "ユースケース初期化: $usecase"
|
|
246
245
|
echo ""
|
|
247
246
|
|
|
248
|
-
# 既存のstate
|
|
247
|
+
# 既存のstateがあれば警告(SR_YES=1 のときは AI/CI 用に確認をスキップ)
|
|
249
248
|
if [[ -f "$STATE_FILE" ]]; then
|
|
250
249
|
local current
|
|
251
250
|
current=$(state_get "usecase")
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
251
|
+
if [[ "${SR_YES:-0}" == "1" ]]; then
|
|
252
|
+
warn "作業中のユースケース '$current' を上書きします(SR_YES=1)"
|
|
253
|
+
else
|
|
254
|
+
warn "作業中のユースケース '$current' があります"
|
|
255
|
+
read -r -p "上書きしますか? [y/N] " answer
|
|
256
|
+
[[ "$answer" =~ ^[Yy]$ ]] || die "中止しました"
|
|
257
|
+
fi
|
|
255
258
|
fi
|
|
256
259
|
|
|
257
260
|
# ブランチ作成
|
|
@@ -708,55 +711,10 @@ cmd_implement() {
|
|
|
708
711
|
info " 1. テストを Green にする実装を書く"
|
|
709
712
|
info " 2. 設計と乖離した場合は先にドキュメントを更新する"
|
|
710
713
|
info " 3. コードとドキュメントを同一コミットに含める"
|
|
711
|
-
info " 4.
|
|
714
|
+
info " 4. 完了したら: git push → PR 作成。次のユースケースは init <名前> で開始"
|
|
712
715
|
warn "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
713
716
|
}
|
|
714
717
|
|
|
715
|
-
# ── complete ──────────────────────────────────────────────────────────────────
|
|
716
|
-
cmd_complete() {
|
|
717
|
-
require_state
|
|
718
|
-
|
|
719
|
-
echo ""
|
|
720
|
-
step "【完了チェック】実装の完了条件を確認します"
|
|
721
|
-
echo ""
|
|
722
|
-
|
|
723
|
-
local errors=0
|
|
724
|
-
|
|
725
|
-
# テストが通るか確認を促す
|
|
726
|
-
warn "テストが全て通過していることを確認してください"
|
|
727
|
-
read -r -p "全テスト通過済みですか? [y/N] " ans_test
|
|
728
|
-
[[ "$ans_test" =~ ^[Yy]$ ]] || { fail "テストを通過させてから完了してください"; ((errors++)); }
|
|
729
|
-
|
|
730
|
-
# ドキュメントと実装の乖離チェック
|
|
731
|
-
read -r -p "設計ドキュメントと実装に乖離はないですか? [y/N] " ans_doc
|
|
732
|
-
[[ "$ans_doc" =~ ^[Yy]$ ]] || { fail "ドキュメントを更新してから完了してください"; ((errors++)); }
|
|
733
|
-
|
|
734
|
-
if [[ $errors -gt 0 ]]; then
|
|
735
|
-
echo ""
|
|
736
|
-
die "完了条件を満たしていません"
|
|
737
|
-
fi
|
|
738
|
-
|
|
739
|
-
state_set_str "phase" "complete"
|
|
740
|
-
state_push_history "実装完了"
|
|
741
|
-
|
|
742
|
-
# ブランチ情報の表示
|
|
743
|
-
local branch agg_branch usecase
|
|
744
|
-
branch=$(state_get "branch")
|
|
745
|
-
agg_branch=$(state_get "aggregate_branch")
|
|
746
|
-
usecase=$(state_get "usecase")
|
|
747
|
-
|
|
748
|
-
echo ""
|
|
749
|
-
ok "『$usecase』の実装が完了しました!"
|
|
750
|
-
echo ""
|
|
751
|
-
info "次のステップ:"
|
|
752
|
-
info " 1. git push origin $branch"
|
|
753
|
-
info " 2. Pull Request を作成(.github/PULL_REQUEST_TEMPLATE.md を使用)"
|
|
754
|
-
if [[ -n "$agg_branch" ]]; then
|
|
755
|
-
info " 3. PRマージ先: $agg_branch"
|
|
756
|
-
info " 4. 関連ユースケースがすべて揃ったら $agg_branch → main へPR"
|
|
757
|
-
fi
|
|
758
|
-
}
|
|
759
|
-
|
|
760
718
|
# ── review-pass ───────────────────────────────────────────────────────────────
|
|
761
719
|
cmd_review_pass() {
|
|
762
720
|
local file="${1:-}"
|
|
@@ -832,13 +790,31 @@ cmd_review_pass() {
|
|
|
832
790
|
esac
|
|
833
791
|
}
|
|
834
792
|
|
|
793
|
+
# 日本語ゲート名 → 内部キー(set-gate で日本語指定時に使用)
|
|
794
|
+
gate_ja_to_key() {
|
|
795
|
+
case "$1" in
|
|
796
|
+
要件レビュー済み) echo "require_approved" ;;
|
|
797
|
+
用語集確認済み) echo "glossary_checked" ;;
|
|
798
|
+
概要設計レビュー済み) echo "high_level_reviewed" ;;
|
|
799
|
+
ドメインモデルレビュー済み) echo "domain_model_reviewed" ;;
|
|
800
|
+
ユースケース設計レビュー済み) echo "usecase_design_reviewed" ;;
|
|
801
|
+
テーブル設計レビュー済み) echo "table_design_reviewed" ;;
|
|
802
|
+
インフラ設計レビュー済み) echo "infra_design_reviewed" ;;
|
|
803
|
+
テスト設計レビュー済み) echo "test_design_reviewed" ;;
|
|
804
|
+
テストコードコミット済み) echo "test_code_committed" ;;
|
|
805
|
+
*) echo "$1" ;;
|
|
806
|
+
esac
|
|
807
|
+
}
|
|
808
|
+
|
|
835
809
|
# ── set-gate ──────────────────────────────────────────────────────────────────
|
|
836
810
|
cmd_set_gate() {
|
|
837
811
|
require_state
|
|
838
812
|
local gate="${1:-}"
|
|
839
|
-
[[ -n "$gate" ]] || die "使い方: ./.spec-runner/scripts/spec-runner.sh set-gate <ゲート名>"
|
|
840
|
-
|
|
841
|
-
|
|
813
|
+
[[ -n "$gate" ]] || die "使い方: ./.spec-runner/scripts/spec-runner.sh set-gate <ゲート名> 例: 用語集確認済み、テストコードコミット済み"
|
|
814
|
+
local key
|
|
815
|
+
key=$(gate_ja_to_key "$gate")
|
|
816
|
+
state_set_bool "gates.$key" true
|
|
817
|
+
ok "ゲートフラグ設定: $key = true"
|
|
842
818
|
}
|
|
843
819
|
|
|
844
820
|
# ── status 表示用:フェーズ・ゲートの日本語ラベル ─────────────────────────────
|
|
@@ -966,7 +942,7 @@ cmd_status() {
|
|
|
966
942
|
require)
|
|
967
943
|
echo -e " 1. ${CYAN}$req_file${NC} を編集"
|
|
968
944
|
echo -e " 2. /sr-レビュー $req_file"
|
|
969
|
-
echo -e " 3. /sr-ゲート設定
|
|
945
|
+
echo -e " 3. /sr-ゲート設定 用語集確認済み"
|
|
970
946
|
echo -e " 4. /sr-概要設計"
|
|
971
947
|
;;
|
|
972
948
|
design-high)
|
|
@@ -993,15 +969,12 @@ cmd_status() {
|
|
|
993
969
|
;;
|
|
994
970
|
test-design)
|
|
995
971
|
echo -e " 1. docs/04_テスト設計/$(uc_slug).md を編集し、テストコードを書く(Red)"
|
|
996
|
-
echo -e " 2. テストコードをコミット → /sr-ゲート設定
|
|
972
|
+
echo -e " 2. テストコードをコミット → /sr-ゲート設定 テストコードコミット済み"
|
|
997
973
|
echo -e " 3. /sr-レビュー docs/04_テスト設計/$(uc_slug).md"
|
|
998
974
|
echo -e " 4. /sr-実装"
|
|
999
975
|
;;
|
|
1000
976
|
implement)
|
|
1001
|
-
echo -e "
|
|
1002
|
-
;;
|
|
1003
|
-
complete)
|
|
1004
|
-
echo -e " 完了。PR を作成してマージしてください。"
|
|
977
|
+
echo -e " 実装完了したら: git push → PR 作成。次のユースケースは /sr-初期化 <名前> で開始"
|
|
1005
978
|
;;
|
|
1006
979
|
fix)
|
|
1007
980
|
echo -e " 案内に従って該当ドキュメントを修正し、必要なら /sr-詳細設計 等から再実行。"
|
|
@@ -1132,7 +1105,6 @@ main() {
|
|
|
1132
1105
|
design-detail) cmd_design_detail "$@" ;;
|
|
1133
1106
|
test-design) cmd_test_design "$@" ;;
|
|
1134
1107
|
implement) cmd_implement "$@" ;;
|
|
1135
|
-
complete) cmd_complete "$@" ;;
|
|
1136
1108
|
review-pass) cmd_review_pass "$@" ;;
|
|
1137
1109
|
set-gate) cmd_set_gate "$@" ;;
|
|
1138
1110
|
status) cmd_status "$@" ;;
|
|
@@ -1150,11 +1122,10 @@ main() {
|
|
|
1150
1122
|
echo " design-detail <sub> 詳細設計フェーズ(sub: domain|usecase|table|infra)"
|
|
1151
1123
|
echo " test-design テスト設計フェーズに移行(ゲートチェック)"
|
|
1152
1124
|
echo " implement 実装フェーズに移行(ゲートチェック)"
|
|
1153
|
-
echo " complete 実装完了(完了チェック)"
|
|
1154
1125
|
echo ""
|
|
1155
1126
|
echo -e "${BOLD}レビュー:${NC}"
|
|
1156
1127
|
echo " review-pass <ファイル> ドキュメントをレビュー通過にする"
|
|
1157
|
-
echo " set-gate <ゲート名>
|
|
1128
|
+
echo " set-gate <ゲート名> 手動でゲートフラグを立てる(日本語可。例: 用語集確認済み)"
|
|
1158
1129
|
echo ""
|
|
1159
1130
|
echo -e "${BOLD}確認:${NC}"
|
|
1160
1131
|
echo " status 現在の状態を表示"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# /sr-ゲート設定
|
|
2
2
|
|
|
3
|
-
**チャットで使うコマンド**。$ARGUMENTS にゲート名を指定し、以下を**ターミナルで実行**してください(例: `/sr-ゲート設定
|
|
3
|
+
**チャットで使うコマンド**。$ARGUMENTS にゲート名を指定し、以下を**ターミナルで実行**してください(例: `/sr-ゲート設定 用語集確認済み`)。
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
./.spec-runner/scripts/spec-runner.sh set-gate $ARGUMENTS
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
ゲート名は**日本語**でも**英語キー**でも指定できます。引数が空の場合は、ユーザーに「ゲート名を指定してください。例: 用語集確認済み、テストコードコミット済み、概要設計レビュー済み」と伝えてください。
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
- require → design-high → design-detail (domain → usecase → table → infra) → test-design → implement
|
|
20
20
|
- 各フェーズ完了時: `./.spec-runner/scripts/spec-runner.sh review-pass <該当ファイル>`
|
|
21
21
|
- ゲート: `./.spec-runner/scripts/spec-runner.sh set-gate glossary_checked` など
|
|
22
|
-
-
|
|
22
|
+
- 実装完了後: git push → PR。次のユースケースは `init <名前>` で開始
|
|
23
23
|
- 修正: `./.spec-runner/scripts/spec-runner.sh fix "内容"` / `./.spec-runner/scripts/spec-runner.sh hotfix "内容"`
|
|
24
24
|
|
|
25
25
|
詳細はプロジェクトの README を参照。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
agent: 'agent'
|
|
3
3
|
description: 'spec-runner: ゲート通過を記録'
|
|
4
|
-
argument-hint: 'ゲート名(例:
|
|
4
|
+
argument-hint: 'ゲート名(例: 用語集確認済み、テストコードコミット済み)'
|
|
5
5
|
tools: ['shell']
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -11,4 +11,4 @@ tools: ['shell']
|
|
|
11
11
|
./.spec-runner/scripts/spec-runner.sh set-gate ${input:gate:ゲート名}
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
ゲート名は日本語(用語集確認済み、テストコードコミット済み など)または英語キーで指定できます。引数が空の場合は、ユーザーに「ゲート名を指定してください。例: 用語集確認済み、テストコードコミット済み」と伝えてください。
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# /sr-ゲート設定
|
|
2
2
|
|
|
3
|
-
**チャットで使うコマンド**。ユーザーが `/sr-ゲート設定` の後に続けて入力したゲート名で、以下を**ターミナルで実行**してください(例: `/sr-ゲート設定
|
|
3
|
+
**チャットで使うコマンド**。ユーザーが `/sr-ゲート設定` の後に続けて入力したゲート名で、以下を**ターミナルで実行**してください(例: `/sr-ゲート設定 用語集確認済み`)。
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
./.spec-runner/scripts/spec-runner.sh set-gate <ユーザーが入力したゲート名>
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
ゲート名は**日本語**でも**英語キー**でも指定できます。引数が空の場合は、ユーザーに次のように伝えてください。
|
|
10
|
+
|
|
11
|
+
「ゲート名を指定してください。例: 用語集確認済み、テストコードコミット済み、概要設計レビュー済み」
|
|
@@ -1,10 +1,35 @@
|
|
|
1
1
|
# /sr-初期化
|
|
2
2
|
|
|
3
|
-
**チャットで使うコマンド**。ユーザーが `/sr-初期化`
|
|
3
|
+
**チャットで使うコマンド**。ユーザーが `/sr-初期化` の後に続けて入力した文字列を引数として扱います(例: `/sr-初期化 Todoアプリ` → ユースケース名「Todoアプリ」)。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
./.spec-runner/scripts/spec-runner.sh init <ユーザーが入力した引数>
|
|
7
|
-
```
|
|
5
|
+
## 重要: 対話は「チャット上で AI が埋める」形式で行う
|
|
8
6
|
|
|
9
|
-
-
|
|
10
|
-
|
|
7
|
+
- **ターミナルで read や npx --configure の入力待ちにしないこと。** 未設定時は、**AI が** プロジェクト構成を確認し、必要ならチャットでユーザーに聞きながら設定を決め、**AI が** `.spec-runner/config.sh` を編集・生成してから init を実行する。
|
|
8
|
+
|
|
9
|
+
## 手順
|
|
10
|
+
|
|
11
|
+
1. **設定済みか確認**
|
|
12
|
+
`.spec-runner/config.sh` が存在し、かつ `CONFIGURED="true"` かどうかを確認する。
|
|
13
|
+
|
|
14
|
+
2. **未設定の場合(config.sh がない、または CONFIGURED が true でない)**
|
|
15
|
+
- プロジェクトの `package.json` や既存の `src/` などを確認し、Domain/UseCase/テストのパスなどを推測する。
|
|
16
|
+
- 必要ならチャットでユーザーに聞く(例: 「Domain のパスは `src/domain` でよさそうですが、変更しますか?」)。
|
|
17
|
+
- 決まったら **AI が** `.spec-runner/config.sh` を編集または作成する。必ず `export CONFIGURED="true"` を設定し、以下の変数も設定する(既存の config.sh がある場合は必要な部分だけ上書きする)。
|
|
18
|
+
- その後、ターミナルで `./.spec-runner/scripts/spec-runner.sh init <引数>` を実行する。このときはすでに CONFIGURED が true なので、ターミナルでの対話は発生しない。
|
|
19
|
+
|
|
20
|
+
3. **設定済みの場合**
|
|
21
|
+
そのまま `./.spec-runner/scripts/spec-runner.sh init <ユーザーが入力した引数>` を実行する。
|
|
22
|
+
|
|
23
|
+
4. **引数がない場合**
|
|
24
|
+
ユーザーに「ユースケース名(と任意で集約名)を指定してください」と伝えるか、設定だけしたい場合は `/sr-設定` を案内する。
|
|
25
|
+
|
|
26
|
+
## config.sh に必要な変数(AI が書くときの目安)
|
|
27
|
+
|
|
28
|
+
- `CONFIGURED="true"` (必須)
|
|
29
|
+
- `DOMAIN_PATH`, `USECASE_PATH`, `INFRA_PATH`(例: `src/domain`, `src/useCase`, `src/infrastructure`)
|
|
30
|
+
- `TEST_DIR`(例: `tests`), `SOURCE_EXTENSIONS`(例: `ts tsx js jsx`), `TEST_EXTENSIONS`(例: `test.ts spec.ts`)
|
|
31
|
+
- `TDD_ENABLED`, `SPEC_RUNNER_DDD_ENABLED`(`"true"` / `"false"`)
|
|
32
|
+
- `BUILD_CMD`, `TEST_CMD`, `LINT_CMD`(例: `npm run build`, `npm test`, `npm run lint`)
|
|
33
|
+
- その他、既存の `.spec-runner/config.sh` にあれば同じ形式で揃える(`SPEC_RUNNER_FRAMEWORK`, `SPEC_RUNNER_TOOLS`, `SPEC_RUNNER_LANGUAGE`, `CI_PLATFORM` など)。
|
|
34
|
+
|
|
35
|
+
非対話で実行したいときは、上書き確認もスキップするため `SR_YES=1 ./.spec-runner/scripts/spec-runner.sh init <引数>` のように実行してよい。
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
# /sr-設定
|
|
2
2
|
|
|
3
|
-
詳細設定(パス・TDD・DDD
|
|
3
|
+
詳細設定(パス・TDD・DDD 等)を**チャット上で AI が埋める**形で行います。ユースケースは作成しません。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 重要: 対話はターミナルではなくチャットで行う
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
./.spec-runner/scripts/spec-runner.sh init
|
|
9
|
-
```
|
|
7
|
+
- **ターミナルで `init` を実行して入力待ちにしないこと。** AI がプロジェクトを確認し、必要ならチャットでユーザーに聞きながら設定を決め、**AI が** `.spec-runner/config.sh` を編集・生成する。
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
## 手順
|
|
10
|
+
|
|
11
|
+
1. `.spec-runner/config.sh` の有無を確認する。ない場合は `npx spec-runner` で一度セットアップされている必要がある(config.sh が存在する前提)。
|
|
12
|
+
2. プロジェクト構成(`package.json`、既存の `src/` やテストディレクトリなど)を確認し、以下を決める(不明ならチャットでユーザーに聞く):
|
|
13
|
+
- Domain / UseCase / Infrastructure のパス
|
|
14
|
+
- テストディレクトリ、ソース・テストの拡張子
|
|
15
|
+
- TDD を必須にするか、DDD を使うか
|
|
16
|
+
- CI プラットフォーム、ドキュメント言語 など
|
|
17
|
+
3. **AI が** `.spec-runner/config.sh` を編集または作成する。必ず `export CONFIGURED="true"` を設定し、`sr-初期化` のコマンド説明にある変数(DOMAIN_PATH, USECASE_PATH, TEST_DIR, TDD_ENABLED など)を適切に設定する。
|
|
18
|
+
4. 完了したら「設定を config.sh に反映しました。ユースケースを開始する場合は `/sr-初期化 ユースケース名 集約名` を使ってください」と伝える。
|
|
19
|
+
|
|
20
|
+
**ターミナルで `./.spec-runner/scripts/spec-runner.sh init` を実行して対話に頼る必要はない。**
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
- `phase` が `implement` でないときは実装コードを生成しない。ユーザーに「現在のフェーズを確認してください」と伝える。
|
|
9
9
|
- ユーザーが「init して」「status 確認して」「design-high で進めて」などと言ったら、対応する `./scripts/spec-runner.sh` をターミナルで実行する。
|
|
10
10
|
- スラッシュコマンド `/sr-init` などは `.cursor/commands/` に定義済み。チャットで `/sr-status` のように呼び出せる(Agent 経由でシェル実行)。
|
|
11
|
+
- **初期化・設定**: `/sr-初期化` や `/sr-設定` では、未設定時も**ターミナルの入力待ちにしない**。AI がプロジェクトを確認し、チャットで聞くか推測して `.spec-runner/config.sh` を編集・生成してから init を実行する(対話は「AI がどんどん埋めていく」形式)。
|
|
11
12
|
|
|
12
13
|
## TDD(テスト駆動)— デフォルトで有効
|
|
13
14
|
|
|
@@ -19,7 +20,7 @@
|
|
|
19
20
|
- require → design-high → design-detail (domain → usecase → table → infra) → test-design → implement
|
|
20
21
|
- 各フェーズ完了時: `./scripts/spec-runner.sh review-pass <該当ファイル>`
|
|
21
22
|
- ゲート: `./scripts/spec-runner.sh set-gate glossary_checked` など
|
|
22
|
-
-
|
|
23
|
+
- 実装完了後: git push → PR。次のユースケースは `./scripts/spec-runner.sh init <名前>` で開始
|
|
23
24
|
- 修正: `./scripts/spec-runner.sh fix "内容"` / `./scripts/spec-runner.sh hotfix "内容"`
|
|
24
25
|
|
|
25
26
|
詳細はプロジェクトの CLAUDE.md または README を参照。
|