Compare commits
54 Commits
extension@
...
docs/auto-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a41b5ef37 | ||
|
|
20004a39ea | ||
|
|
f1393f47b1 | ||
|
|
738ec51c04 | ||
|
|
c7418c4594 | ||
|
|
0747f1c772 | ||
|
|
ffe24a2e35 | ||
|
|
604b94baa9 | ||
|
|
2ea4bb6a81 | ||
|
|
3e96387715 | ||
|
|
100c3dc47d | ||
|
|
986ac117ae | ||
|
|
18aa416035 | ||
|
|
3b3dbabed1 | ||
|
|
af53525cbc | ||
|
|
0079b7defd | ||
|
|
0b2c6967c4 | ||
|
|
c0682ac795 | ||
|
|
01a7faea8f | ||
|
|
b7f32eac5a | ||
|
|
044a7bfc98 | ||
|
|
814265cd33 | ||
|
|
9b7b2ca7b2 | ||
|
|
949f091179 | ||
|
|
51a351760c | ||
|
|
732b2c61ad | ||
|
|
32c2b03c23 | ||
|
|
3bfd999d81 | ||
|
|
9fa79eb026 | ||
|
|
875134247a | ||
|
|
4c2801d5eb | ||
|
|
c911608f60 | ||
|
|
8f1497407f | ||
|
|
10b64ec6f5 | ||
|
|
1a1879483b | ||
|
|
d691cbb7ae | ||
|
|
1b7c9637a5 | ||
|
|
9ff5f158d5 | ||
|
|
b2ff06e8c5 | ||
|
|
c2fc61ddb3 | ||
|
|
aaacc3dae3 | ||
|
|
46cd5dc186 | ||
|
|
49a31be416 | ||
|
|
2b69936ee7 | ||
|
|
6438f6c7c8 | ||
|
|
6bbd777552 | ||
|
|
100482722f | ||
|
|
7ff882bf23 | ||
|
|
6ab768f6ec | ||
|
|
b5fe723f8e | ||
|
|
f487736670 | ||
|
|
d67b81d25d | ||
|
|
66c05053c0 | ||
|
|
d7ab4609aa |
5
.changeset/chore-fix-docs.md
Normal file
5
.changeset/chore-fix-docs.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Improve `analyze-complexity` cli docs and `--research` flag documentation
|
||||||
@@ -11,9 +11,6 @@
|
|||||||
"access": "public",
|
"access": "public",
|
||||||
"baseBranch": "main",
|
"baseBranch": "main",
|
||||||
"ignore": [
|
"ignore": [
|
||||||
"docs",
|
"docs"
|
||||||
"@tm/cli",
|
|
||||||
"@tm/core",
|
|
||||||
"@tm/build-config"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
7
.changeset/cursor-slash-commands.md
Normal file
7
.changeset/cursor-slash-commands.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Add Cursor IDE custom slash command support
|
||||||
|
|
||||||
|
Expose Task Master commands as Cursor slash commands by copying assets/claude/commands to .cursor/commands on profile add and cleaning up on remove.
|
||||||
5
.changeset/curvy-weeks-flow.md
Normal file
5
.changeset/curvy-weeks-flow.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Change parent task back to "pending" when all subtasks are in "pending" state
|
||||||
5
.changeset/flat-cities-say.md
Normal file
5
.changeset/flat-cities-say.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Added api keys page on docs website: docs.task-master.dev/getting-started/api-keys
|
||||||
10
.changeset/forty-tables-invite.md
Normal file
10
.changeset/forty-tables-invite.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Move to AI SDK v5:
|
||||||
|
|
||||||
|
- Works better with claude-code and gemini-cli as ai providers
|
||||||
|
- Improved openai model family compatibility
|
||||||
|
- Migrate ollama provider to v2
|
||||||
|
- Closes #1223, #1013, #1161, #1174
|
||||||
30
.changeset/gentle-cats-dance.md
Normal file
30
.changeset/gentle-cats-dance.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Migrate AI services to use generateObject for structured data generation
|
||||||
|
|
||||||
|
This update migrates all AI service calls from generateText to generateObject, ensuring more reliable and structured responses across all commands.
|
||||||
|
|
||||||
|
### Key Changes:
|
||||||
|
|
||||||
|
- **Unified AI Service**: Replaced separate generateText implementations with a single generateObjectService that handles structured data generation
|
||||||
|
- **JSON Mode Support**: Added proper JSON mode configuration for providers that support it (OpenAI, Anthropic, Google, Groq)
|
||||||
|
- **Schema Validation**: Integrated Zod schemas for all AI-generated content with automatic validation
|
||||||
|
- **Provider Compatibility**: Maintained compatibility with all existing providers while leveraging their native structured output capabilities
|
||||||
|
- **Improved Reliability**: Structured output generation reduces parsing errors and ensures consistent data formats
|
||||||
|
|
||||||
|
### Technical Improvements:
|
||||||
|
|
||||||
|
- Centralized provider configuration in `ai-providers-unified.js`
|
||||||
|
- Added `generateObject` support detection for each provider
|
||||||
|
- Implemented proper error handling for schema validation failures
|
||||||
|
- Maintained backward compatibility with existing prompt structures
|
||||||
|
|
||||||
|
### Bug Fixes:
|
||||||
|
|
||||||
|
- Fixed subtask ID numbering issue where AI was generating inconsistent IDs (101-105, 601-603) instead of sequential numbering (1, 2, 3...)
|
||||||
|
- Enhanced prompt instructions to enforce proper ID generation patterns
|
||||||
|
- Ensured subtasks display correctly as X.1, X.2, X.3 format
|
||||||
|
|
||||||
|
This migration improves the reliability and consistency of AI-generated content throughout the Task Master application.
|
||||||
13
.changeset/mcp-timeout-configuration.md
Normal file
13
.changeset/mcp-timeout-configuration.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Enhanced Roo Code profile with MCP timeout configuration for improved reliability during long-running AI operations. The Roo profile now automatically configures a 300-second timeout for MCP server operations, preventing timeouts during complex tasks like `parse-prd`, `expand-all`, `analyze-complexity`, and `research` operations. This change also replaces static MCP configuration files with programmatic generation for better maintainability.
|
||||||
|
|
||||||
|
**What's New:**
|
||||||
|
- 300-second timeout for MCP operations (up from default 60 seconds)
|
||||||
|
- Programmatic MCP configuration generation (replaces static asset files)
|
||||||
|
- Enhanced reliability for AI-powered operations
|
||||||
|
- Consistent with other AI coding assistant profiles
|
||||||
|
|
||||||
|
**Migration:** No user action required - existing Roo Code installations will automatically receive the enhanced MCP configuration on next initialization.
|
||||||
5
.changeset/petite-ideas-grab.md
Normal file
5
.changeset/petite-ideas-grab.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix Claude Code settings validation for pathToClaudeCodeExecutable
|
||||||
5
.changeset/silly-pandas-find.md
Normal file
5
.changeset/silly-pandas-find.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix sonar deep research model failing, should be called `sonar-deep-research`
|
||||||
5
.changeset/sweet-maps-rule.md
Normal file
5
.changeset/sweet-maps-rule.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Upgrade grok-cli ai provider to ai sdk v5
|
||||||
8
.changeset/whole-pigs-say.md
Normal file
8
.changeset/whole-pigs-say.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix complexity score not showing for `task-master show` and `task-master list`
|
||||||
|
|
||||||
|
- Added complexity score on "next task" when running `task-master list`
|
||||||
|
- Added colors to complexity to reflect complexity (easy, medium, hard)
|
||||||
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
@@ -6,9 +6,6 @@ on:
|
|||||||
- main
|
- main
|
||||||
- next
|
- next
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- next
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
|
|||||||
5
.github/workflows/extension-ci.yml
vendored
5
.github/workflows/extension-ci.yml
vendored
@@ -41,8 +41,7 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- name: Install Extension Dependencies
|
- name: Install Monorepo Dependencies
|
||||||
working-directory: apps/extension
|
|
||||||
run: npm ci
|
run: npm ci
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
|
|
||||||
@@ -68,7 +67,6 @@ jobs:
|
|||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- name: Install if cache miss
|
- name: Install if cache miss
|
||||||
working-directory: apps/extension
|
|
||||||
run: npm ci
|
run: npm ci
|
||||||
timeout-minutes: 3
|
timeout-minutes: 3
|
||||||
|
|
||||||
@@ -100,7 +98,6 @@ jobs:
|
|||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- name: Install if cache miss
|
- name: Install if cache miss
|
||||||
working-directory: apps/extension
|
|
||||||
run: npm ci
|
run: npm ci
|
||||||
timeout-minutes: 3
|
timeout-minutes: 3
|
||||||
|
|
||||||
|
|||||||
3
.github/workflows/extension-release.yml
vendored
3
.github/workflows/extension-release.yml
vendored
@@ -31,8 +31,7 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- name: Install Extension Dependencies
|
- name: Install Monorepo Dependencies
|
||||||
working-directory: apps/extension
|
|
||||||
run: npm ci
|
run: npm ci
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
|
|
||||||
|
|||||||
6
.manypkg.json
Normal file
6
.manypkg.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://unpkg.com/@manypkg/get-packages@1.1.3/schema.json",
|
||||||
|
"defaultBranch": "main",
|
||||||
|
"ignoredRules": ["ROOT_HAS_DEPENDENCIES", "INTERNAL_MISMATCH"],
|
||||||
|
"ignoredPackages": ["@tm/core", "@tm/cli", "@tm/build-config"]
|
||||||
|
}
|
||||||
36
CHANGELOG.md
36
CHANGELOG.md
@@ -1,5 +1,41 @@
|
|||||||
# task-master-ai
|
# task-master-ai
|
||||||
|
|
||||||
|
## 0.27.3
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1254](https://github.com/eyaltoledano/claude-task-master/pull/1254) [`af53525`](https://github.com/eyaltoledano/claude-task-master/commit/af53525cbc660a595b67d4bb90d906911c71f45d) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fixed issue where `tm show` command could not find subtasks using dotted notation IDs (e.g., '8.1').
|
||||||
|
- The command now properly searches within parent task subtasks and returns the correct subtask information.
|
||||||
|
|
||||||
|
## 0.27.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1248](https://github.com/eyaltoledano/claude-task-master/pull/1248) [`044a7bf`](https://github.com/eyaltoledano/claude-task-master/commit/044a7bfc98049298177bc655cf341d7a8b6a0011) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix set-status for subtasks:
|
||||||
|
- Parent tasks are now set as `done` when subtasks are all `done`
|
||||||
|
- Parent tasks are now set as `in-progress` when at least one subtask is `in-progress` or `done`
|
||||||
|
|
||||||
|
## 0.27.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1232](https://github.com/eyaltoledano/claude-task-master/pull/1232) [`f487736`](https://github.com/eyaltoledano/claude-task-master/commit/f487736670ef8c484059f676293777eabb249c9e) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix module not found for new 0.27.0 release
|
||||||
|
|
||||||
|
- [#1233](https://github.com/eyaltoledano/claude-task-master/pull/1233) [`c911608`](https://github.com/eyaltoledano/claude-task-master/commit/c911608f60454253f4e024b57ca84e5a5a53f65c) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix Zed MCP configuration by adding required "source" property
|
||||||
|
- Add "source": "custom" property to task-master-ai server in Zed settings.json
|
||||||
|
|
||||||
|
## 0.27.1-rc.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1233](https://github.com/eyaltoledano/claude-task-master/pull/1233) [`1a18794`](https://github.com/eyaltoledano/claude-task-master/commit/1a1879483b86c118a4e46c02cbf4acebfcf6bcf9) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - One last testing final final
|
||||||
|
|
||||||
|
## 0.27.1-rc.0
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1232](https://github.com/eyaltoledano/claude-task-master/pull/1232) [`f487736`](https://github.com/eyaltoledano/claude-task-master/commit/f487736670ef8c484059f676293777eabb249c9e) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix module not found for new 0.27.0 release
|
||||||
|
|
||||||
## 0.27.0
|
## 0.27.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|||||||
16
README.md
16
README.md
@@ -60,6 +60,19 @@ The following documentation is also available in the `docs` directory:
|
|||||||
|
|
||||||
> **Note:** After clicking the link, you'll still need to add your API keys to the configuration. The link installs the MCP server with placeholder keys that you'll need to replace with your actual API keys.
|
> **Note:** After clicking the link, you'll still need to add your API keys to the configuration. The link installs the MCP server with placeholder keys that you'll need to replace with your actual API keys.
|
||||||
|
|
||||||
|
#### Claude Code Quick Install
|
||||||
|
|
||||||
|
For Claude Code users:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude mcp add taskmaster-ai -- npx -y task-master-ai
|
||||||
|
```
|
||||||
|
|
||||||
|
Don't forget to add your API keys to the configuration:
|
||||||
|
- in the root .env of your Project
|
||||||
|
- in the "env" section of your mcp config for taskmaster-ai
|
||||||
|
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
Taskmaster utilizes AI across several commands, and those require a separate API key. You can use a variety of models from different AI providers provided you add your API keys. For example, if you want to use Claude 3.7, you'll need an Anthropic API key.
|
Taskmaster utilizes AI across several commands, and those require a separate API key. You can use a variety of models from different AI providers provided you add your API keys. For example, if you want to use Claude 3.7, you'll need an Anthropic API key.
|
||||||
@@ -92,10 +105,11 @@ MCP (Model Control Protocol) lets you run Task Master directly from your editor.
|
|||||||
| | Project | `<project_folder>/.cursor/mcp.json` | `<project_folder>\.cursor\mcp.json` | `mcpServers` |
|
| | Project | `<project_folder>/.cursor/mcp.json` | `<project_folder>\.cursor\mcp.json` | `mcpServers` |
|
||||||
| **Windsurf** | Global | `~/.codeium/windsurf/mcp_config.json` | `%USERPROFILE%\.codeium\windsurf\mcp_config.json` | `mcpServers` |
|
| **Windsurf** | Global | `~/.codeium/windsurf/mcp_config.json` | `%USERPROFILE%\.codeium\windsurf\mcp_config.json` | `mcpServers` |
|
||||||
| **VS Code** | Project | `<project_folder>/.vscode/mcp.json` | `<project_folder>\.vscode\mcp.json` | `servers` |
|
| **VS Code** | Project | `<project_folder>/.vscode/mcp.json` | `<project_folder>\.vscode\mcp.json` | `servers` |
|
||||||
|
| **Q CLI** | Global | `~/.aws/amazonq/mcp.json` | | `mcpServers` |
|
||||||
|
|
||||||
##### Manual Configuration
|
##### Manual Configuration
|
||||||
|
|
||||||
###### Cursor & Windsurf (`mcpServers`)
|
###### Cursor & Windsurf & Q Developer CLI (`mcpServers`)
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @tm/cli
|
# @tm/cli
|
||||||
|
|
||||||
|
## null
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies []:
|
||||||
|
- @tm/core@null
|
||||||
|
|
||||||
## 0.27.0
|
## 0.27.0
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "@tm/cli",
|
"name": "@tm/cli",
|
||||||
"version": "0.27.0",
|
|
||||||
"description": "Task Master CLI - Command line interface for task management",
|
"description": "Task Master CLI - Command line interface for task management",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"private": true,
|
"private": true,
|
||||||
@@ -9,10 +8,7 @@
|
|||||||
"exports": {
|
"exports": {
|
||||||
".": "./src/index.ts"
|
".": "./src/index.ts"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": ["dist", "README.md"],
|
||||||
"dist",
|
|
||||||
"README.md"
|
|
||||||
],
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"typecheck": "tsc --noEmit",
|
"typecheck": "tsc --noEmit",
|
||||||
"lint": "biome check src",
|
"lint": "biome check src",
|
||||||
@@ -27,37 +23,30 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tm/core": "*",
|
"@tm/core": "*",
|
||||||
"boxen": "^7.1.1",
|
"boxen": "^8.0.1",
|
||||||
"chalk": "5.6.2",
|
"chalk": "5.6.2",
|
||||||
"cli-table3": "^0.6.5",
|
"cli-table3": "^0.6.5",
|
||||||
"commander": "^12.1.0",
|
"commander": "^12.1.0",
|
||||||
"inquirer": "^9.2.10",
|
"inquirer": "^12.5.0",
|
||||||
"ora": "^8.1.0"
|
"ora": "^8.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^1.9.4",
|
"@biomejs/biome": "^1.9.4",
|
||||||
"@types/inquirer": "^9.0.3",
|
"@types/inquirer": "^9.0.3",
|
||||||
"@types/node": "^22.10.5",
|
"@types/node": "^22.10.5",
|
||||||
"tsx": "^4.20.4",
|
"tsx": "^4.20.4",
|
||||||
"typescript": "^5.7.3",
|
"typescript": "^5.9.2",
|
||||||
"vitest": "^2.1.8"
|
"vitest": "^2.1.8"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0.0"
|
"node": ">=18.0.0"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": ["task-master", "cli", "task-management", "productivity"],
|
||||||
"task-master",
|
|
||||||
"cli",
|
|
||||||
"task-management",
|
|
||||||
"productivity"
|
|
||||||
],
|
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"typesVersions": {
|
"typesVersions": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": ["src/*"]
|
||||||
"src/*"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -281,9 +281,14 @@ export class ListTasksCommand extends Command {
|
|||||||
const priorityBreakdown = getPriorityBreakdown(tasks);
|
const priorityBreakdown = getPriorityBreakdown(tasks);
|
||||||
|
|
||||||
// Find next task following the same logic as findNextTask
|
// Find next task following the same logic as findNextTask
|
||||||
const nextTask = this.findNextTask(tasks);
|
const nextTaskInfo = this.findNextTask(tasks);
|
||||||
|
|
||||||
// Display dashboard boxes
|
// Get the full task object with complexity data already included
|
||||||
|
const nextTask = nextTaskInfo
|
||||||
|
? tasks.find((t) => String(t.id) === String(nextTaskInfo.id))
|
||||||
|
: undefined;
|
||||||
|
|
||||||
|
// Display dashboard boxes (nextTask already has complexity from storage enrichment)
|
||||||
displayDashboards(
|
displayDashboards(
|
||||||
taskStats,
|
taskStats,
|
||||||
subtaskStats,
|
subtaskStats,
|
||||||
@@ -303,14 +308,16 @@ export class ListTasksCommand extends Command {
|
|||||||
|
|
||||||
// Display recommended next task section immediately after table
|
// Display recommended next task section immediately after table
|
||||||
if (nextTask) {
|
if (nextTask) {
|
||||||
// Find the full task object to get description
|
const description = getTaskDescription(nextTask);
|
||||||
const fullTask = tasks.find((t) => String(t.id) === String(nextTask.id));
|
|
||||||
const description = fullTask ? getTaskDescription(fullTask) : undefined;
|
|
||||||
|
|
||||||
displayRecommendedNextTask({
|
displayRecommendedNextTask({
|
||||||
...nextTask,
|
id: nextTask.id,
|
||||||
status: 'pending', // Next task is typically pending
|
title: nextTask.title,
|
||||||
description
|
priority: nextTask.priority,
|
||||||
|
status: nextTask.status,
|
||||||
|
dependencies: nextTask.dependencies,
|
||||||
|
description,
|
||||||
|
complexity: nextTask.complexity as number | undefined
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
displayRecommendedNextTask(undefined);
|
displayRecommendedNextTask(undefined);
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ export * as ui from './utils/ui.js';
|
|||||||
export {
|
export {
|
||||||
checkForUpdate,
|
checkForUpdate,
|
||||||
performAutoUpdate,
|
performAutoUpdate,
|
||||||
displayUpgradeNotification
|
displayUpgradeNotification,
|
||||||
|
compareVersions
|
||||||
} from './utils/auto-update.js';
|
} from './utils/auto-update.js';
|
||||||
|
|
||||||
// Re-export commonly used types from tm-core
|
// Re-export commonly used types from tm-core
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import boxen from 'boxen';
|
import boxen from 'boxen';
|
||||||
import type { Task, TaskPriority } from '@tm/core/types';
|
import type { Task, TaskPriority } from '@tm/core/types';
|
||||||
|
import { getComplexityWithColor } from '../../utils/ui.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Statistics for task collection
|
* Statistics for task collection
|
||||||
@@ -479,7 +480,7 @@ export function displayDependencyDashboard(
|
|||||||
? chalk.cyan(nextTask.dependencies.join(', '))
|
? chalk.cyan(nextTask.dependencies.join(', '))
|
||||||
: chalk.gray('None')
|
: chalk.gray('None')
|
||||||
}\n` +
|
}\n` +
|
||||||
`Complexity: ${nextTask?.complexity || chalk.gray('N/A')}`;
|
`Complexity: ${nextTask?.complexity !== undefined ? getComplexityWithColor(nextTask.complexity) : chalk.gray('N/A')}`;
|
||||||
|
|
||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import boxen from 'boxen';
|
import boxen from 'boxen';
|
||||||
import type { Task } from '@tm/core/types';
|
import type { Task } from '@tm/core/types';
|
||||||
|
import { getComplexityWithColor } from '../../utils/ui.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Next task display options
|
* Next task display options
|
||||||
@@ -17,6 +18,7 @@ export interface NextTaskDisplayOptions {
|
|||||||
status?: string;
|
status?: string;
|
||||||
dependencies?: (string | number)[];
|
dependencies?: (string | number)[];
|
||||||
description?: string;
|
description?: string;
|
||||||
|
complexity?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -82,6 +84,11 @@ export function displayRecommendedNextTask(
|
|||||||
: chalk.cyan(task.dependencies.join(', '));
|
: chalk.cyan(task.dependencies.join(', '));
|
||||||
content.push(`Dependencies: ${depsDisplay}`);
|
content.push(`Dependencies: ${depsDisplay}`);
|
||||||
|
|
||||||
|
// Complexity with color and label
|
||||||
|
if (typeof task.complexity === 'number') {
|
||||||
|
content.push(`Complexity: ${getComplexityWithColor(task.complexity)}`);
|
||||||
|
}
|
||||||
|
|
||||||
// Description if available
|
// Description if available
|
||||||
if (task.description) {
|
if (task.description) {
|
||||||
content.push('');
|
content.push('');
|
||||||
|
|||||||
@@ -9,7 +9,11 @@ import Table from 'cli-table3';
|
|||||||
import { marked, MarkedExtension } from 'marked';
|
import { marked, MarkedExtension } from 'marked';
|
||||||
import { markedTerminal } from 'marked-terminal';
|
import { markedTerminal } from 'marked-terminal';
|
||||||
import type { Task } from '@tm/core/types';
|
import type { Task } from '@tm/core/types';
|
||||||
import { getStatusWithColor, getPriorityWithColor } from '../../utils/ui.js';
|
import {
|
||||||
|
getStatusWithColor,
|
||||||
|
getPriorityWithColor,
|
||||||
|
getComplexityWithColor
|
||||||
|
} from '../../utils/ui.js';
|
||||||
|
|
||||||
// Configure marked to use terminal renderer with subtle colors
|
// Configure marked to use terminal renderer with subtle colors
|
||||||
marked.use(
|
marked.use(
|
||||||
@@ -108,7 +112,9 @@ export function displayTaskProperties(task: Task): void {
|
|||||||
getStatusWithColor(task.status),
|
getStatusWithColor(task.status),
|
||||||
getPriorityWithColor(task.priority),
|
getPriorityWithColor(task.priority),
|
||||||
deps,
|
deps,
|
||||||
'N/A',
|
typeof task.complexity === 'number'
|
||||||
|
? getComplexityWithColor(task.complexity)
|
||||||
|
: chalk.gray('N/A'),
|
||||||
task.description || ''
|
task.description || ''
|
||||||
].join('\n');
|
].join('\n');
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import https from 'https';
|
|||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import ora from 'ora';
|
import ora from 'ora';
|
||||||
import boxen from 'boxen';
|
import boxen from 'boxen';
|
||||||
import packageJson from '../../../../package.json' with { type: 'json' };
|
|
||||||
|
|
||||||
export interface UpdateInfo {
|
export interface UpdateInfo {
|
||||||
currentVersion: string;
|
currentVersion: string;
|
||||||
@@ -16,15 +15,18 @@ export interface UpdateInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get current version from package.json
|
* Get current version from build-time injected environment variable
|
||||||
*/
|
*/
|
||||||
function getCurrentVersion(): string {
|
function getCurrentVersion(): string {
|
||||||
try {
|
// Version is injected at build time via TM_PUBLIC_VERSION
|
||||||
return packageJson.version;
|
const version = process.env.TM_PUBLIC_VERSION;
|
||||||
} catch (error) {
|
if (version && version !== 'unknown') {
|
||||||
console.warn('Could not read package.json for version info');
|
return version;
|
||||||
return '0.0.0';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fallback for development or if injection failed
|
||||||
|
console.warn('Could not read version from TM_PUBLIC_VERSION, using fallback');
|
||||||
|
return '0.0.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -33,7 +35,7 @@ function getCurrentVersion(): string {
|
|||||||
* @param v2 - Second version
|
* @param v2 - Second version
|
||||||
* @returns -1 if v1 < v2, 0 if v1 = v2, 1 if v1 > v2
|
* @returns -1 if v1 < v2, 0 if v1 = v2, 1 if v1 > v2
|
||||||
*/
|
*/
|
||||||
function compareVersions(v1: string, v2: string): number {
|
export function compareVersions(v1: string, v2: string): number {
|
||||||
const toParts = (v: string) => {
|
const toParts = (v: string) => {
|
||||||
const [core, pre = ''] = v.split('-', 2);
|
const [core, pre = ''] = v.split('-', 2);
|
||||||
const nums = core.split('.').map((n) => Number.parseInt(n, 10) || 0);
|
const nums = core.split('.').map((n) => Number.parseInt(n, 10) || 0);
|
||||||
@@ -156,10 +158,18 @@ export function displayUpgradeNotification(
|
|||||||
export async function performAutoUpdate(
|
export async function performAutoUpdate(
|
||||||
latestVersion: string
|
latestVersion: string
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
if (process.env.TASKMASTER_SKIP_AUTO_UPDATE === '1' || process.env.CI) {
|
if (
|
||||||
console.log(
|
process.env.TASKMASTER_SKIP_AUTO_UPDATE === '1' ||
|
||||||
chalk.dim('Skipping auto-update (TASKMASTER_SKIP_AUTO_UPDATE/CI).')
|
process.env.CI ||
|
||||||
);
|
process.env.NODE_ENV === 'test'
|
||||||
|
) {
|
||||||
|
const reason =
|
||||||
|
process.env.TASKMASTER_SKIP_AUTO_UPDATE === '1'
|
||||||
|
? 'TASKMASTER_SKIP_AUTO_UPDATE=1'
|
||||||
|
: process.env.CI
|
||||||
|
? 'CI environment'
|
||||||
|
: 'NODE_ENV=test';
|
||||||
|
console.log(chalk.dim(`Skipping auto-update (${reason})`));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const spinner = ora({
|
const spinner = ora({
|
||||||
|
|||||||
@@ -84,7 +84,23 @@ export function getPriorityWithColor(priority: TaskPriority): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get colored complexity display
|
* Get complexity color and label based on score thresholds
|
||||||
|
*/
|
||||||
|
function getComplexityLevel(score: number): {
|
||||||
|
color: (text: string) => string;
|
||||||
|
label: string;
|
||||||
|
} {
|
||||||
|
if (score >= 7) {
|
||||||
|
return { color: chalk.hex('#CC0000'), label: 'High' };
|
||||||
|
} else if (score >= 4) {
|
||||||
|
return { color: chalk.hex('#FF8800'), label: 'Medium' };
|
||||||
|
} else {
|
||||||
|
return { color: chalk.green, label: 'Low' };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get colored complexity display with dot indicator (simple format)
|
||||||
*/
|
*/
|
||||||
export function getComplexityWithColor(complexity: number | string): string {
|
export function getComplexityWithColor(complexity: number | string): string {
|
||||||
const score =
|
const score =
|
||||||
@@ -94,13 +110,20 @@ export function getComplexityWithColor(complexity: number | string): string {
|
|||||||
return chalk.gray('N/A');
|
return chalk.gray('N/A');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (score >= 8) {
|
const { color } = getComplexityLevel(score);
|
||||||
return chalk.red.bold(`${score} (High)`);
|
return color(`● ${score}`);
|
||||||
} else if (score >= 5) {
|
}
|
||||||
return chalk.yellow(`${score} (Medium)`);
|
|
||||||
} else {
|
/**
|
||||||
return chalk.green(`${score} (Low)`);
|
* Get colored complexity display with /10 format (for dashboards)
|
||||||
|
*/
|
||||||
|
export function getComplexityWithScore(complexity: number | undefined): string {
|
||||||
|
if (typeof complexity !== 'number') {
|
||||||
|
return chalk.gray('N/A');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const { color, label } = getComplexityLevel(complexity);
|
||||||
|
return color(`${complexity}/10 (${label})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -323,9 +346,13 @@ export function createTaskTable(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (showComplexity) {
|
if (showComplexity) {
|
||||||
// Show N/A if no complexity score
|
// Show complexity score from report if available
|
||||||
|
if (typeof task.complexity === 'number') {
|
||||||
|
row.push(getComplexityWithColor(task.complexity));
|
||||||
|
} else {
|
||||||
row.push(chalk.gray('N/A'));
|
row.push(chalk.gray('N/A'));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
table.push(row);
|
table.push(row);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# docs
|
# docs
|
||||||
|
|
||||||
|
## 0.0.4
|
||||||
|
|
||||||
## 0.0.3
|
## 0.0.3
|
||||||
|
|
||||||
## 0.0.2
|
## 0.0.2
|
||||||
|
|||||||
@@ -1,22 +1,24 @@
|
|||||||
# Task Master Documentation
|
# Task Master Documentation
|
||||||
|
|
||||||
Welcome to the Task Master documentation. Use the links below to navigate to the information you need:
|
Welcome to the Task Master documentation. This documentation site provides comprehensive guides for getting started with Task Master.
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
- [Configuration Guide](archive/configuration.md) - Set up environment variables and customize Task Master
|
- [Quick Start Guide](/getting-started/quick-start) - Complete setup and first-time usage guide
|
||||||
- [Tutorial](archive/ctutorial.md) - Step-by-step guide to getting started with Task Master
|
- [Requirements](/getting-started/quick-start/requirements) - What you need to get started
|
||||||
|
- [Installation](/getting-started/quick-start/installation) - How to install Task Master
|
||||||
|
|
||||||
## Reference
|
## Core Capabilities
|
||||||
|
|
||||||
- [Command Reference](archive/ccommand-reference.md) - Complete list of all available commands
|
- [MCP Tools](/capabilities/mcp) - Model Control Protocol integration
|
||||||
- [Task Structure](archive/ctask-structure.md) - Understanding the task format and features
|
- [CLI Commands](/capabilities/cli-root-commands) - Command line interface reference
|
||||||
|
- [Task Structure](/capabilities/task-structure) - Understanding tasks and subtasks
|
||||||
|
|
||||||
## Examples & Licensing
|
## Best Practices
|
||||||
|
|
||||||
- [Example Interactions](archive/cexamples.md) - Common Cursor AI interaction examples
|
- [Advanced Configuration](/best-practices/configuration-advanced) - Detailed configuration options
|
||||||
- [Licensing Information](archive/clicensing.md) - Detailed information about the license
|
- [Advanced Tasks](/best-practices/advanced-tasks) - Working with complex task structures
|
||||||
|
|
||||||
## Need More Help?
|
## Need More Help?
|
||||||
|
|
||||||
If you can't find what you're looking for in these docs, please check the [main README](../README.md) or visit our [GitHub repository](https://github.com/eyaltoledano/claude-task-master).
|
If you can't find what you're looking for in these docs, please check the root README.md or visit our [GitHub repository](https://github.com/eyaltoledano/claude-task-master).
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ sidebarTitle: "CLI Commands"
|
|||||||
# List tasks with a specific status and include subtasks
|
# List tasks with a specific status and include subtasks
|
||||||
task-master list --status=<status> --with-subtasks
|
task-master list --status=<status> --with-subtasks
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Complexity Display**: If you've run `analyze-complexity`, task complexity scores will be displayed with color-coded indicators:
|
||||||
|
- 🟢 **Easy** (1-3): Green
|
||||||
|
- 🟡 **Medium** (4-6): Yellow
|
||||||
|
- 🔴 **Hard** (7-10): Red
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
|
||||||
<Accordion title="Show Next Task">
|
<Accordion title="Show Next Task">
|
||||||
@@ -36,6 +41,8 @@ sidebarTitle: "CLI Commands"
|
|||||||
# Show the next task to work on based on dependencies and status
|
# Show the next task to work on based on dependencies and status
|
||||||
task-master next
|
task-master next
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Complexity Display**: If complexity analysis has been performed, the next task will display its complexity score with a color-coded indicator.
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
|
||||||
<Accordion title="Show Specific Task">
|
<Accordion title="Show Specific Task">
|
||||||
@@ -48,6 +55,8 @@ sidebarTitle: "CLI Commands"
|
|||||||
# View a specific subtask (e.g., subtask 2 of task 1)
|
# View a specific subtask (e.g., subtask 2 of task 1)
|
||||||
task-master show 1.2
|
task-master show 1.2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Complexity Display**: If complexity analysis has been performed, the task details will include the complexity score with a color-coded indicator and the recommended number of subtasks.
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
|
||||||
<Accordion title="Update Tasks">
|
<Accordion title="Update Tasks">
|
||||||
@@ -156,7 +165,7 @@ sidebarTitle: "CLI Commands"
|
|||||||
# Use an alternative tasks file
|
# Use an alternative tasks file
|
||||||
task-master analyze-complexity --file=custom-tasks.json
|
task-master analyze-complexity --file=custom-tasks.json
|
||||||
|
|
||||||
# Use Perplexity AI for research-backed complexity analysis
|
# Use your configured research model for research-backed complexity analysis
|
||||||
task-master analyze-complexity --research
|
task-master analyze-complexity --research
|
||||||
```
|
```
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
"getting-started/quick-start/execute-quick"
|
"getting-started/quick-start/execute-quick"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"getting-started/api-keys",
|
||||||
"getting-started/faq",
|
"getting-started/faq",
|
||||||
"getting-started/contribute"
|
"getting-started/contribute"
|
||||||
]
|
]
|
||||||
|
|||||||
267
apps/docs/getting-started/api-keys.mdx
Normal file
267
apps/docs/getting-started/api-keys.mdx
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
# API Keys Configuration
|
||||||
|
|
||||||
|
Task Master supports multiple AI providers through environment variables. This page lists all available API keys and their configuration requirements.
|
||||||
|
|
||||||
|
## Required API Keys
|
||||||
|
|
||||||
|
> **Note**: At least one required API key must be configured for Task Master to function.
|
||||||
|
>
|
||||||
|
> "Required: Yes" below means "required to use that specific provider," not "required globally." You only need at least one provider configured.
|
||||||
|
|
||||||
|
### ANTHROPIC_API_KEY (Recommended)
|
||||||
|
- **Provider**: Anthropic Claude models
|
||||||
|
- **Format**: `sk-ant-api03-...`
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Claude 3.5 Sonnet, Claude 3 Haiku, Claude 3 Opus
|
||||||
|
- **Get Key**: [Anthropic Console](https://console.anthropic.com/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ANTHROPIC_API_KEY="sk-ant-api03-your-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### PERPLEXITY_API_KEY (Highly Recommended for Research)
|
||||||
|
- **Provider**: Perplexity AI (Research features)
|
||||||
|
- **Format**: `pplx-...`
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Purpose**: Enables research-backed task expansions and updates
|
||||||
|
- **Models**: Perplexity Sonar models
|
||||||
|
- **Get Key**: [Perplexity API](https://www.perplexity.ai/settings/api)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PERPLEXITY_API_KEY="pplx-your-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### OPENAI_API_KEY
|
||||||
|
- **Provider**: OpenAI GPT models
|
||||||
|
- **Format**: `sk-proj-...` or `sk-...`
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: GPT-4, GPT-4 Turbo, GPT-3.5 Turbo, O1 models
|
||||||
|
- **Get Key**: [OpenAI Platform](https://platform.openai.com/api-keys)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
OPENAI_API_KEY="sk-proj-your-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GOOGLE_API_KEY
|
||||||
|
- **Provider**: Google Gemini models
|
||||||
|
- **Format**: Various formats
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Gemini Pro, Gemini Flash, Gemini Ultra
|
||||||
|
- **Get Key**: [Google AI Studio](https://aistudio.google.com/app/apikey)
|
||||||
|
- **Alternative**: Use `GOOGLE_APPLICATION_CREDENTIALS` for service account (Google Vertex)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GOOGLE_API_KEY="your-google-api-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GROQ_API_KEY
|
||||||
|
- **Provider**: Groq (High-performance inference)
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Llama models, Mixtral models (via Groq)
|
||||||
|
- **Get Key**: [Groq Console](https://console.groq.com/keys)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GROQ_API_KEY="your-groq-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### OPENROUTER_API_KEY
|
||||||
|
- **Provider**: OpenRouter (Multiple model access)
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Access to various models through single API
|
||||||
|
- **Get Key**: [OpenRouter](https://openrouter.ai/keys)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
OPENROUTER_API_KEY="your-openrouter-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### AZURE_OPENAI_API_KEY
|
||||||
|
- **Provider**: Azure OpenAI Service
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Requirements**: Also requires `AZURE_OPENAI_ENDPOINT` configuration
|
||||||
|
- **Models**: GPT models via Azure
|
||||||
|
- **Get Key**: [Azure Portal](https://portal.azure.com/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
AZURE_OPENAI_API_KEY="your-azure-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### XAI_API_KEY
|
||||||
|
- **Provider**: xAI (Grok) models
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Grok models
|
||||||
|
- **Get Key**: [xAI Console](https://console.x.ai/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
XAI_API_KEY="your-xai-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Optional API Keys
|
||||||
|
|
||||||
|
> **Note**: These API keys are optional - providers will work without them or use alternative authentication methods.
|
||||||
|
|
||||||
|
### AWS_ACCESS_KEY_ID (Bedrock)
|
||||||
|
- **Provider**: AWS Bedrock
|
||||||
|
- **Required**: ❌ **No** (uses AWS credential chain)
|
||||||
|
- **Models**: Claude models via AWS Bedrock
|
||||||
|
- **Authentication**: Uses AWS credential chain (profiles, IAM roles, etc.)
|
||||||
|
- **Get Key**: [AWS Console](https://console.aws.amazon.com/iam/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Optional - AWS credential chain is preferred
|
||||||
|
AWS_ACCESS_KEY_ID="your-aws-access-key"
|
||||||
|
AWS_SECRET_ACCESS_KEY="your-aws-secret-key"
|
||||||
|
```
|
||||||
|
|
||||||
|
### CLAUDE_CODE_API_KEY
|
||||||
|
- **Provider**: Claude Code CLI
|
||||||
|
- **Required**: ❌ **No** (uses OAuth tokens)
|
||||||
|
- **Purpose**: Integration with local Claude Code CLI
|
||||||
|
- **Authentication**: Uses OAuth tokens, no API key needed
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Not typically needed
|
||||||
|
CLAUDE_CODE_API_KEY="not-usually-required"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GEMINI_API_KEY
|
||||||
|
- **Provider**: Gemini CLI
|
||||||
|
- **Required**: ❌ **No** (uses OAuth authentication)
|
||||||
|
- **Purpose**: Integration with Gemini CLI
|
||||||
|
- **Authentication**: Primarily uses OAuth via CLI, API key is optional
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Optional - OAuth via CLI is preferred
|
||||||
|
GEMINI_API_KEY="your-gemini-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GROK_CLI_API_KEY
|
||||||
|
- **Provider**: Grok CLI
|
||||||
|
- **Required**: ❌ **No** (can use CLI config)
|
||||||
|
- **Purpose**: Integration with Grok CLI
|
||||||
|
- **Authentication**: Can use Grok CLI's own config file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Optional - CLI config is preferred
|
||||||
|
GROK_CLI_API_KEY="your-grok-cli-key"
|
||||||
|
```
|
||||||
|
|
||||||
|
### OLLAMA_API_KEY
|
||||||
|
- **Provider**: Ollama (Local/Remote)
|
||||||
|
- **Required**: ❌ **No** (local installation doesn't need key)
|
||||||
|
- **Purpose**: For remote Ollama servers that require authentication
|
||||||
|
- **Requirements**: Only needed for remote servers with authentication
|
||||||
|
- **Note**: Not needed for local Ollama installations
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Only needed for remote Ollama servers
|
||||||
|
OLLAMA_API_KEY="your-ollama-api-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GITHUB_API_KEY
|
||||||
|
- **Provider**: GitHub (Import/Export features)
|
||||||
|
- **Format**: `ghp_...` or `github_pat_...`
|
||||||
|
- **Required**: ❌ **No** (for GitHub features only)
|
||||||
|
- **Purpose**: GitHub import/export features
|
||||||
|
- **Get Key**: [GitHub Settings](https://github.com/settings/tokens)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GITHUB_API_KEY="ghp-your-github-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration Methods
|
||||||
|
|
||||||
|
### Method 1: Environment File (.env)
|
||||||
|
Create a `.env` file in your project root:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Copy from .env.example
|
||||||
|
cp .env.example .env
|
||||||
|
|
||||||
|
# Edit with your keys
|
||||||
|
vim .env
|
||||||
|
```
|
||||||
|
|
||||||
|
### Method 2: System Environment Variables
|
||||||
|
```bash
|
||||||
|
export ANTHROPIC_API_KEY="your-key-here"
|
||||||
|
export PERPLEXITY_API_KEY="your-key-here"
|
||||||
|
# ... other keys
|
||||||
|
```
|
||||||
|
|
||||||
|
### Method 3: MCP Server Configuration
|
||||||
|
For Claude Code integration, configure keys in `.mcp.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"task-master-ai": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "task-master-ai"],
|
||||||
|
"env": {
|
||||||
|
"ANTHROPIC_API_KEY": "your-key-here",
|
||||||
|
"PERPLEXITY_API_KEY": "your-key-here",
|
||||||
|
"OPENAI_API_KEY": "your-key-here"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Requirements
|
||||||
|
|
||||||
|
### Minimum Requirements
|
||||||
|
- **At least one** AI provider key is required
|
||||||
|
- **ANTHROPIC_API_KEY** is recommended as the primary provider
|
||||||
|
- **PERPLEXITY_API_KEY** is highly recommended for research features
|
||||||
|
|
||||||
|
### Provider-Specific Requirements
|
||||||
|
- **Azure OpenAI**: Requires both `AZURE_OPENAI_API_KEY` and `AZURE_OPENAI_ENDPOINT` configuration
|
||||||
|
- **Google Vertex**: Requires `VERTEX_PROJECT_ID` and `VERTEX_LOCATION` environment variables
|
||||||
|
- **AWS Bedrock**: Uses AWS credential chain (profiles, IAM roles, etc.) instead of API keys
|
||||||
|
- **Ollama**: Only needs API key for remote servers with authentication
|
||||||
|
- **CLI Providers**: Gemini CLI, Grok CLI, and Claude Code use OAuth/CLI config instead of API keys
|
||||||
|
|
||||||
|
## Model Configuration
|
||||||
|
|
||||||
|
After setting up API keys, configure which models to use:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Interactive model setup
|
||||||
|
task-master models --setup
|
||||||
|
|
||||||
|
# Set specific models
|
||||||
|
task-master models --set-main claude-3-5-sonnet-20241022
|
||||||
|
task-master models --set-research perplexity-llama-3.1-sonar-large-128k-online
|
||||||
|
task-master models --set-fallback gpt-4o-mini
|
||||||
|
```
|
||||||
|
|
||||||
|
## Security Best Practices
|
||||||
|
|
||||||
|
1. **Never commit API keys** to version control
|
||||||
|
2. **Use .env files** and add them to `.gitignore`
|
||||||
|
3. **Rotate keys regularly** especially if compromised
|
||||||
|
4. **Use minimal permissions** for service accounts
|
||||||
|
5. **Monitor usage** to detect unauthorized access
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Key Validation
|
||||||
|
```bash
|
||||||
|
# Check if keys are properly configured
|
||||||
|
task-master models
|
||||||
|
|
||||||
|
# Test specific provider
|
||||||
|
task-master add-task --prompt="test task" --model=claude-3-5-sonnet-20241022
|
||||||
|
```
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
- **Invalid key format**: Check the expected format for each provider
|
||||||
|
- **Insufficient permissions**: Ensure keys have necessary API access
|
||||||
|
- **Rate limits**: Some providers have usage limits
|
||||||
|
- **Regional restrictions**: Some models may not be available in all regions
|
||||||
|
|
||||||
|
### Getting Help
|
||||||
|
If you encounter issues with API key configuration:
|
||||||
|
- Check the [FAQ](/getting-started/faq) for common solutions
|
||||||
|
- Join our [Discord community](https://discord.gg/fWJkU7rf) for support
|
||||||
|
- Report issues on [GitHub](https://github.com/eyaltoledano/claude-task-master/issues)
|
||||||
@@ -108,5 +108,5 @@ You don’t need to configure everything up front. Most settings can be left as
|
|||||||
</Accordion>
|
</Accordion>
|
||||||
|
|
||||||
<Note>
|
<Note>
|
||||||
For advanced configuration options and detailed customization, see our [Advanced Configuration Guide](/docs/best-practices/configuration-advanced) page.
|
For advanced configuration options and detailed customization, see our [Advanced Configuration Guide](/best-practices/configuration-advanced) page.
|
||||||
</Note>
|
</Note>
|
||||||
@@ -56,4 +56,4 @@ If you ran into problems and had to debug errors you can create new rules as you
|
|||||||
|
|
||||||
By now you have all you need to get started executing code faster and smarter with Task Master.
|
By now you have all you need to get started executing code faster and smarter with Task Master.
|
||||||
|
|
||||||
If you have any questions please check out [Frequently Asked Questions](/docs/getting-started/faq)
|
If you have any questions please check out [Frequently Asked Questions](/getting-started/faq)
|
||||||
|
|||||||
@@ -30,6 +30,19 @@ cursor://anysphere.cursor-deeplink/mcp/install?name=taskmaster-ai&config=eyJjb21
|
|||||||
```
|
```
|
||||||
|
|
||||||
> **Note:** After clicking the link, you'll still need to add your API keys to the configuration. The link installs the MCP server with placeholder keys that you'll need to replace with your actual API keys.
|
> **Note:** After clicking the link, you'll still need to add your API keys to the configuration. The link installs the MCP server with placeholder keys that you'll need to replace with your actual API keys.
|
||||||
|
|
||||||
|
### Claude Code Quick Install
|
||||||
|
|
||||||
|
For Claude Code users:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude mcp add taskmaster-ai -- npx -y task-master-ai
|
||||||
|
```
|
||||||
|
|
||||||
|
Don't forget to add your API keys to the configuration:
|
||||||
|
- in the root .env of your Project
|
||||||
|
- in the "env" section of your mcp config for taskmaster-ai
|
||||||
|
|
||||||
</Accordion>
|
</Accordion>
|
||||||
## Installation Options
|
## Installation Options
|
||||||
|
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ sidebarTitle: "Quick Start"
|
|||||||
This guide is for new users who want to start using Task Master with minimal setup time.
|
This guide is for new users who want to start using Task Master with minimal setup time.
|
||||||
|
|
||||||
It covers:
|
It covers:
|
||||||
- [Requirements](/docs/getting-started/quick-start/requirements): You will need Node.js and an AI model API Key.
|
- [Requirements](/getting-started/quick-start/requirements): You will need Node.js and an AI model API Key.
|
||||||
- [Installation](/docs/getting-started/quick-start/installation): How to Install Task Master.
|
- [Installation](/getting-started/quick-start/installation): How to Install Task Master.
|
||||||
- [Configuration](/docs/getting-started/quick-start/configuration-quick): Setting up your API Key, MCP, and more.
|
- [Configuration](/getting-started/quick-start/configuration-quick): Setting up your API Key, MCP, and more.
|
||||||
- [PRD](/docs/getting-started/quick-start/prd-quick): Writing and parsing your first PRD.
|
- [PRD](/getting-started/quick-start/prd-quick): Writing and parsing your first PRD.
|
||||||
- [Task Setup](/docs/getting-started/quick-start/tasks-quick): Preparing your tasks for execution.
|
- [Task Setup](/getting-started/quick-start/tasks-quick): Preparing your tasks for execution.
|
||||||
- [Executing Tasks](/docs/getting-started/quick-start/execute-quick): Using Task Master to execute tasks.
|
- [Executing Tasks](/getting-started/quick-start/execute-quick): Using Task Master to execute tasks.
|
||||||
- [Rules & Context](/docs/getting-started/quick-start/rules-quick): Learn how and why to build context in your project over time.
|
- [Rules & Context](/getting-started/quick-start/rules-quick): Learn how and why to build context in your project over time.
|
||||||
|
|
||||||
<Tip>
|
<Tip>
|
||||||
By the end of this guide, you'll have everything you need to begin working productively with Task Master.
|
By the end of this guide, you'll have everything you need to begin working productively with Task Master.
|
||||||
|
|||||||
@@ -61,9 +61,25 @@ Task Master can provide a complexity report which can be helpful to read before
|
|||||||
Can you analyze the complexity of our tasks to help me understand which ones need to be broken down further?
|
Can you analyze the complexity of our tasks to help me understand which ones need to be broken down further?
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The agent will use the `analyze_project_complexity` MCP tool, or you can run it directly with the CLI command:
|
||||||
|
```bash
|
||||||
|
task-master analyze-complexity
|
||||||
|
```
|
||||||
|
|
||||||
|
For more comprehensive analysis using your configured research model, you can use:
|
||||||
|
```bash
|
||||||
|
task-master analyze-complexity --research
|
||||||
|
```
|
||||||
|
|
||||||
|
<Tip>
|
||||||
|
The `--research` flag uses whatever research model you have configured in `.taskmaster/config.json` (configurable via `task-master models --setup`) for research-backed complexity analysis, providing more informed recommendations.
|
||||||
|
</Tip>
|
||||||
|
|
||||||
You can view the report in a friendly table using:
|
You can view the report in a friendly table using:
|
||||||
```
|
```
|
||||||
Can you show me the complexity report in a more readable format?
|
Can you show me the complexity report in a more readable format?
|
||||||
```
|
```
|
||||||
|
|
||||||
<Check>Now you are ready to begin [executing tasks](/docs/getting-started/quick-start/execute-quick)</Check>
|
For more detailed CLI options, see the [Analyze Task Complexity](/capabilities/cli-root-commands#analyze-task-complexity) section.
|
||||||
|
|
||||||
|
<Check>Now you are ready to begin [executing tasks](/getting-started/quick-start/execute-quick)</Check>
|
||||||
@@ -4,7 +4,7 @@ Welcome to v1 of the Task Master Docs. Expect weekly updates as we expand and re
|
|||||||
|
|
||||||
We've organized the docs into three sections depending on your experience level and goals:
|
We've organized the docs into three sections depending on your experience level and goals:
|
||||||
|
|
||||||
### Getting Started - Jump in to [Quick Start](/docs/getting-started/quick-start)
|
### Getting Started - Jump in to [Quick Start](/getting-started/quick-start)
|
||||||
Designed for first-time users. Get set up, create your first PRD, and run your first task.
|
Designed for first-time users. Get set up, create your first PRD, and run your first task.
|
||||||
|
|
||||||
### Best Practices
|
### Best Practices
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "docs",
|
"name": "docs",
|
||||||
"version": "0.0.3",
|
"version": "0.0.4",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Task Master documentation powered by Mintlify",
|
"description": "Task Master documentation powered by Mintlify",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,5 +1,40 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 0.25.4
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`af53525`](https://github.com/eyaltoledano/claude-task-master/commit/af53525cbc660a595b67d4bb90d906911c71f45d)]:
|
||||||
|
- task-master-ai@0.27.3
|
||||||
|
|
||||||
|
## 0.25.3
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`044a7bf`](https://github.com/eyaltoledano/claude-task-master/commit/044a7bfc98049298177bc655cf341d7a8b6a0011)]:
|
||||||
|
- task-master-ai@0.27.2
|
||||||
|
|
||||||
|
## 0.25.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`f487736`](https://github.com/eyaltoledano/claude-task-master/commit/f487736670ef8c484059f676293777eabb249c9e), [`c911608`](https://github.com/eyaltoledano/claude-task-master/commit/c911608f60454253f4e024b57ca84e5a5a53f65c), [`1a18794`](https://github.com/eyaltoledano/claude-task-master/commit/1a1879483b86c118a4e46c02cbf4acebfcf6bcf9)]:
|
||||||
|
- task-master-ai@0.27.1
|
||||||
|
|
||||||
|
## 0.25.2-rc.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`1a18794`](https://github.com/eyaltoledano/claude-task-master/commit/1a1879483b86c118a4e46c02cbf4acebfcf6bcf9)]:
|
||||||
|
- task-master-ai@0.27.1-rc.1
|
||||||
|
|
||||||
|
## 0.25.2-rc.0
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`f487736`](https://github.com/eyaltoledano/claude-task-master/commit/f487736670ef8c484059f676293777eabb249c9e)]:
|
||||||
|
- task-master-ai@0.27.1-rc.0
|
||||||
|
|
||||||
## 0.25.0
|
## 0.25.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|||||||
@@ -3,23 +3,15 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"displayName": "TaskMaster",
|
"displayName": "TaskMaster",
|
||||||
"description": "A visual Kanban board interface for TaskMaster projects in VS Code",
|
"description": "A visual Kanban board interface for TaskMaster projects in VS Code",
|
||||||
"version": "0.25.0",
|
"version": "0.25.4",
|
||||||
"publisher": "Hamster",
|
"publisher": "Hamster",
|
||||||
"icon": "assets/icon.png",
|
"icon": "assets/icon.png",
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "^1.93.0"
|
"vscode": "^1.93.0"
|
||||||
},
|
},
|
||||||
"categories": [
|
"categories": ["AI", "Visualization", "Education", "Other"],
|
||||||
"AI",
|
|
||||||
"Visualization",
|
|
||||||
"Education",
|
|
||||||
"Other"
|
|
||||||
],
|
|
||||||
"main": "./dist/extension.js",
|
"main": "./dist/extension.js",
|
||||||
"activationEvents": [
|
"activationEvents": ["onStartupFinished", "workspaceContains:.taskmaster/**"],
|
||||||
"onStartupFinished",
|
|
||||||
"workspaceContains:.taskmaster/**"
|
|
||||||
],
|
|
||||||
"contributes": {
|
"contributes": {
|
||||||
"viewsContainers": {
|
"viewsContainers": {
|
||||||
"activitybar": [
|
"activitybar": [
|
||||||
@@ -147,11 +139,7 @@
|
|||||||
},
|
},
|
||||||
"taskmaster.ui.theme": {
|
"taskmaster.ui.theme": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": ["auto", "light", "dark"],
|
||||||
"auto",
|
|
||||||
"light",
|
|
||||||
"dark"
|
|
||||||
],
|
|
||||||
"default": "auto",
|
"default": "auto",
|
||||||
"description": "UI theme preference"
|
"description": "UI theme preference"
|
||||||
},
|
},
|
||||||
@@ -212,12 +200,7 @@
|
|||||||
},
|
},
|
||||||
"taskmaster.debug.logLevel": {
|
"taskmaster.debug.logLevel": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": ["error", "warn", "info", "debug"],
|
||||||
"error",
|
|
||||||
"warn",
|
|
||||||
"info",
|
|
||||||
"debug"
|
|
||||||
],
|
|
||||||
"default": "info",
|
"default": "info",
|
||||||
"description": "Logging level"
|
"description": "Logging level"
|
||||||
},
|
},
|
||||||
@@ -271,8 +254,9 @@
|
|||||||
"@radix-ui/react-separator": "^1.1.7",
|
"@radix-ui/react-separator": "^1.1.7",
|
||||||
"@radix-ui/react-slot": "^1.2.3",
|
"@radix-ui/react-slot": "^1.2.3",
|
||||||
"@tailwindcss/postcss": "^4.1.11",
|
"@tailwindcss/postcss": "^4.1.11",
|
||||||
|
"@tanstack/react-query": "^5.83.0",
|
||||||
"@types/mocha": "^10.0.10",
|
"@types/mocha": "^10.0.10",
|
||||||
"@types/node": "20.x",
|
"@types/node": "^22.10.5",
|
||||||
"@types/react": "19.1.8",
|
"@types/react": "19.1.8",
|
||||||
"@types/react-dom": "19.1.6",
|
"@types/react-dom": "19.1.6",
|
||||||
"@types/vscode": "^1.101.0",
|
"@types/vscode": "^1.101.0",
|
||||||
@@ -288,12 +272,12 @@
|
|||||||
"lucide-react": "^0.525.0",
|
"lucide-react": "^0.525.0",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss": "8.5.6",
|
"postcss": "8.5.6",
|
||||||
|
"react": "^19.0.0",
|
||||||
|
"react-dom": "^19.0.0",
|
||||||
"tailwind-merge": "^3.3.1",
|
"tailwind-merge": "^3.3.1",
|
||||||
"tailwindcss": "4.1.11",
|
"tailwindcss": "4.1.11",
|
||||||
"typescript": "^5.8.3",
|
"typescript": "^5.9.2",
|
||||||
"@tanstack/react-query": "^5.83.0",
|
"@tm/core": "*"
|
||||||
"react": "^19.0.0",
|
|
||||||
"react-dom": "^19.0.0"
|
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"glob@<8": "^10.4.5",
|
"glob@<8": "^10.4.5",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "task-master-hamster",
|
"name": "task-master-hamster",
|
||||||
"displayName": "Taskmaster AI",
|
"displayName": "Taskmaster AI",
|
||||||
"description": "A visual Kanban board interface for Taskmaster projects in VS Code",
|
"description": "A visual Kanban board interface for Taskmaster projects in VS Code",
|
||||||
"version": "0.23.1",
|
"version": "0.25.3",
|
||||||
"publisher": "Hamster",
|
"publisher": "Hamster",
|
||||||
"icon": "assets/icon.png",
|
"icon": "assets/icon.png",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
"outDir": "out",
|
"outDir": "out",
|
||||||
"lib": ["ES2022", "DOM"],
|
"lib": ["ES2022", "DOM"],
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"rootDir": "src",
|
|
||||||
"strict": true /* enable all strict type-checking options */,
|
"strict": true /* enable all strict type-checking options */,
|
||||||
"moduleResolution": "Node",
|
"moduleResolution": "Node",
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
@@ -21,8 +20,10 @@
|
|||||||
"@/*": ["./src/*"],
|
"@/*": ["./src/*"],
|
||||||
"@/components/*": ["./src/components/*"],
|
"@/components/*": ["./src/components/*"],
|
||||||
"@/lib/*": ["./src/lib/*"],
|
"@/lib/*": ["./src/lib/*"],
|
||||||
"@tm/core": ["../core/src"]
|
"@tm/core": ["../../packages/tm-core/src/index.ts"],
|
||||||
|
"@tm/core/*": ["../../packages/tm-core/src/*"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"include": ["src/**/*"],
|
||||||
"exclude": ["node_modules", ".vscode-test", "out", "dist"]
|
"exclude": ["node_modules", ".vscode-test", "out", "dist"]
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user