Back to Claude Task Master

Task Master JSON Schemas

src/prompts/schemas/README.md

0.20.012.5 KB
Original Source

Task Master JSON Schemas

This directory contains JSON schemas for validating Task Master prompt templates. These schemas provide IDE support, validation, and better developer experience when working with prompt templates.

Overview

The schema system provides:

  • Structural Validation: Ensures all required fields and proper JSON structure
  • Type Safety: Validates parameter types and value constraints
  • IDE Integration: IntelliSense and auto-completion in VS Code
  • Development Safety: Catches errors before runtime
  • Documentation: Self-documenting templates through schema definitions

Schema Files

prompt-template.schema.json (Main Schema)

Version: 1.0.0
Purpose: Main schema for Task Master prompt template files

Validates:

  • Template metadata (id, version, description)
  • Parameter definitions with comprehensive type validation
  • Prompt variants with conditional logic
  • Cross-references between parameters and template variables
  • Semantic versioning compliance
  • Handlebars template syntax

Required Fields:

  • id: Unique template identifier (kebab-case)
  • version: Semantic version (e.g., "1.0.0")
  • description: Human-readable description
  • prompts.default: Default prompt variant

Optional Fields:

  • metadata: Additional template information
  • parameters: Parameter definitions for template variables
  • prompts.*: Additional prompt variants

parameter.schema.json (Parameter Schema)

Version: 1.0.0
Purpose: Reusable schema for individual prompt parameters

Supports:

  • Type Validation: string, number, boolean, array, object
  • Constraints: Required/optional parameters, default values
  • String Validation: Pattern matching (regex), enum constraints
  • Numeric Validation: Minimum/maximum values, integer constraints
  • Array Validation: Item types, minimum/maximum length
  • Object Validation: Property definitions and required fields

Parameter Properties:

json
{
  "type": "string|number|boolean|array|object",
  "required": true|false,
  "default": "any value matching type",
  "description": "Parameter documentation",
  "enum": ["option1", "option2"],
  "pattern": "^regex$",
  "minimum": 0,
  "maximum": 100,
  "minLength": 1,
  "maxLength": 255,
  "items": { "type": "string" },
  "properties": { "key": { "type": "string" } }
}

variant.schema.json (Variant Schema)

Version: 1.0.0
Purpose: Schema for prompt template variants

Validates:

  • System and user prompt templates
  • Conditional expressions for variant selection
  • Variable placeholders using Handlebars syntax
  • Variant metadata and descriptions

Variant Structure:

json
{
  "condition": "JavaScript expression",
  "system": "System prompt template",
  "user": "User prompt template",
  "metadata": {
    "description": "When to use this variant"
  }
}

Schema Validation Rules

Template ID Validation

  • Pattern: ^[a-z][a-z0-9-]*[a-z0-9]$
  • Format: Kebab-case, alphanumeric with hyphens
  • Examples:
    • add-task, parse-prd, analyze-complexity
    • AddTask, add_task, -invalid-, task-

Version Validation

  • Pattern: Semantic versioning (semver)
  • Format: MAJOR.MINOR.PATCH
  • Examples:
    • 1.0.0, 2.1.3, 10.0.0
    • 1.0, v1.0.0, 1.0.0-beta

Parameter Type Validation

  • String: Text values with optional pattern/enum constraints
  • Number: Numeric values with optional min/max constraints
  • Boolean: True/false values
  • Array: Lists with optional item type validation
  • Object: Complex structures with property definitions

Template Variable Validation

  • Handlebars Syntax: {{variable}}, {{#if condition}}, {{#each array}}
  • Parameter References: All template variables must have corresponding parameters
  • Nested Access: Support for {{object.property}} notation
  • Special Variables: {{@index}}, {{@first}}, {{@last}} in loops

IDE Integration

VS Code Setup

The VS Code profile automatically configures schema validation:

json
{
  "json.schemas": [
    {
      "fileMatch": [
        "src/prompts/**/*.json",
        ".taskmaster/prompts/**/*.json",
        "prompts/**/*.json"
      ],
      "url": "./src/prompts/schemas/prompt-template.schema.json"
    }
  ]
}

Features Provided:

  • Auto-completion: IntelliSense for all schema properties
  • Real-time Validation: Immediate error highlighting
  • Hover Documentation: Parameter descriptions on hover
  • Error Messages: Detailed validation error explanations

Other IDEs

For other development environments:

Schema URLs:

  • Local Development: ./src/prompts/schemas/prompt-template.schema.json
  • GitHub Reference: https://github.com/eyaltoledano/claude-task-master/blob/main/src/prompts/schemas/prompt-template.schema.json

File Patterns:

  • src/prompts/**/*.json
  • .taskmaster/prompts/**/*.json
  • prompts/**/*.json

Validation Examples

Valid Template Example

json
{
  "id": "example-prompt",
  "version": "1.0.0",
  "description": "Example prompt template with comprehensive validation",
  "metadata": {
    "author": "Task Master Team",
    "category": "task",
    "tags": ["example", "validation"]
  },
  "parameters": {
    "taskDescription": {
      "type": "string",
      "description": "Description of the task to perform",
      "required": true,
      "minLength": 5,
      "maxLength": 500
    },
    "priority": {
      "type": "string",
      "description": "Task priority level",
      "required": false,
      "enum": ["high", "medium", "low"],
      "default": "medium"
    },
    "maxTokens": {
      "type": "number",
      "description": "Maximum tokens for response",
      "required": false,
      "minimum": 100,
      "maximum": 4000,
      "default": 1000
    },
    "useResearch": {
      "type": "boolean",
      "description": "Whether to include research context",
      "required": false,
      "default": false
    },
    "tags": {
      "type": "array",
      "description": "Task tags for categorization",
      "required": false,
      "items": {
        "type": "string",
        "pattern": "^[a-z][a-z0-9-]*$"
      }
    }
  },
  "prompts": {
    "default": {
      "system": "You are a helpful AI assistant that creates tasks with {{priority}} priority.",
      "user": "Create a task: {{taskDescription}}{{#if tags}}\nTags: {{#each tags}}{{this}}{{#unless @last}}, {{/unless}}{{/each}}{{/if}}"
    },
    "research": {
      "condition": "useResearch === true",
      "system": "You are a research-focused AI assistant with access to current information.",
      "user": "Research and create a task: {{taskDescription}}"
    }
  }
}

Common Validation Errors

Missing Required Fields:

json
// ❌ Error: Missing required 'id' field
{
  "version": "1.0.0",
  "description": "Missing ID"
}

Invalid ID Format:

json
// ❌ Error: ID must be kebab-case
{
  "id": "InvalidID_Format",
  "version": "1.0.0"
}

Parameter Type Mismatch:

json
// ❌ Error: Parameter type doesn't match usage
{
  "parameters": {
    "count": { "type": "string" }
  },
  "prompts": {
    "default": {
      "user": "Process {{count}} items" // Should be number for counting
    }
  }
}

Invalid Condition Syntax:

json
// ❌ Error: Invalid JavaScript in condition
{
  "prompts": {
    "variant": {
      "condition": "useResearch = true", // Should be ===
      "user": "Research prompt"
    }
  }
}

Development Workflow

Creating New Templates

  1. Start with Schema: Use VS Code with schema validation enabled
  2. Define Structure: Begin with required fields (id, version, description)
  3. Add Parameters: Define all template variables with proper types
  4. Create Prompts: Write system and user prompts with template variables
  5. Test Validation: Ensure template validates without errors
  6. Add Variants: Create additional variants if needed
  7. Document Usage: Update the main README with template details

Modifying Existing Templates

  1. Check Current Version: Note the current version number
  2. Assess Changes: Determine if changes are breaking or non-breaking
  3. Update Version: Increment version following semantic versioning
  4. Maintain Compatibility: Avoid breaking existing parameter contracts
  5. Test Thoroughly: Verify all existing code still works
  6. Update Documentation: Reflect changes in README files

Schema Evolution

When updating schemas themselves:

  1. Backward Compatibility: Ensure existing templates remain valid
  2. Version Increment: Update schema version in $id and version fields
  3. Test Migration: Validate all existing templates against new schema
  4. Document Changes: Update this README with schema changes
  5. Coordinate Release: Ensure schema and template changes are synchronized

Advanced Validation Features

Cross-Reference Validation

The schema validates that:

  • All template variables have corresponding parameters
  • Parameter types match their usage in templates
  • Variant conditions reference valid parameters
  • Nested property access is properly defined

Conditional Validation

  • Dynamic Schemas: Different validation rules based on parameter values
  • Variant Conditions: JavaScript expression validation
  • Template Syntax: Handlebars syntax validation
  • Parameter Dependencies: Required parameters based on other parameters

Custom Validation Rules

The schema includes custom validation for:

  • Semantic Versioning: Proper version format validation
  • Template Variables: Handlebars syntax and parameter references
  • Condition Expressions: JavaScript expression syntax validation
  • File Patterns: Consistent naming conventions

Performance Considerations

Schema Loading

  • Caching: Schemas are loaded once and cached
  • Lazy Loading: Validation only occurs when templates are accessed
  • Memory Efficiency: Shared schema instances across templates

Validation Performance

  • Fast Validation: AJV provides optimized validation
  • Error Batching: Multiple errors reported in single validation pass
  • Minimal Overhead: Validation adds minimal runtime cost

Development Impact

  • IDE Responsiveness: Real-time validation without performance impact
  • Build Time: Schema validation during development, not production
  • Testing Speed: Fast validation during test execution

Troubleshooting

Common Schema Issues

Schema Not Loading:

  • Check file paths in VS Code settings
  • Verify schema files exist and are valid JSON
  • Restart VS Code if changes aren't recognized

Validation Not Working:

  • Ensure ajv and ajv-formats dependencies are installed
  • Check for JSON syntax errors in templates
  • Verify schema file paths are correct

Performance Issues:

  • Check for circular references in schemas
  • Verify schema caching is working
  • Monitor validation frequency in development

Debugging Validation Errors

Understanding Error Messages:

javascript
// Example error output
{
  "instancePath": "/parameters/priority/type",
  "schemaPath": "#/properties/parameters/additionalProperties/properties/type/enum",
  "keyword": "enum",
  "params": { "allowedValues": ["string", "number", "boolean", "array", "object"] },
  "message": "must be equal to one of the allowed values"
}

Common Error Patterns:

  • instancePath: Shows where in the template the error occurred
  • schemaPath: Shows which schema rule was violated
  • keyword: Indicates the type of validation that failed
  • params: Provides additional context about the validation rule
  • message: Human-readable description of the error

Getting Help

Internal Resources:

  • Main prompt README: src/prompts/README.md
  • Schema files: src/prompts/schemas/*.json
  • PromptManager code: scripts/modules/prompt-manager.js

External Resources:

Schema URLs and References

Current Schema Locations

  • Local Development: ./src/prompts/schemas/prompt-template.schema.json
  • GitHub Blob: https://github.com/eyaltoledano/claude-task-master/blob/main/src/prompts/schemas/prompt-template.schema.json
  • Schema ID: Used for internal references and validation

URL Usage Guidelines

  • $id Field: Use GitHub blob URLs for stable schema identification
  • Local References: Use relative paths for development and testing
  • External Tools: GitHub blob URLs provide stable, version-controlled access
  • Documentation: Link to GitHub for public schema access