@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,322 @@
1
+ ---
2
+ description: "フロントエンド実装を自動化するコマンド。architect → design-engineer → frontend-coderの順でサブエージェントを呼び出し、設計からスタイリング、実装まで一貫した開発を行います。ARGUMENTS: 機能名または要件(必須)、Figma URL(オプション)"
3
+ allowed-tools: Task, Read, Write, Edit, MultiEdit, Bash, Grep, Glob, mcp__figma_dev_mode__*
4
+ ---
5
+
6
+ # フロントエンド実装自動化コマンド
7
+
8
+ ## あなたの役割
9
+
10
+ あなたは**フロントエンド開発のオーケストレーター**です。以下の3つの専門エージェントを連携させ、設計からスタイリング、実装まで一貫したフロントエンド開発プロセスを管理します:
11
+
12
+ 1. **architect** 🏗️ - コンポーネントアーキテクチャ設計
13
+ 2. **design-engineer** 🎨 - Figmaデザインシステム連携とスタイリング
14
+ 3. **frontend-coder** 💻 - 実装とテスト
15
+
16
+ ## 実行フロー
17
+
18
+ ### Phase 0: 実装戦略の確認(Phase 1前)
19
+
20
+ フロントエンド実装を開始する前に、以下の戦略を確認します。
21
+
22
+ #### 0.1 コンポーネント構成
23
+
24
+ ```yaml
25
+ AskUserQuestion:
26
+ question: "コンポーネント構成をどのように設計しますか?"
27
+ header: "構成選択"
28
+ options:
29
+ - label: "既存パターンに従う(推奨)"
30
+ description: |
31
+ 推奨理由: プロジェクトの一貫性を維持し、チーム全体の開発効率を向上させます。
32
+ メリット: 既存コンポーネントとの整合性が高く、チーム内での理解が容易。学習コストが最小限。
33
+ デメリット: 新しいパターンが必要な場合は柔軟に対応できない可能性があります。
34
+ - label: "Atomic Design"
35
+ description: |
36
+ atoms/molecules/organisms/templates/pagesの階層構造で設計します。
37
+ メリット: 再利用性が非常に高く、大規模UIシステムに向いている。デザインシステムとの親和性が高い。
38
+ デメリット: 学習コストが高く、過度な抽象化によりコードの追跡が困難になるリスクがあります。
39
+ - label: "Feature-based構成"
40
+ description: |
41
+ 機能単位でファイルをまとめる構成です。
42
+ メリット: 機能の独立性が高く、コードの関連性が分かりやすい。機能削除時の影響範囲が明確。
43
+ デメリット: 共通コンポーネントの管理が複雑になり、重複コードが発生しやすくなります。
44
+ ```
45
+
46
+ #### 0.2 Figmaデザイン参照
47
+
48
+ ```yaml
49
+ AskUserQuestion:
50
+ question: "Figmaデザイン参照は利用できますか?"
51
+ header: "Figma連携"
52
+ options:
53
+ - label: "既存デザインシステムで対応(推奨)"
54
+ description: |
55
+ 推奨理由: 既存のトークンとレシピを活用し、実装速度と一貫性を両立します。
56
+ メリット: 既存のトークンとレシピを再利用でき、実装が迅速。既存コンポーネントとのスタイル統一が容易。
57
+ デメリット: 新しいデザインパターンに対応できない場合があり、デザイントークンの手動追加が必要になります。
58
+ - label: "Figma URLを提供する"
59
+ description: |
60
+ design-engineerエージェントがFigma MCPでデザイントークンを自動抽出します。
61
+ メリット: デザインとコードの一貫性が非常に高く、デザイナーとの連携が容易。トークン抽出が自動化される。
62
+ デメリット: Figma MCPの設定が必要。デザイン変更の同期に手間がかかり、初期セットアップコストが高い。
63
+ - label: "デザイン仕様書を参照"
64
+ description: |
65
+ 別途提供されたデザイン仕様書(PDF、Markdown等)に従って実装します。
66
+ メリット: デザイナーの意図を詳細に理解でき、仕様書が実装の根拠となる。
67
+ デメリット: 仕様書の解釈にばらつきが出る可能性があり、手動でトークン定義が必要になります。
68
+ ```
69
+
70
+ #### 0.3 状態管理の複雑さ
71
+
72
+ ```yaml
73
+ AskUserQuestion:
74
+ question: "状態管理の複雑さはどの程度ですか?"
75
+ header: "状態管理"
76
+ options:
77
+ - label: "中程度(Server State + UI State)(推奨)"
78
+ description: |
79
+ 推奨理由: TanStack Queryでサーバー状態を管理し、モダンな状態管理パターンを実現します。
80
+ メリット: サーバー状態とUIステートが明確に分離され、キャッシュ管理が自動化される。リアルタイムデータ同期が容易。
81
+ デメリット: TanStack Queryの学習が必要になり、初期セットアップに時間がかかります。
82
+ - label: "シンプル(UI Stateのみ)"
83
+ description: |
84
+ useState、useReducerで状態管理を行います。
85
+ メリット: シンプルで理解しやすく、学習コストが低い。Reactの標準機能のみで実装可能。
86
+ デメリット: サーバーとの同期やキャッシュ管理が手動になり、大規模アプリでは保守が困難になります。
87
+ - label: "複雑(複数の状態層の連携)"
88
+ description: |
89
+ グローバル状態管理(Zustand、Jotai等)の追加を検討します。
90
+ メリット: 複雑な状態の共有が容易になり、コンポーネント間のデータ受け渡しが簡潔になる。
91
+ デメリット: 状態管理ライブラリの追加が必要。過度な使用は保守性を下げ、デバッグが困難になります。
92
+ ```
93
+
94
+ ---
95
+
96
+ ### フェーズ1: アーキテクチャ設計 🏗️
97
+
98
+ **architect**エージェントを呼び出し:
99
+ - コンポーネント構造の設計(Atomic Design、Feature-based構成)
100
+ - 状態管理アーキテクチャ(TanStack Query、Form State、UI State)
101
+ - データフロー設計(Server/Client境界、Props Drilling回避)
102
+ - パフォーマンス戦略(コード分割、レンダリング最適化)
103
+ - 型アーキテクチャ(共有型、コンポーネント型、API型)
104
+ - **成果物**: Architecture Decision Record (ADR)
105
+
106
+ **プロンプト例**:
107
+ ```
108
+ 機能名: {$ARGUMENTS}
109
+
110
+ 以下を設計してください:
111
+ 1. コンポーネント構造(ディレクトリ構成、責務分離)
112
+ 2. 状態管理戦略(Query Keys、Form State、UI State)
113
+ 3. データフロー設計(Props、Context、Server State)
114
+ 4. パフォーマンス最適化(Code Splitting、Memoization)
115
+ 5. 型定義設計(共有型、Props型、State型)
116
+
117
+ ADR形式で出力してください。
118
+ ```
119
+
120
+ **完了条件**: ADRドキュメントの生成完了
121
+
122
+ ---
123
+
124
+ ### フェーズ2: デザインシステム連携とスタイリング 🎨
125
+
126
+ **design-engineer**エージェントを呼び出し:
127
+ - Figma MCPでデザイン分析(Figma URLが提供された場合)
128
+ - デザイントークンの抽出と変換
129
+ - Panda CSS レシピの生成
130
+ - コンポーネントバリアントの定義
131
+ - レスポンシブデザインの実装戦略
132
+ - **成果物**: Panda CSS設定ファイル、レシピファイル、トークン定義
133
+
134
+ **プロンプト例(Figma URLあり)**:
135
+ ```
136
+ 機能名: {$ARGUMENTS}
137
+ Figma URL: {FIGMA_URL}
138
+
139
+ 以下を実行してください:
140
+ 1. Figma MCPでデザインファイルを分析
141
+ 2. カラー、タイポグラフィ、スペーシングをPanda CSSトークンに変換
142
+ 3. コンポーネントバリアントをPanda CSSレシピとして生成
143
+ 4. レスポンシブブレークポイントを定義
144
+
145
+ 以下のファイルを生成:
146
+ - panda.config.ts への追加設定
147
+ - recipes/{component-name}.ts
148
+ - tokens/{design-tokens}.ts
149
+ ```
150
+
151
+ **プロンプト例(Figma URLなし)**:
152
+ ```
153
+ 機能名: {$ARGUMENTS}
154
+
155
+ Architectの設計に基づき、以下を実行してください:
156
+ 1. 既存のデザイントークンを活用
157
+ 2. 必要に応じて新しいレシピを生成
158
+ 3. 一貫したスタイリング戦略を提案
159
+
160
+ 以下のファイルを生成:
161
+ - recipes/{component-name}.ts(必要に応じて)
162
+ - スタイリングガイドライン
163
+ ```
164
+
165
+ **完了条件**: Panda CSS設定・レシピファイルの生成完了
166
+
167
+ ---
168
+
169
+ ### フェーズ3: 実装とテスト 💻
170
+
171
+ **frontend-coder**エージェントを呼び出し:
172
+ - Architectの設計に基づくコンポーネント実装
173
+ - Design-Engineerのスタイリングを適用
174
+ - TanStack QueryによるServer State管理
175
+ - React Hook Form + Zodによるフォームバリデーション
176
+ - Vitestによる単体テスト
177
+ - **成果物**: 実装ファイル、テストファイル
178
+
179
+ **プロンプト例**:
180
+ ```
181
+ 機能名: {$ARGUMENTS}
182
+
183
+ 以下のアーティファクトを基に実装してください:
184
+ 1. Architectの設計(ADR)
185
+ 2. Design-Engineerのスタイリング(Panda CSSレシピ)
186
+
187
+ 実装内容:
188
+ - コンポーネント実装(TypeScript strict mode)
189
+ - TanStack Query統合(Query Keys、Mutations)
190
+ - フォームバリデーション(React Hook Form + Zod)
191
+ - Vitestテスト(正常系・異常系)
192
+
193
+ 実装規約:
194
+ - any型の使用禁止
195
+ - Props型定義必須
196
+ - エラーハンドリング実装必須
197
+ - アクセシビリティ考慮必須
198
+ ```
199
+
200
+ **完了条件**: 実装・テスト完了、型エラーなし
201
+
202
+ ---
203
+
204
+ ## 入力パラメータ
205
+
206
+ ### 必須
207
+ - **機能名または要件** (`$ARGUMENTS`の1つ目)
208
+ - 例: "ユーザープロフィール編集画面"
209
+ - 例: "商品検索フィルター機能"
210
+ - 例: "認証フォーム(ログイン・サインアップ)"
211
+
212
+ ### オプション
213
+ - **Figma URL** (`$ARGUMENTS`の2つ目)
214
+ - 例: "https://www.figma.com/file/..."
215
+ - 提供された場合: Design-EngineerがFigma MCPで分析
216
+ - 提供されない場合: 既存デザインシステムを活用
217
+
218
+ ## 実行例
219
+
220
+ ```bash
221
+ # 基本的な使用方法
222
+ frontend-implement "ユーザープロフィール編集画面"
223
+
224
+ # Figma URLを含む場合
225
+ frontend-implement "商品検索フィルター機能" "https://www.figma.com/file/abc123..."
226
+
227
+ # 複雑な機能の場合
228
+ frontend-implement "認証フロー(ログイン・サインアップ・パスワードリセット)"
229
+ ```
230
+
231
+ ## エージェント間の連携
232
+
233
+ ### Architect → Design-Engineer
234
+ - Architectが設計したコンポーネント構造をDesign-Engineerに引き継ぐ
235
+ - 状態管理戦略をスタイリングに反映(例: Loadingステート、Errorステート)
236
+
237
+ ### Design-Engineer → Frontend-Coder
238
+ - Design-Engineerが生成したPanda CSSレシピをFrontend-Coderが使用
239
+ - デザイントークンを型定義に反映
240
+
241
+ ### フィードバックループ
242
+ - Frontend-Coderが実装中に問題発見 → Architectに設計見直しを要求
243
+ - スタイリングが不足 → Design-Engineerに追加レシピ生成を要求
244
+
245
+ ## 成果物
246
+
247
+ ### 1. Architecture Decision Record (ADR)
248
+ - ファイル名: `docs/adr/{YYYYMMDD}-{feature-name}.md`
249
+ - 内容: コンポーネント設計、状態管理、データフロー、型定義
250
+
251
+ ### 2. Panda CSS設定・レシピ
252
+ - ファイル: `panda.config.ts`(追加設定)
253
+ - ファイル: `src/styled-system/recipes/{component-name}.ts`
254
+ - ファイル: `src/styled-system/tokens/{design-tokens}.ts`(必要に応じて)
255
+
256
+ ### 3. 実装ファイル
257
+ - コンポーネント: `src/components/{category}/{ComponentName}/index.tsx`
258
+ - テスト: `src/components/{category}/{ComponentName}/ComponentName.test.tsx`
259
+ - 型定義: `src/components/{category}/{ComponentName}/types.ts`(必要に応じて)
260
+
261
+ ### 4. ページ固有コンポーネント(co-location)
262
+ - ページコンポーネント: `src/app/{page}/_components/{ComponentName}/index.tsx`
263
+ - テスト: `src/app/{page}/_components/{ComponentName}/ComponentName.test.tsx`
264
+
265
+ ## 品質保証
266
+
267
+ ### 各フェーズでの確認事項
268
+
269
+ **Architectフェーズ**:
270
+ - [ ] コンポーネント構造が単一責任の原則に従っているか
271
+ - [ ] 状態管理が適切に分離されているか(Server/UI/Form)
272
+ - [ ] パフォーマンス最適化が考慮されているか
273
+
274
+ **Design-Engineerフェーズ**:
275
+ - [ ] Figmaデザインと一致しているか(URLありの場合)
276
+ - [ ] デザイントークンが適切に抽出されているか
277
+ - [ ] レシピがバリアントを正しく表現しているか
278
+
279
+ **Frontend-Coderフェーズ**:
280
+ - [ ] any型を使用していないか
281
+ - [ ] Props型定義が完全か
282
+ - [ ] テストが正常系・異常系をカバーしているか
283
+ - [ ] アクセシビリティが考慮されているか
284
+
285
+ ## 注意事項
286
+
287
+ ### モノレポ構造への対応
288
+ - 共有UIコンポーネント → `packages/ui/`
289
+ - アプリ固有コンポーネント → `apps/web/src/components/`
290
+ - ページ固有コンポーネント → `apps/web/src/app/{page}/_components/`
291
+
292
+ ### 技術スタック
293
+ - Next.js 15 (App Router)
294
+ - React 19
295
+ - TypeScript (strict mode)
296
+ - Panda CSS
297
+ - TanStack Query
298
+ - React Hook Form + Zod
299
+ - Vitest + React Testing Library
300
+
301
+ ### 禁止事項
302
+ - any型の使用
303
+ - インラインスタイルの使用(Panda CSSを使用)
304
+ - グローバル状態の濫用(適切な状態分離を行う)
305
+
306
+ ## トラブルシューティング
307
+
308
+ ### Figma MCP接続エラー
309
+ - Figma URLの形式確認
310
+ - Figma Dev ModeのアクセストークンWARN確認
311
+
312
+ ### Panda CSS生成エラー
313
+ ```bash
314
+ pnpm --filter @einja/web panda codegen
315
+ ```
316
+
317
+ ### 型エラー
318
+ ```bash
319
+ pnpm typecheck
320
+ ```
321
+
322
+ ---
@@ -0,0 +1,254 @@
1
+ ---
2
+ description: "タスクの仕様書(requirements.md、design.md、qa-tests/)を段階的に作成・修正するワークフローを実行します。ARGUMENTS: タスク内容の説明またはAsanaタスクURL(必須)、既存仕様書のパス(オプション)"
3
+ allowed-tools: Task, Read, Write, Edit, MultiEdit, Bash, Grep, Glob, TodoRead, TodoWrite, mcp__asana__*, mcp__figma_dev_mode__*
4
+ ---
5
+
6
+ # タスク仕様書作成コマンド
7
+
8
+ ## あなたの役割
9
+ プロダクト開発のシニアテクニカルアーキテクト兼シニアプロダクトエンジニアとして、ATDD(受け入れテスト駆動開発)に基づく仕様書を段階的に作成します。
10
+
11
+ ## タスク管理
12
+ TodoWriteツールを使用して全体の進捗を可視化し、ユーザーに現在の状況を明確に伝えます:
13
+ - 各仕様書作成フェーズ(requirements.md、design.md、QAテスト仕様、GitHub Issueへのタスク記述)をトップレベルタスクとして管理
14
+ - エージェント起動前にタスクを「in_progress」に更新
15
+ - エージェント完了後に「completed」に更新
16
+ - ユーザー承認待ちの状態も明示的に表示
17
+
18
+ ## 命名規則
19
+
20
+ ⚠️ **重要**: ディレクトリ名とブランチ名の規則は異なります。混同しないこと。
21
+
22
+ | 対象 | 規則 | 例 |
23
+ |------|------|-----|
24
+ | ディレクトリ | `issue{issue番号}-{機能名}` | `issue42-user-management` |
25
+ | Issueブランチ | `issue/{issue番号}` | `issue/42` |
26
+ | Phaseブランチ | `issue/{issue番号}-phase{N}` | `issue/42-phase1` |
27
+
28
+ - **ディレクトリ**: 機能名を含める(人間が識別しやすくするため)
29
+ - **ブランチ**: Issue番号のみ([branch-strategy.md](../docs/einja/steering/branch-strategy.md)参照)
30
+
31
+ ## 実行手順
32
+
33
+ ### 0. 前提確認フェーズ(ワークフロー開始時)
34
+
35
+ **⚠️ 重要**: 仕様書作成開始前に、以下の2つの質問で前提を確認すること。
36
+
37
+ #### 0.1 TDD適用判定
38
+
39
+ 以下のいずれかに該当する場合、TDD採用を推奨:
40
+ - ビジネスロジックが含まれる(計算・判定・状態遷移)
41
+ - データ変換・加工がある
42
+ - 外部API連携がある
43
+ - 複数の分岐・条件がある
44
+ - 金銭・認証・権限に関わる
45
+
46
+ **質問1: TDD(テスト駆動開発)を適用しますか?**
47
+
48
+ ```yaml
49
+ AskUserQuestion:
50
+ question: "このタスクにTDD(テスト駆動開発)を適用しますか?"
51
+ header: "TDD選択"
52
+ options:
53
+ - label: "はい、TDDで進める(推奨)"
54
+ description: "推奨理由: ビジネスロジック、データ変換、外部API連携では品質向上に効果的。メリット: バグの早期発見、設計品質向上。デメリット: 初期の開発時間増加"
55
+ - label: "実装後にテストを追加"
56
+ description: "メリット: 初期の開発速度が速い。デメリット: テスト漏れのリスク、後付けテストは設計改善に繋がりにくい"
57
+ - label: "テスト最小限"
58
+ description: "メリット: 最速で動作確認可能。デメリット: 品質保証が不十分、リグレッションリスクが高い"
59
+ ```
60
+
61
+ #### 0.2 要件明確さ確認
62
+
63
+ **質問2: 要件の明確さを確認**
64
+
65
+ 以下の観点で要件を確認してください:
66
+ - 正常系: 一番よくある使われ方は明確か?
67
+ - 境界条件: 「ギリギリOK」と「ギリギリNG」の境目は定義されているか?
68
+ - エラー時: エラーの場合、ユーザーにどう見せるか決まっているか?
69
+ - 暗黙の期待: 「当たり前」だと思っていることが言語化されているか?
70
+
71
+ ```yaml
72
+ AskUserQuestion:
73
+ question: "タスクの要件は明確ですか?"
74
+ header: "要件確認"
75
+ options:
76
+ - label: "明確(仕様書作成を進める)"
77
+ description: "メリット: 仕様書作成をスムーズに進められる。デメリット: 見落としがあると後で手戻りが発生する可能性"
78
+ - label: "不明確(追加質問で明確化)"
79
+ description: "メリット: 要件を正確に把握してから進められる。デメリット: 追加の確認時間が必要"
80
+ ```
81
+
82
+ **不明確が選択された場合の対応**:
83
+ 以下の深掘り質問を実施:
84
+ 1. **正常系**: 一番よくある使われ方は?
85
+ 2. **境界条件**: 「ギリギリOK」と「ギリギリNG」の境目は?
86
+ 3. **エラー時**: エラーの場合、ユーザーにどう見せたい?
87
+ 4. **暗黙の期待**: 「当たり前」だと思っていることは?
88
+
89
+ ### 1. 外部リソースの確認
90
+
91
+ **AsanaタスクURL**の場合:
92
+ - AsanaMCPでタスク情報を取得(タイトル、説明、カスタムフィールド)
93
+ - タスクIDから適切なディレクトリ名を生成
94
+
95
+ **FigmaURL**が含まれる場合:
96
+ - FigmaDevModeMCPでデザイン分析
97
+ - UI要件、コンポーネント仕様、デザイントークンを抽出
98
+
99
+ ### 2. GitHub Issue作成(最初に実行)
100
+
101
+ 1. **GitHub IssueをMCPで作成**
102
+ - タイトル: ユーザー指定またはAsanaタスクから取得
103
+ - 本文: 空または簡易的な説明
104
+ - `mcp__github__create_issue` を使用
105
+ - **Issue番号を取得して記録**
106
+
107
+ 2. **Issue番号に基づいてディレクトリパスを決定**
108
+ - パス指定あり → 指定ディレクトリを使用
109
+ - パス指定なし → `/docs/specs/issues/{機能カテゴリ名}/issue{issue番号}-{機能名}/` で自動作成
110
+
111
+ ### 3. 段階的仕様書作成
112
+ **重要**: 各段階で必ずユーザー承認を得て、コミット&プッシュしてから次へ進行すること。
113
+
114
+ #### Phase 1: requirements.md(要件定義書)
115
+ 1. spec-requirements-generatorエージェントで作成
116
+ - エージェント内で既存コードの分析を実施
117
+ - ATDD形式のユーザーストーリーと受け入れ基準
118
+ 2. **ユーザーに内容確認を依頼**
119
+ - 作成したファイルのパスと概要を提示
120
+ - 確認ポイントを明示(要件の過不足、受け入れ基準の明確性など)
121
+ 3. **ユーザー承認後、コミット&プッシュ**
122
+ - コミットメッセージ: `docs: add requirements for {feature-name}`
123
+ - ブランチは現在のブランチにプッシュ
124
+ - 他のメンバーがレビューできるようにする
125
+ 4. **承認を得てから次のステップ(design.md)に進む**
126
+
127
+ #### Phase 2: design.md(設計書)
128
+ 1. spec-design-generatorエージェントで作成
129
+ - エージェント内で既存アーキテクチャの調査を実施
130
+ - 技術アーキテクチャとデータモデル
131
+ - requirements.mdの内容を参照
132
+ 2. **ユーザーに内容確認を依頼**
133
+ - 作成したファイルのパスと概要を提示
134
+ - 確認ポイントを明示(アーキテクチャの妥当性、実装方針など)
135
+ 3. **ユーザー承認後、コミット&プッシュ**
136
+ - コミットメッセージ: `docs: add design for {feature-name}`
137
+ - ブランチは現在のブランチにプッシュ
138
+ 4. **承認を得てから次のステップ(QAテスト仕様生成)に進む**
139
+
140
+ #### Phase 3: QAテスト仕様生成(シナリオテスト含む)
141
+ 1. spec-qa-generatorエージェントで作成
142
+ - requirements.mdとdesign.mdの内容を参照
143
+ - **シナリオテスト(scenarios.md)**: 複数タスクをまたぐ継続操作フローのテスト仕様
144
+ - **フェーズ別テスト仕様**: 各タスクグループのテスト仕様
145
+ - 受け入れ基準(AC)との対応付け
146
+ 2. **ユーザーに内容確認を依頼**
147
+ - 作成したqa-tests/ディレクトリの構成と概要を提示
148
+ - 確認ポイントを明示(シナリオテストの網羅性、実施タイミングの妥当性など)
149
+ 3. **ユーザー承認後、コミット&プッシュ**
150
+ - コミットメッセージ: `docs: add qa-test specs for {feature-name}`
151
+ - ブランチは現在のブランチにプッシュ
152
+ 4. **承認を得てから次のステップ(GitHub Issueへのタスク記述)に進む**
153
+
154
+ #### Phase 4: GitHub Issueへのタスク記述
155
+ 1. spec-tasks-generatorエージェントで作成
156
+ - エージェント内で実装の影響範囲を分析
157
+ - 実装タスクの分解と依存関係
158
+ - requirements.md、design.md、**qa-tests/scenarios.md**の内容を参照
159
+ - 各タスクに**シナリオテスト実施タイミング**を明記
160
+ - **GitHub Issueの説明文にタスク一覧を記述**
161
+ 2. **ユーザーに内容確認を依頼**
162
+ - 更新したGitHub IssueのURL(#{issue_number})と概要を提示
163
+ - 確認ポイントを明示(タスク分解の粒度、依存関係の妥当性など)
164
+ 3. **ユーザー承認後、以下の処理を実行**
165
+
166
+ a. **Issueブランチ作成(MCP)**
167
+ - `mcp__github__create_branch` を使用
168
+ - branch: `issue/{issue番号}`(例: `issue/42`)
169
+ - ⚠️ **機能名は含めない**(ディレクトリ名とは異なる。上記「命名規則」参照)
170
+ - from_branch: デフォルトブランチ(main/masterなど)
171
+
172
+ b. **仕様書ファイルをプッシュ(MCP)**
173
+ - `mcp__github__push_files` を使用
174
+ - branch: `issue/{issue番号}`
175
+ - files: requirements.md, design.md, qa-tests/(または分割された各ファイル)
176
+ - message: `docs: add specs for {feature-name} (Issue #{issue_number})`
177
+
178
+ c. **PR作成(MCP)**
179
+ - `mcp__github__create_pull_request` を使用
180
+ - base: デフォルトブランチ
181
+ - head: `issue/{issue番号}`
182
+ - title: `docs: {機能名} 仕様書`
183
+ - body: `Issue #{issue番号} の仕様書を作成しました。`
184
+ - **PR URLを記録**
185
+
186
+ d. **GitHub Issue説明文を更新(MCP)**
187
+ - `mcp__github__issue_write` を使用(method: update)
188
+ - 本文に以下を含める:
189
+ - Spec PR へのリンク
190
+ - 要件ドキュメントへのリンク(requirements.mdまたはrequirements/README.md)
191
+ - 設計ドキュメントへのリンク(design.mdまたはdesign/README.md)
192
+ - QAテスト仕様へのリンク(qa-tests/scenarios.md)
193
+ - タスク一覧(Phase別チェックボックス形式、シナリオテスト実施タイミング明記)
194
+
195
+ 4. **全ての仕様書作成が完了したことを報告**
196
+ - GitHub Issue URLを明記
197
+ - Spec PR URLを明記
198
+
199
+
200
+ ### 4. 既存ファイル処理
201
+ - 既存ファイルは内容確認後に次段階へ進行
202
+ - 修正指示がある場合のみ該当エージェントで再生成
203
+
204
+ ### 4. 成果物の構成
205
+
206
+ #### 基本構成(各ファイルが1000行以下の場合)
207
+ ```
208
+ /docs/specs/issues/
209
+ └── {機能カテゴリ名}/
210
+ └── issue{issue番号}-{機能名}/
211
+ ├── requirements.md # 要件定義書(ATDD形式)
212
+ ├── design.md # 設計書(技術詳細)
213
+ └── qa-tests/ # QAテスト仕様
214
+ ├── scenarios.md # シナリオテスト(複数タスクをまたぐフロー)
215
+ └── phase{N}.md # 各フェーズのテスト仕様
216
+
217
+ (注: タスク一覧はGitHub Issueに記述)
218
+ ```
219
+
220
+ #### 分割構成(ファイルが1000行超過の場合)
221
+ ```
222
+ /docs/specs/issues/
223
+ └── {機能カテゴリ名}/
224
+ └── issue{issue番号}-{機能名}/
225
+ ├── requirements/ # 要件定義書ディレクトリ
226
+ │ ├── README.md # 目次
227
+ │ ├── overview.md # 概要とスコープ
228
+ │ ├── stories.md # ユーザーストーリー
229
+ │ └── technical.md # 技術要件
230
+ ├── design/ # 設計書ディレクトリ
231
+ │ ├── README.md # 目次
232
+ │ ├── architecture.md # アーキテクチャ
233
+ │ ├── implementation.md # 実装詳細
234
+ │ └── quality.md # 品質と運用
235
+ └── qa-tests/ # QAテスト仕様
236
+ ├── scenarios.md # シナリオテスト(複数タスクをまたぐフロー)
237
+ └── phase{N}.md # 各フェーズのテスト仕様
238
+
239
+ (注: タスク一覧はGitHub Issueに記述)
240
+ ```
241
+
242
+ **自動分割機能**:
243
+ - 各エージェント(requirements/design)は生成後に自動的にファイルサイズをチェック
244
+ - 1000行を超える場合、意味のあるまとまりで2-3個のパートに自動分割
245
+ - README.mdで全体構成とナビゲーションを提供
246
+ - 分割されたファイルも他エージェントから正しく参照可能
247
+
248
+ ## 重要な原則
249
+ - 段階的開発:各フェーズの承認を必須
250
+ - ATDD形式による受け入れ基準の明確化
251
+ - Next.js + Hono + Prisma技術スタック対応
252
+ - Asana/Figma連携によるトレーサビリティ確保
253
+
254
+ 実行を開始します...
@@ -0,0 +1,98 @@
1
+ ---
2
+ description: "ローカル開発環境を起動します"
3
+ allowed-tools: Bash
4
+ ---
5
+
6
+ # ローカル開発環境起動コマンド
7
+
8
+ ## コマンドの目的
9
+
10
+ 開発サーバーを起動します。`pnpm dev` は自動的にWorktree環境を検出し、適切なポート・DB設定を行います。
11
+
12
+ **新機能**: 複数のClaude CodeやCodexセッションが並列で実行されている場合でも、ポート競合を自動解決します。
13
+
14
+ ## 実行手順
15
+
16
+ ### 通常起動(フォアグラウンド)
17
+ ```bash
18
+ # 開発サーバー起動(Worktree対応・自動セットアップ)
19
+ # 同じポートを使用しているプロセスがあれば自動終了してから起動
20
+ pnpm dev
21
+ ```
22
+
23
+ ### バックグラウンド起動(推奨:並列セッション時)
24
+ ```bash
25
+ # バックグラウンドで起動(ログは log/dev.log に出力)
26
+ pnpm dev:bg
27
+ ```
28
+
29
+ ## 管理コマンド
30
+
31
+ ```bash
32
+ # 開発サーバーの状態確認
33
+ pnpm dev:status
34
+
35
+ # ログをリアルタイムで確認
36
+ pnpm dev:logs
37
+
38
+ # 開発サーバーを停止
39
+ pnpm dev:stop
40
+ ```
41
+
42
+ ## オプション
43
+
44
+ | オプション | 説明 |
45
+ |-----------|------|
46
+ | `--background`, `-b` | バックグラウンドで起動(ログはlog/dev.logに出力) |
47
+ | `--no-kill` | 既存プロセスを終了せずにポート競合時はエラー |
48
+ | `--setup-only` | 環境セットアップのみ(サーバー起動なし) |
49
+ | `--stop` | 実行中の開発サーバーを停止 |
50
+ | `--status` | 開発サーバーのステータス表示 |
51
+
52
+ ## 注意事項
53
+
54
+ - 初回実行時は `pnpm dev:setup` で環境セットアップが必要です
55
+ - `pnpm dev` はWorktree環境を自動検出してポート・DB名を調整します
56
+ - **並列実行時**: 同じポートを使用しているプロセスは自動的に終了されます
57
+ - ログファイルは `log/dev.log` に出力されます
58
+
59
+ ## ターミナルから直接実行する場合
60
+
61
+ ### 初回セットアップ
62
+ ```bash
63
+ pnpm dev:setup # .env作成、DB起動・初期化
64
+ ```
65
+
66
+ ### 開発サーバー起動
67
+ ```bash
68
+ pnpm dev # フォアグラウンド(全自動・Worktree対応)
69
+ pnpm dev:bg # バックグラウンド(Claude Code/Codex並列実行時推奨)
70
+ ```
71
+
72
+ ### セットアップのみ(開発サーバーは手動起動)
73
+ ```bash
74
+ pnpm env:prepare
75
+ ```
76
+
77
+ ## トラブルシューティング
78
+
79
+ ### ポートが解放されない場合
80
+ ```bash
81
+ # ステータス確認
82
+ pnpm dev:status
83
+
84
+ # 強制終了
85
+ pnpm dev:stop
86
+
87
+ # 特定ポートのプロセスを確認
88
+ lsof -i :3000
89
+ ```
90
+
91
+ ### ログが見たい場合
92
+ ```bash
93
+ # リアルタイムログ
94
+ pnpm dev:logs
95
+
96
+ # または直接
97
+ tail -f log/dev.log
98
+ ```