yodogawa 1.0.7 → 2.1.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 +39 -0
- package/README.md +61 -23
- package/bin/cli.js +18 -44
- package/package.json +6 -4
- package/skills/a-001-setup-doc-structure/SKILL.md +67 -0
- package/skills/a-001-setup-doc-structure/reference/directory-structure.md +52 -0
- package/skills/a-002-initialize-project/SKILL.md +124 -0
- package/skills/a-002-initialize-project/examples/nfr-baseline.md +38 -0
- package/skills/a-002-initialize-project/reference/hearing-questions.md +92 -0
- package/skills/a-002-initialize-project/reference/structure-check.md +48 -0
- package/skills/a-003-create-scenarios/SKILL.md +99 -0
- package/skills/a-003-create-scenarios/examples/gherkin-templates.md +71 -0
- package/skills/a-003-create-scenarios/reference/structure-check.md +46 -0
- package/skills/a-004-define-domain-model/SKILL.md +99 -0
- package/skills/a-004-define-domain-model/reference/event-storming-guide.md +71 -0
- package/skills/a-005-create-domain-diagram/SKILL.md +94 -0
- package/skills/a-005-create-domain-diagram/examples/mermaid-templates.md +73 -0
- package/skills/a-005-create-domain-diagram/reference/structure-check.md +43 -0
- package/skills/a-006-review-requirements-domain/SKILL.md +85 -0
- package/skills/a-006-review-requirements-domain/examples/review-report-template.md +58 -0
- package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +60 -0
- package/skills/a-007-define-tech-stack/SKILL.md +102 -0
- package/skills/a-007-define-tech-stack/examples/stack-interview.md +83 -0
- package/skills/a-007-define-tech-stack/reference/structure-check.md +51 -0
- package/skills/a-008-define-repository-structure/SKILL.md +99 -0
- package/skills/a-008-define-repository-structure/examples/structure-templates.md +108 -0
- package/skills/a-008-define-repository-structure/reference/structure-check.md +55 -0
- package/skills/a-009-define-screen-design/SKILL.md +106 -0
- package/skills/a-009-define-screen-design/examples/screen-templates.md +66 -0
- package/skills/a-009-define-screen-design/reference/structure-check.md +47 -0
- package/skills/a-010-define-design-system/SKILL.md +134 -0
- package/skills/a-010-define-design-system/examples/css-tokens.md +71 -0
- package/skills/a-010-define-design-system/reference/component-catalog.md +44 -0
- package/skills/a-011-define-data-model/SKILL.md +121 -0
- package/skills/a-011-define-data-model/examples/erd-templates.md +108 -0
- package/skills/a-011-define-data-model/reference/structure-check.md +56 -0
- package/skills/a-012-define-api-spec/SKILL.md +108 -0
- package/skills/a-012-define-api-spec/examples/api-templates.md +117 -0
- package/skills/a-012-define-api-spec/reference/structure-check.md +49 -0
- package/skills/a-013-define-architecture/SKILL.md +101 -0
- package/skills/a-013-define-architecture/examples/architecture-templates.md +98 -0
- package/skills/a-013-define-architecture/reference/structure-check.md +53 -0
- package/skills/a-014-define-infrastructure/SKILL.md +113 -0
- package/skills/a-014-define-infrastructure/examples/infrastructure-templates.md +97 -0
- package/skills/a-014-define-infrastructure/reference/structure-check.md +63 -0
- package/skills/a-015-review-design/SKILL.md +88 -0
- package/skills/a-015-review-design/examples/review-report-template.md +59 -0
- package/skills/a-015-review-design/reference/consistency-checks.md +47 -0
- package/skills/b-001-create-task-directory/SKILL.md +68 -0
- package/skills/b-001-create-task-directory/examples/naming-convention.md +39 -0
- package/skills/b-002-create-task-definition/SKILL.md +115 -0
- package/skills/b-002-create-task-definition/examples/hearing-and-criteria.md +49 -0
- package/skills/b-002-create-task-definition/reference/structure-check.md +42 -0
- package/skills/b-003-create-task-research/SKILL.md +130 -0
- package/skills/b-003-create-task-research/examples/research-tables.md +63 -0
- package/skills/b-003-create-task-research/reference/investigation-guide.md +106 -0
- package/skills/b-004-create-task-implementation/SKILL.md +97 -0
- package/skills/b-004-create-task-implementation/examples/phase-step-template.md +57 -0
- package/skills/b-004-create-task-implementation/reference/structure-check.md +34 -0
- package/skills/b-005-review-task/SKILL.md +117 -0
- package/skills/b-005-review-task/examples/review-report-template.md +62 -0
- package/skills/b-005-review-task/reference/assessment-criteria.md +79 -0
- package/skills/b-005-review-task/reference/consistency-checks.md +69 -0
- package/skills/c-001-implement-task/SKILL.md +186 -0
- package/skills/c-001-implement-task/examples/commit-and-pr.md +92 -0
- package/skills/c-001-implement-task/examples/task-list-format.md +50 -0
- package/skills/c-001-implement-task/reference/implementation-loop.md +65 -0
- package/skills/c-001-implement-task/reference/validation-loop.md +66 -0
- package/skills/c-002-update-documentation/SKILL.md +159 -0
- package/skills/c-002-update-documentation/examples/project-doc-updates.md +190 -0
- package/skills/c-002-update-documentation/examples/task-doc-updates.md +102 -0
- package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +100 -0
- package/{.windsurf/templates → templates}/tasks/task-template/a-definition.md +1 -1
- package/{.windsurf/templates → templates}/tasks/task-template/b-research.md +1 -1
- package/{.windsurf/templates → templates}/tasks/task-template/c-implementation.md +2 -2
- package/.windsurf/workflows/a-001-SetupDocStructure.md +0 -99
- package/.windsurf/workflows/a-002-InitializeProject.md +0 -283
- package/.windsurf/workflows/a-003-CreateScenarios.md +0 -140
- package/.windsurf/workflows/a-004-DefineDomainModel.md +0 -142
- package/.windsurf/workflows/a-005-CreateDomainDiagram.md +0 -119
- package/.windsurf/workflows/a-006-ReviewRequirementsDomain.md +0 -143
- package/.windsurf/workflows/a-007-DefineTechStack.md +0 -128
- package/.windsurf/workflows/a-008-DefineRepositoryStructure.md +0 -127
- package/.windsurf/workflows/a-009-DefineScreenDesign.md +0 -128
- package/.windsurf/workflows/a-010-DefineDesignSystem.md +0 -210
- package/.windsurf/workflows/a-011-DefineDataModel.md +0 -132
- package/.windsurf/workflows/a-012-DefineAPISpec.md +0 -130
- package/.windsurf/workflows/a-013-DefineArchitecture.md +0 -126
- package/.windsurf/workflows/a-014-DefineInfrastructure.md +0 -128
- package/.windsurf/workflows/a-015-ReviewDesign.md +0 -139
- package/.windsurf/workflows/b-001-CreateTaskDirectory.md +0 -77
- package/.windsurf/workflows/b-002-CreateTaskDefinition.md +0 -170
- package/.windsurf/workflows/b-003-CreateTaskResearch.md +0 -452
- package/.windsurf/workflows/b-004-CreateTaskImplementation.md +0 -98
- package/.windsurf/workflows/b-005-ReviewTask.md +0 -323
- package/.windsurf/workflows/c-001-ImplementTask.md +0 -520
- package/.windsurf/workflows/c-002-UpdateDocumentation.md +0 -852
- /package/{.windsurf/scripts → scripts}/setup-docs.sh +0 -0
- /package/{.windsurf/templates → templates}/documentation-rules.md +0 -0
- /package/{.windsurf/templates → templates}/project/01-requirements/01-system-overview.md +0 -0
- /package/{.windsurf/templates → templates}/project/01-requirements/02-features-implemented.md +0 -0
- /package/{.windsurf/templates → templates}/project/01-requirements/03-features-planned.md +0 -0
- /package/{.windsurf/templates → templates}/project/01-requirements/04-non-functional-requirements.md +0 -0
- /package/{.windsurf/templates → templates}/project/01-requirements/05-user-stories.md +0 -0
- /package/{.windsurf/templates → templates}/project/02-behavior/01-scenarios.md +0 -0
- /package/{.windsurf/templates → templates}/project/03-domain/01-domain-model.md +0 -0
- /package/{.windsurf/templates → templates}/project/03-domain/02-ubiquitous-language.md +0 -0
- /package/{.windsurf/templates → templates}/project/04-design/01-tech-stack.md +0 -0
- /package/{.windsurf/templates → templates}/project/04-design/02-repository-structure.md +0 -0
- /package/{.windsurf/templates → templates}/project/04-design/03-screen-design.md +0 -0
- /package/{.windsurf/templates → templates}/project/04-design/04-design-system.md +0 -0
- /package/{.windsurf/templates → templates}/project/04-design/05-data-model.md +0 -0
- /package/{.windsurf/templates → templates}/project/04-design/06-api-spec.md +0 -0
- /package/{.windsurf/templates → templates}/project/04-design/07-architecture.md +0 -0
- /package/{.windsurf/templates → templates}/project/04-design/08-infrastructure.md +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# ヒアリング質問集
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順3〜7で各テンプレートに記入する際のヒアリング質問一覧。
|
|
4
|
+
|
|
5
|
+
## 手順3: システム概要
|
|
6
|
+
|
|
7
|
+
### 背景
|
|
8
|
+
|
|
9
|
+
- 「このシステムで解決しようとしている**具体的な問題や課題**は何ですか?」
|
|
10
|
+
- 「その問題はなぜ重要ですか?放置した場合のリスクは?」
|
|
11
|
+
- 「問題の影響を受けるステークホルダー(ユーザー、組織、チームなど)は誰ですか?」
|
|
12
|
+
- 「具体的な数値やデータ(作業時間、コスト、離脱率など)があれば教えてください。」
|
|
13
|
+
|
|
14
|
+
### 目的
|
|
15
|
+
|
|
16
|
+
- 「このシステムが提供する**具体的な価値や解決策**は何ですか?」
|
|
17
|
+
- 「期待される成果や変化を、測定可能な形で表現できますか?(例: 作業時間 50%削減)」
|
|
18
|
+
- 「どのように問題を解決するか、具体的なメカニズムや仕組みを教えてください。」
|
|
19
|
+
|
|
20
|
+
## 手順4: 実装済み機能一覧
|
|
21
|
+
|
|
22
|
+
### コード調査のヒントと提案
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
find src app lib -maxdepth 2 -type d 2>/dev/null
|
|
26
|
+
find . -type f -name "*Controller*" -o -name "*Service*" -o -name "*Component*" | head -n 20
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
提案例:
|
|
30
|
+
|
|
31
|
+
- 「`src/auth` ディレクトリが見つかりました。認証機能(ログイン、登録など)は実装済みですか?」
|
|
32
|
+
- 「`PaymentController` があります。決済機能は稼働していますか?」
|
|
33
|
+
|
|
34
|
+
### ヒアリング項目
|
|
35
|
+
|
|
36
|
+
- 「既に実装済みの機能はありますか?(提案した機能含む)」
|
|
37
|
+
- **Category 1**(大分類: ユーザー管理、コンテンツなど)
|
|
38
|
+
- **Category 2**(中分類: 認証、プロフィールなど)
|
|
39
|
+
- **機能名**(ユーザー視点の名称)
|
|
40
|
+
- **説明**(何ができるか)
|
|
41
|
+
- **機能 ID**(FN-XXX 形式、連番)
|
|
42
|
+
|
|
43
|
+
## 手順5: 予定機能一覧
|
|
44
|
+
|
|
45
|
+
### 差分分析からの提案例
|
|
46
|
+
|
|
47
|
+
- 「システム概要で『〇〇機能』への言及がありましたが、まだ実装されていないようです。予定機能に追加しますか?」
|
|
48
|
+
- 「現在の実装に『××』が含まれていますが、関連する『△△機能』は将来的に必要ですか?」
|
|
49
|
+
|
|
50
|
+
### ヒアリング項目
|
|
51
|
+
|
|
52
|
+
- **Category 1** / **Category 2**
|
|
53
|
+
- **機能名**(アイデア段階でも可)
|
|
54
|
+
- **説明**(目的や価値を中心に)
|
|
55
|
+
|
|
56
|
+
※ 機能 ID・優先度はこの段階では確定させず、柔軟性を重視して記載しない。
|
|
57
|
+
|
|
58
|
+
## 手順6: 非機能要件
|
|
59
|
+
|
|
60
|
+
### パフォーマンス
|
|
61
|
+
|
|
62
|
+
- 「ページ読み込み時間の目標は?」
|
|
63
|
+
- 「API レスポンス時間の目標は?」
|
|
64
|
+
- 「想定される同時接続ユーザー数、データ量は?」
|
|
65
|
+
|
|
66
|
+
### セキュリティ
|
|
67
|
+
|
|
68
|
+
- 「認証方式、機密データの扱い、コンプライアンス要件は?」
|
|
69
|
+
|
|
70
|
+
### 可用性・信頼性
|
|
71
|
+
|
|
72
|
+
- 「稼働率目標、許容ダウンタイム、バックアップ要件は?」
|
|
73
|
+
|
|
74
|
+
### スケーラビリティ
|
|
75
|
+
|
|
76
|
+
- 「ユーザー数の成長予測、ピーク時のトラフィック想定は?」
|
|
77
|
+
|
|
78
|
+
### ユーザビリティ・保守性
|
|
79
|
+
|
|
80
|
+
- 「アクセシビリティ、対応言語、デバイス、ブラウザは?」
|
|
81
|
+
- 「ログ・監視要件、デプロイ頻度は?」
|
|
82
|
+
|
|
83
|
+
## 手順7: ユーザーストーリー
|
|
84
|
+
|
|
85
|
+
### 提案テンプレート
|
|
86
|
+
|
|
87
|
+
「[役割]として、[〇〇機能]を使いたい、なぜなら[価値]だから」
|
|
88
|
+
|
|
89
|
+
### ヒアリング項目
|
|
90
|
+
|
|
91
|
+
- 「他に主要なユーザージャーニーがあれば教えてください([役割]として、[目的]がしたい、なぜなら[理由])」
|
|
92
|
+
- 各ストーリーの優先度、受け入れ基準
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# 構造チェックコマンド集
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順9で使う、生成済みドキュメントの構造確認用コマンド。
|
|
4
|
+
|
|
5
|
+
## 5ドキュメントの必須セクション/テーブル検証
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 01-system-overview.md: 主要セクションの確認
|
|
9
|
+
grep "## 背景" docs/project/requirements/01-system-overview.md && echo "OK" || echo "MISSING: 背景"
|
|
10
|
+
grep "## 目的" docs/project/requirements/01-system-overview.md && echo "OK" || echo "MISSING: 目的"
|
|
11
|
+
|
|
12
|
+
# 02-features-implemented.md: テーブルヘッダー
|
|
13
|
+
grep "| 機能ID | Category 1 |" docs/project/requirements/02-features-implemented.md \
|
|
14
|
+
&& echo "OK" || echo "MISSING: Table Header"
|
|
15
|
+
|
|
16
|
+
# 03-features-planned.md: テーブルヘッダー
|
|
17
|
+
grep "| Category 1 | Category 2 |" docs/project/requirements/03-features-planned.md \
|
|
18
|
+
&& echo "OK" || echo "MISSING: Table Header"
|
|
19
|
+
|
|
20
|
+
# 04-non-functional-requirements.md: テーブルヘッダー
|
|
21
|
+
grep "| カテゴリ | 要件 |" docs/project/requirements/04-non-functional-requirements.md \
|
|
22
|
+
&& echo "OK" || echo "MISSING: Table Header"
|
|
23
|
+
|
|
24
|
+
# 05-user-stories.md: テーブルヘッダー
|
|
25
|
+
grep "| ストーリーID | ストーリー |" docs/project/requirements/05-user-stories.md \
|
|
26
|
+
&& echo "OK" || echo "MISSING: Table Header"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## チェックリスト
|
|
30
|
+
|
|
31
|
+
- [ ] すべてのファイルが存在する
|
|
32
|
+
- [ ] 各ファイルがテンプレートの基本構造を維持している(主要セクション・テーブル)
|
|
33
|
+
- [ ] プレースホルダーが適切な内容に置き換わっている
|
|
34
|
+
|
|
35
|
+
## Git への追加(オプション)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
git add docs/project/requirements/
|
|
39
|
+
git status
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
推奨コミットメッセージ:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
docs: 要件定義ドキュメントの作成
|
|
46
|
+
|
|
47
|
+
- システム概要、機能要件、非機能要件、ユーザーストーリーを追加
|
|
48
|
+
```
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: a-003-create-scenarios
|
|
3
|
+
description: ユーザーストーリーから Gherkin 形式のシナリオを生成し、BDD で振る舞いを定義する。要件定義後、ドメインモデル設計前の振る舞い明確化に使用。
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# CreateScenarios (a-003)
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- ユーザーストーリーから具体的なシナリオ(振る舞い)を抽出し、Gherkin 形式で記述する。
|
|
13
|
+
- Given-When-Then 構造で、開発者・QA・ステークホルダーが共通理解できる実行可能なドキュメントを作成する。
|
|
14
|
+
- ハッピーパス(正常系)からエラーケース、境界値テストまでを網羅的に定義する。
|
|
15
|
+
|
|
16
|
+
## 前提
|
|
17
|
+
|
|
18
|
+
- `docs/project/requirements/05-user-stories.md` が作成されていること(`/a-002-initialize-project` 実行済み)。
|
|
19
|
+
- `docs/project/behavior/` ディレクトリが存在すること(未作成なら `/a-001-setup-doc-structure`)。
|
|
20
|
+
- ユーザーが各機能の具体的な動作例を説明できること。
|
|
21
|
+
|
|
22
|
+
## 手順
|
|
23
|
+
|
|
24
|
+
### 1. ディレクトリと前提条件の確認
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ls -la docs/project/behavior/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`docs/project/requirements/05-user-stories.md` を読み込み、シナリオ化対象を把握する。
|
|
31
|
+
|
|
32
|
+
### 2. テンプレートの準備
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
SCRIPT_DIR=$(for d in .agent .cursor .claude .codex; do [ -d "$d" ] && echo "$d" && break; done)
|
|
36
|
+
cp "$SCRIPT_DIR/templates/project/02-behavior/01-scenarios.md" "docs/project/behavior/01-scenarios.md"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 3. 分析と提案
|
|
40
|
+
|
|
41
|
+
ユーザーストーリーを機能(Feature)単位にグルーピングし、ハッピーパスと代表的なエラーケースの案を提示。
|
|
42
|
+
|
|
43
|
+
- 「機能: [機能名] (US-XXX)」
|
|
44
|
+
- 「シナリオ案1: [ハッピーパス] / シナリオ案2: [エラーケース]」
|
|
45
|
+
|
|
46
|
+
### 4. ヒアリングと記入
|
|
47
|
+
|
|
48
|
+
機能ごとに以下を詰めて `docs/project/behavior/01-scenarios.md` を更新する。Gherkin 記述例は [examples/gherkin-templates.md](examples/gherkin-templates.md) を参照。
|
|
49
|
+
|
|
50
|
+
- **Feature 情報**: 機能名、As a/I want/So that、Background(共通前提)
|
|
51
|
+
- **ハッピーパス**: Given-When-Then で最も基本的な成功シナリオ
|
|
52
|
+
- **エラーケース・境界値**: 必要に応じて Scenario Outline(Examples テーブル)を使用
|
|
53
|
+
- **タグ付け**: `@SC-XXX` ID 採番、`@smoke` `@happy-path` `@error-handling` 等
|
|
54
|
+
|
|
55
|
+
UI 操作の詳細ではなく、ユーザーの意図を記述するよう注意する。
|
|
56
|
+
|
|
57
|
+
### 5. シナリオ一覧テーブルの更新
|
|
58
|
+
|
|
59
|
+
ドキュメント冒頭の一覧テーブルに、全シナリオの ID・機能・シナリオ名・優先度を記載する。テーブル例は [examples/gherkin-templates.md](examples/gherkin-templates.md#シナリオ一覧テーブル例) を参照。
|
|
60
|
+
|
|
61
|
+
### 6. レビューと確認
|
|
62
|
+
|
|
63
|
+
ユーザーに提示し、実際の動作の正確性、抜け漏れ、非技術者への理解可能性を確認する。質問例は [reference/structure-check.md](reference/structure-check.md#レビュー確認質問) を参照。
|
|
64
|
+
|
|
65
|
+
### 7. 構造チェック
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
grep "Feature:" docs/project/behavior/01-scenarios.md \
|
|
69
|
+
&& grep "Scenario:" docs/project/behavior/01-scenarios.md \
|
|
70
|
+
&& echo "OK" || echo "MISSING SECTION"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
詳細なチェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
|
|
74
|
+
|
|
75
|
+
### 8. Git への追加(任意)
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
git add docs/project/behavior/
|
|
79
|
+
git commit -m "docs: 振る舞い仕様(シナリオ)の作成"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加任意) を参照。
|
|
83
|
+
|
|
84
|
+
## 完了条件
|
|
85
|
+
|
|
86
|
+
- `docs/project/behavior/01-scenarios.md` が作成されている。
|
|
87
|
+
- ユーザーストーリーに対応する具体的なシナリオ(Given-When-Then)が記述されている。
|
|
88
|
+
- シナリオ一覧テーブルがメンテナンスされている。
|
|
89
|
+
- ユーザーが内容を承認している。
|
|
90
|
+
|
|
91
|
+
## エスカレーション
|
|
92
|
+
|
|
93
|
+
- **ユーザーストーリーが不明確でシナリオ化できない**: 「`/a-002-initialize-project` に戻って要件を明確にしましょう。」
|
|
94
|
+
- **実装詳細への依存が強すぎる**: 「UI 操作(ボタンクリック等)ではなく、ユーザーの意図(登録する等)に焦点を当てた記述に変更しましょう。」
|
|
95
|
+
|
|
96
|
+
## 参考
|
|
97
|
+
|
|
98
|
+
- [examples/gherkin-templates.md](examples/gherkin-templates.md) — Feature / Scenario / Scenario Outline の記述例、タグ付けガイド、一覧テーブル例
|
|
99
|
+
- [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー観点、Git 追加例
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Gherkin シナリオ記述例とタグ
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順3〜5 で使用する Gherkin 形式のテンプレートとタグ付けのサンプル。
|
|
4
|
+
|
|
5
|
+
## Feature 定義の形式
|
|
6
|
+
|
|
7
|
+
```gherkin
|
|
8
|
+
Feature: [機能名]
|
|
9
|
+
As a [役割]
|
|
10
|
+
I want [やりたいこと]
|
|
11
|
+
So that [得られる価値]
|
|
12
|
+
|
|
13
|
+
Background:
|
|
14
|
+
Given [共通の前提条件]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## ハッピーパスのシナリオ例
|
|
18
|
+
|
|
19
|
+
```gherkin
|
|
20
|
+
@SC-001 @smoke @happy-path
|
|
21
|
+
Scenario: 正常にログインできる
|
|
22
|
+
Given ユーザーは登録済みである
|
|
23
|
+
When 正しいメールアドレスとパスワードを入力する
|
|
24
|
+
And ログインボタンを押下する
|
|
25
|
+
Then ダッシュボード画面が表示される
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- UI 操作(「ボタンをクリック」)ではなく、ユーザーの意図(「ログインする」)を優先する。
|
|
29
|
+
- 複数ステップは `And` / `But` で繋ぐ。
|
|
30
|
+
|
|
31
|
+
## エラーケース・境界値(Scenario Outline)
|
|
32
|
+
|
|
33
|
+
```gherkin
|
|
34
|
+
@SC-002 @error-handling
|
|
35
|
+
Scenario Outline: 不正な入力でログインに失敗する
|
|
36
|
+
Given ユーザーは登録済みである
|
|
37
|
+
When <email> と <password> を入力する
|
|
38
|
+
Then <message> が表示される
|
|
39
|
+
|
|
40
|
+
Examples:
|
|
41
|
+
| email | password | message |
|
|
42
|
+
| invalid@mail | correctPw1 | メール形式が不正です |
|
|
43
|
+
| test@example.com | | パスワードが必要です |
|
|
44
|
+
| test@example.com | wrong | 認証に失敗しました |
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## タグ付けガイド
|
|
48
|
+
|
|
49
|
+
- `@SC-XXX`: シナリオ ID(必須)
|
|
50
|
+
- `@smoke`: リリース前の最小確認対象
|
|
51
|
+
- `@happy-path`: 正常系
|
|
52
|
+
- `@error-handling`: エラーケース
|
|
53
|
+
- `@regression`: 実装済み機能のリグレッション
|
|
54
|
+
- 優先度別: `@high`, `@medium`, `@low`
|
|
55
|
+
|
|
56
|
+
## シナリオ一覧テーブル例
|
|
57
|
+
|
|
58
|
+
| シナリオID | 機能 | シナリオ名 | 優先度 |
|
|
59
|
+
|:--|:--|:--|:--|
|
|
60
|
+
| SC-001 | 認証 | 正常ログイン | High |
|
|
61
|
+
| SC-002 | 認証 | 入力エラー | High |
|
|
62
|
+
| SC-003 | 登録 | メール認証完了 | Medium |
|
|
63
|
+
|
|
64
|
+
## コミットメッセージ例
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
docs: 振る舞い仕様(シナリオ)の作成
|
|
68
|
+
|
|
69
|
+
- ユーザーストーリーに基づく Gherkin シナリオを追加
|
|
70
|
+
- 正常系・異常系・境界値ケースを定義
|
|
71
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# 構造チェックとレビュー観点
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順6〜7 で使う構造確認コマンドとレビュー観点。
|
|
4
|
+
|
|
5
|
+
## セクション存在確認
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# シナリオ一覧テーブルの確認
|
|
9
|
+
grep "| シナリオID | 機能 |" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Table Header"
|
|
10
|
+
# Feature 定義の確認
|
|
11
|
+
grep "Feature:" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Feature definition"
|
|
12
|
+
# Scenario 定義の確認
|
|
13
|
+
grep "Scenario:" docs/project/behavior/01-scenarios.md && echo "OK" || echo "MISSING: Scenario definition"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## チェックリスト
|
|
17
|
+
|
|
18
|
+
- [ ] `docs/project/behavior/01-scenarios.md` が作成されている
|
|
19
|
+
- [ ] シナリオ一覧テーブルが更新されている
|
|
20
|
+
- [ ] 各 Feature が Gherkin 形式で記述されている
|
|
21
|
+
- [ ] 正常系と異常系のシナリオが網羅されている
|
|
22
|
+
- [ ] Empty State や境界値も考慮されている
|
|
23
|
+
- [ ] タグ(@SC-XXX, @smoke 等)が付与されている
|
|
24
|
+
|
|
25
|
+
## レビュー確認質問
|
|
26
|
+
|
|
27
|
+
- 「シナリオは実際の動作を正しく表現していますか?」
|
|
28
|
+
- 「漏れているケース(エラー、境界値)はありませんか?」
|
|
29
|
+
- 「非技術者でも理解できる表現になっていますか?」
|
|
30
|
+
- 「UI 操作に依存せず、ユーザーの意図を表現できていますか?」
|
|
31
|
+
|
|
32
|
+
## Git への追加(任意)
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
git add docs/project/behavior/
|
|
36
|
+
git status
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
推奨コミットメッセージ:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
docs: 振る舞い仕様(シナリオ)の作成
|
|
43
|
+
|
|
44
|
+
- ユーザーストーリーに基づく Gherkin シナリオを追加
|
|
45
|
+
- 正常系・異常系・境界値ケースを定義
|
|
46
|
+
```
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: a-004-define-domain-model
|
|
3
|
+
description: Event Storming 形式でドメインモデル(イベント・コマンド・集約)を定義し、ユビキタス言語を整備する。シナリオ作成後、ドメイン設計を開始する際に使用。
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# DefineDomainModel (a-004)
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- Event Storming 形式でドメインモデルを体系的に定義する。
|
|
13
|
+
- ドメインモデルを作成しながら、ユビキタス言語(共通用語)を並行して洗練させる。
|
|
14
|
+
- Bounded Context を特定し、Actors / Commands / Events / Policies / Aggregates を明確化する。
|
|
15
|
+
|
|
16
|
+
## 前提
|
|
17
|
+
|
|
18
|
+
- `docs/project/behavior/01-scenarios.md` が作成されている(`/a-003-create-scenarios` 実行済み)
|
|
19
|
+
- `docs/project/domain/` ディレクトリが存在(なければ `/a-001-setup-doc-structure`)
|
|
20
|
+
- ドメインエキスパートと協力できる
|
|
21
|
+
|
|
22
|
+
## 手順
|
|
23
|
+
|
|
24
|
+
### 1. ディレクトリと前提条件の確認
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ls -la docs/project/domain/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
存在しなければ `/a-001-setup-doc-structure` を促す。`docs/project/behavior/01-scenarios.md` を読み込み内容確認。
|
|
31
|
+
|
|
32
|
+
### 2. テンプレートの準備
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
SCRIPT_DIR=$(for d in .agent .cursor .claude .codex; do [ -d "$d" ] && echo "$d" && break; done)
|
|
36
|
+
cp "$SCRIPT_DIR/templates/project/03-domain/01-domain-model.md" "docs/project/domain/01-domain-model.md"
|
|
37
|
+
cp "$SCRIPT_DIR/templates/project/03-domain/02-ubiquitous-language.md" "docs/project/domain/02-ubiquitous-language.md"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 3. Bounded Context の特定
|
|
41
|
+
|
|
42
|
+
シナリオとユーザーストーリーから Bounded Context を提案し、戦略的分類(Core / Supporting / Generic)を確認。詳細は [reference/event-storming-guide.md](reference/event-storming-guide.md#bounded-context-の特定) を参照。
|
|
43
|
+
|
|
44
|
+
### 4. 各 Bounded Context のドメインモデル定義
|
|
45
|
+
|
|
46
|
+
各 Context について以下を定義し、`01-domain-model.md` を更新。新しい用語が登場するたびに `02-ubiquitous-language.md` にも追記。
|
|
47
|
+
|
|
48
|
+
- 概要とアクター
|
|
49
|
+
- コマンド / イベント / ポリシー(Event Storming)
|
|
50
|
+
- 集約 / Read Models / External Systems
|
|
51
|
+
|
|
52
|
+
各要素の詳細は [reference/event-storming-guide.md](reference/event-storming-guide.md#各-context-の定義項目) を参照。
|
|
53
|
+
|
|
54
|
+
### 5. ユビキタス言語の洗練
|
|
55
|
+
|
|
56
|
+
`02-ubiquitous-language.md` を見直し、重複・曖昧さ・禁止用語を排除。観点は [reference/event-storming-guide.md](reference/event-storming-guide.md#ユビキタス言語の洗練観点) を参照。
|
|
57
|
+
|
|
58
|
+
### 6. Context Map の定義
|
|
59
|
+
|
|
60
|
+
Context 間の関係性(Customer-Supplier, Shared Kernel 等)を Mermaid 図で定義。関係パターン: [reference/event-storming-guide.md](reference/event-storming-guide.md#context-map-の関係性)
|
|
61
|
+
|
|
62
|
+
### 7. レビューと確認
|
|
63
|
+
|
|
64
|
+
作成したドキュメントを提示し、ビジネス用語の正確性 / Aggregate 境界 / ユビキタス言語定義を確認。
|
|
65
|
+
|
|
66
|
+
### 8. 完了条件と構造の確認
|
|
67
|
+
|
|
68
|
+
構造確認コマンドは [reference/event-storming-guide.md](reference/event-storming-guide.md#構造確認コマンド) を参照。
|
|
69
|
+
|
|
70
|
+
チェックリスト:
|
|
71
|
+
|
|
72
|
+
- [ ] `01-domain-model.md` に主要な Event Storming 要素が含まれている
|
|
73
|
+
- [ ] `02-ubiquitous-language.md` の用語が定義されている
|
|
74
|
+
- [ ] ドメインモデルとユビキタス言語の整合性が取れている
|
|
75
|
+
|
|
76
|
+
### 9. Git への追加(オプション)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git add docs/project/domain/
|
|
80
|
+
git status
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
コミットメッセージ: [reference/event-storming-guide.md](reference/event-storming-guide.md#git-コミットメッセージ)
|
|
84
|
+
|
|
85
|
+
## 完了条件
|
|
86
|
+
|
|
87
|
+
- `docs/project/domain/01-domain-model.md` と `02-ubiquitous-language.md` が作成されている
|
|
88
|
+
- 各 Bounded Context の主要ドメイン要素(Aggregates, Commands, Events)が定義されている
|
|
89
|
+
- ドメインモデルで使用される用語がユビキタス言語として定義されている
|
|
90
|
+
- ユーザーが内容を承認している
|
|
91
|
+
|
|
92
|
+
## エスカレーション
|
|
93
|
+
|
|
94
|
+
- **シナリオが不足**: 「`/a-003-create-scenarios` に戻ってシナリオを充実させましょう。」
|
|
95
|
+
- **Bounded Context の境界が不明確**: 「暫定的な境界を設定し、実装を進めながら見直す方針で進めませんか?」
|
|
96
|
+
|
|
97
|
+
## 参考
|
|
98
|
+
|
|
99
|
+
- [reference/event-storming-guide.md](reference/event-storming-guide.md) — Event Storming の観点、Context Map パターン、構造確認コマンド
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Event Storming ガイド
|
|
2
|
+
|
|
3
|
+
SKILL.md 手順3〜6で使うドメインモデル定義の観点集。
|
|
4
|
+
|
|
5
|
+
## Bounded Context の特定
|
|
6
|
+
|
|
7
|
+
シナリオとユーザーストーリーを分析し、ビジネス領域を特定。
|
|
8
|
+
|
|
9
|
+
- **戦略的分類**:
|
|
10
|
+
- **Core**: ビジネスの中核的な競争優位を生む領域
|
|
11
|
+
- **Supporting**: Core を支援する領域
|
|
12
|
+
- **Generic**: 汎用的に解決できる領域(既製ソリューション候補)
|
|
13
|
+
|
|
14
|
+
## 各 Context の定義項目
|
|
15
|
+
|
|
16
|
+
### 概要とアクター
|
|
17
|
+
|
|
18
|
+
- Context の責務と主要な責任
|
|
19
|
+
- 登場するアクター(Actors)とその役割
|
|
20
|
+
|
|
21
|
+
### コマンドとイベント(Event Storming)
|
|
22
|
+
|
|
23
|
+
- **Commands**: アクターが実行するアクション(命令形、例: `RegisterUser`)
|
|
24
|
+
- **Domain Events**: 結果として発生するビジネス上の出来事(過去形、例: `UserRegistered`)
|
|
25
|
+
- **Policies**: 自動化ルール(`Whenever X, then Y` 形式)
|
|
26
|
+
|
|
27
|
+
### 集約とモデル
|
|
28
|
+
|
|
29
|
+
- **Aggregates**: 一貫性を保つエンティティの塊
|
|
30
|
+
- **Read Models**: 画面表示用の参照モデル
|
|
31
|
+
- **External Systems**: 連携する外部システム
|
|
32
|
+
|
|
33
|
+
## ユビキタス言語の洗練観点
|
|
34
|
+
|
|
35
|
+
- 用語の重複や曖昧さがないか
|
|
36
|
+
- 禁止用語(`Data`, `Process` など曖昧な語)が含まれていないか
|
|
37
|
+
- 定義が具体的で Context 内での意味に限定されているか
|
|
38
|
+
|
|
39
|
+
## Context Map の関係性
|
|
40
|
+
|
|
41
|
+
- **Customer-Supplier**: 上流/下流の依存関係
|
|
42
|
+
- **Shared Kernel**: 共有される小さなモデル
|
|
43
|
+
- **Anticorruption Layer**: 外部モデルの変換層
|
|
44
|
+
- **Conformist**: 上流に従う
|
|
45
|
+
- **Partnership**: 相互協調
|
|
46
|
+
|
|
47
|
+
## レビュー観点
|
|
48
|
+
|
|
49
|
+
- ビジネス用語は正確に表現されているか
|
|
50
|
+
- Aggregate の境界は適切か
|
|
51
|
+
- ユビキタス言語の定義は明確か
|
|
52
|
+
|
|
53
|
+
## 構造確認コマンド
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
grep "Bounded Context:" docs/project/domain/01-domain-model.md \
|
|
57
|
+
&& echo "OK" || echo "MISSING: Bounded Context definition"
|
|
58
|
+
grep "### Aggregates" docs/project/domain/01-domain-model.md \
|
|
59
|
+
&& echo "OK" || echo "MISSING: Aggregates section"
|
|
60
|
+
grep "| 用語 | 定義 |" docs/project/domain/02-ubiquitous-language.md \
|
|
61
|
+
&& echo "OK" || echo "MISSING: Terminology table"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Git コミットメッセージ
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
docs: ドメインモデルとユビキタス言語の定義
|
|
68
|
+
|
|
69
|
+
- Event Stormingによるドメインモデルの作成
|
|
70
|
+
- Bounded Contextごとのユビキタス言語の整備
|
|
71
|
+
```
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: a-005-create-domain-diagram
|
|
3
|
+
description: ドメインモデルを Mermaid 図(Context Map・Aggregate 構造)として可視化する。ドメインモデル定義後、関係性を図で確認する際に使用。
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# CreateDomainDiagram (a-005)
|
|
9
|
+
|
|
10
|
+
## 目的
|
|
11
|
+
|
|
12
|
+
- ドメインモデルドキュメント(`01-domain-model.md`)を基に、視覚的なダイアグラムを作成する。
|
|
13
|
+
- Context Map(Bounded Context 間の関係図)を Mermaid 形式で図示する。
|
|
14
|
+
- 各 Bounded Context 内の Aggregate 構造や関係性を図示する(オプション)。
|
|
15
|
+
|
|
16
|
+
## 前提
|
|
17
|
+
|
|
18
|
+
- `docs/project/domain/01-domain-model.md` が作成されていること(`/a-004-define-domain-model` 実行済み)。
|
|
19
|
+
- ドメインモデルドキュメントに Bounded Context の一覧と関係性が記述されていること。
|
|
20
|
+
|
|
21
|
+
## 手順
|
|
22
|
+
|
|
23
|
+
### 1. ドキュメントの確認
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
ls -la docs/project/domain/01-domain-model.md 2>/dev/null || echo "ファイルが存在しません"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
未作成の場合、`/a-004-define-domain-model` の実行を促す。
|
|
30
|
+
|
|
31
|
+
### 2. Context Map の情報収集と提案
|
|
32
|
+
|
|
33
|
+
`docs/project/domain/01-domain-model.md` から以下を抽出し、構成案を提示する:
|
|
34
|
+
|
|
35
|
+
- Bounded Context のリスト
|
|
36
|
+
- 戦略的分類(Core / Supporting / Generic)
|
|
37
|
+
- Context 間の関係性と通信方法
|
|
38
|
+
|
|
39
|
+
### 3. Context Map 図の作成
|
|
40
|
+
|
|
41
|
+
`## Context Map` セクションに Mermaid 図を追加する。スタイル定義と記述テンプレートは [examples/mermaid-templates.md](examples/mermaid-templates.md#context-mapbounded-context-間の関係) を参照。
|
|
42
|
+
|
|
43
|
+
- Core Domain: 金色、Supporting: 水色、Generic: グレー
|
|
44
|
+
- エッジラベルに関係パターン(Customer/Supplier、ACL 等)と通信方法を記載
|
|
45
|
+
|
|
46
|
+
### 4. 詳細図の作成(オプション)
|
|
47
|
+
|
|
48
|
+
ユーザー確認の上、以下を追加作成する:
|
|
49
|
+
|
|
50
|
+
- **Aggregate 構造図**: クラス図形式。Aggregate 内部の Entity/Value Object と関係を表現。
|
|
51
|
+
- **イベントフロー図**: シーケンス図形式。主要ビジネスフロー(Command → Event → Policy)を表現。
|
|
52
|
+
|
|
53
|
+
テンプレートは [examples/mermaid-templates.md](examples/mermaid-templates.md#aggregate-構造図クラス図形式) を参照。
|
|
54
|
+
|
|
55
|
+
### 5. レビューと確認
|
|
56
|
+
|
|
57
|
+
作成した図を提示し、関係性の正確性、色分けの適切性、読みやすさを確認する。質問例は [reference/structure-check.md](reference/structure-check.md#レビュー確認質問) を参照。フィードバックに応じてレイアウト(TD/LR)や配置を調整する。
|
|
58
|
+
|
|
59
|
+
### 6. 構造チェック
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
grep "\`\`\`mermaid" docs/project/domain/01-domain-model.md \
|
|
63
|
+
&& grep "## Context Map" docs/project/domain/01-domain-model.md \
|
|
64
|
+
&& echo "OK" || echo "MISSING SECTION"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
詳細チェックリストは [reference/structure-check.md](reference/structure-check.md#チェックリスト) を参照。
|
|
68
|
+
|
|
69
|
+
### 7. Git への追加(任意)
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
git add docs/project/domain/01-domain-model.md
|
|
73
|
+
git commit -m "docs: ドメインモデル図(Context Map)の追加"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
詳細は [reference/structure-check.md](reference/structure-check.md#git-への追加任意) を参照。
|
|
77
|
+
|
|
78
|
+
## 完了条件
|
|
79
|
+
|
|
80
|
+
- `docs/project/domain/01-domain-model.md` に Context Map 図が追加されている。
|
|
81
|
+
- Bounded Context 間の関係性が正しく表現されている。
|
|
82
|
+
- 戦略的分類が視覚的に区別されている。
|
|
83
|
+
- オプションの詳細図(Aggregate 図、シーケンス図)が必要に応じて追加されている。
|
|
84
|
+
- ユーザーが図の内容を承認している。
|
|
85
|
+
|
|
86
|
+
## エスカレーション
|
|
87
|
+
|
|
88
|
+
- **ドメインモデルが不完全で図を作成できない**: 「`/a-004-define-domain-model` に戻って定義を補完しましょう。」
|
|
89
|
+
- **図が複雑すぎて読みにくい**: 「主要な関係のみに絞るか、図を分割することを検討しましょう。」
|
|
90
|
+
|
|
91
|
+
## 参考
|
|
92
|
+
|
|
93
|
+
- [examples/mermaid-templates.md](examples/mermaid-templates.md) — Context Map / Aggregate / シーケンス図の Mermaid テンプレート、スタイル定義、エッジラベル例
|
|
94
|
+
- [reference/structure-check.md](reference/structure-check.md) — 構造確認コマンド、チェックリスト、レビュー質問、Git 追加例
|