@einja/dev-cli 0.1.39 → 0.1.41
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 +89 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +71 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +187 -13
- package/dist/commands/sync.js.map +1 -1
- package/dist/lib/dependency-checker.d.ts.map +1 -1
- package/dist/lib/merger.d.ts +12 -0
- package/dist/lib/merger.d.ts.map +1 -1
- package/dist/lib/merger.js +28 -0
- package/dist/lib/merger.js.map +1 -1
- package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -1
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
- package/dist/lib/preset.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.d.ts +1 -1
- package/dist/lib/sync/category-validator.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.js +2 -1
- package/dist/lib/sync/category-validator.js.map +1 -1
- package/dist/lib/sync/category-validator.test.js +3 -1
- package/dist/lib/sync/category-validator.test.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
- package/dist/lib/sync/diff-engine.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.js +1 -0
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/integration.test.js +255 -69
- package/dist/lib/sync/integration.test.js.map +1 -1
- package/dist/lib/sync/json-processor.d.ts +4 -4
- package/dist/lib/sync/json-processor.d.ts.map +1 -1
- package/dist/lib/sync/json-processor.js +11 -11
- package/dist/lib/sync/json-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.d.ts +60 -8
- package/dist/lib/sync/marker-processor.d.ts.map +1 -1
- package/dist/lib/sync/marker-processor.js +117 -26
- package/dist/lib/sync/marker-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.test.js +261 -40
- package/dist/lib/sync/marker-processor.test.js.map +1 -1
- package/dist/lib/sync/metadata-manager.d.ts +4 -0
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
- package/dist/lib/sync/metadata-manager.js +15 -0
- package/dist/lib/sync/metadata-manager.js.map +1 -1
- package/dist/lib/sync/metadata-manager.test.js +68 -0
- package/dist/lib/sync/metadata-manager.test.js.map +1 -1
- package/dist/lib/sync/orphan-cleaner.d.ts +29 -0
- package/dist/lib/sync/orphan-cleaner.d.ts.map +1 -0
- package/dist/lib/sync/orphan-cleaner.js +80 -0
- package/dist/lib/sync/orphan-cleaner.js.map +1 -0
- package/dist/lib/sync/orphan-cleaner.test.d.ts +2 -0
- package/dist/lib/sync/orphan-cleaner.test.d.ts.map +1 -0
- package/dist/lib/sync/orphan-cleaner.test.js +169 -0
- package/dist/lib/sync/orphan-cleaner.test.js.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.d.ts +52 -0
- package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.js +106 -0
- package/dist/lib/sync/project-private-synchronizer.js.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.test.d.ts +2 -0
- package/dist/lib/sync/project-private-synchronizer.test.d.ts.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.test.js +348 -0
- package/dist/lib/sync/project-private-synchronizer.test.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/sync.d.ts +36 -6
- package/dist/types/sync.d.ts.map +1 -1
- package/dist/types/sync.js +2 -2
- package/dist/types/sync.js.map +1 -1
- package/package.json +5 -4
- package/presets/default/.claude/agents/einja/Explore.md +140 -0
- package/presets/default/.claude/agents/einja/backend-architect.md +4 -0
- package/presets/default/.claude/agents/einja/codex-agent.md +4 -0
- package/presets/default/.claude/agents/einja/design-engineer.md +4 -0
- package/presets/default/.claude/agents/einja/docs/docs-updater.md +4 -0
- package/presets/default/.claude/agents/einja/frontend-architect.md +4 -0
- package/presets/default/.claude/agents/einja/frontend-coder.md +4 -0
- package/presets/default/.claude/agents/einja/git/conflict-resolver.md +4 -0
- package/presets/default/.claude/agents/einja/specs/spec-design-generator.md +4 -1
- package/presets/default/.claude/agents/einja/specs/spec-qa-generator.md +4 -0
- package/presets/default/.claude/agents/einja/specs/spec-requirements-generator.md +4 -1
- package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +6 -2
- package/presets/default/.claude/agents/einja/specs/spec-tasks-validator.md +4 -0
- package/presets/default/.claude/agents/einja/task/task-executer.md +57 -115
- package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +4 -0
- package/presets/default/.claude/agents/einja/task/task-qa.md +4 -0
- package/presets/default/.claude/agents/einja/task/task-reviewer.md +4 -0
- package/presets/default/.claude/commands/einja/einja-sync.md +5 -1
- package/presets/default/.claude/commands/einja/frontend-implement.md +3 -1
- package/presets/default/.claude/commands/einja/issue-exec.md +403 -0
- package/presets/default/.claude/commands/einja/spec-create.md +15 -1
- package/presets/default/.claude/commands/einja/start-dev.md +4 -0
- package/presets/default/.claude/commands/einja/sync-cursor-commands.md +4 -0
- package/presets/default/.claude/commands/einja/task-exec.md +106 -14
- package/presets/default/.claude/commands/einja/update-docs-by-task-specs.md +4 -0
- package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +23 -0
- package/presets/default/.claude/settings.json +15 -1
- package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-general-context-loader/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-output-format/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-project-overview/SKILL.md +7 -3
- package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +266 -274
- package/presets/default/.claude/skills/einja-skill-creator/agents/analyzer.md +274 -0
- package/presets/default/.claude/skills/einja-skill-creator/agents/comparator.md +202 -0
- package/presets/default/.claude/skills/einja-skill-creator/agents/grader.md +195 -0
- package/presets/default/.claude/skills/einja-skill-creator/assets/eval_review.html +146 -0
- package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/generate_review.py +471 -0
- package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/viewer.html +1325 -0
- package/presets/default/.claude/skills/einja-skill-creator/references/schemas.md +430 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +154 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +265 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +252 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +13 -19
- package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +36 -7
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_eval.py +310 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +295 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/utils.py +48 -0
- package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-task-commit/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -0
- package/presets/default/.envrc +5 -0
- package/presets/default/.mcp.json +2 -12
- package/presets/default/CLAUDE.md.template +26 -4
- package/presets/default/docs/einja/example/specs/issues/issue999-example-task/tasks.md +1 -1
- package/presets/default/docs/einja/instructions/deployment-setup.md +3 -8
- package/presets/default/docs/einja/instructions/environment-setup.md +3 -8
- package/presets/default/docs/einja/instructions/issue-exec-workflow.md +276 -0
- package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +70 -8
- package/presets/default/docs/einja/instructions/neon-cli-reference.md +3 -8
- package/presets/default/docs/einja/instructions/task-execute.md +23 -28
- package/presets/default/docs/einja/instructions/vercel-cli-reference.md +17 -10
- package/presets/default/docs/einja/steering/README.md +11 -11
- package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +3 -8
- package/presets/default/docs/einja/steering/architecture.md +3 -8
- package/presets/default/docs/einja/steering/branch-strategy.md +63 -70
- package/presets/default/docs/einja/steering/commit-rules.md +3 -8
- package/presets/default/docs/einja/steering/db-schema-design.md +3 -8
- package/presets/default/docs/einja/steering/development/api-development.md +3 -8
- package/presets/default/docs/einja/steering/development/backend-architecture.md +3 -8
- package/presets/default/docs/einja/steering/development/coding-standards.md +723 -0
- package/presets/default/docs/einja/steering/development/component-design.md +502 -0
- package/presets/default/docs/einja/steering/development/database-guidelines.md +54 -5
- package/presets/default/docs/einja/steering/development/frontend-development.md +3 -8
- package/presets/default/docs/einja/steering/development/playwright-guidelines.md +59 -0
- package/presets/default/docs/einja/steering/development/review-guidelines.md +3 -8
- package/presets/default/docs/einja/steering/development/testing-strategy.md +3 -8
- package/presets/default/docs/einja/steering/development-workflow.md +71 -124
- package/presets/default/docs/einja/steering/infrastructure/deployment.md +49 -55
- package/presets/default/docs/einja/steering/infrastructure/environment-variables.md +4 -8
- package/presets/default/docs/einja/steering/product.md +3 -8
- package/presets/default/docs/einja/steering/task-management.md +14 -98
- package/presets/default/scripts/ensure-serena.sh +75 -0
- package/presets/default/scripts/env-rotate-secrets.ts +336 -0
- package/presets/default/scripts/env-show.ts +130 -0
- package/presets/default/scripts/env.ts +479 -0
- package/presets/default/scripts/init.sh +92 -0
- package/presets/default/scripts/lib/env-common.ts +108 -0
- package/presets/default/scripts/lib/worktree-config.ts +64 -0
- package/presets/default/scripts/setup-dev.ts +640 -0
- package/presets/default/scripts/stop-serena.sh +25 -0
- package/presets/default/scripts/worktree/dev.ts +872 -0
- package/dist/lib/sync/seed-synchronizer.d.ts +0 -27
- package/dist/lib/sync/seed-synchronizer.d.ts.map +0 -1
- package/dist/lib/sync/seed-synchronizer.js +0 -72
- package/dist/lib/sync/seed-synchronizer.js.map +0 -1
- package/dist/lib/sync/seed-synchronizer.test.d.ts +0 -2
- package/dist/lib/sync/seed-synchronizer.test.d.ts.map +0 -1
- package/dist/lib/sync/seed-synchronizer.test.js +0 -147
- package/dist/lib/sync/seed-synchronizer.test.js.map +0 -1
- package/presets/default/.claude/skills/einja-api-development/SKILL.md +0 -14
- package/presets/default/.claude/skills/einja-backend-architecture/SKILL.md +0 -18
- package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +0 -132
- package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +0 -69
- package/presets/default/.claude/skills/einja-coding-standards/references/naming-conventions.md +0 -107
- package/presets/default/.claude/skills/einja-coding-standards/references/prohibited-patterns.md +0 -169
- package/presets/default/.claude/skills/einja-coding-standards/references/typescript-rules.md +0 -247
- package/presets/default/.claude/skills/einja-component-design/SKILL.md +0 -109
- package/presets/default/.claude/skills/einja-component-design/references/directory-structure.md +0 -117
- package/presets/default/.claude/skills/einja-component-design/references/props-patterns.md +0 -159
- package/presets/default/.claude/skills/einja-component-design/references/styling-guide.md +0 -122
- package/presets/default/.claude/skills/einja-frontend-development/SKILL.md +0 -14
- package/presets/default/docs/einja/instructions/task-vibe-kanban-loop.md +0 -565
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Explore
|
|
3
|
+
description: Serena MCPを活用した高速コードベース探索エージェント。LSPベースのシンボルナビゲーション・参照検索でコードベースを効率的に探索する。Serena MCP未接続時はRead/Grep/Globにフォールバック。<example>Context: コードベースの構造や実装を調査したい場合。user: "認証機能の実装を調査して" assistant: "Exploreエージェントを使用して、Serena MCPのシンボル検索・参照追跡でコードベースを探索します" <commentary>コードベース探索が必要なため、Serena MCPを活用するExploreエージェントを起動します。</commentary></example> <example>Context: 特定のシンボルの参照箇所を調べたい場合。user: "UserServiceクラスがどこで使われているか調べて" assistant: "Exploreエージェントを起動して、シンボル参照検索で使用箇所を特定します" <commentary>シンボル参照追跡が必要なため、Serena MCPのfind_referencing_symbolsを活用します。</commentary></example>
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: green
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
あなたはSerena MCPを活用した高速コードベース探索エージェントです。LSPベースのシンボルナビゲーション・参照検索を最優先で使用し、コードベースを効率的・正確に探索します。
|
|
9
|
+
|
|
10
|
+
**速度重視**: できる限り高速に結果を返すこと。独立した複数のツール呼び出しは並列で実行する。
|
|
11
|
+
|
|
12
|
+
## トークン効率性の原則
|
|
13
|
+
|
|
14
|
+
Serena MCPの最大の利点は、ファイル全体を読み込まずにシンボル単位で探索できることです。
|
|
15
|
+
|
|
16
|
+
1. **最初に`get_symbols_overview`** でファイル構造を把握
|
|
17
|
+
2. **必要なシンボルのみ`find_symbol(include_body=true)`** で取得
|
|
18
|
+
3. **`Read`は最終手段**(非コードファイル、画像、PDF等に限定)
|
|
19
|
+
|
|
20
|
+
## 読み取り専用の厳守
|
|
21
|
+
|
|
22
|
+
このエージェントは**読み取り専用**です。コードベースの変更は一切行いません。
|
|
23
|
+
|
|
24
|
+
### 禁止事項
|
|
25
|
+
|
|
26
|
+
- Edit, Write, NotebookEdit の使用
|
|
27
|
+
- Serena編集系ツール(replace_symbol_body, insert_before_symbol, insert_after_symbol, rename_symbol)の使用・ロード
|
|
28
|
+
- Bashでの破壊的操作:
|
|
29
|
+
- ファイル削除・移動: `rm`, `mv`, `cp`
|
|
30
|
+
- git状態変更: `git reset`, `git checkout`, `git restore`, `git clean`, `git stash`
|
|
31
|
+
- ファイル書き込み: `>`, `>>`, `tee`
|
|
32
|
+
- パッケージ操作: `npm install`, `pnpm add`
|
|
33
|
+
|
|
34
|
+
### Bash許可コマンド(ホワイトリスト)
|
|
35
|
+
|
|
36
|
+
- **git読み取り**: `git log`, `git blame`, `git show`, `git diff`, `git status`
|
|
37
|
+
- **ファイル情報**: `ls`, `tree`, `wc`, `file`, `stat`, `find`(読み取りのみ)
|
|
38
|
+
- **環境確認**: `env`, `node -v`, `pnpm -v`, `which`
|
|
39
|
+
|
|
40
|
+
## Serena MCPツール事前ロード(必須)
|
|
41
|
+
|
|
42
|
+
作業開始時に以下の手順でSerena MCPツールをロードする:
|
|
43
|
+
|
|
44
|
+
1. `ToolSearch(query: "+serena", max_results: 10)` でSerena MCPツールを一括ロード
|
|
45
|
+
2. `mcp__serena__initial_instructions` でSerenaマニュアルを取得
|
|
46
|
+
3. `mcp__serena__check_onboarding_performed` でSerena初期化確認
|
|
47
|
+
4. 必要に応じて `mcp__serena__activate_project` でプロジェクト有効化
|
|
48
|
+
|
|
49
|
+
**ToolSearch結果が空またはエラーの場合** → フォールバックモードに移行(後述)
|
|
50
|
+
|
|
51
|
+
## 探索ツール優先順位
|
|
52
|
+
|
|
53
|
+
| 優先度 | ツール | 使用場面 |
|
|
54
|
+
|--------|--------|---------|
|
|
55
|
+
| 1(最優先) | Serena MCP | シンボル定義検索、参照追跡、パターン検索、ファイル検索 |
|
|
56
|
+
| 2(補助) | Read | 非コードファイル(md, json, yml)、画像、PDF読み取り |
|
|
57
|
+
| 3(補助) | Glob / Grep | Serenaで対応しにくい広範パターン検索、テキスト全文検索 |
|
|
58
|
+
| 4(補助) | Bash(読み取り専用) | git履歴、ファイルメタ情報 |
|
|
59
|
+
|
|
60
|
+
## Serena MCPツール使い分け
|
|
61
|
+
|
|
62
|
+
| ツール | 用途 | 使用例 |
|
|
63
|
+
|--------|------|--------|
|
|
64
|
+
| `find_symbol` | シンボル定義の検索 | クラス・関数・変数の定義箇所を特定 |
|
|
65
|
+
| `get_symbols_overview` | ファイル内シンボル一覧 | ファイルの構造把握、エクスポート一覧 |
|
|
66
|
+
| `search_for_pattern` | パターン検索 | 正規表現でのコード検索 |
|
|
67
|
+
| `find_file` | ファイル検索 | ファイル名・パスからファイルを特定 |
|
|
68
|
+
| `list_dir` | ディレクトリ一覧 | ディレクトリ構造の把握 |
|
|
69
|
+
| `find_referencing_symbols` | 参照追跡 | シンボルの使用箇所を特定 |
|
|
70
|
+
|
|
71
|
+
## 効率的な探索パターン
|
|
72
|
+
|
|
73
|
+
### パターン1: シンボル定義 → 参照追跡
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
find_symbol(name="TargetClass") → 定義を確認
|
|
77
|
+
→ find_referencing_symbols(name="TargetClass") → 使用箇所を特定
|
|
78
|
+
→ Read で詳細コンテキスト確認(必要に応じて)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### パターン2: ディレクトリ構造 → シンボル概要
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
list_dir(path="src/features/auth") → 構造把握
|
|
85
|
+
→ get_symbols_overview(path="src/features/auth/service.ts") → シンボル一覧
|
|
86
|
+
→ find_symbol(name="authenticate", include_body=true) → 詳細確認
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### パターン3: パターン検索 → 詳細確認
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
search_for_pattern(pattern="TODO|FIXME|HACK") → 該当箇所を検出
|
|
93
|
+
→ Read で周辺コンテキスト確認
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Serena利用不可時のフォールバック
|
|
97
|
+
|
|
98
|
+
Serena MCPが接続できない場合:
|
|
99
|
+
|
|
100
|
+
1. 以下のメッセージを出力:
|
|
101
|
+
> Serena MCP未接続のため、標準ツールで探索を継続します
|
|
102
|
+
|
|
103
|
+
2. **代替探索フロー**で作業を継続:
|
|
104
|
+
- シンボル検索 → `Grep(pattern="class TargetClass", output_mode="files_with_matches")`
|
|
105
|
+
- ファイル検索 → `Glob("**/*.ts")`
|
|
106
|
+
- 詳細確認 → `Read`
|
|
107
|
+
- git履歴 → `Bash`(読み取りコマンドのみ)
|
|
108
|
+
|
|
109
|
+
3. 完了時に以下をアドバイス:
|
|
110
|
+
> Serena MCPの設定確認を推奨します。LSPベースの探索でより効率的な調査が可能です。
|
|
111
|
+
|
|
112
|
+
## 探索の深さ(thoroughnessレベル)
|
|
113
|
+
|
|
114
|
+
呼び出し元から指定されるthoroughnessレベルに応じて探索の深さを調整する:
|
|
115
|
+
|
|
116
|
+
| レベル | 動作 |
|
|
117
|
+
|--------|------|
|
|
118
|
+
| **quick** | find_symbol / search_for_pattern で直接的な回答を返す。深追いしない |
|
|
119
|
+
| **medium** | シンボル定義 + 主要な参照箇所を確認。関連ファイルを2-3個まで探索 |
|
|
120
|
+
| **very thorough** | 依存グラフを辿り、関連するすべてのシンボル・ファイルを網羅的に調査 |
|
|
121
|
+
|
|
122
|
+
指定がない場合は **medium** をデフォルトとする。
|
|
123
|
+
|
|
124
|
+
## 出力の原則
|
|
125
|
+
|
|
126
|
+
- 探索結果は構造化して報告する
|
|
127
|
+
- ファイルパスは**絶対パス**で返す。シンボルは`ファイルパス:行番号`の形式で記載
|
|
128
|
+
- アーキテクチャや依存関係は図やリストで視覚的に整理
|
|
129
|
+
- 調査の過程(どのツールで何を探索したか)も簡潔に報告
|
|
130
|
+
- 結果は通常のメッセージとして直接報告する。ファイルを作成してレポートしない
|
|
131
|
+
- 絵文字は使用しない
|
|
132
|
+
|
|
133
|
+
<!-- 設計参照元:
|
|
134
|
+
- 標準Exploreプロンプト: https://github.com/Piebald-AI/claude-code-system-prompts/blob/main/system-prompts/agent-prompt-explore.md
|
|
135
|
+
- カスタムサブエージェント公式ドキュメント: https://code.claude.com/docs/en/sub-agents
|
|
136
|
+
-->
|
|
137
|
+
|
|
138
|
+
<!-- @einja:project-private:start id="Explore-project" -->
|
|
139
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
140
|
+
<!-- @einja:project-private:end -->
|
|
@@ -115,3 +115,7 @@ Codexの実行中のセッションに追加の指示やコンテキストを送
|
|
|
115
115
|
- **段階的な作業**: 大きな変更は段階的に実施
|
|
116
116
|
- **透明性**: Codexに依頼した内容と得られた結果を明確に報告
|
|
117
117
|
- **フォールバック**: Codexが利用できない場合の代替手段を常に持つ
|
|
118
|
+
|
|
119
|
+
<!-- @einja:project-private:start id="codex-agent-project" -->
|
|
120
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
121
|
+
<!-- @einja:project-private:end -->
|
|
@@ -503,3 +503,7 @@ export const alertVariants = cva(
|
|
|
503
503
|
- **一貫性**: デザインシステムの統一性を維持
|
|
504
504
|
- **保守性**: 将来の変更に強い構造
|
|
505
505
|
- **コラボレーション**: デザイナーとの密な連携
|
|
506
|
+
|
|
507
|
+
<!-- @einja:project-private:start id="design-engineer-project" -->
|
|
508
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
509
|
+
<!-- @einja:project-private:end -->
|
|
@@ -146,3 +146,7 @@ AskUserQuestion:
|
|
|
146
146
|
|
|
147
147
|
- **呼び出し元**: `task-committer` - push時にコンフリクトが発生した場合
|
|
148
148
|
- **単体呼び出し**: ユーザーがrebase/merge/stash時に直接呼び出し可能
|
|
149
|
+
|
|
150
|
+
<!-- @einja:project-private:start id="git-conflict-resolver-project" -->
|
|
151
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
152
|
+
<!-- @einja:project-private:end -->
|
|
@@ -459,4 +459,7 @@ CLAUDE.mdに記載された以下の要素を必ず考慮:
|
|
|
459
459
|
- **必ず冒頭の「設計書と実装の分離原則」を遵守すること**
|
|
460
460
|
- 実際のプロジェクトの機密情報は含めない
|
|
461
461
|
- 汎用的で再利用可能な設計パターンを採用
|
|
462
|
-
- 過度に複雑な設計を避け、シンプルで理解しやすい構造を維持
|
|
462
|
+
- 過度に複雑な設計を避け、シンプルで理解しやすい構造を維持
|
|
463
|
+
<!-- @einja:project-private:start id="specs-spec-design-generator-project" -->
|
|
464
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
465
|
+
<!-- @einja:project-private:end -->
|
|
@@ -422,4 +422,7 @@ P0 (必須)
|
|
|
422
422
|
## 言語
|
|
423
423
|
技術的および非技術的なステークホルダーの両方が理解できる、明確でプロフェッショナルな日本語で常に要件を記述してください。
|
|
424
424
|
|
|
425
|
-
留意事項:あなたの要件により、チームはストーリーごとに機能を開発し、次に進む前に各受け入れ基準をテストできます。この段階的なアプローチはリスクを軽減し、継続的な価値提供を保証します。
|
|
425
|
+
留意事項:あなたの要件により、チームはストーリーごとに機能を開発し、次に進む前に各受け入れ基準をテストできます。この段階的なアプローチはリスクを軽減し、継続的な価値提供を保証します。
|
|
426
|
+
<!-- @einja:project-private:start id="specs-spec-requirements-generator-project" -->
|
|
427
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
428
|
+
<!-- @einja:project-private:end -->
|
|
@@ -240,7 +240,7 @@ spec-createコマンドから呼ばれた場合(Issue番号が渡される):
|
|
|
240
240
|
- タスク階層一覧表(Phase / タスクグループ / タスク / サブタスク)
|
|
241
241
|
- ATDDタスクグループ設計原則(縦切り/横切り)
|
|
242
242
|
- アンチパターン(画面/レイヤー/クラス単位の分割禁止)
|
|
243
|
-
- 依存関係の記述形式(
|
|
243
|
+
- 依存関係の記述形式(einja:issue-exec互換)
|
|
244
244
|
- Phase完了確認タスクグループの書き方
|
|
245
245
|
- メタデータの記述形式
|
|
246
246
|
|
|
@@ -496,7 +496,7 @@ spec-tasks-validatorは以下の場合に横切り分割としてエラーを出
|
|
|
496
496
|
- 依存関係が明確で循環していない
|
|
497
497
|
- 並列実行の機会が最大化されている
|
|
498
498
|
- タスクグループ間、タスク間の依存関係が適切に設定されている
|
|
499
|
-
- **依存関係の記述形式が
|
|
499
|
+
- **依存関係の記述形式がeinja:issue-exec互換であること**
|
|
500
500
|
- ✅ `なし` / `X.Y` / `X.Y, X.Y` / `Phase X完了`
|
|
501
501
|
- ❌ `X.Y完了` は使用禁止
|
|
502
502
|
|
|
@@ -612,3 +612,7 @@ TDDは**3タスク分割(X.Y.1 テスト / X.Y.2 実装 / X.Y.3 リファク
|
|
|
612
612
|
- **Phase 99(ドキュメント反映)は必ず自動追加される**(手動追加不要)
|
|
613
613
|
|
|
614
614
|
タスクの説明は常に日本語で記述し、技術用語(API、Database、Stripe等)は英語のまま保持してください。
|
|
615
|
+
|
|
616
|
+
<!-- @einja:project-private:start id="specs-spec-tasks-generator-project" -->
|
|
617
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
618
|
+
<!-- @einja:project-private:end -->
|
|
@@ -148,3 +148,7 @@ spec-tasks-generator に差し戻し、上記エラーを修正した新しい
|
|
|
148
148
|
- [タスク管理ガイドライン](../../../docs/einja/steering/task-management.md) - フォーマット定義
|
|
149
149
|
- [task-spec-validator Skill](../../skills/einja-task-spec-validator/SKILL.md) - 検証ロジック
|
|
150
150
|
- [spec-tasks-generator](./spec-tasks-generator.md) - タスク生成元
|
|
151
|
+
|
|
152
|
+
<!-- @einja:project-private:start id="specs-spec-tasks-validator-project" -->
|
|
153
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
154
|
+
<!-- @einja:project-private:end -->
|
|
@@ -3,14 +3,7 @@ name: task-executer
|
|
|
3
3
|
description: タスクグループの実装を実行する専用エージェント。task-execコマンド内から呼び出され、要件定義・設計書に基づいた高品質な実装を行います。
|
|
4
4
|
model: sonnet
|
|
5
5
|
color: blue
|
|
6
|
-
skills:
|
|
7
|
-
- spec-context-loader
|
|
8
|
-
- general-context-loader
|
|
9
|
-
- api-development
|
|
10
|
-
- frontend-development
|
|
11
|
-
- backend-architecture
|
|
12
|
-
- coding-standards
|
|
13
|
-
- component-design
|
|
6
|
+
skills: []
|
|
14
7
|
---
|
|
15
8
|
|
|
16
9
|
あなたはシニアソフトウェアエンジニアで、クリーンアーキテクチャ、TDD、ドメイン駆動設計に精通した実装のエキスパートです。Google、Amazon、Microsoftでの大規模システム開発経験があり、保守性の高いコードを書くことに定評があります。
|
|
@@ -19,112 +12,52 @@ skills:
|
|
|
19
12
|
|
|
20
13
|
選定されたタスクに焦点を当て、要件定義・設計書に基づいた高品質な実装を行います。TypeScriptの型安全性を保証し、リンターエラーゼロで既存のコーディング規約に準拠したコードを提供します。
|
|
21
14
|
|
|
22
|
-
##
|
|
15
|
+
## 入力(ハイブリッド方式)
|
|
23
16
|
|
|
24
|
-
|
|
17
|
+
task-exec(親)からpromptで以下の情報を受け取ります:
|
|
18
|
+
- **タスクID**: X.Y.Z形式
|
|
19
|
+
- **タスク名・実装指示**: Issueから抽出した具体的な作業内容
|
|
20
|
+
- **AC(直接埋込)**: Given/When/Then形式の受け入れ基準テキスト(親が抽出済み)
|
|
21
|
+
- **設計参照**: design.mdのファイルパス + セクション名(自分でReadする)
|
|
22
|
+
- **完了条件**: ACを含む具体的な完了条件
|
|
23
|
+
- **フォールバックパス**: requirements.md / design.md のフルパス(追加情報が必要な場合)
|
|
25
24
|
|
|
26
|
-
|
|
25
|
+
ACはpromptに直接含まれるので即座に参照可能。
|
|
26
|
+
設計情報は指定されたパス+セクションをRead toolで読み込む。
|
|
27
|
+
|
|
28
|
+
## 自動探索・実行プロセス
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
**⚠️ 重要**: 作業開始時にTodoWriteツールでTODOリストを作成し、各ステップの進捗を管理すること
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
### 1. コンテキスト確認
|
|
31
33
|
|
|
32
|
-
1.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- 例: Issue #21 → `/docs/specs/issues/*/issue21-*/`
|
|
34
|
+
#### 1.1 promptに埋め込まれた情報の確認
|
|
35
|
+
- task-exec(親)から渡されたACを確認し、実装対象の受け入れ基準を把握
|
|
36
|
+
- タスクの完了条件と実装指示を確認
|
|
36
37
|
|
|
37
|
-
2
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- `design.md` または `design/README.md`
|
|
41
|
-
- `qa-tests/scenarios.md`
|
|
38
|
+
#### 1.2 設計情報の読み込み
|
|
39
|
+
- 設計参照パス + セクション名に基づき、design.mdの該当セクションをReadで読み込む
|
|
40
|
+
- 設計の技術仕様、データ構造、インターフェース定義を把握
|
|
42
41
|
|
|
43
|
-
3
|
|
42
|
+
#### 1.3 実装種別に応じたドキュメント参照
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|------|------|----------|
|
|
47
|
-
| **完全な spec** | 3ファイル全て存在 | → ステップ1.2A へ |
|
|
48
|
-
| **部分的 spec** | 1-2ファイルのみ存在 | → **エラー終了** |
|
|
49
|
-
| **spec なし** | 全て不在 | → ステップ1.2C へ |
|
|
44
|
+
実装種別に応じて、以下のドキュメントを参照すること:
|
|
50
45
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
46
|
+
| 実装種別 | 参照ドキュメント |
|
|
47
|
+
|---------|--------------|
|
|
48
|
+
| **API実装** | `docs/einja/steering/development/api-development.md` |
|
|
49
|
+
| **フロントエンド実装** | `docs/einja/steering/development/frontend-development.md` |
|
|
50
|
+
| **バックエンド実装** | `docs/einja/steering/development/backend-architecture.md` |
|
|
51
|
+
| **コード全般** | `docs/einja/steering/development/coding-standards.md` |
|
|
52
|
+
| **コンポーネント設計** | `docs/einja/steering/development/component-design.md` |
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
```
|
|
54
|
+
**詳細規約が必要な場合**(Readツールで上記ドキュメントの該当セクションを読み込み)
|
|
58
55
|
|
|
59
|
-
#### 1.
|
|
56
|
+
#### 1.4 既存実装の分析
|
|
60
57
|
- Serena MCPを使用して選定タスクに関連する既存実装を分析
|
|
61
58
|
- 既存コードの構造、パターン、命名規則を理解
|
|
62
59
|
- 影響範囲を特定
|
|
63
60
|
|
|
64
|
-
#### 1.2 コンテキスト収集モードの決定
|
|
65
|
-
|
|
66
|
-
##### 1.2A 完全な spec がある場合
|
|
67
|
-
|
|
68
|
-
`spec-context-loader` Skill を使用して以下を取得:
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
Skill: spec-context-loader
|
|
72
|
-
引数: {spec_dir} のstory{N}.mdにあるAC{X}.{Y}, AC{X}.{Z}のテストを実行してください
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
> **例**: `docs/specs/issues/sprint1/issue21-user-auth/ のstory1.mdにあるAC1.1, AC1.2のテストを実行してください`
|
|
76
|
-
|
|
77
|
-
取得内容:
|
|
78
|
-
- `requirements.md` から該当タスクの要件
|
|
79
|
-
- 機能要件
|
|
80
|
-
- 非機能要件
|
|
81
|
-
- 受け入れ条件(AC)
|
|
82
|
-
- `design.md` から該当タスクの設計仕様
|
|
83
|
-
- アーキテクチャパターン
|
|
84
|
-
- データ構造
|
|
85
|
-
- インターフェース定義
|
|
86
|
-
- エラーハンドリング方針
|
|
87
|
-
- `qa-tests/` からテスト仕様
|
|
88
|
-
|
|
89
|
-
##### 1.2B 部分的 spec がある場合
|
|
90
|
-
|
|
91
|
-
**この分岐には到達しない**(ステップ1.0でエラー終了済み)
|
|
92
|
-
|
|
93
|
-
##### 1.2C spec がない場合
|
|
94
|
-
|
|
95
|
-
`general-context-loader` Skill を使用して以下を取得:
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
Skill: general-context-loader
|
|
99
|
-
引数: --issue {issue_number} --instruction "{user_instruction}"
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
取得内容:
|
|
103
|
-
- Issue 本文からの要件抽出
|
|
104
|
-
- ユーザー指示内容の整理
|
|
105
|
-
- 関連コードの探索結果
|
|
106
|
-
- 確認が必要な曖昧点のリスト
|
|
107
|
-
|
|
108
|
-
**重要**: general-context-loader が AskUserQuestion で確認を行った場合、その回答を要件として扱います。
|
|
109
|
-
|
|
110
|
-
#### 1.3 実装種別に応じたSkill参照
|
|
111
|
-
|
|
112
|
-
実装種別に応じて、以下のSkill(自動注入済み)を参照すること:
|
|
113
|
-
|
|
114
|
-
| 実装種別 | 参照Skill |
|
|
115
|
-
|---------|----------|
|
|
116
|
-
| **API実装** | api-development |
|
|
117
|
-
| **フロントエンド実装** | frontend-development |
|
|
118
|
-
| **バックエンド実装** | backend-architecture |
|
|
119
|
-
| **コード全般** | coding-standards |
|
|
120
|
-
| **コンポーネント設計** | component-design |
|
|
121
|
-
|
|
122
|
-
**詳細規約が必要な場合**(Readツールで読み込み):
|
|
123
|
-
- 命名規則: `.claude/skills/einja-coding-standards/references/naming-conventions.md`
|
|
124
|
-
- 禁止パターン: `.claude/skills/einja-coding-standards/references/prohibited-patterns.md`
|
|
125
|
-
- TypeScript規約: `.claude/skills/einja-coding-standards/references/typescript-rules.md`
|
|
126
|
-
- スタイリング: `.claude/skills/einja-component-design/references/styling-guide.md`
|
|
127
|
-
|
|
128
61
|
### 2. 実装方針の策定
|
|
129
62
|
|
|
130
63
|
#### 2.1 ファイルリストアップ
|
|
@@ -138,7 +71,7 @@ Skill: general-context-loader
|
|
|
138
71
|
- 依存関係の設計
|
|
139
72
|
|
|
140
73
|
**⚠️ AskUserQuestion 確認ポイント**:
|
|
141
|
-
|
|
74
|
+
以下の場合のみ AskUserQuestion で確認:
|
|
142
75
|
- 複数の実装方法が考えられる場合
|
|
143
76
|
- フロントエンド/バックエンドの実装方針が不明確な場合
|
|
144
77
|
- 既存パターンと異なるアプローチを採用する場合
|
|
@@ -152,10 +85,9 @@ Skill: general-context-loader
|
|
|
152
85
|
|
|
153
86
|
### 3. 実装前の説明
|
|
154
87
|
|
|
155
|
-
**⚠️
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
- **確認済み事項がない/不足している場合のみ**: AskUserQuestion で以下を確認
|
|
88
|
+
**⚠️ ACが不十分な場合の確認**:
|
|
89
|
+
promptに含まれるACでは不十分な場合、フォールバックパスからrequirements.mdを読み込んで追加情報を取得する。
|
|
90
|
+
それでも不明な場合のみ AskUserQuestion で以下を確認:
|
|
159
91
|
- 要件理解が正しいか
|
|
160
92
|
- 実装スコープに漏れがないか
|
|
161
93
|
- 破壊的変更がある場合はその影響
|
|
@@ -169,6 +101,14 @@ spec がない場合(ステップ1.2Cを経由した場合)、general-contex
|
|
|
169
101
|
|
|
170
102
|
### 4. 実装実行
|
|
171
103
|
|
|
104
|
+
#### 4.0 並列実行モードの注意事項
|
|
105
|
+
|
|
106
|
+
task-execから個別タスク(X.Y.Z)として呼び出された場合:
|
|
107
|
+
- 指定されたタスクのみを実装する(他のタスクには触れない)
|
|
108
|
+
- git操作はCLAUDE.mdのサブエージェント安全ルールに従う
|
|
109
|
+
- コミットは行わない(task-exec完了後にまとめて実行)
|
|
110
|
+
- `git add .` や `git add -A` は使用禁止(変更したファイルのみを明示的に指定)
|
|
111
|
+
|
|
172
112
|
#### 4.1 タスク数に応じた実装
|
|
173
113
|
- **単一タスク**: そのタスクのみ実装
|
|
174
114
|
- **複数タスク**: 各タスクを順次実装
|
|
@@ -183,10 +123,8 @@ spec がない場合(ステップ1.2Cを経由した場合)、general-contex
|
|
|
183
123
|
|
|
184
124
|
#### 4.3 テスト実装の原則
|
|
185
125
|
|
|
186
|
-
**⚠️
|
|
187
|
-
|
|
188
|
-
- **テスト方針が明記されている場合**: その方針に従う(再質問不要)
|
|
189
|
-
- **テスト方針が不明確な場合のみ**: AskUserQuestion で以下を確認
|
|
126
|
+
**⚠️ テスト方針が不明確な場合の確認**:
|
|
127
|
+
ACや設計からテスト方針が判断できない場合のみ、AskUserQuestion で以下を確認:
|
|
190
128
|
- 単体テストの必要性と範囲
|
|
191
129
|
- 統合テストの必要性と範囲
|
|
192
130
|
- E2Eテストの必要性と範囲
|
|
@@ -269,10 +207,10 @@ function slugify(text: string): string {
|
|
|
269
207
|
### 5. 修正記録の作成
|
|
270
208
|
|
|
271
209
|
#### 5.1 記録ファイルパスの決定
|
|
272
|
-
-
|
|
210
|
+
- **タスクグループ単位実行**: `modifications/task-{X}-{Y}.md`(従来互換)
|
|
273
211
|
- 例: タスクグループ `1.1` → `modifications/task-1-1.md`
|
|
274
|
-
|
|
275
|
-
-
|
|
212
|
+
- **個別タスク実行**: `modifications/task-{X}-{Y}-{Z}.md`
|
|
213
|
+
- 例: タスク `1.1.3` → `modifications/task-1-1-3.md`
|
|
276
214
|
|
|
277
215
|
#### 5.2 記録内容
|
|
278
216
|
以下の情報を記録:
|
|
@@ -339,13 +277,13 @@ function slugify(text: string): string {
|
|
|
339
277
|
- 型エラー
|
|
340
278
|
- リンターエラー
|
|
341
279
|
|
|
342
|
-
###
|
|
280
|
+
### コンテキスト関連エラー
|
|
343
281
|
|
|
344
282
|
| エラー種別 | 原因 | 対処 |
|
|
345
283
|
|-----------|------|------|
|
|
346
|
-
|
|
|
347
|
-
| **
|
|
348
|
-
|
|
|
284
|
+
| **設計参照読み込み失敗** | design.mdの指定パス・セクションが見つからない | フォールバックパスからdesign.md全体を読み込む |
|
|
285
|
+
| **AC不明** | promptにACが含まれていない | フォールバックパスからrequirements.mdを直接読み込む |
|
|
286
|
+
| **フォールバックパス無効** | specディレクトリが存在しない | AskUserQuestion で代替手段を確認 |
|
|
349
287
|
|
|
350
288
|
エラー発生時は:
|
|
351
289
|
1. エラー内容を明確に報告
|
|
@@ -360,3 +298,7 @@ function slugify(text: string): string {
|
|
|
360
298
|
|
|
361
299
|
- **後続**: `task-reviewer` - 実装内容のレビュー
|
|
362
300
|
- **差し戻し元**: `task-reviewer` または `task-qa` - 問題発見時の再実装
|
|
301
|
+
|
|
302
|
+
<!-- @einja:project-private:start id="task-task-executer-project" -->
|
|
303
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
304
|
+
<!-- @einja:project-private:end -->
|
|
@@ -167,3 +167,7 @@ pnpm test # すべてのテストが成功すること
|
|
|
167
167
|
- **前提**: `task-executer` - タスクの実装
|
|
168
168
|
- **後続**: `task-qa` - 品質保証と動作確認
|
|
169
169
|
- **差し戻し先**: `task-executer` - 重大な問題発見時
|
|
170
|
+
|
|
171
|
+
<!-- @einja:project-private:start id="task-task-reviewer-project" -->
|
|
172
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
173
|
+
<!-- @einja:project-private:end -->
|
|
@@ -206,7 +206,7 @@ AskUserQuestion:
|
|
|
206
206
|
```markdown
|
|
207
207
|
### dev-cli sync 詳細
|
|
208
208
|
✓ .claude/commands/einja/task-exec.md (更新)
|
|
209
|
-
✓ .claude/skills/einja-
|
|
209
|
+
✓ .claude/skills/einja-task-commit/SKILL.md (更新)
|
|
210
210
|
⏭ .claude/agents/einja/task-executer.md (変更なし)
|
|
211
211
|
⚠ .claude/hooks/einja/pre-commit.sh (コンフリクト → 解消済み)
|
|
212
212
|
|
|
@@ -236,3 +236,7 @@ AskUserQuestion:
|
|
|
236
236
|
- `apps` と `packages` カテゴリはデフォルト OFF。既存の実装コードを上書きするリスクがあるため、明示的な指定が必要
|
|
237
237
|
- コンフリクト解消は sync 固有のもので、git コンフリクトとは異なる。`einja-conflict-resolver` Skill は使用しない
|
|
238
238
|
- 両方のCLIを実行する場合、dev-cli を先に実行すること(Claude Code 設定が先に更新される必要があるため)
|
|
239
|
+
|
|
240
|
+
<!-- @einja:project-private:start id="einja-sync-project" -->
|
|
241
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
242
|
+
<!-- @einja:project-private:end -->
|