#
tokens: 49879/50000 82/975 files (page 2/69)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 2 of 69. Use http://codebase.md/eyaltoledano/claude-task-master?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .changeset
│   ├── config.json
│   └── README.md
├── .claude
│   ├── commands
│   │   └── dedupe.md
│   └── TM_COMMANDS_GUIDE.md
├── .claude-plugin
│   └── marketplace.json
├── .coderabbit.yaml
├── .cursor
│   ├── mcp.json
│   └── rules
│       ├── ai_providers.mdc
│       ├── ai_services.mdc
│       ├── architecture.mdc
│       ├── changeset.mdc
│       ├── commands.mdc
│       ├── context_gathering.mdc
│       ├── cursor_rules.mdc
│       ├── dependencies.mdc
│       ├── dev_workflow.mdc
│       ├── git_workflow.mdc
│       ├── glossary.mdc
│       ├── mcp.mdc
│       ├── new_features.mdc
│       ├── self_improve.mdc
│       ├── tags.mdc
│       ├── taskmaster.mdc
│       ├── tasks.mdc
│       ├── telemetry.mdc
│       ├── test_workflow.mdc
│       ├── tests.mdc
│       ├── ui.mdc
│       └── utilities.mdc
├── .cursorignore
├── .env.example
├── .github
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── enhancements---feature-requests.md
│   │   └── feedback.md
│   ├── PULL_REQUEST_TEMPLATE
│   │   ├── bugfix.md
│   │   ├── config.yml
│   │   ├── feature.md
│   │   └── integration.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── scripts
│   │   ├── auto-close-duplicates.mjs
│   │   ├── backfill-duplicate-comments.mjs
│   │   ├── check-pre-release-mode.mjs
│   │   ├── parse-metrics.mjs
│   │   ├── release.mjs
│   │   ├── tag-extension.mjs
│   │   ├── utils.mjs
│   │   └── validate-changesets.mjs
│   └── workflows
│       ├── auto-close-duplicates.yml
│       ├── backfill-duplicate-comments.yml
│       ├── ci.yml
│       ├── claude-dedupe-issues.yml
│       ├── claude-docs-trigger.yml
│       ├── claude-docs-updater.yml
│       ├── claude-issue-triage.yml
│       ├── claude.yml
│       ├── extension-ci.yml
│       ├── extension-release.yml
│       ├── log-issue-events.yml
│       ├── pre-release.yml
│       ├── release-check.yml
│       ├── release.yml
│       ├── update-models-md.yml
│       └── weekly-metrics-discord.yml
├── .gitignore
├── .kiro
│   ├── hooks
│   │   ├── tm-code-change-task-tracker.kiro.hook
│   │   ├── tm-complexity-analyzer.kiro.hook
│   │   ├── tm-daily-standup-assistant.kiro.hook
│   │   ├── tm-git-commit-task-linker.kiro.hook
│   │   ├── tm-pr-readiness-checker.kiro.hook
│   │   ├── tm-task-dependency-auto-progression.kiro.hook
│   │   └── tm-test-success-task-completer.kiro.hook
│   ├── settings
│   │   └── mcp.json
│   └── steering
│       ├── dev_workflow.md
│       ├── kiro_rules.md
│       ├── self_improve.md
│       ├── taskmaster_hooks_workflow.md
│       └── taskmaster.md
├── .manypkg.json
├── .mcp.json
├── .npmignore
├── .nvmrc
├── .taskmaster
│   ├── CLAUDE.md
│   ├── config.json
│   ├── docs
│   │   ├── autonomous-tdd-git-workflow.md
│   │   ├── MIGRATION-ROADMAP.md
│   │   ├── prd-tm-start.txt
│   │   ├── prd.txt
│   │   ├── README.md
│   │   ├── research
│   │   │   ├── 2025-06-14_how-can-i-improve-the-scope-up-and-scope-down-comm.md
│   │   │   ├── 2025-06-14_should-i-be-using-any-specific-libraries-for-this.md
│   │   │   ├── 2025-06-14_test-save-functionality.md
│   │   │   ├── 2025-06-14_test-the-fix-for-duplicate-saves-final-test.md
│   │   │   └── 2025-08-01_do-we-need-to-add-new-commands-or-can-we-just-weap.md
│   │   ├── task-template-importing-prd.txt
│   │   ├── tdd-workflow-phase-0-spike.md
│   │   ├── tdd-workflow-phase-1-core-rails.md
│   │   ├── tdd-workflow-phase-1-orchestrator.md
│   │   ├── tdd-workflow-phase-2-pr-resumability.md
│   │   ├── tdd-workflow-phase-3-extensibility-guardrails.md
│   │   ├── test-prd.txt
│   │   └── tm-core-phase-1.txt
│   ├── reports
│   │   ├── task-complexity-report_autonomous-tdd-git-workflow.json
│   │   ├── task-complexity-report_cc-kiro-hooks.json
│   │   ├── task-complexity-report_tdd-phase-1-core-rails.json
│   │   ├── task-complexity-report_tdd-workflow-phase-0.json
│   │   ├── task-complexity-report_test-prd-tag.json
│   │   ├── task-complexity-report_tm-core-phase-1.json
│   │   ├── task-complexity-report.json
│   │   └── tm-core-complexity.json
│   ├── state.json
│   ├── tasks
│   │   ├── task_001_tm-start.txt
│   │   ├── task_002_tm-start.txt
│   │   ├── task_003_tm-start.txt
│   │   ├── task_004_tm-start.txt
│   │   ├── task_007_tm-start.txt
│   │   └── tasks.json
│   └── templates
│       ├── example_prd_rpg.md
│       └── example_prd.md
├── .vscode
│   ├── extensions.json
│   └── settings.json
├── apps
│   ├── cli
│   │   ├── CHANGELOG.md
│   │   ├── package.json
│   │   ├── src
│   │   │   ├── command-registry.ts
│   │   │   ├── commands
│   │   │   │   ├── auth.command.ts
│   │   │   │   ├── autopilot
│   │   │   │   │   ├── abort.command.ts
│   │   │   │   │   ├── commit.command.ts
│   │   │   │   │   ├── complete.command.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── next.command.ts
│   │   │   │   │   ├── resume.command.ts
│   │   │   │   │   ├── shared.ts
│   │   │   │   │   ├── start.command.ts
│   │   │   │   │   └── status.command.ts
│   │   │   │   ├── briefs.command.ts
│   │   │   │   ├── context.command.ts
│   │   │   │   ├── export.command.ts
│   │   │   │   ├── list.command.ts
│   │   │   │   ├── models
│   │   │   │   │   ├── custom-providers.ts
│   │   │   │   │   ├── fetchers.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── prompts.ts
│   │   │   │   │   ├── setup.ts
│   │   │   │   │   └── types.ts
│   │   │   │   ├── next.command.ts
│   │   │   │   ├── set-status.command.ts
│   │   │   │   ├── show.command.ts
│   │   │   │   ├── start.command.ts
│   │   │   │   └── tags.command.ts
│   │   │   ├── index.ts
│   │   │   ├── lib
│   │   │   │   └── model-management.ts
│   │   │   ├── types
│   │   │   │   └── tag-management.d.ts
│   │   │   ├── ui
│   │   │   │   ├── components
│   │   │   │   │   ├── cardBox.component.ts
│   │   │   │   │   ├── dashboard.component.ts
│   │   │   │   │   ├── header.component.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── next-task.component.ts
│   │   │   │   │   ├── suggested-steps.component.ts
│   │   │   │   │   └── task-detail.component.ts
│   │   │   │   ├── display
│   │   │   │   │   ├── messages.ts
│   │   │   │   │   └── tables.ts
│   │   │   │   ├── formatters
│   │   │   │   │   ├── complexity-formatters.ts
│   │   │   │   │   ├── dependency-formatters.ts
│   │   │   │   │   ├── priority-formatters.ts
│   │   │   │   │   ├── status-formatters.spec.ts
│   │   │   │   │   └── status-formatters.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── layout
│   │   │   │       ├── helpers.spec.ts
│   │   │   │       └── helpers.ts
│   │   │   └── utils
│   │   │       ├── auth-helpers.ts
│   │   │       ├── auto-update.ts
│   │   │       ├── brief-selection.ts
│   │   │       ├── display-helpers.ts
│   │   │       ├── error-handler.ts
│   │   │       ├── index.ts
│   │   │       ├── project-root.ts
│   │   │       ├── task-status.ts
│   │   │       ├── ui.spec.ts
│   │   │       └── ui.ts
│   │   ├── tests
│   │   │   ├── integration
│   │   │   │   └── commands
│   │   │   │       └── autopilot
│   │   │   │           └── workflow.test.ts
│   │   │   └── unit
│   │   │       ├── commands
│   │   │       │   ├── autopilot
│   │   │       │   │   └── shared.test.ts
│   │   │       │   ├── list.command.spec.ts
│   │   │       │   └── show.command.spec.ts
│   │   │       └── ui
│   │   │           └── dashboard.component.spec.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   ├── docs
│   │   ├── archive
│   │   │   ├── ai-client-utils-example.mdx
│   │   │   ├── ai-development-workflow.mdx
│   │   │   ├── command-reference.mdx
│   │   │   ├── configuration.mdx
│   │   │   ├── cursor-setup.mdx
│   │   │   ├── examples.mdx
│   │   │   └── Installation.mdx
│   │   ├── best-practices
│   │   │   ├── advanced-tasks.mdx
│   │   │   ├── configuration-advanced.mdx
│   │   │   └── index.mdx
│   │   ├── capabilities
│   │   │   ├── cli-root-commands.mdx
│   │   │   ├── index.mdx
│   │   │   ├── mcp.mdx
│   │   │   ├── rpg-method.mdx
│   │   │   └── task-structure.mdx
│   │   ├── CHANGELOG.md
│   │   ├── command-reference.mdx
│   │   ├── configuration.mdx
│   │   ├── docs.json
│   │   ├── favicon.svg
│   │   ├── getting-started
│   │   │   ├── api-keys.mdx
│   │   │   ├── contribute.mdx
│   │   │   ├── faq.mdx
│   │   │   └── quick-start
│   │   │       ├── configuration-quick.mdx
│   │   │       ├── execute-quick.mdx
│   │   │       ├── installation.mdx
│   │   │       ├── moving-forward.mdx
│   │   │       ├── prd-quick.mdx
│   │   │       ├── quick-start.mdx
│   │   │       ├── requirements.mdx
│   │   │       ├── rules-quick.mdx
│   │   │       └── tasks-quick.mdx
│   │   ├── introduction.mdx
│   │   ├── licensing.md
│   │   ├── logo
│   │   │   ├── dark.svg
│   │   │   ├── light.svg
│   │   │   └── task-master-logo.png
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── style.css
│   │   ├── tdd-workflow
│   │   │   ├── ai-agent-integration.mdx
│   │   │   └── quickstart.mdx
│   │   ├── vercel.json
│   │   └── whats-new.mdx
│   ├── extension
│   │   ├── .vscodeignore
│   │   ├── assets
│   │   │   ├── banner.png
│   │   │   ├── icon-dark.svg
│   │   │   ├── icon-light.svg
│   │   │   ├── icon.png
│   │   │   ├── screenshots
│   │   │   │   ├── kanban-board.png
│   │   │   │   └── task-details.png
│   │   │   └── sidebar-icon.svg
│   │   ├── CHANGELOG.md
│   │   ├── components.json
│   │   ├── docs
│   │   │   ├── extension-CI-setup.md
│   │   │   └── extension-development-guide.md
│   │   ├── esbuild.js
│   │   ├── LICENSE
│   │   ├── package.json
│   │   ├── package.mjs
│   │   ├── package.publish.json
│   │   ├── README.md
│   │   ├── src
│   │   │   ├── components
│   │   │   │   ├── ConfigView.tsx
│   │   │   │   ├── constants.ts
│   │   │   │   ├── TaskDetails
│   │   │   │   │   ├── AIActionsSection.tsx
│   │   │   │   │   ├── DetailsSection.tsx
│   │   │   │   │   ├── PriorityBadge.tsx
│   │   │   │   │   ├── SubtasksSection.tsx
│   │   │   │   │   ├── TaskMetadataSidebar.tsx
│   │   │   │   │   └── useTaskDetails.ts
│   │   │   │   ├── TaskDetailsView.tsx
│   │   │   │   ├── TaskMasterLogo.tsx
│   │   │   │   └── ui
│   │   │   │       ├── badge.tsx
│   │   │   │       ├── breadcrumb.tsx
│   │   │   │       ├── button.tsx
│   │   │   │       ├── card.tsx
│   │   │   │       ├── collapsible.tsx
│   │   │   │       ├── CollapsibleSection.tsx
│   │   │   │       ├── dropdown-menu.tsx
│   │   │   │       ├── label.tsx
│   │   │   │       ├── scroll-area.tsx
│   │   │   │       ├── separator.tsx
│   │   │   │       ├── shadcn-io
│   │   │   │       │   └── kanban
│   │   │   │       │       └── index.tsx
│   │   │   │       └── textarea.tsx
│   │   │   ├── extension.ts
│   │   │   ├── index.ts
│   │   │   ├── lib
│   │   │   │   └── utils.ts
│   │   │   ├── services
│   │   │   │   ├── config-service.ts
│   │   │   │   ├── error-handler.ts
│   │   │   │   ├── notification-preferences.ts
│   │   │   │   ├── polling-service.ts
│   │   │   │   ├── polling-strategies.ts
│   │   │   │   ├── sidebar-webview-manager.ts
│   │   │   │   ├── task-repository.ts
│   │   │   │   ├── terminal-manager.ts
│   │   │   │   └── webview-manager.ts
│   │   │   ├── test
│   │   │   │   └── extension.test.ts
│   │   │   ├── utils
│   │   │   │   ├── configManager.ts
│   │   │   │   ├── connectionManager.ts
│   │   │   │   ├── errorHandler.ts
│   │   │   │   ├── event-emitter.ts
│   │   │   │   ├── logger.ts
│   │   │   │   ├── mcpClient.ts
│   │   │   │   ├── notificationPreferences.ts
│   │   │   │   └── task-master-api
│   │   │   │       ├── cache
│   │   │   │       │   └── cache-manager.ts
│   │   │   │       ├── index.ts
│   │   │   │       ├── mcp-client.ts
│   │   │   │       ├── transformers
│   │   │   │       │   └── task-transformer.ts
│   │   │   │       └── types
│   │   │   │           └── index.ts
│   │   │   └── webview
│   │   │       ├── App.tsx
│   │   │       ├── components
│   │   │       │   ├── AppContent.tsx
│   │   │       │   ├── EmptyState.tsx
│   │   │       │   ├── ErrorBoundary.tsx
│   │   │       │   ├── PollingStatus.tsx
│   │   │       │   ├── PriorityBadge.tsx
│   │   │       │   ├── SidebarView.tsx
│   │   │       │   ├── TagDropdown.tsx
│   │   │       │   ├── TaskCard.tsx
│   │   │       │   ├── TaskEditModal.tsx
│   │   │       │   ├── TaskMasterKanban.tsx
│   │   │       │   ├── ToastContainer.tsx
│   │   │       │   └── ToastNotification.tsx
│   │   │       ├── constants
│   │   │       │   └── index.ts
│   │   │       ├── contexts
│   │   │       │   └── VSCodeContext.tsx
│   │   │       ├── hooks
│   │   │       │   ├── useTaskQueries.ts
│   │   │       │   ├── useVSCodeMessages.ts
│   │   │       │   └── useWebviewHeight.ts
│   │   │       ├── index.css
│   │   │       ├── index.tsx
│   │   │       ├── providers
│   │   │       │   └── QueryProvider.tsx
│   │   │       ├── reducers
│   │   │       │   └── appReducer.ts
│   │   │       ├── sidebar.tsx
│   │   │       ├── types
│   │   │       │   └── index.ts
│   │   │       └── utils
│   │   │           ├── logger.ts
│   │   │           └── toast.ts
│   │   └── tsconfig.json
│   └── mcp
│       ├── CHANGELOG.md
│       ├── package.json
│       ├── src
│       │   ├── index.ts
│       │   ├── shared
│       │   │   ├── types.ts
│       │   │   └── utils.ts
│       │   └── tools
│       │       ├── autopilot
│       │       │   ├── abort.tool.ts
│       │       │   ├── commit.tool.ts
│       │       │   ├── complete.tool.ts
│       │       │   ├── finalize.tool.ts
│       │       │   ├── index.ts
│       │       │   ├── next.tool.ts
│       │       │   ├── resume.tool.ts
│       │       │   ├── start.tool.ts
│       │       │   └── status.tool.ts
│       │       ├── README-ZOD-V3.md
│       │       └── tasks
│       │           ├── get-task.tool.ts
│       │           ├── get-tasks.tool.ts
│       │           └── index.ts
│       ├── tsconfig.json
│       └── vitest.config.ts
├── assets
│   ├── .windsurfrules
│   ├── AGENTS.md
│   ├── claude
│   │   └── TM_COMMANDS_GUIDE.md
│   ├── config.json
│   ├── env.example
│   ├── example_prd_rpg.txt
│   ├── example_prd.txt
│   ├── GEMINI.md
│   ├── gitignore
│   ├── kiro-hooks
│   │   ├── tm-code-change-task-tracker.kiro.hook
│   │   ├── tm-complexity-analyzer.kiro.hook
│   │   ├── tm-daily-standup-assistant.kiro.hook
│   │   ├── tm-git-commit-task-linker.kiro.hook
│   │   ├── tm-pr-readiness-checker.kiro.hook
│   │   ├── tm-task-dependency-auto-progression.kiro.hook
│   │   └── tm-test-success-task-completer.kiro.hook
│   ├── roocode
│   │   ├── .roo
│   │   │   ├── rules-architect
│   │   │   │   └── architect-rules
│   │   │   ├── rules-ask
│   │   │   │   └── ask-rules
│   │   │   ├── rules-code
│   │   │   │   └── code-rules
│   │   │   ├── rules-debug
│   │   │   │   └── debug-rules
│   │   │   ├── rules-orchestrator
│   │   │   │   └── orchestrator-rules
│   │   │   └── rules-test
│   │   │       └── test-rules
│   │   └── .roomodes
│   ├── rules
│   │   ├── cursor_rules.mdc
│   │   ├── dev_workflow.mdc
│   │   ├── self_improve.mdc
│   │   ├── taskmaster_hooks_workflow.mdc
│   │   └── taskmaster.mdc
│   └── scripts_README.md
├── bin
│   └── task-master.js
├── biome.json
├── CHANGELOG.md
├── CLAUDE_CODE_PLUGIN.md
├── CLAUDE.md
├── context
│   ├── chats
│   │   ├── add-task-dependencies-1.md
│   │   └── max-min-tokens.txt.md
│   ├── fastmcp-core.txt
│   ├── fastmcp-docs.txt
│   ├── MCP_INTEGRATION.md
│   ├── mcp-js-sdk-docs.txt
│   ├── mcp-protocol-repo.txt
│   ├── mcp-protocol-schema-03262025.json
│   └── mcp-protocol-spec.txt
├── CONTRIBUTING.md
├── docs
│   ├── claude-code-integration.md
│   ├── CLI-COMMANDER-PATTERN.md
│   ├── command-reference.md
│   ├── configuration.md
│   ├── contributor-docs
│   │   ├── testing-roo-integration.md
│   │   └── worktree-setup.md
│   ├── cross-tag-task-movement.md
│   ├── examples
│   │   ├── claude-code-usage.md
│   │   └── codex-cli-usage.md
│   ├── examples.md
│   ├── licensing.md
│   ├── mcp-provider-guide.md
│   ├── mcp-provider.md
│   ├── migration-guide.md
│   ├── models.md
│   ├── providers
│   │   ├── codex-cli.md
│   │   └── gemini-cli.md
│   ├── README.md
│   ├── scripts
│   │   └── models-json-to-markdown.js
│   ├── task-structure.md
│   └── tutorial.md
├── images
│   ├── hamster-hiring.png
│   └── logo.png
├── index.js
├── jest.config.js
├── jest.resolver.cjs
├── LICENSE
├── llms-install.md
├── mcp-server
│   ├── server.js
│   └── src
│       ├── core
│       │   ├── __tests__
│       │   │   └── context-manager.test.js
│       │   ├── context-manager.js
│       │   ├── direct-functions
│       │   │   ├── add-dependency.js
│       │   │   ├── add-subtask.js
│       │   │   ├── add-tag.js
│       │   │   ├── add-task.js
│       │   │   ├── analyze-task-complexity.js
│       │   │   ├── cache-stats.js
│       │   │   ├── clear-subtasks.js
│       │   │   ├── complexity-report.js
│       │   │   ├── copy-tag.js
│       │   │   ├── create-tag-from-branch.js
│       │   │   ├── delete-tag.js
│       │   │   ├── expand-all-tasks.js
│       │   │   ├── expand-task.js
│       │   │   ├── fix-dependencies.js
│       │   │   ├── generate-task-files.js
│       │   │   ├── initialize-project.js
│       │   │   ├── list-tags.js
│       │   │   ├── models.js
│       │   │   ├── move-task-cross-tag.js
│       │   │   ├── move-task.js
│       │   │   ├── next-task.js
│       │   │   ├── parse-prd.js
│       │   │   ├── remove-dependency.js
│       │   │   ├── remove-subtask.js
│       │   │   ├── remove-task.js
│       │   │   ├── rename-tag.js
│       │   │   ├── research.js
│       │   │   ├── response-language.js
│       │   │   ├── rules.js
│       │   │   ├── scope-down.js
│       │   │   ├── scope-up.js
│       │   │   ├── set-task-status.js
│       │   │   ├── update-subtask-by-id.js
│       │   │   ├── update-task-by-id.js
│       │   │   ├── update-tasks.js
│       │   │   ├── use-tag.js
│       │   │   └── validate-dependencies.js
│       │   ├── task-master-core.js
│       │   └── utils
│       │       ├── env-utils.js
│       │       └── path-utils.js
│       ├── custom-sdk
│       │   ├── errors.js
│       │   ├── index.js
│       │   ├── json-extractor.js
│       │   ├── language-model.js
│       │   ├── message-converter.js
│       │   └── schema-converter.js
│       ├── index.js
│       ├── logger.js
│       ├── providers
│       │   └── mcp-provider.js
│       └── tools
│           ├── add-dependency.js
│           ├── add-subtask.js
│           ├── add-tag.js
│           ├── add-task.js
│           ├── analyze.js
│           ├── clear-subtasks.js
│           ├── complexity-report.js
│           ├── copy-tag.js
│           ├── delete-tag.js
│           ├── expand-all.js
│           ├── expand-task.js
│           ├── fix-dependencies.js
│           ├── generate.js
│           ├── get-operation-status.js
│           ├── index.js
│           ├── initialize-project.js
│           ├── list-tags.js
│           ├── models.js
│           ├── move-task.js
│           ├── next-task.js
│           ├── parse-prd.js
│           ├── README-ZOD-V3.md
│           ├── remove-dependency.js
│           ├── remove-subtask.js
│           ├── remove-task.js
│           ├── rename-tag.js
│           ├── research.js
│           ├── response-language.js
│           ├── rules.js
│           ├── scope-down.js
│           ├── scope-up.js
│           ├── set-task-status.js
│           ├── tool-registry.js
│           ├── update-subtask.js
│           ├── update-task.js
│           ├── update.js
│           ├── use-tag.js
│           ├── utils.js
│           └── validate-dependencies.js
├── mcp-test.js
├── output.json
├── package-lock.json
├── package.json
├── packages
│   ├── ai-sdk-provider-grok-cli
│   │   ├── CHANGELOG.md
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── src
│   │   │   ├── errors.test.ts
│   │   │   ├── errors.ts
│   │   │   ├── grok-cli-language-model.ts
│   │   │   ├── grok-cli-provider.test.ts
│   │   │   ├── grok-cli-provider.ts
│   │   │   ├── index.ts
│   │   │   ├── json-extractor.test.ts
│   │   │   ├── json-extractor.ts
│   │   │   ├── message-converter.test.ts
│   │   │   ├── message-converter.ts
│   │   │   └── types.ts
│   │   └── tsconfig.json
│   ├── build-config
│   │   ├── CHANGELOG.md
│   │   ├── package.json
│   │   ├── src
│   │   │   └── tsdown.base.ts
│   │   └── tsconfig.json
│   ├── claude-code-plugin
│   │   ├── .claude-plugin
│   │   │   └── plugin.json
│   │   ├── .gitignore
│   │   ├── agents
│   │   │   ├── task-checker.md
│   │   │   ├── task-executor.md
│   │   │   └── task-orchestrator.md
│   │   ├── CHANGELOG.md
│   │   ├── commands
│   │   │   ├── add-dependency.md
│   │   │   ├── add-subtask.md
│   │   │   ├── add-task.md
│   │   │   ├── analyze-complexity.md
│   │   │   ├── analyze-project.md
│   │   │   ├── auto-implement-tasks.md
│   │   │   ├── command-pipeline.md
│   │   │   ├── complexity-report.md
│   │   │   ├── convert-task-to-subtask.md
│   │   │   ├── expand-all-tasks.md
│   │   │   ├── expand-task.md
│   │   │   ├── fix-dependencies.md
│   │   │   ├── generate-tasks.md
│   │   │   ├── help.md
│   │   │   ├── init-project-quick.md
│   │   │   ├── init-project.md
│   │   │   ├── install-taskmaster.md
│   │   │   ├── learn.md
│   │   │   ├── list-tasks-by-status.md
│   │   │   ├── list-tasks-with-subtasks.md
│   │   │   ├── list-tasks.md
│   │   │   ├── next-task.md
│   │   │   ├── parse-prd-with-research.md
│   │   │   ├── parse-prd.md
│   │   │   ├── project-status.md
│   │   │   ├── quick-install-taskmaster.md
│   │   │   ├── remove-all-subtasks.md
│   │   │   ├── remove-dependency.md
│   │   │   ├── remove-subtask.md
│   │   │   ├── remove-subtasks.md
│   │   │   ├── remove-task.md
│   │   │   ├── setup-models.md
│   │   │   ├── show-task.md
│   │   │   ├── smart-workflow.md
│   │   │   ├── sync-readme.md
│   │   │   ├── tm-main.md
│   │   │   ├── to-cancelled.md
│   │   │   ├── to-deferred.md
│   │   │   ├── to-done.md
│   │   │   ├── to-in-progress.md
│   │   │   ├── to-pending.md
│   │   │   ├── to-review.md
│   │   │   ├── update-single-task.md
│   │   │   ├── update-task.md
│   │   │   ├── update-tasks-from-id.md
│   │   │   ├── validate-dependencies.md
│   │   │   └── view-models.md
│   │   ├── mcp.json
│   │   └── package.json
│   ├── tm-bridge
│   │   ├── CHANGELOG.md
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── src
│   │   │   ├── add-tag-bridge.ts
│   │   │   ├── bridge-types.ts
│   │   │   ├── bridge-utils.ts
│   │   │   ├── expand-bridge.ts
│   │   │   ├── index.ts
│   │   │   ├── tags-bridge.ts
│   │   │   ├── update-bridge.ts
│   │   │   └── use-tag-bridge.ts
│   │   └── tsconfig.json
│   └── tm-core
│       ├── .gitignore
│       ├── CHANGELOG.md
│       ├── docs
│       │   └── listTasks-architecture.md
│       ├── package.json
│       ├── POC-STATUS.md
│       ├── README.md
│       ├── src
│       │   ├── common
│       │   │   ├── constants
│       │   │   │   ├── index.ts
│       │   │   │   ├── paths.ts
│       │   │   │   └── providers.ts
│       │   │   ├── errors
│       │   │   │   ├── index.ts
│       │   │   │   └── task-master-error.ts
│       │   │   ├── interfaces
│       │   │   │   ├── configuration.interface.ts
│       │   │   │   ├── index.ts
│       │   │   │   └── storage.interface.ts
│       │   │   ├── logger
│       │   │   │   ├── factory.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── logger.spec.ts
│       │   │   │   └── logger.ts
│       │   │   ├── mappers
│       │   │   │   ├── TaskMapper.test.ts
│       │   │   │   └── TaskMapper.ts
│       │   │   ├── types
│       │   │   │   ├── database.types.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── legacy.ts
│       │   │   │   └── repository-types.ts
│       │   │   └── utils
│       │   │       ├── git-utils.ts
│       │   │       ├── id-generator.ts
│       │   │       ├── index.ts
│       │   │       ├── path-helpers.ts
│       │   │       ├── path-normalizer.spec.ts
│       │   │       ├── path-normalizer.ts
│       │   │       ├── project-root-finder.spec.ts
│       │   │       ├── project-root-finder.ts
│       │   │       ├── run-id-generator.spec.ts
│       │   │       └── run-id-generator.ts
│       │   ├── index.ts
│       │   ├── modules
│       │   │   ├── ai
│       │   │   │   ├── index.ts
│       │   │   │   ├── interfaces
│       │   │   │   │   └── ai-provider.interface.ts
│       │   │   │   └── providers
│       │   │   │       ├── base-provider.ts
│       │   │   │       └── index.ts
│       │   │   ├── auth
│       │   │   │   ├── auth-domain.spec.ts
│       │   │   │   ├── auth-domain.ts
│       │   │   │   ├── config.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── managers
│       │   │   │   │   ├── auth-manager.spec.ts
│       │   │   │   │   └── auth-manager.ts
│       │   │   │   ├── services
│       │   │   │   │   ├── context-store.ts
│       │   │   │   │   ├── oauth-service.ts
│       │   │   │   │   ├── organization.service.ts
│       │   │   │   │   ├── supabase-session-storage.spec.ts
│       │   │   │   │   └── supabase-session-storage.ts
│       │   │   │   └── types.ts
│       │   │   ├── briefs
│       │   │   │   ├── briefs-domain.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── services
│       │   │   │   │   └── brief-service.ts
│       │   │   │   ├── types.ts
│       │   │   │   └── utils
│       │   │   │       └── url-parser.ts
│       │   │   ├── commands
│       │   │   │   └── index.ts
│       │   │   ├── config
│       │   │   │   ├── config-domain.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── managers
│       │   │   │   │   ├── config-manager.spec.ts
│       │   │   │   │   └── config-manager.ts
│       │   │   │   └── services
│       │   │   │       ├── config-loader.service.spec.ts
│       │   │   │       ├── config-loader.service.ts
│       │   │   │       ├── config-merger.service.spec.ts
│       │   │   │       ├── config-merger.service.ts
│       │   │   │       ├── config-persistence.service.spec.ts
│       │   │   │       ├── config-persistence.service.ts
│       │   │   │       ├── environment-config-provider.service.spec.ts
│       │   │   │       ├── environment-config-provider.service.ts
│       │   │   │       ├── index.ts
│       │   │   │       ├── runtime-state-manager.service.spec.ts
│       │   │   │       └── runtime-state-manager.service.ts
│       │   │   ├── dependencies
│       │   │   │   └── index.ts
│       │   │   ├── execution
│       │   │   │   ├── executors
│       │   │   │   │   ├── base-executor.ts
│       │   │   │   │   ├── claude-executor.ts
│       │   │   │   │   └── executor-factory.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── services
│       │   │   │   │   └── executor-service.ts
│       │   │   │   └── types.ts
│       │   │   ├── git
│       │   │   │   ├── adapters
│       │   │   │   │   ├── git-adapter.test.ts
│       │   │   │   │   └── git-adapter.ts
│       │   │   │   ├── git-domain.ts
│       │   │   │   ├── index.ts
│       │   │   │   └── services
│       │   │   │       ├── branch-name-generator.spec.ts
│       │   │   │       ├── branch-name-generator.ts
│       │   │   │       ├── commit-message-generator.test.ts
│       │   │   │       ├── commit-message-generator.ts
│       │   │   │       ├── scope-detector.test.ts
│       │   │   │       ├── scope-detector.ts
│       │   │   │       ├── template-engine.test.ts
│       │   │   │       └── template-engine.ts
│       │   │   ├── integration
│       │   │   │   ├── clients
│       │   │   │   │   ├── index.ts
│       │   │   │   │   └── supabase-client.ts
│       │   │   │   ├── integration-domain.ts
│       │   │   │   └── services
│       │   │   │       ├── export.service.ts
│       │   │   │       ├── task-expansion.service.ts
│       │   │   │       └── task-retrieval.service.ts
│       │   │   ├── reports
│       │   │   │   ├── index.ts
│       │   │   │   ├── managers
│       │   │   │   │   └── complexity-report-manager.ts
│       │   │   │   └── types.ts
│       │   │   ├── storage
│       │   │   │   ├── adapters
│       │   │   │   │   ├── activity-logger.ts
│       │   │   │   │   ├── api-storage.ts
│       │   │   │   │   └── file-storage
│       │   │   │   │       ├── file-operations.ts
│       │   │   │   │       ├── file-storage.ts
│       │   │   │   │       ├── format-handler.ts
│       │   │   │   │       ├── index.ts
│       │   │   │   │       └── path-resolver.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── services
│       │   │   │   │   └── storage-factory.ts
│       │   │   │   └── utils
│       │   │   │       └── api-client.ts
│       │   │   ├── tasks
│       │   │   │   ├── entities
│       │   │   │   │   └── task.entity.ts
│       │   │   │   ├── parser
│       │   │   │   │   └── index.ts
│       │   │   │   ├── repositories
│       │   │   │   │   ├── supabase
│       │   │   │   │   │   ├── dependency-fetcher.ts
│       │   │   │   │   │   ├── index.ts
│       │   │   │   │   │   └── supabase-repository.ts
│       │   │   │   │   └── task-repository.interface.ts
│       │   │   │   ├── services
│       │   │   │   │   ├── preflight-checker.service.ts
│       │   │   │   │   ├── tag.service.ts
│       │   │   │   │   ├── task-execution-service.ts
│       │   │   │   │   ├── task-loader.service.ts
│       │   │   │   │   └── task-service.ts
│       │   │   │   └── tasks-domain.ts
│       │   │   ├── ui
│       │   │   │   └── index.ts
│       │   │   └── workflow
│       │   │       ├── managers
│       │   │       │   ├── workflow-state-manager.spec.ts
│       │   │       │   └── workflow-state-manager.ts
│       │   │       ├── orchestrators
│       │   │       │   ├── workflow-orchestrator.test.ts
│       │   │       │   └── workflow-orchestrator.ts
│       │   │       ├── services
│       │   │       │   ├── test-result-validator.test.ts
│       │   │       │   ├── test-result-validator.ts
│       │   │       │   ├── test-result-validator.types.ts
│       │   │       │   ├── workflow-activity-logger.ts
│       │   │       │   └── workflow.service.ts
│       │   │       ├── types.ts
│       │   │       └── workflow-domain.ts
│       │   ├── subpath-exports.test.ts
│       │   ├── tm-core.ts
│       │   └── utils
│       │       └── time.utils.ts
│       ├── tests
│       │   ├── auth
│       │   │   └── auth-refresh.test.ts
│       │   ├── integration
│       │   │   ├── auth-token-refresh.test.ts
│       │   │   ├── list-tasks.test.ts
│       │   │   └── storage
│       │   │       └── activity-logger.test.ts
│       │   ├── mocks
│       │   │   └── mock-provider.ts
│       │   ├── setup.ts
│       │   └── unit
│       │       ├── base-provider.test.ts
│       │       ├── executor.test.ts
│       │       └── smoke.test.ts
│       ├── tsconfig.json
│       └── vitest.config.ts
├── README-task-master.md
├── README.md
├── scripts
│   ├── create-worktree.sh
│   ├── dev.js
│   ├── init.js
│   ├── list-worktrees.sh
│   ├── modules
│   │   ├── ai-services-unified.js
│   │   ├── bridge-utils.js
│   │   ├── commands.js
│   │   ├── config-manager.js
│   │   ├── dependency-manager.js
│   │   ├── index.js
│   │   ├── prompt-manager.js
│   │   ├── supported-models.json
│   │   ├── sync-readme.js
│   │   ├── task-manager
│   │   │   ├── add-subtask.js
│   │   │   ├── add-task.js
│   │   │   ├── analyze-task-complexity.js
│   │   │   ├── clear-subtasks.js
│   │   │   ├── expand-all-tasks.js
│   │   │   ├── expand-task.js
│   │   │   ├── find-next-task.js
│   │   │   ├── generate-task-files.js
│   │   │   ├── is-task-dependent.js
│   │   │   ├── list-tasks.js
│   │   │   ├── migrate.js
│   │   │   ├── models.js
│   │   │   ├── move-task.js
│   │   │   ├── parse-prd
│   │   │   │   ├── index.js
│   │   │   │   ├── parse-prd-config.js
│   │   │   │   ├── parse-prd-helpers.js
│   │   │   │   ├── parse-prd-non-streaming.js
│   │   │   │   ├── parse-prd-streaming.js
│   │   │   │   └── parse-prd.js
│   │   │   ├── remove-subtask.js
│   │   │   ├── remove-task.js
│   │   │   ├── research.js
│   │   │   ├── response-language.js
│   │   │   ├── scope-adjustment.js
│   │   │   ├── set-task-status.js
│   │   │   ├── tag-management.js
│   │   │   ├── task-exists.js
│   │   │   ├── update-single-task-status.js
│   │   │   ├── update-subtask-by-id.js
│   │   │   ├── update-task-by-id.js
│   │   │   └── update-tasks.js
│   │   ├── task-manager.js
│   │   ├── ui.js
│   │   ├── update-config-tokens.js
│   │   ├── utils
│   │   │   ├── contextGatherer.js
│   │   │   ├── fuzzyTaskSearch.js
│   │   │   └── git-utils.js
│   │   └── utils.js
│   ├── task-complexity-report.json
│   ├── test-claude-errors.js
│   └── test-claude.js
├── sonar-project.properties
├── src
│   ├── ai-providers
│   │   ├── anthropic.js
│   │   ├── azure.js
│   │   ├── base-provider.js
│   │   ├── bedrock.js
│   │   ├── claude-code.js
│   │   ├── codex-cli.js
│   │   ├── gemini-cli.js
│   │   ├── google-vertex.js
│   │   ├── google.js
│   │   ├── grok-cli.js
│   │   ├── groq.js
│   │   ├── index.js
│   │   ├── lmstudio.js
│   │   ├── ollama.js
│   │   ├── openai-compatible.js
│   │   ├── openai.js
│   │   ├── openrouter.js
│   │   ├── perplexity.js
│   │   ├── xai.js
│   │   ├── zai-coding.js
│   │   └── zai.js
│   ├── constants
│   │   ├── commands.js
│   │   ├── paths.js
│   │   ├── profiles.js
│   │   ├── rules-actions.js
│   │   ├── task-priority.js
│   │   └── task-status.js
│   ├── profiles
│   │   ├── amp.js
│   │   ├── base-profile.js
│   │   ├── claude.js
│   │   ├── cline.js
│   │   ├── codex.js
│   │   ├── cursor.js
│   │   ├── gemini.js
│   │   ├── index.js
│   │   ├── kilo.js
│   │   ├── kiro.js
│   │   ├── opencode.js
│   │   ├── roo.js
│   │   ├── trae.js
│   │   ├── vscode.js
│   │   ├── windsurf.js
│   │   └── zed.js
│   ├── progress
│   │   ├── base-progress-tracker.js
│   │   ├── cli-progress-factory.js
│   │   ├── parse-prd-tracker.js
│   │   ├── progress-tracker-builder.js
│   │   └── tracker-ui.js
│   ├── prompts
│   │   ├── add-task.json
│   │   ├── analyze-complexity.json
│   │   ├── expand-task.json
│   │   ├── parse-prd.json
│   │   ├── README.md
│   │   ├── research.json
│   │   ├── schemas
│   │   │   ├── parameter.schema.json
│   │   │   ├── prompt-template.schema.json
│   │   │   ├── README.md
│   │   │   └── variant.schema.json
│   │   ├── update-subtask.json
│   │   ├── update-task.json
│   │   └── update-tasks.json
│   ├── provider-registry
│   │   └── index.js
│   ├── schemas
│   │   ├── add-task.js
│   │   ├── analyze-complexity.js
│   │   ├── base-schemas.js
│   │   ├── expand-task.js
│   │   ├── parse-prd.js
│   │   ├── registry.js
│   │   ├── update-subtask.js
│   │   ├── update-task.js
│   │   └── update-tasks.js
│   ├── task-master.js
│   ├── ui
│   │   ├── confirm.js
│   │   ├── indicators.js
│   │   └── parse-prd.js
│   └── utils
│       ├── asset-resolver.js
│       ├── create-mcp-config.js
│       ├── format.js
│       ├── getVersion.js
│       ├── logger-utils.js
│       ├── manage-gitignore.js
│       ├── path-utils.js
│       ├── profiles.js
│       ├── rule-transformer.js
│       ├── stream-parser.js
│       └── timeout-manager.js
├── test-clean-tags.js
├── test-config-manager.js
├── test-prd.txt
├── test-tag-functions.js
├── test-version-check-full.js
├── test-version-check.js
├── tests
│   ├── e2e
│   │   ├── e2e_helpers.sh
│   │   ├── parse_llm_output.cjs
│   │   ├── run_e2e.sh
│   │   ├── run_fallback_verification.sh
│   │   └── test_llm_analysis.sh
│   ├── fixtures
│   │   ├── .taskmasterconfig
│   │   ├── sample-claude-response.js
│   │   ├── sample-prd.txt
│   │   └── sample-tasks.js
│   ├── helpers
│   │   └── tool-counts.js
│   ├── integration
│   │   ├── claude-code-error-handling.test.js
│   │   ├── claude-code-optional.test.js
│   │   ├── cli
│   │   │   ├── commands.test.js
│   │   │   ├── complex-cross-tag-scenarios.test.js
│   │   │   └── move-cross-tag.test.js
│   │   ├── manage-gitignore.test.js
│   │   ├── mcp-server
│   │   │   └── direct-functions.test.js
│   │   ├── move-task-cross-tag.integration.test.js
│   │   ├── move-task-simple.integration.test.js
│   │   ├── profiles
│   │   │   ├── amp-init-functionality.test.js
│   │   │   ├── claude-init-functionality.test.js
│   │   │   ├── cline-init-functionality.test.js
│   │   │   ├── codex-init-functionality.test.js
│   │   │   ├── cursor-init-functionality.test.js
│   │   │   ├── gemini-init-functionality.test.js
│   │   │   ├── opencode-init-functionality.test.js
│   │   │   ├── roo-files-inclusion.test.js
│   │   │   ├── roo-init-functionality.test.js
│   │   │   ├── rules-files-inclusion.test.js
│   │   │   ├── trae-init-functionality.test.js
│   │   │   ├── vscode-init-functionality.test.js
│   │   │   └── windsurf-init-functionality.test.js
│   │   └── providers
│   │       └── temperature-support.test.js
│   ├── manual
│   │   ├── progress
│   │   │   ├── parse-prd-analysis.js
│   │   │   ├── test-parse-prd.js
│   │   │   └── TESTING_GUIDE.md
│   │   └── prompts
│   │       ├── prompt-test.js
│   │       └── README.md
│   ├── README.md
│   ├── setup.js
│   └── unit
│       ├── ai-providers
│       │   ├── base-provider.test.js
│       │   ├── claude-code.test.js
│       │   ├── codex-cli.test.js
│       │   ├── gemini-cli.test.js
│       │   ├── lmstudio.test.js
│       │   ├── mcp-components.test.js
│       │   ├── openai-compatible.test.js
│       │   ├── openai.test.js
│       │   ├── provider-registry.test.js
│       │   ├── zai-coding.test.js
│       │   ├── zai-provider.test.js
│       │   ├── zai-schema-introspection.test.js
│       │   └── zai.test.js
│       ├── ai-services-unified.test.js
│       ├── commands.test.js
│       ├── config-manager.test.js
│       ├── config-manager.test.mjs
│       ├── dependency-manager.test.js
│       ├── init.test.js
│       ├── initialize-project.test.js
│       ├── kebab-case-validation.test.js
│       ├── manage-gitignore.test.js
│       ├── mcp
│       │   └── tools
│       │       ├── __mocks__
│       │       │   └── move-task.js
│       │       ├── add-task.test.js
│       │       ├── analyze-complexity.test.js
│       │       ├── expand-all.test.js
│       │       ├── get-tasks.test.js
│       │       ├── initialize-project.test.js
│       │       ├── move-task-cross-tag-options.test.js
│       │       ├── move-task-cross-tag.test.js
│       │       ├── remove-task.test.js
│       │       └── tool-registration.test.js
│       ├── mcp-providers
│       │   ├── mcp-components.test.js
│       │   └── mcp-provider.test.js
│       ├── parse-prd.test.js
│       ├── profiles
│       │   ├── amp-integration.test.js
│       │   ├── claude-integration.test.js
│       │   ├── cline-integration.test.js
│       │   ├── codex-integration.test.js
│       │   ├── cursor-integration.test.js
│       │   ├── gemini-integration.test.js
│       │   ├── kilo-integration.test.js
│       │   ├── kiro-integration.test.js
│       │   ├── mcp-config-validation.test.js
│       │   ├── opencode-integration.test.js
│       │   ├── profile-safety-check.test.js
│       │   ├── roo-integration.test.js
│       │   ├── rule-transformer-cline.test.js
│       │   ├── rule-transformer-cursor.test.js
│       │   ├── rule-transformer-gemini.test.js
│       │   ├── rule-transformer-kilo.test.js
│       │   ├── rule-transformer-kiro.test.js
│       │   ├── rule-transformer-opencode.test.js
│       │   ├── rule-transformer-roo.test.js
│       │   ├── rule-transformer-trae.test.js
│       │   ├── rule-transformer-vscode.test.js
│       │   ├── rule-transformer-windsurf.test.js
│       │   ├── rule-transformer-zed.test.js
│       │   ├── rule-transformer.test.js
│       │   ├── selective-profile-removal.test.js
│       │   ├── subdirectory-support.test.js
│       │   ├── trae-integration.test.js
│       │   ├── vscode-integration.test.js
│       │   ├── windsurf-integration.test.js
│       │   └── zed-integration.test.js
│       ├── progress
│       │   └── base-progress-tracker.test.js
│       ├── prompt-manager.test.js
│       ├── prompts
│       │   ├── expand-task-prompt.test.js
│       │   └── prompt-migration.test.js
│       ├── scripts
│       │   └── modules
│       │       ├── commands
│       │       │   ├── move-cross-tag.test.js
│       │       │   └── README.md
│       │       ├── dependency-manager
│       │       │   ├── circular-dependencies.test.js
│       │       │   ├── cross-tag-dependencies.test.js
│       │       │   └── fix-dependencies-command.test.js
│       │       ├── task-manager
│       │       │   ├── add-subtask.test.js
│       │       │   ├── add-task.test.js
│       │       │   ├── analyze-task-complexity.test.js
│       │       │   ├── clear-subtasks.test.js
│       │       │   ├── complexity-report-tag-isolation.test.js
│       │       │   ├── expand-all-tasks.test.js
│       │       │   ├── expand-task.test.js
│       │       │   ├── find-next-task.test.js
│       │       │   ├── generate-task-files.test.js
│       │       │   ├── list-tasks.test.js
│       │       │   ├── models-baseurl.test.js
│       │       │   ├── move-task-cross-tag.test.js
│       │       │   ├── move-task.test.js
│       │       │   ├── parse-prd-schema.test.js
│       │       │   ├── parse-prd.test.js
│       │       │   ├── remove-subtask.test.js
│       │       │   ├── remove-task.test.js
│       │       │   ├── research.test.js
│       │       │   ├── scope-adjustment.test.js
│       │       │   ├── set-task-status.test.js
│       │       │   ├── setup.js
│       │       │   ├── update-single-task-status.test.js
│       │       │   ├── update-subtask-by-id.test.js
│       │       │   ├── update-task-by-id.test.js
│       │       │   └── update-tasks.test.js
│       │       ├── ui
│       │       │   └── cross-tag-error-display.test.js
│       │       └── utils-tag-aware-paths.test.js
│       ├── task-finder.test.js
│       ├── task-manager
│       │   ├── clear-subtasks.test.js
│       │   ├── move-task.test.js
│       │   ├── tag-boundary.test.js
│       │   └── tag-management.test.js
│       ├── task-master.test.js
│       ├── ui
│       │   └── indicators.test.js
│       ├── ui.test.js
│       ├── utils-strip-ansi.test.js
│       └── utils.test.js
├── tsconfig.json
├── tsdown.config.ts
├── turbo.json
└── update-task-migration-plan.md
```

# Files

--------------------------------------------------------------------------------
/.taskmaster/docs/README.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Meta-Development Script
  2 | 
  3 | 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.
  4 | 
  5 | ## Overview
  6 | 
  7 | In an AI-driven development process—particularly with tools like [Cursor](https://www.cursor.so/)—it's beneficial to have a **single source of truth** for tasks. This script allows you to:
  8 | 
  9 | 1. **Parse** a PRD or requirements document (`.txt`) to initialize a set of tasks (`tasks.json`).
 10 | 2. **List** all existing tasks (IDs, statuses, titles).
 11 | 3. **Update** tasks to accommodate new prompts or architecture changes (useful if you discover "implementation drift").
 12 | 4. **Generate** individual task files (e.g., `task_001.txt`) for easy reference or to feed into an AI coding workflow.
 13 | 5. **Set task status**—mark tasks as `done`, `pending`, or `deferred` based on progress.
 14 | 6. **Expand** tasks with subtasks—break down complex tasks into smaller, more manageable subtasks.
 15 | 7. **Research-backed subtask generation**—use Perplexity AI to generate more informed and contextually relevant subtasks.
 16 | 8. **Clear subtasks**—remove subtasks from specified tasks to allow regeneration or restructuring.
 17 | 9. **Show task details**—display detailed information about a specific task and its subtasks.
 18 | 
 19 | ## Configuration
 20 | 
 21 | The script can be configured through environment variables in a `.env` file at the root of the project:
 22 | 
 23 | ### Required Configuration
 24 | 
 25 | - `ANTHROPIC_API_KEY`: Your Anthropic API key for Claude
 26 | 
 27 | ### Optional Configuration
 28 | 
 29 | - `MODEL`: Specify which Claude model to use (default: "claude-3-7-sonnet-20250219")
 30 | - `MAX_TOKENS`: Maximum tokens for model responses (default: 4000)
 31 | - `TEMPERATURE`: Temperature for model responses (default: 0.7)
 32 | - `PERPLEXITY_API_KEY`: Your Perplexity API key for research-backed subtask generation
 33 | - `PERPLEXITY_MODEL`: Specify which Perplexity model to use (default: "sonar-medium-online")
 34 | - `DEBUG`: Enable debug logging (default: false)
 35 | - `TASKMASTER_LOG_LEVEL`: Log level - debug, info, warn, error (default: info)
 36 | - `DEFAULT_SUBTASKS`: Default number of subtasks when expanding (default: 3)
 37 | - `DEFAULT_PRIORITY`: Default priority for generated tasks (default: medium)
 38 | - `PROJECT_NAME`: Override default project name in tasks.json
 39 | - `PROJECT_VERSION`: Override default version in tasks.json
 40 | 
 41 | ## How It Works
 42 | 
 43 | 1. **`tasks.json`**:
 44 | 
 45 |    - A JSON file at the project root containing an array of tasks (each with `id`, `title`, `description`, `status`, etc.).
 46 |    - The `meta` field can store additional info like the project's name, version, or reference to the PRD.
 47 |    - Tasks can have `subtasks` for more detailed implementation steps.
 48 |    - Dependencies are displayed with status indicators (✅ for completed, ⏱️ for pending) to easily track progress.
 49 | 
 50 | 2. **Script Commands**
 51 |    You can run the script via:
 52 | 
 53 |    ```bash
 54 |    node scripts/dev.js [command] [options]
 55 |    ```
 56 | 
 57 |    Available commands:
 58 | 
 59 |    - `parse-prd`: Generate tasks from a PRD document
 60 |    - `list`: Display all tasks with their status
 61 |    - `update`: Update tasks based on new information
 62 |    - `generate`: Create individual task files
 63 |    - `set-status`: Change a task's status
 64 |    - `expand`: Add subtasks to a task or all tasks
 65 |    - `clear-subtasks`: Remove subtasks from specified tasks
 66 |    - `next`: Determine the next task to work on based on dependencies
 67 |    - `show`: Display detailed information about a specific task
 68 | 
 69 |    Run `node scripts/dev.js` without arguments to see detailed usage information.
 70 | 
 71 | ## Listing Tasks
 72 | 
 73 | The `list` command allows you to view all tasks and their status:
 74 | 
 75 | ```bash
 76 | # List all tasks
 77 | node scripts/dev.js list
 78 | 
 79 | # List tasks with a specific status
 80 | node scripts/dev.js list --status=pending
 81 | 
 82 | # List tasks and include their subtasks
 83 | node scripts/dev.js list --with-subtasks
 84 | 
 85 | # List tasks with a specific status and include their subtasks
 86 | node scripts/dev.js list --status=pending --with-subtasks
 87 | ```
 88 | 
 89 | ## Updating Tasks
 90 | 
 91 | The `update` command allows you to update tasks based on new information or implementation changes:
 92 | 
 93 | ```bash
 94 | # Update tasks starting from ID 4 with a new prompt
 95 | node scripts/dev.js update --from=4 --prompt="Refactor tasks from ID 4 onward to use Express instead of Fastify"
 96 | 
 97 | # Update all tasks (default from=1)
 98 | node scripts/dev.js update --prompt="Add authentication to all relevant tasks"
 99 | 
100 | # With research-backed updates using Perplexity AI
101 | node scripts/dev.js update --from=4 --prompt="Integrate OAuth 2.0" --research
102 | 
103 | # Specify a different tasks file
104 | node scripts/dev.js update --file=custom-tasks.json --from=5 --prompt="Change database from MongoDB to PostgreSQL"
105 | ```
106 | 
107 | Notes:
108 | 
109 | - The `--prompt` parameter is required and should explain the changes or new context
110 | - Only tasks that aren't marked as 'done' will be updated
111 | - Tasks with ID >= the specified --from value will be updated
112 | - The `--research` flag uses Perplexity AI for more informed updates when available
113 | 
114 | ## Updating a Single Task
115 | 
116 | The `update-task` command allows you to update a specific task instead of multiple tasks:
117 | 
118 | ```bash
119 | # Update a specific task with new information
120 | node scripts/dev.js update-task --id=4 --prompt="Use JWT for authentication"
121 | 
122 | # With research-backed updates using Perplexity AI
123 | node scripts/dev.js update-task --id=4 --prompt="Use JWT for authentication" --research
124 | ```
125 | 
126 | This command:
127 | 
128 | - Updates only the specified task rather than a range of tasks
129 | - Provides detailed validation with helpful error messages
130 | - Checks for required API keys when using research mode
131 | - Falls back gracefully if Perplexity API is unavailable
132 | - Preserves tasks that are already marked as "done"
133 | - Includes contextual error handling for common issues
134 | 
135 | ## Setting Task Status
136 | 
137 | The `set-status` command allows you to change a task's status:
138 | 
139 | ```bash
140 | # Mark a task as done
141 | node scripts/dev.js set-status --id=3 --status=done
142 | 
143 | # Mark a task as pending
144 | node scripts/dev.js set-status --id=4 --status=pending
145 | 
146 | # Mark a specific subtask as done
147 | node scripts/dev.js set-status --id=3.1 --status=done
148 | 
149 | # Mark multiple tasks at once
150 | node scripts/dev.js set-status --id=1,2,3 --status=done
151 | ```
152 | 
153 | Notes:
154 | 
155 | - When marking a parent task as "done", all of its subtasks will automatically be marked as "done" as well
156 | - Common status values are 'done', 'pending', and 'deferred', but any string is accepted
157 | - You can specify multiple task IDs by separating them with commas
158 | - Subtask IDs are specified using the format `parentId.subtaskId` (e.g., `3.1`)
159 | - Dependencies are updated to show completion status (✅ for completed, ⏱️ for pending) throughout the system
160 | 
161 | ## Expanding Tasks
162 | 
163 | The `expand` command allows you to break down tasks into subtasks for more detailed implementation:
164 | 
165 | ```bash
166 | # Expand a specific task with 3 subtasks (default)
167 | node scripts/dev.js expand --id=3
168 | 
169 | # Expand a specific task with 5 subtasks
170 | node scripts/dev.js expand --id=3 --num=5
171 | 
172 | # Expand a task with additional context
173 | node scripts/dev.js expand --id=3 --prompt="Focus on security aspects"
174 | 
175 | # Expand all pending tasks that don't have subtasks
176 | node scripts/dev.js expand --all
177 | 
178 | # Force regeneration of subtasks for all pending tasks
179 | node scripts/dev.js expand --all --force
180 | 
181 | # Use Perplexity AI for research-backed subtask generation
182 | node scripts/dev.js expand --id=3 --research
183 | 
184 | # Use Perplexity AI for research-backed generation on all pending tasks
185 | node scripts/dev.js expand --all --research
186 | ```
187 | 
188 | ## Clearing Subtasks
189 | 
190 | The `clear-subtasks` command allows you to remove subtasks from specified tasks:
191 | 
192 | ```bash
193 | # Clear subtasks from a specific task
194 | node scripts/dev.js clear-subtasks --id=3
195 | 
196 | # Clear subtasks from multiple tasks
197 | node scripts/dev.js clear-subtasks --id=1,2,3
198 | 
199 | # Clear subtasks from all tasks
200 | node scripts/dev.js clear-subtasks --all
201 | ```
202 | 
203 | Notes:
204 | 
205 | - After clearing subtasks, task files are automatically regenerated
206 | - This is useful when you want to regenerate subtasks with a different approach
207 | - Can be combined with the `expand` command to immediately generate new subtasks
208 | - Works with both parent tasks and individual subtasks
209 | 
210 | ## AI Integration
211 | 
212 | The script integrates with two AI services:
213 | 
214 | 1. **Anthropic Claude**: Used for parsing PRDs, generating tasks, and creating subtasks.
215 | 2. **Perplexity AI**: Used for research-backed subtask generation when the `--research` flag is specified.
216 | 
217 | 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.
218 | 
219 | To use the Perplexity integration:
220 | 
221 | 1. Obtain a Perplexity API key
222 | 2. Add `PERPLEXITY_API_KEY` to your `.env` file
223 | 3. Optionally specify `PERPLEXITY_MODEL` in your `.env` file (default: "sonar-medium-online")
224 | 4. Use the `--research` flag with the `expand` command
225 | 
226 | ## Logging
227 | 
228 | The script supports different logging levels controlled by the `TASKMASTER_LOG_LEVEL` environment variable:
229 | 
230 | - `debug`: Detailed information, typically useful for troubleshooting
231 | - `info`: Confirmation that things are working as expected (default)
232 | - `warn`: Warning messages that don't prevent execution
233 | - `error`: Error messages that might prevent execution
234 | 
235 | When `DEBUG=true` is set, debug logs are also written to a `dev-debug.log` file in the project root.
236 | 
237 | ## Managing Task Dependencies
238 | 
239 | The `add-dependency` and `remove-dependency` commands allow you to manage task dependencies:
240 | 
241 | ```bash
242 | # Add a dependency to a task
243 | node scripts/dev.js add-dependency --id=<id> --depends-on=<id>
244 | 
245 | # Remove a dependency from a task
246 | node scripts/dev.js remove-dependency --id=<id> --depends-on=<id>
247 | ```
248 | 
249 | These commands:
250 | 
251 | 1. **Allow precise dependency management**:
252 | 
253 |    - Add dependencies between tasks with automatic validation
254 |    - Remove dependencies when they're no longer needed
255 |    - Update task files automatically after changes
256 | 
257 | 2. **Include validation checks**:
258 | 
259 |    - Prevent circular dependencies (a task depending on itself)
260 |    - Prevent duplicate dependencies
261 |    - Verify that both tasks exist before adding/removing dependencies
262 |    - Check if dependencies exist before attempting to remove them
263 | 
264 | 3. **Provide clear feedback**:
265 | 
266 |    - Success messages confirm when dependencies are added/removed
267 |    - Error messages explain why operations failed (if applicable)
268 | 
269 | 4. **Automatically update task files**:
270 |    - Regenerates task files to reflect dependency changes
271 |    - Ensures tasks and their files stay synchronized
272 | 
273 | ## Dependency Validation and Fixing
274 | 
275 | The script provides two specialized commands to ensure task dependencies remain valid and properly maintained:
276 | 
277 | ### Validating Dependencies
278 | 
279 | The `validate-dependencies` command allows you to check for invalid dependencies without making changes:
280 | 
281 | ```bash
282 | # Check for invalid dependencies in tasks.json
283 | node scripts/dev.js validate-dependencies
284 | 
285 | # Specify a different tasks file
286 | node scripts/dev.js validate-dependencies --file=custom-tasks.json
287 | ```
288 | 
289 | This command:
290 | 
291 | - Scans all tasks and subtasks for non-existent dependencies
292 | - Identifies potential self-dependencies (tasks referencing themselves)
293 | - Reports all found issues without modifying files
294 | - Provides a comprehensive summary of dependency state
295 | - Gives detailed statistics on task dependencies
296 | 
297 | Use this command to audit your task structure before applying fixes.
298 | 
299 | ### Fixing Dependencies
300 | 
301 | The `fix-dependencies` command proactively finds and fixes all invalid dependencies:
302 | 
303 | ```bash
304 | # Find and fix all invalid dependencies
305 | node scripts/dev.js fix-dependencies
306 | 
307 | # Specify a different tasks file
308 | node scripts/dev.js fix-dependencies --file=custom-tasks.json
309 | ```
310 | 
311 | This command:
312 | 
313 | 1. **Validates all dependencies** across tasks and subtasks
314 | 2. **Automatically removes**:
315 |    - References to non-existent tasks and subtasks
316 |    - Self-dependencies (tasks depending on themselves)
317 | 3. **Fixes issues in both**:
318 |    - The tasks.json data structure
319 |    - Individual task files during regeneration
320 | 4. **Provides a detailed report**:
321 |    - Types of issues fixed (non-existent vs. self-dependencies)
322 |    - Number of tasks affected (tasks vs. subtasks)
323 |    - Where fixes were applied (tasks.json vs. task files)
324 |    - List of all individual fixes made
325 | 
326 | This is especially useful when tasks have been deleted or IDs have changed, potentially breaking dependency chains.
327 | 
328 | ## Analyzing Task Complexity
329 | 
330 | The `analyze-complexity` command allows you to automatically assess task complexity and generate expansion recommendations:
331 | 
332 | ```bash
333 | # Analyze all tasks and generate expansion recommendations
334 | node scripts/dev.js analyze-complexity
335 | 
336 | # Specify a custom output file
337 | node scripts/dev.js analyze-complexity --output=custom-report.json
338 | 
339 | # Override the model used for analysis
340 | node scripts/dev.js analyze-complexity --model=claude-3-opus-20240229
341 | 
342 | # Set a custom complexity threshold (1-10)
343 | node scripts/dev.js analyze-complexity --threshold=6
344 | 
345 | # Use Perplexity AI for research-backed complexity analysis
346 | node scripts/dev.js analyze-complexity --research
347 | ```
348 | 
349 | Notes:
350 | 
351 | - The command uses Claude to analyze each task's complexity (or Perplexity with --research flag)
352 | - Tasks are scored on a scale of 1-10
353 | - Each task receives a recommended number of subtasks based on DEFAULT_SUBTASKS configuration
354 | - The default output path is `scripts/task-complexity-report.json`
355 | - Each task in the analysis includes a ready-to-use `expansionCommand` that can be copied directly to the terminal or executed programmatically
356 | - Tasks with complexity scores below the threshold (default: 5) may not need expansion
357 | - The research flag provides more contextual and informed complexity assessments
358 | 
359 | ### Integration with Expand Command
360 | 
361 | The `expand` command automatically checks for and uses complexity analysis if available:
362 | 
363 | ```bash
364 | # Expand a task, using complexity report recommendations if available
365 | node scripts/dev.js expand --id=8
366 | 
367 | # Expand all tasks, prioritizing by complexity score if a report exists
368 | node scripts/dev.js expand --all
369 | 
370 | # Override recommendations with explicit values
371 | node scripts/dev.js expand --id=8 --num=5 --prompt="Custom prompt"
372 | ```
373 | 
374 | When a complexity report exists:
375 | 
376 | - The `expand` command will use the recommended subtask count from the report (unless overridden)
377 | - It will use the tailored expansion prompt from the report (unless a custom prompt is provided)
378 | - When using `--all`, tasks are sorted by complexity score (highest first)
379 | - The `--research` flag is preserved from the complexity analysis to expansion
380 | 
381 | The output report structure is:
382 | 
383 | ```json
384 | {
385 |  "meta": {
386 |   "generatedAt": "2023-06-15T12:34:56.789Z",
387 |   "tasksAnalyzed": 20,
388 |   "thresholdScore": 5,
389 |   "projectName": "Your Project Name",
390 |   "usedResearch": true
391 |  },
392 |  "complexityAnalysis": [
393 |   {
394 |    "taskId": 8,
395 |    "taskTitle": "Develop Implementation Drift Handling",
396 |    "complexityScore": 9.5,
397 |    "recommendedSubtasks": 6,
398 |    "expansionPrompt": "Create subtasks that handle detecting...",
399 |    "reasoning": "This task requires sophisticated logic...",
400 |    "expansionCommand": "node scripts/dev.js expand --id=8 --num=6 --prompt=\"Create subtasks...\" --research"
401 |   }
402 |   // More tasks sorted by complexity score (highest first)
403 |  ]
404 | }
405 | ```
406 | 
407 | ## Finding the Next Task
408 | 
409 | The `next` command helps you determine which task to work on next based on dependencies and status:
410 | 
411 | ```bash
412 | # Show the next task to work on
413 | node scripts/dev.js next
414 | 
415 | # Specify a different tasks file
416 | node scripts/dev.js next --file=custom-tasks.json
417 | ```
418 | 
419 | This command:
420 | 
421 | 1. Identifies all **eligible tasks** - pending or in-progress tasks whose dependencies are all satisfied (marked as done)
422 | 2. **Prioritizes** these eligible tasks by:
423 |    - Priority level (high > medium > low)
424 |    - Number of dependencies (fewer dependencies first)
425 |    - Task ID (lower ID first)
426 | 3. **Displays** comprehensive information about the selected task:
427 |    - Basic task details (ID, title, priority, dependencies)
428 |    - Detailed description and implementation details
429 |    - Subtasks if they exist
430 | 4. Provides **contextual suggested actions**:
431 |    - Command to mark the task as in-progress
432 |    - Command to mark the task as done when completed
433 |    - Commands for working with subtasks (update status or expand)
434 | 
435 | This feature ensures you're always working on the most appropriate task based on your project's current state and dependency structure.
436 | 
437 | ## Showing Task Details
438 | 
439 | The `show` command allows you to view detailed information about a specific task:
440 | 
441 | ```bash
442 | # Show details for a specific task
443 | node scripts/dev.js show 1
444 | 
445 | # Alternative syntax with --id option
446 | node scripts/dev.js show --id=1
447 | 
448 | # Show details for a subtask
449 | node scripts/dev.js show --id=1.2
450 | 
451 | # Specify a different tasks file
452 | node scripts/dev.js show 3 --file=custom-tasks.json
453 | ```
454 | 
455 | This command:
456 | 
457 | 1. **Displays comprehensive information** about the specified task:
458 |    - Basic task details (ID, title, priority, dependencies, status)
459 |    - Full description and implementation details
460 |    - Test strategy information
461 |    - Subtasks if they exist
462 | 2. **Handles both regular tasks and subtasks**:
463 |    - For regular tasks, shows all subtasks and their status
464 |    - For subtasks, shows the parent task relationship
465 | 3. **Provides contextual suggested actions**:
466 |    - Commands to update the task status
467 |    - Commands for working with subtasks
468 |    - For subtasks, provides a link to view the parent task
469 | 
470 | 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.
471 | 
472 | ## Enhanced Error Handling
473 | 
474 | The script now includes improved error handling throughout all commands:
475 | 
476 | 1. **Detailed Validation**:
477 | 
478 |    - Required parameters (like task IDs and prompts) are validated early
479 |    - File existence is checked with customized errors for common scenarios
480 |    - Parameter type conversion is handled with clear error messages
481 | 
482 | 2. **Contextual Error Messages**:
483 | 
484 |    - Task not found errors include suggestions to run the list command
485 |    - API key errors include reminders to check environment variables
486 |    - Invalid ID format errors show the expected format
487 | 
488 | 3. **Command-Specific Help Displays**:
489 | 
490 |    - When validation fails, detailed help for the specific command is shown
491 |    - Help displays include usage examples and parameter descriptions
492 |    - Formatted in clear, color-coded boxes with examples
493 | 
494 | 4. **Helpful Error Recovery**:
495 |    - Detailed troubleshooting steps for common errors
496 |    - Graceful fallbacks for missing optional dependencies
497 |    - Clear instructions for how to fix configuration issues
498 | 
499 | ## Version Checking
500 | 
501 | The script now automatically checks for updates without slowing down execution:
502 | 
503 | 1. **Background Version Checking**:
504 | 
505 |    - Non-blocking version checks run in the background while commands execute
506 |    - Actual command execution isn't delayed by version checking
507 |    - Update notifications appear after command completion
508 | 
509 | 2. **Update Notifications**:
510 | 
511 |    - When a newer version is available, a notification is displayed
512 |    - Notifications include current version, latest version, and update command
513 |    - Formatted in an attention-grabbing box with clear instructions
514 | 
515 | 3. **Implementation Details**:
516 |    - Uses semantic versioning to compare current and latest versions
517 |    - Fetches version information from npm registry with a timeout
518 |    - Gracefully handles connection issues without affecting command execution
519 | 
520 | ## Subtask Management
521 | 
522 | The script now includes enhanced commands for managing subtasks:
523 | 
524 | ### Adding Subtasks
525 | 
526 | ```bash
527 | # Add a subtask to an existing task
528 | node scripts/dev.js add-subtask --parent=5 --title="Implement login UI" --description="Create login form"
529 | 
530 | # Convert an existing task to a subtask
531 | node scripts/dev.js add-subtask --parent=5 --task-id=8
532 | 
533 | # Add a subtask with dependencies
534 | node scripts/dev.js add-subtask --parent=5 --title="Authentication middleware" --dependencies=5.1,5.2
535 | 
536 | # Skip regenerating task files
537 | node scripts/dev.js add-subtask --parent=5 --title="Login API route" --skip-generate
538 | ```
539 | 
540 | Key features:
541 | 
542 | - Create new subtasks with detailed properties or convert existing tasks
543 | - Define dependencies between subtasks
544 | - Set custom status for new subtasks
545 | - Provides next-step suggestions after creation
546 | 
547 | ### Removing Subtasks
548 | 
549 | ```bash
550 | # Remove a subtask
551 | node scripts/dev.js remove-subtask --id=5.2
552 | 
553 | # Remove multiple subtasks
554 | node scripts/dev.js remove-subtask --id=5.2,5.3,5.4
555 | 
556 | # Convert a subtask to a standalone task
557 | node scripts/dev.js remove-subtask --id=5.2 --convert
558 | 
559 | # Skip regenerating task files
560 | node scripts/dev.js remove-subtask --id=5.2 --skip-generate
561 | ```
562 | 
563 | Key features:
564 | 
565 | - Remove subtasks individually or in batches
566 | - Optionally convert subtasks to standalone tasks
567 | - Control whether task files are regenerated
568 | - Provides detailed success messages and next steps
569 | 
```

--------------------------------------------------------------------------------
/src/prompts/README.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Task Master Prompt Management System
  2 | 
  3 | This directory contains the centralized prompt templates for all AI-powered features in Task Master.
  4 | 
  5 | ## Overview
  6 | 
  7 | The prompt management system provides:
  8 | - **Centralized Storage**: All prompts in one location (`/src/prompts`)
  9 | - **JSON Schema Validation**: Comprehensive validation using AJV with detailed error reporting
 10 | - **Version Control**: Track changes to prompts over time
 11 | - **Variant Support**: Different prompts for different contexts (research mode, complexity levels, etc.)
 12 | - **Template Variables**: Dynamic prompt generation with variable substitution
 13 | - **IDE Integration**: VS Code IntelliSense and validation support
 14 | 
 15 | ## Directory Structure
 16 | 
 17 | ```
 18 | src/prompts/
 19 | ├── README.md                # This file
 20 | ├── schemas/                 # JSON schemas for validation
 21 | │   ├── README.md           # Schema documentation
 22 | │   ├── prompt-template.schema.json  # Main template schema
 23 | │   ├── parameter.schema.json        # Parameter validation schema
 24 | │   └── variant.schema.json          # Prompt variant schema
 25 | ├── parse-prd.json          # PRD parsing prompts
 26 | ├── expand-task.json        # Task expansion prompts
 27 | ├── add-task.json           # Task creation prompts
 28 | ├── update-tasks.json       # Bulk task update prompts
 29 | ├── update-task.json        # Single task update prompts
 30 | ├── update-subtask.json     # Subtask update prompts
 31 | ├── analyze-complexity.json # Complexity analysis prompts
 32 | └── research.json           # Research query prompts
 33 | ```
 34 | 
 35 | ## Schema Validation
 36 | 
 37 | All prompt templates are validated against JSON schemas located in `/src/prompts/schemas/`. The validation system:
 38 | 
 39 | - **Structural Validation**: Ensures required fields and proper nesting
 40 | - **Parameter Type Checking**: Validates parameter types, patterns, and ranges
 41 | - **Template Syntax**: Validates Handlebars syntax and variable references
 42 | - **Semantic Versioning**: Enforces proper version format
 43 | - **Cross-Reference Validation**: Ensures parameters match template variables
 44 | 
 45 | ### Validation Features
 46 | - **Required Fields**: `id`, `version`, `description`, `prompts.default`
 47 | - **Type Safety**: String, number, boolean, array, object validation
 48 | - **Pattern Matching**: Regex validation for string parameters
 49 | - **Range Validation**: Min/max values for numeric parameters
 50 | - **Enum Constraints**: Restricted value sets for categorical parameters
 51 | 
 52 | ## Development Workflow
 53 | 
 54 | ### Setting Up Development Environment
 55 | 1. **VS Code Integration**: Schemas are automatically configured for IntelliSense
 56 | 2. **Dependencies**: `ajv` and `ajv-formats` are required for validation
 57 | 3. **File Watching**: Changes to templates trigger automatic validation
 58 | 
 59 | ### Creating New Prompts
 60 | 1. Create a new `.json` file in `/src/prompts/`
 61 | 2. Follow the schema structure (see Template Structure section)
 62 | 3. Define parameters with proper types and validation
 63 | 4. Create system and user prompts with template variables
 64 | 5. Test with the PromptManager before committing
 65 | 
 66 | ### Modifying Existing Prompts
 67 | 1. Update the `version` field following semantic versioning
 68 | 2. Maintain backward compatibility when possible
 69 | 3. Test with existing code that uses the prompt
 70 | 4. Update documentation if parameters change
 71 | 
 72 | ## Prompt Template Reference
 73 | 
 74 | ### 1. parse-prd.json
 75 | **Purpose**: Parse a Product Requirements Document into structured tasks  
 76 | **Variants**: `default`, `research` (when research mode is enabled)
 77 | 
 78 | **Required Parameters**:
 79 | - `numTasks` (number): Target number of tasks to generate
 80 | - `nextId` (number): Starting ID for tasks
 81 | - `prdContent` (string): Content of the PRD file
 82 | - `prdPath` (string): Path to the PRD file
 83 | - `defaultTaskPriority` (string): Default priority for generated tasks
 84 | 
 85 | **Optional Parameters**:
 86 | - `research` (boolean): Enable research mode for latest best practices (default: false)
 87 | 
 88 | **Usage**: Used by `task-master parse-prd` command to convert PRD documents into actionable task lists.
 89 | 
 90 | ### 2. add-task.json
 91 | **Purpose**: Generate a new task based on user description  
 92 | **Variants**: `default`, `research` (when research mode is enabled)
 93 | 
 94 | **Required Parameters**:
 95 | - `prompt` (string): User's task description
 96 | - `newTaskId` (number): ID for the new task
 97 | 
 98 | **Optional Parameters**:
 99 | - `existingTasks` (array): List of existing tasks for context
100 | - `gatheredContext` (string): Context gathered from codebase analysis
101 | - `contextFromArgs` (string): Additional context from manual args
102 | - `priority` (string): Task priority (high/medium/low, default: medium)
103 | - `dependencies` (array): Task dependency IDs
104 | - `useResearch` (boolean): Use research mode (default: false)
105 | 
106 | **Usage**: Used by `task-master add-task` command to create new tasks with AI assistance.
107 | 
108 | ### 3. expand-task.json
109 | **Purpose**: Break down a task into detailed subtasks with three sophisticated strategies  
110 | **Variants**: `complexity-report` (when expansionPrompt exists), `research` (when research mode is enabled), `default` (standard case)
111 | 
112 | **Required Parameters**:
113 | - `subtaskCount` (number): Number of subtasks to generate
114 | - `task` (object): The task to expand
115 | - `nextSubtaskId` (number): Starting ID for new subtasks
116 | 
117 | **Optional Parameters**:
118 | - `additionalContext` (string): Additional context for expansion (default: "")
119 | - `complexityReasoningContext` (string): Complexity analysis reasoning context (default: "")
120 | - `gatheredContext` (string): Gathered project context (default: "")
121 | - `useResearch` (boolean): Use research mode (default: false)
122 | - `expansionPrompt` (string): Expansion prompt from complexity report
123 | 
124 | **Variant Selection Strategy**:
125 | 1. **complexity-report**: Used when `expansionPrompt` exists (highest priority)
126 | 2. **research**: Used when `useResearch === true && !expansionPrompt`
127 | 3. **default**: Standard fallback strategy
128 | 
129 | **Usage**: Used by `task-master expand` command to break complex tasks into manageable subtasks using the most appropriate strategy based on available context and complexity analysis.
130 | 
131 | ### 4. update-task.json
132 | **Purpose**: Update a single task with new information, supporting full updates and append mode  
133 | **Variants**: `default`, `append` (when appendMode is true), `research` (when research mode is enabled)
134 | 
135 | **Required Parameters**:
136 | - `task` (object): The task to update
137 | - `taskJson` (string): JSON string representation of the task
138 | - `updatePrompt` (string): Description of changes to apply
139 | 
140 | **Optional Parameters**:
141 | - `appendMode` (boolean): Whether to append to details or do full update (default: false)
142 | - `useResearch` (boolean): Use research mode (default: false)
143 | - `currentDetails` (string): Current task details for context (default: "(No existing details)")
144 | - `gatheredContext` (string): Additional project context
145 | 
146 | **Usage**: Used by `task-master update-task` command to modify existing tasks.
147 | 
148 | ### 5. update-tasks.json
149 | **Purpose**: Update multiple tasks based on new context or changes  
150 | **Variants**: `default`, `research` (when research mode is enabled)
151 | 
152 | **Required Parameters**:
153 | - `tasks` (array): Array of tasks to update
154 | - `updatePrompt` (string): Description of changes to apply
155 | 
156 | **Optional Parameters**:
157 | - `useResearch` (boolean): Use research mode (default: false)
158 | - `projectContext` (string): Additional project context
159 | 
160 | **Usage**: Used by `task-master update` command to bulk update multiple tasks.
161 | 
162 | ### 6. update-subtask.json
163 | **Purpose**: Append information to a subtask by generating only new content  
164 | **Variants**: `default`, `research` (when research mode is enabled)
165 | 
166 | **Required Parameters**:
167 | - `parentTask` (object): The parent task context
168 | - `currentDetails` (string): Current subtask details (default: "(No existing details)")
169 | - `updatePrompt` (string): User request for what to add
170 | 
171 | **Optional Parameters**:
172 | - `prevSubtask` (object): The previous subtask if any
173 | - `nextSubtask` (object): The next subtask if any
174 | - `useResearch` (boolean): Use research mode (default: false)
175 | - `gatheredContext` (string): Additional project context
176 | 
177 | **Usage**: Used by `task-master update-subtask` command to log progress and findings on subtasks.
178 | 
179 | ### 7. analyze-complexity.json
180 | **Purpose**: Analyze task complexity and generate expansion recommendations  
181 | **Variants**: `default`, `research` (when research mode is enabled), `batch` (when analyzing >10 tasks)
182 | 
183 | **Required Parameters**:
184 | - `tasks` (array): Array of tasks to analyze
185 | 
186 | **Optional Parameters**:
187 | - `gatheredContext` (string): Additional project context
188 | - `threshold` (number): Complexity threshold for expansion recommendation (1-10, default: 5)
189 | - `useResearch` (boolean): Use research mode for deeper analysis (default: false)
190 | 
191 | **Usage**: Used by `task-master analyze-complexity` command to determine which tasks need breakdown.
192 | 
193 | ### 8. research.json
194 | **Purpose**: Perform AI-powered research with project context  
195 | **Variants**: `default`, `low` (concise responses), `medium` (balanced), `high` (detailed)
196 | 
197 | **Required Parameters**:
198 | - `query` (string): Research query
199 | 
200 | **Optional Parameters**:
201 | - `gatheredContext` (string): Gathered project context
202 | - `detailLevel` (string): Level of detail (low/medium/high, default: medium)
203 | - `projectInfo` (object): Project information with properties:
204 |   - `root` (string): Project root path
205 |   - `taskCount` (number): Number of related tasks
206 |   - `fileCount` (number): Number of related files
207 | 
208 | **Usage**: Used by `task-master research` command to get contextual information and guidance.
209 | 
210 | ## Template Structure
211 | 
212 | Each prompt template is a JSON file with the following structure:
213 | 
214 | ```json
215 | {
216 |   "id": "unique-identifier",
217 |   "version": "1.0.0",
218 |   "description": "What this prompt does",
219 |   "metadata": {
220 |     "author": "system",
221 |     "created": "2024-01-01T00:00:00Z",
222 |     "updated": "2024-01-01T00:00:00Z",
223 |     "tags": ["category", "feature"],
224 |     "category": "task"
225 |   },
226 |   "parameters": {
227 |     "paramName": {
228 |       "type": "string|number|boolean|array|object",
229 |       "required": true|false,
230 |       "default": "default value",
231 |       "description": "Parameter description",
232 |       "enum": ["option1", "option2"],
233 |       "pattern": "^[a-z]+$",
234 |       "minimum": 1,
235 |       "maximum": 100
236 |     }
237 |   },
238 |   "prompts": {
239 |     "default": {
240 |       "system": "System prompt template",
241 |       "user": "User prompt template"
242 |     },
243 |     "variant-name": {
244 |       "condition": "JavaScript expression",
245 |       "system": "Variant system prompt",
246 |       "user": "Variant user prompt",
247 |       "metadata": {
248 |         "description": "When to use this variant"
249 |       }
250 |     }
251 |   }
252 | }
253 | ```
254 | 
255 | ## Template Features
256 | 
257 | ### Variable Substitution
258 | Use `{{variableName}}` to inject dynamic values:
259 | ```
260 | "user": "Analyze these {{tasks.length}} tasks with threshold {{threshold}}"
261 | ```
262 | 
263 | ### Conditionals
264 | Use `{{#if variable}}...{{/if}}` for conditional content:
265 | ```
266 | "user": "{{#if useResearch}}Research and {{/if}}create a task"
267 | ```
268 | 
269 | ### Helper Functions
270 | 
271 | #### Equality Helper
272 | Use `{{#if (eq variable "value")}}...{{/if}}` for string comparisons:
273 | ```
274 | "user": "{{#if (eq detailLevel \"low\")}}Provide a brief summary{{/if}}"
275 | "user": "{{#if (eq priority \"high\")}}URGENT: {{/if}}{{taskTitle}}"
276 | ```
277 | 
278 | The `eq` helper enables clean conditional logic based on parameter values:
279 | - Compare strings: `(eq detailLevel "medium")`
280 | - Compare with enum values: `(eq status "pending")`
281 | - Multiple conditions: `{{#if (eq level "1")}}First{{/if}}{{#if (eq level "2")}}Second{{/if}}`
282 | 
283 | #### Negation Helper
284 | Use `{{#if (not variable)}}...{{/if}}` for negation conditions:
285 | ```
286 | "user": "{{#if (not useResearch)}}Use basic analysis{{/if}}"
287 | "user": "{{#if (not hasSubtasks)}}This task has no subtasks{{/if}}"
288 | ```
289 | 
290 | The `not` helper enables clean negative conditional logic:
291 | - Negate boolean values: `(not useResearch)`
292 | - Negate truthy/falsy values: `(not emptyArray)`
293 | - Cleaner than separate boolean parameters: No need for `notUseResearch` flags
294 | 
295 | #### Numeric Comparison Helpers
296 | Use `{{#if (gt variable number)}}...{{/if}}` for greater than comparisons:
297 | ```
298 | "user": "generate {{#if (gt numTasks 0)}}approximately {{numTasks}}{{else}}an appropriate number of{{/if}} top-level development tasks"
299 | "user": "{{#if (gt complexity 5)}}This is a complex task{{/if}}"
300 | "system": "create {{#if (gt subtaskCount 0)}}exactly {{subtaskCount}}{{else}}an appropriate number of{{/if}} subtasks"
301 | ```
302 | 
303 | Use `{{#if (gte variable number)}}...{{/if}}` for greater than or equal comparisons:
304 | ```
305 | "user": "{{#if (gte priority 8)}}HIGH PRIORITY{{/if}}"
306 | "user": "{{#if (gte threshold 1)}}Analysis enabled{{/if}}"
307 | "system": "{{#if (gte complexityScore 8)}}Use detailed breakdown approach{{/if}}"
308 | ```
309 | 
310 | The numeric comparison helpers enable sophisticated conditional logic:
311 | - **Dynamic counting**: `{{#if (gt numTasks 0)}}exactly {{numTasks}}{{else}}an appropriate number of{{/if}}`
312 | - **Threshold-based behavior**: `(gte complexityScore 8)` for high-complexity handling
313 | - **Zero checks**: `(gt subtaskCount 0)` for conditional content generation
314 | - **Decimal support**: `(gt score 7.5)` for fractional comparisons
315 | - **Enhanced prompt sophistication**: Enables parse-prd and expand-task logic matching GitHub specifications
316 | 
317 | ### Loops
318 | Use `{{#each array}}...{{/each}}` to iterate over arrays:
319 | ```
320 | "user": "Tasks:\n{{#each tasks}}- {{id}}: {{title}}\n{{/each}}"
321 | ```
322 | 
323 | ### Special Loop Variables
324 | Inside `{{#each}}` blocks, you have access to:
325 | - `{{@index}}`: Current array index (0-based)
326 | - `{{@first}}`: Boolean, true for first item
327 | - `{{@last}}`: Boolean, true for last item
328 | 
329 | ```
330 | "user": "{{#each tasks}}{{@index}}. {{title}}{{#unless @last}}\n{{/unless}}{{/each}}"
331 | ```
332 | 
333 | ### JSON Serialization
334 | Use `{{{json variable}}}` (triple braces) to serialize objects/arrays to JSON:
335 | ```
336 | "user": "Analyze these tasks: {{{json tasks}}}"
337 | ```
338 | 
339 | ### Nested Properties
340 | Access nested properties with dot notation:
341 | ```
342 | "user": "Project: {{context.projectName}}"
343 | ```
344 | 
345 | ## Prompt Variants
346 | 
347 | Variants allow different prompts based on conditions:
348 | 
349 | ```json
350 | {
351 |   "prompts": {
352 |     "default": {
353 |       "system": "Default system prompt",
354 |       "user": "Default user prompt"
355 |     },
356 |     "research": {
357 |       "condition": "useResearch === true",
358 |       "system": "Research-focused system prompt",
359 |       "user": "Research-focused user prompt"
360 |     },
361 |     "high-complexity": {
362 |       "condition": "complexityScore >= 8",
363 |       "system": "Complex task handling prompt",
364 |       "user": "Detailed breakdown request"
365 |     }
366 |   }
367 | }
368 | ```
369 | 
370 | ### Condition Evaluation
371 | Conditions are JavaScript expressions evaluated with parameter values as context:
372 | - Simple comparisons: `useResearch === true`
373 | - Numeric comparisons: `threshold >= 5`
374 | - String matching: `priority === 'high'`
375 | - Complex logic: `useResearch && threshold > 7`
376 | 
377 | ## PromptManager Module
378 | 
379 | The PromptManager is implemented in `scripts/modules/prompt-manager.js` and provides:
380 | - **Template loading and caching**: Templates are loaded once and cached for performance
381 | - **Schema validation**: Comprehensive validation using AJV with detailed error reporting
382 | - **Variable substitution**: Handlebars-like syntax for dynamic content
383 | - **Variant selection**: Automatic selection based on conditions
384 | - **Error handling**: Graceful fallbacks and detailed error messages
385 | - **Singleton pattern**: One instance per project root for efficiency
386 | 
387 | ### Validation Behavior
388 | - **Schema Available**: Full validation with detailed error messages
389 | - **Schema Missing**: Falls back to basic structural validation
390 | - **Invalid Templates**: Throws descriptive errors with field-level details
391 | - **Parameter Validation**: Type checking, pattern matching, range validation
392 | 
393 | ## Usage in Code
394 | 
395 | ### Basic Usage
396 | ```javascript
397 | import { getPromptManager } from '../prompt-manager.js';
398 | 
399 | const promptManager = getPromptManager();
400 | const { systemPrompt, userPrompt, metadata } = promptManager.loadPrompt('add-task', {
401 |   // Parameters matching the template's parameter definitions
402 |   prompt: 'Create a user authentication system',
403 |   newTaskId: 5,
404 |   priority: 'high',
405 |   useResearch: false
406 | });
407 | 
408 | // Use with AI service
409 | const result = await generateObjectService({
410 |   systemPrompt,
411 |   prompt: userPrompt,
412 |   // ... other AI parameters
413 | });
414 | ```
415 | 
416 | ### With Variants
417 | ```javascript
418 | // Research variant will be selected automatically
419 | const { systemPrompt, userPrompt } = promptManager.loadPrompt('expand-task', {
420 |   useResearch: true,  // Triggers research variant
421 |   task: taskObject,
422 |   subtaskCount: 5
423 | });
424 | ```
425 | 
426 | ### Error Handling
427 | ```javascript
428 | try {
429 |   const result = promptManager.loadPrompt('invalid-template', {});
430 | } catch (error) {
431 |   if (error.message.includes('Schema validation failed')) {
432 |     console.error('Template validation error:', error.message);
433 |   } else if (error.message.includes('not found')) {
434 |     console.error('Template not found:', error.message);
435 |   }
436 | }
437 | ```
438 | 
439 | ## Adding New Prompts
440 | 
441 | 1. **Create the JSON file** following the template structure
442 | 2. **Define parameters** with proper types, validation, and descriptions
443 | 3. **Create prompts** with clear system and user templates
444 | 4. **Use template variables** for dynamic content
445 | 5. **Add variants** if needed for different contexts
446 | 6. **Test thoroughly** with the PromptManager
447 | 7. **Update this documentation** with the new prompt details
448 | 
449 | ### Example New Prompt
450 | ```json
451 | {
452 |   "id": "new-feature",
453 |   "version": "1.0.0",
454 |   "description": "Generate code for a new feature",
455 |   "parameters": {
456 |     "featureName": {
457 |       "type": "string",
458 |       "required": true,
459 |       "pattern": "^[a-zA-Z][a-zA-Z0-9-]*$",
460 |       "description": "Name of the feature to implement"
461 |     },
462 |     "complexity": {
463 |       "type": "string",
464 |       "required": false,
465 |       "enum": ["simple", "medium", "complex"],
466 |       "default": "medium",
467 |       "description": "Feature complexity level"
468 |     }
469 |   },
470 |   "prompts": {
471 |     "default": {
472 |       "system": "You are a senior software engineer.",
473 |       "user": "Create a {{complexity}} {{featureName}} feature."
474 |     }
475 |   }
476 | }
477 | ```
478 | 
479 | ## Best Practices
480 | 
481 | ### Template Design
482 | 1. **Clear IDs**: Use kebab-case, descriptive identifiers
483 | 2. **Semantic Versioning**: Follow semver for version management
484 | 3. **Comprehensive Parameters**: Define all required and optional parameters
485 | 4. **Type Safety**: Use proper parameter types and validation
486 | 5. **Clear Descriptions**: Document what each prompt and parameter does
487 | 
488 | ### Variable Usage
489 | 1. **Meaningful Names**: Use descriptive variable names
490 | 2. **Consistent Patterns**: Follow established naming conventions
491 | 3. **Safe Defaults**: Provide sensible default values
492 | 4. **Validation**: Use patterns, enums, and ranges for validation
493 | 
494 | ### Variant Strategy
495 | 1. **Simple Conditions**: Keep variant conditions easy to understand
496 | 2. **Clear Purpose**: Each variant should have a distinct use case
497 | 3. **Fallback Logic**: Always provide a default variant
498 | 4. **Documentation**: Explain when each variant is used
499 | 
500 | ### Performance
501 | 1. **Caching**: Templates are cached automatically
502 | 2. **Lazy Loading**: Templates load only when needed
503 | 3. **Minimal Variants**: Don't create unnecessary variants
504 | 4. **Efficient Conditions**: Keep condition evaluation fast
505 | 
506 | ## Testing Prompts
507 | 
508 | ### Validation Testing
509 | ```javascript
510 | // Test schema validation
511 | const promptManager = getPromptManager();
512 | const results = promptManager.validateAllPrompts();
513 | console.log(`Valid: ${results.valid.length}, Errors: ${results.errors.length}`);
514 | ```
515 | 
516 | ### Integration Testing
517 | When modifying prompts, ensure to test:
518 | - Variable substitution works with actual data structures
519 | - Variant selection triggers correctly based on conditions
520 | - AI responses remain consistent with expected behavior
521 | - All parameters are properly validated
522 | - Error handling works for invalid inputs
523 | 
524 | ### Quick Testing
525 | ```javascript
526 | // Test prompt loading and variable substitution
527 | const promptManager = getPromptManager();
528 | const result = promptManager.loadPrompt('research', {
529 |   query: 'What are the latest React best practices?',
530 |   detailLevel: 'medium',
531 |   gatheredContext: 'React project with TypeScript'
532 | });
533 | console.log('System:', result.systemPrompt);
534 | console.log('User:', result.userPrompt);
535 | console.log('Metadata:', result.metadata);
536 | ```
537 | 
538 | ### Testing Checklist
539 | - [ ] Template validates against schema
540 | - [ ] All required parameters are defined
541 | - [ ] Variable substitution works correctly
542 | - [ ] Variants trigger under correct conditions
543 | - [ ] Error messages are clear and helpful
544 | - [ ] Performance is acceptable for repeated usage
545 | 
546 | ## Troubleshooting
547 | 
548 | ### Common Issues
549 | 
550 | **Schema Validation Errors**:
551 | - Check required fields are present
552 | - Verify parameter types match schema
553 | - Ensure version follows semantic versioning
554 | - Validate JSON syntax
555 | 
556 | **Variable Substitution Problems**:
557 | - Check variable names match parameter names
558 | - Verify nested property access syntax
559 | - Ensure array iteration syntax is correct
560 | - Test with actual data structures
561 | 
562 | **Variant Selection Issues**:
563 | - Verify condition syntax is valid JavaScript
564 | - Check parameter values match condition expectations
565 | - Ensure default variant exists
566 | - Test condition evaluation with debug logging
567 | 
568 | **Performance Issues**:
569 | - Check for circular references in templates
570 | - Verify caching is working correctly
571 | - Monitor template loading frequency
572 | - Consider simplifying complex conditions
573 | 
```

--------------------------------------------------------------------------------
/CLAUDE.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Claude Code Instructions
  2 | 
  3 | ## Task Master AI Instructions
  4 | 
  5 | **Import Task Master's development workflow commands and guidelines, treat as if import is in the main CLAUDE.md file.**
  6 | @./.taskmaster/CLAUDE.md
  7 | 
  8 | ## Test Guidelines
  9 | 
 10 | ### Test File Placement
 11 | 
 12 | - **Package & tests**: Place in `packages/<package-name>/src/<module>/<file>.spec.ts` or `apps/<app-name>/src/<module>/<file.spec.ts>` alongside source
 13 | - **Package integration tests**: Place in `packages/<package-name>/tests/integration/<module>/<file>.test.ts` or `apps/<app-name>/tests/integration/<module>/<file>.test.ts` alongside source
 14 | - **Isolated unit tests**: Use `tests/unit/packages/<package-name>/` only when parallel placement isn't possible
 15 | - **Test extension**: Always use `.ts` for TypeScript tests, never `.js`
 16 | 
 17 | ### Synchronous Tests
 18 | 
 19 | - **NEVER use async/await in test functions** unless testing actual asynchronous operations
 20 | - Use synchronous top-level imports instead of dynamic `await import()`
 21 | - Test bodies should be synchronous whenever possible
 22 | - Example:
 23 | 
 24 |   ```typescript
 25 |   // ✅ CORRECT - Synchronous imports with .ts extension
 26 |   import { MyClass } from '../src/my-class.js';
 27 | 
 28 |   it('should verify behavior', () => {
 29 |     expect(new MyClass().property).toBe(value);
 30 |   });
 31 | 
 32 |   // ❌ INCORRECT - Async imports
 33 |   it('should verify behavior', async () => {
 34 |     const { MyClass } = await import('../src/my-class.js');
 35 |     expect(new MyClass().property).toBe(value);
 36 |   });
 37 |   ```
 38 | 
 39 | ### When to Write Tests
 40 | 
 41 | **ALWAYS write tests for:**
 42 | 
 43 | - **Bug fixes**: Add a regression test that would have caught the bug
 44 | - **Business logic**: Complex calculations, validations, transformations
 45 | - **Edge cases**: Boundary conditions, error handling, null/undefined cases
 46 | - **Public APIs**: Methods other code depends on
 47 | - **Integration points**: Database, file system, external APIs
 48 | 
 49 | **SKIP tests for:**
 50 | 
 51 | - Simple getters/setters: `getX() { return this.x; }`
 52 | - Trivial pass-through functions with no logic
 53 | - Pure configuration objects
 54 | - Code that just delegates to another tested function
 55 | 
 56 | **Examples:**
 57 | 
 58 | ```javascript
 59 | // ✅ WRITE A TEST - Bug fix with regression prevention
 60 | it('should use correct baseURL from defaultBaseURL config', () => {
 61 |   const provider = new ZAIProvider();
 62 |   expect(provider.defaultBaseURL).toBe('https://api.z.ai/api/paas/v4/');
 63 | });
 64 | 
 65 | // ✅ WRITE A TEST - Business logic with edge cases
 66 | it('should parse subtask IDs correctly', () => {
 67 |   expect(parseTaskId('1.2.3')).toEqual({ taskId: 1, subtaskId: 2, subSubtaskId: 3 });
 68 |   expect(parseTaskId('invalid')).toBeNull();
 69 | });
 70 | 
 71 | // ❌ SKIP TEST - Trivial getter
 72 | class Task {
 73 |   get id() { return this._id; } // No test needed
 74 | }
 75 | 
 76 | // ❌ SKIP TEST - Pure delegation
 77 | function getTasks() {
 78 |   return taskManager.getTasks(); // Already tested in taskManager
 79 | }
 80 | ```
 81 | 
 82 | **Bug Fix Workflow:**
 83 | 
 84 | 1. Encounter a bug
 85 | 2. Write a failing test that reproduces it
 86 | 3. Fix the bug
 87 | 4. Verify test now passes
 88 | 5. Commit both fix and test together
 89 | 
 90 | ## Architecture Guidelines
 91 | 
 92 | ### Business Logic Separation
 93 | 
 94 | **CRITICAL RULE**: ALL business logic must live in `@tm/core`, NOT in presentation layers.
 95 | 
 96 | - **`@tm/core`** (packages/tm-core/):
 97 |   - Contains ALL business logic, domain models, services, and utilities
 98 |   - Provides clean facade APIs through domain objects (tasks, auth, workflow, git, config)
 99 |   - Houses all complexity - parsing, validation, transformations, calculations, etc.
100 |   - Example: Task ID parsing, subtask extraction, status validation, dependency resolution
101 | 
102 | - **`@tm/cli`** (apps/cli/):
103 |   - Thin presentation layer ONLY
104 |   - Calls tm-core methods and displays results
105 |   - Handles CLI-specific concerns: argument parsing, output formatting, user prompts
106 |   - NO business logic, NO data transformations, NO calculations
107 | 
108 | - **`@tm/mcp`** (apps/mcp/):
109 |   - Thin presentation layer ONLY
110 |   - Calls tm-core methods and returns MCP-formatted responses
111 |   - Handles MCP-specific concerns: tool schemas, parameter validation, response formatting
112 |   - NO business logic, NO data transformations, NO calculations
113 | 
114 | - **`apps/extension`** (future):
115 |   - Thin presentation layer ONLY
116 |   - Calls tm-core methods and displays in VS Code UI
117 |   - NO business logic
118 | 
119 | **Examples of violations to avoid:**
120 | 
121 | - ❌ Creating helper functions in CLI/MCP to parse task IDs → Move to tm-core
122 | - ❌ Data transformation logic in CLI/MCP → Move to tm-core
123 | - ❌ Validation logic in CLI/MCP → Move to tm-core
124 | - ❌ Duplicating logic across CLI and MCP → Implement once in tm-core
125 | 
126 | **Correct approach:**
127 | 
128 | - ✅ Add method to TasksDomain: `tasks.get(taskId)` (automatically handles task and subtask IDs)
129 | - ✅ CLI calls: `await tmCore.tasks.get(taskId)` (supports "1", "1.2", "HAM-123", "HAM-123.2")
130 | - ✅ MCP calls: `await tmCore.tasks.get(taskId)` (same intelligent ID parsing)
131 | - ✅ Single source of truth in tm-core
132 | 
133 | ## Code Quality & Reusability Guidelines
134 | 
135 | Apply standard software engineering principles:
136 | 
137 | - **DRY (Don't Repeat Yourself)**: Extract patterns that appear 2+ times into reusable components or utilities
138 | - **YAGNI (You Aren't Gonna Need It)**: Don't over-engineer. Create abstractions when duplication appears, not before
139 | - **Maintainable**: Single source of truth. Change once, update everywhere
140 | - **Readable**: Clear naming, proper structure, export from index files
141 | - **Flexible**: Accept configuration options with sensible defaults
142 | 
143 | ## Documentation Guidelines
144 | 
145 | - **Documentation location**: Write docs in `apps/docs/` (Mintlify site source), not `docs/`
146 | - **Documentation URL**: Reference docs at <https://docs.task-master.dev>, not local file paths
147 | 
148 | ## Changeset Guidelines
149 | 
150 | - **Add a changeset for code changes** - Run `npx changeset` after making code changes (not needed for docs-only PRs)
151 | - When creating changesets, remember that it's user-facing, meaning we don't have to get into the specifics of the code, but rather mention what the end-user is getting or fixing from this changeset
152 | 
```

--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Contributing to Task Master
  2 | 
  3 | Thank you for your interest in contributing to Task Master! We're excited to work with you and appreciate your help in making this project better. 🚀
  4 | 
  5 | ## 🤝 Our Collaborative Approach
  6 | 
  7 | We're a **PR-friendly team** that values collaboration:
  8 | 
  9 | - ✅ **We review PRs quickly** - Usually within hours, not days
 10 | - ✅ **We're super reactive** - Expect fast feedback and engagement
 11 | - ✅ **We sometimes take over PRs** - If your contribution is valuable but needs cleanup, we might jump in to help finish it
 12 | - ✅ **We're open to all contributions** - From bug fixes to major features
 13 | 
 14 | **We don't mind AI-generated code**, but we do expect you to:
 15 | 
 16 | - ✅ **Review and understand** what the AI generated
 17 | - ✅ **Test the code thoroughly** before submitting
 18 | - ✅ **Ensure it's well-written** and follows our patterns
 19 | - ❌ **Don't submit "AI slop"** - untested, unreviewed AI output
 20 | 
 21 | > **Why this matters**: We spend significant time reviewing PRs. Help us help you by submitting quality contributions that save everyone time!
 22 | 
 23 | ## 🚀 Quick Start for Contributors
 24 | 
 25 | ### 1. Fork and Clone
 26 | 
 27 | ```bash
 28 | git clone https://github.com/YOUR_USERNAME/claude-task-master.git
 29 | cd claude-task-master
 30 | npm install
 31 | ```
 32 | 
 33 | ### 2. Create a Feature Branch
 34 | 
 35 | **Important**: Always target the `next` branch, not `main`:
 36 | 
 37 | ```bash
 38 | git checkout next
 39 | git pull origin next
 40 | git checkout -b feature/your-feature-name
 41 | ```
 42 | 
 43 | ### 3. Make Your Changes
 44 | 
 45 | Follow our development guidelines below.
 46 | 
 47 | ### 4. Test Everything Yourself
 48 | 
 49 | **Before submitting your PR**, ensure:
 50 | 
 51 | ```bash
 52 | # Run all tests
 53 | npm test
 54 | 
 55 | # Check formatting
 56 | npm run format-check
 57 | 
 58 | # Fix formatting if needed
 59 | npm run format
 60 | ```
 61 | 
 62 | ### 5. Create a Changeset
 63 | 
 64 | **Required for most changes**:
 65 | 
 66 | ```bash
 67 | npm run changeset
 68 | ```
 69 | 
 70 | See the [Changeset Guidelines](#changeset-guidelines) below for details.
 71 | 
 72 | ### 6. Submit Your PR
 73 | 
 74 | - Target the `next` branch
 75 | - Write a clear description
 76 | - Reference any related issues
 77 | 
 78 | ## 📋 Development Guidelines
 79 | 
 80 | ### Branch Strategy
 81 | 
 82 | - **`main`**: Production-ready code
 83 | - **`next`**: Development branch - **target this for PRs**
 84 | - **Feature branches**: `feature/description` or `fix/description`
 85 | 
 86 | ### Code Quality Standards
 87 | 
 88 | 1. **Write tests** for new functionality
 89 | 2. **Follow existing patterns** in the codebase
 90 | 3. **Add JSDoc comments** for functions
 91 | 4. **Keep functions focused** and single-purpose
 92 | 
 93 | ### Testing Requirements
 94 | 
 95 | Your PR **must pass all CI checks**:
 96 | 
 97 | - ✅ **Unit tests**: `npm test`
 98 | - ✅ **Format check**: `npm run format-check`
 99 | 
100 | **Test your changes locally first** - this saves review time and shows you care about quality.
101 | 
102 | ## 📦 Changeset Guidelines
103 | 
104 | We use [Changesets](https://github.com/changesets/changesets) to manage versioning and generate changelogs.
105 | 
106 | ### When to Create a Changeset
107 | 
108 | **Always create a changeset for**:
109 | 
110 | - ✅ New features
111 | - ✅ Bug fixes
112 | - ✅ Breaking changes
113 | - ✅ Performance improvements
114 | - ✅ User-facing documentation updates
115 | - ✅ Dependency updates that affect functionality
116 | 
117 | **Skip changesets for**:
118 | 
119 | - ❌ Internal documentation only
120 | - ❌ Test-only changes
121 | - ❌ Code formatting/linting
122 | - ❌ Development tooling that doesn't affect users
123 | 
124 | ### How to Create a Changeset
125 | 
126 | 1. **After making your changes**:
127 | 
128 |    ```bash
129 |    npm run changeset
130 |    ```
131 | 
132 | 2. **Choose the bump type**:
133 | 
134 |    - **Major**: Breaking changes
135 |    - **Minor**: New features
136 |    - **Patch**: Bug fixes, docs, performance improvements
137 | 
138 | 3. **Write a clear summary**:
139 | 
140 |    ```
141 |    Add support for custom AI models in MCP configuration
142 |    ```
143 | 
144 | 4. **Commit the changeset file** with your changes:
145 |    ```bash
146 |    git add .changeset/*.md
147 |    git commit -m "feat: add custom AI model support"
148 |    ```
149 | 
150 | ### Changeset vs Git Commit Messages
151 | 
152 | - **Changeset summary**: User-facing, goes in CHANGELOG.md
153 | - **Git commit**: Developer-facing, explains the technical change
154 | 
155 | Example:
156 | 
157 | ```bash
158 | # Changeset summary (user-facing)
159 | "Add support for custom Ollama models"
160 | 
161 | # Git commit message (developer-facing)
162 | "feat(models): implement custom Ollama model validation
163 | 
164 | - Add model validation for custom Ollama endpoints
165 | - Update configuration schema to support custom models
166 | - Add tests for new validation logic"
167 | ```
168 | 
169 | ## 🔧 Development Setup
170 | 
171 | ### Prerequisites
172 | 
173 | - Node.js 18+
174 | - npm or yarn
175 | 
176 | ### Environment Setup
177 | 
178 | 1. **Copy environment template**:
179 | 
180 |    ```bash
181 |    cp .env.example .env
182 |    ```
183 | 
184 | 2. **Add your API keys** (for testing AI features):
185 |    ```bash
186 |    ANTHROPIC_API_KEY=your_key_here
187 |    OPENAI_API_KEY=your_key_here
188 |    # Add others as needed
189 |    ```
190 | 
191 | ### Running Tests
192 | 
193 | ```bash
194 | # Run all tests
195 | npm test
196 | 
197 | # Run tests in watch mode
198 | npm run test:watch
199 | 
200 | # Run with coverage
201 | npm run test:coverage
202 | 
203 | # Run E2E tests
204 | npm run test:e2e
205 | ```
206 | 
207 | ### Code Formatting
208 | 
209 | We use Prettier for consistent formatting:
210 | 
211 | ```bash
212 | # Check formatting
213 | npm run format-check
214 | 
215 | # Fix formatting
216 | npm run format
217 | ```
218 | 
219 | ## 📝 PR Guidelines
220 | 
221 | ### Before Submitting
222 | 
223 | - [ ] **Target the `next` branch**
224 | - [ ] **Test everything locally**
225 | - [ ] **Run the full test suite**
226 | - [ ] **Check code formatting**
227 | - [ ] **Create a changeset** (if needed)
228 | - [ ] **Re-read your changes** - ensure they're clean and well-thought-out
229 | 
230 | ### PR Description Template
231 | 
232 | ```markdown
233 | ## Description
234 | 
235 | Brief description of what this PR does.
236 | 
237 | ## Type of Change
238 | 
239 | - [ ] Bug fix
240 | - [ ] New feature
241 | - [ ] Breaking change
242 | - [ ] Documentation update
243 | 
244 | ## Testing
245 | 
246 | - [ ] I have tested this locally
247 | - [ ] All existing tests pass
248 | - [ ] I have added tests for new functionality
249 | 
250 | ## Changeset
251 | 
252 | - [ ] I have created a changeset (or this change doesn't need one)
253 | 
254 | ## Additional Notes
255 | 
256 | Any additional context or notes for reviewers.
257 | ```
258 | 
259 | ### What We Look For
260 | 
261 | ✅ **Good PRs**:
262 | 
263 | - Clear, focused changes
264 | - Comprehensive testing
265 | - Good commit messages
266 | - Proper changeset (when needed)
267 | - Self-reviewed code
268 | 
269 | ❌ **Avoid**:
270 | 
271 | - Massive PRs that change everything
272 | - Untested code
273 | - Formatting issues
274 | - Missing changesets for user-facing changes
275 | - AI-generated code that wasn't reviewed
276 | 
277 | ## 🏗️ Project Structure
278 | 
279 | ```
280 | claude-task-master/
281 | ├── bin/                    # CLI executables
282 | ├── mcp-server/            # MCP server implementation
283 | ├── scripts/               # Core task management logic
284 | ├── src/                   # Shared utilities and providers and well refactored code (we are slowly moving everything here)
285 | ├── tests/                 # Test files
286 | ├── docs/                  # Documentation
287 | └── .cursor/               # Cursor IDE rules and configuration
288 | └── assets/							   # Assets like rules and configuration for all IDEs
289 | ```
290 | 
291 | ### Key Areas for Contribution
292 | 
293 | - **CLI Commands**: `scripts/modules/commands.js`
294 | - **MCP Tools**: `mcp-server/src/tools/`
295 | - **Core Logic**: `scripts/modules/task-manager/`
296 | - **AI Providers**: `src/ai-providers/`
297 | - **Tests**: `tests/`
298 | 
299 | ## 🐛 Reporting Issues
300 | 
301 | ### Bug Reports
302 | 
303 | Include:
304 | 
305 | - Task Master version
306 | - Node.js version
307 | - Operating system
308 | - Steps to reproduce
309 | - Expected vs actual behavior
310 | - Error messages/logs
311 | 
312 | ### Feature Requests
313 | 
314 | Include:
315 | 
316 | - Clear description of the feature
317 | - Use case/motivation
318 | - Proposed implementation (if you have ideas)
319 | - Willingness to contribute
320 | 
321 | ## 💬 Getting Help
322 | 
323 | - **Discord**: [Join our community](https://discord.gg/taskmasterai)
324 | - **Issues**: [GitHub Issues](https://github.com/eyaltoledano/claude-task-master/issues)
325 | - **Discussions**: [GitHub Discussions](https://github.com/eyaltoledano/claude-task-master/discussions)
326 | 
327 | ## 📄 License
328 | 
329 | By contributing, you agree that your contributions will be licensed under the same license as the project (MIT with Commons Clause).
330 | 
331 | ---
332 | 
333 | **Thank you for contributing to Task Master!** 🎉
334 | 
335 | Your contributions help make AI-driven development more accessible and efficient for everyone.
336 | 
```

--------------------------------------------------------------------------------
/.taskmaster/CLAUDE.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Task Master AI - Agent Integration Guide
  2 | 
  3 | ## Essential Commands
  4 | 
  5 | ### Core Workflow Commands
  6 | 
  7 | ```bash
  8 | # Project Setup
  9 | task-master init                                    # Initialize Task Master in current project
 10 | task-master parse-prd .taskmaster/docs/prd.txt      # Generate tasks from PRD document
 11 | task-master models --setup                        # Configure AI models interactively
 12 | 
 13 | # Daily Development Workflow
 14 | task-master list                                   # Show all tasks with status
 15 | task-master next                                   # Get next available task to work on
 16 | task-master show <id>                             # View detailed task information (e.g., task-master show 1.2)
 17 | task-master set-status --id=<id> --status=done    # Mark task complete
 18 | 
 19 | # Task Management
 20 | task-master add-task --prompt="description" --research        # Add new task with AI assistance
 21 | task-master expand --id=<id> --research --force              # Break task into subtasks
 22 | task-master update-task --id=<id> --prompt="changes"         # Update specific task
 23 | task-master update --from=<id> --prompt="changes"            # Update multiple tasks from ID onwards
 24 | task-master update-subtask --id=<id> --prompt="notes"        # Add implementation notes to subtask
 25 | 
 26 | # Analysis & Planning
 27 | task-master analyze-complexity --research          # Analyze task complexity
 28 | task-master complexity-report                      # View complexity analysis
 29 | task-master expand --all --research               # Expand all eligible tasks
 30 | 
 31 | # Dependencies & Organization
 32 | task-master add-dependency --id=<id> --depends-on=<id>       # Add task dependency
 33 | task-master move --from=<id> --to=<id>                       # Reorganize task hierarchy
 34 | task-master validate-dependencies                            # Check for dependency issues
 35 | task-master generate                                         # Update task markdown files (usually auto-called)
 36 | ```
 37 | 
 38 | ## Key Files & Project Structure
 39 | 
 40 | ### Core Files
 41 | 
 42 | - `.taskmaster/tasks/tasks.json` - Main task data file (auto-managed)
 43 | - `.taskmaster/config.json` - AI model configuration (use `task-master models` to modify)
 44 | - `.taskmaster/docs/prd.txt` - Product Requirements Document for parsing
 45 | - `.taskmaster/tasks/*.txt` - Individual task files (auto-generated from tasks.json)
 46 | - `.env` - API keys for CLI usage
 47 | 
 48 | ### Claude Code Integration Files
 49 | 
 50 | - `CLAUDE.md` - Auto-loaded context for Claude Code (this file)
 51 | - `.claude/settings.json` - Claude Code tool allowlist and preferences
 52 | - `.claude/commands/` - Custom slash commands for repeated workflows
 53 | - `.mcp.json` - MCP server configuration (project-specific)
 54 | 
 55 | ### Directory Structure
 56 | 
 57 | ```
 58 | project/
 59 | ├── .taskmaster/
 60 | │   ├── tasks/              # Task files directory
 61 | │   │   ├── tasks.json      # Main task database
 62 | │   │   ├── task-1.md      # Individual task files
 63 | │   │   └── task-2.md
 64 | │   ├── docs/              # Documentation directory
 65 | │   │   ├── prd.txt        # Product requirements
 66 | │   ├── reports/           # Analysis reports directory
 67 | │   │   └── task-complexity-report.json
 68 | │   ├── templates/         # Template files
 69 | │   │   └── example_prd.txt  # Example PRD template
 70 | │   └── config.json        # AI models & settings
 71 | ├── .claude/
 72 | │   ├── settings.json      # Claude Code configuration
 73 | │   └── commands/         # Custom slash commands
 74 | ├── .env                  # API keys
 75 | ├── .mcp.json            # MCP configuration
 76 | └── CLAUDE.md            # This file - auto-loaded by Claude Code
 77 | ```
 78 | 
 79 | ## MCP Integration
 80 | 
 81 | Task Master provides an MCP server that Claude Code can connect to. Configure in `.mcp.json`:
 82 | 
 83 | ```json
 84 | {
 85 |   "mcpServers": {
 86 |     "task-master-ai": {
 87 |       "command": "npx",
 88 |       "args": ["-y", "task-master-ai"],
 89 |       "env": {
 90 |         "ANTHROPIC_API_KEY": "your_key_here",
 91 |         "PERPLEXITY_API_KEY": "your_key_here",
 92 |         "OPENAI_API_KEY": "OPENAI_API_KEY_HERE",
 93 |         "GOOGLE_API_KEY": "GOOGLE_API_KEY_HERE",
 94 |         "XAI_API_KEY": "XAI_API_KEY_HERE",
 95 |         "OPENROUTER_API_KEY": "OPENROUTER_API_KEY_HERE",
 96 |         "MISTRAL_API_KEY": "MISTRAL_API_KEY_HERE",
 97 |         "AZURE_OPENAI_API_KEY": "AZURE_OPENAI_API_KEY_HERE",
 98 |         "OLLAMA_API_KEY": "OLLAMA_API_KEY_HERE"
 99 |       }
100 |     }
101 |   }
102 | }
103 | ```
104 | 
105 | ### Essential MCP Tools
106 | 
107 | ```javascript
108 | help; // = shows available taskmaster commands
109 | // Project setup
110 | initialize_project; // = task-master init
111 | parse_prd; // = task-master parse-prd
112 | 
113 | // Daily workflow
114 | get_tasks; // = task-master list
115 | next_task; // = task-master next
116 | get_task; // = task-master show <id>
117 | set_task_status; // = task-master set-status
118 | 
119 | // Task management
120 | add_task; // = task-master add-task
121 | expand_task; // = task-master expand
122 | update_task; // = task-master update-task
123 | update_subtask; // = task-master update-subtask
124 | update; // = task-master update
125 | 
126 | // Analysis
127 | analyze_project_complexity; // = task-master analyze-complexity
128 | complexity_report; // = task-master complexity-report
129 | ```
130 | 
131 | ## Claude Code Workflow Integration
132 | 
133 | ### Standard Development Workflow
134 | 
135 | #### 1. Project Initialization
136 | 
137 | ```bash
138 | # Initialize Task Master
139 | task-master init
140 | 
141 | # Create or obtain PRD, then parse it
142 | task-master parse-prd .taskmaster/docs/prd.txt
143 | 
144 | # Analyze complexity and expand tasks
145 | task-master analyze-complexity --research
146 | task-master expand --all --research
147 | ```
148 | 
149 | If tasks already exist, another PRD can be parsed (with new information only!) using parse-prd with --append flag. This will add the generated tasks to the existing list of tasks..
150 | 
151 | #### 2. Daily Development Loop
152 | 
153 | ```bash
154 | # Start each session
155 | task-master next                           # Find next available task
156 | task-master show <id>                     # Review task details
157 | 
158 | # During implementation, check in code context into the tasks and subtasks
159 | task-master update-subtask --id=<id> --prompt="implementation notes..."
160 | 
161 | # Complete tasks
162 | task-master set-status --id=<id> --status=done
163 | ```
164 | 
165 | #### 3. Multi-Claude Workflows
166 | 
167 | For complex projects, use multiple Claude Code sessions:
168 | 
169 | ```bash
170 | # Terminal 1: Main implementation
171 | cd project && claude
172 | 
173 | # Terminal 2: Testing and validation
174 | cd project-test-worktree && claude
175 | 
176 | # Terminal 3: Documentation updates
177 | cd project-docs-worktree && claude
178 | ```
179 | 
180 | ### Custom Slash Commands
181 | 
182 | Create `.claude/commands/taskmaster-next.md`:
183 | 
184 | ```markdown
185 | Find the next available Task Master task and show its details.
186 | 
187 | Steps:
188 | 
189 | 1. Run `task-master next` to get the next task
190 | 2. If a task is available, run `task-master show <id>` for full details
191 | 3. Provide a summary of what needs to be implemented
192 | 4. Suggest the first implementation step
193 | ```
194 | 
195 | Create `.claude/commands/taskmaster-complete.md`:
196 | 
197 | ```markdown
198 | Complete a Task Master task: $ARGUMENTS
199 | 
200 | Steps:
201 | 
202 | 1. Review the current task with `task-master show $ARGUMENTS`
203 | 2. Verify all implementation is complete
204 | 3. Run any tests related to this task
205 | 4. Mark as complete: `task-master set-status --id=$ARGUMENTS --status=done`
206 | 5. Show the next available task with `task-master next`
207 | ```
208 | 
209 | ## Tool Allowlist Recommendations
210 | 
211 | Add to `.claude/settings.json`:
212 | 
213 | ```json
214 | {
215 |   "allowedTools": [
216 |     "Edit",
217 |     "Bash(task-master *)",
218 |     "Bash(git commit:*)",
219 |     "Bash(git add:*)",
220 |     "Bash(npm run *)",
221 |     "mcp__task_master_ai__*"
222 |   ]
223 | }
224 | ```
225 | 
226 | ## Configuration & Setup
227 | 
228 | ### API Keys Required
229 | 
230 | At least **one** of these API keys must be configured:
231 | 
232 | - `ANTHROPIC_API_KEY` (Claude models) - **Recommended**
233 | - `PERPLEXITY_API_KEY` (Research features) - **Highly recommended**
234 | - `OPENAI_API_KEY` (GPT models)
235 | - `GOOGLE_API_KEY` (Gemini models)
236 | - `MISTRAL_API_KEY` (Mistral models)
237 | - `OPENROUTER_API_KEY` (Multiple models)
238 | - `XAI_API_KEY` (Grok models)
239 | 
240 | An API key is required for any provider used across any of the 3 roles defined in the `models` command.
241 | 
242 | ### Model Configuration
243 | 
244 | ```bash
245 | # Interactive setup (recommended)
246 | task-master models --setup
247 | 
248 | # Set specific models
249 | task-master models --set-main claude-3-5-sonnet-20241022
250 | task-master models --set-research perplexity-llama-3.1-sonar-large-128k-online
251 | task-master models --set-fallback gpt-4o-mini
252 | ```
253 | 
254 | ## Task Structure & IDs
255 | 
256 | ### Task ID Format
257 | 
258 | - Main tasks: `1`, `2`, `3`, etc.
259 | - Subtasks: `1.1`, `1.2`, `2.1`, etc.
260 | - Sub-subtasks: `1.1.1`, `1.1.2`, etc.
261 | 
262 | ### Task Status Values
263 | 
264 | - `pending` - Ready to work on
265 | - `in-progress` - Currently being worked on
266 | - `done` - Completed and verified
267 | - `deferred` - Postponed
268 | - `cancelled` - No longer needed
269 | - `blocked` - Waiting on external factors
270 | 
271 | ### Task Fields
272 | 
273 | ```json
274 | {
275 |   "id": "1.2",
276 |   "title": "Implement user authentication",
277 |   "description": "Set up JWT-based auth system",
278 |   "status": "pending",
279 |   "priority": "high",
280 |   "dependencies": ["1.1"],
281 |   "details": "Use bcrypt for hashing, JWT for tokens...",
282 |   "testStrategy": "Unit tests for auth functions, integration tests for login flow",
283 |   "subtasks": []
284 | }
285 | ```
286 | 
287 | ## Claude Code Best Practices with Task Master
288 | 
289 | ### Context Management
290 | 
291 | - Use `/clear` between different tasks to maintain focus
292 | - This CLAUDE.md file is automatically loaded for context
293 | - Use `task-master show <id>` to pull specific task context when needed
294 | 
295 | ### Iterative Implementation
296 | 
297 | 1. `task-master show <subtask-id>` - Understand requirements
298 | 2. Explore codebase and plan implementation
299 | 3. `task-master update-subtask --id=<id> --prompt="detailed plan"` - Log plan
300 | 4. `task-master set-status --id=<id> --status=in-progress` - Start work
301 | 5. Implement code following logged plan
302 | 6. `task-master update-subtask --id=<id> --prompt="what worked/didn't work"` - Log progress
303 | 7. `task-master set-status --id=<id> --status=done` - Complete task
304 | 
305 | ### Complex Workflows with Checklists
306 | 
307 | For large migrations or multi-step processes:
308 | 
309 | 1. Create a markdown PRD file describing the new changes: `touch task-migration-checklist.md` (prds can be .txt or .md)
310 | 2. Use Taskmaster to parse the new prd with `task-master parse-prd --append` (also available in MCP)
311 | 3. Use Taskmaster to expand the newly generated tasks into subtasks. Consdier using `analyze-complexity` with the correct --to and --from IDs (the new ids) to identify the ideal subtask amounts for each task. Then expand them.
312 | 4. Work through items systematically, checking them off as completed
313 | 5. Use `task-master update-subtask` to log progress on each task/subtask and/or updating/researching them before/during implementation if getting stuck
314 | 
315 | ### Git Integration
316 | 
317 | Task Master works well with `gh` CLI:
318 | 
319 | ```bash
320 | # Create PR for completed task
321 | gh pr create --title "Complete task 1.2: User authentication" --body "Implements JWT auth system as specified in task 1.2"
322 | 
323 | # Reference task in commits
324 | git commit -m "feat: implement JWT auth (task 1.2)"
325 | ```
326 | 
327 | ### Parallel Development with Git Worktrees
328 | 
329 | ```bash
330 | # Create worktrees for parallel task development
331 | git worktree add ../project-auth feature/auth-system
332 | git worktree add ../project-api feature/api-refactor
333 | 
334 | # Run Claude Code in each worktree
335 | cd ../project-auth && claude    # Terminal 1: Auth work
336 | cd ../project-api && claude     # Terminal 2: API work
337 | ```
338 | 
339 | ## Troubleshooting
340 | 
341 | ### AI Commands Failing
342 | 
343 | ```bash
344 | # Check API keys are configured
345 | cat .env                           # For CLI usage
346 | 
347 | # Verify model configuration
348 | task-master models
349 | 
350 | # Test with different model
351 | task-master models --set-fallback gpt-4o-mini
352 | ```
353 | 
354 | ### MCP Connection Issues
355 | 
356 | - Check `.mcp.json` configuration
357 | - Verify Node.js installation
358 | - Use `--mcp-debug` flag when starting Claude Code
359 | - Use CLI as fallback if MCP unavailable
360 | 
361 | ### Task File Sync Issues
362 | 
363 | ```bash
364 | # Regenerate task files from tasks.json
365 | task-master generate
366 | 
367 | # Fix dependency issues
368 | task-master fix-dependencies
369 | ```
370 | 
371 | DO NOT RE-INITIALIZE. That will not do anything beyond re-adding the same Taskmaster core files.
372 | 
373 | ## Important Notes
374 | 
375 | ### AI-Powered Operations
376 | 
377 | These commands make AI calls and may take up to a minute:
378 | 
379 | - `parse_prd` / `task-master parse-prd`
380 | - `analyze_project_complexity` / `task-master analyze-complexity`
381 | - `expand_task` / `task-master expand`
382 | - `expand_all` / `task-master expand --all`
383 | - `add_task` / `task-master add-task`
384 | - `update` / `task-master update`
385 | - `update_task` / `task-master update-task`
386 | - `update_subtask` / `task-master update-subtask`
387 | 
388 | ### File Management
389 | 
390 | - Never manually edit `tasks.json` - use commands instead
391 | - Never manually edit `.taskmaster/config.json` - use `task-master models`
392 | - Task markdown files in `tasks/` are auto-generated
393 | - Run `task-master generate` after manual changes to tasks.json
394 | 
395 | ### Claude Code Session Management
396 | 
397 | - Use `/clear` frequently to maintain focused context
398 | - Create custom slash commands for repeated Task Master workflows
399 | - Configure tool allowlist to streamline permissions
400 | - Use headless mode for automation: `claude -p "task-master next"`
401 | 
402 | ### Multi-Task Updates
403 | 
404 | - Use `update --from=<id>` to update multiple future tasks
405 | - Use `update-task --id=<id>` for single task updates
406 | - Use `update-subtask --id=<id>` for implementation logging
407 | 
408 | ### Research Mode
409 | 
410 | - Add `--research` flag for research-based AI enhancement
411 | - Requires a research model API key like Perplexity (`PERPLEXITY_API_KEY`) in environment
412 | - Provides more informed task creation and updates
413 | - Recommended for complex technical tasks
414 | 
415 | ---
416 | 
417 | _This guide ensures Claude Code has immediate access to Task Master's essential functionality for agentic development workflows._
418 | 
```

--------------------------------------------------------------------------------
/assets/AGENTS.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Task Master AI - Agent Integration Guide
  2 | 
  3 | ## Essential Commands
  4 | 
  5 | ### Core Workflow Commands
  6 | 
  7 | ```bash
  8 | # Project Setup
  9 | task-master init                                    # Initialize Task Master in current project
 10 | task-master parse-prd .taskmaster/docs/prd.md       # Generate tasks from PRD document
 11 | task-master models --setup                        # Configure AI models interactively
 12 | 
 13 | # Daily Development Workflow
 14 | task-master list                                   # Show all tasks with status
 15 | task-master next                                   # Get next available task to work on
 16 | task-master show <id>                             # View detailed task information (e.g., task-master show 1.2)
 17 | task-master set-status --id=<id> --status=done    # Mark task complete
 18 | 
 19 | # Task Management
 20 | task-master add-task --prompt="description" --research        # Add new task with AI assistance
 21 | task-master expand --id=<id> --research --force              # Break task into subtasks
 22 | task-master update-task --id=<id> --prompt="changes"         # Update specific task
 23 | task-master update --from=<id> --prompt="changes"            # Update multiple tasks from ID onwards
 24 | task-master update-subtask --id=<id> --prompt="notes"        # Add implementation notes to subtask
 25 | 
 26 | # Analysis & Planning
 27 | task-master analyze-complexity --research          # Analyze task complexity
 28 | task-master complexity-report                      # View complexity analysis
 29 | task-master expand --all --research               # Expand all eligible tasks
 30 | 
 31 | # Dependencies & Organization
 32 | task-master add-dependency --id=<id> --depends-on=<id>       # Add task dependency
 33 | task-master move --from=<id> --to=<id>                       # Reorganize task hierarchy
 34 | task-master validate-dependencies                            # Check for dependency issues
 35 | task-master generate                                         # Update task markdown files (usually auto-called)
 36 | ```
 37 | 
 38 | ## Key Files & Project Structure
 39 | 
 40 | ### Core Files
 41 | 
 42 | - `.taskmaster/tasks/tasks.json` - Main task data file (auto-managed)
 43 | - `.taskmaster/config.json` - AI model configuration (use `task-master models` to modify)
 44 | - `.taskmaster/docs/prd.md` - Product Requirements Document for parsing (`.md` extension recommended for better editor support)
 45 | - `.taskmaster/tasks/*.txt` - Individual task files (auto-generated from tasks.json)
 46 | - `.env` - API keys for CLI usage
 47 | 
 48 | **PRD File Format:** While both `.txt` and `.md` extensions work, **`.md` is recommended** because:
 49 | - Markdown syntax highlighting in editors improves readability
 50 | - Proper rendering when previewing in VS Code, GitHub, or other tools
 51 | - Better collaboration through formatted documentation
 52 | 
 53 | ### Claude Code Integration Files
 54 | 
 55 | - `CLAUDE.md` - Auto-loaded context for Claude Code (this file)
 56 | - `.claude/settings.json` - Claude Code tool allowlist and preferences
 57 | - `.claude/commands/` - Custom slash commands for repeated workflows
 58 | - `.mcp.json` - MCP server configuration (project-specific)
 59 | 
 60 | ### Directory Structure
 61 | 
 62 | ```
 63 | project/
 64 | ├── .taskmaster/
 65 | │   ├── tasks/              # Task files directory
 66 | │   │   ├── tasks.json      # Main task database
 67 | │   │   ├── task-1.md      # Individual task files
 68 | │   │   └── task-2.md
 69 | │   ├── docs/              # Documentation directory
 70 | │   │   ├── prd.md         # Product requirements (.md recommended)
 71 | │   ├── reports/           # Analysis reports directory
 72 | │   │   └── task-complexity-report.json
 73 | │   ├── templates/         # Template files
 74 | │   │   └── example_prd.md  # Example PRD template (.md recommended)
 75 | │   └── config.json        # AI models & settings
 76 | ├── .claude/
 77 | │   ├── settings.json      # Claude Code configuration
 78 | │   └── commands/         # Custom slash commands
 79 | ├── .env                  # API keys
 80 | ├── .mcp.json            # MCP configuration
 81 | └── CLAUDE.md            # This file - auto-loaded by Claude Code
 82 | ```
 83 | 
 84 | ## MCP Integration
 85 | 
 86 | Task Master provides an MCP server that Claude Code can connect to. Configure in `.mcp.json`:
 87 | 
 88 | ```json
 89 | {
 90 |   "mcpServers": {
 91 |     "task-master-ai": {
 92 |       "command": "npx",
 93 |       "args": ["-y", "task-master-ai"],
 94 |       "env": {
 95 |         "ANTHROPIC_API_KEY": "your_key_here",
 96 |         "PERPLEXITY_API_KEY": "your_key_here",
 97 |         "OPENAI_API_KEY": "OPENAI_API_KEY_HERE",
 98 |         "GOOGLE_API_KEY": "GOOGLE_API_KEY_HERE",
 99 |         "XAI_API_KEY": "XAI_API_KEY_HERE",
100 |         "OPENROUTER_API_KEY": "OPENROUTER_API_KEY_HERE",
101 |         "MISTRAL_API_KEY": "MISTRAL_API_KEY_HERE",
102 |         "AZURE_OPENAI_API_KEY": "AZURE_OPENAI_API_KEY_HERE",
103 |         "OLLAMA_API_KEY": "OLLAMA_API_KEY_HERE"
104 |       }
105 |     }
106 |   }
107 | }
108 | ```
109 | 
110 | ### Essential MCP Tools
111 | 
112 | ```javascript
113 | help; // = shows available taskmaster commands
114 | // Project setup
115 | initialize_project; // = task-master init
116 | parse_prd; // = task-master parse-prd
117 | 
118 | // Daily workflow
119 | get_tasks; // = task-master list
120 | next_task; // = task-master next
121 | get_task; // = task-master show <id>
122 | set_task_status; // = task-master set-status
123 | 
124 | // Task management
125 | add_task; // = task-master add-task
126 | expand_task; // = task-master expand
127 | update_task; // = task-master update-task
128 | update_subtask; // = task-master update-subtask
129 | update; // = task-master update
130 | 
131 | // Analysis
132 | analyze_project_complexity; // = task-master analyze-complexity
133 | complexity_report; // = task-master complexity-report
134 | ```
135 | 
136 | ## Claude Code Workflow Integration
137 | 
138 | ### Standard Development Workflow
139 | 
140 | #### 1. Project Initialization
141 | 
142 | ```bash
143 | # Initialize Task Master
144 | task-master init
145 | 
146 | # Create or obtain PRD, then parse it (use .md extension for better editor support)
147 | task-master parse-prd .taskmaster/docs/prd.md
148 | 
149 | # Analyze complexity and expand tasks
150 | task-master analyze-complexity --research
151 | task-master expand --all --research
152 | ```
153 | 
154 | If tasks already exist, another PRD can be parsed (with new information only!) using parse-prd with --append flag. This will add the generated tasks to the existing list of tasks..
155 | 
156 | #### 2. Daily Development Loop
157 | 
158 | ```bash
159 | # Start each session
160 | task-master next                           # Find next available task
161 | task-master show <id>                     # Review task details
162 | 
163 | # During implementation, check in code context into the tasks and subtasks
164 | task-master update-subtask --id=<id> --prompt="implementation notes..."
165 | 
166 | # Complete tasks
167 | task-master set-status --id=<id> --status=done
168 | ```
169 | 
170 | #### 3. Multi-Claude Workflows
171 | 
172 | For complex projects, use multiple Claude Code sessions:
173 | 
174 | ```bash
175 | # Terminal 1: Main implementation
176 | cd project && claude
177 | 
178 | # Terminal 2: Testing and validation
179 | cd project-test-worktree && claude
180 | 
181 | # Terminal 3: Documentation updates
182 | cd project-docs-worktree && claude
183 | ```
184 | 
185 | ### Custom Slash Commands
186 | 
187 | Create `.claude/commands/taskmaster-next.md`:
188 | 
189 | ```markdown
190 | Find the next available Task Master task and show its details.
191 | 
192 | Steps:
193 | 
194 | 1. Run `task-master next` to get the next task
195 | 2. If a task is available, run `task-master show <id>` for full details
196 | 3. Provide a summary of what needs to be implemented
197 | 4. Suggest the first implementation step
198 | ```
199 | 
200 | Create `.claude/commands/taskmaster-complete.md`:
201 | 
202 | ```markdown
203 | Complete a Task Master task: $ARGUMENTS
204 | 
205 | Steps:
206 | 
207 | 1. Review the current task with `task-master show $ARGUMENTS`
208 | 2. Verify all implementation is complete
209 | 3. Run any tests related to this task
210 | 4. Mark as complete: `task-master set-status --id=$ARGUMENTS --status=done`
211 | 5. Show the next available task with `task-master next`
212 | ```
213 | 
214 | ## Tool Allowlist Recommendations
215 | 
216 | Add to `.claude/settings.json`:
217 | 
218 | ```json
219 | {
220 |   "allowedTools": [
221 |     "Edit",
222 |     "Bash(task-master *)",
223 |     "Bash(git commit:*)",
224 |     "Bash(git add:*)",
225 |     "Bash(npm run *)",
226 |     "mcp__task_master_ai__*"
227 |   ]
228 | }
229 | ```
230 | 
231 | ## Configuration & Setup
232 | 
233 | ### API Keys Required
234 | 
235 | At least **one** of these API keys must be configured:
236 | 
237 | - `ANTHROPIC_API_KEY` (Claude models) - **Recommended**
238 | - `PERPLEXITY_API_KEY` (Research features) - **Highly recommended**
239 | - `OPENAI_API_KEY` (GPT models)
240 | - `GOOGLE_API_KEY` (Gemini models)
241 | - `MISTRAL_API_KEY` (Mistral models)
242 | - `OPENROUTER_API_KEY` (Multiple models)
243 | - `XAI_API_KEY` (Grok models)
244 | 
245 | An API key is required for any provider used across any of the 3 roles defined in the `models` command.
246 | 
247 | ### Model Configuration
248 | 
249 | ```bash
250 | # Interactive setup (recommended)
251 | task-master models --setup
252 | 
253 | # Set specific models
254 | task-master models --set-main claude-3-5-sonnet-20241022
255 | task-master models --set-research perplexity-llama-3.1-sonar-large-128k-online
256 | task-master models --set-fallback gpt-4o-mini
257 | ```
258 | 
259 | ## Task Structure & IDs
260 | 
261 | ### Task ID Format
262 | 
263 | - Main tasks: `1`, `2`, `3`, etc.
264 | - Subtasks: `1.1`, `1.2`, `2.1`, etc.
265 | - Sub-subtasks: `1.1.1`, `1.1.2`, etc.
266 | 
267 | ### Task Status Values
268 | 
269 | - `pending` - Ready to work on
270 | - `in-progress` - Currently being worked on
271 | - `done` - Completed and verified
272 | - `deferred` - Postponed
273 | - `cancelled` - No longer needed
274 | - `blocked` - Waiting on external factors
275 | 
276 | ### Task Fields
277 | 
278 | ```json
279 | {
280 |   "id": "1.2",
281 |   "title": "Implement user authentication",
282 |   "description": "Set up JWT-based auth system",
283 |   "status": "pending",
284 |   "priority": "high",
285 |   "dependencies": ["1.1"],
286 |   "details": "Use bcrypt for hashing, JWT for tokens...",
287 |   "testStrategy": "Unit tests for auth functions, integration tests for login flow",
288 |   "subtasks": []
289 | }
290 | ```
291 | 
292 | ## Claude Code Best Practices with Task Master
293 | 
294 | ### Context Management
295 | 
296 | - Use `/clear` between different tasks to maintain focus
297 | - This CLAUDE.md file is automatically loaded for context
298 | - Use `task-master show <id>` to pull specific task context when needed
299 | 
300 | ### Iterative Implementation
301 | 
302 | 1. `task-master show <subtask-id>` - Understand requirements
303 | 2. Explore codebase and plan implementation
304 | 3. `task-master update-subtask --id=<id> --prompt="detailed plan"` - Log plan
305 | 4. `task-master set-status --id=<id> --status=in-progress` - Start work
306 | 5. Implement code following logged plan
307 | 6. `task-master update-subtask --id=<id> --prompt="what worked/didn't work"` - Log progress
308 | 7. `task-master set-status --id=<id> --status=done` - Complete task
309 | 
310 | ### Complex Workflows with Checklists
311 | 
312 | For large migrations or multi-step processes:
313 | 
314 | 1. Create a markdown PRD file describing the new changes: `touch task-migration-checklist.md` (prds can be .txt or .md)
315 | 2. Use Taskmaster to parse the new prd with `task-master parse-prd --append` (also available in MCP)
316 | 3. Use Taskmaster to expand the newly generated tasks into subtasks. Consdier using `analyze-complexity` with the correct --to and --from IDs (the new ids) to identify the ideal subtask amounts for each task. Then expand them.
317 | 4. Work through items systematically, checking them off as completed
318 | 5. Use `task-master update-subtask` to log progress on each task/subtask and/or updating/researching them before/during implementation if getting stuck
319 | 
320 | ### Git Integration
321 | 
322 | Task Master works well with `gh` CLI:
323 | 
324 | ```bash
325 | # Create PR for completed task
326 | gh pr create --title "Complete task 1.2: User authentication" --body "Implements JWT auth system as specified in task 1.2"
327 | 
328 | # Reference task in commits
329 | git commit -m "feat: implement JWT auth (task 1.2)"
330 | ```
331 | 
332 | ### Parallel Development with Git Worktrees
333 | 
334 | ```bash
335 | # Create worktrees for parallel task development
336 | git worktree add ../project-auth feature/auth-system
337 | git worktree add ../project-api feature/api-refactor
338 | 
339 | # Run Claude Code in each worktree
340 | cd ../project-auth && claude    # Terminal 1: Auth work
341 | cd ../project-api && claude     # Terminal 2: API work
342 | ```
343 | 
344 | ## Troubleshooting
345 | 
346 | ### AI Commands Failing
347 | 
348 | ```bash
349 | # Check API keys are configured
350 | cat .env                           # For CLI usage
351 | 
352 | # Verify model configuration
353 | task-master models
354 | 
355 | # Test with different model
356 | task-master models --set-fallback gpt-4o-mini
357 | ```
358 | 
359 | ### MCP Connection Issues
360 | 
361 | - Check `.mcp.json` configuration
362 | - Verify Node.js installation
363 | - Use `--mcp-debug` flag when starting Claude Code
364 | - Use CLI as fallback if MCP unavailable
365 | 
366 | ### Task File Sync Issues
367 | 
368 | ```bash
369 | # Regenerate task files from tasks.json
370 | task-master generate
371 | 
372 | # Fix dependency issues
373 | task-master fix-dependencies
374 | ```
375 | 
376 | DO NOT RE-INITIALIZE. That will not do anything beyond re-adding the same Taskmaster core files.
377 | 
378 | ## Important Notes
379 | 
380 | ### AI-Powered Operations
381 | 
382 | These commands make AI calls and may take up to a minute:
383 | 
384 | - `parse_prd` / `task-master parse-prd`
385 | - `analyze_project_complexity` / `task-master analyze-complexity`
386 | - `expand_task` / `task-master expand`
387 | - `expand_all` / `task-master expand --all`
388 | - `add_task` / `task-master add-task`
389 | - `update` / `task-master update`
390 | - `update_task` / `task-master update-task`
391 | - `update_subtask` / `task-master update-subtask`
392 | 
393 | ### File Management
394 | 
395 | - Never manually edit `tasks.json` - use commands instead
396 | - Never manually edit `.taskmaster/config.json` - use `task-master models`
397 | - Task markdown files in `tasks/` are auto-generated
398 | - Run `task-master generate` after manual changes to tasks.json
399 | 
400 | ### Claude Code Session Management
401 | 
402 | - Use `/clear` frequently to maintain focused context
403 | - Create custom slash commands for repeated Task Master workflows
404 | - Configure tool allowlist to streamline permissions
405 | - Use headless mode for automation: `claude -p "task-master next"`
406 | 
407 | ### Multi-Task Updates
408 | 
409 | - Use `update --from=<id>` to update multiple future tasks
410 | - Use `update-task --id=<id>` for single task updates
411 | - Use `update-subtask --id=<id>` for implementation logging
412 | 
413 | ### Research Mode
414 | 
415 | - Add `--research` flag for research-based AI enhancement
416 | - Requires a research model API key like Perplexity (`PERPLEXITY_API_KEY`) in environment
417 | - Provides more informed task creation and updates
418 | - Recommended for complex technical tasks
419 | 
420 | ---
421 | 
422 | _This guide ensures Claude Code has immediate access to Task Master's essential functionality for agentic development workflows._
423 | 
```

--------------------------------------------------------------------------------
/test-tag-functions.js:
--------------------------------------------------------------------------------

```javascript
1 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/index.ts:
--------------------------------------------------------------------------------

```typescript
1 | console.log('hello world');
2 | 
```

--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------

```json
1 | {
2 | 	"recommendations": ["esbenp.prettier-vscode"]
3 | }
4 | 
```

--------------------------------------------------------------------------------
/output.json:
--------------------------------------------------------------------------------

```json
1 | {
2 | 	"key": "value",
3 | 	"nested": {
4 | 		"prop": true
5 | 	}
6 | }
7 | 
```

--------------------------------------------------------------------------------
/apps/docs/getting-started/quick-start/moving-forward.mdx:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: Moving Forward
3 | sidebarTitle: "Moving Forward"
4 | ---
```

--------------------------------------------------------------------------------
/apps/docs/getting-started/quick-start/rules-quick.mdx:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: Rules and Context
3 | sidebarTitle: "Rules and Context"
4 | ---
```

--------------------------------------------------------------------------------
/packages/claude-code-plugin/CHANGELOG.md:
--------------------------------------------------------------------------------

```markdown
 1 | # @tm/claude-code-plugin
 2 | 
 3 | ## 0.0.5
 4 | 
 5 | ## 0.0.4
 6 | 
 7 | ## 0.0.3
 8 | 
 9 | ## 0.0.3
10 | 
11 | ## 0.0.2
12 | 
```

--------------------------------------------------------------------------------
/packages/ai-sdk-provider-grok-cli/CHANGELOG.md:
--------------------------------------------------------------------------------

```markdown
 1 | # @tm/ai-sdk-provider-grok-cli
 2 | 
 3 | ## null
 4 | 
 5 | ## null
 6 | 
 7 | ## null
 8 | 
 9 | ## null
10 | 
11 | ## null
12 | 
13 | ## null
14 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/integration/clients/index.ts:
--------------------------------------------------------------------------------

```typescript
1 | /**
2 |  * Client exports
3 |  */
4 | 
5 | export { SupabaseAuthClient } from './supabase-client.js';
6 | 
```

--------------------------------------------------------------------------------
/packages/build-config/CHANGELOG.md:
--------------------------------------------------------------------------------

```markdown
 1 | # @tm/build-config
 2 | 
 3 | ## null
 4 | 
 5 | ## null
 6 | 
 7 | ## null
 8 | 
 9 | ## null
10 | 
11 | ## null
12 | 
13 | ## null
14 | 
15 | ## null
16 | 
17 | ## 1.0.1
18 | 
```

--------------------------------------------------------------------------------
/apps/docs/whats-new.mdx:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: "What's New"
3 | sidebarTitle: "What's New"
4 | ---
5 | 
6 | An easy way to see the latest releases
```

--------------------------------------------------------------------------------
/apps/docs/CHANGELOG.md:
--------------------------------------------------------------------------------

```markdown
 1 | # docs
 2 | 
 3 | ## 0.0.10
 4 | 
 5 | ## 0.0.9
 6 | 
 7 | ## 0.0.8
 8 | 
 9 | ## 0.0.7
10 | 
11 | ## 0.0.6
12 | 
13 | ## 0.0.5
14 | 
15 | ## 0.0.4
16 | 
17 | ## 0.0.3
18 | 
19 | ## 0.0.2
20 | 
21 | ## 0.0.1
22 | 
```

--------------------------------------------------------------------------------
/packages/claude-code-plugin/mcp.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"mcpServers": {
 3 | 		"task-master-ai": {
 4 | 			"type": "stdio",
 5 | 			"command": "npx",
 6 | 			"args": ["-y", "task-master-ai"]
 7 | 		}
 8 | 	}
 9 | }
10 | 
```

--------------------------------------------------------------------------------
/scripts/modules/task-manager/parse-prd/index.js:
--------------------------------------------------------------------------------

```javascript
1 | // Main entry point for parse-prd module
2 | export { default } from './parse-prd.js';
3 | export { default as parsePRD } from './parse-prd.js';
4 | 
```

--------------------------------------------------------------------------------
/src/schemas/update-subtask.js:
--------------------------------------------------------------------------------

```javascript
1 | import { z } from 'zod';
2 | import { SubtaskSchema } from './base-schemas.js';
3 | 
4 | export const UpdateSubtaskResponseSchema = z.object({
5 | 	subtask: SubtaskSchema
6 | });
7 | 
```

--------------------------------------------------------------------------------
/src/schemas/update-task.js:
--------------------------------------------------------------------------------

```javascript
1 | import { z } from 'zod';
2 | import { UpdatedTaskSchema } from './update-tasks.js';
3 | 
4 | export const UpdateTaskResponseSchema = z.object({
5 | 	task: UpdatedTaskSchema
6 | });
7 | 
```

--------------------------------------------------------------------------------
/src/schemas/expand-task.js:
--------------------------------------------------------------------------------

```javascript
1 | import { z } from 'zod';
2 | import { SubtaskSchema } from './base-schemas.js';
3 | 
4 | export const ExpandTaskResponseSchema = z.object({
5 | 	subtasks: z.array(SubtaskSchema)
6 | });
7 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/lib/utils.ts:
--------------------------------------------------------------------------------

```typescript
1 | import { type ClassValue, clsx } from 'clsx';
2 | import { twMerge } from 'tailwind-merge';
3 | 
4 | export function cn(...inputs: ClassValue[]) {
5 | 	return twMerge(clsx(inputs));
6 | }
7 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/tasks/repositories/supabase/index.ts:
--------------------------------------------------------------------------------

```typescript
1 | /**
2 |  * Supabase repository implementations
3 |  */
4 | export { SupabaseRepository } from './supabase-repository.js';
5 | export { DependencyFetcher } from './dependency-fetcher.js';
6 | 
```

--------------------------------------------------------------------------------
/.taskmaster/docs/test-prd.txt:
--------------------------------------------------------------------------------

```
1 | Simple Todo App PRD
2 | 
3 | Create a basic todo list application with the following features:
4 | 1. Add new todos
5 | 2. Mark todos as complete
6 | 3. Delete todos
7 | 
8 | That's it. Keep it simple.
```

--------------------------------------------------------------------------------
/.taskmaster/state.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"currentTag": "tdd-phase-1-core-rails",
 3 | 	"lastSwitched": "2025-11-10T19:45:04.383Z",
 4 | 	"branchTagMapping": {
 5 | 		"v017-adds": "v017-adds",
 6 | 		"next": "next"
 7 | 	},
 8 | 	"migrationNoticeShown": true
 9 | }
10 | 
```

--------------------------------------------------------------------------------
/apps/docs/best-practices/index.mdx:
--------------------------------------------------------------------------------

```markdown
1 | ---
2 | title: Intro to Advanced Usage
3 | sidebarTitle: "Advanced Usage"
4 | ---
5 | 
6 | # Best Practices
7 | 
8 | Explore advanced tips, recommended workflows, and best practices for getting the most out of Task Master. 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/briefs/index.ts:
--------------------------------------------------------------------------------

```typescript
1 | /**
2 |  * Briefs module exports
3 |  */
4 | 
5 | export { BriefsDomain } from './briefs-domain.js';
6 | export { BriefService, type TagWithStats } from './services/brief-service.js';
7 | export type { Brief } from './types.js';
8 | 
```

--------------------------------------------------------------------------------
/apps/docs/vercel.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"rewrites": [
 3 | 		{
 4 | 			"source": "/",
 5 | 			"destination": "https://taskmaster-49ce32d5.mintlify.dev/docs"
 6 | 		},
 7 | 		{
 8 | 			"source": "/:match*",
 9 | 			"destination": "https://taskmaster-49ce32d5.mintlify.dev/docs/:match*"
10 | 		}
11 | 	]
12 | }
13 | 
```

--------------------------------------------------------------------------------
/apps/mcp/src/tools/tasks/index.ts:
--------------------------------------------------------------------------------

```typescript
1 | /**
2 |  * @fileoverview Tasks MCP tools index
3 |  * Exports all task-related tool registration functions
4 |  */
5 | 
6 | export { registerGetTasksTool } from './get-tasks.tool.js';
7 | export { registerGetTaskTool } from './get-task.tool.js';
8 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/ai/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Barrel export for provider modules
 3 |  */
 4 | 
 5 | // Export all from AI module
 6 | export * from './providers/index.js';
 7 | 
 8 | // Storage providers will be exported here when implemented
 9 | // export * from './storage/index.js';
10 | 
```

--------------------------------------------------------------------------------
/packages/tm-bridge/CHANGELOG.md:
--------------------------------------------------------------------------------

```markdown
 1 | # @tm/bridge
 2 | 
 3 | ## null
 4 | 
 5 | ### Patch Changes
 6 | 
 7 | - Updated dependencies []:
 8 |   - @tm/core@null
 9 | 
10 | ## null
11 | 
12 | ### Patch Changes
13 | 
14 | - Updated dependencies []:
15 |   - @tm/core@null
16 | 
17 | ## null
18 | 
19 | ### Patch Changes
20 | 
21 | - Updated dependencies []:
22 |   - @tm/core@null
23 | 
```

--------------------------------------------------------------------------------
/apps/docs/package.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"name": "docs",
 3 | 	"version": "0.0.10",
 4 | 	"private": true,
 5 | 	"description": "Task Master documentation powered by Mintlify",
 6 | 	"scripts": {
 7 | 		"dev": "mintlify dev",
 8 | 		"preview": "mintlify preview"
 9 | 	},
10 | 	"devDependencies": {
11 | 		"mintlify": "^4.2.111"
12 | 	}
13 | }
14 | 
```

--------------------------------------------------------------------------------
/scripts/modules/index.js:
--------------------------------------------------------------------------------

```javascript
 1 | /**
 2 |  * index.js
 3 |  * Main export point for all Task Master CLI modules
 4 |  */
 5 | 
 6 | // Export all modules
 7 | export * from './ui.js';
 8 | export * from './utils.js';
 9 | export * from './commands.js';
10 | export * from './task-manager.js';
11 | export * from './prompt-manager.js';
12 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/reports/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Reports module exports
 3 |  */
 4 | 
 5 | export { ComplexityReportManager } from './managers/complexity-report-manager.js';
 6 | export type {
 7 | 	ComplexityReport,
 8 | 	ComplexityReportMetadata,
 9 | 	ComplexityAnalysis,
10 | 	TaskComplexityData
11 | } from './types.js';
12 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/ui/index.ts:
--------------------------------------------------------------------------------

```typescript
1 | /**
2 |  * @fileoverview UI domain - Placeholder for future migration
3 |  * This module will handle UI components and rendering
4 |  * when migrated from scripts/modules/ui.js
5 |  */
6 | 
7 | // TODO: Migrate ui.js from scripts/modules/
8 | // export * from './components/index.js';
9 | 
```

--------------------------------------------------------------------------------
/apps/mcp/src/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Main entry point for @tm/mcp package
 3 |  * Exports all MCP tool registration functions
 4 |  */
 5 | 
 6 | export * from './tools/autopilot/index.js';
 7 | export * from './tools/tasks/index.js';
 8 | export * from './shared/utils.js';
 9 | export * from './shared/types.js';
10 | 
```

--------------------------------------------------------------------------------
/test-prd.txt:
--------------------------------------------------------------------------------

```
 1 | # Test PRD
 2 | 
 3 | ## Project Overview
 4 | This is a simple test project to verify parse-prd functionality.
 5 | 
 6 | ## Features
 7 | - Feature A: Basic setup
 8 | - Feature B: Core functionality  
 9 | - Feature C: Testing
10 | 
11 | ## Requirements
12 | - Use Node.js
13 | - Include basic tests
14 | - Simple CLI interface 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/common/types/legacy.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Legacy type definitions for backwards compatibility
 3 |  * These types are deprecated and will be removed in future versions
 4 |  */
 5 | 
 6 | /**
 7 |  * @deprecated Use string directly instead. This will be removed in a future version.
 8 |  */
 9 | export type TaskId = string;
10 | 
```

--------------------------------------------------------------------------------
/apps/cli/src/commands/models/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Model setup module exports, command not yet here, still lives in commands.js (old structure)
 3 |  */
 4 | 
 5 | export * from './types.js';
 6 | export * from './fetchers.js';
 7 | export * from './custom-providers.js';
 8 | export * from './prompts.js';
 9 | export * from './setup.js';
10 | 
```

--------------------------------------------------------------------------------
/apps/cli/src/utils/task-status.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Utilities for working with task statuses
 3 |  * Re-exports status utilities from @tm/core for CLI convenience
 4 |  */
 5 | 
 6 | // Re-export terminal status utilities from @tm/core (single source of truth)
 7 | export {
 8 | 	TERMINAL_COMPLETE_STATUSES,
 9 | 	isTaskComplete
10 | } from '@tm/core';
11 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/commands/index.ts:
--------------------------------------------------------------------------------

```typescript
1 | /**
2 |  * @fileoverview Commands domain - Placeholder for future migration
3 |  * This module will handle command execution and orchestration
4 |  * when migrated from scripts/modules/commands.js
5 |  */
6 | 
7 | // TODO: Migrate commands.js from scripts/modules/
8 | // export * from './handlers/command-handler.js';
9 | 
```

--------------------------------------------------------------------------------
/apps/cli/src/ui/components/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview UI components exports
 3 |  */
 4 | 
 5 | export * from './cardBox.component.js';
 6 | export * from './dashboard.component.js';
 7 | export * from './header.component.js';
 8 | export * from './next-task.component.js';
 9 | export * from './suggested-steps.component.js';
10 | export * from './task-detail.component.js';
11 | 
```

--------------------------------------------------------------------------------
/src/schemas/update-tasks.js:
--------------------------------------------------------------------------------

```javascript
 1 | import { z } from 'zod';
 2 | import { BaseTaskSchema, SubtaskSchema } from './base-schemas.js';
 3 | 
 4 | export const UpdatedTaskSchema = BaseTaskSchema.extend({
 5 | 	subtasks: z.array(SubtaskSchema).nullable().default(null)
 6 | });
 7 | 
 8 | export const UpdateTasksResponseSchema = z.object({
 9 | 	tasks: z.array(UpdatedTaskSchema)
10 | });
11 | 
```

--------------------------------------------------------------------------------
/apps/mcp/CHANGELOG.md:
--------------------------------------------------------------------------------

```markdown
 1 | # @tm/mcp
 2 | 
 3 | ## null
 4 | 
 5 | ### Patch Changes
 6 | 
 7 | - Updated dependencies []:
 8 |   - @tm/core@null
 9 | 
10 | ## null
11 | 
12 | ### Patch Changes
13 | 
14 | - Updated dependencies []:
15 |   - @tm/core@null
16 | 
17 | ## null
18 | 
19 | ### Patch Changes
20 | 
21 | - Updated dependencies []:
22 |   - @tm/core@null
23 | 
24 | ## null
25 | 
26 | ### Patch Changes
27 | 
28 | - Updated dependencies []:
29 |   - @tm/core@null
30 | 
```

--------------------------------------------------------------------------------
/src/constants/commands.js:
--------------------------------------------------------------------------------

```javascript
 1 | /**
 2 |  * Command related constants
 3 |  * Defines which commands trigger AI processing
 4 |  */
 5 | 
 6 | // Command names that trigger AI processing
 7 | export const AI_COMMAND_NAMES = [
 8 | 	'add-task',
 9 | 	'analyze-complexity',
10 | 	'expand-task',
11 | 	'parse-prd',
12 | 	'research',
13 | 	'research-save',
14 | 	'update-subtask',
15 | 	'update-task',
16 | 	'update-tasks'
17 | ];
18 | 
```

--------------------------------------------------------------------------------
/src/profiles/trae.js:
--------------------------------------------------------------------------------

```javascript
 1 | // Trae conversion profile for rule-transformer
 2 | import { createProfile, COMMON_TOOL_MAPPINGS } from './base-profile.js';
 3 | 
 4 | // Create and export trae profile using the base factory
 5 | export const traeProfile = createProfile({
 6 | 	name: 'trae',
 7 | 	displayName: 'Trae',
 8 | 	url: 'trae.ai',
 9 | 	docsUrl: 'docs.trae.ai',
10 | 	mcpConfig: false
11 | });
12 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/common/logger/index.ts:
--------------------------------------------------------------------------------

```typescript
1 | /**
2 |  * @fileoverview Logger package for Task Master
3 |  * Provides centralized logging with support for different modes and levels
4 |  */
5 | 
6 | export { Logger, LogLevel } from './logger.js';
7 | export type { LoggerConfig, LogCallback, LogObject } from './logger.js';
8 | export { createLogger, getLogger, setGlobalLogger } from './factory.js';
9 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/dependencies/index.ts:
--------------------------------------------------------------------------------

```typescript
1 | /**
2 |  * @fileoverview Dependencies domain - Placeholder for future migration
3 |  * This module will handle dependency management, graphs, and validation
4 |  * when migrated from scripts/modules/dependency-manager.js
5 |  */
6 | 
7 | // TODO: Migrate dependency-manager.js from scripts/modules/
8 | // export * from './services/dependency-manager.js';
9 | 
```

--------------------------------------------------------------------------------
/.changeset/config.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
 3 |   "changelog": [
 4 |     "@changesets/changelog-github",
 5 |     {
 6 |       "repo": "eyaltoledano/claude-task-master"
 7 |     }
 8 |   ],
 9 |   "commit": false,
10 |   "fixed": [],
11 |   "access": "public",
12 |   "baseBranch": "main",
13 |   "ignore": [
14 |     "docs",
15 |     "@tm/claude-code-plugin"
16 |   ]
17 | }
```

--------------------------------------------------------------------------------
/src/profiles/windsurf.js:
--------------------------------------------------------------------------------

```javascript
 1 | // Windsurf conversion profile for rule-transformer
 2 | import { createProfile, COMMON_TOOL_MAPPINGS } from './base-profile.js';
 3 | 
 4 | // Create and export windsurf profile using the base factory
 5 | export const windsurfProfile = createProfile({
 6 | 	name: 'windsurf',
 7 | 	displayName: 'Windsurf',
 8 | 	url: 'windsurf.com',
 9 | 	docsUrl: 'docs.windsurf.com'
10 | });
11 | 
```

--------------------------------------------------------------------------------
/apps/docs/getting-started/faq.mdx:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | title: FAQ
 3 | sidebarTitle: "FAQ"
 4 | ---
 5 | 
 6 | Coming soon. 
 7 | 
 8 | ## 💬 Getting Help
 9 | 
10 | - **Discord**: [Join our community](https://discord.gg/taskmasterai)
11 | - **Issues**: [GitHub Issues](https://github.com/eyaltoledano/claude-task-master/issues)
12 | - **Discussions**: [GitHub Discussions](https://github.com/eyaltoledano/claude-task-master/discussions)
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/git/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Git operations layer for the tm-core package
 3 |  * This file exports all git-related classes and interfaces
 4 |  */
 5 | 
 6 | // Export GitAdapter
 7 | export { GitAdapter } from './adapters/git-adapter.js';
 8 | 
 9 | // Export branch name utilities
10 | export {
11 | 	generateBranchName,
12 | 	sanitizeBranchName
13 | } from './services/branch-name-generator.js';
14 | 
```

--------------------------------------------------------------------------------
/src/utils/getVersion.js:
--------------------------------------------------------------------------------

```javascript
 1 | import packageJson from '../../package.json' with { type: 'json' };
 2 | 
 3 | /**
 4 |  * Reads the version from the nearest package.json relative to this file.
 5 |  * Returns 'unknown' if not found or on error.
 6 |  * @returns {string} The version string or 'unknown'.
 7 |  */
 8 | export function getTaskMasterVersion() {
 9 | 	return packageJson.version || 'unknown';
10 | }
11 | 
```

--------------------------------------------------------------------------------
/apps/docs/style.css:
--------------------------------------------------------------------------------

```css
 1 | /*
 2 |  * This file is used to override the default logo style of the docs theme.
 3 |  * It is not used for the actual documentation content.
 4 |  */
 5 | 
 6 | #navbar img {
 7 | 	height: auto !important; /* Let intrinsic SVG size determine height */
 8 | 	width: 200px !important; /* Control width */
 9 | 	margin-top: 5px !important; /* Add some space above the logo */
10 | }
11 | 
```

--------------------------------------------------------------------------------
/scripts/list-worktrees.sh:
--------------------------------------------------------------------------------

```bash
 1 | #!/bin/bash
 2 | 
 3 | # List all git worktrees with helpful information
 4 | 
 5 | set -e
 6 | 
 7 | echo "📋 Git Worktrees:"
 8 | echo ""
 9 | git worktree list
10 | echo ""
11 | echo "To remove a worktree:"
12 | echo "  git worktree remove <path>"
13 | echo ""
14 | echo "To remove all worktrees:"
15 | echo "  git worktree list | grep -v '(bare)' | tail -n +2 | awk '{print \$1}' | xargs -I {} git worktree remove {}"
16 | 
```

--------------------------------------------------------------------------------
/apps/extension/components.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"$schema": "https://ui.shadcn.com/schema.json",
 3 | 	"style": "default",
 4 | 	"rsc": false,
 5 | 	"tsx": true,
 6 | 	"tailwind": {
 7 | 		"config": "tailwind.config.js",
 8 | 		"css": "src/webview/index.css",
 9 | 		"baseColor": "slate",
10 | 		"cssVariables": true,
11 | 		"prefix": ""
12 | 	},
13 | 	"aliases": {
14 | 		"components": "@/components",
15 | 		"utils": "@/lib"
16 | 	},
17 | 	"iconLibrary": "lucide-react"
18 | }
19 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/execution/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * Public API for the executors module
 3 |  */
 4 | 
 5 | export * from './types.js';
 6 | export { BaseExecutor } from './executors/base-executor.js';
 7 | export { ClaudeExecutor } from './executors/claude-executor.js';
 8 | export { ExecutorFactory } from './executors/executor-factory.js';
 9 | export {
10 | 	ExecutorService,
11 | 	type ExecutorServiceOptions
12 | } from './services/executor-service.js';
13 | 
```

--------------------------------------------------------------------------------
/src/utils/format.js:
--------------------------------------------------------------------------------

```javascript
 1 | // src/utils/format.js
 2 | 
 3 | /**
 4 |  * Formats elapsed time as 0m 00s.
 5 |  * @param {number} seconds - Elapsed time in seconds
 6 |  * @returns {string} Formatted time string
 7 |  */
 8 | export function formatElapsedTime(seconds) {
 9 | 	const minutes = Math.floor(seconds / 60);
10 | 	const remainingSeconds = Math.floor(seconds % 60);
11 | 	return `${minutes}m ${remainingSeconds.toString().padStart(2, '0')}s`;
12 | }
13 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/storage/adapters/file-storage/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Exports for file storage components
 3 |  */
 4 | 
 5 | export {
 6 | 	FormatHandler,
 7 | 	type FileStorageData,
 8 | 	type FileFormat
 9 | } from './format-handler.js';
10 | export { FileOperations } from './file-operations.js';
11 | export { PathResolver } from './path-resolver.js';
12 | 
13 | // Main FileStorage class - primary export
14 | export { FileStorage as default, FileStorage } from './file-storage.js';
15 | 
```

--------------------------------------------------------------------------------
/src/profiles/cline.js:
--------------------------------------------------------------------------------

```javascript
 1 | // Cline conversion profile for rule-transformer
 2 | import { createProfile, COMMON_TOOL_MAPPINGS } from './base-profile.js';
 3 | 
 4 | // Create and export cline profile using the base factory
 5 | export const clineProfile = createProfile({
 6 | 	name: 'cline',
 7 | 	displayName: 'Cline',
 8 | 	url: 'cline.bot',
 9 | 	docsUrl: 'docs.cline.bot',
10 | 	profileDir: '.clinerules',
11 | 	rulesDir: '.clinerules',
12 | 	mcpConfig: false
13 | });
14 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/webview/sidebar.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | import React from 'react';
 2 | import ReactDOM from 'react-dom/client';
 3 | import { SidebarView } from './components/SidebarView';
 4 | 
 5 | const rootElement = document.getElementById('root');
 6 | 
 7 | if (!rootElement) {
 8 | 	console.error('Sidebar: Root element not found');
 9 | } else {
10 | 	const root = ReactDOM.createRoot(rootElement);
11 | 	root.render(
12 | 		<React.StrictMode>
13 | 			<SidebarView />
14 | 		</React.StrictMode>
15 | 	);
16 | }
17 | 
```

--------------------------------------------------------------------------------
/apps/mcp/vitest.config.ts:
--------------------------------------------------------------------------------

```typescript
 1 | import { defineConfig } from 'vitest/config';
 2 | 
 3 | export default defineConfig({
 4 | 	test: {
 5 | 		globals: true,
 6 | 		environment: 'node',
 7 | 		coverage: {
 8 | 			provider: 'v8',
 9 | 			reporter: ['text', 'json', 'html'],
10 | 			exclude: [
11 | 				'node_modules/',
12 | 				'dist/',
13 | 				'tests/',
14 | 				'**/*.test.ts',
15 | 				'**/*.spec.ts',
16 | 				'**/*.d.ts',
17 | 				'**/mocks/**',
18 | 				'**/fixtures/**',
19 | 				'vitest.config.ts'
20 | 			]
21 | 		}
22 | 	}
23 | });
24 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/briefs/types.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Briefs module types
 3 |  */
 4 | 
 5 | /**
 6 |  * Brief data structure
 7 |  * Represents a project brief containing tasks and requirements
 8 |  */
 9 | export interface Brief {
10 | 	id: string;
11 | 	accountId: string;
12 | 	documentId: string;
13 | 	status: string;
14 | 	createdAt: string;
15 | 	updatedAt: string;
16 | 	taskCount?: number;
17 | 	document?: {
18 | 		id: string;
19 | 		title: string;
20 | 		document_name: string;
21 | 		description?: string;
22 | 	};
23 | }
24 | 
```

--------------------------------------------------------------------------------
/.github/workflows/release-check.yml:
--------------------------------------------------------------------------------

```yaml
 1 | name: Release Check
 2 | 
 3 | on:
 4 |   pull_request:
 5 |     branches:
 6 |       - main
 7 | 
 8 | concurrency:
 9 |   group: release-check-${{ github.head_ref }}
10 |   cancel-in-progress: true
11 | 
12 | jobs:
13 |   check-release-mode:
14 |     runs-on: ubuntu-latest
15 |     steps:
16 |       - uses: actions/checkout@v4
17 |         with:
18 |           fetch-depth: 0
19 | 
20 |       - name: Check release mode
21 |         run: node ./.github/scripts/check-pre-release-mode.mjs "pull_request"
22 | 
```

--------------------------------------------------------------------------------
/src/schemas/analyze-complexity.js:
--------------------------------------------------------------------------------

```javascript
 1 | import { z } from 'zod';
 2 | 
 3 | export const ComplexityAnalysisItemSchema = z.object({
 4 | 	taskId: z.number().int().positive(),
 5 | 	taskTitle: z.string(),
 6 | 	complexityScore: z.number().min(1).max(10),
 7 | 	recommendedSubtasks: z.number().int().nonnegative(),
 8 | 	expansionPrompt: z.string(),
 9 | 	reasoning: z.string()
10 | });
11 | 
12 | export const ComplexityAnalysisResponseSchema = z.object({
13 | 	complexityAnalysis: z.array(ComplexityAnalysisItemSchema)
14 | });
15 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/test/extension.test.ts:
--------------------------------------------------------------------------------

```typescript
 1 | import * as assert from 'assert';
 2 | 
 3 | // You can import and use all API from the 'vscode' module
 4 | // as well as import your extension to test it
 5 | import * as vscode from 'vscode';
 6 | // import * as myExtension from '../../extension';
 7 | 
 8 | suite('Extension Test Suite', () => {
 9 | 	vscode.window.showInformationMessage('Start all tests.');
10 | 
11 | 	test('Sample test', () => {
12 | 		assert.strictEqual(-1, [1, 2, 3].indexOf(5));
13 | 		assert.strictEqual(-1, [1, 2, 3].indexOf(0));
14 | 	});
15 | });
16 | 
```

--------------------------------------------------------------------------------
/docs/licensing.md:
--------------------------------------------------------------------------------

```markdown
 1 | # Licensing
 2 | 
 3 | Task Master is licensed under the MIT License with Commons Clause. This means you can:
 4 | 
 5 | ## ✅ Allowed:
 6 | 
 7 | - Use Task Master for any purpose (personal, commercial, academic)
 8 | - Modify the code
 9 | - Distribute copies
10 | - Create and sell products built using Task Master
11 | 
12 | ## ❌ Not Allowed:
13 | 
14 | - Sell Task Master itself
15 | - Offer Task Master as a hosted service
16 | - Create competing products based on Task Master
17 | 
18 | See the [LICENSE](../LICENSE) file for the complete license text.
19 | 
```

--------------------------------------------------------------------------------
/packages/build-config/tsconfig.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"compilerOptions": {
 3 | 		"target": "ES2022",
 4 | 		"lib": ["ES2022"],
 5 | 		"module": "ESNext",
 6 | 		"moduleResolution": "bundler",
 7 | 		"allowSyntheticDefaultImports": true,
 8 | 		"esModuleInterop": true,
 9 | 		"baseUrl": ".",
10 | 		"outDir": "dist",
11 | 		"allowJs": true,
12 | 		"strict": true,
13 | 		"resolveJsonModule": true,
14 | 		"isolatedModules": true,
15 | 		"declaration": true,
16 | 		"skipLibCheck": true,
17 | 		"forceConsistentCasingInFileNames": true
18 | 	},
19 | 	"include": ["src/**/*"],
20 | 	"exclude": ["node_modules", "dist"]
21 | }
22 | 
```

--------------------------------------------------------------------------------
/apps/docs/licensing.md:
--------------------------------------------------------------------------------

```markdown
 1 | # Licensing
 2 | 
 3 | Task Master is licensed under the MIT License with Commons Clause. This means you can:
 4 | 
 5 | ## ✅ Allowed:
 6 | 
 7 | - Use Task Master for any purpose (personal, commercial, academic)
 8 | - Modify the code
 9 | - Distribute copies
10 | - Create and sell products built using Task Master
11 | 
12 | ## ❌ Not Allowed:
13 | 
14 | - Sell Task Master itself
15 | - Offer Task Master as a hosted service
16 | - Create competing products based on Task Master
17 | 
18 | {/* See the [LICENSE](../LICENSE) file for the complete license text. */}
19 | 
```

--------------------------------------------------------------------------------
/apps/cli/vitest.config.ts:
--------------------------------------------------------------------------------

```typescript
 1 | import { defineConfig } from 'vitest/config';
 2 | 
 3 | export default defineConfig({
 4 | 	test: {
 5 | 		globals: true,
 6 | 		environment: 'node',
 7 | 		include: ['tests/**/*.test.ts', 'tests/**/*.spec.ts'],
 8 | 		coverage: {
 9 | 			provider: 'v8',
10 | 			reporter: ['text', 'json', 'html'],
11 | 			include: ['src/**/*.ts'],
12 | 			exclude: [
13 | 				'node_modules/',
14 | 				'dist/',
15 | 				'tests/',
16 | 				'**/*.test.ts',
17 | 				'**/*.spec.ts',
18 | 				'**/*.d.ts',
19 | 				'**/mocks/**',
20 | 				'**/fixtures/**',
21 | 				'vitest.config.ts'
22 | 			]
23 | 		}
24 | 	}
25 | });
26 | 
```

--------------------------------------------------------------------------------
/jest.resolver.cjs:
--------------------------------------------------------------------------------

```
 1 | const { defaultResolver } = require('jest-resolve');
 2 | module.exports = function customResolver(request, options) {
 3 | 	const resolve = options.defaultResolver || defaultResolver;
 4 | 
 5 | 	try {
 6 | 		return resolve(request, options);
 7 | 	} catch (error) {
 8 | 		if (request.startsWith('.') && request.endsWith('.js')) {
 9 | 			try {
10 | 				return resolve(request.replace(/\.js$/, '.ts'), options);
11 | 			} catch (tsError) {
12 | 				tsError.cause = tsError.cause ?? error;
13 | 				throw tsError;
14 | 			}
15 | 		}
16 | 
17 | 		throw error;
18 | 	}
19 | };
20 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/tests/setup.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Vitest test setup file
 3 |  */
 4 | 
 5 | import { afterAll, beforeAll, vi } from 'vitest';
 6 | 
 7 | // Setup any global test configuration here
 8 | // For example, increase timeout for slow CI environments
 9 | if (process.env.CI) {
10 | 	// Vitest timeout is configured in vitest.config.ts
11 | }
12 | 
13 | // Suppress console errors during tests unless explicitly testing them
14 | const originalError = console.error;
15 | beforeAll(() => {
16 | 	console.error = vi.fn();
17 | });
18 | 
19 | afterAll(() => {
20 | 	console.error = originalError;
21 | });
22 | 
```

--------------------------------------------------------------------------------
/src/profiles/codex.js:
--------------------------------------------------------------------------------

```javascript
 1 | // Codex profile for rule-transformer
 2 | import { createProfile } from './base-profile.js';
 3 | 
 4 | // Create and export codex profile using the base factory
 5 | export const codexProfile = createProfile({
 6 | 	name: 'codex',
 7 | 	displayName: 'Codex',
 8 | 	url: 'codex.ai',
 9 | 	docsUrl: 'platform.openai.com/docs/codex',
10 | 	profileDir: '.', // Root directory
11 | 	rulesDir: '.', // No specific rules directory needed
12 | 	mcpConfig: false,
13 | 	mcpConfigName: null,
14 | 	includeDefaultRules: false,
15 | 	fileMap: {
16 | 		'AGENTS.md': 'AGENTS.md'
17 | 	}
18 | });
19 | 
```

--------------------------------------------------------------------------------
/apps/docs/favicon.svg:
--------------------------------------------------------------------------------

```
 1 | <svg width="100" height="100" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
 2 |   <!-- Blue form with check from logo -->
 3 |   <rect x="16" y="10" width="68" height="80" rx="9" fill="#3366CC"/>
 4 |   <polyline points="33,44 41,55 56,29" fill="none" stroke="#FFFFFF" stroke-width="6"/>
 5 |   <circle cx="33" cy="64" r="4" fill="#FFFFFF"/>
 6 |   <rect x="43" y="61" width="27" height="6" fill="#FFFFFF"/>
 7 |   <circle cx="33" cy="77" r="4" fill="#FFFFFF"/>
 8 |   <rect x="43" y="75" width="27" height="6" fill="#FFFFFF"/>
 9 | </svg>
10 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/config/services/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Configuration services exports
 3 |  * Export all configuration-related services
 4 |  */
 5 | 
 6 | export { ConfigLoader } from './config-loader.service.js';
 7 | export {
 8 | 	ConfigMerger,
 9 | 	CONFIG_PRECEDENCE,
10 | 	type ConfigSource
11 | } from './config-merger.service.js';
12 | export {
13 | 	RuntimeStateManager,
14 | 	type RuntimeState
15 | } from './runtime-state-manager.service.js';
16 | export {
17 | 	ConfigPersistence,
18 | 	type PersistenceOptions
19 | } from './config-persistence.service.js';
20 | export { EnvironmentConfigProvider } from './environment-config-provider.service.js';
21 | 
```

--------------------------------------------------------------------------------
/src/constants/rules-actions.js:
--------------------------------------------------------------------------------

```javascript
 1 | /**
 2 |  * @typedef {'add' | 'remove'} RulesAction
 3 |  */
 4 | 
 5 | /**
 6 |  * Individual rules action constants
 7 |  */
 8 | export const RULES_ACTIONS = {
 9 | 	ADD: 'add',
10 | 	REMOVE: 'remove'
11 | };
12 | 
13 | /**
14 |  * Special rules command (not a CRUD operation)
15 |  */
16 | export const RULES_SETUP_ACTION = 'setup';
17 | 
18 | /**
19 |  * Check if a given action is a valid rules action
20 |  * @param {string} action - The action to check
21 |  * @returns {boolean} True if the action is valid, false otherwise
22 |  */
23 | export function isValidRulesAction(action) {
24 | 	return Object.values(RULES_ACTIONS).includes(action);
25 | }
26 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/modules/ai/providers/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Barrel export for AI provider modules
 3 |  */
 4 | 
 5 | export { BaseProvider } from './base-provider.js';
 6 | export type { BaseProviderConfig, CompletionResult } from './base-provider.js';
 7 | 
 8 | // Export provider factory when implemented
 9 | // export { ProviderFactory } from './provider-factory.js';
10 | 
11 | // Export concrete providers when implemented
12 | // export { AnthropicProvider } from './adapters/anthropic-provider.js';
13 | // export { OpenAIProvider } from './adapters/openai-provider.js';
14 | // export { GoogleProvider } from './adapters/google-provider.js';
15 | 
```

--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE/config.yml:
--------------------------------------------------------------------------------

```yaml
 1 | blank_issues_enabled: false
 2 | contact_links:
 3 |   - name: 🐛 Bug Fix
 4 |     url: https://github.com/eyaltoledano/claude-task-master/compare/next...HEAD?template=bugfix.md
 5 |     about: Fix a bug in Task Master
 6 |   - name: ✨ New Feature
 7 |     url: https://github.com/eyaltoledano/claude-task-master/compare/next...HEAD?template=feature.md
 8 |     about: Add a new feature to Task Master
 9 |   - name: 🔌 New Integration
10 |     url: https://github.com/eyaltoledano/claude-task-master/compare/next...HEAD?template=integration.md
11 |     about: Add support for a new tool, IDE, or platform
```

--------------------------------------------------------------------------------
/apps/cli/src/utils/ui.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview UI utilities for Task Master CLI (Re-export module)
 3 |  *
 4 |  * @deprecated: This file is kept for backward compatibility.
 5 |  * All functionality has been moved to organized modules under src/ui/:
 6 |  * - ui/formatters/ (status, priority, complexity, dependencies)
 7 |  * - ui/display/ (messages, tables)
 8 |  * - ui/layout/ (helpers)
 9 |  * - ui/components/ (high-level UI components)
10 |  *
11 |  * Please import from '../ui/index.js' or specific modules for new code.
12 |  */
13 | 
14 | // Re-export everything from the new organized UI structure
15 | export * from '../ui/index.js';
16 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/common/interfaces/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Interface definitions index for the tm-core package
 3 |  * This file exports all interface definitions from their respective modules
 4 |  */
 5 | 
 6 | // Storage interfaces
 7 | export type * from './storage.interface.js';
 8 | export * from './storage.interface.js';
 9 | 
10 | // AI Provider interfaces
11 | export type * from '../../modules/ai/interfaces/ai-provider.interface.js';
12 | export * from '../../modules/ai/interfaces/ai-provider.interface.js';
13 | 
14 | // Configuration interfaces
15 | export type * from './configuration.interface.js';
16 | export * from './configuration.interface.js';
17 | 
```
Page 2/69FirstPrevNextLast