spec-runner 1.0.10 → 1.0.12
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/templates/.spec-runner/scripts/check.sh +24 -11
- package/templates/.spec-runner/steps//343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +1 -1
- package/templates/.spec-runner/steps//344/273/225/346/247/230/347/255/226/345/256/232.md +2 -2
- package/templates/.spec-runner/steps//346/233/226/346/230/247/343/201/225/350/247/243/346/266/210.md +11 -6
package/package.json
CHANGED
|
@@ -297,6 +297,13 @@ schema_drift_check() {
|
|
|
297
297
|
|
|
298
298
|
run_health_check() {
|
|
299
299
|
local drifts=()
|
|
300
|
+
local current_phase=0
|
|
301
|
+
|
|
302
|
+
# フェーズに応じてチェック強度を段階適用する
|
|
303
|
+
if [[ -x ".spec-runner/scripts/spec-runner-core.sh" ]] && command -v jq >/dev/null 2>&1; then
|
|
304
|
+
current_phase="$(.spec-runner/scripts/spec-runner-core.sh --json 2>/dev/null | jq -r '.phase // 0' 2>/dev/null)"
|
|
305
|
+
[[ -n "$current_phase" && "$current_phase" != "null" ]] || current_phase=0
|
|
306
|
+
fi
|
|
300
307
|
|
|
301
308
|
UC_ROOT="$(get_steps_common_doc "uc_root")"
|
|
302
309
|
DOMAIN_ROOT="$(get_steps_common_doc "domain_root")"
|
|
@@ -317,16 +324,20 @@ run_health_check() {
|
|
|
317
324
|
grep -qE '^## タスク一覧|^## タスク\\b' "$f" 2>/dev/null || drifts+=("UC ${base}: 「## タスク」または「## タスク一覧」の見出しがありません(UC 仕様書の一番下に記載すること)")
|
|
318
325
|
done
|
|
319
326
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
if [[ ! -f "$DOMAIN_ROOT/ユビキタス言語辞書.md" ]]; then
|
|
324
|
-
drifts+=("ユビキタス言語辞書.md が存在しません")
|
|
325
|
-
else
|
|
326
|
-
grep -qE '禁止語|forbidden' "$DOMAIN_ROOT/ユビキタス言語辞書.md" 2>/dev/null || drifts+=("ユビキタス言語辞書に禁止語欄が定義されていません")
|
|
327
|
+
if [[ "$current_phase" -ge 3 ]]; then
|
|
328
|
+
adr_count=$(find "$ARCH_ROOT/設計判断記録" -name "*.md" 2>/dev/null | wc -l)
|
|
329
|
+
[[ "${adr_count:-0}" -lt 1 ]] && drifts+=("ADR が 1 件もありません(設計判断記録)")
|
|
327
330
|
fi
|
|
328
|
-
|
|
329
|
-
|
|
331
|
+
|
|
332
|
+
if [[ "$current_phase" -ge 2 ]]; then
|
|
333
|
+
if [[ ! -f "$DOMAIN_ROOT/ユビキタス言語辞書.md" ]]; then
|
|
334
|
+
drifts+=("ユビキタス言語辞書.md が存在しません")
|
|
335
|
+
else
|
|
336
|
+
grep -qE '禁止語|forbidden' "$DOMAIN_ROOT/ユビキタス言語辞書.md" 2>/dev/null || drifts+=("ユビキタス言語辞書に禁止語欄が定義されていません")
|
|
337
|
+
fi
|
|
338
|
+
if [[ -f "$DOMAIN_ROOT/集約.md" ]]; then
|
|
339
|
+
grep -q '対応テーブル' "$DOMAIN_ROOT/集約.md" 2>/dev/null || drifts+=("集約.md に「対応テーブル」欄がありません")
|
|
340
|
+
fi
|
|
330
341
|
fi
|
|
331
342
|
|
|
332
343
|
if [[ ! -f ".spec-runner/grade-history.json" ]]; then
|
|
@@ -334,13 +345,15 @@ run_health_check() {
|
|
|
334
345
|
elif command -v jq >/dev/null 2>&1; then
|
|
335
346
|
grade=$(jq -r '.current_grade' .spec-runner/grade-history.json)
|
|
336
347
|
[[ -n "$grade" && "$grade" != "null" ]] || drifts+=("grade-history.json の current_grade が未設定です")
|
|
337
|
-
if [[ "$grade" == "A" ]]; then
|
|
348
|
+
if [[ "$grade" == "A" && "$current_phase" -ge 4 ]]; then
|
|
338
349
|
[[ ! -f "$INFRA_ROOT/schema.dbml" ]] && drifts+=("Grade A 必須: schema.dbml が存在しません")
|
|
339
350
|
schema_sync_check >/dev/null 2>&1 || drifts+=("Prisma と schema.dbml のテーブルが一致していません(スキーマ同期チェック)")
|
|
340
351
|
fi
|
|
341
352
|
fi
|
|
342
353
|
|
|
343
|
-
[[
|
|
354
|
+
if [[ "$current_phase" -ge 3 ]]; then
|
|
355
|
+
[[ ! -f "$OPENAPI_PATH" ]] && drifts+=("openapi.yaml が存在しません")
|
|
356
|
+
fi
|
|
344
357
|
|
|
345
358
|
if [[ ${#drifts[@]} -eq 0 ]]; then
|
|
346
359
|
ok "健全性確認: 問題なし"
|
|
@@ -6,13 +6,13 @@ primary_output: docs/02_ユースケース仕様/<カテゴリ>/UC-N-xxx.md
|
|
|
6
6
|
|
|
7
7
|
# ユースケース仕様(UC 仕様書)
|
|
8
8
|
|
|
9
|
-
**やること**: 機能説明(`$ARGUMENTS`)から UC ブランチと UC 仕様書を作成し、テンプレに沿って埋める。その後 clarify → analyze
|
|
9
|
+
**やること**: 機能説明(`$ARGUMENTS`)から UC ブランチと UC 仕様書を作成し、テンプレに沿って埋める。その後 quality フロー(clarify → analyze)を回し、必要に応じて checklist を実施して review-pass へ進む。
|
|
10
10
|
|
|
11
11
|
| 項目 | 内容 |
|
|
12
12
|
|------|------|
|
|
13
13
|
| **成果物** | `docs/02_ユースケース仕様/<カテゴリ>/UC-N-xxx.md`(1 UC = 1 本) |
|
|
14
14
|
| **main** | **必ず UC 用ブランチを作成してから**仕様を書く。main で直接編集しない |
|
|
15
|
-
| **品質フロー** | clarify → analyze
|
|
15
|
+
| **品質フロー** | `phase-locks.json` の `quality` を使って **clarify → analyze** を自動進行。必要なら checklist を追加で実施 |
|
|
16
16
|
| **判断ログ(任意)** | `docs/02_.../<カテゴリ>/判断記録/UC-N-MMDD-題名.md`。テンプレ: `.spec-runner/templates/UC-N-MMDD-判断記録テンプレ.md` |
|
|
17
17
|
|
|
18
18
|
## ユーザー入力
|
package/templates/.spec-runner/steps//346/233/226/346/230/247/343/201/225/350/247/243/346/266/210.md
CHANGED
|
@@ -54,13 +54,17 @@ $ARGUMENTS
|
|
|
54
54
|
|
|
55
55
|
5. **回答ごとの反映(増分)**
|
|
56
56
|
- メモリとファイル内容を保持
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
|
|
57
|
+
- **本文更新を必須**: 採用回答を必ず該当セクションへ反映(機能→機能要件、操作→ストーリー/アクター、データ→データモデル、非機能→測定可能な基準、エッジ→エッジケース、用語→統一・旧表記は一度だけ (旧: "X"))
|
|
58
|
+
- `## 解消事項` は任意。必要な場合のみ最小限を残す(本文の代替にしない)
|
|
59
|
+
- 記録する場合は次の改行形式:
|
|
60
|
+
```markdown
|
|
61
|
+
- Q: <質問>
|
|
62
|
+
A: <回答>
|
|
63
|
+
```
|
|
64
|
+
- 古い曖昧記述は置換し矛盾を残さない。**各反映の直後にファイル保存**。見出し階層維持。新規見出しは **`## 解消事項`** のみ可
|
|
61
65
|
|
|
62
66
|
6. **検証(各書き込み後・最終)**
|
|
63
|
-
-
|
|
67
|
+
- 本文に解消済み内容が反映され、本文だけ読めば仕様が確定している
|
|
64
68
|
- 質問数(採用分)≤ 5
|
|
65
69
|
- 更新セクションに解消済みの曖昧プレースホルダが残っていない
|
|
66
70
|
- 矛盾なし、Markdown 有効、用語一貫
|
|
@@ -77,7 +81,8 @@ $ARGUMENTS
|
|
|
77
81
|
- 仕様ファイルがない: 対象仕様(憲章 / UC / ドメイン / アーキ)の作成を案内(ここでは新規作成しない)
|
|
78
82
|
- `[要確認: ...]` が残っている項目を優先して質問対象にする
|
|
79
83
|
- `[要確認: ...]` が無くても、文脈から曖昧・未決定な表現を検出して質問対象に含める
|
|
80
|
-
-
|
|
84
|
+
- 実行状態は `.spec-runner/phase-locks.json` の `quality.clarified.<scope>` で管理し、本文に余計な状態メタ情報は残さない
|
|
85
|
+
- `## 解消事項` を残す場合も最小限にし、判断の正本は常に本文とする
|
|
81
86
|
- 質問は合計 5 を超えない(聞き直しは新規に数えない)
|
|
82
87
|
- 機能の明確さを妨げない限り技術スタックの推測質問は避ける
|
|
83
88
|
- 「ストップ」「完了」「進めて」等を尊重
|