@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,177 @@
1
+ ---
2
+ name: spec-context-loader
3
+ description: "spec(仕様書)が存在する場合の文脈収集を担当するSkill。requirements.md、design.md、qa-tests/から要件・設計・テスト仕様を抽出し、構造化して返却します"
4
+ allowed-tools:
5
+ - Read
6
+ - Grep
7
+ - Glob
8
+ ---
9
+
10
+ # spec-context-loader Skill: 仕様書からの文脈収集
11
+
12
+ あなたは仕様書分析のスペシャリストで、ATDD(受け入れテスト駆動開発)とドキュメント駆動開発に精通しています。構造化された仕様書から必要な情報を効率的に抽出し、実装に必要な文脈を提供します。
13
+
14
+ ## 中核的な責務
15
+
16
+ spec-create で作成された仕様書(requirements.md、design.md、qa-tests/)から、タスク実装に必要な文脈情報を抽出・構造化します。
17
+
18
+ ---
19
+
20
+ ## 入力
21
+
22
+ **必須パラメータ**:
23
+ - `spec_dir`: spec ディレクトリのパス(例: `/docs/specs/issues/auth/issue21-login-feature/`)
24
+ - `task_group_id`: タスクグループID(例: `1.1`)
25
+
26
+ **入力形式**: `{spec_dir} --task-group-id {task_group_id}`
27
+
28
+ ---
29
+
30
+ ## 実行手順(4ステップ)
31
+
32
+ ### ステップ1: spec ディレクトリの検証
33
+
34
+ 1. 指定された `spec_dir` の存在を確認
35
+ 2. 以下のファイルの存在を確認:
36
+ - `requirements.md` または `requirements/README.md`
37
+ - `design.md` または `design/README.md`
38
+ - `qa-tests/scenarios.md`
39
+ 3. 不足ファイルがある場合はエラーを返却
40
+
41
+ ---
42
+
43
+ ### ステップ2: requirements.md からの要件抽出
44
+
45
+ 1. requirements.md を読み込む
46
+ 2. 以下の情報を抽出:
47
+ - **ユーザーストーリー**: 該当タスクに関連するストーリー
48
+ - **受け入れ条件(AC)**: `AC{N}.{M}` 形式のすべての受け入れ基準
49
+ - **検証レベル**: 各ACの `Unit` / `Integration` / `E2E` 分類
50
+ - **非機能要件**: パフォーマンス、セキュリティ等の制約
51
+
52
+ **パース対象**: Given-When-Then 形式の受け入れ条件
53
+
54
+ ---
55
+
56
+ ### ステップ3: design.md からの設計仕様抽出
57
+
58
+ 1. design.md を読み込む
59
+ 2. 以下の情報を抽出:
60
+ - **アーキテクチャ**: 使用するパターン、レイヤー構造
61
+ - **データ構造**: 型定義、インターフェース、Prismaモデル
62
+ - **API仕様**: エンドポイント、リクエスト/レスポンス形式
63
+ - **コンポーネント設計**: 画面構成、状態管理
64
+ - **エラーハンドリング方針**: エラー分類、処理方法
65
+
66
+ ---
67
+
68
+ ### ステップ4: qa-tests/ からのテスト仕様抽出
69
+
70
+ 1. タスクグループIDからテストファイルを特定
71
+ - 例: `1.1` → `qa-tests/phase1/1-1.md`
72
+ 2. scenarios.md から該当タスクのシナリオテストを確認
73
+ 3. 以下の情報を抽出:
74
+ - **テストシナリオ**: 実行すべきテストケース
75
+ - **確認項目**: 各シナリオの検証ポイント
76
+ - **実施タイミング**: 部分実行/完全実行の判定
77
+
78
+ ---
79
+
80
+ ## 出力形式
81
+
82
+ **成功時**: 以下のマークダウン形式で出力
83
+
84
+ ```markdown
85
+ ## コンテキスト収集結果
86
+
87
+ ### spec 情報
88
+ - **ディレクトリ**: {spec_dir}
89
+ - **タスクグループ**: {task_group_id}
90
+
91
+ ### 要件
92
+ #### 機能要件
93
+ - [ユーザーストーリー1の概要]
94
+ - [ユーザーストーリー2の概要]
95
+
96
+ #### 非機能要件
97
+ - [パフォーマンス要件]
98
+ - [セキュリティ要件]
99
+
100
+ #### 受け入れ条件
101
+ | AC番号 | タイトル | 検証レベル | 概要 |
102
+ |--------|---------|-----------|------|
103
+ | AC1.1 | [タイトル] | Unit | [Given-When-Then概要] |
104
+ | AC1.2 | [タイトル] | Integration | [Given-When-Then概要] |
105
+
106
+ ### 設計
107
+ #### アーキテクチャ
108
+ - **パターン**: [使用するアーキテクチャパターン]
109
+ - **レイヤー**: [影響するレイヤー]
110
+
111
+ #### データ構造
112
+ ```typescript
113
+ // 主要な型定義
114
+ interface Example {
115
+ // ...
116
+ }
117
+ ```
118
+
119
+ #### API仕様
120
+ - **エンドポイント**: `POST /api/example`
121
+ - **リクエスト**: [形式]
122
+ - **レスポンス**: [形式]
123
+
124
+ #### エラーハンドリング
125
+ - [エラー分類と処理方針]
126
+
127
+ ### テスト仕様
128
+ #### 対象テストファイル
129
+ - `qa-tests/phase{N}/{X}-{Y}.md`
130
+
131
+ #### シナリオテスト
132
+ - **シナリオ1**: [概要] - 実施タイミング: [Step X-Y]
133
+
134
+ #### 確認項目
135
+ 1. [確認項目1]
136
+ 2. [確認項目2]
137
+ ```
138
+
139
+ **エラー時**: 以下の形式で出力
140
+
141
+ ```markdown
142
+ ## コンテキスト収集エラー
143
+
144
+ ### ステータス: ❌ FAILURE
145
+
146
+ ### エラー内容
147
+ - **原因**: [不足ファイル一覧 or エラー詳細]
148
+ - **推奨アクション**: `/spec-create` を実行して仕様書を完成させてください
149
+ ```
150
+
151
+ ---
152
+
153
+ ## エラー処理
154
+
155
+ | エラー種別 | 原因 | 対処 |
156
+ |-----------|------|------|
157
+ | spec ディレクトリ不在 | 指定パスが存在しない | パスを確認して再実行 |
158
+ | requirements.md 不在 | Phase 1 未完了 | `/spec-create` で Phase 1 を実行 |
159
+ | design.md 不在 | Phase 2 未完了 | `/spec-create` で Phase 2 を実行 |
160
+ | qa-tests/ 不在 | Phase 3 未完了 | `/spec-create` で Phase 3 を実行 |
161
+
162
+ ---
163
+
164
+ ## 実行制約
165
+
166
+ このSkillは `task-executer` エージェントから呼び出されます。spec が存在することが前提です。
167
+
168
+ ---
169
+
170
+ ## 連携
171
+
172
+ - **呼び出し元**: `task-executer` - コンテキスト収集フェーズ
173
+ - **代替Skill**: `general-context-loader` - spec がない場合の文脈収集
174
+
175
+ ---
176
+
177
+ **最終更新**: 2025-01-10
@@ -0,0 +1,269 @@
1
+ ---
2
+ name: task-commit
3
+ description: "コミット・プッシュを実行するSkill。docs/einja/steering/commit-rules.mdのルールに従い、分割コミットを実施。直接呼び出し可能(確認あり)、task-exec経由では自動実行"
4
+ allowed-tools:
5
+ - Bash
6
+ - Read
7
+ - Glob
8
+ - Grep
9
+ - AskUserQuestion
10
+ - TodoWrite
11
+ - TodoRead
12
+ ---
13
+
14
+ # task-commit Skill: コミット・プッシュ実行エンジン
15
+
16
+ ## 役割
17
+
18
+ 変更をコミット・プッシュします。`docs/einja/steering/commit-rules.md` のコミットルールに厳格に従い、適切な粒度でコミットを分割します。
19
+
20
+ ## 実行手順(6ステップ)
21
+
22
+ ### ステップ1: 最新化(必要な場合のみ)
23
+
24
+ **⚠️ 重要**: 毎回 `git pull --rebase` を実行するのは非効率。リモートに新しいコミットがある場合のみ実行する。
25
+
26
+ #### 手順
27
+
28
+ ```bash
29
+ # 1. リモートの最新情報を取得(ローカルは変更しない)
30
+ git fetch origin
31
+
32
+ # 2. リモートとの差分を確認
33
+ git rev-list HEAD..origin/main --count
34
+ ```
35
+
36
+ - **差分が0の場合**: 最新なので何もしない(次のステップへ)
37
+ - **差分がある場合**: 以下を実行
38
+
39
+ ```bash
40
+ # ローカル変更を一時退避
41
+ git stash
42
+
43
+ # リモートの変更を取り込み
44
+ git pull --rebase
45
+
46
+ # ローカル変更を復元
47
+ git stash pop
48
+ ```
49
+
50
+ #### コンフリクト発生時
51
+
52
+ 1. **conflict-resolver エージェント** を Task ツールで呼び出して解消
53
+ 2. 解消できない場合は以下を出力して終了:
54
+
55
+ ```markdown
56
+ ## 🚀 コミット・プッシュ
57
+
58
+ ### ステータス: ❌ FAILURE
59
+
60
+ **エラー**: git pull --rebase でコンフリクトが発生し、解消できませんでした。
61
+
62
+ 手動でコンフリクトを解決してください。
63
+
64
+ \`\`\`
65
+ [コンフリクト詳細]
66
+ \`\`\`
67
+ ```
68
+
69
+ ---
70
+
71
+ ### ステップ2: 変更確認
72
+
73
+ 1. `git status` で変更ファイルを確認
74
+ 2. `git diff` で差分内容を確認
75
+ 3. **変更がない場合**: 以下を出力して正常終了
76
+
77
+ ```markdown
78
+ ## 🚀 コミット・プッシュ完了
79
+
80
+ ### ステータス: ✅ SUCCESS(変更なし)
81
+
82
+ コミット対象の変更がありませんでした。
83
+ ```
84
+
85
+ ---
86
+
87
+ ### ステップ3: コミット分割方針の決定
88
+
89
+ **⚠️ 重要**: `docs/einja/steering/commit-rules.md` の「コミットの分割方針」を**必ず**参照すること。
90
+
91
+ #### 分割基準
92
+
93
+ 以下の場合は**必ず別々のコミットに分割**:
94
+
95
+ 1. **異なる目的や種類の変更**
96
+ - ソースコードの変更とドキュメントの更新
97
+ - 機能追加と設定ファイルの変更
98
+ - リファクタリングとバグ修正
99
+
100
+ 2. **異なるコンポーネントやモジュールの変更**
101
+ - 複数のマイクロサービスやコンポーネントの変更
102
+ - フロントエンドとバックエンドの変更
103
+
104
+ 3. **レビューの容易さを考慮した分割**
105
+ - 大規模な変更は小さな論理的なまとまりに分割
106
+ - テストコードの追加・更新は実装とは別のコミット
107
+
108
+ #### ユーザーへの確認(必須)
109
+
110
+ **AskUserQuestionツール**を使用して、コミット分割案の承認を得る。
111
+
112
+ **⚠️ 重要**: `question` パラメータに**具体的なコミット分割内容を必ず記載**すること。「コミット分割案を確認してください」のような抽象的な質問は**禁止**。
113
+
114
+ ```
115
+ AskUserQuestion:
116
+ question: |
117
+ 以下のコミット分割案で実行してよろしいですか?
118
+
119
+ 【コミット1】feat: ユーザー認証機能の追加
120
+ 対象: src/auth/login.ts, src/auth/logout.ts, src/auth/middleware.ts
121
+
122
+ 【コミット2】test: 認証機能のテスト追加
123
+ 対象: src/auth/__tests__/login.test.ts, src/auth/__tests__/logout.test.ts
124
+ header: "分割案"
125
+ options:
126
+ - label: "承認"
127
+ description: "この分割案でコミットを実行"
128
+ - label: "1コミットにまとめる"
129
+ description: "すべての変更を1つのコミットにまとめる"
130
+ ```
131
+
132
+ **question記載必須項目**:
133
+ - 各コミットのメッセージ(プレフィックス付き)
134
+ - 各コミットの対象ファイル一覧
135
+
136
+ ユーザーが「Other」で修正指示を出した場合は、その指示に従って分割案を修正し、再度確認を取る。
137
+
138
+ ---
139
+
140
+ ### ステップ4: 品質チェック
141
+
142
+ #### task-exec経由での呼び出しの場合
143
+
144
+ task-exec経由でQA合格後に呼び出されるため、品質チェック(lint/typecheck/test/build)は**スキップ**します。
145
+
146
+ QAフェーズで既に実行済みのため、重複実行は不要です。
147
+
148
+ #### 直接呼び出しの場合
149
+
150
+ コミット前に `pnpm prepush` を実行して以下のチェックを行います:
151
+
152
+ 1. **lint**: lint-staged による変更ファイルの lint チェック
153
+ 2. **typecheck**: TypeScript の型チェック
154
+ 3. **test**: 変更ファイルに関連するテストのみ実行(vitest related --run)
155
+
156
+ `pnpm prepush` が失敗した場合は、エラー内容を報告して終了します。
157
+
158
+ ---
159
+
160
+ ### ステップ5: コミット実行
161
+
162
+ 合意した分割方針に従って順次コミットを実行。
163
+
164
+ #### コミットメッセージ形式
165
+
166
+ `docs/einja/steering/commit-rules.md` に従い:
167
+
168
+ - **プレフィックス**: `feat:`, `fix:`, `docs:`, `style:`, `refactor:`, `test:`, `chore:`
169
+ - **言語**: 日本語
170
+ - **形式**: 1行目に概要、2行目以降に詳細
171
+
172
+ #### コミットコマンド
173
+
174
+ **task-exec経由での呼び出しの場合**(QA済み):
175
+
176
+ ```bash
177
+ git add src/auth/login.ts src/auth/logout.ts && git commit -m "$(cat <<'EOF'
178
+ feat: ユーザー認証機能の追加
179
+
180
+ - JWT認証の実装
181
+ - ログイン・ログアウトエンドポイントの追加
182
+ - 認証ミドルウェアの実装
183
+ EOF
184
+ )"
185
+ ```
186
+
187
+ **直接呼び出しの場合**(prepush実行):
188
+
189
+ ```bash
190
+ git add src/auth/login.ts src/auth/logout.ts && pnpm prepush && git commit -m "$(cat <<'EOF'
191
+ feat: ユーザー認証機能の追加
192
+
193
+ - JWT認証の実装
194
+ - ログイン・ログアウトエンドポイントの追加
195
+ - 認証ミドルウェアの実装
196
+ EOF
197
+ )"
198
+ ```
199
+
200
+ ---
201
+
202
+ ### ステップ6: プッシュ実行
203
+
204
+ 1. `git push` を実行
205
+ 2. 結果を出力
206
+
207
+ ---
208
+
209
+ ## 出力形式
210
+
211
+ ### 成功時
212
+
213
+ ```markdown
214
+ ## 🚀 コミット・プッシュ完了
215
+
216
+ ### コミットサマリー
217
+ - **コミット数**: {count}個
218
+ - **変更ファイル数**: {files}個
219
+
220
+ ### コミット一覧
221
+ | # | メッセージ | ファイル数 |
222
+ |---|----------|----------|
223
+ | 1 | feat: ユーザー認証機能の追加 | 3 |
224
+ | 2 | test: 認証機能のテスト追加 | 2 |
225
+
226
+ ### プッシュ結果
227
+ \`\`\`
228
+ [git push の出力]
229
+ \`\`\`
230
+
231
+ ### ステータス: ✅ SUCCESS
232
+ ```
233
+
234
+ ### 失敗時
235
+
236
+ ```markdown
237
+ ## 🚀 コミット・プッシュ
238
+
239
+ ### ステータス: ❌ FAILURE
240
+
241
+ **エラー**: [エラーの種類]
242
+
243
+ \`\`\`
244
+ [エラー詳細]
245
+ \`\`\`
246
+
247
+ [推奨される対処方法]
248
+ ```
249
+
250
+ ---
251
+
252
+ ## エラーハンドリング
253
+
254
+ | エラー種別 | 対処 |
255
+ |-----------|------|
256
+ | git pull コンフリクト | conflict-resolver エージェントを Task ツールで呼び出して解消を試行 |
257
+ | コンフリクト解消失敗 | 報告して終了、手動解決を依頼 |
258
+ | git commit 失敗 | エラー内容を報告 |
259
+ | git push 失敗 | エラー内容を報告、原因を説明 |
260
+
261
+ ---
262
+
263
+ ## 参考資料
264
+
265
+ - `docs/einja/steering/commit-rules.md` - コミットルール、分割方針、メッセージ形式の詳細
266
+
267
+ ---
268
+
269
+ **最終更新**: 2026-01-10