@einja/dev-cli 0.1.6

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 (243) hide show
  1. package/README.md +179 -0
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +49 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/init.d.ts +3 -0
  7. package/dist/commands/init.d.ts.map +1 -0
  8. package/dist/commands/init.js +243 -0
  9. package/dist/commands/init.js.map +1 -0
  10. package/dist/commands/list.d.ts +2 -0
  11. package/dist/commands/list.d.ts.map +1 -0
  12. package/dist/commands/list.js +23 -0
  13. package/dist/commands/list.js.map +1 -0
  14. package/dist/commands/sync.d.ts +7 -0
  15. package/dist/commands/sync.d.ts.map +1 -0
  16. package/dist/commands/sync.js +294 -0
  17. package/dist/commands/sync.js.map +1 -0
  18. package/dist/commands/sync.test.d.ts +2 -0
  19. package/dist/commands/sync.test.d.ts.map +1 -0
  20. package/dist/commands/sync.test.js +593 -0
  21. package/dist/commands/sync.test.js.map +1 -0
  22. package/dist/commands/task-loop.d.ts +11 -0
  23. package/dist/commands/task-loop.d.ts.map +1 -0
  24. package/dist/commands/task-loop.js +81 -0
  25. package/dist/commands/task-loop.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +3 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/file-system.d.ts +39 -0
  31. package/dist/lib/file-system.d.ts.map +1 -0
  32. package/dist/lib/file-system.js +79 -0
  33. package/dist/lib/file-system.js.map +1 -0
  34. package/dist/lib/mcp-config.d.ts +43 -0
  35. package/dist/lib/mcp-config.d.ts.map +1 -0
  36. package/dist/lib/mcp-config.js +109 -0
  37. package/dist/lib/mcp-config.js.map +1 -0
  38. package/dist/lib/mcp-config.test.d.ts +2 -0
  39. package/dist/lib/mcp-config.test.d.ts.map +1 -0
  40. package/dist/lib/mcp-config.test.js +285 -0
  41. package/dist/lib/mcp-config.test.js.map +1 -0
  42. package/dist/lib/merger.d.ts +41 -0
  43. package/dist/lib/merger.d.ts.map +1 -0
  44. package/dist/lib/merger.js +164 -0
  45. package/dist/lib/merger.js.map +1 -0
  46. package/dist/lib/preset-update/cli-repo-detector.d.ts +35 -0
  47. package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -0
  48. package/dist/lib/preset-update/cli-repo-detector.js +83 -0
  49. package/dist/lib/preset-update/cli-repo-detector.js.map +1 -0
  50. package/dist/lib/preset-update/cli-repo-detector.test.d.ts +2 -0
  51. package/dist/lib/preset-update/cli-repo-detector.test.d.ts.map +1 -0
  52. package/dist/lib/preset-update/cli-repo-detector.test.js +120 -0
  53. package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -0
  54. package/dist/lib/preset-update/file-copier.d.ts +59 -0
  55. package/dist/lib/preset-update/file-copier.d.ts.map +1 -0
  56. package/dist/lib/preset-update/file-copier.js +220 -0
  57. package/dist/lib/preset-update/file-copier.js.map +1 -0
  58. package/dist/lib/preset-update/file-copier.test.d.ts +2 -0
  59. package/dist/lib/preset-update/file-copier.test.d.ts.map +1 -0
  60. package/dist/lib/preset-update/file-copier.test.js +297 -0
  61. package/dist/lib/preset-update/file-copier.test.js.map +1 -0
  62. package/dist/lib/preset-update/preset-finder.d.ts +39 -0
  63. package/dist/lib/preset-update/preset-finder.d.ts.map +1 -0
  64. package/dist/lib/preset-update/preset-finder.js +92 -0
  65. package/dist/lib/preset-update/preset-finder.js.map +1 -0
  66. package/dist/lib/preset-update/preset-finder.test.d.ts +2 -0
  67. package/dist/lib/preset-update/preset-finder.test.d.ts.map +1 -0
  68. package/dist/lib/preset-update/preset-finder.test.js +128 -0
  69. package/dist/lib/preset-update/preset-finder.test.js.map +1 -0
  70. package/dist/lib/preset.d.ts +14 -0
  71. package/dist/lib/preset.d.ts.map +1 -0
  72. package/dist/lib/preset.js +52 -0
  73. package/dist/lib/preset.js.map +1 -0
  74. package/dist/lib/sync/backup-manager.d.ts +50 -0
  75. package/dist/lib/sync/backup-manager.d.ts.map +1 -0
  76. package/dist/lib/sync/backup-manager.js +117 -0
  77. package/dist/lib/sync/backup-manager.js.map +1 -0
  78. package/dist/lib/sync/backup-manager.test.d.ts +2 -0
  79. package/dist/lib/sync/backup-manager.test.d.ts.map +1 -0
  80. package/dist/lib/sync/backup-manager.test.js +155 -0
  81. package/dist/lib/sync/backup-manager.test.js.map +1 -0
  82. package/dist/lib/sync/batch-processor.d.ts +27 -0
  83. package/dist/lib/sync/batch-processor.d.ts.map +1 -0
  84. package/dist/lib/sync/batch-processor.js +46 -0
  85. package/dist/lib/sync/batch-processor.js.map +1 -0
  86. package/dist/lib/sync/batch-processor.test.d.ts +2 -0
  87. package/dist/lib/sync/batch-processor.test.d.ts.map +1 -0
  88. package/dist/lib/sync/batch-processor.test.js +110 -0
  89. package/dist/lib/sync/batch-processor.test.js.map +1 -0
  90. package/dist/lib/sync/category-validator.d.ts +36 -0
  91. package/dist/lib/sync/category-validator.d.ts.map +1 -0
  92. package/dist/lib/sync/category-validator.js +46 -0
  93. package/dist/lib/sync/category-validator.js.map +1 -0
  94. package/dist/lib/sync/category-validator.test.d.ts +2 -0
  95. package/dist/lib/sync/category-validator.test.d.ts.map +1 -0
  96. package/dist/lib/sync/category-validator.test.js +89 -0
  97. package/dist/lib/sync/category-validator.test.js.map +1 -0
  98. package/dist/lib/sync/conflict-reporter.d.ts +57 -0
  99. package/dist/lib/sync/conflict-reporter.d.ts.map +1 -0
  100. package/dist/lib/sync/conflict-reporter.js +81 -0
  101. package/dist/lib/sync/conflict-reporter.js.map +1 -0
  102. package/dist/lib/sync/conflict-reporter.test.d.ts +2 -0
  103. package/dist/lib/sync/conflict-reporter.test.d.ts.map +1 -0
  104. package/dist/lib/sync/conflict-reporter.test.js +132 -0
  105. package/dist/lib/sync/conflict-reporter.test.js.map +1 -0
  106. package/dist/lib/sync/diff-engine.d.ts +28 -0
  107. package/dist/lib/sync/diff-engine.d.ts.map +1 -0
  108. package/dist/lib/sync/diff-engine.js +118 -0
  109. package/dist/lib/sync/diff-engine.js.map +1 -0
  110. package/dist/lib/sync/diff-engine.test.d.ts +2 -0
  111. package/dist/lib/sync/diff-engine.test.d.ts.map +1 -0
  112. package/dist/lib/sync/diff-engine.test.js +133 -0
  113. package/dist/lib/sync/diff-engine.test.js.map +1 -0
  114. package/dist/lib/sync/file-filter.d.ts +40 -0
  115. package/dist/lib/sync/file-filter.d.ts.map +1 -0
  116. package/dist/lib/sync/file-filter.js +171 -0
  117. package/dist/lib/sync/file-filter.js.map +1 -0
  118. package/dist/lib/sync/file-filter.test.d.ts +2 -0
  119. package/dist/lib/sync/file-filter.test.d.ts.map +1 -0
  120. package/dist/lib/sync/file-filter.test.js +179 -0
  121. package/dist/lib/sync/file-filter.test.js.map +1 -0
  122. package/dist/lib/sync/hash-cache.d.ts +34 -0
  123. package/dist/lib/sync/hash-cache.d.ts.map +1 -0
  124. package/dist/lib/sync/hash-cache.js +51 -0
  125. package/dist/lib/sync/hash-cache.js.map +1 -0
  126. package/dist/lib/sync/hash-cache.test.d.ts +2 -0
  127. package/dist/lib/sync/hash-cache.test.d.ts.map +1 -0
  128. package/dist/lib/sync/hash-cache.test.js +110 -0
  129. package/dist/lib/sync/hash-cache.test.js.map +1 -0
  130. package/dist/lib/sync/integration.test.d.ts +2 -0
  131. package/dist/lib/sync/integration.test.d.ts.map +1 -0
  132. package/dist/lib/sync/integration.test.js +317 -0
  133. package/dist/lib/sync/integration.test.js.map +1 -0
  134. package/dist/lib/sync/marker-processor.d.ts +54 -0
  135. package/dist/lib/sync/marker-processor.d.ts.map +1 -0
  136. package/dist/lib/sync/marker-processor.js +208 -0
  137. package/dist/lib/sync/marker-processor.js.map +1 -0
  138. package/dist/lib/sync/marker-processor.test.d.ts +2 -0
  139. package/dist/lib/sync/marker-processor.test.d.ts.map +1 -0
  140. package/dist/lib/sync/marker-processor.test.js +245 -0
  141. package/dist/lib/sync/marker-processor.test.js.map +1 -0
  142. package/dist/lib/sync/metadata-manager.d.ts +46 -0
  143. package/dist/lib/sync/metadata-manager.d.ts.map +1 -0
  144. package/dist/lib/sync/metadata-manager.js +129 -0
  145. package/dist/lib/sync/metadata-manager.js.map +1 -0
  146. package/dist/lib/sync/metadata-manager.test.d.ts +2 -0
  147. package/dist/lib/sync/metadata-manager.test.d.ts.map +1 -0
  148. package/dist/lib/sync/metadata-manager.test.js +137 -0
  149. package/dist/lib/sync/metadata-manager.test.js.map +1 -0
  150. package/dist/lib/sync/performance.test.d.ts +2 -0
  151. package/dist/lib/sync/performance.test.d.ts.map +1 -0
  152. package/dist/lib/sync/performance.test.js +126 -0
  153. package/dist/lib/sync/performance.test.js.map +1 -0
  154. package/dist/types/index.d.ts +59 -0
  155. package/dist/types/index.d.ts.map +1 -0
  156. package/dist/types/index.js +2 -0
  157. package/dist/types/index.js.map +1 -0
  158. package/dist/types/preset-update.d.ts +106 -0
  159. package/dist/types/preset-update.d.ts.map +1 -0
  160. package/dist/types/preset-update.js +5 -0
  161. package/dist/types/preset-update.js.map +1 -0
  162. package/dist/types/sync.d.ts +169 -0
  163. package/dist/types/sync.d.ts.map +1 -0
  164. package/dist/types/sync.js +19 -0
  165. package/dist/types/sync.js.map +1 -0
  166. package/package.json +72 -0
  167. package/presets/minimal/.claude/agents/einja/docs/docs-updater.md +161 -0
  168. package/presets/minimal/.claude/agents/einja/frontend/design-engineer.md +685 -0
  169. package/presets/minimal/.claude/agents/einja/frontend/frontend-architect.md +747 -0
  170. package/presets/minimal/.claude/agents/einja/frontend/frontend-coder.md +441 -0
  171. package/presets/minimal/.claude/agents/einja/git/conflict-resolver.md +148 -0
  172. package/presets/minimal/.claude/agents/einja/specs/spec-design-generator.md +462 -0
  173. package/presets/minimal/.claude/agents/einja/specs/spec-qa-generator.md +466 -0
  174. package/presets/minimal/.claude/agents/einja/specs/spec-requirements-generator.md +416 -0
  175. package/presets/minimal/.claude/agents/einja/specs/spec-tasks-generator.md +608 -0
  176. package/presets/minimal/.claude/agents/einja/task/task-committer.md +82 -0
  177. package/presets/minimal/.claude/agents/einja/task/task-executer.md +352 -0
  178. package/presets/minimal/.claude/agents/einja/task/task-modification-analyzer.md +369 -0
  179. package/presets/minimal/.claude/agents/einja/task/task-qa.md +74 -0
  180. package/presets/minimal/.claude/agents/einja/task/task-reviewer.md +169 -0
  181. package/presets/minimal/.claude/commands/einja/frontend-implement.md +322 -0
  182. package/presets/minimal/.claude/commands/einja/spec-create.md +254 -0
  183. package/presets/minimal/.claude/commands/einja/start-dev.md +98 -0
  184. package/presets/minimal/.claude/commands/einja/sync-cursor-commands.md +203 -0
  185. package/presets/minimal/.claude/commands/einja/task-exec.md +390 -0
  186. package/presets/minimal/.claude/commands/einja/update-docs-by-task-specs.md +448 -0
  187. package/presets/minimal/.claude/hooks/einja/biome-format.sh +49 -0
  188. package/presets/minimal/.claude/hooks/einja/design-doc-check.sh +61 -0
  189. package/presets/minimal/.claude/hooks/einja/detect-secrets.sh +62 -0
  190. package/presets/minimal/.claude/hooks/einja/large-file-warning.sh +42 -0
  191. package/presets/minimal/.claude/hooks/einja/playwright-resize.sh +36 -0
  192. package/presets/minimal/.claude/hooks/einja/typecheck.sh +37 -0
  193. package/presets/minimal/.claude/hooks/einja/unset-volta-recursion.sh +32 -0
  194. package/presets/minimal/.claude/hooks/einja/validate-git-commit.sh +239 -0
  195. package/presets/minimal/.claude/hooks/einja/warn-index-ts.sh +34 -0
  196. package/presets/minimal/.claude/hooks/einja/warn-relative-import.sh +48 -0
  197. package/presets/minimal/.claude/settings.json +174 -0
  198. package/presets/minimal/.claude/skills/einja/api-development/SKILL.md +14 -0
  199. package/presets/minimal/.claude/skills/einja/backend-architecture/SKILL.md +14 -0
  200. package/presets/minimal/.claude/skills/einja/coding-standards/SKILL.md +120 -0
  201. package/presets/minimal/.claude/skills/einja/coding-standards/reference/naming-conventions.md +107 -0
  202. package/presets/minimal/.claude/skills/einja/coding-standards/reference/prohibited-patterns.md +169 -0
  203. package/presets/minimal/.claude/skills/einja/coding-standards/reference/typescript-rules.md +247 -0
  204. package/presets/minimal/.claude/skills/einja/component-design/SKILL.md +109 -0
  205. package/presets/minimal/.claude/skills/einja/component-design/reference/directory-structure.md +117 -0
  206. package/presets/minimal/.claude/skills/einja/component-design/reference/props-patterns.md +159 -0
  207. package/presets/minimal/.claude/skills/einja/component-design/reference/styling-guide.md +200 -0
  208. package/presets/minimal/.claude/skills/einja/conflict-resolver/SKILL.md +190 -0
  209. package/presets/minimal/.claude/skills/einja/frontend-development/SKILL.md +14 -0
  210. package/presets/minimal/.claude/skills/einja/general-context-loader/SKILL.md +254 -0
  211. package/presets/minimal/.claude/skills/einja/output-format/SKILL.md +137 -0
  212. package/presets/minimal/.claude/skills/einja/spec-context-loader/SKILL.md +177 -0
  213. package/presets/minimal/.claude/skills/einja/task-commit/SKILL.md +269 -0
  214. package/presets/minimal/.claude/skills/einja/task-qa/SKILL.md +306 -0
  215. package/presets/minimal/.claude/skills/einja/task-qa/reference/failure-patterns.md +69 -0
  216. package/presets/minimal/.claude/skills/einja/task-qa/reference/troubleshooting.md +65 -0
  217. package/presets/minimal/.claude/skills/einja/task-qa/reference/usage-patterns.md +52 -0
  218. package/presets/minimal/.claude/skills/einja/task-qa/templates/qa-test-template.md +128 -0
  219. package/presets/minimal/preset.yaml +111 -0
  220. package/presets/minimal/symlinks.json +45 -0
  221. package/scaffolds/.mcp.json +45 -0
  222. package/scaffolds/CLAUDE.md.template +318 -0
  223. package/scaffolds/steering/README.md +170 -0
  224. package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +415 -0
  225. package/scaffolds/steering/architecture.md +481 -0
  226. package/scaffolds/steering/branch-strategy.md +362 -0
  227. package/scaffolds/steering/commit-rules.md +217 -0
  228. package/scaffolds/steering/db-schema-design.md +609 -0
  229. package/scaffolds/steering/development/api-development.md +783 -0
  230. package/scaffolds/steering/development/backend-architecture.md +731 -0
  231. package/scaffolds/steering/development/frontend-development.md +1537 -0
  232. package/scaffolds/steering/development/review-guidelines.md +365 -0
  233. package/scaffolds/steering/development/testing-strategy.md +819 -0
  234. package/scaffolds/steering/development-workflow.md +429 -0
  235. package/scaffolds/steering/infrastructure/deployment.md +277 -0
  236. package/scaffolds/steering/infrastructure/environment-variables.md +298 -0
  237. package/scaffolds/steering/product.md +540 -0
  238. package/scaffolds/steering/task-management.md +367 -0
  239. package/templates/README.md +159 -0
  240. package/templates/design-simple.md.template +172 -0
  241. package/templates/design.md.template +327 -0
  242. package/templates/qa-test.md.template +125 -0
  243. package/templates/requirements.md.template +254 -0
@@ -0,0 +1,367 @@
1
+ # タスク管理ガイドライン
2
+
3
+ このドキュメントでは、プロジェクトのタスク管理における階層構造、GitHub Issue管理、用語定義を説明します。
4
+
5
+ ## タスク管理の方法
6
+
7
+ このプロジェクトでは**GitHub Issue**を使用してタスクを管理します。
8
+
9
+ ### 基本構造
10
+
11
+ - **1 spec = 1 GitHub Issue**
12
+ - 各specフォルダ(`docs/specs/issues/issue{issue番号}-{機能名}/`)に対して1つのGitHub Issueを作成
13
+ - requirements.mdとdesign.mdはファイルとして保持
14
+ - タスク一覧のみGitHub Issueで管理
15
+
16
+ ### GitHub Issueの構造
17
+
18
+ Issue本文には以下のセクションを含みます:
19
+
20
+ ```markdown
21
+ ## AS-IS
22
+ <!-- requirements.mdから抽出した現在の状態・問題点 -->
23
+
24
+ ## TO-BE
25
+ <!-- requirements.mdから抽出した実装後の期待する状態 -->
26
+
27
+ ## 対応方針
28
+ <!-- design.mdから抽出した技術的アプローチ、使用ライブラリ、実装方針 -->
29
+
30
+ ## タスク一覧
31
+
32
+ ### Phase 1: [フェーズ名]
33
+
34
+ - [ ] 1.1 [タスクグループ名]
35
+
36
+ - 1.1.1 [タスク名]
37
+ - サブタスク内容
38
+ - **要件**: Story X
39
+ - **依存関係**: なし
40
+ - **完了条件**: [テスト条件]が通ること(AC[番号]を満たす)
41
+ - **対応設計**: design.md「[セクション名]」セクション
42
+ - **シナリオテスト**: なし(基盤構築タスク、UIフロー未実装のため)
43
+
44
+ - 1.1.2 [タスク名]
45
+ - サブタスク内容
46
+ - **要件**: Story X
47
+ - **依存関係**: 1.1.1
48
+ - **完了条件**: [テスト条件]が通ること(AC[番号]を満たす)
49
+ - **対応設計**: design.md「[セクション名]」セクション
50
+ - **シナリオテスト**: シナリオ1 Step 1-3(部分実行)
51
+
52
+ - [ ] 1.2 [タスクグループ名]
53
+
54
+ - 1.2.1 [タスク名]
55
+ - サブタスク内容
56
+ - **要件**: Story X
57
+ - **依存関係**: 1.1
58
+ - **完了条件**: ...
59
+ - **対応設計**: design.md「[セクション名]」セクション
60
+ - **シナリオテスト**: シナリオ2 Step 1-5
61
+
62
+ ### Phase 2: [フェーズ名]
63
+
64
+ - [ ] 2.1 [タスクグループ名]
65
+
66
+ - 2.1.1 [タスク名]
67
+ - サブタスク内容
68
+ - **要件**: Story X
69
+ - **依存関係**: Phase 1完了
70
+ - **完了条件**: ...
71
+ - **対応設計**: design.md「[セクション名]」セクション
72
+ - **シナリオテスト**: シナリオ3 全ステップ
73
+ ```
74
+
75
+ ### タスクグループのステータス管理
76
+
77
+ GitHub Issueのチェックボックスでタスクグループのステータスを管理します:
78
+
79
+ **未着手**:
80
+ ```markdown
81
+ - [ ] 1.1 タスクグループ名
82
+ ```
83
+
84
+ **完了**(チェックボックスをON):
85
+ ```markdown
86
+ - [x] 1.1 タスクグループ名
87
+ ```
88
+
89
+ **注意**: タスクグループの完了時、GitHub Issueのチェックボックス更新はユーザーが明示的に指示した場合のみ行います。`/task-exec`コマンドは自動でIssueを更新しません。
90
+
91
+ ### Issueのライフサイクル
92
+
93
+ 1. **Issue作成**: `/spec-create`コマンドで仕様書作成時に自動生成
94
+ 2. **タスクグループ実行**: `/task-exec #{issue_number} {タスクグループ番号}`でタスクグループを実行
95
+ 3. **タスクグループ完了**: 実装・テスト・レビュー完了後、チェックボックスをON(手動更新)
96
+ 4. **Issue完了**: すべてのタスクグループが完了したらIssueをClose
97
+
98
+ ## タスク階層の用語定義
99
+
100
+ プロジェクトのタスク管理では、以下の4階層を使用します。
101
+
102
+ ### タスク階層一覧表
103
+
104
+ | 階層 | 番号形式 | 粒度・定義 | 成果物 | Issueでの書式 |
105
+ |------|----------|------------|--------|---------------|
106
+ | Phase | 1, 2, 3 | 一連のACを確認できる単位(2-3個、全Phase完了で全AC網羅) | リリース | `### Phase 1: [名前]` |
107
+ | タスクグループ | X.Y | 1つまたは一部のACが確認できる単位(大きめの1PRでもOK) | 1PR・マージ・デプロイ | `- [ ] 1.1 [名前]` |
108
+ | タスク | X.Y.Z | コミット単位(15分〜1時間程度) | 個別コミット | ` - 1.1.1 [名前]` + メタデータ |
109
+ | サブタスク | なし | タスク内の詳細作業(任意) | タスクの一部 | ` - [内容]`(任意) |
110
+
111
+ ### Phase完了確認タスクグループ
112
+
113
+ 各Phaseの最後には、必ず**Phase完了確認**タスクグループを配置します:
114
+
115
+ ```markdown
116
+ ## Phase 1完了確認
117
+
118
+ - [ ] 1.X フェーズ1完了条件確認
119
+
120
+ - 1.X.1 フェーズ1全タスク完了確認
121
+ - タスクグループ1.1〜1.N の全タスク完了確認
122
+ - 全シナリオテストの成功確認
123
+ - コードレビュー完了確認
124
+ - デプロイ可能な状態であることを確認
125
+ - **要件**: Story 1, Story 2(該当する全Story)
126
+ - **依存関係**: 1.N.Z(Phase内の最後のタスク番号)
127
+ - **完了条件**: フェーズ1の全タスクグループが完了し、受け入れ基準**AC1.1〜AC1.N**を満たすことが確認できること
128
+ - **対応設計**: design.md 全セクション
129
+ - **シナリオテスト**: 全シナリオ(リグレッション確認)
130
+ ```
131
+
132
+ **目的**:
133
+ - Phase内の全タスクが完了していることを明示的に確認
134
+ - 次Phaseへの移行条件を完了条件に明記
135
+ - QAチェックポイントとして機能
136
+
137
+ ### 粒度の判断基準
138
+
139
+ | 階層 | ✅ 適切 | ❌ 不適切 |
140
+ |------|---------|----------|
141
+ | **Phase** | 2-3個で全AC網羅、機能的区切りで分割 | 4個以上、細かすぎる分割 |
142
+ | **タスクグループ** | 縦切り(フルスタック)、AC検証可能、1PR単位 | 横切り(画面/レイヤー/クラス単位)、設定1個だけ |
143
+ | **タスク** | 1コミット単位、具体的な作業 | 曖昧な作業、複数日かかる作業 |
144
+
145
+ ### 🔴 ATDDタスクグループ設計原則
146
+
147
+ **タスクグループ = ACを検証可能にする単位**
148
+
149
+ ATDDの本質は「受け入れ基準(AC)を中心にタスクを分解する」こと。
150
+ タスクグループ完了時に、対応するACがデプロイして検証可能な状態になっていなければならない。
151
+
152
+ **原則: 縦切り(フルスタック)で分割、横切り(レイヤー/画面)は❌**
153
+
154
+ ✅ **縦切り**(1機能をフルスタックで):
155
+ - Domain → Infrastructure → UseCase → API → UI を1タスクグループで
156
+ - 完了時にACが検証可能
157
+
158
+ ❌ **横切り**(レイヤー/画面ごと):
159
+ - Domain層の実装 / Infra層の実装 / UseCase実装 / API実装 / UI実装
160
+ - 各層単体では検証不可能
161
+
162
+ ### ❌ アンチパターン(絶対にやってはいけない分割)
163
+
164
+ **パターン1: 画面ごとの分割**
165
+ ```
166
+ ❌ NG例:
167
+ - 3.2 一覧画面の実装
168
+ - 3.3 詳細画面の実装
169
+ - 3.4 新規登録画面の実装
170
+ - 3.5 編集画面の実装
171
+ - 3.6 削除機能の実装
172
+
173
+ ✅ OK例:
174
+ - 2.2 CRUD機能の実装(一覧・詳細・作成・編集・削除)
175
+ ```
176
+
177
+ **パターン2: レイヤーごとの分割**
178
+ ```
179
+ ❌ NG例:
180
+ - 2.1 Domain層の実装(Entity, VO, Repository IF)
181
+ - 2.2 Infrastructure層の実装(Mapper, Repository)
182
+ - 2.3 Application層の実装(UseCase)
183
+ - 2.4 Presentation層の実装(API, UI)
184
+
185
+ ✅ OK例:
186
+ - 2.1 招待・パスワード設定機能
187
+ - Domain〜UIまでフルスタックで実装
188
+ - AC3〜AC5を検証可能
189
+ ```
190
+
191
+ **パターン3: クラスごとの分割**
192
+ ```
193
+ ❌ NG例(これらはタスクグループではなくタスクレベル(X.Y.Z)であるべき):
194
+ - 2.1 User Entityの実装
195
+ - 2.2 Invitation Entityの実装
196
+ - 2.3 HashedPassword VOの実装
197
+ ```
198
+
199
+ ### メタデータの記述(タスク単位に付与)
200
+
201
+ 各タスク(X.Y.Z)には以下のメタデータを**必須**で付与します:
202
+
203
+ ```markdown
204
+ - [ ] 1.1 Server Core構築とDB設定
205
+
206
+ - 1.1.1 packages/server-core初期化とtsconfig設定
207
+ - tsconfig.jsonの設定
208
+ - 依存パッケージのインストール
209
+ - **要件**: Story 1
210
+ - **依存関係**: なし
211
+ - **完了条件**: server-coreパッケージが初期化されること(AC1.1を満たす)
212
+ - **対応設計**: design.md「Server Core構築」セクション
213
+ - **シナリオテスト**: なし(基盤構築タスク、UIフロー未実装のため)
214
+
215
+ - 1.1.2 DB接続設定とマイグレーション
216
+ - Prismaスキーマの作成
217
+ - マイグレーションの実行
218
+ - **要件**: Story 1
219
+ - **依存関係**: 1.1.1
220
+ - **完了条件**: DBに接続できること(AC1.2〜AC1.3を満たす)
221
+ - **対応設計**: design.md「DB設計」セクション
222
+ - **シナリオテスト**: なし(DB設定のみ、UIフロー未実装のため)
223
+ ```
224
+
225
+ **メタデータ項目(全て必須)**:
226
+ - **要件**: 対応するStory番号
227
+ - **依存関係**: なし / X.Y.Z / Phase X完了
228
+ - **完了条件**: AC番号を含む完了条件
229
+ - **対応設計**: design.mdの参照セクション
230
+ - **シナリオテスト**: 該当タスク完了時に実行するシナリオ(該当なければ「なし」と理由を明記)
231
+
232
+ **注意**: サブタスクは**任意**で記載。詳細はrequirements.md/design.mdを参照。
233
+
234
+ ### 依存関係の記述形式(重要)
235
+
236
+ **🔴 `pnpm task:loop`スクリプトが認識できる形式のみ使用すること**
237
+
238
+ | 記述形式 | 意味 | 例 |
239
+ |---------|------|-----|
240
+ | `なし` | 依存関係なし | `**依存関係**: なし` |
241
+ | `X.Y` | タスクグループ依存 | `**依存関係**: 1.1` |
242
+ | `X.Y, X.Y` | 複数タスクグループ依存 | `**依存関係**: 1.2, 1.3` |
243
+ | `Phase X完了` | Phase依存 | `**依存関係**: Phase 1完了` |
244
+
245
+ **❌ 使用禁止の形式:**
246
+ - `1.1完了` → スクリプトが認識できない
247
+ - `タスク1.1` → スクリプトが認識できない
248
+ - `1.1、1.2` → 全角カンマは避ける(半角カンマ推奨)
249
+
250
+ ## タスク管理のワークフロー
251
+
252
+ > **詳細なフロー(仕様書作成からレビュー・マージまで)は[開発ワークフロー](development-workflow.md)を参照してください。**
253
+
254
+ ### 1. タスクグループを選定・実行
255
+ - `/task-exec #{issue_number} {タスクグループ番号}`コマンドを実行
256
+ - タスクグループ番号は必須引数(例: `1.1`, `2.3`)
257
+ - executer → reviewer → qa の3段階で実行
258
+
259
+ ### 2. タスクを順次実装し、コミット
260
+ - 各タスク(1.1.1, 1.1.2...)完了ごとにコミット
261
+ - コミットメッセージにタスク内容を記載
262
+ - 例: `feat(server-core): packages/server-core初期化とtsconfig設定`
263
+ - コミットルールは[コミットルール](commit-rules.md)を参照
264
+
265
+ ### 3. タスクグループ完了時にPR作成
266
+ - 全タスクが完了したらPR作成
267
+ - PR単位でレビュー・デプロイ・QA実施
268
+ - PRタイトル: `[タスクグループ番号] タスクグループ名`(例: `[1.1] Server Core構築とDB設定`)
269
+
270
+ ### 4. Issue更新(手動)
271
+ - タスクグループ完了後、GitHub Issueのチェックボックスを手動でON
272
+ - または、ユーザーが明示的に指示した場合のみ自動更新
273
+ - すべてのタスクグループが完了したら、IssueをClose
274
+
275
+ ## Vibe-Kanbanタスク作成時の必須情報
276
+
277
+ ### タスクタイトル形式
278
+ ```
279
+ [タスクグループ番号] タスクグループ名
280
+ ```
281
+
282
+ **例**: `[1.1] Server Core構築とDB設定`
283
+
284
+ ### タスク説明形式
285
+
286
+ ```markdown
287
+ ## GitHub Issue
288
+ #{issue_number}
289
+
290
+ ## タスクグループ番号
291
+ <タスクグループ番号>
292
+
293
+ ## 概要
294
+ <タスクグループの概要>
295
+
296
+ ## タスク
297
+ <GitHub Issueから抽出したタスク一覧>
298
+
299
+ ## 依存関係
300
+ <依存するタスクグループ番号>
301
+
302
+ ## 完了条件
303
+ <受け入れ基準を含む完了条件>
304
+
305
+ ## 対応設計
306
+ <design.mdの参照箇所>
307
+ ```
308
+
309
+ **例**:
310
+ ```markdown
311
+ ## GitHub Issue
312
+ #17
313
+
314
+ ## タスクグループ番号
315
+ 1.1
316
+
317
+ ## 概要
318
+ packages/server-coreの初期化からDB接続設定まで、Server Coreの基盤構築を完了
319
+
320
+ ## タスク
321
+ - 1.1.1 packages/server-core初期化とtsconfig設定
322
+ - 1.1.2 DB接続設定とマイグレーション
323
+
324
+ ## 依存関係
325
+ なし
326
+
327
+ ## 完了条件
328
+ server-coreパッケージが動作し、DBに接続できること(AC1.1を満たす)
329
+
330
+ ## 対応設計
331
+ design.md「Server Core構築」セクション
332
+ ```
333
+
334
+ ## コマンドリファレンス
335
+
336
+ ### タスク管理関連コマンド
337
+
338
+ **仕様書作成とIssue生成**:
339
+ ```bash
340
+ /spec-create [タスク内容の説明]
341
+ ```
342
+ - requirements.md、design.mdを作成し、GitHub Issueを自動生成
343
+
344
+ **タスクグループ実行**:
345
+ ```bash
346
+ /task-exec #{issue_number} {タスクグループ番号}
347
+ ```
348
+ - Issue番号とタスクグループ番号は両方必須
349
+ - executer → reviewer → qa の3段階で実行
350
+ - QA合格後は追加指示待ち状態に入る
351
+ - GitHub Issue更新はユーザーの明示的指示時のみ
352
+
353
+ **自動ループ実行**:
354
+ ```bash
355
+ pnpm task:loop <issue番号>
356
+ pnpm task:loop <issue番号> --max-group <番号> # 指定番号まで実行
357
+ pnpm task:loop <issue番号> --branch <ブランチ> # ベースブランチ指定
358
+ ```
359
+ - 着手可能なタスクグループを並列でVibe-Kanbanに登録
360
+ - Done状態を監視して次のタスクを自動開始
361
+ - **前提**: `npx @einja/cli init` 実行済み、Claude Code インストール済み
362
+
363
+ **仕様書からドキュメント更新**:
364
+ ```bash
365
+ /update-docs-by-task-specs [タスク仕様書ディレクトリパス]
366
+ ```
367
+ - タスク仕様書の内容をfeature仕様書とsteering仕様書に反映
@@ -0,0 +1,159 @@
1
+ # ドキュメントテンプレート
2
+
3
+ このディレクトリには、新規タスク作成時に使用する公式テンプレートが格納されています。
4
+
5
+ ## 使用方法
6
+
7
+ ### 新規タスクの要件定義書を作成する場合
8
+
9
+ 1. `requirements.md.template` をコピー
10
+ 2. `docs/specs/issues/[issue番号]-[機能名]/requirements.md` として保存
11
+ 3. テンプレート内のコメントに従って内容を記入
12
+ 4. **「受け入れ基準(Acceptance Criteria)」セクションは必ず記入すること**
13
+
14
+ ### 新規タスクの設計書を作成する場合
15
+
16
+ 1. `design.md.template` をコピー
17
+ 2. `docs/specs/issues/[issue番号]-[機能名]/design.md` として保存
18
+ 3. テンプレート内のコメントに従って内容を記入
19
+
20
+ ## 重要事項
21
+
22
+ ### 受け入れ基準(Acceptance Criteria)について
23
+
24
+ - **受け入れ基準(Acceptance Criteria)セクションは必須です**
25
+ - QAエージェント(task-qa)はこのセクションを参照してテストシナリオを作成します
26
+ - セクションの構造を変更しないでください
27
+ - Given/When/Then形式を使用してください
28
+
29
+ ### Given/When/Then形式の書き方
30
+
31
+ 受け入れ基準は以下の形式で記載してください:
32
+
33
+ ```markdown
34
+ - [ ] Given: [前提条件]
35
+ When: [実行する操作]
36
+ Then: [期待される結果]
37
+ ```
38
+
39
+ **良い例**:
40
+ ```markdown
41
+ - [ ] Given: ログインページにアクセスした
42
+ When: 有効なメールアドレスを入力して送信
43
+ Then: 成功メッセージが表示され、メールが送信される
44
+ ```
45
+
46
+ **悪い例**:
47
+ ```markdown
48
+ - [ ] ログインフォームが実装されている
49
+ - [ ] メール送信機能が動作すること
50
+ ```
51
+
52
+ ### 受け入れ基準作成のガイドライン
53
+
54
+ 詳細は `docs/einja/steering/acceptance-criteria-and-qa-guide.md` を参照してください。
55
+
56
+ #### Do(推奨)
57
+ - 振る舞い・入力・観測可能な結果をセットで書く(Given/When/Then)
58
+ - ビジネス価値やユーザー影響が分かる文脈を添える
59
+ - 正常系に加え、代表的な異常・境界ケースを列挙する
60
+ - 観測手段(APIレスポンス、イベント、DB状態など)を明示する
61
+ - 実装と無関係な用語で書き、内部構造への言及は避ける
62
+
63
+ #### Don't(非推奨)
64
+ - 「ファイルが存在する」「〇〇を返すクラスがある」など構造・命名のみを確認させる
65
+ - 単一の肯定文で完結させて振る舞いの条件や観測結果を書かない
66
+ - テストレベルを曖昧にし、誰がどの観点で検証するか不明瞭にする
67
+ - 期待結果を「問題ないこと」「成功すること」で済ませる
68
+ - 実装手段(特定フレームワーク、DBテーブル構造など)を強制する
69
+
70
+ ## テンプレート一覧
71
+
72
+ ### requirements.md.template
73
+
74
+ 要件定義書のテンプレートです。
75
+
76
+ **重要なセクション**:
77
+ - **受け入れ基準(Acceptance Criteria)**: QAエージェント(task-qa)がこのセクションを参照してテストシナリオを作成します
78
+ - **AC番号体系**: AC1.1, AC1.2 のように、ストーリー番号.連番 で一意に識別
79
+ - **検証レベル**: Unit/Integration/E2E を必ず指定
80
+ - **検証者**: task-executer または task-qa を明記
81
+
82
+ **使い方**:
83
+ 1. ストーリーごとに受け入れ基準を記載
84
+ 2. 各 AC に番号・検証レベル・検証者を付与
85
+ 3. Given/When/Then 形式で振る舞いを明確に記述
86
+
87
+ **含まれるセクション**:
88
+ - 概要
89
+ - AS-IS/TO-BE
90
+ - ビジネス価値
91
+ - スコープ
92
+ - 画面要件(該当する場合)
93
+ - ユーザーストーリー
94
+ - **受け入れ基準(必須)**
95
+ - 詳細なビジネス要件
96
+ - 非機能要件
97
+ - 技術的制約
98
+ - 依存関係
99
+ - リスクと対策
100
+ - 成功指標
101
+
102
+ ### design.md.template
103
+
104
+ 設計書のテンプレートです。以下のセクションを含みます:
105
+
106
+ - システムアーキテクチャ
107
+ - データモデル
108
+ - API仕様
109
+ - フロントエンドコンポーネント構造
110
+ - 技術選定
111
+ - セキュリティ考慮事項
112
+ - パフォーマンス考慮事項
113
+ - テスト戦略
114
+ - マイグレーション戦略(該当する場合)
115
+
116
+ ### design-simple.md.template
117
+
118
+ 設計書の簡易版テンプレートです。シンプルな機能向けに必須セクションのみを含みます。
119
+
120
+ **用途**:
121
+ - 小規模・中規模の機能追加
122
+ - 既存アーキテクチャに準拠する機能
123
+ - 複雑なパフォーマンス最適化が不要な機能
124
+
125
+ **含まれるセクション**:
126
+ - システムアーキテクチャ
127
+ - データモデル
128
+ - API仕様
129
+ - セキュリティ考慮事項
130
+ - テスト戦略
131
+
132
+ **使い分けの基準**:
133
+ - **design-simple.md.template を使用**: 既存パターンに従う標準的な CRUD 機能、シンプルなビジネスロジック
134
+ - **design.md.template を使用**: 新しいアーキテクチャパターンの導入、複雑な状態管理、大規模なパフォーマンス最適化が必要な機能
135
+
136
+ ### qa-test.md.template
137
+
138
+ QA テスト結果記録のテンプレートです。
139
+
140
+ **用途**:
141
+ - task-qa が Integration/E2E テストの結果を記録
142
+ - テストシナリオと実施結果を構造化して管理
143
+
144
+ **構造**:
145
+ - 受け入れ条件(requirements.md から自動抽出)
146
+ - テストシナリオ(Integration/E2E 別)
147
+ - 実施結果とステータス
148
+ - 失敗時の原因分類と推奨アクション
149
+
150
+ **保存場所**: `docs/specs/tasks/[task-dir]/qa-tests/phaseN/X-Y.md`
151
+
152
+ ## 関連ドキュメント
153
+
154
+ - [タスク管理ガイド](../docs/einja/steering/task-management.md)
155
+ - [受け入れ基準とQAガイド](../docs/einja/steering/acceptance-criteria-and-qa-guide.md)
156
+
157
+ ## サポート
158
+
159
+ テンプレートの使用方法や記載内容について不明な点がある場合は、既存の実装例を参照してください。
@@ -0,0 +1,172 @@
1
+ # [機能名] 設計書(簡易版)
2
+
3
+ <!-- このテンプレートはシンプルな機能の設計書作成時に使用してください -->
4
+ <!-- 複雑な機能の場合は design.md.template を使用してください -->
5
+
6
+ ## システムアーキテクチャ
7
+
8
+ ### システム構成図
9
+
10
+ ```mermaid
11
+ graph TD
12
+ A[コンポーネントA] --> B[コンポーネントB]
13
+ B --> C[コンポーネントC]
14
+ ```
15
+
16
+ ### データフロー
17
+
18
+ ```mermaid
19
+ sequenceDiagram
20
+ participant Client
21
+ participant Server
22
+ participant Database
23
+
24
+ Client->>Server: リクエスト
25
+ Server->>Database: データ取得
26
+ Database->>Server: データ返却
27
+ Server->>Client: レスポンス
28
+ ```
29
+
30
+ ## データモデル
31
+
32
+ ### Prismaスキーマ
33
+
34
+ ```prisma
35
+ // 主要なデータモデルを記載
36
+
37
+ model User {
38
+ id String @id @default(cuid())
39
+ name String
40
+ email String @unique
41
+ createdAt DateTime @default(now())
42
+ updatedAt DateTime @updatedAt
43
+ }
44
+ ```
45
+
46
+ ### データモデル説明
47
+ <!-- 各モデルの役割と主要フィールドの説明を記載 -->
48
+
49
+ ## API仕様
50
+
51
+ ### エンドポイント一覧
52
+
53
+ | メソッド | エンドポイント | 説明 | 認証 |
54
+ |---------|--------------|------|------|
55
+ | POST | /api/resource | リソース作成 | 必要 |
56
+ | GET | /api/resource/:id | リソース取得 | 必要 |
57
+ | PUT | /api/resource/:id | リソース更新 | 必要 |
58
+ | DELETE | /api/resource/:id | リソース削除 | 必要 |
59
+
60
+ ### API詳細
61
+
62
+ #### POST /api/resource
63
+
64
+ **リクエスト**:
65
+ ```typescript
66
+ {
67
+ "field1": "value1",
68
+ "field2": "value2"
69
+ }
70
+ ```
71
+
72
+ **レスポンス(成功時)**:
73
+ ```typescript
74
+ {
75
+ "success": true,
76
+ "data": {
77
+ "id": "resource_id",
78
+ "field1": "value1",
79
+ "field2": "value2",
80
+ "createdAt": "2024-01-01T00:00:00Z"
81
+ }
82
+ }
83
+ ```
84
+
85
+ **レスポンス(エラー時)**:
86
+ ```typescript
87
+ {
88
+ "success": false,
89
+ "error": {
90
+ "code": "ERROR_CODE",
91
+ "message": "エラーメッセージ"
92
+ }
93
+ }
94
+ ```
95
+
96
+ ### エラーハンドリング
97
+
98
+ | HTTPステータス | エラーコード | 説明 | 対処方法 |
99
+ |--------------|------------|------|---------|
100
+ | 400 | INVALID_REQUEST | リクエストが不正 | リクエストパラメータを確認 |
101
+ | 401 | UNAUTHORIZED | 認証エラー | 認証情報を確認 |
102
+ | 403 | FORBIDDEN | アクセス権限なし | 権限を確認 |
103
+ | 404 | NOT_FOUND | リソースが見つからない | リソースの存在を確認 |
104
+ | 500 | INTERNAL_ERROR | サーバーエラー | サポートに連絡 |
105
+
106
+ ## セキュリティ考慮事項
107
+
108
+ ### 認証・認可
109
+
110
+ **認証方式**: <!-- JWT / Session / その他 -->
111
+
112
+ **認可モデル**: <!-- RBAC / ABAC / その他 -->
113
+
114
+ **実装方針**:
115
+ - 認証フロー: <!-- 認証フローを記載 -->
116
+ - 権限チェック: <!-- 権限チェック方法を記載 -->
117
+
118
+ ### データ保護
119
+
120
+ **暗号化**:
121
+ - 通信: TLS 1.3
122
+ - 保存データ: <!-- 必要に応じて暗号化方法を記載 -->
123
+ - パスワード: bcrypt(コスト係数: 12)
124
+
125
+ **入力検証**:
126
+ - クライアントサイド: <!-- 検証方法を記載 -->
127
+ - サーバーサイド: <!-- 検証方法を記載 -->
128
+
129
+ ### 脆弱性対策
130
+
131
+ | 脆弱性 | 対策 |
132
+ |--------|------|
133
+ | XSS | エスケープ処理、Content Security Policy |
134
+ | CSRF | トークン検証 |
135
+ | SQLインジェクション | Prismaによるパラメータ化クエリ |
136
+ | 機密情報漏洩 | 環境変数による管理 |
137
+
138
+ ## テスト戦略
139
+
140
+ ### テストレベル
141
+
142
+ | レベル | 対象 | ツール | カバレッジ目標 |
143
+ |--------|------|--------|--------------|
144
+ | Unit | ロジック、ユーティリティ | Vitest | 80%以上 |
145
+ | Integration | API、データベース | Vitest | 70%以上 |
146
+ | E2E | ユーザーシナリオ | Playwright | クリティカルパス |
147
+
148
+ ### テストケース設計
149
+
150
+ **単体テスト**:
151
+ - 正常系
152
+ - 異常系
153
+ - 境界値
154
+
155
+ **統合テスト**:
156
+ - APIエンドポイント
157
+ - データベース操作
158
+ - 認証・認可
159
+
160
+ **E2Eテスト**:
161
+ - クリティカルパス(requirements.mdの受け入れ基準に基づく)
162
+ - ユーザーシナリオ
163
+
164
+ ## 参考資料
165
+
166
+ ### 関連ドキュメント
167
+ - 要件定義書: `requirements.md`
168
+ - QAテスト: `qa-tests/`
169
+
170
+ ### 外部リソース
171
+ - [参考ドキュメント1のタイトル](URL)
172
+ - [参考ドキュメント2のタイトル](URL)