@einja/dev-cli 0.1.40 → 0.1.44
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/commands/task-loop/lib/github-client.test.js.map +1 -1
- package/dist/commands/task-loop/lib/vibe-kanban-rest-client.js +2 -2
- package/dist/commands/task-loop/lib/vibe-kanban-rest-client.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/file-copier.js +3 -3
- package/dist/lib/preset-update/file-copier.js.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 +69 -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 +110 -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 +21 -1
- package/presets/default/.claude/agents/einja/codex-agent.md +5 -1
- package/presets/default/.claude/agents/einja/design-engineer.md +5 -1
- package/presets/default/.claude/agents/einja/docs/docs-updater.md +7 -93
- package/presets/default/.claude/agents/einja/frontend-architect.md +21 -1
- package/presets/default/.claude/agents/einja/frontend-coder.md +5 -1
- package/presets/default/.claude/agents/einja/{specs/spec-design-generator.md → issue-specs/design-generator.md} +16 -8
- package/presets/default/.claude/agents/einja/{specs/spec-qa-generator.md → issue-specs/qa-generator.md} +10 -4
- package/presets/default/.claude/agents/einja/{specs/spec-requirements-generator.md → issue-specs/requirements-generator.md} +9 -6
- package/presets/default/.claude/agents/einja/{specs/spec-tasks-generator.md → issue-specs/tasks-generator.md} +19 -16
- package/presets/default/.claude/agents/einja/{specs/spec-tasks-validator.md → issue-specs/tasks-validator.md} +13 -9
- package/presets/default/.claude/agents/einja/issue-specs/ui-design-generator.md +114 -0
- package/presets/default/.claude/agents/einja/task/task-executer.md +64 -116
- package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +6 -2
- package/presets/default/.claude/agents/einja/task/task-qa.md +7 -3
- package/presets/default/.claude/agents/einja/task/task-reviewer.md +17 -1
- package/presets/default/.claude/commands/einja/einja-sync.md +124 -45
- package/presets/default/.claude/commands/einja/frontend-implement.md +3 -1
- package/presets/default/.claude/commands/einja/issue-exec.md +413 -0
- package/presets/default/.claude/commands/einja/start-dev.md +4 -0
- package/presets/default/.claude/commands/einja/sync-cursor-commands.md +10 -6
- package/presets/default/.claude/commands/einja/{update-docs-by-task-specs.md → update-docs-by-issue-specs.md} +61 -57
- package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +27 -0
- package/presets/default/.claude/settings.json +29 -5
- package/presets/default/.claude/skills/{einja-general-context-loader → _einja-general-context-loader}/SKILL.md +6 -2
- package/presets/default/.claude/skills/{einja-output-format → _einja-output-format}/SKILL.md +5 -1
- package/presets/default/.claude/skills/_einja-project-overview/SKILL.md +29 -0
- package/presets/default/.claude/skills/{einja-spec-context-loader → _einja-spec-context-loader}/SKILL.md +9 -5
- package/presets/default/.claude/skills/einja-coding-standards/references/testing-strategy.md +899 -0
- package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +5 -1
- package/presets/default/.claude/skills/einja-create-pr/SKILL.md +138 -0
- package/presets/default/.claude/skills/einja-infra-maintenance/SKILL.md +779 -0
- package/presets/default/.claude/{commands/einja/spec-create.md → skills/einja-issue-spec-create/SKILL.md} +60 -23
- package/presets/default/.claude/skills/einja-issue-spec-generator/SKILL.md +105 -0
- package/presets/default/.claude/skills/einja-issue-spec-generator/references/format-rules.md +35 -0
- package/presets/default/.claude/skills/einja-issue-spec-validator/SKILL.md +130 -0
- package/presets/default/.claude/skills/einja-issue-spec-validator/references/validation-rules.md +52 -0
- package/presets/default/.claude/skills/einja-npm-release/SKILL.md +242 -0
- package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +311 -263
- 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 +401 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/compare_runs.py +154 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +272 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +247 -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 +375 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/utils.py +48 -0
- package/presets/default/.claude/skills/einja-skill-first/SKILL.md +265 -0
- package/presets/default/.claude/skills/einja-subagent-question-protocol/SKILL.md +98 -0
- package/presets/default/.claude/skills/einja-task-commit/SKILL.md +11 -7
- package/presets/default/.claude/{commands/einja/task-exec.md → skills/einja-task-exec/SKILL.md} +106 -89
- package/presets/default/.claude/skills/einja-task-qa/SKILL.md +8 -4
- package/presets/default/.claude/skills/einja-task-qa/references/troubleshooting.md +1 -1
- package/presets/default/.claude/skills/einja-task-qa/references/usage-patterns.md +2 -2
- package/presets/default/.claude/skills/einja-team-exec/SKILL.md +165 -0
- package/presets/default/.envrc +5 -0
- package/presets/default/.mcp.json +2 -12
- package/presets/default/CLAUDE.md.template +45 -8
- package/presets/default/docs/einja/example/specs/issues/issue999-example-task/tasks.md +1 -1
- package/presets/default/docs/einja/instructions/deployment-setup.md +4 -9
- 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 +71 -9
- package/presets/default/docs/einja/instructions/neon-cli-reference.md +3 -8
- package/presets/default/docs/einja/instructions/setup-flow.md +279 -0
- package/presets/default/docs/einja/instructions/task-execute.md +63 -68
- 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 +4 -9
- 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 +2 -2
- 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 +155 -140
- package/presets/default/docs/einja/steering/infrastructure/deployment.md +156 -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 +22 -110
- package/presets/default/scripts/ensure-serena.sh +75 -0
- package/presets/default/scripts/env-rotate-secrets.ts +396 -0
- package/presets/default/scripts/env-show.ts +130 -0
- package/presets/default/scripts/env.ts +479 -0
- package/presets/default/scripts/init-github.ts +363 -0
- package/presets/default/scripts/init.sh +98 -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 +655 -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/agents/einja/git/conflict-resolver.md +0 -148
- package/presets/default/.claude/hooks/einja/validate-git-commit.sh +0 -239
- 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/.claude/skills/einja-project-overview/SKILL.md +0 -35
- package/presets/default/docs/einja/instructions/task-vibe-kanban-loop.md +0 -565
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "テンプレート同期を実行。dev-cli/create-einja-appのsyncをカテゴリ選択式で実行し、コンフリクトも自動解消します"
|
|
3
|
-
allowed-tools: Bash, AskUserQuestion, Read, Grep, Glob
|
|
3
|
+
allowed-tools: Bash, AskUserQuestion, Read, Grep, Glob, Edit
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# テンプレート同期コマンド
|
|
@@ -16,8 +16,8 @@ allowed-tools: Bash, AskUserQuestion, Read, Grep, Glob
|
|
|
16
16
|
以下のコマンドで利用可能なCLIを検出する。
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
npx @einja/dev-cli --version 2>/dev/null
|
|
20
|
-
npx create-einja-app --version 2>/dev/null
|
|
19
|
+
npx --no @einja/dev-cli --version 2>/dev/null
|
|
20
|
+
npx --no create-einja-app --version 2>/dev/null
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
| 検出結果 | 動作 |
|
|
@@ -104,10 +104,10 @@ AskUserQuestion:
|
|
|
104
104
|
|
|
105
105
|
```bash
|
|
106
106
|
# dev-cli の場合
|
|
107
|
-
npx @einja/dev-cli sync --only <categories> --dry-run --yes
|
|
107
|
+
npx --yes @einja/dev-cli sync --only <categories> --dry-run --yes
|
|
108
108
|
|
|
109
109
|
# create-einja-app の場合
|
|
110
|
-
npx create-einja-app sync --categories <categories> --dry-run
|
|
110
|
+
npx --yes create-einja-app sync --categories <categories> --dry-run
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
> **注**: 両CLIでカテゴリ指定のオプション名が異なる(dev-cli: `--only` / create-einja-app: `--categories`)
|
|
@@ -116,9 +116,15 @@ npx create-einja-app sync --categories <categories> --dry-run
|
|
|
116
116
|
- 差分がない場合は「変更はありません」と表示して該当CLIの処理をスキップ
|
|
117
117
|
- 差分がある場合はファイル一覧と変更内容をユーザーに提示
|
|
118
118
|
|
|
119
|
+
#### dev-cli 使用時: 孤児ファイルの事前検出
|
|
120
|
+
|
|
121
|
+
dry-run の JSON出力から `orphans` 配列を確認する。存在する孤児(`exists: true`)がある場合は一覧をテーブル表示し、Step 4 の確認時に孤児削除を含めるかユーザーに確認する。
|
|
122
|
+
|
|
119
123
|
### Step 4: 実行確認 → sync実行
|
|
120
124
|
|
|
121
|
-
|
|
125
|
+
差分プレビューと孤児ファイル情報を見せた上で、ユーザーに実行可否を確認する。
|
|
126
|
+
|
|
127
|
+
#### 孤児ファイルがない場合
|
|
122
128
|
|
|
123
129
|
```yaml
|
|
124
130
|
AskUserQuestion:
|
|
@@ -131,84 +137,152 @@ AskUserQuestion:
|
|
|
131
137
|
description: "変更を適用せずに終了します"
|
|
132
138
|
```
|
|
133
139
|
|
|
140
|
+
#### 孤児ファイルがある場合(dev-cli 使用時)
|
|
141
|
+
|
|
142
|
+
```yaml
|
|
143
|
+
AskUserQuestion:
|
|
144
|
+
question: "上記の変更を適用しますか?(孤児ファイルN個を検出)"
|
|
145
|
+
header: "同期実行の確認"
|
|
146
|
+
options:
|
|
147
|
+
- label: "孤児ファイルも削除して同期(推奨)"
|
|
148
|
+
description: "表示された差分を適用し、テンプレートから削除されたファイル(N個)も削除します"
|
|
149
|
+
- label: "孤児ファイルは残して同期"
|
|
150
|
+
description: "表示された差分のみ適用し、孤児ファイルは残します"
|
|
151
|
+
- label: "キャンセル"
|
|
152
|
+
description: "変更を適用せずに終了します"
|
|
153
|
+
```
|
|
154
|
+
|
|
134
155
|
**実行順序**: dev-cli を先に実行し、次に create-einja-app を実行する(dev-cli が Claude Code 設定を先に更新するため)。
|
|
135
156
|
|
|
136
157
|
```bash
|
|
137
|
-
# dev-cli
|
|
138
|
-
npx @einja/dev-cli sync --only <categories> --yes --json
|
|
158
|
+
# dev-cli(孤児削除あり)
|
|
159
|
+
npx --yes @einja/dev-cli sync --only <categories> --yes --json --clean
|
|
160
|
+
|
|
161
|
+
# dev-cli(孤児削除なし)
|
|
162
|
+
npx --yes @einja/dev-cli sync --only <categories> --yes --json
|
|
139
163
|
|
|
140
164
|
# create-einja-app
|
|
141
|
-
npx create-einja-app sync --categories <categories>
|
|
165
|
+
npx --yes create-einja-app sync --categories <categories>
|
|
142
166
|
```
|
|
143
167
|
|
|
144
168
|
- dev-cli は `--json` オプションで構造化出力を取得しパースする
|
|
145
|
-
-
|
|
169
|
+
- 孤児削除を選択した場合は `--clean` フラグを追加する(sync と孤児削除を1回の実行で完了)
|
|
170
|
+
- create-einja-app sync には `--yes` フラグがない。`--categories` 指定時でもプロジェクト設定検出失敗時や依存バージョン競合時に対話プロンプトが発生する可能性がある。その場合は標準出力を確認し、必要に応じてユーザーに手動対応を促す
|
|
171
|
+
|
|
172
|
+
### Step 5: コンフリクト検出 → 対話的解消(dev-cli のみ)
|
|
173
|
+
|
|
174
|
+
dev-cli の sync 固有のコンフリクトを検出し、1ファイルずつ対話的に解消する(git コンフリクトとは異なる)。create-einja-app にはファイルコンフリクトの概念がないため、このStepは dev-cli 使用時のみ実行する。
|
|
175
|
+
|
|
176
|
+
#### 5-1. コンフリクトファイル一覧取得
|
|
146
177
|
|
|
147
|
-
|
|
178
|
+
dev-cli の JSON出力の `files` 配列から `status === "conflict"` のエントリを抽出する。
|
|
148
179
|
|
|
149
|
-
|
|
180
|
+
- コンフリクトなし → このStepをスキップ
|
|
181
|
+
- コンフリクトファイル一覧をテーブル表示(ファイルパス、コンフリクト箇所数)
|
|
182
|
+
- JSON出力のパースに失敗した場合は、標準出力をそのまま表示し、同期対象カテゴリのファイルパスのみを対象に `Grep` で dev-cli 固有のコンフリクトマーカー `<<<<<<< LOCAL (your changes)` を検索して検出する(プロジェクト全体を検索しないこと)
|
|
150
183
|
|
|
151
|
-
####
|
|
184
|
+
#### 5-2. 各ファイルを1ファイルずつ処理
|
|
152
185
|
|
|
153
|
-
|
|
154
|
-
|-----|---------|
|
|
155
|
-
| dev-cli | JSON出力の `status: "partial_success"` かつ `conflicts > 0` |
|
|
156
|
-
| create-einja-app | 標準出力に「コンフリクト」文字列が含まれる |
|
|
186
|
+
以下を各コンフリクトファイルについて繰り返す:
|
|
157
187
|
|
|
158
|
-
|
|
188
|
+
a. `Read` でファイル全体を読み込む
|
|
189
|
+
b. コンフリクトマーカーブロックを特定し、**双方の内容を分析・説明**:
|
|
190
|
+
- ローカル側: 何がカスタマイズされているか(例: プロジェクト固有の設定値)
|
|
191
|
+
- テンプレート側: 何が更新されたか(例: 新しいフィールド追加、バグ修正)
|
|
192
|
+
- 影響の説明: どちらを採用した場合に何が起きるか
|
|
193
|
+
c. **具体的なマージ案を提案**: 両方の変更を分析し、統合案を作成(可能な場合)
|
|
194
|
+
d. AskUserQuestion で解消方法を確認:
|
|
159
195
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
196
|
+
```yaml
|
|
197
|
+
AskUserQuestion:
|
|
198
|
+
question: "{ファイル名}のコンフリクト解消方法を選択してください"
|
|
199
|
+
header: "コンフリクト解消"
|
|
200
|
+
options:
|
|
201
|
+
- label: "テンプレート優先"
|
|
202
|
+
description: "テンプレートの内容を採用。メリット: 最新の更新を取り込める。デメリット: ローカルのカスタマイズが失われる"
|
|
203
|
+
- label: "ローカル優先"
|
|
204
|
+
description: "現在の内容を維持。メリット: カスタマイズを保全できる。デメリット: テンプレートの更新が適用されない"
|
|
205
|
+
- label: "マージ案(両方の変更を統合)"
|
|
206
|
+
description: "{具体的なマージ内容の説明}。メリット: {利点}。デメリット: {欠点}"
|
|
207
|
+
- label: "このファイルをスキップ"
|
|
208
|
+
description: "コンフリクトマーカーを残して後で手動解消。メリット: 判断を保留できる。デメリット: 後で対応が必要"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**重要**: 必ず1ファイルごとにAskUserQuestionを実行する。複数ファイルをまとめて質問しない。
|
|
212
|
+
|
|
213
|
+
e. 選択に応じて `Edit` でコンフリクトマーカーを解消する
|
|
214
|
+
- 複数マーカーがある場合はファイル末尾側から処理し、行番号ずれを防止する
|
|
215
|
+
- テンプレート優先: `<<<<<<< LOCAL` 〜 `=======` を削除し、`=======` 〜 `>>>>>>> TEMPLATE` のテンプレート側を残す
|
|
216
|
+
- ローカル優先: `<<<<<<< LOCAL` のローカル側を残し、`=======` 〜 `>>>>>>> TEMPLATE` を削除する
|
|
217
|
+
- マージ案: 提案したマージ内容でマーカーブロック全体を置換する
|
|
218
|
+
f. 解消結果を `Read` で確認し、ユーザーに表示
|
|
219
|
+
|
|
220
|
+
**コンフリクトマーカー形式**: `<<<<<<< LOCAL (your changes)` / `=======` / `>>>>>>> TEMPLATE (from @einja/cli)`
|
|
221
|
+
|
|
222
|
+
#### 5-3. 全ファイル解消後の検証
|
|
164
223
|
|
|
165
|
-
|
|
166
|
-
|
|
224
|
+
- `Grep` で `<<<<<<<` パターンを検索し、未解消マーカーが残っていないか検証
|
|
225
|
+
- スキップされたファイルがあれば一覧を再表示
|
|
167
226
|
|
|
168
|
-
|
|
227
|
+
### Step 6: 孤児ファイル処理結果の確認(dev-cli のみ)
|
|
228
|
+
|
|
229
|
+
Step 4 で孤児削除を選択した場合、JSON出力の `summary.orphansDeleted` を確認し、削除されたファイル一覧を記録する(Step 9 の詳細表示で使用)。
|
|
230
|
+
|
|
231
|
+
Step 4 で孤児削除をスキップした場合、孤児ファイル一覧を再表示し「後で `npx --yes @einja/dev-cli sync --only <categories> --clean --yes` で削除できます」と案内する。
|
|
232
|
+
|
|
233
|
+
### Step 7: direnv allow 実行確認
|
|
234
|
+
|
|
235
|
+
`.envrc` が正常に更新された場合に `direnv allow` を実行する。
|
|
236
|
+
|
|
237
|
+
1. dev-cli の JSON出力の `files` 配列から `.envrc` のエントリを確認する
|
|
238
|
+
2. 以下の条件をすべて満たす場合のみ実行対象とする:
|
|
239
|
+
- `.envrc` の `status` が `"success"` である(`"skipped"`, `"conflict"`, `"error"` は対象外)
|
|
240
|
+
- ファイル内にコンフリクトマーカー(`<<<<<<< LOCAL`)が含まれていない
|
|
241
|
+
3. `command -v direnv` で direnv の存在を確認する(インストールされていなければスキップし、Step 8 で案内表示)
|
|
242
|
+
4. AskUserQuestion で確認:
|
|
169
243
|
|
|
170
244
|
```yaml
|
|
171
245
|
AskUserQuestion:
|
|
172
|
-
question: "
|
|
173
|
-
header: "
|
|
246
|
+
question: ".envrc が更新されました。direnv allow を実行しますか?"
|
|
247
|
+
header: "direnv allow"
|
|
174
248
|
options:
|
|
175
|
-
- label: "
|
|
176
|
-
description: "
|
|
177
|
-
- label: "
|
|
178
|
-
description: "
|
|
179
|
-
- label: "手動マージ(1ファイルずつ確認)"
|
|
180
|
-
description: "各ファイルの差分を確認しながら、手動でマージ内容を決定します"
|
|
249
|
+
- label: "実行する(推奨)"
|
|
250
|
+
description: "更新済み .envrc を有効化します。環境変数が即座に反映されます"
|
|
251
|
+
- label: "スキップ"
|
|
252
|
+
description: "後で手動で direnv allow を実行します"
|
|
181
253
|
```
|
|
182
254
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
- ローカル優先: 現在の内容を維持(変更なし)
|
|
186
|
-
- 手動マージ: テンプレート内容とローカル内容を両方表示し、ユーザーと対話しながら `Edit` で編集
|
|
255
|
+
5. 「実行する」選択時に `direnv allow` を実行
|
|
256
|
+
6. 結果を表示(成功/失敗。失敗しても同期処理全体は継続する)
|
|
187
257
|
|
|
188
|
-
### Step
|
|
258
|
+
### Step 8: 結果サマリー表示
|
|
189
259
|
|
|
190
260
|
テーブル形式で同期結果の概要を表示する。
|
|
191
261
|
|
|
192
262
|
```markdown
|
|
193
263
|
## 同期結果サマリー
|
|
194
264
|
|
|
195
|
-
| CLI | 成功 | スキップ | コンフリクト |
|
|
196
|
-
|
|
197
|
-
| dev-cli | 5 | 2 | 1 (解消済み) |
|
|
198
|
-
| create-einja-app | 8 | 3 | 0 |
|
|
199
|
-
| **合計** | **13** | **5** | **1** |
|
|
265
|
+
| CLI | 成功 | スキップ | コンフリクト | 孤児削除 |
|
|
266
|
+
|-----|------|---------|------------|---------|
|
|
267
|
+
| dev-cli | 5 | 2 | 1 (解消済み) | 2 |
|
|
268
|
+
| create-einja-app | 8 | 3 | 0 | - |
|
|
269
|
+
| **合計** | **13** | **5** | **1** | **2** |
|
|
200
270
|
```
|
|
201
271
|
|
|
202
|
-
|
|
272
|
+
- `.envrc` が変更された場合は「✓ direnv allow 実行済み」を表示
|
|
273
|
+
- `.envrc` が変更されたが direnv 未インストールの場合は「⚠ direnv 未インストール。手動で `direnv allow` を実行してください」を表示
|
|
274
|
+
|
|
275
|
+
### Step 9: 結果詳細表示
|
|
203
276
|
|
|
204
277
|
各ファイルの詳細結果を以下の形式で表示する。
|
|
205
278
|
|
|
206
279
|
```markdown
|
|
207
280
|
### dev-cli sync 詳細
|
|
208
281
|
✓ .claude/commands/einja/task-exec.md (更新)
|
|
209
|
-
✓ .claude/skills/einja-
|
|
282
|
+
✓ .claude/skills/einja-task-commit/SKILL.md (更新)
|
|
210
283
|
⏭ .claude/agents/einja/task-executer.md (変更なし)
|
|
211
284
|
⚠ .claude/hooks/einja/pre-commit.sh (コンフリクト → 解消済み)
|
|
285
|
+
🗑️ .claude/skills/old-skill/SKILL.md (孤児ファイル削除)
|
|
212
286
|
|
|
213
287
|
### create-einja-app sync 詳細
|
|
214
288
|
✨ .github/workflows/ci.yml (新規)
|
|
@@ -224,6 +298,7 @@ AskUserQuestion:
|
|
|
224
298
|
| ✨ | 新規ファイル追加 |
|
|
225
299
|
| ⏭ | 変更なし(スキップ) |
|
|
226
300
|
| ⚠ | コンフリクト発生(解消済み) |
|
|
301
|
+
| 🗑️ | 孤児ファイル削除 |
|
|
227
302
|
|
|
228
303
|
**パース方法:**
|
|
229
304
|
- dev-cli: `--json` 出力の `files` 配列をパースして各ファイルのステータスを表示。JSON形式が不正な場合は標準出力をそのまま表示
|
|
@@ -236,3 +311,7 @@ AskUserQuestion:
|
|
|
236
311
|
- `apps` と `packages` カテゴリはデフォルト OFF。既存の実装コードを上書きするリスクがあるため、明示的な指定が必要
|
|
237
312
|
- コンフリクト解消は sync 固有のもので、git コンフリクトとは異なる。`einja-conflict-resolver` Skill は使用しない
|
|
238
313
|
- 両方のCLIを実行する場合、dev-cli を先に実行すること(Claude Code 設定が先に更新される必要があるため)
|
|
314
|
+
|
|
315
|
+
<!-- @einja:project-private:start id="einja-sync-project" -->
|
|
316
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
317
|
+
<!-- @einja:project-private:end -->
|