Skip to content
/

Taskmaster AI

taskmaster-ai · eyaltoledano/claude-task-master · ★ 27k · last commit 2026-04-23

Converts a PRD into a dependency-ordered JSON task graph that AI coding agents execute one task at a time, eliminating context overload in long-running AI-driven development sessions.

Best whenThe AI agent should be stateless across sessions; all project memory belongs in structured files (tasks.json), not in conversation history or model weights.
Skip ifManually editing tasks.json, Manually editing .taskmaster/config.json (use `task-master models` instead)
Primitive shape 38 total
Commands 37 MCP tools 1
00

Summary

Taskmaster AI — Summary

Taskmaster AI (package: task-master-ai) is an AI-powered task-management system that converts a Product Requirements Document into a dependency-ordered JSON task graph and then exposes that graph—via an MCP server or a CLI—to any AI coding assistant for step-by-step implementation.

The problem it solves is "AI context overload": coding agents given an entire codebase plus an unstructured spec hallucinate, lose track, and contradict themselves; Taskmaster externalizes the plan into a machine-readable file so the agent only carries one task at a time.

What makes it distinct is the three-role model architecture (main / research / fallback), the tiered MCP tool set (core 7 / standard 14 / all 42+ tools), the analyze-complexityexpand loop that produces recommended subtask counts before breakdown, and native support for 20+ LLM providers—including zero-cost CLI providers such as Claude Code, Codex CLI, Gemini CLI, and Grok CLI.

The primary audience is solo developers and small teams who use AI-first editors (Cursor, Windsurf, VS Code, Roo, Claude Code) and want a persistent, resumable, multi-session development plan without adopting a heavyweight project-management tool.

Taskmaster is production-ready: it ships as a versioned npm package (v0.43.1 at time of analysis), has 27,000+ GitHub stars, 30 contributors, active CI, and a growing paid Hamster Studio ecosystem built on top of it.

01

Overview

Taskmaster AI — Overview

Origin Story

Taskmaster was created by Eyal Toledano and Ralph (@RalphEcom) and first published on GitHub on 4 March 2025. It emerged from the practical frustration of using Cursor AI on non-trivial projects: without an external plan, the AI agent would lose track of progress across sessions, re-implement completed work, and fail to respect feature dependencies.

Tagline / Intro (verbatim from README)

Taskmaster: A task management system for AI-driven development, designed to work seamlessly with any AI chat.

The package description in package.json reads:

"A task management system for ambitious AI-driven development that doesn't overwhelm and confuse Cursor."

Philosophy and Problem Framing

Taskmaster's core thesis is that AI coding assistants break down on large projects not because of model capability but because of context management. A PRD plus a whole codebase plus a conversation history exceeds what any model can reason about coherently. The solution is to decompose the project upfront into a small, structured task list stored in .taskmaster/tasks/tasks.json, and then feed the agent only the single next task.

The framework does not prescribe a specific workflow at the level of commits or branches; instead it provides the plumbing — task IDs, dependency tracking, status management, subtask expansion — and leaves the AI free to implement however it sees fit. This "thin manager" philosophy means Taskmaster integrates into any existing workflow rather than replacing it.

The research mode addresses a second class of problems: LLM training-data cutoffs. By routing planning and expansion queries through a Perplexity (or other online-search-enabled) model, Taskmaster can inject current library versions, deprecation warnings, and current best practices directly into the task details before the coding agent ever sees them.

Ecosystem Positioning

Taskmaster is the foundation of a broader commercial product called Hamster (tryhamster.com). The open-source tool handles task management; Hamster Studio adds brief management, team collaboration, and authenticated context reconnection (tm context <brief-url>). The README links to Hamster's paid tier for team features, but the core tool remains MIT-licensed (with a Commons Clause restricting commercial resale).

Community Reception

The project reached 27,000+ GitHub stars within roughly 14 months of launch and was trending on GitHub in early 2025. The dominant sentiment in community discussions is positive, focused on how it brings discipline to "vibe coding" sessions and enables long-running multi-session projects that would previously fall apart.

02

Architecture

Taskmaster AI — Architecture

Distribution Type

npm-package + mcp-server

The package ships as task-master-ai on npm and exposes two binaries: task-master (CLI) and task-master-mcp / task-master-ai (MCP server). Both are compiled via tsdown into dist/.

Install Methods

# Global CLI
npm install -g task-master-ai

# One-shot MCP via npx (no install required)
npx -y task-master-ai

# Claude Code quick-add
claude mcp add taskmaster-ai -- npx -y task-master-ai

# Cursor one-click deeplink (installs MCP config automatically)
# see README badge link

File / Directory Layout (top-level of repo)

claude-task-master/
├── .claude/                    # Claude Code integration
│   ├── commands/               # Slash commands (dedupe.md, go/)
│   ├── TM_COMMANDS_GUIDE.md
│   └── hamster.md              # Hamster Studio workflow guide
├── .cursor/
│   ├── commands/goham.md
│   └── mcp.json
├── .kiro/                      # Kiro editor support
├── .taskmaster/                # Runtime project state (generated)
│   ├── config.json             # Model + global config
│   ├── CLAUDE.md               # Agent integration guide (auto-loaded)
│   ├── tasks/
│   │   ├── tasks.json          # Main task database (multi-tag)
│   │   └── task-*.md           # Individual task files
│   ├── docs/                   # PRD lives here
│   ├── reports/                # task-complexity-report.json
│   └── templates/
│       ├── example_prd.md
│       └── example_prd_rpg.md
├── mcp-server/
│   ├── server.js               # Entry point
│   └── src/
│       ├── index.js            # TaskMasterMCPServer class (FastMCP)
│       ├── tools/              # ~42 individual MCP tool files
│       │   ├── tool-registry.js
│       │   └── *.js
│       ├── core/               # Bridges to tm-core logic
│       └── providers/
├── src/
│   ├── ai-providers/           # 20+ provider classes
│   ├── prompts/                # JSON prompt templates (Handlebars)
│   │   ├── parse-prd.json
│   │   ├── expand-task.json
│   │   ├── analyze-complexity.json
│   │   ├── research.json
│   │   ├── add-task.json
│   │   ├── update-task.json
│   │   └── update-subtask.json
│   ├── constants/
│   ├── schemas/
│   └── task-master.js          # CLI entry
├── packages/                   # Monorepo packages (tm-core, etc.)
├── apps/                       # Monorepo apps (cli, mcp extension)
├── .env.example                # API key template
├── .mcp.json                   # Project-level MCP config
├── CLAUDE.md                   # Root CLAUDE.md (imports .taskmaster/CLAUDE.md)
└── package.json

Required Dependencies

  • Runtime: Node.js (.nvmrc present; repo targets Node ≥18)
  • npm package: task-master-ai from npm registry
  • AI provider API key: At least one of Anthropic, OpenAI, Google, Perplexity, xAI, Mistral, Groq, OpenRouter, Azure OpenAI, or one of the zero-cost CLI providers (Claude Code, Codex CLI, Gemini CLI, Grok CLI)

No Python, no Docker, no database.

Configuration Files

File Purpose
.taskmaster/config.json AI model selection (main / research / fallback roles), global defaults, log level
.env API keys for CLI usage
.mcp.json (or editor-specific path) API keys + TASK_MASTER_TOOLS tier for MCP usage
.taskmaster/tasks/tasks.json Task database — never edit manually
CLAUDE.md (root) Imports .taskmaster/CLAUDE.md for Claude Code auto-loading
.taskmaster/CLAUDE.md Full agent integration guide, workflow commands, best practices

Monorepo Structure

The repo uses npm workspaces + Turborepo:

  • packages/tm-core — all business logic
  • apps/cli — thin CLI presentation layer (Commander)
  • apps/mcp — thin MCP presentation layer (FastMCP)
  • apps/docs — Mintlify documentation site
03

Components

Taskmaster AI — Components

Commands (Claude Code slash commands)

Located in .claude/commands/ (project-scoped, not global Claude Code commands). The TM_COMMANDS_GUIDE.md documents an extensive /project:tm/ namespace:

Count: 40+ documented command paths

Command path Purpose
/project:tm/setup/install Full installation guide
/project:tm/setup/quick-install One-line install
/project:tm/init Initialize project
/project:tm/init/quick Quick init with -y flag
/project:tm/models View AI config
/project:tm/models/setup Configure AI interactively
/project:tm/parse-prd Generate tasks from PRD
/project:tm/parse-prd/with-research Enhanced parsing with research model
/project:tm/generate Create individual task files
/project:tm/list List tasks with natural language filters
/project:tm/list/with-subtasks Hierarchical task view
/project:tm/list/by-status <status> Filter by status
/project:tm/show <id> Task detail view
/project:tm/add-task Create task
/project:tm/update Update multiple tasks
/project:tm/remove-task Delete task
/project:tm/set-status/to-pending <id> Mark pending
/project:tm/set-status/to-in-progress <id> Mark in-progress
/project:tm/set-status/to-done <id> Mark done
/project:tm/set-status/to-review <id> Mark in-review
/project:tm/set-status/to-deferred <id> Mark deferred
/project:tm/set-status/to-cancelled <id> Mark cancelled
/project:tm/analyze-complexity AI complexity analysis
/project:tm/complexity-report View complexity report
/project:tm/expand <id> Break down a task
/project:tm/expand/all Expand all complex tasks
/project:tm/add-dependency Add task dependency
/project:tm/remove-dependency Remove dependency
/project:tm/validate-dependencies Check for issues
/project:tm/fix-dependencies Auto-fix dependency issues
/project:tm/workflows/smart-flow Adaptive workflow
/project:tm/workflows/pipeline Chain commands
/project:tm/workflows/auto-implement AI auto-implementation
/project:tm/status Project dashboard
/project:tm/next Next task recommendation
/project:tm/utils/analyze Project analysis
/project:tm/learn Interactive help

Skills

(none) — Taskmaster does not ship Claude Code skill files (.claude/skills/).

Subagents

(none) — Taskmaster does not define named subagent personas in Claude Code's agents/ format. However, the .claude/hamster.md file documents a "Hamster brief" workflow where the agent is instructed to spawn parallel sub-agents for non-overlapping subtasks.

Hooks

(none) — No Claude Code hooks (PreToolUse, PostToolUse, etc.) are defined in the repo.

MCP Server and Tools

MCP server name: task-master-ai
Framework: FastMCP (Node.js)
Transport: stdio

Tools are grouped into three tiers controlled by the TASK_MASTER_TOOLS env var:

Core tier (7 tools — default)

Tool Purpose
get_tasks List all tasks with status
next_task Find next available task by dependency/status
get_task Get detailed info for a specific task ID
set_task_status Update task/subtask status
update_subtask Append implementation notes to a subtask
parse_prd Parse PRD file → generate tasks.json
expand_task Break a task into subtasks

Standard tier adds (7 more = 14 total)

initialize_project, analyze_project_complexity, expand_all, add_subtask, remove_task, add_task, complexity_report

All tier adds (42+ total — complete list)

update, update_task, clear_subtasks, move_task, remove_subtask, add_dependency, remove_dependency, validate_dependencies, fix_dependencies, list_tags, add_tag, delete_tag, use_tag, rename_tag, copy_tag, research, models, rules, response-language, scope_up_task, scope_down_task, get_operation_status, autopilot_start, autopilot_resume, autopilot_next, autopilot_status, autopilot_complete, autopilot_commit, autopilot_finalize, autopilot_abort, generate

Scripts / Binaries

Binary Source Purpose
task-master dist/task-master.js Full CLI (Commander-based)
task-master-mcp dist/mcp-server.js MCP server entry point
task-master-ai dist/mcp-server.js Alias for MCP server (used with npx)

Key CLI commands

init, parse-prd, models, list, show, next, set-status, add-task, expand, expand --all, update, update-task, update-subtask, analyze-complexity, complexity-report, add-dependency, remove-dependency, validate-dependencies, fix-dependencies, add-subtask, remove-subtask, clear-subtasks, move, generate, migrate, research, add-tag, delete-tag, use-tag, list-tags, rename-tag, copy-tag, scope-up, scope-down, rules

05

Prompts

Taskmaster AI — Prompts

All prompts live in src/prompts/*.json and use Handlebars ({{}}) for parameter interpolation. Each file has a parameters schema and a prompts object with named variants (default, research, complexity-report, append, etc.). The actual template strings are passed to the AI SDK at call time.


1. parse-prd — System Prompt (verbatim, src/prompts/parse-prd.json)

This is the most important prompt in the framework. It converts a PRD into a structured tasks array.

You are an AI assistant specialized in analyzing Product Requirements Documents (PRDs) and generating a structured, logically ordered, dependency-aware and sequenced list of development tasks in JSON format.{{#if research}}
Before breaking down the PRD into tasks, you will:
1. Research and analyze the latest technologies, libraries, frameworks, and best practices that would be appropriate for this project
2. Identify any potential technical challenges, security concerns, or scalability issues not explicitly mentioned in the PRD without discarding any explicit requirements or going overboard with complexity -- always aim to provide the most direct path to implementation, avoiding over-engineering or roundabout approaches
3. Consider current industry standards and evolving trends relevant to this project (this step aims to solve LLM hallucinations and out of date information due to training data cutoff dates)
4. Evaluate alternative implementation approaches and recommend the most efficient path
5. Include specific library versions, helpful APIs, and concrete implementation guidance based on your research
6. Always aim to provide the most direct path to implementation, avoiding over-engineering or roundabout approaches

Your task breakdown should incorporate this research, resulting in more detailed implementation guidance, more accurate dependency mapping, and more precise technology recommendations than would be possible from the PRD text alone, while maintaining all explicit requirements and best practices and all details and nuances of the PRD.{{/if}}

Analyze the provided PRD content and generate {{#if (gt numTasks 0)}}approximately {{numTasks}}{{else}}an appropriate number of{{/if}} top-level development tasks. If the complexity or the level of detail of the PRD is high, generate more tasks relative to the complexity of the PRD
Each task should represent a logical unit of work needed to implement the requirements and focus on the most direct and effective way to implement the requirements without unnecessary complexity or overengineering. Include pseudo-code, implementation details, and test strategy for each task. Find the most up to date information to implement each task.
Assign sequential IDs starting from {{nextId}}. Infer title, description, details, and test strategy for each task based *only* on the PRD content.
Set status to 'pending', dependencies to an empty array [], and priority to '{{defaultTaskPriority}}' initially for all tasks.
Generate a response containing a single key "tasks", where the value is an array of task objects adhering to the provided schema.

Each task should follow this JSON structure:
{
	"id": number,
	"title": string,
	"description": string,
	"status": "pending",
	"dependencies": number[] (IDs of tasks this depends on),
	"priority": "high" | "medium" | "low",
	"details": string (implementation details),
	"testStrategy": string (validation approach)
}

Guidelines:
1. {{#if (gt numTasks 0)}}Unless complexity warrants otherwise{{else}}Depending on the complexity{{/if}}, create {{#if (gt numTasks 0)}}exactly {{numTasks}}{{else}}an appropriate number of{{/if}} tasks, numbered sequentially starting from {{nextId}}
2. Each task should be atomic and focused on a single responsibility following the most up to date best practices and standards
3. Order tasks logically - consider dependencies and implementation sequence
4. Early tasks should focus on setup, core functionality first, then advanced features
5. Include clear validation/testing approach for each task
6. Set appropriate dependency IDs (a task can only depend on tasks with lower IDs, potentially including existing tasks with IDs less than {{nextId}} if applicable)
7. Assign priority (high/medium/low) based on criticality and dependency order
8. Include detailed implementation guidance in the "details" field{{#if research}}, with specific libraries and version recommendations based on your research{{/if}}
9. If the PRD contains specific requirements for libraries, database schemas, frameworks, tech stacks, or any other implementation details, STRICTLY ADHERE to these requirements in your task breakdown and do not discard them under any circumstance
10. Focus on filling in any gaps left by the PRD or areas that aren't fully specified, while preserving all explicit requirements
11. Always aim to provide the most direct path to implementation, avoiding over-engineering or roundabout approaches{{#if research}}
12. For each task, include specific, actionable guidance based on current industry standards and best practices discovered through research{{/if}}

User prompt (condensed): Optionally injects codebase analysis instructions (Glob/Grep/Read tools), then the PRD content, then: IMPORTANT: Your response must be a JSON object with a "tasks" property containing an array of task objects.

Prompting technique: Conditional Handlebars blocks ({{#if research}}) switch the system persona between a "straight PRD decomposer" and a "research-augmented architect". The schema is embedded verbatim in the system prompt to eliminate format drift.


2. expand-task — System Prompt (verbatim, default variant, src/prompts/expand-task.json)

You are an AI assistant helping with task breakdown for software development. Break down high-level tasks into specific, actionable subtasks that can be implemented sequentially.

IMPORTANT: Your response MUST be a JSON object with a "subtasks" property containing an array of subtask objects. Each subtask must include ALL of the following fields:
- id: MUST be sequential integers starting EXACTLY from {{nextSubtaskId}}. First subtask id={{nextSubtaskId}}, second id={{nextSubtaskId}}+1, etc. DO NOT use any other numbering pattern!
- title: A clear, actionable title (5-200 characters)
- description: A detailed description (minimum 10 characters)
- dependencies: An array of task IDs this subtask depends on (can be empty [])
- details: Implementation details (minimum 20 characters)
- status: Must be "pending" for new subtasks
- testStrategy: Testing approach (can be null)

You may optionally include a "metadata" object. Do not include any other top-level properties.

User prompt (default): Optionally injects codebase analysis instructions, then:

Break down this task into {{#if (gt subtaskCount 0)}}exactly {{subtaskCount}}{{else}}an appropriate number of{{/if}} specific subtasks:

Task ID: {{task.id}}
Title: {{task.title}}
Description: {{task.description}}
Current details: {{#if task.details}}{{task.details}}{{else}}None{{/if}}
...
CRITICAL: You MUST use sequential IDs starting from {{nextSubtaskId}}. The first subtask MUST have id={{nextSubtaskId}}, the second MUST have id={{nextSubtaskId}}+1, and so on. Do NOT use parent task ID in subtask numbering!

Prompting technique: The CRITICAL: prefix on the ID constraint reflects a hard-learned lesson — early versions produced subtasks numbered 1.1, 1.2 (inheriting the parent ID). The constraint is repeated twice, in the system prompt schema definition and in the user prompt, to reinforce it.

The complexity-report variant injects the expansionPrompt generated by analyze-complexity as additional context, creating a loop where the complexity analysis directly shapes how tasks are broken down.


3. MCP Tool Definition — parse_prd (verbatim, mcp-server/src/tools/parse-prd.js)

server.addTool({
  name: 'parse_prd',
  description: `Parse a Product Requirements Document (PRD) text file to automatically generate initial tasks. Reinitializing the project is not necessary to run this tool. It is recommended to run parse-prd after initializing the project and creating/importing a prd.txt file in the project root's ${TASKMASTER_DOCS_DIR} directory.`,

  parameters: z.object({
    input: z
      .string()
      .optional()
      .default(PRD_FILE)
      .describe('Absolute path to the PRD document file (.txt, .md, etc.)'),
    projectRoot: z
      .string()
      .describe('The directory of the project. Must be an absolute path.'),
    tag: z.string().optional().describe('Tag context to operate on'),
    output: z
      .string()
      .optional()
      .describe(
        `Output path for tasks.json file (default: ${TASKMASTER_TASKS_FILE})`
      ),
    numTasks: z
      .string()
      .optional()
      .describe(
        'Approximate number of top-level tasks to generate (default: 10). As the agent, if you have enough information, ensure to enter a number of tasks that would logically scale with project complexity. Setting to 0 will allow Taskmaster to determine the appropriate number of tasks based on the complexity of the PRD. Avoid entering numbers above 50 due to context window limitations.'
      ),
    force: z
      .boolean()
      .optional()
      .default(false)
      .describe('Overwrite existing output file without prompting.'),
    research: z
      .boolean()
      .optional()
      .describe(
        'Enable Taskmaster to use the research role for potentially more informed task generation. Requires appropriate API key.'
      ),
    append: z
      .boolean()
      .optional()
      .describe('Append generated tasks to existing file.')
  }),
  annotations: {
    title: 'Parse PRD',
    destructiveHint: true
  },
  execute: withNormalizedProjectRoot(
    async (args, { log, session, reportProgress }) => {
      // ... delegates to parsePRDDirect() in tm-core
    }
  )
});

Prompting technique for tool descriptions: Parameter descriptions in MCP tools are written as agent-facing instructions, not user-facing docs. For example, numTasks description says "As the agent, if you have enough information, ensure to enter a number of tasks that would logically scale with project complexity" — the tool schema doubles as a prompt that shapes agent behavior when the agent must decide what arguments to pass.


4. analyze-complexity — System Prompt (verbatim, src/prompts/analyze-complexity.json)

You are an expert software architect and project manager analyzing task complexity. Your analysis should consider implementation effort, technical challenges, dependencies, and testing requirements.

IMPORTANT: For each task, provide an analysis object with ALL of the following fields:
- taskId: The ID of the task being analyzed (positive integer)
- taskTitle: The title of the task
- complexityScore: A score from 1-10 indicating complexity
- recommendedSubtasks: Number of subtasks recommended (non-negative integer; 0 if no expansion needed)
- expansionPrompt: A prompt to guide subtask generation
- reasoning: Your reasoning for the complexity score

Your response MUST be a JSON object with a single "complexityAnalysis" property containing an array of these analysis objects. You may optionally include a "metadata" object, but no other top-level properties.

User prompt: Optionally injects codebase analysis, then the task array as JSON, then gathered project context.

Prompting technique: The expansionPrompt field in the output becomes the expansionPrompt parameter in the subsequent expand-task call. This is a structured "prompt-as-data" pattern: the complexity analysis LLM writes prompts that the expansion LLM consumes, creating a two-stage reasoning chain without chaining raw conversation history.


5. Agent Integration Guide (.taskmaster/CLAUDE.md) — Key Excerpt

The .taskmaster/CLAUDE.md file is automatically loaded by Claude Code at session start. It functions as a persistent system-level prompt supplement. Critical behavior shaping excerpt:

## Claude Code Best Practices with Task Master

### Context Management
- Use `/clear` between different tasks to maintain focus
- This CLAUDE.md file is automatically loaded for context
- Use `task-master show <id>` to pull specific task context when needed

### Iterative Implementation
1. `task-master show <subtask-id>` - Understand requirements
2. Explore codebase and plan implementation
3. `task-master update-subtask --id=<id> --prompt="detailed plan"` - Log plan
4. `task-master set-status --id=<id> --status=in-progress` - Start work
5. Implement code following logged plan
6. `task-master update-subtask --id=<id> --prompt="what worked/didn't work"` - Log progress
7. `task-master set-status --id=<id> --status=done` - Complete task

Technique: The CLAUDE.md doubles as a tool-allowlist manifest and workflow protocol. The recommended .claude/settings.json block restricts the agent to only Taskmaster-approved bash patterns, preventing scope creep:

{
  "allowedTools": [
    "Edit",
    "Bash(task-master *)",
    "Bash(git commit:*)",
    "Bash(git add:*)",
    "Bash(npm run *)",
    "mcp__task_master_ai__*"
  ]
}
09

Uniqueness

Taskmaster AI — Uniqueness

What Does This Do That No Other Seed Framework Does?

Three-role LLM architecture with 20+ provider support. Taskmaster is the only framework in this analysis set that assigns distinct AI models to three separate roles (main, research, fallback) with fully independent provider selection per role. A project can use claude-code/opus as its main thinker, perplexity/sonar-reasoning-pro as its research enricher, and claude-code/sonnet as a fallback — all configured in a single config.json with per-role model parameters.

Complexity analysis as a first-class planning gate. The analyze-complexityexpansionPromptexpand-task pipeline is unique: the complexity LLM writes the prompts that the expansion LLM uses, so every task's breakdown is guided by AI-generated expansion instructions rather than a generic "break into N subtasks" command.

Tiered MCP tool loading. The TASK_MASTER_TOOLS env var (core/standard/all/custom list) lets operators reduce MCP context overhead by up to 70% without losing functionality — a capability no other framework in the seed set exposes.

Zero-cost CLI providers. Native support for Claude Code CLI, Codex CLI, Gemini CLI, and Grok CLI as AI backends means the tool can operate without any API billing — a practical difference for individual developers and students.

Multi-tag task namespacing. The tasks.json schema supports multiple named workstreams (tags) in a single file, enabling parallel feature tracks or team branches without separate task files.

What Does It Explicitly Drop That Others Have?

  • No Gherkin / BDD spec format. Taskmaster uses JSON for tasks and markdown for PRDs; there is no Given/When/Then structure.
  • No git-native branching enforcement. Unlike BMAD or Claude-Flow, Taskmaster does not automate branch creation per task. Git integration is manual or guided via example commands.
  • No built-in test runner invocation. The testStrategy field is guidance, not enforcement. There is no hook that runs tests before set-status done is accepted.
  • No agent persona library. Taskmaster has no "architect agent", "QA agent", "PM agent" persona files. The AI role is monolithic — one model, one conversation per task.
  • No spec/plan intermediate artifact. The pipeline goes PRD → tasks.json directly. There is no spec.md or plan.md generated before tasks.

One-Sentence Positioning

Taskmaster is the only framework that treats the task list as a durable, AI-readable database and the AI agent as a stateless task-runner, removing context management from the agent and placing it in structured JSON files that persist across sessions and tools.

Failure Modes / Criticisms

Based on community discussion patterns and the repo's own open issues:

  1. "API keys in two places" — keys must be in both .env (for CLI) and .mcp.json (for MCP), and many users set only one location, causing silent failures. The .taskmaster/CLAUDE.md addresses this but the UX friction remains.

  2. tasks.json merge conflicts — In team settings, concurrent edits to the same tasks.json produce git conflicts that are hard to resolve without semantic understanding of the JSON structure. The repo documents task-master move as a conflict resolution tool, but this requires manual coordination.

  3. Context window cost of all tier — Loading all 42+ MCP tools consumes ~21,000 tokens of context on every message, a non-trivial cost in long coding sessions. The tiered loading feature mitigates this, but requires explicit opt-in.

  4. "Never manually edit tasks.json" is frequently violated — The instruction exists because manual edits break integrity, but the file is plain JSON and developers habitually open it. This is a UX design tension without a technical guard.

  5. Autopilot is experimental — The autopilot_* tool suite (TDD autonomous loop) is present in the registry but appears to be in active development; community guidance defaults to the manual workflow.

Inspired By

(none stated in README or docs)

Competitors Named in README

(none named directly) — The positioning is entirely self-referential; no competitor frameworks are mentioned by name.

Forks / Derivatives

2,540 forks on GitHub. No specific named derivative projects are identified in the README.

The commercial product Hamster Studio (tryhamster.com) is the creator-owned extension of Taskmaster, not a fork. It adds brief management, team collaboration, and authenticated context reconnection.

04

Workflow

Taskmaster AI — Workflow

Workflow Phases

Phase 1 — Initialize

Command: task-master init / initialize_project
Artifact: .taskmaster/ directory structure, config.json, CLAUDE.md placed in project
Human gate: User must supply API keys before any AI-powered step runs.

Phase 2 — PRD Authoring

Action: User writes PRD and places it at .taskmaster/docs/prd.md (or .txt)
Artifact: prd.md — free-form markdown product requirements document
Human gate: User writes or provides the PRD. An example template (example_prd.md) scaffolds the structure: Overview, Core Features, User Experience, Technical Architecture, Development Roadmap, Logical Dependency Chain, Risks and Mitigations.

Phase 3 — Parse PRD → tasks.json

Command: task-master parse-prd / parse_prd
AI call: Main model (with optional research model enrichment via --research)
Artifact: .taskmaster/tasks/tasks.json — multi-tag JSON object; each tag (default: master) holds an array of top-level task objects
Human gate: Optional --force flag to overwrite; user can --append to an existing file.

Task JSON structure:

{
  "id": 1,
  "title": "Implement Task Data Structure",
  "description": "...",
  "status": "pending",
  "dependencies": [],
  "priority": "high",
  "details": "...",
  "testStrategy": "...",
  "subtasks": []
}

Phase 4 — Complexity Analysis

Command: task-master analyze-complexity / analyze_project_complexity
AI call: Main model; optional research enrichment
Artifact: .taskmaster/reports/task-complexity-report.json — each task gets a complexityScore (1–10), recommendedSubtasks count, and an expansionPrompt
Human gate: User reviews the report; can tune threshold.

Phase 5 — Expand Tasks → Subtasks

Command: task-master expand --id=<n> or expand --all / expand_task / expand_all
AI call: Main model; uses expansionPrompt from complexity report if available
Artifact: Subtasks added inside each task object in tasks.json; individual task-<n>.md files optionally generated
Human gate: User can specify --num to override subtask count; --force to re-expand.

Phase 6 — Daily Development Loop

Commands: task-master nexttask-master show <id> → implement → task-master update-subtasktask-master set-status --status=done
Artifacts: Updated tasks.json statuses; implementation notes logged into subtask details field
Human gate: Developer decides what to implement; confirms task completion.

Phase 7 — Multi-Task Updates

Command: task-master update --from=<id> / update
AI call: Main model
Purpose: Re-plan all tasks from a given ID onwards when requirements change
Artifact: Updated task objects with preserved done subtasks

Human Approval Gates

  1. After writing the PRD (before parse-prd)
  2. After reviewing complexity report (before mass-expand)
  3. Before running update --from=<id> on many tasks (destructive re-plan)
  4. Before running parse-prd --force (overwrites existing tasks)
  5. Hamster Studio workflow: before splitting into multiple PRs (explicit confirmation required per .claude/hamster.md)

TDD Enforcement

Optional — Taskmaster includes a testStrategy field in every task and subtask, and the system prompts explicitly instruct the LLM to fill it with a validation approach. However, there is no enforcement mechanism; no test runner is invoked, and no gate prevents marking a task done without tests.

The autopilot tools (autopilot_start, autopilot_next, autopilot_commit, etc.) implement a TDD-flavored autonomous loop — documented as the "autonomous-tdd-git-workflow" tag in the repo's own task database — but this is a separate experimental feature, not the default path.

Evidence from CLAUDE.md:

"Bug Fix Workflow: 1. Encounter a bug, 2. Write a failing test that reproduces it, 3. Fix the bug, 4. Verify test now passes, 5. Commit both fix and test together"

Multi-Agent Execution

Yes — documented in .taskmaster/CLAUDE.md:

"For complex projects, use multiple Claude Code sessions: Terminal 1: Main implementation, Terminal 2: Testing and validation, Terminal 3: Documentation updates"

The Hamster workflow (hamster.md) formalizes parallel subtask execution: when subtasks touch different files, spawn sub-agents for each; verify separation of work before parallelizing.

Git Worktrees / Isolated Workspaces

Yes — explicitly documented as a supported pattern:

git worktree add ../project-auth feature/auth-system
git worktree add ../project-api feature/api-refactor
cd ../project-auth && claude
cd ../project-api && claude

Each worktree runs its own Claude Code session; the shared tasks.json (in the main tree) provides coordination.

Spec Format

JSON — tasks.json is the canonical artifact. The PRD itself is free-form markdown (.md recommended over .txt for editor support).

Files Generated Per Feature

File Description
.taskmaster/tasks/tasks.json Master task database (all tasks, all tags)
.taskmaster/tasks/task-<n>.md Optional per-task markdown files (via generate command)
.taskmaster/reports/task-complexity-report.json Complexity analysis output
.taskmaster/docs/prd.md Input PRD (user-provided)
06

Memory Context

Taskmaster AI — Memory & Context

Memory Model

file-based

All state is stored in plain JSON files on disk under .taskmaster/. There is no in-memory store, no database, no vector index, and no external service dependency for memory.

Persistence Scope

project

The .taskmaster/ directory lives inside the project root and is version-controlled (or gitignored) by the developer. State survives process restarts, editor restarts, and machine reboots as long as the files persist on disk.

Context Compaction Strategy

Taskmaster addresses context loss indirectly through its architecture rather than through a compaction command:

  1. Task-scoped context loading: The get_task / task-master show <id> command loads only the single task being worked on, not the entire task graph. This keeps per-implementation context small.
  2. Explicit /clear guidance: The .taskmaster/CLAUDE.md instructs agents to run /clear between tasks to reset conversation context: "Use /clear between different tasks to maintain focus".
  3. update-subtask as an append log: Instead of relying on conversation memory, agents are instructed to write implementation notes back into the subtask details field via update-subtask. This externalizes memory into the file.
  4. update-subtask --append mode: A dedicated append mode (distinct from full update) adds notes without overwriting, providing an incremental log of what was tried.
  5. Multi-tag architecture: Complex projects can split task sets into named tags (e.g., feature-auth, bug-fixes), each isolated in tasks.json under its own key, preventing one workstream's context from polluting another.

Cross-Session Handoffs

Yes — explicit mechanism exists.

The primary cross-session handoff is the tasks.json file itself. At the start of a new session, the agent runs:

task-master next        # Finds the next pending task based on dependencies/status
task-master show <id>   # Loads context for that specific task

The Hamster Studio integration adds a more explicit handoff mechanism:

  • tm context <brief-url> — Reconnects the agent to the Hamster brief context
  • tm auth refresh — Refreshes the authentication token
  • Brief URL stored at the start of each session as the primary handoff anchor

References to Memory / Knowledge Base Concepts

  • "Implementation notes": The update-subtask command is explicitly framed as a knowledge capture tool — agents log what worked, what didn't, and what the next steps are, creating a persistent implementation journal.
  • "Gathered context": Several prompt templates include a gatheredContext parameter that can inject project-wide context (from a codebase scan) into any AI call, providing ambient project memory without requiring the agent to re-read files.
  • "Codebase analysis": The hasCodebaseAnalysis flag in parse-prd, expand-task, and analyze-complexity enables the LLM to call Glob/Grep/Read tools during task generation, so the task plan reflects actual codebase state rather than abstract PRD assumptions.
  • state.json: A .taskmaster/state.json file exists in the repo (observed in directory listing) for session state tracking, though its full schema is not documented in public-facing materials.
07

Target Tools

Taskmaster AI — Target Tools

Officially Supported AI Coding Tools

All of the following are explicitly named in the README, docs, or configuration files.

cursor

Primary target. The README tagline originally read "designed to work seamlessly with Cursor AI." One-click install via Cursor deeplink badge is prominently featured. Configuration path: ~/.cursor/mcp.json (global) or <project>/.cursor/mcp.json (project). Cursor MCP settings UI referenced in setup instructions.

Compatibility: Full — the TASK_MASTER_TOOLS env var is set in the Cursor MCP JSON config.

claude-code

First-class support. The CLAUDE.md system is built specifically for Claude Code's auto-loading behavior. Claude Code is also supported as a zero-cost AI provider (via the claude-code provider type in config.json), not just as an AI tool host.

Install:

claude mcp add taskmaster-ai -- npx -y task-master-ai

Compatibility: Full — dedicated docs/examples/claude-code-usage.md, own provider class (src/ai-providers/claude-code.js), command guide (.claude/TM_COMMANDS_GUIDE.md), and slash commands (.claude/commands/).

windsurf

Named explicitly in the README tagline: "An AI-powered task-management system you can drop into Cursor, Lovable, Windsurf, Roo, and others."

Config path: ~/.codeium/windsurf/mcp_config.json (global)

Compatibility: Full via MCP — same mcpServers JSON block as Cursor.

roo

Named explicitly in the README tagline. Also referenced in the task-master rules add windsurf,roo,vscode CLI example.

Compatibility: Full via MCP.

codex

Codex CLI (OpenAI's CLI) supported as an AI provider via codex-cli provider type. The .taskmaster/tasks/tasks.json in the repo itself contains a cc-kiro-hooks and other Codex-related tags, indicating active internal use.

Install docs: docs/examples/codex-cli-usage.md exists in the repo.

Compatibility: Full as provider; MCP tool host status not explicitly documented.

gemini-cli

Supported as a zero-cost AI provider via gemini-cli provider type (src/ai-providers/gemini-cli.js). Available models include gemini-3-flash-preview, gemini-2.5-pro, gemini-2.5-flash.

Compatibility: Provider only; no dedicated editor integration docs found.

VS Code

Listed in the MCP config table: Config path: <project_folder>/.vscode/mcp.json (project-scope only) Key difference: Uses "servers" (not "mcpServers") and requires "type": "stdio".

Compatibility: Full via MCP with minor config difference.

lovable

Named in the README tagline. No dedicated docs found.

Compatibility: Via MCP (assumed standard stdio config).

Q CLI (Amazon Q Developer)

Listed in MCP config table: Config path: ~/.aws/amazonq/mcp.json

Compatibility: Full via MCP.

kiro

A .kiro/ directory exists in the repo root, indicating active Kiro editor support.

Compatibility: Supported (config details in .kiro/ dir, not fully enumerated in public docs).

openrouter

Supported as an AI provider (not an editor tool). Routes to any model available on OpenRouter. Configured via OPENROUTER_API_KEY.

Summary Table

Tool Role Evidence
cursor Primary editor host README tagline, deeplink badge, config table
claude-code Editor host + AI provider Dedicated docs, own provider class, CLAUDE.md
windsurf Editor host README tagline, config table
roo Editor host README tagline
codex AI provider + editor host Provider class, usage docs
gemini-cli AI provider Provider class
grok-cli AI provider Provider class (src/ai-providers/grok-cli.js)
VS Code Editor host Config table
lovable Editor host README tagline
Q CLI Editor host Config table
kiro Editor host .kiro/ directory present
08

Signals

Taskmaster AI — Signals

GitHub Stars

27,254 (fetched 2026-05-26 via gh api /repos/eyaltoledano/claude-task-master)

The raw README screenshot (captured at time of the raw seed file) showed 27.3k stars. The repo has been consistently trending and is one of the highest-starred AI development workflow tools created in 2025.

Last Commit Date

2026-04-23 (2026-04-23T12:07:23Z — from latest commit on main branch)

Number of Contributors

30 (fetched 2026-05-26 via gh api /repos/eyaltoledano/claude-task-master/contributors)

Forks

2,540 — indicating significant adoption and derivative projects.

Open Issues

192 open issues + 39 open PRs — consistent with an active, growing project that has more feature requests than bandwidth.

Reddit / HN Sentiment

Positive — Based on the patterns visible in the community:

The project launched in early March 2025 and became one of the most discussed AI dev-workflow tools on r/cursor and r/ClaudeAI. Dominant sentiment:

  • Solves the "AI loses track after 3 hours" problem that is endemic to long coding sessions
  • Praised for enabling "vibe coding on real projects" rather than toy demos
  • The --research flag (Perplexity integration) praised for avoiding outdated library recommendations
  • Criticism centers on initial setup complexity (API keys in two places) and the occasional "tasks.json conflict" in team scenarios

The repo's README directly links to a Discord server (discord.gg/taskmasterai) indicating an active community.

HN sentiment: unknown — no specific HN thread data available in the seed materials.

Maintainer Status

Active

Evidence:

  • Version 0.43.1 at time of analysis (frequent releases)
  • CI badge (GitHub Actions) is actively passing
  • .changeset/ directory indicates managed release process
  • Last commit April 2026, updated May 2026
  • Active commercial ecosystem (Hamster Studio) provides financial incentive to maintain the OSS tool
  • 30 contributors suggests distributed maintenance rather than single-maintainer bus-factor risk
  • The package is the foundation of tryhamster.com, a funded product

npm Package

Package name: task-master-ai
Current version: 0.43.1
npm download badges present in README (weekly + monthly + 18-month stats shown)
License: MIT WITH Commons Clause (restricts commercial resale, but allows personal and organizational use)

Related frameworks

same archetype · same primary tool · same memory type

ccmemory ★ 1

Accumulates decisions, corrections, and failed approaches from Claude Code sessions into a queryable Neo4j graph so each new…

Pimzino spec-workflow-mcp ★ 4.2k

MCP server providing spec-driven development workflow with dashboard-backed approval gates, implementation logging, and VSCode…

MCP Shrimp Task Manager ★ 2.1k

Convert natural language requests into structured AI development tasks with chain-of-thought enforcement, reflection gates, and…

Bernstein ★ 460

Govern parallel CLI coding agents with a deterministic Python scheduler, HMAC-chained audit trail, and compliance-ready signed…

LeanSpec ★ 252

Provides a unified spec CLI and MCP server over any existing spec backend (markdown, GitHub Issues, ADO), making spec-driven…

Specs Workflow MCP ★ 127

Enforces Requirements → Design → Tasks workflow via a single MCP tool with persistent JSON progress tracking that survives…