mcpField
S
schema-creator

schema-creator

github.com/oimiragieo開発4459 回インストール17 週間前に更新
リポジトリ

schema-creator について

schema-creatorは、Claude Code Enterprise Framework向けにJSON Schemaを作成するスキルです。スキル、エージェント、フック、ワークフロー、独自データを対象とし、事前調査や重複確認、登録、連携検証を含む手順を扱います。

主な機能

  1. 01複数種類のJSON Schemaを作成
  2. 02スキーマの配置先と項目規則を定義
  3. 03作成前の調査と重複確認
  4. 04スキーマ登録とバリデーター更新
  5. 05連携とシステムへの影響を検証

活用シーン

  1. 01スキルの入力と出力を検証
  2. 02エージェント、フック、ワークフロー定義の確認
  3. 03プロジェクト固有データの検証を構築

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oimiragieo/agent-studio --skill schema-creator

インストール後、Claude Code で/schema-creatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

commands/
schema-creator.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
schema-creator.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
schema-templates.cjs
templates/
implementation-template.md

詳細

スキーマ作成スキル

警告:.claude/schemas/ に直接書き込まないでください

スキーマファイルは unified-creator-guard.cjs(CLAUDE.md のゲート 4)によって保護されています。 直接書き込むと、作成後の手順(カタログの更新、利用者の割り当て、統合の検証)がスキップされます。 スキーマを作成する際は、必ず schema-creator スキルのワークフローを使用してください。 直接書き込むと、どのバリデーターやエージェントからも検出できない「不可視のアーティファクト」が作成されます。

Claude Code Enterprise Framework 用の JSON Schema 検証ファイルを作成します。スキーマにより、スキル、エージェント、フック、ワークフロー、カスタムデータ構造全体で、型安全性、入力検証、構造の一貫性を確保できます。

システム影響分析(重要:省略しないでください)

スキーマを作成した後は、必ず以下を実施してください。

  1. 適切な場所(グローバルまたはスキルローカル)に登録します
  2. 新しいスキーマを使用するよう、関連するバリデーターを更新します
  3. グローバルに重要な場合は、CLAUDE.md にスキーマへの参照を追加します

検証:

# Verify schema is valid JSON
node -e "JSON.parse(require('fs').readFileSync('.claude/schemas/<schema-name>.json'))"

# Check schema exists
ls .claude/schemas/<schema-name>.json || ls .claude/skills/<skill>/schemas/<schema-name>.json

理由:無効なスキーマは、気づかれないまま検証に失敗します。登録されていないスキーマが使われることはありません。


目的

スキーマは、以下を構造的に検証します。

  1. スキルの入力/出力 - スキルとの間で受け渡されるデータを検証します
  2. エージェント定義 - エージェントの YAML フロントマターと構造を検証します
  3. フック定義 - フックの設定と登録を検証します
  4. ワークフロー定義 - ワークフローのステップと設定を検証します
  5. カスタムデータ構造 - プロジェクト固有のデータ形式を検証します

スキーマの種類

種類場所目的
スキル入力.claude/skills/{name}/schemas/input.schema.jsonスキル呼び出しの入力を検証します
スキル出力.claude/skills/{name}/schemas/output.schema.jsonスキル実行の出力を検証します
エージェント定義.claude/schemas/agent-definition.schema.jsonエージェントの YAML フロントマターを検証します
スキル定義.claude/schemas/skill-definition.schema.jsonスキルの YAML フロントマターを検証します
フック定義.claude/schemas/hook-definition.schema.jsonフックの設定を検証します
ワークフロー定義.claude/schemas/workflow-definition.schema.jsonワークフローの構造を検証します
カスタム.claude/schemas/{name}.schema.jsonプロジェクト固有の検証
参照スキーマ

正規の参照スキーマとして .claude/schemas/agent-definition.schema.json を使用してください。

スキーマを確定する前に、参照スキーマと比較してください。

  • JSON Schema draft-07 以降(draft-2020-12 を推奨)に準拠している
  • $schema、$id、title、description、type の各フィールドがある
  • 必須フィールドが "required" 配列に記載されている
  • すべてのプロパティに description フィールドがある
  • 役立つ箇所に例が含まれている
  • 適切なパターンを使用している(ケバブケースの名前、セマンティックバージョニング)
CLAUDE.md への登録(必須)

スキーマの作成後、新しい機能を可能にする場合は CLAUDE.md を更新してください。

  1. 新しいアーティファクト種別のスキーマ - 関連するセクションに追加します(エージェントはセクション 3、スキルはセクション 8.5)
  2. エージェント/スキル/ワークフローの検証スキーマ - セクション 4(自己進化)に記載します
  3. フレームワーク全体のスキーマ - このスキルの既存スキーマ参照テーブルに追加します

検証:

grep "schema-name" .claude/CLAUDE.md || echo "WARNING: Schema not registered in CLAUDE.md"

ブロッキング:ドキュメントに記載されていないスキーマは、ほかのエージェントに見つけられない可能性があります。

ワークフロー

ステップ 0:調査内容の統合(必須 — 常に最初に実施)

スキーマを作成する前に、必ず research-synthesis を実行してください:

Skill({ skill: 'research-synthesis' });

調査要件:

  • JSON Schema のベストプラクティスについて、Exa で最低 3 回検索する
  • .claude/schemas/ にある既存のスキーマを確認し、パターンを把握する
  • .claude/context/artifacts/catalogs/schema-catalog.md のスキーマカタログを確認する
  • 参考にできる類似スキーマを特定する
  • 作業を進める前に調査結果を記録する

理由: research-synthesis によって、スキーマが業界のベストプラクティスに従い、既存のフレームワークスキーマとの一貫性を保てます。


ステップ 1:存在確認と updater への委任(必須 — 2 番目に実施)

スキーマファイルを作成する前に、すでに存在するかどうかを確認してください:

  1. スキーマがすでに存在するか確認する:

    test -f .claude/schemas/<schema-name>.json && echo "EXISTS" || echo "NEW"
    
  2. スキーマが存在する場合:

    • 作成を続行しないでください

    • 代わりに artifact-updater ワークフローを実行してください:

      Skill({
        skill: 'artifact-updater',
        args: {
          name: '<schema-name>',
          changes: '<description of requested changes>',
          justification: 'Update requested via schema-creator',
        },
      });
      
    • updater の結果を返して終了してください

  3. スキーマが新規の場合:

    • 以下のステップ 1.1 に進む

ステップ 1.1:スマート重複検出(必須)

作成を進める前に、3 層の重複チェックを実行してください:

const { checkDuplicate } = require('.claude/lib/creation/duplicate-detector.cjs');
const result = checkDuplicate({
  artifactType: 'schema',
  name: proposedName,
  description: proposedDescription,
  keywords: proposedKeywords || [],
});

結果に応じて対応してください:

  • EXACT_MATCH:作成を中止してください。代わりに schema-updater スキルに引き継ぎます:Skill({ skill: 'schema-updater' })
  • REGISTRY_MATCH:ユーザーに警告します — アーティファクトは登録されていますが、ファイルがない可能性があります。作成する前に調査してください。ユーザーに確認を求めます。
  • SIMILAR_FOUND:候補をスコアとともに表示します。ユーザーに「類似するアーティファクトが見つかりました。新規作成を続けますか、それとも既存のものを更新しますか?」と尋ねます。
  • NO_MATCH:次のステップに進みます。

例外: ユーザーが --force を明示的に指定した場合は、このチェック全体を省略してください。


ステップ 1.5:関連アーティファクトの確認

作成を進める前に、エコシステム内の関連アーティファクトを確認してください:

  1. .claude/lib/creators/companion-check.cjs の companion-check.cjs を使用する
  2. checkCompanions("schema", "{schema-name}") を呼び出して関連アーティファクトを特定する
  3. 関連アーティファクトのチェックリストを確認し、必須または推奨される関連アーティファクトのうち、不足しているものを記録する
  4. このアーティファクトの完成後に、不足している関連アーティファクトを作成または確認する計画を立てる
  5. 作成後の統合メモに、関連アーティファクトの確認結果を記載する

このステップは情報提供のみを目的としており(作成を妨げるものではありません)、アーティファクトのエコシステム全体を考慮するためのものです。


ステップ 2:スキーマ要件の収集

スキーマを作成する前に、以下を把握してください:

1. WHAT data structure are you validating?
   - Skill input/output
   - Agent/skill/hook/workflow definition
   - Custom data format

2. WHERE should the schema live?
   - Global: .claude/schemas/ (framework-wide)
   - Local: .claude/skills/{skill}/schemas/ (skill-specific)

3. WHAT are the required vs optional fields?
   - Required: Must be present for valid data
   - Optional: Enhance but not required

4. WHAT are the validation rules?
   - Types (string, number, boolean, object, array)
   - Patterns (regex for strings)
   - Ranges (min/max for numbers)
   - Enums (allowed values)
   - Lengths (min/max for strings/arrays)
ステップ 3:スキーマの種類と配置場所の決定
作成対象スキーマの配置場所例
新しいスキルの入力.claude/skills/{skill}/schemas/input.schema.jsontdd スキルのパラメーター
新しいスキルの出力.claude/skills/{skill}/schemas/output.schema.jsontdd スキルの結果
グローバル定義.claude/schemas/{name}.schema.jsontest-results.schema.json
再利用可能なコンポーネント.claude/schemas/components/{name}.schema.jsontask-status.schema.json
ステップ 4:データ構造の分析

既存のデータを調べるか、想定される構造を指定してください:

// Example: Analyzing skill output structure
const exampleOutput = {
  success: true,
  result: {
    filesCreated: ['src/test.ts'],
    testsGenerated: 5,
    coverage: 85.2,
  },
  metadata: {
    duration: 1234,
    skill: 'test-generator',
  },
};

// Extract schema from example:
// - success: boolean (required)
// - result: object (optional)
// - metadata: object (optional)
ステップ 5:JSON Schema の生成

スキーマテンプレートを使用し、必要に応じてカスタマイズしてください:

{
  "$schema": "https://json-schema.org/draft-07/schema#",
  "$id": "https://claude.ai/schemas/{schema-name}",
  "title": "{Schema Title}",
  "description": "{What this schema validates}",
  "type": "object",
  "required": ["field1", "field2"],
  "properties": {
    "field1": {
      "type": "string",
      "description": "Description of field1",
      "minLength": 1,
      "maxLength": 100
    },
    "field2": {
      "type": "number",
      "description": "Description of field2",
      "minimum": 0,
      "maximum": 100
    },
    "optionalField": {
      "type": "boolean",
      "description": "Optional boolean field",
      "default": false
    }
  },
  "additionalProperties": false
}
ステップ 6:説明と例の追加

すべてのプロパティに説明を付ける必要があります:

{
  "properties": {
    "name": {
      "type": "string",
      "description": "The unique identifier for the resource in lowercase-with-hyphens format",
      "pattern": "^[a-z][a-z0-9-]*$",
      "examples": ["my-skill", "test-generator", "code-reviewer"]
    }
  }
}

トップレベルの例を追加してください:

{
  "examples": [
    {
      "name": "example-skill",
      "description": "An example skill for demonstration",
      "version": "1.0.0"
    }
  ]
}
ステップ 7:検証テストの作成

スキーマが正しく動作することを確認するため、簡単なテストを作成してください:

// validate-schema-test.cjs
const Ajv = require('ajv');
const schema = require('./.claude/schemas/my-schema.schema.json');

const ajv = new Ajv({ allErrors: true });
const validate = ajv.compile(schema);

// Test valid data
const validData = {
  /* valid example */
};
console.log('Valid:', validate(validData));

// Test invalid data
const invalidData = {
  /* invalid example */
};
console.log('Invalid:', validate(invalidData));
console.log('Errors:', validate.errors);
ステップ 8:作成後のスキーマ登録(フェーズ 1 の統合)

このステップは非常に重要です。 スキーマ成果物を作成した後、必ずスキーマ検出システムに登録してください。

フェーズ 1 の背景: フェーズ 1 では、検証用のスキーマを検出してカタログ化します。登録されていないスキーマは、データ検証に必要とするバリデーターやその他のシステムから認識されません。

スキーマファイルの作成と検証が完了したら:

  1. 適切な場所にスキーマレジストリーのエントリーを作成/更新します:

    レジストリーが存在しない場合は、.claude/context/artifacts/schema-catalog.md を作成します:

    {
      "schemas": [
        {
          "name": "{schema-name}",
          "id": "{schema-name}",
          "$id": "https://claude.ai/schemas/{schema-name}",
          "type": "{input|output|definition|global|component}",
          "description": "{What this schema validates}",
          "version": "1.0.0",
          "filePath": ".claude/schemas/{schema-name}.schema.json",
          "validatesFor": ["{artifact-type-1}", "{artifact-type-2}"],
          "relatedSchemas": [],
          "usedBy": ["{validator-hook}", "{creator-skill}"]
        }
      ]
    }
    
  2. バリデーターに登録します:

    このスキーマを使用する必要がある検証フックを更新します:

    • 関連するバリデーターがないか .claude/hooks/validation/ を確認します
    • スキーマが必要なバリデーターの schemaMap に追加します

    例:

    const schemaMap = {
      '.claude/agents/': '.claude/schemas/agent-definition.schema.json',
      '.claude/schemas/{schema-name}.schema.json': require('./.claude/schemas/{schema-name}.schema.json'),
    };
    
  3. .claude/context/artifacts/catalogs/schema-catalog.md に記載します:

    スキーマカタログにエントリーを追加します:

    ### {Schema Title} (`{schema-name}.schema.json`)
    
    **$id:** `https://claude.ai/schemas/{schema-name}`
    
    **Purpose:** {Detailed description of what this schema validates}
    
    **Used by:**
    
    - {Validator/hook 1}
    - {Creator skill 1}
    
    **Root properties:**
    
    - {property-1}: {description}
    - {property-2}: {description}
    
    **Example valid data:**
    
    ```json
    {
      "example": "value"
    }
    ```
    

    必須フィールド: {必須フィールドを列挙します}

    検証: データがこのスキーマに適合する場合、{検証内容を説明します}

  4. スキーマによって新しい機能が可能になる場合は、.claude/CLAUDE.md を更新します:

    このスキーマが新しい成果物タイプや検証をサポートする場合:

    • 関連するセクションに追加します(作成者スキーマの場合はセクション 4.1、schemas ディレクトリーの場合はセクション 9.7)
    • このスキルのステップ 7 にある「既存スキーマのリファレンス」テーブルに追加します

    エントリーの例:

    | `{schema-name}` | `.claude/schemas/` | {Purpose} |
    
  5. メモリーを更新します:

    .claude/context/memory/learnings.md に追記します:

    ## Schema: {schema-name}
    
    - **Type:** {input|output|definition|global|component}
    - **Validates:** {What artifact/data type}
    - **Purpose:** {Detailed purpose}
    - **$id:** https://claude.ai/schemas/{schema-name}
    - **Validators:** {Which hooks/validators use it}
    - **Related Schemas:** {Any $ref references}
    

重要な理由: スキーマを登録しないと:

  • バリデーターがスキーマを検出して使用できません
  • システム全体でデータ検証が行われません
  • 無効な成果物が検出されずに作成されます
  • 「不可視の成果物」というパターンが発生します

フェーズ 1 との統合: スキーマレジストリーはフェーズ 1 の検出メカニズムです。これにより、バリデーターはシステム全体で一貫してスキーマを検出し、適用できます。

ステップ 9:システムへの影響分析(必須)

スキーマの作成完了とする前に、以下のすべての項目を確認してください:

[ ] Schema file created in correct location
[ ] Schema is valid JSON (parseable)
[ ] Schema has $schema, $id, title, description
[ ] All required fields defined in "required" array
[ ] All properties have descriptions
[ ] Examples included for complex schemas
[ ] Schema registry entry created (Step 7)
[ ] Validators registered with schema (if applicable)
[ ] SCHEMA_CATALOG.md updated (Step 7)
[ ] Related documentation updated

確認コマンド:

# Validate JSON syntax
node -e "JSON.parse(require('fs').readFileSync('.claude/schemas/{name}.schema.json'))"

# Check required fields
node -e "const s = require('.claude/schemas/{name}.schema.json'); console.log('title:', s.title); console.log('description:', s.description);"

# Check schema registry
grep "{schema-name}" .claude/context/artifacts/schema-catalog.md

# List all schemas
ls -la .claude/schemas/*.schema.json

完了を阻止する条件:いずれかの項目が失敗した場合、スキーマの作成は未完了です。すべての項目に合格する必要があります。

システムへの影響分析(必須)

スキーマの作成後、以下をすべて完了してください:

1. CLAUDE.md の更新
  • スキーマによって新しい機能が可能になる場合は、適切なセクションに追加します
  • エージェント関連のスキーマはセクション 3
  • 作成者エコシステムのスキーマはセクション 4.1
  • スキル関連のスキーマはセクション 8.5
2. バリデーターとの統合
  • フックで新しいスキーマに対する検証が必要か確認します
  • スキーマが検証に影響する場合は .claude/hooks/ を更新します
  • 関連するバリデーターの schemaMap に追加します
3. 関連スキーマ
  • 必要に応じて関連スキーマを更新します($ref リンク)
  • 循環依存がないか確認します
  • $id の値が一意であることを確認します
4. ドキュメント
  • スキーマが新しいパターンを説明する場合は .claude/docs/ を更新します
  • 「既存スキーマのリファレンス」テーブルにスキーマを追加します
  • 新しいスキル用のスキーマである場合は、skill-catalog.md を更新します

確認チェックリスト:

# Check CLAUDE.md registration
grep "{schema-name}" .claude/CLAUDE.md

# Check for $ref usage in other schemas
grep -r "{schema-name}" .claude/schemas/

# Verify no duplicate $id
grep -h "\$id" .claude/schemas/*.json | sort | uniq -d

完了を阻止する条件:影響分析のすべての項目を確認するまで、スキーマの作成は完了ではありません。

スキーマテンプレート

基本的な入力スキーマ
{
  "$schema": "https://json-schema.org/draft-07/schema#",
  "$id": "https://claude.ai/schemas/skill-name-input",
  "title": "Skill Name Input Schema",
  "description": "Input validation schema for skill-name skill",
  "type": "object",
  "required": [],
  "properties": {
    "target": {
      "type": "string",
      "description": "Target file or directory path"
    },
    "options": {
      "type": "object",
      "description": "Optional configuration",
      "properties": {
        "verbose": {
          "type": "boolean",
          "default": false
        }
      }
    }
  },
  "additionalProperties": false
}
基本的な出力スキーマ
{
  "$schema": "https://json-schema.org/draft-07/schema#",
  "$id": "https://claude.ai/schemas/skill-name-output",
  "title": "Skill Name Output Schema",
  "description": "Output validation schema for skill-name skill",
  "type": "object",
  "required": ["success"],
  "properties": {
    "success": {
      "type": "boolean",
      "description": "Whether the skill executed successfully"
    },
    "result": {
      "type": "object",
      "description": "The skill execution result",
      "additionalProperties": true
    },
    "error": {
      "type": "string",
      "description": "Error message if execution failed"
    }
  },
  "additionalProperties": false
}
定義スキーマ(エージェント、スキル、フック用)
{
  "$schema": "https://json-schema.org/draft-07/schema#",
  "$id": "https://claude.ai/schemas/entity-definition",
  "title": "Entity Definition Schema",
  "description": "Schema for validating entity definition files",
  "type": "object",
  "required": ["name", "description"],
  "properties": {
    "name": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]*$",
      "description": "Entity name in lowercase-with-hyphens format"
    },
    "description": {
      "type": "string",
      "minLength": 20,
      "maxLength": 500,
      "description": "Clear description of the entity purpose"
    },
    "version": {
      "type": "string",
      "pattern": "^\\d+\\.\\d+(\\.\\d+)?$",
      "default": "1.0.0",
      "description": "Semantic version number"
    }
  },
  "additionalProperties": true,
  "examples": [
    {
      "name": "my-entity",
      "description": "A sample entity for demonstration purposes",
      "version": "1.0.0"
    }
  ]
}

一般的な JSON Schema パターン

文字列パターン
{
  "kebab-case": {
    "type": "string",
    "pattern": "^[a-z][a-z0-9-]*$"
  },
  "semver": {
    "type": "string",
    "pattern": "^\\d+\\.\\d+(\\.\\d+)?$"
  },
  "file-path": {
    "type": "string",
    "pattern": "^[\\w./-]+$"
  },
  "email": {
    "type": "string",
    "format": "email"
  },
  "url": {
    "type": "string",
    "format": "uri"
  }
}
列挙型パターン
{
  "model": {
    "type": "string",
    "enum": ["sonnet", "opus", "haiku", "inherit"]
  },
  "priority": {
    "type": "string",
    "enum": ["lowest", "low", "medium", "high", "highest"]
  },
  "status": {
    "type": "string",
    "enum": ["pending", "in_progress", "completed", "failed", "blocked"]
  }
}
配列パターン
{
  "tools": {
    "type": "array",
    "items": { "type": "string" },
    "minItems": 1,
    "uniqueItems": true,
    "description": "List of available tools"
  },
  "skills": {
    "type": "array",
    "items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
    "description": "List of skill names"
  }
}
オブジェクトパターン
{
  "config": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "enabled": { "type": "boolean", "default": true },
      "timeout": { "type": "integer", "minimum": 0 }
    }
  },
  "metadata": {
    "type": "object",
    "additionalProperties": true,
    "description": "Arbitrary metadata"
  }
}
条件付きパターン
{
  "if": {
    "properties": {
      "type": { "const": "mcp" }
    }
  },
  "then": {
    "required": ["server", "command"]
  },
  "else": {
    "required": ["handler"]
  }
}
再利用性を高める $ref の使用
{
  "$defs": {
    "namePattern": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]*$",
      "description": "Lowercase with hyphens"
    },
    "toolsList": {
      "type": "array",
      "items": { "type": "string" },
      "minItems": 1
    }
  },
  "properties": {
    "name": { "$ref": "#/$defs/namePattern" },
    "tools": { "$ref": "#/$defs/toolsList" }
  }
}

CLI の使用方法

テンプレートからスキーマを作成する
# Create skill input schema
node .claude/skills/schema-creator/scripts/main.cjs \
  --type input \
  --skill my-skill

# Create skill output schema
node .claude/skills/schema-creator/scripts/main.cjs \
  --type output \
  --skill my-skill

# Create global schema
node .claude/skills/schema-creator/scripts/main.cjs \
  --type global \
  --name my-data-format

# Create definition schema
node .claude/skills/schema-creator/scripts/main.cjs \
  --type definition \
  --entity workflow
スキーマを検証する
# Validate a schema file
node .claude/skills/schema-creator/scripts/main.cjs \
  --validate .claude/schemas/my-schema.schema.json

# Validate data against schema
node .claude/skills/schema-creator/scripts/main.cjs \
  --validate-data data.json \
  --schema .claude/schemas/my-schema.schema.json
例からスキーマを生成する
# Generate schema from JSON example
node .claude/skills/schema-creator/scripts/main.cjs \
  --from-example example.json \
  --output .claude/schemas/generated.schema.json

バリデーターとの統合

Ajv を使用したランタイム検証
const Ajv = require('ajv');
const addFormats = require('ajv-formats');

const ajv = new Ajv({ allErrors: true });
addFormats(ajv);

// Load and compile schema
const schema = require('./.claude/schemas/skill-definition.schema.json');
const validate = ajv.compile(schema);

// Validate data
function validateSkillDefinition(data) {
  const valid = validate(data);
  if (!valid) {
    return {
      valid: false,
      errors: validate.errors.map(e => `${e.instancePath} ${e.message}`),
    };
  }
  return { valid: true };
}
コミット前の検証フック
// .claude/hooks/schema-validator.js
const fs = require('fs');
const path = require('path');
const Ajv = require('ajv');

const schemaMap = {
  '.claude/agents/': '.claude/schemas/agent-definition.schema.json',
  '.claude/skills/': '.claude/schemas/skill-definition.schema.json',
  '.claude/hooks/': '.claude/schemas/hook-definition.schema.json',
};

function validateFile(filePath) {
  // Find matching schema
  for (const [pattern, schemaPath] of Object.entries(schemaMap)) {
    if (filePath.includes(pattern)) {
      const schema = JSON.parse(fs.readFileSync(schemaPath));
      const ajv = new Ajv();
      const validate = ajv.compile(schema);

      // Parse and validate file
      // ...
    }
  }
}

ワークフローとの統合

このスキルは、統合されたアーティファクトのライフサイクルの一部です。完全なマルチエージェントオーケストレーションについては、以下を参照してください。

ルーターの判断: .claude/workflows/core/router-decision.md

  • ルーターがこのスキルのアーティファクトを検出して呼び出す方法

アーティファクトのライフサイクル: .claude/workflows/core/skill-lifecycle.md

  • 検出、作成、更新、非推奨化のフェーズ
  • バージョン管理とレジストリの更新
  • CLAUDE.md の統合要件

外部統合: .claude/workflows/core/external-integration.md

  • 外部アーティファクトの安全な統合
  • セキュリティレビューと検証のフェーズ

相互参照:クリエーターエコシステム

このスキルはクリエーターエコシステムの一部です。関連アーティファクトには、対応するクリエーターを使用してください。

発見された不足必要なアーティファクト呼び出すクリエータータイミング
ドメイン知識に再利用可能なスキルが必要skillSkill({ skill: 'skill-creator' })不足がスキル全体の領域に及ぶ場合
既存スキルのカバー範囲が不十分skill updateSkill({ skill: 'skill-updater' })対応するスキルはあるが、不完全な場合
機能に専用エージェントが必要agentSkill({ skill: 'agent-creator' })機能を担当するエージェントが必要な場合
既存エージェントの機能更新が必要agent updateSkill({ skill: 'agent-updater' })対応するエージェントはあるが、不完全な場合
ドメインにコード/プロジェクトのひな形が必要templateSkill({ skill: 'template-creator' })再利用可能なコードパターンが必要な場合
動作に実行前後のガードが必要hookSkill({ skill: 'hook-creator' })強制適用する動作が必要な場合
プロセスに複数フェーズのオーケストレーションが必要workflowSkill({ skill: 'workflow-creator' })複数ステップの調整が必要な場合
アーティファクトに構造化 I/O の検証が必要schemaSkill({ skill: 'schema-creator' })アーティファクトの I/O 用 JSON スキーマが必要な場合
ユーザーとのやり取りにスラッシュコマンドが必要commandSkill({ skill: 'command-creator' })ユーザー向けのショートカットが必要な場合
繰り返し使用するロジックに再利用可能な CLI ツールが必要toolSkill({ skill: 'tool-creator' })CLI ユーティリティが必要な場合
限定的/単一アーティファクトのみの機能inlineこのアーティファクト内にのみ記述汎用化するには特化しすぎている場合
統合チェーン
[SKILL-CREATOR] Creating new skill with validation...
  -> Calls schema-creator for input/output schemas
  -> Schemas created in .claude/skills/{skill}/schemas/

[AGENT-CREATOR] Creating agent with strict validation...
  -> Agent uses agent-definition.schema.json for self-validation
  -> Agent validates inputs using custom schemas

[WORKFLOW-CREATOR] Creating workflow with typed steps...
  -> Each step output validates against schema
  -> Workflow uses workflow-definition.schema.json

既存スキーマの参照

有効なスキーマの合計: 27(25 個はアーカイブ済みです。.claude/schemas/_archive/ を参照してください) 実際に検証されるスキーマ(Ajv): 実行時検証を行う 8 個のスキーマ ドキュメント参照: 構造テンプレートとして使用する 16 個のスキーマ 任意の検証: パスは定義されているものの、検証を省略する 3 個のスキーマ

完全なカタログ: .claude/context/artifacts/catalogs/schema-catalog.md

カテゴリ別の有効なスキーマ
エージェントスキーマ(5)
スキーマ接続状況利用者
agent-capability-card接続済みgenerate-agent-registry
agent-config接続済みagent-config.cjs
agent-definition接続済みagent-parser.cjs
agent-identity接続済みagent-parser.cjs
agent-spawn-paramsドキュメントのみSpawn プロンプトの参照
スキーマ(4)
スキーマ接続状況利用者
skill-definitionWIREDskill-creator/create.cjs
skill-diagram-generator-outputSOFT-WIREDdiagram-generator skill
skill-repo-rag-outputSOFT-WIREDrepo-rag skill
skill-test-generator-outputSOFT-WIREDtest-generator skill
ワークフローとフックスキーマ(2)
スキーマ接続状況利用者
workflow-definitionDOCS ONLYworkflow-creator スクリプトなし
hook-definitionDOCS ONLYhook-creator スクリプトなし
進化とプロジェクトのスキーマ(2)
スキーマ接続状況利用者
evolution-stateWIREDself-healing/validator.cjs
track-metadataDOCS ONLYTaskCreate メタデータフィールド
ツールとテンプレートのスキーマ(3)
スキーマ接続状況利用者
tool-manifestWIREDgenerate-tool-manifest.cjs
presetsWIREDspawn/prompt-assembler.cjs
adr-templateDOCS ONLYADR ドキュメント構造
計画スキーマ(5)
スキーマ接続状況利用者
planDOCS ONLY計画フェーズの参照
implementation-planDOCS ONLY実装計画
phase-modelsDOCS ONLYフェーズ計画の参照
product_requirementsDOCS ONLY要件の収集
project_briefDOCS ONLYプロジェクトの初期化
テストスキーマ(2)
スキーマ接続状況利用者
test_planDOCS ONLYテスト計画の参照
test-resultsDOCS ONLYテスト実行の出力
アーキテクチャスキーマ(3)
スキーマ接続状況利用者
specification-templateDOCS ONLY仕様書
system_architectureDOCS ONLYアーキテクチャのドキュメント
ux_specDOCS ONLYUX 仕様書
プロジェクトスキーマ(1)
スキーマ接続状況利用者
project-analysisDOCS ONLYプロジェクト分析の出力

注: 特に指定がない限り、すべてのスキーマは .claude/schemas/ にあります。利用者、検証方法、統合状況の詳細については、スキーマカタログを参照してください。

ファイル配置と標準

出力先のルール

このスキルの出力先:.claude/schemas/

スキル固有のスキーマ:.claude/skills/<skill-name>/schemas/

スキーマの命名規則:

  • グローバルスキーマ:<name>.schema.json
  • スキル入力:input.schema.json
  • スキル出力:output.schema.json
  • コンポーネント:components/<name>.schema.json
必須の参照資料
  • ファイル配置:.claude/docs/FILE_PLACEMENT_RULES.md を参照
  • 開発者ワークフロー:.claude/docs/DEVELOPER_WORKFLOW.md を参照
  • アーティファクトの命名:.claude/docs/ARTIFACT_NAMING.md を参照
  • ワークスペースの規約:.claude/rules/workspace-conventions.md を参照(出力の配置、命名、来歴)
適用

ファイル配置は file-placement-guard.cjs フックによって適用されます。 本番モードでは、無効な配置はブロックされます。


メモリプロトコル(必須)

開始前:

cat .claude/context/memory/learnings.md

以下を確認してください:

  • 以前に作成されたスキーマ
  • 既知の検証上の問題
  • スキーマの命名規則

完了後:

  • 新しいスキーマを作成した場合 -> .claude/context/memory/learnings.md に追記します
  • 検証上の問題が見つかった場合 -> .claude/context/memory/issues.md に追記します
  • アーキテクチャ上の決定を行った場合 -> .claude/context/memory/decisions.md に追記します

中断を想定してください。コンテキストがリセットされることがあります。メモリに記録されていなければ、起きていないのと同じです。

スキーマ作成における絶対原則

以下のルールは厳守してください。違反すると検証に失敗します。

1. NO SCHEMA WITHOUT $schema FIELD
   - Every schema MUST declare its JSON Schema version
   - Use draft-07 or later: "$schema": "https://json-schema.org/draft-07/schema#"

2. NO SCHEMA WITHOUT title AND description
   - Every schema MUST be self-documenting
   - title: Short name of what it validates
   - description: Detailed explanation of purpose

3. NO PROPERTY WITHOUT description
   - Every property MUST have a description
   - Readers should understand field purpose without external docs

4. NO REQUIRED FIELD WITHOUT DEFINITION
   - If field is in "required" array, it MUST be in "properties"
   - Undefined required fields cause silent validation failures

5. NO ADDITIONALPROPERTIES: true WITHOUT REASON
   - Default to additionalProperties: false for strict validation
   - Only allow additional properties when explicitly needed

6. NO SCHEMA WITHOUT VALIDATION TEST
   - Test schema with valid AND invalid examples
   - Schema that passes everything validates nothing

7. NO CREATION WITHOUT SYSTEM IMPACT ANALYSIS
   - Check if related validators need updating
   - Check if documentation needs updating
   - Check if related schemas need cross-references

8. NO SCHEMA WITHOUT CLAUDE.MD REGISTRATION
   - If schema enables new capabilities, update CLAUDE.md
   - Section 4 (Self-Evolution) for agent/skill/workflow schemas
   - Verify with: grep "schema-name" .claude/CLAUDE.md

9. IRON LAW II: TYPED TOOL CALLING (MODEL-AGNOSTIC INTERFACE)
   - Every tool-facing schema MUST include "description" on every property
   - This is Typed Tool Calling: the model resolves parameters from a typed
     JSON Schema contract instead of inferring from free-form markdown prose
   - Benefit: Reduces model hallucination by 40-60% vs. untyped instructions
   - Every required field must have: "type", "description", and where applicable "enum"
   - Use snake_case for property names for cross-framework compatibility
   - For schemas consumed by AI agents, add a Google Dork to your research:
     "$schema" "type": "object" "properties" filetype:json ("tool" OR "skill") [Domain]
   - additionalProperties MUST be false unless explicitly justified

検証チェックリスト(作成のたびに実行)

# Verify schema is valid JSON
node -e "JSON.parse(require('fs').readFileSync('.claude/schemas/{name}.schema.json'))"

# Check required fields exist
node -e "const s = require('.claude/schemas/{name}.schema.json'); console.log('Has $schema:', !!s.\$schema); console.log('Has title:', !!s.title); console.log('Has description:', !!s.description);"

# Check all required properties are defined
node -e "const s = require('.claude/schemas/{name}.schema.json'); const r = s.required || []; const p = Object.keys(s.properties || {}); console.log('Missing:', r.filter(x => !p.includes(x)));"

# List all schemas
ls -la .claude/schemas/*.schema.json

完了チェックリスト(すべてにチェックを入れる必要があります):

[ ] Schema file created with .schema.json extension
[ ] $schema field present (draft-07 or later)
[ ] title and description present
[ ] All properties have descriptions
[ ] required array matches defined properties
[ ] examples included for complex schemas
[ ] Schema validated with test data
[ ] System impact analysis completed
[ ] CLAUDE.md updated if schema enables new capabilities
[ ] Related schemas updated if needed ($ref links)

ブロック事項:いずれかの項目に不備がある場合、スキーマ作成は未完了です。先に進む前に、すべての項目に合格する必要があります。


エコシステム連携契約(必須)

このクリエイタースキルは、連携するクリエイターエコシステムの一部です。ここで作成するスキーマは、関連する以下のクリエイターと整合させる必要があります。

  • 所有権と実行パスを扱う agent-creator
  • 機能のパッケージ化と割り当てを扱う skill-creator
  • 適用とガードレールを扱う hook-creator
  • オーケストレーションとフェーズ制御を扱う workflow-creator
  • 標準化されたスキャフォールドを扱う template-creator
  • ユーザー/オペレーター向けのコマンド UX を扱う command-creator
  • 実行可能な自動化の仕組みを扱う tool-creator
クリエイター間の連携確認(必須)

完了前に、関連するすべての連携を確認してください。

  1. .claude/CLAUDE.md と関連するルーティングドキュメントに成果物のルートが存在すること。
  2. ディスカバリー/レジストリのエントリーが更新されていること(該当するカタログ/インデックス/レジストリ)。
  3. 補完する成果物が作成されているか、理由を明記して明示的に免除されていること。
  4. 作成した成果物に対して validate-integration.cjs が合格すること。
  5. スキルのメタデータが変更された場合、スキルインデックスが再生成されていること。
調査ゲート(Exa + arXiv — 両方必須)

新しいスキーマパターンについては、調査が必須です。

  1. 実装とエコシステムのパターンについて Exa で調査します。
    • mcp__Exa__web_search_exa({ query: '<topic> JSON Schema 2025 best practices' })
    • mcp__Exa__get_code_context_exa({ query: '<topic> schema validation examples' })
  2. 学術研究について 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' })
  3. 決定事項、制約、対象外事項を成果物の参照先/ドキュメントに記録します。
  4. スキーマは最小限に保ち、過剰な仕様化を避けます。

対象に AI エージェント、LLM 評価、オーケストレーション、メモリ/RAG、セキュリティ、または新たな方法論が含まれる場合、arXiv の調査は必須であり、代替手段ではありません。

回帰に配慮したデリバリー
  • 振る舞いを変更する場合は、厳密な RED -> GREEN -> REFACTOR の手順に従います。
  • 変更したモジュールを対象にテストを実行します。
  • 変更したファイルに対して lint/フォーマットを実行します。
  • コミットは目的ごと(ロジック/ドキュメント/生成された成果物)に範囲を限定します。

作成後の統合

作成が完了したら、エコシステム統合チェックリストを実行します。

  1. .claude/lib/creators/creator-commons.cjs の runIntegrationChecklist(artifactType, artifactPath) を呼び出します
  2. .claude/lib/creators/creator-commons.cjs の queueCrossCreatorReview(artifactType, artifactPath) を呼び出します
  3. 影響レポートを確認し、タスクを完了としてマークする前に mustHave のすべての項目に対応します
  4. shouldHave の項目はフォローアップタスクとして記録します

統合の確認:

  • スキーマが schema-catalog.md に追加されている
  • スキーマバリデーターが接続されている(該当する場合)
  • スキーマが利用側の成果物から参照されている
  • スキーマにテストデータの例がある

評価に関する注意

スキーマの成果物は決定論的で、構造を検証できます。このスキルのワークフローにおけるステップ 7 の検証テスト(AJV によるコンパイル、$id の一意性チェック、必須フィールドの網羅性、テストデータの往復処理)が主要な品質ゲートとして機能し、LLM による判定スコアよりも強いシグナルを提供します。エージェントまたはフックの出力契約に使用するスキーマについては、下流の評価ツールが結果を解析できるように、skill-evaluation-output.schema.json に対する検証も行ってください。評価プロトコルの全容と、採点エージェント/分析エージェントの使用方法は .claude/skills/skill-creator/EVAL_WORKFLOW.md に記載されています。

コメント