create-einja-app 0.3.2 → 0.3.4
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.
- package/README.md +33 -0
- package/dist/cli.js +60 -64
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/default/.changeset/config.json +11 -0
- package/templates/default/.claude/hooks/einja/plan-mode-skill-loader.sh +5 -1
- package/templates/default/.claude/settings.json +14 -4
- package/templates/default/.claude/skills/_einja-general-context-loader/SKILL.md +258 -0
- package/templates/default/.claude/skills/_einja-output-format/SKILL.md +211 -0
- package/templates/default/.claude/skills/_einja-project-overview/SKILL.md +29 -0
- package/templates/default/.claude/skills/_einja-spec-context-loader/SKILL.md +181 -0
- package/templates/default/.claude/skills/cli-package-specs/SKILL.md +294 -0
- package/templates/default/.einja-sync.json +1 -1
- package/templates/default/.github/release.yml +10 -0
- package/templates/default/.github/workflows/changeset-status.yml +60 -0
- package/templates/default/.github/workflows/deploy-stable-branches.yml +289 -59
- package/templates/default/CLAUDE.md +50 -10
- package/templates/default/README.md +20 -8
- package/templates/default/docs/plans/agile-munching-knuth.md +161 -0
- package/templates/default/docs/plans/agile-riding-nova.md +158 -0
- package/templates/default/docs/plans/agile-wibbling-dusk.md +91 -0
- package/templates/default/docs/plans/ancient-watching-otter.md +152 -0
- package/templates/default/docs/plans/bright-sauteeing-bumblebee.md +30 -0
- package/templates/default/docs/plans/composed-doodling-mountain.md +362 -0
- package/templates/default/docs/plans/dazzling-foraging-cascade.md +32 -0
- package/templates/default/docs/plans/enchanted-wiggling-ember-agent-a5befd57d0ca4c7c7.md +177 -0
- package/templates/default/docs/plans/enchanted-wiggling-ember.md +170 -0
- package/templates/default/docs/plans/federated-questing-kahan.md +47 -0
- package/templates/default/docs/plans/flickering-pondering-hearth.md +26 -0
- package/templates/default/docs/plans/fluttering-snuggling-sprout.md +172 -0
- package/templates/default/docs/plans/generic-sleeping-snowglobe-agent-a41d8da.md +179 -0
- package/templates/default/docs/plans/generic-sleeping-snowglobe.md +108 -0
- package/templates/default/docs/plans/generic-snuggling-pudding.md +57 -0
- package/templates/default/docs/plans/glistening-conjuring-cascade.md +42 -0
- package/templates/default/docs/plans/idempotent-wiggling-cherny.md +122 -0
- package/templates/default/docs/plans/linear-gathering-hejlsberg.md +596 -0
- package/templates/default/docs/plans/recursive-fluttering-mitten.md +176 -0
- package/templates/default/docs/plans/todo-create-einja-app-ux-fix.md +16 -0
- package/templates/default/docs/plans/todo-direnv-hang-fix.md +12 -0
- package/templates/default/docs/plans/todo-github-actions-release-workflow.md +34 -0
- package/templates/default/docs/plans/todo-glistening-conjuring-cascade.md +20 -0
- package/templates/default/docs/plans/todo-issue-spec-rename.md +24 -0
- package/templates/default/docs/plans/todo-skill-creator-upgrade.md +18 -0
- package/templates/default/docs/plans/todo-unified-crafting-valiant.md +23 -0
- package/templates/default/docs/plans/unified-crafting-valiant.md +60 -0
- package/templates/default/docs/plans/velvety-chasing-spark.md +28 -0
- package/templates/default/docs/plans/wondrous-strolling-crystal-agent-a0615fc.md +215 -0
- package/templates/default/docs/plans/wondrous-strolling-crystal.md +182 -0
- package/templates/default/docs/plans/zesty-roaming-steele.md +74 -0
- package/templates/default/gitignore +6 -2
- package/templates/default/package.json +6 -2
- package/templates/default/pnpm-lock.yaml +547 -0
- package/templates/default/scripts/ensure-serena.sh +28 -9
- package/templates/default/scripts/env-rotate-secrets.ts +66 -6
- package/templates/default/scripts/init-github.ts +363 -0
- package/templates/default/scripts/init.sh +11 -5
- package/templates/default/scripts/setup-dev.ts +16 -1
- package/templates/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
- package/templates/default/.claude/skills/create-einja-app-release/SKILL.md +0 -186
- package/templates/default/.claude/skills/dev-cli-release/SKILL.md +0 -173
- package/templates/default/.cursor/commands/spec-create.md +0 -227
- package/templates/default/.cursor/commands/task-exec.md +0 -287
- package/templates/default/.cursor/commands/update-docs-by-task-specs.md +0 -448
- package/templates/default/packages/server-core/src/__generated__/fabbrica/index.d.ts +0 -270
- package/templates/default/packages/server-core/src/__generated__/fabbrica/index.js +0 -484
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Plan: issue-exec Manager を worktree 化し、複数Issue同時実行を可能にする
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
現在の `issue-exec` コマンドでは、Manager がメインリポジトリで直接動作する。
|
|
6
|
+
これにより:
|
|
7
|
+
1. 複数Issue同時実行時に git 状態の race condition リスクがある
|
|
8
|
+
2. Manager 実行中にメインリポジトリで手動作業ができない
|
|
9
|
+
|
|
10
|
+
Manager も worktree で動作させることで、これらを解消する。
|
|
11
|
+
|
|
12
|
+
**技術的前提**: Git 2.15+ では worktree 内から `git worktree add` / `git branch` / `git push` が可能(検証済み)。
|
|
13
|
+
|
|
14
|
+
## 変更対象
|
|
15
|
+
|
|
16
|
+
`.claude/commands/einja/issue-exec.md` (1ファイルのみ)
|
|
17
|
+
|
|
18
|
+
## 具体的な変更箇所(5箇所)
|
|
19
|
+
|
|
20
|
+
### 1. Step 2: ブランチ & worktree 作成(L124-137)
|
|
21
|
+
|
|
22
|
+
Manager worktree を最初に作成し、以降のgit操作はすべて Manager worktree 内から実行する。
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
### Step 2: ブランチ & worktree 作成
|
|
26
|
+
1. Issue ブランチ作成(メインリポジトリから): `issue/{issue番号}`(base ブランチから)
|
|
27
|
+
2. Manager worktree 作成(メインリポジトリから):
|
|
28
|
+
```bash
|
|
29
|
+
mkdir -p ~/.einja/worktrees/issue-{N}/
|
|
30
|
+
git worktree add ~/.einja/worktrees/issue-{N}/manager issue/{N}
|
|
31
|
+
git push -u origin issue/{N}
|
|
32
|
+
```
|
|
33
|
+
3. **以降の操作は全て Manager worktree 内から実行**(cwd: `~/.einja/worktrees/issue-{N}/manager`)
|
|
34
|
+
4. 各 Phase のブランチ作成(Manager worktree から): `issue/{issue番号}-phase{N}`(issue ブランチから)
|
|
35
|
+
5. Phase worktree 作成(Manager worktree から):
|
|
36
|
+
```bash
|
|
37
|
+
git worktree add ~/.einja/worktrees/issue-{N}/phase{M} issue/{N}-phase{M}
|
|
38
|
+
git push -u origin issue/{N}-phase{M}
|
|
39
|
+
```
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 2. Step 4: tmux セッション作成(L166-168)
|
|
43
|
+
|
|
44
|
+
Manager の cwd を worktree に指定する。
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
tmux new-session -d -s einja-{issue番号} -n manager -c ~/.einja/worktrees/issue-{N}/manager
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 3. Step 0-3: セッション復元(L112-114)
|
|
51
|
+
|
|
52
|
+
Manager worktree の存在確認・再作成ロジックを追加。
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
#### 3. セッション復元
|
|
56
|
+
- `--resume` フラグがある場合、`~/.einja/sessions/issue-{N}/session.json` からセッション状態を復元
|
|
57
|
+
- Manager worktree の存在確認: `git worktree list | grep issue-{N}/manager`
|
|
58
|
+
- 存在しない場合は再作成: `git worktree add ~/.einja/worktrees/issue-{N}/manager issue/{N}`
|
|
59
|
+
- 未完了のPhaseのDirectorを再起動する
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 4. worktree 物理パス構成図(L266-270)
|
|
63
|
+
|
|
64
|
+
`manager/` を追加。
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
~/.einja/worktrees/issue-{N}/
|
|
68
|
+
├── manager/ ← Manager cwd
|
|
69
|
+
├── phase{M}/ ← Director cwd
|
|
70
|
+
├── task-{X.Y}/ ← Worker cwd
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 5. セッションクリーンアップ(L390-395)
|
|
74
|
+
|
|
75
|
+
Manager worktree を削除対象に追加。
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
Issue完了時に以下を自動削除:
|
|
79
|
+
- `~/.einja/sessions/issue-{N}/` (セッションファイル)
|
|
80
|
+
- `~/.einja/worktrees/issue-{N}/` (worktree。事前に `git worktree remove` を各ディレクトリに対して実行)
|
|
81
|
+
- `git worktree remove ~/.einja/worktrees/issue-{N}/task-{X.Y}`(Worker)
|
|
82
|
+
- `git worktree remove ~/.einja/worktrees/issue-{N}/phase{M}`(Director)
|
|
83
|
+
- `git worktree remove ~/.einja/worktrees/issue-{N}/manager`(Manager - 最後に削除)
|
|
84
|
+
- ローカルブランチのクリーンアップ(task/*, issue/*-phase*)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## ブランチ構成図の更新
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
{baseBranch}
|
|
91
|
+
└── issue/{N} Manager worktree(← 変更点)
|
|
92
|
+
├── issue/{N}-phase1 Director1 worktree
|
|
93
|
+
│ ├── task/{N}-1.1 Worker1.1 worktree
|
|
94
|
+
...
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## 変更しない箇所
|
|
98
|
+
|
|
99
|
+
- Director/Worker の起動方法
|
|
100
|
+
- ステータスファイル構造(絶対パスで管理)
|
|
101
|
+
- `gh pr create` コマンド
|
|
102
|
+
- `task-exec` コマンド
|
|
103
|
+
- `einja-team-exec` Skill
|
|
104
|
+
|
|
105
|
+
## 検証方法
|
|
106
|
+
|
|
107
|
+
1. 変更後の `issue-exec.md` 全体を通読し、Step 0〜7の整合性を確認
|
|
108
|
+
2. worktree 構成図・ブランチ構成図が一致しているか確認
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Plan: conflict-resolver サブエージェント廃止 → Skill一本化
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
`conflict-resolver` はサブエージェント定義(`.claude/agents/`)とSkill定義(`.claude/skills/`)の2重構造になっている。
|
|
6
|
+
サブエージェント経由では `AskUserQuestion` が使えないため、コンフリクト解消の核心機能(1ファイルずつユーザー確認)が動作しない。
|
|
7
|
+
Skill単体で親エージェントが直接実行すれば `AskUserQuestion` が正常に動作するため、サブエージェント定義を廃止してSkill一本化する。
|
|
8
|
+
|
|
9
|
+
## 変更内容
|
|
10
|
+
|
|
11
|
+
### TODO-1: エージェント定義の削除
|
|
12
|
+
|
|
13
|
+
**削除ファイル:**
|
|
14
|
+
- `.claude/agents/einja/git/conflict-resolver.md`
|
|
15
|
+
|
|
16
|
+
### TODO-2: CLAUDE.md の参照更新
|
|
17
|
+
|
|
18
|
+
**ファイル:** `CLAUDE.md`
|
|
19
|
+
|
|
20
|
+
- **行29**: サブエージェント委託テーブルから `コンフリクト解消 → conflict-resolver` の行を削除
|
|
21
|
+
- **行41**: Skill テーブルの `einja-conflict-resolver` はそのまま維持
|
|
22
|
+
- **行92**: `gitコンフリクト発生時の対応` セクションもそのまま維持(既にSkillを参照している)
|
|
23
|
+
|
|
24
|
+
### TODO-3: einja-task-commit Skill の参照更新
|
|
25
|
+
|
|
26
|
+
**ファイル:** `.claude/skills/einja-task-commit/SKILL.md`
|
|
27
|
+
|
|
28
|
+
- **行52**: `conflict-resolver エージェント を Task ツールで呼び出して解消` → `einja-conflict-resolver Skill の手順に従って解消`
|
|
29
|
+
- **行256**: `conflict-resolver エージェントを Task ツールで呼び出して解消を試行` → `einja-conflict-resolver Skill の手順に従って解消を試行`
|
|
30
|
+
|
|
31
|
+
### TODO-4: issue-exec コマンドの参照更新
|
|
32
|
+
|
|
33
|
+
**ファイル:** `.claude/commands/einja/issue-exec.md`
|
|
34
|
+
|
|
35
|
+
- **行349**: `conflict-resolverで自力解消` → `einja-conflict-resolver Skillで自力解消`
|
|
36
|
+
|
|
37
|
+
### TODO-5: .einja-sync.json のエントリ削除
|
|
38
|
+
|
|
39
|
+
**ファイル:** `.einja-sync.json`
|
|
40
|
+
|
|
41
|
+
- agent定義のsyncエントリ(`.claude/agents/einja/git/conflict-resolver.md`)を削除
|
|
42
|
+
|
|
43
|
+
### 変更不要(参照のみ・読み取り専用)
|
|
44
|
+
|
|
45
|
+
| ファイル | 理由 |
|
|
46
|
+
|---------|------|
|
|
47
|
+
| `docs/einja/steering/branch-strategy.md` | マネージドディレクトリ(読み取り専用)※ただしこのリポジトリでは編集可。"conflict-resolver で解消"は曖昧でSkillを指すとも読めるため変更不要 |
|
|
48
|
+
| `docs/einja/instructions/issue-exec-workflow.md` | 同上 |
|
|
49
|
+
| `docs/plans/*.md` | 過去のPlan。履歴として変更不要 |
|
|
50
|
+
| `.claude/commands/einja/einja-sync.md` | "einja-conflict-resolver Skill は使用しない"の記述。変更不要 |
|
|
51
|
+
| `.claude/skills/einja-conflict-resolver/SKILL.md` | Skill本体。変更不要 |
|
|
52
|
+
|
|
53
|
+
## 検証
|
|
54
|
+
|
|
55
|
+
1. `grep -r "conflict-resolver" .claude/agents/` でエージェント定義が残っていないことを確認
|
|
56
|
+
2. `grep -r "conflict-resolver.*エージェント.*Task" .claude/ CLAUDE.md` でサブエージェント呼び出し記述が残っていないことを確認
|
|
57
|
+
3. `pnpm prepush` でlint/typecheck/testが通ることを確認
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Plan: npx コマンドの `@latest` 指定漏れを一括修正
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
`npx @einja/dev-cli` を `@latest` なしで実行すると、npxキャッシュの古いバージョンが使われる。`einja:einja-sync` コマンドでv0.1.0が使われてしまった。実行されるコマンド/スクリプト定義を修正する。
|
|
6
|
+
|
|
7
|
+
## 修正対象
|
|
8
|
+
|
|
9
|
+
### 1. `.claude/commands/einja/einja-sync.md` (6箇所)
|
|
10
|
+
|
|
11
|
+
`npx --yes` で実行するコマンドに `@latest` を追加。`replace_all` で一括置換。
|
|
12
|
+
|
|
13
|
+
| Before | After |
|
|
14
|
+
|--------|-------|
|
|
15
|
+
| `npx --yes @einja/dev-cli sync` (4箇所: 107,159,162,231行) | `npx --yes @einja/dev-cli@latest sync` |
|
|
16
|
+
| `npx --yes create-einja-app sync` (2箇所: 110,165行) | `npx --yes create-einja-app@latest sync` |
|
|
17
|
+
|
|
18
|
+
**修正しない箇所**: Step 1のCLI検出 (19,20行目) は `npx --no` のまま。目的が「CLIが利用可能か」の検出であり、バージョン不問で検出できる方が適切。実際のsync実行 (Step 3,4) では `--yes @latest` で最新版が使われる。
|
|
19
|
+
|
|
20
|
+
### 2. `docs/einja/cli/preset.yaml` (2箇所)
|
|
21
|
+
|
|
22
|
+
下流プロジェクトの `package.json` scripts に反映されるため修正必須。
|
|
23
|
+
|
|
24
|
+
| 行 | Before | After |
|
|
25
|
+
|----|--------|-------|
|
|
26
|
+
| 127 | `"task:loop": "npx @einja/dev-cli task:loop"` | `"task:loop": "npx @einja/dev-cli@latest task:loop"` |
|
|
27
|
+
| 128 | `"einja:sync": "npx @einja/dev-cli sync"` | `"einja:sync": "npx @einja/dev-cli@latest sync"` |
|
|
28
|
+
|
|
29
|
+
## 修正不要
|
|
30
|
+
|
|
31
|
+
| ファイル | 理由 |
|
|
32
|
+
|---------|------|
|
|
33
|
+
| `einja-sync.md` 19,20行 | Step 1のCLI検出。`--no` で検出目的のためバージョン不問 |
|
|
34
|
+
| `package.json` (ルート) | 既に `@latest` 付き |
|
|
35
|
+
| `create-einja-app/src/generators/post-setup.ts` | 既に `@latest` 付き |
|
|
36
|
+
| README.md / docs/plans/ / docs/specs/ 等 | ドキュメント内の説明・例示。直接実行されるコマンドではない |
|
|
37
|
+
|
|
38
|
+
## 検証
|
|
39
|
+
|
|
40
|
+
1. grep で `einja-sync.md` 内の `npx --yes` 呼び出しに全て `@latest` が付いていることを確認
|
|
41
|
+
2. `preset.yaml` のscripts定義に `@latest` が付いていることを確認
|
|
42
|
+
3. `pnpm build` して `presets/default/` に変更が反映されることを確認
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# サブエージェント質問プロトコル(PENDING_QUESTIONS)導入
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Claude Code v2.0.56以降、**サブエージェントではAskUserQuestionがシステムレベルでフィルタリングされ動作しない**(GitHub Issue [#12890](https://github.com/anthropics/claude-code/issues/12890), [#20275](https://github.com/anthropics/claude-code/issues/20275)で確認済み)。また**CLAUDE.mdはサブエージェントに自動ロードされない**。
|
|
6
|
+
|
|
7
|
+
現在8つのエージェントがAskUserQuestionを参照しているが、全て動作しない。Agent toolの`resume`パラメータ(コンテキスト維持で再開)を活用し、親経由で質問するプロトコルを導入する。
|
|
8
|
+
|
|
9
|
+
## 変更方針
|
|
10
|
+
|
|
11
|
+
- **共通Skill**にプロトコルを1箇所だけ定義し、全エージェントに`skills:`でpreload
|
|
12
|
+
- **CLAUDE.md**に親側のハンドリングルールを追加
|
|
13
|
+
- 各エージェントの既存AskUserQuestion YAML例は**参照情報として残し**、PENDING_QUESTIONS形式の使用例を併記
|
|
14
|
+
|
|
15
|
+
## 変更内容
|
|
16
|
+
|
|
17
|
+
### 1. 共通Skill作成(新規)
|
|
18
|
+
**パス**: `.claude/skills/einja-subagent-question-protocol/SKILL.md`
|
|
19
|
+
|
|
20
|
+
内容:
|
|
21
|
+
- サブエージェントではAskUserQuestionが動作しない旨の説明
|
|
22
|
+
- PENDING_QUESTIONSフォーマット定義(具体的な出力例付き)
|
|
23
|
+
- AskUserQuestion YAML → PENDING_QUESTIONS形式の変換ガイド
|
|
24
|
+
- ルール: 1回にまとめる、選択肢と背景・影響を含める、resumeで再開後に作業継続
|
|
25
|
+
|
|
26
|
+
フォーマット例:
|
|
27
|
+
```markdown
|
|
28
|
+
## PENDING_QUESTIONS
|
|
29
|
+
|
|
30
|
+
以下の不明点の解消が必要です。
|
|
31
|
+
|
|
32
|
+
### Q1: [質問タイトル]
|
|
33
|
+
**背景**: [なぜこの質問が必要か]
|
|
34
|
+
|
|
35
|
+
| 選択肢 | 説明 | メリット | デメリット |
|
|
36
|
+
|--------|------|----------|------------|
|
|
37
|
+
| A: [ラベル] | [詳細] | [メリット] | [デメリット] |
|
|
38
|
+
| B: [ラベル] | [詳細] | [メリット] | [デメリット] |
|
|
39
|
+
|
|
40
|
+
**推奨**: A([理由])
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 2. CLAUDE.md(親側ハンドリング追加)
|
|
44
|
+
**パス**: `CLAUDE.md`
|
|
45
|
+
|
|
46
|
+
「サブエージェント委託ルール」セクション内に追加:
|
|
47
|
+
|
|
48
|
+
```markdown
|
|
49
|
+
### サブエージェント質問プロトコル(PENDING_QUESTIONS)
|
|
50
|
+
|
|
51
|
+
サブエージェント出力に `## PENDING_QUESTIONS` が含まれている場合:
|
|
52
|
+
1. 質問内容を解析し、AskUserQuestionでユーザーに確認
|
|
53
|
+
2. Agent toolの`resume`パラメータで同じサブエージェントを再開(コンテキスト維持)
|
|
54
|
+
3. プロンプトにユーザーの回答を含めて渡す
|
|
55
|
+
4. 再度PENDING_QUESTIONSがある場合は同様に処理(最大2回まで)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 3. 全エージェント定義の更新
|
|
59
|
+
|
|
60
|
+
#### 3a. issue-specs系(`skills:` フィールド追加 + 「優先順位3」書き換え)
|
|
61
|
+
|
|
62
|
+
| ファイル | 変更 |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `requirements-generator.md` | `skills:` 追加 + 49-52行目をプロトコル参照1行に |
|
|
65
|
+
| `design-generator.md` | `skills:` 追加 + 103-107行目をプロトコル参照1行に |
|
|
66
|
+
| `qa-generator.md` | `skills:` 追加 + 62行目をプロトコル参照1行に |
|
|
67
|
+
| `tasks-generator.md` | `skills:` 追加 + 95行目をプロトコル参照1行に |
|
|
68
|
+
|
|
69
|
+
書き換え後:
|
|
70
|
+
```markdown
|
|
71
|
+
- **優先順位3: ユーザーへの確認(最終手段)**
|
|
72
|
+
- 上記の方法で解決できない場合、preload済みの「サブエージェント質問プロトコル」に従いPENDING_QUESTIONS形式で質問を返却して停止する
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### 3b. task系・architect系(`skills:` にpreload追加 + AskUserQuestion部分に注釈追加)
|
|
76
|
+
|
|
77
|
+
| ファイル | 変更 |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `task-executer.md` | `skills: []` に追加 + AskUserQuestion YAML例の前に「⚠️ サブエージェントではAskUserQuestionは動作しない。代わりにPENDING_QUESTIONS形式で返却すること」注釈を追加 |
|
|
80
|
+
| `task-reviewer.md` | `skills:` 追加 + 同様の注釈 |
|
|
81
|
+
| `frontend-architect.md` | `skills:` に追加 + 同様の注釈 |
|
|
82
|
+
| `backend-architect.md` | `skills:` に追加 + 同様の注釈 |
|
|
83
|
+
|
|
84
|
+
**注釈の形式**(各AskUserQuestion YAML例の直前に挿入):
|
|
85
|
+
```markdown
|
|
86
|
+
> ⚠️ サブエージェントではAskUserQuestionは動作しません。
|
|
87
|
+
> 以下のYAML例は「どんな質問をすべきか」の参照情報です。
|
|
88
|
+
> 実際にはpreload済みの「サブエージェント質問プロトコル」に従い、
|
|
89
|
+
> PENDING_QUESTIONS形式で質問を返却して停止してください。
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
これにより既存YAML例の情報(選択肢・description・推奨理由)を完全に保持しつつ、プロトコルへの誘導を行う。
|
|
93
|
+
|
|
94
|
+
### 4. 変更不要なエージェント
|
|
95
|
+
|
|
96
|
+
Explore, tasks-validator, task-qa(Skill側で処理済み), task-modification-analyzer, docs-updater, codex-agent, design-engineer, frontend-coder, ui-design-generator
|
|
97
|
+
|
|
98
|
+
## 変更ファイルまとめ
|
|
99
|
+
|
|
100
|
+
| # | ファイル | 操作 |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| 1 | `.claude/skills/einja-subagent-question-protocol/SKILL.md` | **新規作成** |
|
|
103
|
+
| 2 | `CLAUDE.md` | 親側ハンドリング追加 |
|
|
104
|
+
| 3 | `.claude/agents/einja/issue-specs/requirements-generator.md` | skills追加 + 記述置換 |
|
|
105
|
+
| 4 | `.claude/agents/einja/issue-specs/design-generator.md` | skills追加 + 記述置換 |
|
|
106
|
+
| 5 | `.claude/agents/einja/issue-specs/qa-generator.md` | skills追加 + 記述置換 |
|
|
107
|
+
| 6 | `.claude/agents/einja/issue-specs/tasks-generator.md` | skills追加 + 記述置換 |
|
|
108
|
+
| 7 | `.claude/agents/einja/task/task-executer.md` | skills追加 + 注釈追加 |
|
|
109
|
+
| 8 | `.claude/agents/einja/task/task-reviewer.md` | skills追加 + 注釈追加 |
|
|
110
|
+
| 9 | `.claude/agents/einja/frontend-architect.md` | skills追加 + 注釈追加 |
|
|
111
|
+
| 10 | `.claude/agents/einja/backend-architect.md` | skills追加 + 注釈追加 |
|
|
112
|
+
|
|
113
|
+
## 検証方法
|
|
114
|
+
|
|
115
|
+
### 静的検証(Grep)
|
|
116
|
+
1. 共通Skillファイルが存在し、PENDING_QUESTIONSフォーマット例が含まれること
|
|
117
|
+
2. CLAUDE.mdに親側ハンドリングセクションが存在すること
|
|
118
|
+
3. 対象8エージェントの`skills:`に`einja-subagent-question-protocol`が含まれること
|
|
119
|
+
|
|
120
|
+
### 動作検証(手動)
|
|
121
|
+
4. requirements-generatorを意図的に曖昧な要件でフォアグラウンド起動し、PENDING_QUESTIONS形式で質問が返却されることを確認
|
|
122
|
+
5. 返却された質問をAskUserQuestionで確認後、resumeで再開してコンテキストが維持されていることを確認
|