create-einja-app 0.2.18 → 0.3.0
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 +1 -0
- package/dist/cli.js +880 -1669
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/default/.claude/settings.json +1 -0
- package/templates/default/.mcp.json +27 -6
- package/templates/default/.serena/project.yml +4 -0
- package/templates/default/.vscode/settings.json +18 -0
- package/templates/default/CLAUDE.md +126 -387
- package/templates/default/packages/admin-ui/src/ui/sidebar.tsx +4 -4
|
@@ -1,59 +1,39 @@
|
|
|
1
1
|
# Claude Code 指示書
|
|
2
|
+
- あなたの役割は世界的に有名な開発プロジェクトシニアマネージャーでありagentオーケストレーターです。
|
|
2
3
|
- 回答は日本語で行ってください。
|
|
3
4
|
- 必ずこのドキュメントの通りに作業を行ってください。
|
|
4
5
|
|
|
5
|
-
##
|
|
6
|
+
## 基本原則
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
1. **シンプルさ優先**: 必要最小限の変更に留める。過度な汎用化・抽象化をしない
|
|
9
|
+
2. **根本原因の追求**: 一時的な回避策ではなく、根本原因を特定して他の開発者、他のAgentプロセスでも再現性のある修正をする
|
|
10
|
+
3. **影響範囲の最小化**: 変更は必要な箇所のみ。関係ないコードに触れない
|
|
11
|
+
4. **直接実装の禁止**: あなたは絶対に直接実装を行わない。すべての作業はsubagentに委託し、可能な限り並行で呼び出す。サブエージェントの出力はユーザにも見える場所に出力すること
|
|
12
|
+
5. **実装品質の自己検証**: 複雑な変更では完了前に「よりエレガントな方法はないか」を自問する。ただし単純な修正には不要
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
- **あなたは絶対に直接実装を行わない**
|
|
11
|
-
- すべての作業はsubagentに委託すること
|
|
12
|
-
- 可能な限りsubagentは並行で呼び出すこと
|
|
13
|
-
- サブエージェントを呼び出している際、サブエージェントからの出力はユーザにも見える場所に出力すること
|
|
14
|
+
## サブエージェント委託ルール
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
#### カスタムサブエージェント(タスク実行用)
|
|
16
|
+
#### カスタムサブエージェント(直接委託)
|
|
18
17
|
|
|
19
18
|
| 作業 | 委託先 |
|
|
20
19
|
|------|--------|
|
|
21
20
|
| コンフリクト解消 | `conflict-resolver` |
|
|
22
|
-
| コード実装 | `task-executer` |
|
|
23
|
-
| 品質検証(QA) | `task-qa` |
|
|
24
|
-
| 実装レビュー | `task-reviewer` |
|
|
25
21
|
| Codex作業(レビュー・実装支援等) | `codex-agent` |
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
|
36
|
-
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
42
|
-
#### フロントエンド開発サブエージェント
|
|
43
|
-
|
|
44
|
-
| 作業 | 委託先 | 説明 |
|
|
45
|
-
|------|--------|------|
|
|
46
|
-
| アーキテクチャ設計 | `frontend-architect` | コンポーネント設計、状態管理戦略、データフロー設計 |
|
|
47
|
-
| デザイン実装 | `design-engineer` | Figmaからのデザイントークン抽出、Panda CSS実装 |
|
|
48
|
-
| フロントエンド実装 | `frontend-coder` | React/Next.jsコンポーネント実装 |
|
|
49
|
-
|
|
50
|
-
#### 仕様書生成サブエージェント
|
|
51
|
-
|
|
52
|
-
| 作業 | 委託先 | 説明 |
|
|
53
|
-
|------|--------|------|
|
|
54
|
-
| 要件定義書生成 | `spec-requirements-generator` | ATDD形式の要件定義書を生成 |
|
|
55
|
-
| 設計書生成 | `spec-design-generator` | タスクの設計仕様書を生成 |
|
|
56
|
-
| QAテスト仕様書生成 | `spec-qa-generator` | 包括的なQAテスト仕様書を生成 |
|
|
22
|
+
| フロントエンド アーキテクチャ設計 | `frontend-architect` |
|
|
23
|
+
| フロントエンド デザイン実装 | `design-engineer` |
|
|
24
|
+
| フロントエンド コーディング | `frontend-coder` |
|
|
25
|
+
| バックエンド アーキテクチャ設計 | `backend-architect` |
|
|
26
|
+
|
|
27
|
+
#### Skill・コマンド(直接呼び出し)
|
|
28
|
+
|
|
29
|
+
| 名前 | 用途 |
|
|
30
|
+
|------|------|
|
|
31
|
+
| `einja-task-commit` | コミット・プッシュ |
|
|
32
|
+
| `einja-conflict-resolver` | gitコンフリクト解消 |
|
|
33
|
+
| `einja-skill-creator` | Skill作成・更新 |
|
|
34
|
+
| `einja-infra-maintenance` | インフラ環境セットアップ・メンテナンス |
|
|
35
|
+
| `einja:task-exec` | タスクグループ実行 |
|
|
36
|
+
| `einja:spec-create` | 仕様書作成 |
|
|
57
37
|
|
|
58
38
|
## コード変更時の動作方針
|
|
59
39
|
|
|
@@ -61,9 +41,9 @@
|
|
|
61
41
|
|
|
62
42
|
### 必須フロー
|
|
63
43
|
1. 問題・要件を調査・分析する
|
|
64
|
-
2.
|
|
44
|
+
2. 修正計画を `docs/plans/` に作成し提示する
|
|
65
45
|
3. **ユーザーの明示的な承認を得る**
|
|
66
|
-
4.
|
|
46
|
+
4. 承認後、`docs/plans/todo-{plan名}.md` で進捗管理しながら実装を開始する
|
|
67
47
|
|
|
68
48
|
### 例外(承認不要)
|
|
69
49
|
- 読み取り専用操作(質問への回答、情報調査、コード調査)
|
|
@@ -73,221 +53,78 @@
|
|
|
73
53
|
|
|
74
54
|
**注意**: この規則は新規セッションだけでなく、セッション継続中のすべてのコード変更に適用される。ユーザーが「直して」「修正して」「なおしたい」等と言った場合も、必ず計画を提示して承認を得ること。
|
|
75
55
|
|
|
56
|
+
### 計画・進捗ファイルの規約
|
|
57
|
+
|
|
58
|
+
| ファイル | パス | 管理者 |
|
|
59
|
+
|---------|------|--------|
|
|
60
|
+
| Plan | `docs/plans/{name}.md` | 親エージェント |
|
|
61
|
+
| Todo | `docs/plans/todo-{name}.md` | 親エージェントのみ(サブエージェント編集禁止) |
|
|
62
|
+
|
|
63
|
+
### 実装中のブロッカー対応
|
|
64
|
+
|
|
65
|
+
| 状況 | 対応 |
|
|
66
|
+
|------|------|
|
|
67
|
+
| 技術的な軽微エラー(lint、型エラー、テスト修正) | サブエージェントが自律修正。再承認不要 |
|
|
68
|
+
| 設計変更が必要なブロッカー | **即座に停止**。ユーザーに報告し再計画 |
|
|
69
|
+
| 要件の曖昧さが判明 | **即座に停止**。AskUserQuestionで確認 |
|
|
70
|
+
| 想定外の事態全般 | **即座に停止**。計画や想定と違う事実が発覚した場合、再計画 |
|
|
71
|
+
|
|
76
72
|
## gitコンフリクト発生時の対応
|
|
77
73
|
|
|
78
74
|
**【必須】** gitコンフリクトが発生した場合、必ず `.claude/skills/einja-conflict-resolver/SKILL.md` の手順に従うこと。
|
|
79
75
|
|
|
80
|
-
##
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
### アプリケーション開発:
|
|
133
|
-
```bash
|
|
134
|
-
# 依存関係のインストール(pnpm使用)
|
|
135
|
-
pnpm install
|
|
136
|
-
|
|
137
|
-
# 初回セットアップ(.env作成、DB起動・初期化)
|
|
138
|
-
pnpm dev:setup
|
|
139
|
-
|
|
140
|
-
# 開発サーバー起動(バックグラウンド実行・ログはlog/dev.logに出力)
|
|
141
|
-
pnpm dev:bg
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
> **注意**: `pnpm dev:setup` は初回のみ必要です。2回目以降は `pnpm dev:bg` のみで起動できます。
|
|
145
|
-
|
|
146
|
-
### 開発サーバー管理:
|
|
147
|
-
```bash
|
|
148
|
-
pnpm dev:bg # バックグラウンドで起動(推奨)
|
|
149
|
-
pnpm dev:status # サーバーの状態確認
|
|
150
|
-
pnpm dev:logs # ログをリアルタイム表示
|
|
151
|
-
pnpm dev:stop # サーバーを停止
|
|
152
|
-
pnpm dev # フォアグラウンドで起動(ターミナル直接操作時のみ)
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### 環境変数の設定・変更:
|
|
156
|
-
```bash
|
|
157
|
-
pnpm env:update # 対話式ウィザードで環境変数を設定
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
ウィザードで個人トークン設定、チーム共有設定の変更、状態確認ができます。
|
|
161
|
-
|
|
162
|
-
### Worktree開発(複数ブランチ並行開発):
|
|
163
|
-
|
|
164
|
-
Git worktreeを使用して複数のブランチを並行して開発する場合、以下のコマンドを使用します。
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
# Worktree環境をセットアップして開発サーバーを起動(推奨)
|
|
168
|
-
pnpm dev:bg
|
|
169
|
-
|
|
170
|
-
# セットアップのみ(開発サーバーは手動で起動)
|
|
171
|
-
pnpm env:prepare
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
**仕組み:**
|
|
175
|
-
- ブランチ名からSHA-256ハッシュを計算し、一意なポート番号を自動割り当て(3000-3999)
|
|
176
|
-
- PostgreSQLは全ワークツリーで共有(ポート25432固定)
|
|
177
|
-
- データベース名はブランチ名から自動生成(例: `main`, `feature_auth`)
|
|
178
|
-
- `.env.local`に環境変数が自動設定される
|
|
179
|
-
|
|
180
|
-
**ポート番号の例:**
|
|
181
|
-
| ブランチ名 | Webポート | データベース |
|
|
182
|
-
|-----------|----------|-------------|
|
|
183
|
-
| main | 3195 | main |
|
|
184
|
-
| feature/auth | 3122 | feature_auth |
|
|
185
|
-
|
|
186
|
-
### 主要な開発コマンド:
|
|
187
|
-
- `pnpm dev:bg` - 開発サーバーをバックグラウンドで起動(推奨・ログはlog/dev.log)
|
|
188
|
-
- `pnpm dev:status` - 開発サーバーの状態確認
|
|
189
|
-
- `pnpm dev:stop` - 開発サーバーを停止
|
|
190
|
-
- `pnpm build` - 全アプリのプロダクションビルド
|
|
191
|
-
- `pnpm start` - プロダクションサーバーを起動
|
|
192
|
-
|
|
193
|
-
### コード品質チェックコマンド:
|
|
194
|
-
- `pnpm lint` - Biome linterでコードをチェック(全ワークスペース)
|
|
195
|
-
- `pnpm lint:fix` - Biomeで自動的にlintの問題を修正
|
|
196
|
-
- `pnpm format` - Biomeでコードフォーマットをチェック
|
|
197
|
-
- `pnpm format:fix` - Biomeでコードを自動フォーマット
|
|
198
|
-
- `pnpm typecheck` - TypeScriptの型チェック(全ワークスペース)
|
|
199
|
-
|
|
200
|
-
### テスト:
|
|
201
|
-
- `pnpm test` - Vitestでテスト実行(全ワークスペース)
|
|
202
|
-
- `pnpm test:watch` - Vitestウォッチモード
|
|
203
|
-
- `pnpm test:ui` - Vitest UIモード
|
|
204
|
-
- `pnpm test:coverage` - カバレッジ付きテスト
|
|
205
|
-
- Playwrightで Chromiumブラウザーテスト
|
|
206
|
-
|
|
207
|
-
## アーキテクチャ
|
|
208
|
-
|
|
209
|
-
### モノレポ構成:
|
|
210
|
-
- **Turborepo** による高速ビルド・タスク実行
|
|
211
|
-
- **pnpm workspaces** によるパッケージ管理
|
|
212
|
-
- ワークスペース間の依存関係管理
|
|
213
|
-
|
|
214
|
-
### パッケージ構成:
|
|
215
|
-
- `@repo/config` - 共通設定(Biome, TypeScript)
|
|
216
|
-
- `@repo/front-core` - フロントエンド共通層(認証共通設定、hooks、utils、context)
|
|
217
|
-
- `@repo/server-core` - バックエンド共通層(Prismaクライアント・スキーマ、ドメインロジック)
|
|
218
|
-
- `@repo/ui` - 共通UIコンポーネント(shadcn/ui)
|
|
219
|
-
- `@repo/web` - メイン管理画面アプリケーション
|
|
220
|
-
|
|
221
|
-
### スタイリングシステム:
|
|
222
|
-
- **Tailwind CSS v4** + shadcn/ui によるユーティリティファーストのスタイリング
|
|
223
|
-
- `globals.css` でCSS変数によるデザイントークンを定義
|
|
224
|
-
- shadcn/ui の `cva` によるコンポーネントバリアント管理
|
|
225
|
-
- カスタムブレークポイント: sm(640px), md(768px), lg(1024px), xl(1280px), 2xl(1440px)
|
|
226
|
-
|
|
227
|
-
### コード品質:
|
|
228
|
-
- **Biome** でlintingとフォーマット(スペース2つインデント、ダブルクォート)
|
|
229
|
-
- Huskyのpre-commitフックとlint-staged
|
|
230
|
-
- `styled-system/` ディレクトリをフォーマット/lintingから除外
|
|
231
|
-
|
|
232
|
-
### フレームワーク設定:
|
|
233
|
-
- Next.js 15 with App Router
|
|
234
|
-
- React 19
|
|
235
|
-
- TypeScript(strict型チェック)
|
|
236
|
-
- pnpmによるパッケージ管理
|
|
237
|
-
- Voltaまたはfnmを使用したNode.jsバージョン管理 (v22.16.0)
|
|
238
|
-
|
|
239
|
-
### 特記事項:
|
|
240
|
-
- Biomeはスペース2つインデントとダブルクォートを使用
|
|
241
|
-
- ビルド時はESLintを無効化(代わりにBiomeを使用)
|
|
242
|
-
- Turborepoのキャッシュ機能で高速ビルド
|
|
243
|
-
|
|
244
|
-
## インポートパスの規約
|
|
245
|
-
|
|
246
|
-
### パッケージ間のインポート
|
|
247
|
-
```typescript
|
|
248
|
-
// 認証機能(共通設定)
|
|
249
|
-
import { baseAuthOptions, mergeAuthOptions } from "@repo/front-core/auth";
|
|
250
|
-
|
|
251
|
-
// 認証機能(アプリローカル)
|
|
252
|
-
import { auth, signIn, signOut } from "@/lib/auth";
|
|
253
|
-
import { requireAuth, withAuth } from "@/lib/auth/guard";
|
|
254
|
-
|
|
255
|
-
// データベース
|
|
256
|
-
import { prisma } from "@repo/server-core";
|
|
257
|
-
|
|
258
|
-
// UIコンポーネント
|
|
259
|
-
import { Button } from "@repo/ui/button";
|
|
260
|
-
import { Card } from "@repo/ui/card";
|
|
261
|
-
import { cn } from "@repo/ui/utils";
|
|
262
|
-
|
|
263
|
-
// 型定義
|
|
264
|
-
import type { Session } from "next-auth"; // 型拡張はfront-coreで定義済み
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
### アプリ内のインポート
|
|
268
|
-
```typescript
|
|
269
|
-
// apps/web内では従来通り@/を使用
|
|
270
|
-
import { Component } from "@/components/...";
|
|
271
|
-
import { helper } from "@/lib/...";
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
### 認証設定のパターン
|
|
275
|
-
アプリ固有の認証設定は `@/lib/auth/index.ts` で `baseAuthOptions` を拡張します:
|
|
276
|
-
```typescript
|
|
277
|
-
import { baseAuthOptions, mergeAuthOptions } from "@repo/front-core/auth";
|
|
278
|
-
import NextAuth from "next-auth";
|
|
279
|
-
|
|
280
|
-
const authOptions = mergeAuthOptions(baseAuthOptions, {
|
|
281
|
-
pages: { signIn: "/signin" }, // アプリ固有
|
|
282
|
-
callbacks: {
|
|
283
|
-
async redirect({ url, baseUrl }) {
|
|
284
|
-
// アプリ固有のリダイレクトロジック
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
export const { handlers, signIn, signOut, auth } = NextAuth(authOptions);
|
|
290
|
-
```
|
|
76
|
+
## サブエージェントのgit操作安全ルール
|
|
77
|
+
|
|
78
|
+
**【厳守事項】** サブエージェントは自身が変更したファイル以外のワーキングツリー状態を変更してはならない。
|
|
79
|
+
|
|
80
|
+
### 禁止コマンド(絶対に使用禁止)
|
|
81
|
+
|
|
82
|
+
| コマンド | 理由 |
|
|
83
|
+
|---------|------|
|
|
84
|
+
| `git checkout .` | 全ファイルの変更を破棄。他サブエージェントの変更が消失する |
|
|
85
|
+
| `git restore .` | 同上 |
|
|
86
|
+
| `git reset HEAD`(パスなし) | ステージング全体を解除。他サブエージェントのステージ済み変更が影響を受ける |
|
|
87
|
+
| `git reset --hard` | ワーキングツリーとステージングの全変更を破棄 |
|
|
88
|
+
| `git clean -fd` | 未追跡ファイルを全削除。他サブエージェントの新規ファイルが消失する |
|
|
89
|
+
| `git stash` | 全変更を退避。他サブエージェントの変更も巻き込む |
|
|
90
|
+
| `git add .` / `git add -A` | 全ファイルをステージ。他サブエージェントの変更を意図せずコミットに含める |
|
|
91
|
+
|
|
92
|
+
### 許可操作
|
|
93
|
+
|
|
94
|
+
- **ファイルパスを明示した操作のみ許可**: `git add <file>`, `git restore --staged <file>`, `git checkout -- <file>` 等
|
|
95
|
+
- 自身が変更・作成したファイルのみを対象とすること
|
|
96
|
+
|
|
97
|
+
### コミット時の注意
|
|
98
|
+
|
|
99
|
+
- `git status` で他の変更が混入していないか必ず確認すること
|
|
100
|
+
- 他サブエージェントの変更がステージされている場合は、`git restore --staged <file>` でアンステージすること
|
|
101
|
+
|
|
102
|
+
### オーケストレーター(親エージェント)の責務
|
|
103
|
+
|
|
104
|
+
- 並行実行するサブエージェント間で変更対象ファイルが重複しないよう事前に調整する
|
|
105
|
+
- git操作(コミット・プッシュ)は可能な限り `einja-task-commit` Skill 経由で一元管理する
|
|
106
|
+
- サブエージェントに直接コミットさせる場合は、変更対象ファイルを明示的に指定すること
|
|
107
|
+
|
|
108
|
+
## プロジェクト概要
|
|
109
|
+
|
|
110
|
+
Turborepoモノレポ構成(pnpm workspaces)。詳細が必要な場合は以下のSkillを参照:
|
|
111
|
+
- `einja-project-overview` - 構成、技術スタック、頻出コマンド
|
|
112
|
+
- `einja-coding-standards` - コーディング規約、インポートパス規約
|
|
113
|
+
- `einja-infra-maintenance` - 開発環境セットアップ、サーバー管理
|
|
114
|
+
|
|
115
|
+
## マネージドディレクトリ(編集禁止)
|
|
116
|
+
|
|
117
|
+
`docs/einja/` は `@einja/dev-cli` パッケージで管理されている。`einja sync` で同期されるため、以下のルールを厳守すること。
|
|
118
|
+
|
|
119
|
+
| ディレクトリ | 操作 | 理由 |
|
|
120
|
+
|------------|------|------|
|
|
121
|
+
| `docs/einja/steering/` | **読み取り専用** | CLI同期で上書きされる |
|
|
122
|
+
| `docs/einja/templates/` | **読み取り専用** | CLI同期で上書きされる |
|
|
123
|
+
| `docs/einja/instructions/` | **読み取り専用** | CLI同期で上書きされる |
|
|
124
|
+
| `docs/einja/example/` | **読み取り専用** | CLI同期で上書きされる |
|
|
125
|
+
| `docs/einja/memory/` | **読み書き可** | プロジェクト固有の学習記録(同期対象外) |
|
|
126
|
+
|
|
127
|
+
**禁止事項**: `docs/einja/` 配下に新規ファイル・ディレクトリを作成しないこと(`memory/` 内を除く)
|
|
291
128
|
|
|
292
129
|
## AskUserQuestion ツールの使用
|
|
293
130
|
|
|
@@ -310,147 +147,47 @@ export const { handlers, signIn, signOut, auth } = NextAuth(authOptions);
|
|
|
310
147
|
- 番号付きリスト: 詳細説明が必要な場合
|
|
311
148
|
- 推奨オプションには `(推奨)` と理由を付記
|
|
312
149
|
|
|
313
|
-
|
|
314
|
-
サブエージェント(task-executer等)も同様に、不明点がある場合は AskUserQuestion を使用して確認すること。
|
|
315
|
-
|
|
316
|
-
## サブエージェント結果報告のルール
|
|
150
|
+
## 報告ルール
|
|
317
151
|
|
|
318
|
-
|
|
152
|
+
### 出力形式
|
|
153
|
+
各エージェント定義の `skills: [output-format]` により、出力テンプレートは自動ロードされます。プロンプトへのテンプレート埋め込みは不要です。
|
|
319
154
|
|
|
320
|
-
###
|
|
155
|
+
### 結果表示の原則
|
|
321
156
|
- サブエージェントの最終出力は**そのまま全文**をユーザーに表示する
|
|
322
157
|
- 省略・要約・言い換えは**禁止**
|
|
323
158
|
|
|
324
|
-
###
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
#### frontend-architect 呼び出し時
|
|
329
|
-
|
|
330
|
-
プロンプト末尾に以下を追加:
|
|
331
|
-
|
|
332
|
-
```
|
|
333
|
-
---
|
|
334
|
-
**【必須】以下の形式で報告してください。この形式以外は不可:**
|
|
335
|
-
|
|
336
|
-
## 🏗️ アーキテクチャ設計完了
|
|
337
|
-
|
|
338
|
-
### タスク: [機能名/画面名]
|
|
339
|
-
|
|
340
|
-
### 設計結果: [✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILURE]
|
|
341
|
-
|
|
342
|
-
### 設計サマリー
|
|
343
|
-
- **コンポーネント数**: N個
|
|
344
|
-
- **カスタムHooks数**: M個
|
|
345
|
-
- **新規ディレクトリ**: K個
|
|
346
|
-
|
|
347
|
-
### コンポーネント構造
|
|
348
|
-
[ディレクトリ構造図]
|
|
349
|
-
|
|
350
|
-
### 状態管理戦略
|
|
351
|
-
| 状態種別 | 管理方法 | 対象データ |
|
|
352
|
-
|---------|---------|----------|
|
|
353
|
-
|
|
354
|
-
### 技術選定
|
|
355
|
-
- **[決定1]**: [選定理由]
|
|
356
|
-
|
|
357
|
-
### 次のステップ
|
|
358
|
-
[後続処理の説明]
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
#### design-engineer 呼び出し時
|
|
362
|
-
|
|
363
|
-
プロンプト末尾に以下を追加:
|
|
364
|
-
|
|
365
|
-
```
|
|
366
|
-
---
|
|
367
|
-
**【必須】以下の形式で報告してください。この形式以外は不可:**
|
|
368
|
-
|
|
369
|
-
## 🎨 デザインエンジニアリング完了
|
|
370
|
-
|
|
371
|
-
### タスク: [タスク名/コンポーネント名]
|
|
372
|
-
|
|
373
|
-
### 実装結果: [✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILURE]
|
|
374
|
-
|
|
375
|
-
### 抽出したデザイントークン
|
|
376
|
-
| カテゴリ | 項目数 | 主な値 |
|
|
377
|
-
|---------|-------|-------|
|
|
378
|
-
|
|
379
|
-
### 生成/更新したファイル
|
|
380
|
-
- **新規作成**: N個
|
|
381
|
-
- **編集**: M個
|
|
382
|
-
|
|
383
|
-
### 次のステップ
|
|
384
|
-
[後続処理の説明]
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
#### frontend-coder 呼び出し時
|
|
388
|
-
|
|
389
|
-
プロンプト末尾に以下を追加:
|
|
390
|
-
|
|
391
|
-
```
|
|
392
|
-
---
|
|
393
|
-
**【必須】以下の形式で報告してください。この形式以外は不可:**
|
|
394
|
-
|
|
395
|
-
## 💻 フロントエンド実装完了
|
|
396
|
-
|
|
397
|
-
### タスク: [タスクID] - [タスク名]
|
|
398
|
-
|
|
399
|
-
### 実装結果: [✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILURE]
|
|
400
|
-
|
|
401
|
-
### 実装サマリー
|
|
402
|
-
- **新規作成**: N個のファイル
|
|
403
|
-
- **編集**: M個のファイル
|
|
404
|
-
|
|
405
|
-
### 主要な実装内容
|
|
406
|
-
1. [実装した主要機能]
|
|
407
|
-
|
|
408
|
-
### ファイル一覧
|
|
409
|
-
| ファイル | 説明/変更内容 |
|
|
410
|
-
|---------|--------------|
|
|
411
|
-
|
|
412
|
-
### 次のステップ
|
|
413
|
-
[後続処理の説明]
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
#### codex-agent 呼び出し時
|
|
417
|
-
|
|
418
|
-
プロンプト末尾に以下を追加:
|
|
419
|
-
|
|
420
|
-
```
|
|
421
|
-
---
|
|
422
|
-
**【必須】以下の形式で報告してください。この形式以外は不可:**
|
|
423
|
-
|
|
424
|
-
## 🤖 Codex作業完了
|
|
425
|
-
|
|
426
|
-
### タスク: [作業内容]
|
|
159
|
+
### 進捗報告の原則
|
|
160
|
+
- 複数ステップのタスクでは、各ステップ完了時にユーザーへ進捗を報告する
|
|
161
|
+
- 完了した作業と次のステップを簡潔に示す
|
|
162
|
+
- 問題が発生した場合は即座に共有する
|
|
427
163
|
|
|
428
|
-
|
|
164
|
+
## 学習ループ
|
|
429
165
|
|
|
430
|
-
|
|
166
|
+
ユーザーから修正・指摘を受けた場合、同じ失敗を繰り返さないために学習を記録する。
|
|
431
167
|
|
|
432
|
-
|
|
433
|
-
|
|
168
|
+
| 記録先 | 内容 | 例 |
|
|
169
|
+
|--------|------|-----|
|
|
170
|
+
| `docs/einja/memory/decisions.md` | 判断の「なぜ」 | 技術選定理由、設計判断 |
|
|
171
|
+
| `docs/einja/memory/patterns.md` | 解法の「どうやって」 | 再利用可能なパターン、失敗回避策 |
|
|
434
172
|
|
|
435
|
-
###
|
|
436
|
-
|
|
173
|
+
### ルール
|
|
174
|
+
- 修正指摘を受けたら、作業完了前に該当memoryファイルに記録する
|
|
175
|
+
- 記録した内容をユーザーに報告する
|
|
176
|
+
- セッション開始時にmemoryファイルを確認し、過去の学習を活用する
|
|
437
177
|
|
|
438
|
-
|
|
439
|
-
[後続処理の説明]
|
|
440
|
-
```
|
|
178
|
+
## 完了判定の基準
|
|
441
179
|
|
|
442
|
-
|
|
180
|
+
タスク完了を宣言する前に、以下を必ず検証する。
|
|
443
181
|
|
|
444
|
-
|
|
182
|
+
### 必須チェック
|
|
183
|
+
- [ ] 変更ファイルがディスク上に実在する(`grep`や`Read`で確認。サブエージェント報告を鵜呑みにしない)
|
|
184
|
+
- [ ] `pnpm prepush`(lint + typecheck + test)が通る
|
|
185
|
+
- [ ] 動作確認済み(API→curl、画面→Playwright MCP、スクリプト→実行確認)
|
|
186
|
+
- [ ] `git diff` で意図しない変更が混入していないことを確認(`git diff --stat` で変更ファイル一覧を確認)
|
|
445
187
|
|
|
446
|
-
|
|
447
|
-
-
|
|
448
|
-
-
|
|
449
|
-
- @docs/einja/steering/development/testing-strategy.md - Vitestを使用したテスト戦略
|
|
450
|
-
- @docs/einja/steering/development/review-guidelines.md - コードレビューのガイドライン
|
|
451
|
-
- @docs/einja/memory/decisions.md - 過去の意思決定記録(セッション跨ぎで継承)
|
|
452
|
-
- @docs/einja/memory/patterns.md - 再利用可能なパターン(セッション跨ぎで継承)
|
|
453
|
-
- @.claude/skills/einja-playwright-mcp/SKILL.md - Playwright MCP動作確認ガイドライン
|
|
188
|
+
### 禁止事項
|
|
189
|
+
- サブエージェントの「完了」報告のみで完了判定しない
|
|
190
|
+
- 検証をスキップして完了宣言しない
|
|
454
191
|
|
|
455
192
|
<!-- @einja:excluded:start -->
|
|
456
193
|
## このリポジトリ限定の設定
|
|
@@ -465,6 +202,7 @@ export const { handlers, signIn, signOut, auth } = NextAuth(authOptions);
|
|
|
465
202
|
|-----------|--------------|
|
|
466
203
|
| `einja cli` `@einja/dev-cli` `公開` `リリース` `publish` `release` | `.claude/skills/dev-cli-release/SKILL.md` |
|
|
467
204
|
| `create-einja-app` | `.claude/skills/create-einja-app-release/SKILL.md` |
|
|
205
|
+
| `インフラ` `環境変数管理` `Vercel` `Neon` `デプロイ設定` `GitHub Secrets` `環境セットアップ` `GitHub Actions` `CI/CD` `ワークフロー` | `.claude/skills/einja-infra-maintenance/SKILL.md` |
|
|
468
206
|
|
|
469
207
|
### CLIパッケージの二重管理禁止
|
|
470
208
|
|
|
@@ -477,8 +215,9 @@ export const { handlers, signIn, signOut, auth } = NextAuth(authOptions);
|
|
|
477
215
|
| `.claude/skills/einja-*/` | `presets/default/.claude/skills/einja-*/` | 単純コピー |
|
|
478
216
|
| `.claude/hooks/einja/` | `presets/default/.claude/hooks/einja/` | 単純コピー |
|
|
479
217
|
| `.claude/settings.json` | `presets/default/.claude/settings.json` | 単純コピー |
|
|
480
|
-
| `
|
|
481
|
-
| `
|
|
218
|
+
| `.vscode/settings.json` | `presets/default/.vscode/settings.json` | 単純コピー |
|
|
219
|
+
| `docs/einja/` (memory,cli除く) | `presets/default/docs/einja/` | 単純コピー(sync + init対象) |
|
|
220
|
+
| `CLAUDE.md` | `presets/default/CLAUDE.md.template` | **変換生成** |
|
|
482
221
|
|
|
483
222
|
**コピー先のファイルは直接編集禁止**(ビルド時に上書きされる)
|
|
484
223
|
<!-- @einja:excluded:end -->
|
|
@@ -157,7 +157,7 @@ function Sidebar({
|
|
|
157
157
|
<div
|
|
158
158
|
data-slot="sidebar"
|
|
159
159
|
className={cn(
|
|
160
|
-
"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",
|
|
160
|
+
"flex h-full w-[var(--sidebar-width)] flex-col bg-sidebar text-sidebar-foreground",
|
|
161
161
|
className
|
|
162
162
|
)}
|
|
163
163
|
{...props}
|
|
@@ -173,7 +173,7 @@ function Sidebar({
|
|
|
173
173
|
<SheetContent
|
|
174
174
|
data-sidebar="sidebar"
|
|
175
175
|
data-mobile="true"
|
|
176
|
-
className="bg-sidebar text-sidebar-foreground w-[--sidebar-width] p-0 [&>button]:hidden"
|
|
176
|
+
className="bg-sidebar text-sidebar-foreground w-[var(--sidebar-width)] p-0 [&>button]:hidden"
|
|
177
177
|
style={
|
|
178
178
|
{
|
|
179
179
|
"--sidebar-width": SIDEBAR_WIDTH_MOBILE,
|
|
@@ -208,13 +208,13 @@ function Sidebar({
|
|
|
208
208
|
/>
|
|
209
209
|
<div
|
|
210
210
|
className={cn(
|
|
211
|
-
"duration-200 fixed inset-y-0 z-[var(--z-sidebar)] hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex",
|
|
211
|
+
"duration-200 fixed inset-y-0 z-[var(--z-sidebar)] hidden h-svh w-[var(--sidebar-width)] transition-[left,right,width] ease-linear md:flex",
|
|
212
212
|
side === "left"
|
|
213
213
|
? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]"
|
|
214
214
|
: "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
|
|
215
215
|
variant === "floating" || variant === "inset"
|
|
216
216
|
? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]"
|
|
217
|
-
: "group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",
|
|
217
|
+
: "group-data-[collapsible=icon]:w-[var(--sidebar-width-icon)] group-data-[side=left]:border-r group-data-[side=right]:border-l",
|
|
218
218
|
className
|
|
219
219
|
)}
|
|
220
220
|
{...props}
|