This guide explains how to create effective task templates for the Atlas task management system.
Atlas templates allow you to define reusable task structures that can be instantiated with different variables. Templates are particularly useful for:
- Standardizing project setups
- Ensuring consistent task organization
- Automating repetitive task creation
- Maintaining best practices across projects
A template is defined in a JSON file with the following top-level structure:
{
"id": "template-id",
"name": "Template Name",
"description": "Template description",
"version": "1.0.0",
"author": "Author Name",
"tags": ["tag1", "tag2"],
"variables": [],
"tasks": []
}
id
: Unique identifier for the templatename
: Human-readable namedescription
: Detailed description of the template's purposeversion
: Semantic version numbertasks
: Array of task definitions
author
: Template creatortags
: Categorization tagsvariables
: Input variables for customization
Variables allow templates to be customized when instantiated. They support the following types:
string
: Text valuesboolean
: True/false flagsnumber
: Numeric values
Example variable definition:
{
"variables": [
{
"name": "projectName",
"description": "Name of the project",
"type": "string",
"required": true
},
{
"name": "useTypeScript",
"description": "Whether to use TypeScript",
"type": "boolean",
"required": false,
"default": false
}
]
}
- Use
${variableName}
syntax in task paths and content - Variables can be used in:
- Task paths
- Task titles
- Task descriptions
- Dependency paths
- Metadata values
Tasks define the work items that will be created. Each task must include:
{
"path": "${projectName}/path/to/task",
"title": "Task Title",
"description": "Task description",
"type": "TASK",
"dependencies": ["${projectName}/path/to/dependency"],
"metadata": {}
}
TASK
: Concrete work itemMILESTONE
: Group of related tasks
- Use full paths including variable substitutions
- Dependencies must exist within the template
- Avoid circular dependencies
Metadata provides additional context and requirements for tasks. The metadata structure is flexible and can include any fields needed, with only a size limit constraint. Common patterns include:
{
"metadata": {
// Core fields (optional)
"priority": "high|medium|low",
"tags": ["tag1", "tag2"],
"reasoning": "Explanation of decisions",
// Technical details (flexible structure)
"technicalRequirements": {
"language": "programming language",
"framework": "framework name",
"dependencies": ["dep1", "dep2"],
"environment": "runtime environment",
// Additional technical fields as needed
"performance": {
"memory": "512MB",
"cpu": "2 cores"
}
},
// Validation & progress (flexible structure)
"acceptanceCriteria": {
"criteria": ["criterion1", "criterion2"],
"testCases": ["test1", "test2"]
},
"progress": {
"percentage": 0,
"milestones": ["milestone1", "milestone2"],
"lastUpdated": "timestamp"
},
// Resource tracking (flexible structure)
"resources": {
"toolsUsed": ["tool1", "tool2"],
"contextUsed": ["context1", "context2"]
},
// Custom fields (any additional metadata)
"customFields": {
"field1": "value1",
"field2": {
"nestedField": "value"
}
}
}
}
The only constraint on metadata is a total size limit to prevent performance issues. Within this limit, you can structure the metadata as needed for your use case.
-
Template Organization
- Use clear, descriptive template IDs
- Group related tasks under milestones
- Keep dependency chains manageable
- Include comprehensive descriptions
-
Variables
- Provide clear descriptions and defaults
- Use required flag sparingly
- Consider validation needs
- Use consistent naming conventions
-
Tasks
- Use consistent path structures
- Keep tasks focused and atomic
- Include clear acceptance criteria
- Document technical requirements
-
Dependencies
- Create logical task sequences
- Avoid unnecessary dependencies
- Consider parallel execution
- Document dependency reasoning
-
Metadata
- Use consistent tagging schemes
- Include relevant technical details
- Document environment requirements
- Specify clear acceptance criteria
The software engineering team templates provide a comprehensive structure for managing software development teams with specialized roles:
{
"id": "llm-software-team",
"name": "LLM Software Engineering Team",
"variables": [
{
"name": "projectName",
"type": "string",
"required": true
},
{
"name": "teamScale",
"type": "string",
"required": true,
"default": "growth"
},
{
"name": "securityLevel",
"type": "string",
"default": "standard"
}
],
"tasks": [
{
"path": "${projectName}/team-setup",
"title": "Team Setup & Coordination",
"type": "MILESTONE",
"metadata": {
"priority": "high",
"customFields": {
"roleTemplate": "llm-team-coordinator"
}
}
},
{
"path": "${projectName}/product-design",
"title": "Product Design Phase",
"type": "MILESTONE",
"dependencies": ["${projectName}/team-setup"],
"metadata": {
"customFields": {
"roleTemplate": "llm-product-designer"
}
}
}
]
}
Available role templates:
llm-product-designer
: Product design and researchllm-system-architect
: System architecture and designllm-security-engineer
: Security implementationllm-devops-engineer
: Infrastructure automationllm-tech-lead
: Development standards and quality
See web-project.json for a complete example of a web project template with TypeScript and testing options.
interface Template {
id: string; // Unique identifier
name: string; // Display name
description: string; // Detailed description
version: string; // Semantic version
author?: string; // Template creator
tags?: string[]; // Categorization tags
variables?: Variable[]; // Input variables
tasks: Task[]; // Task definitions
}
interface Variable {
name: string; // Variable name
description: string; // Variable description
type: 'string' | 'boolean' | 'number';
required?: boolean; // Is input required?
default?: any; // Default value
}
interface Task {
path: string; // Task path with variables
title: string; // Task title
description: string; // Task description
type: 'TASK' | 'MILESTONE';
dependencies?: string[]; // Task dependencies
metadata?: Record<string, unknown>; // Flexible metadata structure
}
-
Template Structure
- Template IDs must be 1-100 characters
- Template names must be 1-200 characters
- Descriptions must be under 2000 characters
- Version strings must be 1-50 characters
- Author name must be under 100 characters
-
Variables
- Variable names must be 1-100 characters
- Variable descriptions must be under 500 characters
- Type must be one of: string, number, boolean, array
- Required variables must not have defaults
- Default values must match declared type
- Variable names must be unique within template
-
Tasks
- Task paths must be unique within template
- Paths must be under 1000 characters
- Titles must be 1-200 characters
- Descriptions must be under 2000 characters
- Type must be either TASK or MILESTONE
- Dependencies must reference existing task paths
- No circular dependencies allowed
-
Variable References
- ${variable} syntax must reference defined variables
- Variables can be used in:
- Task paths
- Task titles
- Task descriptions
- Dependencies
- Metadata string values
-
Metadata
- Total metadata size must be under 100KB
- All string values support variable interpolation
- Structure is flexible within size constraint