yodogawa 2.1.3 → 2.3.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.
Files changed (89) hide show
  1. package/CHANGELOG.md +140 -94
  2. package/LICENSE +1 -1
  3. package/README.md +362 -263
  4. package/bin/checks/id-trace.js +137 -0
  5. package/bin/checks/links.js +59 -0
  6. package/bin/checks/placeholder.js +132 -0
  7. package/bin/checks/structure.js +127 -0
  8. package/bin/cli.js +51 -67
  9. package/bin/commands/doctor.js +128 -0
  10. package/bin/commands/install.js +58 -0
  11. package/bin/commands/new-task.js +117 -0
  12. package/bin/lib/check-cli.js +19 -0
  13. package/bin/lib/findings.js +31 -0
  14. package/bin/lib/markdown.js +103 -0
  15. package/bin/lib/project-spec.js +138 -0
  16. package/bin/lib/walk-md.js +23 -0
  17. package/package.json +68 -55
  18. package/skills/a-001-setup-doc-structure/SKILL.md +68 -68
  19. package/skills/a-001-setup-doc-structure/reference/directory-structure.md +75 -75
  20. package/skills/a-002-initialize-project/SKILL.md +145 -118
  21. package/skills/a-002-initialize-project/reference/hearing-questions.md +91 -41
  22. package/skills/a-002-initialize-project/reference/structure-check.md +12 -22
  23. package/skills/a-002a-slice-mvp-scope/SKILL.md +105 -0
  24. package/skills/a-002b-define-user-stories/SKILL.md +80 -0
  25. package/skills/a-002b-define-user-stories/reference/user-stories-guide.md +78 -0
  26. package/skills/a-003-create-scenarios/SKILL.md +97 -96
  27. package/{templates/project/02-behavior/01-scenarios.md → skills/a-003-create-scenarios/reference/detailed-gherkin-template.md} +413 -406
  28. package/skills/a-003-create-scenarios/reference/structure-check.md +20 -17
  29. package/skills/a-004-define-domain-model/SKILL.md +107 -98
  30. package/skills/a-004-define-domain-model/reference/event-storming-guide.md +33 -7
  31. package/skills/a-004-define-domain-model/reference/ubiquitous-language-guide.md +49 -0
  32. package/skills/a-005-create-domain-diagram/SKILL.md +18 -17
  33. package/skills/a-006-review-requirements-domain/SKILL.md +79 -29
  34. package/skills/a-006-review-requirements-domain/examples/review-report-template.md +40 -25
  35. package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +67 -24
  36. package/skills/a-007-define-tech-stack/SKILL.md +99 -99
  37. package/skills/a-008-define-repository-structure/SKILL.md +96 -96
  38. package/skills/a-009-define-screen-design/SKILL.md +103 -103
  39. package/skills/a-010-define-design-system/SKILL.md +130 -130
  40. package/skills/a-011-define-data-model/SKILL.md +118 -118
  41. package/skills/a-012-define-api-spec/SKILL.md +105 -105
  42. package/skills/a-013-define-architecture/SKILL.md +98 -98
  43. package/skills/a-014-define-infrastructure/SKILL.md +118 -110
  44. package/skills/{a-002-initialize-project → a-014-define-infrastructure}/examples/nfr-baseline.md +2 -1
  45. package/{templates/project/01-requirements/04-non-functional-requirements.md → skills/a-014-define-infrastructure/examples/non-functional-requirements.md} +120 -115
  46. package/skills/a-015-review-design/SKILL.md +15 -11
  47. package/skills/a-015-review-design/examples/review-report-template.md +17 -29
  48. package/skills/a-015-review-design/reference/consistency-checks.md +5 -3
  49. package/skills/b-001-create-task-directory/SKILL.md +68 -68
  50. package/skills/b-002-create-task-definition/SKILL.md +114 -114
  51. package/skills/b-003-create-task-research/SKILL.md +130 -128
  52. package/skills/b-004-create-task-implementation/SKILL.md +98 -98
  53. package/skills/b-005-review-task/SKILL.md +40 -24
  54. package/skills/b-005-review-task/examples/review-report-template.md +25 -35
  55. package/skills/b-005-review-task/reference/assessment-criteria.md +79 -79
  56. package/skills/b-005-review-task/reference/consistency-checks.md +70 -11
  57. package/skills/c-001-implement-task/SKILL.md +186 -186
  58. package/skills/c-001-implement-task/reference/implementation-loop.md +65 -65
  59. package/skills/c-002-update-documentation/SKILL.md +159 -159
  60. package/skills/c-002-update-documentation/examples/project-doc-updates.md +4 -4
  61. package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +99 -97
  62. package/skills/d-001-review-retrospective/SKILL.md +93 -0
  63. package/skills/d-001-review-retrospective/examples/retrospective-report-template.md +50 -0
  64. package/skills/d-001-review-retrospective/reference/friction-point-mapping.md +30 -0
  65. package/templates/LESSONS.md +15 -0
  66. package/templates/project/01-requirements/01-product-brief.md +186 -0
  67. package/templates/project/01-requirements/02-mvp-scope.md +64 -0
  68. package/templates/project/01-requirements/03-parking-lot.md +29 -0
  69. package/templates/project/01-requirements/05-user-stories.md +28 -124
  70. package/templates/project/01-requirements/{02-features-implemented.md → 06-features-implemented.md} +77 -73
  71. package/templates/project/02-behavior/01-core-scenarios.md +80 -0
  72. package/templates/project/03-domain/01-domain-model.md +120 -339
  73. package/templates/project/03-domain/01-domain-sketch.md +90 -0
  74. package/templates/project/03-domain/02-ubiquitous-language.md +32 -153
  75. package/templates/project/04-design/01-tech-stack.md +367 -367
  76. package/templates/project/04-design/02-repository-structure.md +391 -391
  77. package/templates/project/04-design/03-screen-design.md +596 -596
  78. package/templates/project/04-design/04-design-system.md +261 -261
  79. package/templates/project/04-design/05-data-model.md +211 -211
  80. package/templates/project/04-design/06-api-spec.md +226 -226
  81. package/templates/project/04-design/07-architecture.md +183 -183
  82. package/templates/project/04-design/08-infrastructure.md +180 -180
  83. package/templates/project/AI_CONTEXT.md +55 -0
  84. package/templates/project/STAKEHOLDER-SUMMARY.md +66 -0
  85. package/templates/tasks/task-template/a-definition.md +143 -143
  86. package/templates/tasks/task-template/b-research.md +185 -185
  87. package/templates/tasks/task-template/c-implementation.md +200 -200
  88. package/templates/project/01-requirements/01-system-overview.md +0 -49
  89. package/templates/project/01-requirements/03-features-planned.md +0 -75
@@ -1,73 +1,77 @@
1
- # 実装済み機能一覧
2
-
3
- <!--
4
- 何を書くか: 既に実装・リリース済みの機能を体系的に整理した一覧
5
-
6
- 目的:
7
- - プロダクトの現在の機能範囲を明確にする
8
- - 新規メンバーへのオンボーディング資料として活用
9
- - 機能追加・変更時の影響範囲把握に役立てる
10
- - ドキュメントと実装の同期を保つ
11
-
12
- 記載粒度: ユーザーが認識できる機能単位(APIエンドポイントレベルではなく、ユーザー機能レベル)
13
-
14
- 更新頻度: 機能リリース時に必ず更新(living documentとして維持)
15
- -->
16
-
17
- <!--
18
- テーブル構成:
19
-
20
- 【機能ID】
21
- - 形式: FN-XXX(Feature Number)
22
- - 採番ルール: 連番、欠番は作らない
23
- - 用途: 機能の一意識別、他ドキュメントでの参照、変更履歴の追跡
24
-
25
- 【Category 1】(大分類)
26
- - プロダクトの主要な機能領域で分類
27
- - 例: ユーザー管理、コンテンツ、決済、通知、分析
28
- - 5-10個程度に収める(多すぎると管理が困難)
29
-
30
- 【Category 2】(中分類)
31
- - Category 1 をさらに細分化
32
- - 例: ユーザー管理 → 認証、プロフィール、権限
33
- - Category 1 と合わせて機能の所在が即座に分かるように
34
-
35
- 【機能名】
36
- - 簡潔で分かりやすい名称(2-5単語程度)
37
- - ユーザー視点の表現を使う(実装用語ではなく)
38
- - 例: 「ログイン」「記事作成」「パスワードリセット」
39
-
40
- 【説明】
41
- - 1-2文で機能の内容を記述(50-100文字程度)
42
- - 何ができるか(What)を中心に、必要に応じてどう動くか(How)を補足
43
- - ユーザーへの価値や利点が分かる表現を心がける
44
- - 技術的詳細は避け、ユーザー機能として記述
45
-
46
- ベストプラクティス:
47
- - カテゴリは一貫性を保つ(表記ゆれを避ける)
48
- - 機能の粒度を揃える(ある機能だけ詳細すぎる/粗すぎるを避ける)
49
- - 説明は能動態で書く(「〜できる」「〜する」)
50
- - 内部実装の変更では更新せず、ユーザー体験が変わった時のみ更新
51
- - 削除された機能は一覧から削除(履歴はGitで管理)
52
- -->
53
-
54
- | 機能ID | Category 1 | Category 2 | 機能名 | 説明 |
55
- |--------|-----------|-----------|--------|------|
56
- | <!-- FN-001 --> | <!-- カテゴリ1 --> | <!-- カテゴリ2 --> | <!-- 機能名 --> | <!-- 簡潔な説明 --> |
57
-
58
- ---
59
-
60
- **例:**
61
-
62
- | 機能ID | Category 1 | Category 2 | 機能名 | 説明 |
63
- |--------|-----------|-----------|--------|------|
64
- | FN-001 | ユーザー管理 | 認証 | ログイン | メールアドレスとパスワードでログイン |
65
- | FN-002 | ユーザー管理 | 認証 | ログアウト | セッション終了 |
66
- | FN-003 | ユーザー管理 | 認証 | パスワードリセット | メールでリセットリンク送信 |
67
- | FN-004 | ユーザー管理 | プロフィール | プロフィール編集 | 名前、アバター、自己紹介の編集 |
68
- | FN-005 | ユーザー管理 | プロフィール | プロフィール閲覧 | 他ユーザーのプロフィール表示 |
69
- | FN-006 | コンテンツ | 投稿 | 記事作成 | Markdown形式での記事作成 |
70
- | FN-007 | コンテンツ | 投稿 | 記事編集 | 既存記事の編集 |
71
- | FN-008 | コンテンツ | 投稿 | 記事削除 | 記事の削除 |
72
- | FN-009 | コンテンツ | コメント | コメント投稿 | 記事へのコメント |
73
- | FN-010 | コンテンツ | コメント | コメント削除 | 自分のコメント削除 |
1
+ # 実装済み機能一覧
2
+
3
+ <!--
4
+ 何を書くか: 既に実装・リリース済みの機能を体系的に整理した一覧
5
+
6
+ モード別の扱い:
7
+ - existing(既存プロダクト): 必須。既存コード分析と棚卸しで埋める。
8
+ - greenfield(新規プロダクト): 任意。実装済み機能が無いため、空のまま/未生成で構わない。
9
+
10
+ 目的:
11
+ - プロダクトの現在の機能範囲を明確にする
12
+ - 新規メンバーへのオンボーディング資料として活用
13
+ - 機能追加・変更時の影響範囲把握に役立てる
14
+ - ドキュメントと実装の同期を保つ
15
+
16
+ 記載粒度: ユーザーが認識できる機能単位(APIエンドポイントレベルではなく、ユーザー機能レベル)
17
+
18
+ 更新頻度: 機能リリース時に必ず更新(living documentとして維持)
19
+ -->
20
+
21
+ <!--
22
+ テーブル構成:
23
+
24
+ 【機能ID】
25
+ - 形式: FN-XXX(Feature Number)
26
+ - 採番ルール: 連番、欠番は作らない
27
+ - 用途: 機能の一意識別、他ドキュメントでの参照、変更履歴の追跡
28
+
29
+ 【Category 1】(大分類)
30
+ - プロダクトの主要な機能領域で分類
31
+ - 例: ユーザー管理、コンテンツ、決済、通知、分析
32
+ - 5-10個程度に収める(多すぎると管理が困難)
33
+
34
+ 【Category 2】(中分類)
35
+ - Category 1 をさらに細分化
36
+ - 例: ユーザー管理 → 認証、プロフィール、権限
37
+ - Category 1 と合わせて機能の所在が即座に分かるように
38
+
39
+ 【機能名】
40
+ - 簡潔で分かりやすい名称(2-5単語程度)
41
+ - ユーザー視点の表現を使う(実装用語ではなく)
42
+ - 例: 「ログイン」「記事作成」「パスワードリセット」
43
+
44
+ 【説明】
45
+ - 1-2文で機能の内容を記述(50-100文字程度)
46
+ - 何ができるか(What)を中心に、必要に応じてどう動くか(How)を補足
47
+ - ユーザーへの価値や利点が分かる表現を心がける
48
+ - 技術的詳細は避け、ユーザー機能として記述
49
+
50
+ ベストプラクティス:
51
+ - カテゴリは一貫性を保つ(表記ゆれを避ける)
52
+ - 機能の粒度を揃える(ある機能だけ詳細すぎる/粗すぎるを避ける)
53
+ - 説明は能動態で書く(「〜できる」「〜する」)
54
+ - 内部実装の変更では更新せず、ユーザー体験が変わった時のみ更新
55
+ - 削除された機能は一覧から削除(履歴はGitで管理)
56
+ -->
57
+
58
+ | 機能ID | Category 1 | Category 2 | 機能名 | 説明 |
59
+ |--------|-----------|-----------|--------|------|
60
+ | <!-- FN-001 --> | <!-- カテゴリ1 --> | <!-- カテゴリ2 --> | <!-- 機能名 --> | <!-- 簡潔な説明 --> |
61
+
62
+ ---
63
+
64
+ **例:**
65
+
66
+ | 機能ID | Category 1 | Category 2 | 機能名 | 説明 |
67
+ |--------|-----------|-----------|--------|------|
68
+ | FN-001 | ユーザー管理 | 認証 | ログイン | メールアドレスとパスワードでログイン |
69
+ | FN-002 | ユーザー管理 | 認証 | ログアウト | セッション終了 |
70
+ | FN-003 | ユーザー管理 | 認証 | パスワードリセット | メールでリセットリンク送信 |
71
+ | FN-004 | ユーザー管理 | プロフィール | プロフィール編集 | 名前、アバター、自己紹介の編集 |
72
+ | FN-005 | ユーザー管理 | プロフィール | プロフィール閲覧 | 他ユーザーのプロフィール表示 |
73
+ | FN-006 | コンテンツ | 投稿 | 記事作成 | Markdown形式での記事作成 |
74
+ | FN-007 | コンテンツ | 投稿 | 記事編集 | 既存記事の編集 |
75
+ | FN-008 | コンテンツ | 投稿 | 記事削除 | 記事の削除 |
76
+ | FN-009 | コンテンツ | コメント | コメント投稿 | 記事へのコメント |
77
+ | FN-010 | コンテンツ | コメント | コメント削除 | 自分のコメント削除 |
@@ -0,0 +1,80 @@
1
+ # Core Scenarios
2
+
3
+ <!--
4
+ 何のドキュメントか: MVP の「価値提供が成立する最小行動」を定義する軽量資料。
5
+ 全ケース網羅(ハッピー / エラー / 境界値)の BDD ではない。
6
+ Day 1 に必ず通る成功体験と、価値を壊す重大失敗だけを固定する。
7
+
8
+ 使い方:
9
+ - 対象は MVP Scope の Must 機能のみ(02-mvp-scope.md)。Not Now / Won't は扱わない。
10
+ - 各シナリオは「ユーザーの意図」で書く。UI 操作(ボタン名・画面遷移)の詳細には踏み込まない。
11
+ - 網羅したくなったら止める。MVP で対応しない行動・エラーは「Not Covered in MVP」へ逃がす。
12
+
13
+ SSoT の住み分け:
14
+ - User Story(05-user-stories.md)= 要約レベルの受け入れ基準(AC)。
15
+ - Core Scenario(本書)= 実行時の主要行動(誰が・何をして・何が起きれば成功か)。
16
+ - 詳細な Gherkin / 境界値 / Scenario Outline / タグ戦略が必要になったら、実装直前または
17
+ テスト設計時に任意で `skills/a-003-create-scenarios/reference/detailed-gherkin-template.md` を使う。
18
+ -->
19
+
20
+ ## 参照: MVP Scope
21
+
22
+ <!-- 02-mvp-scope.md の Must 機能のうち、本書で主要行動を固定する対象を列挙する。 -->
23
+
24
+ - 対象 Must 機能: <!-- 例: FN-001 プロフィール作成 / FN-002 コメント投稿 -->
25
+
26
+ ## Core Flow 一覧
27
+
28
+ <!--
29
+ 何を書くか: MVP の中核となるユーザー行動の流れ(1〜3本)。価値が成立する最短経路。
30
+ 記法: 表で「フロー / 主アクター / 提供価値(So that)/ 対応 Must」を一覧化する。
31
+ -->
32
+
33
+ | フロー | 主アクター | 提供価値(So that) | 対応 Must |
34
+ |---|---|---|---|
35
+ | <!-- 例: 自己紹介を作り共通点を見つける --> | <!-- 例: 新入社員 --> | <!-- 例: 早くチームに馴染める --> | <!-- 例: FN-001 --> |
36
+
37
+ ## Day 1 Happy Path(1〜3本)
38
+
39
+ <!--
40
+ 何を書くか: リリース初日に「必ず通る」成功シナリオ。MVP の価値検証の中心。
41
+ 記法: Given-When-Then を1〜数文で。ユーザーの意図を書き、UI 詳細は避ける。
42
+ -->
43
+
44
+ ### CS-001: <!-- シナリオ名 -->
45
+
46
+ - **対応フロー / Must**: <!-- 例: 自己紹介フロー / FN-001 -->
47
+ - **Given**: <!-- 前提(例: 新入社員がログイン済み) -->
48
+ - **When**: <!-- 行動(例: ライフラインチャートを入力して公開する) -->
49
+ - **Then**: <!-- 成功条件(例: プロフィールが一覧に表示され、他者が閲覧できる) -->
50
+
51
+ ## Critical Failure(価値を壊す重大失敗)
52
+
53
+ <!--
54
+ 何を書くか: 起きると MVP の価値そのものが崩れる失敗だけ。網羅ではなく「致命傷」に限定。
55
+ 法務・課金・権限・データ消失など、外すと危険な境界条件を優先する。
56
+ -->
57
+
58
+ ### CF-001: <!-- 失敗名 -->
59
+
60
+ - **何が起きると価値が壊れるか**: <!-- 例: 公開範囲を誤り社外に個人情報が漏れる -->
61
+ - **MVP での扱い**: <!-- 例: 公開範囲は社内固定(設定不可)にして発生源を断つ -->
62
+
63
+ ## Not Covered in MVP(MVP で対応しない行動・エラー)
64
+
65
+ <!--
66
+ 何を書くか: 「今回は対応しない」行動・エラーを明示する。スコープ膨張の防止弁。
67
+ 02-mvp-scope.md の Not Now / Won't と整合させる。
68
+ -->
69
+
70
+ - <!-- 例: 退職者プロフィールの自動アーカイブ → Not Now -->
71
+ - <!-- 例: 多言語対応 → Won't -->
72
+
73
+ ## AI 実装時の振る舞い注意点
74
+
75
+ <!--
76
+ 何を書くか: 実装エージェント(Vibe coding / AI)が踏みやすい落とし穴と、固定すべき振る舞い。
77
+ -->
78
+
79
+ - <!-- 例: エラーケースを勝手に網羅実装しない。Not Covered のものは作らない。 -->
80
+ - <!-- 例: 公開範囲のような Critical Failure 対策は仕様どおり固定で実装する。 -->