create-einja-app 0.3.1 → 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.
- package/README.md +34 -1
- package/dist/cli.js +92 -80
- 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 +27 -0
- package/templates/default/.claude/settings.json +29 -1
- package/templates/default/.claude/skills/cli-package-specs/SKILL.md +247 -0
- package/templates/default/.einja-sync.json +1 -1
- package/templates/default/.env.personal.example +6 -2
- package/templates/default/.envrc +5 -0
- package/templates/default/.github/release.yml +10 -0
- package/templates/default/.github/workflows/changeset-status.yml +60 -0
- package/templates/default/.github/workflows/deploy-pr-preview.yml +23 -24
- package/templates/default/.github/workflows/deploy-stable-branches.yml +336 -100
- package/templates/default/.mcp.json +2 -12
- package/templates/default/.serena/project.yml +7 -0
- package/templates/default/CLAUDE.md +61 -10
- package/templates/default/README.md +22 -10
- package/templates/default/apps/admin/package.json +1 -1
- package/templates/default/apps/admin/tsconfig.json +2 -1
- package/templates/default/apps/web/package.json +1 -1
- package/templates/default/apps/web/tsconfig.json +2 -1
- package/templates/default/docs/plans/.gitkeep +0 -0
- 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-greeting-flamingo-agent-a87e67c.md +221 -0
- package/templates/default/docs/plans/ancient-greeting-flamingo-agent-ab73a1c.md +107 -0
- package/templates/default/docs/plans/ancient-greeting-flamingo.md +120 -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/bright-stargazing-dawn.md +87 -0
- package/templates/default/docs/plans/calm-stirring-bonbon.md +196 -0
- package/templates/default/docs/plans/calm-watching-widget.md +111 -0
- package/templates/default/docs/plans/cheerful-wiggling-ullman.md +164 -0
- package/templates/default/docs/plans/compiled-humming-cherny.md +94 -0
- package/templates/default/docs/plans/composed-doodling-mountain.md +362 -0
- package/templates/default/docs/plans/dapper-launching-lynx.md +81 -0
- package/templates/default/docs/plans/dazzling-foraging-cascade.md +32 -0
- package/templates/default/docs/plans/effervescent-munching-kite-agent-ac08baf.md +672 -0
- package/templates/default/docs/plans/effervescent-munching-kite-agent-aecc373.md +442 -0
- package/templates/default/docs/plans/effervescent-munching-kite.md +263 -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/fix-orphan-cleaner-review.md +25 -0
- package/templates/default/docs/plans/fix-sync-template-variables.md +162 -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/glimmering-giggling-sedgewick.md +126 -0
- package/templates/default/docs/plans/glittery-swimming-bachman.md +78 -0
- package/templates/default/docs/plans/happy-watching-toast.md +56 -0
- package/templates/default/docs/plans/harmonic-strolling-nebula.md +210 -0
- package/templates/default/docs/plans/idempotent-wiggling-cherny.md +122 -0
- package/templates/default/docs/plans/import-alias-refactor.md +75 -0
- package/templates/default/docs/plans/lazy-percolating-sloth-agent-abda679.md +346 -0
- package/templates/default/docs/plans/lazy-percolating-sloth.md +151 -0
- package/templates/default/docs/plans/linked-greeting-llama-agent-a7a6e5b.md +345 -0
- package/templates/default/docs/plans/linked-greeting-llama.md +467 -0
- package/templates/default/docs/plans/lovely-bubbling-rose.md +80 -0
- package/templates/default/docs/plans/optimized-watching-sprout.md +149 -0
- package/templates/default/docs/plans/peaceful-beaming-toast-agent-a292da6.md +288 -0
- package/templates/default/docs/plans/peaceful-beaming-toast-agent-a819699.md +366 -0
- package/templates/default/docs/plans/peaceful-beaming-toast-agent-ac11de2.md +474 -0
- package/templates/default/docs/plans/peaceful-beaming-toast.md +345 -0
- package/templates/default/docs/plans/purrfect-spinning-hickey-agent-ae6194c.md +300 -0
- package/templates/default/docs/plans/purrfect-spinning-hickey-agent-ae6900e.md +444 -0
- package/templates/default/docs/plans/purrfect-spinning-hickey.md +361 -0
- package/templates/default/docs/plans/recursive-fluttering-mitten.md +176 -0
- package/templates/default/docs/plans/recursive-kindling-lemon-agent-a42199e.md +186 -0
- package/templates/default/docs/plans/recursive-kindling-lemon.md +36 -0
- package/templates/default/docs/plans/seed-migration-tests.md +47 -0
- package/templates/default/docs/plans/sprightly-leaping-manatee.md +224 -0
- package/templates/default/docs/plans/stateful-wishing-lerdorf.md +161 -0
- package/templates/default/docs/plans/streamed-purring-wreath.md +40 -0
- package/templates/default/docs/plans/synthetic-percolating-pearl.md +101 -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-fix-sync-template-variables.md +21 -0
- package/templates/default/docs/plans/todo-github-actions-release-workflow.md +34 -0
- package/templates/default/docs/plans/todo-issue-spec-rename.md +24 -0
- package/templates/default/docs/plans/todo-phase4-marker-update.md +39 -0
- package/templates/default/docs/plans/todo-skill-creator-sync.md +23 -0
- package/templates/default/docs/plans/todo-skill-creator-upgrade.md +18 -0
- package/templates/default/docs/plans/typed-snuggling-parnas-agent-a6f6391.md +476 -0
- package/templates/default/docs/plans/typed-snuggling-parnas-agent-adb678b.md +144 -0
- package/templates/default/docs/plans/typed-snuggling-parnas.md +84 -0
- package/templates/default/docs/plans/velvety-chasing-spark.md +28 -0
- package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a30aa4f.md +534 -0
- package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a57a278.md +508 -0
- package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a90b809.md +421 -0
- package/templates/default/docs/plans/warm-hopping-lighthouse.md +199 -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/docs/verification-test.md +2 -0
- package/templates/default/gitignore +9 -1
- package/templates/default/package.json +6 -2
- package/templates/default/packages/admin-ui/package.json +1 -1
- package/templates/default/packages/server-core/tsconfig.json +6 -1
- package/templates/default/pnpm-lock.yaml +823 -57
- package/templates/default/scripts/ensure-serena.sh +75 -0
- 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/lib/worktree-config.ts +64 -0
- package/templates/default/scripts/setup-dev.ts +16 -1
- package/templates/default/scripts/stop-serena.sh +25 -0
- package/templates/default/scripts/worktree/dev.ts +2 -2
- 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/scripts/{cli-template-update.ts → _cli-template-update.ts} +0 -0
- /package/templates/default/scripts/{template-update.ts → _template-update.ts} +0 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Plan: OrbStack推奨統一 + CLAUDE.md修正 + GitHub自動セットアップ + パッケージ仕様Skill
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
1. `create-einja-app` がGitHubリポジトリの作成・設定を行っていない
|
|
6
|
+
2. Docker環境でOrbStackを推奨に統一したい
|
|
7
|
+
3. CLAUDE.mdの「マネージドディレクトリ(編集禁止)」は下流リポジトリ向けルールであり、このテンプレートリポジトリ(原本)では `docs/einja/` は編集可能
|
|
8
|
+
4. 2パッケージ(`@einja/dev-cli`, `create-einja-app`)のビルド仕様を毎回確認するのが手間なので、Skillとして参照できるようにする
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## TODO-0: パッケージ仕様参照Skill作成
|
|
13
|
+
|
|
14
|
+
### 目的
|
|
15
|
+
`@einja/dev-cli` と `create-einja-app` の2パッケージのビルド・テンプレート仕様を、既存ドキュメント・コードへの参照として1箇所にまとめる。配布しない(このリポジトリ専用)。
|
|
16
|
+
|
|
17
|
+
### 作成ファイル
|
|
18
|
+
- `.claude/skills/cli-package-specs/SKILL.md`
|
|
19
|
+
|
|
20
|
+
### 命名理由
|
|
21
|
+
`einja-` プレフィックスなし → `file-copier.ts:195` のフィルタにより `presets/default/` にコピーされない
|
|
22
|
+
|
|
23
|
+
### 内容(参照ベース)
|
|
24
|
+
- 2パッケージの概要と役割
|
|
25
|
+
- ビルドパイプライン
|
|
26
|
+
- `packages/cli/scripts/generate-template.mjs`: CLAUDE.md → CLAUDE.md.template(`@einja:excluded` 除去 + プレースホルダー変換)
|
|
27
|
+
- `packages/create-einja-app/scripts/template-update.ts`: テンプレートファイルコピー(CLAUDE.mdは無変換でコピー)
|
|
28
|
+
- `scripts/_cli-template-update.ts`: CLIプリセット更新(`FileCopier` 経由、CLAUDE.mdは対象外)
|
|
29
|
+
- `scripts/_template-update.ts`: create-einja-appテンプレート更新(README.mdのみexcluded除去)
|
|
30
|
+
- ファイルマッピング(CLAUDE.md「CLIパッケージの二重管理禁止」テーブル参照)
|
|
31
|
+
- コピー対象フィルタ: `.claude/skills/einja-*/` のみ配布(`file-copier.ts:195`)
|
|
32
|
+
- マーカー仕様: `@einja:excluded`, `@einja:project-private`, `@einja:managed`
|
|
33
|
+
- `post-setup.ts` の処理フロー参照
|
|
34
|
+
- `setup-dev.ts` の処理フロー参照
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## TODO-1: CLAUDE.md excludedセクション修正
|
|
39
|
+
|
|
40
|
+
### 変更方針
|
|
41
|
+
マネージドディレクトリセクション自体は残す(下流リポジトリ向けに正しいルール)。`@einja:excluded` ブロック内に以下2点を追加。
|
|
42
|
+
|
|
43
|
+
### 変更内容(`CLAUDE.md` excludedセクション内)
|
|
44
|
+
|
|
45
|
+
#### 1. パッケージ仕様Skillの参照指示を追加
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
### パッケージビルド仕様(テンプレートリポジトリ限定)
|
|
49
|
+
|
|
50
|
+
`@einja/dev-cli` と `create-einja-app` の2パッケージのビルド・テンプレート仕様については、以下のSkillを参照すること:
|
|
51
|
+
|
|
52
|
+
`.claude/skills/cli-package-specs/SKILL.md`
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
#### 2. マネージドディレクトリのオーバーライド注記を追加
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
### マネージドディレクトリの編集について(テンプレートリポジトリ限定)
|
|
59
|
+
|
|
60
|
+
このリポジトリは `docs/einja/` の**原本(Single Source of Truth)**である。
|
|
61
|
+
上記「マネージドディレクトリ(編集禁止)」ルールは下流リポジトリ(create-einja-appで生成されたプロジェクト)向けであり、
|
|
62
|
+
**このリポジトリでは `docs/einja/` 配下の全ファイルを編集してよい**。
|
|
63
|
+
変更はビルド時に `presets/default/` へ自動コピーされる。
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 対象ファイル
|
|
67
|
+
- `CLAUDE.md`(excludedセクション内 L218付近)
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## TODO-2: OrbStack推奨に統一
|
|
72
|
+
|
|
73
|
+
### 2-1. `scripts/setup-dev.ts` 修正(L621-625)
|
|
74
|
+
|
|
75
|
+
Docker未インストール時のメッセージをOS別に分岐し、macOSではOrbStack推奨:
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
} else {
|
|
79
|
+
warn("Dockerがインストールされていません");
|
|
80
|
+
const platform = getPlatform();
|
|
81
|
+
if (platform === "macos") {
|
|
82
|
+
console.log(colors.yellow(" OrbStack(Docker互換の軽量ツール)のインストールを推奨します:"));
|
|
83
|
+
console.log(colors.cyan(" brew install orbstack"));
|
|
84
|
+
console.log(colors.gray(" または: https://orbstack.dev/"));
|
|
85
|
+
} else if (platform === "windows") {
|
|
86
|
+
console.log(colors.yellow(" Dockerをインストールしてください:"));
|
|
87
|
+
console.log(colors.gray(" https://docs.docker.com/desktop/install/windows-install/"));
|
|
88
|
+
} else {
|
|
89
|
+
console.log(colors.yellow(" Docker Engineをインストールしてください:"));
|
|
90
|
+
console.log(colors.gray(" https://docs.docker.com/engine/install/"));
|
|
91
|
+
}
|
|
92
|
+
console.log(colors.gray(" インストール後、以下を実行してください:"));
|
|
93
|
+
console.log(colors.gray(" docker-compose up -d postgres"));
|
|
94
|
+
console.log(colors.gray(" pnpm db:generate && pnpm db:push"));
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 2-2. `docs/einja/instructions/deployment-setup.md` 修正(L38)
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Before: | Docker | [Docker Desktop](https://www.docker.com/products/docker-desktop/) | PostgreSQL実行 |
|
|
102
|
+
After: | Docker | macOS: [OrbStack](https://orbstack.dev/)(推奨)/ その他: [Docker Engine](https://docs.docker.com/engine/install/) | PostgreSQL実行 |
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 2-3. `docs/einja/instructions/local-server-environment-and-worktree.md` 修正(L62-63)
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
Before:
|
|
109
|
+
- macOS: [Docker Desktop for Mac](https://docs.docker.com/desktop/install/mac-install/)
|
|
110
|
+
- Windows: [Docker Desktop for Windows](https://docs.docker.com/desktop/install/windows-install/)
|
|
111
|
+
|
|
112
|
+
After:
|
|
113
|
+
- macOS: [OrbStack](https://orbstack.dev/)(推奨。`brew install orbstack`)
|
|
114
|
+
- Windows: [Docker Desktop for Windows](https://docs.docker.com/desktop/install/windows-install/)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 対象ファイル
|
|
118
|
+
- `scripts/setup-dev.ts` (L596-625)
|
|
119
|
+
- `docs/einja/instructions/deployment-setup.md` (L38)
|
|
120
|
+
- `docs/einja/instructions/local-server-environment-and-worktree.md` (L62-63)
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## TODO-3: GitHub自動セットアップスクリプト作成
|
|
125
|
+
|
|
126
|
+
### 概要
|
|
127
|
+
`scripts/init-github.ts` を新規作成。`pnpm init:github` で実行。
|
|
128
|
+
|
|
129
|
+
### 処理フロー
|
|
130
|
+
1. `gh` CLIの存在確認(なければインストール案内して終了)
|
|
131
|
+
2. `gh auth status` で認証確認
|
|
132
|
+
3. `git remote get-url origin` でリモート有無確認
|
|
133
|
+
4. リモートなし → org/repo名を対話入力(デフォルト: ディレクトリ名)→ `gh repo create`
|
|
134
|
+
5. `git push -u origin main`
|
|
135
|
+
6. Branch Protection設定(`gh api`)
|
|
136
|
+
7. GitHub Secrets設定(`.env.keys` から読み取り → `gh secret set`)
|
|
137
|
+
8. Environments作成(production, preview)
|
|
138
|
+
|
|
139
|
+
### 対象ファイル
|
|
140
|
+
- `scripts/init-github.ts`(新規)
|
|
141
|
+
- `package.json`(`"init:github"` スクリプト追加)
|
|
142
|
+
- `scripts/setup-dev.ts`(完了メッセージに `pnpm init:github` 案内追加)
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 検証方法
|
|
147
|
+
|
|
148
|
+
1. **Skill**: `.claude/skills/cli-package-specs/SKILL.md` が存在し、参照先のファイルパスが正しいこと
|
|
149
|
+
2. **CLAUDE.md**: excludedセクション内にオーバーライド注記があること
|
|
150
|
+
3. **OrbStack**: `grep -r "Docker Desktop"` でsetup-dev.tsとdocs 2ファイルに残っていないこと
|
|
151
|
+
4. **init-github.ts**: `pnpm init:github --help` が動作すること
|
|
152
|
+
5. `pnpm prepush` が通ること
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Plan: AskUserQuestion の選択肢に description 必須記載ルールを追加
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
AskUserQuestionの選択肢を提示する際、`label` だけでは判断材料が不足する。`description` フィールドに詳細説明・注意点・トレードオフを必ず記載するルールをCLAUDE.mdに追加し、パッケージ利用者全体に適用する。
|
|
5
|
+
|
|
6
|
+
**仕様確認結果**: AskUserQuestionの選択肢フィールドは `label`(必須)、`description`(必須)、`markdown`(任意)の3つ。`note` フィールドは存在しない。
|
|
7
|
+
|
|
8
|
+
## 変更内容
|
|
9
|
+
|
|
10
|
+
### 対象ファイル
|
|
11
|
+
- `CLAUDE.md` L163-166「提示形式」セクション
|
|
12
|
+
|
|
13
|
+
### 修正内容
|
|
14
|
+
「提示形式」セクションを以下に書き換え:
|
|
15
|
+
|
|
16
|
+
```markdown
|
|
17
|
+
### 提示形式
|
|
18
|
+
- テーブル形式: 複数項目の比較
|
|
19
|
+
- 番号付きリスト: 詳細説明が必要な場合
|
|
20
|
+
- 推奨オプションには `(推奨)` と理由を付記
|
|
21
|
+
|
|
22
|
+
### 選択肢の記述ルール
|
|
23
|
+
- 各選択肢の `description` に**必ず詳細説明・注意点・補足**を記載する
|
|
24
|
+
- トレードオフ、影響範囲、前提条件など判断に必要な情報を含める
|
|
25
|
+
- ラベルだけで選択させない。ユーザーが十分な情報に基づいて判断できるようにする
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 検証
|
|
29
|
+
- CLAUDE.mdの変更箇所をReadで確認
|
|
30
|
+
- `presets/default/CLAUDE.md.template` はビルド時に自動生成されるため手動更新不要
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Plan: einja-team-exec SKILL.md 書き直し + skill-creator 参考URL規約追加
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
einja-team-exec SKILL.mdがサブエージェントの仕組みをベースに書かれていたが、Agent TeamsのTeammatesはサブエージェントとは完全に別アーキテクチャであることが判明。公式ドキュメント(https://code.claude.com/docs/en/agent-teams)に基づいて正しい仕様で書き直す。
|
|
6
|
+
|
|
7
|
+
また、Skill作成時に参考にした公式ドキュメントやベースとなるSkillのURLをコメントとして記録する規約を、einja-skill-creatorにも追加する。
|
|
8
|
+
|
|
9
|
+
### Teammates vs サブエージェントの根本的な違い
|
|
10
|
+
|
|
11
|
+
| 項目 | Teammates | サブエージェント |
|
|
12
|
+
|------|-----------|--------------|
|
|
13
|
+
| 実体 | 独立したClaude Codeプロセス | メインセッション内の一時的な子プロセス |
|
|
14
|
+
| 通信 | メンバー同士で直接メッセージ可能 | メインにのみ報告 |
|
|
15
|
+
| spawn方法 | 自然言語プロンプトで役割指定 | `subagent_type`で指定 |
|
|
16
|
+
| 特殊化 | general-purposeベース、プロンプトで専門化 | `.claude/agents/`のカスタム定義可能 |
|
|
17
|
+
| コンテキスト | 各自独立したフルコンテキストウィンドウ | メインの指示を引き継ぎ |
|
|
18
|
+
|
|
19
|
+
## 対象ファイル
|
|
20
|
+
|
|
21
|
+
| ファイル | 操作 |
|
|
22
|
+
|---------|------|
|
|
23
|
+
| `.claude/skills/einja-team-exec/SKILL.md` | 全面書き直し |
|
|
24
|
+
| `.claude/skills/einja-skill-creator/SKILL.md` | 参考URL規約の追加 |
|
|
25
|
+
|
|
26
|
+
## 変更内容
|
|
27
|
+
|
|
28
|
+
### 1. einja-team-exec/SKILL.md 書き直し
|
|
29
|
+
|
|
30
|
+
**削除するもの:**
|
|
31
|
+
- `subagent_type`に基づくチームメンバー選出ガイド(テーブル3つ + 編成例)
|
|
32
|
+
- `TeamCreate`/`TaskCreate`/`TaskUpdate`等のサブエージェント用ツール呼び出し手順
|
|
33
|
+
- サブエージェントの文脈で書かれたワークフロー全体
|
|
34
|
+
|
|
35
|
+
**新しく書くもの:**
|
|
36
|
+
- 概要: Teammatesは独立したClaude Codeインスタンスであること
|
|
37
|
+
- spawn方法: 自然言語プロンプトで役割・指示を記述(`subagent_type`ではない)
|
|
38
|
+
- spawn時のプロンプト設計ガイド: 役割・担当範囲・制約を明確に記述する方法
|
|
39
|
+
- プロンプト例(公式ドキュメントのパターンに準拠):
|
|
40
|
+
```
|
|
41
|
+
Create an agent team for [タスク].
|
|
42
|
+
Spawn teammates:
|
|
43
|
+
- [役割1]: [担当範囲と指示]
|
|
44
|
+
- [役割2]: [担当範囲と指示]
|
|
45
|
+
```
|
|
46
|
+
- チームサイズの目安(公式: 3-5 teammates、5-6 tasks/teammate)
|
|
47
|
+
- 通信: 直接メッセージ + 共有タスクリスト
|
|
48
|
+
- ファイル競合回避(公式: 各teammateが異なるファイルを担当)
|
|
49
|
+
- コミット管理(CLAUDE.mdのgit安全ルールはCLAUDE.md経由で自動適用)
|
|
50
|
+
- 完了・シャットダウン手順
|
|
51
|
+
- 参考ドキュメントURLをコメントで記載
|
|
52
|
+
|
|
53
|
+
**参考URLコメント(SKILL.md冒頭、フロントマター直後):**
|
|
54
|
+
```markdown
|
|
55
|
+
<!-- 参考: https://code.claude.com/docs/en/agent-teams -->
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 2. einja-skill-creator/SKILL.md 参考URL規約追加
|
|
59
|
+
|
|
60
|
+
「SKILL.mdの作成」セクション内に以下の規約を追加:
|
|
61
|
+
|
|
62
|
+
**追加箇所**: `#### 記述パターン` セクションの近辺、または「Skill記述ガイド」セクション内
|
|
63
|
+
|
|
64
|
+
**追加内容**:
|
|
65
|
+
```
|
|
66
|
+
#### 参考ドキュメントの記録
|
|
67
|
+
|
|
68
|
+
Skill作成時に参考にした公式ドキュメント、ベースとなるSkill、
|
|
69
|
+
設計判断の根拠となった情報源をSKILL.md内にHTMLコメントで記載する。
|
|
70
|
+
|
|
71
|
+
**記載箇所**: フロントマター(`---`)直後
|
|
72
|
+
|
|
73
|
+
**フォーマット**:
|
|
74
|
+
<!-- 参考: https://example.com/docs/feature -->
|
|
75
|
+
<!-- ベース: .claude/skills/existing-skill/SKILL.md -->
|
|
76
|
+
|
|
77
|
+
これにより、Skillの設計根拠を後から追跡でき、
|
|
78
|
+
公式仕様の変更時に影響範囲を特定しやすくなる。
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 検証
|
|
82
|
+
|
|
83
|
+
- [ ] SKILL.mdのフロントマターが正しいYAML形式であること
|
|
84
|
+
- [ ] サブエージェント関連の記述(`subagent_type`、`TaskCreate`等)が残っていないこと
|
|
85
|
+
- [ ] 公式ドキュメントの仕様と矛盾がないこと
|
|
86
|
+
- [ ] 参考URLコメントがSKILL.mdに記載されていること
|
|
87
|
+
- [ ] einja-skill-creatorに参考URL規約が追加されていること
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# ガイドライン系Skill廃止 → docs一元管理
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
開発ガイドラインが `.claude/skills/` と `docs/einja/steering/` に分散している。
|
|
6
|
+
api-development, backend-architecture, frontend-development は既に docs に実体があり Skill は薄いラッパー。
|
|
7
|
+
coding-standards, component-design は Skill 内の `references/` に内容が埋め込まれている。
|
|
8
|
+
playwright-mcp は SKILL.md 自体が内容。
|
|
9
|
+
|
|
10
|
+
**目的**: `docs/einja/steering/` にガイドラインを一元管理し、6つの不要なSkillを廃止する。
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Step 1: docsファイルの作成(内容移動)
|
|
15
|
+
|
|
16
|
+
### 1-1. `docs/einja/steering/development/coding-standards.md` 作成
|
|
17
|
+
|
|
18
|
+
SKILL.md の本文(基本原則、クイックリファレンス、ツール設定)+ references/ 4ファイルを1つに統合。
|
|
19
|
+
|
|
20
|
+
統合元:
|
|
21
|
+
- `.claude/skills/einja-coding-standards/SKILL.md` (行6-132)
|
|
22
|
+
- `.claude/skills/einja-coding-standards/references/typescript-rules.md`
|
|
23
|
+
- `.claude/skills/einja-coding-standards/references/naming-conventions.md`
|
|
24
|
+
- `.claude/skills/einja-coding-standards/references/prohibited-patterns.md`
|
|
25
|
+
- `.claude/skills/einja-coding-standards/references/import-conventions.md`
|
|
26
|
+
|
|
27
|
+
構成: SKILL.mdの概要・基本原則・クイックリファレンス → 各references を見出し付きセクションとして追加。
|
|
28
|
+
`@einja:managed` マーカーを付与。
|
|
29
|
+
|
|
30
|
+
### 1-2. `docs/einja/steering/development/component-design.md` 作成
|
|
31
|
+
|
|
32
|
+
SKILL.md の本文 + references/ 3ファイルを1つに統合。
|
|
33
|
+
|
|
34
|
+
統合元:
|
|
35
|
+
- `.claude/skills/einja-component-design/SKILL.md` (行6-109)
|
|
36
|
+
- `.claude/skills/einja-component-design/references/directory-structure.md`
|
|
37
|
+
- `.claude/skills/einja-component-design/references/props-patterns.md`
|
|
38
|
+
- `.claude/skills/einja-component-design/references/styling-guide.md`
|
|
39
|
+
|
|
40
|
+
構成: SKILL.mdの概要・基本原則・クイックリファレンス → 各references を見出し付きセクションとして追加。
|
|
41
|
+
`@einja:managed` マーカーを付与。
|
|
42
|
+
|
|
43
|
+
### 1-3. `docs/einja/steering/development/playwright-guidelines.md` 作成
|
|
44
|
+
|
|
45
|
+
統合元:
|
|
46
|
+
- `.claude/skills/einja-playwright-mcp/SKILL.md` (全54行)
|
|
47
|
+
|
|
48
|
+
`@einja:managed` マーカーを付与。
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Step 2: 参照元の更新
|
|
53
|
+
|
|
54
|
+
### 2-1. `.claude/agents/einja/task/task-executer.md`
|
|
55
|
+
|
|
56
|
+
**フロントマター**: skills から5つ削除
|
|
57
|
+
```yaml
|
|
58
|
+
skills:
|
|
59
|
+
- spec-context-loader
|
|
60
|
+
- general-context-loader
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**本文 行110-126**: 実装種別テーブル + 詳細規約パスを docs 直接参照に変更
|
|
64
|
+
```markdown
|
|
65
|
+
#### 1.3 実装種別に応じたドキュメント参照
|
|
66
|
+
|
|
67
|
+
実装種別に応じて、以下のドキュメントを参照すること:
|
|
68
|
+
|
|
69
|
+
| 実装種別 | 参照ドキュメント |
|
|
70
|
+
|---------|--------------|
|
|
71
|
+
| **API実装** | `docs/einja/steering/development/api-development.md` |
|
|
72
|
+
| **フロントエンド実装** | `docs/einja/steering/development/frontend-development.md` |
|
|
73
|
+
| **バックエンド実装** | `docs/einja/steering/development/backend-architecture.md` |
|
|
74
|
+
| **コード全般** | `docs/einja/steering/development/coding-standards.md` |
|
|
75
|
+
| **コンポーネント設計** | `docs/einja/steering/development/component-design.md` |
|
|
76
|
+
|
|
77
|
+
**詳細規約が必要な場合**(Readツールで上記ドキュメントの該当セクションを読み込み)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 2-2. `.claude/skills/einja-project-overview/SKILL.md`
|
|
81
|
+
|
|
82
|
+
行24-26 の関連Skillセクションを docs 参照に変更:
|
|
83
|
+
```markdown
|
|
84
|
+
## 関連ドキュメント
|
|
85
|
+
|
|
86
|
+
- `docs/einja/steering/development/coding-standards.md` - コーディング規約(インポートパス規約含む)
|
|
87
|
+
- [infra-maintenance](../einja-infra-maintenance/SKILL.md) - 開発環境セットアップ・サーバー管理
|
|
88
|
+
- `docs/einja/steering/development/component-design.md` - コンポーネント設計ガイドライン
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 2-3. `.claude/skills/einja-skill-creator/SKILL.md`
|
|
92
|
+
|
|
93
|
+
行420-421 の例示を更新:
|
|
94
|
+
- `einja-coding-standards` → docs参照パスに変更、または例示そのものを別のSkillに差し替え
|
|
95
|
+
|
|
96
|
+
### 2-4. `CLAUDE.md`
|
|
97
|
+
|
|
98
|
+
プロジェクト概要セクションの `einja-coding-standards` 参照を docs パスに変更:
|
|
99
|
+
```markdown
|
|
100
|
+
- `einja-project-overview` - 構成、技術スタック、頻出コマンド
|
|
101
|
+
- `docs/einja/steering/development/coding-standards.md` - コーディング規約、インポートパス規約
|
|
102
|
+
- `einja-infra-maintenance` - 開発環境セットアップ、サーバー管理
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 2-5. `README.md`
|
|
106
|
+
|
|
107
|
+
行411-412 のリンクを docs パスに変更:
|
|
108
|
+
```markdown
|
|
109
|
+
- [コーディング規約](./docs/einja/steering/development/coding-standards.md)
|
|
110
|
+
- [コンポーネント設計ガイドライン](./docs/einja/steering/development/component-design.md)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 2-6. `docs/einja/steering/README.md`
|
|
114
|
+
|
|
115
|
+
開発ガイドテーブルに3ファイルを追加:
|
|
116
|
+
```markdown
|
|
117
|
+
| [コーディング規約](development/coding-standards.md) | TypeScript/React命名規則、禁止パターン、インポート規約 | 全開発者 |
|
|
118
|
+
| [コンポーネント設計](development/component-design.md) | ディレクトリ構造、Props設計、スタイリング | フロントエンド開発者 |
|
|
119
|
+
| [Playwright動作確認](development/playwright-guidelines.md) | 一時ファイル管理、ブラウザ設定 | QA、開発者 |
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
フロントエンド開発者の必読セクションにも追加。
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Step 3: Skillディレクトリの削除
|
|
127
|
+
|
|
128
|
+
以下の6ディレクトリを削除:
|
|
129
|
+
- `.claude/skills/einja-api-development/`
|
|
130
|
+
- `.claude/skills/einja-backend-architecture/`
|
|
131
|
+
- `.claude/skills/einja-frontend-development/`
|
|
132
|
+
- `.claude/skills/einja-coding-standards/`
|
|
133
|
+
- `.claude/skills/einja-component-design/`
|
|
134
|
+
- `.claude/skills/einja-playwright-mcp/`
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Step 4: ビルドスクリプトの更新
|
|
139
|
+
|
|
140
|
+
### `packages/cli/scripts/copy-presets.mjs`
|
|
141
|
+
|
|
142
|
+
mappings 配列から以下の6エントリを削除(行61-89):
|
|
143
|
+
- einja-api-development (行61-65)
|
|
144
|
+
- einja-backend-architecture (行66-70)
|
|
145
|
+
- einja-coding-standards (行71-75)
|
|
146
|
+
- einja-component-design (行76-80)
|
|
147
|
+
- einja-frontend-development (行86-90)
|
|
148
|
+
|
|
149
|
+
※ einja-playwright-mcp はこのファイルに含まれていないので変更不要。
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Step 5: presets/default の同期確認
|
|
154
|
+
|
|
155
|
+
ビルドスクリプトでコピーされる `presets/default/` 配下の対応するディレクトリも削除:
|
|
156
|
+
- `packages/cli/presets/default/.claude/skills/einja-api-development/`
|
|
157
|
+
- `packages/cli/presets/default/.claude/skills/einja-backend-architecture/`
|
|
158
|
+
- `packages/cli/presets/default/.claude/skills/einja-frontend-development/`
|
|
159
|
+
- `packages/cli/presets/default/.claude/skills/einja-coding-standards/`
|
|
160
|
+
- `packages/cli/presets/default/.claude/skills/einja-component-design/`
|
|
161
|
+
|
|
162
|
+
※ これらは次回ビルド時に生成されなくなるが、既存のものは手動削除が必要。
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 検証
|
|
167
|
+
|
|
168
|
+
1. `pnpm --filter @einja/dev-cli build` でビルドが通ること
|
|
169
|
+
2. `pnpm prepush` (lint + typecheck + test) が通ること
|
|
170
|
+
3. 削除した Skill への参照が残っていないこと: `grep -r "einja-coding-standards\|einja-component-design\|einja-api-development\|einja-frontend-development\|einja-backend-architecture\|einja-playwright-mcp" .claude/ docs/ README.md CLAUDE.md packages/cli/scripts/`
|
|
171
|
+
4. 新しい docs ファイルが正しく配置されていること
|
|
172
|
+
5. `docs/einja/steering/README.md` のリンクが有効であること
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 変更ファイルサマリー
|
|
177
|
+
|
|
178
|
+
| 操作 | ファイル |
|
|
179
|
+
|------|---------|
|
|
180
|
+
| **新規作成** | `docs/einja/steering/development/coding-standards.md` |
|
|
181
|
+
| **新規作成** | `docs/einja/steering/development/component-design.md` |
|
|
182
|
+
| **新規作成** | `docs/einja/steering/development/playwright-guidelines.md` |
|
|
183
|
+
| **編集** | `.claude/agents/einja/task/task-executer.md` |
|
|
184
|
+
| **編集** | `.claude/skills/einja-project-overview/SKILL.md` |
|
|
185
|
+
| **編集** | `.claude/skills/einja-skill-creator/SKILL.md` |
|
|
186
|
+
| **編集** | `CLAUDE.md` |
|
|
187
|
+
| **編集** | `README.md` |
|
|
188
|
+
| **編集** | `docs/einja/steering/README.md` |
|
|
189
|
+
| **編集** | `packages/cli/scripts/copy-presets.mjs` |
|
|
190
|
+
| **削除** | `.claude/skills/einja-api-development/` (1ファイル) |
|
|
191
|
+
| **削除** | `.claude/skills/einja-backend-architecture/` (1ファイル) |
|
|
192
|
+
| **削除** | `.claude/skills/einja-frontend-development/` (1ファイル) |
|
|
193
|
+
| **削除** | `.claude/skills/einja-coding-standards/` (5ファイル) |
|
|
194
|
+
| **削除** | `.claude/skills/einja-component-design/` (4ファイル) |
|
|
195
|
+
| **削除** | `.claude/skills/einja-playwright-mcp/` (1ファイル) |
|
|
196
|
+
| **削除** | `packages/cli/presets/default/.claude/skills/` 対応5ディレクトリ |
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# コミット・プッシュ計画
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
前回のセッションで実施された大規模なSkillリファクタリング(`reference/` → `references/` リネーム、新Skill追加、CLAUDE.mdスリム化、CLIパッケージ更新等)の変更が未コミットの状態で残っている。これらを適切な粒度でコミットし、プッシュする。
|
|
6
|
+
|
|
7
|
+
## 現状の問題点
|
|
8
|
+
|
|
9
|
+
### ステージングの不整合(要修正)
|
|
10
|
+
|
|
11
|
+
以下のファイルは staged では `reference/` → `references/` にリネーム済みだが、ディスク上で削除されている(シンボリックリンクだったファイル):
|
|
12
|
+
|
|
13
|
+
| ファイル | 状態 |
|
|
14
|
+
|---------|------|
|
|
15
|
+
| `einja-coding-standards/references/commit-rules.md` | ステージ済み(rename) → ディスク上削除 |
|
|
16
|
+
| `einja-coding-standards/references/review-guidelines.md` | 同上 |
|
|
17
|
+
| `einja-coding-standards/references/testing-strategy.md` | 同上 |
|
|
18
|
+
| `einja-component-design/references/frontend-development.md` | 同上 |
|
|
19
|
+
| `einja-component-design/references/testing-strategy.md` | 同上 |
|
|
20
|
+
| `einja-task-commit/references/commit-rules.md` | 同上(ディレクトリごと不在) |
|
|
21
|
+
| `einja-task-qa/references/acceptance-criteria-and-qa-guide.md` | 同上 |
|
|
22
|
+
|
|
23
|
+
→ これらの**削除もステージして**コミットに含める必要がある
|
|
24
|
+
|
|
25
|
+
### 未ステージの変更
|
|
26
|
+
|
|
27
|
+
| ファイル | 内容 |
|
|
28
|
+
|---------|------|
|
|
29
|
+
| `.claude/settings.json` | `plansDirectory: "docs/plans"` 追加 |
|
|
30
|
+
| `CLAUDE.md` | さらなるリファクタリング(役割定義の簡潔化、セクション再構成) |
|
|
31
|
+
|
|
32
|
+
## コミット分割計画
|
|
33
|
+
|
|
34
|
+
### コミット1: `refactor(skills): referenceディレクトリをreferencesにリネーム・不要シンボリックリンクを削除`
|
|
35
|
+
|
|
36
|
+
**対象ファイル:**
|
|
37
|
+
- `.claude/skills/einja-coding-standards/` - `reference/` → `references/` リネーム + SKILL.mdパス更新
|
|
38
|
+
- `.claude/skills/einja-component-design/` - 同上
|
|
39
|
+
- `.claude/skills/einja-task-commit/` - 同上
|
|
40
|
+
- `.claude/skills/einja-task-qa/` - 同上
|
|
41
|
+
- `.claude/skills/einja-task-spec-generator/` - 同上
|
|
42
|
+
- `.claude/skills/einja-task-spec-validator/` - 同上
|
|
43
|
+
- 削除済みシンボリックリンクファイル7件のステージング
|
|
44
|
+
- 削除済みSkill: `einja-api-development/reference/`, `einja-backend-architecture/reference/`, `einja-frontend-development/reference/`
|
|
45
|
+
- `.claude/agents/einja/task/task-executer.md` - パス参照更新
|
|
46
|
+
|
|
47
|
+
### コミット2: `feat(skills): einja-project-overview・einja-skill-creator Skill新規作成`
|
|
48
|
+
|
|
49
|
+
**対象ファイル:**
|
|
50
|
+
- `.claude/skills/einja-project-overview/SKILL.md` (新規)
|
|
51
|
+
- `.claude/skills/einja-skill-creator/SKILL.md` (新規)
|
|
52
|
+
- `.claude/skills/einja-skill-creator/scripts/init_skill.py` (新規)
|
|
53
|
+
- `.claude/skills/einja-skill-creator/scripts/package_skill.py` (新規)
|
|
54
|
+
- `.claude/skills/einja-skill-creator/scripts/quick_validate.py` (新規)
|
|
55
|
+
|
|
56
|
+
### コミット3: `feat(skills): import-conventions追加・infra-maintenance/task-qa Skill更新`
|
|
57
|
+
|
|
58
|
+
**対象ファイル:**
|
|
59
|
+
- `.claude/skills/einja-coding-standards/references/import-conventions.md` (新規)
|
|
60
|
+
- `.claude/skills/einja-infra-maintenance/SKILL.md` (更新)
|
|
61
|
+
- `.claude/skills/einja-task-qa/SKILL.md` (更新)
|
|
62
|
+
|
|
63
|
+
### コミット4: `refactor: CLAUDE.mdをスリム化しSkillへ内容を移行`
|
|
64
|
+
|
|
65
|
+
**対象ファイル:**
|
|
66
|
+
- `CLAUDE.md` (ステージ済み + 未ステージ変更をまとめて)
|
|
67
|
+
|
|
68
|
+
### コミット5: `feat(cli): references/ディレクトリ対応・syncフィルター更新`
|
|
69
|
+
|
|
70
|
+
**対象ファイル:**
|
|
71
|
+
- `packages/cli/scripts/copy-presets.mjs`
|
|
72
|
+
- `packages/cli/src/lib/preset-update/file-copier.ts`
|
|
73
|
+
- `packages/cli/src/lib/preset-update/file-copier.test.ts`
|
|
74
|
+
- `packages/cli/src/lib/sync/category-validator.ts`
|
|
75
|
+
- `packages/cli/src/lib/sync/category-validator.test.ts`
|
|
76
|
+
- `packages/cli/src/lib/sync/file-filter.ts`
|
|
77
|
+
- `packages/cli/src/lib/sync/file-filter.test.ts`
|
|
78
|
+
- `packages/cli/docs/SYMLINK_ARCHITECTURE.md`
|
|
79
|
+
- `packages/cli/README.md`
|
|
80
|
+
- `packages/cli/docs/BUILD.md`
|
|
81
|
+
|
|
82
|
+
### コミット6: `docs: 環境セットアップ・Neon CLIリファレンスの更新`
|
|
83
|
+
|
|
84
|
+
**対象ファイル:**
|
|
85
|
+
- `docs/einja/instructions/environment-setup.md`
|
|
86
|
+
- `docs/einja/instructions/local-server-environment-and-worktree.md`
|
|
87
|
+
- `docs/einja/instructions/neon-cli-reference.md`
|
|
88
|
+
|
|
89
|
+
### コミット7: `chore: create-einja-appテンプレート更新・BUILD.md追加`
|
|
90
|
+
|
|
91
|
+
**対象ファイル:**
|
|
92
|
+
- `packages/create-einja-app/.templateignore`
|
|
93
|
+
- `packages/create-einja-app/README.md`
|
|
94
|
+
- `packages/create-einja-app/docs/BUILD.md` (新規)
|
|
95
|
+
|
|
96
|
+
### コミット8: `chore: settings.jsonにplansDirectory追加`
|
|
97
|
+
|
|
98
|
+
**対象ファイル:**
|
|
99
|
+
- `.claude/settings.json`
|
|
100
|
+
|
|
101
|
+
## 実行手順
|
|
102
|
+
|
|
103
|
+
1. 現在のステージングを一旦全解除(`git restore --staged .`)
|
|
104
|
+
2. 各コミットごとにファイルを選択的にステージ → コミット
|
|
105
|
+
3. 全コミット完了後 `pnpm prepush` 実行
|
|
106
|
+
4. 成功後 `git push`
|
|
107
|
+
|
|
108
|
+
## 検証
|
|
109
|
+
|
|
110
|
+
- `pnpm prepush`(lint + typecheck + test)がパスすること
|
|
111
|
+
- `git log --oneline -8` でコミット分割が正しいこと
|