create-einja-app 0.3.2 → 0.3.3

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 (53) hide show
  1. package/README.md +33 -0
  2. package/dist/cli.js +60 -64
  3. package/dist/cli.js.map +1 -1
  4. package/package.json +1 -1
  5. package/templates/default/.changeset/config.json +11 -0
  6. package/templates/default/.claude/hooks/einja/plan-mode-skill-loader.sh +5 -1
  7. package/templates/default/.claude/settings.json +14 -0
  8. package/templates/default/.claude/skills/cli-package-specs/SKILL.md +247 -0
  9. package/templates/default/.einja-sync.json +1 -1
  10. package/templates/default/.github/release.yml +10 -0
  11. package/templates/default/.github/workflows/changeset-status.yml +60 -0
  12. package/templates/default/.github/workflows/deploy-stable-branches.yml +289 -59
  13. package/templates/default/CLAUDE.md +35 -8
  14. package/templates/default/README.md +20 -8
  15. package/templates/default/docs/plans/agile-munching-knuth.md +161 -0
  16. package/templates/default/docs/plans/agile-riding-nova.md +158 -0
  17. package/templates/default/docs/plans/agile-wibbling-dusk.md +91 -0
  18. package/templates/default/docs/plans/ancient-watching-otter.md +152 -0
  19. package/templates/default/docs/plans/bright-sauteeing-bumblebee.md +30 -0
  20. package/templates/default/docs/plans/composed-doodling-mountain.md +362 -0
  21. package/templates/default/docs/plans/dazzling-foraging-cascade.md +32 -0
  22. package/templates/default/docs/plans/enchanted-wiggling-ember-agent-a5befd57d0ca4c7c7.md +177 -0
  23. package/templates/default/docs/plans/enchanted-wiggling-ember.md +170 -0
  24. package/templates/default/docs/plans/federated-questing-kahan.md +47 -0
  25. package/templates/default/docs/plans/flickering-pondering-hearth.md +26 -0
  26. package/templates/default/docs/plans/fluttering-snuggling-sprout.md +172 -0
  27. package/templates/default/docs/plans/generic-sleeping-snowglobe-agent-a41d8da.md +179 -0
  28. package/templates/default/docs/plans/generic-sleeping-snowglobe.md +108 -0
  29. package/templates/default/docs/plans/generic-snuggling-pudding.md +57 -0
  30. package/templates/default/docs/plans/idempotent-wiggling-cherny.md +122 -0
  31. package/templates/default/docs/plans/recursive-fluttering-mitten.md +176 -0
  32. package/templates/default/docs/plans/todo-create-einja-app-ux-fix.md +16 -0
  33. package/templates/default/docs/plans/todo-direnv-hang-fix.md +12 -0
  34. package/templates/default/docs/plans/todo-github-actions-release-workflow.md +34 -0
  35. package/templates/default/docs/plans/todo-issue-spec-rename.md +24 -0
  36. package/templates/default/docs/plans/todo-skill-creator-upgrade.md +18 -0
  37. package/templates/default/docs/plans/velvety-chasing-spark.md +28 -0
  38. package/templates/default/docs/plans/wondrous-strolling-crystal-agent-a0615fc.md +215 -0
  39. package/templates/default/docs/plans/wondrous-strolling-crystal.md +182 -0
  40. package/templates/default/docs/plans/zesty-roaming-steele.md +74 -0
  41. package/templates/default/gitignore +6 -2
  42. package/templates/default/package.json +6 -2
  43. package/templates/default/pnpm-lock.yaml +547 -0
  44. package/templates/default/scripts/ensure-serena.sh +2 -2
  45. package/templates/default/scripts/env-rotate-secrets.ts +66 -6
  46. package/templates/default/scripts/init-github.ts +363 -0
  47. package/templates/default/scripts/init.sh +11 -5
  48. package/templates/default/scripts/setup-dev.ts +16 -1
  49. package/templates/default/.claude/skills/create-einja-app-release/SKILL.md +0 -186
  50. package/templates/default/.claude/skills/dev-cli-release/SKILL.md +0 -173
  51. package/templates/default/.cursor/commands/spec-create.md +0 -227
  52. package/templates/default/.cursor/commands/task-exec.md +0 -287
  53. package/templates/default/.cursor/commands/update-docs-by-task-specs.md +0 -448
@@ -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,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で再開してコンテキストが維持されていることを確認
@@ -0,0 +1,176 @@
1
+ # einja-issue-spec-createにui-designステップを追加 + Pencil MCP設定
2
+
3
+ ## Context
4
+
5
+ einja-issue-spec-create Skillは仕様書を段階的に作成するワークフローだが、現在はUI設計がdesign.md内のmermaid/表形式のみ。
6
+ Pencil MCPを活用してビジュアルなUIモックアップ(.penファイル)を生成するステップを追加し、UXの合意形成を効率化する。
7
+
8
+ ## Skill-first評価
9
+
10
+ **スキップ**: 既存のeinja-issue-spec-create Skillへの機能追加であり、新規Skill作成の対象外。
11
+
12
+ ## 変更対象ファイル
13
+
14
+ | # | ファイル | 操作 | 概要 |
15
+ |---|---------|------|------|
16
+ | 1 | `~/.claude/settings.json` | 変更 | Pencil MCP mcpServers設定追加 |
17
+ | 2 | `.claude/settings.json` | 変更 | Pencil MCP permissions追加 |
18
+ | 3 | `.claude/agents/einja/issue-specs/ui-design-generator.md` | **新規** | UIデザイン生成エージェント |
19
+ | 4 | `.claude/skills/einja-issue-spec-create/SKILL.md` | 変更 | ui-designステップ挿入 + Phase再番号付け |
20
+ | 5 | `.claude/agents/einja/issue-specs/design-generator.md` | 変更 | ui-design.pen参照追加 |
21
+
22
+ **注意**: `.claude/agents/einja/` および `.claude/skills/einja-*/` 配下のファイルは `presets/default/` に自動コピーされる。直接編集は不要。
23
+
24
+ ## 実装手順
25
+
26
+ ### Step 1: Pencil MCP設定追加(並行可)
27
+
28
+ #### 1a. `~/.claude/settings.json`(グローバル)にmcpServers追加
29
+
30
+ MCPサーバー定義はグローバル設定に配置(下流プロジェクトへの影響を防ぐため):
31
+
32
+ ```json
33
+ "mcpServers": {
34
+ "pencil": {
35
+ "transport": "stdio",
36
+ "command": "/Applications/Pencil.app/Contents/Resources/app.asar.unpacked/out/mcp-server-darwin-arm64",
37
+ "args": ["--app", "desktop"],
38
+ "env": {}
39
+ }
40
+ }
41
+ ```
42
+
43
+ #### 1b. `.claude/settings.json`(プロジェクト)にpermissions追加
44
+
45
+ `permissions.allow`に以下を追加:
46
+
47
+ ```
48
+ mcp__pencil__batch_design
49
+ mcp__pencil__batch_get
50
+ mcp__pencil__find_empty_space_on_canvas
51
+ mcp__pencil__get_editor_state
52
+ mcp__pencil__get_guidelines
53
+ mcp__pencil__get_screenshot
54
+ mcp__pencil__get_style_guide
55
+ mcp__pencil__get_style_guide_tags
56
+ mcp__pencil__get_variables
57
+ mcp__pencil__open_document
58
+ mcp__pencil__replace_all_matching_properties
59
+ mcp__pencil__search_all_unique_properties
60
+ mcp__pencil__set_variables
61
+ mcp__pencil__snapshot_layout
62
+ ```
63
+
64
+ ### Step 2: `ui-design-generator.md` 新規作成(並行可)
65
+
66
+ **パス**: `.claude/agents/einja/issue-specs/ui-design-generator.md`
67
+
68
+ **構造**(既存エージェントパターンに準拠 - `design-generator.md`等と同じ形式):
69
+ - **frontmatter**: name, description, tools(Pencil MCP + Playwright MCP読み取り用), model: sonnet, color: purple
70
+ - **ペルソナ**: UIデザイナー/UXエンジニアリング専門家
71
+ - **ワークフロー**:
72
+ 1. ステップ0: requirements.md読み込み + 既存画面判定
73
+ 2. ステップ1: Pencil MCP環境準備(open_document → get_guidelines → get_style_guide)
74
+ 3. ステップ2: 画面設計(find_empty_space_on_canvas → batch_design)
75
+ - `get_guidelines` でPencil MCPの操作ルール・構文仕様を取得してから実行
76
+ 4. ステップ3: ビジュアル確認(get_screenshot)と修正
77
+ 5. ステップ4: 既存画面改修時のPlaywright連携(スクリーンショット取得 → 参考にデザイン作成)
78
+ - **複数画面管理**: 1つの.penファイル内に複数フレーム。横方向(right)に自動配置、padding: 100px
79
+ - **既存画面改修**: Playwright MCPでスクショ取得 → 参考にしてデザイン作成
80
+ - **出力**: `{仕様書ディレクトリ}/ui-design.pen`(gitコミット対象)
81
+
82
+ ### Step 3: `einja-issue-spec-create/SKILL.md` 更新(Step 1,2に依存)
83
+
84
+ #### 変更1: allowed-tools に `mcp__pencil__*`, `mcp__playwright__*` 追加
85
+
86
+ #### 変更2: Phase構成の再番号付け
87
+
88
+ ```
89
+ Phase 1: requirements.md(要件定義書) ← 変更なし
90
+ Phase 2: ui-design.pen(UIデザイン) ← 新規
91
+ Phase 3: design.md(設計書) ← 旧Phase 2
92
+ Phase 4: QAテスト仕様生成 ← 旧Phase 3
93
+ Phase 5: GitHub Issueへのタスク記述 ← 旧Phase 4
94
+ ```
95
+
96
+ #### 変更3: Phase 2 ui-design ステップの挿入
97
+
98
+ Phase 1の後に以下を挿入:
99
+ - **スキップ判定**: requirements.mdに画面・UI・フォーム関連の要件がない場合はスキップ
100
+ - 明示的な判定基準: requirements.md内に「画面」「UI」「フォーム」「ダッシュボード」「表示」等のキーワードが含まれるか確認
101
+ - 判断が曖昧な場合はAskUserQuestionでユーザーに確認
102
+ - **既存画面確認**: 改修の場合はPlaywright MCPでスクリーンショット取得
103
+ - **エージェント呼び出し**: `ui-design-generator`で.pen生成
104
+ - **ユーザー確認**: get_screenshotで各画面プレビューを提示
105
+ - **承認後**: ui-design.penをコミット&プッシュ
106
+ - コミットメッセージ: `docs: {機能名}のUIデザインを追加`
107
+
108
+ #### 変更4: 旧Phase 2→3, 3→4, 4→5 の番号修正
109
+
110
+ 全てのPhase参照・セクション番号・サブセクション(4.1→5.1, 4.2→5.2等)を更新。
111
+
112
+ #### 変更5: Phase 3(旧Phase 2)design.mdセクションに ui-design.pen参照追加
113
+
114
+ ```
115
+ - **ui-design.penが存在する場合、Pencil MCPでビジュアルモックアップを参照してUI関連セクション(9-11)を作成**
116
+ ```
117
+
118
+ #### 変更6: 成果物ディレクトリ構成に `ui-design.pen` 追加
119
+
120
+ ```
121
+ /docs/specs/issues/{機能カテゴリ名}/issue{N}-{機能名}/
122
+ ├── requirements.md # Phase 1
123
+ ├── ui-design.pen # Phase 2(UI関連のみ)
124
+ ├── design.md # Phase 3
125
+ └── qa-tests/ # Phase 4
126
+ ```
127
+
128
+ #### 変更7: Phase 5 Issue説明文にUIデザインへのリンク追加
129
+
130
+ ### Step 4: `design-generator.md` 更新(Step 2に依存)
131
+
132
+ **パス**: `.claude/agents/einja/issue-specs/design-generator.md`
133
+
134
+ - ステップ0: ui-design.penの存在確認を追加
135
+ - ステップ1: 優先読み込みリストにui-design.penを追加
136
+ - セクション10(画面設計): ui-design.pen存在時はPencil MCPで参照(batch_get + get_screenshot)
137
+ - tools: `mcp__pencil__batch_get`, `mcp__pencil__get_screenshot` を追加(読み取り専用)
138
+
139
+ ## ui-design.pen と design.md の関係
140
+
141
+ | 観点 | ui-design.pen (Phase 2) | design.md (Phase 3) |
142
+ |------|------------------------|---------------------|
143
+ | 形式 | ビジュアル(.penファイル) | テキスト(mermaid/表) |
144
+ | 目的 | UX検証・デザイン合意 | 実装仕様の定義 |
145
+ | git管理 | .penファイルをコミット | 通常のmdファイル |
146
+ | セクション10 画面設計 | 各画面のビジュアルモックアップ | mermaid図(Pencil MCPで.penを参照して作成) |
147
+
148
+ **補完関係**: ui-design.pen=「何をどう見せるか」、design.md=「どう実装するか」
149
+
150
+ ## 実行順序
151
+
152
+ ```
153
+ Step 1 ─┐
154
+ ├─→ Step 3 ─→ 完了
155
+ Step 2 ─┤
156
+ └─→ Step 4
157
+ ```
158
+
159
+ Step 1とStep 2は並行実行可能。Step 3はStep 1,2完了後、Step 4はStep 2完了後。
160
+
161
+ ## Codexレビュー指摘事項への対応
162
+
163
+ | 指摘 | 対応 |
164
+ |------|------|
165
+ | mcpServersが下流プロジェクトにコピーされる | グローバル設定に配置、プロジェクトはpermissionsのみ |
166
+ | .penファイルのgit管理 | .penファイルをそのままgitコミット |
167
+ | batch_designのAPI仕様未記載 | エージェント内でget_guidelinesで仕様を取得してから実行 |
168
+ | Phase 2スキップ基準が曖昧 | キーワードベースの判定基準を明示 |
169
+ | allowed-tools更新の必要性 | Skillからサブエージェント経由で使うため追加 |
170
+
171
+ ## 検証方法
172
+
173
+ 1. **Pencil MCP接続テスト**: `mcp__pencil__get_editor_state` が応答するか確認
174
+ 2. **SKILL.md全体フロー確認**: Phase番号の整合性、次ステップへの参照が正しいか目視確認
175
+ 3. **新規エージェント構文確認**: frontmatterの形式が既存エージェント(design-generator.md等)と一致するか確認
176
+ 4. **CLIビルドへの影響確認**: agents/、skills/配下の新ファイルが`presets/default/`に自動コピーされることを確認
@@ -0,0 +1,16 @@
1
+ # TODO: create-einja-app 利用者体験の改善
2
+
3
+ ## 進捗
4
+
5
+ | # | タスク | 状態 | 担当 |
6
+ |---|--------|------|------|
7
+ | 1 | template.ts に `.sh` ファイルの実行権限付与処理を追加 | ✅ 完了 | sub-agent-1 |
8
+ | 2 | init.sh から `pnpm install` を削除(2ファイル) | ✅ 完了 | sub-agent-2 |
9
+ | 3 | README にトラブルシューティング項目を追加 | ✅ 完了 | sub-agent-3 |
10
+ | 4 | テストのモック順修正 | ✅ 完了 | sub-agent-4 |
11
+ | 5 | 検証(テスト・lint・typecheck) | ✅ 完了 | 親エージェント |
12
+
13
+ ## 検証結果
14
+ - `pnpm -F create-einja-app test`: 108テスト全パス
15
+ - `pnpm prepush`: lint + typecheck + test 全7タスク成功
16
+ - テンプレート `templates/default/` は `.gitignore` 管理。ビルド時に `scripts/init.sh` から自動生成
@@ -0,0 +1,12 @@
1
+ # TODO: direnvハング修正 + 秘密鍵ローテーション自動化
2
+
3
+ ## 進捗
4
+
5
+ | TODO | 内容 | 担当 | 状態 |
6
+ |------|------|------|------|
7
+ | TODO-1 | ensure-serena.sh: lsof → nc -z | Agent-A | ✅ 完了 |
8
+ | TODO-2 | env-rotate-secrets.ts: 非対話モード追加 | Agent-B | ✅ 完了 |
9
+ | TODO-3 | post-setup.ts: 処理順序変更 + 自動ローテーション | Agent-C | ✅ 完了 |
10
+ | TODO-4 | .gitignore: .bak パターン追加 | Agent-C | ✅ 完了 |
11
+ | 検証 | prepush (lint + typecheck + test) | 親 | ✅ 全パス |
12
+ | 検証 | git diff 確認 | 親 | ✅ 意図通り |
@@ -0,0 +1,34 @@
1
+ # TODO: GitHub Actions リリースワークフロー + 承認フロー
2
+
3
+ ## Phase 1: changesets基盤導入
4
+ - [x] `package.json` に devDependencies + scripts 追加
5
+ - [x] `.changeset/config.json` 新規作成
6
+ - [x] `pnpm install` で依存関係インストール
7
+
8
+ ## Phase 3: deploy-stable-branches.yml 大規模改修
9
+ - [x] ワークフロー全体ガード(無限ループ防止)追加
10
+ - [x] `permissions: contents: write` 追加
11
+ - [x] migrate ジョブをブランチ別に分割
12
+ - [x] deploy ジョブをブランチ別に分割(develop/staging/production)
13
+ - [x] release-staging ジョブ追加(PreRelease作成)
14
+ - [x] release-production ジョブ追加(changeset消費 + Release作成)
15
+
16
+ ## Phase 4: .github/release.yml
17
+ - [x] リリースノート設定ファイル新規作成
18
+
19
+ ## Phase 5: changeset-status.yml
20
+ - [x] PR上のchangesetステータス表示ワークフロー新規作成
21
+
22
+ ## Phase 6: einja-create-pr Skill
23
+ - [x] `.claude/skills/einja-create-pr/SKILL.md` 新規作成
24
+ - [x] `.claude/commands/einja/issue-exec.md` のPR作成部分をeinja-create-pr呼び出しに変更
25
+
26
+ ## Phase 7: ドキュメント追記
27
+ - [x] `docs/einja/steering/infrastructure/deployment.md` にリリース管理セクション追記
28
+ - [x] `docs/einja/steering/development-workflow.md` にchangeset運用フロー追記
29
+
30
+ ## 検証
31
+ - [x] YAML構文検証(deploy-stable-branches.yml, changeset-status.yml)
32
+ - [x] JSON構文検証(.changeset/config.json)
33
+ - [x] ワークフロージョブ構造確認(9ジョブ、ブランチ別分岐、環境設定)
34
+ - [x] `pnpm prepush` 通過(lint + typecheck + test)
@@ -0,0 +1,24 @@
1
+ # TODO: task-spec → issue-spec リネーム + コマンド→Skill移行
2
+
3
+ ## Phase 1: ファイル移動・作成
4
+
5
+ - [x] TG-1.1: エージェントディレクトリ移動+ファイルリネーム
6
+ - [x] TG-1.2: スキルディレクトリリネーム
7
+ - [x] TG-1.3: spec-create → einja-issue-spec-create Skill移行
8
+ - [x] TG-1.4: task-exec → einja-task-exec Skill移行
9
+ - [x] TG-1.5: update-docs-by-task-specs リネーム
10
+
11
+ ## Phase 2: 参照更新
12
+
13
+ - [x] TG-2.1: エージェント内部参照更新(10ファイル)
14
+ - [x] TG-2.2: スキル内部参照更新(9ファイル)
15
+ - [x] TG-2.3: コマンド/設定ファイル参照更新(4ファイル)
16
+ - [x] TG-2.4: docs/einja/ 参照更新(5ファイル)
17
+ - [x] TG-2.5: CLAUDE.md + README.md 更新
18
+
19
+ ## Phase 3: 検証
20
+
21
+ - [x] TG-3.1: 参照整合性チェック(旧パス残存ゼロ確認、1箇所修正)
22
+ - [x] TG-3.2: pnpm prepush 通過確認
23
+ - [x] TG-3.2: .cursor/commands/ 旧ファイル手動削除
24
+ - [ ] TG-3.2: sync-cursor-commands 再生成(コミット後に実行推奨)
@@ -0,0 +1,18 @@
1
+ # TODO: einja-skill-creator 公式版追従改善
2
+
3
+ ## Phase 0: plan-mode-skill-loader.sh hook修正
4
+ - [x] hookのデバッグ・修正(`hookSpecificOutput`内に`additionalContext`を配置)
5
+
6
+ ## Phase 1: スクリプト互換性修正
7
+ - [x] 1-a. run_loop.py を公式版ベースに再構築(holdout float化、並列バッチ評価、blinded_history、ブラウザ自動起動、results-dir)
8
+ - [x] 1-b. improve_description.py のblinded_history対応(test_results引数削除)
9
+ - [x] 1-c. aggregate_benchmark.py を公式版に差し替え(旧版→compare_runs.py)
10
+
11
+ ## Phase 2: SKILL.md内容補完
12
+ - [x] 2-a. Phase 1連動のコマンド例更新(holdout 0.4、improve-model、results-dir記載)
13
+ - [x] 2-b. 公式版の重要な詳細を追記(#5 grading.jsonフィールド警告, #6 eval query Good/Bad例, #7 タイミング即時処理, #8 コアループ再掲+TodoList, #9 Claude.ai制限拡充, #12 feedback.jsonスキーマ, #13 Coworkアクセス注記)
14
+ - [x] 2-c. compare_runs.py の説明追加
15
+
16
+ ## Phase 3: UX改善
17
+ - [x] generate_report.py のstdin対応追加(位置引数、-o省略可、stdoutデフォルト)
18
+ - [x] 回帰テスト(init_skill.py, quick_validate.py構文チェック・import確認)
@@ -0,0 +1,28 @@
1
+ # Plan: einja-project-overview SKILL.md の参照先再定義
2
+
3
+ ## Context
4
+
5
+ 「プロジェクト概要」Skillが関心事の異なるドキュメント(コーディング規約、インフラ管理Skill等)を参照していた。「このプロジェクトは何か?どういう構造か?」に答えるハブとして、適切な参照先のみに絞る。
6
+
7
+ ## 変更内容
8
+
9
+ **対象ファイル**: `.claude/skills/einja-project-overview/SKILL.md`
10
+
11
+ ### 参照すべきドキュメント(3つ)
12
+
13
+ | 参照 | 目的 |
14
+ |------|------|
15
+ | `docs/einja/steering/README.md` | 全ドキュメントへのナビゲーションハブ |
16
+ | `docs/einja/steering/product.md` | 何のためのプロジェクトか(製品ビジョン) |
17
+ | `docs/einja/steering/architecture.md` | どういう技術構成か |
18
+
19
+ ### 除外するもの
20
+
21
+ - `infra-maintenance` Skillリンク → インフラ運用は別の関心事
22
+ - コーディング規約・コンポーネント設計 → 開発ガイドラインの関心事
23
+ - `db-schema-design.md` → スキーマ詳細設計であり概要ではない
24
+ - `backend-architecture.md` → 4層設計の実装詳細
25
+
26
+ ## 検証
27
+
28
+ - SKILL.md の内容を `Read` で確認