@einja/dev-cli 0.1.41 → 0.1.44

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 (83) hide show
  1. package/dist/commands/task-loop/lib/github-client.test.js.map +1 -1
  2. package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js +2 -2
  3. package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js.map +1 -1
  4. package/dist/lib/preset-update/file-copier.js +3 -3
  5. package/dist/lib/preset-update/file-copier.js.map +1 -1
  6. package/dist/lib/sync/marker-processor.js.map +1 -1
  7. package/dist/lib/sync/metadata-manager.js +1 -1
  8. package/dist/lib/sync/metadata-manager.js.map +1 -1
  9. package/dist/lib/sync/metadata-manager.test.js +3 -2
  10. package/dist/lib/sync/metadata-manager.test.js.map +1 -1
  11. package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -1
  12. package/dist/lib/sync/project-private-synchronizer.js +5 -1
  13. package/dist/lib/sync/project-private-synchronizer.js.map +1 -1
  14. package/package.json +1 -1
  15. package/presets/default/.claude/agents/einja/backend-architect.md +17 -1
  16. package/presets/default/.claude/agents/einja/codex-agent.md +1 -1
  17. package/presets/default/.claude/agents/einja/design-engineer.md +1 -1
  18. package/presets/default/.claude/agents/einja/docs/docs-updater.md +3 -93
  19. package/presets/default/.claude/agents/einja/frontend-architect.md +17 -1
  20. package/presets/default/.claude/agents/einja/frontend-coder.md +1 -1
  21. package/presets/default/.claude/agents/einja/{specs/spec-design-generator.md → issue-specs/design-generator.md} +12 -7
  22. package/presets/default/.claude/agents/einja/{specs/spec-qa-generator.md → issue-specs/qa-generator.md} +6 -4
  23. package/presets/default/.claude/agents/einja/{specs/spec-requirements-generator.md → issue-specs/requirements-generator.md} +5 -5
  24. package/presets/default/.claude/agents/einja/{specs/spec-tasks-generator.md → issue-specs/tasks-generator.md} +13 -14
  25. package/presets/default/.claude/agents/einja/{specs/spec-tasks-validator.md → issue-specs/tasks-validator.md} +9 -9
  26. package/presets/default/.claude/agents/einja/issue-specs/ui-design-generator.md +114 -0
  27. package/presets/default/.claude/agents/einja/task/task-executer.md +9 -3
  28. package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +2 -2
  29. package/presets/default/.claude/agents/einja/task/task-qa.md +3 -3
  30. package/presets/default/.claude/agents/einja/task/task-reviewer.md +13 -1
  31. package/presets/default/.claude/commands/einja/einja-sync.md +119 -44
  32. package/presets/default/.claude/commands/einja/issue-exec.md +29 -19
  33. package/presets/default/.claude/commands/einja/sync-cursor-commands.md +6 -6
  34. package/presets/default/.claude/commands/einja/{update-docs-by-task-specs.md → update-docs-by-issue-specs.md} +58 -58
  35. package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +5 -1
  36. package/presets/default/.claude/settings.json +14 -4
  37. package/presets/default/.claude/skills/{einja-general-context-loader → _einja-general-context-loader}/SKILL.md +2 -2
  38. package/presets/default/.claude/skills/{einja-output-format → _einja-output-format}/SKILL.md +1 -1
  39. package/presets/default/.claude/skills/_einja-project-overview/SKILL.md +29 -0
  40. package/presets/default/.claude/skills/{einja-spec-context-loader → _einja-spec-context-loader}/SKILL.md +5 -5
  41. package/presets/default/.claude/skills/einja-coding-standards/references/testing-strategy.md +899 -0
  42. package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +1 -1
  43. package/presets/default/.claude/skills/einja-create-pr/SKILL.md +138 -0
  44. package/presets/default/.claude/skills/einja-infra-maintenance/SKILL.md +779 -0
  45. package/presets/default/.claude/{commands/einja/spec-create.md → skills/einja-issue-spec-create/SKILL.md} +47 -24
  46. package/presets/default/.claude/skills/einja-issue-spec-generator/SKILL.md +105 -0
  47. package/presets/default/.claude/skills/einja-issue-spec-generator/references/format-rules.md +35 -0
  48. package/presets/default/.claude/skills/einja-issue-spec-validator/SKILL.md +130 -0
  49. package/presets/default/.claude/skills/einja-issue-spec-validator/references/validation-rules.md +52 -0
  50. package/presets/default/.claude/skills/einja-npm-release/SKILL.md +242 -0
  51. package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +68 -12
  52. package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +368 -121
  53. package/presets/default/.claude/skills/einja-skill-creator/scripts/compare_runs.py +154 -0
  54. package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +14 -7
  55. package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +2 -7
  56. package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +263 -183
  57. package/presets/default/.claude/skills/einja-skill-first/SKILL.md +265 -0
  58. package/presets/default/.claude/skills/einja-subagent-question-protocol/SKILL.md +98 -0
  59. package/presets/default/.claude/skills/einja-task-commit/SKILL.md +7 -7
  60. package/presets/default/.claude/{commands/einja/task-exec.md → skills/einja-task-exec/SKILL.md} +3 -78
  61. package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -4
  62. package/presets/default/.claude/skills/einja-task-qa/references/troubleshooting.md +1 -1
  63. package/presets/default/.claude/skills/einja-task-qa/references/usage-patterns.md +2 -2
  64. package/presets/default/.claude/skills/einja-team-exec/SKILL.md +165 -0
  65. package/presets/default/CLAUDE.md.template +21 -6
  66. package/presets/default/docs/einja/instructions/deployment-setup.md +1 -1
  67. package/presets/default/docs/einja/instructions/issue-exec-workflow.md +11 -11
  68. package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +1 -1
  69. package/presets/default/docs/einja/instructions/setup-flow.md +279 -0
  70. package/presets/default/docs/einja/instructions/task-execute.md +42 -42
  71. package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +1 -1
  72. package/presets/default/docs/einja/steering/branch-strategy.md +1 -1
  73. package/presets/default/docs/einja/steering/development-workflow.md +93 -25
  74. package/presets/default/docs/einja/steering/infrastructure/deployment.md +107 -0
  75. package/presets/default/docs/einja/steering/task-management.md +9 -13
  76. package/presets/default/scripts/ensure-serena.sh +2 -2
  77. package/presets/default/scripts/env-rotate-secrets.ts +66 -6
  78. package/presets/default/scripts/init-github.ts +363 -0
  79. package/presets/default/scripts/init.sh +11 -5
  80. package/presets/default/scripts/setup-dev.ts +16 -1
  81. package/presets/default/.claude/agents/einja/git/conflict-resolver.md +0 -152
  82. package/presets/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
  83. package/presets/default/.claude/skills/einja-project-overview/SKILL.md +0 -39
@@ -0,0 +1,265 @@
1
+ ---
2
+ name: einja-skill-first
3
+ description: >
4
+ タスク着手前にSkillを先に作るべきかを自動評価するメタSkill。Plan mode進入時やeinja-issue-spec-create実行時に自動起動し、既存Skillのギャップ分析とROI評価を行い、Skill作成の必要性を構造化して提案する。「Skill作るべき?」「Skill化」「skill-first」「Skill-first」等のキーワードでも直接呼び出し可能。
5
+ allowed-tools:
6
+ - Read
7
+ - Grep
8
+ - Glob
9
+ ---
10
+
11
+ <!-- ベース: .claude/skills/einja-skill-creator/SKILL.md -->
12
+
13
+ # einja-skill-first: Skill作成事前評価メタSkill
14
+
15
+ タスク着手前に「Skillを先に作るべきか」を評価し、必要ならSkill作成をTODOの先頭に積むメタSkill。
16
+
17
+ Plan mode 内でも動作する(Read / Grep / Glob のみ使用)。Skill作成自体は `einja-skill-creator` に委譲する。
18
+
19
+ ## einja-skill-creator との責務分離
20
+
21
+ | 責務 | einja-skill-first | einja-skill-creator |
22
+ |------|:---:|:---:|
23
+ | ギャップ分析・ROI評価 | ○ | - |
24
+ | Skill仕様ドラフト(概要) | ○ | - |
25
+ | SKILL.md 作成 | - | ○ |
26
+ | テスト・eval | - | ○ |
27
+
28
+ ---
29
+
30
+ ## 起動方式(3系統)
31
+
32
+ ### 1. Plan mode 進入時(自動)
33
+
34
+ CLAUDE.md の必須フロー Step2(修正計画作成)→ Step3(ユーザー承認)の間で自動実行する。計画を提示する前に、Skill作成の必要性を評価する。
35
+
36
+ ### 2. einja-issue-spec-create 実行時(自動)
37
+
38
+ einja-issue-spec-create の Phase 0 で自動実行する。仕様書作成の前にSkillギャップを分析し、Skill-first アプローチの要否を判定する。
39
+
40
+ ### 3. 明示起動(手動)
41
+
42
+ 以下のキーワードで直接呼び出し可能:
43
+ - 「Skill作るべき?」
44
+ - 「Skill化」
45
+ - 「skill-first」
46
+ - 「Skill-first」
47
+
48
+ ---
49
+
50
+ ## スキップ基準(即座に「不要」判定)
51
+
52
+ 以下に該当する場合は評価自体を省略し、即座に「不要」と判定する:
53
+
54
+ - **単発の小規模修正**: バグ修正、typo、設定値変更
55
+ - **既存キーワードトリガー一致**: CLAUDE.md のキーワードトリガーに既に一致するタスク
56
+ - **具体的かつ限定的な作業指示**: 「ファイルXのY行をZに変更」等
57
+ - **明らかに1回限りの作業**: 特定バグの調査、特定ファイルのリファクタ等
58
+
59
+ スキップ時は以下を出力して終了:
60
+
61
+ ```
62
+ ## Skill作成評価結果
63
+ ### 判定: ⚪不要(スキップ基準に該当)
64
+ - 理由: {該当するスキップ基準}
65
+ ```
66
+
67
+ ---
68
+
69
+ ## 評価フロー(4ステップ)
70
+
71
+ ### ステップ1: 作業パターン分析
72
+
73
+ 1. **作業カテゴリ特定**: FE / BE / インフラ / ドキュメント / リファクタ等に分類する
74
+ 2. **反復性評価**: 今後も繰り返す作業か判定する
75
+ a. `docs/einja/memory/patterns.md` を Read で参照し、類似パターンの記録がないか確認する
76
+ b. patterns.md に記録がない場合、`docs/plans/` からも反復パターンを推定する
77
+ - Glob で `docs/plans/*.md` を取得(`todo-*.md`, `*-agent-*.md` は除外)
78
+ - Grep で作業カテゴリのキーワード + `# Plan:` タイトル行を検索
79
+ - 類似カテゴリの作業が2件以上あれば反復性の根拠とする
80
+ 3. **複雑度評価**: 手順数・判断分岐数・参照ドキュメント数から複雑度を見積もる
81
+
82
+ ### ステップ2: 既存Skillギャップ分析
83
+
84
+ 1. `.claude/skills/einja-*/SKILL.md` を Glob で動的取得する
85
+ 2. 各Skillの name / description を Read で読み取る
86
+ 3. タスクに対するカバレッジを3段階で判定する:
87
+
88
+ | カバレッジ | 判定 | 次のアクション |
89
+ |-----------|------|---------------|
90
+ | **完全カバー** | Skill作成不要 | 既存Skillで実行 |
91
+ | **部分カバー** | 既存Skill拡張を検討 | 拡張箇所を特定 |
92
+ | **カバー外** | 新規Skill作成を検討 | ステップ3へ進む |
93
+
94
+ ### ステップ3: ROI評価(スコアリング)
95
+
96
+ 以下のスコアリングで定量評価する。
97
+
98
+ **コスト側(各1-3点):**
99
+
100
+ | 項目 | 1点 | 2点 | 3点 |
101
+ |------|-----|-----|-----|
102
+ | 作成時間 | 数十分 | 数時間 | 1日以上 |
103
+ | 複雑度 | 直線的 | 分岐あり | 多段判断 |
104
+ | テスト必要度 | 不要 | 簡易 | 網羅的eval必要 |
105
+
106
+ **価値側(各1-3点):**
107
+
108
+ | 項目 | 1点 | 2点 | 3点 |
109
+ |------|-----|-----|-----|
110
+ | 再利用頻度 | 月1回以下 | 週1-2回 | ほぼ毎日 |
111
+ | 品質安定化 | ばらつき小 | 中程度 | 手順ミスが致命的 |
112
+ | 時間節約 | 5分以下/回 | 30分程度/回 | 1時間以上/回 |
113
+ | チーム共有価値 | 個人向け | チーム内 | 全プロジェクト共通 |
114
+
115
+ **判定基準:**
116
+ ```
117
+ 価値合計 - コスト合計 >= 2 → 推奨(新規作成)
118
+ 価値合計 - コスト合計 >= 0 かつ部分カバー → 拡張推奨
119
+ それ以外 → 不要
120
+ ```
121
+
122
+ ### ステップ4: 構造化出力
123
+
124
+ 以下のテンプレートで出力する。
125
+
126
+ ```markdown
127
+ ## Skill作成評価結果
128
+
129
+ ### 判定: {判定アイコン}{判定テキスト}
130
+
131
+ ### スコア
132
+ | カテゴリ | 項目 | スコア |
133
+ |---------|------|--------|
134
+ | コスト | 作成時間 | X/3 |
135
+ | コスト | 複雑度 | X/3 |
136
+ | コスト | テスト必要度 | X/3 |
137
+ | **コスト合計** | | **X/9** |
138
+ | 価値 | 再利用頻度 | X/3 |
139
+ | 価値 | 品質安定化 | X/3 |
140
+ | 価値 | 時間節約 | X/3 |
141
+ | 価値 | チーム共有価値 | X/3 |
142
+ | **価値合計** | | **X/12** |
143
+ | **差分(価値-コスト)** | | **X** |
144
+ ```
145
+
146
+ **判定アイコンの定義:**
147
+ - 推奨: `🟢推奨`
148
+ - 拡張推奨: `🟡拡張推奨`
149
+ - 不要: `⚪不要`
150
+
151
+ ### ステップ5: 過去Plan検索によるユースケース収集(推奨/拡張推奨の場合のみ)
152
+
153
+ 以下の手順で過去Planから類似作業を検索し、Skill仕様のユースケースに反映する。
154
+
155
+ 1. Glob で `docs/plans/*.md` を取得する
156
+ - 除外: `todo-*.md`, `*-agent-*.md`(子エージェント出力)
157
+ 2. Grep で以下のキーワードを検索し、関連Planを特定する
158
+ - ステップ1で特定した作業カテゴリのキーワード
159
+ - 変更対象ファイルパターン(例: `.claude/skills/`, `CLAUDE.md` 等)
160
+ - `# Plan:` タイトル行で関連性を粗くフィルタ
161
+ 3. 関連性の高いPlan(最大5件)のみ Read で詳細を確認する
162
+ - `## Context` セクションから作業概要を抽出
163
+ - 変更対象ファイル・手順から共通パターンを特定
164
+ 4. 類似度を判定する
165
+ - 高: 変更対象ファイルが重複する
166
+ - 中: 同一ドメインの作業、または手法・パターンが類似
167
+ 5. 結果を Skill概要仕様のユースケースセクションに反映する
168
+
169
+ ---
170
+
171
+ ## 判定別の推奨ワークフロー
172
+
173
+ ### 推奨(新規Skill作成)
174
+
175
+ ```markdown
176
+ ### Skill概要仕様
177
+ - **名前**: einja-{proposed-name}
178
+ - **目的**: {Skillの目的}
179
+ - **主要フロー**: {主要な処理ステップの概要}
180
+ - **推定作成時間**: {見積もり}
181
+ - **ユースケース(過去Planから)**:
182
+ - {Plan名}: {作業概要}(類似度: 高/中)
183
+ - {Plan名}: {作業概要}(類似度: 高/中)
184
+
185
+ ### 推奨ワークフロー
186
+ 計画のTODO-0にSkill作成を追加し、`einja-skill-creator` Skillで作成後に本作業を開始する。
187
+ ```
188
+
189
+ ### 拡張推奨(既存Skill拡張)
190
+
191
+ ```markdown
192
+ ### 推奨ワークフロー
193
+ 既存Skill {name} の拡張を検討する。
194
+ - **拡張内容**: {具体的な拡張箇所}
195
+ - **影響範囲**: {拡張による影響}
196
+ ```
197
+
198
+ ### 不要
199
+
200
+ ```markdown
201
+ ### 推奨ワークフロー
202
+ 既存Skillで十分カバー可能。該当Skill: {name}
203
+ ```
204
+
205
+ ---
206
+
207
+ ## Plan mode 対応
208
+
209
+ ### Plan mode 内で行うこと
210
+
211
+ - 既存Skill一覧を Glob + Read で取得する
212
+ - `docs/einja/memory/patterns.md` を Read で参照する
213
+ - ROI評価ロジックを実行する(計算のみ)
214
+ - 構造化された評価結果を返却する
215
+
216
+ ### Plan mode 内で行わないこと
217
+
218
+ - ファイル作成・編集
219
+ - einja-skill-creator の呼び出し
220
+ - Bash コマンド実行
221
+
222
+ ### 親エージェントの責務(Plan mode内)
223
+
224
+ 1. skill-first の結果を受け取る
225
+ 2. AskUserQuestion で提案する(推奨 / 拡張推奨の場合)
226
+ 3. 承認された場合、計画ファイルの TODO-0 に Skill 作成を記載する
227
+
228
+ ### Plan mode 解除後のフロー
229
+
230
+ ```
231
+ TODO-0: einja-skill-creator で Skill 作成(承認された場合のみ)
232
+ TODO-1〜: 作成した Skill を活用して本作業を実行
233
+ ```
234
+
235
+ ---
236
+
237
+ ## エラー処理
238
+
239
+ | エラー種別 | 原因 | 対処 |
240
+ |-----------|------|------|
241
+ | Skill一覧取得失敗 | `.claude/skills/` が存在しない | カバレッジ判定をスキップし、ROIのみで評価 |
242
+ | patterns.md 不在 | memory ディレクトリが未初期化 | 反復性評価をスキップし、他の項目で評価 |
243
+ | 作業内容が不明確 | 入力情報が不足 | スキップ基準を適用し「不要」と判定 |
244
+
245
+ ---
246
+
247
+ ## 実行制約
248
+
249
+ - このSkillは親エージェント(オーケストレーター)から呼び出される
250
+ - Read / Grep / Glob のみ使用可能(Plan mode 互換)
251
+ - Skill作成の実行は行わない(einja-skill-creator に委譲)
252
+
253
+ ---
254
+
255
+ ## 連携
256
+
257
+ - **呼び出し元**: 親エージェント(Plan mode 進入時、einja-issue-spec-create Phase 0)
258
+ - **委譲先**: `einja-skill-creator` - Skill作成の実行
259
+ - **参照**: `docs/einja/memory/patterns.md` - 過去の作業パターン
260
+
261
+ ---
262
+
263
+ <!-- @einja:project-private:start id="einja-skill-first-project" -->
264
+ <!-- プロジェクト固有の情報を記入 -->
265
+ <!-- @einja:project-private:end -->
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: einja-subagent-question-protocol
3
+ description: サブエージェントがユーザーへの質問を返却するためのプロトコル定義。AskUserQuestionが動作しないサブエージェント環境で使用。
4
+ autoload: true
5
+ # autoload: サブエージェントに自動preloadするため。親エージェントはPENDING_QUESTIONSの「受信・ハンドリング」側(CLAUDE.md参照)
6
+ ---
7
+
8
+ # サブエージェント質問プロトコル(PENDING_QUESTIONS)
9
+
10
+ ## 背景
11
+
12
+ Claude Code v2.0.56以降、**サブエージェントではAskUserQuestionツールがシステムレベルでフィルタリングされ動作しない**。
13
+ そのため、サブエージェントがユーザーへの確認が必要な場合は、以下のプロトコルに従って質問を返却する。
14
+
15
+ ## プロトコル概要
16
+
17
+ 1. サブエージェントは質問を `## PENDING_QUESTIONS` セクションとして出力に含める
18
+ 2. 親エージェントが出力を検出し、AskUserQuestionでユーザーに確認する
19
+ 3. 親エージェントがAgent toolの `resume` パラメータで同じサブエージェントを再開する
20
+ 4. 再開時にユーザーの回答がプロンプトとして渡される
21
+
22
+ ## PENDING_QUESTIONS フォーマット
23
+
24
+ 質問を返却する場合、**必ず以下の形式**で出力し、その後停止すること:
25
+
26
+ ```markdown
27
+ ## PENDING_QUESTIONS
28
+
29
+ 以下の不明点の解消が必要です。
30
+
31
+ ### Q1: [質問タイトル]
32
+ **背景**: [なぜこの質問が必要か、どのような文脈で発生したか]
33
+
34
+ | 選択肢 | 説明 | メリット | デメリット |
35
+ |--------|------|----------|------------|
36
+ | A: [ラベル] | [詳細説明] | [メリット] | [デメリット] |
37
+ | B: [ラベル] | [詳細説明] | [メリット] | [デメリット] |
38
+ | C: [ラベル] | [詳細説明] | [メリット] | [デメリット] |
39
+
40
+ **推奨**: A([推奨理由])
41
+
42
+ ### Q2: [質問タイトル]
43
+ **背景**: [なぜこの質問が必要か]
44
+
45
+ | 選択肢 | 説明 | メリット | デメリット |
46
+ |--------|------|----------|------------|
47
+ | A: [ラベル] | [詳細説明] | [メリット] | [デメリット] |
48
+ | B: [ラベル] | [詳細説明] | [メリット] | [デメリット] |
49
+
50
+ **推奨**: B([推奨理由])
51
+ ```
52
+
53
+ ## ルール
54
+
55
+ 1. **1回にまとめる**: 複数の質問がある場合は Q1, Q2, ... としてまとめて返却する。1問ずつ返却しない
56
+ 2. **選択肢と背景を必ず含める**: 各選択肢には説明・メリット・デメリットを記載し、ユーザーが十分な情報に基づいて判断できるようにする
57
+ 3. **推奨を明示する**: 各質問に対して推奨選択肢とその理由を記載する
58
+ 4. **質問返却後は停止する**: PENDING_QUESTIONSを出力したら、それ以降の作業は行わない。回答を受けてから再開する
59
+ 5. **再開後の作業継続**: `resume` で再開された場合、渡された回答に基づいて作業を継続する
60
+
61
+ ## AskUserQuestion YAML → PENDING_QUESTIONS 変換ガイド
62
+
63
+ エージェント定義にAskUserQuestion YAMLの参考例がある場合、以下のように変換する:
64
+
65
+ ### 変換前(AskUserQuestion YAML)
66
+ ```yaml
67
+ AskUserQuestion:
68
+ question: "状態管理ライブラリを選択してください"
69
+ header: "状態管理"
70
+ options:
71
+ - label: "TanStack Query(推奨)"
72
+ description: "推奨理由: サーバー状態管理に最適。..."
73
+ - label: "Zustand"
74
+ description: "シンプルなグローバル状態管理。..."
75
+ ```
76
+
77
+ ### 変換後(PENDING_QUESTIONS形式)
78
+ ```markdown
79
+ ## PENDING_QUESTIONS
80
+
81
+ 以下の不明点の解消が必要です。
82
+
83
+ ### Q1: 状態管理ライブラリの選択
84
+ **背景**: サーバー状態の管理方式を決定する必要があります。
85
+
86
+ | 選択肢 | 説明 | メリット | デメリット |
87
+ |--------|------|----------|------------|
88
+ | A: TanStack Query | サーバー状態管理に最適 | 自動キャッシュ管理、型安全 | 学習コスト中程度 |
89
+ | B: Zustand | シンプルなグローバル状態管理 | 軽量、シンプルなAPI | サーバー状態管理は手動 |
90
+
91
+ **推奨**: A(サーバー状態管理に最適で、キャッシュと再取得が自動化されるため)
92
+ ```
93
+
94
+ ## 重要な注意事項
95
+
96
+ - このプロトコルは**サブエージェントとして動作する場合にのみ**適用される
97
+ - 親エージェント(直接ユーザーと対話する場合)では通常通りAskUserQuestionを使用すること
98
+ - エージェント定義内のAskUserQuestion YAMLは「どんな質問をすべきか」の参照情報として有用なので削除しない
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: task-commit
3
- description: "コミット・プッシュを実行するSkill。docs/einja/steering/commit-rules.mdのルールに従い、分割コミットを実施。直接呼び出し可能(確認あり)、task-exec経由では自動実行"
2
+ name: einja-task-commit
3
+ description: "コミット・プッシュを実行するSkill。docs/einja/steering/commit-rules.mdのルールに従い、分割コミットを実施。直接呼び出し可能(確認あり)、einja-task-exec Skill経由では自動実行"
4
4
  allowed-tools:
5
5
  - Bash
6
6
  - Read
@@ -49,7 +49,7 @@ git stash pop
49
49
 
50
50
  #### コンフリクト発生時
51
51
 
52
- 1. **conflict-resolver エージェント** を Task ツールで呼び出して解消
52
+ 1. **einja-conflict-resolver Skill** の手順に従って解消
53
53
  2. 解消できない場合は以下を出力して終了:
54
54
 
55
55
  ```markdown
@@ -139,9 +139,9 @@ AskUserQuestion:
139
139
 
140
140
  ### ステップ4: 品質チェック
141
141
 
142
- #### task-exec経由での呼び出しの場合
142
+ #### einja-task-exec Skill経由での呼び出しの場合
143
143
 
144
- task-exec経由でQA合格後に呼び出されるため、品質チェック(lint/typecheck/test/build)は**スキップ**します。
144
+ einja-task-exec Skill経由でQA合格後に呼び出されるため、品質チェック(lint/typecheck/test/build)は**スキップ**します。
145
145
 
146
146
  QAフェーズで既に実行済みのため、重複実行は不要です。
147
147
 
@@ -171,7 +171,7 @@ QAフェーズで既に実行済みのため、重複実行は不要です。
171
171
 
172
172
  #### コミットコマンド
173
173
 
174
- **task-exec経由での呼び出しの場合**(QA済み):
174
+ **einja-task-exec Skill経由での呼び出しの場合**(QA済み):
175
175
 
176
176
  ```bash
177
177
  git add src/auth/login.ts src/auth/logout.ts && git commit -m "$(cat <<'EOF'
@@ -253,7 +253,7 @@ EOF
253
253
 
254
254
  | エラー種別 | 対処 |
255
255
  |-----------|------|
256
- | git pull コンフリクト | conflict-resolver エージェントを Task ツールで呼び出して解消を試行 |
256
+ | git pull コンフリクト | einja-conflict-resolver Skill の手順に従って解消を試行 |
257
257
  | コンフリクト解消失敗 | 報告して終了、手動解決を依頼 |
258
258
  | git commit 失敗 | エラー内容を報告 |
259
259
  | git push 失敗 | エラー内容を報告、原因を説明 |
@@ -1,9 +1,4 @@
1
- ---
2
- description: "GitHub Issueのタスクグループを実行するコマンド。ARGUMENTS: Issue番号(必須、#123形式)とタスクグループ番号(必須、1.1形式)"
3
- allowed-tools: Task, TaskCreate, TaskUpdate, TaskList, TaskGet, TaskOutput, Skill, Read, Write, Edit, MultiEdit, Bash, Grep, Glob, WebFetch, mcp__github__*, mcp__serena__*
4
- ---
5
-
6
- # タスク実行コマンド
1
+ # タスク実行 Skill
7
2
 
8
3
  ## 役割
9
4
 
@@ -129,8 +124,8 @@ $ARGUMENTSからIssue番号とタスクグループ番号を解析する(現
129
124
  1. **specディレクトリを探索**: `docs/specs/issues/*/issue{N}-*/` パターンで検索
130
125
  2. **存在チェック**:
131
126
  - 完全なspec(requirements.md + design.md + qa-tests/) → 次へ
132
- - 部分的spec → エラー終了(`/einja:spec-create` の実行を案内)
133
- - specなし → `einja-general-context-loader` Skill を呼び出してコンテキスト収集
127
+ - 部分的spec → エラー終了(`einja-issue-spec-create` Skill の実行を案内)
128
+ - specなし → `_einja-general-context-loader` Skill を呼び出してコンテキスト収集
134
129
  3. **requirements.md を読み込み**、各タスクのメタデータ(`**要件**: Story X`)に基づいてACを抽出
135
130
  - ACはGiven/When/Then形式で小さい(~50-100トークン/AC)ので直接保持
136
131
  4. **design.md はパスのみ特定**(内容は読み込まない)
@@ -244,76 +239,6 @@ Issue #123 のPhase 99 タスク(タスクグループ 99.1)を実行して
244
239
 
245
240
  ---
246
241
 
247
- ## 受け入れ条件の参照方法
248
-
249
- このセクションは、task-executer、task-reviewer、task-qaサブエージェントが受け入れ条件を参照する際の標準手順を定義します。
250
-
251
- ### requirements.mdの標準構造
252
-
253
- **必須セクション**:
254
- - **受け入れ基準(Acceptance Criteria)**: 各ACが以下の形式で記載
255
-
256
- **AC(Acceptance Criteria)の形式**:
257
- ```markdown
258
- ##### 機能要件
259
- - [ ] Given: 前提条件
260
- When: 実行する操作
261
- Then: 期待される結果
262
- ```
263
-
264
- ### task-executerの受け入れ条件参照方法
265
-
266
- 1. タスクグループの関連ドキュメント(`requirements.md`)を読み込む
267
- 2. 各ユーザーストーリー配下の「受け入れ基準」セクションを特定
268
- 3. **検証レベルが「Unit」の AC のみ**を実装対象とする
269
- 4. 各 AC(Given/When/Then)に対して実装と単体テストを作成
270
- 5. `design.md` の技術仕様に準拠した実装を行う
271
-
272
- **検証責務**:
273
- - **Unit テスト**: 必須実装、実装と同時に作成
274
- - **Integration/Browser テスト**: 実装不要(task-qa が担当)
275
-
276
- **完了条件**:
277
- - 実装したコードの単体テストが全て合格
278
- - 検証レベルが「Unit」の AC を全て満たす
279
- - Integration/Browser レベルの AC は未検証でも実装フェーズ完了とする
280
-
281
- > **Note**: 検証レベルの詳細は `docs/einja/steering/terminology.md` を参照してください。
282
-
283
- ### task-reviewerの受け入れ条件参照方法
284
-
285
- 1. `requirements.md` の各ユーザーストーリー配下の「受け入れ基準」セクションを参照
286
- 2. 実装が各ACを満たしているかを確認
287
- 3. ACとの整合性をレビュー観点の最優先項目とする
288
-
289
- ### task-qaの受け入れ条件参照方法
290
-
291
- **⚠️ 最重要**: QAエージェントは以下の手順で受け入れ条件を参照
292
-
293
- 1. **受け入れ基準の抽出**
294
- - タスクグループの `requirements.md` を読み込む
295
- - 各ユーザーストーリー配下の「受け入れ基準」セクションを特定
296
- - **検証レベルが「Integration」「Browser」の AC のみ**を抽出
297
- - 検証レベルが「Unit」の AC はスキップ(task-executer が既に検証済み)
298
-
299
- 2. **テストシナリオの作成**
300
- - 各 AC に対して、Given/When/Then に基づくテストシナリオを作成
301
- - Integration: API + DB + ミドルウェアの連携テスト
302
- - Browser: Playwright MCP を使用したユーザーシナリオテスト
303
- - QA 仕様書(`qa-tests/story{N}.md`)に記録
304
-
305
- 3. **SUCCESS 判定基準**
306
- - **検証レベルが「Integration」「Browser」の全ての AC が満たされた場合のみ**、SUCCESS 判定
307
- - 1つでも AC を満たさない場合、FAILURE 判定して適切な戻し先を決定
308
-
309
- > **用語の明確化**: 「E2E」はPlaywrightコードによる自動テスト(`pnpm test:e2e`)を指します。task-qaが実行するPlaywright MCPテストは「Browser」検証レベルです。詳細は `docs/einja/steering/terminology.md` を参照してください。
310
-
311
- 4. **参照ドキュメント**
312
- - QA テスト項目作成方針: `docs/einja/steering/acceptance-criteria-and-qa-guide.md`
313
- - テンプレート: `docs/einja/templates/requirements.md.template`
314
-
315
- ---
316
-
317
242
  ## 失敗時のリカバリーフロー
318
243
 
319
244
  ### 失敗原因の分類
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: task-qa
2
+ name: einja-task-qa
3
3
  description: "タスクの品質保証を実行するSkill。必須自動テスト、AC検証、動作確認を実施し、qa-tests/に結果を記録します"
4
4
  allowed-tools:
5
5
  - Task
@@ -92,7 +92,7 @@ AskUserQuestion:
92
92
 
93
93
  ### ステップ3: 既存テスト仕様の読み込み
94
94
 
95
- **前提**: テスト仕様は `spec-qa-generator` が作成済み。task-qaは**実行のみ**を担当。
95
+ **前提**: テスト仕様は `qa-generator` が作成済み。task-qaは**実行のみ**を担当。
96
96
 
97
97
  1. **テスト仕様ファイルの特定**: 自然言語で指定されたAC番号からStoryを判定
98
98
  - 例: 「AC1.1, AC1.2のテストを実行」→ AC番号の先頭数字(1)からStory 1を特定 → `qa-tests/story1.md`
@@ -100,7 +100,7 @@ AskUserQuestion:
100
100
  2. **シナリオテストの確認**: `qa-tests/scenarios.md` で該当ACの実施タイミングを確認
101
101
  3. **テスト仕様の読み込み**: story{N}.md内の該当ACセクションからテストシナリオ、確認項目、期待値を把握
102
102
 
103
- **エラー時**: テスト仕様が存在しない場合は失敗分類B(要件齟齬)→ spec-qa-generatorで作成が必要
103
+ **エラー時**: テスト仕様が存在しない場合は失敗分類B(要件齟齬)→ qa-generatorで作成が必要
104
104
 
105
105
  ---
106
106
 
@@ -281,7 +281,7 @@ AskUserQuestion:
281
281
 
282
282
  ## 実行制約
283
283
 
284
- **task-execからの呼び出し**: task-qa.md(ラッパー)経由、完了報告はtask-qa.mdが生成
284
+ **einja-task-exec Skillからの呼び出し**: task-qa.md(ラッパー)経由、完了報告はtask-qa.mdが生成
285
285
 
286
286
  **独立使用**: トリガーワードで自律起動、完了報告は本Skillが生成
287
287
 
@@ -21,7 +21,7 @@ QA実行時によくある問題と対処法。
21
21
 
22
22
  **対処法**:
23
23
  1. 仕様書ディレクトリパスを確認
24
- 2. 不在の場合はspec-requirements-generatorで作成
24
+ 2. 不在の場合はrequirements-generatorで作成
25
25
 
26
26
  **失敗分類**: D(環境問題)またはB(要件未定義)
27
27
 
@@ -4,10 +4,10 @@ task-qa Skillの利用方法パターン集。
4
4
 
5
5
  ---
6
6
 
7
- ## パターン1: task-execからの呼び出し(標準ワークフロー)
7
+ ## パターン1: einja-task-exec Skillからの呼び出し(標準ワークフロー)
8
8
 
9
9
  ```
10
- ユーザー: task-exec #123 1.1
10
+ ユーザー: einja-task-exec #123 1.1
11
11
  → starter → executer → reviewer → qa
12
12
 
13
13
  task-qa.md(ラッパー)→ SKILL.md