# 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**:
- JSON Schema documentation: https://json-schema.org/
- AJV validation library: https://ajv.js.org/
- Handlebars template syntax: https://handlebarsjs.com/
## 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