@einja/dev-cli 0.1.40 → 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 +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 +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
|
@@ -1,421 +1,413 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: einja-skill-creator
|
|
3
|
-
description:
|
|
3
|
+
description: >
|
|
4
|
+
新しいSkillの作成、既存Skillの改善・更新、Skillパフォーマンスの評価に使用。Skillをゼロから作成したい場合、既存Skillを更新・最適化したい場合、評価テストでSkillをテストしたい場合、ベンチマークでパフォーマンスを分析したい場合、Skillのdescriptionのトリガー精度を最適化したい場合に使用。Create new skills, modify and improve existing skills, measure skill performance, run evals, benchmark, optimize description triggering.
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Skill作成ガイド
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
Skillを作成し、反復的に改善するためのSkill。
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
大まかなプロセスは以下の通り:
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
- Skillに何をさせたいか、どのように動作すべきかを決める
|
|
14
|
+
- Skillのドラフトを書く
|
|
15
|
+
- いくつかのテストプロンプトを作成し、Skill付きのClaudeで実行する
|
|
16
|
+
- ユーザーと共に結果を定性的・定量的に評価する
|
|
17
|
+
- バックグラウンドで実行中に、定量的な評価項目がなければドラフトする。すでにある場合はそのまま使用するか、必要に応じて修正する。ユーザーに説明する
|
|
18
|
+
- `eval-viewer/generate_review.py`スクリプトで結果をユーザーに表示し、定量的メトリクスも確認してもらう
|
|
19
|
+
- ユーザーの評価フィードバック(および定量的ベンチマークから明らかになった問題)に基づいてSkillを書き直す
|
|
20
|
+
- 満足するまで繰り返す
|
|
21
|
+
- テストセットを拡大し、より大規模に再試行する
|
|
13
22
|
|
|
14
|
-
Skill
|
|
23
|
+
このSkillを使う際の役割は、ユーザーがこのプロセスのどこにいるかを把握し、次のステージに進む手助けをすること。例えば「Xのスキルを作りたい」と言われたら、意図を明確化し、ドラフトを書き、テストケースを作成し、評価方法を決め、全プロンプトを実行し、繰り返す。
|
|
15
24
|
|
|
16
|
-
|
|
25
|
+
一方、すでにドラフトがある場合は、直接eval/反復パートに入れる。
|
|
17
26
|
|
|
18
|
-
|
|
19
|
-
2. **ツール統合** - 特定のファイル形式やAPIを扱うための指示
|
|
20
|
-
3. **ドメイン専門知識** - 会社固有の知識、スキーマ、ビジネスロジック
|
|
21
|
-
4. **バンドルリソース** - 複雑で反復的なタスクのためのスクリプト、参照資料、アセット
|
|
27
|
+
もちろん柔軟に。ユーザーが「大量の評価は不要、一緒に感覚で作ろう」と言えばそうする。
|
|
22
28
|
|
|
23
|
-
|
|
29
|
+
Skillが完成した後(順序は柔軟)、Skillのdescription最適化も実行できる。これには専用のスクリプトがある。
|
|
24
30
|
|
|
25
|
-
|
|
31
|
+
## ユーザーとのコミュニケーション
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
スキルクリエイターは、コーディング用語への馴染み度が大きく異なるユーザーに使われる可能性がある。コンテキストの手がかりに注意して、コミュニケーションの言い回しを調整すること。デフォルトの目安:
|
|
28
34
|
|
|
29
|
-
|
|
35
|
+
- 「評価」「ベンチマーク」はボーダーラインだがOK
|
|
36
|
+
- 「JSON」「アサーション」はユーザーがそれらを知っている確実な手がかりを見てから、説明なしで使用する
|
|
30
37
|
|
|
31
|
-
|
|
38
|
+
疑わしい場合は用語を簡潔に説明してOK。不明な場合は短い定義を添えて明確にする。
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
タスクの脆弱性と可変性に応じて、具体性のレベルを合わせます:
|
|
40
|
+
---
|
|
36
41
|
|
|
37
|
-
|
|
42
|
+
## Skillの作成
|
|
38
43
|
|
|
39
|
-
|
|
44
|
+
### 意図の把握
|
|
40
45
|
|
|
41
|
-
|
|
46
|
+
ユーザーの意図を理解することから始める。現在の会話にすでにワークフローが含まれている場合(例:「これをスキルにして」)、会話履歴から回答を抽出する — 使用されたツール、ステップの順序、ユーザーの修正、観察されたI/O形式。ユーザーにギャップを埋めてもらい、次に進む前に確認する。
|
|
42
47
|
|
|
43
|
-
Claude
|
|
48
|
+
1. このSkillでClaudeに何をできるようにしたいか?
|
|
49
|
+
2. このSkillはいつトリガーすべきか?(どのようなユーザーフレーズ/コンテキスト)
|
|
50
|
+
3. 期待される出力フォーマットは?
|
|
51
|
+
4. Skillの動作を検証するためのテストケースを設定すべきか?客観的に検証可能な出力(ファイル変換、データ抽出、コード生成、固定ワークフロー)を持つSkillはテストケースの恩恵を受ける。主観的な出力(文体、アート)は通常不要。Skillの種類に基づいて適切なデフォルトを提案するが、最終判断はユーザーに委ねる。
|
|
44
52
|
|
|
45
|
-
###
|
|
53
|
+
### インタビューとリサーチ
|
|
46
54
|
|
|
47
|
-
|
|
55
|
+
エッジケース、I/Oフォーマット、サンプルファイル、成功基準、依存関係について積極的に質問する。テストプロンプトの作成はこの部分が固まってから。
|
|
48
56
|
|
|
49
|
-
|
|
50
|
-
skill-name/
|
|
51
|
-
├── SKILL.md (必須)
|
|
52
|
-
│ ├── YAMLフロントマターメタデータ (必須)
|
|
53
|
-
│ │ ├── name: (必須)
|
|
54
|
-
│ │ ├── description: (必須)
|
|
55
|
-
│ │ └── compatibility: (オプション、めったに不要)
|
|
56
|
-
│ └── Markdown指示 (必須)
|
|
57
|
-
└── バンドルリソース (オプション)
|
|
58
|
-
├── scripts/ - 実行可能コード(Python/Bash等)
|
|
59
|
-
├── references/ - 必要に応じてコンテキストに読み込むドキュメント
|
|
60
|
-
└── assets/ - 出力で使用されるファイル(テンプレート、アイコン、フォント等)
|
|
61
|
-
```
|
|
57
|
+
利用可能なMCPを確認 — リサーチに有用なら(ドキュメント検索、類似スキル発見、ベストプラクティス参照)、サブエージェントで並行リサーチ。
|
|
62
58
|
|
|
63
|
-
|
|
59
|
+
### SKILL.mdの作成
|
|
64
60
|
|
|
65
|
-
|
|
61
|
+
ユーザーインタビューに基づいて以下を記入:
|
|
66
62
|
|
|
67
|
-
-
|
|
68
|
-
-
|
|
63
|
+
- **name**: Skill識別子
|
|
64
|
+
- **description**: いつトリガーするか、何をするか。主要なトリガーメカニズム。Skillが何をするかと使用する具体的なコンテキストの両方を含める。「いつ使用するか」情報はすべてここに。本文はトリガー後に読み込まれるため、本文の「使用すべき場合」セクションはClaudeに役立たない。注意:現在Claudeはスキルを「アンダートリガー」する傾向がある。対策としてdescriptionを少し「積極的」にする
|
|
65
|
+
- **compatibility**: 必要なツール、依存関係(オプション、まれに必要)
|
|
66
|
+
- **Skillの残りの部分 :)**
|
|
69
67
|
|
|
70
|
-
|
|
68
|
+
### Skill記述ガイド
|
|
71
69
|
|
|
72
|
-
|
|
70
|
+
#### Skillの構造
|
|
73
71
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
72
|
+
```
|
|
73
|
+
skill-name/
|
|
74
|
+
├── SKILL.md(必須)
|
|
75
|
+
│ ├── YAMLフロントマター(name、description必須)
|
|
76
|
+
│ └── Markdown指示
|
|
77
|
+
└── バンドルリソース(オプション)
|
|
78
|
+
├── scripts/ - 決定論的/反復タスク用の実行可能コード
|
|
79
|
+
├── references/ - 必要に応じてコンテキストに読み込むドキュメント
|
|
80
|
+
└── assets/ - 出力で使用されるファイル(テンプレート、アイコン、フォント等)
|
|
81
|
+
```
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
#### 段階的開示
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
- **ベストプラクティス**: ファイルが大きい場合(>10k語)、SKILL.mdにgrep検索パターンを含める
|
|
90
|
-
- **重複を避ける**: 情報はSKILL.mdまたはreferencesファイルのどちらか一方に存在すべきで、両方には存在すべきではありません。詳細情報にはreferencesファイルを優先してください。SKILL.mdには必須の手続き的指示とワークフローガイダンスのみを保持し、詳細な参照資料、スキーマ、例はreferencesファイルに移動してください。
|
|
85
|
+
Skillは3レベルの読み込みシステムを使用:
|
|
86
|
+
1. **メタデータ**(name + description)- 常にコンテキスト内(~100語)
|
|
87
|
+
2. **SKILL.md本文** - Skillトリガー時(500行以内が理想)
|
|
88
|
+
3. **バンドルリソース** - 必要に応じて(無制限、スクリプトは読み込まずに実行可能)
|
|
91
89
|
|
|
92
|
-
|
|
90
|
+
語数は目安であり、必要に応じて長くしてよい。
|
|
93
91
|
|
|
94
|
-
|
|
92
|
+
**主要パターン:**
|
|
93
|
+
- SKILL.mdは500行以内に抑える。この制限に近づいたら追加の階層を設け、モデルが次にどこを参照すべきか明確に示す
|
|
94
|
+
- referenceファイルをSKILL.mdから明確に参照し、いつ読むべきか記載
|
|
95
|
+
- 大きなreferenceファイル(300行超)には目次を含める
|
|
95
96
|
|
|
96
|
-
|
|
97
|
-
- **例**: ブランドアセットのための `assets/logo.png`、PowerPointテンプレートのための `assets/slides.pptx`、HTML/Reactボイラープレートのための `assets/frontend-template/`、タイポグラフィのための `assets/font.ttf`
|
|
98
|
-
- **使用例**: テンプレート、画像、アイコン、ボイラープレートコード、フォント、コピーまたは修正されるサンプルドキュメント
|
|
99
|
-
- **利点**: 出力リソースとドキュメントを分離し、Claudeがコンテキストに読み込まずにファイルを使用可能
|
|
97
|
+
**ドメイン別整理**: Skillが複数ドメイン/フレームワークをサポートする場合、バリエーションごとに整理:
|
|
100
98
|
|
|
101
|
-
|
|
99
|
+
```
|
|
100
|
+
cloud-deploy/
|
|
101
|
+
├── SKILL.md(ワークフロー + 選択)
|
|
102
|
+
└── references/
|
|
103
|
+
├── aws.md
|
|
104
|
+
├── gcp.md
|
|
105
|
+
└── azure.md
|
|
106
|
+
```
|
|
102
107
|
|
|
103
|
-
|
|
108
|
+
Claudeは関連するreferenceファイルのみ読む。
|
|
104
109
|
|
|
105
|
-
|
|
106
|
-
- INSTALLATION_GUIDE.md
|
|
107
|
-
- QUICK_REFERENCE.md
|
|
108
|
-
- CHANGELOG.md
|
|
109
|
-
- その他
|
|
110
|
+
#### 驚きのない原則
|
|
110
111
|
|
|
111
|
-
Skill
|
|
112
|
+
Skillにマルウェア、エクスプロイトコード、システムセキュリティを侵害する可能性のあるコンテンツを含めてはならない。誤解を招くSkillや、不正アクセス、データ窃取、その他の悪意のある活動を助長するSkillの作成に協力しないこと。「XYZとしてロールプレイ」のようなものはOK。
|
|
112
113
|
|
|
113
|
-
|
|
114
|
+
#### 参考ドキュメントの記録
|
|
114
115
|
|
|
115
|
-
Skill
|
|
116
|
+
Skill作成時に参考にした公式ドキュメント、ベースとなるSkill、設計判断の根拠となった情報源をSKILL.md内にHTMLコメントで記載する。
|
|
116
117
|
|
|
117
|
-
|
|
118
|
-
2. **SKILL.md本文** - スキルトリガー時(<5k語)
|
|
119
|
-
3. **バンドルリソース** - Claudeが必要に応じて(無制限。スクリプトはコンテキストウィンドウに読み込まずに実行可能)
|
|
118
|
+
**記載箇所**: フロントマター(`---`)直後
|
|
120
119
|
|
|
121
|
-
|
|
120
|
+
**フォーマット**:
|
|
121
|
+
```
|
|
122
|
+
<!-- 参考: https://example.com/docs/feature -->
|
|
123
|
+
<!-- ベース: .claude/skills/existing-skill/SKILL.md -->
|
|
124
|
+
```
|
|
122
125
|
|
|
123
|
-
|
|
126
|
+
これにより、Skillの設計根拠を後から追跡でき、公式仕様の変更時に影響範囲を特定しやすくなる。
|
|
124
127
|
|
|
125
|
-
|
|
128
|
+
#### 記述パターン
|
|
126
129
|
|
|
127
|
-
|
|
130
|
+
指示には命令形を使用する。
|
|
128
131
|
|
|
132
|
+
**出力フォーマットの定義** - 例:
|
|
129
133
|
```markdown
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
## 高度な機能
|
|
138
|
-
|
|
139
|
-
- **フォーム入力**: 完全ガイドは [FORMS.md](FORMS.md) を参照
|
|
140
|
-
- **APIリファレンス**: すべてのメソッドは [REFERENCE.md](REFERENCE.md) を参照
|
|
141
|
-
- **例**: 一般的なパターンは [EXAMPLES.md](EXAMPLES.md) を参照
|
|
134
|
+
## レポート構造
|
|
135
|
+
常にこのテンプレートを使用:
|
|
136
|
+
# [タイトル]
|
|
137
|
+
## エグゼクティブサマリー
|
|
138
|
+
## 主要な発見
|
|
139
|
+
## 推奨事項
|
|
142
140
|
```
|
|
143
141
|
|
|
144
|
-
|
|
142
|
+
**例のパターン** - 例を含めると有用:
|
|
143
|
+
```markdown
|
|
144
|
+
## コミットメッセージフォーマット
|
|
145
|
+
**例1:**
|
|
146
|
+
入力: Added user authentication with JWT tokens
|
|
147
|
+
出力: feat(auth): implement JWT-based authentication
|
|
148
|
+
```
|
|
145
149
|
|
|
146
|
-
|
|
150
|
+
### 記述スタイル
|
|
147
151
|
|
|
148
|
-
|
|
152
|
+
重苦しい必須語句(MUST)の代わりに、物事がなぜ重要かをモデルに説明する。心の理論を使い、Skillを一般的で、特定の例に狭くなりすぎないようにする。ドラフトを書き、新鮮な目で見直して改善する。
|
|
149
153
|
|
|
150
|
-
|
|
151
|
-
bigquery-skill/
|
|
152
|
-
├── SKILL.md (概要とナビゲーション)
|
|
153
|
-
└── references/
|
|
154
|
-
├── finance.md (収益、請求メトリクス)
|
|
155
|
-
├── sales.md (商談、パイプライン)
|
|
156
|
-
├── product.md (API使用、機能)
|
|
157
|
-
└── marketing.md (キャンペーン、アトリビューション)
|
|
158
|
-
```
|
|
154
|
+
### テストケース
|
|
159
155
|
|
|
160
|
-
|
|
156
|
+
Skillドラフト作成後、2-3のリアルなテストプロンプトを作成 — 実際のユーザーが言いそうなもの。ユーザーに共有:「テストケースをいくつか考えました。これで良いですか?追加したいものはありますか?」そして実行する。
|
|
161
157
|
|
|
162
|
-
|
|
158
|
+
テストケースを`evals/evals.json`に保存。アサーションはまだ書かない — プロンプトのみ。アサーションは実行中に次のステップで作成する。
|
|
163
159
|
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"skill_name": "example-skill",
|
|
163
|
+
"evals": [
|
|
164
|
+
{
|
|
165
|
+
"id": 1,
|
|
166
|
+
"prompt": "ユーザーのタスクプロンプト",
|
|
167
|
+
"expected_output": "期待される結果の説明",
|
|
168
|
+
"files": []
|
|
169
|
+
}
|
|
170
|
+
]
|
|
171
|
+
}
|
|
164
172
|
```
|
|
165
|
-
cloud-deploy/
|
|
166
|
-
├── SKILL.md (ワークフロー + プロバイダー選択)
|
|
167
|
-
└── references/
|
|
168
|
-
├── aws.md (AWSデプロイパターン)
|
|
169
|
-
├── gcp.md (GCPデプロイパターン)
|
|
170
|
-
└── azure.md (Azureデプロイパターン)
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
ユーザーがAWSを選択すると、Claudeはaws.mdのみを読みます。
|
|
174
173
|
|
|
175
|
-
|
|
174
|
+
全スキーマは`references/schemas.md`を参照(アサーションフィールドを含む)。
|
|
176
175
|
|
|
177
|
-
|
|
176
|
+
## テストケースの実行と評価
|
|
178
177
|
|
|
179
|
-
|
|
180
|
-
# DOCX Processing
|
|
181
|
-
|
|
182
|
-
## ドキュメント作成
|
|
178
|
+
このセクションは一連の連続したシーケンス — 途中で止めないこと。`/skill-test`やその他のテスティングスキルは使用しないこと。
|
|
183
179
|
|
|
184
|
-
|
|
180
|
+
結果は`<skill-name>-workspace/`にスキルディレクトリの兄弟として配置。ワークスペース内はイテレーションごとに整理(`iteration-1/`、`iteration-2/`等)、その中に各テストケースのディレクトリ(`eval-0/`、`eval-1/`等)。事前にすべて作成する必要はない — 進行に応じて作成。
|
|
185
181
|
|
|
186
|
-
|
|
182
|
+
### ステップ1: 全実行(with-skill AND ベースライン)を同じターンで起動
|
|
187
183
|
|
|
188
|
-
|
|
184
|
+
各テストケースに対して、同じターンで2つのサブエージェントを起動 — 1つはSkill付き、1つはSkillなし。重要:with-skill実行を先にすべて起動してからベースラインに戻るのではなく、すべてを一度に起動してほぼ同時に完了するようにする。
|
|
189
185
|
|
|
190
|
-
|
|
191
|
-
|
|
186
|
+
**With-skill実行:**
|
|
187
|
+
```
|
|
188
|
+
このタスクを実行:
|
|
189
|
+
- Skillパス: <path-to-skill>
|
|
190
|
+
- タスク: <evalプロンプト>
|
|
191
|
+
- 入力ファイル: <evalファイル、またはなし>
|
|
192
|
+
- 出力保存先: <workspace>/iteration-<N>/eval-<ID>/with_skill/outputs/
|
|
193
|
+
- 保存する出力: <ユーザーが気にするもの>
|
|
192
194
|
```
|
|
193
195
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
196
|
+
**ベースライン実行**(同じプロンプト、コンテキストに応じたベースライン):
|
|
197
|
+
- **新規Skill作成**: Skillなし。同じプロンプト、Skillパスなし、`without_skill/outputs/`に保存
|
|
198
|
+
- **既存Skill改善**: 旧バージョン。編集前にスナップショット(`cp -r <skill-path> <workspace>/skill-snapshot/`)、ベースラインサブエージェントをスナップショットに向ける。`old_skill/outputs/`に保存
|
|
197
199
|
|
|
198
|
-
|
|
199
|
-
- **長いreferencesファイルの構造化** - 100行を超えるファイルの場合、プレビュー時にClaudeが全体のスコープを見ることができるよう、冒頭に目次を含める。
|
|
200
|
+
各テストケースに`eval_metadata.json`を作成(アサーションは空でよい)。各evalにテスト内容を説明する名前を付ける。
|
|
200
201
|
|
|
201
|
-
|
|
202
|
+
### ステップ2: 実行中にアサーションをドラフト
|
|
202
203
|
|
|
203
|
-
|
|
204
|
+
実行完了を待つだけでなく、この時間を有効活用。各テストケースの定量的アサーションをドラフトし、ユーザーに説明する。
|
|
204
205
|
|
|
205
|
-
|
|
206
|
-
2. 再利用可能なスキルコンテンツを計画する(scripts、reference、assets)
|
|
207
|
-
3. スキルを初期化する(init_skill.py実行)
|
|
208
|
-
4. スキルを編集する(リソースを実装し、SKILL.mdを記述)
|
|
209
|
-
5. スキルをパッケージ化する(package_skill.py実行)
|
|
210
|
-
6. 実際の使用に基づいて反復改善する
|
|
206
|
+
良いアサーションは客観的に検証可能で、説明的な名前を持つ — ベンチマークビューアで一目で何をチェックしているか分かるべき。主観的なSkill(文体、デザイン品質)は定性的評価が適切 — 人間の判断が必要なものにアサーションを強制しない。
|
|
211
207
|
|
|
212
|
-
|
|
208
|
+
### ステップ3: 実行完了時にタイミングデータをキャプチャ
|
|
213
209
|
|
|
214
|
-
|
|
210
|
+
各サブエージェントタスク完了時、通知に`total_tokens`と`duration_ms`が含まれる。このデータを即座に`timing.json`に保存:
|
|
215
211
|
|
|
216
|
-
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"total_tokens": 84852,
|
|
215
|
+
"duration_ms": 23332,
|
|
216
|
+
"total_duration_seconds": 23.3
|
|
217
|
+
}
|
|
218
|
+
```
|
|
217
219
|
|
|
218
|
-
|
|
220
|
+
### ステップ4: 採点、集計、ビューア起動
|
|
219
221
|
|
|
220
|
-
|
|
222
|
+
全実行完了後:
|
|
221
223
|
|
|
222
|
-
|
|
223
|
-
- 「このスキルがどのように使用されるかの例を教えてください」
|
|
224
|
-
- 「『この画像から赤目を除去』や『この画像を回転』のようなユーザーのリクエストを想像できます。このスキルが使用される他の方法はありますか?」
|
|
225
|
-
- 「このスキルをトリガーするためにユーザーは何と言うでしょうか?」
|
|
224
|
+
1. **各実行を採点** — 採点サブエージェントを起動し`agents/grader.md`を読ませて各アサーションを出力に対して評価。`grading.json`に保存。grading.jsonの期待値配列は`text`、`passed`、`evidence`フィールドを使用すること。プログラムでチェック可能なアサーションは、目視ではなくスクリプトを書いて実行。
|
|
226
225
|
|
|
227
|
-
|
|
226
|
+
2. **ベンチマークに集計** — skill-creatorディレクトリから集計スクリプトを実行:
|
|
227
|
+
```bash
|
|
228
|
+
python -m scripts.aggregate_benchmark <workspace>/iteration-N --skill-name <name>
|
|
229
|
+
```
|
|
230
|
+
各with_skillバージョンをベースライン対応の前に配置。
|
|
228
231
|
|
|
229
|
-
|
|
232
|
+
3. **アナリストパスを実行** — ベンチマークデータを読み、集計統計が隠すパターンを表面化。`agents/analyzer.md`の「ベンチマーク結果の分析」セクションを参照。
|
|
230
233
|
|
|
231
|
-
|
|
234
|
+
4. **ビューアを起動** — 定性的出力と定量的データの両方で:
|
|
235
|
+
```bash
|
|
236
|
+
nohup python <skill-creator-path>/eval-viewer/generate_review.py \
|
|
237
|
+
<workspace>/iteration-N \
|
|
238
|
+
--skill-name "my-skill" \
|
|
239
|
+
--benchmark <workspace>/iteration-N/benchmark.json \
|
|
240
|
+
> /dev/null 2>&1 &
|
|
241
|
+
VIEWER_PID=$!
|
|
242
|
+
```
|
|
243
|
+
イテレーション2以降は`--previous-workspace <workspace>/iteration-<N-1>`も渡す。
|
|
232
244
|
|
|
233
|
-
|
|
245
|
+
**Cowork / ヘッドレス環境:** `webbrowser.open()`が利用不可の場合、`--static <output_path>`でスタンドアロンHTMLファイルを書き出す。
|
|
234
246
|
|
|
235
|
-
|
|
236
|
-
2. これらのワークフローを繰り返し実行する際に役立つscripts、reference、assetsを特定
|
|
247
|
+
注意: ビューア生成にはgenerate_review.pyを使用すること。カスタムHTMLを書く必要はない。
|
|
237
248
|
|
|
238
|
-
|
|
249
|
+
5. **ユーザーに伝える** — 「ブラウザで結果を開きました。'Outputs'タブで各テストケースをクリックしてフィードバックを残せます。'Benchmark'タブで定量的比較が見られます。完了したらお知らせください。」
|
|
239
250
|
|
|
240
|
-
|
|
241
|
-
2. スキルに保存する `scripts/rotate_pdf.py` スクリプトが役立つ
|
|
251
|
+
### ステップ5: フィードバックの読み込み
|
|
242
252
|
|
|
243
|
-
|
|
253
|
+
ユーザーが完了を告げたら、`feedback.json`を読む。空のフィードバックはユーザーがOKと判断したことを意味する。具体的な指摘があるテストケースに改善を集中する。
|
|
244
254
|
|
|
245
|
-
|
|
246
|
-
2. ボイラープレートHTML/Reactプロジェクトファイルを含む `assets/hello-world/` テンプレートがスキルに保存すると役立つ
|
|
255
|
+
ビューアサーバーが不要になったらkillする。
|
|
247
256
|
|
|
248
|
-
|
|
257
|
+
---
|
|
249
258
|
|
|
250
|
-
|
|
251
|
-
2. テーブルスキーマをドキュメント化する `references/schema.md` ファイルがスキルに保存すると役立つ
|
|
259
|
+
## Skillの改善
|
|
252
260
|
|
|
253
|
-
|
|
261
|
+
ループの核心。テストケースを実行し、ユーザーが結果をレビューし、フィードバックに基づいてSkillを改善する。
|
|
254
262
|
|
|
255
|
-
###
|
|
263
|
+
### 改善の考え方
|
|
256
264
|
|
|
257
|
-
|
|
265
|
+
1. **フィードバックから汎化する。** ここでの大きな絵は、何百万回も使われるSkillを作ろうとしていること。少数の例で反復するのは速く進むためだが、それらの例にのみ機能するSkillは無用。こまごまとした過学習的な変更や、圧倒的に制約の多いMUSTの代わりに、異なるメタファーや作業パターンを試みる。
|
|
258
266
|
|
|
259
|
-
|
|
267
|
+
2. **プロンプトをスリムに保つ。** 効果のないものを削除。トランスクリプトを読み(最終出力だけでなく)、Skillがモデルに非生産的なことをさせていたら、該当部分を削除して結果を見る。
|
|
260
268
|
|
|
261
|
-
|
|
269
|
+
3. **理由を説明する。** モデルに何かをさせる理由の「なぜ」を説明する。今日のLLMは賢い。良いハーネスがあれば機械的な指示を超えて本当に成果を出せる。ALWAYS/NEVERを全大文字で書いている場合、それは黄色信号。
|
|
262
270
|
|
|
263
|
-
|
|
271
|
+
4. **テストケース間の重複作業を探す。** テスト実行のトランスクリプトを読み、サブエージェントが独立して同様のヘルパースクリプトを書いたか確認。3つのテストケースすべてでサブエージェントが`create_docx.py`を書いていたら、Skillにそのスクリプトをバンドルすべき強いシグナル。
|
|
264
272
|
|
|
265
|
-
|
|
266
|
-
scripts/init_skill.py <skill-name> --path <output-directory>
|
|
267
|
-
```
|
|
273
|
+
### 反復ループ
|
|
268
274
|
|
|
269
|
-
|
|
275
|
+
1. 改善をSkillに適用
|
|
276
|
+
2. 全テストケースを新しい`iteration-<N+1>/`ディレクトリに再実行(ベースライン含む)
|
|
277
|
+
3. `--previous-workspace`で前のイテレーションを指定してレビューアを起動
|
|
278
|
+
4. ユーザーのレビュー完了を待つ
|
|
279
|
+
5. 新しいフィードバックを読み、改善を繰り返す
|
|
270
280
|
|
|
271
|
-
|
|
272
|
-
-
|
|
273
|
-
-
|
|
274
|
-
-
|
|
281
|
+
以下で終了:
|
|
282
|
+
- ユーザーが満足
|
|
283
|
+
- フィードバックがすべて空(すべて良好)
|
|
284
|
+
- 意味のある進歩がない
|
|
275
285
|
|
|
276
|
-
|
|
286
|
+
---
|
|
277
287
|
|
|
278
|
-
|
|
288
|
+
## 高度: ブラインド比較
|
|
279
289
|
|
|
280
|
-
|
|
290
|
+
2つのバージョンのより厳密な比較が必要な場合(例:「新バージョンは本当に良くなったか?」)、ブラインド比較システムがある。`agents/comparator.md`と`agents/analyzer.md`を参照。基本的な考え方:2つの出力をどちらが由来かを伝えずに独立エージェントに渡し、品質を判定させる。
|
|
281
291
|
|
|
282
|
-
|
|
292
|
+
オプション、サブエージェントが必要、ほとんどのユーザーには不要。人間のレビューループで通常は十分。
|
|
283
293
|
|
|
284
|
-
|
|
294
|
+
---
|
|
285
295
|
|
|
286
|
-
|
|
287
|
-
- **特定の出力形式または品質基準**: テンプレートと例のパターンについては references/output-patterns.md を参照
|
|
296
|
+
## Description最適化
|
|
288
297
|
|
|
289
|
-
|
|
298
|
+
SKILL.mdフロントマターのdescriptionフィールドは、ClaudeがSkillを呼び出すかどうかを決定する主要メカニズム。Skill作成・改善後、トリガー精度を最適化するdescription改善を提案する。
|
|
290
299
|
|
|
291
|
-
|
|
300
|
+
### ステップ1: トリガー評価クエリの生成
|
|
292
301
|
|
|
293
|
-
|
|
302
|
+
20個の評価クエリを作成 — トリガーすべきものとすべきでないものの混合。JSONとして保存。
|
|
294
303
|
|
|
295
|
-
|
|
304
|
+
クエリは現実的で、Claude CodeやClaude.aiユーザーが実際にタイプするもの。抽象的ではなく、具体的で詳細なリクエスト。ファイルパス、個人的なコンテキスト、カラム名、会社名、URL等。少しの背景。一部は小文字や略語やタイプミスやカジュアルな話し方。長さを混ぜ、明確なケースよりエッジケースに焦点。
|
|
296
305
|
|
|
297
|
-
|
|
306
|
+
**トリガーすべき**クエリ(8-10個)はカバレッジを考える。**トリガーすべきでない**クエリ(8-10個)はニアミス — キーワードを共有するが実際には異なるものが必要なクエリ。
|
|
298
307
|
|
|
299
|
-
|
|
308
|
+
### ステップ2: ユーザーとレビュー
|
|
300
309
|
|
|
301
|
-
|
|
310
|
+
HTMLテンプレートで評価セットをユーザーに提示:
|
|
302
311
|
|
|
303
|
-
|
|
312
|
+
1. `assets/eval_review.html`のテンプレートを読む
|
|
313
|
+
2. プレースホルダーを置換:
|
|
314
|
+
- `__EVAL_DATA_PLACEHOLDER__` → 評価項目のJSON配列
|
|
315
|
+
- `__SKILL_NAME_PLACEHOLDER__` → Skill名
|
|
316
|
+
- `__SKILL_DESCRIPTION_PLACEHOLDER__` → 現在のdescription
|
|
317
|
+
3. 一時ファイルに書き出してブラウザで開く
|
|
318
|
+
4. ユーザーが編集し「Export Eval Set」をクリック
|
|
304
319
|
|
|
305
|
-
|
|
320
|
+
### ステップ3: 最適化ループの実行
|
|
306
321
|
|
|
307
|
-
|
|
308
|
-
- `description`: これはスキルの主要なトリガーメカニズムであり、Claudeがいつスキルを使用するかを理解するのに役立ちます。
|
|
309
|
-
- Skillが何をするか、使用するための特定のトリガー/コンテキストの両方を含めます。
|
|
310
|
-
- すべての「使用すべき場合」情報をここに含めてください - 本文ではありません。本文はトリガー後にのみ読み込まれるため、本文の「このスキルを使用すべき場合」セクションはClaudeにとって役立ちません。
|
|
311
|
-
- `docx`スキルの例の説明: "変更履歴、コメント、書式保持、テキスト抽出をサポートする包括的なドキュメント作成、編集、分析。Claudeが専門的なドキュメント(.docxファイル)で作業する必要がある場合に使用:(1) 新しいドキュメントの作成、(2) コンテンツの変更または編集、(3) 変更履歴の操作、(4) コメントの追加、またはその他のドキュメントタスク"
|
|
322
|
+
バックグラウンドで実行:
|
|
312
323
|
|
|
313
|
-
|
|
324
|
+
```bash
|
|
325
|
+
python -m scripts.run_loop \
|
|
326
|
+
--eval-set <path-to-trigger-eval.json> \
|
|
327
|
+
--skill-path <path-to-skill> \
|
|
328
|
+
--model <model-id-powering-this-session> \
|
|
329
|
+
--max-iterations 5 \
|
|
330
|
+
--verbose
|
|
331
|
+
```
|
|
314
332
|
|
|
315
|
-
|
|
333
|
+
セッションのモデルIDを使用。60% train / 40% test分割。各クエリ3回実行で信頼性のあるトリガー率を取得。extended thinkingのClaudeで改善を提案。train/testの両方で再評価し、最大5回反復。完了時にHTMLレポートを開き、`best_description`をJSONで返す。
|
|
316
334
|
|
|
317
|
-
|
|
335
|
+
### スキルトリガーの仕組み
|
|
318
336
|
|
|
319
|
-
|
|
337
|
+
SkillはClaudeの`available_skills`リストにname + descriptionで表示される。Claudeは自力で簡単に処理できるタスクにはSkillを参照しない。複雑で複数ステップの専門的なクエリはdescriptionが一致するとSkillを確実にトリガーする。評価クエリはSkillの参照が有益なほど実質的であるべき。
|
|
320
338
|
|
|
321
|
-
|
|
339
|
+
### ステップ4: 結果の適用
|
|
322
340
|
|
|
323
|
-
|
|
324
|
-
2. SKILL.md本文はプロジェクトの主要言語で記述
|
|
325
|
-
3. フロントマター`description`:主要な説明はプロジェクトの主要言語を使用しますが、チームが使用する他の言語で重要なトリガーフレーズを含めます(バイリンガル説明はトリガーの失敗を防ぎます)
|
|
326
|
-
4. referenceファイルと出力テンプレートもプロジェクトの言語に従うべき
|
|
327
|
-
5. 技術用語(API名、ツール名、ファイル形式)はプロジェクト言語に関係なく英語のままで構いません
|
|
341
|
+
JSON出力の`best_description`をSkillのSKILL.mdフロントマターに更新。ユーザーにbefore/afterを表示しスコアを報告。
|
|
328
342
|
|
|
329
|
-
|
|
343
|
+
---
|
|
330
344
|
|
|
331
|
-
|
|
345
|
+
### パッケージ化と提示(`present_files`ツールが利用可能な場合のみ)
|
|
332
346
|
|
|
333
347
|
```bash
|
|
334
|
-
scripts
|
|
348
|
+
python -m scripts.package_skill <path/to/skill-folder>
|
|
335
349
|
```
|
|
336
350
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
```bash
|
|
340
|
-
scripts/package_skill.py <path/to/skill-folder> ./dist
|
|
341
|
-
```
|
|
351
|
+
---
|
|
342
352
|
|
|
343
|
-
|
|
353
|
+
## Claude.ai固有の手順
|
|
344
354
|
|
|
345
|
-
|
|
355
|
+
Claude.aiではサブエージェントがないため:
|
|
356
|
+
- **テスト実行**: 各テストケースを順次に自分で実行。ベースラインはスキップ
|
|
357
|
+
- **結果レビュー**: ブラウザが使えない場合、会話内で直接結果を提示
|
|
358
|
+
- **ベンチマーク**: スキップ
|
|
359
|
+
- **Description最適化**: `claude` CLIが必要なためスキップ
|
|
346
360
|
|
|
347
|
-
|
|
348
|
-
- スキル命名規則とディレクトリ構造
|
|
349
|
-
- 説明の完全性と品質
|
|
350
|
-
- ファイル構成とリソース参照
|
|
361
|
+
---
|
|
351
362
|
|
|
352
|
-
|
|
363
|
+
## Cowork固有の手順
|
|
353
364
|
|
|
354
|
-
|
|
365
|
+
- サブエージェントあり、メインワークフロー(テスト並行実行等)は動作する
|
|
366
|
+
- ブラウザがないため、ビューア生成時は`--static <output_path>`を使用
|
|
367
|
+
- フィードバックは`feedback.json`としてダウンロード
|
|
368
|
+
- テスト実行後は**必ず**`generate_review.py`で評価ビューアを生成してから自己評価すること
|
|
355
369
|
|
|
356
|
-
|
|
370
|
+
---
|
|
357
371
|
|
|
358
|
-
|
|
372
|
+
## リファレンスファイル
|
|
359
373
|
|
|
360
|
-
|
|
374
|
+
agents/ディレクトリには専門サブエージェントの指示がある。関連サブエージェントを起動する時に読む。
|
|
361
375
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
4. 変更を実装し、再度テスト
|
|
376
|
+
- `agents/grader.md` — アサーションの出力に対する評価方法
|
|
377
|
+
- `agents/comparator.md` — 2つの出力のブラインドA/B比較方法
|
|
378
|
+
- `agents/analyzer.md` — 一方が勝った理由の分析方法
|
|
366
379
|
|
|
367
|
-
|
|
380
|
+
references/ディレクトリには追加ドキュメント:
|
|
381
|
+
- `references/schemas.md` — evals.json、grading.json等のJSON構造
|
|
368
382
|
|
|
369
|
-
|
|
383
|
+
---
|
|
370
384
|
|
|
371
|
-
|
|
385
|
+
## スキルの初期化(init_skill.py)
|
|
372
386
|
|
|
373
|
-
|
|
387
|
+
新しいSkillをゼロから作成する場合は、`init_skill.py`スクリプトを実行する。
|
|
374
388
|
|
|
375
|
-
|
|
389
|
+
```bash
|
|
390
|
+
scripts/init_skill.py <skill-name> --path <output-directory>
|
|
391
|
+
```
|
|
376
392
|
|
|
377
|
-
|
|
393
|
+
## スキルのパッケージ化(package_skill.py)
|
|
378
394
|
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
├── SKILL.md
|
|
382
|
-
├── scripts/ # オプション
|
|
383
|
-
├── references/ # 複数形(公式仕様準拠)
|
|
384
|
-
└── assets/ # オプション
|
|
395
|
+
```bash
|
|
396
|
+
scripts/package_skill.py <path/to/skill-folder> [output-directory]
|
|
385
397
|
```
|
|
386
398
|
|
|
387
|
-
|
|
399
|
+
<!-- @einja:excluded:start -->
|
|
400
|
+
## プロジェクト固有セクションの記入
|
|
388
401
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
**マネージドセクション**(CLIツールによる上書き):
|
|
392
|
-
```markdown
|
|
393
|
-
<!-- @einja:managed:start -->
|
|
394
|
-
この内容は`einja sync`で上書きされる
|
|
395
|
-
<!-- @einja:managed:end -->
|
|
396
|
-
```
|
|
402
|
+
SKILL.md等のmdファイルの末尾には以下を記入する:
|
|
397
403
|
|
|
398
|
-
**シードセクション**(プロジェクト固有の追記):
|
|
399
404
|
```markdown
|
|
400
|
-
<!-- @einja:
|
|
401
|
-
|
|
402
|
-
<!-- @einja:
|
|
405
|
+
<!-- @einja:project-private:start id="{既存と同じID}" -->
|
|
406
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
407
|
+
<!-- @einja:project-private:end -->
|
|
403
408
|
```
|
|
409
|
+
<!-- @einja:excluded:end -->
|
|
404
410
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
**重要**: `presets/default/` 内のファイルは直接編集しないでください。ビルド時に上書きされます。
|
|
410
|
-
|
|
411
|
-
### サブエージェント出力形式との連携
|
|
412
|
-
|
|
413
|
-
einjaでは、サブエージェントの出力形式が `einja-output-format` Skillで定義されています。サブエージェント用のSkillを作成する場合、この形式テンプレートを参照してください。
|
|
414
|
-
|
|
415
|
-
詳細は `.claude/skills/einja-output-format/SKILL.md` を参照。
|
|
416
|
-
|
|
417
|
-
## 関連ドキュメント
|
|
418
|
-
|
|
419
|
-
- [einja-output-format](../einja-output-format/SKILL.md) - サブエージェント出力形式
|
|
420
|
-
- [einja-coding-standards](../einja-coding-standards/SKILL.md) - コーディング規約の例
|
|
421
|
-
- [einja-component-design](../einja-component-design/SKILL.md) - コンポーネント設計の例
|
|
411
|
+
<!-- @einja:project-private:start id="einja-skill-creator-project" -->
|
|
412
|
+
<!-- プロジェクト固有の情報を記入 -->
|
|
413
|
+
<!-- @einja:project-private:end -->
|