@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.
Files changed (183) hide show
  1. package/README.md +89 -1
  2. package/dist/cli.js +1 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +71 -1
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/list.js.map +1 -1
  8. package/dist/commands/sync.d.ts.map +1 -1
  9. package/dist/commands/sync.js +187 -13
  10. package/dist/commands/sync.js.map +1 -1
  11. package/dist/lib/dependency-checker.d.ts.map +1 -1
  12. package/dist/lib/merger.d.ts +12 -0
  13. package/dist/lib/merger.d.ts.map +1 -1
  14. package/dist/lib/merger.js +28 -0
  15. package/dist/lib/merger.js.map +1 -1
  16. package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -1
  17. package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
  18. package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
  19. package/dist/lib/preset.d.ts.map +1 -1
  20. package/dist/lib/sync/category-validator.d.ts +1 -1
  21. package/dist/lib/sync/category-validator.d.ts.map +1 -1
  22. package/dist/lib/sync/category-validator.js +2 -1
  23. package/dist/lib/sync/category-validator.js.map +1 -1
  24. package/dist/lib/sync/category-validator.test.js +3 -1
  25. package/dist/lib/sync/category-validator.test.js.map +1 -1
  26. package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
  27. package/dist/lib/sync/diff-engine.d.ts.map +1 -1
  28. package/dist/lib/sync/file-filter.d.ts.map +1 -1
  29. package/dist/lib/sync/file-filter.js +1 -0
  30. package/dist/lib/sync/file-filter.js.map +1 -1
  31. package/dist/lib/sync/integration.test.js +255 -69
  32. package/dist/lib/sync/integration.test.js.map +1 -1
  33. package/dist/lib/sync/json-processor.d.ts +4 -4
  34. package/dist/lib/sync/json-processor.d.ts.map +1 -1
  35. package/dist/lib/sync/json-processor.js +11 -11
  36. package/dist/lib/sync/json-processor.js.map +1 -1
  37. package/dist/lib/sync/marker-processor.d.ts +60 -8
  38. package/dist/lib/sync/marker-processor.d.ts.map +1 -1
  39. package/dist/lib/sync/marker-processor.js +117 -26
  40. package/dist/lib/sync/marker-processor.js.map +1 -1
  41. package/dist/lib/sync/marker-processor.test.js +261 -40
  42. package/dist/lib/sync/marker-processor.test.js.map +1 -1
  43. package/dist/lib/sync/metadata-manager.d.ts +4 -0
  44. package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
  45. package/dist/lib/sync/metadata-manager.js +15 -0
  46. package/dist/lib/sync/metadata-manager.js.map +1 -1
  47. package/dist/lib/sync/metadata-manager.test.js +68 -0
  48. package/dist/lib/sync/metadata-manager.test.js.map +1 -1
  49. package/dist/lib/sync/orphan-cleaner.d.ts +29 -0
  50. package/dist/lib/sync/orphan-cleaner.d.ts.map +1 -0
  51. package/dist/lib/sync/orphan-cleaner.js +80 -0
  52. package/dist/lib/sync/orphan-cleaner.js.map +1 -0
  53. package/dist/lib/sync/orphan-cleaner.test.d.ts +2 -0
  54. package/dist/lib/sync/orphan-cleaner.test.d.ts.map +1 -0
  55. package/dist/lib/sync/orphan-cleaner.test.js +169 -0
  56. package/dist/lib/sync/orphan-cleaner.test.js.map +1 -0
  57. package/dist/lib/sync/project-private-synchronizer.d.ts +52 -0
  58. package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -0
  59. package/dist/lib/sync/project-private-synchronizer.js +106 -0
  60. package/dist/lib/sync/project-private-synchronizer.js.map +1 -0
  61. package/dist/lib/sync/project-private-synchronizer.test.d.ts +2 -0
  62. package/dist/lib/sync/project-private-synchronizer.test.d.ts.map +1 -0
  63. package/dist/lib/sync/project-private-synchronizer.test.js +348 -0
  64. package/dist/lib/sync/project-private-synchronizer.test.js.map +1 -0
  65. package/dist/types/index.d.ts +1 -0
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/dist/types/sync.d.ts +36 -6
  68. package/dist/types/sync.d.ts.map +1 -1
  69. package/dist/types/sync.js +2 -2
  70. package/dist/types/sync.js.map +1 -1
  71. package/package.json +5 -4
  72. package/presets/default/.claude/agents/einja/Explore.md +140 -0
  73. package/presets/default/.claude/agents/einja/backend-architect.md +4 -0
  74. package/presets/default/.claude/agents/einja/codex-agent.md +4 -0
  75. package/presets/default/.claude/agents/einja/design-engineer.md +4 -0
  76. package/presets/default/.claude/agents/einja/docs/docs-updater.md +4 -0
  77. package/presets/default/.claude/agents/einja/frontend-architect.md +4 -0
  78. package/presets/default/.claude/agents/einja/frontend-coder.md +4 -0
  79. package/presets/default/.claude/agents/einja/git/conflict-resolver.md +4 -0
  80. package/presets/default/.claude/agents/einja/specs/spec-design-generator.md +4 -1
  81. package/presets/default/.claude/agents/einja/specs/spec-qa-generator.md +4 -0
  82. package/presets/default/.claude/agents/einja/specs/spec-requirements-generator.md +4 -1
  83. package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +6 -2
  84. package/presets/default/.claude/agents/einja/specs/spec-tasks-validator.md +4 -0
  85. package/presets/default/.claude/agents/einja/task/task-executer.md +57 -115
  86. package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +4 -0
  87. package/presets/default/.claude/agents/einja/task/task-qa.md +4 -0
  88. package/presets/default/.claude/agents/einja/task/task-reviewer.md +4 -0
  89. package/presets/default/.claude/commands/einja/einja-sync.md +5 -1
  90. package/presets/default/.claude/commands/einja/frontend-implement.md +3 -1
  91. package/presets/default/.claude/commands/einja/issue-exec.md +403 -0
  92. package/presets/default/.claude/commands/einja/spec-create.md +15 -1
  93. package/presets/default/.claude/commands/einja/start-dev.md +4 -0
  94. package/presets/default/.claude/commands/einja/sync-cursor-commands.md +4 -0
  95. package/presets/default/.claude/commands/einja/task-exec.md +106 -14
  96. package/presets/default/.claude/commands/einja/update-docs-by-task-specs.md +4 -0
  97. package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +23 -0
  98. package/presets/default/.claude/settings.json +15 -1
  99. package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +4 -0
  100. package/presets/default/.claude/skills/einja-general-context-loader/SKILL.md +4 -0
  101. package/presets/default/.claude/skills/einja-output-format/SKILL.md +4 -0
  102. package/presets/default/.claude/skills/einja-project-overview/SKILL.md +7 -3
  103. package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +266 -274
  104. package/presets/default/.claude/skills/einja-skill-creator/agents/analyzer.md +274 -0
  105. package/presets/default/.claude/skills/einja-skill-creator/agents/comparator.md +202 -0
  106. package/presets/default/.claude/skills/einja-skill-creator/agents/grader.md +195 -0
  107. package/presets/default/.claude/skills/einja-skill-creator/assets/eval_review.html +146 -0
  108. package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/generate_review.py +471 -0
  109. package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/viewer.html +1325 -0
  110. package/presets/default/.claude/skills/einja-skill-creator/references/schemas.md +430 -0
  111. package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +154 -0
  112. package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +265 -0
  113. package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +252 -0
  114. package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +13 -19
  115. package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +36 -7
  116. package/presets/default/.claude/skills/einja-skill-creator/scripts/run_eval.py +310 -0
  117. package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +295 -0
  118. package/presets/default/.claude/skills/einja-skill-creator/scripts/utils.py +48 -0
  119. package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +4 -0
  120. package/presets/default/.claude/skills/einja-task-commit/SKILL.md +4 -0
  121. package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -0
  122. package/presets/default/.envrc +5 -0
  123. package/presets/default/.mcp.json +2 -12
  124. package/presets/default/CLAUDE.md.template +26 -4
  125. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/tasks.md +1 -1
  126. package/presets/default/docs/einja/instructions/deployment-setup.md +3 -8
  127. package/presets/default/docs/einja/instructions/environment-setup.md +3 -8
  128. package/presets/default/docs/einja/instructions/issue-exec-workflow.md +276 -0
  129. package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +70 -8
  130. package/presets/default/docs/einja/instructions/neon-cli-reference.md +3 -8
  131. package/presets/default/docs/einja/instructions/task-execute.md +23 -28
  132. package/presets/default/docs/einja/instructions/vercel-cli-reference.md +17 -10
  133. package/presets/default/docs/einja/steering/README.md +11 -11
  134. package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +3 -8
  135. package/presets/default/docs/einja/steering/architecture.md +3 -8
  136. package/presets/default/docs/einja/steering/branch-strategy.md +63 -70
  137. package/presets/default/docs/einja/steering/commit-rules.md +3 -8
  138. package/presets/default/docs/einja/steering/db-schema-design.md +3 -8
  139. package/presets/default/docs/einja/steering/development/api-development.md +3 -8
  140. package/presets/default/docs/einja/steering/development/backend-architecture.md +3 -8
  141. package/presets/default/docs/einja/steering/development/coding-standards.md +723 -0
  142. package/presets/default/docs/einja/steering/development/component-design.md +502 -0
  143. package/presets/default/docs/einja/steering/development/database-guidelines.md +54 -5
  144. package/presets/default/docs/einja/steering/development/frontend-development.md +3 -8
  145. package/presets/default/docs/einja/steering/development/playwright-guidelines.md +59 -0
  146. package/presets/default/docs/einja/steering/development/review-guidelines.md +3 -8
  147. package/presets/default/docs/einja/steering/development/testing-strategy.md +3 -8
  148. package/presets/default/docs/einja/steering/development-workflow.md +71 -124
  149. package/presets/default/docs/einja/steering/infrastructure/deployment.md +49 -55
  150. package/presets/default/docs/einja/steering/infrastructure/environment-variables.md +4 -8
  151. package/presets/default/docs/einja/steering/product.md +3 -8
  152. package/presets/default/docs/einja/steering/task-management.md +14 -98
  153. package/presets/default/scripts/ensure-serena.sh +75 -0
  154. package/presets/default/scripts/env-rotate-secrets.ts +336 -0
  155. package/presets/default/scripts/env-show.ts +130 -0
  156. package/presets/default/scripts/env.ts +479 -0
  157. package/presets/default/scripts/init.sh +92 -0
  158. package/presets/default/scripts/lib/env-common.ts +108 -0
  159. package/presets/default/scripts/lib/worktree-config.ts +64 -0
  160. package/presets/default/scripts/setup-dev.ts +640 -0
  161. package/presets/default/scripts/stop-serena.sh +25 -0
  162. package/presets/default/scripts/worktree/dev.ts +872 -0
  163. package/dist/lib/sync/seed-synchronizer.d.ts +0 -27
  164. package/dist/lib/sync/seed-synchronizer.d.ts.map +0 -1
  165. package/dist/lib/sync/seed-synchronizer.js +0 -72
  166. package/dist/lib/sync/seed-synchronizer.js.map +0 -1
  167. package/dist/lib/sync/seed-synchronizer.test.d.ts +0 -2
  168. package/dist/lib/sync/seed-synchronizer.test.d.ts.map +0 -1
  169. package/dist/lib/sync/seed-synchronizer.test.js +0 -147
  170. package/dist/lib/sync/seed-synchronizer.test.js.map +0 -1
  171. package/presets/default/.claude/skills/einja-api-development/SKILL.md +0 -14
  172. package/presets/default/.claude/skills/einja-backend-architecture/SKILL.md +0 -18
  173. package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +0 -132
  174. package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +0 -69
  175. package/presets/default/.claude/skills/einja-coding-standards/references/naming-conventions.md +0 -107
  176. package/presets/default/.claude/skills/einja-coding-standards/references/prohibited-patterns.md +0 -169
  177. package/presets/default/.claude/skills/einja-coding-standards/references/typescript-rules.md +0 -247
  178. package/presets/default/.claude/skills/einja-component-design/SKILL.md +0 -109
  179. package/presets/default/.claude/skills/einja-component-design/references/directory-structure.md +0 -117
  180. package/presets/default/.claude/skills/einja-component-design/references/props-patterns.md +0 -159
  181. package/presets/default/.claude/skills/einja-component-design/references/styling-guide.md +0 -122
  182. package/presets/default/.claude/skills/einja-frontend-development/SKILL.md +0 -14
  183. 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: 効果的なSkillを作成するためのガイド。ユーザーが新しいSkillを作成したい(または既存のSkillを更新したい)場合に使用。Skillの構造、段階的開示、適切な自由度設定、バンドルリソース(scripts/references/assets)の使い方、einja固有の規約(einja-プレフィックス、references/ディレクトリ、マネージドセクション)を含む。スクリプトツール(init_skill.py、package_skill.py、quick_validate.py)を提供。
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
- このSkillは、効果的なSkillを作成するためのガイドを提供します。ユーザーが新しいSkillを作成したい(または既存のSkillを更新したい)場合に使用してください。
11
+ 大まかなプロセスは以下の通り:
11
12
 
12
- ## Skillとは
13
+ - Skillに何をさせたいか、どのように動作すべきかを決める
14
+ - Skillのドラフトを書く
15
+ - いくつかのテストプロンプトを作成し、Skill付きのClaudeで実行する
16
+ - ユーザーと共に結果を定性的・定量的に評価する
17
+ - バックグラウンドで実行中に、定量的な評価項目がなければドラフトする。すでにある場合はそのまま使用するか、必要に応じて修正する。ユーザーに説明する
18
+ - `eval-viewer/generate_review.py`スクリプトで結果をユーザーに表示し、定量的メトリクスも確認してもらう
19
+ - ユーザーの評価フィードバック(および定量的ベンチマークから明らかになった問題)に基づいてSkillを書き直す
20
+ - 満足するまで繰り返す
21
+ - テストセットを拡大し、より大規模に再試行する
13
22
 
14
- Skillは、Claudeの能力を専門知識、ワークフロー、ツール統合によって拡張する、モジュール化された自己完結型パッケージです。Skillを「特定のドメインやタスクのためのオンボーディングガイド」として考えてください。汎用エージェントであるClaudeを、どのモデルも完全には持ち得ない手続き的知識を備えた専門エージェントに変換します。
23
+ このSkillを使う際の役割は、ユーザーがこのプロセスのどこにいるかを把握し、次のステージに進む手助けをすること。例えば「Xのスキルを作りたい」と言われたら、意図を明確化し、ドラフトを書き、テストケースを作成し、評価方法を決め、全プロンプトを実行し、繰り返す。
15
24
 
16
- ### Skillが提供するもの
25
+ 一方、すでにドラフトがある場合は、直接eval/反復パートに入れる。
17
26
 
18
- 1. **専門化されたワークフロー** - 特定ドメインのための複数ステップの手順
19
- 2. **ツール統合** - 特定のファイル形式やAPIを扱うための指示
20
- 3. **ドメイン専門知識** - 会社固有の知識、スキーマ、ビジネスロジック
21
- 4. **バンドルリソース** - 複雑で反復的なタスクのためのスクリプト、参照資料、アセット
27
+ もちろん柔軟に。ユーザーが「大量の評価は不要、一緒に感覚で作ろう」と言えばそうする。
22
28
 
23
- ## 基本原則
29
+ Skillが完成した後(順序は柔軟)、Skillのdescription最適化も実行できる。これには専用のスクリプトがある。
24
30
 
25
- ### 簡潔さが鍵
31
+ ## ユーザーとのコミュニケーション
26
32
 
27
- コンテキストウィンドウは公共財です。Skillは、Claudeが必要とする他のすべてのもの(システムプロンプト、会話履歴、他のSkillのメタデータ、実際のユーザーリクエスト)とコンテキストウィンドウを共有します。
33
+ スキルクリエイターは、コーディング用語への馴染み度が大きく異なるユーザーに使われる可能性がある。コンテキストの手がかりに注意して、コミュニケーションの言い回しを調整すること。デフォルトの目安:
28
34
 
29
- **デフォルトの前提: Claudeはすでに非常に賢い。** Claudeがまだ持っていないコンテキストのみを追加してください。各情報について「Claudeは本当にこの説明が必要か?」「この段落はトークンコストに見合うか?」と問いかけてください。
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
- ### Skillの構造
53
+ ### インタビューとリサーチ
46
54
 
47
- すべてのSkillは、必須のSKILL.mdファイルとオプションのバンドルリソースで構成されます:
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
- #### SKILL.md(必須)
59
+ ### SKILL.mdの作成
64
60
 
65
- すべてのSKILL.mdは以下で構成されます:
61
+ ユーザーインタビューに基づいて以下を記入:
66
62
 
67
- - **フロントマター**(YAML): `name`と`description`フィールド(必須)を含み、`license`、`metadata`、`compatibility`などのオプションフィールドもあります。Claudeがいつスキルをトリガーするかを判断するため、何のスキルか、いつ使用すべきかについて明確かつ包括的に記述してください。`compatibility`フィールドは環境要件(対象プロダクト、システムパッケージ等)を記載しますが、ほとんどのスキルには不要です。
68
- - **本文**(Markdown): スキル使用のための指示とガイダンス。スキルがトリガーされた後(もしあれば)のみ読み込まれます。
63
+ - **name**: Skill識別子
64
+ - **description**: いつトリガーするか、何をするか。主要なトリガーメカニズム。Skillが何をするかと使用する具体的なコンテキストの両方を含める。「いつ使用するか」情報はすべてここに。本文はトリガー後に読み込まれるため、本文の「使用すべき場合」セクションはClaudeに役立たない。注意:現在Claudeはスキルを「アンダートリガー」する傾向がある。対策としてdescriptionを少し「積極的」にする
65
+ - **compatibility**: 必要なツール、依存関係(オプション、まれに必要)
66
+ - **Skillの残りの部分 :)**
69
67
 
70
- #### バンドルリソース(オプション)
68
+ ### Skill記述ガイド
71
69
 
72
- ##### scripts/
70
+ #### Skillの構造
73
71
 
74
- 決定論的な信頼性が必要なタスクや繰り返し書き直されるタスクのための実行可能コード(Python/Bash等)。
75
-
76
- - **含めるべき場合**: 同じコードが繰り返し書き直される場合、または決定論的な信頼性が必要な場合
77
- - **例**: PDF回転タスクのための `scripts/rotate_pdf.py`
78
- - **利点**: トークン効率的、決定論的、コンテキストに読み込まずに実行可能
79
- - **注意**: スクリプトはパッチや環境固有の調整のためにClaudeによって読まれる場合があります
80
-
81
- ##### references/
72
+ ```
73
+ skill-name/
74
+ ├── SKILL.md(必須)
75
+ │ ├── YAMLフロントマター(name、description必須)
76
+ │ └── Markdown指示
77
+ └── バンドルリソース(オプション)
78
+ ├── scripts/ - 決定論的/反復タスク用の実行可能コード
79
+ ├── references/ - 必要に応じてコンテキストに読み込むドキュメント
80
+ └── assets/ - 出力で使用されるファイル(テンプレート、アイコン、フォント等)
81
+ ```
82
82
 
83
- Claudeの処理と思考を導くために必要に応じて読み込まれることを意図したドキュメントと参照資料。
83
+ #### 段階的開示
84
84
 
85
- - **含めるべき場合**: Claudeが作業中に参照すべきドキュメント
86
- - **例**: 財務スキーマのための `references/finance.md`、会社のNDAテンプレートのための `references/mnda.md`、会社ポリシーのための `references/policies.md`、API仕様のための `references/api_docs.md`
87
- - **使用例**: データベーススキーマ、APIドキュメント、ドメイン知識、会社ポリシー、詳細ワークフローガイド
88
- - **利点**: SKILL.mdをスリムに保ち、Claudeが必要と判断した場合のみ読み込み
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
- ##### assets/
90
+ 語数は目安であり、必要に応じて長くしてよい。
93
91
 
94
- コンテキストに読み込まれることを意図せず、Claudeが生成する出力で使用されるファイル。
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
- #### Skillに含めるべきでないもの
99
+ ```
100
+ cloud-deploy/
101
+ ├── SKILL.md(ワークフロー + 選択)
102
+ └── references/
103
+ ├── aws.md
104
+ ├── gcp.md
105
+ └── azure.md
106
+ ```
102
107
 
103
- Skillには、その機能を直接サポートする必須ファイルのみを含めるべきです。以下のような余分なドキュメントや補助ファイルは作成しないでください:
108
+ Claudeは関連するreferenceファイルのみ読む。
104
109
 
105
- - README.md
106
- - INSTALLATION_GUIDE.md
107
- - QUICK_REFERENCE.md
108
- - CHANGELOG.md
109
- - その他
110
+ #### 驚きのない原則
110
111
 
111
- Skillには、AIエージェントが手元のジョブを実行するために必要な情報のみを含めるべきです。作成プロセス、セットアップおよびテスト手順、ユーザー向けドキュメントなどの補助的なコンテキストを含めるべきではありません。追加のドキュメントファイルを作成すると、混乱を招きます。
112
+ Skillにマルウェア、エクスプロイトコード、システムセキュリティを侵害する可能性のあるコンテンツを含めてはならない。誤解を招くSkillや、不正アクセス、データ窃取、その他の悪意のある活動を助長するSkillの作成に協力しないこと。「XYZとしてロールプレイ」のようなものはOK。
112
113
 
113
- ### 段階的開示設計原則
114
+ #### 参考ドキュメントの記録
114
115
 
115
- Skillは、コンテキストを効率的に管理するために3レベルの読み込みシステムを使用します:
116
+ Skill作成時に参考にした公式ドキュメント、ベースとなるSkill、設計判断の根拠となった情報源をSKILL.md内にHTMLコメントで記載する。
116
117
 
117
- 1. **メタデータ(name + description)** - 常にコンテキスト内(~100語)
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
- SKILL.md本文は要点に絞り、500行以内に抑えてコンテキストの肥大化を最小限に抑えます。この制限に近づいたらコンテンツを別ファイルに分割します。コンテンツを他のファイルに分割する際は、SKILL.mdから参照し、いつ読むべきかを明確に記述することが非常に重要です。これにより、スキルの読者がそれらが存在し、いつ使用すべきかを知ることができます。
126
+ これにより、Skillの設計根拠を後から追跡でき、公式仕様の変更時に影響範囲を特定しやすくなる。
124
127
 
125
- **重要な原則**: Skillが複数のバリエーション、フレームワーク、オプションをサポートする場合、SKILL.mdにはコアワークフローと選択ガイダンスのみを保持します。バリエーション固有の詳細(パターン、例、設定)は別のreferenceファイルに移動します。
128
+ #### 記述パターン
126
129
 
127
- **パターン1: リファレンス付きの高レベルガイド**
130
+ 指示には命令形を使用する。
128
131
 
132
+ **出力フォーマットの定義** - 例:
129
133
  ```markdown
130
- # PDF Processing
131
-
132
- ## クイックスタート
133
-
134
- pdfplumberでテキスト抽出:
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
- ClaudeはFORMS.md、REFERENCE.md、またはEXAMPLES.mdを必要な場合のみ読み込みます。
142
+ **例のパターン** - 例を含めると有用:
143
+ ```markdown
144
+ ## コミットメッセージフォーマット
145
+ **例1:**
146
+ 入力: Added user authentication with JWT tokens
147
+ 出力: feat(auth): implement JWT-based authentication
148
+ ```
145
149
 
146
- **パターン2: ドメイン固有の構成**
150
+ ### 記述スタイル
147
151
 
148
- 複数のドメインを持つSkillの場合、無関係なコンテキストの読み込みを避けるためにドメインごとにコンテンツを整理します:
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
- ユーザーが販売メトリクスについて質問すると、Claudeはsales.mdのみを読みます。
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
- **パターン3: 条件付き詳細**
174
+ 全スキーマは`references/schemas.md`を参照(アサーションフィールドを含む)。
176
175
 
177
- 基本コンテンツを表示し、高度なコンテンツにリンク:
176
+ ## テストケースの実行と評価
178
177
 
179
- ```markdown
180
- # DOCX Processing
181
-
182
- ## ドキュメント作成
178
+ このセクションは一連の連続したシーケンス — 途中で止めないこと。`/skill-test`やその他のテスティングスキルは使用しないこと。
183
179
 
184
- 新しいドキュメントにはdocx-jsを使用。[DOCX-JS.md](DOCX-JS.md) を参照。
180
+ 結果は`<skill-name>-workspace/`にスキルディレクトリの兄弟として配置。ワークスペース内はイテレーションごとに整理(`iteration-1/`、`iteration-2/`等)、その中に各テストケースのディレクトリ(`eval-0/`、`eval-1/`等)。事前にすべて作成する必要はない — 進行に応じて作成。
185
181
 
186
- ## ドキュメント編集
182
+ ### ステップ1: 全実行(with-skill AND ベースライン)を同じターンで起動
187
183
 
188
- 簡単な編集には、XMLを直接修正。
184
+ 各テストケースに対して、同じターンで2つのサブエージェントを起動 — 1つはSkill付き、1つはSkillなし。重要:with-skill実行を先にすべて起動してからベースラインに戻るのではなく、すべてを一度に起動してほぼ同時に完了するようにする。
189
185
 
190
- **変更履歴の場合**: [REDLINING.md](REDLINING.md) を参照
191
- **OOXMLの詳細**: [OOXML.md](OOXML.md) を参照
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
- Claudeは、ユーザーがそれらの機能を必要とする場合のみREDLINING.mdまたはOOXML.mdを読みます。
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
- - **深くネストされた参照を避ける** - 参照はSKILL.mdから1レベル深く保つ。すべてのreferencesファイルはSKILL.mdから直接リンクする。
199
- - **長いreferencesファイルの構造化** - 100行を超えるファイルの場合、プレビュー時にClaudeが全体のスコープを見ることができるよう、冒頭に目次を含める。
200
+ 各テストケースに`eval_metadata.json`を作成(アサーションは空でよい)。各evalにテスト内容を説明する名前を付ける。
200
201
 
201
- ## Skill作成プロセス
202
+ ### ステップ2: 実行中にアサーションをドラフト
202
203
 
203
- Skill作成には以下のステップが含まれます:
204
+ 実行完了を待つだけでなく、この時間を有効活用。各テストケースの定量的アサーションをドラフトし、ユーザーに説明する。
204
205
 
205
- 1. 具体例でスキルを理解する
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
- ### ステップ1: 具体例でスキルを理解する
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
- 例えば、image-editorスキルを構築する場合、関連する質問には以下が含まれます:
222
+ 全実行完了後:
221
223
 
222
- - 「image-editorスキルはどのような機能をサポートすべきですか?編集、回転、その他?」
223
- - 「このスキルがどのように使用されるかの例を教えてください」
224
- - 「『この画像から赤目を除去』や『この画像を回転』のようなユーザーのリクエストを想像できます。このスキルが使用される他の方法はありますか?」
225
- - 「このスキルをトリガーするためにユーザーは何と言うでしょうか?」
224
+ 1. **各実行を採点** — 採点サブエージェントを起動し`agents/grader.md`を読ませて各アサーションを出力に対して評価。`grading.json`に保存。grading.jsonの期待値配列は`text`、`passed`、`evidence`フィールドを使用すること。プログラムでチェック可能なアサーションは、目視ではなくスクリプトを書いて実行。
226
225
 
227
- ユーザーを圧倒しないように、1つのメッセージで多くの質問をすることを避けてください。最も重要な質問から始め、効果を高めるために必要に応じてフォローアップします。
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
- ### ステップ2: 再利用可能なスキルコンテンツの計画
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
- 1. ゼロから例を実行する方法を検討
236
- 2. これらのワークフローを繰り返し実行する際に役立つscripts、reference、assetsを特定
247
+ 注意: ビューア生成にはgenerate_review.pyを使用すること。カスタムHTMLを書く必要はない。
237
248
 
238
- 例:「このPDFを回転してください」のようなクエリを処理するために`pdf-editor`スキルを構築する場合、分析は以下を示します:
249
+ 5. **ユーザーに伝える** — 「ブラウザで結果を開きました。'Outputs'タブで各テストケースをクリックしてフィードバックを残せます。'Benchmark'タブで定量的比較が見られます。完了したらお知らせください。」
239
250
 
240
- 1. PDFを回転するには毎回同じコードを書き直す必要がある
241
- 2. スキルに保存する `scripts/rotate_pdf.py` スクリプトが役立つ
251
+ ### ステップ5: フィードバックの読み込み
242
252
 
243
- 例:「Todoアプリを作って」や「歩数を追跡するダッシュボードを作って」のようなクエリのために`frontend-webapp-builder`スキルを設計する場合、分析は以下を示します:
253
+ ユーザーが完了を告げたら、`feedback.json`を読む。空のフィードバックはユーザーがOKと判断したことを意味する。具体的な指摘があるテストケースに改善を集中する。
244
254
 
245
- 1. フロントエンドWebアプリを書くには毎回同じボイラープレートHTML/Reactが必要
246
- 2. ボイラープレートHTML/Reactプロジェクトファイルを含む `assets/hello-world/` テンプレートがスキルに保存すると役立つ
255
+ ビューアサーバーが不要になったらkillする。
247
256
 
248
- 例:「今日何人のユーザーがログインしましたか?」のようなクエリを処理するために`big-query`スキルを構築する場合、分析は以下を示します:
257
+ ---
249
258
 
250
- 1. BigQueryをクエリするには毎回テーブルスキーマとリレーションシップを再発見する必要がある
251
- 2. テーブルスキーマをドキュメント化する `references/schema.md` ファイルがスキルに保存すると役立つ
259
+ ## Skillの改善
252
260
 
253
- スキルのコンテンツを確立するために、各具体例を分析して、含めるべき再利用可能なリソースのリストを作成します:scripts、reference、assets。
261
+ ループの核心。テストケースを実行し、ユーザーが結果をレビューし、フィードバックに基づいてSkillを改善する。
254
262
 
255
- ### ステップ3: スキルの初期化
263
+ ### 改善の考え方
256
264
 
257
- この時点で、実際にスキルを作成します。
265
+ 1. **フィードバックから汎化する。** ここでの大きな絵は、何百万回も使われるSkillを作ろうとしていること。少数の例で反復するのは速く進むためだが、それらの例にのみ機能するSkillは無用。こまごまとした過学習的な変更や、圧倒的に制約の多いMUSTの代わりに、異なるメタファーや作業パターンを試みる。
258
266
 
259
- 開発中のスキルがすでに存在し、反復またはパッケージ化が必要な場合のみ、このステップをスキップしてください。その場合は次のステップに進んでください。
267
+ 2. **プロンプトをスリムに保つ。** 効果のないものを削除。トランスクリプトを読み(最終出力だけでなく)、Skillがモデルに非生産的なことをさせていたら、該当部分を削除して結果を見る。
260
268
 
261
- 新しいスキルをゼロから作成する場合は、常に `init_skill.py` スクリプトを実行してください。このスクリプトは、スキルが必要とするすべてを自動的に含む新しいテンプレートスキルディレクトリを便利に生成し、スキル作成プロセスをはるかに効率的かつ信頼性の高いものにします。
269
+ 3. **理由を説明する。** モデルに何かをさせる理由の「なぜ」を説明する。今日のLLMは賢い。良いハーネスがあれば機械的な指示を超えて本当に成果を出せる。ALWAYS/NEVERを全大文字で書いている場合、それは黄色信号。
262
270
 
263
- 使用法:
271
+ 4. **テストケース間の重複作業を探す。** テスト実行のトランスクリプトを読み、サブエージェントが独立して同様のヘルパースクリプトを書いたか確認。3つのテストケースすべてでサブエージェントが`create_docx.py`を書いていたら、Skillにそのスクリプトをバンドルすべき強いシグナル。
264
272
 
265
- ```bash
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
- - 適切なフロントマターとTODOプレースホルダーを持つSKILL.mdテンプレートを生成
273
- - 例のリソースディレクトリを作成:`scripts/`、`references/`、`assets/`
274
- - カスタマイズまたは削除可能な各ディレクトリに例のファイルを追加
281
+ 以下で終了:
282
+ - ユーザーが満足
283
+ - フィードバックがすべて空(すべて良好)
284
+ - 意味のある進歩がない
275
285
 
276
- 初期化後、生成されたSKILL.mdと例のファイルを必要に応じてカスタマイズまたは削除します。
286
+ ---
277
287
 
278
- ### ステップ4: スキルの編集
288
+ ## 高度: ブラインド比較
279
289
 
280
- (新しく生成された、または既存の)スキルを編集する際、スキルは別のClaudeインスタンスが使用するために作成されていることを忘れないでください。Claudeにとって有益で自明でない情報を含めてください。別のClaudeインスタンスがこれらのタスクをより効果的に実行するのに役立つ手続き的知識、ドメイン固有の詳細、または再利用可能なアセットを検討してください。
290
+ 2つのバージョンのより厳密な比較が必要な場合(例:「新バージョンは本当に良くなったか?」)、ブラインド比較システムがある。`agents/comparator.md`と`agents/analyzer.md`を参照。基本的な考え方:2つの出力をどちらが由来かを伝えずに独立エージェントに渡し、品質を判定させる。
281
291
 
282
- #### 実証済みデザインパターンを学ぶ
292
+ オプション、サブエージェントが必要、ほとんどのユーザーには不要。人間のレビューループで通常は十分。
283
293
 
284
- スキルのニーズに基づいて、これらの有用なガイドを参照してください:
294
+ ---
285
295
 
286
- - **複数ステップのプロセス**: シーケンシャルワークフローと条件付きロジックについては references/workflows.md を参照
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
- 実装を開始するには、上記で特定した再利用可能なリソースから始めます:`scripts/`、`references/`、`assets/` ファイル。このステップにはユーザー入力が必要な場合があります。例えば、`brand-guidelines`スキルを実装する場合、ユーザーは`assets/`に保存するブランドアセットやテンプレート、または`references/`に保存するドキュメントを提供する必要があります。
302
+ 20個の評価クエリを作成 — トリガーすべきものとすべきでないものの混合。JSONとして保存。
294
303
 
295
- 追加されたスクリプトは、バグがないこと、出力が期待どおりであることを確認するために実際に実行してテストする必要があります。多くの類似したスクリプトがある場合、すべてが機能することを確信しながら完了までの時間とのバランスを取るために、代表的なサンプルのみをテストする必要があります。
304
+ クエリは現実的で、Claude CodeやClaude.aiユーザーが実際にタイプするもの。抽象的ではなく、具体的で詳細なリクエスト。ファイルパス、個人的なコンテキスト、カラム名、会社名、URL等。少しの背景。一部は小文字や略語やタイプミスやカジュアルな話し方。長さを混ぜ、明確なケースよりエッジケースに焦点。
296
305
 
297
- スキルに必要のない例のファイルとディレクトリは削除する必要があります。初期化スクリプトは構造を示すために`scripts/`、`references/`、`assets/`に例のファイルを作成しますが、ほとんどのスキルはそれらすべてを必要としません。
306
+ **トリガーすべき**クエリ(8-10個)はカバレッジを考える。**トリガーすべきでない**クエリ(8-10個)はニアミス — キーワードを共有するが実際には異なるものが必要なクエリ。
298
307
 
299
- #### SKILL.mdの更新
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
- `name`と`description`を持つYAMLフロントマターを記述します:
320
+ ### ステップ3: 最適化ループの実行
306
321
 
307
- - `name`: スキル名
308
- - `description`: これはスキルの主要なトリガーメカニズムであり、Claudeがいつスキルを使用するかを理解するのに役立ちます。
309
- - Skillが何をするか、使用するための特定のトリガー/コンテキストの両方を含めます。
310
- - すべての「使用すべき場合」情報をここに含めてください - 本文ではありません。本文はトリガー後にのみ読み込まれるため、本文の「このスキルを使用すべき場合」セクションはClaudeにとって役立ちません。
311
- - `docx`スキルの例の説明: "変更履歴、コメント、書式保持、テキスト抽出をサポートする包括的なドキュメント作成、編集、分析。Claudeが専門的なドキュメント(.docxファイル)で作業する必要がある場合に使用:(1) 新しいドキュメントの作成、(2) コンテンツの変更または編集、(3) 変更履歴の操作、(4) コメントの追加、またはその他のドキュメントタスク"
322
+ バックグラウンドで実行:
312
323
 
313
- YAMLフロントマターに他のフィールドを含めないでください。
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
- 1. プロジェクト設定で言語設定を確認:`CLAUDE.md`、`.kiro/steering/`、または `spec.json` ファイル
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
- ### ステップ5: スキルのパッケージ化
343
+ ---
330
344
 
331
- スキルの開発が完了したら、ユーザーと共有される配布可能な.skillファイルにパッケージ化する必要があります。パッケージ化プロセスは、すべての要件を満たしていることを確認するために、まずスキルを自動的に検証します:
345
+ ### パッケージ化と提示(`present_files`ツールが利用可能な場合のみ)
332
346
 
333
347
  ```bash
334
- scripts/package_skill.py <path/to/skill-folder>
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
- 1. **検証**:スキルを自動的に検証し、以下を確認:
355
+ Claude.aiではサブエージェントがないため:
356
+ - **テスト実行**: 各テストケースを順次に自分で実行。ベースラインはスキップ
357
+ - **結果レビュー**: ブラウザが使えない場合、会話内で直接結果を提示
358
+ - **ベンチマーク**: スキップ
359
+ - **Description最適化**: `claude` CLIが必要なためスキップ
346
360
 
347
- - YAMLフロントマター形式と必須フィールド
348
- - スキル命名規則とディレクトリ構造
349
- - 説明の完全性と品質
350
- - ファイル構成とリソース参照
361
+ ---
351
362
 
352
- 2. **パッケージ化**:検証が通過した場合、スキル名にちなんだ.skillファイル(例:`my-skill.skill`)を作成し、すべてのファイルを含み、配布のための適切なディレクトリ構造を維持します。.skillファイルは.skill拡張子を持つzipファイルです。
363
+ ## Cowork固有の手順
353
364
 
354
- 検証が失敗した場合、スクリプトはエラーを報告し、パッケージを作成せずに終了します。検証エラーを修正し、パッケージ化コマンドを再度実行します。
365
+ - サブエージェントあり、メインワークフロー(テスト並行実行等)は動作する
366
+ - ブラウザがないため、ビューア生成時は`--static <output_path>`を使用
367
+ - フィードバックは`feedback.json`としてダウンロード
368
+ - テスト実行後は**必ず**`generate_review.py`で評価ビューアを生成してから自己評価すること
355
369
 
356
- ### ステップ6: 反復
370
+ ---
357
371
 
358
- スキルをテストした後、ユーザーは改善を要求する場合があります。多くの場合、これはスキルを使用した直後、スキルがどのように機能したかの新鮮なコンテキストで発生します。
372
+ ## リファレンスファイル
359
373
 
360
- **反復ワークフロー**:
374
+ agents/ディレクトリには専門サブエージェントの指示がある。関連サブエージェントを起動する時に読む。
361
375
 
362
- 1. 実際のタスクでスキルを使用
363
- 2. 苦労や非効率性に気づく
364
- 3. SKILL.mdまたはバンドルリソースをどのように更新すべきかを特定
365
- 4. 変更を実装し、再度テスト
376
+ - `agents/grader.md` — アサーションの出力に対する評価方法
377
+ - `agents/comparator.md` — 2つの出力のブラインドA/B比較方法
378
+ - `agents/analyzer.md` — 一方が勝った理由の分析方法
366
379
 
367
- ## einja固有の注意事項
380
+ references/ディレクトリには追加ドキュメント:
381
+ - `references/schemas.md` — evals.json、grading.json等のJSON構造
368
382
 
369
- ### 命名規約
383
+ ---
370
384
 
371
- einjaプロジェクトでは、Skillには`einja-`プレフィックスを付けることを推奨します。
385
+ ## スキルの初期化(init_skill.py)
372
386
 
373
- 例:`einja-coding-standards`、`einja-component-design`、`einja-api-development`
387
+ 新しいSkillをゼロから作成する場合は、`init_skill.py`スクリプトを実行する。
374
388
 
375
- ### ディレクトリ構造
389
+ ```bash
390
+ scripts/init_skill.py <skill-name> --path <output-directory>
391
+ ```
376
392
 
377
- einjaでは`references/`(複数形)を使用します。公式仕様に準拠しています。
393
+ ## スキルのパッケージ化(package_skill.py)
378
394
 
379
- ```
380
- einja-skill-name/
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
- einjaの一部のドキュメントは、CLIツールによって自動更新される「マネージドセクション」を使用します。Skillでこれらのパターンを使用する場合:
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:seed:start id="unique-id" -->
401
- プロジェクト固有の内容をここに追記
402
- <!-- @einja:seed:end -->
405
+ <!-- @einja:project-private:start id="{既存と同じID}" -->
406
+ <!-- プロジェクト固有の情報を記入 -->
407
+ <!-- @einja:project-private:end -->
403
408
  ```
409
+ <!-- @einja:excluded:end -->
404
410
 
405
- ### ビルドシステム連携
406
-
407
- einja management templateでは、`.claude/skills/einja-*/` 内のファイルはビルド時に `presets/default/.claude/skills/einja-*/` に自動的にコピーされます。
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 -->