yodogawa 2.1.1 → 2.2.0
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/CHANGELOG.md +134 -82
- package/LICENSE +1 -1
- package/README.md +351 -246
- package/bin/checks/id-trace.js +137 -0
- package/bin/checks/links.js +59 -0
- package/bin/checks/placeholder.js +132 -0
- package/bin/checks/structure.js +127 -0
- package/bin/cli.js +51 -68
- package/bin/commands/doctor.js +128 -0
- package/bin/commands/install.js +58 -0
- package/bin/commands/new-task.js +117 -0
- package/bin/lib/check-cli.js +19 -0
- package/bin/lib/findings.js +31 -0
- package/bin/lib/markdown.js +103 -0
- package/bin/lib/project-spec.js +138 -0
- package/bin/lib/walk-md.js +23 -0
- package/package.json +68 -56
- package/skills/a-001-setup-doc-structure/SKILL.md +7 -6
- package/skills/a-001-setup-doc-structure/reference/directory-structure.md +40 -13
- package/skills/a-002-initialize-project/SKILL.md +72 -52
- package/skills/a-002-initialize-project/reference/hearing-questions.md +91 -41
- package/skills/a-002-initialize-project/reference/structure-check.md +12 -22
- package/skills/a-002a-slice-mvp-scope/SKILL.md +105 -0
- package/skills/a-002b-define-user-stories/SKILL.md +80 -0
- package/skills/a-002b-define-user-stories/reference/user-stories-guide.md +78 -0
- package/skills/a-003-create-scenarios/SKILL.md +37 -39
- package/{templates/project/02-behavior/01-scenarios.md → skills/a-003-create-scenarios/reference/detailed-gherkin-template.md} +413 -406
- package/skills/a-003-create-scenarios/reference/structure-check.md +20 -17
- package/skills/a-004-define-domain-model/SKILL.md +44 -36
- package/skills/a-004-define-domain-model/reference/event-storming-guide.md +33 -7
- package/skills/a-004-define-domain-model/reference/ubiquitous-language-guide.md +49 -0
- package/skills/a-005-create-domain-diagram/SKILL.md +18 -17
- package/skills/a-006-review-requirements-domain/SKILL.md +59 -22
- package/skills/a-006-review-requirements-domain/examples/review-report-template.md +27 -7
- package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +53 -18
- package/skills/a-007-define-tech-stack/SKILL.md +4 -7
- package/skills/a-008-define-repository-structure/SKILL.md +2 -5
- package/skills/a-009-define-screen-design/SKILL.md +3 -6
- package/skills/a-010-define-design-system/SKILL.md +1 -5
- package/skills/a-011-define-data-model/SKILL.md +4 -7
- package/skills/a-012-define-api-spec/SKILL.md +1 -4
- package/skills/a-013-define-architecture/SKILL.md +1 -4
- package/skills/a-014-define-infrastructure/SKILL.md +9 -4
- package/skills/{a-002-initialize-project → a-014-define-infrastructure}/examples/nfr-baseline.md +2 -1
- package/{templates/project/01-requirements/04-non-functional-requirements.md → skills/a-014-define-infrastructure/examples/non-functional-requirements.md} +120 -115
- package/skills/a-015-review-design/reference/consistency-checks.md +1 -1
- package/skills/b-001-create-task-directory/SKILL.md +14 -8
- package/skills/b-002-create-task-definition/SKILL.md +4 -5
- package/skills/b-003-create-task-research/SKILL.md +4 -5
- package/skills/b-004-create-task-implementation/SKILL.md +4 -5
- package/skills/b-005-review-task/reference/assessment-criteria.md +3 -3
- package/skills/c-001-implement-task/SKILL.md +1 -1
- package/skills/c-001-implement-task/reference/implementation-loop.md +1 -1
- package/skills/c-002-update-documentation/SKILL.md +7 -7
- package/skills/c-002-update-documentation/examples/project-doc-updates.md +4 -4
- package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +8 -9
- package/templates/project/01-requirements/01-product-brief.md +186 -0
- package/templates/project/01-requirements/02-mvp-scope.md +64 -0
- package/templates/project/01-requirements/03-parking-lot.md +29 -0
- package/templates/project/01-requirements/05-user-stories.md +28 -124
- package/templates/project/01-requirements/{02-features-implemented.md → 06-features-implemented.md} +77 -73
- package/templates/project/02-behavior/01-core-scenarios.md +80 -0
- package/templates/project/03-domain/01-domain-model.md +120 -339
- package/templates/project/03-domain/01-domain-sketch.md +90 -0
- package/templates/project/03-domain/02-ubiquitous-language.md +32 -153
- package/templates/project/04-design/01-tech-stack.md +367 -367
- package/templates/project/04-design/02-repository-structure.md +391 -391
- package/templates/project/04-design/03-screen-design.md +596 -596
- package/templates/project/04-design/04-design-system.md +261 -261
- package/templates/project/04-design/05-data-model.md +211 -211
- package/templates/project/04-design/06-api-spec.md +226 -226
- package/templates/project/04-design/07-architecture.md +183 -183
- package/templates/project/04-design/08-infrastructure.md +180 -180
- package/templates/project/AI_CONTEXT.md +55 -0
- package/templates/project/STAKEHOLDER-SUMMARY.md +66 -0
- package/templates/tasks/task-template/a-definition.md +143 -143
- package/templates/tasks/task-template/b-research.md +185 -185
- package/templates/tasks/task-template/c-implementation.md +200 -200
- package/scripts/create-task.sh +0 -77
- package/scripts/init-project-docs.sh +0 -90
- package/scripts/init-task-doc.sh +0 -77
- package/scripts/setup-docs.sh +0 -92
- package/templates/documentation-rules.md +0 -143
- package/templates/project/01-requirements/01-system-overview.md +0 -49
- package/templates/project/01-requirements/03-features-planned.md +0 -75
|
@@ -2,37 +2,53 @@
|
|
|
2
2
|
|
|
3
3
|
SKILL.md 手順2 で実施する各チェック項目の詳細。自動検索(grep 等)と手動確認を組み合わせる。
|
|
4
4
|
|
|
5
|
-
## 2.1 ユーザーストーリー ↔
|
|
5
|
+
## 2.1 ユーザーストーリー ↔ Core Scenario
|
|
6
6
|
|
|
7
|
-
- **カバレッジ**:
|
|
8
|
-
- **整合性**:
|
|
7
|
+
- **カバレッジ**: MVP Scope の Must 機能に対応する Core Scenario(Day 1 Happy Path)が存在するか。User Story は要約 AC、Core Scenario は実行時の主要行動という SSoT の住み分けを保つ(全 US を逐一シナリオ化しない)。
|
|
8
|
+
- **整合性**: ストーリーの「価値」と Core Scenario の「結果(Then)」が一致しているか。
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
11
|
# 全ユーザーストーリーの ID 抽出
|
|
12
12
|
grep -oE "US-[0-9]+" docs/project/01-requirements/05-user-stories.md | sort -u
|
|
13
|
-
#
|
|
14
|
-
grep -oE "
|
|
13
|
+
# Core Scenario 側の対応 Must / フロー参照
|
|
14
|
+
grep -oE "FN-[0-9]+|CS-[0-9]+" docs/project/02-behavior/01-core-scenarios.md | sort -u
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
### ユーザーストーリーの役割 ↔ ペルソナ(trace)
|
|
18
18
|
|
|
19
|
-
-
|
|
20
|
-
-
|
|
19
|
+
- **役割が宙に浮かない**: `05-user-stories.md` の各ストーリーの「ペルソナ」列が、`01-product-brief.md` のペルソナ表で定義済みの ID(P-XXX)を参照しているか。**未定義のペルソナを参照する US はフラグ**する(役割の trace 切れ)。
|
|
20
|
+
- **逆方向(任意)**: どの US からも参照されない主要ペルソナがあれば、スコープ漏れか過剰ペルソナのどちらかとして確認する。
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
```bash
|
|
23
|
+
# US が参照するペルソナ ID のうち、Product Brief に未定義のもの(出力があれば trace 切れ)
|
|
24
|
+
comm -23 \
|
|
25
|
+
<(grep -oE "P-[0-9]+" docs/project/01-requirements/05-user-stories.md | sort -u) \
|
|
26
|
+
<(grep -oE "P-[0-9]+" docs/project/01-requirements/01-product-brief.md | sort -u)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 2.2 MVP スコープ・実装済み機能 ↔ シナリオ
|
|
30
|
+
|
|
31
|
+
- **MVP スコープ**: `02-mvp-scope.md` の Must 機能にシナリオが存在するか。
|
|
32
|
+
- **実装済み機能**: `06-features-implemented.md`(existing モード)の機能にリグレッション用シナリオが存在するか。
|
|
33
|
+
- **Parking Lot**: `03-parking-lot.md` は backlog のためシナリオ必須ではない(MVP 昇格時に MVP スコープ側で扱う)。
|
|
23
34
|
|
|
24
|
-
|
|
25
|
-
- **セキュリティ**: 認証・権限要件が Policy や Guard としてドメインモデルに含まれているか。
|
|
35
|
+
## 2.3 クリティカル制約 ↔ スコープ/ドメイン
|
|
26
36
|
|
|
27
|
-
|
|
37
|
+
初期フェーズでは定量 NFR ではなく、Product Brief の「クリティカル制約」を確認する(詳細な定量 NFR は設計フェーズ `/a-014-define-infrastructure` の責務)。
|
|
28
38
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
39
|
+
- **制約の反映**: `01-product-brief.md` のクリティカル制約(法務・セキュリティ・期限・予算・外部 API 等)が `02-mvp-scope.md` の Must 判断やドメインモデルに反映されているか。
|
|
40
|
+
- **セキュリティ・権限**: 制約に挙げた認証・権限要件が Policy や Guard としてドメインモデルに含まれているか。
|
|
41
|
+
|
|
42
|
+
## 2.4 Core Scenario ↔ Domain Sketch
|
|
43
|
+
|
|
44
|
+
- **アクター**: Core Scenario のアクターが Domain Sketch の「アクター / 外部システム」に存在するか。
|
|
45
|
+
- **中核エンティティ**: Core Scenario が扱う対象が Domain Sketch の「中核エンティティ」に定義されているか。
|
|
46
|
+
- **重要ルール**: Critical Failure を防ぐルールが「重要なビジネスルール」に反映されているか。
|
|
47
|
+
- **Full DDD 採用時**: `01-domain-model.md` がある場合は、When→Command / Then→Event / Actor の対応も確認する。
|
|
32
48
|
|
|
33
49
|
## 2.5 ユビキタス言語の遵守
|
|
34
50
|
|
|
35
|
-
- **用語定義**:
|
|
51
|
+
- **用語定義**: Domain Sketch の主要用語・中核エンティティ(Full DDD 採用時は Aggregate / Command / Event)がユビキタス言語一覧にあるか。
|
|
36
52
|
- **禁止用語**: 各ドキュメントに禁止用語(Data, Process, Manager 等)が使われていないか。
|
|
37
53
|
|
|
38
54
|
```bash
|
|
@@ -44,8 +60,27 @@ grep -rn "Manager" docs/project/03-domain/ || echo "No 'Manager' found"
|
|
|
44
60
|
|
|
45
61
|
## 2.6 目的との整合性
|
|
46
62
|
|
|
47
|
-
-
|
|
48
|
-
-
|
|
63
|
+
- Product Brief(`01-product-brief.md`)の「価値提案 / 差別化」が Domain Sketch の「中核エンティティ」「重要なビジネスルール」に反映されているか。
|
|
64
|
+
- **価値提案の充足**: 「価値提案 / 差別化」のバリュープロポジション(1文)と差別化ポイント(Why us)が埋まり、Why us が「現在の代替手段・競合スキャン」表の各「弱み」と対応づいているか(漠然と「使いやすい」で済ませていないか)。
|
|
65
|
+
- **目的 ↔ 成功指標**: Product Brief の成功指標(North Star / KPI / Guardrail)が「価値提案 / 解く課題」と整合しているか(目的と無関係な指標を測っていないか)。
|
|
66
|
+
- **計測可能性**: 各成功指標に計測方法(どこで・どう取得)が記載され、計測可能か。今すぐ取れない指標が代理指標に置き換えられているか(MVP 段階は仮説値で可)。
|
|
67
|
+
- Full DDD(`01-domain-model.md`)採用時は、ビジネス価値の提供元が Core Domain に寄っているか(Generic に偏っていないか)も確認する。
|
|
68
|
+
|
|
69
|
+
## 2.7 MVP 正当化 / 過剰作り込み(YAGNI / PM Gate)
|
|
70
|
+
|
|
71
|
+
「要らないものを作らない」を守るためのスコープ妥当性検査。
|
|
72
|
+
|
|
73
|
+
- **Must の trace**: `02-mvp-scope.md` の各 Must 機能が、Product Brief の 課題 / ターゲット(ペルソナ)/ 成功指標 / 検証仮説 のいずれかに紐づくか。**いずれにも trace しない Must は過剰作り込み候補としてフラグ**する。
|
|
74
|
+
- **Out of Scope の矛盾**: `02-mvp-scope.md` の Won't / Out of Scope に挙げた機能が、他ドキュメント(シナリオ・ドメインモデル・`05-user-stories.md`)で実装対象として記述されていないか。
|
|
75
|
+
- **安い代替手段**: 手作業・既存ツール・外部サービスで足りるものが Must になっていないか(`02-mvp-scope.md` の「より安い代替手段」列を確認)。
|
|
76
|
+
- **仮説の数**: 検証する仮説が 1〜3 個に絞れているか(多すぎる=MVP が過大)。
|
|
77
|
+
|
|
78
|
+
> 成功指標と目的の整合(目的 ↔ 成功指標)・計測可能性は [2.6 目的との整合性](#26-目的との整合性)で検査する。
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Out of Scope(Won't)に挙げた機能名が他 doc に混入していないか(例)
|
|
82
|
+
grep -rn "{Won't機能名}" docs/project/02-behavior/ docs/project/03-domain/
|
|
83
|
+
```
|
|
49
84
|
|
|
50
85
|
## エスカレーションの判断材料
|
|
51
86
|
|
|
@@ -9,7 +9,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
9
9
|
|
|
10
10
|
## 目的
|
|
11
11
|
|
|
12
|
-
-
|
|
12
|
+
- 既存の要件ドキュメント(Product Brief(クリティカル制約含む)、ドメインモデル)を分析し、適合する技術スタックを推奨する。
|
|
13
13
|
- 推奨案を提示した上で、ユーザーと詳細なインタビューを行い、すべての技術選定を明確化する。
|
|
14
14
|
- 技術選定の理由、バージョン、選定タイミング(初期/中期/後期/随時)を明確に記録する。
|
|
15
15
|
|
|
@@ -27,18 +27,15 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
27
27
|
ls -la docs/project/04-design/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
要件ドキュメント(`01-
|
|
30
|
+
要件ドキュメント(`01-product-brief.md`(クリティカル制約含む), `02-mvp-scope.md`)とドメイン(`01-domain-sketch.md`、Full DDD 採用時は `01-domain-model.md`)を読み込む。
|
|
31
31
|
|
|
32
32
|
### 2. テンプレートの準備
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
|
|
36
|
-
cp "$SCRIPT_DIR/templates/project/04-design/01-tech-stack.md" "docs/project/04-design/01-tech-stack.md"
|
|
37
|
-
```
|
|
34
|
+
このスキルの配置ディレクトリ(`skills/a-007-define-tech-stack/`)を起点に、相対パス `../../templates/project/04-design/01-tech-stack.md` を Read で読み込み、その内容を `docs/project/04-design/01-tech-stack.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
38
35
|
|
|
39
36
|
### 3. 要件分析と推奨技術スタックの生成
|
|
40
37
|
|
|
41
|
-
- **システム特性の分析**: アプリケーションタイプ(SPA/SSR
|
|
38
|
+
- **システム特性の分析**: アプリケーションタイプ(SPA/SSR 等)、クリティカル制約(NFR の要点)、ドメイン複雑度
|
|
42
39
|
- **レイヤー別推奨**: フロントエンド / バックエンド / データベース / インフラ・CI/CD / 監視・テスト
|
|
43
40
|
- **提示形式**: 各技術に「推奨理由」と「代替案」を付ける
|
|
44
41
|
|
|
@@ -16,7 +16,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
16
16
|
## 前提
|
|
17
17
|
|
|
18
18
|
- `docs/project/04-design/01-tech-stack.md` が作成されていること(`/a-007-define-tech-stack` 実行済み)。
|
|
19
|
-
- `docs/project/03-domain/01-domain-
|
|
19
|
+
- `docs/project/03-domain/01-domain-sketch.md` が作成されていること(推奨。Full DDD 採用時は `01-domain-model.md`)。
|
|
20
20
|
- `docs/project/04-design/` ディレクトリが存在すること。
|
|
21
21
|
|
|
22
22
|
## 手順
|
|
@@ -31,10 +31,7 @@ ls -la docs/project/04-design/01-tech-stack.md 2>/dev/null || echo "ファイル
|
|
|
31
31
|
|
|
32
32
|
### 2. テンプレートの準備
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
|
|
36
|
-
cp "$SCRIPT_DIR/templates/project/04-design/02-repository-structure.md" "docs/project/04-design/02-repository-structure.md"
|
|
37
|
-
```
|
|
34
|
+
このスキルの配置ディレクトリ(`skills/a-008-define-repository-structure/`)を起点に、相対パス `../../templates/project/04-design/02-repository-structure.md` を Read で読み込み、その内容を `docs/project/04-design/02-repository-structure.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
38
35
|
|
|
39
36
|
### 3. アーキテクチャパターンの提案
|
|
40
37
|
|
|
@@ -17,7 +17,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
17
17
|
## 前提
|
|
18
18
|
|
|
19
19
|
- `docs/project/01-requirements/05-user-stories.md` が作成されていること。
|
|
20
|
-
- `docs/project/02-behavior/01-scenarios.md` が作成されていること。
|
|
20
|
+
- `docs/project/02-behavior/01-core-scenarios.md` が作成されていること。
|
|
21
21
|
- `docs/project/04-design/` ディレクトリが存在すること。
|
|
22
22
|
|
|
23
23
|
## 手順
|
|
@@ -27,17 +27,14 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
27
27
|
以下を読み込む:
|
|
28
28
|
|
|
29
29
|
- `docs/project/01-requirements/05-user-stories.md`
|
|
30
|
-
- `docs/project/02-behavior/01-scenarios.md`
|
|
30
|
+
- `docs/project/02-behavior/01-core-scenarios.md`
|
|
31
31
|
- `docs/project/04-design/01-tech-stack.md`(存在する場合)
|
|
32
32
|
|
|
33
33
|
不足があれば対応スキル(`/a-002`, `/a-003`, `/a-007`)の実行を促す。
|
|
34
34
|
|
|
35
35
|
### 2. テンプレートの準備
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
|
|
39
|
-
cp "$SCRIPT_DIR/templates/project/04-design/03-screen-design.md" "docs/project/04-design/03-screen-design.md"
|
|
40
|
-
```
|
|
37
|
+
このスキルの配置ディレクトリ(`skills/a-009-define-screen-design/`)を起点に、相対パス `../../templates/project/04-design/03-screen-design.md` を Read で読み込み、その内容を `docs/project/04-design/03-screen-design.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
41
38
|
|
|
42
39
|
### 3. 画面の抽出と提案
|
|
43
40
|
|
|
@@ -28,11 +28,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
28
28
|
|
|
29
29
|
### 2. テンプレートの準備
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
|
|
33
|
-
cp "$SCRIPT_DIR/templates/project/04-design/04-design-system.md" \
|
|
34
|
-
"docs/project/04-design/04-design-system.md"
|
|
35
|
-
```
|
|
31
|
+
このスキルの配置ディレクトリ(`skills/a-010-define-design-system/`)を起点に、相対パス `../../templates/project/04-design/04-design-system.md` を Read で読み込み、その内容を `docs/project/04-design/04-design-system.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
36
32
|
|
|
37
33
|
### 3. カラーパレットの定義
|
|
38
34
|
|
|
@@ -9,14 +9,14 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
9
9
|
|
|
10
10
|
## 目的
|
|
11
11
|
|
|
12
|
-
-
|
|
12
|
+
- ドメイン(Domain Sketch の中核エンティティ、Full DDD 採用時は Aggregates)と画面設計を基に、データベース構造を定義する。
|
|
13
13
|
- エンティティ(テーブル)、属性(カラム)、リレーションシップを明確化する。
|
|
14
14
|
- データ型、制約(NOT NULL、UNIQUE、CHECK)、インデックス戦略を決定する。
|
|
15
15
|
- Mermaid ERD(Entity Relationship Diagram)で視覚化し、開発者間の認識を統一する。
|
|
16
16
|
|
|
17
17
|
## 前提
|
|
18
18
|
|
|
19
|
-
- `docs/project/03-domain/01-domain-
|
|
19
|
+
- `docs/project/03-domain/01-domain-sketch.md` が作成されていること(Full DDD 採用時は `01-domain-model.md`)。
|
|
20
20
|
- `docs/project/04-design/01-tech-stack.md` が作成されていること(DB 選定済み)。
|
|
21
21
|
- `docs/project/04-design/03-screen-design.md` が作成されていること。
|
|
22
22
|
- `docs/project/04-design/` ディレクトリが存在すること。
|
|
@@ -27,7 +27,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
27
27
|
|
|
28
28
|
以下を読み込む:
|
|
29
29
|
|
|
30
|
-
- `docs/project/03-domain/01-domain-model.md
|
|
30
|
+
- `docs/project/03-domain/01-domain-sketch.md`(Full DDD 採用時は `01-domain-model.md`)
|
|
31
31
|
- `docs/project/04-design/01-tech-stack.md`
|
|
32
32
|
- `docs/project/04-design/03-screen-design.md`
|
|
33
33
|
|
|
@@ -35,10 +35,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
35
35
|
|
|
36
36
|
### 2. テンプレートの準備
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
|
|
40
|
-
cp "$SCRIPT_DIR/templates/project/04-design/05-data-model.md" "docs/project/04-design/05-data-model.md"
|
|
41
|
-
```
|
|
38
|
+
このスキルの配置ディレクトリ(`skills/a-011-define-data-model/`)を起点に、相対パス `../../templates/project/04-design/05-data-model.md` を Read で読み込み、その内容を `docs/project/04-design/05-data-model.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
42
39
|
|
|
43
40
|
### 3. エンティティの抽出と提案
|
|
44
41
|
|
|
@@ -36,10 +36,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
36
36
|
|
|
37
37
|
### 2. テンプレートの準備
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
|
|
41
|
-
cp "$SCRIPT_DIR/templates/project/04-design/06-api-spec.md" "docs/project/04-design/06-api-spec.md"
|
|
42
|
-
```
|
|
39
|
+
このスキルの配置ディレクトリ(`skills/a-012-define-api-spec/`)を起点に、相対パス `../../templates/project/04-design/06-api-spec.md` を Read で読み込み、その内容を `docs/project/04-design/06-api-spec.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
43
40
|
|
|
44
41
|
### 3. API スタイルの確認と提案
|
|
45
42
|
|
|
@@ -31,10 +31,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
31
31
|
|
|
32
32
|
### 2. テンプレートの準備
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
|
|
36
|
-
cp "$SCRIPT_DIR/templates/project/04-design/07-architecture.md" "docs/project/04-design/07-architecture.md"
|
|
37
|
-
```
|
|
34
|
+
このスキルの配置ディレクトリ(`skills/a-013-define-architecture/`)を起点に、相対パス `../../templates/project/04-design/07-architecture.md` を Read で読み込み、その内容を `docs/project/04-design/07-architecture.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
38
35
|
|
|
39
36
|
### 3. アーキテクチャの提案
|
|
40
37
|
|
|
@@ -13,11 +13,13 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
13
13
|
- クラウドリソース、ネットワーク、セキュリティ、監視を含む全体構成を可視化する。
|
|
14
14
|
- 環境ごとの構成(開発、ステージング、本番)を明確化する。
|
|
15
15
|
- 高可用性、冗長化、スケーラビリティ、セキュリティの方針を定義する。
|
|
16
|
+
- Product Brief の「クリティカル制約」を起点に、初期フェーズで保留した**詳細な非機能要件(応答時間・稼働率・スケーラビリティ・RPO/RTO 等の定量値)を本フェーズで定量化・所有する**。
|
|
16
17
|
|
|
17
18
|
## 前提
|
|
18
19
|
|
|
19
20
|
- `docs/project/04-design/01-tech-stack.md` が作成されていること(デプロイ環境、インフラ技術選定済み)。
|
|
20
21
|
- `docs/project/04-design/07-architecture.md` が作成されていること(推奨)。
|
|
22
|
+
- `docs/project/01-requirements/01-product-brief.md` の「クリティカル制約」(詳細 NFR 定量化の起点)。
|
|
21
23
|
- `docs/project/04-design/` ディレクトリが存在すること。
|
|
22
24
|
|
|
23
25
|
## 手順
|
|
@@ -33,10 +35,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
|
33
35
|
|
|
34
36
|
### 2. テンプレートの準備
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
SCRIPT_DIR=$(for d in .claude .agents; do [ -d "$d" ] && echo "$d" && break; done)
|
|
38
|
-
cp "$SCRIPT_DIR/templates/project/04-design/08-infrastructure.md" "docs/project/04-design/08-infrastructure.md"
|
|
39
|
-
```
|
|
38
|
+
このスキルの配置ディレクトリ(`skills/a-014-define-infrastructure/`)を起点に、相対パス `../../templates/project/04-design/08-infrastructure.md` を Read で読み込み、その内容を `docs/project/04-design/08-infrastructure.md` へ Write する。出力先が既に存在する場合は上書きせずスキップして報告する(冪等)。出力先ディレクトリ(`docs/project/04-design/`)が無ければ作成する。
|
|
40
39
|
|
|
41
40
|
### 3. インフラ構成の提案
|
|
42
41
|
|
|
@@ -65,6 +64,10 @@ Multi-AZ 構成、リードレプリカ、バックアップ(頻度、保持
|
|
|
65
64
|
|
|
66
65
|
開発/ステージング/本番環境の差異(リソースサイズ、冗長化、WAF など)。表形式のテンプレートは [examples/infrastructure-templates.md](examples/infrastructure-templates.md#環境構成表) を参照。
|
|
67
66
|
|
|
67
|
+
#### 4.5 詳細な非機能要件(定量化)
|
|
68
|
+
|
|
69
|
+
Product Brief の「クリティカル制約」を起点に、性能(応答時間・スループット)・可用性(稼働率・RPO/RTO)・スケーラビリティ・セキュリティ等を定量化する。初期フェーズでは保留していた定量値をここで確定する。テンプレートは [examples/non-functional-requirements.md](examples/non-functional-requirements.md)、特に指定が無い場合の標準提案値は [examples/nfr-baseline.md](examples/nfr-baseline.md) を参照。
|
|
70
|
+
|
|
68
71
|
### 5. ドキュメント作成
|
|
69
72
|
|
|
70
73
|
`docs/project/04-design/08-infrastructure.md` に以下を記入する:
|
|
@@ -110,4 +113,6 @@ git commit -m "docs: インフラ設計の定義"
|
|
|
110
113
|
## 参考
|
|
111
114
|
|
|
112
115
|
- [examples/infrastructure-templates.md](examples/infrastructure-templates.md) — インフラ構成図、環境構成表、運用方針の定義項目
|
|
116
|
+
- [examples/non-functional-requirements.md](examples/non-functional-requirements.md) — 詳細な非機能要件テンプレート(設計フェーズで定量化)
|
|
117
|
+
- [examples/nfr-baseline.md](examples/nfr-baseline.md) — 非機能要件の標準ベースライン提案値
|
|
113
118
|
- [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、非機能要件対応、レビュー質問
|
|
@@ -1,115 +1,120 @@
|
|
|
1
|
-
# 非機能要件一覧
|
|
2
|
-
|
|
3
|
-
<!--
|
|
4
|
-
何を書くか: システムが「どう動くべきか」を定義する品質要件
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
|
110
|
-
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
|
|
|
114
|
-
|
|
|
115
|
-
|
|
|
1
|
+
# 非機能要件一覧
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
何を書くか: システムが「どう動くべきか」を定義する品質要件
|
|
5
|
+
|
|
6
|
+
位置づけ:
|
|
7
|
+
- これは設計フェーズ(/a-014-define-infrastructure)で必要時に展開する詳細 NFR テンプレート。
|
|
8
|
+
- 初期フェーズ(要件定義)では詳細 NFR を定量化しない。MVP の作り方を変えるほど重要な制約のみを
|
|
9
|
+
Product Brief の「クリティカル制約」に記載する。本テンプレートはその制約を起点に詳細化する。
|
|
10
|
+
|
|
11
|
+
目的:
|
|
12
|
+
- システムの性能基準、セキュリティレベル、信頼性を明確化
|
|
13
|
+
- アーキテクチャ設計・インフラ設計の指針を提供
|
|
14
|
+
- テスト計画の基準値を設定
|
|
15
|
+
- ステークホルダーとのSLA(サービスレベル合意)の根拠
|
|
16
|
+
|
|
17
|
+
特徴:
|
|
18
|
+
- 機能要件(何ができるか)に対し、非機能要件は「どれくらい良く動くか」を規定
|
|
19
|
+
- 測定可能で検証可能な基準を設定
|
|
20
|
+
- 設計フェーズで定義し、開発全体を通じて継続的に検証
|
|
21
|
+
|
|
22
|
+
記載のポイント:
|
|
23
|
+
- 具体的な数値目標を含める(「高速」ではなく「200ms以内」)
|
|
24
|
+
- 現実的で達成可能な基準を設定
|
|
25
|
+
- ビジネス要件と技術的実現可能性のバランスを取る
|
|
26
|
+
|
|
27
|
+
更新頻度:
|
|
28
|
+
- 設計フェーズで定義、要件変更時に見直し
|
|
29
|
+
- システム規模拡大時に再評価(ユーザー数増加など)
|
|
30
|
+
- 定期的な監視結果に基づいて調整
|
|
31
|
+
-->
|
|
32
|
+
|
|
33
|
+
<!--
|
|
34
|
+
テーブル構成:
|
|
35
|
+
|
|
36
|
+
【カテゴリ】
|
|
37
|
+
主要なカテゴリと内容:
|
|
38
|
+
|
|
39
|
+
性能(Performance)
|
|
40
|
+
- 応答時間: ユーザー操作からレスポンスまでの時間
|
|
41
|
+
- スループット: 単位時間あたりの処理件数
|
|
42
|
+
- リソース使用率: CPU、メモリ、ディスク、ネットワーク
|
|
43
|
+
- 同時接続数: 同時にアクセス可能なユーザー数
|
|
44
|
+
|
|
45
|
+
セキュリティ(Security)
|
|
46
|
+
- 認証・認可: ログイン方式、アクセス制御
|
|
47
|
+
- 暗号化: 通信・データの暗号化方式
|
|
48
|
+
- 監査: ログ記録、アクセス履歴
|
|
49
|
+
- 脆弱性対策: OWASP Top 10対応など
|
|
50
|
+
- データ保護: GDPR、個人情報保護法などのコンプライアンス
|
|
51
|
+
|
|
52
|
+
可用性(Availability)
|
|
53
|
+
- 稼働率: システムが利用可能な時間の割合(例: 99.9%)
|
|
54
|
+
- MTBF: 平均故障間隔
|
|
55
|
+
- MTTR: 平均復旧時間
|
|
56
|
+
- バックアップ: バックアップ頻度と保持期間
|
|
57
|
+
- 障害対応: 検知から復旧までの目標時間
|
|
58
|
+
|
|
59
|
+
スケーラビリティ(Scalability)
|
|
60
|
+
- ユーザー数: 対応可能な最大ユーザー数
|
|
61
|
+
- データ量: 保存可能なデータの上限
|
|
62
|
+
- 拡張性: 水平/垂直スケーリングの方式
|
|
63
|
+
- エラスティシティ: 負荷に応じた自動スケーリング
|
|
64
|
+
|
|
65
|
+
ユーザビリティ(Usability)
|
|
66
|
+
- アクセシビリティ: WCAG準拠レベル
|
|
67
|
+
- 学習容易性: 新規ユーザーが操作を習得する時間
|
|
68
|
+
- 多言語対応: サポートする言語
|
|
69
|
+
- モバイル対応: レスポンシブデザイン、PWA
|
|
70
|
+
|
|
71
|
+
保守性(Maintainability)
|
|
72
|
+
- コード品質: テストカバレッジ、静的解析基準
|
|
73
|
+
- デプロイ頻度: リリースサイクル
|
|
74
|
+
- ロールバック時間: 問題発生時の巻き戻し時間
|
|
75
|
+
|
|
76
|
+
互換性(Compatibility)
|
|
77
|
+
- ブラウザ対応: サポートするブラウザとバージョン
|
|
78
|
+
- デバイス対応: PC、タブレット、スマートフォン
|
|
79
|
+
- API互換性: 後方互換性の保証期間
|
|
80
|
+
|
|
81
|
+
【要件】
|
|
82
|
+
- カテゴリ内の具体的な要件項目名
|
|
83
|
+
- 簡潔で明確な名称(2-5単語程度)
|
|
84
|
+
- 例: 「応答時間」「認証方式」「稼働率」
|
|
85
|
+
|
|
86
|
+
【説明】
|
|
87
|
+
- 要件の具体的な基準値や条件を記述
|
|
88
|
+
- 測定可能な数値を含める(必須)
|
|
89
|
+
- 測定条件や前提条件も必要に応じて記載
|
|
90
|
+
- 例: 「API応答は95パーセンタイルで200ms以内(通常負荷時)」
|
|
91
|
+
|
|
92
|
+
ベストプラクティス:
|
|
93
|
+
- 「速い」「安全」など曖昧な表現を避け、具体的な数値や基準を使う
|
|
94
|
+
- テスト可能な要件にする(どう検証するか明確にする)
|
|
95
|
+
- 優先度の高い要件から記載(すべてを満たす必要はない場合もある)
|
|
96
|
+
- ビジネス影響を考慮した現実的な基準を設定(過度に厳しい基準は開発コストを増大させる)
|
|
97
|
+
- 競合他社や業界標準を参考にする
|
|
98
|
+
- システムの成長に応じて要件を見直す(初期は緩く、成熟に伴い厳格化も可)
|
|
99
|
+
-->
|
|
100
|
+
|
|
101
|
+
| カテゴリ | 要件 | 説明 |
|
|
102
|
+
|----------|------|------|
|
|
103
|
+
| <!-- カテゴリ名 --> | <!-- 要件名 --> | <!-- 要件の詳細 --> |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
**例:**
|
|
108
|
+
|
|
109
|
+
| カテゴリ | 要件 | 説明 |
|
|
110
|
+
|----------|------|------|
|
|
111
|
+
| 性能 | 応答時間 | API応答は200ms以内 |
|
|
112
|
+
| 性能 | 処理能力 | 同時接続1000ユーザーまで対応 |
|
|
113
|
+
| セキュリティ | 認証 | OAuth 2.0 + JWT認証 |
|
|
114
|
+
| セキュリティ | 暗号化 | TLS 1.3による通信暗号化 |
|
|
115
|
+
| セキュリティ | 監査 | 全API呼び出しのログ記録 |
|
|
116
|
+
| 可用性 | 稼働率 | 99.9%の稼働率を維持 |
|
|
117
|
+
| 可用性 | 障害対応 | 検知から復旧まで4時間以内 |
|
|
118
|
+
| スケーラビリティ | ユーザー数 | 10万ユーザーまで対応可能 |
|
|
119
|
+
| スケーラビリティ | データ量 | 1TBまでのデータ保存 |
|
|
120
|
+
| ユーザビリティ | アクセシビリティ | WCAG 2.1 AA準拠 |
|
|
@@ -15,7 +15,7 @@ grep -oE "PostgreSQL|Redis|NestJS|Next.js" docs/project/04-design/07-architectur
|
|
|
15
15
|
|
|
16
16
|
## 2.2 データモデル ↔ ドメインモデル
|
|
17
17
|
|
|
18
|
-
- **カバレッジ**:
|
|
18
|
+
- **カバレッジ**: ドメインの中核エンティティ(`01-domain-sketch.md`、Full DDD 採用時は `01-domain-model.md` の Aggregate)がデータモデル(`05-data-model.md`)のエンティティとして定義されているか。
|
|
19
19
|
- **用語統一**: テーブル名・カラム名がユビキタス言語と一致しているか。
|
|
20
20
|
|
|
21
21
|
## 2.3 API 仕様 ↔ データモデル
|
|
@@ -28,18 +28,25 @@ allowed-tools: Read, Write, Bash, Glob
|
|
|
28
28
|
|
|
29
29
|
命名規則の詳細は [examples/naming-convention.md](examples/naming-convention.md) を参照。
|
|
30
30
|
|
|
31
|
-
### 2.
|
|
31
|
+
### 2. タスク ID の採番とディレクトリ作成
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
決定したスラッグについて、次を順に行う。
|
|
34
|
+
|
|
35
|
+
1. **形式チェック**: スラッグが正規表現 `^[a-z0-9]+(-[a-z0-9]+)*$`(英小文字・数字・ハイフンのみ、連続ハイフン禁止)に一致するか確認。3〜5 語を推奨(範囲外は警告のみで続行)。違反時はエスカレーション参照。
|
|
36
|
+
2. **ID の採番**: `docs/tasks/` 配下の `task{6桁数字}-*` ディレクトリから最大 ID を求め、+1 を 6 桁ゼロ詰めした `task{ID}`(例: `task000003`)とする。タスクが無ければ `task000001`。
|
|
37
|
+
3. **ディレクトリ作成**: `docs/tasks/task{ID}-{SLUG}` を作成する。
|
|
34
38
|
|
|
35
39
|
```bash
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
# 既存タスクを確認して最大 ID を把握
|
|
41
|
+
ls -d docs/tasks/task* 2>/dev/null
|
|
42
|
+
|
|
43
|
+
# 採番した ID とスラッグでディレクトリを作成({ID}/{SLUG} は実値に置換)
|
|
44
|
+
mkdir -p "docs/tasks/task{ID}-{SLUG}"
|
|
38
45
|
```
|
|
39
46
|
|
|
40
47
|
### 3. 結果の確認
|
|
41
48
|
|
|
42
|
-
|
|
49
|
+
作成パス(`docs/tasks/task{ID}-{SLUG}`)が生成されたことを確認。
|
|
43
50
|
|
|
44
51
|
### 4. 次のステップの案内
|
|
45
52
|
|
|
@@ -53,9 +60,8 @@ bash "$SCRIPT_DIR/scripts/create-task.sh" "<SLUG>"
|
|
|
53
60
|
|
|
54
61
|
## エスカレーション
|
|
55
62
|
|
|
56
|
-
- **`docs/tasks/` が見つからない**:
|
|
57
|
-
- **スラッグ形式違反**:
|
|
58
|
-
- **スクリプトが見つからない**: `.claude/` または `.agents/` 配下に `scripts/create-task.sh` がない場合、`yodogawa` CLI での再インストールを促す
|
|
63
|
+
- **`docs/tasks/` が見つからない**: ディレクトリが無い場合は `/a-001-setup-doc-structure` の実行を促す
|
|
64
|
+
- **スラッグ形式違反**: 英小文字・数字・ハイフンのみ(連続ハイフン禁止)で再入力を求める
|
|
59
65
|
|
|
60
66
|
## 参考
|
|
61
67
|
|