Release 0.26.0#1164
Conversation
* feat: add support for claude code context - code context for: - add-task - update-subtask - update-task - update * feat: fix CI and format + refactor * chore: format * chore: fix broken tests * chore: fix test
#1135) * docs: Auto-update and format models.md * docs(ui,cli): remove --force from cross-tag move guidance; recommend --with-dependencies/--ignore-dependencies - scripts/modules/ui.js: drop force tip in conflict resolution - scripts/modules/commands.js: remove force examples from move help - docs/cross-tag-task-movement.md: purge force mentions; add explicit with/ignore examples * test(move): update cross-tag move tests to drop --force; assert with/ignore deps behavior and current-tag fallback - CLI integration: remove force expectations, keep with/ignore, current-tag fallback - Integration: remove force-path test - Unit: add scoped traversal test, adjust fixtures to avoid id collision * fix(move): scope dependency traversal to source tag; tag-aware ignore-dependencies filtering - resolveDependencies: traverse only sourceTag tasks to avoid cross-tag contamination - filter dependent IDs to those present in source tag, numeric only - ignore-dependencies: drop deps pointing to tasks from sourceTag; keep targetTag deps * test(mcp): ensure cross-tag move passes only with/ignore options and returns conflict suggestions - new test: tests/unit/mcp/tools/move-task-cross-tag-options.test.js * feat(move): add advisory tips when ignoring cross-tag dependencies; add integration test case * feat(cli/move): improve ID collision UX for cross-tag moves\n\n- Print Next Steps tips when core returns them (e.g., after ignore-dependencies)\n- Add dedicated help block when an ID already exists in target tag * feat(move/mcp): improve ID collision UX and suggestions\n\n- Core: include suggestions on TASK_ALREADY_EXISTS errors\n- MCP: map ID collision to TASK_ALREADY_EXISTS with suggestions\n- Tests: add MCP unit test for ID collision suggestions * test(move/cli): print tips on ignore-dependencies results; print ID collision suggestions\n\n- CLI integration test: assert Next Steps tips printed when result.tips present\n- Integration test: assert TASK_ALREADY_EXISTS error includes suggestions payload * chore(changeset): add changeset for cross-tag move UX improvements (CLI/MCP/core/tests) * Add cross-tag task movement help and validation improvements - Introduced a detailed help command for cross-tag task movement, enhancing user guidance on usage and options. - Updated validation logic in `validateCrossTagMove` to include checks for indirect dependencies, improving accuracy in conflict detection. - Refactored tests to ensure comprehensive coverage of new validation scenarios and error handling. - Cleaned up documentation to reflect the latest changes in task movement functionality. * refactor(commands): remove redundant tips printing after move operation - Eliminated duplicate printing of tips for next steps after the move operation, streamlining the output for users. - This change enhances clarity by ensuring tips are only displayed when relevant, improving overall user experience. * docs(move): clarify "force move" options and improve examples - Updated documentation to replace the deprecated "force move" concept with clear alternatives: `--with-dependencies` and `--ignore-dependencies`. - Enhanced Scenario 3 with explicit options and improved inline comments for better readability. - Removed confusing commented code in favor of a straightforward note in the Force Move section. * chore: run formatter * Update .changeset/clarify-force-move-docs.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update docs/cross-tag-task-movement.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update tests/unit/scripts/modules/task-manager/move-task-cross-tag.test.js Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * test(move): add test for dependency traversal scoping with --with-dependencies option - Introduced a new test to ensure that the dependency traversal is limited to tasks from the source tag when using the --with-dependencies option, addressing potential ID collisions across tags. * test(move): enhance tips validation in cross-tag task movement integration test --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* feat: add support for claude code context - code context for: - add-task - update-subtask - update-task - update * feat: fix CI and format + refactor * chore: format * chore: fix test * feat: add gemini-cli support for codebase context * feat: add google cli integration and fix tests * chore: apply requested coderabbit changes * chore: bump gemini cli package
🦋 Changeset detectedLatest commit: a7ad4c8 The changes in this PR will be included in the next version bump. Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
WalkthroughAdds a configurable codebase-analysis capability and threads it through AI prompt flows; deprecates cross‑tag Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor User
participant CLI
participant MoveCore as move-task.js
participant Store as TaskStore
participant MCP as mcp-server
User->>CLI: task-master move --from backlog --to in-progress 1 --with-dependencies
CLI->>MoveCore: moveTasksBetweenTags(src,tgt,ids,{withDependencies:true})
MoveCore->>Store: Load tasks for source tag
MoveCore->>MoveCore: Resolve dependencies scoped to source tag
MoveCore->>Store: Check target tag for ID conflicts
alt Conflict: ID exists in target
MoveCore-->>CLI: throw { code: TASK_ALREADY_EXISTS, data:{ suggestions:[...] } }
CLI-->>User: Conflict + actionable suggestions
else No conflict
MoveCore->>Store: Write moved tasks
alt Dependencies ignored
MoveCore-->>CLI: Result { tips:[...] }
CLI-->>User: "Next Steps" tips
else
MoveCore-->>CLI: Success
end
end
Note over MCP,MoveCore: MCP maps collisions to TASK_ALREADY_EXISTS and adds suggestions
sequenceDiagram
autonumber
actor User
participant CLI
participant TM as TaskManagerModule
participant Cfg as config-manager.js
participant Prompts as Prompt Templates
User->>CLI: run add-task/update-task/update-subtask/parse-prd/expand-task
CLI->>TM: invoke handler
TM->>Cfg: hasCodebaseAnalysis(useResearch, projectRoot, session)
Cfg-->>TM: boolean
TM->>Prompts: Build params { hasCodebaseAnalysis, projectRoot, ... }
Prompts-->>TM: Template (includes codebase-analysis block when true)
TM-->>User: AI-run with contextual codebase-analysis guidance (when enabled)
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Pre-merge checks (1 passed, 1 warning, 1 inconclusive)❌ Failed Checks (1 warning, 1 inconclusive)
✅ Passed Checks (1 passed)
✨ Finishing Touches🧪 Generate unit tests
Comment |
There was a problem hiding this comment.
Actionable comments posted: 35
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (24)
package.json (2)
13-27: Add missing test scripts to match repo standards.Per guidelines, include test:unit, test:integration, and test:ci scripts.
Apply:
"scripts": { "test": "node --experimental-vm-modules node_modules/.bin/jest", "test:fails": "node --experimental-vm-modules node_modules/.bin/jest --onlyFailures", "test:watch": "node --experimental-vm-modules node_modules/.bin/jest --watch", "test:coverage": "node --experimental-vm-modules node_modules/.bin/jest --coverage", + "test:unit": "node --experimental-vm-modules node_modules/.bin/jest --selectProjects unit", + "test:integration": "node --experimental-vm-modules node_modules/.bin/jest --selectProjects integration", "test:e2e": "./tests/e2e/run_e2e.sh", "test:e2e-report": "./tests/e2e/run_e2e.sh --analyze-log", + "test:ci": "node --experimental-vm-modules node_modules/.bin/jest --ci", "prepare": "chmod +x bin/task-master.js mcp-server/server.js", "changeset": "changeset", "release": "changeset publish",
3-3: Bump package.json version to 0.26.0 before merge.- "version": "0.25.0", + "version": "0.26.0",mcp-server/src/core/direct-functions/move-task-cross-tag.js (6)
97-133: Preserve prior silent-mode state to avoid side effects.Toggle only if not already silent; always restore to original state.
Apply:
- // Enable silent mode to prevent console output during MCP operation - enableSilentMode(); + // Enable silent mode to prevent console output during MCP operation + const wasSilent = isSilentMode?.() ?? false; + if (!wasSilent) enableSilentMode(); ... - // Restore console output - always executed regardless of success or error - disableSilentMode(); + // Restore console output - always executed regardless of success or error + if (!wasSilent) disableSilentMode();And import isSilentMode:
-import { - enableSilentMode, - disableSilentMode -} from '../../../../scripts/modules/utils.js'; +import { enableSilentMode, disableSilentMode, isSilentMode, logWrapper } from '../../../../scripts/modules/utils.js';
110-118: Pass logger wrapper and MCP context to core call; set outputType/outputFormat.Direct wrappers must pass mcpLog via options and include commandName/outputType in context.
Apply:
- // Prepare move options - const moveOptions = { - withDependencies: args.withDependencies || false, - ignoreDependencies: args.ignoreDependencies || false - }; + // Prepare move options and logger + const withDependencies = + args.withDependencies === true || args.withDependencies === 'true'; + const ignoreDependencies = + args.ignoreDependencies === true || args.ignoreDependencies === 'true'; + const moveOptions = { + withDependencies, + ignoreDependencies, + mcpLog: logWrapper(log), + }; ... - { projectRoot } + { projectRoot, commandName: 'move-task-cross-tag', outputType: 'mcp', outputFormat: 'json' }
100-108: Mutually exclusive options check.--with-dependencies and --ignore-dependencies should not be used together.
Apply:
// Parse source IDs const sourceIds = args.sourceIds.split(',').map((id) => id.trim()); - // Prepare move options + // Prepare move options const moveOptions = { withDependencies: args.withDependencies || false, ignoreDependencies: args.ignoreDependencies || false }; + + if (moveOptions.withDependencies && moveOptions.ignoreDependencies) { + return { + success: false, + error: { + message: + 'Options --with-dependencies and --ignore-dependencies are mutually exclusive', + code: 'INPUT_VALIDATION_ERROR', + }, + }; + }
101-103: Validate parsed IDs are non-empty.Prevent empty IDs from slipping through.
Apply:
- const sourceIds = args.sourceIds.split(',').map((id) => id.trim()); + const sourceIds = args.sourceIds + .split(',') + .map((id) => id.trim()) + .filter(Boolean); + if (sourceIds.length === 0) { + return { + success: false, + error: { message: 'No valid source IDs provided', code: 'INPUT_VALIDATION_ERROR' }, + }; + }
28-30: Remove unused variable.context.session is never used.
Apply:
-export async function moveTaskCrossTagDirect(args, log, context = {}) { - const { session } = context; - const { projectRoot } = args; +export async function moveTaskCrossTagDirect(args, log, context = {}) { + const { projectRoot } = args;
134-205: Optional: Add a top-level error category while keeping domain codes.To align with standard categories without breaking tests expecting TASK_* codes, add category: 'CORE_FUNCTION_ERROR' (or INPUT_VALIDATION_ERROR) alongside existing code.
Apply pattern in returns:
return { success: false, error: { message: error.message, - code: errorCode, + code: errorCode, + category: 'CORE_FUNCTION_ERROR', suggestions } };And for parameter validation returns, set category: 'INPUT_VALIDATION_ERROR'.
.changeset/curvy-moons-dig.md (1)
5-10: Use a single-line, user-facing changeset summary and fix typos.Changesets should be one concise, imperative line. Current text is multi-paragraph, has a typo (“udpate-task”), and mixes provider wording.
Apply:
-Enhanced Gemini CLI provider with codebase-aware task generation - -Added automatic codebase analysis for Gemini CLI provider in parse-prd, and analyze-complexity, add-task, udpate-task, update, update-subtask commands -When using Gemini CLI as the AI provider, Task Master now instructs the AI to analyze the project structure, existing implementations, and patterns before generating tasks or subtasks -Tasks and subtasks generated by Claude Code are now informed by actual codebase analysis, resulting in more accurate and contextual outputs +Enable codebase-aware task generation when using Gemini CLI; propagate hasCodebaseAnalysis and projectRoot to prompts and task flows.scripts/modules/task-manager/update-tasks.js (1)
575-578: Bug: getDebugFlag expects explicitRoot, not session.Passing the session object can break config loading on errors. Use projectRoot.
- if (getDebugFlag(session)) { + if (getDebugFlag(projectRoot)) { console.error(error); }src/prompts/add-task.json (1)
26-33: Standardize gatheredContext gatingIn this prompt, gatheredContext is interpolated without a guard, unlike other prompts that use {{#if gatheredContext}}. Standardize to avoid rendering “undefined” with different engines.
- {{gatheredContext}} + {{#if gatheredContext}}{{gatheredContext}}{{/if}}Also applies to: 65-65
src/prompts/analyze-complexity.json (1)
39-43: Wrap Project Root with guard
In src/prompts/analyze-complexity.json:48, change- Project Root: {{projectRoot}} + {{#if projectRoot}}Project Root: {{projectRoot}}{{/if}}(No occurrences of isClaudeCode found.)
docs/cross-tag-task-movement.md (2)
133-166: Add a short Migration note per docs guidelinesDocument how to migrate from --force to the two explicit flags, with one-liners.
## Best Practices +### Migration from --force (since 0.26.0) +The --force flag has been removed. Use: +- Keep relationships: add --with-dependencies +- Break relationships: add --ignore-dependencies
231-243: Cross-reference command help and command reference pageAdd a link to the command reference docs for move to satisfy docs/ coding guidelines.
# Show move command help task-master move --help + +For full CLI options, see the Move command reference in docs/commands/move.md.scripts/modules/task-manager/parse-prd/parse-prd-helpers.js (2)
160-170: Dependency remapping drops references to existing tasks (logic bug).Only dependencies present in the new AI batch are remapped; dependencies pointing to existing tasks are lost because
taskMap.get(depId)returnsundefinedand the filter removes them. Preserve existing-task deps and only remap new ones.Apply:
- processedTasks.forEach((task) => { - task.dependencies = task.dependencies - .map((depId) => taskMap.get(depId)) - .filter( - (newDepId) => - newDepId != null && - newDepId < task.id && - (findTaskById(existingTasks, newDepId) || - processedTasks.some((t) => t.id === newDepId)) - ); - }); + // Second pass: remap dependencies (preserve existing-task deps) + const newIds = new Set(processedTasks.map((t) => t.id)); + processedTasks.forEach((task) => { + task.dependencies = (task.dependencies || []) + .map((depId) => (taskMap.has(depId) ? taskMap.get(depId) : depId)) + .filter((depId) => { + const n = typeof depId === 'string' ? parseInt(depId, 10) : depId; + if (Number.isNaN(n)) return false; + const isExisting = !!findTaskById(existingTasks, n); + const isRemappedNew = newIds.has(n) && n < task.id; + return isExisting || isRemappedNew; + }); + });
60-63: Avoid spread with Math.max for large arrays.Use reduce to compute nextId safely for large task lists.
- if (existingTasks.length > 0) { - nextId = Math.max(...existingTasks.map((t) => t.id || 0)) + 1; - } + if (existingTasks.length > 0) { + const maxId = existingTasks.reduce((m, t) => Math.max(m, t.id || 0), 0); + nextId = maxId + 1; + }scripts/modules/task-manager/update-subtask-by-id.js (2)
366-368: Null-guard telemetry usage to avoid rare NPEs.If aiServiceResponse is unexpectedly nullish, this will throw.
- if (outputFormat === 'text' && aiServiceResponse.telemetryData) { + if (outputFormat === 'text' && aiServiceResponse?.telemetryData) { displayAiUsageSummary(aiServiceResponse.telemetryData, 'cli'); }
90-93: PasstasksPathintofindProjectRootfor accurate resolution
In scripts/modules/task-manager/update-subtask-by-id.js, replaceconst projectRoot = providedProjectRoot || findProjectRoot();with
const projectRoot = providedProjectRoot || findProjectRoot(tasksPath);to mirror expand-task.js and avoid CWD-based mis-resolution.
scripts/modules/task-manager/expand-task.js (4)
465-474: Bug: combinedAdditionalContext is computed but not used in promptParams.You construct combinedAdditionalContext but pass the original additionalContext to the prompt. Use the combined value.
Apply this diff:
- // Combine all context sources into a single additionalContext parameter + // Combine all context sources into a single additionalContext parameter let combinedAdditionalContext = ''; if (additionalContext || complexityReasoningContext) { combinedAdditionalContext = `\n\n${additionalContext}${complexityReasoningContext}`.trim(); } if (gatheredContext) { combinedAdditionalContext = `${combinedAdditionalContext}\n\n# Project Context\n\n${gatheredContext}`.trim(); } const promptParams = { task: task, subtaskCount: finalSubtaskCount, nextSubtaskId: nextSubtaskId, - additionalContext: additionalContext, + additionalContext: combinedAdditionalContext, complexityReasoningContext: complexityReasoningContext, gatheredContext: gatheredContextText || '', useResearch: useResearch, expansionPrompt: expansionPromptText || undefined, hasCodebaseAnalysis: hasCodebaseAnalysisCapability, projectRoot: projectRoot || '' };Also applies to: 500-511
396-427: Robustness: avoid fs.existsSync(undefined) and resolve a tag-aware default report path.complexityReportPath may be undefined, which would throw in fs.existsSync(). Use getTagAwareFilePath with COMPLEXITY_REPORT_FILE as a fallback and keep reads tag-aware.
Apply this diff:
- logger.info( - `Looking for complexity report at: ${complexityReportPath}${tag !== 'master' ? ` (tag-specific for '${tag}')` : ''}` - ); + const resolvedComplexityReportPath = + complexityReportPath || + getTagAwareFilePath(COMPLEXITY_REPORT_FILE, projectRoot, tag); + logger.info( + `Looking for complexity report at: ${resolvedComplexityReportPath}${tag !== 'master' ? ` (tag-specific for '${tag}')` : ''}` + ); ... - if (fs.existsSync(complexityReportPath)) { - const complexityReport = readJSON(complexityReportPath); + if (fs.existsSync(resolvedComplexityReportPath)) { + const complexityReport = readJSON( + resolvedComplexityReportPath, + projectRoot, + tag + );
319-321: API contract: outputType should be 'cli' or 'mcp', not 'text'/'json'.generateTextService in this codebase expects 'cli' or 'mcp'. Passing 'text'/'json' is inconsistent with analyze-task-complexity.js and can break provider routing.
Apply this diff:
- const outputFormat = mcpLog ? 'json' : 'text'; + const outputFormat = mcpLog ? 'json' : 'text'; // for local UX + const serviceOutputType = mcpLog ? 'mcp' : 'cli'; ... - outputType: outputFormat + outputType: serviceOutputTypeAlso applies to: 558-566
171-193: Finish or remove the advanced extraction stub to make parsing reliable.The current block declares variables but never extracts anything, then attempts to parse the unchanged response again. Implement brace-count extraction with a fallback to outermost braces.
Apply this diff:
- // (Insert the more complex extraction logic here - the one we worked on with: - // - targetPattern = '{"subtasks":'; - // - careful brace counting for that targetPattern - // - fallbacks to last '{' and '}' if targetPattern logic fails) - // This was the logic from my previous message. Let's assume it's here. - // This block should ultimately set `jsonToParse` to the best candidate string. - - // Example snippet of that advanced logic's start: - const targetPattern = '{"subtasks":'; - - const patternStartIndex = jsonToParse.indexOf(targetPattern); - - if (patternStartIndex !== -1) { - const openBraces = 0; - const firstBraceFound = false; - const extractedJsonBlock = ''; - // ... (loop for brace counting as before) ... - // ... (if successful, jsonToParse = extractedJsonBlock) ... - // ... (if that fails, fallbacks as before) ... - } else { - // ... (fallback to last '{' and '}' if targetPattern not found) ... - } + const targetPattern = '{"subtasks":'; + const startIdx = jsonToParse.indexOf(targetPattern); + let candidate = null; + if (startIdx !== -1) { + let depth = 0; + let started = false; + for (let i = startIdx; i < jsonToParse.length; i++) { + const ch = jsonToParse[i]; + if (ch === '{') { + depth++; + started = true; + } else if (ch === '}') { + depth--; + if (started && depth === 0) { + candidate = jsonToParse.slice(startIdx, i + 1); + break; + } + } + } + } + if (!candidate) { + const firstBrace = jsonToParse.indexOf('{'); + const lastBrace = jsonToParse.lastIndexOf('}'); + if (firstBrace !== -1 && lastBrace > firstBrace) { + candidate = jsonToParse.slice(firstBrace, lastBrace + 1); + } + } + if (candidate) { + jsonToParse = candidate; + }scripts/modules/task-manager/analyze-task-complexity.js (1)
26-26: Remove unused import CUSTOM_PROVIDERS.It’s not referenced anymore after capability refactor.
-import { CUSTOM_PROVIDERS } from '../../../src/constants/providers.js';tests/integration/cli/move-cross-tag.test.js (1)
723-733: Fix fragile expectation: extraneous force: undefined breaks deep equality.moveTasksBetweenTags is called with { withDependencies, ignoreDependencies } only. Expecting force: undefined can fail equality.
Apply this diff:
expect(mockMoveTasksBetweenTags).toHaveBeenCalledWith( expect.stringContaining('tasks.json'), [1, 2, 3], // Should trim whitespace and parse as integers 'backlog', 'in-progress', { withDependencies: undefined, - ignoreDependencies: undefined, - force: undefined + ignoreDependencies: undefined } );
| "task-master-ai": patch | ||
| --- | ||
|
|
||
| docs(move): clarify cross-tag move docs; deprecate "force"; add explicit --with-dependencies/--ignore-dependencies examples |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Rewrite changeset summary to user-facing, imperative one-liner.
Avoid commit-scope prefixes; prefer plain, user-facing text and use --force.
Apply:
-docs(move): clarify cross-tag move docs; deprecate "force"; add explicit --with-dependencies/--ignore-dependencies examples
+Clarify cross-tag move docs; deprecate --force; add examples for --with-dependencies and --ignore-dependencies.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| docs(move): clarify cross-tag move docs; deprecate "force"; add explicit --with-dependencies/--ignore-dependencies examples | |
| Clarify cross-tag move docs; deprecate --force; add examples for --with-dependencies and --ignore-dependencies. |
🧰 Tools
🪛 LanguageTool
[grammar] ~5-~5: There might be a mistake here.
Context: ...endencies/--ignore-dependencies examples
(QB_NEW_EN)
🪛 markdownlint-cli2 (0.17.2)
5-5: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In .changeset/clarify-force-move-docs.md around line 5, the changeset summary
uses a commit-scope prefixed, non-user-facing phrasing; rewrite it as a concise,
imperative, user-facing one-liner without the "docs(move):" prefix and include
the literal flag form "--force" (e.g. "Clarify cross-tag move behavior and
deprecate force; add explicit --with-dependencies/--ignore-dependencies
examples" or similar). Ensure the summary is plain text, imperative, and does
not include commit-scope prefixes.
| feat(move): improve cross-tag move UX and safety | ||
|
|
||
| - CLI: print "Next Steps" tips after cross-tag moves that used --ignore-dependencies (validate/fix guidance) | ||
| - CLI: show dedicated help block on ID collisions (destination tag already has the ID) | ||
| - Core: add structured suggestions to TASK_ALREADY_EXISTS errors | ||
| - MCP: map ID collision errors to TASK_ALREADY_EXISTS and include suggestions | ||
| - Tests: cover MCP options, error suggestions, CLI tips printing, and integration error payload suggestions | ||
| --- |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Condense changeset to a single-line, user-facing summary.
Keep details for docs/CHANGELOG; changesets should be brief.
Apply:
-feat(move): improve cross-tag move UX and safety
-
-- CLI: print "Next Steps" tips after cross-tag moves that used --ignore-dependencies (validate/fix guidance)
-- CLI: show dedicated help block on ID collisions (destination tag already has the ID)
-- Core: add structured suggestions to TASK_ALREADY_EXISTS errors
-- MCP: map ID collision errors to TASK_ALREADY_EXISTS and include suggestions
-- Tests: cover MCP options, error suggestions, CLI tips printing, and integration error payload suggestions
----
+Improve cross-tag move UX: show Next Steps after --ignore-dependencies moves and provide structured TASK_ALREADY_EXISTS suggestions in CLI/MCP.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| feat(move): improve cross-tag move UX and safety | |
| - CLI: print "Next Steps" tips after cross-tag moves that used --ignore-dependencies (validate/fix guidance) | |
| - CLI: show dedicated help block on ID collisions (destination tag already has the ID) | |
| - Core: add structured suggestions to TASK_ALREADY_EXISTS errors | |
| - MCP: map ID collision errors to TASK_ALREADY_EXISTS and include suggestions | |
| - Tests: cover MCP options, error suggestions, CLI tips printing, and integration error payload suggestions | |
| --- | |
| Improve cross-tag move UX: show Next Steps after --ignore-dependencies moves and provide structured TASK_ALREADY_EXISTS suggestions in CLI/MCP. |
🧰 Tools
🪛 LanguageTool
[grammar] ~5-~5: Use correct spacing
Context: ...e): improve cross-tag move UX and safety - CLI: print "Next Steps" tips after cross...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: There might be a mistake here.
Context: ...ore-dependencies (validate/fix guidance) - CLI: show dedicated help block on ID col...
(QB_NEW_EN_OTHER)
[grammar] ~8-~8: There might be a mistake here.
Context: ...ons (destination tag already has the ID) - Core: add structured suggestions to TASK...
(QB_NEW_EN_OTHER)
[grammar] ~9-~9: There might be a mistake here.
Context: ...uggestions to TASK_ALREADY_EXISTS errors - MCP: map ID collision errors to TASK_ALR...
(QB_NEW_EN_OTHER)
[grammar] ~10-~10: There might be a mistake here.
Context: ...K_ALREADY_EXISTS and include suggestions - Tests: cover MCP options, error suggesti...
(QB_NEW_EN_OTHER)
[grammar] ~11-~11: There might be a mistake here.
Context: ...nd integration error payload suggestions ---
(QB_NEW_EN_OTHER)
🪛 markdownlint-cli2 (0.17.2)
5-5: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
11-11: Lists should be surrounded by blank lines
(MD032, blanks-around-lists)
🤖 Prompt for AI Agents
In .changeset/strong-eagles-vanish.md around lines 5 to 12, the changeset body
is a multi-line, developer-focused bullet list; condense it into a single-line,
user-facing summary sentence (e.g. "feat(move): improve cross-tag move UX, add
safety checks and clearer error/help messages") and move the detailed bullet
points into docs/CHANGELOG or a separate release note; ensure the single-line
summary is concise, present-tense, and starts with the conventional prefix
(feat/fix/etc.).
| Enhanced Claude Code and Google CLI integration with automatic codebase analysis for task operations | ||
|
|
||
| When using Claude Code as the AI provider, task management commands now automatically analyze your codebase before generating or updating tasks. This provides more accurate, context-aware implementation details that align with your project's existing architecture and patterns. | ||
|
|
||
| Commands contextualised: | ||
|
|
||
| - add-task | ||
| - update-subtask | ||
| - update-task | ||
| - update |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Condense to a single, user-facing summary line.
Changeset bodies should be concise one-liners; move detail to docs/CHANGELOG.
Apply:
-Enhanced Claude Code and Google CLI integration with automatic codebase analysis for task operations
-
-When using Claude Code as the AI provider, task management commands now automatically analyze your codebase before generating or updating tasks. This provides more accurate, context-aware implementation details that align with your project's existing architecture and patterns.
-
-Commands contextualised:
-
-- add-task
-- update-subtask
-- update-task
-- update
+Add automatic codebase analysis to task operations when Claude Code or Gemini CLI is available; introduce hasCodebaseAnalysis and pass projectRoot through prompts.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Enhanced Claude Code and Google CLI integration with automatic codebase analysis for task operations | |
| When using Claude Code as the AI provider, task management commands now automatically analyze your codebase before generating or updating tasks. This provides more accurate, context-aware implementation details that align with your project's existing architecture and patterns. | |
| Commands contextualised: | |
| - add-task | |
| - update-subtask | |
| - update-task | |
| - update | |
| Add automatic codebase analysis to task operations when Claude Code or Gemini CLI is available; introduce hasCodebaseAnalysis and pass projectRoot through prompts. |
🧰 Tools
🪛 LanguageTool
[grammar] ~5-~5: Use correct spacing
Context: ...ic codebase analysis for task operations When using Claude Code as the AI provide...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: Use correct spacing
Context: ...ct's existing architecture and patterns. Commands contextualised: - add-task - u...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~9-~9: Consider adjusting word choice based on regional variation
Context: ...ng architecture and patterns. Commands contextualised: - add-task - update-subtask - update-task ...
(QB_NEW_EN_OTHER_ERROR_IDS_26)
🪛 markdownlint-cli2 (0.17.2)
5-5: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
.changeset/wet-candies-accept.md lines 5-14: The changeset body is multi-line
and verbose; replace it with a single concise user-facing summary sentence
(e.g., "Add automatic codebase analysis for task commands when using Claude Code
and Google CLI"), move the expanded explanation and command list into
docs/CHANGELOG (or reference the changelog entry), and update the changeset file
and commit so the body is a one-line summary only.
| ### Force Move | ||
|
|
||
| Force the move even with dependency conflicts: | ||
| Note: Force moves are no longer supported. Instead, use one of these options: | ||
|
|
||
| ```bash | ||
| task-master move --from=5 --from-tag=backlog --to-tag=in-progress --force | ||
| ``` | ||
| - `--with-dependencies` — move dependents together | ||
| - `--ignore-dependencies` — break cross-tag dependencies | ||
|
|
There was a problem hiding this comment.
Heading still says “Force Move” after deprecation; rename section
The section header remains “### Force Move” though the content deprecates it. Rename to avoid confusion.
-### Force Move
+### Dependency-Control Options (Force Move deprecated)
@@
-Note: Force moves are no longer supported. Instead, use one of these options:
+Force moves are deprecated. Choose one of these options:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ### Force Move | |
| Force the move even with dependency conflicts: | |
| Note: Force moves are no longer supported. Instead, use one of these options: | |
| ```bash | |
| task-master move --from=5 --from-tag=backlog --to-tag=in-progress --force | |
| ``` | |
| - `--with-dependencies` — move dependents together | |
| - `--ignore-dependencies` — break cross-tag dependencies | |
| ### Dependency-Control Options (Force Move deprecated) | |
| Force moves are deprecated. Choose one of these options: | |
| - `--with-dependencies` — move dependents together | |
| - `--ignore-dependencies` — break cross-tag dependencies |
🧰 Tools
🪛 LanguageTool
[grammar] ~66-~66: Use correct spacing
Context: ...only the specified task. ### Force Move Note: Force moves are no longer supporte...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~68-~68: Use correct spacing
Context: ...rted. Instead, use one of these options: - --with-dependencies — move dependents together - `--ignore-...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~70-~70: There might be a mistake here.
Context: ...dependencies— move dependents together ---ignore-dependencies` — break cross-tag dependencies
(QB_NEW_EN_OTHER)
[grammar] ~71-~71: There might be a mistake here.
Context: ...ndencies` — break cross-tag dependencies
(QB_NEW_EN_OTHER)
🤖 Prompt for AI Agents
In docs/cross-tag-task-movement.md around lines 66 to 72, the section header
still reads "### Force Move" despite the content marking it deprecated; change
the header to something like "### Force Move (deprecated)" or "### Deprecated:
Force Move" (or "### Alternatives to Force Move") so it matches the body, and
update any internal links/anchors that reference this header if present.
| Note: Force moves are no longer supported. Instead, use one of these options: | ||
|
|
||
| ```bash | ||
| task-master move --from=5 --from-tag=backlog --to-tag=in-progress --force | ||
| ``` | ||
| - `--with-dependencies` — move dependents together | ||
| - `--ignore-dependencies` — break cross-tag dependencies |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Fix punctuation/spacing around em dashes and warnings
LanguageTool flagged spacing around em dashes and the warning block.
-- `--with-dependencies` — move dependents together
-- `--ignore-dependencies` — break cross-tag dependencies
+- `--with-dependencies` — move dependents together
+- `--ignore-dependencies` — break cross-tag dependencies
@@
-Choose one of these options explicitly:
+Choose one of these options explicitly:Also applies to: 266-266
🧰 Tools
🪛 LanguageTool
[grammar] ~68-~68: Use correct spacing
Context: ...rted. Instead, use one of these options: - --with-dependencies — move dependents together - `--ignore-...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~70-~70: There might be a mistake here.
Context: ...dependencies— move dependents together ---ignore-dependencies` — break cross-tag dependencies
(QB_NEW_EN_OTHER)
[grammar] ~71-~71: There might be a mistake here.
Context: ...ndencies` — break cross-tag dependencies
(QB_NEW_EN_OTHER)
🤖 Prompt for AI Agents
In docs/cross-tag-task-movement.md around lines 68 to 71 (also applies at line
266), fix spacing and punctuation around em dashes and the warning block: remove
extra spaces before and after em dashes (use no spaces around —), ensure the
warning block follows the project's markdown style (consistent
heading/blockquote formatting and punctuation), and adjust the two list items so
the em dash usage is consistent and the warning text punctuation is corrected.
| hasCodebaseAnalysis: jest.fn(() => false) | ||
| }) |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Assert hasCodebaseAnalysis is called with correct args (both modes).
Now that the mock exists, validate calls for useResearch=false/true with the derived projectRoot.
Add after imports:
const { hasCodebaseAnalysis } = await import('../../../../../scripts/modules/config-manager.js');In “should expand a task with AI-generated subtasks”:
expect(hasCodebaseAnalysis).toHaveBeenCalledWith(false, '/mock/project/root');In “should handle research flag correctly”:
expect(hasCodebaseAnalysis).toHaveBeenCalledWith(true, '/mock/project/root');🤖 Prompt for AI Agents
In tests/unit/scripts/modules/task-manager/expand-task.test.js around lines
129-130, the test suite mocks hasCodebaseAnalysis but doesn't assert it was
called with the correct arguments; import the real hasCodebaseAnalysis from
../../../../../scripts/modules/config-manager.js at top of the test file, then
add assertions in the two test cases: in "should expand a task with AI-generated
subtasks" assert hasCodebaseAnalysis was called with (false,
'/mock/project/root'), and in "should handle research flag correctly" assert it
was called with (true, '/mock/project/root'); ensure the import is awaited in
the test file setup and the expectations are placed after the code that triggers
the calls.
| // New test: ensure with-dependencies only traverses tasks from the source tag | ||
| it('should scope dependency traversal to source tag when using --with-dependencies', async () => { | ||
| findCrossTagDependencies.mockReturnValue([]); | ||
| validateSubtaskMove.mockImplementation(() => {}); | ||
|
|
||
| const result = await moveTasksBetweenTags( | ||
| mockTasksPath, | ||
| [1], // backlog:1 depends on backlog:2 | ||
| 'backlog', | ||
| 'in-progress', | ||
| { withDependencies: true }, | ||
| mockContext | ||
| ); | ||
|
|
||
| // Write should include backlog:2 moved, and must NOT traverse or fetch dependencies from the target tag | ||
| expect(writeJSON).toHaveBeenCalledWith( | ||
| mockTasksPath, | ||
| expect.objectContaining({ | ||
| 'in-progress': expect.objectContaining({ | ||
| tasks: expect.arrayContaining([ | ||
| expect.objectContaining({ id: 1 }), | ||
| expect.objectContaining({ id: 2 }) // the backlog:2 now moved | ||
| // ensure existing in-progress:2 remains (by id) but we don't double-add or fetch deps from it | ||
| ]) | ||
| }) | ||
| }), | ||
| mockContext.projectRoot, | ||
| null | ||
| ); | ||
| }); | ||
|
|
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Good: verifies source-tag-scoped traversal for --with-dependencies.
Minor nit: comment mentions “in-progress:2 remains,” but no such task exists in the fixture. Tweak the comment to avoid confusion.
- // ensure existing in-progress:2 remains (by id) but we don't double-add or fetch deps from it
+ // ensure we didn't traverse or fetch dependencies from the target tag📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // New test: ensure with-dependencies only traverses tasks from the source tag | |
| it('should scope dependency traversal to source tag when using --with-dependencies', async () => { | |
| findCrossTagDependencies.mockReturnValue([]); | |
| validateSubtaskMove.mockImplementation(() => {}); | |
| const result = await moveTasksBetweenTags( | |
| mockTasksPath, | |
| [1], // backlog:1 depends on backlog:2 | |
| 'backlog', | |
| 'in-progress', | |
| { withDependencies: true }, | |
| mockContext | |
| ); | |
| // Write should include backlog:2 moved, and must NOT traverse or fetch dependencies from the target tag | |
| expect(writeJSON).toHaveBeenCalledWith( | |
| mockTasksPath, | |
| expect.objectContaining({ | |
| 'in-progress': expect.objectContaining({ | |
| tasks: expect.arrayContaining([ | |
| expect.objectContaining({ id: 1 }), | |
| expect.objectContaining({ id: 2 }) // the backlog:2 now moved | |
| // ensure existing in-progress:2 remains (by id) but we don't double-add or fetch deps from it | |
| ]) | |
| }) | |
| }), | |
| mockContext.projectRoot, | |
| null | |
| ); | |
| }); | |
| expect(writeJSON).toHaveBeenCalledWith( | |
| mockTasksPath, | |
| expect.objectContaining({ | |
| 'in-progress': expect.objectContaining({ | |
| tasks: expect.arrayContaining([ | |
| expect.objectContaining({ id: 1 }), | |
| expect.objectContaining({ id: 2 }) // the backlog:2 now moved | |
| // ensure we didn't traverse or fetch dependencies from the target tag | |
| ]) | |
| }) | |
| }), | |
| mockContext.projectRoot, | |
| null | |
| ); |
🤖 Prompt for AI Agents
In tests/unit/scripts/modules/task-manager/move-task-cross-tag.test.js around
lines 222 to 252, the inline comment references “in-progress:2 remains” which
doesn't exist in the test fixture and may confuse readers; update the comment to
remove or reword that clause (e.g., “ensure we don't double-add or fetch
dependencies from the target tag” or simply delete the parenthetical) so the
comment accurately reflects the test assertions without referencing a
non-existent task.
| getResearchProvider: jest.fn(() => 'perplexity'), | ||
| hasCodebaseAnalysis: jest.fn(() => false) | ||
| }) |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Light coverage gap: verify the new capability hook is invoked.
You mock hasCodebaseAnalysis; assert it’s called at least once in a happy-path test to lock the integration.
Add after mocks/imports:
const { hasCodebaseAnalysis } = await import('../../../../../scripts/modules/config-manager.js');In a success test (e.g., “should parse a PRD file and generate tasks”) after parsePRD:
expect(hasCodebaseAnalysis).toHaveBeenCalled();🤖 Prompt for AI Agents
In tests/unit/scripts/modules/task-manager/parse-prd.test.js around lines 190 to
192, add an explicit import of the mocked hasCodebaseAnalysis after the
mocks/imports block using a dynamic import (const { hasCodebaseAnalysis } =
await import('../../../../../scripts/modules/config-manager.js');) so the jest
mock reference is captured, and in the success test (e.g., "should parse a PRD
file and generate tasks") add an assertion after calling parsePRD:
expect(hasCodebaseAnalysis).toHaveBeenCalled(); to verify the capability hook is
invoked.
| getDebugFlag: jest.fn(() => false), | ||
| hasCodebaseAnalysis: jest.fn(() => false) |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Also assert hasCodebaseAnalysis is used (arguments).
Since the mock is added, verify it’s called with (useResearch=false, projectRoot='/project') in a success-path test.
Add after imports:
const { hasCodebaseAnalysis } = await import('../../../../../scripts/modules/config-manager.js');In “successfully updates subtask with valid inputs” after the call:
expect(hasCodebaseAnalysis).toHaveBeenCalledWith(false, '/project');🤖 Prompt for AI Agents
In tests/unit/scripts/modules/task-manager/update-subtask-by-id.test.js around
lines 55-56, the review asks to assert that the mocked hasCodebaseAnalysis is
actually invoked with the correct args; add an import for hasCodebaseAnalysis
from ../../../../../scripts/modules/config-manager.js at the top of the test
file (after imports) and then, in the "successfully updates subtask with valid
inputs" test immediately after the code that triggers the success path, add an
assertion that hasCodebaseAnalysis was called with (false, '/project') using
toHaveBeenCalledWith.
* Version Packages * chore: fix changelog --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
…o.next.august ralph/chore.merge.main.into.next.august
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
package.json (1)
16-30: Add required test scripts per repo guidelines.Missing test:unit, test:integration, and test:ci. Add them to align with coding_guidelines.
Apply:
"scripts": { "test": "node --experimental-vm-modules node_modules/.bin/jest", "test:fails": "node --experimental-vm-modules node_modules/.bin/jest --onlyFailures", "test:watch": "node --experimental-vm-modules node_modules/.bin/jest --watch", "test:coverage": "node --experimental-vm-modules node_modules/.bin/jest --coverage", + "test:unit": "node --experimental-vm-modules node_modules/.bin/jest --runTestsByPath **/*.unit.(js|ts|tsx)", + "test:integration": "node --experimental-vm-modules node_modules/.bin/jest --runTestsByPath **/*.integration.(js|ts|tsx)", "test:e2e": "./tests/e2e/run_e2e.sh", "test:e2e-report": "./tests/e2e/run_e2e.sh --analyze-log", + "test:ci": "npm run format-check && npm run test:coverage && npm run test:integration && npm run test:e2e", "prepare": "chmod +x bin/task-master.js mcp-server/server.js", "changeset": "changeset", "release": "changeset publish",
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (5)
.changeset/pre.json(1 hunks)CHANGELOG.md(1 hunks)apps/extension/CHANGELOG.md(1 hunks)apps/extension/package.json(2 hunks)package.json(2 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
.changeset/*
📄 CodeRabbit inference engine (.cursor/rules/new_features.mdc)
Create appropriate changesets for new features, use semantic versioning, include tagged system information in release notes, and document breaking changes if any.
Files:
.changeset/pre.json
package.json
📄 CodeRabbit inference engine (.cursor/rules/test_workflow.mdc)
Add and update test scripts in package.json to include test, test:watch, test:coverage, test:unit, test:integration, test:e2e, and test:ci
Files:
package.json
🧠 Learnings (13)
📓 Common learnings
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/glossary.mdc:0-0
Timestamp: 2025-07-18T17:10:53.657Z
Learning: Guidelines for integrating new features into the Task Master CLI with tagged system considerations (new_features.mdc).
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/new_features.mdc:0-0
Timestamp: 2025-07-18T17:12:57.903Z
Learning: Applies to scripts/modules/*.js : Default to current tag when not specified, support explicit tag selection in advanced features, validate tag existence before operations, and provide clear messaging about tag context.
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/new_features.mdc:0-0
Timestamp: 2025-07-18T17:12:57.903Z
Learning: Applies to scripts/modules/*.js : Ensure new features work with existing projects seamlessly, supporting both legacy and tagged task data formats, and support silent migration during feature usage.
📚 Learning: 2025-07-18T17:12:57.903Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/new_features.mdc:0-0
Timestamp: 2025-07-18T17:12:57.903Z
Learning: Applies to .changeset/* : Create appropriate changesets for new features, use semantic versioning, include tagged system information in release notes, and document breaking changes if any.
Applied to files:
.changeset/pre.json
📚 Learning: 2025-07-18T17:10:53.657Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/glossary.mdc:0-0
Timestamp: 2025-07-18T17:10:53.657Z
Learning: Guidelines for using Changesets (npm run changeset) to manage versioning and changelogs (changeset.mdc).
Applied to files:
.changeset/pre.json
📚 Learning: 2025-07-18T17:10:12.881Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dev_workflow.mdc:0-0
Timestamp: 2025-07-18T17:10:12.881Z
Learning: For CLI usage, install Taskmaster globally with `npm install -g task-master-ai` or use locally via `npx task-master-ai ...`.
Applied to files:
package.jsonapps/extension/package.json
📚 Learning: 2025-08-07T13:00:22.966Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1090
File: apps/extension/package.json:241-243
Timestamp: 2025-08-07T13:00:22.966Z
Learning: In monorepos, local packages should use "*" as the version constraint in package.json dependencies, as recommended by npm. This ensures the local version from within the same workspace is always used, rather than attempting to resolve from external registries. This applies to packages like task-master-ai within the eyaltoledano/claude-task-master monorepo.
Applied to files:
package.jsonapps/extension/package.json
📚 Learning: 2025-07-31T20:49:04.638Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#997
File: apps/extension/package.publish.json:2-8
Timestamp: 2025-07-31T20:49:04.638Z
Learning: In the eyaltoledano/claude-task-master repository, the VS Code extension uses a 3-file packaging system where package.json (with name "extension") is for development within the monorepo, while package.publish.json (with name "task-master-hamster") contains the clean manifest for VS Code marketplace publishing. The different names are intentional and serve distinct purposes in the build and publishing workflow.
Applied to files:
apps/extension/package.json
📚 Learning: 2025-07-18T17:19:27.365Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-07-18T17:19:27.365Z
Learning: Use `task-master validate-dependencies` to check for and identify invalid dependencies in tasks.json and task files.
Applied to files:
apps/extension/package.json
📚 Learning: 2025-07-18T17:19:27.365Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-07-18T17:19:27.365Z
Learning: Use `task-master fix-dependencies` to find and fix all invalid dependencies in tasks.json and task files.
Applied to files:
apps/extension/package.json
📚 Learning: 2025-07-18T17:19:27.365Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-07-18T17:19:27.365Z
Learning: Start new projects by running `task-master init` or `node scripts/dev.js parse-prd --input=<prd-file.txt>` to generate the initial tasks.json.
Applied to files:
apps/extension/package.json
📚 Learning: 2025-07-18T17:07:53.100Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/changeset.mdc:0-0
Timestamp: 2025-07-18T17:07:53.100Z
Learning: Applies to .changeset/*.md : When running `npm run changeset` or `npx changeset add`, provide a concise summary of the changes for the `CHANGELOG.md` in imperative mood, typically a single line, and not a detailed Git commit message.
Applied to files:
CHANGELOG.md
📚 Learning: 2025-08-11T12:30:23.843Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-11T12:30:23.843Z
Learning: Import Task Master's development workflow commands and guidelines; treat the contents of ./.taskmaster/CLAUDE.md as if included in the main CLAUDE.md
Applied to files:
CHANGELOG.md
📚 Learning: 2025-07-18T17:10:53.657Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/glossary.mdc:0-0
Timestamp: 2025-07-18T17:10:53.657Z
Learning: Guidelines for integrating new features into the Task Master CLI with tagged system considerations (new_features.mdc).
Applied to files:
CHANGELOG.md
📚 Learning: 2025-07-31T21:48:00.389Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#997
File: apps/extension/src/services/task-repository.ts:25-57
Timestamp: 2025-07-31T21:48:00.389Z
Learning: In the eyaltoledano/claude-task-master repository, every task is always part of a tag - there is no concept of untagged tasks. The tag system is mandatory and comprehensive, meaning all tasks exist within a tag context (with 'master' as the default tag if none specified).
Applied to files:
CHANGELOG.md
🪛 LanguageTool
apps/extension/CHANGELOG.md
[grammar] ~3-~3: Use correct spacing
Context: # Change Log ## 0.24.2-rc.0 ### Patch Changes - Updated dependencies [[...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~5-~5: Use correct spacing
Context: ...e Log ## 0.24.2-rc.0 ### Patch Changes - Updated dependencies [[8783708](https:...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: There might be a mistake here.
Context: ...d2fd613ceac56a65ae9d3c1c03092b8860ac9)]: - task-master-ai@0.26.0-rc.0 ## 0.24.1 #...
(QB_NEW_EN)
[grammar] ~8-~8: Use correct spacing
Context: ...860ac9)]: - task-master-ai@0.26.0-rc.0 ## 0.24.1 ### Patch Changes - Updated dep...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🔇 Additional comments (5)
package.json (2)
3-3: RC version bump looks good.No concerns with 0.26.0-rc.0.
94-95: Verify compatibility of ai-sdk-provider-gemini-cli ^0.1.3.Ensure no peer-dep or API changes affect Gemini CLI integration paths.
Run locally:
- npm i
- npm ls ai-sdk-provider-gemini-cli
- Smoke test: parse-prd, add-task with Gemini CLI provider.
apps/extension/package.json (1)
6-6: Extension RC bump acknowledged.No issues with 0.24.2-rc.0.
apps/extension/CHANGELOG.md (1)
3-9: Changelog entry OK.Reads clean and references the correct dependency bump.
.changeset/pre.json (1)
1-15: Pre-release config looks correct; remember to exit pre after publish.After releasing RCs, run
changeset pre exitbefore final to avoid tagging future releases as prerelease.
| "task-master-ai": "0.26.0-rc.0" | ||
| }, |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Use workspace link for local monorepo dependency.
Per monorepo practice (learning), set task-master-ai to "*" to ensure workspace resolution.
- "task-master-ai": "0.26.0-rc.0"
+ "task-master-ai": "*"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "task-master-ai": "0.26.0-rc.0" | |
| }, | |
| "task-master-ai": "*" | |
| }, |
🤖 Prompt for AI Agents
In apps/extension/package.json around lines 259 to 260, replace the pinned
version of the local monorepo dependency with a workspace specifier so the
package manager resolves the local workspace package; change the
"task-master-ai": "0.26.0-rc.0" entry to "task-master-ai": "*" to enable
workspace resolution.
| Added automatic codebase analysis for Gemini CLI provider in parse-prd, and analyze-complexity, add-task, udpate-task, update, update-subtask commands | ||
| When using Gemini CLI as the AI provider, Task Master now instructs the AI to analyze the project structure, existing implementations, and patterns before generating tasks or subtasks | ||
| Tasks and subtasks generated by Claude Code are now informed by actual codebase analysis, resulting in more accurate and contextual outputs | ||
|
|
There was a problem hiding this comment.
Fix typos and provider naming inconsistency (user-facing).
- “udpate-task” → “update-task”
- “Tasks and subtasks generated by Claude Code …” under Gemini section should reference Gemini, not Claude Code.
- Added automatic codebase analysis for Gemini CLI provider in parse-prd, and analyze-complexity, add-task, udpate-task, update, update-subtask commands
+ Added automatic codebase analysis for Gemini CLI provider in parse-prd, analyze-complexity, add-task, update-task, update, update-subtask commands
- Tasks and subtasks generated by Claude Code are now informed by actual codebase analysis, resulting in more accurate and contextual outputs
+ Tasks and subtasks generated via the Gemini CLI provider are now informed by actual codebase analysis, resulting in more accurate and contextual outputs📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Added automatic codebase analysis for Gemini CLI provider in parse-prd, and analyze-complexity, add-task, udpate-task, update, update-subtask commands | |
| When using Gemini CLI as the AI provider, Task Master now instructs the AI to analyze the project structure, existing implementations, and patterns before generating tasks or subtasks | |
| Tasks and subtasks generated by Claude Code are now informed by actual codebase analysis, resulting in more accurate and contextual outputs | |
| Added automatic codebase analysis for Gemini CLI provider in parse-prd, analyze-complexity, add-task, update-task, update, update-subtask commands | |
| When using Gemini CLI as the AI provider, Task Master now instructs the AI to analyze the project structure, existing implementations, and patterns before generating tasks or subtasks | |
| Tasks and subtasks generated via the Gemini CLI provider are now informed by actual codebase analysis, resulting in more accurate and contextual outputs |
🤖 Prompt for AI Agents
In CHANGELOG.md around lines 9 to 12, fix the typos and provider naming
inconsistency: change "udpate-task" to "update-task" and update the sentence
that currently reads "Tasks and subtasks generated by Claude Code are now
informed by actual codebase analysis..." under the Gemini section so it
references "Gemini" (or "Gemini CLI provider") instead of "Claude Code"; ensure
phrasing remains consistent with the Gemini heading and update any nearby
duplicate occurrences to match.
| - [#1162](https://github.com/eyaltoledano/claude-task-master/pull/1162) [`4dad2fd`](https://github.com/eyaltoledano/claude-task-master/commit/4dad2fd613ceac56a65ae9d3c1c03092b8860ac9) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Enhanced Claude Code and Google CLI integration with automatic codebase analysis for task operations | ||
|
|
||
| When using Claude Code as the AI provider, task management commands now automatically analyze your codebase before generating or updating tasks. This provides more accurate, context-aware implementation details that align with your project's existing architecture and patterns. | ||
|
|
||
| Commands contextualised: | ||
| - add-task | ||
| - update-subtask | ||
| - update-task | ||
| - update | ||
|
|
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Minor wording consistency.
“Commands contextualised” → “Commands contextualized” for consistency with US English in the doc.
- Commands contextualised:
+ Commands contextualized:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - [#1162](https://github.com/eyaltoledano/claude-task-master/pull/1162) [`4dad2fd`](https://github.com/eyaltoledano/claude-task-master/commit/4dad2fd613ceac56a65ae9d3c1c03092b8860ac9) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Enhanced Claude Code and Google CLI integration with automatic codebase analysis for task operations | |
| When using Claude Code as the AI provider, task management commands now automatically analyze your codebase before generating or updating tasks. This provides more accurate, context-aware implementation details that align with your project's existing architecture and patterns. | |
| Commands contextualised: | |
| - add-task | |
| - update-subtask | |
| - update-task | |
| - update | |
| - [#1162](https://github.com/eyaltoledano/claude-task-master/pull/1162) [`4dad2fd`](https://github.com/eyaltoledano/claude-task-master/commit/4dad2fd613ceac56a65ae9d3c1c03092b8860ac9) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Enhanced Claude Code and Google CLI integration with automatic codebase analysis for task operations | |
| When using Claude Code as the AI provider, task management commands now automatically analyze your codebase before generating or updating tasks. This provides more accurate, context-aware implementation details that align with your project's existing architecture and patterns. | |
| Commands contextualized: | |
| - add-task | |
| - update-subtask | |
| - update-task | |
| - update |
🤖 Prompt for AI Agents
CHANGELOG.md around lines 22 to 31: the phrase "Commands contextualised" uses
British spelling; change it to "Commands contextualized" to match the document's
US English usage — update the word in that line and run a quick scan for other
British/US inconsistencies in the same section.
* feat: add featureFlag for codebase analysis * chore: add changeset * chore: run format
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (8)
package.json (1)
16-30: Add the required test scripts per repo guidelines.
package.json should expose test, test:watch, test:coverage, test:unit, test:integration, test:e2e, and test:ci.Apply:
"scripts": { "test": "node --experimental-vm-modules node_modules/.bin/jest", + "test:unit": "npm run test", + "test:integration": "npm run test", "test:fails": "node --experimental-vm-modules node_modules/.bin/jest --onlyFailures", "test:watch": "node --experimental-vm-modules node_modules/.bin/jest --watch", "test:coverage": "node --experimental-vm-modules node_modules/.bin/jest --coverage", "test:e2e": "./tests/e2e/run_e2e.sh", "test:e2e-report": "./tests/e2e/run_e2e.sh --analyze-log", + "test:ci": "node --experimental-vm-modules node_modules/.bin/jest --ci --coverage", "prepare": "chmod +x bin/task-master.js mcp-server/server.js", "changeset": "changeset", "release": "changeset publish", "inspector": "npx @modelcontextprotocol/inspector node mcp-server/server.js", "mcp-server": "node mcp-server/server.js", "format-check": "biome format .", "format": "biome format . --write" },.changeset/sour-coins-lay.md (1)
1-12: Condense to a single, user-facing summary and align config guidance.
Changeset summaries should be one concise, imperative line; avoid multi-paragraph detail. Also, past guidance stores config in .taskmaster/config.json (not env-first). Suggest revising.--- "task-master-ai": minor --- - -Add configurable codebase analysis feature flag with multiple configuration sources - -Users can now control whether codebase analysis features (Claude Code and Gemini CLI integration) are enabled through environment variables, MCP configuration, or project config files. - -Priority order: .env > MCP session env > .taskmaster/config.json. - -Set `TASKMASTER_ENABLE_CODEBASE_ANALYSIS=false` in `.env` to disable codebase analysis prompts and tool integration. +Add configurable codebase analysis flag; default on; controllable via .taskmaster/config.json (project-level) and MCP session settings.Would you like a follow-up docs PR describing env overrides (if truly supported) without making them the primary path?
scripts/modules/config-manager.js (2)
709-716: BEDROCK incorrectly marked as “no API key needed”.Bedrock requires AWS credentials. Early-allowing it masks missing creds and can cause runtime failures.
Apply both diffs:
- const providersWithoutApiKeys = [ - CUSTOM_PROVIDERS.OLLAMA, - CUSTOM_PROVIDERS.BEDROCK, - CUSTOM_PROVIDERS.MCP, - CUSTOM_PROVIDERS.GEMINI_CLI - ]; + const providersWithoutApiKeys = [ + CUSTOM_PROVIDERS.OLLAMA, + CUSTOM_PROVIDERS.MCP, + CUSTOM_PROVIDERS.GEMINI_CLI + ];export const providersWithoutApiKeys = [ CUSTOM_PROVIDERS.OLLAMA, - CUSTOM_PROVIDERS.BEDROCK, CUSTOM_PROVIDERS.GEMINI_CLI, CUSTOM_PROVIDERS.MCP ];Also applies to: 1015-1020
825-831: Short‑circuit Gemini CLI in MCP key status as non-keyed provider.Keeps parity with isApiKeySet and avoids false warnings.
case 'ollama': return true; // No key needed + case 'gemini-cli': + return true; // No key needed case 'claude-code': return true; // No key neededscripts/modules/task-manager/add-task.js (2)
280-291: Bug: targetTag can be undefined → throws on valid default flows.Comment says “Use provided tag, or current active tag, or default to 'master'” but code uses only
tag. This breaks CLI paths without an explicit tag.Apply:
- // Use the provided tag, or the current active tag, or default to 'master' - const targetTag = tag; + // Use the provided tag, or the current active tag, or default to 'master' + const targetTag = tag || getCurrentTag(projectRoot) || 'master';And add the missing import:
-} from '../utils.js'; + ensureTagMetadata, + performCompleteTagMigration, + markMigrationForNotice, + getCurrentTag +} from '../utils.js';
421-435: Pass computed flag instead of inline call (micro‑nit), otherwise LGTM.Minor readability tweak: compute
const codebaseEnabled = hasCodebaseAnalysis(useResearch, projectRoot, session)above and pass it here along withprojectRoot. Current logic is functionally fine.- hasCodebaseAnalysis: hasCodebaseAnalysis( - useResearch, - projectRoot, - session - ), + hasCodebaseAnalysis: codebaseEnabled, projectRoot: projectRootscripts/modules/task-manager/update-subtask-by-id.js (1)
90-93: Standardize findProjectRoot usage
ReplacefindProjectRoot()withfindProjectRoot(tasksPath)to align with other task-manager modules and ensure consistent project root resolution.scripts/modules/task-manager/expand-task.js (1)
566-567: Fix outputType parameter for generateTextService
In scripts/modules/task-manager/expand-task.js (line 566), replace:- outputType: outputFormat + outputType: mcpLog ? 'mcp' : 'cli'This ensures generateTextService receives the expected 'cli' or 'mcp' values.
♻️ Duplicate comments (10)
apps/extension/package.json (1)
259-260: Use workspace specifier for local monorepo dependency.
Replace pinned version with "*" to ensure workspace resolution.- "task-master-ai": "0.26.0-rc.1" + "task-master-ai": "*"CHANGELOG.md (2)
21-24: Fix typos and provider naming inconsistency (user-facing).
- “udpate-task” → “update-task”
- Reference Gemini CLI in the Gemini section, not Claude Code.
- Added automatic codebase analysis for Gemini CLI provider in parse-prd, and analyze-complexity, add-task, udpate-task, update, update-subtask commands + Added automatic codebase analysis for Gemini CLI provider in parse-prd, and analyze-complexity, add-task, update-task, update, update-subtask commands @@ - Tasks and subtasks generated by Claude Code are now informed by actual codebase analysis, resulting in more accurate and contextual outputs + Tasks and subtasks generated via the Gemini CLI provider are now informed by actual codebase analysis, resulting in more accurate and contextual outputs
38-38: Use US spelling for consistency.“contextualised” → “contextualized”.
- Commands contextualised: + Commands contextualized:scripts/modules/config-manager.js (2)
431-459: Rename parameter to explicitRoot for consistency with getters.Align with module convention and prior guidance.
-function isCodebaseAnalysisEnabled(session = null, projectRoot = null) { +function isCodebaseAnalysisEnabled(session = null, explicitRoot = null) { // Priority 1: Environment variable const envFlag = resolveEnvVariable( 'TASKMASTER_ENABLE_CODEBASE_ANALYSIS', session, - projectRoot + explicitRoot ); @@ - const globalConfig = getGlobalConfig(projectRoot); + const globalConfig = getGlobalConfig(explicitRoot);
467-486: Rename parameter and calls to use explicitRoot.Keeps API surface uniform across getters.
-function hasCodebaseAnalysis( - useResearch = false, - projectRoot = null, - session = null -) { +function hasCodebaseAnalysis( + useResearch = false, + explicitRoot = null, + session = null +) { // First check if the feature is enabled - if (!isCodebaseAnalysisEnabled(session, projectRoot)) { + if (!isCodebaseAnalysisEnabled(session, explicitRoot)) { return false; } // Then check if a codebase analysis provider is configured - const currentProvider = useResearch - ? getResearchProvider(projectRoot) - : getMainProvider(projectRoot); + const currentProvider = useResearch + ? getResearchProvider(explicitRoot) + : getMainProvider(explicitRoot);tests/unit/scripts/modules/task-manager/analyze-task-complexity.test.js (1)
190-192: Also assert the mock is exercised (repeat).Add an expectation in a happy-path test to verify
hasCodebaseAnalysisis called with the expected(useResearch, projectRoot, session)arguments.Example:
const { hasCodebaseAnalysis } = await import('../../../../../scripts/modules/config-manager.js'); // ... after calling analyzeTaskComplexity(...) expect(hasCodebaseAnalysis).toHaveBeenCalledWith(false, '/mock/project/root', expect.anything());scripts/modules/task-manager/analyze-task-complexity.js (4)
295-297: Prefer readJSON over manual JSON.parse for existing reportStandardizes error handling and formatting.
- existingReport = JSON.parse(fs.readFileSync(outputPath, 'utf8')); + existingReport = readJSON(outputPath);
354-359: Use writeJSON for empty report writeAvoid raw fs.* for JSON.
- fs.writeFileSync( - outputPath, - JSON.stringify(emptyReport, null, '\t'), - 'utf8' - ); + writeJSON(outputPath, emptyReport);
606-606: Use writeJSON for final report writeKeeps JSON I/O consistent with utils.
- fs.writeFileSync(outputPath, JSON.stringify(report, null, '\t'), 'utf8'); + writeJSON(outputPath, report);
6-6: Use writeJSON for report output (consistency + safer I/O)Import writeJSON here to replace raw fs.writeFileSync usages below (duplicate of prior guidance).
-import { log, readJSON, isSilentMode } from '../utils.js'; +import { log, readJSON, isSilentMode, writeJSON } from '../utils.js';
| "ai-sdk-provider-gemini-cli": "^0.1.3" | ||
| }, |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Confirm optional dep gating and peers.
Ensure ai-sdk-provider-gemini-cli usage is behind the codebase-analysis flag and has no unmet peer deps at runtime when disabled.
Run:
🏁 Script executed:
#!/bin/bash
rg -n --type=ts --type=js "ai-sdk-provider-gemini-cli" -C3
jq -r '.optionalDependencies["ai-sdk-provider-gemini-cli"]' package.jsonLength of output: 3153
🏁 Script executed:
#!/bin/bash
rg -n --type=ts --type=js "codebase-analysis" -C3Length of output: 49
🏁 Script executed:
#!/bin/bash
# Find where Gemini provider is initialized or called
rg -nP --type=ts --type=js '\bloadGeminiCliModule\b' -C3
# Search for any feature-flag or env var gating around Gemini CLI usage
rg -nP --type=ts --type=js '(/|\b)(enable|disable|flag|feature)[-_ ]?(codebase|analysis)' -C3Length of output: 1058
Gate Gemini CLI provider behind the codebase-analysis feature flag
Calls to loadGeminiCliModule() (e.g. in getClient at src/ai-providers/gemini-cli.js:58) must be wrapped so the dynamic import only runs when the codebase-analysis flag is enabled; otherwise skip loading to avoid errors if the optional dependency isn’t installed. Verify any peer dependencies of ai-sdk-provider-gemini-cli are either declared or safely handled at runtime.
🤖 Prompt for AI Agents
In package.json around lines 94 to 95, the Gemini CLI provider
(ai-sdk-provider-gemini-cli) must be gate-kept by the codebase-analysis feature
flag: update the code that calls loadGeminiCliModule() (e.g. getClient in
src/ai-providers/gemini-cli.js line ~58) so the dynamic import only happens when
the codebase-analysis flag is enabled (return or skip loading and handle missing
provider otherwise), and add runtime guards to safely handle missing peer
dependencies (check for required exports or wrap in try/catch and fall back) or
declare any missing peer deps in package.json so consumers are aware.
| gatheredContext: gatheredContext || '', | ||
| hasCodebaseAnalysis: hasCodebaseAnalysis( | ||
| useResearch, | ||
| projectRoot, | ||
| session | ||
| ), | ||
| projectRoot: projectRoot | ||
| }; |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Pass-through of hasCodebaseAnalysis and projectRoot to prompts looks correct; minor nit on redundancy
Prompt params now include hasCodebaseAnalysis(...) and projectRoot as required. The gatheredContext || '' default is redundant since gatheredContext is initialized to ''. Optional cleanup only.
- gatheredContext: gatheredContext || '',
+ gatheredContext,📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| gatheredContext: gatheredContext || '', | |
| hasCodebaseAnalysis: hasCodebaseAnalysis( | |
| useResearch, | |
| projectRoot, | |
| session | |
| ), | |
| projectRoot: projectRoot | |
| }; | |
| gatheredContext, | |
| hasCodebaseAnalysis: hasCodebaseAnalysis( | |
| useResearch, | |
| projectRoot, | |
| session | |
| ), | |
| projectRoot: projectRoot | |
| }; |
🤖 Prompt for AI Agents
In scripts/modules/task-manager/update-subtask-by-id.js around lines 234 to 241,
the prompt params include gatheredContext: gatheredContext || '' which is
redundant because gatheredContext is already initialized to an empty string;
remove the unnecessary fallback and pass gatheredContext directly (i.e.,
gatheredContext: gatheredContext) while keeping the hasCodebaseAnalysis(...) and
projectRoot entries unchanged.
| gatheredContext: gatheredContext || '', | ||
| hasCodebaseAnalysis: hasCodebaseAnalysis( | ||
| useResearch, | ||
| projectRoot, | ||
| session | ||
| ), | ||
| projectRoot: projectRoot |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Passing hasCodebaseAnalysis and projectRoot to prompt is correct; add a small guard in tests.
Change looks good. Add/adjust a unit test to assert hasCodebaseAnalysis is called with (useResearch, projectRoot, session) for this module as well.
🤖 Prompt for AI Agents
In scripts/modules/task-manager/update-task-by-id.js around lines 460 to 466,
the review requests adding/adjusting a unit test to ensure hasCodebaseAnalysis
is invoked with the exact arguments (useResearch, projectRoot, session) when
building the prompt; update the test for this module to mock or spy on
hasCodebaseAnalysis, call the function/path that triggers the prompt generation,
and assert the mock was called once with (useResearch, projectRoot, session);
also add a small guard (e.g., ensure projectRoot and session test fixtures are
defined) so the test cannot silently pass if those values are undefined.
| enableCodebaseAnalysis: true, | ||
| responseLanguage: 'English' | ||
| }, |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Add unit tests for flag precedence (env > session > config).
Covers the new APIs and documented priority.
Example tests to append:
describe('Codebase analysis flag precedence', () => {
test('env overrides session and config', () => {
const { isCodebaseAnalysisEnabled } = configManager;
const session = { env: { TASKMASTER_ENABLE_CODEBASE_ANALYSIS: 'false' } };
// Mock resolveEnvVariable to return env 'true'
jest.spyOn(require('../../scripts/modules/utils.js'), 'resolveEnvVariable')
.mockReturnValue('true');
expect(isCodebaseAnalysisEnabled(session, '/mock/project')).toBe(true);
});
test('session overrides config when env unset', () => {
const { isCodebaseAnalysisEnabled } = configManager;
jest.spyOn(require('../../scripts/modules/utils.js'), 'resolveEnvVariable')
.mockReturnValue('');
const session = { env: { TASKMASTER_ENABLE_CODEBASE_ANALYSIS: '0' } };
expect(isCodebaseAnalysisEnabled(session, '/mock/project')).toBe(false);
});
test('falls back to config when env/session unset', () => {
const { isCodebaseAnalysisEnabled, getConfig } = configManager;
jest.spyOn(require('../../scripts/modules/utils.js'), 'resolveEnvVariable')
.mockReturnValue('');
jest.spyOn(configManager, 'getConfig').mockReturnValue({
...DEFAULT_CONFIG,
global: { ...DEFAULT_CONFIG.global, enableCodebaseAnalysis: false }
});
expect(isCodebaseAnalysisEnabled(null, '/mock/project')).toBe(false);
});
});🤖 Prompt for AI Agents
In tests/unit/config-manager.test.js around lines 148 to 150, add unit tests
that verify flag precedence (env > session > config) for
isCodebaseAnalysisEnabled: create three tests — (1) mock resolveEnvVariable to
return a truthy value and assert env overrides session/config, (2) mock
resolveEnvVariable to return empty and provide a session.env
TASKMASTER_ENABLE_CODEBASE_ANALYSIS value to assert session overrides config,
and (3) mock resolveEnvVariable to return empty and mock configManager.getConfig
to return DEFAULT_CONFIG with enableCodebaseAnalysis false to assert fallback to
config when env/session unset; use jest.spyOn to mock
require('../../scripts/modules/utils.js').resolveEnvVariable and
configManager.getConfig, call isCodebaseAnalysisEnabled with appropriate session
and project path, and restore mocks after each test to avoid leakage.
* fix: remove claude code clear tm commands * readded taskmaster claude code commands previously removed * Update crazy-zebras-drum.md Updated via nudging from task rabbit - changeset now more direct and no longer mentions issues. * claude code remove subtasks added back to assets --------- Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com> Co-authored-by: Jeremy Watt <jeremywatt@Jeremys-Mac-mini.local>
There was a problem hiding this comment.
Actionable comments posted: 34
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.changeset/crazy-zebras-drum.md (1)
1-6: Silence MD041 for all .changeset files
Add one of the following to your markdownlint config to suppress the first-line heading rule for changeset summaries:Option A (in .markdownlintignore)
+.changeset/**Option B (in .markdownlint.json)
{ "default": true, + "MD041": false }
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (5)
.changeset/crazy-zebras-drum.md(1 hunks).claude/commands/tm/remove-subtasks/remove-all-subtasks.md(1 hunks).claude/commands/tm/remove-subtasks/remove-subtasks.md(1 hunks)assets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md(1 hunks)assets/claude/commands/tm/remove-subtasks/remove-subtasks.md(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
.changeset/*.md
📄 CodeRabbit inference engine (.cursor/rules/changeset.mdc)
.changeset/*.md: When runningnpm run changesetornpx changeset add, provide a concise summary of the changes for theCHANGELOG.mdin imperative mood, typically a single line, and not a detailed Git commit message.
The changeset summary should be user-facing, describing what changed in the released version that is relevant to users or consumers of the package.
Do not use your detailed Git commit message body as the changeset summary.
Files:
.changeset/crazy-zebras-drum.md
.changeset/*
📄 CodeRabbit inference engine (.cursor/rules/new_features.mdc)
Create appropriate changesets for new features, use semantic versioning, include tagged system information in release notes, and document breaking changes if any.
Files:
.changeset/crazy-zebras-drum.md
🧠 Learnings (13)
📚 Learning: 2025-08-11T12:30:23.843Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-11T12:30:23.843Z
Learning: Import Task Master's development workflow commands and guidelines; treat the contents of ./.taskmaster/CLAUDE.md as if included in the main CLAUDE.md
Applied to files:
.changeset/crazy-zebras-drum.mdassets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md.claude/commands/tm/remove-subtasks/remove-all-subtasks.mdassets/claude/commands/tm/remove-subtasks/remove-subtasks.md.claude/commands/tm/remove-subtasks/remove-subtasks.md
📚 Learning: 2025-09-01T09:55:15.051Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-01T09:55:15.051Z
Learning: Use `/clear` between tasks to maintain focused context in Claude Code sessions
Applied to files:
.changeset/crazy-zebras-drum.md
📚 Learning: 2025-09-01T09:55:15.050Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-01T09:55:15.050Z
Learning: Applies to assets/.claude/commands/taskmaster-complete.md : Create .claude/commands/taskmaster-complete.md implementing the 5-step task completion workflow
Applied to files:
.changeset/crazy-zebras-drum.mdassets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md.claude/commands/tm/remove-subtasks/remove-all-subtasks.mdassets/claude/commands/tm/remove-subtasks/remove-subtasks.md.claude/commands/tm/remove-subtasks/remove-subtasks.md
📚 Learning: 2025-07-17T21:33:57.585Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1002
File: .changeset/puny-friends-give.md:2-3
Timestamp: 2025-07-17T21:33:57.585Z
Learning: In the eyaltoledano/claude-task-master repository, the MCP server code in mcp-server/src/ is part of the main "task-master-ai" package, not a separate "mcp-server" package. When creating changesets for MCP server changes, use "task-master-ai" as the package name.
Applied to files:
.changeset/crazy-zebras-drum.md
📚 Learning: 2025-07-18T17:19:27.365Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-07-18T17:19:27.365Z
Learning: Use the global `task-master` CLI command instead of directly invoking `node scripts/dev.js` for all task management operations.
Applied to files:
.changeset/crazy-zebras-drum.md
📚 Learning: 2025-09-01T09:55:15.050Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-01T09:55:15.050Z
Learning: Applies to assets/.claude/commands/taskmaster-next.md : Create .claude/commands/taskmaster-next.md implementing the 4-step workflow to find and show the next task
Applied to files:
.changeset/crazy-zebras-drum.mdassets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md.claude/commands/tm/remove-subtasks/remove-all-subtasks.mdassets/claude/commands/tm/remove-subtasks/remove-subtasks.md.claude/commands/tm/remove-subtasks/remove-subtasks.md
📚 Learning: 2025-07-18T17:10:12.881Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dev_workflow.mdc:0-0
Timestamp: 2025-07-18T17:10:12.881Z
Learning: Use the Taskmaster command set (`task-master` CLI or MCP tools) for all task management operations: listing, expanding, updating, tagging, and status changes.
Applied to files:
.changeset/crazy-zebras-drum.mdassets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md.claude/commands/tm/remove-subtasks/remove-all-subtasks.md
📚 Learning: 2025-07-18T17:10:12.881Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dev_workflow.mdc:0-0
Timestamp: 2025-07-18T17:10:12.881Z
Learning: For CLI usage, install Taskmaster globally with `npm install -g task-master-ai` or use locally via `npx task-master-ai ...`.
Applied to files:
.changeset/crazy-zebras-drum.md
📚 Learning: 2025-07-31T21:48:00.389Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#997
File: apps/extension/src/services/task-repository.ts:25-57
Timestamp: 2025-07-31T21:48:00.389Z
Learning: In the eyaltoledano/claude-task-master repository, every task is always part of a tag - there is no concept of untagged tasks. The tag system is mandatory and comprehensive, meaning all tasks exist within a tag context (with 'master' as the default tag if none specified).
Applied to files:
.changeset/crazy-zebras-drum.md
📚 Learning: 2025-07-31T22:08:16.039Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/taskmaster.mdc:0-0
Timestamp: 2025-07-31T22:08:16.039Z
Learning: When removing tasks or subtasks, use the remove-task or remove-subtask commands with caution, as this operation cannot be undone. Consider using 'blocked', 'cancelled', or 'deferred' status instead if you want to keep the task for reference.
Applied to files:
assets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md.claude/commands/tm/remove-subtasks/remove-all-subtasks.mdassets/claude/commands/tm/remove-subtasks/remove-subtasks.md.claude/commands/tm/remove-subtasks/remove-subtasks.md
📚 Learning: 2025-08-03T12:13:33.875Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/test_workflow.mdc:0-0
Timestamp: 2025-08-03T12:13:33.875Z
Learning: Document testing setup and progress in TaskMaster subtasks using task-master update-subtask commands
Applied to files:
assets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md.claude/commands/tm/remove-subtasks/remove-all-subtasks.mdassets/claude/commands/tm/remove-subtasks/remove-subtasks.md.claude/commands/tm/remove-subtasks/remove-subtasks.md
📚 Learning: 2025-07-18T17:19:27.365Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-07-18T17:19:27.365Z
Learning: Clear existing subtasks if needed using `task-master clear-subtasks --id=<id>` before regenerating.
Applied to files:
assets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md.claude/commands/tm/remove-subtasks/remove-all-subtasks.mdassets/claude/commands/tm/remove-subtasks/remove-subtasks.md.claude/commands/tm/remove-subtasks/remove-subtasks.md
📚 Learning: 2025-07-31T22:07:49.716Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-31T22:07:49.716Z
Learning: Applies to scripts/modules/commands.js : Follow the provided structure for removing subtasks, including options for conversion, file path, and regeneration, with detailed error handling.
Applied to files:
assets/claude/commands/tm/remove-subtasks/remove-all-subtasks.mdassets/claude/commands/tm/remove-subtasks/remove-subtasks.md
🪛 LanguageTool
.changeset/crazy-zebras-drum.md
[grammar] ~5-~5: There might be a mistake here.
Context: ...ion with the claude-code /clear command.
(QB_NEW_EN)
assets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md
[grammar] ~1-~1: Use correct spacing
Context: ...ar all subtasks from all tasks globally. ## Global Subtask Clearing Remove all subt...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: ...ks globally. ## Global Subtask Clearing Remove all subtasks across the entire pr...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~5-~5: Use correct spacing
Context: ...ntire project. Use with extreme caution. ## Execution ```bash task-master clear-sub...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: Use correct spacing
Context: ... Use with extreme caution. ## Execution bash task-master clear-subtasks --all ## Pre-Clear Analysis 1. **Project-Wide Su...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~13-~13: Use correct spacing
Context: ...ubtasks --all ## Pre-Clear Analysis 1. **Project-Wide Summary** Global ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ...lear 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 sub...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~28-~28: There might be a mistake here.
Context: ...120 hours ``` 2. Critical Warnings - In-progress subtasks that will lose work...
(QB_NEW_EN)
[grammar] ~29-~29: There might be a mistake here.
Context: ...In-progress subtasks that will lose work - Completed subtasks with valuable history...
(QB_NEW_EN)
[grammar] ~30-~30: There might be a mistake here.
Context: ...Completed subtasks with valuable history - Complex dependency chains - Integrati...
(QB_NEW_EN)
[grammar] ~31-~31: There might be a mistake here.
Context: ...e history - Complex dependency chains - Integration test results ## Double Conf...
(QB_NEW_EN)
[grammar] ~32-~32: Use correct spacing
Context: ...ncy chains - Integration test results ## Double Confirmation ```
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~34-~34: Use correct spacing
Context: ...ion 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 con...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~47-~47: There might be a problem here.
Context: ...KS' to confirm: ``` ## Smart Safeguards - Require explicit confirmation phrase - Create a...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~49-~49: There might be a problem here.
Context: ... - Require explicit confirmation phrase - Create automatic backup - Log all removed data...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~50-~50: There might be a mistake here.
Context: ...rmation phrase - Create automatic backup - Log all removed data - Option to export ...
(QB_NEW_EN_OTHER)
[grammar] ~52-~52: There might be a mistake here.
Context: ...ll removed data - Option to export first ## Use Cases Valid reasons for global clea...
(QB_NEW_EN_OTHER)
[grammar] ~54-~54: Use correct spacing
Context: ...a - Option to export first ## Use Cases Valid reasons for global clear: - Projec...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~56-~56: There might be a mistake here.
Context: ...port first ## Use Cases Valid reasons for global clear: - Project restructuring -...
(QB_NEW_EN)
[grammar] ~56-~56: There might be a mistake here.
Context: ...e Cases Valid reasons for global clear: - Project restructuring - Major pivot in a...
(QB_NEW_EN)
[grammar] ~57-~57: There might be a mistake here.
Context: ...or global clear: - Project restructuring - Major pivot in approach - Starting fresh...
(QB_NEW_EN)
[grammar] ~58-~58: There might be a mistake here.
Context: ... restructuring - Major pivot in approach - Starting fresh breakdown - Switching to ...
(QB_NEW_EN)
[grammar] ~59-~59: There might be a mistake here.
Context: ...t in approach - Starting fresh breakdown - Switching to different task organization...
(QB_NEW_EN)
[grammar] ~60-~60: Use correct spacing
Context: ...Switching to different task organization ## Process 1. Full project analysis 2. Cre...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~62-~62: Use correct spacing
Context: ... different task organization ## Process 1. Full project analysis 2. Create backup f...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~64-~64: There might be a mistake here.
Context: ...on ## Process 1. Full project analysis 2. Create backup file 3. Show detailed impa...
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...l project analysis 2. Create backup file 3. Show detailed impact 4. Require confirma...
(QB_NEW_EN)
[grammar] ~66-~66: There might be a mistake here.
Context: ...eate backup file 3. Show detailed impact 4. Require confirmation 5. Execute removal ...
(QB_NEW_EN)
[grammar] ~67-~67: There might be a mistake here.
Context: ... detailed impact 4. Require confirmation 5. Execute removal 6. Generate summary repo...
(QB_NEW_EN)
[grammar] ~68-~68: There might be a mistake here.
Context: ... Require confirmation 5. Execute removal 6. Generate summary report ## Alternative ...
(QB_NEW_EN)
[grammar] ~69-~69: Use correct spacing
Context: ...ecute removal 6. Generate summary report ## Alternative Suggestions Before clearing...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~71-~71: Use correct spacing
Context: ...mmary report ## Alternative Suggestions Before clearing all: - Export subtasks t...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~73-~73: There might be a mistake here.
Context: ...native Suggestions Before clearing all: - Export subtasks to file - Clear only pen...
(QB_NEW_EN)
[grammar] ~74-~74: There might be a mistake here.
Context: ... clearing all: - Export subtasks to file - Clear only pending subtasks - Clear by t...
(QB_NEW_EN_OTHER)
[grammar] ~77-~77: There might be a mistake here.
Context: ...ask category - Archive instead of delete ## Post-Clear Report ``` Global Subtask Cl...
(QB_NEW_EN_OTHER)
[grammar] ~79-~79: Use correct spacing
Context: ... 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
(QB_NEW_EN_OTHER_ERROR_IDS_5)
.claude/commands/tm/remove-subtasks/remove-all-subtasks.md
[grammar] ~1-~1: Use correct spacing
Context: ...ar all subtasks from all tasks globally. ## Global Subtask Clearing Remove all subt...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: ...ks globally. ## Global Subtask Clearing Remove all subtasks across the entire pr...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~5-~5: Use correct spacing
Context: ...ntire project. Use with extreme caution. ## Execution ```bash task-master clear-sub...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: Use correct spacing
Context: ... Use with extreme caution. ## Execution bash task-master clear-subtasks --all ## Pre-Clear Analysis 1. **Project-Wide Su...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~13-~13: Use correct spacing
Context: ...ubtasks --all ## Pre-Clear Analysis 1. **Project-Wide Summary** Global ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ...lear 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 sub...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~28-~28: There might be a mistake here.
Context: ...120 hours ``` 2. Critical Warnings - In-progress subtasks that will lose work...
(QB_NEW_EN)
[grammar] ~29-~29: There might be a mistake here.
Context: ...In-progress subtasks that will lose work - Completed subtasks with valuable history...
(QB_NEW_EN)
[grammar] ~30-~30: There might be a mistake here.
Context: ...Completed subtasks with valuable history - Complex dependency chains - Integrati...
(QB_NEW_EN)
[grammar] ~31-~31: There might be a mistake here.
Context: ...e history - Complex dependency chains - Integration test results ## Double Conf...
(QB_NEW_EN)
[grammar] ~32-~32: Use correct spacing
Context: ...ncy chains - Integration test results ## Double Confirmation ```
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~34-~34: Use correct spacing
Context: ...ion 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 con...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~47-~47: There might be a problem here.
Context: ...KS' to confirm: ``` ## Smart Safeguards - Require explicit confirmation phrase - Create a...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~49-~49: There might be a problem here.
Context: ... - Require explicit confirmation phrase - Create automatic backup - Log all removed data...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~50-~50: There might be a mistake here.
Context: ...rmation phrase - Create automatic backup - Log all removed data - Option to export ...
(QB_NEW_EN_OTHER)
[grammar] ~52-~52: There might be a mistake here.
Context: ...ll removed data - Option to export first ## Use Cases Valid reasons for global clea...
(QB_NEW_EN_OTHER)
[grammar] ~54-~54: Use correct spacing
Context: ...a - Option to export first ## Use Cases Valid reasons for global clear: - Projec...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~56-~56: There might be a mistake here.
Context: ...port first ## Use Cases Valid reasons for global clear: - Project restructuring -...
(QB_NEW_EN)
[grammar] ~56-~56: There might be a mistake here.
Context: ...e Cases Valid reasons for global clear: - Project restructuring - Major pivot in a...
(QB_NEW_EN)
[grammar] ~57-~57: There might be a mistake here.
Context: ...or global clear: - Project restructuring - Major pivot in approach - Starting fresh...
(QB_NEW_EN)
[grammar] ~58-~58: There might be a mistake here.
Context: ... restructuring - Major pivot in approach - Starting fresh breakdown - Switching to ...
(QB_NEW_EN)
[grammar] ~59-~59: There might be a mistake here.
Context: ...t in approach - Starting fresh breakdown - Switching to different task organization...
(QB_NEW_EN)
[grammar] ~60-~60: Use correct spacing
Context: ...Switching to different task organization ## Process 1. Full project analysis 2. Cre...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~62-~62: Use correct spacing
Context: ... different task organization ## Process 1. Full project analysis 2. Create backup f...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~64-~64: There might be a mistake here.
Context: ...on ## Process 1. Full project analysis 2. Create backup file 3. Show detailed impa...
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...l project analysis 2. Create backup file 3. Show detailed impact 4. Require confirma...
(QB_NEW_EN)
[grammar] ~66-~66: There might be a mistake here.
Context: ...eate backup file 3. Show detailed impact 4. Require confirmation 5. Execute removal ...
(QB_NEW_EN)
[grammar] ~67-~67: There might be a mistake here.
Context: ... detailed impact 4. Require confirmation 5. Execute removal 6. Generate summary repo...
(QB_NEW_EN)
[grammar] ~68-~68: There might be a mistake here.
Context: ... Require confirmation 5. Execute removal 6. Generate summary report ## Alternative ...
(QB_NEW_EN)
[grammar] ~69-~69: Use correct spacing
Context: ...ecute removal 6. Generate summary report ## Alternative Suggestions Before clearing...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~71-~71: Use correct spacing
Context: ...mmary report ## Alternative Suggestions Before clearing all: - Export subtasks t...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~73-~73: There might be a mistake here.
Context: ...native Suggestions Before clearing all: - Export subtasks to file - Clear only pen...
(QB_NEW_EN)
[grammar] ~74-~74: There might be a mistake here.
Context: ... clearing all: - Export subtasks to file - Clear only pending subtasks - Clear by t...
(QB_NEW_EN_OTHER)
[grammar] ~77-~77: There might be a mistake here.
Context: ...ask category - Archive instead of delete ## Post-Clear Report ``` Global Subtask Cl...
(QB_NEW_EN_OTHER)
[grammar] ~79-~79: Use correct spacing
Context: ... 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
(QB_NEW_EN_OTHER_ERROR_IDS_5)
assets/claude/commands/tm/remove-subtasks/remove-subtasks.md
[grammar] ~1-~1: Use correct spacing
Context: ...Clear all subtasks from a specific task. Arguments: $ARGUMENTS (task ID) Remove ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: ...c task. Arguments: $ARGUMENTS (task ID) Remove all subtasks from a parent task a...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~5-~5: Use correct spacing
Context: ...all subtasks from a parent task at once. ## Clearing Subtasks Bulk removal of all s...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: Use correct spacing
Context: ...rent task at once. ## Clearing Subtasks Bulk removal of all subtasks from a pare...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~9-~9: Use correct spacing
Context: ...oval of all subtasks from a parent task. ## Execution ```bash task-master clear-sub...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~11-~11: Use correct spacing
Context: ...btasks from a parent task. ## Execution bash task-master clear-subtasks --id=<task-id> ## Pre-Clear Analysis 1. **Subtask Summary...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~17-~17: Use correct spacing
Context: ...-id= ``` ## Pre-Clear Analysis 1. Subtask Summary - Number of subtask...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~19-~19: There might be a mistake here.
Context: ...Pre-Clear Analysis 1. Subtask Summary - Number of subtasks - Completion statu...
(QB_NEW_EN)
[grammar] ~20-~20: There might be a mistake here.
Context: ...ubtask Summary** - Number of subtasks - Completion status of each - Work alre...
(QB_NEW_EN)
[grammar] ~21-~21: There might be a mistake here.
Context: ... subtasks - Completion status of each - Work already done - Dependencies affe...
(QB_NEW_EN)
[grammar] ~22-~22: There might be a mistake here.
Context: ...on status of each - Work already done - Dependencies affected 2. **Impact Asses...
(QB_NEW_EN)
[grammar] ~23-~23: Use correct spacing
Context: ... already done - Dependencies affected 2. Impact Assessment - Data that will ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~25-~25: There might be a mistake here.
Context: ...dencies affected 2. Impact Assessment - Data that will be lost - Dependencies...
(QB_NEW_EN)
[grammar] ~26-~26: There might be a mistake here.
Context: ...Assessment** - Data that will be lost - Dependencies to be removed - Effect o...
(QB_NEW_EN)
[grammar] ~27-~27: There might be a mistake here.
Context: ... be lost - Dependencies to be removed - Effect on project timeline - Parent t...
(QB_NEW_EN)
[grammar] ~28-~28: There might be a mistake here.
Context: ... removed - Effect on project timeline - Parent task implications ## Confirmatio...
(QB_NEW_EN)
[grammar] ~29-~29: Use correct spacing
Context: ...t timeline - Parent task implications ## Confirmation Required ``` Clear Subtask...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~31-~31: Use correct spacing
Context: ...k 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 s...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~47-~47: Use correct spacing
Context: ...a Continue? (y/n) ``` ## Smart Features - Option to convert to standalone tasks - ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~49-~49: There might be a mistake here.
Context: ... - Option to convert to standalone tasks - Backup task data before clearing - Prese...
(QB_NEW_EN)
[grammar] ~50-~50: There might be a mistake here.
Context: ...tasks - Backup task data before clearing - Preserve completed work history - Update...
(QB_NEW_EN)
[grammar] ~51-~51: There might be a mistake here.
Context: ...earing - Preserve completed work history - Update parent task appropriately ## Pro...
(QB_NEW_EN)
[grammar] ~52-~52: Use correct spacing
Context: ...story - Update parent task appropriately ## Process 1. List all subtasks for confir...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~54-~54: Use correct spacing
Context: ...te parent task appropriately ## Process 1. List all subtasks for confirmation 2. Ch...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~56-~56: There might be a mistake here.
Context: ...s 1. List all subtasks for confirmation 2. Check for in-progress work 3. Remove all...
(QB_NEW_EN_OTHER)
[grammar] ~57-~57: There might be a mistake here.
Context: ...nfirmation 2. Check for in-progress work 3. Remove all subtasks 4. Update parent tas...
(QB_NEW_EN_OTHER)
[grammar] ~58-~58: There might be a mistake here.
Context: ... in-progress work 3. Remove all subtasks 4. Update parent task 5. Clean up dependenc...
(QB_NEW_EN_OTHER)
[grammar] ~59-~59: There might be a mistake here.
Context: ...emove all subtasks 4. Update parent task 5. Clean up dependencies ## Alternative Op...
(QB_NEW_EN_OTHER)
[grammar] ~60-~60: There might be a mistake here.
Context: ...ate parent task 5. Clean up dependencies ## Alternative Options Suggest alternative...
(QB_NEW_EN_OTHER)
[grammar] ~62-~62: Use correct spacing
Context: ... up dependencies ## Alternative Options Suggest alternatives: - Convert importan...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~64-~64: There might be a mistake here.
Context: ...ternative Options Suggest alternatives: - Convert important subtasks to tasks - Ke...
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...s: - Convert important subtasks to tasks - Keep completed subtasks - Archive instea...
(QB_NEW_EN_OTHER)
[grammar] ~66-~66: There might be a mistake here.
Context: ...tasks to tasks - Keep completed subtasks - Archive instead of delete - Export subta...
(QB_NEW_EN_OTHER)
[grammar] ~67-~67: There might be a mistake here.
Context: ...ted subtasks - Archive instead of delete - Export subtask data first ## Post-Clear...
(QB_NEW_EN_OTHER)
[grammar] ~68-~68: There might be a mistake here.
Context: ...ad of delete - Export subtask data first ## Post-Clear - Show updated parent task -...
(QB_NEW_EN_OTHER)
[grammar] ~70-~70: Use correct spacing
Context: ...Export subtask data first ## Post-Clear - Show updated parent task - Recalculate t...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~72-~72: There might be a mistake here.
Context: ...# Post-Clear - Show updated parent task - Recalculate time estimates - Update task...
(QB_NEW_EN_OTHER)
[grammar] ~73-~73: There might be a mistake here.
Context: ...parent task - Recalculate time estimates - Update task complexity - Suggest next st...
(QB_NEW_EN_OTHER)
[grammar] ~74-~74: There might be a mistake here.
Context: ... time estimates - Update task complexity - Suggest next steps ## Example ``` /pro...
(QB_NEW_EN_OTHER)
[grammar] ~75-~75: There might be a mistake here.
Context: ...ate task complexity - Suggest next steps ## Example ``` /project:tm/clear-subtasks ...
(QB_NEW_EN_OTHER)
[grammar] ~77-~77: Use correct spacing
Context: ...plexity - 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
(QB_NEW_EN_OTHER_ERROR_IDS_5)
.claude/commands/tm/remove-subtasks/remove-subtasks.md
[grammar] ~1-~1: Use correct spacing
Context: ...Clear all subtasks from a specific task. Arguments: $ARGUMENTS (task ID) Remove ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: ...c task. Arguments: $ARGUMENTS (task ID) Remove all subtasks from a parent task a...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~5-~5: Use correct spacing
Context: ...all subtasks from a parent task at once. ## Clearing Subtasks Bulk removal of all s...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: Use correct spacing
Context: ...rent task at once. ## Clearing Subtasks Bulk removal of all subtasks from a pare...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~9-~9: Use correct spacing
Context: ...oval of all subtasks from a parent task. ## Execution ```bash task-master clear-sub...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~11-~11: Use correct spacing
Context: ...btasks from a parent task. ## Execution bash task-master clear-subtasks --id=<task-id> ## Pre-Clear Analysis 1. **Subtask Summary...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~17-~17: Use correct spacing
Context: ...-id= ``` ## Pre-Clear Analysis 1. Subtask Summary - Number of subtask...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~19-~19: There might be a mistake here.
Context: ...Pre-Clear Analysis 1. Subtask Summary - Number of subtasks - Completion statu...
(QB_NEW_EN)
[grammar] ~20-~20: There might be a mistake here.
Context: ...ubtask Summary** - Number of subtasks - Completion status of each - Work alre...
(QB_NEW_EN)
[grammar] ~21-~21: There might be a mistake here.
Context: ... subtasks - Completion status of each - Work already done - Dependencies affe...
(QB_NEW_EN)
[grammar] ~22-~22: There might be a mistake here.
Context: ...on status of each - Work already done - Dependencies affected 2. **Impact Asses...
(QB_NEW_EN)
[grammar] ~23-~23: Use correct spacing
Context: ... already done - Dependencies affected 2. Impact Assessment - Data that will ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~25-~25: There might be a mistake here.
Context: ...dencies affected 2. Impact Assessment - Data that will be lost - Dependencies...
(QB_NEW_EN)
[grammar] ~26-~26: There might be a mistake here.
Context: ...Assessment** - Data that will be lost - Dependencies to be removed - Effect o...
(QB_NEW_EN)
[grammar] ~27-~27: There might be a mistake here.
Context: ... be lost - Dependencies to be removed - Effect on project timeline - Parent t...
(QB_NEW_EN)
[grammar] ~28-~28: There might be a mistake here.
Context: ... removed - Effect on project timeline - Parent task implications ## Confirmatio...
(QB_NEW_EN)
[grammar] ~29-~29: Use correct spacing
Context: ...t timeline - Parent task implications ## Confirmation Required ``` Clear Subtask...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~31-~31: Use correct spacing
Context: ...k 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 s...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~47-~47: Use correct spacing
Context: ...a Continue? (y/n) ``` ## Smart Features - Option to convert to standalone tasks - ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~49-~49: There might be a mistake here.
Context: ... - Option to convert to standalone tasks - Backup task data before clearing - Prese...
(QB_NEW_EN)
[grammar] ~50-~50: There might be a mistake here.
Context: ...tasks - Backup task data before clearing - Preserve completed work history - Update...
(QB_NEW_EN)
[grammar] ~51-~51: There might be a mistake here.
Context: ...earing - Preserve completed work history - Update parent task appropriately ## Pro...
(QB_NEW_EN)
[grammar] ~52-~52: Use correct spacing
Context: ...story - Update parent task appropriately ## Process 1. List all subtasks for confir...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~54-~54: Use correct spacing
Context: ...te parent task appropriately ## Process 1. List all subtasks for confirmation 2. Ch...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~56-~56: There might be a mistake here.
Context: ...s 1. List all subtasks for confirmation 2. Check for in-progress work 3. Remove all...
(QB_NEW_EN_OTHER)
[grammar] ~57-~57: There might be a mistake here.
Context: ...nfirmation 2. Check for in-progress work 3. Remove all subtasks 4. Update parent tas...
(QB_NEW_EN_OTHER)
[grammar] ~58-~58: There might be a mistake here.
Context: ... in-progress work 3. Remove all subtasks 4. Update parent task 5. Clean up dependenc...
(QB_NEW_EN_OTHER)
[grammar] ~59-~59: There might be a mistake here.
Context: ...emove all subtasks 4. Update parent task 5. Clean up dependencies ## Alternative Op...
(QB_NEW_EN_OTHER)
[grammar] ~60-~60: There might be a mistake here.
Context: ...ate parent task 5. Clean up dependencies ## Alternative Options Suggest alternative...
(QB_NEW_EN_OTHER)
[grammar] ~62-~62: Use correct spacing
Context: ... up dependencies ## Alternative Options Suggest alternatives: - Convert importan...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~64-~64: There might be a mistake here.
Context: ...ternative Options Suggest alternatives: - Convert important subtasks to tasks - Ke...
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...s: - Convert important subtasks to tasks - Keep completed subtasks - Archive instea...
(QB_NEW_EN_OTHER)
[grammar] ~66-~66: There might be a mistake here.
Context: ...tasks to tasks - Keep completed subtasks - Archive instead of delete - Export subta...
(QB_NEW_EN_OTHER)
[grammar] ~67-~67: There might be a mistake here.
Context: ...ted subtasks - Archive instead of delete - Export subtask data first ## Post-Clear...
(QB_NEW_EN_OTHER)
[grammar] ~68-~68: There might be a mistake here.
Context: ...ad of delete - Export subtask data first ## Post-Clear - Show updated parent task -...
(QB_NEW_EN_OTHER)
[grammar] ~70-~70: Use correct spacing
Context: ...Export subtask data first ## Post-Clear - Show updated parent task - Recalculate t...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~72-~72: There might be a mistake here.
Context: ...# Post-Clear - Show updated parent task - Recalculate time estimates - Update task...
(QB_NEW_EN_OTHER)
[grammar] ~73-~73: There might be a mistake here.
Context: ...parent task - Recalculate time estimates - Update task complexity - Suggest next st...
(QB_NEW_EN_OTHER)
[grammar] ~74-~74: There might be a mistake here.
Context: ... time estimates - Update task complexity - Suggest next steps ## Example ``` /pro...
(QB_NEW_EN_OTHER)
[grammar] ~75-~75: There might be a mistake here.
Context: ...ate task complexity - Suggest next steps ## Example ``` /project:tm/clear-subtasks ...
(QB_NEW_EN_OTHER)
[grammar] ~77-~77: Use correct spacing
Context: ...plexity - 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
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🪛 markdownlint-cli2 (0.17.2)
.changeset/crazy-zebras-drum.md
5-5: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
assets/claude/commands/tm/remove-subtasks/remove-all-subtasks.md
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
33-33: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
65-65: Lists should be surrounded by blank lines
(MD032, blanks-around-lists)
79-79: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
86-86: Files should end with a single newline character
(MD047, single-trailing-newline)
.claude/commands/tm/remove-subtasks/remove-all-subtasks.md
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
16-16: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
16-16: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
36-36: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
57-57: Lists should be surrounded by blank lines
(MD032, blanks-around-lists)
74-74: Lists should be surrounded by blank lines
(MD032, blanks-around-lists)
81-81: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
93-93: Files should end with a single newline character
(MD047, single-trailing-newline)
.claude/commands/tm/remove-subtasks/remove-subtasks.md
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
33-33: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
65-65: Lists should be surrounded by blank lines
(MD032, blanks-around-lists)
79-79: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
86-86: Files should end with a single newline character
(MD047, single-trailing-newline)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: test
- GitHub Check: build
- GitHub Check: typecheck
- GitHub Check: test
🔇 Additional comments (2)
.changeset/crazy-zebras-drum.md (1)
1-3: Front‑matter looks correct; package and bump type align with guidelines.Uses "task-master-ai" and a minor bump, matching our repo convention for MCP/server changes.
.claude/commands/tm/remove-subtasks/remove-subtasks.md (1)
13-16: LGTM: primary usage example is clear.
| "task-master-ai": minor | ||
| --- | ||
|
|
||
| Restore Taskmaster claude-code commands and move clear commands under /remove to avoid collision with the claude-code /clear command. |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Tighten the one‑line, user‑facing summary (imperative + grammar).
Rephrase for clarity, correct capitalization, and collision wording.
-Restore Taskmaster claude-code commands and move clear commands under /remove to avoid collision with the claude-code /clear command.
+Restore Taskmaster Claude Code commands; move "clear" commands under /remove to avoid a collision with Claude Code's /clear.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Restore Taskmaster claude-code commands and move clear commands under /remove to avoid collision with the claude-code /clear command. | |
| Restore Taskmaster Claude Code commands; move "clear" commands under /remove to avoid a collision with Claude Code's /clear. |
🧰 Tools
🪛 LanguageTool
[grammar] ~5-~5: There might be a mistake here.
Context: ...ion with the claude-code /clear command.
(QB_NEW_EN)
🪛 markdownlint-cli2 (0.17.2)
5-5: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
In .changeset/crazy-zebras-drum.md around line 5, the one-line user-facing
summary should be tightened to an imperative verb form, fix capitalization of
product/command names, and clarify the collision wording; rewrite the sentence
to be concise and clear (for example: "Restore Taskmaster claude-code commands;
move clear commands to /remove to avoid colliding with the claude-code /clear
command."), ensuring it reads as a single imperative summary.
| @@ -0,0 +1,93 @@ | |||
| Clear all subtasks from all tasks globally. | |||
There was a problem hiding this comment.
🛠️ Refactor suggestion
Add a top-level heading (MD041)
- Clear all subtasks from all tasks globally.
+ # Clear all subtasks from all tasks globally📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Clear all subtasks from all tasks globally. | |
| # Clear all subtasks from all tasks globally |
🧰 Tools
🪛 LanguageTool
[grammar] ~1-~1: Use correct spacing
Context: ...ar all subtasks from all tasks globally. ## Global Subtask Clearing Remove all subt...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🪛 markdownlint-cli2 (0.17.2)
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
.claude/commands/tm/remove-subtasks/remove-all-subtasks.md lines 1-1: the file
is missing a top-level Markdown heading (MD041); add a level-1 heading as the
very first line of the file to satisfy the rule — e.g., insert a clear H1 that
describes the command (such as "Remove All Subtasks" or similar) so the document
begins with a top-level heading.
|
|
||
| ## Global Subtask Clearing | ||
|
|
||
| Remove all subtasks across the entire project. Use with extreme caution. |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Cross-link safer alternatives per workflow guidance
Reference statuses like “blocked/cancelled/deferred” as non-destructive options, aligning with team workflow.
- Remove all subtasks across the entire project. Use with extreme caution.
+ Remove all subtasks across the entire project. Use with extreme caution. When in doubt, prefer changing status to "blocked", "cancelled", or "deferred" instead of deletion.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Remove all subtasks across the entire project. Use with extreme caution. | |
| Remove all subtasks across the entire project. Use with extreme caution. When in doubt, prefer changing status to "blocked", "cancelled", or "deferred" instead of deletion. |
🧰 Tools
🪛 LanguageTool
[grammar] ~5-~5: Use correct spacing
Context: ...ntire project. Use with extreme caution. ## Execution ```bash task-master clear-sub...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In .claude/commands/tm/remove-subtasks/remove-all-subtasks.md around line 5, the
command text only warns "Use with extreme caution" but does not cross-link or
mention safer, non-destructive workflow alternatives; update the doc to add
explicit references (and where applicable, links) to the safer statuses
"blocked", "cancelled", and "deferred" as preferred alternatives and briefly
note when to use each so readers choose non-destructive options instead of
removing subtasks.
| task-master clear-subtasks --all | ||
| ``` |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Confirm the CLI flag is implemented as documented
Validate that task-master clear-subtasks --all exists and matches behavior (double confirmation, backup path).
I can align this doc with the actual CLI help output once you confirm the current command signature and flags.
🤖 Prompt for AI Agents
In .claude/commands/tm/remove-subtasks/remove-all-subtasks.md around lines 10 to
11, the docs reference the CLI invocation "task-master clear-subtasks --all" but
the codebase needs to be verified/updated to match: check the command
registration for "clear-subtasks" and ensure a boolean "--all" flag exists in
the command parser, implement the flag to perform full clear behavior (prompt
double confirmation and create a backup file at the configured backup path
before deletion), and update the command help text and tests to reflect the
final signature and behavior so the documentation and CLI output match.
| ``` | ||
| Global Subtask Summary | ||
| ━━━━━━━━━━━━━━━━━━━━ | ||
| Total parent tasks: 12 | ||
| Total subtasks: 47 | ||
| - Completed: 15 | ||
| - In-progress: 8 | ||
| - Pending: 24 | ||
|
|
||
| Work at risk: ~120 hours | ||
| ``` |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Add language to fenced block and surround with blank lines (MD040/MD031)
Label the embedded summary as text.
- ```
+ ```text
Global Subtask Summary
━━━━━━━━━━━━━━━━━━━━
Total parent tasks: 12
Total subtasks: 47
- Completed: 15
- In-progress: 8
- Pending: 24
Work at risk: ~120 hours
```🧰 Tools
🪛 markdownlint-cli2 (0.17.2)
16-16: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
16-16: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
In .claude/commands/tm/remove-subtasks/remove-all-subtasks.md around lines 16 to
26 the fenced code block containing the "Global Subtask Summary" lacks a
language label and surrounding blank lines, triggering MD040/MD031 checks;
update the markdown to add a language tag (use "text") after the opening
backticks and ensure there's a blank line before and after the fenced block so
it becomes: a blank line, ```text, the summary, ```, and then a blank line to
satisfy linting.
| @@ -0,0 +1,86 @@ | |||
| Clear all subtasks from a specific task. | |||
|
|
|||
| Arguments: $ARGUMENTS (task ID) | |||
There was a problem hiding this comment.
Replace placeholder with the real CLI argument
The $ARGUMENTS placeholder leaks template text. Specify the actual flag used elsewhere in the doc.
- Arguments: $ARGUMENTS (task ID)
+ Arguments: --id=<task-id>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Arguments: $ARGUMENTS (task ID) | |
| Arguments: --id=<task-id> |
🧰 Tools
🪛 LanguageTool
[grammar] ~3-~3: Use correct spacing
Context: ...c task. Arguments: $ARGUMENTS (task ID) Remove all subtasks from a parent task a...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In assets/claude/commands/tm/remove-subtasks/remove-subtasks.md around line 3,
the documentation contains the placeholder "$ARGUMENTS" instead of the real CLI
argument; replace "$ARGUMENTS (task ID)" with the actual flag used elsewhere in
the docs (for example "--task-id <id>" or the project's canonical arg name),
ensuring it matches casing and formatting used across other command docs and
includes a short descriptor like "(task ID)".
| ``` | ||
| 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) | ||
| ``` |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Specify a language for the confirmation fence to satisfy markdownlint (MD040) and improve rendering
Label this as plain text.
-```
+```text
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)
<details>
<summary>🤖 Prompt for AI Agents</summary>
In assets/claude/commands/tm/remove-subtasks/remove-subtasks.md around lines 33
to 45, the markdown code fence for the confirmation block lacks a language
specifier; update the opening fence to specify plain text (for example text) so markdownlint MD040 is satisfied and rendering improves, keeping the fence content unchanged and ensuring the closing remains present.
</details>
<!-- fingerprinting:phantom:triton:chinchilla -->
<!-- This is an auto-generated comment by CodeRabbit -->
| - Option to convert to standalone tasks | ||
| - Backup task data before clearing | ||
| - Preserve completed work history | ||
| - Update parent task appropriately | ||
|
|
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Clarify whether “Smart Features” exist as flags today
If these are implemented, document the exact flags; if planned, mark them explicitly to avoid misleading users.
I can update this section to list real flags (e.g., --backup, --convert-to-task) once you confirm the current CLI surface.
🧰 Tools
🪛 LanguageTool
[grammar] ~49-~49: There might be a mistake here.
Context: ... - Option to convert to standalone tasks - Backup task data before clearing - Prese...
(QB_NEW_EN)
[grammar] ~50-~50: There might be a mistake here.
Context: ...tasks - Backup task data before clearing - Preserve completed work history - Update...
(QB_NEW_EN)
[grammar] ~51-~51: There might be a mistake here.
Context: ...earing - Preserve completed work history - Update parent task appropriately ## Pro...
(QB_NEW_EN)
[grammar] ~52-~52: Use correct spacing
Context: ...story - Update parent task appropriately ## Process 1. List all subtasks for confir...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🤖 Prompt for AI Agents
In assets/claude/commands/tm/remove-subtasks/remove-subtasks.md around lines
49–53, the "Smart Features" bullet list is ambiguous about whether these are
implemented CLI flags; update the docs so each item either lists the exact
current flag name and short behavior (e.g., --backup: backup task data before
clearing; --convert-to-task: convert subtask to standalone task) or is
explicitly marked as planned/coming-soon with a TODO and no flag examples, and
if you claim flags exist, verify the CLI surface and replace placeholders with
the real flag names and their short descriptions.
| Suggest alternatives: | ||
| - Convert important subtasks to tasks | ||
| - Keep completed subtasks | ||
| - Archive instead of delete | ||
| - Export subtask data first | ||
|
|
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Add a blank line before the list to quiet MD032 (lists surrounded by blank lines) and improve readability
- Suggest alternatives:
+ Suggest alternatives:
- Convert important subtasks to tasks
- Keep completed subtasks
- Archive instead of delete
- Export subtask data first📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Suggest alternatives: | |
| - Convert important subtasks to tasks | |
| - Keep completed subtasks | |
| - Archive instead of delete | |
| - Export subtask data first | |
| Suggest alternatives: | |
| - Convert important subtasks to tasks | |
| - Keep completed subtasks | |
| - Archive instead of delete | |
| - Export subtask data first |
🧰 Tools
🪛 LanguageTool
[grammar] ~64-~64: There might be a mistake here.
Context: ...ternative Options Suggest alternatives: - Convert important subtasks to tasks - Ke...
(QB_NEW_EN)
[grammar] ~65-~65: There might be a mistake here.
Context: ...s: - Convert important subtasks to tasks - Keep completed subtasks - Archive instea...
(QB_NEW_EN_OTHER)
[grammar] ~66-~66: There might be a mistake here.
Context: ...tasks to tasks - Keep completed subtasks - Archive instead of delete - Export subta...
(QB_NEW_EN_OTHER)
[grammar] ~67-~67: There might be a mistake here.
Context: ...ted subtasks - Archive instead of delete - Export subtask data first ## Post-Clear...
(QB_NEW_EN_OTHER)
[grammar] ~68-~68: There might be a mistake here.
Context: ...ad of delete - Export subtask data first ## Post-Clear - Show updated parent task -...
(QB_NEW_EN_OTHER)
🤖 Prompt for AI Agents
In assets/claude/commands/tm/remove-subtasks/remove-subtasks.md around lines 64
to 69, the markdown list is not preceded by a blank line which triggers MD032
and hurts readability; insert a single blank line immediately before the "-
Convert important subtasks to tasks" line so the list is separated from the
preceding paragraph, then run a markdown lint to confirm MD032 is resolved.
| /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 | ||
| ``` No newline at end of file |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Unify CLI example with earlier syntax
The example uses a different invocation form. Align with the documented flag form.
- /project:tm/clear-subtasks 5
+ task-master clear-subtasks --id=5📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| /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 | |
| ``` |
🤖 Prompt for AI Agents
In assets/claude/commands/tm/remove-subtasks/remove-subtasks.md around lines 80
to 86, the CLI example uses the alternate invocation "/project:tm/clear-subtasks
5"; update the example to use the documented flag form instead by replacing that
invocation with the flag-style syntax (for example: use --project=tm
clear-subtasks 5 or --project tm clear-subtasks 5 to match the rest of the
docs), and ensure the rest of the output examples remain unchanged.
eyaltoledano
left a comment
There was a problem hiding this comment.
lgtm provided this is fully tested and works.
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/claude-docs-updater.yml (1)
101-107: Fix unsafe commit message injection (quotes/newlines will break -m string).Inserting a (JSON-encoded) commit message inside a single
-m "..."causes quoting breakage. Build the message via heredoc and commit with-F.- git commit -m "docs: auto-update documentation based on changes in next branch - - This PR was automatically generated to update documentation based on recent changes. - - Original commit: ${{ inputs.commit_message }} - - Co-authored-by: Claude <claude-assistant@anthropic.com>" + cat > .git/COMMIT_MSG <<'MSG' +docs: auto-update documentation based on changes in next branch + +This PR was automatically generated to update documentation based on recent changes. + +Original message: +MSG + # Append decoded commit message safely + printf "%s\n" "${{ fromJSON(inputs.commit_message) }}" >> .git/COMMIT_MSG + printf "\nCo-authored-by: Claude <claude-assistant@anthropic.com>\n" >> .git/COMMIT_MSG + git commit -F .git/COMMIT_MSG + rm -f .git/COMMIT_MSG
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (2)
.github/workflows/claude-docs-trigger.yml(1 hunks).github/workflows/claude-docs-updater.yml(5 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1178
File: packages/tm-core/src/auth/config.ts:5-7
Timestamp: 2025-09-02T21:51:27.921Z
Learning: The user Crunchyman-ralph prefers not to use node: scheme imports (e.g., 'node:os', 'node:path') for Node.js core modules and considers suggestions to change bare imports to node: scheme as too nitpicky.
🪛 YAMLlint (1.37.1)
.github/workflows/claude-docs-trigger.yml
[warning] 3-3: truthy value should be one of [false, true]
(truthy)
[warning] 24-24: too few spaces before comment: expected 2
(comments)
[error] 57-57: no new line character at the end of file
(new-line-at-end-of-file)
.github/workflows/claude-docs-updater.yml
[warning] 35-35: too few spaces before comment: expected 2
(comments)
[error] 127-127: trailing spaces
(trailing-spaces)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
- GitHub Check: test
- GitHub Check: typecheck
- GitHub Check: build
- GitHub Check: test
- GitHub Check: update-docs
🔇 Additional comments (2)
.github/workflows/claude-docs-updater.yml (1)
26-29: Principle of least privilege: confirm if issues: write is required.If the workflow only opens PRs,
issues: writecan likely be dropped..github/workflows/claude-docs-trigger.yml (1)
30-42: I’ve added a script to locate and inspect your workflow’s checkout and diff usage. This will confirm whetherHEAD^is truly brittle in your setup.
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| fetch-depth: 2 # Need previous commit for comparison |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
YAML lint: two spaces before inline comment.
- fetch-depth: 2 # Need previous commit for comparison
+ fetch-depth: 2 # Need previous commit for comparison📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| fetch-depth: 2 # Need previous commit for comparison | |
| fetch-depth: 2 # Need previous commit for comparison |
🧰 Tools
🪛 YAMLlint (1.37.1)
[warning] 24-24: too few spaces before comment: expected 2
(comments)
🤖 Prompt for AI Agents
.github/workflows/claude-docs-trigger.yml around line 24: the inline comment
after the fetch-depth value has only one space before the '#' which fails the
YAML lint rule requiring two spaces; update the line to have two spaces between
the value and the '#' (i.e., add one more space before the inline comment) and
ensure spacing style matches other inline comments in the file.
| gh workflow run claude-docs-updater.yml \ | ||
| --ref next \ | ||
| -f commit_sha="${{ steps.changed-files.outputs.commit_sha }}" \ | ||
| -f commit_message=${{ steps.changed-files.outputs.commit_message }} \ | ||
| -f changed_files=${{ steps.changed-files.outputs.changed_files }} \ | ||
| -f commit_diff=${{ steps.changed-files.outputs.commit_diff }} No newline at end of file |
There was a problem hiding this comment.
Quote -f values when invoking gh; unquoted JSON strings will break the command.
The outputs contain spaces/newlines and quotes. Wrap each value.
- gh workflow run claude-docs-updater.yml \
- --ref next \
- -f commit_sha="${{ steps.changed-files.outputs.commit_sha }}" \
- -f commit_message=${{ steps.changed-files.outputs.commit_message }} \
- -f changed_files=${{ steps.changed-files.outputs.changed_files }} \
- -f commit_diff=${{ steps.changed-files.outputs.commit_diff }}
+ gh workflow run claude-docs-updater.yml \
+ --ref next \
+ -f commit_sha="${{ steps.changed-files.outputs.commit_sha }}" \
+ -f commit_message="${{ steps.changed-files.outputs.commit_message }}" \
+ -f changed_files="${{ steps.changed-files.outputs.changed_files }}" \
+ -f commit_diff="${{ steps.changed-files.outputs.commit_diff }}"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| gh workflow run claude-docs-updater.yml \ | |
| --ref next \ | |
| -f commit_sha="${{ steps.changed-files.outputs.commit_sha }}" \ | |
| -f commit_message=${{ steps.changed-files.outputs.commit_message }} \ | |
| -f changed_files=${{ steps.changed-files.outputs.changed_files }} \ | |
| -f commit_diff=${{ steps.changed-files.outputs.commit_diff }} | |
| gh workflow run claude-docs-updater.yml \ | |
| --ref next \ | |
| -f commit_sha="${{ steps.changed-files.outputs.commit_sha }}" \ | |
| -f commit_message="${{ steps.changed-files.outputs.commit_message }}" \ | |
| -f changed_files="${{ steps.changed-files.outputs.changed_files }}" \ | |
| -f commit_diff="${{ steps.changed-files.outputs.commit_diff }}" |
🧰 Tools
🪛 YAMLlint (1.37.1)
[error] 57-57: no new line character at the end of file
(new-line-at-end-of-file)
🤖 Prompt for AI Agents
.github/workflows/claude-docs-trigger.yml around lines 52 to 57: the gh workflow
run invocation passes -f values unquoted which breaks when outputs contain
spaces, newlines or quotes; update the command to wrap each -f value in double
quotes (e.g. -f commit_sha="${{ steps.changed-files.outputs.commit_sha }}",
etc.) so each parameter is passed as a single quoted string and preserves
embedded whitespace/quotes.
| -f commit_sha="${{ steps.changed-files.outputs.commit_sha }}" \ | ||
| -f commit_message=${{ steps.changed-files.outputs.commit_message }} \ | ||
| -f changed_files=${{ steps.changed-files.outputs.changed_files }} \ | ||
| -f commit_diff=${{ steps.changed-files.outputs.commit_diff }} No newline at end of file |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Add trailing newline at EOF.
🧰 Tools
🪛 YAMLlint (1.37.1)
[error] 57-57: no new line character at the end of file
(new-line-at-end-of-file)
🤖 Prompt for AI Agents
.github/workflows/claude-docs-trigger.yml around line 57: the file is missing a
trailing newline at EOF; open the file and add a single newline character at the
end of the file (ensure the last line ends with '\n' and avoid adding extra
blank lines or trailing whitespace), then save and commit the change.
| git diff HEAD^ HEAD --stat >> $GITHUB_OUTPUT | ||
| echo "EOF" >> $GITHUB_OUTPUT | ||
| ref: next | ||
| fetch-depth: 0 # Need full history to checkout specific commit |
There was a problem hiding this comment.
🧹 Nitpick (assertive)
YAML lint: ensure two spaces before inline comment.
- fetch-depth: 0 # Need full history to checkout specific commit
+ fetch-depth: 0 # Need full history to checkout specific commit📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| fetch-depth: 0 # Need full history to checkout specific commit | |
| fetch-depth: 0 # Need full history to checkout specific commit |
🧰 Tools
🪛 YAMLlint (1.37.1)
[warning] 35-35: too few spaces before comment: expected 2
(comments)
🤖 Prompt for AI Agents
.github/workflows/claude-docs-updater.yml around line 35: the inline comment on
the fetch-depth line uses a single space before the '#' which fails YAML
linting; update the line so there are exactly two spaces before the inline
comment (e.g., replace the single space with two spaces between the value and
the '#' ), preserving existing indentation and content.
| - Commit: ${{ inputs.commit_message }} | ||
| - Changed files: | ||
| ${{ steps.changed-files.outputs.changed_files }} | ||
| ${{ inputs.changed_files }} | ||
|
|
||
| - Changes summary: | ||
| ${{ steps.changed-files.outputs.commit_diff }} | ||
| ${{ inputs.commit_diff }} | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion
Decode JSON-escaped inputs to avoid escaped quotes/newlines in prompts and PR body.
commit_message, changed_files, and commit_diff are JSON-encoded upstream; rendering them directly will show quotes and \n escapes. Use fromJSON(...) at consumption sites.
- - Commit: ${{ inputs.commit_message }}
+ - Commit: ${{ fromJSON(inputs.commit_message) }}
- - Changed files:
- ${{ inputs.changed_files }}
+ - Changed files:
+ ${{ fromJSON(inputs.changed_files) }}
- - Changes summary:
- ${{ inputs.commit_diff }}
+ - Changes summary:
+ ${{ fromJSON(inputs.commit_diff) }}
@@
- **Commit:** ${{ inputs.commit_sha }}
- **Message:** ${{ inputs.commit_message }}
+ **Commit:** ${{ inputs.commit_sha }}
+ **Message:** ${{ fromJSON(inputs.commit_message) }}
@@
- ```
- ${{ inputs.changed_files }}
- ```
+ ```
+ ${{ fromJSON(inputs.changed_files) }}
+ ```Also applies to: 125-131
🤖 Prompt for AI Agents
.github/workflows/claude-docs-updater.yml around lines 63-69 (and similarly
125-131): the workflow is inserting JSON-encoded inputs directly which leaves
escaped quotes and \n in the rendered prompts/PR body; decode the JSON-escaped
inputs at consumption by replacing direct references with fromJSON(...) so use
fromJSON(inputs.commit_message), fromJSON(inputs.changed_files), and
fromJSON(inputs.commit_diff) where they are rendered (and ensure they are placed
inside the appropriate markdown/code blocks or multi-line YAML values so
newlines render correctly).
| **Message:** ${{ steps.changed-files.outputs.commit_message }} | ||
| **Commit:** ${{ inputs.commit_sha }} | ||
| **Message:** ${{ inputs.commit_message }} | ||
|
|
There was a problem hiding this comment.
🧹 Nitpick (assertive)
Remove trailing whitespace at Line 127.
🧰 Tools
🪛 YAMLlint (1.37.1)
[error] 127-127: trailing spaces
(trailing-spaces)
🤖 Prompt for AI Agents
In .github/workflows/claude-docs-updater.yml around line 127, there is trailing
whitespace; remove the trailing space(s) at the end of that line so the line
ends cleanly (and optionally trim any other trailing whitespace in the file or
run your editor's "trim trailing whitespace" action) then save the file.
What type of PR is this?
Description
Related Issues
How to Test This
# Example commands or stepsExpected result:
Contributor Checklist
npm run changesetnpm testnpm run format-check(ornpm run formatto fix)Changelog Entry
For Maintainers
Summary by CodeRabbit
New Features
Documentation
Chores