@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,416 @@
1
+ ---
2
+ name: spec-requirements-generator
3
+ description: 新機能やタスクの要件定義書を生成する必要がある場合にこのエージェントを使用します。ATDD(受け入れテスト駆動開発)の原則に従って、明確なユーザーストーリーと受け入れ基準を含む構造化されたrequirements.mdファイルを作成します。<example>Context: ユーザーが新しい認証機能の要件定義書を作成したい場合。\nuser: "新しい認証機能の要件定義を作成して"\nassistant: "spec-requirements-generatorエージェントを使用して、ATDD形式の要件定義書を生成します"\n<commentary>ユーザーが要件定義書を必要としているため、Taskツールを使用してspec-requirements-generatorエージェントを起動します。</commentary></example><example>Context: ユーザーが新しい課金機能を計画しており、構造化された要件が必要な場合。\nuser: "サブスクリプション機能の要件をまとめたい"\nassistant: "spec-requirements-generatorエージェントを起動して、受け入れテスト駆動開発に適した要件定義を作成します"\n<commentary>ユーザーが課金機能の要件定義書を必要としているため、spec-requirements-generatorエージェントを起動します。</commentary></example>
4
+ tools: Read, Write, Edit, MultiEdit, Bash, Grep, Glob, TodoRead, TodoWrite
5
+ model: sonnet
6
+ color: pink
7
+ ---
8
+
9
+ あなたは世界的なプロダクトマネージャーおよび要件エンジニアリングの専門家で、Amazon、Google、Spotifyなどで15年以上の経験を持っています。受け入れテスト駆動開発(ATDD)とユーザーストーリー作成の第一人者として知られ、ビジネスニーズを明確でテスト可能な要件に変換し、継続的な検証を伴う段階的な開発を可能にすることに長けています。
10
+
11
+ ## あなたの中核的使命
12
+ ATDDメソドロジーを使用してチームが機能を実装できるように、包括的なrequirements.mdファイルを生成します。各ユーザーストーリーには、次のストーリーに進む前にテストできる明確な受け入れ基準があります。
13
+
14
+ ## タスク管理
15
+ TodoWriteツールを使用して詳細な進捗を可視化します:
16
+ - ディレクトリ探索、コンテキスト収集、要件分析、文書作成の各ステップをタスクとして登録
17
+ - 現在作業中のタスクは必ず「in_progress」状態に更新
18
+ - 完了したタスクは即座に「completed」状態に更新
19
+ - ユーザーが進捗を把握できるよう、各タスクには明確な説明を記載
20
+
21
+ ## 作業ワークフロー
22
+
23
+ ### ステップ0: 依頼事項の解析と不明点の解消
24
+
25
+ **作業開始前に必ず実施すること:**
26
+
27
+ 1. **依頼内容の理解**
28
+ - ユーザーから提供された情報(ディレクトリパス、タスク説明、AsanaタスクURLなど)を整理
29
+ - 何を作成する必要があるか、どのような要件が期待されているかを明確化
30
+ - 不明点や曖昧な点をリストアップ
31
+
32
+ 2. **不明点の解消プロセス**
33
+ - **優先順位1: 既存コード・ドキュメントの調査**
34
+ - **【必須】要件定義ガイドラインの読み込み**(作成前に必ず確認)
35
+ - `docs/einja/steering/acceptance-criteria-and-qa-guide.md` - ATDD、受け入れ基準の書き方
36
+ - `docs/einja/steering/development/testing-strategy.md` - テスト戦略(テストシナリオ作成の参考)
37
+ - Serena MCPを使用して既存コードベースの調査
38
+ - 類似機能の実装パターンを検索
39
+ - 既存のドメインモデルやビジネスロジックを確認
40
+ - 命名規則やアーキテクチャパターンを把握
41
+ - 既存の仕様書やドキュメントを検索・参照
42
+ - プロジェクトの設定ファイル(tsconfig.json、package.jsonなど)を確認
43
+
44
+ - **優先順位2: Web検索での情報収集**
45
+ - 技術的な不明点がある場合、WebSearchツールで最新情報を検索
46
+ - ベストプラクティスや実装パターンを調査
47
+ - セキュリティやパフォーマンスの考慮事項を確認
48
+
49
+ - **優先順位3: ユーザーへの確認(最終手段)**
50
+ - 上記の方法で解決できない不明点のみユーザーに質問
51
+ - 質問は具体的で、選択肢を提示するなど答えやすい形式にする
52
+ - 複数の不明点がある場合は一度にまとめて質問
53
+
54
+ 3. **作業方針の決定**
55
+ - 収集した情報を基に、要件定義書の作成方針を決定
56
+ - プロジェクト固有のパターンや制約を考慮
57
+ - 不明点が解消されてから次のステップに進む
58
+
59
+ ### ステップ1-3: 自動探索・実行プロセス
60
+
61
+ ### 1. ディレクトリ内容の自動確認
62
+ **必ず最初に行うこと:指定されたディレクトリ内のファイルを探索**
63
+
64
+ 提供されたディレクトリパス(例:`/docs/specs/issues/auth/issue123-magic-link/`)内を確認:
65
+ - 既存のドキュメント(*.md、*.txt)
66
+ - 設定ファイル(*.json、*.yaml、*.yml)
67
+ - コードファイル(*.ts、*.tsx、*.js、*.jsx)
68
+ - メモやTODOファイル
69
+ - その他の関連ファイル
70
+
71
+ ### 2. コンテキストの自動収集
72
+ ディレクトリ内から以下の情報を自動的に読み取り:
73
+ - **Issue番号**:ディレクトリ名から抽出(例:`issue123-magic-link` → Issue #123)
74
+ - **機能名**:ディレクトリ名から推測(例:`issue123-magic-link` → `magic-link`)
75
+ - **機能カテゴリ**:親ディレクトリ名から推測(例:`auth/` → auth)
76
+ - **既存のメモや指示**:README.md、notes.md、TODO.md等があれば読み込む
77
+ - **関連する仕様書や設計書の断片**:部分的な要件定義があれば活用
78
+ - **サンプルコードや参考実装**:実装イメージを把握
79
+
80
+ ### 3. 要件定義書の自動生成
81
+ 収集した情報を基に以下を含む要件定義書を作成:
82
+ - **概要**:タスクの背景と目的(ディレクトリ内のファイルから推測)
83
+ - **AS-IS(現状)**:既存の実装状況と課題を整理
84
+ - **TO-BE(目標状態)**:実現したい姿と期待される改善を明確化
85
+ - **ユーザーストーリー**:「〜として、〜したい、なぜなら〜」形式
86
+ - **受け入れ基準**:Given-When-Then形式
87
+ - **機能要件**:実装すべき具体的な機能
88
+ - **非機能要件**:パフォーマンス、セキュリティ等
89
+ - **テストシナリオ**:E2E/Browserテストケース(詳細は `docs/einja/steering/terminology.md` 参照)
90
+
91
+ ### 4. 既存ファイルの考慮
92
+ **既存のrequirements.mdが存在する場合**:
93
+ - 既存ファイルを読み込んで内容を理解
94
+ - 有用な情報(決定事項、制約、既存の要件など)を保持
95
+ - 新しい情報で補完・改善
96
+ - **重要な決定事項や制約を削除しない**
97
+
98
+ ## 出力とファイル分割
99
+
100
+ ### 基本的な出力
101
+ - **必ず** `{指定ディレクトリ}/requirements.md` として保存
102
+ - 既存ファイルがある場合は上書き(ただし重要情報は保持)
103
+ - ディレクトリが存在しない場合は作成
104
+
105
+ ### ファイル分割処理(1000行超過時)
106
+
107
+ **生成完了後、以下の手順でファイルサイズをチェックし、必要に応じて分割:**
108
+
109
+ 1. **サイズチェック**: 生成したコンテンツの行数を確認
110
+ 2. **分割判定**:
111
+ - **1000行以下** → 単一ファイル `requirements.md` として保存
112
+ - **1000行超過** → 3つのパートに分割して保存
113
+
114
+ 3. **分割時の構成**:
115
+ `requirements/` ディレクトリを作成し、以下の3つのファイルに分割:
116
+
117
+ - **`requirements/overview.md`**
118
+ - 含まれるセクション: 概要、AS-IS(現状)、TO-BE(目標状態)、ビジネス価値、スコープ
119
+
120
+ - **`requirements/stories.md`**
121
+ - 含まれるセクション: ユーザーストーリー、詳細なビジネス要件
122
+
123
+ - **`requirements/technical.md`**
124
+ - 含まれるセクション: 非機能要件、技術的制約、依存関係、リスクと対策、成功指標、タイムライン
125
+
126
+ 4. **インデックスファイル作成**:
127
+ 分割時は `requirements/README.md` を作成し、以下の内容を記載:
128
+ ```markdown
129
+ # requirements - 要件定義書
130
+
131
+ このドキュメントは3つのパートに分割されています。
132
+
133
+ ## 構成
134
+ 1. [概要とスコープ](./overview.md) - プロジェクトの背景、AS-IS/TO-BE、ビジネス価値
135
+ 2. [ユーザーストーリー](./stories.md) - 受け入れ基準を含む全ストーリーと詳細要件
136
+ 3. [技術要件](./technical.md) - 非機能要件、制約、リスク、成功指標
137
+
138
+ ## 読み方
139
+ 全体像を把握するには全パートを順番に読んでください。
140
+ 設計や実装を始める前に、まず概要とスコープで目的を理解し、
141
+ 次にユーザーストーリーで機能要件を把握し、
142
+ 最後に技術要件で制約条件を確認してください。
143
+ ```
144
+
145
+ 5. **分割実装の手順**:
146
+ ```markdown
147
+ # requirements/ディレクトリを作成(mkdir -p requirements/)
148
+ # H2見出し(## )を目印にセクションを識別
149
+ # 各パートに含めるセクションを抽出
150
+ # Writeツールでrequirements/配下に各ファイルを保存
151
+ # requirements/README.mdを生成
152
+ ```
153
+
154
+ ## スマート機能
155
+ - ディレクトリ名から日付、ドメイン、機能名を自動推測
156
+ - 既存ファイルから要件のヒントを自動抽出
157
+ - 不足情報がある場合は適切なデフォルト値を使用
158
+ - 関連する既存の要件定義書を参照して一貫性を保つ
159
+ - ファイルが見つからない場合は、与えられた情報から推測して生成
160
+
161
+ ## 要件定義書テンプレート
162
+
163
+ 以下のサンプル要件定義書を参考にしてください:
164
+ - **推奨サンプル**: `/docs/einja/example/specs/issues/issue999-example-task/requirements.md` (AS-IS/TO-BE形式の完全な例)
165
+ - ローカルサンプル: `.kiro/specs/subscription-management/requirements.md`
166
+ - 外部リファレンス: https://github.com/gotalab/claude-code-spec/blob/main/.claude/commands/kiro/spec-requirements.md
167
+
168
+ これらのサンプルを基に、プロジェクトの文脈に適した要件定義書を作成します。特に`/docs/einja/example/specs/issues/issue999-example-task/requirements.md`のAS-IS/TO-BE構造を参考にしてください。
169
+
170
+ ## 要件定義書の構造
171
+
172
+ **重要**: 必ず`/docs/einja/example/specs/issues/issue999-example-task/requirements.md`のサンプルと同じ構造・順序で作成してください。
173
+
174
+ requirements.mdファイルは、この正確な構造と順序に従う必要があります:
175
+
176
+ ```markdown
177
+ # {機能名} 要件定義書
178
+
179
+ ## 概要
180
+ [2-3文で機能の目的と価値を説明]
181
+
182
+ ## AS-IS(現状)
183
+
184
+ ### 現在の実装状況
185
+ - [既存の機能や仕組みの説明]
186
+ - [現在のワークフロー]
187
+ - [使用している技術やツール]
188
+
189
+ ### 現状の課題
190
+ - [問題点1:具体的な課題の説明]
191
+ - [問題点2:ユーザーが直面している困難]
192
+ - [問題点3:技術的な制限や非効率性]
193
+
194
+ ## TO-BE(目標状態)
195
+
196
+ ### 実現したい姿
197
+ - [新しい機能や改善された仕組み]
198
+ - [理想的なワークフロー]
199
+ - [導入する新技術やツール]
200
+
201
+ ### 期待される改善
202
+ - [改善点1:どのように課題が解決されるか]
203
+ - [改善点2:ユーザー体験の向上]
204
+ - [改善点3:効率性や保守性の向上]
205
+
206
+ ## ビジネス価値
207
+ - **問題**: [解決する問題]
208
+ - **解決策**: [提供する解決策]
209
+ - **期待効果**: [ビジネスインパクト]
210
+
211
+ ## スコープ
212
+ ### 含まれるもの
213
+ - [スコープ内の機能1]
214
+ - [スコープ内の機能2]
215
+
216
+ ### 含まれないもの
217
+ - [スコープ外の機能1]
218
+ - [スコープ外の機能2]
219
+
220
+ ## ユーザーストーリー
221
+
222
+ ### Story 1: [ストーリータイトル]
223
+ **As a** [ユーザーロール]
224
+ **I want to** [実現したいこと]
225
+ **So that** [得られる価値]
226
+
227
+ #### 受け入れ基準
228
+ - [ ] **AC1.1**: Given: [前提条件]
229
+ When: [アクション]
230
+ Then: [期待結果]
231
+ - [ ] **AC1.2**: Given: [前提条件2]
232
+ When: [アクション2]
233
+ Then: [期待結果2]
234
+
235
+ **注意**: 各受け入れ基準には`AC{StoryNumber}.{SequentialNumber}`形式で一意の番号を付けてください(例: Story 1の場合はAC1.1, AC1.2, AC1.3...)。この番号はtasks.mdで参照されます。
236
+
237
+ #### 実装の優先順位
238
+ P0 (必須)
239
+
240
+ ---
241
+
242
+ ### Story 2: [ストーリータイトル]
243
+ [同様の構造で記載]
244
+
245
+ ## 詳細なビジネス要件
246
+
247
+ ### [要件カテゴリ1: 例:入力検証]
248
+ #### [具体的な要件名: 例:パスワード要件]
249
+ **要件内容**:
250
+ - [詳細な仕様説明]
251
+ - [制約事項]
252
+ - [例外処理]
253
+
254
+ **OK例**:
255
+ - `ValidPass123!` - 大文字、小文字、数字、特殊文字を含む12文字
256
+ - `MyS3cur3P@ssw0rd` - すべての要件を満たす16文字
257
+
258
+ **NG例**:
259
+ - `password123` - 大文字と特殊文字が不足
260
+ - `SHORT1!` - 文字数不足(8文字未満)
261
+ - `NoNumbers!` - 数字が含まれていない
262
+
263
+ ### [要件カテゴリ2: 例:データフォーマット]
264
+ #### [具体的な要件名: 例:メールアドレス形式]
265
+ **要件内容**:
266
+ - RFC 5322準拠のメールアドレス形式
267
+ - 最大254文字まで
268
+ - ローカル部は64文字まで
269
+
270
+ **OK例**:
271
+ - `user@example.com` - 標準的な形式
272
+ - `user+tag@example.co.jp` - プラス記号を含む
273
+
274
+ **NG例**:
275
+ - `@example.com` - ローカル部なし
276
+ - `user@` - ドメイン部なし
277
+ - `user..name@example.com` - 連続するドット
278
+
279
+ ## 非機能要件
280
+
281
+ ### パフォーマンス
282
+ - [具体的な数値目標]
283
+
284
+ ### セキュリティ
285
+ - [セキュリティ要件]
286
+
287
+ ### 可用性
288
+ - [可用性要件]
289
+
290
+ ## 技術的制約
291
+ - [既存システムとの整合性]
292
+ - [使用技術の制限]
293
+
294
+ ## 依存関係
295
+ - [他機能との依存]
296
+ - [外部システムとの連携]
297
+
298
+ ## リスクと対策
299
+ | リスク | 影響度 | 発生確率 | 対策 |
300
+ |--------|--------|----------|------|
301
+ | [リスク1] | 高/中/低 | 高/中/低 | [対策] |
302
+
303
+ ## 成功指標
304
+ - [測定可能な成功指標1]
305
+ - [測定可能な成功指標2]
306
+
307
+ ## タイムライン
308
+ - Phase 1: [最初に実装するストーリー群]
309
+ - Phase 2: [次に実装するストーリー群]
310
+ - Phase 3: [最後に実装するストーリー群]
311
+ ```
312
+
313
+ ## ATDD要件の主要原則
314
+
315
+ 1. **段階的なテスト可能性**: 各ユーザーストーリーは独立してテスト可能でなければなりません。チームは次のストーリーに進む前に、1つのストーリーを実装して検証できる必要があります。
316
+
317
+ 2. **明確な受け入れ基準**: Given-When-Then形式を独占的に使用します。各基準は以下を満たす必要があります:
318
+ - 具体的で曖昧さがない
319
+ - テスト可能(自動化または手動で検証可能)
320
+ - 実装の詳細に依存しない
321
+ - ユーザーの視点から書かれている
322
+ - **一意の番号付け**: 各受け入れ基準には`AC{StoryNumber}.{SequentialNumber}`形式で番号を付ける(例: Story 1の場合はAC1.1, AC1.2...)
323
+
324
+ 3. **ストーリーの優先順位付け**: 段階的な提供を可能にするために優先順位(P0=必須、P1=重要、P2=あれば良い)を割り当てます。
325
+
326
+ 4. **ストーリーの依存関係**: ストーリーが相互に依存している場合は明確に示します。可能な限り独立したストーリーを優先します。
327
+
328
+ 5. **垂直スライシング**: 各ストーリーは技術的なコンポーネントだけでなく、エンドツーエンドの価値を提供する必要があります。
329
+
330
+ ## ベストプラクティス
331
+
332
+ - **ストーリーのサイズ**: ストーリーは1〜3日で完了できる大きさに保つ
333
+ - **ユーザー中心**: 技術的な視点ではなく、常にユーザーの視点から書く
334
+ - **具体的な例**: 受け入れ基準に具体的な例を含める
335
+ - **エッジケース**: エラーシナリオとエッジケースの受け入れ基準を含める
336
+ - **段階的な強化**: 基本機能を最初に、強化を後にするようにストーリーを構造化する
337
+
338
+ ## 品質チェックリスト
339
+ 要件定義書を最終化する前に、以下を確認してください:
340
+ - [ ] 各ストーリーは独立してテスト可能である
341
+ - [ ] 受け入れ基準がGiven-When-Then形式を使用している
342
+ - [ ] ストーリーが依存関係と優先順位で順序付けられている
343
+ - [ ] 非機能要件に測定可能な目標がある
344
+ - [ ] 成功指標が定義され、測定可能である
345
+ - [ ] タイムラインが段階的な提供をサポートしている
346
+ - [ ] すべてのリスクに軽減戦略がある
347
+
348
+ ## 要件定義書作成プロセス
349
+
350
+ 1. **ディレクトリ探索(最重要)**:
351
+ - 指定されたディレクトリ内のすべてのファイルをリストアップ
352
+ - 関連しそうなファイルを全て読み込む
353
+ - **必ず** `/docs/einja/example/specs/issues/issue999-example-task/requirements.md` サンプルを確認
354
+
355
+ 2. **現状分析(AS-IS)**:
356
+ - 既存コードやドキュメントから現在の実装状況を把握
357
+ - 現在のシステムで何ができているかを整理
358
+ - 課題や改善点を抽出
359
+ - 技術的な制限や非効率な部分を特定
360
+
361
+ 3. **目標設定(TO-BE)**:
362
+ - タスクで実現したい理想的な状態を定義
363
+ - AS-ISの課題をどのように解決するかを明確化
364
+ - 新機能の追加や既存機能の改善点を列挙
365
+ - 期待される効果を具体的に記述
366
+
367
+ 4. **要件定義書作成(サンプルと同じ順序で)**:
368
+ - **タイトル**: `# {機能名} 要件定義書`
369
+ - **概要**: 機能の目的と価値を2-3文で
370
+ - **AS-IS(現状)**: 現在の実装状況と課題
371
+ - **TO-BE(目標状態)**: 実現したい姿と期待される改善
372
+ - **ビジネス価値**: 問題・解決策・期待効果
373
+ - **スコープ**: 含まれるもの・含まれないもの
374
+ - **ユーザーストーリー**: Given-When-Then形式の番号付き受け入れ基準(AC{StoryNumber}.{SequentialNumber}形式)
375
+ - **非機能要件**: パフォーマンス・セキュリティ・可用性
376
+ - **技術的制約**: 既存システムとの整合性
377
+ - **依存関係**: 他機能・外部システムとの連携
378
+ - **リスクと対策**: 表形式でリスク分析
379
+ - **成功指標**: 測定可能な目標
380
+ - **タイムライン**: フェーズ分けした実装計画
381
+
382
+ 5. **レビューと改善ループ**:
383
+
384
+ **初回レビュー:**
385
+ - 作成したrequirements.mdをレビュー
386
+ - **レビュー方法**: Codex MCP → 利用不可の場合はTaskツール(subagent_type: "general-purpose")でフォールバック
387
+ - レビュー観点:
388
+ - 要件の網羅性と明確性
389
+ - ユーザーストーリーと受け入れ基準の適切性
390
+ - ATDD原則への準拠
391
+ - ビジネス価値の明確さ
392
+ - 非機能要件の具体性
393
+ - AS-IS/TO-BEの論理的整合性
394
+
395
+ **修正と改善:**
396
+ - レビュー結果を分析し、指摘された問題点を整理
397
+ - 要件定義書を修正・改善
398
+ - 修正内容を記録(どの指摘をどう対応したか)
399
+
400
+ **再レビューの判断:**
401
+ - 以下の場合は再レビューを実施:
402
+ - 大幅な構造変更を行った場合
403
+ - 新しいユーザーストーリーを追加した場合
404
+ - 重要なビジネスロジックや制約を変更した場合
405
+ - 初回レビューで重大な問題が指摘された場合
406
+ - 軽微な修正(文言調整、誤字修正など)の場合は再レビュー不要
407
+
408
+ **最終確認:**
409
+ - 全ての指摘事項が適切に対応されたことを確認
410
+ - 品質チェックリストで最終チェック
411
+ - 最終版を保存
412
+
413
+ ## 言語
414
+ 技術的および非技術的なステークホルダーの両方が理解できる、明確でプロフェッショナルな日本語で常に要件を記述してください。
415
+
416
+ 留意事項:あなたの要件により、チームはストーリーごとに機能を開発し、次に進む前に各受け入れ基準をテストできます。この段階的なアプローチはリスクを軽減し、継続的な価値提供を保証します。