#
tokens: 49939/50000 105/821 files (page 2/52)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 2 of 52. 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
│   ├── agents
│   │   ├── task-checker.md
│   │   ├── task-executor.md
│   │   └── task-orchestrator.md
│   ├── commands
│   │   ├── dedupe.md
│   │   └── tm
│   │       ├── add-dependency
│   │       │   └── add-dependency.md
│   │       ├── add-subtask
│   │       │   ├── add-subtask.md
│   │       │   └── convert-task-to-subtask.md
│   │       ├── add-task
│   │       │   └── add-task.md
│   │       ├── analyze-complexity
│   │       │   └── analyze-complexity.md
│   │       ├── complexity-report
│   │       │   └── complexity-report.md
│   │       ├── expand
│   │       │   ├── expand-all-tasks.md
│   │       │   └── expand-task.md
│   │       ├── fix-dependencies
│   │       │   └── fix-dependencies.md
│   │       ├── generate
│   │       │   └── generate-tasks.md
│   │       ├── help.md
│   │       ├── init
│   │       │   ├── init-project-quick.md
│   │       │   └── init-project.md
│   │       ├── learn.md
│   │       ├── list
│   │       │   ├── list-tasks-by-status.md
│   │       │   ├── list-tasks-with-subtasks.md
│   │       │   └── list-tasks.md
│   │       ├── models
│   │       │   ├── setup-models.md
│   │       │   └── view-models.md
│   │       ├── next
│   │       │   └── next-task.md
│   │       ├── parse-prd
│   │       │   ├── parse-prd-with-research.md
│   │       │   └── parse-prd.md
│   │       ├── remove-dependency
│   │       │   └── remove-dependency.md
│   │       ├── remove-subtask
│   │       │   └── remove-subtask.md
│   │       ├── remove-subtasks
│   │       │   ├── remove-all-subtasks.md
│   │       │   └── remove-subtasks.md
│   │       ├── remove-task
│   │       │   └── remove-task.md
│   │       ├── set-status
│   │       │   ├── to-cancelled.md
│   │       │   ├── to-deferred.md
│   │       │   ├── to-done.md
│   │       │   ├── to-in-progress.md
│   │       │   ├── to-pending.md
│   │       │   └── to-review.md
│   │       ├── setup
│   │       │   ├── install-taskmaster.md
│   │       │   └── quick-install-taskmaster.md
│   │       ├── show
│   │       │   └── show-task.md
│   │       ├── status
│   │       │   └── project-status.md
│   │       ├── sync-readme
│   │       │   └── sync-readme.md
│   │       ├── tm-main.md
│   │       ├── update
│   │       │   ├── update-single-task.md
│   │       │   ├── update-task.md
│   │       │   └── update-tasks-from-id.md
│   │       ├── utils
│   │       │   └── analyze-project.md
│   │       ├── validate-dependencies
│   │       │   └── validate-dependencies.md
│   │       └── workflows
│   │           ├── auto-implement-tasks.md
│   │           ├── command-pipeline.md
│   │           └── smart-workflow.md
│   └── TM_COMMANDS_GUIDE.md
├── .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
│   └── 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
│   │   ├── 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
│   │   ├── test-prd.txt
│   │   └── tm-core-phase-1.txt
│   ├── reports
│   │   ├── task-complexity-report_cc-kiro-hooks.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.txt
├── .vscode
│   ├── extensions.json
│   └── settings.json
├── apps
│   ├── cli
│   │   ├── CHANGELOG.md
│   │   ├── package.json
│   │   ├── src
│   │   │   ├── commands
│   │   │   │   ├── auth.command.ts
│   │   │   │   ├── context.command.ts
│   │   │   │   ├── list.command.ts
│   │   │   │   ├── set-status.command.ts
│   │   │   │   ├── show.command.ts
│   │   │   │   └── start.command.ts
│   │   │   ├── index.ts
│   │   │   ├── ui
│   │   │   │   ├── components
│   │   │   │   │   ├── dashboard.component.ts
│   │   │   │   │   ├── header.component.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── next-task.component.ts
│   │   │   │   │   ├── suggested-steps.component.ts
│   │   │   │   │   └── task-detail.component.ts
│   │   │   │   └── index.ts
│   │   │   └── utils
│   │   │       ├── auto-update.ts
│   │   │       └── ui.ts
│   │   └── tsconfig.json
│   ├── 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
│   │   │   └── task-structure.mdx
│   │   ├── CHANGELOG.md
│   │   ├── docs.json
│   │   ├── favicon.svg
│   │   ├── getting-started
│   │   │   ├── 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
│   │   ├── 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
├── assets
│   ├── .windsurfrules
│   ├── AGENTS.md
│   ├── claude
│   │   ├── agents
│   │   │   ├── task-checker.md
│   │   │   ├── task-executor.md
│   │   │   └── task-orchestrator.md
│   │   ├── commands
│   │   │   └── tm
│   │   │       ├── add-dependency
│   │   │       │   └── add-dependency.md
│   │   │       ├── add-subtask
│   │   │       │   ├── add-subtask.md
│   │   │       │   └── convert-task-to-subtask.md
│   │   │       ├── add-task
│   │   │       │   └── add-task.md
│   │   │       ├── analyze-complexity
│   │   │       │   └── analyze-complexity.md
│   │   │       ├── clear-subtasks
│   │   │       │   ├── clear-all-subtasks.md
│   │   │       │   └── clear-subtasks.md
│   │   │       ├── complexity-report
│   │   │       │   └── complexity-report.md
│   │   │       ├── expand
│   │   │       │   ├── expand-all-tasks.md
│   │   │       │   └── expand-task.md
│   │   │       ├── fix-dependencies
│   │   │       │   └── fix-dependencies.md
│   │   │       ├── generate
│   │   │       │   └── generate-tasks.md
│   │   │       ├── help.md
│   │   │       ├── init
│   │   │       │   ├── init-project-quick.md
│   │   │       │   └── init-project.md
│   │   │       ├── learn.md
│   │   │       ├── list
│   │   │       │   ├── list-tasks-by-status.md
│   │   │       │   ├── list-tasks-with-subtasks.md
│   │   │       │   └── list-tasks.md
│   │   │       ├── models
│   │   │       │   ├── setup-models.md
│   │   │       │   └── view-models.md
│   │   │       ├── next
│   │   │       │   └── next-task.md
│   │   │       ├── parse-prd
│   │   │       │   ├── parse-prd-with-research.md
│   │   │       │   └── parse-prd.md
│   │   │       ├── remove-dependency
│   │   │       │   └── remove-dependency.md
│   │   │       ├── remove-subtask
│   │   │       │   └── remove-subtask.md
│   │   │       ├── remove-subtasks
│   │   │       │   ├── remove-all-subtasks.md
│   │   │       │   └── remove-subtasks.md
│   │   │       ├── remove-task
│   │   │       │   └── remove-task.md
│   │   │       ├── set-status
│   │   │       │   ├── to-cancelled.md
│   │   │       │   ├── to-deferred.md
│   │   │       │   ├── to-done.md
│   │   │       │   ├── to-in-progress.md
│   │   │       │   ├── to-pending.md
│   │   │       │   └── to-review.md
│   │   │       ├── setup
│   │   │       │   ├── install-taskmaster.md
│   │   │       │   └── quick-install-taskmaster.md
│   │   │       ├── show
│   │   │       │   └── show-task.md
│   │   │       ├── status
│   │   │       │   └── project-status.md
│   │   │       ├── sync-readme
│   │   │       │   └── sync-readme.md
│   │   │       ├── tm-main.md
│   │   │       ├── update
│   │   │       │   ├── update-single-task.md
│   │   │       │   ├── update-task.md
│   │   │       │   └── update-tasks-from-id.md
│   │   │       ├── utils
│   │   │       │   └── analyze-project.md
│   │   │       ├── validate-dependencies
│   │   │       │   └── validate-dependencies.md
│   │   │       └── workflows
│   │   │           ├── auto-implement-tasks.md
│   │   │           ├── command-pipeline.md
│   │   │           └── smart-workflow.md
│   │   └── TM_COMMANDS_GUIDE.md
│   ├── config.json
│   ├── env.example
│   ├── example_prd.txt
│   ├── 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.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
│   ├── CLI-COMMANDER-PATTERN.md
│   ├── command-reference.md
│   ├── configuration.md
│   ├── contributor-docs
│   │   └── testing-roo-integration.md
│   ├── cross-tag-task-movement.md
│   ├── examples
│   │   └── claude-code-usage.md
│   ├── examples.md
│   ├── licensing.md
│   ├── mcp-provider-guide.md
│   ├── mcp-provider.md
│   ├── migration-guide.md
│   ├── models.md
│   ├── providers
│   │   └── gemini-cli.md
│   ├── README.md
│   ├── scripts
│   │   └── models-json-to-markdown.js
│   ├── task-structure.md
│   └── tutorial.md
├── images
│   └── 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
│       │   │   ├── list-tasks.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
│       │   │   ├── show-task.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
│           ├── get-task.js
│           ├── get-tasks.js
│           ├── index.js
│           ├── initialize-project.js
│           ├── list-tags.js
│           ├── models.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.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
│   ├── build-config
│   │   ├── CHANGELOG.md
│   │   ├── package.json
│   │   ├── src
│   │   │   └── tsdown.base.ts
│   │   └── tsconfig.json
│   └── tm-core
│       ├── .gitignore
│       ├── CHANGELOG.md
│       ├── docs
│       │   └── listTasks-architecture.md
│       ├── package.json
│       ├── POC-STATUS.md
│       ├── README.md
│       ├── src
│       │   ├── auth
│       │   │   ├── auth-manager.test.ts
│       │   │   ├── auth-manager.ts
│       │   │   ├── config.ts
│       │   │   ├── credential-store.test.ts
│       │   │   ├── credential-store.ts
│       │   │   ├── index.ts
│       │   │   ├── oauth-service.ts
│       │   │   ├── supabase-session-storage.ts
│       │   │   └── types.ts
│       │   ├── clients
│       │   │   ├── index.ts
│       │   │   └── supabase-client.ts
│       │   ├── config
│       │   │   ├── config-manager.spec.ts
│       │   │   ├── config-manager.ts
│       │   │   ├── index.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
│       │   ├── constants
│       │   │   └── index.ts
│       │   ├── entities
│       │   │   └── task.entity.ts
│       │   ├── errors
│       │   │   ├── index.ts
│       │   │   └── task-master-error.ts
│       │   ├── executors
│       │   │   ├── base-executor.ts
│       │   │   ├── claude-executor.ts
│       │   │   ├── executor-factory.ts
│       │   │   ├── executor-service.ts
│       │   │   ├── index.ts
│       │   │   └── types.ts
│       │   ├── index.ts
│       │   ├── interfaces
│       │   │   ├── ai-provider.interface.ts
│       │   │   ├── configuration.interface.ts
│       │   │   ├── index.ts
│       │   │   └── storage.interface.ts
│       │   ├── logger
│       │   │   ├── factory.ts
│       │   │   ├── index.ts
│       │   │   └── logger.ts
│       │   ├── mappers
│       │   │   └── TaskMapper.ts
│       │   ├── parser
│       │   │   └── index.ts
│       │   ├── providers
│       │   │   ├── ai
│       │   │   │   ├── base-provider.ts
│       │   │   │   └── index.ts
│       │   │   └── index.ts
│       │   ├── repositories
│       │   │   ├── supabase-task-repository.ts
│       │   │   └── task-repository.interface.ts
│       │   ├── services
│       │   │   ├── index.ts
│       │   │   ├── organization.service.ts
│       │   │   ├── task-execution-service.ts
│       │   │   └── task-service.ts
│       │   ├── storage
│       │   │   ├── api-storage.ts
│       │   │   ├── file-storage
│       │   │   │   ├── file-operations.ts
│       │   │   │   ├── file-storage.ts
│       │   │   │   ├── format-handler.ts
│       │   │   │   ├── index.ts
│       │   │   │   └── path-resolver.ts
│       │   │   ├── index.ts
│       │   │   └── storage-factory.ts
│       │   ├── subpath-exports.test.ts
│       │   ├── task-master-core.ts
│       │   ├── types
│       │   │   ├── database.types.ts
│       │   │   ├── index.ts
│       │   │   └── legacy.ts
│       │   └── utils
│       │       ├── id-generator.ts
│       │       └── index.ts
│       ├── tests
│       │   ├── integration
│       │   │   └── list-tasks.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
│   ├── dev.js
│   ├── init.js
│   ├── modules
│   │   ├── ai-services-unified.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
├── src
│   ├── ai-providers
│   │   ├── anthropic.js
│   │   ├── azure.js
│   │   ├── base-provider.js
│   │   ├── bedrock.js
│   │   ├── claude-code.js
│   │   ├── custom-sdk
│   │   │   ├── claude-code
│   │   │   │   ├── errors.js
│   │   │   │   ├── index.js
│   │   │   │   ├── json-extractor.js
│   │   │   │   ├── language-model.js
│   │   │   │   ├── message-converter.js
│   │   │   │   └── types.js
│   │   │   └── grok-cli
│   │   │       ├── errors.js
│   │   │       ├── index.js
│   │   │       ├── json-extractor.js
│   │   │       ├── language-model.js
│   │   │       ├── message-converter.js
│   │   │       └── types.js
│   │   ├── gemini-cli.js
│   │   ├── google-vertex.js
│   │   ├── google.js
│   │   ├── grok-cli.js
│   │   ├── groq.js
│   │   ├── index.js
│   │   ├── ollama.js
│   │   ├── openai.js
│   │   ├── openrouter.js
│   │   ├── perplexity.js
│   │   └── xai.js
│   ├── constants
│   │   ├── commands.js
│   │   ├── paths.js
│   │   ├── profiles.js
│   │   ├── providers.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
│   ├── 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
│   ├── fixture
│   │   └── test-tasks.json
│   ├── fixtures
│   │   ├── .taskmasterconfig
│   │   ├── sample-claude-response.js
│   │   ├── sample-prd.txt
│   │   └── sample-tasks.js
│   ├── integration
│   │   ├── 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
│   ├── 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
│       │   ├── claude-code.test.js
│       │   ├── custom-sdk
│       │   │   └── claude-code
│       │   │       └── language-model.test.js
│       │   ├── gemini-cli.test.js
│       │   ├── mcp-components.test.js
│       │   └── openai.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
│       ├── 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
│       ├── providers
│       │   └── provider-registry.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
│       │       │   ├── move-task-cross-tag.test.js
│       │       │   ├── move-task.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
```

# Files

--------------------------------------------------------------------------------
/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 | **Import Task Master's development workflow commands and guidelines, treat as if import is in the main CLAUDE.md file.**
5 | @./.taskmaster/CLAUDE.md
6 | 
7 | ## Changeset Guidelines
8 | 
9 | - 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.
```

--------------------------------------------------------------------------------
/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.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 | 
```

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

```javascript
1 | 
```

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

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

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

```markdown
1 | # @tm/build-config
2 | 
3 | ## null
4 | 
5 | ## 1.0.1
6 | 
```

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

```markdown
 1 | # docs
 2 | 
 3 | ## 0.0.4
 4 | 
 5 | ## 0.0.3
 6 | 
 7 | ## 0.0.2
 8 | 
 9 | ## 0.0.1
10 | 
```

--------------------------------------------------------------------------------
/.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/tm-core/src/clients/index.ts:
--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------
/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
```

--------------------------------------------------------------------------------
/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 | 
```

--------------------------------------------------------------------------------
/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 | 
```

--------------------------------------------------------------------------------
/tests/fixture/test-tasks.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 |   "tasks": [
 3 |     {
 4 |       "id": 1,
 5 |       "dependencies": [],
 6 |       "subtasks": [
 7 |         {
 8 |           "id": 1,
 9 |           "dependencies": []
10 |         }
11 |       ]
12 |     }
13 |   ]
14 | }
```

--------------------------------------------------------------------------------
/.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.
```

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

```typescript
 1 | /**
 2 |  * @fileoverview Main UI exports
 3 |  */
 4 | 
 5 | // Export all components
 6 | export * from './components/index.js';
 7 | 
 8 | // Re-export existing UI utilities
 9 | export * from '../utils/ui.js';
10 | 
```

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

```json
 1 | {
 2 | 	"currentTag": "master",
 3 | 	"lastSwitched": "2025-09-12T22:25:27.535Z",
 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/providers/index.ts:
--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------
/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/docs/package.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"name": "docs",
 3 | 	"version": "0.0.4",
 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 | 
```

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

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

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

```typescript
1 | /**
2 |  * Services module exports
3 |  * Provides business logic and service layer functionality
4 |  */
5 | 
6 | export { TaskService } from './task-service.js';
7 | export { OrganizationService } from './organization.service.js';
8 | export type { Organization, Brief } from './organization.service.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 |   ]
16 | }
```

--------------------------------------------------------------------------------
/packages/tm-core/src/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 } from './logger.js';
8 | export { createLogger, getLogger, setGlobalLogger } from './factory.js';
9 | 
```

--------------------------------------------------------------------------------
/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/executors/index.ts:
--------------------------------------------------------------------------------

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

--------------------------------------------------------------------------------
/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)
```

--------------------------------------------------------------------------------
/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 | 
```

--------------------------------------------------------------------------------
/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 | 
```

--------------------------------------------------------------------------------
/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/storage/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 | 
```

--------------------------------------------------------------------------------
/.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/profiles/cursor.js:
--------------------------------------------------------------------------------

```javascript
 1 | // Cursor conversion profile for rule-transformer
 2 | import { createProfile, COMMON_TOOL_MAPPINGS } from './base-profile.js';
 3 | 
 4 | // Create and export cursor profile using the base factory
 5 | export const cursorProfile = createProfile({
 6 | 	name: 'cursor',
 7 | 	displayName: 'Cursor',
 8 | 	url: 'cursor.so',
 9 | 	docsUrl: 'docs.cursor.com',
10 | 	targetExtension: '.mdc', // Cursor keeps .mdc extension
11 | 	supportsRulesSubdirectories: true
12 | });
13 | 
```

--------------------------------------------------------------------------------
/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 | 
```

--------------------------------------------------------------------------------
/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 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/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 './ai-provider.interface.js';
12 | export * from './ai-provider.interface.js';
13 | 
14 | // Configuration interfaces
15 | export type * from './configuration.interface.js';
16 | export * from './configuration.interface.js';
17 | 
```

--------------------------------------------------------------------------------
/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/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/providers/ai/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
```

--------------------------------------------------------------------------------
/src/profiles/gemini.js:
--------------------------------------------------------------------------------

```javascript
 1 | // Gemini profile for rule-transformer
 2 | import { createProfile } from './base-profile.js';
 3 | 
 4 | // Create and export gemini profile using the base factory
 5 | export const geminiProfile = createProfile({
 6 | 	name: 'gemini',
 7 | 	displayName: 'Gemini',
 8 | 	url: 'codeassist.google',
 9 | 	docsUrl: 'github.com/google-gemini/gemini-cli',
10 | 	profileDir: '.gemini', // Keep .gemini for settings.json
11 | 	rulesDir: '.', // Root directory for GEMINI.md
12 | 	mcpConfigName: 'settings.json', // Override default 'mcp.json'
13 | 	includeDefaultRules: false,
14 | 	fileMap: {
15 | 		'AGENTS.md': 'GEMINI.md'
16 | 	}
17 | });
18 | 
```

--------------------------------------------------------------------------------
/scripts/dev.js:
--------------------------------------------------------------------------------

```javascript
 1 | #!/usr/bin/env node
 2 | 
 3 | /**
 4 |  * dev.js
 5 |  * Task Master CLI - AI-driven development task management
 6 |  *
 7 |  * This is the refactored entry point that uses the modular architecture.
 8 |  * It imports functionality from the modules directory and provides a CLI.
 9 |  */
10 | 
11 | import dotenv from 'dotenv';
12 | dotenv.config();
13 | 
14 | // Add at the very beginning of the file
15 | if (process.env.DEBUG === '1') {
16 | 	console.error('DEBUG - dev.js received args:', process.argv.slice(2));
17 | }
18 | 
19 | import { runCLI } from './modules/commands.js';
20 | 
21 | // Run the CLI with the process arguments
22 | runCLI(process.argv);
23 | 
```

--------------------------------------------------------------------------------
/.kiro/settings/mcp.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"mcpServers": {
 3 | 		"task-master-ai": {
 4 | 			"command": "npx",
 5 | 			"args": ["-y", "task-master-ai"],
 6 | 			"env": {
 7 | 				"ANTHROPIC_API_KEY": "YOUR_ANTHROPIC_API_KEY_HERE",
 8 | 				"PERPLEXITY_API_KEY": "YOUR_PERPLEXITY_API_KEY_HERE",
 9 | 				"OPENAI_API_KEY": "YOUR_OPENAI_KEY_HERE",
10 | 				"GOOGLE_API_KEY": "YOUR_GOOGLE_KEY_HERE",
11 | 				"XAI_API_KEY": "YOUR_XAI_KEY_HERE",
12 | 				"OPENROUTER_API_KEY": "YOUR_OPENROUTER_KEY_HERE",
13 | 				"MISTRAL_API_KEY": "YOUR_MISTRAL_KEY_HERE",
14 | 				"AZURE_OPENAI_API_KEY": "YOUR_AZURE_KEY_HERE",
15 | 				"OLLAMA_API_KEY": "YOUR_OLLAMA_API_KEY_HERE"
16 | 			}
17 | 		}
18 | 	}
19 | }
20 | 
```

--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"json.schemas": [
 3 | 		{
 4 | 			"fileMatch": ["src/prompts/*.json"],
 5 | 			"url": "./src/prompts/schemas/prompt-template.schema.json"
 6 | 		}
 7 | 	],
 8 | 	"files.associations": {
 9 | 		"src/prompts/*.json": "json"
10 | 	},
11 | 
12 | 	"json.format.enable": true,
13 | 	"json.validate.enable": true,
14 | 	"typescript.tsdk": "node_modules/typescript/lib",
15 | 	"[typescript]": {
16 | 		"editor.defaultFormatter": "biomejs.biome"
17 | 	},
18 | 	"[typescriptreact]": {
19 | 		"editor.defaultFormatter": "biomejs.biome"
20 | 	},
21 | 	"[javascript]": {
22 | 		"editor.defaultFormatter": "biomejs.biome"
23 | 	},
24 | 	"[json]": {
25 | 		"editor.defaultFormatter": "biomejs.biome"
26 | 	}
27 | }
28 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/components/ui/label.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | import * as LabelPrimitive from '@radix-ui/react-label';
 2 | import type * as React from 'react';
 3 | 
 4 | import { cn } from '@/lib/utils';
 5 | 
 6 | function Label({
 7 | 	className,
 8 | 	...props
 9 | }: React.ComponentProps<typeof LabelPrimitive.Root>) {
10 | 	return (
11 | 		<LabelPrimitive.Root
12 | 			data-slot="label"
13 | 			className={cn(
14 | 				'flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',
15 | 				className
16 | 			)}
17 | 			{...props}
18 | 		/>
19 | 	);
20 | }
21 | 
22 | export { Label };
23 | 
```

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

```typescript
 1 | /**
 2 |  * Webview Entry Point
 3 |  */
 4 | 
 5 | import React from 'react';
 6 | import { createRoot } from 'react-dom/client';
 7 | import { App } from './App';
 8 | // CSS is built separately by Tailwind
 9 | 
10 | // VS Code API declaration
11 | declare global {
12 | 	interface Window {
13 | 		acquireVsCodeApi?: () => {
14 | 			postMessage: (message: any) => void;
15 | 			setState: (state: any) => void;
16 | 			getState: () => any;
17 | 		};
18 | 	}
19 | }
20 | 
21 | // Initialize React app
22 | const container = document.getElementById('root');
23 | if (container) {
24 | 	const root = createRoot(container);
25 | 	root.render(<App />);
26 | } else {
27 | 	console.error('❌ Root container not found');
28 | }
29 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/auth/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * Authentication module exports
 3 |  */
 4 | 
 5 | export { AuthManager } from './auth-manager.js';
 6 | export { CredentialStore } from './credential-store.js';
 7 | export { OAuthService } from './oauth-service.js';
 8 | export { SupabaseSessionStorage } from './supabase-session-storage.js';
 9 | export type {
10 | 	Organization,
11 | 	Brief,
12 | 	RemoteTask
13 | } from '../services/organization.service.js';
14 | 
15 | export type {
16 | 	AuthCredentials,
17 | 	OAuthFlowOptions,
18 | 	AuthConfig,
19 | 	CliData,
20 | 	UserContext
21 | } from './types.js';
22 | 
23 | export { AuthenticationError } from './types.js';
24 | 
25 | export {
26 | 	DEFAULT_AUTH_CONFIG,
27 | 	getAuthConfig
28 | } from './config.js';
29 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/webview/components/PriorityBadge.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * Priority Badge Component
 3 |  */
 4 | 
 5 | import React from 'react';
 6 | import { Badge } from '@/components/ui/badge';
 7 | import type { TaskMasterTask } from '../types';
 8 | 
 9 | interface PriorityBadgeProps {
10 | 	priority: TaskMasterTask['priority'];
11 | }
12 | 
13 | export const PriorityBadge: React.FC<PriorityBadgeProps> = ({ priority }) => {
14 | 	if (!priority) return null;
15 | 
16 | 	const variants = {
17 | 		high: 'destructive' as const,
18 | 		medium: 'default' as const,
19 | 		low: 'secondary' as const
20 | 	};
21 | 
22 | 	return (
23 | 		<Badge
24 | 			variant={variants[priority] || 'secondary'}
25 | 			className="text-xs font-normal px-2 py-0.5"
26 | 		>
27 | 			{priority}
28 | 		</Badge>
29 | 	);
30 | };
31 | 
```

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

```json
 1 | {
 2 | 	"name": "@tm/build-config",
 3 | 	"description": "Shared build configuration for Task Master monorepo",
 4 | 	"type": "module",
 5 | 	"private": true,
 6 | 	"main": "./dist/tsdown.base.js",
 7 | 	"types": "./src/tsdown.base.ts",
 8 | 	"exports": {
 9 | 		".": {
10 | 			"types": "./src/tsdown.base.ts",
11 | 			"import": "./dist/tsdown.base.js"
12 | 		}
13 | 	},
14 | 	"files": ["dist", "src"],
15 | 	"keywords": ["build-config", "tsup", "monorepo"],
16 | 	"author": "",
17 | 	"license": "MIT",
18 | 	"scripts": {
19 | 		"build": "tsc",
20 | 		"typecheck": "tsc --noEmit"
21 | 	},
22 | 	"devDependencies": {
23 | 		"dotenv-mono": "^1.5.1",
24 | 		"typescript": "^5.7.3"
25 | 	},
26 | 	"dependencies": {
27 | 		"tsup": "^8.5.0"
28 | 	}
29 | }
30 | 
```

--------------------------------------------------------------------------------
/.cursor/mcp.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"mcpServers": {
 3 | 		"task-master-ai": {
 4 | 			"command": "node",
 5 | 			"args": ["./dist/mcp-server.js"],
 6 | 			"env": {
 7 | 				"ANTHROPIC_API_KEY": "ANTHROPIC_API_KEY_HERE",
 8 | 				"PERPLEXITY_API_KEY": "PERPLEXITY_API_KEY_HERE",
 9 | 				"OPENAI_API_KEY": "OPENAI_API_KEY_HERE",
10 | 				"GOOGLE_API_KEY": "GOOGLE_API_KEY_HERE",
11 | 				"GROQ_API_KEY": "GROQ_API_KEY_HERE",
12 | 				"XAI_API_KEY": "XAI_API_KEY_HERE",
13 | 				"OPENROUTER_API_KEY": "OPENROUTER_API_KEY_HERE",
14 | 				"MISTRAL_API_KEY": "MISTRAL_API_KEY_HERE",
15 | 				"AZURE_OPENAI_API_KEY": "AZURE_OPENAI_API_KEY_HERE",
16 | 				"OLLAMA_API_KEY": "OLLAMA_API_KEY_HERE",
17 | 				"GITHUB_API_KEY": "GITHUB_API_KEY_HERE"
18 | 			}
19 | 		}
20 | 	}
21 | }
22 | 
```

--------------------------------------------------------------------------------
/src/profiles/index.js:
--------------------------------------------------------------------------------

```javascript
 1 | // Profile exports for centralized importing
 2 | export { ampProfile } from './amp.js';
 3 | export { claudeProfile } from './claude.js';
 4 | export { clineProfile } from './cline.js';
 5 | export { codexProfile } from './codex.js';
 6 | export { cursorProfile } from './cursor.js';
 7 | export { geminiProfile } from './gemini.js';
 8 | export { kiloProfile } from './kilo.js';
 9 | export { kiroProfile } from './kiro.js';
10 | export { opencodeProfile } from './opencode.js';
11 | export { rooProfile } from './roo.js';
12 | export { traeProfile } from './trae.js';
13 | export { vscodeProfile } from './vscode.js';
14 | export { windsurfProfile } from './windsurf.js';
15 | export { zedProfile } from './zed.js';
16 | 
```

--------------------------------------------------------------------------------
/.claude/commands/tm/setup/quick-install-taskmaster.md:
--------------------------------------------------------------------------------

```markdown
 1 | Quick install Task Master globally if not already installed.
 2 | 
 3 | Execute this streamlined installation:
 4 | 
 5 | ```bash
 6 | # Check and install in one command
 7 | task-master --version 2>/dev/null || npm install -g task-master-ai
 8 | 
 9 | # Verify installation
10 | task-master --version
11 | 
12 | # Quick setup check
13 | task-master models --status || echo "Note: You'll need to set up an AI provider API key"
14 | ```
15 | 
16 | If you see "command not found" after installation, you may need to:
17 | 1. Restart your terminal
18 | 2. Or add npm global bin to PATH: `export PATH=$(npm bin -g):$PATH`
19 | 
20 | Once installed, you can use all the Task Master commands!
21 | 
22 | Quick test: Run `/project:help` to see all available commands.
```

--------------------------------------------------------------------------------
/assets/claude/commands/tm/setup/quick-install-taskmaster.md:
--------------------------------------------------------------------------------

```markdown
 1 | Quick install Task Master globally if not already installed.
 2 | 
 3 | Execute this streamlined installation:
 4 | 
 5 | ```bash
 6 | # Check and install in one command
 7 | task-master --version 2>/dev/null || npm install -g task-master-ai
 8 | 
 9 | # Verify installation
10 | task-master --version
11 | 
12 | # Quick setup check
13 | task-master models --status || echo "Note: You'll need to set up an AI provider API key"
14 | ```
15 | 
16 | If you see "command not found" after installation, you may need to:
17 | 1. Restart your terminal
18 | 2. Or add npm global bin to PATH: `export PATH=$(npm bin -g):$PATH`
19 | 
20 | Once installed, you can use all the Task Master commands!
21 | 
22 | Quick test: Run `/project:help` to see all available commands.
```

--------------------------------------------------------------------------------
/mcp-server/server.js:
--------------------------------------------------------------------------------

```javascript
 1 | #!/usr/bin/env node
 2 | 
 3 | import TaskMasterMCPServer from './src/index.js';
 4 | import dotenv from 'dotenv';
 5 | import logger from './src/logger.js';
 6 | 
 7 | // Load environment variables
 8 | dotenv.config();
 9 | 
10 | /**
11 |  * Start the MCP server
12 |  */
13 | async function startServer() {
14 | 	const server = new TaskMasterMCPServer();
15 | 
16 | 	// Handle graceful shutdown
17 | 	process.on('SIGINT', async () => {
18 | 		await server.stop();
19 | 		process.exit(0);
20 | 	});
21 | 
22 | 	process.on('SIGTERM', async () => {
23 | 		await server.stop();
24 | 		process.exit(0);
25 | 	});
26 | 
27 | 	try {
28 | 		await server.start();
29 | 	} catch (error) {
30 | 		logger.error(`Failed to start MCP server: ${error.message}`);
31 | 		process.exit(1);
32 | 	}
33 | }
34 | 
35 | // Start the server
36 | startServer();
37 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/components/ui/separator.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | 'use client';
 2 | 
 3 | import * as SeparatorPrimitive from '@radix-ui/react-separator';
 4 | import type * as React from 'react';
 5 | 
 6 | import { cn } from '@/lib/utils';
 7 | 
 8 | function Separator({
 9 | 	className,
10 | 	orientation = 'horizontal',
11 | 	decorative = true,
12 | 	...props
13 | }: React.ComponentProps<typeof SeparatorPrimitive.Root>) {
14 | 	return (
15 | 		<SeparatorPrimitive.Root
16 | 			data-slot="separator"
17 | 			decorative={decorative}
18 | 			orientation={orientation}
19 | 			className={cn(
20 | 				'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',
21 | 				className
22 | 			)}
23 | 			{...props}
24 | 		/>
25 | 	);
26 | }
27 | 
28 | export { Separator };
29 | 
```

--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feedback.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | name: Feedback
 3 | about: Give us specific feedback on the product/approach/tech
 4 | title: 'feedback: '
 5 | labels: feedback
 6 | assignees: ''
 7 | ---
 8 | 
 9 | ### Feedback Summary
10 | 
11 | Provide a clear summary or direct quote from user feedback.
12 | 
13 | ### User Context
14 | 
15 | Explain the user's context or scenario in which this feedback was provided.
16 | 
17 | ### User Impact
18 | 
19 | Describe how this feedback affects the user experience or workflow.
20 | 
21 | ### Suggestions
22 | 
23 | Provide any initial thoughts, potential solutions, or improvements based on the feedback.
24 | 
25 | ### Relevant Screenshots or Examples
26 | 
27 | Attach screenshots, logs, or examples that illustrate the feedback.
28 | 
29 | ### Additional Notes
30 | 
31 | Any additional context or related information.
32 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/components/constants.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * Shared constants for TaskDetails components
 3 |  */
 4 | 
 5 | /**
 6 |  * Status color definitions for visual indicators
 7 |  */
 8 | export const STATUS_DOT_COLORS = {
 9 | 	done: '#22c55e', // Green
10 | 	'in-progress': '#3b82f6', // Blue
11 | 	review: '#a855f7', // Purple
12 | 	deferred: '#ef4444', // Red
13 | 	cancelled: '#6b7280', // Gray
14 | 	pending: '#eab308' // Yellow (default)
15 | } as const;
16 | 
17 | export type TaskStatus = keyof typeof STATUS_DOT_COLORS;
18 | 
19 | /**
20 |  * Get the color for a status dot indicator
21 |  * @param status - The task status
22 |  * @returns The hex color code for the status
23 |  */
24 | export function getStatusDotColor(status: string): string {
25 | 	return STATUS_DOT_COLORS[status as TaskStatus] || STATUS_DOT_COLORS.pending;
26 | }
27 | 
```

--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE/bugfix.md:
--------------------------------------------------------------------------------

```markdown
 1 | ## 🐛 Bug Fix
 2 | 
 3 | ### 🔍 Bug Description
 4 | <!-- Describe the bug -->
 5 | 
 6 | ### 🔗 Related Issues
 7 | <!-- Fixes #123 -->
 8 | 
 9 | ### ✨ Solution
10 | <!-- How does this PR fix the bug? -->
11 | 
12 | ## How to Test
13 | 
14 | ### Steps that caused the bug:
15 | 1. 
16 | 2. 
17 | 
18 | **Before fix:** 
19 | **After fix:** 
20 | 
21 | ### Quick verification:
22 | ```bash
23 | # Commands to verify the fix
24 | ```
25 | 
26 | ## Contributor Checklist
27 | - [ ] Created changeset: `npm run changeset`
28 | - [ ] Tests pass: `npm test`
29 | - [ ] Format check passes: `npm run format-check`
30 | - [ ] Addressed CodeRabbit comments
31 | - [ ] Added unit tests (if applicable)
32 | - [ ] Manually verified the fix works
33 | 
34 | ---
35 | 
36 | ### For Maintainers
37 | - [ ] Root cause identified
38 | - [ ] Fix doesn't introduce new issues
39 | - [ ] CI passes
```

--------------------------------------------------------------------------------
/apps/extension/tsconfig.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"compilerOptions": {
 3 | 		"module": "ESNext",
 4 | 		"target": "ES2022",
 5 | 		"outDir": "out",
 6 | 		"lib": ["ES2022", "DOM"],
 7 | 		"sourceMap": true,
 8 | 		"rootDir": "src",
 9 | 		"strict": true /* enable all strict type-checking options */,
10 | 		"moduleResolution": "Node",
11 | 		"esModuleInterop": true,
12 | 		"skipLibCheck": true,
13 | 		"forceConsistentCasingInFileNames": true,
14 | 		"jsx": "react-jsx",
15 | 		"allowSyntheticDefaultImports": true,
16 | 		"resolveJsonModule": true,
17 | 		"declaration": false,
18 | 		"declarationMap": false,
19 | 		"baseUrl": ".",
20 | 		"paths": {
21 | 			"@/*": ["./src/*"],
22 | 			"@/components/*": ["./src/components/*"],
23 | 			"@/lib/*": ["./src/lib/*"],
24 | 			"@tm/core": ["../core/src"]
25 | 		}
26 | 	},
27 | 	"exclude": ["node_modules", ".vscode-test", "out", "dist"]
28 | }
29 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/webview/components/ToastContainer.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * Toast Container Component
 3 |  */
 4 | 
 5 | import React from 'react';
 6 | import { ToastNotification } from './ToastNotification';
 7 | import type { ToastNotification as ToastType } from '../types';
 8 | 
 9 | interface ToastContainerProps {
10 | 	notifications: ToastType[];
11 | 	onDismiss: (id: string) => void;
12 | }
13 | 
14 | export const ToastContainer: React.FC<ToastContainerProps> = ({
15 | 	notifications,
16 | 	onDismiss
17 | }) => {
18 | 	return (
19 | 		<div className="fixed top-4 right-4 z-50 pointer-events-none">
20 | 			<div className="flex flex-col items-end pointer-events-auto">
21 | 				{notifications.map((notification) => (
22 | 					<ToastNotification
23 | 						key={notification.id}
24 | 						notification={notification}
25 | 						onDismiss={onDismiss}
26 | 					/>
27 | 				))}
28 | 			</div>
29 | 		</div>
30 | 	);
31 | };
32 | 
```

--------------------------------------------------------------------------------
/.claude/commands/tm/set-status/to-pending.md:
--------------------------------------------------------------------------------

```markdown
 1 | Set a task's status to pending.
 2 | 
 3 | Arguments: $ARGUMENTS (task ID)
 4 | 
 5 | ## Setting Task to Pending
 6 | 
 7 | This moves a task back to the pending state, useful for:
 8 | - Resetting erroneously started tasks
 9 | - Deferring work that was prematurely begun
10 | - Reorganizing sprint priorities
11 | 
12 | ## Execution
13 | 
14 | ```bash
15 | task-master set-status --id=$ARGUMENTS --status=pending
16 | ```
17 | 
18 | ## Validation
19 | 
20 | Before setting to pending:
21 | - Warn if task is currently in-progress
22 | - Check if this will block other tasks
23 | - Suggest documenting why it's being reset
24 | - Preserve any work already done
25 | 
26 | ## Smart Actions
27 | 
28 | After setting to pending:
29 | - Update sprint planning if needed
30 | - Notify about freed resources
31 | - Suggest priority reassessment
32 | - Log the status change with context
```

--------------------------------------------------------------------------------
/assets/claude/commands/tm/set-status/to-pending.md:
--------------------------------------------------------------------------------

```markdown
 1 | Set a task's status to pending.
 2 | 
 3 | Arguments: $ARGUMENTS (task ID)
 4 | 
 5 | ## Setting Task to Pending
 6 | 
 7 | This moves a task back to the pending state, useful for:
 8 | - Resetting erroneously started tasks
 9 | - Deferring work that was prematurely begun
10 | - Reorganizing sprint priorities
11 | 
12 | ## Execution
13 | 
14 | ```bash
15 | task-master set-status --id=$ARGUMENTS --status=pending
16 | ```
17 | 
18 | ## Validation
19 | 
20 | Before setting to pending:
21 | - Warn if task is currently in-progress
22 | - Check if this will block other tasks
23 | - Suggest documenting why it's being reset
24 | - Preserve any work already done
25 | 
26 | ## Smart Actions
27 | 
28 | After setting to pending:
29 | - Update sprint planning if needed
30 | - Notify about freed resources
31 | - Suggest priority reassessment
32 | - Log the status change with context
```

--------------------------------------------------------------------------------
/mcp-server/src/core/direct-functions/cache-stats.js:
--------------------------------------------------------------------------------

```javascript
 1 | /**
 2 |  * cache-stats.js
 3 |  * Direct function implementation for retrieving cache statistics
 4 |  */
 5 | 
 6 | import { contextManager } from '../context-manager.js';
 7 | 
 8 | /**
 9 |  * Get cache statistics for monitoring
10 |  * @param {Object} args - Command arguments
11 |  * @param {Object} log - Logger object
12 |  * @returns {Object} - Cache statistics
13 |  */
14 | export async function getCacheStatsDirect(args, log) {
15 | 	try {
16 | 		log.info('Retrieving cache statistics');
17 | 		const stats = contextManager.getStats();
18 | 		return {
19 | 			success: true,
20 | 			data: stats
21 | 		};
22 | 	} catch (error) {
23 | 		log.error(`Error getting cache stats: ${error.message}`);
24 | 		return {
25 | 			success: false,
26 | 			error: {
27 | 				code: 'CACHE_STATS_ERROR',
28 | 				message: error.message || 'Unknown error occurred'
29 | 			}
30 | 		};
31 | 	}
32 | }
33 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/components/ui/textarea.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | import type * as React from 'react';
 2 | 
 3 | import { cn } from '@/lib/utils';
 4 | 
 5 | function Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {
 6 | 	return (
 7 | 		<textarea
 8 | 			data-slot="textarea"
 9 | 			className={cn(
10 | 				'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
11 | 				className
12 | 			)}
13 | 			{...props}
14 | 		/>
15 | 	);
16 | }
17 | 
18 | export { Textarea };
19 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/components/ui/collapsible.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
 2 | 
 3 | function Collapsible({
 4 | 	...props
 5 | }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
 6 | 	return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />;
 7 | }
 8 | 
 9 | function CollapsibleTrigger({
10 | 	...props
11 | }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {
12 | 	return (
13 | 		<CollapsiblePrimitive.CollapsibleTrigger
14 | 			data-slot="collapsible-trigger"
15 | 			{...props}
16 | 		/>
17 | 	);
18 | }
19 | 
20 | function CollapsibleContent({
21 | 	...props
22 | }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {
23 | 	return (
24 | 		<CollapsiblePrimitive.CollapsibleContent
25 | 			data-slot="collapsible-content"
26 | 			{...props}
27 | 		/>
28 | 	);
29 | }
30 | 
31 | export { Collapsible, CollapsibleTrigger, CollapsibleContent };
32 | 
```

--------------------------------------------------------------------------------
/.claude/commands/tm/list/list-tasks-with-subtasks.md:
--------------------------------------------------------------------------------

```markdown
 1 | List all tasks including their subtasks in a hierarchical view.
 2 | 
 3 | This command shows all tasks with their nested subtasks, providing a complete project overview.
 4 | 
 5 | ## Execution
 6 | 
 7 | Run the Task Master list command with subtasks flag:
 8 | ```bash
 9 | task-master list --with-subtasks
10 | ```
11 | 
12 | ## Enhanced Display
13 | 
14 | I'll organize the output to show:
15 | - Parent tasks with clear indicators
16 | - Nested subtasks with proper indentation
17 | - Status badges for quick scanning
18 | - Dependencies and blockers highlighted
19 | - Progress indicators for tasks with subtasks
20 | 
21 | ## Smart Filtering
22 | 
23 | Based on the task hierarchy:
24 | - Show completion percentage for parent tasks
25 | - Highlight blocked subtask chains
26 | - Group by functional areas
27 | - Indicate critical path items
28 | 
29 | This gives you a complete tree view of your project structure.
```

--------------------------------------------------------------------------------
/assets/claude/commands/tm/list/list-tasks-with-subtasks.md:
--------------------------------------------------------------------------------

```markdown
 1 | List all tasks including their subtasks in a hierarchical view.
 2 | 
 3 | This command shows all tasks with their nested subtasks, providing a complete project overview.
 4 | 
 5 | ## Execution
 6 | 
 7 | Run the Task Master list command with subtasks flag:
 8 | ```bash
 9 | task-master list --with-subtasks
10 | ```
11 | 
12 | ## Enhanced Display
13 | 
14 | I'll organize the output to show:
15 | - Parent tasks with clear indicators
16 | - Nested subtasks with proper indentation
17 | - Status badges for quick scanning
18 | - Dependencies and blockers highlighted
19 | - Progress indicators for tasks with subtasks
20 | 
21 | ## Smart Filtering
22 | 
23 | Based on the task hierarchy:
24 | - Show completion percentage for parent tasks
25 | - Highlight blocked subtask chains
26 | - Group by functional areas
27 | - Indicate critical path items
28 | 
29 | This gives you a complete tree view of your project structure.
```

--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------

```markdown
 1 | ---
 2 | name: Bug report
 3 | about: Create a report to help us improve
 4 | title: 'bug: '
 5 | labels: bug
 6 | assignees: ''
 7 | ---
 8 | 
 9 | ### Description
10 | 
11 | Detailed description of the problem, including steps to reproduce the issue.
12 | 
13 | ### Steps to Reproduce
14 | 
15 | 1. Step-by-step instructions to reproduce the issue
16 | 2. Include command examples or UI interactions
17 | 
18 | ### Expected Behavior
19 | 
20 | Describe clearly what the expected outcome or behavior should be.
21 | 
22 | ### Actual Behavior
23 | 
24 | Describe clearly what the actual outcome or behavior is.
25 | 
26 | ### Screenshots or Logs
27 | 
28 | Provide screenshots, logs, or error messages if applicable.
29 | 
30 | ### Environment
31 | 
32 | - Task Master version:
33 | - Node.js version:
34 | - Operating system:
35 | - IDE (if applicable):
36 | 
37 | ### Additional Context
38 | 
39 | Any additional information or context that might help diagnose the issue.
40 | 
```

--------------------------------------------------------------------------------
/src/ai-providers/index.js:
--------------------------------------------------------------------------------

```javascript
 1 | /**
 2 |  * src/ai-providers/index.js
 3 |  * Central export point for all AI provider classes
 4 |  */
 5 | 
 6 | export { AnthropicAIProvider } from './anthropic.js';
 7 | export { PerplexityAIProvider } from './perplexity.js';
 8 | export { GoogleAIProvider } from './google.js';
 9 | export { OpenAIProvider } from './openai.js';
10 | export { XAIProvider } from './xai.js';
11 | export { GroqProvider } from './groq.js';
12 | export { OpenRouterAIProvider } from './openrouter.js';
13 | export { OllamaAIProvider } from './ollama.js';
14 | export { BedrockAIProvider } from './bedrock.js';
15 | export { AzureProvider } from './azure.js';
16 | export { VertexAIProvider } from './google-vertex.js';
17 | export { ClaudeCodeProvider } from './claude-code.js';
18 | export { GeminiCliProvider } from './gemini-cli.js';
19 | export { GrokCliProvider } from './grok-cli.js';
20 | 
```

--------------------------------------------------------------------------------
/assets/config.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"models": {
 3 | 		"main": {
 4 | 			"provider": "anthropic",
 5 | 			"modelId": "claude-3-7-sonnet-20250219",
 6 | 			"maxTokens": 100000,
 7 | 			"temperature": 0.2
 8 | 		},
 9 | 		"research": {
10 | 			"provider": "perplexity",
11 | 			"modelId": "sonar-pro",
12 | 			"maxTokens": 8700,
13 | 			"temperature": 0.1
14 | 		},
15 | 		"fallback": {
16 | 			"provider": "anthropic",
17 | 			"modelId": "claude-3-7-sonnet-20250219",
18 | 			"maxTokens": 8192,
19 | 			"temperature": 0.2
20 | 		}
21 | 	},
22 | 	"global": {
23 | 		"logLevel": "info",
24 | 		"debug": false,
25 | 		"defaultSubtasks": 5,
26 | 		"defaultPriority": "medium",
27 | 		"projectName": "Taskmaster",
28 | 		"defaultTag": "master",
29 | 		"ollamaBaseURL": "http://localhost:11434/api",
30 | 		"azureOpenaiBaseURL": "https://your-endpoint.openai.azure.com/",
31 | 		"bedrockBaseURL": "https://bedrock.us-east-1.amazonaws.com",
32 | 		"responseLanguage": "English"
33 | 	}
34 | }
35 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/utils/event-emitter.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * Simple Event Emitter
 3 |  * Lightweight alternative to complex event bus
 4 |  */
 5 | 
 6 | export type EventHandler = (...args: any[]) => void | Promise<void>;
 7 | 
 8 | export class EventEmitter {
 9 | 	private handlers = new Map<string, Set<EventHandler>>();
10 | 
11 | 	on(event: string, handler: EventHandler): () => void {
12 | 		if (!this.handlers.has(event)) {
13 | 			this.handlers.set(event, new Set());
14 | 		}
15 | 		this.handlers.get(event)?.add(handler);
16 | 
17 | 		// Return unsubscribe function
18 | 		return () => this.off(event, handler);
19 | 	}
20 | 
21 | 	off(event: string, handler: EventHandler): void {
22 | 		this.handlers.get(event)?.delete(handler);
23 | 	}
24 | 
25 | 	emit(event: string, ...args: any[]): void {
26 | 		this.handlers.get(event)?.forEach((handler) => {
27 | 			try {
28 | 				handler(...args);
29 | 			} catch (error) {
30 | 				console.error(`Error in event handler for ${event}:`, error);
31 | 			}
32 | 		});
33 | 	}
34 | }
35 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/utils/index.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Utility functions for the tm-core package
 3 |  * This file exports all utility functions and helper classes
 4 |  */
 5 | 
 6 | // Export ID generation utilities
 7 | export {
 8 | 	generateTaskId as generateId, // Alias for backward compatibility
 9 | 	generateTaskId,
10 | 	generateSubtaskId,
11 | 	isValidTaskId,
12 | 	isValidSubtaskId,
13 | 	getParentTaskId
14 | } from './id-generator.js';
15 | 
16 | // Additional utility exports
17 | 
18 | /**
19 |  * Formats a date for task timestamps
20 |  * @deprecated This is a placeholder function that will be properly implemented in later tasks
21 |  */
22 | export function formatDate(date: Date = new Date()): string {
23 | 	return date.toISOString();
24 | }
25 | 
26 | /**
27 |  * Deep clones an object
28 |  * @deprecated This is a placeholder function that will be properly implemented in later tasks
29 |  */
30 | export function deepClone<T>(obj: T): T {
31 | 	return JSON.parse(JSON.stringify(obj));
32 | }
33 | 
```

--------------------------------------------------------------------------------
/bin/task-master.js:
--------------------------------------------------------------------------------

```javascript
 1 | #!/usr/bin/env node
 2 | 
 3 | /**
 4 |  * Task Master
 5 |  * Copyright (c) 2025 Eyal Toledano, Ralph Khreish
 6 |  *
 7 |  * This software is licensed under the MIT License with Commons Clause.
 8 |  * You may use this software for any purpose, including commercial applications,
 9 |  * and modify and redistribute it freely, subject to the following restrictions:
10 |  *
11 |  * 1. You may not sell this software or offer it as a service.
12 |  * 2. The origin of this software must not be misrepresented.
13 |  * 3. Altered source versions must be plainly marked as such.
14 |  *
15 |  * For the full license text, see the LICENSE file in the root directory.
16 |  */
17 | 
18 | /**
19 |  * Claude Task Master CLI
20 |  * Main entry point for globally installed package
21 |  */
22 | 
23 | // Direct imports instead of spawning child processes
24 | import { runCLI } from '../scripts/modules/commands.js';
25 | 
26 | // Simply run the CLI directly
27 | runCLI();
28 | 
```

--------------------------------------------------------------------------------
/src/constants/task-status.js:
--------------------------------------------------------------------------------

```javascript
 1 | /**
 2 |  * @typedef {'pending' | 'done' | 'in-progress' | 'review' | 'deferred' | 'cancelled'} TaskStatus
 3 |  */
 4 | 
 5 | /**
 6 |  * Task status options list
 7 |  * @type {TaskStatus[]}
 8 |  * @description Defines possible task statuses:
 9 |  * - pending: Task waiting to start
10 |  * - done: Task completed
11 |  * - in-progress: Task in progress
12 |  * - review: Task completed and waiting for review
13 |  * - deferred: Task postponed or paused
14 |  * - cancelled: Task cancelled and will not be completed
15 |  */
16 | export const TASK_STATUS_OPTIONS = [
17 | 	'pending',
18 | 	'done',
19 | 	'in-progress',
20 | 	'review',
21 | 	'deferred',
22 | 	'cancelled'
23 | ];
24 | 
25 | /**
26 |  * Check if a given status is a valid task status
27 |  * @param {string} status - The status to check
28 |  * @returns {boolean} True if the status is valid, false otherwise
29 |  */
30 | export function isValidTaskStatus(status) {
31 | 	return TASK_STATUS_OPTIONS.includes(status);
32 | }
33 | 
```

--------------------------------------------------------------------------------
/src/constants/providers.js:
--------------------------------------------------------------------------------

```javascript
 1 | /**
 2 |  * Provider validation constants
 3 |  * Defines which providers should be validated against the supported-models.json file
 4 |  */
 5 | 
 6 | // Providers that have predefined model lists and should be validated
 7 | export const VALIDATED_PROVIDERS = [
 8 | 	'anthropic',
 9 | 	'openai',
10 | 	'google',
11 | 	'perplexity',
12 | 	'xai',
13 | 	'groq',
14 | 	'mistral'
15 | ];
16 | 
17 | // Custom providers object for easy named access
18 | export const CUSTOM_PROVIDERS = {
19 | 	AZURE: 'azure',
20 | 	VERTEX: 'vertex',
21 | 	BEDROCK: 'bedrock',
22 | 	OPENROUTER: 'openrouter',
23 | 	OLLAMA: 'ollama',
24 | 	CLAUDE_CODE: 'claude-code',
25 | 	MCP: 'mcp',
26 | 	GEMINI_CLI: 'gemini-cli',
27 | 	GROK_CLI: 'grok-cli'
28 | };
29 | 
30 | // Custom providers array (for backward compatibility and iteration)
31 | export const CUSTOM_PROVIDERS_ARRAY = Object.values(CUSTOM_PROVIDERS);
32 | 
33 | // All known providers (for reference)
34 | export const ALL_PROVIDERS = [
35 | 	...VALIDATED_PROVIDERS,
36 | 	...CUSTOM_PROVIDERS_ARRAY
37 | ];
38 | 
```

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

```typescript
 1 | /**
 2 |  * @fileoverview Main entry point for @tm/cli package
 3 |  * Exports all public APIs for the CLI presentation layer
 4 |  */
 5 | 
 6 | // Commands
 7 | export { ListTasksCommand } from './commands/list.command.js';
 8 | export { ShowCommand } from './commands/show.command.js';
 9 | export { AuthCommand } from './commands/auth.command.js';
10 | export { ContextCommand } from './commands/context.command.js';
11 | export { StartCommand } from './commands/start.command.js';
12 | export { SetStatusCommand } from './commands/set-status.command.js';
13 | 
14 | // UI utilities (for other commands to use)
15 | export * as ui from './utils/ui.js';
16 | 
17 | // Auto-update utilities
18 | export {
19 | 	checkForUpdate,
20 | 	performAutoUpdate,
21 | 	displayUpgradeNotification,
22 | 	compareVersions
23 | } from './utils/auto-update.js';
24 | 
25 | // Re-export commonly used types from tm-core
26 | export type {
27 | 	Task,
28 | 	TaskStatus,
29 | 	TaskPriority,
30 | 	TaskMasterCore
31 | } from '@tm/core';
32 | 
```

--------------------------------------------------------------------------------
/.claude/commands/tm/init/init-project-quick.md:
--------------------------------------------------------------------------------

```markdown
 1 | Quick initialization with auto-confirmation.
 2 | 
 3 | Arguments: $ARGUMENTS
 4 | 
 5 | Initialize a Task Master project without prompts, accepting all defaults.
 6 | 
 7 | ## Quick Setup
 8 | 
 9 | ```bash
10 | task-master init -y
11 | ```
12 | 
13 | ## What It Does
14 | 
15 | 1. Creates `.taskmaster/` directory structure
16 | 2. Initializes empty `tasks.json`
17 | 3. Sets up default configuration
18 | 4. Uses directory name as project name
19 | 5. Skips all confirmation prompts
20 | 
21 | ## Smart Defaults
22 | 
23 | - Project name: Current directory name
24 | - Description: "Task Master Project"
25 | - Model config: Existing environment vars
26 | - Task structure: Standard format
27 | 
28 | ## Next Steps
29 | 
30 | After quick init:
31 | 1. Configure AI models if needed:
32 |    ```
33 |    /project:tm/models/setup
34 |    ```
35 | 
36 | 2. Parse PRD if available:
37 |    ```
38 |    /project:tm/parse-prd <file>
39 |    ```
40 | 
41 | 3. Or create first task:
42 |    ```
43 |    /project:tm/add-task create initial setup
44 |    ```
45 | 
46 | Perfect for rapid project setup!
```

--------------------------------------------------------------------------------
/assets/claude/commands/tm/init/init-project-quick.md:
--------------------------------------------------------------------------------

```markdown
 1 | Quick initialization with auto-confirmation.
 2 | 
 3 | Arguments: $ARGUMENTS
 4 | 
 5 | Initialize a Task Master project without prompts, accepting all defaults.
 6 | 
 7 | ## Quick Setup
 8 | 
 9 | ```bash
10 | task-master init -y
11 | ```
12 | 
13 | ## What It Does
14 | 
15 | 1. Creates `.taskmaster/` directory structure
16 | 2. Initializes empty `tasks.json`
17 | 3. Sets up default configuration
18 | 4. Uses directory name as project name
19 | 5. Skips all confirmation prompts
20 | 
21 | ## Smart Defaults
22 | 
23 | - Project name: Current directory name
24 | - Description: "Task Master Project"
25 | - Model config: Existing environment vars
26 | - Task structure: Standard format
27 | 
28 | ## Next Steps
29 | 
30 | After quick init:
31 | 1. Configure AI models if needed:
32 |    ```
33 |    /project:tm/models/setup
34 |    ```
35 | 
36 | 2. Parse PRD if available:
37 |    ```
38 |    /project:tm/parse-prd <file>
39 |    ```
40 | 
41 | 3. Or create first task:
42 |    ```
43 |    /project:tm/add-task create initial setup
44 |    ```
45 | 
46 | Perfect for rapid project setup!
```

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

```typescript
 1 | /**
 2 |  * Application constants
 3 |  */
 4 | 
 5 | import type { Status } from '@/components/ui/shadcn-io/kanban';
 6 | 
 7 | export const kanbanStatuses = [
 8 | 	{
 9 | 		id: 'pending',
10 | 		title: 'Pending',
11 | 		color: 'yellow',
12 | 		className: 'text-yellow-600 border-yellow-600/20'
13 | 	},
14 | 	{
15 | 		id: 'in-progress',
16 | 		title: 'In Progress',
17 | 		color: 'blue',
18 | 		className: 'text-blue-600 border-blue-600/20'
19 | 	},
20 | 	{
21 | 		id: 'review',
22 | 		title: 'Review',
23 | 		color: 'purple',
24 | 		className: 'text-purple-600 border-purple-600/20'
25 | 	},
26 | 	{
27 | 		id: 'done',
28 | 		title: 'Done',
29 | 		color: 'green',
30 | 		className: 'text-green-600 border-green-600/20'
31 | 	},
32 | 	{
33 | 		id: 'deferred',
34 | 		title: 'Deferred',
35 | 		color: 'gray',
36 | 		className: 'text-gray-600 border-gray-600/20'
37 | 	}
38 | ] as const;
39 | 
40 | export const CACHE_DURATION = 30000; // 30 seconds
41 | export const REQUEST_TIMEOUT = 30000; // 30 seconds
42 | export const HEADER_HEIGHT = 73; // Header with padding and border
43 | 
```

--------------------------------------------------------------------------------
/.taskmaster/tasks/task_002_tm-start.txt:
--------------------------------------------------------------------------------

```
 1 | # Task ID: 2
 2 | # Title: Register start command in CLI
 3 | # Status: pending
 4 | # Dependencies: 7
 5 | # Priority: high
 6 | # Description: Register the start command in the CLI application
 7 | # Details:
 8 | Update the CLI application to register the new start command. This involves importing the StartCommand class and adding it to the commands array in the CLI initialization.
 9 | 
10 | In `apps/cli/src/index.ts` or the appropriate file where commands are registered:
11 | 
12 | ```typescript
13 | import { StartCommand } from './commands/start.command';
14 | 
15 | // Add StartCommand to the commands array
16 | const commands = [
17 |   // ... existing commands
18 |   new StartCommand(),
19 | ];
20 | 
21 | // Register all commands
22 | commands.forEach(command => command.register(program));
23 | ```
24 | 
25 | # Test Strategy:
26 | Verify the command is correctly registered by running the CLI with --help and checking that the start command appears in the list of available commands.
27 | 
```

--------------------------------------------------------------------------------
/apps/cli/src/ui/components/suggested-steps.component.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Suggested next steps component
 3 |  * Displays helpful command suggestions at the end of the list
 4 |  */
 5 | 
 6 | import chalk from 'chalk';
 7 | import boxen from 'boxen';
 8 | 
 9 | /**
10 |  * Display suggested next steps section
11 |  */
12 | export function displaySuggestedNextSteps(): void {
13 | 	const steps = [
14 | 		`${chalk.cyan('1.')} Run ${chalk.yellow('task-master next')} to see what to work on next`,
15 | 		`${chalk.cyan('2.')} Run ${chalk.yellow('task-master expand --id=<id>')} to break down a task into subtasks`,
16 | 		`${chalk.cyan('3.')} Run ${chalk.yellow('task-master set-status --id=<id> --status=done')} to mark a task as complete`
17 | 	];
18 | 
19 | 	console.log(
20 | 		boxen(
21 | 			chalk.white.bold('Suggested Next Steps:') + '\n\n' + steps.join('\n'),
22 | 			{
23 | 				padding: 1,
24 | 				margin: { top: 0, bottom: 1 },
25 | 				borderStyle: 'round',
26 | 				borderColor: 'gray',
27 | 				width: process.stdout.columns * 0.97
28 | 			}
29 | 		)
30 | 	);
31 | }
32 | 
```

--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------

```json
 1 | {
 2 | 	"compilerOptions": {
 3 | 		"target": "ES2022",
 4 | 		"module": "ESNext",
 5 | 		"moduleResolution": "bundler",
 6 | 		"lib": ["ES2022"],
 7 | 		"types": ["node"],
 8 | 		"allowJs": true,
 9 | 		"resolveJsonModule": true,
10 | 		"esModuleInterop": true,
11 | 		"forceConsistentCasingInFileNames": true,
12 | 		"strict": true,
13 | 		"skipLibCheck": true,
14 | 		"noEmit": true,
15 | 		"baseUrl": ".",
16 | 		"paths": {
17 | 			"@tm/core": ["./packages/tm-core/src/index.ts"],
18 | 			"@tm/core/*": ["./packages/tm-core/src/*"],
19 | 			"@tm/cli": ["./apps/cli/src/index.ts"],
20 | 			"@tm/cli/*": ["./apps/cli/src/*"],
21 | 			"@tm/build-config": ["./packages/build-config/src/index.ts"],
22 | 			"@tm/build-config/*": ["./packages/build-config/src/*"]
23 | 		}
24 | 	},
25 | 	"tsx": {
26 | 		"tsconfig": {
27 | 			"allowImportingTsExtensions": false
28 | 		}
29 | 	},
30 | 	"include": [
31 | 		"bin/**/*",
32 | 		"scripts/**/*",
33 | 		"packages/*/src/**/*",
34 | 		"apps/*/src/**/*"
35 | 	],
36 | 	"exclude": ["node_modules", "dist", "**/dist"]
37 | }
38 | 
```

--------------------------------------------------------------------------------
/.github/workflows/auto-close-duplicates.yml:
--------------------------------------------------------------------------------

```yaml
 1 | name: Auto-close duplicate issues
 2 | # description: Auto-closes issues that are duplicates of existing issues
 3 | 
 4 | on:
 5 |   schedule:
 6 |     - cron: "0 9 * * *"  # Runs daily at 9 AM UTC
 7 |   workflow_dispatch:
 8 | 
 9 | jobs:
10 |   auto-close-duplicates:
11 |     runs-on: ubuntu-latest
12 |     timeout-minutes: 10
13 |     permissions:
14 |       contents: read
15 |       issues: write  # Need write permission to close issues and add comments
16 | 
17 |     steps:
18 |       - name: Checkout repository
19 |         uses: actions/checkout@v4
20 | 
21 |       - name: Setup Node.js
22 |         uses: actions/setup-node@v4
23 |         with:
24 |           node-version: 20
25 | 
26 |       - name: Auto-close duplicate issues
27 |         run: node .github/scripts/auto-close-duplicates.mjs
28 |         env:
29 |           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30 |           GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
31 |           GITHUB_REPOSITORY_NAME: ${{ github.event.repository.name }}
32 | 
```

--------------------------------------------------------------------------------
/apps/cli/CHANGELOG.md:
--------------------------------------------------------------------------------

```markdown
 1 | # @tm/cli
 2 | 
 3 | ## null
 4 | 
 5 | ### Patch Changes
 6 | 
 7 | - Updated dependencies []:
 8 |   - @tm/core@null
 9 | 
10 | ## 0.27.0
11 | 
12 | ### Patch Changes
13 | 
14 | - Updated dependencies []:
15 |   - @tm/[email protected]
16 | 
17 | ## 0.27.0-rc.0
18 | 
19 | ### Minor Changes
20 | 
21 | - [#1213](https://github.com/eyaltoledano/claude-task-master/pull/1213) [`137ef36`](https://github.com/eyaltoledano/claude-task-master/commit/137ef362789a9cdfdb1925e35e0438c1fa6c69ee) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - testing this stuff out to see how the release candidate works with monorepo
22 | 
23 | ## 1.1.0-rc.0
24 | 
25 | ### Minor Changes
26 | 
27 | - [#1213](https://github.com/eyaltoledano/claude-task-master/pull/1213) [`cd90b4d`](https://github.com/eyaltoledano/claude-task-master/commit/cd90b4d65fc2f04bdad9fb73aba320b58a124240) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - testing this stuff out to see how the release candidate works with monorepo
28 | 
```

--------------------------------------------------------------------------------
/apps/extension/src/webview/providers/QueryProvider.tsx:
--------------------------------------------------------------------------------

```typescript
 1 | import React from 'react';
 2 | import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 3 | 
 4 | // Create a stable query client
 5 | const queryClient = new QueryClient({
 6 | 	defaultOptions: {
 7 | 		queries: {
 8 | 			// Don't refetch on window focus by default
 9 | 			refetchOnWindowFocus: false,
10 | 			// Keep data fresh for 30 seconds
11 | 			staleTime: 30 * 1000,
12 | 			// Cache data for 5 minutes
13 | 			gcTime: 5 * 60 * 1000,
14 | 			// Retry failed requests 3 times
15 | 			retry: 3,
16 | 			// Retry delay exponentially backs off
17 | 			retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000)
18 | 		},
19 | 		mutations: {
20 | 			// Don't retry mutations by default
21 | 			retry: false
22 | 		}
23 | 	}
24 | });
25 | 
26 | interface QueryProviderProps {
27 | 	children: React.ReactNode;
28 | }
29 | 
30 | export const QueryProvider: React.FC<QueryProviderProps> = ({ children }) => {
31 | 	return (
32 | 		<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
33 | 	);
34 | };
35 | 
```

--------------------------------------------------------------------------------
/packages/tm-core/src/storage/file-storage/path-resolver.ts:
--------------------------------------------------------------------------------

```typescript
 1 | /**
 2 |  * @fileoverview Path resolution utilities for single tasks.json file
 3 |  */
 4 | 
 5 | import path from 'node:path';
 6 | 
 7 | /**
 8 |  * Handles path resolution for the single tasks.json file storage
 9 |  */
10 | export class PathResolver {
11 | 	private readonly basePath: string;
12 | 	private readonly tasksDir: string;
13 | 	private readonly tasksFilePath: string;
14 | 
15 | 	constructor(projectPath: string) {
16 | 		this.basePath = path.join(projectPath, '.taskmaster');
17 | 		this.tasksDir = path.join(this.basePath, 'tasks');
18 | 		this.tasksFilePath = path.join(this.tasksDir, 'tasks.json');
19 | 	}
20 | 
21 | 	/**
22 | 	 * Get the base storage directory path
23 | 	 */
24 | 	getBasePath(): string {
25 | 		return this.basePath;
26 | 	}
27 | 
28 | 	/**
29 | 	 * Get the tasks directory path
30 | 	 */
31 | 	getTasksDir(): string {
32 | 		return this.tasksDir;
33 | 	}
34 | 
35 | 	/**
36 | 	 * Get the path to the single tasks.json file
37 | 	 * All tags are stored in this one file
38 | 	 */
39 | 	getTasksPath(): string {
40 | 		return this.tasksFilePath;
41 | 	}
42 | }
43 | 
```
Page 2/52FirstPrevNextLast