tool-creator について
Claudeのプロジェクトワークフロー向けに、実行可能なCommonJSまたはESMのツールファイル作成を支援するスキルです。重複確認、カタログ登録、関連成果物の確認、作成後の検証手順も扱います。
主な機能
- 01既存ツールの確認と重複検出
- 02カテゴリ別のCommonJSまたはESMツール作成
- 03ツールカタログ更新と統合手順の実行
- 04関連成果物の確認と作成内容の記録
- 05入力検証とツールファイル構成の案内
活用シーン
- 01再利用可能なコマンドラインユーティリティの作成
- 02コード分析や検証スクリプトの作成
- 03ワークフロー連携ツールの追加
- 04新しいプロジェクトツールの登録と検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oimiragieo/ agent-studio --skill tool-creatorインストール後、Claude Code で/tool-creatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
commands/tool-creator.mdhooks/post-execute.cjspre-execute.cjsreferences/research-requirements.mdrules/tool-creator.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/implementation-template.md詳細
ツール作成
実行可能なツールファイルを .claude/tools/<category>/ に作成します。ツールは cli、analysis、validation、integrations などのカテゴリに整理されています。
ステップ 0:既存ツールを確認する
作成する前に、ツールがすでに存在するか確認します。
find .claude/tools/ -name "<tool-name>.*" -type f
存在する場合 → Read を使って現在のツールファイルを確認し、Edit を使って直接変更を適用します。更新後に、作成後の統合手順(ステップ 4)を実行してください。
新規の場合 → ステップ 0.1 に進みます。
ステップ 0.1:スマート重複検出(必須)
作成を進める前に、3 層の重複チェックを実行します。
const { checkDuplicate } = require('.claude/lib/creation/duplicate-detector.cjs');
const result = checkDuplicate({
artifactType: 'tool',
name: proposedName,
description: proposedDescription,
keywords: proposedKeywords || [],
});
結果への対応:
EXACT_MATCH:作成を中止します。代わりにtool-updaterスキルにルーティングします:Skill({ skill: 'tool-updater' })REGISTRY_MATCH:アーティファクトは登録されていますが、ファイルがない可能性があることをユーザーに警告します。作成する前に調査し、ユーザーに確認してください。SIMILAR_FOUND:スコア付きの候補を表示します。ユーザーに「類似するアーティファクトが見つかりました。新規作成を続けますか、それとも既存のものを更新しますか?」と尋ねてください。NO_MATCH:次のステップに進みます。
上書き:ユーザーが --force を明示的に指定した場合、このチェックを完全にスキップします。
ステップ 0.5:関連アーティファクトの確認
作成を進める前に、エコシステム内の関連アーティファクトを確認します。
.claude/lib/creators/companion-check.cjsのcompanion-check.cjsを使用しますcheckCompanions("tool", "{tool-name}")を呼び出して、関連アーティファクトを特定します- 関連アーティファクトのチェックリストを確認し、不足している必須/推奨アーティファクトを記録します
- このアーティファクトの作成完了後に、不足している関連アーティファクトを作成または確認する計画を立てます
- 作成後の統合メモに、関連アーティファクトの確認結果を含めます
このステップは情報提供のみを目的としており、作成を妨げるものではありませんが、アーティファクトのエコシステム全体を考慮するために役立ちます。
使用する場面
- 再利用可能なコマンドラインユーティリティを作成する
- 分析または検証スクリプトを構築する
- フレームワーク自動化ツールを実装する
- ワークフロー統合ユーティリティを追加する
ツールファイルの形式
ツールは、以下の要素を含む CommonJS または ESM モジュールです。
#!/usr/bin/env node
/**
* Tool Name - Brief description
*
* Usage:
* node .claude/tools/<category>/<tool-name>.cjs [options]
*
* Options:
* --help Show help
* --option Description
*/
const main = async () => {
// Tool implementation
};
if (require.main === module) {
main().catch(console.error);
}
module.exports = { main };
ツールのカテゴリ
| カテゴリ | 目的 | 例 |
|---|---|---|
cli | コマンドラインユーティリティ | バリデーター、フォーマッター |
analysis | コード分析ツール | 複雑度、依存関係 |
validation | 検証スクリプト | スキーマ、リンター |
integrations | 外部統合ツール | API クライアント、ウェブフック |
maintenance | フレームワークの保守 | クリーンアップ、移行 |
optimization | パフォーマンス最適化 | インデックス作成、キャッシュ |
runtime | ランタイムユーティリティ | 設定リーダー、ローダー |
visualization | 図とグラフの生成 | mermaid、graphviz |
workflow | ワークフローの自動化 | タスクランナー、オーケストレーター |
gates | 品質ゲートとチェック | カバレッジ、セキュリティ |
context | コンテキスト管理 | 圧縮、引き継ぎ |
作成ワークフロー
ステップ 1:入力を検証する
// Validate tool name (lowercase, hyphens, no spaces)
const toolName = args.name.toLowerCase().replace(/[^a-z0-9-]/g, '-');
// Validate category exists
const validCategories = [
'cli',
'analysis',
'validation',
'integrations',
'maintenance',
'optimization',
'runtime',
'visualization',
'workflow',
'gates',
'context',
];
if (!validCategories.includes(args.category)) {
throw new Error(`Invalid category. Must be one of: ${validCategories.join(', ')}`);
}
ステップ 2:ツールファイルを作成する
const toolPath = `.claude/tools/${args.category}/${toolName}.cjs`;
// Create tool directory if it doesn't exist
await mkdir(`.claude/tools/${args.category}`, { recursive: true });
// Generate tool content
const content = `#!/usr/bin/env node
/**
* ${toolName.replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase())} - ${args.description || 'Tool description'}
*
* Usage:
* node .claude/tools/${args.category}/${toolName}.cjs [options]
*
* Options:
* --help Show this help message
*/
${args.implementation}
if (require.main === module) {
main().catch(console.error);
}
module.exports = { main };
`;
await writeFile(toolPath, content);
// Make executable (Unix-like systems)
if (process.platform !== 'win32') {
await chmod(toolPath, '755');
}
ステップ 3:ツールカタログを更新する
const catalogPath = '.claude/context/artifacts/catalogs/tool-catalog.md';
// Add entry to catalog under appropriate category
const newEntry = `| ${toolName} | ${args.description} | .claude/tools/${args.category}/${toolName}.cjs | active |`;
// Insert into catalog preserving category structure
ステップ 4:作成後の統合を実行する
const {
runIntegrationChecklist,
queueCrossCreatorReview,
} = require('.claude/lib/creators/creator-commons.cjs');
await runIntegrationChecklist('tool', toolPath);
await queueCrossCreatorReview('tool', toolPath, {
artifactName: toolName,
createdBy: 'tool-creator',
category: args.category,
});
作成後の統合
ツールの作成後、統合チェックリストを実行します。
const {
runIntegrationChecklist,
queueCrossCreatorReview,
} = require('.claude/lib/creators/creator-commons.cjs');
// 1. Run integration checklist
const result = await runIntegrationChecklist('tool', '.claude/tools/<category>/<tool-name>.cjs');
// 2. Queue cross-creator review
await queueCrossCreatorReview('tool', '.claude/tools/<category>/<tool-name>.cjs', {
artifactName: '<tool-name>',
createdBy: 'tool-creator',
category: '<category>',
});
// 3. Review impact report
// Check result.mustHave for failures - address before marking complete
統合の確認:
- 正しいカテゴリの tool-catalog.md にツールが追加されている
- ツールファイルが実行可能(Unix)または実行可能(Windows)である
- ツールにヘルプテキストと使用例がある
- ツールが基本的なスモークテストに合格する
使用例
検証ツールを作成する
Skill({
skill: 'tool-creator',
args: `--name schema-validator --category validation --implementation "
const validateSchema = async () => {
console.log('Validating schema...');
};
const main = async () => {
await validateSchema();
};
"`,
});
分析ツールを作成する
Skill({
skill: 'tool-creator',
args: `--name complexity-analyzer --category analysis --implementation "
const analyzeComplexity = async (filePath) => {
console.log('Analyzing complexity for:', filePath);
};
const main = async () => {
const [,, filePath] = process.argv;
await analyzeComplexity(filePath);
};
"`,
});
関連スキル
skill-creator- ツールを呼び出すスキルを作成しますhook-creator- ツールの実行をラップする前処理/後処理フックを作成します
鉄則
- すべての成果物には対応するスキーマが必須です — スキーマのないツールには契約がなく、利用側は入出力を検証できません。ツールの CLI インターフェース用の JSON スキーマを
.claude/schemas/に作成してください。 - すべての成果物は、少なくとも 1 つのエージェントに必ず紐付けてください — どのエージェントにも割り当てられていないツールは呼び出されません。各エージェントの
tools:フロントマター配列を使って、該当するエージェントにツールを割り当ててください。 - すべての成果物を必ずカタログに登録してください —
tool-catalog.mdにないツールは、検索時に見つかりません。正しいカテゴリの.claude/context/artifacts/catalogs/tool-catalog.mdに項目を追加してください。 - すべての成果物は、必ず統合検証に合格させてください — 作成完了とする前に、
node .claude/tools/cli/validate-integration.cjs <tool-path>を実行してください。検証に失敗するツールには、参照の破損があります。 - すべての成果物について、必ずメモリに記録してください — ツールの作成パターン、決定事項、問題があれば、それらを
.claude/context/memory/(learnings.md、decisions.md、issues.md)に記録してください。メモリがなければ、その作成は今後のセッションから見えません。
メモリプロトコル(必須)
開始前:
.claude/context/memory/learnings.md を読みます
完了後:
- 新しいツールのパターン →
.claude/context/memory/learnings.md - ツール作成時の問題 →
.claude/context/memory/issues.md - カテゴリの決定事項 →
.claude/context/memory/decisions.md
中断を前提にしてください。メモリに記録されていなければ、実施されていないものとみなします。
相互参照:クリエイターエコシステム
このスキルはクリエイターエコシステムの一部です。調査で不足が明らかになった場合は、適切な関連クリエイターを呼び出してください。
| 発見された不足 | 必要な成果物 | 呼び出すクリエイター | タイミング |
|---|---|---|---|
| ドメイン知識に再利用可能なスキルが必要 | スキル | Skill({ skill: 'skill-creator' }) | 不足がスキル全体の領域に及ぶ場合 |
| 既存スキルのカバー範囲が不完全 | スキルの更新 | Skill({ skill: 'skill-updater' }) | 関連するスキルはあるが、不完全な場合 |
| 機能を担う専用エージェントが必要 | エージェント | Skill({ skill: 'agent-creator' }) | 機能を担うエージェントが必要な場合 |
| 既存エージェントに機能の更新が必要 | エージェントの更新 | Skill({ skill: 'agent-updater' }) | 関連するエージェントはあるが、不完全な場合 |
| ドメインにコード/プロジェクトのひな形が必要 | テンプレート | Skill({ skill: 'template-creator' }) | 再利用可能なコードパターンが必要な場合 |
| 振る舞いに実行前/実行後のガードが必要 | フック | Skill({ skill: 'hook-creator' }) | 強制適用する振る舞いが必要な場合 |
| プロセスに複数フェーズのオーケストレーションが必要 | ワークフロー | Skill({ skill: 'workflow-creator' }) | 複数ステップの調整が必要な場合 |
| 成果物に構造化された I/O 検証が必要 | スキーマ | Skill({ skill: 'schema-creator' }) | 成果物の I/O 用 JSON スキーマが必要な場合 |
| ユーザーとのやり取りにスラッシュコマンドが必要 | コマンド | Skill({ skill: 'command-creator' }) | ユーザー向けのショートカットが必要な場合 |
| 繰り返し使うロジックに再利用可能な CLI ツールが必要 | ツール | Skill({ skill: 'tool-creator' }) | CLI ユーティリティが必要な場合 |
| 限定的/単一の成果物だけに必要な機能 | インライン | この成果物内だけに記述 | 一般化するには具体的すぎる場合 |
エコシステム整合性契約(必須)
この作成スキルは、連携する作成エコシステムの一部です。ここで作成する成果物は、関連する次の作成者と整合し、検証される必要があります。
- 所有権と実行パスについては
agent-creator - 機能のパッケージ化と割り当てについては
skill-creator - 実行可能な自動化の仕組みについては
tool-creator - 適用とガードレールについては
hook-creator - ポリシーと静的チェックについては
rule-creatorとsemgrep-rule-creator - 標準化されたひな形については
template-creator - オーケストレーションとフェーズのゲーティングについては
workflow-creator - ユーザー/オペレーター向けコマンド UX については
command-creator
作成者間のハンドシェイク(必須)
完了前に、関連するすべてのハンドシェイクを検証してください。
- 成果物のルートが
.claude/CLAUDE.mdおよび関連するルーティングドキュメントに存在すること。 - ディスカバリー/レジストリーのエントリーが更新されていること(該当する場合、カタログ/インデックス/レジストリー)。
- 関連成果物が作成されているか、理由を明記して明示的に免除されていること。
- 作成した成果物に対して
validate-integration.cjsが成功すること。 - スキルのメタデータを変更した場合、スキルインデックスが再生成されていること。
調査ゲート(Exa + arXiv — 両方必須)
新しいパターン、テンプレート、ワークフローを導入する場合、調査は必須です。
- 実装やエコシステムのパターンについて Exa を使用します。
mcp__Exa__web_search_exa({ query: '<topic> 2025 best practices' })mcp__Exa__get_code_context_exa({ query: '<topic> implementation examples' })
- 学術研究について arXiv を検索します(AI/ML、エージェント、評価、オーケストレーション、メモリ/RAG、セキュリティに関して必須)。
- Exa 経由:
mcp__Exa__web_search_exa({ query: 'site:arxiv.org <topic> 2024 2025' }) - 直接 API:
WebFetch({ url: 'https://arxiv.org/search/?query=<topic>&searchtype=all&start=0' })
- Exa 経由:
- 成果物のリファレンス/ドキュメントに、判断、制約、対象外事項を記録します。
- 更新は最小限にとどめ、過剰な設計は避けます。
トピックに AI エージェント、LLM 評価、オーケストレーション、メモリ/RAG、セキュリティ、静的解析、または新たな手法が含まれる場合、arXiv の調査は必須であり、代替手段ではありません。
リグレッションに安全なリリース
- 動作を変更する場合は、厳密な RED → GREEN → REFACTOR に従います。
- 変更したモジュールを対象にテストを実行します。
- 変更したファイルに対してリンター/フォーマッターを実行します。
- コミットは関心事ごとに分けます(ロジック/ドキュメント/生成された成果物)。
任意:評価品質ゲート
共有評価フレームワークを実行して、ツールの品質を検証します。
node .claude/skills/skill-creator/scripts/eval-runner.cjs --skill tool-creator
ツール成果物に対するグレーダーのアサーション:
--helpの応答:ツールが--help(または-h)に応答し、必須/任意の引数と少なくとも 1 つの実行例を含む使用方法の概要を表示すること- 子プロセスの
shell: false:child_process.spawnまたはexecFileの呼び出しでは、配列引数とshell: falseを使用すること(SE-security ルールに従い、shell: trueは使用しない) - 入力不足への適切な対応:必須引数がない場合、ツールが人間に分かるエラーメッセージを表示してゼロ以外のコードで終了すること。未処理の例外やクラッシュダンプを発生させないこと
- カタログエントリーの存在:ツールが
.claude/context/artifacts/catalogs/tool-catalog.mdに、カテゴリ、説明、配線ステータスとともに登録されていること - タイムアウトの安全性:長時間実行される操作に明示的なタイムアウトが設定されていること。入力不足時に無限ループが発生しないこと
評価プロトコルとグレーダー/アナライザーエージェントの使用方法については .claude/skills/skill-creator/EVAL_WORKFLOW.md を参照してください。