Files
gh-dhofheinz-open-plugins-p…/commands/schema-validation/check-required-fields.md
2025-11-29 18:20:28 +08:00

4.7 KiB

Operation: Check Required Fields

Verify all required fields are present and non-empty in plugin or marketplace configuration.

Parameters from $ARGUMENTS

  • path: Path to plugin directory or marketplace file (required)
  • type: Target type: plugin or marketplace (required)
  • strict: Fail on missing recommended fields (optional, default: false)

Workflow

  1. Detect Target Type

    IF type not specified:
      Auto-detect based on path structure:
        - Has plugin.json → plugin
        - Has marketplace.json or .claude-plugin/marketplace.json → marketplace
        - Otherwise → error
    
  2. Locate Configuration File

    For plugin:
      Check: <path>/plugin.json
    
    For marketplace:
      Check: <path>/marketplace.json
      OR: <path>/.claude-plugin/marketplace.json
    
    IF not found:
      Return error with searched paths
    
  3. Execute Field Validation

    Execute .scripts/field-checker.sh "$config_file" "$type" "$strict"
    
    Returns:
      - List of required fields: present ✅ or missing ❌
      - List of recommended fields: present ✅ or missing ⚠️
      - Overall status: PASS or FAIL
    
  4. Aggregate Results

    Count:
      - Required missing: critical errors
      - Recommended missing: warnings
    
    IF any required missing:
      Exit with status 1
    
    IF strict mode AND any recommended missing:
      Exit with status 1
    
    Otherwise:
      Exit with status 0
    

Required Fields by Type

Plugin (from plugin.json):

  • name (string, lowercase-hyphen format)
  • version (string, semver X.Y.Z)
  • description (string, 50-200 characters)
  • author (string or object with name field)
  • license (string, SPDX identifier)

Marketplace (from marketplace.json):

  • name (string, lowercase-hyphen format)
  • owner (object with name field)
  • owner.name (string)
  • owner.email (string, valid email format)
  • plugins (array, at least one entry)

Plugin:

  • repository (object or string, source code location)
  • homepage (string, documentation URL)
  • keywords (array, 3-7 relevant keywords)
  • category (string, one of 10 approved categories)

Marketplace:

  • version (string, marketplace version)
  • metadata.description (string, marketplace purpose)
  • metadata.homepage (string, marketplace documentation)
  • metadata.repository (string, marketplace source)

Examples

# Check plugin required fields
/schema-validation fields path:. type:plugin

# Check marketplace with strict mode (fail on missing recommended)
/schema-validation fields path:./test-marketplace type:marketplace strict:true

# Auto-detect type
/schema-validation fields path:.

Error Handling

  • File not found: List all searched paths
  • Invalid JSON: Suggest running json validation first
  • Unknown type: Show valid types (plugin, marketplace)
  • Empty field: Report which field is present but empty

Output Format

Success (all required present):

✅ Required Fields Validation: PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Target: plugin.json
Type: plugin

Required Fields (5/5):
  ✅ name: "my-plugin"
  ✅ version: "1.0.0"
  ✅ description: "My awesome plugin"
  ✅ author: "Developer Name"
  ✅ license: "MIT"

Recommended Fields (3/4):
  ✅ repository: Present
  ✅ homepage: Present
  ✅ keywords: Present
  ⚠️  category: Missing (improves discoverability)

Status: PASS
Warnings: 1 (non-blocking)

Failure (missing required):

❌ Required Fields Validation: FAIL
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Target: plugin.json
Type: plugin

Required Fields (3/5):
  ✅ name: "my-plugin"
  ❌ version: Missing (REQUIRED - use semver X.Y.Z)
  ✅ description: "My plugin"
  ❌ license: Missing (REQUIRED - use MIT, Apache-2.0, etc.)
  ✅ author: "Developer"

Critical Issues: 2
Status: FAIL

Action Required:
  Add missing required fields to plugin.json:
    - version: "1.0.0"
    - license: "MIT"

Marketplace Example:

✅ Required Fields Validation: PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Target: marketplace.json
Type: marketplace

Required Fields (5/5):
  ✅ name: "my-marketplace"
  ✅ owner.name: "DevTools Team"
  ✅ owner.email: "devtools@example.com"
  ✅ plugins: Array with 3 entries

Status: PASS

Integration

This operation is called by:

  • full-schema-validation.md - Second validation step after JSON syntax
  • validation-orchestrator - Comprehensive validation checks
  • Direct user invocation for field checking

Request: $ARGUMENTS