.taskmaster/docs/README.md
This folder contains a meta-development script (dev.js) and related utilities that manage tasks for an AI-driven or traditional software development workflow. The script revolves around a tasks.json file, which holds an up-to-date list of development tasks.
In an AI-driven development process—particularly with tools like Cursor—it's beneficial to have a single source of truth for tasks. This script allows you to:
.txt) to initialize a set of tasks (tasks.json).task_001.txt) for easy reference or to feed into an AI coding workflow.done, pending, or deferred based on progress.The script can be configured through environment variables in a .env file at the root of the project:
ANTHROPIC_API_KEY: Your Anthropic API key for ClaudeMODEL: Specify which Claude model to use (default: "claude-3-7-sonnet-20250219")MAX_TOKENS: Maximum tokens for model responses (default: 4000)TEMPERATURE: Temperature for model responses (default: 0.7)PERPLEXITY_API_KEY: Your Perplexity API key for research-backed subtask generationPERPLEXITY_MODEL: Specify which Perplexity model to use (default: "sonar-medium-online")DEBUG: Enable debug logging (default: false)TASKMASTER_LOG_LEVEL: Log level - debug, info, warn, error (default: info)DEFAULT_SUBTASKS: Default number of subtasks when expanding (default: 3)DEFAULT_PRIORITY: Default priority for generated tasks (default: medium)PROJECT_NAME: Override default project name in tasks.jsonPROJECT_VERSION: Override default version in tasks.jsontasks.json:
id, title, description, status, etc.).meta field can store additional info like the project's name, version, or reference to the PRD.subtasks for more detailed implementation steps.Script Commands You can run the script via:
node scripts/dev.js [command] [options]
Available commands:
parse-prd: Generate tasks from a PRD documentlist: Display all tasks with their statusupdate: Update tasks based on new informationgenerate: Create individual task filesset-status: Change a task's statusexpand: Add subtasks to a task or all tasksclear-subtasks: Remove subtasks from specified tasksnext: Determine the next task to work on based on dependenciesshow: Display detailed information about a specific taskRun node scripts/dev.js without arguments to see detailed usage information.
The list command allows you to view all tasks and their status:
# List all tasks
node scripts/dev.js list
# List tasks with a specific status
node scripts/dev.js list --status=pending
# List tasks and include their subtasks
node scripts/dev.js list --with-subtasks
# List tasks with a specific status and include their subtasks
node scripts/dev.js list --status=pending --with-subtasks
The update command allows you to update tasks based on new information or implementation changes:
# Update tasks starting from ID 4 with a new prompt
node scripts/dev.js update --from=4 --prompt="Refactor tasks from ID 4 onward to use Express instead of Fastify"
# Update all tasks (default from=1)
node scripts/dev.js update --prompt="Add authentication to all relevant tasks"
# With research-backed updates using Perplexity AI
node scripts/dev.js update --from=4 --prompt="Integrate OAuth 2.0" --research
# Specify a different tasks file
node scripts/dev.js update --file=custom-tasks.json --from=5 --prompt="Change database from MongoDB to PostgreSQL"
Notes:
--prompt parameter is required and should explain the changes or new context--research flag uses Perplexity AI for more informed updates when availableThe update-task command allows you to update a specific task instead of multiple tasks:
# Update a specific task with new information
node scripts/dev.js update-task --id=4 --prompt="Use JWT for authentication"
# With research-backed updates using Perplexity AI
node scripts/dev.js update-task --id=4 --prompt="Use JWT for authentication" --research
This command:
The set-status command allows you to change a task's status:
# Mark a task as done
node scripts/dev.js set-status --id=3 --status=done
# Mark a task as pending
node scripts/dev.js set-status --id=4 --status=pending
# Mark a specific subtask as done
node scripts/dev.js set-status --id=3.1 --status=done
# Mark multiple tasks at once
node scripts/dev.js set-status --id=1,2,3 --status=done
Notes:
parentId.subtaskId (e.g., 3.1)The expand command allows you to break down tasks into subtasks for more detailed implementation:
# Expand a specific task with 3 subtasks (default)
node scripts/dev.js expand --id=3
# Expand a specific task with 5 subtasks
node scripts/dev.js expand --id=3 --num=5
# Expand a task with additional context
node scripts/dev.js expand --id=3 --prompt="Focus on security aspects"
# Expand all pending tasks that don't have subtasks
node scripts/dev.js expand --all
# Force regeneration of subtasks for all pending tasks
node scripts/dev.js expand --all --force
# Use Perplexity AI for research-backed subtask generation
node scripts/dev.js expand --id=3 --research
# Use Perplexity AI for research-backed generation on all pending tasks
node scripts/dev.js expand --all --research
The clear-subtasks command allows you to remove subtasks from specified tasks:
# Clear subtasks from a specific task
node scripts/dev.js clear-subtasks --id=3
# Clear subtasks from multiple tasks
node scripts/dev.js clear-subtasks --id=1,2,3
# Clear subtasks from all tasks
node scripts/dev.js clear-subtasks --all
Notes:
expand command to immediately generate new subtasksThe script integrates with two AI services:
--research flag is specified.The Perplexity integration uses the OpenAI client to connect to Perplexity's API, which provides enhanced research capabilities for generating more informed subtasks. If the Perplexity API is unavailable or encounters an error, the script will automatically fall back to using Anthropic's Claude.
To use the Perplexity integration:
PERPLEXITY_API_KEY to your .env filePERPLEXITY_MODEL in your .env file (default: "sonar-medium-online")--research flag with the expand commandThe script supports different logging levels controlled by the TASKMASTER_LOG_LEVEL environment variable:
debug: Detailed information, typically useful for troubleshootinginfo: Confirmation that things are working as expected (default)warn: Warning messages that don't prevent executionerror: Error messages that might prevent executionWhen DEBUG=true is set, debug logs are also written to a dev-debug.log file in the project root.
The add-dependency and remove-dependency commands allow you to manage task dependencies:
# Add a dependency to a task
node scripts/dev.js add-dependency --id=<id> --depends-on=<id>
# Remove a dependency from a task
node scripts/dev.js remove-dependency --id=<id> --depends-on=<id>
These commands:
Allow precise dependency management:
Include validation checks:
Provide clear feedback:
Automatically update task files:
The script provides two specialized commands to ensure task dependencies remain valid and properly maintained:
The validate-dependencies command allows you to check for invalid dependencies without making changes:
# Check for invalid dependencies in tasks.json
node scripts/dev.js validate-dependencies
# Specify a different tasks file
node scripts/dev.js validate-dependencies --file=custom-tasks.json
This command:
Use this command to audit your task structure before applying fixes.
The fix-dependencies command proactively finds and fixes all invalid dependencies:
# Find and fix all invalid dependencies
node scripts/dev.js fix-dependencies
# Specify a different tasks file
node scripts/dev.js fix-dependencies --file=custom-tasks.json
This command:
This is especially useful when tasks have been deleted or IDs have changed, potentially breaking dependency chains.
The analyze-complexity command allows you to automatically assess task complexity and generate expansion recommendations:
# Analyze all tasks and generate expansion recommendations
node scripts/dev.js analyze-complexity
# Specify a custom output file
node scripts/dev.js analyze-complexity --output=custom-report.json
# Override the model used for analysis
node scripts/dev.js analyze-complexity --model=claude-3-opus-20240229
# Set a custom complexity threshold (1-10)
node scripts/dev.js analyze-complexity --threshold=6
# Use Perplexity AI for research-backed complexity analysis
node scripts/dev.js analyze-complexity --research
Notes:
scripts/task-complexity-report.jsonexpansionCommand that can be copied directly to the terminal or executed programmaticallyThe expand command automatically checks for and uses complexity analysis if available:
# Expand a task, using complexity report recommendations if available
node scripts/dev.js expand --id=8
# Expand all tasks, prioritizing by complexity score if a report exists
node scripts/dev.js expand --all
# Override recommendations with explicit values
node scripts/dev.js expand --id=8 --num=5 --prompt="Custom prompt"
When a complexity report exists:
expand command will use the recommended subtask count from the report (unless overridden)--all, tasks are sorted by complexity score (highest first)--research flag is preserved from the complexity analysis to expansionThe output report structure is:
{
"meta": {
"generatedAt": "2023-06-15T12:34:56.789Z",
"tasksAnalyzed": 20,
"thresholdScore": 5,
"projectName": "Your Project Name",
"usedResearch": true
},
"complexityAnalysis": [
{
"taskId": 8,
"taskTitle": "Develop Implementation Drift Handling",
"complexityScore": 9.5,
"recommendedSubtasks": 6,
"expansionPrompt": "Create subtasks that handle detecting...",
"reasoning": "This task requires sophisticated logic...",
"expansionCommand": "node scripts/dev.js expand --id=8 --num=6 --prompt=\"Create subtasks...\" --research"
}
// More tasks sorted by complexity score (highest first)
]
}
The next command helps you determine which task to work on next based on dependencies and status:
# Show the next task to work on
node scripts/dev.js next
# Specify a different tasks file
node scripts/dev.js next --file=custom-tasks.json
This command:
This feature ensures you're always working on the most appropriate task based on your project's current state and dependency structure.
The show command allows you to view detailed information about a specific task:
# Show details for a specific task
node scripts/dev.js show 1
# Alternative syntax with --id option
node scripts/dev.js show --id=1
# Show details for a subtask
node scripts/dev.js show --id=1.2
# Specify a different tasks file
node scripts/dev.js show 3 --file=custom-tasks.json
This command:
This command is particularly useful when you need to examine a specific task in detail before implementing it or when you want to check the status and details of a particular task.
The script now includes improved error handling throughout all commands:
Detailed Validation:
Contextual Error Messages:
Command-Specific Help Displays:
Helpful Error Recovery:
The script now automatically checks for updates without slowing down execution:
Background Version Checking:
Update Notifications:
Implementation Details:
The script now includes enhanced commands for managing subtasks:
# Add a subtask to an existing task
node scripts/dev.js add-subtask --parent=5 --title="Implement login UI" --description="Create login form"
# Convert an existing task to a subtask
node scripts/dev.js add-subtask --parent=5 --task-id=8
# Add a subtask with dependencies
node scripts/dev.js add-subtask --parent=5 --title="Authentication middleware" --dependencies=5.1,5.2
# Skip regenerating task files
node scripts/dev.js add-subtask --parent=5 --title="Login API route" --skip-generate
Key features:
# Remove a subtask
node scripts/dev.js remove-subtask --id=5.2
# Remove multiple subtasks
node scripts/dev.js remove-subtask --id=5.2,5.3,5.4
# Convert a subtask to a standalone task
node scripts/dev.js remove-subtask --id=5.2 --convert
# Skip regenerating task files
node scripts/dev.js remove-subtask --id=5.2 --skip-generate
Key features: