Compare commits
61 Commits
feat/make.
...
v0.19.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5d2b61297 | ||
|
|
0726bc966c | ||
|
|
7fea9968ef | ||
|
|
f7fbdd6755 | ||
|
|
c99df64f65 | ||
|
|
5eafc5ea11 | ||
|
|
a33d6ecfeb | ||
|
|
dd96f51179 | ||
|
|
2852149a47 | ||
|
|
43e0025f4c | ||
|
|
598e687067 | ||
|
|
f38abd6843 | ||
|
|
24e9206da0 | ||
|
|
8d9fcf2064 | ||
|
|
56a415ef79 | ||
|
|
f081bba83c | ||
|
|
6fd5e23396 | ||
|
|
e4456b11bc | ||
|
|
295087a5b8 | ||
|
|
5f2b7323ad | ||
|
|
9ddc521757 | ||
|
|
e7087cf88f | ||
|
|
08f86f19c3 | ||
|
|
f272748965 | ||
|
|
15e15a1f17 | ||
|
|
3a30e9acd4 | ||
|
|
15286c029d | ||
|
|
c39e5158b4 | ||
|
|
4bda8f4d76 | ||
|
|
49976e864b | ||
|
|
30b873a7da | ||
|
|
ab37859a7e | ||
|
|
e704ba12fd | ||
|
|
64b2d8f79e | ||
|
|
bbb4bbcc11 | ||
|
|
8e38348203 | ||
|
|
01b651bddc | ||
|
|
0840ad8316 | ||
|
|
5c726dc542 | ||
|
|
21d988691b | ||
|
|
21839b1cd6 | ||
|
|
6160089b8e | ||
|
|
82bb50619f | ||
|
|
898f15e699 | ||
|
|
1a157567dc | ||
|
|
eb8a3a85a1 | ||
|
|
59a4ec9e1a | ||
|
|
ef1deec947 | ||
|
|
b40139ca05 | ||
|
|
403d7b00ca | ||
|
|
b78614b44e | ||
|
|
19d795d63f | ||
|
|
07ec89ab17 | ||
|
|
eaa7f24280 | ||
|
|
b3d43c5992 | ||
|
|
c5de4f8b68 | ||
|
|
b9299c5af0 | ||
|
|
8852831807 | ||
|
|
661d3e04ba | ||
|
|
0dba2cb2da | ||
|
|
9ee7a94056 |
@@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix expand command preserving tagged task structure and preventing data corruption
|
|
||||||
|
|
||||||
- Enhance E2E tests with comprehensive tag-aware expand testing to verify tag corruption fix
|
|
||||||
- Add new test section for feature-expand tag creation and testing during expand operations
|
|
||||||
- Verify tag preservation during expand, force expand, and expand --all operations
|
|
||||||
- Test that master tag remains intact while feature-expand tag receives subtasks correctly
|
|
||||||
- Fix file path references to use correct .taskmaster/config.json and .taskmaster/tasks/tasks.json locations
|
|
||||||
- All tag corruption verification tests pass successfully, confirming the expand command tag corruption bug fix works as expected
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Can now configure baseURL of provider with `<PROVIDER>_BASE_URL`
|
|
||||||
|
|
||||||
- For example:
|
|
||||||
- `OPENAI_BASE_URL`
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Call rules interactive setup during init
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
'task-master-ai': minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Added comprehensive rule profile management:
|
|
||||||
|
|
||||||
**New Profile Support**: Added comprehensive IDE profile support with eight specialized profiles: Claude Code, Cline, Codex, Cursor, Roo, Trae, VS Code, and Windsurf. Each profile is optimized for its respective IDE with appropriate mappings and configuration.
|
|
||||||
**Initialization**: You can now specify which rule profiles to include at project initialization using `--rules <profiles>` or `-r <profiles>` (e.g., `task-master init -r cursor,roo`). Only the selected profiles and configuration are included.
|
|
||||||
**Add/Remove Commands**: `task-master rules add <profiles>` and `task-master rules remove <profiles>` let you manage specific rule profiles and MCP config after initialization, supporting multiple profiles at once.
|
|
||||||
**Interactive Setup**: `task-master rules setup` launches an interactive prompt to select which rule profiles to add to your project. This does **not** re-initialize your project or affect shell aliases; it only manages rules.
|
|
||||||
**Selective Removal**: Rules removal intelligently preserves existing non-Task Master rules and files and only removes Task Master-specific rules. Profile directories are only removed when completely empty and all conditions are met (no existing rules, no other files/folders, MCP config completely removed).
|
|
||||||
**Safety Features**: Confirmation messages clearly explain that only Task Master-specific rules and MCP configurations will be removed, while preserving existing custom rules and other files.
|
|
||||||
**Robust Validation**: Includes comprehensive checks for array types in MCP config processing and error handling throughout the rules management system.
|
|
||||||
|
|
||||||
This enables more flexible, rule-specific project setups with intelligent cleanup that preserves user customizations while safely managing Task Master components.
|
|
||||||
|
|
||||||
- Resolves #338
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Improves Amazon Bedrock support
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix issues with task creation/update where subtasks are being created like id: <parent_task>.<subtask> instead if just id: <subtask>
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Make task-master more compatible with the "o" family models of OpenAI
|
|
||||||
|
|
||||||
Now works well with:
|
|
||||||
- o3
|
|
||||||
- o3-mini
|
|
||||||
- etc.
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"mode": "exit",
|
|
||||||
"tag": "rc",
|
|
||||||
"initialVersions": {
|
|
||||||
"task-master-ai": "0.17.1"
|
|
||||||
},
|
|
||||||
"changesets": [
|
|
||||||
"bright-llamas-enter",
|
|
||||||
"huge-moose-prove",
|
|
||||||
"icy-dryers-hunt",
|
|
||||||
"lemon-deer-hide",
|
|
||||||
"modern-cats-pick",
|
|
||||||
"nasty-berries-tan",
|
|
||||||
"shy-groups-fly",
|
|
||||||
"sour-lions-check",
|
|
||||||
"spicy-teams-travel",
|
|
||||||
"stale-cameras-sin",
|
|
||||||
"swift-squids-sip",
|
|
||||||
"tiny-dogs-change",
|
|
||||||
"vast-plants-exist",
|
|
||||||
"wet-berries-dress"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add better support for python projects by adding `pyproject.toml` as a projectRoot marker
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Store tasks in Git by default
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Improve provider validation system with clean constants structure
|
|
||||||
|
|
||||||
- **Fixed "Invalid provider hint" errors**: Resolved validation failures for Azure, Vertex, and Bedrock providers
|
|
||||||
- **Improved search UX**: Integrated search for better model discovery with real-time filtering
|
|
||||||
- **Better organization**: Moved custom provider options to bottom of model selection with clear section separators
|
|
||||||
|
|
||||||
This change ensures all custom providers (Azure, Vertex, Bedrock, OpenRouter, Ollama) work correctly in `task-master models --setup`
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix weird `task-master init` bug when using in certain environments
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Rename Roo Code Boomerang role to Orchestrator
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Improve mcp keys check in cursor
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
- **Git Worktree Detection:**
|
|
||||||
- Now properly skips Git initialization when inside existing Git worktree
|
|
||||||
- Prevents accidental nested repository creation
|
|
||||||
- **Flag System Overhaul:**
|
|
||||||
- `--git`/`--no-git` controls repository initialization
|
|
||||||
- `--aliases`/`--no-aliases` consistently manages shell alias creation
|
|
||||||
- `--git-tasks`/`--no-git-tasks` controls whether task files are stored in Git
|
|
||||||
- `--dry-run` accurately previews all initialization behaviors
|
|
||||||
- **GitTasks Functionality:**
|
|
||||||
- New `--git-tasks` flag includes task files in Git (comments them out in .gitignore)
|
|
||||||
- New `--no-git-tasks` flag excludes task files from Git (default behavior)
|
|
||||||
- Supports both CLI and MCP interfaces with proper parameter passing
|
|
||||||
|
|
||||||
**Implementation Details:**
|
|
||||||
- Added explicit Git worktree detection before initialization
|
|
||||||
- Refactored flag processing to ensure consistent behavior
|
|
||||||
|
|
||||||
- Fixes #734
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add Claude Code provider support
|
|
||||||
|
|
||||||
Introduces a new provider that enables using Claude models (Opus and Sonnet) through the Claude Code CLI without requiring an API key.
|
|
||||||
|
|
||||||
Key features:
|
|
||||||
- New claude-code provider with support for opus and sonnet models
|
|
||||||
- No API key required - uses local Claude Code CLI installation
|
|
||||||
- Optional dependency - won't affect users who don't need Claude Code
|
|
||||||
- Lazy loading ensures the provider only loads when requested
|
|
||||||
- Full integration with existing Task Master commands and workflows
|
|
||||||
- Comprehensive test coverage for reliability
|
|
||||||
- New --claude-code flag for the models command
|
|
||||||
|
|
||||||
Users can now configure Claude Code models with:
|
|
||||||
task-master models --set-main sonnet --claude-code
|
|
||||||
task-master models --set-research opus --claude-code
|
|
||||||
|
|
||||||
The @anthropic-ai/claude-code package is optional and won't be installed unless explicitly needed.
|
|
||||||
147
.claude/TM_COMMANDS_GUIDE.md
Normal file
147
.claude/TM_COMMANDS_GUIDE.md
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
# Task Master Commands for Claude Code
|
||||||
|
|
||||||
|
Complete guide to using Task Master through Claude Code's slash commands.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
All Task Master functionality is available through the `/project:tm/` namespace with natural language support and intelligent features.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install Task Master
|
||||||
|
/project:tm/setup/quick-install
|
||||||
|
|
||||||
|
# Initialize project
|
||||||
|
/project:tm/init/quick
|
||||||
|
|
||||||
|
# Parse requirements
|
||||||
|
/project:tm/parse-prd requirements.md
|
||||||
|
|
||||||
|
# Start working
|
||||||
|
/project:tm/next
|
||||||
|
```
|
||||||
|
|
||||||
|
## Command Structure
|
||||||
|
|
||||||
|
Commands are organized hierarchically to match Task Master's CLI:
|
||||||
|
- Main commands at `/project:tm/[command]`
|
||||||
|
- Subcommands for specific operations `/project:tm/[command]/[subcommand]`
|
||||||
|
- Natural language arguments accepted throughout
|
||||||
|
|
||||||
|
## Complete Command Reference
|
||||||
|
|
||||||
|
### Setup & Configuration
|
||||||
|
- `/project:tm/setup/install` - Full installation guide
|
||||||
|
- `/project:tm/setup/quick-install` - One-line install
|
||||||
|
- `/project:tm/init` - Initialize project
|
||||||
|
- `/project:tm/init/quick` - Quick init with -y
|
||||||
|
- `/project:tm/models` - View AI config
|
||||||
|
- `/project:tm/models/setup` - Configure AI
|
||||||
|
|
||||||
|
### Task Generation
|
||||||
|
- `/project:tm/parse-prd` - Generate from PRD
|
||||||
|
- `/project:tm/parse-prd/with-research` - Enhanced parsing
|
||||||
|
- `/project:tm/generate` - Create task files
|
||||||
|
|
||||||
|
### Task Management
|
||||||
|
- `/project:tm/list` - List with natural language filters
|
||||||
|
- `/project:tm/list/with-subtasks` - Hierarchical view
|
||||||
|
- `/project:tm/list/by-status <status>` - Filter by status
|
||||||
|
- `/project:tm/show <id>` - Task details
|
||||||
|
- `/project:tm/add-task` - Create task
|
||||||
|
- `/project:tm/update` - Update tasks
|
||||||
|
- `/project:tm/remove-task` - Delete task
|
||||||
|
|
||||||
|
### Status Management
|
||||||
|
- `/project:tm/set-status/to-pending <id>`
|
||||||
|
- `/project:tm/set-status/to-in-progress <id>`
|
||||||
|
- `/project:tm/set-status/to-done <id>`
|
||||||
|
- `/project:tm/set-status/to-review <id>`
|
||||||
|
- `/project:tm/set-status/to-deferred <id>`
|
||||||
|
- `/project:tm/set-status/to-cancelled <id>`
|
||||||
|
|
||||||
|
### Task Analysis
|
||||||
|
- `/project:tm/analyze-complexity` - AI analysis
|
||||||
|
- `/project:tm/complexity-report` - View report
|
||||||
|
- `/project:tm/expand <id>` - Break down task
|
||||||
|
- `/project:tm/expand/all` - Expand all complex
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
- `/project:tm/add-dependency` - Add dependency
|
||||||
|
- `/project:tm/remove-dependency` - Remove dependency
|
||||||
|
- `/project:tm/validate-dependencies` - Check issues
|
||||||
|
- `/project:tm/fix-dependencies` - Auto-fix
|
||||||
|
|
||||||
|
### Workflows
|
||||||
|
- `/project:tm/workflows/smart-flow` - Adaptive workflows
|
||||||
|
- `/project:tm/workflows/pipeline` - Chain commands
|
||||||
|
- `/project:tm/workflows/auto-implement` - AI implementation
|
||||||
|
|
||||||
|
### Utilities
|
||||||
|
- `/project:tm/status` - Project dashboard
|
||||||
|
- `/project:tm/next` - Next task recommendation
|
||||||
|
- `/project:tm/utils/analyze` - Project analysis
|
||||||
|
- `/project:tm/learn` - Interactive help
|
||||||
|
|
||||||
|
## Key Features
|
||||||
|
|
||||||
|
### Natural Language Support
|
||||||
|
All commands understand natural language:
|
||||||
|
```
|
||||||
|
/project:tm/list pending high priority
|
||||||
|
/project:tm/update mark 23 as done
|
||||||
|
/project:tm/add-task implement OAuth login
|
||||||
|
```
|
||||||
|
|
||||||
|
### Smart Context
|
||||||
|
Commands analyze project state and provide intelligent suggestions based on:
|
||||||
|
- Current task status
|
||||||
|
- Dependencies
|
||||||
|
- Team patterns
|
||||||
|
- Project phase
|
||||||
|
|
||||||
|
### Visual Enhancements
|
||||||
|
- Progress bars and indicators
|
||||||
|
- Status badges
|
||||||
|
- Organized displays
|
||||||
|
- Clear hierarchies
|
||||||
|
|
||||||
|
## Common Workflows
|
||||||
|
|
||||||
|
### Daily Development
|
||||||
|
```
|
||||||
|
/project:tm/workflows/smart-flow morning
|
||||||
|
/project:tm/next
|
||||||
|
/project:tm/set-status/to-in-progress <id>
|
||||||
|
/project:tm/set-status/to-done <id>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Task Breakdown
|
||||||
|
```
|
||||||
|
/project:tm/show <id>
|
||||||
|
/project:tm/expand <id>
|
||||||
|
/project:tm/list/with-subtasks
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sprint Planning
|
||||||
|
```
|
||||||
|
/project:tm/analyze-complexity
|
||||||
|
/project:tm/workflows/pipeline init → expand/all → status
|
||||||
|
```
|
||||||
|
|
||||||
|
## Migration from Old Commands
|
||||||
|
|
||||||
|
| Old | New |
|
||||||
|
|-----|-----|
|
||||||
|
| `/project:task-master:list` | `/project:tm/list` |
|
||||||
|
| `/project:task-master:complete` | `/project:tm/set-status/to-done` |
|
||||||
|
| `/project:workflows:auto-implement` | `/project:tm/workflows/auto-implement` |
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
|
||||||
|
1. Use `/project:tm/` + Tab for command discovery
|
||||||
|
2. Natural language is supported everywhere
|
||||||
|
3. Commands provide smart defaults
|
||||||
|
4. Chain commands for automation
|
||||||
|
5. Check `/project:tm/learn` for interactive help
|
||||||
55
.claude/commands/tm/add-dependency/index.md
Normal file
55
.claude/commands/tm/add-dependency/index.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
Add a dependency between tasks.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Parse the task IDs to establish dependency relationship.
|
||||||
|
|
||||||
|
## Adding Dependencies
|
||||||
|
|
||||||
|
Creates a dependency where one task must be completed before another can start.
|
||||||
|
|
||||||
|
## Argument Parsing
|
||||||
|
|
||||||
|
Parse natural language or IDs:
|
||||||
|
- "make 5 depend on 3" → task 5 depends on task 3
|
||||||
|
- "5 needs 3" → task 5 depends on task 3
|
||||||
|
- "5 3" → task 5 depends on task 3
|
||||||
|
- "5 after 3" → task 5 depends on task 3
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master add-dependency --id=<task-id> --depends-on=<dependency-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Before adding:
|
||||||
|
1. **Verify both tasks exist**
|
||||||
|
2. **Check for circular dependencies**
|
||||||
|
3. **Ensure dependency makes logical sense**
|
||||||
|
4. **Warn if creating complex chains**
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
- Detect if dependency already exists
|
||||||
|
- Suggest related dependencies
|
||||||
|
- Show impact on task flow
|
||||||
|
- Update task priorities if needed
|
||||||
|
|
||||||
|
## Post-Addition
|
||||||
|
|
||||||
|
After adding dependency:
|
||||||
|
1. Show updated dependency graph
|
||||||
|
2. Identify any newly blocked tasks
|
||||||
|
3. Suggest task order changes
|
||||||
|
4. Update project timeline
|
||||||
|
|
||||||
|
## Example Flows
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/add-dependency 5 needs 3
|
||||||
|
→ Task #5 now depends on Task #3
|
||||||
|
→ Task #5 is now blocked until #3 completes
|
||||||
|
→ Suggested: Also consider if #5 needs #4
|
||||||
|
```
|
||||||
71
.claude/commands/tm/add-subtask/from-task.md
Normal file
71
.claude/commands/tm/add-subtask/from-task.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
Convert an existing task into a subtask.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Parse parent ID and task ID to convert.
|
||||||
|
|
||||||
|
## Task Conversion
|
||||||
|
|
||||||
|
Converts an existing standalone task into a subtask of another task.
|
||||||
|
|
||||||
|
## Argument Parsing
|
||||||
|
|
||||||
|
- "move task 8 under 5"
|
||||||
|
- "make 8 a subtask of 5"
|
||||||
|
- "nest 8 in 5"
|
||||||
|
- "5 8" → make task 8 a subtask of task 5
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master add-subtask --parent=<parent-id> --task-id=<task-to-convert>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pre-Conversion Checks
|
||||||
|
|
||||||
|
1. **Validation**
|
||||||
|
- Both tasks exist and are valid
|
||||||
|
- No circular parent relationships
|
||||||
|
- Task isn't already a subtask
|
||||||
|
- Logical hierarchy makes sense
|
||||||
|
|
||||||
|
2. **Impact Analysis**
|
||||||
|
- Dependencies that will be affected
|
||||||
|
- Tasks that depend on converting task
|
||||||
|
- Priority alignment needed
|
||||||
|
- Status compatibility
|
||||||
|
|
||||||
|
## Conversion Process
|
||||||
|
|
||||||
|
1. Change task ID from "8" to "5.1" (next available)
|
||||||
|
2. Update all dependency references
|
||||||
|
3. Inherit parent's context where appropriate
|
||||||
|
4. Adjust priorities if needed
|
||||||
|
5. Update time estimates
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
- Preserve task history
|
||||||
|
- Maintain dependencies
|
||||||
|
- Update all references
|
||||||
|
- Create conversion log
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/add-subtask/from-task 5 8
|
||||||
|
→ Converting: Task #8 becomes subtask #5.1
|
||||||
|
→ Updated: 3 dependency references
|
||||||
|
→ Parent task #5 now has 1 subtask
|
||||||
|
→ Note: Subtask inherits parent's priority
|
||||||
|
|
||||||
|
Before: #8 "Implement validation" (standalone)
|
||||||
|
After: #5.1 "Implement validation" (subtask of #5)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Post-Conversion
|
||||||
|
|
||||||
|
- Show new task hierarchy
|
||||||
|
- List updated dependencies
|
||||||
|
- Verify project integrity
|
||||||
|
- Suggest related conversions
|
||||||
76
.claude/commands/tm/add-subtask/index.md
Normal file
76
.claude/commands/tm/add-subtask/index.md
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
Add a subtask to a parent task.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Parse arguments to create a new subtask or convert existing task.
|
||||||
|
|
||||||
|
## Adding Subtasks
|
||||||
|
|
||||||
|
Creates subtasks to break down complex parent tasks into manageable pieces.
|
||||||
|
|
||||||
|
## Argument Parsing
|
||||||
|
|
||||||
|
Flexible natural language:
|
||||||
|
- "add subtask to 5: implement login form"
|
||||||
|
- "break down 5 with: setup, implement, test"
|
||||||
|
- "subtask for 5: handle edge cases"
|
||||||
|
- "5: validate user input" → adds subtask to task 5
|
||||||
|
|
||||||
|
## Execution Modes
|
||||||
|
|
||||||
|
### 1. Create New Subtask
|
||||||
|
```bash
|
||||||
|
task-master add-subtask --parent=<id> --title="<title>" --description="<desc>"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Convert Existing Task
|
||||||
|
```bash
|
||||||
|
task-master add-subtask --parent=<id> --task-id=<existing-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
1. **Automatic Subtask Generation**
|
||||||
|
- If title contains "and" or commas, create multiple
|
||||||
|
- Suggest common subtask patterns
|
||||||
|
- Inherit parent's context
|
||||||
|
|
||||||
|
2. **Intelligent Defaults**
|
||||||
|
- Priority based on parent
|
||||||
|
- Appropriate time estimates
|
||||||
|
- Logical dependencies between subtasks
|
||||||
|
|
||||||
|
3. **Validation**
|
||||||
|
- Check parent task complexity
|
||||||
|
- Warn if too many subtasks
|
||||||
|
- Ensure subtask makes sense
|
||||||
|
|
||||||
|
## Creation Process
|
||||||
|
|
||||||
|
1. Parse parent task context
|
||||||
|
2. Generate subtask with ID like "5.1"
|
||||||
|
3. Set appropriate defaults
|
||||||
|
4. Link to parent task
|
||||||
|
5. Update parent's time estimate
|
||||||
|
|
||||||
|
## Example Flows
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/add-subtask to 5: implement user authentication
|
||||||
|
→ Created subtask #5.1: "implement user authentication"
|
||||||
|
→ Parent task #5 now has 1 subtask
|
||||||
|
→ Suggested next subtasks: tests, documentation
|
||||||
|
|
||||||
|
/project:tm/add-subtask 5: setup, implement, test
|
||||||
|
→ Created 3 subtasks:
|
||||||
|
#5.1: setup
|
||||||
|
#5.2: implement
|
||||||
|
#5.3: test
|
||||||
|
```
|
||||||
|
|
||||||
|
## Post-Creation
|
||||||
|
|
||||||
|
- Show updated task hierarchy
|
||||||
|
- Suggest logical next subtasks
|
||||||
|
- Update complexity estimates
|
||||||
|
- Recommend subtask order
|
||||||
78
.claude/commands/tm/add-task/index.md
Normal file
78
.claude/commands/tm/add-task/index.md
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
Add new tasks with intelligent parsing and context awareness.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Smart Task Addition
|
||||||
|
|
||||||
|
Parse natural language to create well-structured tasks.
|
||||||
|
|
||||||
|
### 1. **Input Understanding**
|
||||||
|
|
||||||
|
I'll intelligently parse your request:
|
||||||
|
- Natural language → Structured task
|
||||||
|
- Detect priority from keywords (urgent, ASAP, important)
|
||||||
|
- Infer dependencies from context
|
||||||
|
- Suggest complexity based on description
|
||||||
|
- Determine task type (feature, bug, refactor, test, docs)
|
||||||
|
|
||||||
|
### 2. **Smart Parsing Examples**
|
||||||
|
|
||||||
|
**"Add urgent task to fix login bug"**
|
||||||
|
→ Title: Fix login bug
|
||||||
|
→ Priority: high
|
||||||
|
→ Type: bug
|
||||||
|
→ Suggested complexity: medium
|
||||||
|
|
||||||
|
**"Create task for API documentation after task 23 is done"**
|
||||||
|
→ Title: API documentation
|
||||||
|
→ Dependencies: [23]
|
||||||
|
→ Type: documentation
|
||||||
|
→ Priority: medium
|
||||||
|
|
||||||
|
**"Need to refactor auth module - depends on 12 and 15, high complexity"**
|
||||||
|
→ Title: Refactor auth module
|
||||||
|
→ Dependencies: [12, 15]
|
||||||
|
→ Complexity: high
|
||||||
|
→ Type: refactor
|
||||||
|
|
||||||
|
### 3. **Context Enhancement**
|
||||||
|
|
||||||
|
Based on current project state:
|
||||||
|
- Suggest related existing tasks
|
||||||
|
- Warn about potential conflicts
|
||||||
|
- Recommend dependencies
|
||||||
|
- Propose subtasks if complex
|
||||||
|
|
||||||
|
### 4. **Interactive Refinement**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
Task Preview:
|
||||||
|
─────────────
|
||||||
|
Title: [Extracted title]
|
||||||
|
Priority: [Inferred priority]
|
||||||
|
Dependencies: [Detected dependencies]
|
||||||
|
Complexity: [Estimated complexity]
|
||||||
|
|
||||||
|
Suggestions:
|
||||||
|
- Similar task #34 exists, consider as dependency?
|
||||||
|
- This seems complex, break into subtasks?
|
||||||
|
- Tasks #45-47 work on same module
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. **Validation & Creation**
|
||||||
|
|
||||||
|
Before creating:
|
||||||
|
- Validate dependencies exist
|
||||||
|
- Check for duplicates
|
||||||
|
- Ensure logical ordering
|
||||||
|
- Verify task completeness
|
||||||
|
|
||||||
|
### 6. **Smart Defaults**
|
||||||
|
|
||||||
|
Intelligent defaults based on:
|
||||||
|
- Task type patterns
|
||||||
|
- Team conventions
|
||||||
|
- Historical data
|
||||||
|
- Current sprint/phase
|
||||||
|
|
||||||
|
Result: High-quality tasks from minimal input.
|
||||||
121
.claude/commands/tm/analyze-complexity/index.md
Normal file
121
.claude/commands/tm/analyze-complexity/index.md
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
Analyze task complexity and generate expansion recommendations.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Perform deep analysis of task complexity across the project.
|
||||||
|
|
||||||
|
## Complexity Analysis
|
||||||
|
|
||||||
|
Uses AI to analyze tasks and recommend which ones need breakdown.
|
||||||
|
|
||||||
|
## Execution Options
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master analyze-complexity [--research] [--threshold=5]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Analysis Parameters
|
||||||
|
|
||||||
|
- `--research` → Use research AI for deeper analysis
|
||||||
|
- `--threshold=5` → Only flag tasks above complexity 5
|
||||||
|
- Default: Analyze all pending tasks
|
||||||
|
|
||||||
|
## Analysis Process
|
||||||
|
|
||||||
|
### 1. **Task Evaluation**
|
||||||
|
For each task, AI evaluates:
|
||||||
|
- Technical complexity
|
||||||
|
- Time requirements
|
||||||
|
- Dependency complexity
|
||||||
|
- Risk factors
|
||||||
|
- Knowledge requirements
|
||||||
|
|
||||||
|
### 2. **Complexity Scoring**
|
||||||
|
Assigns score 1-10 based on:
|
||||||
|
- Implementation difficulty
|
||||||
|
- Integration challenges
|
||||||
|
- Testing requirements
|
||||||
|
- Unknown factors
|
||||||
|
- Technical debt risk
|
||||||
|
|
||||||
|
### 3. **Recommendations**
|
||||||
|
For complex tasks:
|
||||||
|
- Suggest expansion approach
|
||||||
|
- Recommend subtask breakdown
|
||||||
|
- Identify risk areas
|
||||||
|
- Propose mitigation strategies
|
||||||
|
|
||||||
|
## Smart Analysis Features
|
||||||
|
|
||||||
|
1. **Pattern Recognition**
|
||||||
|
- Similar task comparisons
|
||||||
|
- Historical complexity accuracy
|
||||||
|
- Team velocity consideration
|
||||||
|
- Technology stack factors
|
||||||
|
|
||||||
|
2. **Contextual Factors**
|
||||||
|
- Team expertise
|
||||||
|
- Available resources
|
||||||
|
- Timeline constraints
|
||||||
|
- Business criticality
|
||||||
|
|
||||||
|
3. **Risk Assessment**
|
||||||
|
- Technical risks
|
||||||
|
- Timeline risks
|
||||||
|
- Dependency risks
|
||||||
|
- Knowledge gaps
|
||||||
|
|
||||||
|
## Output Format
|
||||||
|
|
||||||
|
```
|
||||||
|
Task Complexity Analysis Report
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
High Complexity Tasks (>7):
|
||||||
|
📍 #5 "Implement real-time sync" - Score: 9/10
|
||||||
|
Factors: WebSocket complexity, state management, conflict resolution
|
||||||
|
Recommendation: Expand into 5-7 subtasks
|
||||||
|
Risks: Performance, data consistency
|
||||||
|
|
||||||
|
📍 #12 "Migrate database schema" - Score: 8/10
|
||||||
|
Factors: Data migration, zero downtime, rollback strategy
|
||||||
|
Recommendation: Expand into 4-5 subtasks
|
||||||
|
Risks: Data loss, downtime
|
||||||
|
|
||||||
|
Medium Complexity Tasks (5-7):
|
||||||
|
📍 #23 "Add export functionality" - Score: 6/10
|
||||||
|
Consider expansion if timeline tight
|
||||||
|
|
||||||
|
Low Complexity Tasks (<5):
|
||||||
|
✅ 15 tasks - No expansion needed
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
- Expand immediately: 2 tasks
|
||||||
|
- Consider expanding: 5 tasks
|
||||||
|
- Keep as-is: 15 tasks
|
||||||
|
```
|
||||||
|
|
||||||
|
## Actionable Output
|
||||||
|
|
||||||
|
For each high-complexity task:
|
||||||
|
1. Complexity score with reasoning
|
||||||
|
2. Specific expansion suggestions
|
||||||
|
3. Risk mitigation approaches
|
||||||
|
4. Recommended subtask structure
|
||||||
|
|
||||||
|
## Integration
|
||||||
|
|
||||||
|
Results are:
|
||||||
|
- Saved to `.taskmaster/reports/complexity-analysis.md`
|
||||||
|
- Used by expand command
|
||||||
|
- Inform sprint planning
|
||||||
|
- Guide resource allocation
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
After analysis:
|
||||||
|
```
|
||||||
|
/project:tm/expand 5 # Expand specific task
|
||||||
|
/project:tm/expand/all # Expand all recommended
|
||||||
|
/project:tm/complexity-report # View detailed report
|
||||||
|
```
|
||||||
93
.claude/commands/tm/clear-subtasks/all.md
Normal file
93
.claude/commands/tm/clear-subtasks/all.md
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
Clear all subtasks from all tasks globally.
|
||||||
|
|
||||||
|
## Global Subtask Clearing
|
||||||
|
|
||||||
|
Remove all subtasks across the entire project. Use with extreme caution.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master clear-subtasks --all
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pre-Clear Analysis
|
||||||
|
|
||||||
|
1. **Project-Wide Summary**
|
||||||
|
```
|
||||||
|
Global Subtask Summary
|
||||||
|
━━━━━━━━━━━━━━━━━━━━
|
||||||
|
Total parent tasks: 12
|
||||||
|
Total subtasks: 47
|
||||||
|
- Completed: 15
|
||||||
|
- In-progress: 8
|
||||||
|
- Pending: 24
|
||||||
|
|
||||||
|
Work at risk: ~120 hours
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Critical Warnings**
|
||||||
|
- In-progress subtasks that will lose work
|
||||||
|
- Completed subtasks with valuable history
|
||||||
|
- Complex dependency chains
|
||||||
|
- Integration test results
|
||||||
|
|
||||||
|
## Double Confirmation
|
||||||
|
|
||||||
|
```
|
||||||
|
⚠️ DESTRUCTIVE OPERATION WARNING ⚠️
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
This will remove ALL 47 subtasks from your project
|
||||||
|
Including 8 in-progress and 15 completed subtasks
|
||||||
|
|
||||||
|
This action CANNOT be undone
|
||||||
|
|
||||||
|
Type 'CLEAR ALL SUBTASKS' to confirm:
|
||||||
|
```
|
||||||
|
|
||||||
|
## Smart Safeguards
|
||||||
|
|
||||||
|
- Require explicit confirmation phrase
|
||||||
|
- Create automatic backup
|
||||||
|
- Log all removed data
|
||||||
|
- Option to export first
|
||||||
|
|
||||||
|
## Use Cases
|
||||||
|
|
||||||
|
Valid reasons for global clear:
|
||||||
|
- Project restructuring
|
||||||
|
- Major pivot in approach
|
||||||
|
- Starting fresh breakdown
|
||||||
|
- Switching to different task organization
|
||||||
|
|
||||||
|
## Process
|
||||||
|
|
||||||
|
1. Full project analysis
|
||||||
|
2. Create backup file
|
||||||
|
3. Show detailed impact
|
||||||
|
4. Require confirmation
|
||||||
|
5. Execute removal
|
||||||
|
6. Generate summary report
|
||||||
|
|
||||||
|
## Alternative Suggestions
|
||||||
|
|
||||||
|
Before clearing all:
|
||||||
|
- Export subtasks to file
|
||||||
|
- Clear only pending subtasks
|
||||||
|
- Clear by task category
|
||||||
|
- Archive instead of delete
|
||||||
|
|
||||||
|
## Post-Clear Report
|
||||||
|
|
||||||
|
```
|
||||||
|
Global Subtask Clear Complete
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
Removed: 47 subtasks from 12 tasks
|
||||||
|
Backup saved: .taskmaster/backup/subtasks-20240115.json
|
||||||
|
Parent tasks updated: 12
|
||||||
|
Time estimates adjusted: Yes
|
||||||
|
|
||||||
|
Next steps:
|
||||||
|
- Review updated task list
|
||||||
|
- Re-expand complex tasks as needed
|
||||||
|
- Check project timeline
|
||||||
|
```
|
||||||
86
.claude/commands/tm/clear-subtasks/index.md
Normal file
86
.claude/commands/tm/clear-subtasks/index.md
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
Clear all subtasks from a specific task.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (task ID)
|
||||||
|
|
||||||
|
Remove all subtasks from a parent task at once.
|
||||||
|
|
||||||
|
## Clearing Subtasks
|
||||||
|
|
||||||
|
Bulk removal of all subtasks from a parent task.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master clear-subtasks --id=<task-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pre-Clear Analysis
|
||||||
|
|
||||||
|
1. **Subtask Summary**
|
||||||
|
- Number of subtasks
|
||||||
|
- Completion status of each
|
||||||
|
- Work already done
|
||||||
|
- Dependencies affected
|
||||||
|
|
||||||
|
2. **Impact Assessment**
|
||||||
|
- Data that will be lost
|
||||||
|
- Dependencies to be removed
|
||||||
|
- Effect on project timeline
|
||||||
|
- Parent task implications
|
||||||
|
|
||||||
|
## Confirmation Required
|
||||||
|
|
||||||
|
```
|
||||||
|
Clear Subtasks Confirmation
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
Parent Task: #5 "Implement user authentication"
|
||||||
|
Subtasks to remove: 4
|
||||||
|
- #5.1 "Setup auth framework" (done)
|
||||||
|
- #5.2 "Create login form" (in-progress)
|
||||||
|
- #5.3 "Add validation" (pending)
|
||||||
|
- #5.4 "Write tests" (pending)
|
||||||
|
|
||||||
|
⚠️ This will permanently delete all subtask data
|
||||||
|
Continue? (y/n)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
- Option to convert to standalone tasks
|
||||||
|
- Backup task data before clearing
|
||||||
|
- Preserve completed work history
|
||||||
|
- Update parent task appropriately
|
||||||
|
|
||||||
|
## Process
|
||||||
|
|
||||||
|
1. List all subtasks for confirmation
|
||||||
|
2. Check for in-progress work
|
||||||
|
3. Remove all subtasks
|
||||||
|
4. Update parent task
|
||||||
|
5. Clean up dependencies
|
||||||
|
|
||||||
|
## Alternative Options
|
||||||
|
|
||||||
|
Suggest alternatives:
|
||||||
|
- Convert important subtasks to tasks
|
||||||
|
- Keep completed subtasks
|
||||||
|
- Archive instead of delete
|
||||||
|
- Export subtask data first
|
||||||
|
|
||||||
|
## Post-Clear
|
||||||
|
|
||||||
|
- Show updated parent task
|
||||||
|
- Recalculate time estimates
|
||||||
|
- Update task complexity
|
||||||
|
- Suggest next steps
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/clear-subtasks 5
|
||||||
|
→ Found 4 subtasks to remove
|
||||||
|
→ Warning: Subtask #5.2 is in-progress
|
||||||
|
→ Cleared all subtasks from task #5
|
||||||
|
→ Updated parent task estimates
|
||||||
|
→ Suggestion: Consider re-expanding with better breakdown
|
||||||
|
```
|
||||||
117
.claude/commands/tm/complexity-report/index.md
Normal file
117
.claude/commands/tm/complexity-report/index.md
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
Display the task complexity analysis report.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
View the detailed complexity analysis generated by analyze-complexity command.
|
||||||
|
|
||||||
|
## Viewing Complexity Report
|
||||||
|
|
||||||
|
Shows comprehensive task complexity analysis with actionable insights.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master complexity-report [--file=<path>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Report Location
|
||||||
|
|
||||||
|
Default: `.taskmaster/reports/complexity-analysis.md`
|
||||||
|
Custom: Specify with --file parameter
|
||||||
|
|
||||||
|
## Report Contents
|
||||||
|
|
||||||
|
### 1. **Executive Summary**
|
||||||
|
```
|
||||||
|
Complexity Analysis Summary
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
Analysis Date: 2024-01-15
|
||||||
|
Tasks Analyzed: 32
|
||||||
|
High Complexity: 5 (16%)
|
||||||
|
Medium Complexity: 12 (37%)
|
||||||
|
Low Complexity: 15 (47%)
|
||||||
|
|
||||||
|
Critical Findings:
|
||||||
|
- 5 tasks need immediate expansion
|
||||||
|
- 3 tasks have high technical risk
|
||||||
|
- 2 tasks block critical path
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. **Detailed Task Analysis**
|
||||||
|
For each complex task:
|
||||||
|
- Complexity score breakdown
|
||||||
|
- Contributing factors
|
||||||
|
- Specific risks identified
|
||||||
|
- Expansion recommendations
|
||||||
|
- Similar completed tasks
|
||||||
|
|
||||||
|
### 3. **Risk Matrix**
|
||||||
|
Visual representation:
|
||||||
|
```
|
||||||
|
Risk vs Complexity Matrix
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
High Risk | #5(9) #12(8) | #23(6)
|
||||||
|
Med Risk | #34(7) | #45(5) #67(5)
|
||||||
|
Low Risk | #78(8) | [15 tasks]
|
||||||
|
| High Complex | Med Complex
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. **Recommendations**
|
||||||
|
|
||||||
|
**Immediate Actions:**
|
||||||
|
1. Expand task #5 - Critical path + high complexity
|
||||||
|
2. Expand task #12 - High risk + dependencies
|
||||||
|
3. Review task #34 - Consider splitting
|
||||||
|
|
||||||
|
**Sprint Planning:**
|
||||||
|
- Don't schedule multiple high-complexity tasks together
|
||||||
|
- Ensure expertise available for complex tasks
|
||||||
|
- Build in buffer time for unknowns
|
||||||
|
|
||||||
|
## Interactive Features
|
||||||
|
|
||||||
|
When viewing report:
|
||||||
|
1. **Quick Actions**
|
||||||
|
- Press 'e' to expand a task
|
||||||
|
- Press 'd' for task details
|
||||||
|
- Press 'r' to refresh analysis
|
||||||
|
|
||||||
|
2. **Filtering**
|
||||||
|
- View by complexity level
|
||||||
|
- Filter by risk factors
|
||||||
|
- Show only actionable items
|
||||||
|
|
||||||
|
3. **Export Options**
|
||||||
|
- Markdown format
|
||||||
|
- CSV for spreadsheets
|
||||||
|
- JSON for tools
|
||||||
|
|
||||||
|
## Report Intelligence
|
||||||
|
|
||||||
|
- Compares with historical data
|
||||||
|
- Shows complexity trends
|
||||||
|
- Identifies patterns
|
||||||
|
- Suggests process improvements
|
||||||
|
|
||||||
|
## Integration
|
||||||
|
|
||||||
|
Use report for:
|
||||||
|
- Sprint planning sessions
|
||||||
|
- Resource allocation
|
||||||
|
- Risk assessment
|
||||||
|
- Team discussions
|
||||||
|
- Client updates
|
||||||
|
|
||||||
|
## Example Usage
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/complexity-report
|
||||||
|
→ Opens latest analysis
|
||||||
|
|
||||||
|
/project:tm/complexity-report --file=archived/2024-01-01.md
|
||||||
|
→ View historical analysis
|
||||||
|
|
||||||
|
After viewing:
|
||||||
|
/project:tm/expand 5
|
||||||
|
→ Expand high-complexity task
|
||||||
|
```
|
||||||
51
.claude/commands/tm/expand/all.md
Normal file
51
.claude/commands/tm/expand/all.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
Expand all pending tasks that need subtasks.
|
||||||
|
|
||||||
|
## Bulk Task Expansion
|
||||||
|
|
||||||
|
Intelligently expands all tasks that would benefit from breakdown.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master expand --all
|
||||||
|
```
|
||||||
|
|
||||||
|
## Smart Selection
|
||||||
|
|
||||||
|
Only expands tasks that:
|
||||||
|
- Are marked as pending
|
||||||
|
- Have high complexity (>5)
|
||||||
|
- Lack existing subtasks
|
||||||
|
- Would benefit from breakdown
|
||||||
|
|
||||||
|
## Expansion Process
|
||||||
|
|
||||||
|
1. **Analysis Phase**
|
||||||
|
- Identify expansion candidates
|
||||||
|
- Group related tasks
|
||||||
|
- Plan expansion strategy
|
||||||
|
|
||||||
|
2. **Batch Processing**
|
||||||
|
- Expand tasks in logical order
|
||||||
|
- Maintain consistency
|
||||||
|
- Preserve relationships
|
||||||
|
- Optimize for parallelism
|
||||||
|
|
||||||
|
3. **Quality Control**
|
||||||
|
- Ensure subtask quality
|
||||||
|
- Avoid over-decomposition
|
||||||
|
- Maintain task coherence
|
||||||
|
- Update dependencies
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
- Add `force` to expand all regardless of complexity
|
||||||
|
- Add `research` for enhanced AI analysis
|
||||||
|
|
||||||
|
## Results
|
||||||
|
|
||||||
|
After bulk expansion:
|
||||||
|
- Summary of tasks expanded
|
||||||
|
- New subtask count
|
||||||
|
- Updated complexity metrics
|
||||||
|
- Suggested task order
|
||||||
49
.claude/commands/tm/expand/index.md
Normal file
49
.claude/commands/tm/expand/index.md
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
Break down a complex task into subtasks.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (task ID)
|
||||||
|
|
||||||
|
## Intelligent Task Expansion
|
||||||
|
|
||||||
|
Analyzes a task and creates detailed subtasks for better manageability.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master expand --id=$ARGUMENTS
|
||||||
|
```
|
||||||
|
|
||||||
|
## Expansion Process
|
||||||
|
|
||||||
|
1. **Task Analysis**
|
||||||
|
- Review task complexity
|
||||||
|
- Identify components
|
||||||
|
- Detect technical challenges
|
||||||
|
- Estimate time requirements
|
||||||
|
|
||||||
|
2. **Subtask Generation**
|
||||||
|
- Create 3-7 subtasks typically
|
||||||
|
- Each subtask 1-4 hours
|
||||||
|
- Logical implementation order
|
||||||
|
- Clear acceptance criteria
|
||||||
|
|
||||||
|
3. **Smart Breakdown**
|
||||||
|
- Setup/configuration tasks
|
||||||
|
- Core implementation
|
||||||
|
- Testing components
|
||||||
|
- Integration steps
|
||||||
|
- Documentation updates
|
||||||
|
|
||||||
|
## Enhanced Features
|
||||||
|
|
||||||
|
Based on task type:
|
||||||
|
- **Feature**: Setup → Implement → Test → Integrate
|
||||||
|
- **Bug Fix**: Reproduce → Diagnose → Fix → Verify
|
||||||
|
- **Refactor**: Analyze → Plan → Refactor → Validate
|
||||||
|
|
||||||
|
## Post-Expansion
|
||||||
|
|
||||||
|
After expansion:
|
||||||
|
1. Show subtask hierarchy
|
||||||
|
2. Update time estimates
|
||||||
|
3. Suggest implementation order
|
||||||
|
4. Highlight critical path
|
||||||
81
.claude/commands/tm/fix-dependencies/index.md
Normal file
81
.claude/commands/tm/fix-dependencies/index.md
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
Automatically fix dependency issues found during validation.
|
||||||
|
|
||||||
|
## Automatic Dependency Repair
|
||||||
|
|
||||||
|
Intelligently fixes common dependency problems while preserving project logic.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master fix-dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
## What Gets Fixed
|
||||||
|
|
||||||
|
### 1. **Auto-Fixable Issues**
|
||||||
|
- Remove references to deleted tasks
|
||||||
|
- Break simple circular dependencies
|
||||||
|
- Remove self-dependencies
|
||||||
|
- Clean up duplicate dependencies
|
||||||
|
|
||||||
|
### 2. **Smart Resolutions**
|
||||||
|
- Reorder dependencies to maintain logic
|
||||||
|
- Suggest task merging for over-dependent tasks
|
||||||
|
- Flatten unnecessary dependency chains
|
||||||
|
- Remove redundant transitive dependencies
|
||||||
|
|
||||||
|
### 3. **Manual Review Required**
|
||||||
|
- Complex circular dependencies
|
||||||
|
- Critical path modifications
|
||||||
|
- Business logic dependencies
|
||||||
|
- High-impact changes
|
||||||
|
|
||||||
|
## Fix Process
|
||||||
|
|
||||||
|
1. **Analysis Phase**
|
||||||
|
- Run validation check
|
||||||
|
- Categorize issues by type
|
||||||
|
- Determine fix strategy
|
||||||
|
|
||||||
|
2. **Execution Phase**
|
||||||
|
- Apply automatic fixes
|
||||||
|
- Log all changes made
|
||||||
|
- Preserve task relationships
|
||||||
|
|
||||||
|
3. **Verification Phase**
|
||||||
|
- Re-validate after fixes
|
||||||
|
- Show before/after comparison
|
||||||
|
- Highlight manual fixes needed
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
- Preserves intended task flow
|
||||||
|
- Minimal disruption approach
|
||||||
|
- Creates fix history/log
|
||||||
|
- Suggests manual interventions
|
||||||
|
|
||||||
|
## Output Example
|
||||||
|
|
||||||
|
```
|
||||||
|
Dependency Auto-Fix Report
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
Fixed Automatically:
|
||||||
|
✅ Removed 2 references to deleted tasks
|
||||||
|
✅ Resolved 1 self-dependency
|
||||||
|
✅ Cleaned 3 redundant dependencies
|
||||||
|
|
||||||
|
Manual Review Needed:
|
||||||
|
⚠️ Complex circular dependency: #12 → #15 → #18 → #12
|
||||||
|
Suggestion: Make #15 not depend on #12
|
||||||
|
⚠️ Task #45 has 8 dependencies
|
||||||
|
Suggestion: Break into subtasks
|
||||||
|
|
||||||
|
Run '/project:tm/validate-dependencies' to verify fixes
|
||||||
|
```
|
||||||
|
|
||||||
|
## Safety
|
||||||
|
|
||||||
|
- Preview mode available
|
||||||
|
- Rollback capability
|
||||||
|
- Change logging
|
||||||
|
- No data loss
|
||||||
121
.claude/commands/tm/generate/index.md
Normal file
121
.claude/commands/tm/generate/index.md
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
Generate individual task files from tasks.json.
|
||||||
|
|
||||||
|
## Task File Generation
|
||||||
|
|
||||||
|
Creates separate markdown files for each task, perfect for AI agents or documentation.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master generate
|
||||||
|
```
|
||||||
|
|
||||||
|
## What It Creates
|
||||||
|
|
||||||
|
For each task, generates a file like `task_001.txt`:
|
||||||
|
|
||||||
|
```
|
||||||
|
Task ID: 1
|
||||||
|
Title: Implement user authentication
|
||||||
|
Status: pending
|
||||||
|
Priority: high
|
||||||
|
Dependencies: []
|
||||||
|
Created: 2024-01-15
|
||||||
|
Complexity: 7
|
||||||
|
|
||||||
|
## Description
|
||||||
|
Create a secure user authentication system with login, logout, and session management.
|
||||||
|
|
||||||
|
## Details
|
||||||
|
- Use JWT tokens for session management
|
||||||
|
- Implement secure password hashing
|
||||||
|
- Add remember me functionality
|
||||||
|
- Include password reset flow
|
||||||
|
|
||||||
|
## Test Strategy
|
||||||
|
- Unit tests for auth functions
|
||||||
|
- Integration tests for login flow
|
||||||
|
- Security testing for vulnerabilities
|
||||||
|
- Performance tests for concurrent logins
|
||||||
|
|
||||||
|
## Subtasks
|
||||||
|
1.1 Setup authentication framework (pending)
|
||||||
|
1.2 Create login endpoints (pending)
|
||||||
|
1.3 Implement session management (pending)
|
||||||
|
1.4 Add password reset (pending)
|
||||||
|
```
|
||||||
|
|
||||||
|
## File Organization
|
||||||
|
|
||||||
|
Creates structure:
|
||||||
|
```
|
||||||
|
.taskmaster/
|
||||||
|
└── tasks/
|
||||||
|
├── task_001.txt
|
||||||
|
├── task_002.txt
|
||||||
|
├── task_003.txt
|
||||||
|
└── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
1. **Consistent Formatting**
|
||||||
|
- Standardized structure
|
||||||
|
- Clear sections
|
||||||
|
- AI-readable format
|
||||||
|
- Markdown compatible
|
||||||
|
|
||||||
|
2. **Contextual Information**
|
||||||
|
- Full task details
|
||||||
|
- Related task references
|
||||||
|
- Progress indicators
|
||||||
|
- Implementation notes
|
||||||
|
|
||||||
|
3. **Incremental Updates**
|
||||||
|
- Only regenerate changed tasks
|
||||||
|
- Preserve custom additions
|
||||||
|
- Track generation timestamp
|
||||||
|
- Version control friendly
|
||||||
|
|
||||||
|
## Use Cases
|
||||||
|
|
||||||
|
- **AI Context**: Provide task context to AI assistants
|
||||||
|
- **Documentation**: Standalone task documentation
|
||||||
|
- **Archival**: Task history preservation
|
||||||
|
- **Sharing**: Send specific tasks to team members
|
||||||
|
- **Review**: Easier task review process
|
||||||
|
|
||||||
|
## Generation Options
|
||||||
|
|
||||||
|
Based on arguments:
|
||||||
|
- Filter by status
|
||||||
|
- Include/exclude completed
|
||||||
|
- Custom templates
|
||||||
|
- Different formats
|
||||||
|
|
||||||
|
## Post-Generation
|
||||||
|
|
||||||
|
```
|
||||||
|
Task File Generation Complete
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
Generated: 45 task files
|
||||||
|
Location: .taskmaster/tasks/
|
||||||
|
Total size: 156 KB
|
||||||
|
|
||||||
|
New files: 5
|
||||||
|
Updated files: 12
|
||||||
|
Unchanged: 28
|
||||||
|
|
||||||
|
Ready for:
|
||||||
|
- AI agent consumption
|
||||||
|
- Version control
|
||||||
|
- Team distribution
|
||||||
|
```
|
||||||
|
|
||||||
|
## Integration Benefits
|
||||||
|
|
||||||
|
- Git-trackable task history
|
||||||
|
- Easy task sharing
|
||||||
|
- AI tool compatibility
|
||||||
|
- Offline task access
|
||||||
|
- Backup redundancy
|
||||||
81
.claude/commands/tm/help.md
Normal file
81
.claude/commands/tm/help.md
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
Show help for Task Master commands.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Display help for Task Master commands. If arguments provided, show specific command help.
|
||||||
|
|
||||||
|
## Task Master Command Help
|
||||||
|
|
||||||
|
### Quick Navigation
|
||||||
|
|
||||||
|
Type `/project:tm/` and use tab completion to explore all commands.
|
||||||
|
|
||||||
|
### Command Categories
|
||||||
|
|
||||||
|
#### 🚀 Setup & Installation
|
||||||
|
- `/project:tm/setup/install` - Comprehensive installation guide
|
||||||
|
- `/project:tm/setup/quick-install` - One-line global install
|
||||||
|
|
||||||
|
#### 📋 Project Setup
|
||||||
|
- `/project:tm/init` - Initialize new project
|
||||||
|
- `/project:tm/init/quick` - Quick setup with auto-confirm
|
||||||
|
- `/project:tm/models` - View AI configuration
|
||||||
|
- `/project:tm/models/setup` - Configure AI providers
|
||||||
|
|
||||||
|
#### 🎯 Task Generation
|
||||||
|
- `/project:tm/parse-prd` - Generate tasks from PRD
|
||||||
|
- `/project:tm/parse-prd/with-research` - Enhanced parsing
|
||||||
|
- `/project:tm/generate` - Create task files
|
||||||
|
|
||||||
|
#### 📝 Task Management
|
||||||
|
- `/project:tm/list` - List tasks (natural language filters)
|
||||||
|
- `/project:tm/show <id>` - Display task details
|
||||||
|
- `/project:tm/add-task` - Create new task
|
||||||
|
- `/project:tm/update` - Update tasks naturally
|
||||||
|
- `/project:tm/next` - Get next task recommendation
|
||||||
|
|
||||||
|
#### 🔄 Status Management
|
||||||
|
- `/project:tm/set-status/to-pending <id>`
|
||||||
|
- `/project:tm/set-status/to-in-progress <id>`
|
||||||
|
- `/project:tm/set-status/to-done <id>`
|
||||||
|
- `/project:tm/set-status/to-review <id>`
|
||||||
|
- `/project:tm/set-status/to-deferred <id>`
|
||||||
|
- `/project:tm/set-status/to-cancelled <id>`
|
||||||
|
|
||||||
|
#### 🔍 Analysis & Breakdown
|
||||||
|
- `/project:tm/analyze-complexity` - Analyze task complexity
|
||||||
|
- `/project:tm/expand <id>` - Break down complex task
|
||||||
|
- `/project:tm/expand/all` - Expand all eligible tasks
|
||||||
|
|
||||||
|
#### 🔗 Dependencies
|
||||||
|
- `/project:tm/add-dependency` - Add task dependency
|
||||||
|
- `/project:tm/remove-dependency` - Remove dependency
|
||||||
|
- `/project:tm/validate-dependencies` - Check for issues
|
||||||
|
|
||||||
|
#### 🤖 Workflows
|
||||||
|
- `/project:tm/workflows/smart-flow` - Intelligent workflows
|
||||||
|
- `/project:tm/workflows/pipeline` - Command chaining
|
||||||
|
- `/project:tm/workflows/auto-implement` - Auto-implementation
|
||||||
|
|
||||||
|
#### 📊 Utilities
|
||||||
|
- `/project:tm/utils/analyze` - Project analysis
|
||||||
|
- `/project:tm/status` - Project dashboard
|
||||||
|
- `/project:tm/learn` - Interactive learning
|
||||||
|
|
||||||
|
### Natural Language Examples
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/list pending high priority
|
||||||
|
/project:tm/update mark all API tasks as done
|
||||||
|
/project:tm/add-task create login system with OAuth
|
||||||
|
/project:tm/show current
|
||||||
|
```
|
||||||
|
|
||||||
|
### Getting Started
|
||||||
|
|
||||||
|
1. Install: `/project:tm/setup/quick-install`
|
||||||
|
2. Initialize: `/project:tm/init/quick`
|
||||||
|
3. Learn: `/project:tm/learn start`
|
||||||
|
4. Work: `/project:tm/workflows/smart-flow`
|
||||||
|
|
||||||
|
For detailed command info: `/project:tm/help <command-name>`
|
||||||
130
.claude/commands/tm/index.md
Normal file
130
.claude/commands/tm/index.md
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
# Task Master Command Reference
|
||||||
|
|
||||||
|
Comprehensive command structure for Task Master integration with Claude Code.
|
||||||
|
|
||||||
|
## Command Organization
|
||||||
|
|
||||||
|
Commands are organized hierarchically to match Task Master's CLI structure while providing enhanced Claude Code integration.
|
||||||
|
|
||||||
|
## Project Setup & Configuration
|
||||||
|
|
||||||
|
### `/project:tm/init`
|
||||||
|
- `index` - Initialize new project (handles PRD files intelligently)
|
||||||
|
- `quick` - Quick setup with auto-confirmation (-y flag)
|
||||||
|
|
||||||
|
### `/project:tm/models`
|
||||||
|
- `index` - View current AI model configuration
|
||||||
|
- `setup` - Interactive model configuration
|
||||||
|
- `set-main` - Set primary generation model
|
||||||
|
- `set-research` - Set research model
|
||||||
|
- `set-fallback` - Set fallback model
|
||||||
|
|
||||||
|
## Task Generation
|
||||||
|
|
||||||
|
### `/project:tm/parse-prd`
|
||||||
|
- `index` - Generate tasks from PRD document
|
||||||
|
- `with-research` - Enhanced parsing with research mode
|
||||||
|
|
||||||
|
### `/project:tm/generate`
|
||||||
|
- Create individual task files from tasks.json
|
||||||
|
|
||||||
|
## Task Management
|
||||||
|
|
||||||
|
### `/project:tm/list`
|
||||||
|
- `index` - Smart listing with natural language filters
|
||||||
|
- `with-subtasks` - Include subtasks in hierarchical view
|
||||||
|
- `by-status` - Filter by specific status
|
||||||
|
|
||||||
|
### `/project:tm/set-status`
|
||||||
|
- `to-pending` - Reset task to pending
|
||||||
|
- `to-in-progress` - Start working on task
|
||||||
|
- `to-done` - Mark task complete
|
||||||
|
- `to-review` - Submit for review
|
||||||
|
- `to-deferred` - Defer task
|
||||||
|
- `to-cancelled` - Cancel task
|
||||||
|
|
||||||
|
### `/project:tm/sync-readme`
|
||||||
|
- Export tasks to README.md with formatting
|
||||||
|
|
||||||
|
### `/project:tm/update`
|
||||||
|
- `index` - Update tasks with natural language
|
||||||
|
- `from-id` - Update multiple tasks from a starting point
|
||||||
|
- `single` - Update specific task
|
||||||
|
|
||||||
|
### `/project:tm/add-task`
|
||||||
|
- `index` - Add new task with AI assistance
|
||||||
|
|
||||||
|
### `/project:tm/remove-task`
|
||||||
|
- `index` - Remove task with confirmation
|
||||||
|
|
||||||
|
## Subtask Management
|
||||||
|
|
||||||
|
### `/project:tm/add-subtask`
|
||||||
|
- `index` - Add new subtask to parent
|
||||||
|
- `from-task` - Convert existing task to subtask
|
||||||
|
|
||||||
|
### `/project:tm/remove-subtask`
|
||||||
|
- Remove subtask (with optional conversion)
|
||||||
|
|
||||||
|
### `/project:tm/clear-subtasks`
|
||||||
|
- `index` - Clear subtasks from specific task
|
||||||
|
- `all` - Clear all subtasks globally
|
||||||
|
|
||||||
|
## Task Analysis & Breakdown
|
||||||
|
|
||||||
|
### `/project:tm/analyze-complexity`
|
||||||
|
- Analyze and generate expansion recommendations
|
||||||
|
|
||||||
|
### `/project:tm/complexity-report`
|
||||||
|
- Display complexity analysis report
|
||||||
|
|
||||||
|
### `/project:tm/expand`
|
||||||
|
- `index` - Break down specific task
|
||||||
|
- `all` - Expand all eligible tasks
|
||||||
|
- `with-research` - Enhanced expansion
|
||||||
|
|
||||||
|
## Task Navigation
|
||||||
|
|
||||||
|
### `/project:tm/next`
|
||||||
|
- Intelligent next task recommendation
|
||||||
|
|
||||||
|
### `/project:tm/show`
|
||||||
|
- Display detailed task information
|
||||||
|
|
||||||
|
### `/project:tm/status`
|
||||||
|
- Comprehensive project dashboard
|
||||||
|
|
||||||
|
## Dependency Management
|
||||||
|
|
||||||
|
### `/project:tm/add-dependency`
|
||||||
|
- Add task dependency
|
||||||
|
|
||||||
|
### `/project:tm/remove-dependency`
|
||||||
|
- Remove task dependency
|
||||||
|
|
||||||
|
### `/project:tm/validate-dependencies`
|
||||||
|
- Check for dependency issues
|
||||||
|
|
||||||
|
### `/project:tm/fix-dependencies`
|
||||||
|
- Automatically fix dependency problems
|
||||||
|
|
||||||
|
## Usage Patterns
|
||||||
|
|
||||||
|
### Natural Language
|
||||||
|
Most commands accept natural language arguments:
|
||||||
|
```
|
||||||
|
/project:tm/add-task create user authentication system
|
||||||
|
/project:tm/update mark all API tasks as high priority
|
||||||
|
/project:tm/list show blocked tasks
|
||||||
|
```
|
||||||
|
|
||||||
|
### ID-Based Commands
|
||||||
|
Commands requiring IDs intelligently parse from $ARGUMENTS:
|
||||||
|
```
|
||||||
|
/project:tm/show 45
|
||||||
|
/project:tm/expand 23
|
||||||
|
/project:tm/set-status/to-done 67
|
||||||
|
```
|
||||||
|
|
||||||
|
### Smart Defaults
|
||||||
|
Commands provide intelligent defaults and suggestions based on context.
|
||||||
50
.claude/commands/tm/init/index.md
Normal file
50
.claude/commands/tm/init/index.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
Initialize a new Task Master project.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Parse arguments to determine initialization preferences.
|
||||||
|
|
||||||
|
## Initialization Process
|
||||||
|
|
||||||
|
1. **Parse Arguments**
|
||||||
|
- PRD file path (if provided)
|
||||||
|
- Project name
|
||||||
|
- Auto-confirm flag (-y)
|
||||||
|
|
||||||
|
2. **Project Setup**
|
||||||
|
```bash
|
||||||
|
task-master init
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Smart Initialization**
|
||||||
|
- Detect existing project files
|
||||||
|
- Suggest project name from directory
|
||||||
|
- Check for git repository
|
||||||
|
- Verify AI provider configuration
|
||||||
|
|
||||||
|
## Configuration Options
|
||||||
|
|
||||||
|
Based on arguments:
|
||||||
|
- `quick` / `-y` → Skip confirmations
|
||||||
|
- `<file.md>` → Use as PRD after init
|
||||||
|
- `--name=<name>` → Set project name
|
||||||
|
- `--description=<desc>` → Set description
|
||||||
|
|
||||||
|
## Post-Initialization
|
||||||
|
|
||||||
|
After successful init:
|
||||||
|
1. Show project structure created
|
||||||
|
2. Verify AI models configured
|
||||||
|
3. Suggest next steps:
|
||||||
|
- Parse PRD if available
|
||||||
|
- Configure AI providers
|
||||||
|
- Set up git hooks
|
||||||
|
- Create first tasks
|
||||||
|
|
||||||
|
## Integration
|
||||||
|
|
||||||
|
If PRD file provided:
|
||||||
|
```
|
||||||
|
/project:tm/init my-prd.md
|
||||||
|
→ Automatically runs parse-prd after init
|
||||||
|
```
|
||||||
46
.claude/commands/tm/init/quick.md
Normal file
46
.claude/commands/tm/init/quick.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
Quick initialization with auto-confirmation.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Initialize a Task Master project without prompts, accepting all defaults.
|
||||||
|
|
||||||
|
## Quick Setup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master init -y
|
||||||
|
```
|
||||||
|
|
||||||
|
## What It Does
|
||||||
|
|
||||||
|
1. Creates `.taskmaster/` directory structure
|
||||||
|
2. Initializes empty `tasks.json`
|
||||||
|
3. Sets up default configuration
|
||||||
|
4. Uses directory name as project name
|
||||||
|
5. Skips all confirmation prompts
|
||||||
|
|
||||||
|
## Smart Defaults
|
||||||
|
|
||||||
|
- Project name: Current directory name
|
||||||
|
- Description: "Task Master Project"
|
||||||
|
- Model config: Existing environment vars
|
||||||
|
- Task structure: Standard format
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
After quick init:
|
||||||
|
1. Configure AI models if needed:
|
||||||
|
```
|
||||||
|
/project:tm/models/setup
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Parse PRD if available:
|
||||||
|
```
|
||||||
|
/project:tm/parse-prd <file>
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Or create first task:
|
||||||
|
```
|
||||||
|
/project:tm/add-task create initial setup
|
||||||
|
```
|
||||||
|
|
||||||
|
Perfect for rapid project setup!
|
||||||
103
.claude/commands/tm/learn.md
Normal file
103
.claude/commands/tm/learn.md
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
Learn about Task Master capabilities through interactive exploration.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Interactive Task Master Learning
|
||||||
|
|
||||||
|
Based on your input, I'll help you discover capabilities:
|
||||||
|
|
||||||
|
### 1. **What are you trying to do?**
|
||||||
|
|
||||||
|
If $ARGUMENTS contains:
|
||||||
|
- "start" / "begin" → Show project initialization workflows
|
||||||
|
- "manage" / "organize" → Show task management commands
|
||||||
|
- "automate" / "auto" → Show automation workflows
|
||||||
|
- "analyze" / "report" → Show analysis tools
|
||||||
|
- "fix" / "problem" → Show troubleshooting commands
|
||||||
|
- "fast" / "quick" → Show efficiency shortcuts
|
||||||
|
|
||||||
|
### 2. **Intelligent Suggestions**
|
||||||
|
|
||||||
|
Based on your project state:
|
||||||
|
|
||||||
|
**No tasks yet?**
|
||||||
|
```
|
||||||
|
You'll want to start with:
|
||||||
|
1. /project:task-master:init <prd-file>
|
||||||
|
→ Creates tasks from requirements
|
||||||
|
|
||||||
|
2. /project:task-master:parse-prd <file>
|
||||||
|
→ Alternative task generation
|
||||||
|
|
||||||
|
Try: /project:task-master:init demo-prd.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**Have tasks?**
|
||||||
|
Let me analyze what you might need...
|
||||||
|
- Many pending tasks? → Learn sprint planning
|
||||||
|
- Complex tasks? → Learn task expansion
|
||||||
|
- Daily work? → Learn workflow automation
|
||||||
|
|
||||||
|
### 3. **Command Discovery**
|
||||||
|
|
||||||
|
**By Category:**
|
||||||
|
- 📋 Task Management: list, show, add, update, complete
|
||||||
|
- 🔄 Workflows: auto-implement, sprint-plan, daily-standup
|
||||||
|
- 🛠️ Utilities: check-health, complexity-report, sync-memory
|
||||||
|
- 🔍 Analysis: validate-deps, show dependencies
|
||||||
|
|
||||||
|
**By Scenario:**
|
||||||
|
- "I want to see what to work on" → `/project:task-master:next`
|
||||||
|
- "I need to break this down" → `/project:task-master:expand <id>`
|
||||||
|
- "Show me everything" → `/project:task-master:status`
|
||||||
|
- "Just do it for me" → `/project:workflows:auto-implement`
|
||||||
|
|
||||||
|
### 4. **Power User Patterns**
|
||||||
|
|
||||||
|
**Command Chaining:**
|
||||||
|
```
|
||||||
|
/project:task-master:next
|
||||||
|
/project:task-master:start <id>
|
||||||
|
/project:workflows:auto-implement
|
||||||
|
```
|
||||||
|
|
||||||
|
**Smart Filters:**
|
||||||
|
```
|
||||||
|
/project:task-master:list pending high
|
||||||
|
/project:task-master:list blocked
|
||||||
|
/project:task-master:list 1-5 tree
|
||||||
|
```
|
||||||
|
|
||||||
|
**Automation:**
|
||||||
|
```
|
||||||
|
/project:workflows:pipeline init → expand-all → sprint-plan
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. **Learning Path**
|
||||||
|
|
||||||
|
Based on your experience level:
|
||||||
|
|
||||||
|
**Beginner Path:**
|
||||||
|
1. init → Create project
|
||||||
|
2. status → Understand state
|
||||||
|
3. next → Find work
|
||||||
|
4. complete → Finish task
|
||||||
|
|
||||||
|
**Intermediate Path:**
|
||||||
|
1. expand → Break down complex tasks
|
||||||
|
2. sprint-plan → Organize work
|
||||||
|
3. complexity-report → Understand difficulty
|
||||||
|
4. validate-deps → Ensure consistency
|
||||||
|
|
||||||
|
**Advanced Path:**
|
||||||
|
1. pipeline → Chain operations
|
||||||
|
2. smart-flow → Context-aware automation
|
||||||
|
3. Custom commands → Extend the system
|
||||||
|
|
||||||
|
### 6. **Try This Now**
|
||||||
|
|
||||||
|
Based on what you asked about, try:
|
||||||
|
[Specific command suggestion based on $ARGUMENTS]
|
||||||
|
|
||||||
|
Want to learn more about a specific command?
|
||||||
|
Type: /project:help <command-name>
|
||||||
39
.claude/commands/tm/list/by-status.md
Normal file
39
.claude/commands/tm/list/by-status.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
List tasks filtered by a specific status.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Parse the status from arguments and list only tasks matching that status.
|
||||||
|
|
||||||
|
## Status Options
|
||||||
|
- `pending` - Not yet started
|
||||||
|
- `in-progress` - Currently being worked on
|
||||||
|
- `done` - Completed
|
||||||
|
- `review` - Awaiting review
|
||||||
|
- `deferred` - Postponed
|
||||||
|
- `cancelled` - Cancelled
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
Based on $ARGUMENTS, run:
|
||||||
|
```bash
|
||||||
|
task-master list --status=$ARGUMENTS
|
||||||
|
```
|
||||||
|
|
||||||
|
## Enhanced Display
|
||||||
|
|
||||||
|
For the filtered results:
|
||||||
|
- Group by priority within the status
|
||||||
|
- Show time in current status
|
||||||
|
- Highlight tasks approaching deadlines
|
||||||
|
- Display blockers and dependencies
|
||||||
|
- Suggest next actions for each status group
|
||||||
|
|
||||||
|
## Intelligent Insights
|
||||||
|
|
||||||
|
Based on the status filter:
|
||||||
|
- **Pending**: Show recommended start order
|
||||||
|
- **In-Progress**: Display idle time warnings
|
||||||
|
- **Done**: Show newly unblocked tasks
|
||||||
|
- **Review**: Indicate review duration
|
||||||
|
- **Deferred**: Show reactivation criteria
|
||||||
|
- **Cancelled**: Display impact analysis
|
||||||
43
.claude/commands/tm/list/index.md
Normal file
43
.claude/commands/tm/list/index.md
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
List tasks with intelligent argument parsing.
|
||||||
|
|
||||||
|
Parse arguments to determine filters and display options:
|
||||||
|
- Status: pending, in-progress, done, review, deferred, cancelled
|
||||||
|
- Priority: high, medium, low (or priority:high)
|
||||||
|
- Special: subtasks, tree, dependencies, blocked
|
||||||
|
- IDs: Direct numbers (e.g., "1,3,5" or "1-5")
|
||||||
|
- Complex: "pending high" = pending AND high priority
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Let me parse your request intelligently:
|
||||||
|
|
||||||
|
1. **Detect Filter Intent**
|
||||||
|
- If arguments contain status keywords → filter by status
|
||||||
|
- If arguments contain priority → filter by priority
|
||||||
|
- If arguments contain "subtasks" → include subtasks
|
||||||
|
- If arguments contain "tree" → hierarchical view
|
||||||
|
- If arguments contain numbers → show specific tasks
|
||||||
|
- If arguments contain "blocked" → show blocked tasks only
|
||||||
|
|
||||||
|
2. **Smart Combinations**
|
||||||
|
Examples of what I understand:
|
||||||
|
- "pending high" → pending tasks with high priority
|
||||||
|
- "done today" → tasks completed today
|
||||||
|
- "blocked" → tasks with unmet dependencies
|
||||||
|
- "1-5" → tasks 1 through 5
|
||||||
|
- "subtasks tree" → hierarchical view with subtasks
|
||||||
|
|
||||||
|
3. **Execute Appropriate Query**
|
||||||
|
Based on parsed intent, run the most specific task-master command
|
||||||
|
|
||||||
|
4. **Enhanced Display**
|
||||||
|
- Group by relevant criteria
|
||||||
|
- Show most important information first
|
||||||
|
- Use visual indicators for quick scanning
|
||||||
|
- Include relevant metrics
|
||||||
|
|
||||||
|
5. **Intelligent Suggestions**
|
||||||
|
Based on what you're viewing, suggest next actions:
|
||||||
|
- Many pending? → Suggest priority order
|
||||||
|
- Many blocked? → Show dependency resolution
|
||||||
|
- Looking at specific tasks? → Show related tasks
|
||||||
29
.claude/commands/tm/list/with-subtasks.md
Normal file
29
.claude/commands/tm/list/with-subtasks.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
List all tasks including their subtasks in a hierarchical view.
|
||||||
|
|
||||||
|
This command shows all tasks with their nested subtasks, providing a complete project overview.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
Run the Task Master list command with subtasks flag:
|
||||||
|
```bash
|
||||||
|
task-master list --with-subtasks
|
||||||
|
```
|
||||||
|
|
||||||
|
## Enhanced Display
|
||||||
|
|
||||||
|
I'll organize the output to show:
|
||||||
|
- Parent tasks with clear indicators
|
||||||
|
- Nested subtasks with proper indentation
|
||||||
|
- Status badges for quick scanning
|
||||||
|
- Dependencies and blockers highlighted
|
||||||
|
- Progress indicators for tasks with subtasks
|
||||||
|
|
||||||
|
## Smart Filtering
|
||||||
|
|
||||||
|
Based on the task hierarchy:
|
||||||
|
- Show completion percentage for parent tasks
|
||||||
|
- Highlight blocked subtask chains
|
||||||
|
- Group by functional areas
|
||||||
|
- Indicate critical path items
|
||||||
|
|
||||||
|
This gives you a complete tree view of your project structure.
|
||||||
51
.claude/commands/tm/models/index.md
Normal file
51
.claude/commands/tm/models/index.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
View current AI model configuration.
|
||||||
|
|
||||||
|
## Model Configuration Display
|
||||||
|
|
||||||
|
Shows the currently configured AI providers and models for Task Master.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master models
|
||||||
|
```
|
||||||
|
|
||||||
|
## Information Displayed
|
||||||
|
|
||||||
|
1. **Main Provider**
|
||||||
|
- Model ID and name
|
||||||
|
- API key status (configured/missing)
|
||||||
|
- Usage: Primary task generation
|
||||||
|
|
||||||
|
2. **Research Provider**
|
||||||
|
- Model ID and name
|
||||||
|
- API key status
|
||||||
|
- Usage: Enhanced research mode
|
||||||
|
|
||||||
|
3. **Fallback Provider**
|
||||||
|
- Model ID and name
|
||||||
|
- API key status
|
||||||
|
- Usage: Backup when main fails
|
||||||
|
|
||||||
|
## Visual Status
|
||||||
|
|
||||||
|
```
|
||||||
|
Task Master AI Model Configuration
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
Main: ✅ claude-3-5-sonnet (configured)
|
||||||
|
Research: ✅ perplexity-sonar (configured)
|
||||||
|
Fallback: ⚠️ Not configured (optional)
|
||||||
|
|
||||||
|
Available Models:
|
||||||
|
- claude-3-5-sonnet
|
||||||
|
- gpt-4-turbo
|
||||||
|
- gpt-3.5-turbo
|
||||||
|
- perplexity-sonar
|
||||||
|
```
|
||||||
|
|
||||||
|
## Next Actions
|
||||||
|
|
||||||
|
Based on configuration:
|
||||||
|
- If missing API keys → Suggest setup
|
||||||
|
- If no research model → Explain benefits
|
||||||
|
- If all configured → Show usage tips
|
||||||
51
.claude/commands/tm/models/setup.md
Normal file
51
.claude/commands/tm/models/setup.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
Run interactive setup to configure AI models.
|
||||||
|
|
||||||
|
## Interactive Model Configuration
|
||||||
|
|
||||||
|
Guides you through setting up AI providers for Task Master.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master models --setup
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup Process
|
||||||
|
|
||||||
|
1. **Environment Check**
|
||||||
|
- Detect existing API keys
|
||||||
|
- Show current configuration
|
||||||
|
- Identify missing providers
|
||||||
|
|
||||||
|
2. **Provider Selection**
|
||||||
|
- Choose main provider (required)
|
||||||
|
- Select research provider (recommended)
|
||||||
|
- Configure fallback (optional)
|
||||||
|
|
||||||
|
3. **API Key Configuration**
|
||||||
|
- Prompt for missing keys
|
||||||
|
- Validate key format
|
||||||
|
- Test connectivity
|
||||||
|
- Save configuration
|
||||||
|
|
||||||
|
## Smart Recommendations
|
||||||
|
|
||||||
|
Based on your needs:
|
||||||
|
- **For best results**: Claude + Perplexity
|
||||||
|
- **Budget conscious**: GPT-3.5 + Perplexity
|
||||||
|
- **Maximum capability**: GPT-4 + Perplexity + Claude fallback
|
||||||
|
|
||||||
|
## Configuration Storage
|
||||||
|
|
||||||
|
Keys can be stored in:
|
||||||
|
1. Environment variables (recommended)
|
||||||
|
2. `.env` file in project
|
||||||
|
3. Global `.taskmaster/config`
|
||||||
|
|
||||||
|
## Post-Setup
|
||||||
|
|
||||||
|
After configuration:
|
||||||
|
- Test each provider
|
||||||
|
- Show usage examples
|
||||||
|
- Suggest next steps
|
||||||
|
- Verify parse-prd works
|
||||||
66
.claude/commands/tm/next/index.md
Normal file
66
.claude/commands/tm/next/index.md
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
Intelligently determine and prepare the next action based on comprehensive context.
|
||||||
|
|
||||||
|
This enhanced version of 'next' considers:
|
||||||
|
- Current task states
|
||||||
|
- Recent activity
|
||||||
|
- Time constraints
|
||||||
|
- Dependencies
|
||||||
|
- Your working patterns
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Intelligent Next Action
|
||||||
|
|
||||||
|
### 1. **Context Gathering**
|
||||||
|
Let me analyze the current situation:
|
||||||
|
- Active tasks (in-progress)
|
||||||
|
- Recently completed tasks
|
||||||
|
- Blocked tasks
|
||||||
|
- Time since last activity
|
||||||
|
- Arguments provided: $ARGUMENTS
|
||||||
|
|
||||||
|
### 2. **Smart Decision Tree**
|
||||||
|
|
||||||
|
**If you have an in-progress task:**
|
||||||
|
- Has it been idle > 2 hours? → Suggest resuming or switching
|
||||||
|
- Near completion? → Show remaining steps
|
||||||
|
- Blocked? → Find alternative task
|
||||||
|
|
||||||
|
**If no in-progress tasks:**
|
||||||
|
- Unblocked high-priority tasks? → Start highest
|
||||||
|
- Complex tasks need breakdown? → Suggest expansion
|
||||||
|
- All tasks blocked? → Show dependency resolution
|
||||||
|
|
||||||
|
**Special arguments handling:**
|
||||||
|
- "quick" → Find task < 2 hours
|
||||||
|
- "easy" → Find low complexity task
|
||||||
|
- "important" → Find high priority regardless of complexity
|
||||||
|
- "continue" → Resume last worked task
|
||||||
|
|
||||||
|
### 3. **Preparation Workflow**
|
||||||
|
|
||||||
|
Based on selected task:
|
||||||
|
1. Show full context and history
|
||||||
|
2. Set up development environment
|
||||||
|
3. Run relevant tests
|
||||||
|
4. Open related files
|
||||||
|
5. Show similar completed tasks
|
||||||
|
6. Estimate completion time
|
||||||
|
|
||||||
|
### 4. **Alternative Suggestions**
|
||||||
|
|
||||||
|
Always provide options:
|
||||||
|
- Primary recommendation
|
||||||
|
- Quick alternative (< 1 hour)
|
||||||
|
- Strategic option (unblocks most tasks)
|
||||||
|
- Learning option (new technology/skill)
|
||||||
|
|
||||||
|
### 5. **Workflow Integration**
|
||||||
|
|
||||||
|
Seamlessly connect to:
|
||||||
|
- `/project:task-master:start [selected]`
|
||||||
|
- `/project:workflows:auto-implement`
|
||||||
|
- `/project:task-master:expand` (if complex)
|
||||||
|
- `/project:utils:complexity-report` (if unsure)
|
||||||
|
|
||||||
|
The goal: Zero friction from decision to implementation.
|
||||||
49
.claude/commands/tm/parse-prd/index.md
Normal file
49
.claude/commands/tm/parse-prd/index.md
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
Parse a PRD document to generate tasks.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (PRD file path)
|
||||||
|
|
||||||
|
## Intelligent PRD Parsing
|
||||||
|
|
||||||
|
Analyzes your requirements document and generates a complete task breakdown.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master parse-prd --input=$ARGUMENTS
|
||||||
|
```
|
||||||
|
|
||||||
|
## Parsing Process
|
||||||
|
|
||||||
|
1. **Document Analysis**
|
||||||
|
- Extract key requirements
|
||||||
|
- Identify technical components
|
||||||
|
- Detect dependencies
|
||||||
|
- Estimate complexity
|
||||||
|
|
||||||
|
2. **Task Generation**
|
||||||
|
- Create 10-15 tasks by default
|
||||||
|
- Include implementation tasks
|
||||||
|
- Add testing tasks
|
||||||
|
- Include documentation tasks
|
||||||
|
- Set logical dependencies
|
||||||
|
|
||||||
|
3. **Smart Enhancements**
|
||||||
|
- Group related functionality
|
||||||
|
- Set appropriate priorities
|
||||||
|
- Add acceptance criteria
|
||||||
|
- Include test strategies
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
Parse arguments for modifiers:
|
||||||
|
- Number after filename → `--num-tasks`
|
||||||
|
- `research` → Use research mode
|
||||||
|
- `comprehensive` → Generate more tasks
|
||||||
|
|
||||||
|
## Post-Generation
|
||||||
|
|
||||||
|
After parsing:
|
||||||
|
1. Display task summary
|
||||||
|
2. Show dependency graph
|
||||||
|
3. Suggest task expansion for complex items
|
||||||
|
4. Recommend sprint planning
|
||||||
48
.claude/commands/tm/parse-prd/with-research.md
Normal file
48
.claude/commands/tm/parse-prd/with-research.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
Parse PRD with enhanced research mode for better task generation.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (PRD file path)
|
||||||
|
|
||||||
|
## Research-Enhanced Parsing
|
||||||
|
|
||||||
|
Uses the research AI provider (typically Perplexity) for more comprehensive task generation with current best practices.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master parse-prd --input=$ARGUMENTS --research
|
||||||
|
```
|
||||||
|
|
||||||
|
## Research Benefits
|
||||||
|
|
||||||
|
1. **Current Best Practices**
|
||||||
|
- Latest framework patterns
|
||||||
|
- Security considerations
|
||||||
|
- Performance optimizations
|
||||||
|
- Accessibility requirements
|
||||||
|
|
||||||
|
2. **Technical Deep Dive**
|
||||||
|
- Implementation approaches
|
||||||
|
- Library recommendations
|
||||||
|
- Architecture patterns
|
||||||
|
- Testing strategies
|
||||||
|
|
||||||
|
3. **Comprehensive Coverage**
|
||||||
|
- Edge cases consideration
|
||||||
|
- Error handling tasks
|
||||||
|
- Monitoring setup
|
||||||
|
- Deployment tasks
|
||||||
|
|
||||||
|
## Enhanced Output
|
||||||
|
|
||||||
|
Research mode typically:
|
||||||
|
- Generates more detailed tasks
|
||||||
|
- Includes industry standards
|
||||||
|
- Adds compliance considerations
|
||||||
|
- Suggests modern tooling
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
- New technology domains
|
||||||
|
- Complex requirements
|
||||||
|
- Regulatory compliance needed
|
||||||
|
- Best practices crucial
|
||||||
62
.claude/commands/tm/remove-dependency/index.md
Normal file
62
.claude/commands/tm/remove-dependency/index.md
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
Remove a dependency between tasks.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Parse the task IDs to remove dependency relationship.
|
||||||
|
|
||||||
|
## Removing Dependencies
|
||||||
|
|
||||||
|
Removes a dependency relationship, potentially unblocking tasks.
|
||||||
|
|
||||||
|
## Argument Parsing
|
||||||
|
|
||||||
|
Parse natural language or IDs:
|
||||||
|
- "remove dependency between 5 and 3"
|
||||||
|
- "5 no longer needs 3"
|
||||||
|
- "unblock 5 from 3"
|
||||||
|
- "5 3" → remove dependency of 5 on 3
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master remove-dependency --id=<task-id> --depends-on=<dependency-id>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pre-Removal Checks
|
||||||
|
|
||||||
|
1. **Verify dependency exists**
|
||||||
|
2. **Check impact on task flow**
|
||||||
|
3. **Warn if it breaks logical sequence**
|
||||||
|
4. **Show what will be unblocked**
|
||||||
|
|
||||||
|
## Smart Analysis
|
||||||
|
|
||||||
|
Before removing:
|
||||||
|
- Show why dependency might have existed
|
||||||
|
- Check if removal makes tasks executable
|
||||||
|
- Verify no critical path disruption
|
||||||
|
- Suggest alternative dependencies
|
||||||
|
|
||||||
|
## Post-Removal
|
||||||
|
|
||||||
|
After removing:
|
||||||
|
1. Show updated task status
|
||||||
|
2. List newly unblocked tasks
|
||||||
|
3. Update project timeline
|
||||||
|
4. Suggest next actions
|
||||||
|
|
||||||
|
## Safety Features
|
||||||
|
|
||||||
|
- Confirm if removing critical dependency
|
||||||
|
- Show tasks that become immediately actionable
|
||||||
|
- Warn about potential issues
|
||||||
|
- Keep removal history
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/remove-dependency 5 from 3
|
||||||
|
→ Removed: Task #5 no longer depends on #3
|
||||||
|
→ Task #5 is now UNBLOCKED and ready to start
|
||||||
|
→ Warning: Consider if #5 still needs #2 completed first
|
||||||
|
```
|
||||||
84
.claude/commands/tm/remove-subtask/index.md
Normal file
84
.claude/commands/tm/remove-subtask/index.md
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
Remove a subtask from its parent task.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Parse subtask ID to remove, with option to convert to standalone task.
|
||||||
|
|
||||||
|
## Removing Subtasks
|
||||||
|
|
||||||
|
Remove a subtask and optionally convert it back to a standalone task.
|
||||||
|
|
||||||
|
## Argument Parsing
|
||||||
|
|
||||||
|
- "remove subtask 5.1"
|
||||||
|
- "delete 5.1"
|
||||||
|
- "convert 5.1 to task" → remove and convert
|
||||||
|
- "5.1 standalone" → convert to standalone
|
||||||
|
|
||||||
|
## Execution Options
|
||||||
|
|
||||||
|
### 1. Delete Subtask
|
||||||
|
```bash
|
||||||
|
task-master remove-subtask --id=<parentId.subtaskId>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Convert to Standalone
|
||||||
|
```bash
|
||||||
|
task-master remove-subtask --id=<parentId.subtaskId> --convert
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pre-Removal Checks
|
||||||
|
|
||||||
|
1. **Validate Subtask**
|
||||||
|
- Verify subtask exists
|
||||||
|
- Check completion status
|
||||||
|
- Review dependencies
|
||||||
|
|
||||||
|
2. **Impact Analysis**
|
||||||
|
- Other subtasks that depend on it
|
||||||
|
- Parent task implications
|
||||||
|
- Data that will be lost
|
||||||
|
|
||||||
|
## Removal Process
|
||||||
|
|
||||||
|
### For Deletion:
|
||||||
|
1. Confirm if subtask has work done
|
||||||
|
2. Update parent task estimates
|
||||||
|
3. Remove subtask and its data
|
||||||
|
4. Clean up dependencies
|
||||||
|
|
||||||
|
### For Conversion:
|
||||||
|
1. Assign new standalone task ID
|
||||||
|
2. Preserve all task data
|
||||||
|
3. Update dependency references
|
||||||
|
4. Maintain task history
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
- Warn if subtask is in-progress
|
||||||
|
- Show impact on parent task
|
||||||
|
- Preserve important data
|
||||||
|
- Update related estimates
|
||||||
|
|
||||||
|
## Example Flows
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/remove-subtask 5.1
|
||||||
|
→ Warning: Subtask #5.1 is in-progress
|
||||||
|
→ This will delete all subtask data
|
||||||
|
→ Parent task #5 will be updated
|
||||||
|
Confirm deletion? (y/n)
|
||||||
|
|
||||||
|
/project:tm/remove-subtask 5.1 convert
|
||||||
|
→ Converting subtask #5.1 to standalone task #89
|
||||||
|
→ Preserved: All task data and history
|
||||||
|
→ Updated: 2 dependency references
|
||||||
|
→ New task #89 is now independent
|
||||||
|
```
|
||||||
|
|
||||||
|
## Post-Removal
|
||||||
|
|
||||||
|
- Update parent task status
|
||||||
|
- Recalculate estimates
|
||||||
|
- Show updated hierarchy
|
||||||
|
- Suggest next actions
|
||||||
107
.claude/commands/tm/remove-task/index.md
Normal file
107
.claude/commands/tm/remove-task/index.md
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
Remove a task permanently from the project.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (task ID)
|
||||||
|
|
||||||
|
Delete a task and handle all its relationships properly.
|
||||||
|
|
||||||
|
## Task Removal
|
||||||
|
|
||||||
|
Permanently removes a task while maintaining project integrity.
|
||||||
|
|
||||||
|
## Argument Parsing
|
||||||
|
|
||||||
|
- "remove task 5"
|
||||||
|
- "delete 5"
|
||||||
|
- "5" → remove task 5
|
||||||
|
- Can include "-y" for auto-confirm
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master remove-task --id=<id> [-y]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pre-Removal Analysis
|
||||||
|
|
||||||
|
1. **Task Details**
|
||||||
|
- Current status
|
||||||
|
- Work completed
|
||||||
|
- Time invested
|
||||||
|
- Associated data
|
||||||
|
|
||||||
|
2. **Relationship Check**
|
||||||
|
- Tasks that depend on this
|
||||||
|
- Dependencies this task has
|
||||||
|
- Subtasks that will be removed
|
||||||
|
- Blocking implications
|
||||||
|
|
||||||
|
3. **Impact Assessment**
|
||||||
|
```
|
||||||
|
Task Removal Impact
|
||||||
|
━━━━━━━━━━━━━━━━━━
|
||||||
|
Task: #5 "Implement authentication" (in-progress)
|
||||||
|
Status: 60% complete (~8 hours work)
|
||||||
|
|
||||||
|
Will affect:
|
||||||
|
- 3 tasks depend on this (will be blocked)
|
||||||
|
- Has 4 subtasks (will be deleted)
|
||||||
|
- Part of critical path
|
||||||
|
|
||||||
|
⚠️ This action cannot be undone
|
||||||
|
```
|
||||||
|
|
||||||
|
## Smart Warnings
|
||||||
|
|
||||||
|
- Warn if task is in-progress
|
||||||
|
- Show dependent tasks that will be blocked
|
||||||
|
- Highlight if part of critical path
|
||||||
|
- Note any completed work being lost
|
||||||
|
|
||||||
|
## Removal Process
|
||||||
|
|
||||||
|
1. Show comprehensive impact
|
||||||
|
2. Require confirmation (unless -y)
|
||||||
|
3. Update dependent task references
|
||||||
|
4. Remove task and subtasks
|
||||||
|
5. Clean up orphaned dependencies
|
||||||
|
6. Log removal with timestamp
|
||||||
|
|
||||||
|
## Alternative Actions
|
||||||
|
|
||||||
|
Suggest before deletion:
|
||||||
|
- Mark as cancelled instead
|
||||||
|
- Convert to documentation
|
||||||
|
- Archive task data
|
||||||
|
- Transfer work to another task
|
||||||
|
|
||||||
|
## Post-Removal
|
||||||
|
|
||||||
|
- List affected tasks
|
||||||
|
- Show broken dependencies
|
||||||
|
- Update project statistics
|
||||||
|
- Suggest dependency fixes
|
||||||
|
- Recalculate timeline
|
||||||
|
|
||||||
|
## Example Flows
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/remove-task 5
|
||||||
|
→ Task #5 is in-progress with 8 hours logged
|
||||||
|
→ 3 other tasks depend on this
|
||||||
|
→ Suggestion: Mark as cancelled instead?
|
||||||
|
Remove anyway? (y/n)
|
||||||
|
|
||||||
|
/project:tm/remove-task 5 -y
|
||||||
|
→ Removed: Task #5 and 4 subtasks
|
||||||
|
→ Updated: 3 task dependencies
|
||||||
|
→ Warning: Tasks #7, #8, #9 now have missing dependency
|
||||||
|
→ Run /project:tm/fix-dependencies to resolve
|
||||||
|
```
|
||||||
|
|
||||||
|
## Safety Features
|
||||||
|
|
||||||
|
- Confirmation required
|
||||||
|
- Impact preview
|
||||||
|
- Removal logging
|
||||||
|
- Suggest alternatives
|
||||||
|
- No cascade delete of dependents
|
||||||
55
.claude/commands/tm/set-status/to-cancelled.md
Normal file
55
.claude/commands/tm/set-status/to-cancelled.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
Cancel a task permanently.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (task ID)
|
||||||
|
|
||||||
|
## Cancelling a Task
|
||||||
|
|
||||||
|
This status indicates a task is no longer needed and won't be completed.
|
||||||
|
|
||||||
|
## Valid Reasons for Cancellation
|
||||||
|
|
||||||
|
- Requirements changed
|
||||||
|
- Feature deprecated
|
||||||
|
- Duplicate of another task
|
||||||
|
- Strategic pivot
|
||||||
|
- Technical approach invalidated
|
||||||
|
|
||||||
|
## Pre-Cancellation Checks
|
||||||
|
|
||||||
|
1. Confirm no critical dependencies
|
||||||
|
2. Check for partial implementation
|
||||||
|
3. Verify cancellation rationale
|
||||||
|
4. Document lessons learned
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master set-status --id=$ARGUMENTS --status=cancelled
|
||||||
|
```
|
||||||
|
|
||||||
|
## Cancellation Impact
|
||||||
|
|
||||||
|
When cancelling:
|
||||||
|
1. **Dependency Updates**
|
||||||
|
- Notify dependent tasks
|
||||||
|
- Update project scope
|
||||||
|
- Recalculate timelines
|
||||||
|
|
||||||
|
2. **Clean-up Actions**
|
||||||
|
- Remove related branches
|
||||||
|
- Archive any work done
|
||||||
|
- Update documentation
|
||||||
|
- Close related issues
|
||||||
|
|
||||||
|
3. **Learning Capture**
|
||||||
|
- Document why cancelled
|
||||||
|
- Note what was learned
|
||||||
|
- Update estimation models
|
||||||
|
- Prevent future duplicates
|
||||||
|
|
||||||
|
## Historical Preservation
|
||||||
|
|
||||||
|
- Keep for reference
|
||||||
|
- Tag with cancellation reason
|
||||||
|
- Link to replacement if any
|
||||||
|
- Maintain audit trail
|
||||||
47
.claude/commands/tm/set-status/to-deferred.md
Normal file
47
.claude/commands/tm/set-status/to-deferred.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
Defer a task for later consideration.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (task ID)
|
||||||
|
|
||||||
|
## Deferring a Task
|
||||||
|
|
||||||
|
This status indicates a task is valid but not currently actionable or prioritized.
|
||||||
|
|
||||||
|
## Valid Reasons for Deferral
|
||||||
|
|
||||||
|
- Waiting for external dependencies
|
||||||
|
- Reprioritized for future sprint
|
||||||
|
- Blocked by technical limitations
|
||||||
|
- Resource constraints
|
||||||
|
- Strategic timing considerations
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master set-status --id=$ARGUMENTS --status=deferred
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deferral Management
|
||||||
|
|
||||||
|
When deferring:
|
||||||
|
1. **Document Reason**
|
||||||
|
- Capture why it's being deferred
|
||||||
|
- Set reactivation criteria
|
||||||
|
- Note any partial work completed
|
||||||
|
|
||||||
|
2. **Impact Analysis**
|
||||||
|
- Check dependent tasks
|
||||||
|
- Update project timeline
|
||||||
|
- Notify affected stakeholders
|
||||||
|
|
||||||
|
3. **Future Planning**
|
||||||
|
- Set review reminders
|
||||||
|
- Tag for specific milestone
|
||||||
|
- Preserve context for reactivation
|
||||||
|
- Link to blocking issues
|
||||||
|
|
||||||
|
## Smart Tracking
|
||||||
|
|
||||||
|
- Monitor deferral duration
|
||||||
|
- Alert when criteria met
|
||||||
|
- Prevent scope creep
|
||||||
|
- Regular review cycles
|
||||||
44
.claude/commands/tm/set-status/to-done.md
Normal file
44
.claude/commands/tm/set-status/to-done.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
Mark a task as completed.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (task ID)
|
||||||
|
|
||||||
|
## Completing a Task
|
||||||
|
|
||||||
|
This command validates task completion and updates project state intelligently.
|
||||||
|
|
||||||
|
## Pre-Completion Checks
|
||||||
|
|
||||||
|
1. Verify test strategy was followed
|
||||||
|
2. Check if all subtasks are complete
|
||||||
|
3. Validate acceptance criteria met
|
||||||
|
4. Ensure code is committed
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master set-status --id=$ARGUMENTS --status=done
|
||||||
|
```
|
||||||
|
|
||||||
|
## Post-Completion Actions
|
||||||
|
|
||||||
|
1. **Update Dependencies**
|
||||||
|
- Identify newly unblocked tasks
|
||||||
|
- Update sprint progress
|
||||||
|
- Recalculate project timeline
|
||||||
|
|
||||||
|
2. **Documentation**
|
||||||
|
- Generate completion summary
|
||||||
|
- Update CLAUDE.md with learnings
|
||||||
|
- Log implementation approach
|
||||||
|
|
||||||
|
3. **Next Steps**
|
||||||
|
- Show newly available tasks
|
||||||
|
- Suggest logical next task
|
||||||
|
- Update velocity metrics
|
||||||
|
|
||||||
|
## Celebration & Learning
|
||||||
|
|
||||||
|
- Show impact of completion
|
||||||
|
- Display unblocked work
|
||||||
|
- Recognize achievement
|
||||||
|
- Capture lessons learned
|
||||||
36
.claude/commands/tm/set-status/to-in-progress.md
Normal file
36
.claude/commands/tm/set-status/to-in-progress.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
Start working on a task by setting its status to in-progress.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (task ID)
|
||||||
|
|
||||||
|
## Starting Work on Task
|
||||||
|
|
||||||
|
This command does more than just change status - it prepares your environment for productive work.
|
||||||
|
|
||||||
|
## Pre-Start Checks
|
||||||
|
|
||||||
|
1. Verify dependencies are met
|
||||||
|
2. Check if another task is already in-progress
|
||||||
|
3. Ensure task details are complete
|
||||||
|
4. Validate test strategy exists
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master set-status --id=$ARGUMENTS --status=in-progress
|
||||||
|
```
|
||||||
|
|
||||||
|
## Environment Setup
|
||||||
|
|
||||||
|
After setting to in-progress:
|
||||||
|
1. Create/checkout appropriate git branch
|
||||||
|
2. Open relevant documentation
|
||||||
|
3. Set up test watchers if applicable
|
||||||
|
4. Display task details and acceptance criteria
|
||||||
|
5. Show similar completed tasks for reference
|
||||||
|
|
||||||
|
## Smart Suggestions
|
||||||
|
|
||||||
|
- Estimated completion time based on complexity
|
||||||
|
- Related files from similar tasks
|
||||||
|
- Potential blockers to watch for
|
||||||
|
- Recommended first steps
|
||||||
32
.claude/commands/tm/set-status/to-pending.md
Normal file
32
.claude/commands/tm/set-status/to-pending.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
Set a task's status to pending.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (task ID)
|
||||||
|
|
||||||
|
## Setting Task to Pending
|
||||||
|
|
||||||
|
This moves a task back to the pending state, useful for:
|
||||||
|
- Resetting erroneously started tasks
|
||||||
|
- Deferring work that was prematurely begun
|
||||||
|
- Reorganizing sprint priorities
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master set-status --id=$ARGUMENTS --status=pending
|
||||||
|
```
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Before setting to pending:
|
||||||
|
- Warn if task is currently in-progress
|
||||||
|
- Check if this will block other tasks
|
||||||
|
- Suggest documenting why it's being reset
|
||||||
|
- Preserve any work already done
|
||||||
|
|
||||||
|
## Smart Actions
|
||||||
|
|
||||||
|
After setting to pending:
|
||||||
|
- Update sprint planning if needed
|
||||||
|
- Notify about freed resources
|
||||||
|
- Suggest priority reassessment
|
||||||
|
- Log the status change with context
|
||||||
40
.claude/commands/tm/set-status/to-review.md
Normal file
40
.claude/commands/tm/set-status/to-review.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
Set a task's status to review.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (task ID)
|
||||||
|
|
||||||
|
## Marking Task for Review
|
||||||
|
|
||||||
|
This status indicates work is complete but needs verification before final approval.
|
||||||
|
|
||||||
|
## When to Use Review Status
|
||||||
|
|
||||||
|
- Code complete but needs peer review
|
||||||
|
- Implementation done but needs testing
|
||||||
|
- Documentation written but needs proofreading
|
||||||
|
- Design complete but needs stakeholder approval
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master set-status --id=$ARGUMENTS --status=review
|
||||||
|
```
|
||||||
|
|
||||||
|
## Review Preparation
|
||||||
|
|
||||||
|
When setting to review:
|
||||||
|
1. **Generate Review Checklist**
|
||||||
|
- Link to PR/MR if applicable
|
||||||
|
- Highlight key changes
|
||||||
|
- Note areas needing attention
|
||||||
|
- Include test results
|
||||||
|
|
||||||
|
2. **Documentation**
|
||||||
|
- Update task with review notes
|
||||||
|
- Link relevant artifacts
|
||||||
|
- Specify reviewers if known
|
||||||
|
|
||||||
|
3. **Smart Actions**
|
||||||
|
- Create review reminders
|
||||||
|
- Track review duration
|
||||||
|
- Suggest reviewers based on expertise
|
||||||
|
- Prepare rollback plan if needed
|
||||||
117
.claude/commands/tm/setup/install.md
Normal file
117
.claude/commands/tm/setup/install.md
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
Check if Task Master is installed and install it if needed.
|
||||||
|
|
||||||
|
This command helps you get Task Master set up globally on your system.
|
||||||
|
|
||||||
|
## Detection and Installation Process
|
||||||
|
|
||||||
|
1. **Check Current Installation**
|
||||||
|
```bash
|
||||||
|
# Check if task-master command exists
|
||||||
|
which task-master || echo "Task Master not found"
|
||||||
|
|
||||||
|
# Check npm global packages
|
||||||
|
npm list -g task-master-ai
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **System Requirements Check**
|
||||||
|
```bash
|
||||||
|
# Verify Node.js is installed
|
||||||
|
node --version
|
||||||
|
|
||||||
|
# Verify npm is installed
|
||||||
|
npm --version
|
||||||
|
|
||||||
|
# Check Node version (need 16+)
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Install Task Master Globally**
|
||||||
|
If not installed, run:
|
||||||
|
```bash
|
||||||
|
npm install -g task-master-ai
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Verify Installation**
|
||||||
|
```bash
|
||||||
|
# Check version
|
||||||
|
task-master --version
|
||||||
|
|
||||||
|
# Verify command is available
|
||||||
|
which task-master
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Initial Setup**
|
||||||
|
```bash
|
||||||
|
# Initialize in current directory
|
||||||
|
task-master init
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Configure AI Provider**
|
||||||
|
Ensure you have at least one AI provider API key set:
|
||||||
|
```bash
|
||||||
|
# Check current configuration
|
||||||
|
task-master models --status
|
||||||
|
|
||||||
|
# If no API keys found, guide setup
|
||||||
|
echo "You'll need at least one API key:"
|
||||||
|
echo "- ANTHROPIC_API_KEY for Claude"
|
||||||
|
echo "- OPENAI_API_KEY for GPT models"
|
||||||
|
echo "- PERPLEXITY_API_KEY for research"
|
||||||
|
echo ""
|
||||||
|
echo "Set them in your shell profile or .env file"
|
||||||
|
```
|
||||||
|
|
||||||
|
7. **Quick Test**
|
||||||
|
```bash
|
||||||
|
# Create a test PRD
|
||||||
|
echo "Build a simple hello world API" > test-prd.txt
|
||||||
|
|
||||||
|
# Try parsing it
|
||||||
|
task-master parse-prd test-prd.txt -n 3
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
If installation fails:
|
||||||
|
|
||||||
|
**Permission Errors:**
|
||||||
|
```bash
|
||||||
|
# Try with sudo (macOS/Linux)
|
||||||
|
sudo npm install -g task-master-ai
|
||||||
|
|
||||||
|
# Or fix npm permissions
|
||||||
|
npm config set prefix ~/.npm-global
|
||||||
|
export PATH=~/.npm-global/bin:$PATH
|
||||||
|
```
|
||||||
|
|
||||||
|
**Network Issues:**
|
||||||
|
```bash
|
||||||
|
# Use different registry
|
||||||
|
npm install -g task-master-ai --registry https://registry.npmjs.org/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Node Version Issues:**
|
||||||
|
```bash
|
||||||
|
# Install Node 18+ via nvm
|
||||||
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
||||||
|
nvm install 18
|
||||||
|
nvm use 18
|
||||||
|
```
|
||||||
|
|
||||||
|
## Success Confirmation
|
||||||
|
|
||||||
|
Once installed, you should see:
|
||||||
|
```
|
||||||
|
✅ Task Master v0.16.2 (or higher) installed
|
||||||
|
✅ Command 'task-master' available globally
|
||||||
|
✅ AI provider configured
|
||||||
|
✅ Ready to use slash commands!
|
||||||
|
|
||||||
|
Try: /project:task-master:init your-prd.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
After installation:
|
||||||
|
1. Run `/project:utils:check-health` to verify setup
|
||||||
|
2. Configure AI providers with `/project:task-master:models`
|
||||||
|
3. Start using Task Master commands!
|
||||||
22
.claude/commands/tm/setup/quick-install.md
Normal file
22
.claude/commands/tm/setup/quick-install.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
Quick install Task Master globally if not already installed.
|
||||||
|
|
||||||
|
Execute this streamlined installation:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check and install in one command
|
||||||
|
task-master --version 2>/dev/null || npm install -g task-master-ai
|
||||||
|
|
||||||
|
# Verify installation
|
||||||
|
task-master --version
|
||||||
|
|
||||||
|
# Quick setup check
|
||||||
|
task-master models --status || echo "Note: You'll need to set up an AI provider API key"
|
||||||
|
```
|
||||||
|
|
||||||
|
If you see "command not found" after installation, you may need to:
|
||||||
|
1. Restart your terminal
|
||||||
|
2. Or add npm global bin to PATH: `export PATH=$(npm bin -g):$PATH`
|
||||||
|
|
||||||
|
Once installed, you can use all the Task Master commands!
|
||||||
|
|
||||||
|
Quick test: Run `/project:help` to see all available commands.
|
||||||
82
.claude/commands/tm/show/index.md
Normal file
82
.claude/commands/tm/show/index.md
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
Show detailed task information with rich context and insights.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Enhanced Task Display
|
||||||
|
|
||||||
|
Parse arguments to determine what to show and how.
|
||||||
|
|
||||||
|
### 1. **Smart Task Selection**
|
||||||
|
|
||||||
|
Based on $ARGUMENTS:
|
||||||
|
- Number → Show specific task with full context
|
||||||
|
- "current" → Show active in-progress task(s)
|
||||||
|
- "next" → Show recommended next task
|
||||||
|
- "blocked" → Show all blocked tasks with reasons
|
||||||
|
- "critical" → Show critical path tasks
|
||||||
|
- Multiple IDs → Comparative view
|
||||||
|
|
||||||
|
### 2. **Contextual Information**
|
||||||
|
|
||||||
|
For each task, intelligently include:
|
||||||
|
|
||||||
|
**Core Details**
|
||||||
|
- Full task information (id, title, description, details)
|
||||||
|
- Current status with history
|
||||||
|
- Test strategy and acceptance criteria
|
||||||
|
- Priority and complexity analysis
|
||||||
|
|
||||||
|
**Relationships**
|
||||||
|
- Dependencies (what it needs)
|
||||||
|
- Dependents (what needs it)
|
||||||
|
- Parent/subtask hierarchy
|
||||||
|
- Related tasks (similar work)
|
||||||
|
|
||||||
|
**Time Intelligence**
|
||||||
|
- Created/updated timestamps
|
||||||
|
- Time in current status
|
||||||
|
- Estimated vs actual time
|
||||||
|
- Historical completion patterns
|
||||||
|
|
||||||
|
### 3. **Visual Enhancements**
|
||||||
|
|
||||||
|
```
|
||||||
|
📋 Task #45: Implement User Authentication
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
Status: 🟡 in-progress (2 hours)
|
||||||
|
Priority: 🔴 High | Complexity: 73/100
|
||||||
|
|
||||||
|
Dependencies: ✅ #41, ✅ #42, ⏳ #43 (blocked)
|
||||||
|
Blocks: #46, #47, #52
|
||||||
|
|
||||||
|
Progress: ████████░░ 80% complete
|
||||||
|
|
||||||
|
Recent Activity:
|
||||||
|
- 2h ago: Status changed to in-progress
|
||||||
|
- 4h ago: Dependency #42 completed
|
||||||
|
- Yesterday: Task expanded with 3 subtasks
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. **Intelligent Insights**
|
||||||
|
|
||||||
|
Based on task analysis:
|
||||||
|
- **Risk Assessment**: Complexity vs time remaining
|
||||||
|
- **Bottleneck Analysis**: Is this blocking critical work?
|
||||||
|
- **Recommendation**: Suggested approach or concerns
|
||||||
|
- **Similar Tasks**: How others completed similar work
|
||||||
|
|
||||||
|
### 5. **Action Suggestions**
|
||||||
|
|
||||||
|
Context-aware next steps:
|
||||||
|
- If blocked → Show how to unblock
|
||||||
|
- If complex → Suggest expansion
|
||||||
|
- If in-progress → Show completion checklist
|
||||||
|
- If done → Show dependent tasks ready to start
|
||||||
|
|
||||||
|
### 6. **Multi-Task View**
|
||||||
|
|
||||||
|
When showing multiple tasks:
|
||||||
|
- Common dependencies
|
||||||
|
- Optimal completion order
|
||||||
|
- Parallel work opportunities
|
||||||
|
- Combined complexity analysis
|
||||||
64
.claude/commands/tm/status/index.md
Normal file
64
.claude/commands/tm/status/index.md
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
Enhanced status command with comprehensive project insights.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Intelligent Status Overview
|
||||||
|
|
||||||
|
### 1. **Executive Summary**
|
||||||
|
Quick dashboard view:
|
||||||
|
- 🏃 Active work (in-progress tasks)
|
||||||
|
- 📊 Progress metrics (% complete, velocity)
|
||||||
|
- 🚧 Blockers and risks
|
||||||
|
- ⏱️ Time analysis (estimated vs actual)
|
||||||
|
- 🎯 Sprint/milestone progress
|
||||||
|
|
||||||
|
### 2. **Contextual Analysis**
|
||||||
|
|
||||||
|
Based on $ARGUMENTS, focus on:
|
||||||
|
- "sprint" → Current sprint progress and burndown
|
||||||
|
- "blocked" → Dependency chains and resolution paths
|
||||||
|
- "team" → Task distribution and workload
|
||||||
|
- "timeline" → Schedule adherence and projections
|
||||||
|
- "risk" → High complexity or overdue items
|
||||||
|
|
||||||
|
### 3. **Smart Insights**
|
||||||
|
|
||||||
|
**Workflow Health:**
|
||||||
|
- Idle tasks (in-progress > 24h without updates)
|
||||||
|
- Bottlenecks (multiple tasks waiting on same dependency)
|
||||||
|
- Quick wins (low complexity, high impact)
|
||||||
|
|
||||||
|
**Predictive Analytics:**
|
||||||
|
- Completion projections based on velocity
|
||||||
|
- Risk of missing deadlines
|
||||||
|
- Recommended task order for optimal flow
|
||||||
|
|
||||||
|
### 4. **Visual Intelligence**
|
||||||
|
|
||||||
|
Dynamic visualization based on data:
|
||||||
|
```
|
||||||
|
Sprint Progress: ████████░░ 80% (16/20 tasks)
|
||||||
|
Velocity Trend: ↗️ +15% this week
|
||||||
|
Blocked Tasks: 🔴 3 critical path items
|
||||||
|
|
||||||
|
Priority Distribution:
|
||||||
|
High: ████████ 8 tasks (2 blocked)
|
||||||
|
Medium: ████░░░░ 4 tasks
|
||||||
|
Low: ██░░░░░░ 2 tasks
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. **Actionable Recommendations**
|
||||||
|
|
||||||
|
Based on analysis:
|
||||||
|
1. **Immediate actions** (unblock critical path)
|
||||||
|
2. **Today's focus** (optimal task sequence)
|
||||||
|
3. **Process improvements** (recurring patterns)
|
||||||
|
4. **Resource needs** (skills, time, dependencies)
|
||||||
|
|
||||||
|
### 6. **Historical Context**
|
||||||
|
|
||||||
|
Compare to previous periods:
|
||||||
|
- Velocity changes
|
||||||
|
- Pattern recognition
|
||||||
|
- Improvement areas
|
||||||
|
- Success patterns to repeat
|
||||||
117
.claude/commands/tm/sync-readme/index.md
Normal file
117
.claude/commands/tm/sync-readme/index.md
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
Export tasks to README.md with professional formatting.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Generate a well-formatted README with current task information.
|
||||||
|
|
||||||
|
## README Synchronization
|
||||||
|
|
||||||
|
Creates or updates README.md with beautifully formatted task information.
|
||||||
|
|
||||||
|
## Argument Parsing
|
||||||
|
|
||||||
|
Optional filters:
|
||||||
|
- "pending" → Only pending tasks
|
||||||
|
- "with-subtasks" → Include subtask details
|
||||||
|
- "by-priority" → Group by priority
|
||||||
|
- "sprint" → Current sprint only
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master sync-readme [--with-subtasks] [--status=<status>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## README Generation
|
||||||
|
|
||||||
|
### 1. **Project Header**
|
||||||
|
```markdown
|
||||||
|
# Project Name
|
||||||
|
|
||||||
|
## 📋 Task Progress
|
||||||
|
|
||||||
|
Last Updated: 2024-01-15 10:30 AM
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
- Total Tasks: 45
|
||||||
|
- Completed: 15 (33%)
|
||||||
|
- In Progress: 5 (11%)
|
||||||
|
- Pending: 25 (56%)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. **Task Sections**
|
||||||
|
Organized by status or priority:
|
||||||
|
- Progress indicators
|
||||||
|
- Task descriptions
|
||||||
|
- Dependencies noted
|
||||||
|
- Time estimates
|
||||||
|
|
||||||
|
### 3. **Visual Elements**
|
||||||
|
- Progress bars
|
||||||
|
- Status badges
|
||||||
|
- Priority indicators
|
||||||
|
- Completion checkmarks
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
1. **Intelligent Grouping**
|
||||||
|
- By feature area
|
||||||
|
- By sprint/milestone
|
||||||
|
- By assigned developer
|
||||||
|
- By priority
|
||||||
|
|
||||||
|
2. **Progress Tracking**
|
||||||
|
- Overall completion
|
||||||
|
- Sprint velocity
|
||||||
|
- Burndown indication
|
||||||
|
- Time tracking
|
||||||
|
|
||||||
|
3. **Formatting Options**
|
||||||
|
- GitHub-flavored markdown
|
||||||
|
- Task checkboxes
|
||||||
|
- Collapsible sections
|
||||||
|
- Table format available
|
||||||
|
|
||||||
|
## Example Output
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## 🚀 Current Sprint
|
||||||
|
|
||||||
|
### In Progress
|
||||||
|
- [ ] 🔄 #5 **Implement user authentication** (60% complete)
|
||||||
|
- Dependencies: API design (#3 ✅)
|
||||||
|
- Subtasks: 4 (2 completed)
|
||||||
|
- Est: 8h / Spent: 5h
|
||||||
|
|
||||||
|
### Pending (High Priority)
|
||||||
|
- [ ] ⚡ #8 **Create dashboard UI**
|
||||||
|
- Blocked by: #5
|
||||||
|
- Complexity: High
|
||||||
|
- Est: 12h
|
||||||
|
```
|
||||||
|
|
||||||
|
## Customization
|
||||||
|
|
||||||
|
Based on arguments:
|
||||||
|
- Include/exclude sections
|
||||||
|
- Detail level control
|
||||||
|
- Custom grouping
|
||||||
|
- Filter by criteria
|
||||||
|
|
||||||
|
## Post-Sync
|
||||||
|
|
||||||
|
After generation:
|
||||||
|
1. Show diff preview
|
||||||
|
2. Backup existing README
|
||||||
|
3. Write new content
|
||||||
|
4. Commit reminder
|
||||||
|
5. Update timestamp
|
||||||
|
|
||||||
|
## Integration
|
||||||
|
|
||||||
|
Works well with:
|
||||||
|
- Git workflows
|
||||||
|
- CI/CD pipelines
|
||||||
|
- Project documentation
|
||||||
|
- Team updates
|
||||||
|
- Client reports
|
||||||
108
.claude/commands/tm/update/from-id.md
Normal file
108
.claude/commands/tm/update/from-id.md
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
Update multiple tasks starting from a specific ID.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Parse starting task ID and update context.
|
||||||
|
|
||||||
|
## Bulk Task Updates
|
||||||
|
|
||||||
|
Update multiple related tasks based on new requirements or context changes.
|
||||||
|
|
||||||
|
## Argument Parsing
|
||||||
|
|
||||||
|
- "from 5: add security requirements"
|
||||||
|
- "5 onwards: update API endpoints"
|
||||||
|
- "starting at 5: change to use new framework"
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master update --from=<id> --prompt="<context>"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Update Process
|
||||||
|
|
||||||
|
### 1. **Task Selection**
|
||||||
|
Starting from specified ID:
|
||||||
|
- Include the task itself
|
||||||
|
- Include all dependent tasks
|
||||||
|
- Include related subtasks
|
||||||
|
- Smart boundary detection
|
||||||
|
|
||||||
|
### 2. **Context Application**
|
||||||
|
AI analyzes the update context and:
|
||||||
|
- Identifies what needs changing
|
||||||
|
- Maintains consistency
|
||||||
|
- Preserves completed work
|
||||||
|
- Updates related information
|
||||||
|
|
||||||
|
### 3. **Intelligent Updates**
|
||||||
|
- Modify descriptions appropriately
|
||||||
|
- Update test strategies
|
||||||
|
- Adjust time estimates
|
||||||
|
- Revise dependencies if needed
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
1. **Scope Detection**
|
||||||
|
- Find natural task groupings
|
||||||
|
- Identify related features
|
||||||
|
- Stop at logical boundaries
|
||||||
|
- Avoid over-updating
|
||||||
|
|
||||||
|
2. **Consistency Maintenance**
|
||||||
|
- Keep naming conventions
|
||||||
|
- Preserve relationships
|
||||||
|
- Update cross-references
|
||||||
|
- Maintain task flow
|
||||||
|
|
||||||
|
3. **Change Preview**
|
||||||
|
```
|
||||||
|
Bulk Update Preview
|
||||||
|
━━━━━━━━━━━━━━━━━━
|
||||||
|
Starting from: Task #5
|
||||||
|
Tasks to update: 8 tasks + 12 subtasks
|
||||||
|
|
||||||
|
Context: "add security requirements"
|
||||||
|
|
||||||
|
Changes will include:
|
||||||
|
- Add security sections to descriptions
|
||||||
|
- Update test strategies for security
|
||||||
|
- Add security-related subtasks where needed
|
||||||
|
- Adjust time estimates (+20% average)
|
||||||
|
|
||||||
|
Continue? (y/n)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example Updates
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/update/from-id 5: change database to PostgreSQL
|
||||||
|
→ Analyzing impact starting from task #5
|
||||||
|
→ Found 6 related tasks to update
|
||||||
|
→ Updates will maintain consistency
|
||||||
|
→ Preview changes? (y/n)
|
||||||
|
|
||||||
|
Applied updates:
|
||||||
|
✓ Task #5: Updated connection logic references
|
||||||
|
✓ Task #6: Changed migration approach
|
||||||
|
✓ Task #7: Updated query syntax notes
|
||||||
|
✓ Task #8: Revised testing strategy
|
||||||
|
✓ Task #9: Updated deployment steps
|
||||||
|
✓ Task #12: Changed backup procedures
|
||||||
|
```
|
||||||
|
|
||||||
|
## Safety Features
|
||||||
|
|
||||||
|
- Preview all changes
|
||||||
|
- Selective confirmation
|
||||||
|
- Rollback capability
|
||||||
|
- Change logging
|
||||||
|
- Validation checks
|
||||||
|
|
||||||
|
## Post-Update
|
||||||
|
|
||||||
|
- Summary of changes
|
||||||
|
- Consistency verification
|
||||||
|
- Suggest review tasks
|
||||||
|
- Update timeline if needed
|
||||||
72
.claude/commands/tm/update/index.md
Normal file
72
.claude/commands/tm/update/index.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
Update tasks with intelligent field detection and bulk operations.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Intelligent Task Updates
|
||||||
|
|
||||||
|
Parse arguments to determine update intent and execute smartly.
|
||||||
|
|
||||||
|
### 1. **Natural Language Processing**
|
||||||
|
|
||||||
|
Understand update requests like:
|
||||||
|
- "mark 23 as done" → Update status to done
|
||||||
|
- "increase priority of 45" → Set priority to high
|
||||||
|
- "add dependency on 12 to task 34" → Add dependency
|
||||||
|
- "tasks 20-25 need review" → Bulk status update
|
||||||
|
- "all API tasks high priority" → Pattern-based update
|
||||||
|
|
||||||
|
### 2. **Smart Field Detection**
|
||||||
|
|
||||||
|
Automatically detect what to update:
|
||||||
|
- Status keywords: done, complete, start, pause, review
|
||||||
|
- Priority changes: urgent, high, low, deprioritize
|
||||||
|
- Dependency updates: depends on, blocks, after
|
||||||
|
- Assignment: assign to, owner, responsible
|
||||||
|
- Time: estimate, spent, deadline
|
||||||
|
|
||||||
|
### 3. **Bulk Operations**
|
||||||
|
|
||||||
|
Support for multiple task updates:
|
||||||
|
```
|
||||||
|
Examples:
|
||||||
|
- "complete tasks 12, 15, 18"
|
||||||
|
- "all pending auth tasks to in-progress"
|
||||||
|
- "increase priority for tasks blocking 45"
|
||||||
|
- "defer all documentation tasks"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. **Contextual Validation**
|
||||||
|
|
||||||
|
Before updating, check:
|
||||||
|
- Status transitions are valid
|
||||||
|
- Dependencies don't create cycles
|
||||||
|
- Priority changes make sense
|
||||||
|
- Bulk updates won't break project flow
|
||||||
|
|
||||||
|
Show preview:
|
||||||
|
```
|
||||||
|
Update Preview:
|
||||||
|
─────────────────
|
||||||
|
Tasks to update: #23, #24, #25
|
||||||
|
Change: status → in-progress
|
||||||
|
Impact: Will unblock tasks #30, #31
|
||||||
|
Warning: Task #24 has unmet dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. **Smart Suggestions**
|
||||||
|
|
||||||
|
Based on update:
|
||||||
|
- Completing task? → Show newly unblocked tasks
|
||||||
|
- Changing priority? → Show impact on sprint
|
||||||
|
- Adding dependency? → Check for conflicts
|
||||||
|
- Bulk update? → Show summary of changes
|
||||||
|
|
||||||
|
### 6. **Workflow Integration**
|
||||||
|
|
||||||
|
After updates:
|
||||||
|
- Auto-update dependent task states
|
||||||
|
- Trigger status recalculation
|
||||||
|
- Update sprint/milestone progress
|
||||||
|
- Log changes with context
|
||||||
|
|
||||||
|
Result: Flexible, intelligent task updates with safety checks.
|
||||||
119
.claude/commands/tm/update/single.md
Normal file
119
.claude/commands/tm/update/single.md
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
Update a single specific task with new information.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
Parse task ID and update details.
|
||||||
|
|
||||||
|
## Single Task Update
|
||||||
|
|
||||||
|
Precisely update one task with AI assistance to maintain consistency.
|
||||||
|
|
||||||
|
## Argument Parsing
|
||||||
|
|
||||||
|
Natural language updates:
|
||||||
|
- "5: add caching requirement"
|
||||||
|
- "update 5 to include error handling"
|
||||||
|
- "task 5 needs rate limiting"
|
||||||
|
- "5 change priority to high"
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master update-task --id=<id> --prompt="<context>"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Update Types
|
||||||
|
|
||||||
|
### 1. **Content Updates**
|
||||||
|
- Enhance description
|
||||||
|
- Add requirements
|
||||||
|
- Clarify details
|
||||||
|
- Update acceptance criteria
|
||||||
|
|
||||||
|
### 2. **Metadata Updates**
|
||||||
|
- Change priority
|
||||||
|
- Adjust time estimates
|
||||||
|
- Update complexity
|
||||||
|
- Modify dependencies
|
||||||
|
|
||||||
|
### 3. **Strategic Updates**
|
||||||
|
- Revise approach
|
||||||
|
- Change test strategy
|
||||||
|
- Update implementation notes
|
||||||
|
- Adjust subtask needs
|
||||||
|
|
||||||
|
## AI-Powered Updates
|
||||||
|
|
||||||
|
The AI:
|
||||||
|
1. **Understands Context**
|
||||||
|
- Reads current task state
|
||||||
|
- Identifies update intent
|
||||||
|
- Maintains consistency
|
||||||
|
- Preserves important info
|
||||||
|
|
||||||
|
2. **Applies Changes**
|
||||||
|
- Updates relevant fields
|
||||||
|
- Keeps style consistent
|
||||||
|
- Adds without removing
|
||||||
|
- Enhances clarity
|
||||||
|
|
||||||
|
3. **Validates Results**
|
||||||
|
- Checks coherence
|
||||||
|
- Verifies completeness
|
||||||
|
- Maintains relationships
|
||||||
|
- Suggests related updates
|
||||||
|
|
||||||
|
## Example Updates
|
||||||
|
|
||||||
|
```
|
||||||
|
/project:tm/update/single 5: add rate limiting
|
||||||
|
→ Updating Task #5: "Implement API endpoints"
|
||||||
|
|
||||||
|
Current: Basic CRUD endpoints
|
||||||
|
Adding: Rate limiting requirements
|
||||||
|
|
||||||
|
Updated sections:
|
||||||
|
✓ Description: Added rate limiting mention
|
||||||
|
✓ Details: Added specific limits (100/min)
|
||||||
|
✓ Test Strategy: Added rate limit tests
|
||||||
|
✓ Complexity: Increased from 5 to 6
|
||||||
|
✓ Time Estimate: Increased by 2 hours
|
||||||
|
|
||||||
|
Suggestion: Also update task #6 (API Gateway) for consistency?
|
||||||
|
```
|
||||||
|
|
||||||
|
## Smart Features
|
||||||
|
|
||||||
|
1. **Incremental Updates**
|
||||||
|
- Adds without overwriting
|
||||||
|
- Preserves work history
|
||||||
|
- Tracks what changed
|
||||||
|
- Shows diff view
|
||||||
|
|
||||||
|
2. **Consistency Checks**
|
||||||
|
- Related task alignment
|
||||||
|
- Subtask compatibility
|
||||||
|
- Dependency validity
|
||||||
|
- Timeline impact
|
||||||
|
|
||||||
|
3. **Update History**
|
||||||
|
- Timestamp changes
|
||||||
|
- Track who/what updated
|
||||||
|
- Reason for update
|
||||||
|
- Previous versions
|
||||||
|
|
||||||
|
## Field-Specific Updates
|
||||||
|
|
||||||
|
Quick syntax for specific fields:
|
||||||
|
- "5 priority:high" → Update priority only
|
||||||
|
- "5 add-time:4h" → Add to time estimate
|
||||||
|
- "5 status:review" → Change status
|
||||||
|
- "5 depends:3,4" → Add dependencies
|
||||||
|
|
||||||
|
## Post-Update
|
||||||
|
|
||||||
|
- Show updated task
|
||||||
|
- Highlight changes
|
||||||
|
- Check related tasks
|
||||||
|
- Update suggestions
|
||||||
|
- Timeline adjustments
|
||||||
97
.claude/commands/tm/utils/analyze.md
Normal file
97
.claude/commands/tm/utils/analyze.md
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
Advanced project analysis with actionable insights and recommendations.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Comprehensive Project Analysis
|
||||||
|
|
||||||
|
Multi-dimensional analysis based on requested focus area.
|
||||||
|
|
||||||
|
### 1. **Analysis Modes**
|
||||||
|
|
||||||
|
Based on $ARGUMENTS:
|
||||||
|
- "velocity" → Sprint velocity and trends
|
||||||
|
- "quality" → Code quality metrics
|
||||||
|
- "risk" → Risk assessment and mitigation
|
||||||
|
- "dependencies" → Dependency graph analysis
|
||||||
|
- "team" → Workload and skill distribution
|
||||||
|
- "architecture" → System design coherence
|
||||||
|
- Default → Full spectrum analysis
|
||||||
|
|
||||||
|
### 2. **Velocity Analytics**
|
||||||
|
|
||||||
|
```
|
||||||
|
📊 Velocity Analysis
|
||||||
|
━━━━━━━━━━━━━━━━━━━
|
||||||
|
Current Sprint: 24 points/week ↗️ +20%
|
||||||
|
Rolling Average: 20 points/week
|
||||||
|
Efficiency: 85% (17/20 tasks on time)
|
||||||
|
|
||||||
|
Bottlenecks Detected:
|
||||||
|
- Code review delays (avg 4h wait)
|
||||||
|
- Test environment availability
|
||||||
|
- Dependency on external team
|
||||||
|
|
||||||
|
Recommendations:
|
||||||
|
1. Implement parallel review process
|
||||||
|
2. Add staging environment
|
||||||
|
3. Mock external dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. **Risk Assessment**
|
||||||
|
|
||||||
|
**Technical Risks**
|
||||||
|
- High complexity tasks without backup assignee
|
||||||
|
- Single points of failure in architecture
|
||||||
|
- Insufficient test coverage in critical paths
|
||||||
|
- Technical debt accumulation rate
|
||||||
|
|
||||||
|
**Project Risks**
|
||||||
|
- Critical path dependencies
|
||||||
|
- Resource availability gaps
|
||||||
|
- Deadline feasibility analysis
|
||||||
|
- Scope creep indicators
|
||||||
|
|
||||||
|
### 4. **Dependency Intelligence**
|
||||||
|
|
||||||
|
Visual dependency analysis:
|
||||||
|
```
|
||||||
|
Critical Path:
|
||||||
|
#12 → #15 → #23 → #45 → #50 (20 days)
|
||||||
|
↘ #24 → #46 ↗
|
||||||
|
|
||||||
|
Optimization: Parallelize #15 and #24
|
||||||
|
Time Saved: 3 days
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. **Quality Metrics**
|
||||||
|
|
||||||
|
**Code Quality**
|
||||||
|
- Test coverage trends
|
||||||
|
- Complexity scores
|
||||||
|
- Technical debt ratio
|
||||||
|
- Review feedback patterns
|
||||||
|
|
||||||
|
**Process Quality**
|
||||||
|
- Rework frequency
|
||||||
|
- Bug introduction rate
|
||||||
|
- Time to resolution
|
||||||
|
- Knowledge distribution
|
||||||
|
|
||||||
|
### 6. **Predictive Insights**
|
||||||
|
|
||||||
|
Based on patterns:
|
||||||
|
- Completion probability by deadline
|
||||||
|
- Resource needs projection
|
||||||
|
- Risk materialization likelihood
|
||||||
|
- Suggested interventions
|
||||||
|
|
||||||
|
### 7. **Executive Dashboard**
|
||||||
|
|
||||||
|
High-level summary with:
|
||||||
|
- Health score (0-100)
|
||||||
|
- Top 3 risks
|
||||||
|
- Top 3 opportunities
|
||||||
|
- Recommended actions
|
||||||
|
- Success probability
|
||||||
|
|
||||||
|
Result: Data-driven decisions with clear action paths.
|
||||||
71
.claude/commands/tm/validate-dependencies/index.md
Normal file
71
.claude/commands/tm/validate-dependencies/index.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
Validate all task dependencies for issues.
|
||||||
|
|
||||||
|
## Dependency Validation
|
||||||
|
|
||||||
|
Comprehensive check for dependency problems across the entire project.
|
||||||
|
|
||||||
|
## Execution
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task-master validate-dependencies
|
||||||
|
```
|
||||||
|
|
||||||
|
## Validation Checks
|
||||||
|
|
||||||
|
1. **Circular Dependencies**
|
||||||
|
- A depends on B, B depends on A
|
||||||
|
- Complex circular chains
|
||||||
|
- Self-dependencies
|
||||||
|
|
||||||
|
2. **Missing Dependencies**
|
||||||
|
- References to non-existent tasks
|
||||||
|
- Deleted task references
|
||||||
|
- Invalid task IDs
|
||||||
|
|
||||||
|
3. **Logical Issues**
|
||||||
|
- Completed tasks depending on pending
|
||||||
|
- Cancelled tasks in dependency chains
|
||||||
|
- Impossible sequences
|
||||||
|
|
||||||
|
4. **Complexity Warnings**
|
||||||
|
- Over-complex dependency chains
|
||||||
|
- Too many dependencies per task
|
||||||
|
- Bottleneck tasks
|
||||||
|
|
||||||
|
## Smart Analysis
|
||||||
|
|
||||||
|
The validation provides:
|
||||||
|
- Visual dependency graph
|
||||||
|
- Critical path analysis
|
||||||
|
- Bottleneck identification
|
||||||
|
- Suggested optimizations
|
||||||
|
|
||||||
|
## Report Format
|
||||||
|
|
||||||
|
```
|
||||||
|
Dependency Validation Report
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
✅ No circular dependencies found
|
||||||
|
⚠️ 2 warnings found:
|
||||||
|
- Task #23 has 7 dependencies (consider breaking down)
|
||||||
|
- Task #45 blocks 5 other tasks (potential bottleneck)
|
||||||
|
❌ 1 error found:
|
||||||
|
- Task #67 depends on deleted task #66
|
||||||
|
|
||||||
|
Critical Path: #1 → #5 → #23 → #45 → #50 (15 days)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Actionable Output
|
||||||
|
|
||||||
|
For each issue found:
|
||||||
|
- Clear description
|
||||||
|
- Impact assessment
|
||||||
|
- Suggested fix
|
||||||
|
- Command to resolve
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
After validation:
|
||||||
|
- Run `/project:tm/fix-dependencies` to auto-fix
|
||||||
|
- Manually adjust problematic dependencies
|
||||||
|
- Rerun to verify fixes
|
||||||
97
.claude/commands/tm/workflows/auto-implement.md
Normal file
97
.claude/commands/tm/workflows/auto-implement.md
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
Enhanced auto-implementation with intelligent code generation and testing.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Intelligent Auto-Implementation
|
||||||
|
|
||||||
|
Advanced implementation with context awareness and quality checks.
|
||||||
|
|
||||||
|
### 1. **Pre-Implementation Analysis**
|
||||||
|
|
||||||
|
Before starting:
|
||||||
|
- Analyze task complexity and requirements
|
||||||
|
- Check codebase patterns and conventions
|
||||||
|
- Identify similar completed tasks
|
||||||
|
- Assess test coverage needs
|
||||||
|
- Detect potential risks
|
||||||
|
|
||||||
|
### 2. **Smart Implementation Strategy**
|
||||||
|
|
||||||
|
Based on task type and context:
|
||||||
|
|
||||||
|
**Feature Tasks**
|
||||||
|
1. Research existing patterns
|
||||||
|
2. Design component architecture
|
||||||
|
3. Implement with tests
|
||||||
|
4. Integrate with system
|
||||||
|
5. Update documentation
|
||||||
|
|
||||||
|
**Bug Fix Tasks**
|
||||||
|
1. Reproduce issue
|
||||||
|
2. Identify root cause
|
||||||
|
3. Implement minimal fix
|
||||||
|
4. Add regression tests
|
||||||
|
5. Verify side effects
|
||||||
|
|
||||||
|
**Refactoring Tasks**
|
||||||
|
1. Analyze current structure
|
||||||
|
2. Plan incremental changes
|
||||||
|
3. Maintain test coverage
|
||||||
|
4. Refactor step-by-step
|
||||||
|
5. Verify behavior unchanged
|
||||||
|
|
||||||
|
### 3. **Code Intelligence**
|
||||||
|
|
||||||
|
**Pattern Recognition**
|
||||||
|
- Learn from existing code
|
||||||
|
- Follow team conventions
|
||||||
|
- Use preferred libraries
|
||||||
|
- Match style guidelines
|
||||||
|
|
||||||
|
**Test-Driven Approach**
|
||||||
|
- Write tests first when possible
|
||||||
|
- Ensure comprehensive coverage
|
||||||
|
- Include edge cases
|
||||||
|
- Performance considerations
|
||||||
|
|
||||||
|
### 4. **Progressive Implementation**
|
||||||
|
|
||||||
|
Step-by-step with validation:
|
||||||
|
```
|
||||||
|
Step 1/5: Setting up component structure ✓
|
||||||
|
Step 2/5: Implementing core logic ✓
|
||||||
|
Step 3/5: Adding error handling ⚡ (in progress)
|
||||||
|
Step 4/5: Writing tests ⏳
|
||||||
|
Step 5/5: Integration testing ⏳
|
||||||
|
|
||||||
|
Current: Adding try-catch blocks and validation...
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. **Quality Assurance**
|
||||||
|
|
||||||
|
Automated checks:
|
||||||
|
- Linting and formatting
|
||||||
|
- Test execution
|
||||||
|
- Type checking
|
||||||
|
- Dependency validation
|
||||||
|
- Performance analysis
|
||||||
|
|
||||||
|
### 6. **Smart Recovery**
|
||||||
|
|
||||||
|
If issues arise:
|
||||||
|
- Diagnostic analysis
|
||||||
|
- Suggestion generation
|
||||||
|
- Fallback strategies
|
||||||
|
- Manual intervention points
|
||||||
|
- Learning from failures
|
||||||
|
|
||||||
|
### 7. **Post-Implementation**
|
||||||
|
|
||||||
|
After completion:
|
||||||
|
- Generate PR description
|
||||||
|
- Update documentation
|
||||||
|
- Log lessons learned
|
||||||
|
- Suggest follow-up tasks
|
||||||
|
- Update task relationships
|
||||||
|
|
||||||
|
Result: High-quality, production-ready implementations.
|
||||||
77
.claude/commands/tm/workflows/pipeline.md
Normal file
77
.claude/commands/tm/workflows/pipeline.md
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
Execute a pipeline of commands based on a specification.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Command Pipeline Execution
|
||||||
|
|
||||||
|
Parse pipeline specification from arguments. Supported formats:
|
||||||
|
|
||||||
|
### Simple Pipeline
|
||||||
|
`init → expand-all → sprint-plan`
|
||||||
|
|
||||||
|
### Conditional Pipeline
|
||||||
|
`status → if:pending>10 → sprint-plan → else → next`
|
||||||
|
|
||||||
|
### Iterative Pipeline
|
||||||
|
`for:pending-tasks → expand → complexity-check`
|
||||||
|
|
||||||
|
### Smart Pipeline Patterns
|
||||||
|
|
||||||
|
**1. Project Setup Pipeline**
|
||||||
|
```
|
||||||
|
init [prd] →
|
||||||
|
expand-all →
|
||||||
|
complexity-report →
|
||||||
|
sprint-plan →
|
||||||
|
show first-sprint
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. Daily Work Pipeline**
|
||||||
|
```
|
||||||
|
standup →
|
||||||
|
if:in-progress → continue →
|
||||||
|
else → next → start
|
||||||
|
```
|
||||||
|
|
||||||
|
**3. Task Completion Pipeline**
|
||||||
|
```
|
||||||
|
complete [id] →
|
||||||
|
git-commit →
|
||||||
|
if:blocked-tasks-freed → show-freed →
|
||||||
|
next
|
||||||
|
```
|
||||||
|
|
||||||
|
**4. Quality Check Pipeline**
|
||||||
|
```
|
||||||
|
list in-progress →
|
||||||
|
for:each → check-idle-time →
|
||||||
|
if:idle>1day → prompt-update
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pipeline Features
|
||||||
|
|
||||||
|
**Variables**
|
||||||
|
- Store results: `status → $count=pending-count`
|
||||||
|
- Use in conditions: `if:$count>10`
|
||||||
|
- Pass between commands: `expand $high-priority-tasks`
|
||||||
|
|
||||||
|
**Error Handling**
|
||||||
|
- On failure: `try:complete → catch:show-blockers`
|
||||||
|
- Skip on error: `optional:test-run`
|
||||||
|
- Retry logic: `retry:3:commit`
|
||||||
|
|
||||||
|
**Parallel Execution**
|
||||||
|
- Parallel branches: `[analyze | test | lint]`
|
||||||
|
- Join results: `parallel → join:report`
|
||||||
|
|
||||||
|
### Execution Flow
|
||||||
|
|
||||||
|
1. Parse pipeline specification
|
||||||
|
2. Validate command sequence
|
||||||
|
3. Execute with state passing
|
||||||
|
4. Handle conditions and loops
|
||||||
|
5. Aggregate results
|
||||||
|
6. Show summary
|
||||||
|
|
||||||
|
This enables complex workflows like:
|
||||||
|
`parse-prd → expand-all → filter:complex>70 → assign:senior → sprint-plan:weighted`
|
||||||
55
.claude/commands/tm/workflows/smart-flow.md
Normal file
55
.claude/commands/tm/workflows/smart-flow.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
Execute an intelligent workflow based on current project state and recent commands.
|
||||||
|
|
||||||
|
This command analyzes:
|
||||||
|
1. Recent commands you've run
|
||||||
|
2. Current project state
|
||||||
|
3. Time of day / day of week
|
||||||
|
4. Your working patterns
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS
|
||||||
|
|
||||||
|
## Intelligent Workflow Selection
|
||||||
|
|
||||||
|
Based on context, I'll determine the best workflow:
|
||||||
|
|
||||||
|
### Context Analysis
|
||||||
|
- Previous command executed
|
||||||
|
- Current task states
|
||||||
|
- Unfinished work from last session
|
||||||
|
- Your typical patterns
|
||||||
|
|
||||||
|
### Smart Execution
|
||||||
|
|
||||||
|
If last command was:
|
||||||
|
- `status` → Likely starting work → Run daily standup
|
||||||
|
- `complete` → Task finished → Find next task
|
||||||
|
- `list pending` → Planning → Suggest sprint planning
|
||||||
|
- `expand` → Breaking down work → Show complexity analysis
|
||||||
|
- `init` → New project → Show onboarding workflow
|
||||||
|
|
||||||
|
If no recent commands:
|
||||||
|
- Morning? → Daily standup workflow
|
||||||
|
- Many pending tasks? → Sprint planning
|
||||||
|
- Tasks blocked? → Dependency resolution
|
||||||
|
- Friday? → Weekly review
|
||||||
|
|
||||||
|
### Workflow Composition
|
||||||
|
|
||||||
|
I'll chain appropriate commands:
|
||||||
|
1. Analyze current state
|
||||||
|
2. Execute primary workflow
|
||||||
|
3. Suggest follow-up actions
|
||||||
|
4. Prepare environment for coding
|
||||||
|
|
||||||
|
### Learning Mode
|
||||||
|
|
||||||
|
This command learns from your patterns:
|
||||||
|
- Track command sequences
|
||||||
|
- Note time preferences
|
||||||
|
- Remember common workflows
|
||||||
|
- Adapt to your style
|
||||||
|
|
||||||
|
Example flows detected:
|
||||||
|
- Morning: standup → next → start
|
||||||
|
- After lunch: status → continue task
|
||||||
|
- End of day: complete → commit → status
|
||||||
@@ -153,7 +153,7 @@ When users initialize Taskmaster on existing projects:
|
|||||||
4. **Tag-Based Organization**: Parse PRDs into appropriate tags (`refactor-api`, `feature-dashboard`, `tech-debt`, etc.)
|
4. **Tag-Based Organization**: Parse PRDs into appropriate tags (`refactor-api`, `feature-dashboard`, `tech-debt`, etc.)
|
||||||
5. **Master List Curation**: Keep only the most valuable initiatives in master
|
5. **Master List Curation**: Keep only the most valuable initiatives in master
|
||||||
|
|
||||||
The parse-prd's `--append` flag enables the user to parse multple PRDs within tags or across tags. PRDs should be focused and the number of tasks they are parsed into should be strategically chosen relative to the PRD's complexity and level of detail.
|
The parse-prd's `--append` flag enables the user to parse multiple PRDs within tags or across tags. PRDs should be focused and the number of tasks they are parsed into should be strategically chosen relative to the PRD's complexity and level of detail.
|
||||||
|
|
||||||
### Workflow Transition Examples
|
### Workflow Transition Examples
|
||||||
|
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ This document provides a detailed reference for interacting with Taskmaster, cov
|
|||||||
* **CLI Command:** `task-master clear-subtasks [options]`
|
* **CLI Command:** `task-master clear-subtasks [options]`
|
||||||
* **Description:** `Remove all subtasks from one or more specified Taskmaster parent tasks.`
|
* **Description:** `Remove all subtasks from one or more specified Taskmaster parent tasks.`
|
||||||
* **Key Parameters/Options:**
|
* **Key Parameters/Options:**
|
||||||
* `id`: `The ID(s) of the Taskmaster parent task(s) whose subtasks you want to remove, e.g., '15' or '16,18'. Required unless using `all`.) (CLI: `-i, --id <ids>`)
|
* `id`: `The ID(s) of the Taskmaster parent task(s) whose subtasks you want to remove, e.g., '15' or '16,18'. Required unless using 'all'.` (CLI: `-i, --id <ids>`)
|
||||||
* `all`: `Tell Taskmaster to remove subtasks from all parent tasks.` (CLI: `--all`)
|
* `all`: `Tell Taskmaster to remove subtasks from all parent tasks.` (CLI: `--all`)
|
||||||
* `tag`: `Specify which tag context to operate on. Defaults to the current active tag.` (CLI: `--tag <name>`)
|
* `tag`: `Specify which tag context to operate on. Defaults to the current active tag.` (CLI: `--tag <name>`)
|
||||||
* `file`: `Path to your Taskmaster 'tasks.json' file. Default relies on auto-detection.` (CLI: `-f, --file <file>`)
|
* `file`: `Path to your Taskmaster 'tasks.json' file. Default relies on auto-detection.` (CLI: `-f, --file <file>`)
|
||||||
|
|||||||
@@ -29,6 +29,8 @@
|
|||||||
"bedrockBaseURL": "https://bedrock.us-east-1.amazonaws.com",
|
"bedrockBaseURL": "https://bedrock.us-east-1.amazonaws.com",
|
||||||
"userId": "1234567890",
|
"userId": "1234567890",
|
||||||
"azureBaseURL": "https://your-endpoint.azure.com/",
|
"azureBaseURL": "https://your-endpoint.azure.com/",
|
||||||
"defaultTag": "master"
|
"defaultTag": "master",
|
||||||
}
|
"responseLanguage": "English"
|
||||||
|
},
|
||||||
|
"claudeCode": {}
|
||||||
}
|
}
|
||||||
|
|||||||
328
CHANGELOG.md
328
CHANGELOG.md
@@ -1,11 +1,148 @@
|
|||||||
# task-master-ai
|
# task-master-ai
|
||||||
|
|
||||||
|
## 0.19.0
|
||||||
|
|
||||||
|
### Minor Changes
|
||||||
|
|
||||||
|
- [#897](https://github.com/eyaltoledano/claude-task-master/pull/897) [`dd96f51`](https://github.com/eyaltoledano/claude-task-master/commit/dd96f51179d9901f6ae854b0c60f0bcc8c13ae0d) Thanks [@ben-vargas](https://github.com/ben-vargas)! - Adds support for gemini-cli as a provider, enabling free or subscription use through Google Accounts and paid Gemini Cloud Assist (GCA) subscriptions.
|
||||||
|
|
||||||
|
- [#884](https://github.com/eyaltoledano/claude-task-master/pull/884) [`5eafc5e`](https://github.com/eyaltoledano/claude-task-master/commit/5eafc5ea112c91326bb8abda7a78d7c2a4fa16a1) Thanks [@geoh](https://github.com/geoh)! - Added option for the AI to determine the number of tasks required based entirely on complexity
|
||||||
|
|
||||||
|
- [#872](https://github.com/eyaltoledano/claude-task-master/pull/872) [`f7fbdd6`](https://github.com/eyaltoledano/claude-task-master/commit/f7fbdd6755c4a1ee3ab2a3f435961f249fa19c15) Thanks [@geoh](https://github.com/geoh)! - Add advanced settings for Claude Code AI Provider
|
||||||
|
|
||||||
|
- [#870](https://github.com/eyaltoledano/claude-task-master/pull/870) [`6fd5e23`](https://github.com/eyaltoledano/claude-task-master/commit/6fd5e23396a7e348ea2300e67cbd0c97141c081f) Thanks [@nishedcob](https://github.com/nishedcob)! - Include additional Anthropic models running on Bedrock in what is supported
|
||||||
|
|
||||||
|
- [#510](https://github.com/eyaltoledano/claude-task-master/pull/510) [`c99df64`](https://github.com/eyaltoledano/claude-task-master/commit/c99df64f651fb40bae5d7979ee2b2428586f44d3) Thanks [@shenysun](https://github.com/shenysun)! - Add support for custom response language
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#892](https://github.com/eyaltoledano/claude-task-master/pull/892) [`56a415e`](https://github.com/eyaltoledano/claude-task-master/commit/56a415ef795c5aa0e52e7419af8d4f4862611a8c) Thanks [@joedanz](https://github.com/joedanz)! - Ensure projectRoot is a string (potential WSL fix)
|
||||||
|
|
||||||
|
- [#856](https://github.com/eyaltoledano/claude-task-master/pull/856) [`43e0025`](https://github.com/eyaltoledano/claude-task-master/commit/43e0025f4c5870a3c56682cbb8fe0348d711953b) Thanks [@mm-parthy](https://github.com/mm-parthy)! - Fix bulk update tag corruption in tagged task lists
|
||||||
|
|
||||||
|
- [#857](https://github.com/eyaltoledano/claude-task-master/pull/857) [`598e687`](https://github.com/eyaltoledano/claude-task-master/commit/598e687067d1af44f1a9916266ae94af3e752067) Thanks [@mm-parthy](https://github.com/mm-parthy)! - Fix expand-task to use tag-specific complexity reports
|
||||||
|
|
||||||
|
The expand-task function now correctly uses complexity reports specific to the current tag context (e.g., task-complexity-report_feature-branch.json) instead of always using the default task-complexity-report.json file. This enables proper task expansion behavior when working with multiple tag contexts.
|
||||||
|
|
||||||
|
- [#855](https://github.com/eyaltoledano/claude-task-master/pull/855) [`e4456b1`](https://github.com/eyaltoledano/claude-task-master/commit/e4456b11bc3ae46e120d244fc32c1807a8a58a57) Thanks [@joedanz](https://github.com/joedanz)! - Fix .gitignore missing trailing newline during project initialization
|
||||||
|
|
||||||
|
- [#846](https://github.com/eyaltoledano/claude-task-master/pull/846) [`59a4ec9`](https://github.com/eyaltoledano/claude-task-master/commit/59a4ec9e1a452079e5c78c00428d140f13a1c8f6) Thanks [@joedanz](https://github.com/joedanz)! - Default to Cursor profile for MCP init when no rules specified
|
||||||
|
|
||||||
|
- [#852](https://github.com/eyaltoledano/claude-task-master/pull/852) [`f38abd6`](https://github.com/eyaltoledano/claude-task-master/commit/f38abd68436ea5d093b2e22c2b8520b6e6906251) Thanks [@hrmshandy](https://github.com/hrmshandy)! - fixes a critical issue where subtask generation fails on gemini-2.5-pro unless explicitly prompted to return 'details' field as a string not an object
|
||||||
|
|
||||||
|
- [#908](https://github.com/eyaltoledano/claude-task-master/pull/908) [`24e9206`](https://github.com/eyaltoledano/claude-task-master/commit/24e9206da0d5d3f2f7819ed94fa0c9b459fc9f9b) Thanks [@joedanz](https://github.com/joedanz)! - Fix rules command to use reliable project root detection like other commands
|
||||||
|
|
||||||
|
## 0.18.0
|
||||||
|
|
||||||
|
### Minor Changes
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Can now configure baseURL of provider with `<PROVIDER>_BASE_URL`
|
||||||
|
- For example:
|
||||||
|
- `OPENAI_BASE_URL`
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Added comprehensive rule profile management:
|
||||||
|
|
||||||
|
**New Profile Support**: Added comprehensive IDE profile support with eight specialized profiles: Claude Code, Cline, Codex, Cursor, Roo, Trae, VS Code, and Windsurf. Each profile is optimized for its respective IDE with appropriate mappings and configuration.
|
||||||
|
**Initialization**: You can now specify which rule profiles to include at project initialization using `--rules <profiles>` or `-r <profiles>` (e.g., `task-master init -r cursor,roo`). Only the selected profiles and configuration are included.
|
||||||
|
**Add/Remove Commands**: `task-master rules add <profiles>` and `task-master rules remove <profiles>` let you manage specific rule profiles and MCP config after initialization, supporting multiple profiles at once.
|
||||||
|
**Interactive Setup**: `task-master rules setup` launches an interactive prompt to select which rule profiles to add to your project. This does **not** re-initialize your project or affect shell aliases; it only manages rules.
|
||||||
|
**Selective Removal**: Rules removal intelligently preserves existing non-Task Master rules and files and only removes Task Master-specific rules. Profile directories are only removed when completely empty and all conditions are met (no existing rules, no other files/folders, MCP config completely removed).
|
||||||
|
**Safety Features**: Confirmation messages clearly explain that only Task Master-specific rules and MCP configurations will be removed, while preserving existing custom rules and other files.
|
||||||
|
**Robust Validation**: Includes comprehensive checks for array types in MCP config processing and error handling throughout the rules management system.
|
||||||
|
|
||||||
|
This enables more flexible, rule-specific project setups with intelligent cleanup that preserves user customizations while safely managing Task Master components.
|
||||||
|
- Resolves #338
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Make task-master more compatible with the "o" family models of OpenAI
|
||||||
|
|
||||||
|
Now works well with:
|
||||||
|
- o3
|
||||||
|
- o3-mini
|
||||||
|
- etc.
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add better support for python projects by adding `pyproject.toml` as a projectRoot marker
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - - **Git Worktree Detection:**
|
||||||
|
- Now properly skips Git initialization when inside existing Git worktree
|
||||||
|
- Prevents accidental nested repository creation
|
||||||
|
- **Flag System Overhaul:**
|
||||||
|
- `--git`/`--no-git` controls repository initialization
|
||||||
|
- `--aliases`/`--no-aliases` consistently manages shell alias creation
|
||||||
|
- `--git-tasks`/`--no-git-tasks` controls whether task files are stored in Git
|
||||||
|
- `--dry-run` accurately previews all initialization behaviors
|
||||||
|
- **GitTasks Functionality:**
|
||||||
|
- New `--git-tasks` flag includes task files in Git (comments them out in .gitignore)
|
||||||
|
- New `--no-git-tasks` flag excludes task files from Git (default behavior)
|
||||||
|
- Supports both CLI and MCP interfaces with proper parameter passing
|
||||||
|
|
||||||
|
**Implementation Details:**
|
||||||
|
- Added explicit Git worktree detection before initialization
|
||||||
|
- Refactored flag processing to ensure consistent behavior
|
||||||
|
- Fixes #734
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add Claude Code provider support
|
||||||
|
|
||||||
|
Introduces a new provider that enables using Claude models (Opus and Sonnet) through the Claude Code CLI without requiring an API key.
|
||||||
|
|
||||||
|
Key features:
|
||||||
|
- New claude-code provider with support for opus and sonnet models
|
||||||
|
- No API key required - uses local Claude Code CLI installation
|
||||||
|
- Optional dependency - won't affect users who don't need Claude Code
|
||||||
|
- Lazy loading ensures the provider only loads when requested
|
||||||
|
- Full integration with existing Task Master commands and workflows
|
||||||
|
- Comprehensive test coverage for reliability
|
||||||
|
- New --claude-code flag for the models command
|
||||||
|
|
||||||
|
Users can now configure Claude Code models with:
|
||||||
|
task-master models --set-main sonnet --claude-code
|
||||||
|
task-master models --set-research opus --claude-code
|
||||||
|
|
||||||
|
The @anthropic-ai/claude-code package is optional and won't be installed unless explicitly needed.
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix expand command preserving tagged task structure and preventing data corruption
|
||||||
|
- Enhance E2E tests with comprehensive tag-aware expand testing to verify tag corruption fix
|
||||||
|
- Add new test section for feature-expand tag creation and testing during expand operations
|
||||||
|
- Verify tag preservation during expand, force expand, and expand --all operations
|
||||||
|
- Test that master tag remains intact while feature-expand tag receives subtasks correctly
|
||||||
|
- Fix file path references to use correct .taskmaster/config.json and .taskmaster/tasks/tasks.json locations
|
||||||
|
- All tag corruption verification tests pass successfully, confirming the expand command tag corruption bug fix works as expected
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix Cursor deeplink installation by providing copy-paste instructions for GitHub compatibility
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Call rules interactive setup during init
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Update o3 model price
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improves Amazon Bedrock support
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix issues with task creation/update where subtasks are being created like id: <parent_task>.<subtask> instead if just id: <subtask>
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fixes issue with expand CLI command "Complexity report not found"
|
||||||
|
- Closes #735
|
||||||
|
- Closes #728
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Store tasks in Git by default
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improve provider validation system with clean constants structure
|
||||||
|
- **Fixed "Invalid provider hint" errors**: Resolved validation failures for Azure, Vertex, and Bedrock providers
|
||||||
|
- **Improved search UX**: Integrated search for better model discovery with real-time filtering
|
||||||
|
- **Better organization**: Moved custom provider options to bottom of model selection with clear section separators
|
||||||
|
|
||||||
|
This change ensures all custom providers (Azure, Vertex, Bedrock, OpenRouter, Ollama) work correctly in `task-master models --setup`
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix weird `task-master init` bug when using in certain environments
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Rename Roo Code Boomerang role to Orchestrator
|
||||||
|
|
||||||
|
- [#840](https://github.com/eyaltoledano/claude-task-master/pull/840) [`b40139c`](https://github.com/eyaltoledano/claude-task-master/commit/b40139ca0517fd76aea4f41d0ed4c10e658a5d2b) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improve mcp keys check in cursor
|
||||||
|
|
||||||
## 0.18.0-rc.0
|
## 0.18.0-rc.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|
||||||
- [#830](https://github.com/eyaltoledano/claude-task-master/pull/830) [`e9d1bc2`](https://github.com/eyaltoledano/claude-task-master/commit/e9d1bc2385521c08374a85eba7899e878a51066c) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Can now configure baseURL of provider with `<PROVIDER>_BASE_URL`
|
- [#830](https://github.com/eyaltoledano/claude-task-master/pull/830) [`e9d1bc2`](https://github.com/eyaltoledano/claude-task-master/commit/e9d1bc2385521c08374a85eba7899e878a51066c) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Can now configure baseURL of provider with `<PROVIDER>_BASE_URL`
|
||||||
|
|
||||||
- For example:
|
- For example:
|
||||||
- `OPENAI_BASE_URL`
|
- `OPENAI_BASE_URL`
|
||||||
|
|
||||||
@@ -20,13 +157,11 @@
|
|||||||
**Robust Validation**: Includes comprehensive checks for array types in MCP config processing and error handling throughout the rules management system.
|
**Robust Validation**: Includes comprehensive checks for array types in MCP config processing and error handling throughout the rules management system.
|
||||||
|
|
||||||
This enables more flexible, rule-specific project setups with intelligent cleanup that preserves user customizations while safely managing Task Master components.
|
This enables more flexible, rule-specific project setups with intelligent cleanup that preserves user customizations while safely managing Task Master components.
|
||||||
|
|
||||||
- Resolves #338
|
- Resolves #338
|
||||||
|
|
||||||
- [#804](https://github.com/eyaltoledano/claude-task-master/pull/804) [`1b8c320`](https://github.com/eyaltoledano/claude-task-master/commit/1b8c320c570473082f1eb4bf9628bff66e799092) Thanks [@ejones40](https://github.com/ejones40)! - Add better support for python projects by adding `pyproject.toml` as a projectRoot marker
|
- [#804](https://github.com/eyaltoledano/claude-task-master/pull/804) [`1b8c320`](https://github.com/eyaltoledano/claude-task-master/commit/1b8c320c570473082f1eb4bf9628bff66e799092) Thanks [@ejones40](https://github.com/ejones40)! - Add better support for python projects by adding `pyproject.toml` as a projectRoot marker
|
||||||
|
|
||||||
- [#743](https://github.com/eyaltoledano/claude-task-master/pull/743) [`a2a3229`](https://github.com/eyaltoledano/claude-task-master/commit/a2a3229fd01e24a5838f11a3938a77250101e184) Thanks [@joedanz](https://github.com/joedanz)! - - **Git Worktree Detection:**
|
- [#743](https://github.com/eyaltoledano/claude-task-master/pull/743) [`a2a3229`](https://github.com/eyaltoledano/claude-task-master/commit/a2a3229fd01e24a5838f11a3938a77250101e184) Thanks [@joedanz](https://github.com/joedanz)! - - **Git Worktree Detection:**
|
||||||
|
|
||||||
- Now properly skips Git initialization when inside existing Git worktree
|
- Now properly skips Git initialization when inside existing Git worktree
|
||||||
- Prevents accidental nested repository creation
|
- Prevents accidental nested repository creation
|
||||||
- **Flag System Overhaul:**
|
- **Flag System Overhaul:**
|
||||||
@@ -40,7 +175,6 @@
|
|||||||
- Supports both CLI and MCP interfaces with proper parameter passing
|
- Supports both CLI and MCP interfaces with proper parameter passing
|
||||||
|
|
||||||
**Implementation Details:**
|
**Implementation Details:**
|
||||||
|
|
||||||
- Added explicit Git worktree detection before initialization
|
- Added explicit Git worktree detection before initialization
|
||||||
- Refactored flag processing to ensure consistent behavior
|
- Refactored flag processing to ensure consistent behavior
|
||||||
- Fixes #734
|
- Fixes #734
|
||||||
@@ -50,7 +184,6 @@
|
|||||||
Introduces a new provider that enables using Claude models (Opus and Sonnet) through the Claude Code CLI without requiring an API key.
|
Introduces a new provider that enables using Claude models (Opus and Sonnet) through the Claude Code CLI without requiring an API key.
|
||||||
|
|
||||||
Key features:
|
Key features:
|
||||||
|
|
||||||
- New claude-code provider with support for opus and sonnet models
|
- New claude-code provider with support for opus and sonnet models
|
||||||
- No API key required - uses local Claude Code CLI installation
|
- No API key required - uses local Claude Code CLI installation
|
||||||
- Optional dependency - won't affect users who don't need Claude Code
|
- Optional dependency - won't affect users who don't need Claude Code
|
||||||
@@ -68,7 +201,6 @@
|
|||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
||||||
- [#827](https://github.com/eyaltoledano/claude-task-master/pull/827) [`5da5b59`](https://github.com/eyaltoledano/claude-task-master/commit/5da5b59bdeeb634dcb3adc7a9bc0fc37e004fa0c) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix expand command preserving tagged task structure and preventing data corruption
|
- [#827](https://github.com/eyaltoledano/claude-task-master/pull/827) [`5da5b59`](https://github.com/eyaltoledano/claude-task-master/commit/5da5b59bdeeb634dcb3adc7a9bc0fc37e004fa0c) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix expand command preserving tagged task structure and preventing data corruption
|
||||||
|
|
||||||
- Enhance E2E tests with comprehensive tag-aware expand testing to verify tag corruption fix
|
- Enhance E2E tests with comprehensive tag-aware expand testing to verify tag corruption fix
|
||||||
- Add new test section for feature-expand tag creation and testing during expand operations
|
- Add new test section for feature-expand tag creation and testing during expand operations
|
||||||
- Verify tag preservation during expand, force expand, and expand --all operations
|
- Verify tag preservation during expand, force expand, and expand --all operations
|
||||||
@@ -85,7 +217,103 @@
|
|||||||
- [#835](https://github.com/eyaltoledano/claude-task-master/pull/835) [`727f1ec`](https://github.com/eyaltoledano/claude-task-master/commit/727f1ec4ebcbdd82547784c4c113b666af7e122e) Thanks [@joedanz](https://github.com/joedanz)! - Store tasks in Git by default
|
- [#835](https://github.com/eyaltoledano/claude-task-master/pull/835) [`727f1ec`](https://github.com/eyaltoledano/claude-task-master/commit/727f1ec4ebcbdd82547784c4c113b666af7e122e) Thanks [@joedanz](https://github.com/joedanz)! - Store tasks in Git by default
|
||||||
|
|
||||||
- [#822](https://github.com/eyaltoledano/claude-task-master/pull/822) [`1bd6d4f`](https://github.com/eyaltoledano/claude-task-master/commit/1bd6d4f2468070690e152e6e63e15a57bc550d90) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improve provider validation system with clean constants structure
|
- [#822](https://github.com/eyaltoledano/claude-task-master/pull/822) [`1bd6d4f`](https://github.com/eyaltoledano/claude-task-master/commit/1bd6d4f2468070690e152e6e63e15a57bc550d90) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improve provider validation system with clean constants structure
|
||||||
|
- **Fixed "Invalid provider hint" errors**: Resolved validation failures for Azure, Vertex, and Bedrock providers
|
||||||
|
- **Improved search UX**: Integrated search for better model discovery with real-time filtering
|
||||||
|
- **Better organization**: Moved custom provider options to bottom of model selection with clear section separators
|
||||||
|
|
||||||
|
This change ensures all custom providers (Azure, Vertex, Bedrock, OpenRouter, Ollama) work correctly in `task-master models --setup`
|
||||||
|
|
||||||
|
- [#633](https://github.com/eyaltoledano/claude-task-master/pull/633) [`3a2325a`](https://github.com/eyaltoledano/claude-task-master/commit/3a2325a963fed82377ab52546eedcbfebf507a7e) Thanks [@nmarley](https://github.com/nmarley)! - Fix weird `task-master init` bug when using in certain environments
|
||||||
|
|
||||||
|
- [#831](https://github.com/eyaltoledano/claude-task-master/pull/831) [`b592dff`](https://github.com/eyaltoledano/claude-task-master/commit/b592dff8bc5c5d7966843fceaa0adf4570934336) Thanks [@joedanz](https://github.com/joedanz)! - Rename Roo Code Boomerang role to Orchestrator
|
||||||
|
|
||||||
|
- [#830](https://github.com/eyaltoledano/claude-task-master/pull/830) [`e9d1bc2`](https://github.com/eyaltoledano/claude-task-master/commit/e9d1bc2385521c08374a85eba7899e878a51066c) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improve mcp keys check in cursor
|
||||||
|
|
||||||
|
## 0.17.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#789](https://github.com/eyaltoledano/claude-task-master/pull/789) [`8cde6c2`](https://github.com/eyaltoledano/claude-task-master/commit/8cde6c27087f401d085fe267091ae75334309d96) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix contextGatherer bug when adding a task `Cannot read properties of undefined (reading 'forEach')`
|
||||||
|
|
||||||
|
## 0.18.0-rc.0
|
||||||
|
|
||||||
|
### Minor Changes
|
||||||
|
|
||||||
|
- [#830](https://github.com/eyaltoledano/claude-task-master/pull/830) [`e9d1bc2`](https://github.com/eyaltoledano/claude-task-master/commit/e9d1bc2385521c08374a85eba7899e878a51066c) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Can now configure baseURL of provider with `<PROVIDER>_BASE_URL`
|
||||||
|
- For example:
|
||||||
|
- `OPENAI_BASE_URL`
|
||||||
|
|
||||||
|
- [#460](https://github.com/eyaltoledano/claude-task-master/pull/460) [`a09a2d0`](https://github.com/eyaltoledano/claude-task-master/commit/a09a2d0967a10276623e3f3ead3ed577c15ce62f) Thanks [@joedanz](https://github.com/joedanz)! - Added comprehensive rule profile management:
|
||||||
|
|
||||||
|
**New Profile Support**: Added comprehensive IDE profile support with eight specialized profiles: Claude Code, Cline, Codex, Cursor, Roo, Trae, VS Code, and Windsurf. Each profile is optimized for its respective IDE with appropriate mappings and configuration.
|
||||||
|
**Initialization**: You can now specify which rule profiles to include at project initialization using `--rules <profiles>` or `-r <profiles>` (e.g., `task-master init -r cursor,roo`). Only the selected profiles and configuration are included.
|
||||||
|
**Add/Remove Commands**: `task-master rules add <profiles>` and `task-master rules remove <profiles>` let you manage specific rule profiles and MCP config after initialization, supporting multiple profiles at once.
|
||||||
|
**Interactive Setup**: `task-master rules setup` launches an interactive prompt to select which rule profiles to add to your project. This does **not** re-initialize your project or affect shell aliases; it only manages rules.
|
||||||
|
**Selective Removal**: Rules removal intelligently preserves existing non-Task Master rules and files and only removes Task Master-specific rules. Profile directories are only removed when completely empty and all conditions are met (no existing rules, no other files/folders, MCP config completely removed).
|
||||||
|
**Safety Features**: Confirmation messages clearly explain that only Task Master-specific rules and MCP configurations will be removed, while preserving existing custom rules and other files.
|
||||||
|
**Robust Validation**: Includes comprehensive checks for array types in MCP config processing and error handling throughout the rules management system.
|
||||||
|
|
||||||
|
This enables more flexible, rule-specific project setups with intelligent cleanup that preserves user customizations while safely managing Task Master components.
|
||||||
|
- Resolves #338
|
||||||
|
|
||||||
|
- [#804](https://github.com/eyaltoledano/claude-task-master/pull/804) [`1b8c320`](https://github.com/eyaltoledano/claude-task-master/commit/1b8c320c570473082f1eb4bf9628bff66e799092) Thanks [@ejones40](https://github.com/ejones40)! - Add better support for python projects by adding `pyproject.toml` as a projectRoot marker
|
||||||
|
|
||||||
|
- [#743](https://github.com/eyaltoledano/claude-task-master/pull/743) [`a2a3229`](https://github.com/eyaltoledano/claude-task-master/commit/a2a3229fd01e24a5838f11a3938a77250101e184) Thanks [@joedanz](https://github.com/joedanz)! - - **Git Worktree Detection:**
|
||||||
|
- Now properly skips Git initialization when inside existing Git worktree
|
||||||
|
- Prevents accidental nested repository creation
|
||||||
|
- **Flag System Overhaul:**
|
||||||
|
- `--git`/`--no-git` controls repository initialization
|
||||||
|
- `--aliases`/`--no-aliases` consistently manages shell alias creation
|
||||||
|
- `--git-tasks`/`--no-git-tasks` controls whether task files are stored in Git
|
||||||
|
- `--dry-run` accurately previews all initialization behaviors
|
||||||
|
- **GitTasks Functionality:**
|
||||||
|
- New `--git-tasks` flag includes task files in Git (comments them out in .gitignore)
|
||||||
|
- New `--no-git-tasks` flag excludes task files from Git (default behavior)
|
||||||
|
- Supports both CLI and MCP interfaces with proper parameter passing
|
||||||
|
|
||||||
|
**Implementation Details:**
|
||||||
|
- Added explicit Git worktree detection before initialization
|
||||||
|
- Refactored flag processing to ensure consistent behavior
|
||||||
|
- Fixes #734
|
||||||
|
|
||||||
|
- [#829](https://github.com/eyaltoledano/claude-task-master/pull/829) [`4b0c9d9`](https://github.com/eyaltoledano/claude-task-master/commit/4b0c9d9af62d00359fca3f43283cf33223d410bc) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add Claude Code provider support
|
||||||
|
|
||||||
|
Introduces a new provider that enables using Claude models (Opus and Sonnet) through the Claude Code CLI without requiring an API key.
|
||||||
|
|
||||||
|
Key features:
|
||||||
|
- New claude-code provider with support for opus and sonnet models
|
||||||
|
- No API key required - uses local Claude Code CLI installation
|
||||||
|
- Optional dependency - won't affect users who don't need Claude Code
|
||||||
|
- Lazy loading ensures the provider only loads when requested
|
||||||
|
- Full integration with existing Task Master commands and workflows
|
||||||
|
- Comprehensive test coverage for reliability
|
||||||
|
- New --claude-code flag for the models command
|
||||||
|
|
||||||
|
Users can now configure Claude Code models with:
|
||||||
|
task-master models --set-main sonnet --claude-code
|
||||||
|
task-master models --set-research opus --claude-code
|
||||||
|
|
||||||
|
The @anthropic-ai/claude-code package is optional and won't be installed unless explicitly needed.
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#827](https://github.com/eyaltoledano/claude-task-master/pull/827) [`5da5b59`](https://github.com/eyaltoledano/claude-task-master/commit/5da5b59bdeeb634dcb3adc7a9bc0fc37e004fa0c) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix expand command preserving tagged task structure and preventing data corruption
|
||||||
|
- Enhance E2E tests with comprehensive tag-aware expand testing to verify tag corruption fix
|
||||||
|
- Add new test section for feature-expand tag creation and testing during expand operations
|
||||||
|
- Verify tag preservation during expand, force expand, and expand --all operations
|
||||||
|
- Test that master tag remains intact while feature-expand tag receives subtasks correctly
|
||||||
|
- Fix file path references to use correct .taskmaster/config.json and .taskmaster/tasks/tasks.json locations
|
||||||
|
- All tag corruption verification tests pass successfully, confirming the expand command tag corruption bug fix works as expected
|
||||||
|
|
||||||
|
- [#833](https://github.com/eyaltoledano/claude-task-master/pull/833) [`cf2c066`](https://github.com/eyaltoledano/claude-task-master/commit/cf2c06697a0b5b952fb6ca4b3c923e9892604d08) Thanks [@joedanz](https://github.com/joedanz)! - Call rules interactive setup during init
|
||||||
|
|
||||||
|
- [#826](https://github.com/eyaltoledano/claude-task-master/pull/826) [`7811227`](https://github.com/eyaltoledano/claude-task-master/commit/78112277b3caa4539e6e29805341a944799fb0e7) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improves Amazon Bedrock support
|
||||||
|
|
||||||
|
- [#834](https://github.com/eyaltoledano/claude-task-master/pull/834) [`6483537`](https://github.com/eyaltoledano/claude-task-master/commit/648353794eb60d11ffceda87370a321ad310fbd7) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix issues with task creation/update where subtasks are being created like id: <parent_task>.<subtask> instead if just id: <subtask>
|
||||||
|
|
||||||
|
- [#835](https://github.com/eyaltoledano/claude-task-master/pull/835) [`727f1ec`](https://github.com/eyaltoledano/claude-task-master/commit/727f1ec4ebcbdd82547784c4c113b666af7e122e) Thanks [@joedanz](https://github.com/joedanz)! - Store tasks in Git by default
|
||||||
|
|
||||||
|
- [#822](https://github.com/eyaltoledano/claude-task-master/pull/822) [`1bd6d4f`](https://github.com/eyaltoledano/claude-task-master/commit/1bd6d4f2468070690e152e6e63e15a57bc550d90) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Improve provider validation system with clean constants structure
|
||||||
- **Fixed "Invalid provider hint" errors**: Resolved validation failures for Azure, Vertex, and Bedrock providers
|
- **Fixed "Invalid provider hint" errors**: Resolved validation failures for Azure, Vertex, and Bedrock providers
|
||||||
- **Improved search UX**: Integrated search for better model discovery with real-time filtering
|
- **Improved search UX**: Integrated search for better model discovery with real-time filtering
|
||||||
- **Better organization**: Moved custom provider options to bottom of model selection with clear section separators
|
- **Better organization**: Moved custom provider options to bottom of model selection with clear section separators
|
||||||
@@ -113,7 +341,6 @@
|
|||||||
The new `research` command provides AI-powered research capabilities that automatically gather relevant project context to answer your questions. The command intelligently selects context from multiple sources and supports interactive follow-up questions in CLI mode.
|
The new `research` command provides AI-powered research capabilities that automatically gather relevant project context to answer your questions. The command intelligently selects context from multiple sources and supports interactive follow-up questions in CLI mode.
|
||||||
|
|
||||||
**Key Features:**
|
**Key Features:**
|
||||||
|
|
||||||
- **Intelligent Task Discovery**: Automatically finds relevant tasks and subtasks using fuzzy search based on your query keywords, supplementing any explicitly provided task IDs
|
- **Intelligent Task Discovery**: Automatically finds relevant tasks and subtasks using fuzzy search based on your query keywords, supplementing any explicitly provided task IDs
|
||||||
- **Multi-Source Context**: Gathers context from tasks, files, project structure, and custom text to provide comprehensive answers
|
- **Multi-Source Context**: Gathers context from tasks, files, project structure, and custom text to provide comprehensive answers
|
||||||
- **Interactive Follow-ups**: CLI users can ask follow-up questions that build on the conversation history while allowing fresh context discovery for each question
|
- **Interactive Follow-ups**: CLI users can ask follow-up questions that build on the conversation history while allowing fresh context discovery for each question
|
||||||
@@ -138,14 +365,12 @@
|
|||||||
```
|
```
|
||||||
|
|
||||||
**Context Sources:**
|
**Context Sources:**
|
||||||
|
|
||||||
- **Tasks**: Automatically discovers relevant tasks/subtasks via fuzzy search, plus any explicitly specified via `--id`
|
- **Tasks**: Automatically discovers relevant tasks/subtasks via fuzzy search, plus any explicitly specified via `--id`
|
||||||
- **Files**: Include specific files via `--files` for code-aware responses
|
- **Files**: Include specific files via `--files` for code-aware responses
|
||||||
- **Project Tree**: Add `--tree` to include project structure overview
|
- **Project Tree**: Add `--tree` to include project structure overview
|
||||||
- **Custom Context**: Provide additional context via `--context` for domain-specific information
|
- **Custom Context**: Provide additional context via `--context` for domain-specific information
|
||||||
|
|
||||||
**Interactive Features (CLI only):**
|
**Interactive Features (CLI only):**
|
||||||
|
|
||||||
- Follow-up questions that maintain conversation history
|
- Follow-up questions that maintain conversation history
|
||||||
- Fresh fuzzy search for each follow-up to discover newly relevant tasks
|
- Fresh fuzzy search for each follow-up to discover newly relevant tasks
|
||||||
- Cumulative context building across the conversation
|
- Cumulative context building across the conversation
|
||||||
@@ -156,7 +381,6 @@
|
|||||||
**Save Functionality:**
|
**Save Functionality:**
|
||||||
|
|
||||||
The research command now supports saving complete conversation threads to tasks or subtasks:
|
The research command now supports saving complete conversation threads to tasks or subtasks:
|
||||||
|
|
||||||
- Save research results and follow-up conversations to any task (e.g., "15") or subtask (e.g., "15.2")
|
- Save research results and follow-up conversations to any task (e.g., "15") or subtask (e.g., "15.2")
|
||||||
- Automatic timestamping and formatting of conversation history
|
- Automatic timestamping and formatting of conversation history
|
||||||
- Validation of task/subtask existence before saving
|
- Validation of task/subtask existence before saving
|
||||||
@@ -174,7 +398,6 @@
|
|||||||
```
|
```
|
||||||
|
|
||||||
**MCP Integration:**
|
**MCP Integration:**
|
||||||
|
|
||||||
- `saveTo` parameter for automatic saving to specified task/subtask ID
|
- `saveTo` parameter for automatic saving to specified task/subtask ID
|
||||||
- Structured response format with telemetry data
|
- Structured response format with telemetry data
|
||||||
- Silent operation mode for programmatic usage
|
- Silent operation mode for programmatic usage
|
||||||
@@ -187,12 +410,10 @@
|
|||||||
Adds the `--append` flag to `update-task` command, enabling it to behave like `update-subtask` with timestamped information appending. This provides more flexible task updating options:
|
Adds the `--append` flag to `update-task` command, enabling it to behave like `update-subtask` with timestamped information appending. This provides more flexible task updating options:
|
||||||
|
|
||||||
**CLI Enhancement:**
|
**CLI Enhancement:**
|
||||||
|
|
||||||
- `task-master update-task --id=5 --prompt="New info"` - Full task update (existing behavior)
|
- `task-master update-task --id=5 --prompt="New info"` - Full task update (existing behavior)
|
||||||
- `task-master update-task --id=5 --append --prompt="Progress update"` - Append timestamped info to task details
|
- `task-master update-task --id=5 --append --prompt="Progress update"` - Append timestamped info to task details
|
||||||
|
|
||||||
**Full MCP Integration:**
|
**Full MCP Integration:**
|
||||||
|
|
||||||
- MCP tool `update_task` now supports `append` parameter
|
- MCP tool `update_task` now supports `append` parameter
|
||||||
- Seamless integration with Cursor and other MCP clients
|
- Seamless integration with Cursor and other MCP clients
|
||||||
- Consistent behavior between CLI and MCP interfaces
|
- Consistent behavior between CLI and MCP interfaces
|
||||||
@@ -202,7 +423,6 @@
|
|||||||
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`c0b3f43`](https://github.com/eyaltoledano/claude-task-master/commit/c0b3f432a60891550b00acb113dc877bd432995f) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add --tag flag support to core commands for multi-context task management. Commands like parse-prd, analyze-complexity, and others now support targeting specific task lists, enabling rapid prototyping and parallel development workflows.
|
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`c0b3f43`](https://github.com/eyaltoledano/claude-task-master/commit/c0b3f432a60891550b00acb113dc877bd432995f) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add --tag flag support to core commands for multi-context task management. Commands like parse-prd, analyze-complexity, and others now support targeting specific task lists, enabling rapid prototyping and parallel development workflows.
|
||||||
|
|
||||||
Key features:
|
Key features:
|
||||||
|
|
||||||
- parse-prd --tag=feature-name: Parse PRDs into separate task contexts on the fly
|
- parse-prd --tag=feature-name: Parse PRDs into separate task contexts on the fly
|
||||||
- analyze-complexity --tag=branch: Generate tag-specific complexity reports
|
- analyze-complexity --tag=branch: Generate tag-specific complexity reports
|
||||||
- All task operations can target specific contexts while preserving other lists
|
- All task operations can target specific contexts while preserving other lists
|
||||||
@@ -215,7 +435,6 @@
|
|||||||
**🏷️ Tagged Task Lists Architecture:**
|
**🏷️ Tagged Task Lists Architecture:**
|
||||||
|
|
||||||
The new tagged system fundamentally improves how tasks are organized:
|
The new tagged system fundamentally improves how tasks are organized:
|
||||||
|
|
||||||
- **Legacy Format**: `{ "tasks": [...] }`
|
- **Legacy Format**: `{ "tasks": [...] }`
|
||||||
- **New Tagged Format**: `{ "master": { "tasks": [...], "metadata": {...} }, "feature-xyz": { "tasks": [...], "metadata": {...} } }`
|
- **New Tagged Format**: `{ "master": { "tasks": [...], "metadata": {...} }, "feature-xyz": { "tasks": [...], "metadata": {...} } }`
|
||||||
- **Automatic Migration**: Existing projects will seamlessly migrate to tagged format with zero user intervention
|
- **Automatic Migration**: Existing projects will seamlessly migrate to tagged format with zero user intervention
|
||||||
@@ -227,7 +446,6 @@
|
|||||||
**🚀 Complete Tag Management Suite:**
|
**🚀 Complete Tag Management Suite:**
|
||||||
|
|
||||||
**Core Tag Commands:**
|
**Core Tag Commands:**
|
||||||
|
|
||||||
- `task-master tags [--show-metadata]` - List all tags with task counts, completion stats, and metadata
|
- `task-master tags [--show-metadata]` - List all tags with task counts, completion stats, and metadata
|
||||||
- `task-master add-tag <name> [options]` - Create new tag contexts with optional task copying
|
- `task-master add-tag <name> [options]` - Create new tag contexts with optional task copying
|
||||||
- `task-master delete-tag <name> [--yes]` - Delete tags (and attached tasks) with double confirmation protection
|
- `task-master delete-tag <name> [--yes]` - Delete tags (and attached tasks) with double confirmation protection
|
||||||
@@ -238,7 +456,6 @@
|
|||||||
**🤖 Full MCP Integration for Tag Management:**
|
**🤖 Full MCP Integration for Tag Management:**
|
||||||
|
|
||||||
Task Master's multi-context capabilities are now fully exposed through the MCP server, enabling powerful agentic workflows:
|
Task Master's multi-context capabilities are now fully exposed through the MCP server, enabling powerful agentic workflows:
|
||||||
|
|
||||||
- **`list_tags`**: List all available tag contexts.
|
- **`list_tags`**: List all available tag contexts.
|
||||||
- **`add_tag`**: Programmatically create new tags.
|
- **`add_tag`**: Programmatically create new tags.
|
||||||
- **`delete_tag`**: Remove tag contexts.
|
- **`delete_tag`**: Remove tag contexts.
|
||||||
@@ -247,7 +464,6 @@
|
|||||||
- **`copy_tag`**: Duplicate entire task contexts for experimentation.
|
- **`copy_tag`**: Duplicate entire task contexts for experimentation.
|
||||||
|
|
||||||
**Tag Creation Options:**
|
**Tag Creation Options:**
|
||||||
|
|
||||||
- `--copy-from-current` - Copy tasks from currently active tag
|
- `--copy-from-current` - Copy tasks from currently active tag
|
||||||
- `--copy-from=<tag>` - Copy tasks from specific tag
|
- `--copy-from=<tag>` - Copy tasks from specific tag
|
||||||
- `--from-branch` - Creates a new tag using the active git branch name (for `add-tag` only)
|
- `--from-branch` - Creates a new tag using the active git branch name (for `add-tag` only)
|
||||||
@@ -257,7 +473,6 @@
|
|||||||
**🎯 Universal --tag Flag Support:**
|
**🎯 Universal --tag Flag Support:**
|
||||||
|
|
||||||
Every task operation now supports tag-specific execution:
|
Every task operation now supports tag-specific execution:
|
||||||
|
|
||||||
- `task-master list --tag=feature-branch` - View tasks in specific context
|
- `task-master list --tag=feature-branch` - View tasks in specific context
|
||||||
- `task-master add-task --tag=experiment --prompt="..."` - Create tasks in specific tag
|
- `task-master add-task --tag=experiment --prompt="..."` - Create tasks in specific tag
|
||||||
- `task-master parse-prd document.txt --tag=v2-redesign` - Parse PRDs into dedicated contexts
|
- `task-master parse-prd document.txt --tag=v2-redesign` - Parse PRDs into dedicated contexts
|
||||||
@@ -270,20 +485,17 @@
|
|||||||
**📊 Enhanced Workflow Features:**
|
**📊 Enhanced Workflow Features:**
|
||||||
|
|
||||||
**Smart Context Switching:**
|
**Smart Context Switching:**
|
||||||
|
|
||||||
- `use-tag` command shows immediate next task after switching
|
- `use-tag` command shows immediate next task after switching
|
||||||
- Automatic tag creation when targeting non-existent tags
|
- Automatic tag creation when targeting non-existent tags
|
||||||
- Current tag persistence across terminal sessions
|
- Current tag persistence across terminal sessions
|
||||||
- Branch-tag mapping for future Git integration
|
- Branch-tag mapping for future Git integration
|
||||||
|
|
||||||
**Intelligent File Management:**
|
**Intelligent File Management:**
|
||||||
|
|
||||||
- Tag-specific complexity reports: `task-complexity-report_tagname.json`
|
- Tag-specific complexity reports: `task-complexity-report_tagname.json`
|
||||||
- Master tag uses default filenames: `task-complexity-report.json`
|
- Master tag uses default filenames: `task-complexity-report.json`
|
||||||
- Automatic file isolation prevents cross-tag contamination
|
- Automatic file isolation prevents cross-tag contamination
|
||||||
|
|
||||||
**Advanced Confirmation Logic:**
|
**Advanced Confirmation Logic:**
|
||||||
|
|
||||||
- Commands only prompt when target tag has existing tasks
|
- Commands only prompt when target tag has existing tasks
|
||||||
- Empty tags allow immediate operations without confirmation
|
- Empty tags allow immediate operations without confirmation
|
||||||
- Smart append vs overwrite detection
|
- Smart append vs overwrite detection
|
||||||
@@ -291,14 +503,12 @@
|
|||||||
**🔄 Seamless Migration & Compatibility:**
|
**🔄 Seamless Migration & Compatibility:**
|
||||||
|
|
||||||
**Zero-Disruption Migration:**
|
**Zero-Disruption Migration:**
|
||||||
|
|
||||||
- Existing `tasks.json` files automatically migrate on first command
|
- Existing `tasks.json` files automatically migrate on first command
|
||||||
- Master tag receives proper metadata (creation date, description)
|
- Master tag receives proper metadata (creation date, description)
|
||||||
- Migration notice shown once with helpful explanation
|
- Migration notice shown once with helpful explanation
|
||||||
- All existing commands work identically to before
|
- All existing commands work identically to before
|
||||||
|
|
||||||
**State Management:**
|
**State Management:**
|
||||||
|
|
||||||
- `.taskmaster/state.json` tracks current tag and migration status
|
- `.taskmaster/state.json` tracks current tag and migration status
|
||||||
- Automatic state creation and maintenance
|
- Automatic state creation and maintenance
|
||||||
- Branch-tag mapping foundation for Git integration
|
- Branch-tag mapping foundation for Git integration
|
||||||
@@ -306,7 +516,6 @@
|
|||||||
- Grounds for future context additions
|
- Grounds for future context additions
|
||||||
|
|
||||||
**Backward Compatibility:**
|
**Backward Compatibility:**
|
||||||
|
|
||||||
- All existing workflows continue unchanged
|
- All existing workflows continue unchanged
|
||||||
- Legacy commands work exactly as before
|
- Legacy commands work exactly as before
|
||||||
- Gradual adoption - users can ignore tags entirely if desired
|
- Gradual adoption - users can ignore tags entirely if desired
|
||||||
@@ -315,25 +524,21 @@
|
|||||||
**💡 Real-World Use Cases:**
|
**💡 Real-World Use Cases:**
|
||||||
|
|
||||||
**Team Collaboration:**
|
**Team Collaboration:**
|
||||||
|
|
||||||
- `task-master add-tag alice --copy-from-current` - Create teammate-specific contexts
|
- `task-master add-tag alice --copy-from-current` - Create teammate-specific contexts
|
||||||
- `task-master add-tag bob --copy-from=master` - Onboard new team members
|
- `task-master add-tag bob --copy-from=master` - Onboard new team members
|
||||||
- `task-master use-tag alice` - Switch to teammate's work context
|
- `task-master use-tag alice` - Switch to teammate's work context
|
||||||
|
|
||||||
**Feature Development:**
|
**Feature Development:**
|
||||||
|
|
||||||
- `task-master parse-prd feature-spec.txt --tag=user-auth` - Dedicated feature planning
|
- `task-master parse-prd feature-spec.txt --tag=user-auth` - Dedicated feature planning
|
||||||
- `task-master add-tag experiment --copy-from=user-auth` - Safe experimentation
|
- `task-master add-tag experiment --copy-from=user-auth` - Safe experimentation
|
||||||
- `task-master analyze-complexity --tag=user-auth` - Feature-specific analysis
|
- `task-master analyze-complexity --tag=user-auth` - Feature-specific analysis
|
||||||
|
|
||||||
**Release Management:**
|
**Release Management:**
|
||||||
|
|
||||||
- `task-master add-tag v2.0 --description="Next major release"` - Version-specific planning
|
- `task-master add-tag v2.0 --description="Next major release"` - Version-specific planning
|
||||||
- `task-master copy-tag master v2.1` - Release branch preparation
|
- `task-master copy-tag master v2.1` - Release branch preparation
|
||||||
- `task-master use-tag hotfix` - Emergency fix context
|
- `task-master use-tag hotfix` - Emergency fix context
|
||||||
|
|
||||||
**Project Phases:**
|
**Project Phases:**
|
||||||
|
|
||||||
- `task-master add-tag research --description="Discovery phase"` - Research tasks
|
- `task-master add-tag research --description="Discovery phase"` - Research tasks
|
||||||
- `task-master add-tag implementation --copy-from=research` - Development phase
|
- `task-master add-tag implementation --copy-from=research` - Development phase
|
||||||
- `task-master add-tag testing --copy-from=implementation` - QA phase
|
- `task-master add-tag testing --copy-from=implementation` - QA phase
|
||||||
@@ -341,21 +546,18 @@
|
|||||||
**🛠️ Technical Implementation:**
|
**🛠️ Technical Implementation:**
|
||||||
|
|
||||||
**Data Structure:**
|
**Data Structure:**
|
||||||
|
|
||||||
- Tagged format with complete isolation between contexts
|
- Tagged format with complete isolation between contexts
|
||||||
- Rich metadata per tag (creation date, description, update tracking)
|
- Rich metadata per tag (creation date, description, update tracking)
|
||||||
- Automatic metadata enhancement for existing tags
|
- Automatic metadata enhancement for existing tags
|
||||||
- Clean separation of tag data and internal state
|
- Clean separation of tag data and internal state
|
||||||
|
|
||||||
**Performance Optimizations:**
|
**Performance Optimizations:**
|
||||||
|
|
||||||
- Dynamic task counting without stored counters
|
- Dynamic task counting without stored counters
|
||||||
- Efficient tag resolution and caching
|
- Efficient tag resolution and caching
|
||||||
- Minimal file I/O with smart data loading
|
- Minimal file I/O with smart data loading
|
||||||
- Responsive table layouts adapting to terminal width
|
- Responsive table layouts adapting to terminal width
|
||||||
|
|
||||||
**Error Handling:**
|
**Error Handling:**
|
||||||
|
|
||||||
- Comprehensive validation for tag names (alphanumeric, hyphens, underscores)
|
- Comprehensive validation for tag names (alphanumeric, hyphens, underscores)
|
||||||
- Reserved name protection (master, main, default)
|
- Reserved name protection (master, main, default)
|
||||||
- Graceful handling of missing tags and corrupted data
|
- Graceful handling of missing tags and corrupted data
|
||||||
@@ -370,18 +572,15 @@
|
|||||||
Added comprehensive save-to-file capability to the research command, enabling users to preserve research sessions for future reference and documentation.
|
Added comprehensive save-to-file capability to the research command, enabling users to preserve research sessions for future reference and documentation.
|
||||||
|
|
||||||
**CLI Integration:**
|
**CLI Integration:**
|
||||||
|
|
||||||
- New `--save-file` flag for `task-master research` command
|
- New `--save-file` flag for `task-master research` command
|
||||||
- Consistent with existing `--save` and `--save-to` flags for intuitive usage
|
- Consistent with existing `--save` and `--save-to` flags for intuitive usage
|
||||||
- Interactive "Save to file" option in follow-up questions menu
|
- Interactive "Save to file" option in follow-up questions menu
|
||||||
|
|
||||||
**MCP Integration:**
|
**MCP Integration:**
|
||||||
|
|
||||||
- New `saveToFile` boolean parameter for the `research` MCP tool
|
- New `saveToFile` boolean parameter for the `research` MCP tool
|
||||||
- Enables programmatic research saving for AI agents and integrated tools
|
- Enables programmatic research saving for AI agents and integrated tools
|
||||||
|
|
||||||
**File Management:**
|
**File Management:**
|
||||||
|
|
||||||
- Automatically creates `.taskmaster/docs/research/` directory structure
|
- Automatically creates `.taskmaster/docs/research/` directory structure
|
||||||
- Generates timestamped, slugified filenames (e.g., `2025-01-13_what-is-typescript.md`)
|
- Generates timestamped, slugified filenames (e.g., `2025-01-13_what-is-typescript.md`)
|
||||||
- Comprehensive Markdown format with metadata headers including query, timestamp, and context sources
|
- Comprehensive Markdown format with metadata headers including query, timestamp, and context sources
|
||||||
@@ -392,14 +591,12 @@
|
|||||||
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`c0b3f43`](https://github.com/eyaltoledano/claude-task-master/commit/c0b3f432a60891550b00acb113dc877bd432995f) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Enhanced get-task/show command to support comma-separated task IDs for efficient batch operations
|
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`c0b3f43`](https://github.com/eyaltoledano/claude-task-master/commit/c0b3f432a60891550b00acb113dc877bd432995f) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Enhanced get-task/show command to support comma-separated task IDs for efficient batch operations
|
||||||
|
|
||||||
**New Features:**
|
**New Features:**
|
||||||
|
|
||||||
- **Multiple Task Retrieval**: Pass comma-separated IDs to get/show multiple tasks at once (e.g., `task-master show 1,3,5` or MCP `get_task` with `id: "1,3,5"`)
|
- **Multiple Task Retrieval**: Pass comma-separated IDs to get/show multiple tasks at once (e.g., `task-master show 1,3,5` or MCP `get_task` with `id: "1,3,5"`)
|
||||||
- **Smart Display Logic**: Single ID shows detailed view, multiple IDs show compact summary table with interactive options
|
- **Smart Display Logic**: Single ID shows detailed view, multiple IDs show compact summary table with interactive options
|
||||||
- **Batch Action Menu**: Interactive menu for multiple tasks with copy-paste ready commands for common operations (mark as done/in-progress, expand all, view dependencies, etc.)
|
- **Batch Action Menu**: Interactive menu for multiple tasks with copy-paste ready commands for common operations (mark as done/in-progress, expand all, view dependencies, etc.)
|
||||||
- **MCP Array Response**: MCP tool returns structured array of task objects for efficient AI agent context gathering
|
- **MCP Array Response**: MCP tool returns structured array of task objects for efficient AI agent context gathering
|
||||||
|
|
||||||
**Benefits:**
|
**Benefits:**
|
||||||
|
|
||||||
- **Faster Context Gathering**: AI agents can collect multiple tasks/subtasks in one call instead of iterating
|
- **Faster Context Gathering**: AI agents can collect multiple tasks/subtasks in one call instead of iterating
|
||||||
- **Improved Workflow**: Interactive batch operations reduce repetitive command execution
|
- **Improved Workflow**: Interactive batch operations reduce repetitive command execution
|
||||||
- **Better UX**: Responsive layout adapts to terminal width, maintains consistency with existing UI patterns
|
- **Better UX**: Responsive layout adapts to terminal width, maintains consistency with existing UI patterns
|
||||||
@@ -418,7 +615,6 @@
|
|||||||
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`5ec1f61`](https://github.com/eyaltoledano/claude-task-master/commit/5ec1f61c13f468648b7fdc8fa112e95aec25f76d) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Fix Cursor deeplink installation by providing copy-paste instructions for GitHub compatibility
|
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`5ec1f61`](https://github.com/eyaltoledano/claude-task-master/commit/5ec1f61c13f468648b7fdc8fa112e95aec25f76d) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Fix Cursor deeplink installation by providing copy-paste instructions for GitHub compatibility
|
||||||
|
|
||||||
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`c0b3f43`](https://github.com/eyaltoledano/claude-task-master/commit/c0b3f432a60891550b00acb113dc877bd432995f) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Fix critical bugs in task move functionality:
|
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`c0b3f43`](https://github.com/eyaltoledano/claude-task-master/commit/c0b3f432a60891550b00acb113dc877bd432995f) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Fix critical bugs in task move functionality:
|
||||||
|
|
||||||
- **Fixed moving tasks to become subtasks of empty parents**: When moving a task to become a subtask of a parent that had no existing subtasks (e.g., task 89 → task 98.1), the operation would fail with validation errors.
|
- **Fixed moving tasks to become subtasks of empty parents**: When moving a task to become a subtask of a parent that had no existing subtasks (e.g., task 89 → task 98.1), the operation would fail with validation errors.
|
||||||
- **Fixed moving subtasks between parents**: Subtasks can now be properly moved between different parent tasks, including to parents that previously had no subtasks.
|
- **Fixed moving subtasks between parents**: Subtasks can now be properly moved between different parent tasks, including to parents that previously had no subtasks.
|
||||||
- **Improved comma-separated batch moves**: Multiple tasks can now be moved simultaneously using comma-separated IDs (e.g., "88,90" → "92,93") with proper error handling and atomic operations.
|
- **Improved comma-separated batch moves**: Multiple tasks can now be moved simultaneously using comma-separated IDs (e.g., "88,90" → "92,93") with proper error handling and atomic operations.
|
||||||
@@ -428,7 +624,6 @@
|
|||||||
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`d76bea4`](https://github.com/eyaltoledano/claude-task-master/commit/d76bea49b381c523183f39e33c2a4269371576ed) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Update o3 model price
|
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`d76bea4`](https://github.com/eyaltoledano/claude-task-master/commit/d76bea49b381c523183f39e33c2a4269371576ed) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Update o3 model price
|
||||||
|
|
||||||
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`0849c0c`](https://github.com/eyaltoledano/claude-task-master/commit/0849c0c2cedb16ac44ba5cc2d109625a9b4efd67) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Fixes issue with expand CLI command "Complexity report not found"
|
- [#779](https://github.com/eyaltoledano/claude-task-master/pull/779) [`0849c0c`](https://github.com/eyaltoledano/claude-task-master/commit/0849c0c2cedb16ac44ba5cc2d109625a9b4efd67) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Fixes issue with expand CLI command "Complexity report not found"
|
||||||
|
|
||||||
- Closes #735
|
- Closes #735
|
||||||
- Closes #728
|
- Closes #728
|
||||||
|
|
||||||
@@ -452,32 +647,27 @@
|
|||||||
- [#699](https://github.com/eyaltoledano/claude-task-master/pull/699) [`27edbd8`](https://github.com/eyaltoledano/claude-task-master/commit/27edbd8f3fe5e2ac200b80e7f27f4c0e74a074d6) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Enhanced add-task fuzzy search intelligence and improved user experience
|
- [#699](https://github.com/eyaltoledano/claude-task-master/pull/699) [`27edbd8`](https://github.com/eyaltoledano/claude-task-master/commit/27edbd8f3fe5e2ac200b80e7f27f4c0e74a074d6) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Enhanced add-task fuzzy search intelligence and improved user experience
|
||||||
|
|
||||||
**Smarter Task Discovery:**
|
**Smarter Task Discovery:**
|
||||||
|
|
||||||
- Remove hardcoded category system that always matched "Task management"
|
- Remove hardcoded category system that always matched "Task management"
|
||||||
- Eliminate arbitrary limits on fuzzy search results (5→25 high relevance, 3→10 medium relevance, 8→20 detailed tasks)
|
- Eliminate arbitrary limits on fuzzy search results (5→25 high relevance, 3→10 medium relevance, 8→20 detailed tasks)
|
||||||
- Improve semantic weighting in Fuse.js search (details=3, description=2, title=1.5) for better relevance
|
- Improve semantic weighting in Fuse.js search (details=3, description=2, title=1.5) for better relevance
|
||||||
- Generate context-driven task recommendations based on true semantic similarity
|
- Generate context-driven task recommendations based on true semantic similarity
|
||||||
|
|
||||||
**Enhanced Terminal Experience:**
|
**Enhanced Terminal Experience:**
|
||||||
|
|
||||||
- Fix duplicate banner display issue that was "eating" terminal history (closes #553)
|
- Fix duplicate banner display issue that was "eating" terminal history (closes #553)
|
||||||
- Remove console.clear() and redundant displayBanner() calls from UI functions
|
- Remove console.clear() and redundant displayBanner() calls from UI functions
|
||||||
- Preserve command history for better development workflow
|
- Preserve command history for better development workflow
|
||||||
- Streamline banner display across all commands (list, next, show, set-status, clear-subtasks, dependency commands)
|
- Streamline banner display across all commands (list, next, show, set-status, clear-subtasks, dependency commands)
|
||||||
|
|
||||||
**Visual Improvements:**
|
**Visual Improvements:**
|
||||||
|
|
||||||
- Replace emoji complexity indicators with clean filled circle characters (●) for professional appearance
|
- Replace emoji complexity indicators with clean filled circle characters (●) for professional appearance
|
||||||
- Improve consistency and readability of task complexity display
|
- Improve consistency and readability of task complexity display
|
||||||
|
|
||||||
**AI Provider Compatibility:**
|
**AI Provider Compatibility:**
|
||||||
|
|
||||||
- Change generateObject mode from 'tool' to 'auto' for better cross-provider compatibility
|
- Change generateObject mode from 'tool' to 'auto' for better cross-provider compatibility
|
||||||
- Add qwen3-235n-a22b:free model support (closes #687)
|
- Add qwen3-235n-a22b:free model support (closes #687)
|
||||||
- Add smart warnings for free OpenRouter models with limitations (rate limits, restricted context, no tool_use)
|
- Add smart warnings for free OpenRouter models with limitations (rate limits, restricted context, no tool_use)
|
||||||
|
|
||||||
**Technical Improvements:**
|
**Technical Improvements:**
|
||||||
|
|
||||||
- Enhanced context generation in add-task to rely on semantic similarity rather than rigid pattern matching
|
- Enhanced context generation in add-task to rely on semantic similarity rather than rigid pattern matching
|
||||||
- Improved dependency analysis and common pattern detection
|
- Improved dependency analysis and common pattern detection
|
||||||
- Better handling of task relationships and relevance scoring
|
- Better handling of task relationships and relevance scoring
|
||||||
@@ -486,7 +676,6 @@
|
|||||||
The add-task system now provides truly relevant task context based on semantic understanding rather than arbitrary categories and limits, while maintaining a cleaner and more professional terminal experience.
|
The add-task system now provides truly relevant task context based on semantic understanding rather than arbitrary categories and limits, while maintaining a cleaner and more professional terminal experience.
|
||||||
|
|
||||||
- [#655](https://github.com/eyaltoledano/claude-task-master/pull/655) [`edaa5fe`](https://github.com/eyaltoledano/claude-task-master/commit/edaa5fe0d56e0e4e7c4370670a7a388eebd922ac) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix double .taskmaster directory paths in file resolution utilities
|
- [#655](https://github.com/eyaltoledano/claude-task-master/pull/655) [`edaa5fe`](https://github.com/eyaltoledano/claude-task-master/commit/edaa5fe0d56e0e4e7c4370670a7a388eebd922ac) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix double .taskmaster directory paths in file resolution utilities
|
||||||
|
|
||||||
- Closes #636
|
- Closes #636
|
||||||
|
|
||||||
- [#671](https://github.com/eyaltoledano/claude-task-master/pull/671) [`86ea6d1`](https://github.com/eyaltoledano/claude-task-master/commit/86ea6d1dbc03eeb39f524f565b50b7017b1d2c9c) Thanks [@joedanz](https://github.com/joedanz)! - Add one-click MCP server installation for Cursor
|
- [#671](https://github.com/eyaltoledano/claude-task-master/pull/671) [`86ea6d1`](https://github.com/eyaltoledano/claude-task-master/commit/86ea6d1dbc03eeb39f524f565b50b7017b1d2c9c) Thanks [@joedanz](https://github.com/joedanz)! - Add one-click MCP server installation for Cursor
|
||||||
@@ -496,13 +685,11 @@
|
|||||||
Introduces a new `sync-readme` command that exports your task list to your project's README.md file.
|
Introduces a new `sync-readme` command that exports your task list to your project's README.md file.
|
||||||
|
|
||||||
**Features:**
|
**Features:**
|
||||||
|
|
||||||
- **Flexible filtering**: Supports `--status` filtering (e.g., pending, done) and `--with-subtasks` flag
|
- **Flexible filtering**: Supports `--status` filtering (e.g., pending, done) and `--with-subtasks` flag
|
||||||
- **Smart content management**: Automatically replaces existing exports or appends to new READMEs
|
- **Smart content management**: Automatically replaces existing exports or appends to new READMEs
|
||||||
- **Metadata display**: Shows export timestamp, subtask inclusion status, and filter settings
|
- **Metadata display**: Shows export timestamp, subtask inclusion status, and filter settings
|
||||||
|
|
||||||
**Usage:**
|
**Usage:**
|
||||||
|
|
||||||
- `task-master sync-readme` - Export tasks without subtasks
|
- `task-master sync-readme` - Export tasks without subtasks
|
||||||
- `task-master sync-readme --with-subtasks` - Include subtasks in export
|
- `task-master sync-readme --with-subtasks` - Include subtasks in export
|
||||||
- `task-master sync-readme --status=pending` - Only export pending tasks
|
- `task-master sync-readme --status=pending` - Only export pending tasks
|
||||||
@@ -521,32 +708,27 @@
|
|||||||
- [#699](https://github.com/eyaltoledano/claude-task-master/pull/699) [`27edbd8`](https://github.com/eyaltoledano/claude-task-master/commit/27edbd8f3fe5e2ac200b80e7f27f4c0e74a074d6) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Enhanced add-task fuzzy search intelligence and improved user experience
|
- [#699](https://github.com/eyaltoledano/claude-task-master/pull/699) [`27edbd8`](https://github.com/eyaltoledano/claude-task-master/commit/27edbd8f3fe5e2ac200b80e7f27f4c0e74a074d6) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Enhanced add-task fuzzy search intelligence and improved user experience
|
||||||
|
|
||||||
**Smarter Task Discovery:**
|
**Smarter Task Discovery:**
|
||||||
|
|
||||||
- Remove hardcoded category system that always matched "Task management"
|
- Remove hardcoded category system that always matched "Task management"
|
||||||
- Eliminate arbitrary limits on fuzzy search results (5→25 high relevance, 3→10 medium relevance, 8→20 detailed tasks)
|
- Eliminate arbitrary limits on fuzzy search results (5→25 high relevance, 3→10 medium relevance, 8→20 detailed tasks)
|
||||||
- Improve semantic weighting in Fuse.js search (details=3, description=2, title=1.5) for better relevance
|
- Improve semantic weighting in Fuse.js search (details=3, description=2, title=1.5) for better relevance
|
||||||
- Generate context-driven task recommendations based on true semantic similarity
|
- Generate context-driven task recommendations based on true semantic similarity
|
||||||
|
|
||||||
**Enhanced Terminal Experience:**
|
**Enhanced Terminal Experience:**
|
||||||
|
|
||||||
- Fix duplicate banner display issue that was "eating" terminal history (closes #553)
|
- Fix duplicate banner display issue that was "eating" terminal history (closes #553)
|
||||||
- Remove console.clear() and redundant displayBanner() calls from UI functions
|
- Remove console.clear() and redundant displayBanner() calls from UI functions
|
||||||
- Preserve command history for better development workflow
|
- Preserve command history for better development workflow
|
||||||
- Streamline banner display across all commands (list, next, show, set-status, clear-subtasks, dependency commands)
|
- Streamline banner display across all commands (list, next, show, set-status, clear-subtasks, dependency commands)
|
||||||
|
|
||||||
**Visual Improvements:**
|
**Visual Improvements:**
|
||||||
|
|
||||||
- Replace emoji complexity indicators with clean filled circle characters (●) for professional appearance
|
- Replace emoji complexity indicators with clean filled circle characters (●) for professional appearance
|
||||||
- Improve consistency and readability of task complexity display
|
- Improve consistency and readability of task complexity display
|
||||||
|
|
||||||
**AI Provider Compatibility:**
|
**AI Provider Compatibility:**
|
||||||
|
|
||||||
- Change generateObject mode from 'tool' to 'auto' for better cross-provider compatibility
|
- Change generateObject mode from 'tool' to 'auto' for better cross-provider compatibility
|
||||||
- Add qwen3-235n-a22b:free model support (closes #687)
|
- Add qwen3-235n-a22b:free model support (closes #687)
|
||||||
- Add smart warnings for free OpenRouter models with limitations (rate limits, restricted context, no tool_use)
|
- Add smart warnings for free OpenRouter models with limitations (rate limits, restricted context, no tool_use)
|
||||||
|
|
||||||
**Technical Improvements:**
|
**Technical Improvements:**
|
||||||
|
|
||||||
- Enhanced context generation in add-task to rely on semantic similarity rather than rigid pattern matching
|
- Enhanced context generation in add-task to rely on semantic similarity rather than rigid pattern matching
|
||||||
- Improved dependency analysis and common pattern detection
|
- Improved dependency analysis and common pattern detection
|
||||||
- Better handling of task relationships and relevance scoring
|
- Better handling of task relationships and relevance scoring
|
||||||
@@ -555,7 +737,6 @@
|
|||||||
The add-task system now provides truly relevant task context based on semantic understanding rather than arbitrary categories and limits, while maintaining a cleaner and more professional terminal experience.
|
The add-task system now provides truly relevant task context based on semantic understanding rather than arbitrary categories and limits, while maintaining a cleaner and more professional terminal experience.
|
||||||
|
|
||||||
- [#655](https://github.com/eyaltoledano/claude-task-master/pull/655) [`edaa5fe`](https://github.com/eyaltoledano/claude-task-master/commit/edaa5fe0d56e0e4e7c4370670a7a388eebd922ac) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix double .taskmaster directory paths in file resolution utilities
|
- [#655](https://github.com/eyaltoledano/claude-task-master/pull/655) [`edaa5fe`](https://github.com/eyaltoledano/claude-task-master/commit/edaa5fe0d56e0e4e7c4370670a7a388eebd922ac) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix double .taskmaster directory paths in file resolution utilities
|
||||||
|
|
||||||
- Closes #636
|
- Closes #636
|
||||||
|
|
||||||
- [#671](https://github.com/eyaltoledano/claude-task-master/pull/671) [`86ea6d1`](https://github.com/eyaltoledano/claude-task-master/commit/86ea6d1dbc03eeb39f524f565b50b7017b1d2c9c) Thanks [@joedanz](https://github.com/joedanz)! - Add one-click MCP server installation for Cursor
|
- [#671](https://github.com/eyaltoledano/claude-task-master/pull/671) [`86ea6d1`](https://github.com/eyaltoledano/claude-task-master/commit/86ea6d1dbc03eeb39f524f565b50b7017b1d2c9c) Thanks [@joedanz](https://github.com/joedanz)! - Add one-click MCP server installation for Cursor
|
||||||
@@ -565,13 +746,11 @@
|
|||||||
Introduces a new `sync-readme` command that exports your task list to your project's README.md file.
|
Introduces a new `sync-readme` command that exports your task list to your project's README.md file.
|
||||||
|
|
||||||
**Features:**
|
**Features:**
|
||||||
|
|
||||||
- **Flexible filtering**: Supports `--status` filtering (e.g., pending, done) and `--with-subtasks` flag
|
- **Flexible filtering**: Supports `--status` filtering (e.g., pending, done) and `--with-subtasks` flag
|
||||||
- **Smart content management**: Automatically replaces existing exports or appends to new READMEs
|
- **Smart content management**: Automatically replaces existing exports or appends to new READMEs
|
||||||
- **Metadata display**: Shows export timestamp, subtask inclusion status, and filter settings
|
- **Metadata display**: Shows export timestamp, subtask inclusion status, and filter settings
|
||||||
|
|
||||||
**Usage:**
|
**Usage:**
|
||||||
|
|
||||||
- `task-master sync-readme` - Export tasks without subtasks
|
- `task-master sync-readme` - Export tasks without subtasks
|
||||||
- `task-master sync-readme --with-subtasks` - Include subtasks in export
|
- `task-master sync-readme --with-subtasks` - Include subtasks in export
|
||||||
- `task-master sync-readme --status=pending` - Only export pending tasks
|
- `task-master sync-readme --status=pending` - Only export pending tasks
|
||||||
@@ -584,7 +763,6 @@
|
|||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
||||||
- [#655](https://github.com/eyaltoledano/claude-task-master/pull/655) [`edaa5fe`](https://github.com/eyaltoledano/claude-task-master/commit/edaa5fe0d56e0e4e7c4370670a7a388eebd922ac) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix double .taskmaster directory paths in file resolution utilities
|
- [#655](https://github.com/eyaltoledano/claude-task-master/pull/655) [`edaa5fe`](https://github.com/eyaltoledano/claude-task-master/commit/edaa5fe0d56e0e4e7c4370670a7a388eebd922ac) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix double .taskmaster directory paths in file resolution utilities
|
||||||
|
|
||||||
- Closes #636
|
- Closes #636
|
||||||
|
|
||||||
- [#671](https://github.com/eyaltoledano/claude-task-master/pull/671) [`86ea6d1`](https://github.com/eyaltoledano/claude-task-master/commit/86ea6d1dbc03eeb39f524f565b50b7017b1d2c9c) Thanks [@joedanz](https://github.com/joedanz)! - Add one-click MCP server installation for Cursor
|
- [#671](https://github.com/eyaltoledano/claude-task-master/pull/671) [`86ea6d1`](https://github.com/eyaltoledano/claude-task-master/commit/86ea6d1dbc03eeb39f524f565b50b7017b1d2c9c) Thanks [@joedanz](https://github.com/joedanz)! - Add one-click MCP server installation for Cursor
|
||||||
@@ -610,7 +788,6 @@
|
|||||||
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add AWS bedrock support
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add AWS bedrock support
|
||||||
|
|
||||||
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - # Add Google Vertex AI Provider Integration
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - # Add Google Vertex AI Provider Integration
|
||||||
|
|
||||||
- Implemented `VertexAIProvider` class extending BaseAIProvider
|
- Implemented `VertexAIProvider` class extending BaseAIProvider
|
||||||
- Added authentication and configuration handling for Vertex AI
|
- Added authentication and configuration handling for Vertex AI
|
||||||
- Updated configuration manager with Vertex-specific getters
|
- Updated configuration manager with Vertex-specific getters
|
||||||
@@ -626,7 +803,6 @@
|
|||||||
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Renamed baseUrl to baseURL
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Renamed baseUrl to baseURL
|
||||||
|
|
||||||
- [#604](https://github.com/eyaltoledano/claude-task-master/pull/604) [`80735f9`](https://github.com/eyaltoledano/claude-task-master/commit/80735f9e60c7dda7207e169697f8ac07b6733634) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add TASK_MASTER_PROJECT_ROOT env variable supported in mcp.json and .env for project root resolution
|
- [#604](https://github.com/eyaltoledano/claude-task-master/pull/604) [`80735f9`](https://github.com/eyaltoledano/claude-task-master/commit/80735f9e60c7dda7207e169697f8ac07b6733634) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add TASK_MASTER_PROJECT_ROOT env variable supported in mcp.json and .env for project root resolution
|
||||||
|
|
||||||
- Some users were having issues where the MCP wasn't able to detect the location of their project root, you can now set the `TASK_MASTER_PROJECT_ROOT` environment variable to the root of your project.
|
- Some users were having issues where the MCP wasn't able to detect the location of their project root, you can now set the `TASK_MASTER_PROJECT_ROOT` environment variable to the root of your project.
|
||||||
|
|
||||||
- [#619](https://github.com/eyaltoledano/claude-task-master/pull/619) [`3f64202`](https://github.com/eyaltoledano/claude-task-master/commit/3f64202c9feef83f2bf383c79e4367d337c37e20) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Consolidate Task Master files into unified .taskmaster directory structure
|
- [#619](https://github.com/eyaltoledano/claude-task-master/pull/619) [`3f64202`](https://github.com/eyaltoledano/claude-task-master/commit/3f64202c9feef83f2bf383c79e4367d337c37e20) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Consolidate Task Master files into unified .taskmaster directory structure
|
||||||
@@ -634,7 +810,6 @@
|
|||||||
This release introduces a new consolidated directory structure that organizes all Task Master files under a single `.taskmaster/` directory for better project organization and cleaner workspace management.
|
This release introduces a new consolidated directory structure that organizes all Task Master files under a single `.taskmaster/` directory for better project organization and cleaner workspace management.
|
||||||
|
|
||||||
**New Directory Structure:**
|
**New Directory Structure:**
|
||||||
|
|
||||||
- `.taskmaster/tasks/` - Task files (previously `tasks/`)
|
- `.taskmaster/tasks/` - Task files (previously `tasks/`)
|
||||||
- `.taskmaster/docs/` - Documentation including PRD files (previously `scripts/`)
|
- `.taskmaster/docs/` - Documentation including PRD files (previously `scripts/`)
|
||||||
- `.taskmaster/reports/` - Complexity analysis reports (previously `scripts/`)
|
- `.taskmaster/reports/` - Complexity analysis reports (previously `scripts/`)
|
||||||
@@ -642,14 +817,12 @@
|
|||||||
- `.taskmaster/config.json` - Configuration (previously `.taskmasterconfig`)
|
- `.taskmaster/config.json` - Configuration (previously `.taskmasterconfig`)
|
||||||
|
|
||||||
**Migration & Backward Compatibility:**
|
**Migration & Backward Compatibility:**
|
||||||
|
|
||||||
- Existing projects continue to work with legacy file locations
|
- Existing projects continue to work with legacy file locations
|
||||||
- New projects use the consolidated structure automatically
|
- New projects use the consolidated structure automatically
|
||||||
- Run `task-master migrate` to move existing projects to the new structure
|
- Run `task-master migrate` to move existing projects to the new structure
|
||||||
- All CLI commands and MCP tools automatically detect and use appropriate file locations
|
- All CLI commands and MCP tools automatically detect and use appropriate file locations
|
||||||
|
|
||||||
**Benefits:**
|
**Benefits:**
|
||||||
|
|
||||||
- Cleaner project root with Task Master files organized in one location
|
- Cleaner project root with Task Master files organized in one location
|
||||||
- Reduced file scatter across multiple directories
|
- Reduced file scatter across multiple directories
|
||||||
- Improved project navigation and maintenance
|
- Improved project navigation and maintenance
|
||||||
@@ -670,7 +843,6 @@
|
|||||||
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add AWS bedrock support
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add AWS bedrock support
|
||||||
|
|
||||||
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - # Add Google Vertex AI Provider Integration
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - # Add Google Vertex AI Provider Integration
|
||||||
|
|
||||||
- Implemented `VertexAIProvider` class extending BaseAIProvider
|
- Implemented `VertexAIProvider` class extending BaseAIProvider
|
||||||
- Added authentication and configuration handling for Vertex AI
|
- Added authentication and configuration handling for Vertex AI
|
||||||
- Updated configuration manager with Vertex-specific getters
|
- Updated configuration manager with Vertex-specific getters
|
||||||
@@ -686,7 +858,6 @@
|
|||||||
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Renamed baseUrl to baseURL
|
- [#607](https://github.com/eyaltoledano/claude-task-master/pull/607) [`6a8a68e`](https://github.com/eyaltoledano/claude-task-master/commit/6a8a68e1a3f34dcdf40b355b4602a08d291f8e38) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Renamed baseUrl to baseURL
|
||||||
|
|
||||||
- [#604](https://github.com/eyaltoledano/claude-task-master/pull/604) [`80735f9`](https://github.com/eyaltoledano/claude-task-master/commit/80735f9e60c7dda7207e169697f8ac07b6733634) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add TASK_MASTER_PROJECT_ROOT env variable supported in mcp.json and .env for project root resolution
|
- [#604](https://github.com/eyaltoledano/claude-task-master/pull/604) [`80735f9`](https://github.com/eyaltoledano/claude-task-master/commit/80735f9e60c7dda7207e169697f8ac07b6733634) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add TASK_MASTER_PROJECT_ROOT env variable supported in mcp.json and .env for project root resolution
|
||||||
|
|
||||||
- Some users were having issues where the MCP wasn't able to detect the location of their project root, you can now set the `TASK_MASTER_PROJECT_ROOT` environment variable to the root of your project.
|
- Some users were having issues where the MCP wasn't able to detect the location of their project root, you can now set the `TASK_MASTER_PROJECT_ROOT` environment variable to the root of your project.
|
||||||
|
|
||||||
- [#619](https://github.com/eyaltoledano/claude-task-master/pull/619) [`3f64202`](https://github.com/eyaltoledano/claude-task-master/commit/3f64202c9feef83f2bf383c79e4367d337c37e20) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Consolidate Task Master files into unified .taskmaster directory structure
|
- [#619](https://github.com/eyaltoledano/claude-task-master/pull/619) [`3f64202`](https://github.com/eyaltoledano/claude-task-master/commit/3f64202c9feef83f2bf383c79e4367d337c37e20) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Consolidate Task Master files into unified .taskmaster directory structure
|
||||||
@@ -694,7 +865,6 @@
|
|||||||
This release introduces a new consolidated directory structure that organizes all Task Master files under a single `.taskmaster/` directory for better project organization and cleaner workspace management.
|
This release introduces a new consolidated directory structure that organizes all Task Master files under a single `.taskmaster/` directory for better project organization and cleaner workspace management.
|
||||||
|
|
||||||
**New Directory Structure:**
|
**New Directory Structure:**
|
||||||
|
|
||||||
- `.taskmaster/tasks/` - Task files (previously `tasks/`)
|
- `.taskmaster/tasks/` - Task files (previously `tasks/`)
|
||||||
- `.taskmaster/docs/` - Documentation including PRD files (previously `scripts/`)
|
- `.taskmaster/docs/` - Documentation including PRD files (previously `scripts/`)
|
||||||
- `.taskmaster/reports/` - Complexity analysis reports (previously `scripts/`)
|
- `.taskmaster/reports/` - Complexity analysis reports (previously `scripts/`)
|
||||||
@@ -702,14 +872,12 @@
|
|||||||
- `.taskmaster/config.json` - Configuration (previously `.taskmasterconfig`)
|
- `.taskmaster/config.json` - Configuration (previously `.taskmasterconfig`)
|
||||||
|
|
||||||
**Migration & Backward Compatibility:**
|
**Migration & Backward Compatibility:**
|
||||||
|
|
||||||
- Existing projects continue to work with legacy file locations
|
- Existing projects continue to work with legacy file locations
|
||||||
- New projects use the consolidated structure automatically
|
- New projects use the consolidated structure automatically
|
||||||
- Run `task-master migrate` to move existing projects to the new structure
|
- Run `task-master migrate` to move existing projects to the new structure
|
||||||
- All CLI commands and MCP tools automatically detect and use appropriate file locations
|
- All CLI commands and MCP tools automatically detect and use appropriate file locations
|
||||||
|
|
||||||
**Benefits:**
|
**Benefits:**
|
||||||
|
|
||||||
- Cleaner project root with Task Master files organized in one location
|
- Cleaner project root with Task Master files organized in one location
|
||||||
- Reduced file scatter across multiple directories
|
- Reduced file scatter across multiple directories
|
||||||
- Improved project navigation and maintenance
|
- Improved project navigation and maintenance
|
||||||
@@ -728,7 +896,6 @@
|
|||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|
||||||
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`09add37`](https://github.com/eyaltoledano/claude-task-master/commit/09add37423d70b809d5c28f3cde9fccd5a7e64e7) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Added comprehensive Ollama model validation and interactive setup support
|
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`09add37`](https://github.com/eyaltoledano/claude-task-master/commit/09add37423d70b809d5c28f3cde9fccd5a7e64e7) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Added comprehensive Ollama model validation and interactive setup support
|
||||||
|
|
||||||
- **Interactive Setup Enhancement**: Added "Custom Ollama model" option to `task-master models --setup`, matching the existing OpenRouter functionality
|
- **Interactive Setup Enhancement**: Added "Custom Ollama model" option to `task-master models --setup`, matching the existing OpenRouter functionality
|
||||||
- **Live Model Validation**: When setting Ollama models, Taskmaster now validates against the local Ollama instance by querying `/api/tags` endpoint
|
- **Live Model Validation**: When setting Ollama models, Taskmaster now validates against the local Ollama instance by querying `/api/tags` endpoint
|
||||||
- **Configurable Endpoints**: Uses the `ollamaBaseUrl` from `.taskmasterconfig` (with role-specific `baseUrl` overrides supported)
|
- **Configurable Endpoints**: Uses the `ollamaBaseUrl` from `.taskmasterconfig` (with role-specific `baseUrl` overrides supported)
|
||||||
@@ -740,14 +907,12 @@
|
|||||||
- **Improved User Experience**: Clear feedback during model validation with informative success/error messages
|
- **Improved User Experience**: Clear feedback during model validation with informative success/error messages
|
||||||
|
|
||||||
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`4c83526`](https://github.com/eyaltoledano/claude-task-master/commit/4c835264ac6c1f74896cddabc3b3c69a5c435417) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Adds and updates supported AI models with costs:
|
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`4c83526`](https://github.com/eyaltoledano/claude-task-master/commit/4c835264ac6c1f74896cddabc3b3c69a5c435417) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Adds and updates supported AI models with costs:
|
||||||
|
|
||||||
- Added new OpenRouter models: GPT-4.1 series, O3, Codex Mini, Llama 4 Maverick, Llama 4 Scout, Qwen3-235b
|
- Added new OpenRouter models: GPT-4.1 series, O3, Codex Mini, Llama 4 Maverick, Llama 4 Scout, Qwen3-235b
|
||||||
- Added Mistral models: Devstral Small, Mistral Nemo
|
- Added Mistral models: Devstral Small, Mistral Nemo
|
||||||
- Updated Ollama models with latest variants: Devstral, Qwen3, Mistral-small3.1, Llama3.3
|
- Updated Ollama models with latest variants: Devstral, Qwen3, Mistral-small3.1, Llama3.3
|
||||||
- Updated Gemini model to latest 2.5 Flash preview version
|
- Updated Gemini model to latest 2.5 Flash preview version
|
||||||
|
|
||||||
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`70f4054`](https://github.com/eyaltoledano/claude-task-master/commit/70f4054f268f9f8257870e64c24070263d4e2966) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add `--research` flag to parse-prd command, enabling enhanced task generation from PRD files. When used, Taskmaster leverages the research model to:
|
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`70f4054`](https://github.com/eyaltoledano/claude-task-master/commit/70f4054f268f9f8257870e64c24070263d4e2966) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add `--research` flag to parse-prd command, enabling enhanced task generation from PRD files. When used, Taskmaster leverages the research model to:
|
||||||
|
|
||||||
- Research current technologies and best practices relevant to the project
|
- Research current technologies and best practices relevant to the project
|
||||||
- Identify technical challenges and security concerns not explicitly mentioned in the PRD
|
- Identify technical challenges and security concerns not explicitly mentioned in the PRD
|
||||||
- Include specific library recommendations with version numbers
|
- Include specific library recommendations with version numbers
|
||||||
@@ -770,7 +935,6 @@
|
|||||||
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`04af16d`](https://github.com/eyaltoledano/claude-task-master/commit/04af16de27295452e134b17b3c7d0f44bbb84c29) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add move command to enable moving tasks and subtasks within the task hierarchy. This new command supports moving standalone tasks to become subtasks, subtasks to become standalone tasks, and moving subtasks between different parents. The implementation handles circular dependencies, validation, and proper updating of parent-child relationships.
|
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`04af16d`](https://github.com/eyaltoledano/claude-task-master/commit/04af16de27295452e134b17b3c7d0f44bbb84c29) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add move command to enable moving tasks and subtasks within the task hierarchy. This new command supports moving standalone tasks to become subtasks, subtasks to become standalone tasks, and moving subtasks between different parents. The implementation handles circular dependencies, validation, and proper updating of parent-child relationships.
|
||||||
|
|
||||||
**Usage:**
|
**Usage:**
|
||||||
|
|
||||||
- CLI command: `task-master move --from=<id> --to=<id>`
|
- CLI command: `task-master move --from=<id> --to=<id>`
|
||||||
- MCP tool: `move_task` with parameters:
|
- MCP tool: `move_task` with parameters:
|
||||||
- `from`: ID of task/subtask to move (e.g., "5" or "5.2")
|
- `from`: ID of task/subtask to move (e.g., "5" or "5.2")
|
||||||
@@ -778,7 +942,6 @@
|
|||||||
- `file` (optional): Custom path to tasks.json
|
- `file` (optional): Custom path to tasks.json
|
||||||
|
|
||||||
**Example scenarios:**
|
**Example scenarios:**
|
||||||
|
|
||||||
- Move task to become subtask: `--from="5" --to="7"`
|
- Move task to become subtask: `--from="5" --to="7"`
|
||||||
- Move subtask to standalone task: `--from="5.2" --to="7"`
|
- Move subtask to standalone task: `--from="5.2" --to="7"`
|
||||||
- Move subtask to different parent: `--from="5.2" --to="7.3"`
|
- Move subtask to different parent: `--from="5.2" --to="7.3"`
|
||||||
@@ -790,7 +953,6 @@
|
|||||||
The command supports moving multiple tasks simultaneously by providing comma-separated lists for both `--from` and `--to` parameters. The number of source and destination IDs must match. This is particularly useful for resolving merge conflicts in task files when multiple team members have created tasks on different branches.
|
The command supports moving multiple tasks simultaneously by providing comma-separated lists for both `--from` and `--to` parameters. The number of source and destination IDs must match. This is particularly useful for resolving merge conflicts in task files when multiple team members have created tasks on different branches.
|
||||||
|
|
||||||
**Validation Features:**
|
**Validation Features:**
|
||||||
|
|
||||||
- Allows moving tasks to new, non-existent IDs (automatically creates placeholders)
|
- Allows moving tasks to new, non-existent IDs (automatically creates placeholders)
|
||||||
- Prevents moving to existing task IDs that already contain content (to avoid overwriting)
|
- Prevents moving to existing task IDs that already contain content (to avoid overwriting)
|
||||||
- Validates source tasks exist before attempting to move them
|
- Validates source tasks exist before attempting to move them
|
||||||
@@ -815,7 +977,6 @@
|
|||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|
||||||
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`09add37`](https://github.com/eyaltoledano/claude-task-master/commit/09add37423d70b809d5c28f3cde9fccd5a7e64e7) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Added comprehensive Ollama model validation and interactive setup support
|
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`09add37`](https://github.com/eyaltoledano/claude-task-master/commit/09add37423d70b809d5c28f3cde9fccd5a7e64e7) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Added comprehensive Ollama model validation and interactive setup support
|
||||||
|
|
||||||
- **Interactive Setup Enhancement**: Added "Custom Ollama model" option to `task-master models --setup`, matching the existing OpenRouter functionality
|
- **Interactive Setup Enhancement**: Added "Custom Ollama model" option to `task-master models --setup`, matching the existing OpenRouter functionality
|
||||||
- **Live Model Validation**: When setting Ollama models, Taskmaster now validates against the local Ollama instance by querying `/api/tags` endpoint
|
- **Live Model Validation**: When setting Ollama models, Taskmaster now validates against the local Ollama instance by querying `/api/tags` endpoint
|
||||||
- **Configurable Endpoints**: Uses the `ollamaBaseUrl` from `.taskmasterconfig` (with role-specific `baseUrl` overrides supported)
|
- **Configurable Endpoints**: Uses the `ollamaBaseUrl` from `.taskmasterconfig` (with role-specific `baseUrl` overrides supported)
|
||||||
@@ -827,14 +988,12 @@
|
|||||||
- **Improved User Experience**: Clear feedback during model validation with informative success/error messages
|
- **Improved User Experience**: Clear feedback during model validation with informative success/error messages
|
||||||
|
|
||||||
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`4c83526`](https://github.com/eyaltoledano/claude-task-master/commit/4c835264ac6c1f74896cddabc3b3c69a5c435417) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Adds and updates supported AI models with costs:
|
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`4c83526`](https://github.com/eyaltoledano/claude-task-master/commit/4c835264ac6c1f74896cddabc3b3c69a5c435417) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Adds and updates supported AI models with costs:
|
||||||
|
|
||||||
- Added new OpenRouter models: GPT-4.1 series, O3, Codex Mini, Llama 4 Maverick, Llama 4 Scout, Qwen3-235b
|
- Added new OpenRouter models: GPT-4.1 series, O3, Codex Mini, Llama 4 Maverick, Llama 4 Scout, Qwen3-235b
|
||||||
- Added Mistral models: Devstral Small, Mistral Nemo
|
- Added Mistral models: Devstral Small, Mistral Nemo
|
||||||
- Updated Ollama models with latest variants: Devstral, Qwen3, Mistral-small3.1, Llama3.3
|
- Updated Ollama models with latest variants: Devstral, Qwen3, Mistral-small3.1, Llama3.3
|
||||||
- Updated Gemini model to latest 2.5 Flash preview version
|
- Updated Gemini model to latest 2.5 Flash preview version
|
||||||
|
|
||||||
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`70f4054`](https://github.com/eyaltoledano/claude-task-master/commit/70f4054f268f9f8257870e64c24070263d4e2966) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add `--research` flag to parse-prd command, enabling enhanced task generation from PRD files. When used, Taskmaster leverages the research model to:
|
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`70f4054`](https://github.com/eyaltoledano/claude-task-master/commit/70f4054f268f9f8257870e64c24070263d4e2966) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add `--research` flag to parse-prd command, enabling enhanced task generation from PRD files. When used, Taskmaster leverages the research model to:
|
||||||
|
|
||||||
- Research current technologies and best practices relevant to the project
|
- Research current technologies and best practices relevant to the project
|
||||||
- Identify technical challenges and security concerns not explicitly mentioned in the PRD
|
- Identify technical challenges and security concerns not explicitly mentioned in the PRD
|
||||||
- Include specific library recommendations with version numbers
|
- Include specific library recommendations with version numbers
|
||||||
@@ -857,7 +1016,6 @@
|
|||||||
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`04af16d`](https://github.com/eyaltoledano/claude-task-master/commit/04af16de27295452e134b17b3c7d0f44bbb84c29) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add move command to enable moving tasks and subtasks within the task hierarchy. This new command supports moving standalone tasks to become subtasks, subtasks to become standalone tasks, and moving subtasks between different parents. The implementation handles circular dependencies, validation, and proper updating of parent-child relationships.
|
- [#567](https://github.com/eyaltoledano/claude-task-master/pull/567) [`04af16d`](https://github.com/eyaltoledano/claude-task-master/commit/04af16de27295452e134b17b3c7d0f44bbb84c29) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add move command to enable moving tasks and subtasks within the task hierarchy. This new command supports moving standalone tasks to become subtasks, subtasks to become standalone tasks, and moving subtasks between different parents. The implementation handles circular dependencies, validation, and proper updating of parent-child relationships.
|
||||||
|
|
||||||
**Usage:**
|
**Usage:**
|
||||||
|
|
||||||
- CLI command: `task-master move --from=<id> --to=<id>`
|
- CLI command: `task-master move --from=<id> --to=<id>`
|
||||||
- MCP tool: `move_task` with parameters:
|
- MCP tool: `move_task` with parameters:
|
||||||
- `from`: ID of task/subtask to move (e.g., "5" or "5.2")
|
- `from`: ID of task/subtask to move (e.g., "5" or "5.2")
|
||||||
@@ -865,7 +1023,6 @@
|
|||||||
- `file` (optional): Custom path to tasks.json
|
- `file` (optional): Custom path to tasks.json
|
||||||
|
|
||||||
**Example scenarios:**
|
**Example scenarios:**
|
||||||
|
|
||||||
- Move task to become subtask: `--from="5" --to="7"`
|
- Move task to become subtask: `--from="5" --to="7"`
|
||||||
- Move subtask to standalone task: `--from="5.2" --to="7"`
|
- Move subtask to standalone task: `--from="5.2" --to="7"`
|
||||||
- Move subtask to different parent: `--from="5.2" --to="7.3"`
|
- Move subtask to different parent: `--from="5.2" --to="7.3"`
|
||||||
@@ -877,7 +1034,6 @@
|
|||||||
The command supports moving multiple tasks simultaneously by providing comma-separated lists for both `--from` and `--to` parameters. The number of source and destination IDs must match. This is particularly useful for resolving merge conflicts in task files when multiple team members have created tasks on different branches.
|
The command supports moving multiple tasks simultaneously by providing comma-separated lists for both `--from` and `--to` parameters. The number of source and destination IDs must match. This is particularly useful for resolving merge conflicts in task files when multiple team members have created tasks on different branches.
|
||||||
|
|
||||||
**Validation Features:**
|
**Validation Features:**
|
||||||
|
|
||||||
- Allows moving tasks to new, non-existent IDs (automatically creates placeholders)
|
- Allows moving tasks to new, non-existent IDs (automatically creates placeholders)
|
||||||
- Prevents moving to existing task IDs that already contain content (to avoid overwriting)
|
- Prevents moving to existing task IDs that already contain content (to avoid overwriting)
|
||||||
- Validates source tasks exist before attempting to move them
|
- Validates source tasks exist before attempting to move them
|
||||||
@@ -904,7 +1060,6 @@
|
|||||||
- [#521](https://github.com/eyaltoledano/claude-task-master/pull/521) [`ed17cb0`](https://github.com/eyaltoledano/claude-task-master/commit/ed17cb0e0a04dedde6c616f68f24f3660f68dd04) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - .taskmasterconfig now supports a baseUrl field per model role (main, research, fallback), allowing endpoint overrides for any provider.
|
- [#521](https://github.com/eyaltoledano/claude-task-master/pull/521) [`ed17cb0`](https://github.com/eyaltoledano/claude-task-master/commit/ed17cb0e0a04dedde6c616f68f24f3660f68dd04) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - .taskmasterconfig now supports a baseUrl field per model role (main, research, fallback), allowing endpoint overrides for any provider.
|
||||||
|
|
||||||
- [#536](https://github.com/eyaltoledano/claude-task-master/pull/536) [`f4a83ec`](https://github.com/eyaltoledano/claude-task-master/commit/f4a83ec047b057196833e3a9b861d4bceaec805d) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add Ollama as a supported AI provider.
|
- [#536](https://github.com/eyaltoledano/claude-task-master/pull/536) [`f4a83ec`](https://github.com/eyaltoledano/claude-task-master/commit/f4a83ec047b057196833e3a9b861d4bceaec805d) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add Ollama as a supported AI provider.
|
||||||
|
|
||||||
- You can now add it by running `task-master models --setup` and selecting it.
|
- You can now add it by running `task-master models --setup` and selecting it.
|
||||||
- Ollama is a local model provider, so no API key is required.
|
- Ollama is a local model provider, so no API key is required.
|
||||||
- Ollama models are available at `http://localhost:11434/api` by default.
|
- Ollama models are available at `http://localhost:11434/api` by default.
|
||||||
@@ -920,7 +1075,6 @@
|
|||||||
- [#478](https://github.com/eyaltoledano/claude-task-master/pull/478) [`4117f71`](https://github.com/eyaltoledano/claude-task-master/commit/4117f71c18ee4d321a9c91308d00d5d69bfac61e) Thanks [@joedanz](https://github.com/joedanz)! - Fix CLI --force flag for parse-prd command
|
- [#478](https://github.com/eyaltoledano/claude-task-master/pull/478) [`4117f71`](https://github.com/eyaltoledano/claude-task-master/commit/4117f71c18ee4d321a9c91308d00d5d69bfac61e) Thanks [@joedanz](https://github.com/joedanz)! - Fix CLI --force flag for parse-prd command
|
||||||
|
|
||||||
Previously, the --force flag was not respected when running `parse-prd`, causing the command to prompt for confirmation or fail even when --force was provided. This patch ensures that the flag is correctly passed and handled, allowing users to overwrite existing tasks.json files as intended.
|
Previously, the --force flag was not respected when running `parse-prd`, causing the command to prompt for confirmation or fail even when --force was provided. This patch ensures that the flag is correctly passed and handled, allowing users to overwrite existing tasks.json files as intended.
|
||||||
|
|
||||||
- Fixes #477
|
- Fixes #477
|
||||||
|
|
||||||
- [#511](https://github.com/eyaltoledano/claude-task-master/pull/511) [`17294ff`](https://github.com/eyaltoledano/claude-task-master/commit/17294ff25918d64278674e558698a1a9ad785098) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Task Master no longer tells you to update when you're already up to date
|
- [#511](https://github.com/eyaltoledano/claude-task-master/pull/511) [`17294ff`](https://github.com/eyaltoledano/claude-task-master/commit/17294ff25918d64278674e558698a1a9ad785098) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Task Master no longer tells you to update when you're already up to date
|
||||||
@@ -934,7 +1088,6 @@
|
|||||||
- [#523](https://github.com/eyaltoledano/claude-task-master/pull/523) [`da317f2`](https://github.com/eyaltoledano/claude-task-master/commit/da317f2607ca34db1be78c19954996f634c40923) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix the error handling of task status settings
|
- [#523](https://github.com/eyaltoledano/claude-task-master/pull/523) [`da317f2`](https://github.com/eyaltoledano/claude-task-master/commit/da317f2607ca34db1be78c19954996f634c40923) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix the error handling of task status settings
|
||||||
|
|
||||||
- [#527](https://github.com/eyaltoledano/claude-task-master/pull/527) [`a8dabf4`](https://github.com/eyaltoledano/claude-task-master/commit/a8dabf44856713f488960224ee838761716bba26) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Remove caching layer from MCP direct functions for task listing, next task, and complexity report
|
- [#527](https://github.com/eyaltoledano/claude-task-master/pull/527) [`a8dabf4`](https://github.com/eyaltoledano/claude-task-master/commit/a8dabf44856713f488960224ee838761716bba26) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Remove caching layer from MCP direct functions for task listing, next task, and complexity report
|
||||||
|
|
||||||
- Fixes issues users where having where they were getting stale data
|
- Fixes issues users where having where they were getting stale data
|
||||||
|
|
||||||
- [#417](https://github.com/eyaltoledano/claude-task-master/pull/417) [`a1f8d52`](https://github.com/eyaltoledano/claude-task-master/commit/a1f8d52474fdbdf48e17a63e3f567a6d63010d9f) Thanks [@ksylvan](https://github.com/ksylvan)! - Fix for issue #409 LOG_LEVEL Pydantic validation error
|
- [#417](https://github.com/eyaltoledano/claude-task-master/pull/417) [`a1f8d52`](https://github.com/eyaltoledano/claude-task-master/commit/a1f8d52474fdbdf48e17a63e3f567a6d63010d9f) Thanks [@ksylvan](https://github.com/ksylvan)! - Fix for issue #409 LOG_LEVEL Pydantic validation error
|
||||||
@@ -942,7 +1095,6 @@
|
|||||||
- [#442](https://github.com/eyaltoledano/claude-task-master/pull/442) [`0288311`](https://github.com/eyaltoledano/claude-task-master/commit/0288311965ae2a343ebee4a0c710dde94d2ae7e7) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Small fixes - `next` command no longer incorrectly suggests that subtasks be broken down into subtasks in the CLI - fixes the `append` flag so it properly works in the CLI
|
- [#442](https://github.com/eyaltoledano/claude-task-master/pull/442) [`0288311`](https://github.com/eyaltoledano/claude-task-master/commit/0288311965ae2a343ebee4a0c710dde94d2ae7e7) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Small fixes - `next` command no longer incorrectly suggests that subtasks be broken down into subtasks in the CLI - fixes the `append` flag so it properly works in the CLI
|
||||||
|
|
||||||
- [#501](https://github.com/eyaltoledano/claude-task-master/pull/501) [`0a61184`](https://github.com/eyaltoledano/claude-task-master/commit/0a611843b56a856ef0a479dc34078326e05ac3a8) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix initial .env.example to work out of the box
|
- [#501](https://github.com/eyaltoledano/claude-task-master/pull/501) [`0a61184`](https://github.com/eyaltoledano/claude-task-master/commit/0a611843b56a856ef0a479dc34078326e05ac3a8) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix initial .env.example to work out of the box
|
||||||
|
|
||||||
- Closes #419
|
- Closes #419
|
||||||
|
|
||||||
- [#435](https://github.com/eyaltoledano/claude-task-master/pull/435) [`a96215a`](https://github.com/eyaltoledano/claude-task-master/commit/a96215a359b25061fd3b3f3c7b10e8ac0390c062) Thanks [@lebsral](https://github.com/lebsral)! - Fix default fallback model and maxTokens in Taskmaster initialization
|
- [#435](https://github.com/eyaltoledano/claude-task-master/pull/435) [`a96215a`](https://github.com/eyaltoledano/claude-task-master/commit/a96215a359b25061fd3b3f3c7b10e8ac0390c062) Thanks [@lebsral](https://github.com/lebsral)! - Fix default fallback model and maxTokens in Taskmaster initialization
|
||||||
@@ -950,7 +1102,6 @@
|
|||||||
- [#517](https://github.com/eyaltoledano/claude-task-master/pull/517) [`e96734a`](https://github.com/eyaltoledano/claude-task-master/commit/e96734a6cc6fec7731de72eb46b182a6e3743d02) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix bug when updating tasks on the MCP server (#412)
|
- [#517](https://github.com/eyaltoledano/claude-task-master/pull/517) [`e96734a`](https://github.com/eyaltoledano/claude-task-master/commit/e96734a6cc6fec7731de72eb46b182a6e3743d02) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix bug when updating tasks on the MCP server (#412)
|
||||||
|
|
||||||
- [#496](https://github.com/eyaltoledano/claude-task-master/pull/496) [`efce374`](https://github.com/eyaltoledano/claude-task-master/commit/efce37469bc58eceef46763ba32df1ed45242211) Thanks [@joedanz](https://github.com/joedanz)! - Fix duplicate output on CLI help screen
|
- [#496](https://github.com/eyaltoledano/claude-task-master/pull/496) [`efce374`](https://github.com/eyaltoledano/claude-task-master/commit/efce37469bc58eceef46763ba32df1ed45242211) Thanks [@joedanz](https://github.com/joedanz)! - Fix duplicate output on CLI help screen
|
||||||
|
|
||||||
- Prevent the Task Master CLI from printing the help screen more than once when using `-h` or `--help`.
|
- Prevent the Task Master CLI from printing the help screen more than once when using `-h` or `--help`.
|
||||||
- Removed redundant manual event handlers and guards for help output; now only the Commander `.helpInformation` override is used for custom help.
|
- Removed redundant manual event handlers and guards for help output; now only the Commander `.helpInformation` override is used for custom help.
|
||||||
- Simplified logic so that help is only shown once for both "no arguments" and help flag flows.
|
- Simplified logic so that help is only shown once for both "no arguments" and help flag flows.
|
||||||
@@ -962,7 +1113,6 @@
|
|||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|
||||||
- [#536](https://github.com/eyaltoledano/claude-task-master/pull/536) [`f4a83ec`](https://github.com/eyaltoledano/claude-task-master/commit/f4a83ec047b057196833e3a9b861d4bceaec805d) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add Ollama as a supported AI provider.
|
- [#536](https://github.com/eyaltoledano/claude-task-master/pull/536) [`f4a83ec`](https://github.com/eyaltoledano/claude-task-master/commit/f4a83ec047b057196833e3a9b861d4bceaec805d) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add Ollama as a supported AI provider.
|
||||||
|
|
||||||
- You can now add it by running `task-master models --setup` and selecting it.
|
- You can now add it by running `task-master models --setup` and selecting it.
|
||||||
- Ollama is a local model provider, so no API key is required.
|
- Ollama is a local model provider, so no API key is required.
|
||||||
- Ollama models are available at `http://localhost:11434/api` by default.
|
- Ollama models are available at `http://localhost:11434/api` by default.
|
||||||
@@ -988,7 +1138,6 @@
|
|||||||
- [#478](https://github.com/eyaltoledano/claude-task-master/pull/478) [`4117f71`](https://github.com/eyaltoledano/claude-task-master/commit/4117f71c18ee4d321a9c91308d00d5d69bfac61e) Thanks [@joedanz](https://github.com/joedanz)! - Fix CLI --force flag for parse-prd command
|
- [#478](https://github.com/eyaltoledano/claude-task-master/pull/478) [`4117f71`](https://github.com/eyaltoledano/claude-task-master/commit/4117f71c18ee4d321a9c91308d00d5d69bfac61e) Thanks [@joedanz](https://github.com/joedanz)! - Fix CLI --force flag for parse-prd command
|
||||||
|
|
||||||
Previously, the --force flag was not respected when running `parse-prd`, causing the command to prompt for confirmation or fail even when --force was provided. This patch ensures that the flag is correctly passed and handled, allowing users to overwrite existing tasks.json files as intended.
|
Previously, the --force flag was not respected when running `parse-prd`, causing the command to prompt for confirmation or fail even when --force was provided. This patch ensures that the flag is correctly passed and handled, allowing users to overwrite existing tasks.json files as intended.
|
||||||
|
|
||||||
- Fixes #477
|
- Fixes #477
|
||||||
|
|
||||||
- [#511](https://github.com/eyaltoledano/claude-task-master/pull/511) [`17294ff`](https://github.com/eyaltoledano/claude-task-master/commit/17294ff25918d64278674e558698a1a9ad785098) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Task Master no longer tells you to update when you're already up to date
|
- [#511](https://github.com/eyaltoledano/claude-task-master/pull/511) [`17294ff`](https://github.com/eyaltoledano/claude-task-master/commit/17294ff25918d64278674e558698a1a9ad785098) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Task Master no longer tells you to update when you're already up to date
|
||||||
@@ -996,13 +1145,11 @@
|
|||||||
- [#523](https://github.com/eyaltoledano/claude-task-master/pull/523) [`da317f2`](https://github.com/eyaltoledano/claude-task-master/commit/da317f2607ca34db1be78c19954996f634c40923) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix the error handling of task status settings
|
- [#523](https://github.com/eyaltoledano/claude-task-master/pull/523) [`da317f2`](https://github.com/eyaltoledano/claude-task-master/commit/da317f2607ca34db1be78c19954996f634c40923) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix the error handling of task status settings
|
||||||
|
|
||||||
- [#527](https://github.com/eyaltoledano/claude-task-master/pull/527) [`a8dabf4`](https://github.com/eyaltoledano/claude-task-master/commit/a8dabf44856713f488960224ee838761716bba26) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Remove caching layer from MCP direct functions for task listing, next task, and complexity report
|
- [#527](https://github.com/eyaltoledano/claude-task-master/pull/527) [`a8dabf4`](https://github.com/eyaltoledano/claude-task-master/commit/a8dabf44856713f488960224ee838761716bba26) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Remove caching layer from MCP direct functions for task listing, next task, and complexity report
|
||||||
|
|
||||||
- Fixes issues users where having where they were getting stale data
|
- Fixes issues users where having where they were getting stale data
|
||||||
|
|
||||||
- [#417](https://github.com/eyaltoledano/claude-task-master/pull/417) [`a1f8d52`](https://github.com/eyaltoledano/claude-task-master/commit/a1f8d52474fdbdf48e17a63e3f567a6d63010d9f) Thanks [@ksylvan](https://github.com/ksylvan)! - Fix for issue #409 LOG_LEVEL Pydantic validation error
|
- [#417](https://github.com/eyaltoledano/claude-task-master/pull/417) [`a1f8d52`](https://github.com/eyaltoledano/claude-task-master/commit/a1f8d52474fdbdf48e17a63e3f567a6d63010d9f) Thanks [@ksylvan](https://github.com/ksylvan)! - Fix for issue #409 LOG_LEVEL Pydantic validation error
|
||||||
|
|
||||||
- [#501](https://github.com/eyaltoledano/claude-task-master/pull/501) [`0a61184`](https://github.com/eyaltoledano/claude-task-master/commit/0a611843b56a856ef0a479dc34078326e05ac3a8) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix initial .env.example to work out of the box
|
- [#501](https://github.com/eyaltoledano/claude-task-master/pull/501) [`0a61184`](https://github.com/eyaltoledano/claude-task-master/commit/0a611843b56a856ef0a479dc34078326e05ac3a8) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix initial .env.example to work out of the box
|
||||||
|
|
||||||
- Closes #419
|
- Closes #419
|
||||||
|
|
||||||
- [#435](https://github.com/eyaltoledano/claude-task-master/pull/435) [`a96215a`](https://github.com/eyaltoledano/claude-task-master/commit/a96215a359b25061fd3b3f3c7b10e8ac0390c062) Thanks [@lebsral](https://github.com/lebsral)! - Fix default fallback model and maxTokens in Taskmaster initialization
|
- [#435](https://github.com/eyaltoledano/claude-task-master/pull/435) [`a96215a`](https://github.com/eyaltoledano/claude-task-master/commit/a96215a359b25061fd3b3f3c7b10e8ac0390c062) Thanks [@lebsral](https://github.com/lebsral)! - Fix default fallback model and maxTokens in Taskmaster initialization
|
||||||
@@ -1010,7 +1157,6 @@
|
|||||||
- [#517](https://github.com/eyaltoledano/claude-task-master/pull/517) [`e96734a`](https://github.com/eyaltoledano/claude-task-master/commit/e96734a6cc6fec7731de72eb46b182a6e3743d02) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix bug when updating tasks on the MCP server (#412)
|
- [#517](https://github.com/eyaltoledano/claude-task-master/pull/517) [`e96734a`](https://github.com/eyaltoledano/claude-task-master/commit/e96734a6cc6fec7731de72eb46b182a6e3743d02) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix bug when updating tasks on the MCP server (#412)
|
||||||
|
|
||||||
- [#496](https://github.com/eyaltoledano/claude-task-master/pull/496) [`efce374`](https://github.com/eyaltoledano/claude-task-master/commit/efce37469bc58eceef46763ba32df1ed45242211) Thanks [@joedanz](https://github.com/joedanz)! - Fix duplicate output on CLI help screen
|
- [#496](https://github.com/eyaltoledano/claude-task-master/pull/496) [`efce374`](https://github.com/eyaltoledano/claude-task-master/commit/efce37469bc58eceef46763ba32df1ed45242211) Thanks [@joedanz](https://github.com/joedanz)! - Fix duplicate output on CLI help screen
|
||||||
|
|
||||||
- Prevent the Task Master CLI from printing the help screen more than once when using `-h` or `--help`.
|
- Prevent the Task Master CLI from printing the help screen more than once when using `-h` or `--help`.
|
||||||
- Removed redundant manual event handlers and guards for help output; now only the Commander `.helpInformation` override is used for custom help.
|
- Removed redundant manual event handlers and guards for help output; now only the Commander `.helpInformation` override is used for custom help.
|
||||||
- Simplified logic so that help is only shown once for both "no arguments" and help flag flows.
|
- Simplified logic so that help is only shown once for both "no arguments" and help flag flows.
|
||||||
@@ -1028,7 +1174,6 @@
|
|||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|
||||||
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`ef782ff`](https://github.com/eyaltoledano/claude-task-master/commit/ef782ff5bd4ceb3ed0dc9ea82087aae5f79ac933) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - feat(expand): Enhance `expand` and `expand-all` commands
|
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`ef782ff`](https://github.com/eyaltoledano/claude-task-master/commit/ef782ff5bd4ceb3ed0dc9ea82087aae5f79ac933) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - feat(expand): Enhance `expand` and `expand-all` commands
|
||||||
|
|
||||||
- Integrate `task-complexity-report.json` to automatically determine the number of subtasks and use tailored prompts for expansion based on prior analysis. You no longer need to try copy-pasting the recommended prompt. If it exists, it will use it for you. You can just run `task-master update --id=[id of task] --research` and it will use that prompt automatically. No extra prompt needed.
|
- Integrate `task-complexity-report.json` to automatically determine the number of subtasks and use tailored prompts for expansion based on prior analysis. You no longer need to try copy-pasting the recommended prompt. If it exists, it will use it for you. You can just run `task-master update --id=[id of task] --research` and it will use that prompt automatically. No extra prompt needed.
|
||||||
- Change default behavior to _append_ new subtasks to existing ones. Use the `--force` flag to clear existing subtasks before expanding. This is helpful if you need to add more subtasks to a task but you want to do it by the batch from a given prompt. Use force if you want to start fresh with a task's subtasks.
|
- Change default behavior to _append_ new subtasks to existing ones. Use the `--force` flag to clear existing subtasks before expanding. This is helpful if you need to add more subtasks to a task but you want to do it by the batch from a given prompt. Use force if you want to start fresh with a task's subtasks.
|
||||||
|
|
||||||
@@ -1037,7 +1182,6 @@
|
|||||||
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`1ab836f`](https://github.com/eyaltoledano/claude-task-master/commit/1ab836f191cb8969153593a9a0bd47fc9aa4a831) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Adds model management and new configuration file .taskmasterconfig which houses the models used for main, research and fallback. Adds models command and setter flags. Adds a --setup flag with an interactive setup. We should be calling this during init. Shows a table of active and available models when models is called without flags. Includes SWE scores and token costs, which are manually entered into the supported_models.json, the new place where models are defined for support. Config-manager.js is the core module responsible for managing the new config."
|
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`1ab836f`](https://github.com/eyaltoledano/claude-task-master/commit/1ab836f191cb8969153593a9a0bd47fc9aa4a831) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Adds model management and new configuration file .taskmasterconfig which houses the models used for main, research and fallback. Adds models command and setter flags. Adds a --setup flag with an interactive setup. We should be calling this during init. Shows a table of active and available models when models is called without flags. Includes SWE scores and token costs, which are manually entered into the supported_models.json, the new place where models are defined for support. Config-manager.js is the core module responsible for managing the new config."
|
||||||
|
|
||||||
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`c8722b0`](https://github.com/eyaltoledano/claude-task-master/commit/c8722b0a7a443a73b95d1bcd4a0b68e0fce2a1cd) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Adds custom model ID support for Ollama and OpenRouter providers.
|
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`c8722b0`](https://github.com/eyaltoledano/claude-task-master/commit/c8722b0a7a443a73b95d1bcd4a0b68e0fce2a1cd) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Adds custom model ID support for Ollama and OpenRouter providers.
|
||||||
|
|
||||||
- Adds the `--ollama` and `--openrouter` flags to `task-master models --set-<role>` command to set models for those providers outside of the support models list.
|
- Adds the `--ollama` and `--openrouter` flags to `task-master models --set-<role>` command to set models for those providers outside of the support models list.
|
||||||
- Updated `task-master models --setup` interactive mode with options to explicitly enter custom Ollama or OpenRouter model IDs.
|
- Updated `task-master models --setup` interactive mode with options to explicitly enter custom Ollama or OpenRouter model IDs.
|
||||||
- Implemented live validation against OpenRouter API (`/api/v1/models`) when setting a custom OpenRouter model ID (via flag or setup).
|
- Implemented live validation against OpenRouter API (`/api/v1/models`) when setting a custom OpenRouter model ID (via flag or setup).
|
||||||
@@ -1056,7 +1200,6 @@
|
|||||||
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`ed79d4f`](https://github.com/eyaltoledano/claude-task-master/commit/ed79d4f4735dfab4124fa189214c0bd5e23a6860) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add xAI provider and Grok models support
|
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`ed79d4f`](https://github.com/eyaltoledano/claude-task-master/commit/ed79d4f4735dfab4124fa189214c0bd5e23a6860) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Add xAI provider and Grok models support
|
||||||
|
|
||||||
- [#378](https://github.com/eyaltoledano/claude-task-master/pull/378) [`ad89253`](https://github.com/eyaltoledano/claude-task-master/commit/ad89253e313a395637aa48b9f92cc39b1ef94ad8) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Better support for file paths on Windows, Linux & WSL.
|
- [#378](https://github.com/eyaltoledano/claude-task-master/pull/378) [`ad89253`](https://github.com/eyaltoledano/claude-task-master/commit/ad89253e313a395637aa48b9f92cc39b1ef94ad8) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Better support for file paths on Windows, Linux & WSL.
|
||||||
|
|
||||||
- Standardizes handling of different path formats (URI encoded, Windows, Linux, WSL).
|
- Standardizes handling of different path formats (URI encoded, Windows, Linux, WSL).
|
||||||
- Ensures tools receive a clean, absolute path suitable for the server OS.
|
- Ensures tools receive a clean, absolute path suitable for the server OS.
|
||||||
- Simplifies tool implementation by centralizing normalization logic.
|
- Simplifies tool implementation by centralizing normalization logic.
|
||||||
@@ -1066,7 +1209,6 @@
|
|||||||
- [#378](https://github.com/eyaltoledano/claude-task-master/pull/378) [`d63964a`](https://github.com/eyaltoledano/claude-task-master/commit/d63964a10eed9be17856757661ff817ad6bacfdc) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Improved update-subtask - Now it has context about the parent task details - It also has context about the subtask before it and the subtask after it (if they exist) - Not passing all subtasks to stay token efficient
|
- [#378](https://github.com/eyaltoledano/claude-task-master/pull/378) [`d63964a`](https://github.com/eyaltoledano/claude-task-master/commit/d63964a10eed9be17856757661ff817ad6bacfdc) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Improved update-subtask - Now it has context about the parent task details - It also has context about the subtask before it and the subtask after it (if they exist) - Not passing all subtasks to stay token efficient
|
||||||
|
|
||||||
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`5f504fa`](https://github.com/eyaltoledano/claude-task-master/commit/5f504fafb8bdaa0043c2d20dee8bbb8ec2040d85) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Improve and adjust `init` command for robustness and updated dependencies.
|
- [#240](https://github.com/eyaltoledano/claude-task-master/pull/240) [`5f504fa`](https://github.com/eyaltoledano/claude-task-master/commit/5f504fafb8bdaa0043c2d20dee8bbb8ec2040d85) Thanks [@eyaltoledano](https://github.com/eyaltoledano)! - Improve and adjust `init` command for robustness and updated dependencies.
|
||||||
|
|
||||||
- **Update Initialization Dependencies:** Ensure newly initialized projects (`task-master init`) include all required AI SDK dependencies (`@ai-sdk/*`, `ai`, provider wrappers) in their `package.json` for out-of-the-box AI feature compatibility. Remove unnecessary dependencies (e.g., `uuid`) from the init template.
|
- **Update Initialization Dependencies:** Ensure newly initialized projects (`task-master init`) include all required AI SDK dependencies (`@ai-sdk/*`, `ai`, provider wrappers) in their `package.json` for out-of-the-box AI feature compatibility. Remove unnecessary dependencies (e.g., `uuid`) from the init template.
|
||||||
- **Silence `npm install` during `init`:** Prevent `npm install` output from interfering with non-interactive/MCP initialization by suppressing its stdio in silent mode.
|
- **Silence `npm install` during `init`:** Prevent `npm install` output from interfering with non-interactive/MCP initialization by suppressing its stdio in silent mode.
|
||||||
- **Improve Conditional Model Setup:** Reliably skip interactive `models --setup` during non-interactive `init` runs (e.g., `init -y` or MCP) by checking `isSilentMode()` instead of passing flags.
|
- **Improve Conditional Model Setup:** Reliably skip interactive `models --setup` during non-interactive `init` runs (e.g., `init -y` or MCP) by checking `isSilentMode()` instead of passing flags.
|
||||||
@@ -1106,7 +1248,6 @@
|
|||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
||||||
- [#243](https://github.com/eyaltoledano/claude-task-master/pull/243) [`454a1d9`](https://github.com/eyaltoledano/claude-task-master/commit/454a1d9d37439c702656eedc0702c2f7a4451517) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - - Fixes shebang issue not allowing task-master to run on certain windows operating systems
|
- [#243](https://github.com/eyaltoledano/claude-task-master/pull/243) [`454a1d9`](https://github.com/eyaltoledano/claude-task-master/commit/454a1d9d37439c702656eedc0702c2f7a4451517) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - - Fixes shebang issue not allowing task-master to run on certain windows operating systems
|
||||||
|
|
||||||
- Resolves #241 #211 #184 #193
|
- Resolves #241 #211 #184 #193
|
||||||
|
|
||||||
- [#268](https://github.com/eyaltoledano/claude-task-master/pull/268) [`3e872f8`](https://github.com/eyaltoledano/claude-task-master/commit/3e872f8afbb46cd3978f3852b858c233450b9f33) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix remove-task command to handle multiple comma-separated task IDs
|
- [#268](https://github.com/eyaltoledano/claude-task-master/pull/268) [`3e872f8`](https://github.com/eyaltoledano/claude-task-master/commit/3e872f8afbb46cd3978f3852b858c233450b9f33) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix remove-task command to handle multiple comma-separated task IDs
|
||||||
@@ -1118,7 +1259,6 @@
|
|||||||
- [#264](https://github.com/eyaltoledano/claude-task-master/pull/264) [`ff8e75c`](https://github.com/eyaltoledano/claude-task-master/commit/ff8e75cded91fb677903040002626f7a82fd5f88) Thanks [@joedanz](https://github.com/joedanz)! - Add quotes around numeric env vars in mcp.json (Windsurf, etc.)
|
- [#264](https://github.com/eyaltoledano/claude-task-master/pull/264) [`ff8e75c`](https://github.com/eyaltoledano/claude-task-master/commit/ff8e75cded91fb677903040002626f7a82fd5f88) Thanks [@joedanz](https://github.com/joedanz)! - Add quotes around numeric env vars in mcp.json (Windsurf, etc.)
|
||||||
|
|
||||||
- [#248](https://github.com/eyaltoledano/claude-task-master/pull/248) [`d99fa00`](https://github.com/eyaltoledano/claude-task-master/commit/d99fa00980fc61695195949b33dcda7781006f90) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - - Fix `task-master init` polluting codebase with new packages inside `package.json` and modifying project `README`
|
- [#248](https://github.com/eyaltoledano/claude-task-master/pull/248) [`d99fa00`](https://github.com/eyaltoledano/claude-task-master/commit/d99fa00980fc61695195949b33dcda7781006f90) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - - Fix `task-master init` polluting codebase with new packages inside `package.json` and modifying project `README`
|
||||||
|
|
||||||
- Now only initializes with cursor rules, windsurf rules, mcp.json, scripts/example_prd.txt, .gitignore modifications, and `README-task-master.md`
|
- Now only initializes with cursor rules, windsurf rules, mcp.json, scripts/example_prd.txt, .gitignore modifications, and `README-task-master.md`
|
||||||
|
|
||||||
- [#266](https://github.com/eyaltoledano/claude-task-master/pull/266) [`41b979c`](https://github.com/eyaltoledano/claude-task-master/commit/41b979c23963483e54331015a86e7c5079f657e4) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fixed a bug that prevented the task-master from running in a Linux container
|
- [#266](https://github.com/eyaltoledano/claude-task-master/pull/266) [`41b979c`](https://github.com/eyaltoledano/claude-task-master/commit/41b979c23963483e54331015a86e7c5079f657e4) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fixed a bug that prevented the task-master from running in a Linux container
|
||||||
|
|||||||
@@ -323,8 +323,11 @@ Here's a comprehensive reference of all available commands:
|
|||||||
# Parse a PRD file and generate tasks
|
# Parse a PRD file and generate tasks
|
||||||
task-master parse-prd <prd-file.txt>
|
task-master parse-prd <prd-file.txt>
|
||||||
|
|
||||||
# Limit the number of tasks generated
|
# Limit the number of tasks generated (default is 10)
|
||||||
task-master parse-prd <prd-file.txt> --num-tasks=10
|
task-master parse-prd <prd-file.txt> --num-tasks=5
|
||||||
|
|
||||||
|
# Allow task master to determine the number of tasks based on complexity
|
||||||
|
task-master parse-prd <prd-file.txt> --num-tasks=0
|
||||||
```
|
```
|
||||||
|
|
||||||
### List Tasks
|
### List Tasks
|
||||||
@@ -397,6 +400,9 @@ When marking a task as "done", all of its subtasks will automatically be marked
|
|||||||
# Expand a specific task with subtasks
|
# Expand a specific task with subtasks
|
||||||
task-master expand --id=<id> --num=<number>
|
task-master expand --id=<id> --num=<number>
|
||||||
|
|
||||||
|
# Expand a task with a dynamic number of subtasks (ignoring complexity report)
|
||||||
|
task-master expand --id=<id> --num=0
|
||||||
|
|
||||||
# Expand with additional context
|
# Expand with additional context
|
||||||
task-master expand --id=<id> --prompt="<context>"
|
task-master expand --id=<id> --prompt="<context>"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"main": {
|
"main": {
|
||||||
"provider": "anthropic",
|
"provider": "anthropic",
|
||||||
"modelId": "claude-3-7-sonnet-20250219",
|
"modelId": "claude-3-7-sonnet-20250219",
|
||||||
"maxTokens": 120000,
|
"maxTokens": 100000,
|
||||||
"temperature": 0.2
|
"temperature": 0.2
|
||||||
},
|
},
|
||||||
"research": {
|
"research": {
|
||||||
@@ -14,9 +14,9 @@
|
|||||||
},
|
},
|
||||||
"fallback": {
|
"fallback": {
|
||||||
"provider": "anthropic",
|
"provider": "anthropic",
|
||||||
"modelId": "claude-3-5-sonnet-20240620",
|
"modelId": "claude-3-7-sonnet-20250219",
|
||||||
"maxTokens": 8192,
|
"maxTokens": 8192,
|
||||||
"temperature": 0.1
|
"temperature": 0.2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"global": {
|
"global": {
|
||||||
@@ -28,6 +28,7 @@
|
|||||||
"defaultTag": "master",
|
"defaultTag": "master",
|
||||||
"ollamaBaseURL": "http://localhost:11434/api",
|
"ollamaBaseURL": "http://localhost:11434/api",
|
||||||
"azureOpenaiBaseURL": "https://your-endpoint.openai.azure.com/",
|
"azureOpenaiBaseURL": "https://your-endpoint.openai.azure.com/",
|
||||||
"bedrockBaseURL": "https://bedrock.us-east-1.amazonaws.com"
|
"bedrockBaseURL": "https://bedrock.us-east-1.amazonaws.com",
|
||||||
|
"responseLanguage": "English"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ When users initialize Taskmaster on existing projects:
|
|||||||
4. **Tag-Based Organization**: Parse PRDs into appropriate tags (`refactor-api`, `feature-dashboard`, `tech-debt`, etc.)
|
4. **Tag-Based Organization**: Parse PRDs into appropriate tags (`refactor-api`, `feature-dashboard`, `tech-debt`, etc.)
|
||||||
5. **Master List Curation**: Keep only the most valuable initiatives in master
|
5. **Master List Curation**: Keep only the most valuable initiatives in master
|
||||||
|
|
||||||
The parse-prd's `--append` flag enables the user to parse multple PRDs within tags or across tags. PRDs should be focused and the number of tasks they are parsed into should be strategically chosen relative to the PRD's complexity and level of detail.
|
The parse-prd's `--append` flag enables the user to parse multiple PRDs within tags or across tags. PRDs should be focused and the number of tasks they are parsed into should be strategically chosen relative to the PRD's complexity and level of detail.
|
||||||
|
|
||||||
### Workflow Transition Examples
|
### Workflow Transition Examples
|
||||||
|
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ This document provides a detailed reference for interacting with Taskmaster, cov
|
|||||||
* **CLI Command:** `task-master clear-subtasks [options]`
|
* **CLI Command:** `task-master clear-subtasks [options]`
|
||||||
* **Description:** `Remove all subtasks from one or more specified Taskmaster parent tasks.`
|
* **Description:** `Remove all subtasks from one or more specified Taskmaster parent tasks.`
|
||||||
* **Key Parameters/Options:**
|
* **Key Parameters/Options:**
|
||||||
* `id`: `The ID(s) of the Taskmaster parent task(s) whose subtasks you want to remove, e.g., '15' or '16,18'. Required unless using `all`.) (CLI: `-i, --id <ids>`)
|
* `id`: `The ID(s) of the Taskmaster parent task(s) whose subtasks you want to remove, e.g., '15' or '16,18'. Required unless using 'all'.` (CLI: `-i, --id <ids>`)
|
||||||
* `all`: `Tell Taskmaster to remove subtasks from all parent tasks.` (CLI: `--all`)
|
* `all`: `Tell Taskmaster to remove subtasks from all parent tasks.` (CLI: `--all`)
|
||||||
* `tag`: `Specify which tag context to operate on. Defaults to the current active tag.` (CLI: `--tag <name>`)
|
* `tag`: `Specify which tag context to operate on. Defaults to the current active tag.` (CLI: `--tag <name>`)
|
||||||
* `file`: `Path to your Taskmaster 'tasks.json' file. Default relies on auto-detection.` (CLI: `-f, --file <file>`)
|
* `file`: `Path to your Taskmaster 'tasks.json' file. Default relies on auto-detection.` (CLI: `-f, --file <file>`)
|
||||||
|
|||||||
@@ -8,8 +8,11 @@ Here's a comprehensive reference of all available commands:
|
|||||||
# Parse a PRD file and generate tasks
|
# Parse a PRD file and generate tasks
|
||||||
task-master parse-prd <prd-file.txt>
|
task-master parse-prd <prd-file.txt>
|
||||||
|
|
||||||
# Limit the number of tasks generated
|
# Limit the number of tasks generated (default is 10)
|
||||||
task-master parse-prd <prd-file.txt> --num-tasks=10
|
task-master parse-prd <prd-file.txt> --num-tasks=5
|
||||||
|
|
||||||
|
# Allow task master to determine the number of tasks based on complexity
|
||||||
|
task-master parse-prd <prd-file.txt> --num-tasks=0
|
||||||
```
|
```
|
||||||
|
|
||||||
## List Tasks
|
## List Tasks
|
||||||
@@ -128,6 +131,9 @@ When marking a task as "done", all of its subtasks will automatically be marked
|
|||||||
# Expand a specific task with subtasks
|
# Expand a specific task with subtasks
|
||||||
task-master expand --id=<id> --num=<number>
|
task-master expand --id=<id> --num=<number>
|
||||||
|
|
||||||
|
# Expand a task with a dynamic number of subtasks (ignoring complexity report)
|
||||||
|
task-master expand --id=<id> --num=0
|
||||||
|
|
||||||
# Expand with additional context
|
# Expand with additional context
|
||||||
task-master expand --id=<id> --prompt="<context>"
|
task-master expand --id=<id> --prompt="<context>"
|
||||||
|
|
||||||
|
|||||||
@@ -36,18 +36,21 @@ Taskmaster uses two primary methods for configuration:
|
|||||||
"global": {
|
"global": {
|
||||||
"logLevel": "info",
|
"logLevel": "info",
|
||||||
"debug": false,
|
"debug": false,
|
||||||
|
"defaultNumTasks": 10,
|
||||||
"defaultSubtasks": 5,
|
"defaultSubtasks": 5,
|
||||||
"defaultPriority": "medium",
|
"defaultPriority": "medium",
|
||||||
"defaultTag": "master",
|
"defaultTag": "master",
|
||||||
"projectName": "Your Project Name",
|
"projectName": "Your Project Name",
|
||||||
"ollamaBaseURL": "http://localhost:11434/api",
|
"ollamaBaseURL": "http://localhost:11434/api",
|
||||||
"azureBaseURL": "https://your-endpoint.azure.com/",
|
"azureBaseURL": "https://your-endpoint.azure.com/openai/deployments",
|
||||||
"vertexProjectId": "your-gcp-project-id",
|
"vertexProjectId": "your-gcp-project-id",
|
||||||
"vertexLocation": "us-central1"
|
"vertexLocation": "us-central1",
|
||||||
|
"responseLanguage": "English"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
2. **Legacy `.taskmasterconfig` File (Backward Compatibility)**
|
2. **Legacy `.taskmasterconfig` File (Backward Compatibility)**
|
||||||
|
|
||||||
- For projects that haven't migrated to the new structure yet.
|
- For projects that haven't migrated to the new structure yet.
|
||||||
@@ -129,13 +132,15 @@ ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
|
|||||||
PERPLEXITY_API_KEY=pplx-your-key-here
|
PERPLEXITY_API_KEY=pplx-your-key-here
|
||||||
# OPENAI_API_KEY=sk-your-key-here
|
# OPENAI_API_KEY=sk-your-key-here
|
||||||
# GOOGLE_API_KEY=AIzaSy...
|
# GOOGLE_API_KEY=AIzaSy...
|
||||||
|
# AZURE_OPENAI_API_KEY=your-azure-openai-api-key-here
|
||||||
# etc.
|
# etc.
|
||||||
|
|
||||||
# Optional Endpoint Overrides
|
# Optional Endpoint Overrides
|
||||||
# Use a specific provider's base URL, e.g., for an OpenAI-compatible API
|
# Use a specific provider's base URL, e.g., for an OpenAI-compatible API
|
||||||
# OPENAI_BASE_URL=https://api.third-party.com/v1
|
# OPENAI_BASE_URL=https://api.third-party.com/v1
|
||||||
#
|
#
|
||||||
# AZURE_OPENAI_ENDPOINT=https://your-azure-endpoint.openai.azure.com/
|
# Azure OpenAI Configuration
|
||||||
|
# AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com/ or https://your-endpoint-name.cognitiveservices.azure.com/openai/deployments
|
||||||
# OLLAMA_BASE_URL=http://custom-ollama-host:11434/api
|
# OLLAMA_BASE_URL=http://custom-ollama-host:11434/api
|
||||||
|
|
||||||
# Google Vertex AI Configuration (Required if using 'vertex' provider)
|
# Google Vertex AI Configuration (Required if using 'vertex' provider)
|
||||||
@@ -207,3 +212,104 @@ Google Vertex AI is Google Cloud's enterprise AI platform and requires specific
|
|||||||
"vertexLocation": "us-central1"
|
"vertexLocation": "us-central1"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Azure OpenAI Configuration
|
||||||
|
|
||||||
|
Azure OpenAI provides enterprise-grade OpenAI models through Microsoft's Azure cloud platform and requires specific configuration:
|
||||||
|
|
||||||
|
1. **Prerequisites**:
|
||||||
|
- An Azure account with an active subscription
|
||||||
|
- Azure OpenAI service resource created in the Azure portal
|
||||||
|
- Azure OpenAI API key and endpoint URL
|
||||||
|
- Deployed models (e.g., gpt-4o, gpt-4o-mini, gpt-4.1, etc) in your Azure OpenAI resource
|
||||||
|
|
||||||
|
2. **Authentication**:
|
||||||
|
- Set the `AZURE_OPENAI_API_KEY` environment variable with your Azure OpenAI API key
|
||||||
|
- Configure the endpoint URL using one of the methods below
|
||||||
|
|
||||||
|
3. **Configuration Options**:
|
||||||
|
|
||||||
|
**Option 1: Using Global Azure Base URL (affects all Azure models)**
|
||||||
|
```json
|
||||||
|
// In .taskmaster/config.json
|
||||||
|
{
|
||||||
|
"models": {
|
||||||
|
"main": {
|
||||||
|
"provider": "azure",
|
||||||
|
"modelId": "gpt-4o",
|
||||||
|
"maxTokens": 16000,
|
||||||
|
"temperature": 0.7
|
||||||
|
},
|
||||||
|
"fallback": {
|
||||||
|
"provider": "azure",
|
||||||
|
"modelId": "gpt-4o-mini",
|
||||||
|
"maxTokens": 10000,
|
||||||
|
"temperature": 0.7
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"global": {
|
||||||
|
"azureBaseURL": "https://your-resource-name.azure.com/openai/deployments"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option 2: Using Per-Model Base URLs (recommended for flexibility)**
|
||||||
|
```json
|
||||||
|
// In .taskmaster/config.json
|
||||||
|
{
|
||||||
|
"models": {
|
||||||
|
"main": {
|
||||||
|
"provider": "azure",
|
||||||
|
"modelId": "gpt-4o",
|
||||||
|
"maxTokens": 16000,
|
||||||
|
"temperature": 0.7,
|
||||||
|
"baseURL": "https://your-resource-name.azure.com/openai/deployments"
|
||||||
|
},
|
||||||
|
"research": {
|
||||||
|
"provider": "perplexity",
|
||||||
|
"modelId": "sonar-pro",
|
||||||
|
"maxTokens": 8700,
|
||||||
|
"temperature": 0.1
|
||||||
|
},
|
||||||
|
"fallback": {
|
||||||
|
"provider": "azure",
|
||||||
|
"modelId": "gpt-4o-mini",
|
||||||
|
"maxTokens": 10000,
|
||||||
|
"temperature": 0.7,
|
||||||
|
"baseURL": "https://your-resource-name.azure.com/openai/deployments"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Environment Variables**:
|
||||||
|
```bash
|
||||||
|
# In .env file
|
||||||
|
AZURE_OPENAI_API_KEY=your-azure-openai-api-key-here
|
||||||
|
|
||||||
|
# Optional: Override endpoint for all Azure models
|
||||||
|
AZURE_OPENAI_ENDPOINT=https://your-resource-name.azure.com/openai/deployments
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Important Notes**:
|
||||||
|
- **Model Deployment Names**: The `modelId` in your configuration should match the **deployment name** you created in Azure OpenAI Studio, not the underlying model name
|
||||||
|
- **Base URL Priority**: Per-model `baseURL` settings override the global `azureBaseURL` setting
|
||||||
|
- **Endpoint Format**: When using per-model `baseURL`, use the full path including `/openai/deployments`
|
||||||
|
|
||||||
|
6. **Troubleshooting**:
|
||||||
|
|
||||||
|
**"Resource not found" errors:**
|
||||||
|
- Ensure your `baseURL` includes the full path: `https://your-resource-name.openai.azure.com/openai/deployments`
|
||||||
|
- Verify that your deployment name in `modelId` exactly matches what's configured in Azure OpenAI Studio
|
||||||
|
- Check that your Azure OpenAI resource is in the correct region and properly deployed
|
||||||
|
|
||||||
|
**Authentication errors:**
|
||||||
|
- Verify your `AZURE_OPENAI_API_KEY` is correct and has not expired
|
||||||
|
- Ensure your Azure OpenAI resource has the necessary permissions
|
||||||
|
- Check that your subscription has not been suspended or reached quota limits
|
||||||
|
|
||||||
|
**Model availability errors:**
|
||||||
|
- Confirm the model is deployed in your Azure OpenAI resource
|
||||||
|
- Verify the deployment name matches your configuration exactly (case-sensitive)
|
||||||
|
- Ensure the model deployment is in a "Succeeded" state in Azure OpenAI Studio
|
||||||
|
- Ensure youre not getting rate limited by `maxTokens` maintain appropriate Tokens per Minute Rate Limit (TPM) in your deployment.
|
||||||
|
|||||||
@@ -64,100 +64,81 @@ task-master set-status --id=task-001 --status=in-progress
|
|||||||
```bash
|
```bash
|
||||||
npm install @anthropic-ai/claude-code
|
npm install @anthropic-ai/claude-code
|
||||||
```
|
```
|
||||||
3. No API key is required in your environment variables or MCP configuration
|
3. Run Claude Code for the first time and authenticate with your Anthropic account:
|
||||||
|
```bash
|
||||||
|
claude
|
||||||
|
```
|
||||||
|
4. No API key is required in your environment variables or MCP configuration
|
||||||
|
|
||||||
## Advanced Settings
|
## Advanced Settings
|
||||||
|
|
||||||
The Claude Code SDK supports additional settings that provide fine-grained control over Claude's behavior. While these settings are implemented in the underlying SDK (`src/ai-providers/custom-sdk/claude-code/`), they are not currently exposed through Task Master's standard API due to architectural constraints.
|
The Claude Code SDK supports additional settings that provide fine-grained control over Claude's behavior. These settings are implemented in the underlying SDK (`src/ai-providers/custom-sdk/claude-code/`), and can be managed through Task Master's configuration file.
|
||||||
|
|
||||||
### Supported Settings
|
### Advanced Settings Usage
|
||||||
|
|
||||||
|
To update settings for Claude Code, update your `.taskmaster/config.json`:
|
||||||
|
|
||||||
|
The Claude Code settings can be specified globally in the `claudeCode` section of the config, or on a per-command basis in the `commandSpecific` section:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
const settings = {
|
{
|
||||||
// Maximum conversation turns Claude can make in a single request
|
// "models" and "global" config...
|
||||||
maxTurns: 5,
|
|
||||||
|
|
||||||
// Custom system prompt to override Claude Code's default behavior
|
|
||||||
customSystemPrompt: "You are a helpful assistant focused on code quality",
|
|
||||||
|
|
||||||
// Permission mode for file system operations
|
|
||||||
permissionMode: 'default', // Options: 'default', 'restricted', 'permissive'
|
|
||||||
|
|
||||||
// Explicitly allow only certain tools
|
|
||||||
allowedTools: ['Read', 'LS'], // Claude can only read files and list directories
|
|
||||||
|
|
||||||
// Explicitly disallow certain tools
|
|
||||||
disallowedTools: ['Write', 'Edit'], // Prevent Claude from modifying files
|
|
||||||
|
|
||||||
// MCP servers for additional tool integrations
|
|
||||||
mcpServers: []
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
### Current Limitations
|
"claudeCode": {
|
||||||
|
// Maximum conversation turns Claude can make in a single request
|
||||||
|
"maxTurns": 5,
|
||||||
|
|
||||||
|
// Custom system prompt to override Claude Code's default behavior
|
||||||
|
"customSystemPrompt": "You are a helpful assistant focused on code quality",
|
||||||
|
|
||||||
Task Master uses a standardized `BaseAIProvider` interface that only passes through common parameters (modelId, messages, maxTokens, temperature) to maintain consistency across all providers. The Claude Code advanced settings are implemented in the SDK but not accessible through Task Master's high-level commands.
|
// Append additional content to the system prompt
|
||||||
|
"appendSystemPrompt": "Always follow coding best practices",
|
||||||
|
|
||||||
|
// Permission mode for file system operations
|
||||||
|
"permissionMode": "default", // Options: "default", "acceptEdits", "plan", "bypassPermissions"
|
||||||
|
|
||||||
|
// Explicitly allow only certain tools
|
||||||
|
"allowedTools": ["Read", "LS"], // Claude can only read files and list directories
|
||||||
|
|
||||||
|
// Explicitly disallow certain tools
|
||||||
|
"disallowedTools": ["Write", "Edit"], // Prevent Claude from modifying files
|
||||||
|
|
||||||
|
// MCP servers for additional tool integrations
|
||||||
|
"mcpServers": {
|
||||||
|
"mcp-server-name": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "mcp-serve"],
|
||||||
|
"env": {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
### Future Integration Options
|
// Command-specific settings override global settings
|
||||||
|
"commandSpecific": {
|
||||||
For developers who need to use these advanced settings, there are three potential approaches:
|
"parse-prd": {
|
||||||
|
// Settings specific to the 'parse-prd' command
|
||||||
#### Option 1: Extend BaseAIProvider
|
"maxTurns": 10,
|
||||||
Modify the core Task Master architecture to support provider-specific settings:
|
"customSystemPrompt": "You are a task breakdown specialist"
|
||||||
|
},
|
||||||
```javascript
|
"analyze-complexity": {
|
||||||
// In BaseAIProvider
|
// Settings specific to the 'analyze-complexity' command
|
||||||
const result = await generateText({
|
"maxTurns": 3,
|
||||||
model: client(params.modelId),
|
"appendSystemPrompt": "Focus on identifying bottlenecks"
|
||||||
messages: params.messages,
|
}
|
||||||
maxTokens: params.maxTokens,
|
}
|
||||||
temperature: params.temperature,
|
|
||||||
...params.providerSettings // New: pass through provider-specific settings
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Option 2: Override Methods in ClaudeCodeProvider
|
|
||||||
Create custom implementations that extract and use Claude-specific settings:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
// In ClaudeCodeProvider
|
|
||||||
async generateText(params) {
|
|
||||||
const { maxTurns, allowedTools, disallowedTools, ...baseParams } = params;
|
|
||||||
|
|
||||||
const client = this.getClient({
|
|
||||||
...baseParams,
|
|
||||||
settings: { maxTurns, allowedTools, disallowedTools }
|
|
||||||
});
|
|
||||||
|
|
||||||
// Continue with generation...
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Option 3: Direct SDK Usage
|
- For a full list of Cluaude Code settings, see the [Claude Code Settings documentation](https://docs.anthropic.com/en/docs/claude-code/settings).
|
||||||
For immediate access to advanced features, developers can use the Claude Code SDK directly:
|
- For a full list of AI powered command names, see this file: `src/constants/commands.js`
|
||||||
|
|
||||||
```javascript
|
|
||||||
import { createClaudeCode } from 'task-master-ai/ai-providers/custom-sdk/claude-code';
|
|
||||||
|
|
||||||
const claude = createClaudeCode({
|
|
||||||
defaultSettings: {
|
|
||||||
maxTurns: 5,
|
|
||||||
allowedTools: ['Read', 'LS'],
|
|
||||||
disallowedTools: ['Write', 'Edit']
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const model = claude('sonnet');
|
|
||||||
const result = await generateText({
|
|
||||||
model,
|
|
||||||
messages: [{ role: 'user', content: 'Analyze this code...' }]
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
### Why These Settings Matter
|
### Why These Settings Matter
|
||||||
|
|
||||||
- **maxTurns**: Useful for complex refactoring tasks that require multiple iterations
|
- **maxTurns**: Useful for complex refactoring tasks that require multiple iterations
|
||||||
- **customSystemPrompt**: Allows specializing Claude for specific domains or coding standards
|
- **customSystemPrompt**: Allows specializing Claude for specific domains or coding standards
|
||||||
|
- **appendSystemPrompt**: Useful for enforcing coding standards or providing additional context
|
||||||
- **permissionMode**: Critical for security in production environments
|
- **permissionMode**: Critical for security in production environments
|
||||||
- **allowedTools/disallowedTools**: Enable read-only analysis modes or restrict access to sensitive operations
|
- **allowedTools/disallowedTools**: Enable read-only analysis modes or restrict access to sensitive operations
|
||||||
- **mcpServers**: Future extensibility for custom tool integrations
|
- **mcpServers**: Future extensibility for custom tool integrations
|
||||||
|
|||||||
@@ -1,14 +1,24 @@
|
|||||||
# Available Models as of June 20, 2025
|
# Available Models as of July 2, 2025
|
||||||
|
|
||||||
## Main Models
|
## Main Models
|
||||||
|
|
||||||
| Provider | Model Name | SWE Score | Input Cost | Output Cost |
|
| Provider | Model Name | SWE Score | Input Cost | Output Cost |
|
||||||
| ----------- | ---------------------------------------------- | --------- | ---------- | ----------- |
|
| ----------- | ---------------------------------------------- | --------- | ---------- | ----------- |
|
||||||
|
| bedrock | us.anthropic.claude-3-haiku-20240307-v1:0 | 0.4 | 0.25 | 1.25 |
|
||||||
|
| bedrock | us.anthropic.claude-3-opus-20240229-v1:0 | 0.725 | 15 | 75 |
|
||||||
|
| bedrock | us.anthropic.claude-3-5-sonnet-20240620-v1:0 | 0.49 | 3 | 15 |
|
||||||
|
| bedrock | us.anthropic.claude-3-5-sonnet-20241022-v2:0 | 0.49 | 3 | 15 |
|
||||||
| bedrock | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | 0.623 | 3 | 15 |
|
| bedrock | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | 0.623 | 3 | 15 |
|
||||||
|
| bedrock | us.anthropic.claude-3-5-haiku-20241022-v1:0 | 0.4 | 0.8 | 4 |
|
||||||
|
| bedrock | us.anthropic.claude-opus-4-20250514-v1:0 | 0.725 | 15 | 75 |
|
||||||
|
| bedrock | us.anthropic.claude-sonnet-4-20250514-v1:0 | 0.727 | 3 | 15 |
|
||||||
| anthropic | claude-sonnet-4-20250514 | 0.727 | 3 | 15 |
|
| anthropic | claude-sonnet-4-20250514 | 0.727 | 3 | 15 |
|
||||||
| anthropic | claude-opus-4-20250514 | 0.725 | 15 | 75 |
|
| anthropic | claude-opus-4-20250514 | 0.725 | 15 | 75 |
|
||||||
| anthropic | claude-3-7-sonnet-20250219 | 0.623 | 3 | 15 |
|
| anthropic | claude-3-7-sonnet-20250219 | 0.623 | 3 | 15 |
|
||||||
| anthropic | claude-3-5-sonnet-20241022 | 0.49 | 3 | 15 |
|
| anthropic | claude-3-5-sonnet-20241022 | 0.49 | 3 | 15 |
|
||||||
|
| azure | gpt-4o | 0.332 | 2.5 | 10 |
|
||||||
|
| azure | gpt-4o-mini | 0.3 | 0.15 | 0.6 |
|
||||||
|
| azure | gpt-4-1 | — | 2 | 10 |
|
||||||
| openai | gpt-4o | 0.332 | 2.5 | 10 |
|
| openai | gpt-4o | 0.332 | 2.5 | 10 |
|
||||||
| openai | o1 | 0.489 | 15 | 60 |
|
| openai | o1 | 0.489 | 15 | 60 |
|
||||||
| openai | o3 | 0.5 | 2 | 8 |
|
| openai | o3 | 0.5 | 2 | 8 |
|
||||||
@@ -64,33 +74,53 @@
|
|||||||
| openrouter | thudm/glm-4-32b:free | — | 0 | 0 |
|
| openrouter | thudm/glm-4-32b:free | — | 0 | 0 |
|
||||||
| claude-code | opus | 0.725 | 0 | 0 |
|
| claude-code | opus | 0.725 | 0 | 0 |
|
||||||
| claude-code | sonnet | 0.727 | 0 | 0 |
|
| claude-code | sonnet | 0.727 | 0 | 0 |
|
||||||
|
| gemini-cli | gemini-2.5-pro | 0.72 | 0 | 0 |
|
||||||
|
| gemini-cli | gemini-2.5-flash | 0.71 | 0 | 0 |
|
||||||
|
|
||||||
## Research Models
|
## Research Models
|
||||||
|
|
||||||
| Provider | Model Name | SWE Score | Input Cost | Output Cost |
|
| Provider | Model Name | SWE Score | Input Cost | Output Cost |
|
||||||
| ----------- | -------------------------- | --------- | ---------- | ----------- |
|
| ----------- | -------------------------------------------- | --------- | ---------- | ----------- |
|
||||||
| bedrock | us.deepseek.r1-v1:0 | — | 1.35 | 5.4 |
|
| bedrock | us.anthropic.claude-3-opus-20240229-v1:0 | 0.725 | 15 | 75 |
|
||||||
| openai | gpt-4o-search-preview | 0.33 | 2.5 | 10 |
|
| bedrock | us.anthropic.claude-3-5-sonnet-20240620-v1:0 | 0.49 | 3 | 15 |
|
||||||
| openai | gpt-4o-mini-search-preview | 0.3 | 0.15 | 0.6 |
|
| bedrock | us.anthropic.claude-3-5-sonnet-20241022-v2:0 | 0.49 | 3 | 15 |
|
||||||
| perplexity | sonar-pro | — | 3 | 15 |
|
| bedrock | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | 0.623 | 3 | 15 |
|
||||||
| perplexity | sonar | — | 1 | 1 |
|
| bedrock | us.anthropic.claude-opus-4-20250514-v1:0 | 0.725 | 15 | 75 |
|
||||||
| perplexity | deep-research | 0.211 | 2 | 8 |
|
| bedrock | us.anthropic.claude-sonnet-4-20250514-v1:0 | 0.727 | 3 | 15 |
|
||||||
| perplexity | sonar-reasoning-pro | 0.211 | 2 | 8 |
|
| bedrock | us.deepseek.r1-v1:0 | — | 1.35 | 5.4 |
|
||||||
| perplexity | sonar-reasoning | 0.211 | 1 | 5 |
|
| openai | gpt-4o-search-preview | 0.33 | 2.5 | 10 |
|
||||||
| xai | grok-3 | — | 3 | 15 |
|
| openai | gpt-4o-mini-search-preview | 0.3 | 0.15 | 0.6 |
|
||||||
| xai | grok-3-fast | — | 5 | 25 |
|
| perplexity | sonar-pro | — | 3 | 15 |
|
||||||
| claude-code | opus | 0.725 | 0 | 0 |
|
| perplexity | sonar | — | 1 | 1 |
|
||||||
| claude-code | sonnet | 0.727 | 0 | 0 |
|
| perplexity | deep-research | 0.211 | 2 | 8 |
|
||||||
|
| perplexity | sonar-reasoning-pro | 0.211 | 2 | 8 |
|
||||||
|
| perplexity | sonar-reasoning | 0.211 | 1 | 5 |
|
||||||
|
| xai | grok-3 | — | 3 | 15 |
|
||||||
|
| xai | grok-3-fast | — | 5 | 25 |
|
||||||
|
| claude-code | opus | 0.725 | 0 | 0 |
|
||||||
|
| claude-code | sonnet | 0.727 | 0 | 0 |
|
||||||
|
| gemini-cli | gemini-2.5-pro | 0.72 | 0 | 0 |
|
||||||
|
| gemini-cli | gemini-2.5-flash | 0.71 | 0 | 0 |
|
||||||
|
|
||||||
## Fallback Models
|
## Fallback Models
|
||||||
|
|
||||||
| Provider | Model Name | SWE Score | Input Cost | Output Cost |
|
| Provider | Model Name | SWE Score | Input Cost | Output Cost |
|
||||||
| ----------- | ---------------------------------------------- | --------- | ---------- | ----------- |
|
| ----------- | ---------------------------------------------- | --------- | ---------- | ----------- |
|
||||||
|
| bedrock | us.anthropic.claude-3-haiku-20240307-v1:0 | 0.4 | 0.25 | 1.25 |
|
||||||
|
| bedrock | us.anthropic.claude-3-opus-20240229-v1:0 | 0.725 | 15 | 75 |
|
||||||
|
| bedrock | us.anthropic.claude-3-5-sonnet-20240620-v1:0 | 0.49 | 3 | 15 |
|
||||||
|
| bedrock | us.anthropic.claude-3-5-sonnet-20241022-v2:0 | 0.49 | 3 | 15 |
|
||||||
| bedrock | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | 0.623 | 3 | 15 |
|
| bedrock | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | 0.623 | 3 | 15 |
|
||||||
|
| bedrock | us.anthropic.claude-3-5-haiku-20241022-v1:0 | 0.4 | 0.8 | 4 |
|
||||||
|
| bedrock | us.anthropic.claude-opus-4-20250514-v1:0 | 0.725 | 15 | 75 |
|
||||||
|
| bedrock | us.anthropic.claude-sonnet-4-20250514-v1:0 | 0.727 | 3 | 15 |
|
||||||
| anthropic | claude-sonnet-4-20250514 | 0.727 | 3 | 15 |
|
| anthropic | claude-sonnet-4-20250514 | 0.727 | 3 | 15 |
|
||||||
| anthropic | claude-opus-4-20250514 | 0.725 | 15 | 75 |
|
| anthropic | claude-opus-4-20250514 | 0.725 | 15 | 75 |
|
||||||
| anthropic | claude-3-7-sonnet-20250219 | 0.623 | 3 | 15 |
|
| anthropic | claude-3-7-sonnet-20250219 | 0.623 | 3 | 15 |
|
||||||
| anthropic | claude-3-5-sonnet-20241022 | 0.49 | 3 | 15 |
|
| anthropic | claude-3-5-sonnet-20241022 | 0.49 | 3 | 15 |
|
||||||
|
| azure | gpt-4o | 0.332 | 2.5 | 10 |
|
||||||
|
| azure | gpt-4o-mini | 0.3 | 0.15 | 0.6 |
|
||||||
|
| azure | gpt-4-1 | — | 2 | 10 |
|
||||||
| openai | gpt-4o | 0.332 | 2.5 | 10 |
|
| openai | gpt-4o | 0.332 | 2.5 | 10 |
|
||||||
| openai | o3 | 0.5 | 2 | 8 |
|
| openai | o3 | 0.5 | 2 | 8 |
|
||||||
| openai | o4-mini | 0.45 | 1.1 | 4.4 |
|
| openai | o4-mini | 0.45 | 1.1 | 4.4 |
|
||||||
@@ -135,3 +165,5 @@
|
|||||||
| openrouter | thudm/glm-4-32b:free | — | 0 | 0 |
|
| openrouter | thudm/glm-4-32b:free | — | 0 | 0 |
|
||||||
| claude-code | opus | 0.725 | 0 | 0 |
|
| claude-code | opus | 0.725 | 0 | 0 |
|
||||||
| claude-code | sonnet | 0.727 | 0 | 0 |
|
| claude-code | sonnet | 0.727 | 0 | 0 |
|
||||||
|
| gemini-cli | gemini-2.5-pro | 0.72 | 0 | 0 |
|
||||||
|
| gemini-cli | gemini-2.5-flash | 0.71 | 0 | 0 |
|
||||||
|
|||||||
169
docs/providers/gemini-cli.md
Normal file
169
docs/providers/gemini-cli.md
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
# Gemini CLI Provider
|
||||||
|
|
||||||
|
The Gemini CLI provider allows you to use Google's Gemini models through the Gemini CLI tool, leveraging your existing Gemini subscription and OAuth authentication.
|
||||||
|
|
||||||
|
## Why Use Gemini CLI?
|
||||||
|
|
||||||
|
The primary benefit of using the `gemini-cli` provider is to leverage your existing Gemini Pro subscription or OAuth authentication configured through the Gemini CLI. This is ideal for users who:
|
||||||
|
|
||||||
|
- Have an active Gemini subscription
|
||||||
|
- Want to use OAuth authentication instead of managing API keys
|
||||||
|
- Have already configured authentication via `gemini auth login`
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
The provider is already included in Task Master. However, you need to install the Gemini CLI tool:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install gemini CLI globally
|
||||||
|
npm install -g @google/gemini-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
## Authentication
|
||||||
|
|
||||||
|
### Primary Method: CLI Authentication (Recommended)
|
||||||
|
|
||||||
|
The Gemini CLI provider is designed to use your pre-configured OAuth authentication:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Authenticate with your Google account
|
||||||
|
gemini auth login
|
||||||
|
```
|
||||||
|
|
||||||
|
This will open a browser window for OAuth authentication. Once authenticated, Task Master will automatically use these credentials when you select the `gemini-cli` provider.
|
||||||
|
|
||||||
|
### Alternative Method: API Key
|
||||||
|
|
||||||
|
While the primary use case is OAuth authentication, you can also use an API key if needed:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export GEMINI_API_KEY="your-gemini-api-key"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** If you want to use API keys, consider using the standard `google` provider instead, as `gemini-cli` is specifically designed for OAuth/subscription users.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Configure `gemini-cli` as a provider using the Task Master models command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Set gemini-cli as your main provider with gemini-2.5-pro
|
||||||
|
task-master models --set-main gemini-2.5-pro --gemini-cli
|
||||||
|
|
||||||
|
# Or use the faster gemini-2.5-flash model
|
||||||
|
task-master models --set-main gemini-2.5-flash --gemini-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also manually edit your `.taskmaster/config/providers.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"provider": "gemini-cli",
|
||||||
|
"model": "gemini-2.5-flash"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Available Models
|
||||||
|
|
||||||
|
The gemini-cli provider supports only two models:
|
||||||
|
- `gemini-2.5-pro` - High performance model (1M token context window, 65,536 max output tokens)
|
||||||
|
- `gemini-2.5-flash` - Fast, efficient model (1M token context window, 65,536 max output tokens)
|
||||||
|
|
||||||
|
## Usage Examples
|
||||||
|
|
||||||
|
### Basic Usage
|
||||||
|
|
||||||
|
Once authenticated with `gemini auth login` and configured, simply use Task Master as normal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# The provider will automatically use your OAuth credentials
|
||||||
|
task-master new "Create a hello world function"
|
||||||
|
```
|
||||||
|
|
||||||
|
### With Specific Parameters
|
||||||
|
|
||||||
|
Configure model parameters in your providers.json:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"provider": "gemini-cli",
|
||||||
|
"model": "gemini-2.5-pro",
|
||||||
|
"parameters": {
|
||||||
|
"maxTokens": 65536,
|
||||||
|
"temperature": 0.7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### As Fallback Provider
|
||||||
|
|
||||||
|
Use gemini-cli as a fallback when your primary provider is unavailable:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"provider": "anthropic",
|
||||||
|
"model": "claude-3-5-sonnet-latest"
|
||||||
|
},
|
||||||
|
"fallback": {
|
||||||
|
"provider": "gemini-cli",
|
||||||
|
"model": "gemini-2.5-flash"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### "Authentication failed" Error
|
||||||
|
|
||||||
|
If you get an authentication error:
|
||||||
|
|
||||||
|
1. **Primary solution**: Run `gemini auth login` to authenticate with your Google account
|
||||||
|
2. **Check authentication status**: Run `gemini auth status` to verify you're logged in
|
||||||
|
3. **If using API key** (not recommended): Ensure `GEMINI_API_KEY` is set correctly
|
||||||
|
|
||||||
|
### "Model not found" Error
|
||||||
|
|
||||||
|
The gemini-cli provider only supports two models:
|
||||||
|
- `gemini-2.5-pro`
|
||||||
|
- `gemini-2.5-flash`
|
||||||
|
|
||||||
|
If you need other Gemini models, use the standard `google` provider with an API key instead.
|
||||||
|
|
||||||
|
### Gemini CLI Not Found
|
||||||
|
|
||||||
|
If you get a "gemini: command not found" error:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install the Gemini CLI globally
|
||||||
|
npm install -g @google/gemini-cli
|
||||||
|
|
||||||
|
# Verify installation
|
||||||
|
gemini --version
|
||||||
|
```
|
||||||
|
|
||||||
|
### Custom Endpoints
|
||||||
|
|
||||||
|
Custom endpoints can be configured if needed:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"provider": "gemini-cli",
|
||||||
|
"model": "gemini-2.5-pro",
|
||||||
|
"baseURL": "https://custom-endpoint.example.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
- **OAuth vs API Key**: This provider is specifically designed for users who want to use OAuth authentication via `gemini auth login`. If you prefer using API keys, consider using the standard `google` provider instead.
|
||||||
|
- **Limited Model Support**: Only `gemini-2.5-pro` and `gemini-2.5-flash` are available through gemini-cli.
|
||||||
|
- **Subscription Benefits**: Using OAuth authentication allows you to leverage any subscription benefits associated with your Google account.
|
||||||
|
- The provider uses the `ai-sdk-provider-gemini-cli` npm package internally.
|
||||||
|
- Supports all standard Task Master features: text generation, streaming, and structured object generation.
|
||||||
@@ -20,6 +20,8 @@ import {
|
|||||||
* @param {string} [args.status] - Status for new subtask (default: 'pending')
|
* @param {string} [args.status] - Status for new subtask (default: 'pending')
|
||||||
* @param {string} [args.dependencies] - Comma-separated list of dependency IDs
|
* @param {string} [args.dependencies] - Comma-separated list of dependency IDs
|
||||||
* @param {boolean} [args.skipGenerate] - Skip regenerating task files
|
* @param {boolean} [args.skipGenerate] - Skip regenerating task files
|
||||||
|
* @param {string} [args.projectRoot] - Project root directory
|
||||||
|
* @param {string} [args.tag] - Tag for the task
|
||||||
* @param {Object} log - Logger object
|
* @param {Object} log - Logger object
|
||||||
* @returns {Promise<{success: boolean, data?: Object, error?: string}>}
|
* @returns {Promise<{success: boolean, data?: Object, error?: string}>}
|
||||||
*/
|
*/
|
||||||
@@ -34,7 +36,9 @@ export async function addSubtaskDirect(args, log) {
|
|||||||
details,
|
details,
|
||||||
status,
|
status,
|
||||||
dependencies: dependenciesStr,
|
dependencies: dependenciesStr,
|
||||||
skipGenerate
|
skipGenerate,
|
||||||
|
projectRoot,
|
||||||
|
tag
|
||||||
} = args;
|
} = args;
|
||||||
try {
|
try {
|
||||||
log.info(`Adding subtask with args: ${JSON.stringify(args)}`);
|
log.info(`Adding subtask with args: ${JSON.stringify(args)}`);
|
||||||
@@ -96,6 +100,8 @@ export async function addSubtaskDirect(args, log) {
|
|||||||
// Enable silent mode to prevent console logs from interfering with JSON response
|
// Enable silent mode to prevent console logs from interfering with JSON response
|
||||||
enableSilentMode();
|
enableSilentMode();
|
||||||
|
|
||||||
|
const context = { projectRoot, tag };
|
||||||
|
|
||||||
// Case 1: Convert existing task to subtask
|
// Case 1: Convert existing task to subtask
|
||||||
if (existingTaskId) {
|
if (existingTaskId) {
|
||||||
log.info(`Converting task ${existingTaskId} to a subtask of ${parentId}`);
|
log.info(`Converting task ${existingTaskId} to a subtask of ${parentId}`);
|
||||||
@@ -104,7 +110,8 @@ export async function addSubtaskDirect(args, log) {
|
|||||||
parentId,
|
parentId,
|
||||||
existingTaskId,
|
existingTaskId,
|
||||||
null,
|
null,
|
||||||
generateFiles
|
generateFiles,
|
||||||
|
context
|
||||||
);
|
);
|
||||||
|
|
||||||
// Restore normal logging
|
// Restore normal logging
|
||||||
@@ -135,7 +142,8 @@ export async function addSubtaskDirect(args, log) {
|
|||||||
parentId,
|
parentId,
|
||||||
null,
|
null,
|
||||||
newSubtaskData,
|
newSubtaskData,
|
||||||
generateFiles
|
generateFiles,
|
||||||
|
context
|
||||||
);
|
);
|
||||||
|
|
||||||
// Restore normal logging
|
// Restore normal logging
|
||||||
|
|||||||
@@ -171,8 +171,8 @@ export async function expandTaskDirect(args, log, context = {}) {
|
|||||||
task.subtasks = [];
|
task.subtasks = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save tasks.json with potentially empty subtasks array
|
// Save tasks.json with potentially empty subtasks array and proper context
|
||||||
writeJSON(tasksPath, data);
|
writeJSON(tasksPath, data, projectRoot, tag);
|
||||||
|
|
||||||
// Create logger wrapper using the utility
|
// Create logger wrapper using the utility
|
||||||
const mcpLog = createLogWrapper(log);
|
const mcpLog = createLogWrapper(log);
|
||||||
|
|||||||
@@ -13,12 +13,14 @@ import fs from 'fs';
|
|||||||
* Fix invalid dependencies in tasks.json automatically
|
* Fix invalid dependencies in tasks.json automatically
|
||||||
* @param {Object} args - Function arguments
|
* @param {Object} args - Function arguments
|
||||||
* @param {string} args.tasksJsonPath - Explicit path to the tasks.json file.
|
* @param {string} args.tasksJsonPath - Explicit path to the tasks.json file.
|
||||||
|
* @param {string} args.projectRoot - Project root directory
|
||||||
|
* @param {string} args.tag - Tag for the project
|
||||||
* @param {Object} log - Logger object
|
* @param {Object} log - Logger object
|
||||||
* @returns {Promise<{success: boolean, data?: Object, error?: {code: string, message: string}}>}
|
* @returns {Promise<{success: boolean, data?: Object, error?: {code: string, message: string}}>}
|
||||||
*/
|
*/
|
||||||
export async function fixDependenciesDirect(args, log) {
|
export async function fixDependenciesDirect(args, log) {
|
||||||
// Destructure expected args
|
// Destructure expected args
|
||||||
const { tasksJsonPath } = args;
|
const { tasksJsonPath, projectRoot, tag } = args;
|
||||||
try {
|
try {
|
||||||
log.info(`Fixing invalid dependencies in tasks: ${tasksJsonPath}`);
|
log.info(`Fixing invalid dependencies in tasks: ${tasksJsonPath}`);
|
||||||
|
|
||||||
@@ -51,8 +53,10 @@ export async function fixDependenciesDirect(args, log) {
|
|||||||
// Enable silent mode to prevent console logs from interfering with JSON response
|
// Enable silent mode to prevent console logs from interfering with JSON response
|
||||||
enableSilentMode();
|
enableSilentMode();
|
||||||
|
|
||||||
// Call the original command function using the provided path
|
// Call the original command function using the provided path and proper context
|
||||||
await fixDependenciesCommand(tasksPath);
|
await fixDependenciesCommand(tasksPath, {
|
||||||
|
context: { projectRoot, tag }
|
||||||
|
});
|
||||||
|
|
||||||
// Restore normal logging
|
// Restore normal logging
|
||||||
disableSilentMode();
|
disableSilentMode();
|
||||||
@@ -61,7 +65,8 @@ export async function fixDependenciesDirect(args, log) {
|
|||||||
success: true,
|
success: true,
|
||||||
data: {
|
data: {
|
||||||
message: 'Dependencies fixed successfully',
|
message: 'Dependencies fixed successfully',
|
||||||
tasksPath
|
tasksPath,
|
||||||
|
tag: tag || 'master'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -72,15 +72,16 @@ export async function initializeProjectDirect(args, log, context = {}) {
|
|||||||
yes: true // Force yes mode
|
yes: true // Force yes mode
|
||||||
};
|
};
|
||||||
|
|
||||||
// Handle rules option just like CLI
|
// Handle rules option with MCP-specific defaults
|
||||||
if (Array.isArray(args.rules) && args.rules.length > 0) {
|
if (Array.isArray(args.rules) && args.rules.length > 0) {
|
||||||
options.rules = args.rules;
|
options.rules = args.rules;
|
||||||
|
options.rulesExplicitlyProvided = true;
|
||||||
log.info(`Including rules: ${args.rules.join(', ')}`);
|
log.info(`Including rules: ${args.rules.join(', ')}`);
|
||||||
} else {
|
} else {
|
||||||
options.rules = RULE_PROFILES;
|
// For MCP initialization, default to Cursor profile only
|
||||||
log.info(
|
options.rules = ['cursor'];
|
||||||
`No rule profiles specified, defaulting to: ${RULE_PROFILES.join(', ')}`
|
options.rulesExplicitlyProvided = true;
|
||||||
);
|
log.info(`No rule profiles specified, defaulting to: Cursor`);
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info(`Initializing project with options: ${JSON.stringify(options)}`);
|
log.info(`Initializing project with options: ${JSON.stringify(options)}`);
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ export async function parsePRDDirect(args, log, context = {}) {
|
|||||||
if (numTasksArg) {
|
if (numTasksArg) {
|
||||||
numTasks =
|
numTasks =
|
||||||
typeof numTasksArg === 'string' ? parseInt(numTasksArg, 10) : numTasksArg;
|
typeof numTasksArg === 'string' ? parseInt(numTasksArg, 10) : numTasksArg;
|
||||||
if (Number.isNaN(numTasks) || numTasks <= 0) {
|
if (Number.isNaN(numTasks) || numTasks < 0) {
|
||||||
// Ensure positive number
|
// Ensure positive number
|
||||||
numTasks = getDefaultNumTasks(projectRoot); // Fallback to default if parsing fails or invalid
|
numTasks = getDefaultNumTasks(projectRoot); // Fallback to default if parsing fails or invalid
|
||||||
logWrapper.warn(
|
logWrapper.warn(
|
||||||
|
|||||||
@@ -20,12 +20,13 @@ import {
|
|||||||
* @param {Object} args - Command arguments
|
* @param {Object} args - Command arguments
|
||||||
* @param {string} args.tasksJsonPath - Explicit path to the tasks.json file.
|
* @param {string} args.tasksJsonPath - Explicit path to the tasks.json file.
|
||||||
* @param {string} args.id - The ID(s) of the task(s) or subtask(s) to remove (comma-separated for multiple).
|
* @param {string} args.id - The ID(s) of the task(s) or subtask(s) to remove (comma-separated for multiple).
|
||||||
|
* @param {string} [args.tag] - Tag context to operate on (defaults to current active tag).
|
||||||
* @param {Object} log - Logger object
|
* @param {Object} log - Logger object
|
||||||
* @returns {Promise<Object>} - Remove task result { success: boolean, data?: any, error?: { code: string, message: string } }
|
* @returns {Promise<Object>} - Remove task result { success: boolean, data?: any, error?: { code: string, message: string } }
|
||||||
*/
|
*/
|
||||||
export async function removeTaskDirect(args, log, context = {}) {
|
export async function removeTaskDirect(args, log, context = {}) {
|
||||||
// Destructure expected args
|
// Destructure expected args
|
||||||
const { tasksJsonPath, id, projectRoot } = args;
|
const { tasksJsonPath, id, projectRoot, tag } = args;
|
||||||
const { session } = context;
|
const { session } = context;
|
||||||
try {
|
try {
|
||||||
// Check if tasksJsonPath was provided
|
// Check if tasksJsonPath was provided
|
||||||
@@ -56,17 +57,17 @@ export async function removeTaskDirect(args, log, context = {}) {
|
|||||||
const taskIdArray = id.split(',').map((taskId) => taskId.trim());
|
const taskIdArray = id.split(',').map((taskId) => taskId.trim());
|
||||||
|
|
||||||
log.info(
|
log.info(
|
||||||
`Removing ${taskIdArray.length} task(s) with ID(s): ${taskIdArray.join(', ')} from ${tasksJsonPath}`
|
`Removing ${taskIdArray.length} task(s) with ID(s): ${taskIdArray.join(', ')} from ${tasksJsonPath}${tag ? ` in tag '${tag}'` : ''}`
|
||||||
);
|
);
|
||||||
|
|
||||||
// Validate all task IDs exist before proceeding
|
// Validate all task IDs exist before proceeding
|
||||||
const data = readJSON(tasksJsonPath, projectRoot);
|
const data = readJSON(tasksJsonPath, projectRoot, tag);
|
||||||
if (!data || !data.tasks) {
|
if (!data || !data.tasks) {
|
||||||
return {
|
return {
|
||||||
success: false,
|
success: false,
|
||||||
error: {
|
error: {
|
||||||
code: 'INVALID_TASKS_FILE',
|
code: 'INVALID_TASKS_FILE',
|
||||||
message: `No valid tasks found in ${tasksJsonPath}`
|
message: `No valid tasks found in ${tasksJsonPath}${tag ? ` for tag '${tag}'` : ''}`
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -80,71 +81,49 @@ export async function removeTaskDirect(args, log, context = {}) {
|
|||||||
success: false,
|
success: false,
|
||||||
error: {
|
error: {
|
||||||
code: 'INVALID_TASK_ID',
|
code: 'INVALID_TASK_ID',
|
||||||
message: `The following tasks were not found: ${invalidTasks.join(', ')}`
|
message: `The following tasks were not found${tag ? ` in tag '${tag}'` : ''}: ${invalidTasks.join(', ')}`
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove tasks one by one
|
|
||||||
const results = [];
|
|
||||||
|
|
||||||
// Enable silent mode to prevent console logs from interfering with JSON response
|
// Enable silent mode to prevent console logs from interfering with JSON response
|
||||||
enableSilentMode();
|
enableSilentMode();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for (const taskId of taskIdArray) {
|
// Call removeTask with proper context including tag
|
||||||
try {
|
const result = await removeTask(tasksJsonPath, id, {
|
||||||
const result = await removeTask(tasksJsonPath, taskId);
|
projectRoot,
|
||||||
results.push({
|
tag
|
||||||
taskId,
|
});
|
||||||
success: true,
|
|
||||||
message: result.message,
|
if (!result.success) {
|
||||||
removedTask: result.removedTask
|
return {
|
||||||
});
|
success: false,
|
||||||
log.info(`Successfully removed task: ${taskId}`);
|
error: {
|
||||||
} catch (error) {
|
code: 'REMOVE_TASK_ERROR',
|
||||||
results.push({
|
message: result.error || 'Failed to remove tasks'
|
||||||
taskId,
|
}
|
||||||
success: false,
|
};
|
||||||
error: error.message
|
|
||||||
});
|
|
||||||
log.error(`Error removing task ${taskId}: ${error.message}`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.info(`Successfully removed ${result.removedTasks.length} task(s)`);
|
||||||
|
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
data: {
|
||||||
|
totalTasks: taskIdArray.length,
|
||||||
|
successful: result.removedTasks.length,
|
||||||
|
failed: taskIdArray.length - result.removedTasks.length,
|
||||||
|
removedTasks: result.removedTasks,
|
||||||
|
message: result.message,
|
||||||
|
tasksPath: tasksJsonPath,
|
||||||
|
tag: data.tag || tag || 'master'
|
||||||
|
}
|
||||||
|
};
|
||||||
} finally {
|
} finally {
|
||||||
// Restore normal logging
|
// Restore normal logging
|
||||||
disableSilentMode();
|
disableSilentMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if all tasks were successfully removed
|
|
||||||
const successfulRemovals = results.filter((r) => r.success);
|
|
||||||
const failedRemovals = results.filter((r) => !r.success);
|
|
||||||
|
|
||||||
if (successfulRemovals.length === 0) {
|
|
||||||
// All removals failed
|
|
||||||
return {
|
|
||||||
success: false,
|
|
||||||
error: {
|
|
||||||
code: 'REMOVE_TASK_ERROR',
|
|
||||||
message: 'Failed to remove any tasks',
|
|
||||||
details: failedRemovals
|
|
||||||
.map((r) => `${r.taskId}: ${r.error}`)
|
|
||||||
.join('; ')
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// At least some tasks were removed successfully
|
|
||||||
return {
|
|
||||||
success: true,
|
|
||||||
data: {
|
|
||||||
totalTasks: taskIdArray.length,
|
|
||||||
successful: successfulRemovals.length,
|
|
||||||
failed: failedRemovals.length,
|
|
||||||
results: results,
|
|
||||||
tasksPath: tasksJsonPath
|
|
||||||
}
|
|
||||||
};
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Ensure silent mode is disabled even if an outer error occurs
|
// Ensure silent mode is disabled even if an outer error occurs
|
||||||
disableSilentMode();
|
disableSilentMode();
|
||||||
|
|||||||
40
mcp-server/src/core/direct-functions/response-language.js
Normal file
40
mcp-server/src/core/direct-functions/response-language.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
/**
|
||||||
|
* response-language.js
|
||||||
|
* Direct function for managing response language via MCP
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { setResponseLanguage } from '../../../../scripts/modules/task-manager.js';
|
||||||
|
import {
|
||||||
|
enableSilentMode,
|
||||||
|
disableSilentMode
|
||||||
|
} from '../../../../scripts/modules/utils.js';
|
||||||
|
import { createLogWrapper } from '../../tools/utils.js';
|
||||||
|
|
||||||
|
export async function responseLanguageDirect(args, log, context = {}) {
|
||||||
|
const { projectRoot, language } = args;
|
||||||
|
const mcpLog = createLogWrapper(log);
|
||||||
|
|
||||||
|
log.info(
|
||||||
|
`Executing response-language_direct with args: ${JSON.stringify(args)}`
|
||||||
|
);
|
||||||
|
log.info(`Using project root: ${projectRoot}`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
enableSilentMode();
|
||||||
|
return setResponseLanguage(language, {
|
||||||
|
mcpLog,
|
||||||
|
projectRoot
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
error: {
|
||||||
|
code: 'DIRECT_FUNCTION_ERROR',
|
||||||
|
message: error.message,
|
||||||
|
details: error.stack
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} finally {
|
||||||
|
disableSilentMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,7 +20,8 @@ import { nextTaskDirect } from './next-task.js';
|
|||||||
*/
|
*/
|
||||||
export async function setTaskStatusDirect(args, log, context = {}) {
|
export async function setTaskStatusDirect(args, log, context = {}) {
|
||||||
// Destructure expected args, including the resolved tasksJsonPath and projectRoot
|
// Destructure expected args, including the resolved tasksJsonPath and projectRoot
|
||||||
const { tasksJsonPath, id, status, complexityReportPath, projectRoot } = args;
|
const { tasksJsonPath, id, status, complexityReportPath, projectRoot, tag } =
|
||||||
|
args;
|
||||||
const { session } = context;
|
const { session } = context;
|
||||||
try {
|
try {
|
||||||
log.info(`Setting task status with args: ${JSON.stringify(args)}`);
|
log.info(`Setting task status with args: ${JSON.stringify(args)}`);
|
||||||
@@ -69,11 +70,17 @@ export async function setTaskStatusDirect(args, log, context = {}) {
|
|||||||
enableSilentMode(); // Enable silent mode before calling core function
|
enableSilentMode(); // Enable silent mode before calling core function
|
||||||
try {
|
try {
|
||||||
// Call the core function
|
// Call the core function
|
||||||
await setTaskStatus(tasksPath, taskId, newStatus, {
|
await setTaskStatus(
|
||||||
mcpLog: log,
|
tasksPath,
|
||||||
projectRoot,
|
taskId,
|
||||||
session
|
newStatus,
|
||||||
});
|
{
|
||||||
|
mcpLog: log,
|
||||||
|
projectRoot,
|
||||||
|
session
|
||||||
|
},
|
||||||
|
tag
|
||||||
|
);
|
||||||
|
|
||||||
log.info(`Successfully set task ${taskId} status to ${newStatus}`);
|
log.info(`Successfully set task ${taskId} status to ${newStatus}`);
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import {
|
|||||||
*/
|
*/
|
||||||
export async function updateTasksDirect(args, log, context = {}) {
|
export async function updateTasksDirect(args, log, context = {}) {
|
||||||
const { session } = context;
|
const { session } = context;
|
||||||
const { from, prompt, research, tasksJsonPath, projectRoot } = args;
|
const { from, prompt, research, tasksJsonPath, projectRoot, tag } = args;
|
||||||
|
|
||||||
// Create the standard logger wrapper
|
// Create the standard logger wrapper
|
||||||
const logWrapper = createLogWrapper(log);
|
const logWrapper = createLogWrapper(log);
|
||||||
@@ -75,7 +75,8 @@ export async function updateTasksDirect(args, log, context = {}) {
|
|||||||
{
|
{
|
||||||
session,
|
session,
|
||||||
mcpLog: logWrapper,
|
mcpLog: logWrapper,
|
||||||
projectRoot
|
projectRoot,
|
||||||
|
tag
|
||||||
},
|
},
|
||||||
'json'
|
'json'
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ export function registerAddSubtaskTool(server) {
|
|||||||
.describe(
|
.describe(
|
||||||
'Absolute path to the tasks file (default: tasks/tasks.json)'
|
'Absolute path to the tasks file (default: tasks/tasks.json)'
|
||||||
),
|
),
|
||||||
|
tag: z.string().optional().describe('Tag context to operate on'),
|
||||||
skipGenerate: z
|
skipGenerate: z
|
||||||
.boolean()
|
.boolean()
|
||||||
.optional()
|
.optional()
|
||||||
@@ -89,7 +90,8 @@ export function registerAddSubtaskTool(server) {
|
|||||||
status: args.status,
|
status: args.status,
|
||||||
dependencies: args.dependencies,
|
dependencies: args.dependencies,
|
||||||
skipGenerate: args.skipGenerate,
|
skipGenerate: args.skipGenerate,
|
||||||
projectRoot: args.projectRoot
|
projectRoot: args.projectRoot,
|
||||||
|
tag: args.tag
|
||||||
},
|
},
|
||||||
log,
|
log,
|
||||||
{ session }
|
{ session }
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ export function registerFixDependenciesTool(server) {
|
|||||||
file: z.string().optional().describe('Absolute path to the tasks file'),
|
file: z.string().optional().describe('Absolute path to the tasks file'),
|
||||||
projectRoot: z
|
projectRoot: z
|
||||||
.string()
|
.string()
|
||||||
.describe('The directory of the project. Must be an absolute path.')
|
.describe('The directory of the project. Must be an absolute path.'),
|
||||||
|
tag: z.string().optional().describe('Tag context to operate on')
|
||||||
}),
|
}),
|
||||||
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
||||||
try {
|
try {
|
||||||
@@ -46,7 +47,9 @@ export function registerFixDependenciesTool(server) {
|
|||||||
|
|
||||||
const result = await fixDependenciesDirect(
|
const result = await fixDependenciesDirect(
|
||||||
{
|
{
|
||||||
tasksJsonPath: tasksJsonPath
|
tasksJsonPath: tasksJsonPath,
|
||||||
|
projectRoot: args.projectRoot,
|
||||||
|
tag: args.tag
|
||||||
},
|
},
|
||||||
log
|
log
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import { registerRemoveTaskTool } from './remove-task.js';
|
|||||||
import { registerInitializeProjectTool } from './initialize-project.js';
|
import { registerInitializeProjectTool } from './initialize-project.js';
|
||||||
import { registerModelsTool } from './models.js';
|
import { registerModelsTool } from './models.js';
|
||||||
import { registerMoveTaskTool } from './move-task.js';
|
import { registerMoveTaskTool } from './move-task.js';
|
||||||
|
import { registerResponseLanguageTool } from './response-language.js';
|
||||||
import { registerAddTagTool } from './add-tag.js';
|
import { registerAddTagTool } from './add-tag.js';
|
||||||
import { registerDeleteTagTool } from './delete-tag.js';
|
import { registerDeleteTagTool } from './delete-tag.js';
|
||||||
import { registerListTagsTool } from './list-tags.js';
|
import { registerListTagsTool } from './list-tags.js';
|
||||||
@@ -83,6 +84,7 @@ export function registerTaskMasterTools(server) {
|
|||||||
registerRemoveDependencyTool(server);
|
registerRemoveDependencyTool(server);
|
||||||
registerValidateDependenciesTool(server);
|
registerValidateDependenciesTool(server);
|
||||||
registerFixDependenciesTool(server);
|
registerFixDependenciesTool(server);
|
||||||
|
registerResponseLanguageTool(server);
|
||||||
|
|
||||||
// Group 7: Tag Management
|
// Group 7: Tag Management
|
||||||
registerListTagsTool(server);
|
registerListTagsTool(server);
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ export function registerInitializeProjectTool(server) {
|
|||||||
.array(z.enum(RULE_PROFILES))
|
.array(z.enum(RULE_PROFILES))
|
||||||
.optional()
|
.optional()
|
||||||
.describe(
|
.describe(
|
||||||
`List of rule profiles to include at initialization. If omitted, defaults to all available profiles. Available options: ${RULE_PROFILES.join(', ')}`
|
`List of rule profiles to include at initialization. If omitted, defaults to Cursor profile only. Available options: ${RULE_PROFILES.join(', ')}`
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
execute: withNormalizedProjectRoot(async (args, context) => {
|
execute: withNormalizedProjectRoot(async (args, context) => {
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ export function registerParsePRDTool(server) {
|
|||||||
.string()
|
.string()
|
||||||
.optional()
|
.optional()
|
||||||
.describe(
|
.describe(
|
||||||
'Approximate number of top-level tasks to generate (default: 10). As the agent, if you have enough information, ensure to enter a number of tasks that would logically scale with project complexity. Avoid entering numbers above 50 due to context window limitations.'
|
'Approximate number of top-level tasks to generate (default: 10). As the agent, if you have enough information, ensure to enter a number of tasks that would logically scale with project complexity. Setting to 0 will allow Taskmaster to determine the appropriate number of tasks based on the complexity of the PRD. Avoid entering numbers above 50 due to context window limitations.'
|
||||||
),
|
),
|
||||||
force: z
|
force: z
|
||||||
.boolean()
|
.boolean()
|
||||||
|
|||||||
@@ -33,7 +33,13 @@ export function registerRemoveTaskTool(server) {
|
|||||||
confirm: z
|
confirm: z
|
||||||
.boolean()
|
.boolean()
|
||||||
.optional()
|
.optional()
|
||||||
.describe('Whether to skip confirmation prompt (default: false)')
|
.describe('Whether to skip confirmation prompt (default: false)'),
|
||||||
|
tag: z
|
||||||
|
.string()
|
||||||
|
.optional()
|
||||||
|
.describe(
|
||||||
|
'Specify which tag context to operate on. Defaults to the current active tag.'
|
||||||
|
)
|
||||||
}),
|
}),
|
||||||
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
||||||
try {
|
try {
|
||||||
@@ -59,7 +65,8 @@ export function registerRemoveTaskTool(server) {
|
|||||||
{
|
{
|
||||||
tasksJsonPath: tasksJsonPath,
|
tasksJsonPath: tasksJsonPath,
|
||||||
id: args.id,
|
id: args.id,
|
||||||
projectRoot: args.projectRoot
|
projectRoot: args.projectRoot,
|
||||||
|
tag: args.tag
|
||||||
},
|
},
|
||||||
log,
|
log,
|
||||||
{ session }
|
{ session }
|
||||||
|
|||||||
46
mcp-server/src/tools/response-language.js
Normal file
46
mcp-server/src/tools/response-language.js
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
import { z } from 'zod';
|
||||||
|
import {
|
||||||
|
createErrorResponse,
|
||||||
|
handleApiResult,
|
||||||
|
withNormalizedProjectRoot
|
||||||
|
} from './utils.js';
|
||||||
|
import { responseLanguageDirect } from '../core/direct-functions/response-language.js';
|
||||||
|
|
||||||
|
export function registerResponseLanguageTool(server) {
|
||||||
|
server.addTool({
|
||||||
|
name: 'response-language',
|
||||||
|
description: 'Get or set the response language for the project',
|
||||||
|
parameters: z.object({
|
||||||
|
projectRoot: z
|
||||||
|
.string()
|
||||||
|
.describe(
|
||||||
|
'The root directory for the project. ALWAYS SET THIS TO THE PROJECT ROOT DIRECTORY. IF NOT SET, THE TOOL WILL NOT WORK.'
|
||||||
|
),
|
||||||
|
language: z
|
||||||
|
.string()
|
||||||
|
.describe(
|
||||||
|
'The new response language to set. like "中文" "English" or "español".'
|
||||||
|
)
|
||||||
|
}),
|
||||||
|
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
||||||
|
try {
|
||||||
|
log.info(
|
||||||
|
`Executing response-language tool with args: ${JSON.stringify(args)}`
|
||||||
|
);
|
||||||
|
|
||||||
|
const result = await responseLanguageDirect(
|
||||||
|
{
|
||||||
|
...args,
|
||||||
|
projectRoot: args.projectRoot
|
||||||
|
},
|
||||||
|
log,
|
||||||
|
{ session }
|
||||||
|
);
|
||||||
|
return handleApiResult(result, log, 'Error setting response language');
|
||||||
|
} catch (error) {
|
||||||
|
log.error(`Error in response-language tool: ${error.message}`);
|
||||||
|
return createErrorResponse(error.message);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -47,7 +47,8 @@ export function registerSetTaskStatusTool(server) {
|
|||||||
),
|
),
|
||||||
projectRoot: z
|
projectRoot: z
|
||||||
.string()
|
.string()
|
||||||
.describe('The directory of the project. Must be an absolute path.')
|
.describe('The directory of the project. Must be an absolute path.'),
|
||||||
|
tag: z.string().optional().describe('Optional tag context to operate on')
|
||||||
}),
|
}),
|
||||||
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
||||||
try {
|
try {
|
||||||
@@ -86,7 +87,8 @@ export function registerSetTaskStatusTool(server) {
|
|||||||
id: args.id,
|
id: args.id,
|
||||||
status: args.status,
|
status: args.status,
|
||||||
complexityReportPath,
|
complexityReportPath,
|
||||||
projectRoot: args.projectRoot
|
projectRoot: args.projectRoot,
|
||||||
|
tag: args.tag
|
||||||
},
|
},
|
||||||
log,
|
log,
|
||||||
{ session }
|
{ session }
|
||||||
|
|||||||
@@ -43,11 +43,12 @@ export function registerUpdateTool(server) {
|
|||||||
.optional()
|
.optional()
|
||||||
.describe(
|
.describe(
|
||||||
'The directory of the project. (Optional, usually from session)'
|
'The directory of the project. (Optional, usually from session)'
|
||||||
)
|
),
|
||||||
|
tag: z.string().optional().describe('Tag context to operate on')
|
||||||
}),
|
}),
|
||||||
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
||||||
const toolName = 'update';
|
const toolName = 'update';
|
||||||
const { from, prompt, research, file, projectRoot } = args;
|
const { from, prompt, research, file, projectRoot, tag } = args;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
log.info(
|
log.info(
|
||||||
@@ -71,7 +72,8 @@ export function registerUpdateTool(server) {
|
|||||||
from: from,
|
from: from,
|
||||||
prompt: prompt,
|
prompt: prompt,
|
||||||
research: research,
|
research: research,
|
||||||
projectRoot: projectRoot
|
projectRoot: projectRoot,
|
||||||
|
tag: tag
|
||||||
},
|
},
|
||||||
log,
|
log,
|
||||||
{ session }
|
{ session }
|
||||||
|
|||||||
5516
package-lock.json
generated
5516
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "task-master-ai",
|
"name": "task-master-ai",
|
||||||
"version": "0.18.0-rc.0",
|
"version": "0.19.0",
|
||||||
"description": "A task management system for ambitious AI-driven development that doesn't overwhelm and confuse Cursor.",
|
"description": "A task management system for ambitious AI-driven development that doesn't overwhelm and confuse Cursor.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -68,6 +68,7 @@
|
|||||||
"gradient-string": "^3.0.0",
|
"gradient-string": "^3.0.0",
|
||||||
"helmet": "^8.1.0",
|
"helmet": "^8.1.0",
|
||||||
"inquirer": "^12.5.0",
|
"inquirer": "^12.5.0",
|
||||||
|
"jsonc-parser": "^3.3.1",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"lru-cache": "^10.2.0",
|
"lru-cache": "^10.2.0",
|
||||||
"ollama-ai-provider": "^1.2.0",
|
"ollama-ai-provider": "^1.2.0",
|
||||||
@@ -77,7 +78,8 @@
|
|||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@anthropic-ai/claude-code": "^1.0.25"
|
"@anthropic-ai/claude-code": "^1.0.25",
|
||||||
|
"ai-sdk-provider-gemini-cli": "^0.0.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0.0"
|
"node": ">=18.0.0"
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import {
|
|||||||
convertAllRulesToProfileRules,
|
convertAllRulesToProfileRules,
|
||||||
getRulesProfile
|
getRulesProfile
|
||||||
} from '../src/utils/rule-transformer.js';
|
} from '../src/utils/rule-transformer.js';
|
||||||
|
import { updateConfigMaxTokens } from './modules/update-config-tokens.js';
|
||||||
|
|
||||||
import { execSync } from 'child_process';
|
import { execSync } from 'child_process';
|
||||||
import {
|
import {
|
||||||
@@ -623,6 +624,14 @@ function createProjectStructure(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Update config.json with correct maxTokens values from supported-models.json
|
||||||
|
const configPath = path.join(targetDir, TASKMASTER_CONFIG_FILE);
|
||||||
|
if (updateConfigMaxTokens(configPath)) {
|
||||||
|
log('info', 'Updated config with correct maxTokens values');
|
||||||
|
} else {
|
||||||
|
log('warn', 'Could not update maxTokens in config');
|
||||||
|
}
|
||||||
|
|
||||||
// Copy .gitignore with GitTasks preference
|
// Copy .gitignore with GitTasks preference
|
||||||
try {
|
try {
|
||||||
const gitignoreTemplatePath = path.join(
|
const gitignoreTemplatePath = path.join(
|
||||||
@@ -757,6 +766,44 @@ function createProjectStructure(
|
|||||||
}
|
}
|
||||||
// =====================================
|
// =====================================
|
||||||
|
|
||||||
|
// === Add Response Language Step ===
|
||||||
|
if (!isSilentMode() && !dryRun && !options?.yes) {
|
||||||
|
console.log(
|
||||||
|
boxen(chalk.cyan('Configuring Response Language...'), {
|
||||||
|
padding: 0.5,
|
||||||
|
margin: { top: 1, bottom: 0.5 },
|
||||||
|
borderStyle: 'round',
|
||||||
|
borderColor: 'blue'
|
||||||
|
})
|
||||||
|
);
|
||||||
|
log(
|
||||||
|
'info',
|
||||||
|
'Running interactive response language setup. Please input your preferred language.'
|
||||||
|
);
|
||||||
|
try {
|
||||||
|
execSync('npx task-master lang --setup', {
|
||||||
|
stdio: 'inherit',
|
||||||
|
cwd: targetDir
|
||||||
|
});
|
||||||
|
log('success', 'Response Language configured.');
|
||||||
|
} catch (error) {
|
||||||
|
log('error', 'Failed to configure response language:', error.message);
|
||||||
|
log('warn', 'You may need to run "task-master lang --setup" manually.');
|
||||||
|
}
|
||||||
|
} else if (isSilentMode() && !dryRun) {
|
||||||
|
log(
|
||||||
|
'info',
|
||||||
|
'Skipping interactive response language setup in silent (MCP) mode.'
|
||||||
|
);
|
||||||
|
log(
|
||||||
|
'warn',
|
||||||
|
'Please configure response language using "task-master models --set-response-language" or the "models" MCP tool.'
|
||||||
|
);
|
||||||
|
} else if (dryRun) {
|
||||||
|
log('info', 'DRY RUN: Skipping interactive response language setup.');
|
||||||
|
}
|
||||||
|
// =====================================
|
||||||
|
|
||||||
// === Add Model Configuration Step ===
|
// === Add Model Configuration Step ===
|
||||||
if (!isSilentMode() && !dryRun && !options?.yes) {
|
if (!isSilentMode() && !dryRun && !options?.yes) {
|
||||||
console.log(
|
console.log(
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import {
|
|||||||
getFallbackProvider,
|
getFallbackProvider,
|
||||||
getFallbackModelId,
|
getFallbackModelId,
|
||||||
getParametersForRole,
|
getParametersForRole,
|
||||||
|
getResponseLanguage,
|
||||||
getUserId,
|
getUserId,
|
||||||
MODEL_MAP,
|
MODEL_MAP,
|
||||||
getDebugFlag,
|
getDebugFlag,
|
||||||
@@ -24,7 +25,8 @@ import {
|
|||||||
getAzureBaseURL,
|
getAzureBaseURL,
|
||||||
getBedrockBaseURL,
|
getBedrockBaseURL,
|
||||||
getVertexProjectId,
|
getVertexProjectId,
|
||||||
getVertexLocation
|
getVertexLocation,
|
||||||
|
providersWithoutApiKeys
|
||||||
} from './config-manager.js';
|
} from './config-manager.js';
|
||||||
import {
|
import {
|
||||||
log,
|
log,
|
||||||
@@ -45,7 +47,8 @@ import {
|
|||||||
BedrockAIProvider,
|
BedrockAIProvider,
|
||||||
AzureProvider,
|
AzureProvider,
|
||||||
VertexAIProvider,
|
VertexAIProvider,
|
||||||
ClaudeCodeProvider
|
ClaudeCodeProvider,
|
||||||
|
GeminiCliProvider
|
||||||
} from '../../src/ai-providers/index.js';
|
} from '../../src/ai-providers/index.js';
|
||||||
|
|
||||||
// Create provider instances
|
// Create provider instances
|
||||||
@@ -60,7 +63,8 @@ const PROVIDERS = {
|
|||||||
bedrock: new BedrockAIProvider(),
|
bedrock: new BedrockAIProvider(),
|
||||||
azure: new AzureProvider(),
|
azure: new AzureProvider(),
|
||||||
vertex: new VertexAIProvider(),
|
vertex: new VertexAIProvider(),
|
||||||
'claude-code': new ClaudeCodeProvider()
|
'claude-code': new ClaudeCodeProvider(),
|
||||||
|
'gemini-cli': new GeminiCliProvider()
|
||||||
};
|
};
|
||||||
|
|
||||||
// Helper function to get cost for a specific model
|
// Helper function to get cost for a specific model
|
||||||
@@ -232,6 +236,12 @@ function _resolveApiKey(providerName, session, projectRoot = null) {
|
|||||||
return 'claude-code-no-key-required';
|
return 'claude-code-no-key-required';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Gemini CLI can work without an API key (uses CLI auth)
|
||||||
|
if (providerName === 'gemini-cli') {
|
||||||
|
const apiKey = resolveEnvVariable('GEMINI_API_KEY', session, projectRoot);
|
||||||
|
return apiKey || 'gemini-cli-no-key-required';
|
||||||
|
}
|
||||||
|
|
||||||
const keyMap = {
|
const keyMap = {
|
||||||
openai: 'OPENAI_API_KEY',
|
openai: 'OPENAI_API_KEY',
|
||||||
anthropic: 'ANTHROPIC_API_KEY',
|
anthropic: 'ANTHROPIC_API_KEY',
|
||||||
@@ -244,7 +254,8 @@ function _resolveApiKey(providerName, session, projectRoot = null) {
|
|||||||
ollama: 'OLLAMA_API_KEY',
|
ollama: 'OLLAMA_API_KEY',
|
||||||
bedrock: 'AWS_ACCESS_KEY_ID',
|
bedrock: 'AWS_ACCESS_KEY_ID',
|
||||||
vertex: 'GOOGLE_API_KEY',
|
vertex: 'GOOGLE_API_KEY',
|
||||||
'claude-code': 'CLAUDE_CODE_API_KEY' // Not actually used, but included for consistency
|
'claude-code': 'CLAUDE_CODE_API_KEY', // Not actually used, but included for consistency
|
||||||
|
'gemini-cli': 'GEMINI_API_KEY'
|
||||||
};
|
};
|
||||||
|
|
||||||
const envVarName = keyMap[providerName];
|
const envVarName = keyMap[providerName];
|
||||||
@@ -257,7 +268,7 @@ function _resolveApiKey(providerName, session, projectRoot = null) {
|
|||||||
const apiKey = resolveEnvVariable(envVarName, session, projectRoot);
|
const apiKey = resolveEnvVariable(envVarName, session, projectRoot);
|
||||||
|
|
||||||
// Special handling for providers that can use alternative auth
|
// Special handling for providers that can use alternative auth
|
||||||
if (providerName === 'ollama' || providerName === 'bedrock') {
|
if (providersWithoutApiKeys.includes(providerName?.toLowerCase())) {
|
||||||
return apiKey || null;
|
return apiKey || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -457,7 +468,7 @@ async function _unifiedServiceRunner(serviceType, params) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check API key if needed
|
// Check API key if needed
|
||||||
if (providerName?.toLowerCase() !== 'ollama') {
|
if (!providersWithoutApiKeys.includes(providerName?.toLowerCase())) {
|
||||||
if (!isApiKeySet(providerName, session, effectiveProjectRoot)) {
|
if (!isApiKeySet(providerName, session, effectiveProjectRoot)) {
|
||||||
log(
|
log(
|
||||||
'warn',
|
'warn',
|
||||||
@@ -541,9 +552,12 @@ async function _unifiedServiceRunner(serviceType, params) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const messages = [];
|
const messages = [];
|
||||||
if (systemPrompt) {
|
const responseLanguage = getResponseLanguage(effectiveProjectRoot);
|
||||||
messages.push({ role: 'system', content: systemPrompt });
|
const systemPromptWithLanguage = `${systemPrompt} \n\n Always respond in ${responseLanguage}.`;
|
||||||
}
|
messages.push({
|
||||||
|
role: 'system',
|
||||||
|
content: systemPromptWithLanguage.trim()
|
||||||
|
});
|
||||||
|
|
||||||
// IN THE FUTURE WHEN DOING CONTEXT IMPROVEMENTS
|
// IN THE FUTURE WHEN DOING CONTEXT IMPROVEMENTS
|
||||||
// {
|
// {
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ import {
|
|||||||
findTaskById,
|
findTaskById,
|
||||||
taskExists,
|
taskExists,
|
||||||
moveTask,
|
moveTask,
|
||||||
migrateProject
|
migrateProject,
|
||||||
|
setResponseLanguage
|
||||||
} from './task-manager.js';
|
} from './task-manager.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@@ -69,7 +70,9 @@ import {
|
|||||||
ConfigurationError,
|
ConfigurationError,
|
||||||
isConfigFilePresent,
|
isConfigFilePresent,
|
||||||
getAvailableModels,
|
getAvailableModels,
|
||||||
getBaseUrlForRole
|
getBaseUrlForRole,
|
||||||
|
getDefaultNumTasks,
|
||||||
|
getDefaultSubtasks
|
||||||
} from './config-manager.js';
|
} from './config-manager.js';
|
||||||
|
|
||||||
import { CUSTOM_PROVIDERS } from '../../src/constants/providers.js';
|
import { CUSTOM_PROVIDERS } from '../../src/constants/providers.js';
|
||||||
@@ -803,7 +806,11 @@ function registerCommands(programInstance) {
|
|||||||
'Path to the PRD file (alternative to positional argument)'
|
'Path to the PRD file (alternative to positional argument)'
|
||||||
)
|
)
|
||||||
.option('-o, --output <file>', 'Output file path', TASKMASTER_TASKS_FILE)
|
.option('-o, --output <file>', 'Output file path', TASKMASTER_TASKS_FILE)
|
||||||
.option('-n, --num-tasks <number>', 'Number of tasks to generate', '10')
|
.option(
|
||||||
|
'-n, --num-tasks <number>',
|
||||||
|
'Number of tasks to generate',
|
||||||
|
getDefaultNumTasks()
|
||||||
|
)
|
||||||
.option('-f, --force', 'Skip confirmation when overwriting existing tasks')
|
.option('-f, --force', 'Skip confirmation when overwriting existing tasks')
|
||||||
.option(
|
.option(
|
||||||
'--append',
|
'--append',
|
||||||
@@ -3421,6 +3428,10 @@ ${result.result}
|
|||||||
'--vertex',
|
'--vertex',
|
||||||
'Allow setting a custom Vertex AI model ID (use with --set-*) '
|
'Allow setting a custom Vertex AI model ID (use with --set-*) '
|
||||||
)
|
)
|
||||||
|
.option(
|
||||||
|
'--gemini-cli',
|
||||||
|
'Allow setting a Gemini CLI model ID (use with --set-*)'
|
||||||
|
)
|
||||||
.addHelpText(
|
.addHelpText(
|
||||||
'after',
|
'after',
|
||||||
`
|
`
|
||||||
@@ -3435,6 +3446,7 @@ Examples:
|
|||||||
$ task-master models --set-main sonnet --claude-code # Set Claude Code model for main role
|
$ task-master models --set-main sonnet --claude-code # Set Claude Code model for main role
|
||||||
$ task-master models --set-main gpt-4o --azure # Set custom Azure OpenAI model for main role
|
$ task-master models --set-main gpt-4o --azure # Set custom Azure OpenAI model for main role
|
||||||
$ task-master models --set-main claude-3-5-sonnet@20241022 --vertex # Set custom Vertex AI model for main role
|
$ task-master models --set-main claude-3-5-sonnet@20241022 --vertex # Set custom Vertex AI model for main role
|
||||||
|
$ task-master models --set-main gemini-2.5-pro --gemini-cli # Set Gemini CLI model for main role
|
||||||
$ task-master models --setup # Run interactive setup`
|
$ task-master models --setup # Run interactive setup`
|
||||||
)
|
)
|
||||||
.action(async (options) => {
|
.action(async (options) => {
|
||||||
@@ -3448,12 +3460,13 @@ Examples:
|
|||||||
options.openrouter,
|
options.openrouter,
|
||||||
options.ollama,
|
options.ollama,
|
||||||
options.bedrock,
|
options.bedrock,
|
||||||
options.claudeCode
|
options.claudeCode,
|
||||||
|
options.geminiCli
|
||||||
].filter(Boolean).length;
|
].filter(Boolean).length;
|
||||||
if (providerFlags > 1) {
|
if (providerFlags > 1) {
|
||||||
console.error(
|
console.error(
|
||||||
chalk.red(
|
chalk.red(
|
||||||
'Error: Cannot use multiple provider flags (--openrouter, --ollama, --bedrock, --claude-code) simultaneously.'
|
'Error: Cannot use multiple provider flags (--openrouter, --ollama, --bedrock, --claude-code, --gemini-cli) simultaneously.'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
@@ -3497,7 +3510,9 @@ Examples:
|
|||||||
? 'bedrock'
|
? 'bedrock'
|
||||||
: options.claudeCode
|
: options.claudeCode
|
||||||
? 'claude-code'
|
? 'claude-code'
|
||||||
: undefined
|
: options.geminiCli
|
||||||
|
? 'gemini-cli'
|
||||||
|
: undefined
|
||||||
});
|
});
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
console.log(chalk.green(`✅ ${result.data.message}`));
|
console.log(chalk.green(`✅ ${result.data.message}`));
|
||||||
@@ -3521,7 +3536,9 @@ Examples:
|
|||||||
? 'bedrock'
|
? 'bedrock'
|
||||||
: options.claudeCode
|
: options.claudeCode
|
||||||
? 'claude-code'
|
? 'claude-code'
|
||||||
: undefined
|
: options.geminiCli
|
||||||
|
? 'gemini-cli'
|
||||||
|
: undefined
|
||||||
});
|
});
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
console.log(chalk.green(`✅ ${result.data.message}`));
|
console.log(chalk.green(`✅ ${result.data.message}`));
|
||||||
@@ -3547,7 +3564,9 @@ Examples:
|
|||||||
? 'bedrock'
|
? 'bedrock'
|
||||||
: options.claudeCode
|
: options.claudeCode
|
||||||
? 'claude-code'
|
? 'claude-code'
|
||||||
: undefined
|
: options.geminiCli
|
||||||
|
? 'gemini-cli'
|
||||||
|
: undefined
|
||||||
});
|
});
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
console.log(chalk.green(`✅ ${result.data.message}`));
|
console.log(chalk.green(`✅ ${result.data.message}`));
|
||||||
@@ -3643,6 +3662,63 @@ Examples:
|
|||||||
return; // Stop execution here
|
return; // Stop execution here
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// response-language command
|
||||||
|
programInstance
|
||||||
|
.command('lang')
|
||||||
|
.description('Manage response language settings')
|
||||||
|
.option('--response <response_language>', 'Set the response language')
|
||||||
|
.option('--setup', 'Run interactive setup to configure response language')
|
||||||
|
.action(async (options) => {
|
||||||
|
const projectRoot = findProjectRoot(); // Find project root for context
|
||||||
|
const { response, setup } = options;
|
||||||
|
console.log(
|
||||||
|
chalk.blue('Response language set to:', JSON.stringify(options))
|
||||||
|
);
|
||||||
|
let responseLanguage = response || 'English';
|
||||||
|
if (setup) {
|
||||||
|
console.log(
|
||||||
|
chalk.blue('Starting interactive response language setup...')
|
||||||
|
);
|
||||||
|
try {
|
||||||
|
const userResponse = await inquirer.prompt([
|
||||||
|
{
|
||||||
|
type: 'input',
|
||||||
|
name: 'responseLanguage',
|
||||||
|
message: 'Input your preferred response language',
|
||||||
|
default: 'English'
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
chalk.blue(
|
||||||
|
'Response language set to:',
|
||||||
|
userResponse.responseLanguage
|
||||||
|
)
|
||||||
|
);
|
||||||
|
responseLanguage = userResponse.responseLanguage;
|
||||||
|
} catch (setupError) {
|
||||||
|
console.error(
|
||||||
|
chalk.red('\\nInteractive setup failed unexpectedly:'),
|
||||||
|
setupError.message
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = setResponseLanguage(responseLanguage, {
|
||||||
|
projectRoot
|
||||||
|
});
|
||||||
|
|
||||||
|
if (result.success) {
|
||||||
|
console.log(chalk.green(`✅ ${result.data.message}`));
|
||||||
|
} else {
|
||||||
|
console.error(
|
||||||
|
chalk.red(
|
||||||
|
`❌ Error setting response language: ${result.error.message}`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// move-task command
|
// move-task command
|
||||||
programInstance
|
programInstance
|
||||||
.command('move')
|
.command('move')
|
||||||
@@ -3810,7 +3886,11 @@ Examples:
|
|||||||
$ task-master rules --${RULES_SETUP_ACTION} # Interactive setup to select rule profiles`
|
$ task-master rules --${RULES_SETUP_ACTION} # Interactive setup to select rule profiles`
|
||||||
)
|
)
|
||||||
.action(async (action, profiles, options) => {
|
.action(async (action, profiles, options) => {
|
||||||
const projectDir = process.cwd();
|
const projectRoot = findProjectRoot();
|
||||||
|
if (!projectRoot) {
|
||||||
|
console.error(chalk.red('Error: Could not find project root.'));
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 'task-master rules --setup' action:
|
* 'task-master rules --setup' action:
|
||||||
@@ -3857,7 +3937,7 @@ Examples:
|
|||||||
const profileConfig = getRulesProfile(profile);
|
const profileConfig = getRulesProfile(profile);
|
||||||
|
|
||||||
const addResult = convertAllRulesToProfileRules(
|
const addResult = convertAllRulesToProfileRules(
|
||||||
projectDir,
|
projectRoot,
|
||||||
profileConfig
|
profileConfig
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -3903,8 +3983,8 @@ Examples:
|
|||||||
let confirmed = true;
|
let confirmed = true;
|
||||||
if (!options.force) {
|
if (!options.force) {
|
||||||
// Check if this removal would leave no profiles remaining
|
// Check if this removal would leave no profiles remaining
|
||||||
if (wouldRemovalLeaveNoProfiles(projectDir, expandedProfiles)) {
|
if (wouldRemovalLeaveNoProfiles(projectRoot, expandedProfiles)) {
|
||||||
const installedProfiles = getInstalledProfiles(projectDir);
|
const installedProfiles = getInstalledProfiles(projectRoot);
|
||||||
confirmed = await confirmRemoveAllRemainingProfiles(
|
confirmed = await confirmRemoveAllRemainingProfiles(
|
||||||
expandedProfiles,
|
expandedProfiles,
|
||||||
installedProfiles
|
installedProfiles
|
||||||
@@ -3934,12 +4014,12 @@ Examples:
|
|||||||
if (action === RULES_ACTIONS.ADD) {
|
if (action === RULES_ACTIONS.ADD) {
|
||||||
console.log(chalk.blue(`Adding rules for profile: ${profile}...`));
|
console.log(chalk.blue(`Adding rules for profile: ${profile}...`));
|
||||||
const addResult = convertAllRulesToProfileRules(
|
const addResult = convertAllRulesToProfileRules(
|
||||||
projectDir,
|
projectRoot,
|
||||||
profileConfig
|
profileConfig
|
||||||
);
|
);
|
||||||
if (typeof profileConfig.onAddRulesProfile === 'function') {
|
if (typeof profileConfig.onAddRulesProfile === 'function') {
|
||||||
const assetsDir = path.join(process.cwd(), 'assets');
|
const assetsDir = path.join(projectRoot, 'assets');
|
||||||
profileConfig.onAddRulesProfile(projectDir, assetsDir);
|
profileConfig.onAddRulesProfile(projectRoot, assetsDir);
|
||||||
}
|
}
|
||||||
console.log(
|
console.log(
|
||||||
chalk.blue(`Completed adding rules for profile: ${profile}`)
|
chalk.blue(`Completed adding rules for profile: ${profile}`)
|
||||||
@@ -3955,7 +4035,7 @@ Examples:
|
|||||||
console.log(chalk.green(generateProfileSummary(profile, addResult)));
|
console.log(chalk.green(generateProfileSummary(profile, addResult)));
|
||||||
} else if (action === RULES_ACTIONS.REMOVE) {
|
} else if (action === RULES_ACTIONS.REMOVE) {
|
||||||
console.log(chalk.blue(`Removing rules for profile: ${profile}...`));
|
console.log(chalk.blue(`Removing rules for profile: ${profile}...`));
|
||||||
const result = removeProfileRules(projectDir, profileConfig);
|
const result = removeProfileRules(projectRoot, profileConfig);
|
||||||
removalResults.push(result);
|
removalResults.push(result);
|
||||||
console.log(
|
console.log(
|
||||||
chalk.green(generateProfileRemovalSummary(profile, result))
|
chalk.green(generateProfileRemovalSummary(profile, result))
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user