@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,203 @@
1
+ ---
2
+ description: ".claude/commands配下のコマンドを.cursor/commands用に自動変換"
3
+ ---
4
+
5
+ # Cursor コマンド同期ツール
6
+
7
+ ## あなたの役割
8
+
9
+ あなたは Claude Code のカスタムコマンドを Cursor 互換形式に自動変換する専門家です。`.claude/commands/` 配下の全コマンドファイルをスキャンし、Cursor で動作する形式に変換して `.cursor/commands/` に保存します。
10
+
11
+ ## 処理フロー
12
+
13
+ ### 1. ソースファイルのスキャン
14
+
15
+ **実行手順**:
16
+ ```bash
17
+ # .claude/commands 配下の全 .md ファイルを検索
18
+ Glob: .claude/commands/*.md
19
+ ```
20
+
21
+ 各ファイルを Read で読み込み、変換対象として処理します。
22
+
23
+ **除外対象**:
24
+ 以下のファイルは変換対象から除外します:
25
+ - `sync-cursor-commands.md`(このファイル自体。Claude Code専用機能のため)
26
+
27
+ ### 2. 変換処理
28
+
29
+ 各ファイルに対して以下の変換を実行します:
30
+
31
+ #### 2.1 サブエージェント参照の検出と変換
32
+
33
+ **検出パターン**:
34
+ 以下のようなサブエージェント参照を検出します:
35
+ - 「Task ツールで {subagent_name} を呼び出す」
36
+ - 「{subagent_name} サブエージェントを使用」
37
+ - 「Task({subagent_type}: {subagent_name})」
38
+
39
+ **サブエージェントファイルパスの特定**:
40
+ `.claude/agents/` 配下を再帰的に検索し、`{サブエージェント名}.md` に一致するファイルを使用
41
+
42
+ 例:
43
+ - `task-executer` → `.claude/agents/task/task-executer.md`
44
+ - `spec-requirements-generator` → `.claude/agents/specs/spec-requirements-generator.md`
45
+
46
+ **変換テンプレート**:
47
+
48
+ 変換前(Claude Code 形式)の記述を、以下のテンプレートで置き換えます:
49
+
50
+ ```markdown
51
+ {subagent_name} の処理を実行:
52
+
53
+ **📖 サブエージェントプロンプトの読み込み**
54
+ - `.claude/agents/` 配下から `{subagent_name}.md` を検索して Read ツールで読み込む
55
+ - YAML フロントマター(`---` で囲まれた部分)を除外
56
+ - 本文のプロンプト内容を取得
57
+
58
+ **🔨 プロンプトに従った処理の実行**
59
+ - 取得したプロンプト内容に記載された手順・指示に従って処理を実行
60
+ - プロンプト内の「自動探索・実行プロセス」セクションの手順を順次実行
61
+ - プロンプト内の「出力形式」セクションを確認
62
+
63
+ **📋 完了報告**
64
+ - サブエージェント定義ファイルの「出力形式」セクションに記載された形式で報告を出力
65
+ - 報告内容は構造化マークダウン(絵文字付き見出し使用)
66
+ ```
67
+
68
+ #### 2.2 Cursor 用の注意書きを追加
69
+
70
+ ファイルの冒頭(YAML フロントマターの直後)に以下のセクションを追加:
71
+
72
+ ```markdown
73
+ ---
74
+ [既存のYAMLフロントマター]
75
+ ---
76
+
77
+ > **⚠️ Cursor での動作について**
78
+ >
79
+ > このコマンドは `.claude/agents/` 配下のサブエージェント定義ファイルを参照します。
80
+ > サブエージェント呼び出し箇所では、該当する `.md` ファイルを Read で読み込み、
81
+ > そのプロンプト内容に従って処理を実行してください。
82
+ >
83
+ > **サブエージェント実行の手順**:
84
+ > 1. サブエージェント `.md` ファイルを Read で読み込む
85
+ > 2. YAML フロントマターを除外し、本文プロンプトを取得
86
+ > 3. プロンプトの指示に従って処理を実行
87
+ > 4. プロンプト内の「出力形式」に従った報告を生成
88
+
89
+ [既存のコマンド内容]
90
+ ```
91
+
92
+ ### 3. ファイルの出力
93
+
94
+ 変換後のファイルを `.cursor/commands/` に Write します:
95
+
96
+ ```bash
97
+ # 例
98
+ .claude/commands/task-exec.md → .cursor/commands/task-exec.md
99
+ .claude/commands/spec-create.md → .cursor/commands/spec-create.md
100
+ ```
101
+
102
+ ### 4. 変更サマリーの表示
103
+
104
+ 処理完了後、以下の形式で報告を出力してください:
105
+
106
+ ```markdown
107
+ ## 🎉 Cursor コマンド同期完了
108
+
109
+ ### 処理サマリー
110
+ - **変換元ディレクトリ**: `.claude/commands/`
111
+ - **変換先ディレクトリ**: `.cursor/commands/`
112
+ - **処理ファイル数**: N個
113
+
114
+ ### 変換済みファイル一覧
115
+ 1. ✅ spec-create.md
116
+ - サブエージェント参照: 3箇所変換
117
+
118
+ 2. ✅ task-exec.md
119
+ - サブエージェント参照: 4箇所変換
120
+
121
+ 3. ✅ start-dev.md
122
+ - 変換不要(サブエージェント参照なし)
123
+
124
+ 4. ✅ update-docs-by-task-specs.md
125
+ - 変換不要(サブエージェント参照なし)
126
+
127
+ ### 除外されたファイル
128
+ - ⏭️ sync-cursor-commands.md(Claude Code専用機能のため除外)
129
+
130
+ ### 次のステップ
131
+ Cursor で以下のコマンドが利用可能になりました:
132
+ - `/spec-create`
133
+ - `/task-exec`
134
+ - `/start-dev`
135
+ - `/update-docs-by-task-specs`
136
+ ```
137
+
138
+
139
+ ## 変換時の注意事項
140
+
141
+ ### 保持すべき内容
142
+ - YAML フロントマター(description など)
143
+ - コマンドの基本的なロジックと手順
144
+ - ユーザー向けの説明文
145
+ - 実行例とサンプルコード
146
+
147
+ ### 変更すべき内容
148
+ - `Task` ツール呼び出し → サブエージェントファイル読み込み形式
149
+ - サブエージェント参照の説明
150
+ - Cursor 固有の注意書き追加
151
+
152
+ ### 削除すべき内容
153
+ - Claude Code 固有のツール説明(Task ツールの使い方など)
154
+ - サブエージェント実行の内部実装詳細
155
+
156
+
157
+ ## 使用例
158
+
159
+ ```bash
160
+ # コマンド実行
161
+ /sync-cursor-commands
162
+
163
+ # 実行結果
164
+ ✅ 4個のコマンドファイルを変換しました
165
+ - spec-create.md: 3箇所のサブエージェント参照を変換
166
+ - task-exec.md: 4箇所のサブエージェント参照を変換
167
+ - start-dev.md: 変換不要
168
+ - update-docs-by-task-specs.md: 変換不要
169
+ ```
170
+
171
+ ## エラー処理
172
+
173
+ 以下のエラーに適切に対処してください:
174
+
175
+ 1. **ソースファイルが存在しない**
176
+ - `.claude/commands/` ディレクトリが空の場合
177
+ - エラーメッセージを表示して終了
178
+
179
+ 2. **サブエージェントファイルが見つからない**
180
+ - 参照されているサブエージェントファイルが存在しない場合
181
+ - 警告を表示し、該当箇所をスキップ
182
+
183
+ 3. **書き込み権限エラー**
184
+ - `.cursor/commands/` ディレクトリが書き込み不可の場合
185
+ - エラーメッセージを表示して終了
186
+
187
+ ## 拡張性
188
+
189
+ ### 新しいサブエージェントの追加
190
+
191
+ 将来的に新しいサブエージェントが追加された場合:
192
+
193
+ 1. `.claude/agents/` 配下に新しいサブエージェントファイルを配置
194
+ 2. 必要に応じてサブディレクトリで整理
195
+ 3. このツールは自動的にファイルを検索して変換(設定変更不要)
196
+
197
+ ### カスタマイズ
198
+
199
+ プロジェクト固有のニーズに応じて、以下をカスタマイズ可能:
200
+
201
+ - 変換テンプレートの形式
202
+ - 注意書きの内容
203
+ - エラーハンドリングの詳細度
@@ -0,0 +1,390 @@
1
+ ---
2
+ description: "GitHub Issueのタスクグループを実行するコマンド。ARGUMENTS: Issue番号(必須、#123形式)とタスクグループ番号(必須、1.1形式)"
3
+ allowed-tools: Task, Read, Write, Edit, MultiEdit, Bash, Grep, Glob, WebFetch, mcp__github__*, mcp__serena__*
4
+ ---
5
+
6
+ # タスク実行コマンド
7
+
8
+ ## 役割
9
+
10
+ 指定されたタスクグループの実装を管理し、QA合格まで自動的にループ実行する。
11
+
12
+ ## 入力の解析
13
+
14
+ $ARGUMENTSから以下を解析:
15
+ - **Issue番号**(必須、例: `#123`、`123`)
16
+ - **タスクグループ番号**(必須、例: `1.1`、`2.3`)
17
+
18
+ どちらかが欠けている場合はユーザーに要求する。
19
+
20
+ 解析した値は、各サブエージェント呼び出し時のpromptに含めて渡す。
21
+
22
+ ## サブエージェント出力の表示ルール
23
+
24
+ サブエージェントの出力表示は、**CLAUDE.mdの「サブエージェント結果報告のルール」セクションに従うこと**。
25
+
26
+ ### 要点
27
+ - Taskツールから返却されたメッセージを**そのまま全文出力**する
28
+ - 出力後、次のフェーズへの移行メッセージを追加する
29
+ - 省略・要約・言い換えは**禁止**
30
+
31
+ ## 処理フロー
32
+
33
+ ### タスク種別の判定
34
+
35
+ タスクグループ番号の先頭(Phase番号)に基づいて処理を分岐:
36
+
37
+ | Phase番号 | 判定 | 処理フロー |
38
+ |-----------|------|-----------|
39
+ | 1〜98 | 通常タスク | task-executer → task-reviewer → task-qa → task-committer |
40
+ | 99 | ドキュメント反映タスク | docs-updater → task-committer |
41
+
42
+ ### 通常タスクのフロー(Phase 1〜98)
43
+
44
+ ```
45
+ ┌─────────────────────────────────────────────────────────┐
46
+ │ 品質保証ループ │
47
+ │ │
48
+ │ task-executer → task-reviewer → task-qa │
49
+ │ ↑ │ │ │
50
+ │ └──────────────┴──────────────┘ │
51
+ │ (MAJOR/テスト失敗時は自動的に戻る) │
52
+ │ │
53
+ │ QA合格後 ↓ │
54
+ │ ┌─────────────────────────────────────────────┐ │
55
+ │ │ task-committer(コミット・プッシュ) │ │
56
+ │ │ ※ 確認なしで自動実行 │ │
57
+ │ └─────────────────────────────────────────────┘ │
58
+ │ │
59
+ └─────────────────────────────────────────────────────────┘
60
+
61
+ ↓ コミット完了
62
+ 追加指示待ち状態
63
+
64
+ ┌────────────┴────────────┐
65
+ ↓ ↓
66
+ ユーザーが追加指示 ユーザーが「終了」
67
+ │ │
68
+ ↓ ↓
69
+ task-modification-analyzer コマンド終了
70
+
71
+ ↓ 承諾後
72
+ 推奨パターンで実行
73
+
74
+ └──→ 追加指示待ち状態に戻る
75
+ ```
76
+
77
+ ### Phase 99 タスクのフロー(ドキュメント反映)
78
+
79
+ ```
80
+ ┌─────────────────────────────────────────────────────────┐
81
+ │ ドキュメント反映フロー │
82
+ │ │
83
+ │ docs-updater(タスク仕様書をfeature/steering仕様書に反映)│
84
+ │ │ │
85
+ │ ↓ 反映完了 │
86
+ │ ┌─────────────────────────────────────────────┐ │
87
+ │ │ task-committer(コミット・プッシュ) │ │
88
+ │ │ ※ 確認なしで自動実行 │ │
89
+ │ └─────────────────────────────────────────────┘ │
90
+ │ │
91
+ └─────────────────────────────────────────────────────────┘
92
+
93
+ ↓ コミット完了
94
+ コマンド終了
95
+ ```
96
+
97
+ **Phase 99 の特徴**:
98
+ - task-executer、task-reviewer、task-qa をスキップ
99
+ - docs-updater エージェントを直接呼び出し
100
+ - 追加指示待ち状態なし(完了後は即座に終了)
101
+
102
+ 各フェーズ完了後、サブエージェントの出力を表示したら即座に次のフェーズへ進む。ユーザーの応答は待たない。
103
+
104
+ ### 1. 実装フェーズ(task-executer)
105
+ - 要件定義・設計書に基づいた実装を実行
106
+ - 完了後、出力を表示して即座にレビューフェーズへ
107
+
108
+ ### 2. レビューフェーズ(task-reviewer)
109
+ - 要件定義・設計との整合性確認
110
+ - MAJOR判定 → 実装フェーズに戻る
111
+ - PASS/MINOR判定 → 品質保証フェーズへ
112
+
113
+ ### 3. 品質保証フェーズ(task-qa)
114
+ - 受け入れ条件に基づく動作確認
115
+ - テスト失敗 → 実装フェーズに戻る
116
+ - 全テスト合格 → コミット・プッシュフェーズへ
117
+
118
+ ### 4. コミット・プッシュフェーズ(task-committer)
119
+ - QA合格後、自動的にコミット・プッシュを実行
120
+ - 変更がある場合のみ実行(変更なしの場合はスキップ)
121
+ - コミット分割案の確認はスキップ(QA合格済みのため自動適用)
122
+ - 品質チェック(lint/typecheck/test/build)はQAで実行済みのためスキップ
123
+ - 完了後、追加指示待ち状態へ
124
+
125
+ ### 5. Phase 99 タスクの処理(docs-updater)
126
+
127
+ タスクグループ番号が `99.*` 形式の場合、以下のフローで処理:
128
+
129
+ 1. **タスク種別判定**
130
+ - タスクグループ番号の先頭が `99` かどうかを確認
131
+ - 例: `99.1` → Phase 99 タスク
132
+
133
+ 2. **docs-updater の呼び出し**
134
+ - Task ツールで docs-updater エージェントを呼び出し
135
+ - prompt に以下を含める:
136
+ - Issue番号
137
+ - タスクグループ番号
138
+ - 対象タスクspecのパス(全Phaseで完了したタスクspec)
139
+
140
+ 3. **コミット・プッシュ**
141
+ - docs-updater 完了後、task-committer を呼び出し
142
+ - ドキュメント変更をコミット・プッシュ
143
+
144
+ 4. **終了**
145
+ - Phase 99 タスクは追加指示待ち状態なし
146
+ - 完了後、即座にコマンド終了
147
+
148
+ **docs-updater への prompt 例**:
149
+ ```
150
+ Issue #123 のPhase 99 タスク(タスクグループ 99.1)を実行してください。
151
+
152
+ 以下のタスクspecをfeature/steering仕様書に反映してください:
153
+ - docs/specs/tasks/feature-name/20251104-task1
154
+ - docs/specs/tasks/feature-name/20251105-task2
155
+ ```
156
+
157
+ ---
158
+
159
+ ## 受け入れ条件の参照方法
160
+
161
+ このセクションは、task-executer、task-reviewer、task-qaサブエージェントが受け入れ条件を参照する際の標準手順を定義します。
162
+
163
+ ### requirements.mdの標準構造
164
+
165
+ **必須セクション**:
166
+ - **受け入れ基準(Acceptance Criteria)**: 各ACが以下の形式で記載
167
+
168
+ **AC(Acceptance Criteria)の形式**:
169
+ ```markdown
170
+ ##### 機能要件
171
+ - [ ] Given: 前提条件
172
+ When: 実行する操作
173
+ Then: 期待される結果
174
+ ```
175
+
176
+ ### task-executerの受け入れ条件参照方法
177
+
178
+ 1. タスクグループの関連ドキュメント(`requirements.md`)を読み込む
179
+ 2. 各ユーザーストーリー配下の「受け入れ基準」セクションを特定
180
+ 3. **検証レベルが「Unit」の AC のみ**を実装対象とする
181
+ 4. 各 AC(Given/When/Then)に対して実装と単体テストを作成
182
+ 5. `design.md` の技術仕様に準拠した実装を行う
183
+
184
+ **検証責務**:
185
+ - **Unit テスト**: 必須実装、実装と同時に作成
186
+ - **Integration/Browser テスト**: 実装不要(task-qa が担当)
187
+
188
+ **完了条件**:
189
+ - 実装したコードの単体テストが全て合格
190
+ - 検証レベルが「Unit」の AC を全て満たす
191
+ - Integration/Browser レベルの AC は未検証でも実装フェーズ完了とする
192
+
193
+ > **Note**: 検証レベルの詳細は `docs/einja/steering/terminology.md` を参照してください。
194
+
195
+ ### task-reviewerの受け入れ条件参照方法
196
+
197
+ 1. `requirements.md` の各ユーザーストーリー配下の「受け入れ基準」セクションを参照
198
+ 2. 実装が各ACを満たしているかを確認
199
+ 3. ACとの整合性をレビュー観点の最優先項目とする
200
+
201
+ ### task-qaの受け入れ条件参照方法
202
+
203
+ **⚠️ 最重要**: QAエージェントは以下の手順で受け入れ条件を参照
204
+
205
+ 1. **受け入れ基準の抽出**
206
+ - タスクグループの `requirements.md` を読み込む
207
+ - 各ユーザーストーリー配下の「受け入れ基準」セクションを特定
208
+ - **検証レベルが「Integration」「Browser」の AC のみ**を抽出
209
+ - 検証レベルが「Unit」の AC はスキップ(task-executer が既に検証済み)
210
+
211
+ 2. **テストシナリオの作成**
212
+ - 各 AC に対して、Given/When/Then に基づくテストシナリオを作成
213
+ - Integration: API + DB + ミドルウェアの連携テスト
214
+ - Browser: Playwright MCP を使用したユーザーシナリオテスト
215
+ - QA 仕様書(`qa-tests/phaseN/X-Y.md`)に記録
216
+
217
+ 3. **SUCCESS 判定基準**
218
+ - **検証レベルが「Integration」「Browser」の全ての AC が満たされた場合のみ**、SUCCESS 判定
219
+ - 1つでも AC を満たさない場合、FAILURE 判定して適切な戻し先を決定
220
+
221
+ > **用語の明確化**: 「E2E」はPlaywrightコードによる自動テスト(`pnpm test:e2e`)を指します。task-qaが実行するPlaywright MCPテストは「Browser」検証レベルです。詳細は `docs/einja/steering/terminology.md` を参照してください。
222
+
223
+ 4. **参照ドキュメント**
224
+ - QA テスト項目作成方針: `docs/einja/steering/acceptance-criteria-and-qa-guide.md`
225
+ - テンプレート: `docs/einja/templates/requirements.md.template`
226
+
227
+ ---
228
+
229
+ ## 失敗時のリカバリーフロー
230
+
231
+ ### 失敗原因の分類
232
+
233
+ task-qa は以下の基準で失敗原因を分類し、適切な戻し先を決定します:
234
+
235
+ #### A: 実装ミス(コードロジックの問題)
236
+ - **症状**: 期待値と実際の挙動が異なる、エラーが発生
237
+ - **戻し先**: task-executer(実装フェーズ)
238
+ - **対応**: コード修正 → 再度 reviewer → qa
239
+ - **例**: API が 404 を返す、バリデーションが動作しない
240
+
241
+ #### B: 要件理解の齟齬(要件定義の問題)
242
+ - **症状**: 実装は正しいが、要件と一致しない
243
+ - **戻し先**: requirements.md 修正 → 再度 task-executer
244
+ - **対応**: 要件明確化 + 再実装 → reviewer → qa
245
+ - **例**: 想定していなかったエッジケース、曖昧な要件の誤解
246
+
247
+ #### C: 設計不備(アーキテクチャの問題)
248
+ - **症状**: 実装方法が技術的に不適切
249
+ - **戻し先**: design.md 修正 → 再度 task-executer
250
+ - **対応**: 設計見直し + 再実装 → reviewer → qa
251
+ - **例**: パフォーマンス問題、セキュリティ脆弱性
252
+
253
+ #### D: テスト環境の問題(一時的なエラー)
254
+ - **症状**: 実装は正しいが、環境要因で失敗
255
+ - **戻し先**: QA 再実行(修正不要)
256
+ - **対応**: 環境調整のみ
257
+ - **例**: ネットワークタイムアウト、データベース接続エラー
258
+
259
+ ### task-qa の判定ロジック
260
+
261
+ 1. テスト結果を詳細に確認
262
+ 2. 失敗原因を以下の 4 分類に分類:
263
+ - A: 実装ミス
264
+ - B: 要件理解の齟齬
265
+ - C: 設計不備
266
+ - D: テスト環境の問題
267
+ 3. 分類に基づいて戻し先を決定
268
+ 4. 完了報告に分類結果と推奨アクションを明記
269
+ 5. 分類に応じた戻し先に自動的に進む
270
+
271
+ ---
272
+
273
+ ## QA仕様書の作成・更新フロー
274
+
275
+ ### 初回実行時(qa-tests/phaseN/X-Y.md が存在しない場合)
276
+
277
+ 1. **ファイルの新規作成**
278
+ - タスクグループ番号に基づいて `qa-tests/phaseN/X-Y.md` を新規作成
279
+ - 例: タスクグループ1.1 → `qa-tests/phase1/1-1.md`
280
+
281
+ 2. **受け入れ基準の抽出**
282
+ - `requirements.md` の各ユーザーストーリー配下の「受け入れ基準」セクションから各ACを抽出
283
+
284
+ 3. **テストシナリオの作成**
285
+ - 各ACに対してテストシナリオを作成
286
+ - テンプレート: `docs/einja/steering/acceptance-criteria-and-qa-guide.md` 参照
287
+
288
+ 4. **QA仕様書の構造**:
289
+ ```markdown
290
+ ## 機能名: [タスク名]
291
+ - 背景/価値: [requirements.mdから抽出]
292
+ - 関連 AC: AC1.1, AC1.2, AC2.1
293
+ - テスト範囲: Integration / Browser
294
+
295
+ - シナリオ:
296
+ 1. [AC1.1に対応するシナリオ]
297
+ - 前提: [Given]
298
+ - 操作: [When]
299
+ - 期待結果: [Then]
300
+ - ログ/メトリクス確認方法: [確認手段]
301
+
302
+ ### 実施結果(最終更新: YYYY-MM-DD)
303
+ **ステータス: [✅ SUCCESS / ❌ FAILURE / ⚠️ PARTIAL]**
304
+ ```
305
+
306
+ ### 2回目以降の実行時(qa-tests/phaseN/X-Y.md が既に存在する場合)
307
+
308
+ 1. **既存ファイルの読み込み**
309
+ - `qa-tests/phaseN/X-Y.md` を読み込む
310
+
311
+ 2. **更新対象の特定**
312
+ - 「実施結果」セクションのみを更新対象とする
313
+ - シナリオ部分は**保持**(変更しない)
314
+
315
+ 3. **結果の記録**
316
+ - 最新のテスト実施結果を「実施結果」セクションに追記
317
+ - ステータスを更新(SUCCESS / FAILURE / PARTIAL)
318
+
319
+ ---
320
+
321
+ ## 追加指示待ち状態
322
+
323
+ QA合格後、以下を表示:
324
+
325
+ ```
326
+ タスクグループの実装が完了しました。
327
+
328
+ 追加の修正や改善がある場合は指示してください。
329
+ 完了する場合は「終了」または「完了」と入力してください。
330
+ ```
331
+
332
+ ### 追加修正の対応(task-modification-analyzer)
333
+
334
+ ユーザーから追加指示があった場合、以下の手順で対応:
335
+
336
+ #### 1. 修正規模の確認
337
+
338
+ まず、修正の規模を確認するため、AskUserQuestionで以下を提示:
339
+
340
+ ```yaml
341
+ AskUserQuestion:
342
+ question: "追加修正の規模を確認してください"
343
+ header: "修正規模の選択"
344
+ options:
345
+ - label: "小規模(ロジック修正のみ)"
346
+ description: "メリット: 迅速に対応可能。デメリット: 影響範囲を見逃す可能性。対応: task-executerのみで実施"
347
+ - label: "中規模(複数ファイル修正)"
348
+ description: "メリット: 関連箇所も含めて修正。デメリット: 時間がかかる。対応: task-executer → task-reviewer"
349
+ - label: "大規模(設計変更が必要)"
350
+ description: "メリット: 根本的な問題解決。デメリット: 全ワークフローの再実行が必要。対応: requirements.md/design.md修正後に再実行"
351
+ ```
352
+
353
+ #### 2. 修正内容の曖昧性確認(必要な場合)
354
+
355
+ 修正内容が不明確な場合、以下をAskUserQuestionで確認:
356
+
357
+ ```yaml
358
+ AskUserQuestion:
359
+ question: "修正内容を明確にしてください"
360
+ header: "修正内容の分類"
361
+ options:
362
+ - label: "追加機能の実装"
363
+ description: "メリット: 新機能追加で価値向上。デメリット: 既存機能への影響リスク。対応: 新しい機能やコンポーネントを追加"
364
+ - label: "既存機能の変更"
365
+ description: "メリット: 要件に合った改善。デメリット: 回帰テストが必要。対応: 既存の動作を変更または拡張"
366
+ - label: "バグ修正"
367
+ description: "メリット: 品質向上、ユーザー満足度向上。デメリット: 根本原因の調査に時間がかかる場合あり。対応: 期待通りに動作しない箇所を修正"
368
+ - label: "リファクタリング"
369
+ description: "メリット: 保守性向上、技術的負債の解消。デメリット: 短期的には機能追加なし。対応: 機能は変えずにコード品質を改善"
370
+ ```
371
+
372
+ #### 3. task-modification-analyzerの呼び出し
373
+
374
+ 上記の確認後、task-modification-analyzerを呼び出し:
375
+ 1. Issue番号、タスクグループ番号、ユーザー指示を渡す
376
+ 2. 分析結果を表示してユーザーの承諾を待つ
377
+ 3. 承諾後、推奨パターンで実行:
378
+ - 小規模修正: task-executerのみ
379
+ - 中規模以上: task-executer → task-reviewer → task-qa
380
+ 4. 完了後、追加指示待ち状態に戻る
381
+
382
+ ### 終了条件
383
+
384
+ ユーザーが「終了」「完了」「done」と入力した場合、コマンドを終了。
385
+
386
+ ## 注意事項
387
+
388
+ - Issue番号とタスクグループ番号の両方が必須
389
+ - GitHub Issueのチェックボックス更新は自動では行わない
390
+ - コミット時は [コミットルール](../../docs/einja/steering/commit-rules.md) を遵守