Compare commits
1 Commits
chore/crea
...
fix/releas
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a673df87bc |
12
.changeset/bright-llamas-enter.md
Normal file
12
.changeset/bright-llamas-enter.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
"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
|
||||||
5
.changeset/bright-monkeys-act.md
Normal file
5
.changeset/bright-monkeys-act.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Ensure projectRoot is a string (potential WSL fix)
|
||||||
5
.changeset/chatty-rats-talk.md
Normal file
5
.changeset/chatty-rats-talk.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix Cursor deeplink installation by providing copy-paste instructions for GitHub compatibility
|
||||||
5
.changeset/chubby-needles-beam.md
Normal file
5
.changeset/chubby-needles-beam.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix bulk update tag corruption in tagged task lists
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix: show command no longer requires complexity report file to exist
|
|
||||||
|
|
||||||
The `tm show` command was incorrectly requiring the complexity report file to exist even when not needed. Now it only validates the complexity report path when a custom report file is explicitly provided via the -r/--report option.
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix tag-specific complexity report detection in expand command
|
|
||||||
|
|
||||||
The expand command now correctly finds and uses tag-specific complexity reports (e.g., `task-complexity-report_feature-xyz.json`) when operating in a tag context. Previously, it would always look for the generic `task-complexity-report.json` file due to a default value in the CLI option definition.
|
|
||||||
5
.changeset/flat-geckos-enjoy.md
Normal file
5
.changeset/flat-geckos-enjoy.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Include additional Anthropic models running on Bedrock in what is supported
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Complete Groq provider integration and add MoonshotAI Kimi K2 model support
|
|
||||||
|
|
||||||
- Fixed Groq provider registration
|
|
||||||
- Added Groq API key validation
|
|
||||||
- Added GROQ_API_KEY to .env.example
|
|
||||||
- Added moonshotai/kimi-k2-instruct model with $1/$3 per 1M token pricing and 16k max output
|
|
||||||
7
.changeset/hot-planets-deny.md
Normal file
7
.changeset/hot-planets-deny.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
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.
|
||||||
8
.changeset/huge-moose-prove.md
Normal file
8
.changeset/huge-moose-prove.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Can now configure baseURL of provider with `<PROVIDER>_BASE_URL`
|
||||||
|
|
||||||
|
- For example:
|
||||||
|
- `OPENAI_BASE_URL`
|
||||||
5
.changeset/icy-dryers-hunt.md
Normal file
5
.changeset/icy-dryers-hunt.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Call rules interactive setup during init
|
||||||
5
.changeset/large-wolves-strive.md
Normal file
5
.changeset/large-wolves-strive.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Update o3 model price
|
||||||
17
.changeset/lemon-deer-hide.md
Normal file
17
.changeset/lemon-deer-hide.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
'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
|
||||||
5
.changeset/major-dogs-admire.md
Normal file
5
.changeset/major-dogs-admire.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix .gitignore missing trailing newline during project initialization
|
||||||
5
.changeset/mean-papayas-share.md
Normal file
5
.changeset/mean-papayas-share.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Default to Cursor profile for MCP init when no rules specified
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
feat: Add Zed editor rule profile with agent rules and MCP config
|
|
||||||
|
|
||||||
- Resolves #637
|
|
||||||
5
.changeset/modern-cats-pick.md
Normal file
5
.changeset/modern-cats-pick.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Improves Amazon Bedrock support
|
||||||
5
.changeset/moody-goats-leave.md
Normal file
5
.changeset/moody-goats-leave.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Adds support for gemini-cli as a provider, enabling free or subscription use through Google Accounts and paid Gemini Cloud Assist (GCA) subscriptions.
|
||||||
5
.changeset/nasty-berries-tan.md
Normal file
5
.changeset/nasty-berries-tan.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"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>
|
||||||
8
.changeset/nasty-chefs-add.md
Normal file
8
.changeset/nasty-chefs-add.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fixes issue with expand CLI command "Complexity report not found"
|
||||||
|
|
||||||
|
- Closes #735
|
||||||
|
- Closes #728
|
||||||
5
.changeset/olive-clouds-tan.md
Normal file
5
.changeset/olive-clouds-tan.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix data corruption issues by ensuring project root and tag information is properly passed through all command operations
|
||||||
10
.changeset/petite-friends-arrive.md
Normal file
10
.changeset/petite-friends-arrive.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Make task-master more compatible with the "o" family models of OpenAI
|
||||||
|
|
||||||
|
Now works well with:
|
||||||
|
- o3
|
||||||
|
- o3-mini
|
||||||
|
- etc.
|
||||||
23
.changeset/pre.json
Normal file
23
.changeset/pre.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"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 Amp rule profile with AGENT.md and MCP config
|
|
||||||
5
.changeset/shy-groups-fly.md
Normal file
5
.changeset/shy-groups-fly.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Add better support for python projects by adding `pyproject.toml` as a projectRoot marker
|
||||||
5
.changeset/smooth-ants-live.md
Normal file
5
.changeset/smooth-ants-live.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Added option for the AI to determine the number of tasks required based entirely on complexity
|
||||||
5
.changeset/sour-lions-check.md
Normal file
5
.changeset/sour-lions-check.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Store tasks in Git by default
|
||||||
11
.changeset/spicy-teams-travel.md
Normal file
11
.changeset/spicy-teams-travel.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
"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`
|
||||||
5
.changeset/stale-cameras-sin.md
Normal file
5
.changeset/stale-cameras-sin.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix weird `task-master init` bug when using in certain environments
|
||||||
5
.changeset/sweet-ties-argue.md
Normal file
5
.changeset/sweet-ties-argue.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Add advanced settings for Claude Code AI Provider
|
||||||
5
.changeset/swift-squids-sip.md
Normal file
5
.changeset/swift-squids-sip.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Rename Roo Code Boomerang role to Orchestrator
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add MCP configuration support to Claude Code rules
|
|
||||||
5
.changeset/tame-vans-throw.md
Normal file
5
.changeset/tame-vans-throw.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
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
|
||||||
5
.changeset/tidy-meals-enter.md
Normal file
5
.changeset/tidy-meals-enter.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'task-master-ai': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Support custom response language
|
||||||
5
.changeset/tiny-dogs-change.md
Normal file
5
.changeset/tiny-dogs-change.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Improve mcp keys check in cursor
|
||||||
22
.changeset/vast-plants-exist.md
Normal file
22
.changeset/vast-plants-exist.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
"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
|
||||||
22
.changeset/wet-berries-dress.md
Normal file
22
.changeset/wet-berries-dress.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
"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.
|
||||||
5
.changeset/wicked-rats-hide.md
Normal file
5
.changeset/wicked-rats-hide.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix rules command to use reliable project root detection like other commands
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add OpenCode profile with AGENTS.md and MCP config
|
|
||||||
|
|
||||||
- Resolves #965
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"task-master-ai": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add missing API keys to .env.example and README.md
|
|
||||||
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.
|
||||||
@@ -1,146 +0,0 @@
|
|||||||
# 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`
|
|
||||||
- `init-project` - Initialize new project (handles PRD files intelligently)
|
|
||||||
- `init-project-quick` - Quick setup with auto-confirmation (-y flag)
|
|
||||||
|
|
||||||
### `/project:tm/models`
|
|
||||||
- `view-models` - View current AI model configuration
|
|
||||||
- `setup-models` - 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`
|
|
||||||
- `parse-prd` - Generate tasks from PRD document
|
|
||||||
- `parse-prd-with-research` - Enhanced parsing with research mode
|
|
||||||
|
|
||||||
### `/project:tm/generate`
|
|
||||||
- `generate-tasks` - Create individual task files from tasks.json
|
|
||||||
|
|
||||||
## Task Management
|
|
||||||
|
|
||||||
### `/project:tm/list`
|
|
||||||
- `list-tasks` - Smart listing with natural language filters
|
|
||||||
- `list-tasks-with-subtasks` - Include subtasks in hierarchical view
|
|
||||||
- `list-tasks-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`
|
|
||||||
- `sync-readme` - Export tasks to README.md with formatting
|
|
||||||
|
|
||||||
### `/project:tm/update`
|
|
||||||
- `update-task` - Update tasks with natural language
|
|
||||||
- `update-tasks-from-id` - Update multiple tasks from a starting point
|
|
||||||
- `update-single-task` - Update specific task
|
|
||||||
|
|
||||||
### `/project:tm/add-task`
|
|
||||||
- `add-task` - Add new task with AI assistance
|
|
||||||
|
|
||||||
### `/project:tm/remove-task`
|
|
||||||
- `remove-task` - Remove task with confirmation
|
|
||||||
|
|
||||||
## Subtask Management
|
|
||||||
|
|
||||||
### `/project:tm/add-subtask`
|
|
||||||
- `add-subtask` - Add new subtask to parent
|
|
||||||
- `convert-task-to-subtask` - Convert existing task to subtask
|
|
||||||
|
|
||||||
### `/project:tm/remove-subtask`
|
|
||||||
- `remove-subtask` - Remove subtask (with optional conversion)
|
|
||||||
|
|
||||||
### `/project:tm/clear-subtasks`
|
|
||||||
- `clear-subtasks` - Clear subtasks from specific task
|
|
||||||
- `clear-all-subtasks` - Clear all subtasks globally
|
|
||||||
|
|
||||||
## Task Analysis & Breakdown
|
|
||||||
|
|
||||||
### `/project:tm/analyze-complexity`
|
|
||||||
- `analyze-complexity` - Analyze and generate expansion recommendations
|
|
||||||
|
|
||||||
### `/project:tm/complexity-report`
|
|
||||||
- `complexity-report` - Display complexity analysis report
|
|
||||||
|
|
||||||
### `/project:tm/expand`
|
|
||||||
- `expand-task` - Break down specific task
|
|
||||||
- `expand-all-tasks` - Expand all eligible tasks
|
|
||||||
- `with-research` - Enhanced expansion
|
|
||||||
|
|
||||||
## Task Navigation
|
|
||||||
|
|
||||||
### `/project:tm/next`
|
|
||||||
- `next-task` - Intelligent next task recommendation
|
|
||||||
|
|
||||||
### `/project:tm/show`
|
|
||||||
- `show-task` - Display detailed task information
|
|
||||||
|
|
||||||
### `/project:tm/status`
|
|
||||||
- `project-status` - Comprehensive project dashboard
|
|
||||||
|
|
||||||
## Dependency Management
|
|
||||||
|
|
||||||
### `/project:tm/add-dependency`
|
|
||||||
- `add-dependency` - Add task dependency
|
|
||||||
|
|
||||||
### `/project:tm/remove-dependency`
|
|
||||||
- `remove-dependency` - Remove task dependency
|
|
||||||
|
|
||||||
### `/project:tm/validate-dependencies`
|
|
||||||
- `validate-dependencies` - Check for dependency issues
|
|
||||||
|
|
||||||
### `/project:tm/fix-dependencies`
|
|
||||||
- `fix-dependencies` - Automatically fix dependency problems
|
|
||||||
|
|
||||||
## Workflows & Automation
|
|
||||||
|
|
||||||
### `/project:tm/workflows`
|
|
||||||
- `smart-workflow` - Context-aware intelligent workflow execution
|
|
||||||
- `command-pipeline` - Chain multiple commands together
|
|
||||||
- `auto-implement-tasks` - Advanced auto-implementation with code generation
|
|
||||||
|
|
||||||
## Utilities
|
|
||||||
|
|
||||||
### `/project:tm/utils`
|
|
||||||
- `analyze-project` - Deep project analysis and insights
|
|
||||||
|
|
||||||
### `/project:tm/setup`
|
|
||||||
- `install-taskmaster` - Comprehensive installation guide
|
|
||||||
- `quick-install-taskmaster` - One-line global installation
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
reviews:
|
|
||||||
profile: assertive
|
|
||||||
poem: false
|
|
||||||
auto_review:
|
|
||||||
base_branches:
|
|
||||||
- rc
|
|
||||||
- beta
|
|
||||||
- alpha
|
|
||||||
- production
|
|
||||||
- next
|
|
||||||
@@ -8,7 +8,6 @@
|
|||||||
"PERPLEXITY_API_KEY": "PERPLEXITY_API_KEY_HERE",
|
"PERPLEXITY_API_KEY": "PERPLEXITY_API_KEY_HERE",
|
||||||
"OPENAI_API_KEY": "OPENAI_API_KEY_HERE",
|
"OPENAI_API_KEY": "OPENAI_API_KEY_HERE",
|
||||||
"GOOGLE_API_KEY": "GOOGLE_API_KEY_HERE",
|
"GOOGLE_API_KEY": "GOOGLE_API_KEY_HERE",
|
||||||
"GROQ_API_KEY": "GROQ_API_KEY_HERE",
|
|
||||||
"XAI_API_KEY": "XAI_API_KEY_HERE",
|
"XAI_API_KEY": "XAI_API_KEY_HERE",
|
||||||
"OPENROUTER_API_KEY": "OPENROUTER_API_KEY_HERE",
|
"OPENROUTER_API_KEY": "OPENROUTER_API_KEY_HERE",
|
||||||
"MISTRAL_API_KEY": "MISTRAL_API_KEY_HERE",
|
"MISTRAL_API_KEY": "MISTRAL_API_KEY_HERE",
|
||||||
|
|||||||
@@ -523,7 +523,7 @@ For AI-powered commands that benefit from project context, follow the research c
|
|||||||
.option('--details <details>', 'Implementation details for the new subtask, optional')
|
.option('--details <details>', 'Implementation details for the new subtask, optional')
|
||||||
.option('--dependencies <ids>', 'Comma-separated list of subtask IDs this subtask depends on')
|
.option('--dependencies <ids>', 'Comma-separated list of subtask IDs this subtask depends on')
|
||||||
.option('--status <status>', 'Initial status for the subtask', 'pending')
|
.option('--status <status>', 'Initial status for the subtask', 'pending')
|
||||||
.option('--generate', 'Regenerate task files after adding subtask')
|
.option('--skip-generate', 'Skip regenerating task files')
|
||||||
.action(async (options) => {
|
.action(async (options) => {
|
||||||
// Validate required parameters
|
// Validate required parameters
|
||||||
if (!options.parent) {
|
if (!options.parent) {
|
||||||
@@ -545,7 +545,7 @@ For AI-powered commands that benefit from project context, follow the research c
|
|||||||
.option('-f, --file <path>', 'Path to the tasks file', 'tasks/tasks.json')
|
.option('-f, --file <path>', 'Path to the tasks file', 'tasks/tasks.json')
|
||||||
.option('-i, --id <id>', 'ID of the subtask to remove in format parentId.subtaskId, required')
|
.option('-i, --id <id>', 'ID of the subtask to remove in format parentId.subtaskId, required')
|
||||||
.option('-c, --convert', 'Convert the subtask to a standalone task instead of deleting')
|
.option('-c, --convert', 'Convert the subtask to a standalone task instead of deleting')
|
||||||
.option('--generate', 'Regenerate task files after removing subtask')
|
.option('--skip-generate', 'Skip regenerating task files')
|
||||||
.action(async (options) => {
|
.action(async (options) => {
|
||||||
// Implementation with detailed error handling
|
// Implementation with detailed error handling
|
||||||
})
|
})
|
||||||
@@ -633,11 +633,11 @@ function showAddSubtaskHelp() {
|
|||||||
' --dependencies <ids> Comma-separated list of dependency IDs\n' +
|
' --dependencies <ids> Comma-separated list of dependency IDs\n' +
|
||||||
' -s, --status <status> Status for the new subtask (default: "pending")\n' +
|
' -s, --status <status> Status for the new subtask (default: "pending")\n' +
|
||||||
' -f, --file <file> Path to the tasks file (default: "tasks/tasks.json")\n' +
|
' -f, --file <file> Path to the tasks file (default: "tasks/tasks.json")\n' +
|
||||||
' --generate Regenerate task files after adding subtask\n\n' +
|
' --skip-generate Skip regenerating task files\n\n' +
|
||||||
chalk.cyan('Examples:') + '\n' +
|
chalk.cyan('Examples:') + '\n' +
|
||||||
' task-master add-subtask --parent=\'5\' --task-id=\'8\'\n' +
|
' task-master add-subtask --parent=\'5\' --task-id=\'8\'\n' +
|
||||||
' task-master add-subtask -p \'5\' -t \'Implement login UI\' -d \'Create the login form\'\n' +
|
' task-master add-subtask -p \'5\' -t \'Implement login UI\' -d \'Create the login form\'\n' +
|
||||||
' task-master add-subtask -p \'5\' -t \'Handle API Errors\' --details "Handle 401 Unauthorized.\\nHandle 500 Server Error." --generate',
|
' task-master add-subtask -p \'5\' -t \'Handle API Errors\' --details $\'Handle 401 Unauthorized.\nHandle 500 Server Error.\'',
|
||||||
{ padding: 1, borderColor: 'blue', borderStyle: 'round' }
|
{ padding: 1, borderColor: 'blue', borderStyle: 'round' }
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@@ -652,7 +652,7 @@ function showRemoveSubtaskHelp() {
|
|||||||
' -i, --id <id> Subtask ID(s) to remove in format "parentId.subtaskId" (can be comma-separated, required)\n' +
|
' -i, --id <id> Subtask ID(s) to remove in format "parentId.subtaskId" (can be comma-separated, required)\n' +
|
||||||
' -c, --convert Convert the subtask to a standalone task instead of deleting it\n' +
|
' -c, --convert Convert the subtask to a standalone task instead of deleting it\n' +
|
||||||
' -f, --file <file> Path to the tasks file (default: "tasks/tasks.json")\n' +
|
' -f, --file <file> Path to the tasks file (default: "tasks/tasks.json")\n' +
|
||||||
' --generate Regenerate task files after removing subtask\n\n' +
|
' --skip-generate Skip regenerating task files\n\n' +
|
||||||
chalk.cyan('Examples:') + '\n' +
|
chalk.cyan('Examples:') + '\n' +
|
||||||
' task-master remove-subtask --id=\'5.2\'\n' +
|
' task-master remove-subtask --id=\'5.2\'\n' +
|
||||||
' task-master remove-subtask --id=\'5.2,6.3,7.1\'\n' +
|
' task-master remove-subtask --id=\'5.2,6.3,7.1\'\n' +
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ This document provides a detailed reference for interacting with Taskmaster, cov
|
|||||||
* `details`: `Provide implementation notes or details for the new subtask.` (CLI: `--details <text>`)
|
* `details`: `Provide implementation notes or details for the new subtask.` (CLI: `--details <text>`)
|
||||||
* `dependencies`: `Specify IDs of other tasks or subtasks, e.g., '15' or '16.1', that must be done before this new subtask.` (CLI: `--dependencies <ids>`)
|
* `dependencies`: `Specify IDs of other tasks or subtasks, e.g., '15' or '16.1', that must be done before this new subtask.` (CLI: `--dependencies <ids>`)
|
||||||
* `status`: `Set the initial status for the new subtask. Default is 'pending'.` (CLI: `-s, --status <status>`)
|
* `status`: `Set the initial status for the new subtask. Default is 'pending'.` (CLI: `-s, --status <status>`)
|
||||||
* `generate`: `Enable Taskmaster to regenerate markdown task files after adding the subtask.` (CLI: `--generate`)
|
* `skipGenerate`: `Prevent Taskmaster from automatically regenerating markdown task files after adding the subtask.` (CLI: `--skip-generate`)
|
||||||
* `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>`)
|
||||||
* **Usage:** Break down tasks manually or reorganize existing tasks.
|
* **Usage:** Break down tasks manually or reorganize existing tasks.
|
||||||
@@ -286,7 +286,7 @@ This document provides a detailed reference for interacting with Taskmaster, cov
|
|||||||
* **Key Parameters/Options:**
|
* **Key Parameters/Options:**
|
||||||
* `id`: `Required. The ID(s) of the Taskmaster subtask(s) to remove, e.g., '15.2' or '16.1,16.3'.` (CLI: `-i, --id <id>`)
|
* `id`: `Required. The ID(s) of the Taskmaster subtask(s) to remove, e.g., '15.2' or '16.1,16.3'.` (CLI: `-i, --id <id>`)
|
||||||
* `convert`: `If used, Taskmaster will turn the subtask into a regular top-level task instead of deleting it.` (CLI: `-c, --convert`)
|
* `convert`: `If used, Taskmaster will turn the subtask into a regular top-level task instead of deleting it.` (CLI: `-c, --convert`)
|
||||||
* `generate`: `Enable Taskmaster to regenerate markdown task files after removing the subtask.` (CLI: `--generate`)
|
* `skipGenerate`: `Prevent Taskmaster from automatically regenerating markdown task files after removing the subtask.` (CLI: `--skip-generate`)
|
||||||
* `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>`)
|
||||||
* **Usage:** Delete unnecessary subtasks or promote a subtask to a top-level task.
|
* **Usage:** Delete unnecessary subtasks or promote a subtask to a top-level task.
|
||||||
|
|||||||
@@ -4,11 +4,9 @@ PERPLEXITY_API_KEY=YOUR_PERPLEXITY_KEY_HERE
|
|||||||
OPENAI_API_KEY=YOUR_OPENAI_KEY_HERE
|
OPENAI_API_KEY=YOUR_OPENAI_KEY_HERE
|
||||||
GOOGLE_API_KEY=YOUR_GOOGLE_KEY_HERE
|
GOOGLE_API_KEY=YOUR_GOOGLE_KEY_HERE
|
||||||
MISTRAL_API_KEY=YOUR_MISTRAL_KEY_HERE
|
MISTRAL_API_KEY=YOUR_MISTRAL_KEY_HERE
|
||||||
GROQ_API_KEY=YOUR_GROQ_KEY_HERE
|
|
||||||
OPENROUTER_API_KEY=YOUR_OPENROUTER_KEY_HERE
|
OPENROUTER_API_KEY=YOUR_OPENROUTER_KEY_HERE
|
||||||
XAI_API_KEY=YOUR_XAI_KEY_HERE
|
XAI_API_KEY=YOUR_XAI_KEY_HERE
|
||||||
AZURE_OPENAI_API_KEY=YOUR_AZURE_KEY_HERE
|
AZURE_OPENAI_API_KEY=YOUR_AZURE_KEY_HERE
|
||||||
OLLAMA_API_KEY=YOUR_OLLAMA_API_KEY_HERE
|
|
||||||
|
|
||||||
# Google Vertex AI Configuration
|
# Google Vertex AI Configuration
|
||||||
VERTEX_PROJECT_ID=your-gcp-project-id
|
VERTEX_PROJECT_ID=your-gcp-project-id
|
||||||
|
|||||||
45
.github/PULL_REQUEST_TEMPLATE.md
vendored
45
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,45 +0,0 @@
|
|||||||
# What type of PR is this?
|
|
||||||
<!-- Check one -->
|
|
||||||
|
|
||||||
- [ ] 🐛 Bug fix
|
|
||||||
- [ ] ✨ Feature
|
|
||||||
- [ ] 🔌 Integration
|
|
||||||
- [ ] 📝 Docs
|
|
||||||
- [ ] 🧹 Refactor
|
|
||||||
- [ ] Other:
|
|
||||||
## Description
|
|
||||||
<!-- What does this PR do? -->
|
|
||||||
|
|
||||||
## Related Issues
|
|
||||||
<!-- Link issues: Fixes #123 -->
|
|
||||||
|
|
||||||
## How to Test This
|
|
||||||
<!-- Quick steps to verify the changes work -->
|
|
||||||
```bash
|
|
||||||
# Example commands or steps
|
|
||||||
```
|
|
||||||
|
|
||||||
**Expected result:**
|
|
||||||
<!-- What should happen? -->
|
|
||||||
|
|
||||||
## Contributor Checklist
|
|
||||||
|
|
||||||
- [ ] Created changeset: `npm run changeset`
|
|
||||||
- [ ] Tests pass: `npm test`
|
|
||||||
- [ ] Format check passes: `npm run format-check` (or `npm run format` to fix)
|
|
||||||
- [ ] Addressed CodeRabbit comments (if any)
|
|
||||||
- [ ] Linked related issues (if any)
|
|
||||||
- [ ] Manually tested the changes
|
|
||||||
|
|
||||||
## Changelog Entry
|
|
||||||
<!-- One line describing the change for users -->
|
|
||||||
<!-- Example: "Added Kiro IDE integration with automatic task status updates" -->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### For Maintainers
|
|
||||||
|
|
||||||
- [ ] PR title follows conventional commits
|
|
||||||
- [ ] Target branch correct
|
|
||||||
- [ ] Labels added
|
|
||||||
- [ ] Milestone assigned (if applicable)
|
|
||||||
39
.github/PULL_REQUEST_TEMPLATE/bugfix.md
vendored
39
.github/PULL_REQUEST_TEMPLATE/bugfix.md
vendored
@@ -1,39 +0,0 @@
|
|||||||
## 🐛 Bug Fix
|
|
||||||
|
|
||||||
### 🔍 Bug Description
|
|
||||||
<!-- Describe the bug -->
|
|
||||||
|
|
||||||
### 🔗 Related Issues
|
|
||||||
<!-- Fixes #123 -->
|
|
||||||
|
|
||||||
### ✨ Solution
|
|
||||||
<!-- How does this PR fix the bug? -->
|
|
||||||
|
|
||||||
## How to Test
|
|
||||||
|
|
||||||
### Steps that caused the bug:
|
|
||||||
1.
|
|
||||||
2.
|
|
||||||
|
|
||||||
**Before fix:**
|
|
||||||
**After fix:**
|
|
||||||
|
|
||||||
### Quick verification:
|
|
||||||
```bash
|
|
||||||
# Commands to verify the fix
|
|
||||||
```
|
|
||||||
|
|
||||||
## Contributor Checklist
|
|
||||||
- [ ] Created changeset: `npm run changeset`
|
|
||||||
- [ ] Tests pass: `npm test`
|
|
||||||
- [ ] Format check passes: `npm run format-check`
|
|
||||||
- [ ] Addressed CodeRabbit comments
|
|
||||||
- [ ] Added unit tests (if applicable)
|
|
||||||
- [ ] Manually verified the fix works
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### For Maintainers
|
|
||||||
- [ ] Root cause identified
|
|
||||||
- [ ] Fix doesn't introduce new issues
|
|
||||||
- [ ] CI passes
|
|
||||||
11
.github/PULL_REQUEST_TEMPLATE/config.yml
vendored
11
.github/PULL_REQUEST_TEMPLATE/config.yml
vendored
@@ -1,11 +0,0 @@
|
|||||||
blank_issues_enabled: false
|
|
||||||
contact_links:
|
|
||||||
- name: 🐛 Bug Fix
|
|
||||||
url: https://github.com/eyaltoledano/claude-task-master/compare/next...HEAD?template=bugfix.md
|
|
||||||
about: Fix a bug in Task Master
|
|
||||||
- name: ✨ New Feature
|
|
||||||
url: https://github.com/eyaltoledano/claude-task-master/compare/next...HEAD?template=feature.md
|
|
||||||
about: Add a new feature to Task Master
|
|
||||||
- name: 🔌 New Integration
|
|
||||||
url: https://github.com/eyaltoledano/claude-task-master/compare/next...HEAD?template=integration.md
|
|
||||||
about: Add support for a new tool, IDE, or platform
|
|
||||||
49
.github/PULL_REQUEST_TEMPLATE/feature.md
vendored
49
.github/PULL_REQUEST_TEMPLATE/feature.md
vendored
@@ -1,49 +0,0 @@
|
|||||||
## ✨ New Feature
|
|
||||||
|
|
||||||
### 📋 Feature Description
|
|
||||||
<!-- Brief description -->
|
|
||||||
|
|
||||||
### 🎯 Problem Statement
|
|
||||||
<!-- What problem does this feature solve? Why is it needed? -->
|
|
||||||
|
|
||||||
### 💡 Solution
|
|
||||||
<!-- How does this feature solve the problem? What's the approach? -->
|
|
||||||
|
|
||||||
### 🔗 Related Issues
|
|
||||||
<!-- Link related issues: Fixes #123, Part of #456 -->
|
|
||||||
|
|
||||||
## How to Use It
|
|
||||||
|
|
||||||
### Quick Start
|
|
||||||
```bash
|
|
||||||
# Basic usage example
|
|
||||||
```
|
|
||||||
|
|
||||||
### Example
|
|
||||||
<!-- Show a real use case -->
|
|
||||||
```bash
|
|
||||||
# Practical example
|
|
||||||
```
|
|
||||||
|
|
||||||
**What you should see:**
|
|
||||||
<!-- Expected behavior -->
|
|
||||||
|
|
||||||
## Contributor Checklist
|
|
||||||
- [ ] Created changeset: `npm run changeset`
|
|
||||||
- [ ] Tests pass: `npm test`
|
|
||||||
- [ ] Format check passes: `npm run format-check`
|
|
||||||
- [ ] Addressed CodeRabbit comments
|
|
||||||
- [ ] Added tests for new functionality
|
|
||||||
- [ ] Manually tested in CLI mode
|
|
||||||
- [ ] Manually tested in MCP mode (if applicable)
|
|
||||||
|
|
||||||
## Changelog Entry
|
|
||||||
<!-- One-liner for release notes -->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### For Maintainers
|
|
||||||
|
|
||||||
- [ ] Feature aligns with project vision
|
|
||||||
- [ ] CIs pass
|
|
||||||
- [ ] Changeset file exists
|
|
||||||
53
.github/PULL_REQUEST_TEMPLATE/integration.md
vendored
53
.github/PULL_REQUEST_TEMPLATE/integration.md
vendored
@@ -1,53 +0,0 @@
|
|||||||
# 🔌 New Integration
|
|
||||||
|
|
||||||
## What tool/IDE is being integrated?
|
|
||||||
|
|
||||||
<!-- Name and brief description -->
|
|
||||||
|
|
||||||
## What can users do with it?
|
|
||||||
|
|
||||||
<!-- Key benefits -->
|
|
||||||
|
|
||||||
## How to Enable
|
|
||||||
|
|
||||||
### Setup
|
|
||||||
|
|
||||||
```bash
|
|
||||||
task-master rules add [name]
|
|
||||||
# Any other setup steps
|
|
||||||
```
|
|
||||||
|
|
||||||
### Example Usage
|
|
||||||
|
|
||||||
<!-- Show it in action -->
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Real example
|
|
||||||
```
|
|
||||||
|
|
||||||
### Natural Language Hooks (if applicable)
|
|
||||||
|
|
||||||
```
|
|
||||||
"When tests pass, mark task as done"
|
|
||||||
# Other examples
|
|
||||||
```
|
|
||||||
|
|
||||||
## Contributor Checklist
|
|
||||||
|
|
||||||
- [ ] Created changeset: `npm run changeset`
|
|
||||||
- [ ] Tests pass: `npm test`
|
|
||||||
- [ ] Format check passes: `npm run format-check`
|
|
||||||
- [ ] Addressed CodeRabbit comments
|
|
||||||
- [ ] Integration fully tested with target tool/IDE
|
|
||||||
- [ ] Error scenarios tested
|
|
||||||
- [ ] Added integration tests
|
|
||||||
- [ ] Documentation includes setup guide
|
|
||||||
- [ ] Examples are working and clear
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## For Maintainers
|
|
||||||
|
|
||||||
- [ ] Integration stability verified
|
|
||||||
- [ ] Documentation comprehensive
|
|
||||||
- [ ] Examples working
|
|
||||||
203
.github/workflows/extension-ci.yml
vendored
203
.github/workflows/extension-ci.yml
vendored
@@ -1,203 +0,0 @@
|
|||||||
name: Extension CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- next
|
|
||||||
paths:
|
|
||||||
- 'apps/extension/**'
|
|
||||||
- '.github/workflows/extension-ci.yml'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- next
|
|
||||||
paths:
|
|
||||||
- 'apps/extension/**'
|
|
||||||
- '.github/workflows/extension-ci.yml'
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
setup:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
cache-key: ${{ steps.cache-key.outputs.key }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: latest
|
|
||||||
|
|
||||||
- name: Generate cache key
|
|
||||||
id: cache-key
|
|
||||||
run: echo "key=${{ runner.os }}-extension-pnpm-${{ hashFiles('apps/extension/pnpm-lock.yaml') }}" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: Cache pnpm dependencies
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.pnpm-store
|
|
||||||
apps/extension/node_modules
|
|
||||||
key: ${{ steps.cache-key.outputs.key }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-extension-pnpm-
|
|
||||||
|
|
||||||
- name: Install Extension Dependencies
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm install --frozen-lockfile
|
|
||||||
timeout-minutes: 5
|
|
||||||
|
|
||||||
lint-and-typecheck:
|
|
||||||
needs: setup
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: latest
|
|
||||||
|
|
||||||
- name: Restore pnpm dependencies
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.pnpm-store
|
|
||||||
apps/extension/node_modules
|
|
||||||
key: ${{ needs.setup.outputs.cache-key }}
|
|
||||||
|
|
||||||
- name: Install if cache miss
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm install --frozen-lockfile --prefer-offline
|
|
||||||
timeout-minutes: 3
|
|
||||||
|
|
||||||
- name: Lint Extension
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm run lint
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Type Check Extension
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm run check-types
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
build:
|
|
||||||
needs: setup
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: latest
|
|
||||||
|
|
||||||
- name: Restore pnpm dependencies
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.pnpm-store
|
|
||||||
apps/extension/node_modules
|
|
||||||
key: ${{ needs.setup.outputs.cache-key }}
|
|
||||||
|
|
||||||
- name: Install if cache miss
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm install --frozen-lockfile --prefer-offline
|
|
||||||
timeout-minutes: 3
|
|
||||||
|
|
||||||
- name: Build Extension
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm run build
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Package Extension
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm run package
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Verify Package Contents
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: |
|
|
||||||
echo "Checking vsix-build contents..."
|
|
||||||
ls -la vsix-build/
|
|
||||||
echo "Checking dist contents..."
|
|
||||||
ls -la vsix-build/dist/
|
|
||||||
echo "Checking package.json exists..."
|
|
||||||
test -f vsix-build/package.json
|
|
||||||
|
|
||||||
- name: Create VSIX Package (Test)
|
|
||||||
working-directory: apps/extension/vsix-build
|
|
||||||
run: pnpm exec vsce package --no-dependencies
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Upload Extension Artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: extension-package
|
|
||||||
path: |
|
|
||||||
apps/extension/vsix-build/*.vsix
|
|
||||||
apps/extension/dist/
|
|
||||||
retention-days: 30
|
|
||||||
|
|
||||||
test:
|
|
||||||
needs: setup
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: latest
|
|
||||||
|
|
||||||
- name: Restore pnpm dependencies
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.pnpm-store
|
|
||||||
apps/extension/node_modules
|
|
||||||
key: ${{ needs.setup.outputs.cache-key }}
|
|
||||||
|
|
||||||
- name: Install if cache miss
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm install --frozen-lockfile --prefer-offline
|
|
||||||
timeout-minutes: 3
|
|
||||||
|
|
||||||
- name: Run Extension Tests
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: xvfb-run -a pnpm run test
|
|
||||||
env:
|
|
||||||
CI: true
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
timeout-minutes: 10
|
|
||||||
|
|
||||||
- name: Upload Test Results
|
|
||||||
if: always()
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: extension-test-results
|
|
||||||
path: apps/extension/test-results
|
|
||||||
retention-days: 30
|
|
||||||
240
.github/workflows/extension-release.yml
vendored
240
.github/workflows/extension-release.yml
vendored
@@ -1,240 +0,0 @@
|
|||||||
name: Extension Release
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- 'apps/extension/**'
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
force_publish:
|
|
||||||
description: 'Force publish even without version changes'
|
|
||||||
required: false
|
|
||||||
default: false
|
|
||||||
type: boolean
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
concurrency: extension-release-${{ github.ref }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-version:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
outputs:
|
|
||||||
should-publish: ${{ steps.version-check.outputs.should-publish }}
|
|
||||||
current-version: ${{ steps.version-check.outputs.current-version }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Check version changes
|
|
||||||
id: version-check
|
|
||||||
run: |
|
|
||||||
# Get current version from package.json
|
|
||||||
CURRENT_VERSION=$(jq -r '.version' apps/extension/package.json)
|
|
||||||
echo "current-version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
# Check if this is a force publish
|
|
||||||
if [ "${{ github.event.inputs.force_publish }}" = "true" ]; then
|
|
||||||
echo "should-publish=true" >> $GITHUB_OUTPUT
|
|
||||||
echo "Force publish requested"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if version changed in the last commit
|
|
||||||
if git diff HEAD~1 HEAD --name-only | grep -q "apps/extension/package.json\|apps/extension/package.publish.json"; then
|
|
||||||
# Check if version field actually changed
|
|
||||||
PREV_VERSION=$(git show HEAD~1:apps/extension/package.json | jq -r '.version')
|
|
||||||
if [ "$CURRENT_VERSION" != "$PREV_VERSION" ]; then
|
|
||||||
echo "should-publish=true" >> $GITHUB_OUTPUT
|
|
||||||
echo "Version changed from $PREV_VERSION to $CURRENT_VERSION"
|
|
||||||
else
|
|
||||||
echo "should-publish=false" >> $GITHUB_OUTPUT
|
|
||||||
echo "No version change detected"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "should-publish=false" >> $GITHUB_OUTPUT
|
|
||||||
echo "No package.json changes detected"
|
|
||||||
fi
|
|
||||||
|
|
||||||
build-and-publish:
|
|
||||||
needs: check-version
|
|
||||||
if: needs.check-version.outputs.should-publish == 'true'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
environment: extension-release
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: latest
|
|
||||||
|
|
||||||
- name: Cache pnpm dependencies
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.pnpm-store
|
|
||||||
apps/extension/node_modules
|
|
||||||
key: ${{ runner.os }}-extension-pnpm-${{ hashFiles('apps/extension/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-extension-pnpm-
|
|
||||||
|
|
||||||
- name: Install Extension Dependencies
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm install --frozen-lockfile
|
|
||||||
timeout-minutes: 5
|
|
||||||
|
|
||||||
- name: Run Tests
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: xvfb-run -a pnpm run test
|
|
||||||
env:
|
|
||||||
CI: true
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
timeout-minutes: 10
|
|
||||||
|
|
||||||
- name: Lint Extension
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm run lint
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Type Check Extension
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm run check-types
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Build Extension
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm run build
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Package Extension
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm run package
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Verify Package Structure
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: |
|
|
||||||
echo "=== Checking vsix-build structure ==="
|
|
||||||
ls -la vsix-build/
|
|
||||||
echo "=== Checking dist contents ==="
|
|
||||||
ls -la vsix-build/dist/
|
|
||||||
echo "=== Verifying required files ==="
|
|
||||||
test -f vsix-build/package.json || (echo "Missing package.json" && exit 1)
|
|
||||||
test -f vsix-build/dist/extension.js || (echo "Missing extension.js" && exit 1)
|
|
||||||
echo "=== Checking package.json content ==="
|
|
||||||
cat vsix-build/package.json | jq '.name, .version, .publisher'
|
|
||||||
|
|
||||||
- name: Create VSIX Package
|
|
||||||
working-directory: apps/extension/vsix-build
|
|
||||||
run: pnpm exec vsce package --no-dependencies
|
|
||||||
env:
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Get VSIX filename
|
|
||||||
id: vsix-info
|
|
||||||
working-directory: apps/extension/vsix-build
|
|
||||||
run: |
|
|
||||||
VSIX_FILE=$(ls *.vsix)
|
|
||||||
echo "vsix-filename=$VSIX_FILE" >> $GITHUB_OUTPUT
|
|
||||||
echo "Found VSIX: $VSIX_FILE"
|
|
||||||
|
|
||||||
- name: Validate VSIX Package
|
|
||||||
working-directory: apps/extension/vsix-build
|
|
||||||
run: |
|
|
||||||
echo "=== VSIX Package Contents ==="
|
|
||||||
unzip -l "${{ steps.vsix-info.outputs.vsix-filename }}"
|
|
||||||
|
|
||||||
- name: Publish to VS Code Marketplace
|
|
||||||
working-directory: apps/extension/vsix-build
|
|
||||||
run: pnpm exec vsce publish --packagePath "${{ steps.vsix-info.outputs.vsix-filename }}"
|
|
||||||
env:
|
|
||||||
VSCE_PAT: ${{ secrets.VSCE_PAT }}
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Install Open VSX CLI
|
|
||||||
run: npm install -g ovsx
|
|
||||||
|
|
||||||
- name: Publish to Open VSX Registry
|
|
||||||
working-directory: apps/extension/vsix-build
|
|
||||||
run: ovsx publish "${{ steps.vsix-info.outputs.vsix-filename }}"
|
|
||||||
env:
|
|
||||||
OVSX_PAT: ${{ secrets.OVSX_PAT }}
|
|
||||||
FORCE_COLOR: 1
|
|
||||||
|
|
||||||
- name: Create GitHub Release
|
|
||||||
uses: actions/create-release@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
tag_name: extension-v${{ needs.check-version.outputs.current-version }}
|
|
||||||
release_name: Extension v${{ needs.check-version.outputs.current-version }}
|
|
||||||
body: |
|
|
||||||
VS Code Extension Release v${{ needs.check-version.outputs.current-version }}
|
|
||||||
|
|
||||||
**Changes in this release:**
|
|
||||||
- Published to VS Code Marketplace
|
|
||||||
- Published to Open VSX Registry
|
|
||||||
- Extension package: `${{ steps.vsix-info.outputs.vsix-filename }}`
|
|
||||||
|
|
||||||
**Installation:**
|
|
||||||
- Install from VS Code Marketplace: [Task Master Kanban](https://marketplace.visualstudio.com/items?itemName=[TBD])
|
|
||||||
- Install from Open VSX Registry: [Task Master Kanban](https://open-vsx.org/extension/[TBD])
|
|
||||||
- Or download the VSIX file below and install manually
|
|
||||||
draft: false
|
|
||||||
prerelease: false
|
|
||||||
|
|
||||||
- name: Upload VSIX to Release
|
|
||||||
uses: actions/upload-release-asset@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
||||||
asset_path: apps/extension/vsix-build/${{ steps.vsix-info.outputs.vsix-filename }}
|
|
||||||
asset_name: ${{ steps.vsix-info.outputs.vsix-filename }}
|
|
||||||
asset_content_type: application/zip
|
|
||||||
|
|
||||||
- name: Upload Build Artifacts
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: extension-release-v${{ needs.check-version.outputs.current-version }}
|
|
||||||
path: |
|
|
||||||
apps/extension/vsix-build/*.vsix
|
|
||||||
apps/extension/dist/
|
|
||||||
retention-days: 90
|
|
||||||
|
|
||||||
notify-success:
|
|
||||||
needs: [check-version, build-and-publish]
|
|
||||||
if: success() && needs.check-version.outputs.should-publish == 'true'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Success Notification
|
|
||||||
run: |
|
|
||||||
echo "🎉 Extension v${{ needs.check-version.outputs.current-version }} successfully published!"
|
|
||||||
echo "📦 Available on VS Code Marketplace"
|
|
||||||
echo "🌍 Available on Open VSX Registry"
|
|
||||||
echo "🏷️ GitHub release created: extension-v${{ needs.check-version.outputs.current-version }}"
|
|
||||||
|
|
||||||
notify-skipped:
|
|
||||||
needs: check-version
|
|
||||||
if: needs.check-version.outputs.should-publish == 'false'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Skip Notification
|
|
||||||
run: |
|
|
||||||
echo "ℹ️ Extension publish skipped - no version changes detected"
|
|
||||||
echo "Current version: ${{ needs.check-version.outputs.current-version }}"
|
|
||||||
echo "To force publish, use workflow_dispatch with force_publish=true"
|
|
||||||
16
.github/workflows/pre-release.yml
vendored
16
.github/workflows/pre-release.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
|||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 20
|
node-version: 20
|
||||||
cache: "npm"
|
cache: 'npm'
|
||||||
|
|
||||||
- name: Cache node_modules
|
- name: Cache node_modules
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
@@ -32,13 +32,10 @@ jobs:
|
|||||||
run: npm ci
|
run: npm ci
|
||||||
timeout-minutes: 2
|
timeout-minutes: 2
|
||||||
|
|
||||||
- name: Enter RC mode (if not already in RC mode)
|
- name: Enter RC mode
|
||||||
run: |
|
run: |
|
||||||
# ensure we’re in the right pre-mode (tag "rc")
|
npx changeset pre exit || true
|
||||||
if [ ! -f .changeset/pre.json ] \
|
npx changeset pre enter rc
|
||||||
|| [ "$(jq -r '.tag' .changeset/pre.json 2>/dev/null || echo '')" != "rc" ]; then
|
|
||||||
npx changeset pre enter rc
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Version RC packages
|
- name: Version RC packages
|
||||||
run: npx changeset version
|
run: npx changeset version
|
||||||
@@ -54,9 +51,12 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
|
||||||
|
- name: Exit RC mode
|
||||||
|
run: npx changeset pre exit
|
||||||
|
|
||||||
- name: Commit & Push changes
|
- name: Commit & Push changes
|
||||||
uses: actions-js/push@master
|
uses: actions-js/push@master
|
||||||
with:
|
with:
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
branch: ${{ github.ref }}
|
branch: ${{ github.ref }}
|
||||||
message: "chore: rc version bump"
|
message: 'chore: rc version bump'
|
||||||
|
|||||||
69
.github/workflows/version.yml
vendored
69
.github/workflows/version.yml
vendored
@@ -1,69 +0,0 @@
|
|||||||
name: Version & Publish
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
version:
|
|
||||||
name: Version & Publish Extension
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
# This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
registry-url: https://registry.npmjs.org
|
|
||||||
|
|
||||||
- name: Setup pnpm
|
|
||||||
uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: latest
|
|
||||||
|
|
||||||
- name: Get pnpm store directory
|
|
||||||
shell: bash
|
|
||||||
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Setup pnpm cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: ${{ env.STORE_PATH }}
|
|
||||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-pnpm-store-
|
|
||||||
|
|
||||||
- name: Install root dependencies
|
|
||||||
run: pnpm install --frozen-lockfile
|
|
||||||
|
|
||||||
- name: Install extension dependencies
|
|
||||||
working-directory: apps/extension
|
|
||||||
run: pnpm install --frozen-lockfile
|
|
||||||
|
|
||||||
- name: Install vsce and ovsx globally
|
|
||||||
run: pnpm add -g @vscode/vsce ovsx
|
|
||||||
|
|
||||||
- name: Make release script executable
|
|
||||||
run: chmod +x scripts/release.sh
|
|
||||||
|
|
||||||
- name: Create Release Pull Request or Publish
|
|
||||||
uses: changesets/action@v1
|
|
||||||
with:
|
|
||||||
publish: ./scripts/release.sh
|
|
||||||
title: "Release: Extension Version Packages"
|
|
||||||
commit: "chore: release extension packages"
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
||||||
VSCE_PAT: ${{ secrets.VSCE_PAT }}
|
|
||||||
OVSX_PAT: ${{ secrets.OVSX_PAT }}
|
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -87,6 +87,3 @@ dev-debug.log
|
|||||||
*.njsproj
|
*.njsproj
|
||||||
*.sln
|
*.sln
|
||||||
*.sw?
|
*.sw?
|
||||||
|
|
||||||
# apps/extension
|
|
||||||
apps/extension/vsix-build/
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"name": "[TM] Code Change Task Tracker",
|
|
||||||
"description": "Track implementation progress by monitoring code changes",
|
|
||||||
"version": "1",
|
|
||||||
"when": {
|
|
||||||
"type": "fileEdited",
|
|
||||||
"patterns": [
|
|
||||||
"**/*.{js,ts,jsx,tsx,py,go,rs,java,cpp,c,h,hpp,cs,rb,php,swift,kt,scala,clj}",
|
|
||||||
"!**/node_modules/**",
|
|
||||||
"!**/vendor/**",
|
|
||||||
"!**/.git/**",
|
|
||||||
"!**/build/**",
|
|
||||||
"!**/dist/**",
|
|
||||||
"!**/target/**",
|
|
||||||
"!**/__pycache__/**"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"then": {
|
|
||||||
"type": "askAgent",
|
|
||||||
"prompt": "I just saved a source code file. Please:\n\n1. Check what task is currently 'in-progress' using 'tm list --status=in-progress'\n2. Look at the file I saved and summarize what was changed (considering the programming language and context)\n3. Update the task's notes with: 'tm update-subtask --id=<task_id> --prompt=\"Implemented: <summary_of_changes> in <file_path>\"'\n4. If the changes seem to complete the task based on its description, ask if I want to mark it as done"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"enabled": false,
|
|
||||||
"name": "[TM] Complexity Analyzer",
|
|
||||||
"description": "Analyze task complexity when new tasks are added",
|
|
||||||
"version": "1",
|
|
||||||
"when": {
|
|
||||||
"type": "fileEdited",
|
|
||||||
"patterns": [
|
|
||||||
".taskmaster/tasks/tasks.json"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"then": {
|
|
||||||
"type": "askAgent",
|
|
||||||
"prompt": "New tasks were added to tasks.json. For each new task:\n\n1. Run 'tm analyze-complexity --id=<task_id>'\n2. If complexity score is > 7, automatically expand it: 'tm expand --id=<task_id> --num=5'\n3. Show the complexity analysis results\n4. Suggest task dependencies based on the expanded subtasks"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"name": "[TM] Daily Standup Assistant",
|
|
||||||
"description": "Morning workflow summary and task selection",
|
|
||||||
"version": "1",
|
|
||||||
"when": {
|
|
||||||
"type": "userTriggered"
|
|
||||||
},
|
|
||||||
"then": {
|
|
||||||
"type": "askAgent",
|
|
||||||
"prompt": "Good morning! Please provide my daily standup summary:\n\n1. Run 'tm list --status=done' and show tasks completed in the last 24 hours\n2. Run 'tm list --status=in-progress' to show current work\n3. Run 'tm next' to suggest the highest priority task to start\n4. Show the dependency graph for upcoming work\n5. Ask which task I'd like to focus on today"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"name": "[TM] Git Commit Task Linker",
|
|
||||||
"description": "Link commits to tasks for traceability",
|
|
||||||
"version": "1",
|
|
||||||
"when": {
|
|
||||||
"type": "manual"
|
|
||||||
},
|
|
||||||
"then": {
|
|
||||||
"type": "askAgent",
|
|
||||||
"prompt": "I'm about to commit code. Please:\n\n1. Run 'git diff --staged' to see what's being committed\n2. Analyze the changes and suggest which tasks they relate to\n3. Generate a commit message in format: 'feat(task-<id>): <description>'\n4. Update the relevant tasks with a note about this commit\n5. Show the proposed commit message for approval"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"name": "[TM] PR Readiness Checker",
|
|
||||||
"description": "Validate tasks before creating a pull request",
|
|
||||||
"version": "1",
|
|
||||||
"when": {
|
|
||||||
"type": "manual"
|
|
||||||
},
|
|
||||||
"then": {
|
|
||||||
"type": "askAgent",
|
|
||||||
"prompt": "I'm about to create a PR. Please:\n\n1. List all tasks marked as 'done' in this branch\n2. For each done task, verify:\n - All subtasks are also done\n - Test files exist for new functionality\n - No TODO comments remain related to the task\n3. Generate a PR description listing completed tasks\n4. Suggest a PR title based on the main tasks completed"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user