README-task-master.md
A task management system for AI-driven development with Claude, designed to work seamlessly with Cursor AI.
Taskmaster uses two primary configuration methods:
.taskmasterconfig File (Project Root)
task-master models --setup CLI command or the models MCP tool.Environment Variables (.env file or MCP env block)
ANTHROPIC_API_KEY, PERPLEXITY_API_KEY, etc.) and specific endpoints (like OLLAMA_BASE_URL)..env file in your project root.env section of your .cursor/mcp.json (or other MCP config according to the AI IDE or client you use) file under the taskmaster-ai server definition.Important: Settings like model choices, max tokens, temperature, and log level are no longer configured via environment variables. Use the task-master models command or tool.
See the Configuration Guide for full details.
# Install globally
npm install -g task-master-ai
# OR install locally within your project
npm install task-master-ai
# If installed globally
task-master init
# If installed locally
npx task-master init
This will prompt you for project details and set up a new project with the necessary files and structure.
ES Modules Configuration:
"type": "module" in your package.json.import/export syntax instead of require()..js or .mjs extensions..cjs extensionawait import() for dynamic imports"type": "module" from package.json, but Task Master scripts expect ESM.The Anthropic SDK version should be 0.39.0 or higher.
After installing the package globally, you can use these CLI commands from any directory:
# Initialize a new project
task-master init
# Parse a PRD and generate tasks
task-master parse-prd your-prd.txt
# List all tasks
task-master list
# Show the next task to work on
task-master next
# Generate task files
task-master generate
task-master init doesn't respond:Try running it with Node directly:
node node_modules/claude-task-master/scripts/init.js
Or clone the repository and run:
git clone https://github.com/eyaltoledano/claude-task-master.git
cd claude-task-master
node scripts/init.js
Tasks in tasks.json have the following structure:
id: Unique identifier for the task (Example: 1)title: Brief, descriptive title of the task (Example: "Initialize Repo")description: Concise description of what the task involves (Example: "Create a new repository, set up initial structure.")status: Current state of the task (Example: "pending", "done", "deferred")dependencies: IDs of tasks that must be completed before this task (Example: [1, 2])
priority: Importance level of the task (Example: "high", "medium", "low")details: In-depth implementation instructions (Example: "Use GitHub client ID/secret, handle callback, set session token.")testStrategy: Verification approach (Example: "Deploy and call endpoint to confirm 'Hello World' response.")subtasks: List of smaller, more specific tasks that make up the main task (Example: [{"id": 1, "title": "Configure OAuth", ...}])Claude Task Master is designed to work seamlessly with Cursor AI, providing a structured workflow for AI-driven development.
.cursor/rules/dev_workflow.mdc file is automatically loaded by Cursor, providing the AI with knowledge about the task management systemscripts/ directory (e.g., scripts/prd.txt)To enable enhanced task management capabilities directly within Cursor using the Model Control Protocol (MCP):
Once configured, you can interact with Task Master's task management commands directly through Cursor's interface, providing a more integrated experience.
In Cursor's AI chat, instruct the agent to generate tasks from your PRD:
Please use the task-master parse-prd command to generate tasks from my PRD. The PRD is located at scripts/prd.txt.
The agent will execute:
task-master parse-prd scripts/prd.txt
This will:
tasks.json file with tasks, dependencies, priorities, and test strategiesNext, ask the agent to generate individual task files:
Please generate individual task files from tasks.json
The agent will execute:
task-master generate
This creates individual task files in the tasks/ directory (e.g., task_001.txt, task_002.txt), making it easier to reference specific tasks.
The Cursor agent is pre-configured (via the rules file) to follow this workflow:
Ask the agent to list available tasks:
What tasks are available to work on next?
The agent will:
task-master list to see all taskstask-master next to determine the next task to work onWhen implementing a task, the agent will:
You can ask:
Let's implement task 3. What does it involve?
Before marking a task as complete, verify it according to:
When a task is completed, tell the agent:
Task 3 is now complete. Please update its status.
The agent will execute:
task-master set-status --id=3 --status=done
If during implementation, you discover that:
Tell the agent:
We've changed our approach. We're now using Express instead of Fastify. Please update all future tasks to reflect this change.
The agent will execute:
task-master update --from=4 --prompt="Now we are using Express instead of Fastify."
This will rewrite or re-scope subsequent tasks in tasks.json while preserving completed work.
For complex tasks that need more granularity:
Task 5 seems complex. Can you break it down into subtasks?
The agent will execute:
task-master expand --id=5 --num=3
You can provide additional context:
Please break down task 5 with a focus on security considerations.
The agent will execute:
task-master expand --id=5 --prompt="Focus on security aspects"
You can also expand all pending tasks:
Please break down all pending tasks into subtasks.
The agent will execute:
task-master expand --all
For research-backed subtask generation using Perplexity AI:
Please break down task 5 using research-backed generation.
The agent will execute:
task-master expand --id=5 --research
Here's a comprehensive reference of all available commands:
# Parse a PRD file and generate tasks
task-master parse-prd <prd-file.txt>
# Limit the number of tasks generated (default is 10)
task-master parse-prd <prd-file.txt> --num-tasks=5
# Allow task master to determine the number of tasks based on complexity
task-master parse-prd <prd-file.txt> --num-tasks=0
# List all tasks
task-master list
# List tasks with a specific status
task-master list --status=<status>
# List tasks with subtasks
task-master list --with-subtasks
# List tasks with a specific status and include subtasks
task-master list --status=<status> --with-subtasks
# Show the next task to work on based on dependencies and status
task-master next
# Show details of a specific task
task-master show <id>
# or
task-master show --id=<id>
# View a specific subtask (e.g., subtask 2 of task 1)
task-master show 1.2
# Update tasks from a specific ID and provide context
task-master update --from=<id> --prompt="<prompt>"
# Generate individual task files from tasks.json
task-master generate
# Set status of a single task
task-master set-status --id=<id> --status=<status>
# Set status for multiple tasks
task-master set-status --id=1,2,3 --status=<status>
# Set status for subtasks
task-master set-status --id=1.1,1.2 --status=<status>
When marking a task as "done", all of its subtasks will automatically be marked as "done" as well.
# Expand a specific task with subtasks
task-master expand --id=<id> --num=<number>
# Expand a task with a dynamic number of subtasks (ignoring complexity report)
task-master expand --id=<id> --num=0
# Expand with additional context
task-master expand --id=<id> --prompt="<context>"
# Expand all pending tasks
task-master expand --all
# Force regeneration of subtasks for tasks that already have them
task-master expand --all --force
# Research-backed subtask generation for a specific task
task-master expand --id=<id> --research
# Research-backed generation for all tasks
task-master expand --all --research
# Clear subtasks from a specific task
task-master clear-subtasks --id=<id>
# Clear subtasks from multiple tasks
task-master clear-subtasks --id=1,2,3
# Clear subtasks from all tasks
task-master clear-subtasks --all
# Analyze complexity of all tasks
task-master analyze-complexity
# Save report to a custom location
task-master analyze-complexity --output=my-report.json
# Use a specific LLM model
task-master analyze-complexity --model=claude-3-opus-20240229
# Set a custom complexity threshold (1-10)
task-master analyze-complexity --threshold=6
# Use an alternative tasks file
task-master analyze-complexity --file=custom-tasks.json
# Use Perplexity AI for research-backed complexity analysis
task-master analyze-complexity --research
# Display the task complexity analysis report
task-master complexity-report
# View a report at a custom location
task-master complexity-report --file=my-report.json
# Add a dependency to a task
task-master add-dependency --id=<id> --depends-on=<id>
# Remove a dependency from a task
task-master remove-dependency --id=<id> --depends-on=<id>
# Validate dependencies without fixing them
task-master validate-dependencies
# Find and fix invalid dependencies automatically
task-master fix-dependencies
# Add a new task using AI
task-master add-task --prompt="Description of the new task"
# Add a task with dependencies
task-master add-task --prompt="Description" --dependencies=1,2,3
# Add a task with priority
task-master add-task --prompt="Description" --priority=high
The analyze-complexity command:
The generated report contains:
The complexity-report command:
The expand command automatically checks for and uses the complexity report:
When a complexity report exists:
Example workflow:
# Generate the complexity analysis report with research capabilities
task-master analyze-complexity --research
# Review the report in a readable format
task-master complexity-report
# Expand tasks using the optimized recommendations
task-master expand --id=8
# or expand all tasks
task-master expand --all
The next command:
The show command:
Start with a detailed PRD: The more detailed your PRD, the better the generated tasks will be.
Review generated tasks: After parsing the PRD, review the tasks to ensure they make sense and have appropriate dependencies.
Analyze task complexity: Use the complexity analysis feature to identify which tasks should be broken down further.
Follow the dependency chain: Always respect task dependencies - the Cursor agent will help with this.
Update as you go: If your implementation diverges from the plan, use the update command to keep future tasks aligned with your current approach.
Break down complex tasks: Use the expand command to break down complex tasks into manageable subtasks.
Regenerate task files: After any updates to tasks.json, regenerate the task files to keep them in sync.
Communicate context to the agent: When asking the Cursor agent to help with a task, provide context about what you're trying to achieve.
Validate dependencies: Periodically run the validate-dependencies command to check for invalid or circular dependencies.
I've just initialized a new project with Claude Task Master. I have a PRD at scripts/prd.txt.
Can you help me parse it and set up the initial tasks?
What's the next task I should work on? Please consider dependencies and priorities.
I'd like to implement task 4. Can you help me understand what needs to be done and how to approach it?
I need to regenerate the subtasks for task 3 with a different approach. Can you help me clear and regenerate them?
We've decided to use MongoDB instead of PostgreSQL. Can you update all future tasks to reflect this change?
I've finished implementing the authentication system described in task 2. All tests are passing.
Please mark it as complete and tell me what I should work on next.
Can you analyze the complexity of our tasks to help me understand which ones need to be broken down further?
Can you show me the complexity report in a more readable format?