Skip to main content
Glama
README.md12.8 kB
# 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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eyaltoledano/claude-task-master'

If you have feedback or need assistance with the MCP directory API, please join our Discord server