@careerchain/stdd 0.1.0 → 0.1.2

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/assets/.claude/agents/implementer.md +4 -4
  2. package/assets/.claude/agents/plan-writer.md +7 -7
  3. package/assets/.claude/agents/qa-engineer.md +58 -6
  4. package/assets/.claude/agents/spec-reviewer.md +24 -18
  5. package/assets/.claude/agents/spec-writer.md +42 -38
  6. package/assets/.claude/agents/test-reviewer.md +21 -21
  7. package/assets/.claude/hooks/spec-first-check.sh +201 -0
  8. package/assets/.claude/rules/stdd-spec-first.md +36 -0
  9. package/assets/.claude/settings.json +16 -2
  10. package/assets/.claude/skills/auto-implement/SKILL.md +1 -1
  11. package/assets/.claude/skills/auto-implement/references/phases.md +14 -12
  12. package/assets/.claude/skills/documenting-plans/SKILL.md +3 -3
  13. package/assets/.claude/skills/documenting-specifications/SKILL.md +326 -300
  14. package/assets/.claude/skills/documenting-specifications/guides/error-handling.md +23 -21
  15. package/assets/.claude/skills/documenting-specifications/guides/stdd-violations.md +2 -2
  16. package/assets/.claude/skills/documenting-specifications/templates/api-spec-common.md +97 -0
  17. package/assets/.claude/skills/documenting-specifications/templates/architecture-common.md +188 -0
  18. package/assets/.claude/skills/documenting-specifications/templates/design-common.md +57 -0
  19. package/assets/.claude/skills/documenting-specifications/templates/requirements-common.md +104 -0
  20. package/assets/.claude/skills/documenting-specifications/templates/requirements.md +105 -125
  21. package/assets/.claude/skills/documenting-specifications/templates/table-definition-common.md +78 -0
  22. package/assets/.claude/skills/documenting-specifications/templates/tech-design.md +110 -183
  23. package/assets/.claude/skills/documenting-specifications/templates/test-plan.md +58 -0
  24. package/assets/.claude/skills/generating-wireframes/SKILL.md +10 -10
  25. package/assets/.claude/skills/generating-wireframes/guides/from-requirements.md +13 -13
  26. package/assets/.claude/skills/generating-wireframes/templates/index.html +1 -1
  27. package/assets/.claude/skills/introducing-stdd/SKILL.md +3 -0
  28. package/assets/.claude/skills/reverse-engineering-common-spec/SKILL.md +22 -11
  29. package/assets/.claude/skills/reverse-engineering-feature-spec/SKILL.md +53 -32
  30. package/assets/.claude/skills/reverse-engineering-feature-spec/guides/figma-capture.md +9 -9
  31. package/assets/.claude/skills/starting-new-with-stdd/SKILL.md +43 -17
  32. package/assets/.claude/skills/starting-new-with-stdd/templates/bootstrap-plan.md +16 -7
  33. package/assets/.claude/skills/tailoring-spec-format/SKILL.md +7 -7
  34. package/assets/.claude/skills/verifying-consistency/SKILL.md +1 -1
  35. package/assets/mcp.json +9 -0
  36. package/assets/stdd.config.yml.tpl +4 -0
  37. package/dist/cli.js +1 -0
  38. package/dist/cli.js.map +1 -1
  39. package/dist/install.js +20 -1
  40. package/dist/install.js.map +1 -1
  41. package/package.json +1 -1
  42. package/assets/.claude/docs/spec-driven-development-guide.md +0 -436
  43. package/assets/.claude/skills/documenting-specifications/templates/screen-items-definition.md +0 -179
@@ -1,184 +1,164 @@
1
- # REQUIREMENTS.md テンプレート
1
+ # REQUIREMENTS.md テンプレート(feature)
2
2
 
3
- **目的**: ビジネス要件とユーザージャーニーをステークホルダー視点で定義
3
+ **目的**: 機能の要件を「業務要件 → 機能要件 → 非機能要件」の3層で定義し、後続(TECH_DESIGN / テスト / コード)の一次インプットにする。
4
4
 
5
5
  **配置**: `docs/<app>/<path>/REQUIREMENTS.md`
6
6
 
7
- ## テンプレート構造
8
-
9
- ```markdown
10
- # [機能名] 仕様書
11
-
12
- ---
13
-
14
- ## 1. 概要
15
-
16
- ### 解決する問題
17
-
18
- (この機能が解決する問題)
19
-
20
- ### 対象ユーザー
21
-
22
- (対象ユーザー)
7
+ ## 章立ての骨格(3層 + コア/拡張)
23
8
 
24
- ### ビジネス目標
9
+ 必ず **業務要件 → 機能要件 → 非機能要件** の順に並べる。
10
+ **機能要件は、アプリ種別を問わない「コア」と、機能の性質に応じた「拡張」に分ける**(章立てを特定アプリ・技術スタックに依存させないため)。
25
11
 
26
- (ビジネス目標 - 箇条書きで3-5項目)
12
+ | 区分 | セクション | 適用 |
13
+ |---|---|---|
14
+ | 業務要件〔コア〕 | 解決する問題・対象ユーザー・ビジネス目標 | 常に |
15
+ | 機能要件・コア | ユースケース(振る舞い+受入基準)・業務ルール | 常に |
16
+ | 機能要件・拡張 | 指標定義 / UI・画面 / 外部インターフェース | **該当する機能のみ(無ければ章ごと省略)** |
17
+ | 非機能要件〔コア〕 | 性能・可用性・セキュリティ・アクセシビリティ 等 | 常に |
18
+ | スコープ外〔コア〕 | 対応しない項目 | 常に |
27
19
 
28
- ---
20
+ **拡張章の適用基準**:
29
21
 
30
- ## 2. ユーザージャーニー
22
+ - **指標定義** … 集計・分析・KPI を持つ機能(ダッシュボード等)
23
+ - **UI/UX・画面** … 画面を持つ機能(API・バッチには不要)
24
+ - **外部インターフェース** … 外部システム連携・API を持つ機能
31
25
 
32
- ### [メインフロー名]
26
+ > コア章だけで要件定義として成立する。拡張章はアプリ種別に依存する部分をここに隔離し、該当しない機能では付けない。
33
27
 
34
- **Priority**: P0 (Critical Path)
28
+ ## 記法の役割分担(重要)
35
29
 
36
- #### 手順
30
+ ユースケースは **振る舞い(番号付き手順)+ 受入基準(EARS)** の2部構成で書く。
37
31
 
38
- 1. ユーザーが...する
39
- 2. システムは...する
40
- 3. ユーザーは...する
32
+ - **振る舞い → 番号付き手順(1. 2. 3. …)**: ユーザー操作とシステム応答の主要フロー。**各ステップの主語を明示**(「ユーザーは〜」「システムは〜」)。E2E テストの骨格になる。抽象(ビジネス言語)に保ち、テストデータ・セレクタはテストコード側へ。
33
+ - **受入基準・制約 → EARS**: フローが満たすべき詳細条件・例外・データ制約。手順と重複させず、例外・境界・横断ルールを担う。
41
34
 
42
- #### 期待結果
43
-
44
- - xxが...されること
45
- - xxが...すること
46
- - xxが...されないこと
47
-
48
- ---
49
-
50
- ### [別のクリティカルパス]
51
-
52
- **Priority**: P0 (Critical Path)
53
-
54
- #### 手順
35
+ ## テンプレート構造
55
36
 
56
- 1. ...
37
+ ````markdown
38
+ # [機能名] 要件定義書
57
39
 
58
- #### 期待結果
40
+ > 全体要件は [`docs/common/REQUIREMENTS.md`](../../common/REQUIREMENTS.md) を前提とする。
59
41
 
60
- - ...
42
+ ## 1. 業務要件
61
43
 
62
- ---
44
+ ### 1.1 解決する問題
45
+ (この機能が解決する業務課題。Why)
63
46
 
64
- ### [重要なエラーケース]
47
+ ### 1.2 対象ユーザー / 利用シーン
48
+ (誰が・どんな場面で使うか)
65
49
 
66
- **Priority**: P1 (Important)
50
+ ### 1.3 ビジネス目標
51
+ (この機能が支える意思決定・KPI。3〜5項目)
67
52
 
68
- #### 手順
53
+ ## 2. 機能要件
69
54
 
70
- 1. ユーザーが(誤った操作)...
71
- 2. システムはエラーメッセージ「...」を表示
72
- 3. ユーザーは...
55
+ ### 2.1 ユースケース別 機能要件
73
56
 
74
- #### 期待結果
57
+ ユースケース(ユーザーが達成する単位)ごとに見出し+Priority を立て、
58
+ **振る舞い(手順)** と **受入基準・制約** を併記する。
75
59
 
76
- - エラーメッセージが明確
77
- - ユーザーが次のアクションを理解できる
60
+ #### [ユースケース名]
78
61
 
79
- ---
62
+ **Priority**: P0
80
63
 
81
- ### [エッジケース]
64
+ **振る舞い(手順)**
82
65
 
83
- **Priority**: P2 (Nice to Have)
66
+ 1. ユーザーは(前提となる状態にある/操作を行う)
67
+ 2. システムは…する
68
+ 3. ユーザーは…する
69
+ 4. システムは…する
84
70
 
85
- #### 手順
71
+ **受入基準・制約**
86
72
 
87
- 1. ...
73
+ ```
74
+ [WHEN] …したとき、システムは、…すること。
75
+ [IF] もし…ならば、システムは、…すること。
76
+ [WHERE] …の場合、システムは、…すること。
77
+ ```
88
78
 
89
- #### 期待結果
79
+ ### 2.2 業務ルール / 制約
90
80
 
91
- - ...
81
+ 機能横断・常時成立する規則(論理削除除外・代理母集団の注記 等)。
92
82
 
93
- ---
83
+ ```
84
+ [常時] システムは、…すること。
85
+ ```
94
86
 
95
- ## 3. UI/UXデザイン
87
+ ### 2.3 指標定義(KPI 定義表) 〔拡張:集計・分析を持つ機能のみ。無ければ章ごと省略〕
96
88
 
97
- ワイヤーフレーム(WF)はHTMLで `./wireframes/` 配下に置き、本セクションからリンクする。
98
- WFは `generating-wireframes` スキルで生成する(低忠実度・グレースケール・主要文言は実値)。
99
- ASCIIアートは使わない。
89
+ | 指標 | 定義(What) | 算出ロジック | データソース | 近似・代理 | 注記表示 |
90
+ |------|------|------|------|------|:---:|
91
+ | | | | | | |
100
92
 
101
- ### ワイヤーフレーム
93
+ ### 2.4 UI/UX・画面 〔拡張:画面を持つ機能のみ。無ければ章ごと省略〕
102
94
 
103
- - [ワイヤーフレーム一覧(index)](./wireframes/index.html)
95
+ - [ワイヤーフレーム一覧](./wireframes/index.html)
104
96
 
105
97
  | 画面 | 状態 | WF |
106
98
  |------|------|----|
107
- | [画面名1] | 通常 / 空 / エラー | [画面名1](./wireframes/[screen-1].html) |
108
- | [画面名2] | 通常 | [画面名2](./wireframes/[screen-2].html) |
109
-
110
- ### 画面ごとの要点
111
-
112
- #### [画面名1]
113
-
114
- - 主な操作(ボタン文言): [検索] / [新規登録] / ...
115
- - 表示要素: (ヘッダー / 検索条件 / 一覧 / ページネーション など要点)
116
- - インタラクション: (選択・遷移・送信時の挙動)
117
-
118
- #### [画面名2]
99
+ | [画面名] | 通常 / 空 / エラー | [画面](./wireframes/[screen].html) |
119
100
 
120
- - 主な操作(ボタン文言): ...
121
- - 表示要素: ...
122
-
123
- ---
124
-
125
- ### 表示要素
101
+ #### 表示要素
126
102
 
127
103
  | 要素 | 説明 |
128
104
  |------|------|
129
- | 要素名 | 説明 |
130
- | 要素名 | 説明 |
105
+ | | |
131
106
 
132
- ---
107
+ > 画面状態(通常 / 空 / ローディング / エラー)の表示設計は TECH_DESIGN.md(画面項目定義)で扱う。
133
108
 
134
- ### 空状態・エラー状態
109
+ ### 2.5 外部インターフェース 〔拡張:連携・API を持つ機能のみ。無ければ章ごと省略〕
135
110
 
136
- (コンテンツがない場合やエラー時の表示)
111
+ (外部システム連携・API の入出力概要を業務視点で。プロトコル・スキーマ詳細は TECH_DESIGN)
137
112
 
138
- ---
113
+ ## 3. 非機能要件
139
114
 
140
- ## 4. エッジケース
115
+ (機能固有の品質特性のみ記載。共通は common §6 を参照。固有要件が無ければ「common 準拠」と明記)
141
116
 
142
- ### [ケース名1]
143
- - 詳細説明
117
+ ## 4. スコープ外
144
118
 
145
- ### [ケース名2]
146
- - 詳細説明
119
+ - (この機能で対応しない項目 / 別 feature の項目)
120
+ ````
147
121
 
148
- ---
122
+ ## 記法ルール
149
123
 
150
- ## 5. 成功基準
124
+ ### 振る舞い → 番号付き手順
151
125
 
152
- (この機能の成功基準 - チェックリスト形式)
126
+ - `1. 2. 3. …` でユーザー操作とシステム応答の主要フロー(ハッピーパス+主要分岐)を記述。1ユースケース=1つの主要フロー。
127
+ - **各ステップの主語を明示する**(「ユーザーは〜する」「システムは〜する」)。ユーザーの操作とシステムの応答を主語で区別する。
128
+ - 前提となる状態は手順の冒頭ステップに書く(例: 「1. ユーザーは認可済みでダッシュボードに到達している」)。
129
+ - **抽象(ビジネス言語)に保つ**。テストデータ・セレクタ・実装詳細は書かず、テストコード側に委ねる。これがそのまま E2E テストの骨格になる。
153
130
 
154
- - [達成すべき項目1]
155
- - ✅ [達成すべき項目2]
156
- - ✅ [達成すべき項目3]
131
+ ### 受入基準・業務ルール → EARS(5パターン)
157
132
 
158
- ---
133
+ | パターン | 形 |
134
+ |---|---|
135
+ | 常時 | システムは、〜すること |
136
+ | イベント (WHEN) | 〜したとき、システムは、〜すること |
137
+ | 状態 (WHILE) | 〜の間、システムは、〜すること |
138
+ | 異常 (IF / THEN) | もし〜ならば、システムは、〜すること |
139
+ | オプション (WHERE) | 〜の場合、システムは、〜すること |
159
140
 
160
- ## 6. スコープ外
161
-
162
- - (この機能で対応しない項目)
163
- - (将来的な拡張として残す項目)
164
- ```
141
+ - 振る舞い(手順)と重複させず、EARS は例外・境界・データ制約・横断ルールを網羅する。
142
+ - 各要件は観測可能・検証可能(テスト1件に落ちる粒度)。曖昧語(適切に / 正しく / きちんと)は禁止。
165
143
 
166
- ## 重要なポイント
144
+ ## 記載基準チェックリスト(作成後に必ず実行)
167
145
 
168
- ### 記述すべき内容
169
-
170
- - すべてのユーザージャーニーを記述(正常系、エラーケース、エッジケース)
171
- - 各ジャーニーにPriority(P0/P1/P2)を付与
172
- - **ユーザー視点で記述(What & Why)**
173
- - **ユーザーから見える挙動のみを記述**
174
- - UI/UXデザイン(HTMLワイヤーフレームへのリンク、表示要素、空状態)→ generating-wireframes スキルで生成
175
- - 成功基準(この機能の成功基準チェックリスト)
146
+ ```
147
+ □ コア章(業務要件/機能要件のユースケース+業務ルール/非機能要件/スコープ外)が揃っている
148
+ 拡張章(指標定義・UI/UX・外部IF)は該当する機能のみ。不要なら章ごと省略している
149
+ 業務要件・機能要件・非機能要件の3層が揃っている(非機能が「common 準拠」でも明記)
150
+ 全ユースケースに Priority+振る舞い(番号付き手順・主語明示)+受入基準(EARS)がある
151
+ 振る舞い手順は主要フロー(抽象)に保たれ、テストデータ・セレクタが混入していない
152
+ 受入基準(EARS)が例外・境界・データ制約を網羅している(エッジケースは IF/WHERE で統合)
153
+ 指標を持つ機能は §2.3 指標定義表が埋まっている(算出/データソース/代理注記)
154
+ □ 近似・代理指標は「注記表示=必須」が明記されている
155
+ □ 履歴・経緯・version 記述が無い(SSOT 違反 grep を流用)
156
+ ```
176
157
 
177
- ### 記述不要な内容
158
+ ## 記述しない内容(責務分界)
178
159
 
179
- - データモデル(テーブル定義、RLSポリシー)→ TECH_DESIGN.mdに記載
180
- - セッション管理の実装詳細(NextAuth、JWT等)
181
- - 実装ファイルへの参照・行番号
182
- - 関数名、クラス名などのコード詳細
183
- - テスト実装の詳細(TECH_DESIGN.mdに記載)
184
- - 実装方法の詳細(TECH_DESIGN.mdに記載)
160
+ - ロジック設計・集計実装・画面項目 × バリデーション × DB マッピング → **TECH_DESIGN.md**
161
+ - テーブル定義 → common **TABLE_DEFINITION.md** / API 設計 → common **API_SPEC.md**
162
+ - テスト戦略 → **TEST_PLAN.md** / E2E テストの実装詳細(テストデータ・セレクタ・step 実装)→ **テストコード**
163
+ - 実装ファイルへの参照・関数名・クラス名などのコード詳細
164
+ - 履歴・経緯・「今回の変更」(SSOT 原則)
@@ -0,0 +1,78 @@
1
+ # TABLE_DEFINITION.md テンプレート(common)
2
+
3
+ **目的**: プロジェクトの全テーブル定義を集約する正典(実装・DB 設計・QA の SSoT)。各 feature の `TECH_DESIGN.md` は本書を**参照**し、テーブル・カラムを再定義しない。
4
+
5
+ **配置**: `docs/common/TABLE_DEFINITION.md`(`.stdd.config.yml` の `docs.layout.common_table_definition` に従う)
6
+
7
+ ## 章立ての骨格
8
+
9
+ - テーブルごとに「カード(見出し+カラム表)」で表現する。
10
+ - 列は **`カラム名 / データ型 / NULL / 説明`** の 4 列。主キーは `🔑` で示す。
11
+ - **ER 図は持たない**(リレーションが必要な場合は各カラムの説明に「FK → <table>.<column>」と記す)。
12
+ - テーブルが多い場合はドメイングループ見出し(`# ユーザー系` 等)で束ねる。
13
+
14
+ **含めない**:
15
+
16
+ - インデックス / RLS / トリガ等の DB メタデータ詳細 → 必要なら各 feature の `TECH_DESIGN.md`(ロジック設計 / 非機能要件)
17
+ - 集計・変換などのロジック設計 → 各 feature の `TECH_DESIGN.md`(ロジック設計)
18
+ - 実装の進捗・履歴(SSoT として常に最新のスキーマのみ保持する)
19
+
20
+ ## 確度マーカーの運用
21
+
22
+ - 確信が持てないカラム・型は説明欄に `※要確認` を付す。確定後に除去する。
23
+
24
+ ## テンプレート構造
25
+
26
+ ````markdown
27
+ # [サービス名] テーブル定義
28
+
29
+ > 全テーブル定義の正典(SSoT)。各機能の `TECH_DESIGN.md` は本書を参照する。
30
+ > 生成された型定義 / マイグレーションを正とし、本書はそれに追従する。
31
+ >
32
+ > **最終更新**: [yyyy-mm-dd]
33
+
34
+ ## 設計方針
35
+
36
+ - **主キー**: [UUID / 連番 等]
37
+ - **削除方針**: [論理削除 / 物理削除・判定カラム(例: `deleted_at IS NULL` で有効)]
38
+ - **時系列**: [`created_at` / `updated_at` の方針]
39
+ - **命名規則**: [テーブル / カラムの命名規則]
40
+
41
+ ---
42
+
43
+ ## [ドメイングループ名(例: ユーザー系)]
44
+
45
+ ### users (PK: user_id ・ N カラム)
46
+
47
+ | カラム名 | データ型 | NULL | 説明 |
48
+ | --- | --- | --- | --- |
49
+ | 🔑 user_id | UUID | NOT NULL | ユーザー ID |
50
+ | email | VARCHAR(255) | 許容 | メールアドレス |
51
+ | referred_by | UUID | 許容 | 紹介元ユーザー ID(FK → users.user_id) |
52
+ | status | INTEGER | 許容 | 状態区分 |
53
+ | last_login_at | TIMESTAMP | 許容 | 最終ログイン日時(最新のみ・履歴なし) |
54
+ | created_at | TIMESTAMP | NOT NULL | 登録日時 |
55
+ | updated_at | TIMESTAMP | 許容 | 更新日時 |
56
+ | deleted_at | TIMESTAMP | 許容 | 論理削除日時(NULL で有効レコード) |
57
+
58
+ ### [次のテーブル] (PK: [pk] ・ N カラム)
59
+
60
+ | カラム名 | データ型 | NULL | 説明 |
61
+ | --- | --- | --- | --- |
62
+ | 🔑 [col] | [type] | NOT NULL | ... |
63
+ | [col] | [type] | 許容 | ... |
64
+ ````
65
+
66
+ ## 記述基準
67
+
68
+ - **型は DB の論理型で表記**(`UUID` / `VARCHAR(255)` / `INTEGER` / `TIMESTAMP` / `BOOLEAN` / `JSONB` 等)。言語固有の型(TS 型等)は持ち込まない(→ feature の TECH_DESIGN)。
69
+ - **NULL 列は `NOT NULL` / `許容` の 2 値**で統一。
70
+ - FK は説明欄に `FK → <table>.<column>` と明記する(ER 図の代替)。
71
+ - 既存 DB に同名カラムがある場合はそれを正とし、無い場合は新規追加として説明欄に「新規」と注記する。
72
+
73
+ ## 記述しない内容(責務分界)
74
+
75
+ - 集計・変換・ドメインロジック → 各 feature の `TECH_DESIGN.md`(ロジック設計)
76
+ - 画面項目とのマッピング → 各 feature の `TECH_DESIGN.md`(画面項目定義)
77
+ - インデックス / RLS / トリガ等の詳細 → 必要に応じて feature の `TECH_DESIGN.md`
78
+ - 履歴・経緯・version(SSoT 原則)