.kiro/steering/dev_workflow.md
This guide outlines the standard process for using Taskmaster to manage software development projects. It is written as a set of instructions for you, the AI agent.
master task context. Your initial actions should operate on this default context unless a clear pattern for multi-context work emerges.The fundamental development cycle you will facilitate is:
list: Show the user what needs to be done.next: Help the user decide what to work on.show <id>: Provide details for a specific task.expand <id>: Break down a complex task into smaller, manageable subtasks.update-subtask: Log progress and findings on behalf of the user.set-status: Mark tasks and subtasks as done as work is completed.All your standard command executions should operate on the user's current task context, which defaults to master.
For new projects or when users are getting started, operate within the master tag context:
initialize_project tool / task-master init or parse_prd / task-master parse-prd --input='<prd-file.txt>' (see @taskmaster.md) to generate initial tasks.json with tagged structure--rules flag (e.g., task-master init --rules kiro,windsurf) or manage them later with task-master rules add/remove commandsget_tasks / task-master list (see @taskmaster.md) to see current tasks, status, and IDsnext_task / task-master next (see @taskmaster.md)analyze_project_complexity / task-master analyze-complexity --research (see @taskmaster.md) before breaking down taskscomplexity_report / task-master complexity-report (see @taskmaster.md)get_task / task-master show <id> (see @taskmaster.md) to understand implementation requirementsexpand_task / task-master expand --id=<id> --force --research (see @taskmaster.md) with appropriate flags like --force (to replace existing subtasks) and --researchset_task_status / task-master set-status --id=<id> --status=done (see @taskmaster.md)update / task-master update --from=<id> --prompt="..." or update_task / task-master update-task --id=<id> --prompt="..." (see @taskmaster.md)While the basic workflow is powerful, your primary opportunity to add value is by identifying when to introduce Tagged Task Lists. These patterns are your tools for creating a more organized and efficient development environment for the user, especially if you detect agentic or parallel development happening across the same session.
Critical Principle: Most users should never see a difference in their experience. Only introduce advanced workflows when you detect clear indicators that the project has evolved beyond simple task management.
Here are the patterns to look for. When you detect one, you should propose the corresponding workflow to the user.
This is the most common and direct use case for tags.
git checkout -b feature/user-auth).master.tasks.json file later. Shall I create the 'feature-user-auth' tag?"task-master add-tag --from-branchtask-master add-tag my-work --copy-from-current --description="My tasks while collaborating with Alice"task-master add-tag experiment-zustand --description="Exploring Zustand migration"This is a more structured approach for significant new features or epics.
task-master add-tag feature-xyz --description "Tasks for the new XYZ feature". You can also start by creating a git branch if applicable, and then create the tag from that branch..taskmaster/docs/feature-xyz-prd.txt).task-master parse-prd .taskmaster/docs/feature-xyz-prd.txt --tag feature-xyzanalyze-complexity and expand-all for the newly created tasks within the feature-xyz tag.Tailor your approach based on the project maturity indicated by tag names.
Prototype/MVP Tags (prototype, mvp, poc, v0.x):
Production/Mature Tags (v1.0+, production, stable):
When to Transition: Recognize when the project has evolved (or has initiated a project which existing code) beyond simple task management. Look for these indicators:
Your Role in Transition: Guide the user to a more sophisticated workflow that leverages tags for organization and PRDs for comprehensive planning.
Once you transition to tag-based workflows, the master tag should ideally contain only:
What NOT to put in master:
refactor-auth)experiment-* tags)For New Major Features:
add_tag feature-[name] --description="[Feature description]".taskmaster/docs/feature-[name]-prd.txtparse_prd .taskmaster/docs/feature-[name]-prd.txt --tag=feature-[name]analyze_project_complexity --tag=feature-[name] --researchexpand_all --tag=feature-[name] --researchmaster that references the feature tagFor Existing Codebase Analysis: When users initialize Taskmaster on existing projects:
research tool with --tree and --files to collect up to date information using the existing architecture as context.refactor-api, feature-dashboard, tech-debt, etc.)The parse-prd's --append flag enables the user to parse multiple PRDs within tags or across tags. PRDs should be focused and the number of tasks they are parsed into should be strategically chosen relative to the PRD's complexity and level of detail.
Example 1: Simple → Team-Based
User: "Alice is going to help with the API work"
Your Response: "Great! To avoid conflicts, I'll create a separate task context for your work. Alice can continue with the master list while you work in your own context. When you're ready to merge, we can coordinate the tasks back together."
Action: add_tag my-api-work --copy-from-current --description="My API tasks while collaborating with Alice"
Example 2: Simple → PRD-Driven
User: "I want to add a complete user dashboard with analytics, user management, and reporting"
Your Response: "This sounds like a major feature that would benefit from detailed planning. Let me create a dedicated context for this work and we can draft a PRD together to ensure we capture all requirements."
Actions:
1. add_tag feature-dashboard --description="User dashboard with analytics and management"
2. Collaborate on PRD creation
3. parse_prd dashboard-prd.txt --tag=feature-dashboard
4. Add high-level "User Dashboard" task to master
Example 3: Existing Project → Strategic Planning
User: "I just initialized Taskmaster on my existing React app. It's getting messy and I want to improve it."
Your Response: "Let me research your codebase to understand the current architecture, then we can create a strategic plan for improvements."
Actions:
1. research "Current React app architecture and improvement opportunities" --tree --files=src/
2. Collaborate on improvement PRD based on findings
3. Create tags for different improvement areas (refactor-components, improve-state-management, etc.)
4. Keep only major improvement initiatives in master
Taskmaster offers two primary ways to interact:
MCP Server (Recommended for Integrated Tools):
get_tasks, add_subtask).mcp.md for details on the MCP architecture and available tools.taskmaster.md.scripts/modules or MCP tool/direct function definitions change.task-master CLI (For Users & Fallback):
task-master command provides a user-friendly interface for direct terminal interaction.npm install -g task-master-ai or use locally via npx task-master-ai ....task-master list corresponds to get_tasks).taskmaster.md for a detailed command reference.use-tag <name>.taskmaster.md for a full command list.analyze_project_complexity / task-master analyze-complexity --research (see @taskmaster.md) for comprehensive analysiscomplexity_report / task-master complexity-report (see @taskmaster.md) for a formatted, readable version.expand_task tool/commandexpand_task / task-master expand --id=<id>. It automatically uses the complexity report if found, otherwise generates default number of subtasks.--num=<number> to specify an explicit number of subtasks, overriding defaults or complexity report recommendations.--research flag to leverage Perplexity AI for research-backed expansion.--force flag to clear existing subtasks before generating new ones (default is to append).--prompt="<context>" to provide additional context when needed.expand_all tool or task-master expand --all to expand multiple pending tasks at once, respecting flags like --force and --research.--force flag on expand), clear them first with clear_subtasks / task-master clear-subtasks --id=<id>.update / task-master update --from=<futureTaskId> --prompt='<explanation>\nUpdate context...' --research to update multiple future tasks.update_task / task-master update-task --id=<taskId> --prompt='<explanation>\nUpdate context...' --research to update a single specific task.1, 1.1)"Initialize Repo")"Create a new repository, set up initial structure.")"pending", "done", "deferred")[1, 2.1])
"high", "medium", "low")"Use GitHub client ID/secret, handle callback, set session token.")"Deploy and call endpoint to confirm 'Hello World' response.")[{"id": 1, "title": "Configure OAuth", ...}])tasks.md).Taskmaster configuration is managed through two main mechanisms:
.taskmaster/config.json File (Primary):
global.defaultTag (defaults to "master") and tags section for tag management configuration.task-master models --setup command. Do not edit manually unless you know what you are doing.task-master models command or models MCP tool.task-master models --setup for the first time or during tagged system migration.Environment Variables (.env / mcp.json):
.env file in the project root for CLI usage.env section of .kiro/mcp.json.assets/env.example or the Configuration section in the command reference (previously linked to taskmaster.md)..taskmaster/state.json File (Tagged System State):
currentTag, lastSwitched, migrationNoticeShown.Important: Non-API key settings (like model selections, MAX_TOKENS, TASKMASTER_LOG_LEVEL) are no longer configured via environment variables. Use the task-master models command (or --setup for interactive configuration) or the models MCP tool.
If AI commands FAIL in MCP verify that the API key for the selected provider is present in the env section of .kiro/mcp.json.
If AI commands FAIL in CLI verify that the API key for the selected provider is present in the .env file in the root of the project.
Taskmaster supports multiple AI coding assistant rule sets that can be configured during project initialization or managed afterward:
task-master init --rules kiro,windsurf to specify which rule sets to includetask-master rules add <profiles> or task-master rules remove <profiles> to manage rule setstask-master rules setup to launch an interactive prompt for selecting rule profiles--rules flag is specified during initialization, all available rule profiles are included.kiro/steering, .roo/rules) with appropriate configuration filesnext_task / task-master next to show the next task to work on.get_task / task-master show <id> to view a specific task.task-master show 1.2 (shows subtask 2 of task 1)add_dependency / task-master add-dependency --id=<id> --depends-on=<id> to add a dependency.remove_dependency / task-master remove-dependency --id=<id> --depends-on=<id> to remove a dependency.move_task / task-master move --from=<id> --to=<id> to move tasks or subtasks within the hierarchy--from=5 --to=7)--from=5.2 --to=7)--from=5.2 --to=7.3)--from=5.2 --to=5.4)--from=5 --to=25)--from=10,11,12 --to=16,17,18)Once a task has been broken down into subtasks using expand_task or similar methods, follow this iterative process for implementation:
Understand the Goal (Preparation):
get_task / task-master show <subtaskId> (see @taskmaster.md) to thoroughly understand the specific goals and requirements of the subtask.Initial Exploration & Planning (Iteration 1):
Log the Plan:
update_subtask / task-master update-subtask --id=<subtaskId> --prompt='<detailed plan>'.details.Verify the Plan:
get_task / task-master show <subtaskId> again to confirm that the detailed implementation plan has been successfully appended to the subtask's details.Begin Implementation:
set_task_status / task-master set-status --id=<subtaskId> --status=in-progress.Refine and Log Progress (Iteration 2+):
get_task or recalling from context) to ensure the update adds fresh insights and avoids redundancy.update_subtask / task-master update-subtask --id=<subtaskId> --prompt='<update details>\n- What worked...\n- What didn't work...' to append new findings.Review & Update Rules (Post-Implementation):
cursor_rules.md and self_improve.md).Mark Task Complete:
set_task_status / task-master set-status --id=<subtaskId> --status=done.Commit Changes (If using Git):
git add .).git commit -m 'feat(module): Implement feature X for subtask <subtaskId>\n\n- Details about changes...\n- Updated rule Y for pattern Z').changeset.md). If so, run npm run changeset, stage the generated file, and amend the commit or create a new one.Proceed to Next Subtask:
next_task / task-master next).rg "export (async function|function|const) \w+" or similar patterns.This workflow provides a general guideline. Adapt it based on your specific project needs and team practices.