@einja/dev-cli 0.1.37 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/commands/task-loop/index.d.ts.map +1 -1
- package/dist/commands/task-loop/index.js +9 -5
- package/dist/commands/task-loop/index.js.map +1 -1
- package/dist/commands/task-loop/lib/dependency-resolver.js +1 -1
- package/dist/commands/task-loop/lib/dependency-resolver.js.map +1 -1
- package/dist/commands/task-loop/lib/dependency-resolver.test.js +6 -6
- package/dist/commands/task-loop/lib/dependency-resolver.test.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.d.ts +2 -1
- package/dist/commands/task-loop/lib/github-client.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/github-client.js +7 -6
- package/dist/commands/task-loop/lib/github-client.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.test.js +38 -22
- package/dist/commands/task-loop/lib/github-client.test.js.map +1 -1
- package/dist/commands/task-loop/lib/retry-utils.d.ts +34 -0
- package/dist/commands/task-loop/lib/retry-utils.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/retry-utils.js +85 -0
- package/dist/commands/task-loop/lib/retry-utils.js.map +1 -0
- package/dist/commands/task-loop/lib/retry-utils.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/retry-utils.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/retry-utils.test.js +163 -0
- package/dist/commands/task-loop/lib/retry-utils.test.js.map +1 -0
- package/dist/commands/task-loop/lib/vibe-kanban-client.d.ts +9 -0
- package/dist/commands/task-loop/lib/vibe-kanban-client.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/vibe-kanban-client.js +64 -12
- package/dist/commands/task-loop/lib/vibe-kanban-client.js.map +1 -1
- package/dist/lib/file-system.d.ts +1 -5
- package/dist/lib/file-system.d.ts.map +1 -1
- package/dist/lib/file-system.js +2 -8
- package/dist/lib/file-system.js.map +1 -1
- package/dist/lib/mcp-config.js +3 -3
- package/dist/lib/mcp-config.js.map +1 -1
- package/dist/lib/mcp-config.test.js +2 -2
- package/dist/lib/mcp-config.test.js.map +1 -1
- package/dist/lib/merger.d.ts.map +1 -1
- package/dist/lib/merger.js +5 -5
- package/dist/lib/merger.js.map +1 -1
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
- package/dist/lib/preset-update/file-copier.js +5 -0
- package/dist/lib/preset-update/file-copier.js.map +1 -1
- package/dist/lib/preset-update/file-copier.test.js +26 -0
- package/dist/lib/preset-update/file-copier.test.js.map +1 -1
- package/dist/lib/sync/category-validator.d.ts +5 -1
- package/dist/lib/sync/category-validator.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.js +16 -2
- package/dist/lib/sync/category-validator.js.map +1 -1
- package/dist/lib/sync/category-validator.test.js +14 -4
- package/dist/lib/sync/category-validator.test.js.map +1 -1
- package/dist/lib/sync/file-filter.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.js +24 -0
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/file-filter.test.js +37 -0
- package/dist/lib/sync/file-filter.test.js.map +1 -1
- package/package.json +1 -1
- package/presets/default/.claude/agents/einja/specs/spec-qa-generator.md +40 -43
- package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +16 -6
- package/presets/default/.claude/agents/einja/task/task-executer.md +13 -11
- package/presets/default/.claude/commands/einja/einja-sync.md +238 -0
- package/presets/default/.claude/commands/einja/spec-create.md +7 -3
- package/presets/default/.claude/commands/einja/task-exec.md +6 -6
- package/presets/default/.claude/settings.json +1 -0
- package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +4 -3
- package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +69 -0
- package/presets/default/.claude/skills/einja-component-design/SKILL.md +3 -3
- package/presets/default/.claude/skills/einja-project-overview/SKILL.md +35 -0
- package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +421 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +333 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +110 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/quick_validate.py +117 -0
- package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +6 -6
- package/presets/default/.claude/skills/einja-task-qa/SKILL.md +24 -22
- package/presets/default/.claude/skills/einja-task-qa/{reference → references}/troubleshooting.md +1 -1
- package/presets/default/.claude/skills/einja-task-qa/{reference → references}/usage-patterns.md +2 -2
- package/presets/default/.claude/skills/einja-task-qa/templates/qa-test-template.md +13 -13
- package/{scaffolds → presets/default}/.mcp.json +27 -6
- package/presets/default/.vscode/settings.json +18 -0
- package/presets/default/CLAUDE.md.template +192 -0
- package/{scaffolds → presets/default/docs/einja}/example/README.md +1 -1
- package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/qa-tests/README.md +20 -23
- package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/evidence/story3/.gitkeep +0 -0
- package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/qa-tests/scenarios.md +12 -16
- package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/story1.md +101 -0
- package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/story2.md +70 -0
- package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/story3.md +69 -0
- package/{scaffolds → presets/default/docs/einja}/instructions/deployment-setup.md +93 -9
- package/{scaffolds → presets/default/docs/einja}/instructions/environment-setup.md +152 -4
- package/{scaffolds → presets/default/docs/einja}/instructions/local-server-environment-and-worktree.md +99 -0
- package/presets/default/docs/einja/instructions/neon-cli-reference.md +605 -0
- package/{scaffolds → presets/default/docs/einja}/instructions/vercel-cli-reference.md +80 -0
- package/{scaffolds → presets/default/docs/einja}/steering/acceptance-criteria-and-qa-guide.md +3 -4
- package/{scaffolds → presets/default/docs/einja}/steering/infrastructure/environment-variables.md +4 -4
- package/{scaffolds → presets/default/docs/einja}/templates/README.md +1 -1
- package/{scaffolds → presets/default/docs/einja}/templates/qa-test.md.template +29 -26
- package/presets/default/symlinks.json +0 -45
- package/scaffolds/cli/preset.yaml +0 -137
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-1.md +0 -268
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-2.md +0 -179
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-3.md +0 -392
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/2-1.md +0 -459
- /package/presets/default/.claude/skills/einja-coding-standards/{reference → references}/naming-conventions.md +0 -0
- /package/presets/default/.claude/skills/einja-coding-standards/{reference → references}/prohibited-patterns.md +0 -0
- /package/presets/default/.claude/skills/einja-coding-standards/{reference → references}/typescript-rules.md +0 -0
- /package/presets/default/.claude/skills/einja-component-design/{reference → references}/directory-structure.md +0 -0
- /package/presets/default/.claude/skills/einja-component-design/{reference → references}/props-patterns.md +0 -0
- /package/presets/default/.claude/skills/einja-component-design/{reference → references}/styling-guide.md +0 -0
- /package/presets/default/.claude/skills/einja-task-qa/{reference → references}/failure-patterns.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/design.md +0 -0
- /package/{scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/evidence → presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/evidence/story1}/.gitkeep +0 -0
- /package/{scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/evidence → presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/evidence/story2}/.gitkeep +0 -0
- /package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/requirements.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/tasks.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/instructions/task-execute.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/instructions/task-vibe-kanban-loop.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/README.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/architecture.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/branch-strategy.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/commit-rules.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/db-schema-design.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/development/api-development.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/development/backend-architecture.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/development/database-guidelines.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/development/frontend-development.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/development/review-guidelines.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/development/testing-strategy.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/development-workflow.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/infrastructure/deployment.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/product.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/steering/task-management.md +0 -0
- /package/{scaffolds → presets/default/docs/einja}/templates/design-simple.md.template +0 -0
- /package/{scaffolds → presets/default/docs/einja}/templates/design.md.template +0 -0
- /package/{scaffolds → presets/default/docs/einja}/templates/requirements.md.template +0 -0
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
---
|
|
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)を提供。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill作成ガイド
|
|
7
|
+
|
|
8
|
+
## 概要
|
|
9
|
+
|
|
10
|
+
このSkillは、効果的なSkillを作成するためのガイドを提供します。ユーザーが新しいSkillを作成したい(または既存のSkillを更新したい)場合に使用してください。
|
|
11
|
+
|
|
12
|
+
## Skillとは
|
|
13
|
+
|
|
14
|
+
Skillは、Claudeの能力を専門知識、ワークフロー、ツール統合によって拡張する、モジュール化された自己完結型パッケージです。Skillを「特定のドメインやタスクのためのオンボーディングガイド」として考えてください。汎用エージェントであるClaudeを、どのモデルも完全には持ち得ない手続き的知識を備えた専門エージェントに変換します。
|
|
15
|
+
|
|
16
|
+
### Skillが提供するもの
|
|
17
|
+
|
|
18
|
+
1. **専門化されたワークフロー** - 特定ドメインのための複数ステップの手順
|
|
19
|
+
2. **ツール統合** - 特定のファイル形式やAPIを扱うための指示
|
|
20
|
+
3. **ドメイン専門知識** - 会社固有の知識、スキーマ、ビジネスロジック
|
|
21
|
+
4. **バンドルリソース** - 複雑で反復的なタスクのためのスクリプト、参照資料、アセット
|
|
22
|
+
|
|
23
|
+
## 基本原則
|
|
24
|
+
|
|
25
|
+
### 簡潔さが鍵
|
|
26
|
+
|
|
27
|
+
コンテキストウィンドウは公共財です。Skillは、Claudeが必要とする他のすべてのもの(システムプロンプト、会話履歴、他のSkillのメタデータ、実際のユーザーリクエスト)とコンテキストウィンドウを共有します。
|
|
28
|
+
|
|
29
|
+
**デフォルトの前提: Claudeはすでに非常に賢い。** Claudeがまだ持っていないコンテキストのみを追加してください。各情報について「Claudeは本当にこの説明が必要か?」「この段落はトークンコストに見合うか?」と問いかけてください。
|
|
30
|
+
|
|
31
|
+
冗長な説明よりも簡潔な例を優先してください。
|
|
32
|
+
|
|
33
|
+
### 適切な自由度の設定
|
|
34
|
+
|
|
35
|
+
タスクの脆弱性と可変性に応じて、具体性のレベルを合わせます:
|
|
36
|
+
|
|
37
|
+
**高自由度(テキストベースの指示)**: 複数のアプローチが有効な場合、決定がコンテキストに依存する場合、またはヒューリスティックがアプローチを導く場合に使用します。
|
|
38
|
+
|
|
39
|
+
**中自由度(疑似コードまたはパラメータ付きスクリプト)**: 推奨パターンが存在する場合、ある程度のバリエーションが許容される場合、または設定が動作に影響する場合に使用します。
|
|
40
|
+
|
|
41
|
+
**低自由度(特定のスクリプト、少数のパラメータ)**: 操作が脆弱でエラーが起きやすい場合、一貫性が重要な場合、または特定のシーケンスに従う必要がある場合に使用します。
|
|
42
|
+
|
|
43
|
+
Claudeがパスを探索していると考えてください:崖のある狭い橋には特定のガードレールが必要(低自由度)ですが、開けた野原では多くのルートが許されます(高自由度)。
|
|
44
|
+
|
|
45
|
+
### Skillの構造
|
|
46
|
+
|
|
47
|
+
すべてのSkillは、必須のSKILL.mdファイルとオプションのバンドルリソースで構成されます:
|
|
48
|
+
|
|
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
|
+
```
|
|
62
|
+
|
|
63
|
+
#### SKILL.md(必須)
|
|
64
|
+
|
|
65
|
+
すべてのSKILL.mdは以下で構成されます:
|
|
66
|
+
|
|
67
|
+
- **フロントマター**(YAML): `name`と`description`フィールド(必須)を含み、`license`、`metadata`、`compatibility`などのオプションフィールドもあります。Claudeがいつスキルをトリガーするかを判断するため、何のスキルか、いつ使用すべきかについて明確かつ包括的に記述してください。`compatibility`フィールドは環境要件(対象プロダクト、システムパッケージ等)を記載しますが、ほとんどのスキルには不要です。
|
|
68
|
+
- **本文**(Markdown): スキル使用のための指示とガイダンス。スキルがトリガーされた後(もしあれば)のみ読み込まれます。
|
|
69
|
+
|
|
70
|
+
#### バンドルリソース(オプション)
|
|
71
|
+
|
|
72
|
+
##### scripts/
|
|
73
|
+
|
|
74
|
+
決定論的な信頼性が必要なタスクや繰り返し書き直されるタスクのための実行可能コード(Python/Bash等)。
|
|
75
|
+
|
|
76
|
+
- **含めるべき場合**: 同じコードが繰り返し書き直される場合、または決定論的な信頼性が必要な場合
|
|
77
|
+
- **例**: PDF回転タスクのための `scripts/rotate_pdf.py`
|
|
78
|
+
- **利点**: トークン効率的、決定論的、コンテキストに読み込まずに実行可能
|
|
79
|
+
- **注意**: スクリプトはパッチや環境固有の調整のためにClaudeによって読まれる場合があります
|
|
80
|
+
|
|
81
|
+
##### references/
|
|
82
|
+
|
|
83
|
+
Claudeの処理と思考を導くために必要に応じて読み込まれることを意図したドキュメントと参照資料。
|
|
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ファイルに移動してください。
|
|
91
|
+
|
|
92
|
+
##### assets/
|
|
93
|
+
|
|
94
|
+
コンテキストに読み込まれることを意図せず、Claudeが生成する出力で使用されるファイル。
|
|
95
|
+
|
|
96
|
+
- **含めるべき場合**: 最終出力で使用されるファイルが必要な場合
|
|
97
|
+
- **例**: ブランドアセットのための `assets/logo.png`、PowerPointテンプレートのための `assets/slides.pptx`、HTML/Reactボイラープレートのための `assets/frontend-template/`、タイポグラフィのための `assets/font.ttf`
|
|
98
|
+
- **使用例**: テンプレート、画像、アイコン、ボイラープレートコード、フォント、コピーまたは修正されるサンプルドキュメント
|
|
99
|
+
- **利点**: 出力リソースとドキュメントを分離し、Claudeがコンテキストに読み込まずにファイルを使用可能
|
|
100
|
+
|
|
101
|
+
#### Skillに含めるべきでないもの
|
|
102
|
+
|
|
103
|
+
Skillには、その機能を直接サポートする必須ファイルのみを含めるべきです。以下のような余分なドキュメントや補助ファイルは作成しないでください:
|
|
104
|
+
|
|
105
|
+
- README.md
|
|
106
|
+
- INSTALLATION_GUIDE.md
|
|
107
|
+
- QUICK_REFERENCE.md
|
|
108
|
+
- CHANGELOG.md
|
|
109
|
+
- その他
|
|
110
|
+
|
|
111
|
+
Skillには、AIエージェントが手元のジョブを実行するために必要な情報のみを含めるべきです。作成プロセス、セットアップおよびテスト手順、ユーザー向けドキュメントなどの補助的なコンテキストを含めるべきではありません。追加のドキュメントファイルを作成すると、混乱を招きます。
|
|
112
|
+
|
|
113
|
+
### 段階的開示設計原則
|
|
114
|
+
|
|
115
|
+
Skillは、コンテキストを効率的に管理するために3レベルの読み込みシステムを使用します:
|
|
116
|
+
|
|
117
|
+
1. **メタデータ(name + description)** - 常にコンテキスト内(~100語)
|
|
118
|
+
2. **SKILL.md本文** - スキルトリガー時(<5k語)
|
|
119
|
+
3. **バンドルリソース** - Claudeが必要に応じて(無制限。スクリプトはコンテキストウィンドウに読み込まずに実行可能)
|
|
120
|
+
|
|
121
|
+
#### 段階的開示パターン
|
|
122
|
+
|
|
123
|
+
SKILL.md本文は要点に絞り、500行以内に抑えてコンテキストの肥大化を最小限に抑えます。この制限に近づいたらコンテンツを別ファイルに分割します。コンテンツを他のファイルに分割する際は、SKILL.mdから参照し、いつ読むべきかを明確に記述することが非常に重要です。これにより、スキルの読者がそれらが存在し、いつ使用すべきかを知ることができます。
|
|
124
|
+
|
|
125
|
+
**重要な原則**: Skillが複数のバリエーション、フレームワーク、オプションをサポートする場合、SKILL.mdにはコアワークフローと選択ガイダンスのみを保持します。バリエーション固有の詳細(パターン、例、設定)は別のreferenceファイルに移動します。
|
|
126
|
+
|
|
127
|
+
**パターン1: リファレンス付きの高レベルガイド**
|
|
128
|
+
|
|
129
|
+
```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) を参照
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
ClaudeはFORMS.md、REFERENCE.md、またはEXAMPLES.mdを必要な場合のみ読み込みます。
|
|
145
|
+
|
|
146
|
+
**パターン2: ドメイン固有の構成**
|
|
147
|
+
|
|
148
|
+
複数のドメインを持つSkillの場合、無関係なコンテキストの読み込みを避けるためにドメインごとにコンテンツを整理します:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
bigquery-skill/
|
|
152
|
+
├── SKILL.md (概要とナビゲーション)
|
|
153
|
+
└── references/
|
|
154
|
+
├── finance.md (収益、請求メトリクス)
|
|
155
|
+
├── sales.md (商談、パイプライン)
|
|
156
|
+
├── product.md (API使用、機能)
|
|
157
|
+
└── marketing.md (キャンペーン、アトリビューション)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
ユーザーが販売メトリクスについて質問すると、Claudeはsales.mdのみを読みます。
|
|
161
|
+
|
|
162
|
+
同様に、複数のフレームワークやバリエーションをサポートするスキルの場合、バリエーションごとに整理します:
|
|
163
|
+
|
|
164
|
+
```
|
|
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
|
+
|
|
175
|
+
**パターン3: 条件付き詳細**
|
|
176
|
+
|
|
177
|
+
基本コンテンツを表示し、高度なコンテンツにリンク:
|
|
178
|
+
|
|
179
|
+
```markdown
|
|
180
|
+
# DOCX Processing
|
|
181
|
+
|
|
182
|
+
## ドキュメント作成
|
|
183
|
+
|
|
184
|
+
新しいドキュメントにはdocx-jsを使用。[DOCX-JS.md](DOCX-JS.md) を参照。
|
|
185
|
+
|
|
186
|
+
## ドキュメント編集
|
|
187
|
+
|
|
188
|
+
簡単な編集には、XMLを直接修正。
|
|
189
|
+
|
|
190
|
+
**変更履歴の場合**: [REDLINING.md](REDLINING.md) を参照
|
|
191
|
+
**OOXMLの詳細**: [OOXML.md](OOXML.md) を参照
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Claudeは、ユーザーがそれらの機能を必要とする場合のみREDLINING.mdまたはOOXML.mdを読みます。
|
|
195
|
+
|
|
196
|
+
**重要なガイドライン**:
|
|
197
|
+
|
|
198
|
+
- **深くネストされた参照を避ける** - 参照はSKILL.mdから1レベル深く保つ。すべてのreferencesファイルはSKILL.mdから直接リンクする。
|
|
199
|
+
- **長いreferencesファイルの構造化** - 100行を超えるファイルの場合、プレビュー時にClaudeが全体のスコープを見ることができるよう、冒頭に目次を含める。
|
|
200
|
+
|
|
201
|
+
## Skill作成プロセス
|
|
202
|
+
|
|
203
|
+
Skill作成には以下のステップが含まれます:
|
|
204
|
+
|
|
205
|
+
1. 具体例でスキルを理解する
|
|
206
|
+
2. 再利用可能なスキルコンテンツを計画する(scripts、reference、assets)
|
|
207
|
+
3. スキルを初期化する(init_skill.py実行)
|
|
208
|
+
4. スキルを編集する(リソースを実装し、SKILL.mdを記述)
|
|
209
|
+
5. スキルをパッケージ化する(package_skill.py実行)
|
|
210
|
+
6. 実際の使用に基づいて反復改善する
|
|
211
|
+
|
|
212
|
+
これらのステップに順番に従ってください。適用されない明確な理由がある場合のみスキップしてください。
|
|
213
|
+
|
|
214
|
+
### ステップ1: 具体例でスキルを理解する
|
|
215
|
+
|
|
216
|
+
スキルの使用パターンがすでに明確に理解されている場合のみ、このステップをスキップしてください。既存のスキルで作業している場合でも有益です。
|
|
217
|
+
|
|
218
|
+
効果的なスキルを作成するには、スキルがどのように使用されるかの具体例を明確に理解します。この理解は、直接のユーザー例またはユーザーフィードバックで検証された生成例のいずれかから得られます。
|
|
219
|
+
|
|
220
|
+
例えば、image-editorスキルを構築する場合、関連する質問には以下が含まれます:
|
|
221
|
+
|
|
222
|
+
- 「image-editorスキルはどのような機能をサポートすべきですか?編集、回転、その他?」
|
|
223
|
+
- 「このスキルがどのように使用されるかの例を教えてください」
|
|
224
|
+
- 「『この画像から赤目を除去』や『この画像を回転』のようなユーザーのリクエストを想像できます。このスキルが使用される他の方法はありますか?」
|
|
225
|
+
- 「このスキルをトリガーするためにユーザーは何と言うでしょうか?」
|
|
226
|
+
|
|
227
|
+
ユーザーを圧倒しないように、1つのメッセージで多くの質問をすることを避けてください。最も重要な質問から始め、効果を高めるために必要に応じてフォローアップします。
|
|
228
|
+
|
|
229
|
+
スキルがサポートすべき機能について明確な感覚が得られたら、このステップを終了します。
|
|
230
|
+
|
|
231
|
+
### ステップ2: 再利用可能なスキルコンテンツの計画
|
|
232
|
+
|
|
233
|
+
具体例を効果的なスキルに変えるために、各例を以下のように分析します:
|
|
234
|
+
|
|
235
|
+
1. ゼロから例を実行する方法を検討
|
|
236
|
+
2. これらのワークフローを繰り返し実行する際に役立つscripts、reference、assetsを特定
|
|
237
|
+
|
|
238
|
+
例:「このPDFを回転してください」のようなクエリを処理するために`pdf-editor`スキルを構築する場合、分析は以下を示します:
|
|
239
|
+
|
|
240
|
+
1. PDFを回転するには毎回同じコードを書き直す必要がある
|
|
241
|
+
2. スキルに保存する `scripts/rotate_pdf.py` スクリプトが役立つ
|
|
242
|
+
|
|
243
|
+
例:「Todoアプリを作って」や「歩数を追跡するダッシュボードを作って」のようなクエリのために`frontend-webapp-builder`スキルを設計する場合、分析は以下を示します:
|
|
244
|
+
|
|
245
|
+
1. フロントエンドWebアプリを書くには毎回同じボイラープレートHTML/Reactが必要
|
|
246
|
+
2. ボイラープレートHTML/Reactプロジェクトファイルを含む `assets/hello-world/` テンプレートがスキルに保存すると役立つ
|
|
247
|
+
|
|
248
|
+
例:「今日何人のユーザーがログインしましたか?」のようなクエリを処理するために`big-query`スキルを構築する場合、分析は以下を示します:
|
|
249
|
+
|
|
250
|
+
1. BigQueryをクエリするには毎回テーブルスキーマとリレーションシップを再発見する必要がある
|
|
251
|
+
2. テーブルスキーマをドキュメント化する `references/schema.md` ファイルがスキルに保存すると役立つ
|
|
252
|
+
|
|
253
|
+
スキルのコンテンツを確立するために、各具体例を分析して、含めるべき再利用可能なリソースのリストを作成します:scripts、reference、assets。
|
|
254
|
+
|
|
255
|
+
### ステップ3: スキルの初期化
|
|
256
|
+
|
|
257
|
+
この時点で、実際にスキルを作成します。
|
|
258
|
+
|
|
259
|
+
開発中のスキルがすでに存在し、反復またはパッケージ化が必要な場合のみ、このステップをスキップしてください。その場合は次のステップに進んでください。
|
|
260
|
+
|
|
261
|
+
新しいスキルをゼロから作成する場合は、常に `init_skill.py` スクリプトを実行してください。このスクリプトは、スキルが必要とするすべてを自動的に含む新しいテンプレートスキルディレクトリを便利に生成し、スキル作成プロセスをはるかに効率的かつ信頼性の高いものにします。
|
|
262
|
+
|
|
263
|
+
使用法:
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
scripts/init_skill.py <skill-name> --path <output-directory>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
スクリプトは:
|
|
270
|
+
|
|
271
|
+
- 指定されたパスにスキルディレクトリを作成
|
|
272
|
+
- 適切なフロントマターとTODOプレースホルダーを持つSKILL.mdテンプレートを生成
|
|
273
|
+
- 例のリソースディレクトリを作成:`scripts/`、`references/`、`assets/`
|
|
274
|
+
- カスタマイズまたは削除可能な各ディレクトリに例のファイルを追加
|
|
275
|
+
|
|
276
|
+
初期化後、生成されたSKILL.mdと例のファイルを必要に応じてカスタマイズまたは削除します。
|
|
277
|
+
|
|
278
|
+
### ステップ4: スキルの編集
|
|
279
|
+
|
|
280
|
+
(新しく生成された、または既存の)スキルを編集する際、スキルは別のClaudeインスタンスが使用するために作成されていることを忘れないでください。Claudeにとって有益で自明でない情報を含めてください。別のClaudeインスタンスがこれらのタスクをより効果的に実行するのに役立つ手続き的知識、ドメイン固有の詳細、または再利用可能なアセットを検討してください。
|
|
281
|
+
|
|
282
|
+
#### 実証済みデザインパターンを学ぶ
|
|
283
|
+
|
|
284
|
+
スキルのニーズに基づいて、これらの有用なガイドを参照してください:
|
|
285
|
+
|
|
286
|
+
- **複数ステップのプロセス**: シーケンシャルワークフローと条件付きロジックについては references/workflows.md を参照
|
|
287
|
+
- **特定の出力形式または品質基準**: テンプレートと例のパターンについては references/output-patterns.md を参照
|
|
288
|
+
|
|
289
|
+
これらのファイルには、効果的なスキル設計のための確立されたベストプラクティスが含まれています。
|
|
290
|
+
|
|
291
|
+
#### 再利用可能なスキルコンテンツから始める
|
|
292
|
+
|
|
293
|
+
実装を開始するには、上記で特定した再利用可能なリソースから始めます:`scripts/`、`references/`、`assets/` ファイル。このステップにはユーザー入力が必要な場合があります。例えば、`brand-guidelines`スキルを実装する場合、ユーザーは`assets/`に保存するブランドアセットやテンプレート、または`references/`に保存するドキュメントを提供する必要があります。
|
|
294
|
+
|
|
295
|
+
追加されたスクリプトは、バグがないこと、出力が期待どおりであることを確認するために実際に実行してテストする必要があります。多くの類似したスクリプトがある場合、すべてが機能することを確信しながら完了までの時間とのバランスを取るために、代表的なサンプルのみをテストする必要があります。
|
|
296
|
+
|
|
297
|
+
スキルに必要のない例のファイルとディレクトリは削除する必要があります。初期化スクリプトは構造を示すために`scripts/`、`references/`、`assets/`に例のファイルを作成しますが、ほとんどのスキルはそれらすべてを必要としません。
|
|
298
|
+
|
|
299
|
+
#### SKILL.mdの更新
|
|
300
|
+
|
|
301
|
+
**記述ガイドライン**: 常に命令形/不定詞形を使用してください。
|
|
302
|
+
|
|
303
|
+
##### フロントマター
|
|
304
|
+
|
|
305
|
+
`name`と`description`を持つYAMLフロントマターを記述します:
|
|
306
|
+
|
|
307
|
+
- `name`: スキル名
|
|
308
|
+
- `description`: これはスキルの主要なトリガーメカニズムであり、Claudeがいつスキルを使用するかを理解するのに役立ちます。
|
|
309
|
+
- Skillが何をするか、使用するための特定のトリガー/コンテキストの両方を含めます。
|
|
310
|
+
- すべての「使用すべき場合」情報をここに含めてください - 本文ではありません。本文はトリガー後にのみ読み込まれるため、本文の「このスキルを使用すべき場合」セクションはClaudeにとって役立ちません。
|
|
311
|
+
- `docx`スキルの例の説明: "変更履歴、コメント、書式保持、テキスト抽出をサポートする包括的なドキュメント作成、編集、分析。Claudeが専門的なドキュメント(.docxファイル)で作業する必要がある場合に使用:(1) 新しいドキュメントの作成、(2) コンテンツの変更または編集、(3) 変更履歴の操作、(4) コメントの追加、またはその他のドキュメントタスク"
|
|
312
|
+
|
|
313
|
+
YAMLフロントマターに他のフィールドを含めないでください。
|
|
314
|
+
|
|
315
|
+
##### 本文
|
|
316
|
+
|
|
317
|
+
スキルとそのバンドルリソースを使用するための指示を記述します。
|
|
318
|
+
|
|
319
|
+
##### 言語の考慮事項
|
|
320
|
+
|
|
321
|
+
スキルの言語をプロジェクトの主要言語に合わせます:
|
|
322
|
+
|
|
323
|
+
1. プロジェクト設定で言語設定を確認:`CLAUDE.md`、`.kiro/steering/`、または `spec.json` ファイル
|
|
324
|
+
2. SKILL.md本文はプロジェクトの主要言語で記述
|
|
325
|
+
3. フロントマター`description`:主要な説明はプロジェクトの主要言語を使用しますが、チームが使用する他の言語で重要なトリガーフレーズを含めます(バイリンガル説明はトリガーの失敗を防ぎます)
|
|
326
|
+
4. referenceファイルと出力テンプレートもプロジェクトの言語に従うべき
|
|
327
|
+
5. 技術用語(API名、ツール名、ファイル形式)はプロジェクト言語に関係なく英語のままで構いません
|
|
328
|
+
|
|
329
|
+
### ステップ5: スキルのパッケージ化
|
|
330
|
+
|
|
331
|
+
スキルの開発が完了したら、ユーザーと共有される配布可能な.skillファイルにパッケージ化する必要があります。パッケージ化プロセスは、すべての要件を満たしていることを確認するために、まずスキルを自動的に検証します:
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
scripts/package_skill.py <path/to/skill-folder>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
オプションの出力ディレクトリ指定:
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
scripts/package_skill.py <path/to/skill-folder> ./dist
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
パッケージ化スクリプトは:
|
|
344
|
+
|
|
345
|
+
1. **検証**:スキルを自動的に検証し、以下を確認:
|
|
346
|
+
|
|
347
|
+
- YAMLフロントマター形式と必須フィールド
|
|
348
|
+
- スキル命名規則とディレクトリ構造
|
|
349
|
+
- 説明の完全性と品質
|
|
350
|
+
- ファイル構成とリソース参照
|
|
351
|
+
|
|
352
|
+
2. **パッケージ化**:検証が通過した場合、スキル名にちなんだ.skillファイル(例:`my-skill.skill`)を作成し、すべてのファイルを含み、配布のための適切なディレクトリ構造を維持します。.skillファイルは.skill拡張子を持つzipファイルです。
|
|
353
|
+
|
|
354
|
+
検証が失敗した場合、スクリプトはエラーを報告し、パッケージを作成せずに終了します。検証エラーを修正し、パッケージ化コマンドを再度実行します。
|
|
355
|
+
|
|
356
|
+
### ステップ6: 反復
|
|
357
|
+
|
|
358
|
+
スキルをテストした後、ユーザーは改善を要求する場合があります。多くの場合、これはスキルを使用した直後、スキルがどのように機能したかの新鮮なコンテキストで発生します。
|
|
359
|
+
|
|
360
|
+
**反復ワークフロー**:
|
|
361
|
+
|
|
362
|
+
1. 実際のタスクでスキルを使用
|
|
363
|
+
2. 苦労や非効率性に気づく
|
|
364
|
+
3. SKILL.mdまたはバンドルリソースをどのように更新すべきかを特定
|
|
365
|
+
4. 変更を実装し、再度テスト
|
|
366
|
+
|
|
367
|
+
## einja固有の注意事項
|
|
368
|
+
|
|
369
|
+
### 命名規約
|
|
370
|
+
|
|
371
|
+
einjaプロジェクトでは、Skillには`einja-`プレフィックスを付けることを推奨します。
|
|
372
|
+
|
|
373
|
+
例:`einja-coding-standards`、`einja-component-design`、`einja-api-development`
|
|
374
|
+
|
|
375
|
+
### ディレクトリ構造
|
|
376
|
+
|
|
377
|
+
einjaでは`references/`(複数形)を使用します。公式仕様に準拠しています。
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
einja-skill-name/
|
|
381
|
+
├── SKILL.md
|
|
382
|
+
├── scripts/ # オプション
|
|
383
|
+
├── references/ # 複数形(公式仕様準拠)
|
|
384
|
+
└── assets/ # オプション
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### マネージドセクション
|
|
388
|
+
|
|
389
|
+
einjaの一部のドキュメントは、CLIツールによって自動更新される「マネージドセクション」を使用します。Skillでこれらのパターンを使用する場合:
|
|
390
|
+
|
|
391
|
+
**マネージドセクション**(CLIツールによる上書き):
|
|
392
|
+
```markdown
|
|
393
|
+
<!-- @einja:managed:start -->
|
|
394
|
+
この内容は`einja sync`で上書きされる
|
|
395
|
+
<!-- @einja:managed:end -->
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
**シードセクション**(プロジェクト固有の追記):
|
|
399
|
+
```markdown
|
|
400
|
+
<!-- @einja:seed:start id="unique-id" -->
|
|
401
|
+
プロジェクト固有の内容をここに追記
|
|
402
|
+
<!-- @einja:seed:end -->
|
|
403
|
+
```
|
|
404
|
+
|
|
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) - コンポーネント設計の例
|