Skip to content

fix: return actual subtask instead of parent task for subtask IDs#1358

Merged
Crunchyman-ralph merged 4 commits intonextfrom
claude/issue-1355-20251028-1743
Oct 30, 2025
Merged

fix: return actual subtask instead of parent task for subtask IDs#1358
Crunchyman-ralph merged 4 commits intonextfrom
claude/issue-1355-20251028-1743

Conversation

@Crunchyman-ralph
Copy link
Collaborator

@Crunchyman-ralph Crunchyman-ralph commented Oct 28, 2025

When requesting a subtask using dot notation (e.g., 4.1), the tasks.get() method was incorrectly returning the parent task instead of the specific subtask. This fix ensures that subtask requests return only the requested subtask, not the entire parent task with all subtasks.

Fixes #1355

Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes

    • Return the specifically requested subtask when found; invalid subtask references now yield null instead of returning the parent.
    • Subtask notation restricted to single-level (e.g., "1.2").
  • Improvements

    • CLI consistently shows the originally requested task/subtask ID in headers, properties, and suggested actions.
    • Task listings, displays, and tables accept and render subtasks alongside regular tasks.
    • Safer typing: task lookup now exposes a discriminated union distinguishing tasks vs subtasks.
  • Chores

    • Autopilot CLI command and its related interfaces removed.

@changeset-bot
Copy link

changeset-bot bot commented Oct 28, 2025

🦋 Changeset detected

Latest commit: 736ba83

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 28, 2025

Walkthrough

tasks.get() now returns a discriminated union that can return a Subtask when a single-level dotted ID (e.g., "1.1") is requested; the CLI/UI propagate the original requested dotted ID so subtasks render and actions reference the dotted identifier. Autopilot CLI was removed.

Changes

Cohort / File(s) Summary
Core task retrieval
packages/tm-core/src/modules/tasks/tasks-domain.ts
Added Subtask import; get(taskId, tag?) now returns a discriminated union: `{ task: Task; isSubtask: false }
CLI show command
apps/cli/src/commands/show.command.ts
Added Subtask import; widened ShowTaskResult.task to `Task
UI task detail display
apps/cli/src/ui/components/task-detail.component.ts
Added Subtask import; displayTaskProperties and displayTaskDetails accept `Task
Autopilot CLI (removed)
apps/cli/src/commands/autopilot.command.ts
Entire file removed: AutopilotCommand class, related interfaces, methods, and public API surface deleted; Autopilot CLI export removed from apps/cli/src/index.ts.
UI utilities
apps/cli/src/utils/ui.ts
createTaskTable parameter widened from Task[] to `(Task
MCP tool
apps/mcp/src/tools/tasks/get-task.tool.ts
Added Subtask import; local tasks array type widened from Task[] to `(Task
Changelog
.changeset/forty-squids-sell.md
Patch entry documenting preserved original dotted IDs for display and discriminated union typing change for tasks.get().
CLI exports
apps/cli/src/index.ts
Removed export of AutopilotCommand.

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant CLI as apps/cli:show.command
    participant Core as tm-core:tasks-domain.get()
    participant UI as apps/cli:UI task-detail

    User->>CLI: show 1.1
    CLI->>Core: get("1.1")
    alt single-level numeric subtask found
        Core-->>CLI: { task: Subtask, isSubtask: true }
        CLI->>UI: displayTaskDetails(task, { originalTaskId: "1.1" })
        UI-->>CLI: Rendered output labeled "1.1"
    else subtask notation present but not found
        Core-->>CLI: { task: null, isSubtask: true }
        CLI-->>User: Not found / empty result
    else non-dotted id or no subtask part
        Core-->>CLI: { task: Task, isSubtask: false }
        CLI->>UI: displayTaskDetails(task)
        UI-->>CLI: Rendered output labeled task.id
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • Review focus:
    • packages/tm-core/src/modules/tasks/tasks-domain.ts: subtask parsing (single-level only), discriminated union typing, and behavior when subtask part is present but missing.
    • apps/cli/src/commands/show.command.ts and apps/cli/src/ui/components/task-detail.component.ts: propagation and consistent use of originalTaskId across header, properties, and suggested actions.
    • Removal of apps/cli/src/commands/autopilot.command.ts and export from apps/cli/src/index.ts: ensure no remaining references or registry expectations.

Possibly related PRs

Suggested reviewers

  • eyaltoledano

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Out of Scope Changes Check ⚠️ Warning The pull request includes a significant out-of-scope change: the complete removal of the autopilot.command.ts module and its associated public exports from apps/cli/src/index.ts. This removal is not mentioned in the linked issue #1355, which focuses solely on fixing the subtask return behavior, nor is it documented in the changeset file. While most changes appropriately support the subtask handling fix, the autopilot command removal appears to be an unrelated concern that should either be justified as part of this PR or split into a separate PR. Verify whether the autopilot command removal is intentional and document it in the changeset entry, or consider extracting it into a separate pull request focused on CLI maintenance. If this removal is necessary for the subtask fix, add a comment to the PR explaining the dependency and update the changeset to document this change alongside the other two changes mentioned.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The pull request title "fix: return actual subtask instead of parent task for subtask IDs" directly and clearly describes the primary change in the changeset. The core fix in tasks-domain.ts updates the get() method to return the actual subtask object when a subtask ID is provided, rather than returning the parent task. This change is propagated through the CLI (show.command.ts) and UI components (task-detail.component.ts). The title is concise, specific, and accurately reflects the main objective of resolving issue #1355.
Linked Issues Check ✅ Passed The code changes directly address the requirements of issue #1355. The core fix in packages/tm-core/src/modules/tasks/tasks-domain.ts updates the get() method to return a discriminated union that distinguishes between tasks and subtasks, ensuring that when a subtask ID is provided (e.g., "1.1"), the method returns the actual subtask object with isSubtask: true rather than the parent task. The downstream changes in show.command.ts and task-detail.component.ts preserve the original requested ID (originalTaskId) through the display pipeline, addressing the requirement to show the full compound notation (e.g., "104.1"). The TypeScript typing improvements with discriminated unions also remove unsafe type coercions as documented in the changeset.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch claude/issue-1355-20251028-1743

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9e63b4b and 736ba83.

📒 Files selected for processing (2)
  • apps/cli/src/commands/autopilot.command.ts (0 hunks)
  • apps/cli/src/index.ts (0 hunks)
💤 Files with no reviewable changes (2)
  • apps/cli/src/index.ts
  • apps/cli/src/commands/autopilot.command.ts
⏰ 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). (1)
  • GitHub Check: Test

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
packages/tm-core/src/modules/tasks/tasks-domain.ts (2)

56-62: Update JSDoc to document subtask return behavior.

The JSDoc describes ID format handling but doesn't clarify what object is returned for each case. Please document that:

  • For subtask IDs (e.g., "1.2"), the method returns the actual subtask object (not the parent)
  • For regular task IDs, the method returns the parent task
  • The isSubtask boolean indicates which type was returned

Apply this diff to enhance the documentation:

 	/**
 	 * Get a single task by ID
 	 * Automatically handles all ID formats:
 	 * - Simple task IDs (e.g., "1", "HAM-123")
 	 * - Subtask IDs with dot notation (e.g., "1.2", "HAM-123.2")
 	 *
-	 * @returns Task and whether the ID represents a subtask
+	 * @returns For regular IDs, returns the parent task with isSubtask: false.
+	 *          For subtask IDs, returns the actual subtask object with isSubtask: true.
+	 *          Returns null if the task/subtask is not found.
 	 */

79-89: autopilot/start command breaks when get() returns subtask for dotted IDs.

The change causes a breaking bug: the autopilot/start command expects the returned task to have a subtasks property for validation (line 87), but when get("1.2") is called, it now returns the subtask object directly (which has no subtasks array). The command immediately fails with "Task has no subtasks".

Per the web search, autopilot start is designed to accept subtask IDs like "2.3". The command needs to handle the case where isSubtask: true and the returned object is a leaf subtask, not a parent task with children.

Fix: Update apps/cli/src/commands/autopilot/start.command.ts line 87 to:

if (isSubtask || !task.subtasks || task.subtasks.length === 0) {

Or, if the command should only work with parent tasks, validate the ID format and reject subtask IDs before calling get().

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 72b01f0 and 2a75b27.

📒 Files selected for processing (1)
  • packages/tm-core/src/modules/tasks/tasks-domain.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
packages/tm-core/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

packages/tm-core/**/*.{ts,tsx}: All business logic, domain models, services, and utilities must live in @tm/core (packages/tm-core)
Expose clean facade APIs via domain objects (tasks, auth, workflow, git, config) in @tm/core
Implement shared logic once in @tm/core to avoid duplication across CLI and MCP

Files:

  • packages/tm-core/src/modules/tasks/tasks-domain.ts
🧠 Learnings (1)
📚 Learning: 2025-07-18T17:18:17.759Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/utils.js : Implement reusable task finding utilities that support both task and subtask lookups and add context to subtask results.

Applied to files:

  • packages/tm-core/src/modules/tasks/tasks-domain.ts
🧬 Code graph analysis (1)
packages/tm-core/src/modules/tasks/tasks-domain.ts (2)
scripts/modules/task-manager/update-subtask-by-id.js (1)
  • subtask (164-164)
scripts/modules/task-manager/list-tasks.js (1)
  • subtask (838-840)
🪛 GitHub Actions: CI
packages/tm-core/src/modules/tasks/tasks-domain.ts

[error] 85-85: TypeScript error TS2322: Type 'Subtask' is not assignable to type 'Task'.

@Crunchyman-ralph Crunchyman-ralph force-pushed the claude/issue-1355-20251028-1743 branch from 2a75b27 to 3d1a3ed Compare October 30, 2025 19:09
@Crunchyman-ralph Crunchyman-ralph changed the base branch from main to next October 30, 2025 19:09
@Crunchyman-ralph Crunchyman-ralph force-pushed the claude/issue-1355-20251028-1743 branch from 3d1a3ed to 6ba8979 Compare October 30, 2025 19:31
When requesting a subtask using dot notation (e.g., 4.1), the tasks.get()
method was incorrectly returning the parent task instead of the specific
subtask. This fix ensures that subtask requests return only the requested
subtask, not the entire parent task with all subtasks.

Fixes #1355

Co-authored-by: Ralph Khreish <Crunchyman-ralph@users.noreply.github.com>
@Crunchyman-ralph Crunchyman-ralph force-pushed the claude/issue-1355-20251028-1743 branch from 6ba8979 to b73b078 Compare October 30, 2025 19:33
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/cli/src/utils/ui.ts (1)

355-365: Restore dotted IDs for subtasks in tables.

When createTaskTable receives a Subtask, task.id is just the child index (e.g., 2). The parent context lives in task.parentId, so the table now renders plain numbers for task-master show 4.1,4.2, producing ambiguous rows (2, 3) and duplicate-looking IDs if multiple parents are shown. We need to reconstruct the dotted identifier so users can still see 4.1, 4.2, etc.

-		const row: string[] = [
-			chalk.cyan(task.id.toString()),
+		const displayId =
+			'parentId' in task && task.parentId
+				? `${task.parentId}.${task.id}`
+				: task.id;
+
+		const row: string[] = [
+			chalk.cyan(displayId.toString()),
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b73b078 and afa3dde.

📒 Files selected for processing (6)
  • apps/cli/src/commands/autopilot.command.ts (5 hunks)
  • apps/cli/src/commands/show.command.ts (5 hunks)
  • apps/cli/src/ui/components/task-detail.component.ts (7 hunks)
  • apps/cli/src/utils/ui.ts (2 hunks)
  • apps/mcp/src/tools/tasks/get-task.tool.ts (2 hunks)
  • packages/tm-core/src/modules/tasks/tasks-domain.ts (3 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/cli/src/ui/components/task-detail.component.ts
🧰 Additional context used
📓 Path-based instructions (4)
apps/mcp/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

@tm/mcp must be a thin presentation layer only: no business logic, data transformations, validations, or calculations

Files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
apps/{cli,mcp}/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Do not implement parsing, validation, or data transformation helpers in CLI/MCP; move them to @tm/core

Files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • apps/cli/src/utils/ui.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
apps/cli/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

@tm/cli must be a thin presentation layer only: no business logic, data transformations, validations, or calculations

Files:

  • apps/cli/src/utils/ui.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
packages/tm-core/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

packages/tm-core/**/*.{ts,tsx}: All business logic, domain models, services, and utilities must live in @tm/core (packages/tm-core)
Expose clean facade APIs via domain objects (tasks, auth, workflow, git, config) in @tm/core
Implement shared logic once in @tm/core to avoid duplication across CLI and MCP

Files:

  • packages/tm-core/src/modules/tasks/tasks-domain.ts
🧠 Learnings (55)
📓 Common learnings
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Allow numeric subtask IDs to reference other subtasks within the same parent
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Allow numeric subtask IDs to reference other subtasks within the same parent
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-24T15:12:58.855Z
Learning: Applies to assets/.claude/commands/taskmaster-complete.md : Create .claude/commands/taskmaster-complete.md with steps to review task, verify, run tests, set status done, and show next task
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-09-24T15:12:12.658Z
Learning: View task details with task-master show <id> (supports dot notation for subtasks) before implementation
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-10-27T17:16:25.440Z
Learning: Applies to CLAUDE.md : Main CLAUDE.md must import Task Master's workflow from ./.taskmaster/CLAUDE.md and treat it as authoritative
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-10-27T17:16:25.440Z
Learning: Applies to .taskmaster/CLAUDE.md : Maintain Task Master's development workflow commands and guidelines in .taskmaster/CLAUDE.md as the source for import
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-24T15:12:58.855Z
Learning: Applies to assets/.claude/commands/taskmaster-next.md : Create .claude/commands/taskmaster-next.md with steps to run task-master next, then task-master show <id>, summarize, and suggest first step
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/git_workflow.mdc:0-0
Timestamp: 2025-07-18T17:10:31.810Z
Learning: Pull Request titles must follow the format: Task <ID>: <Task Title>
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/git_workflow.mdc:0-0
Timestamp: 2025-07-18T17:10:31.810Z
Learning: Subtask commit messages must follow the format: feat(task-X): Complete subtask X.Y - [Subtask Title] with a detailed body describing implementation, key changes, and notes
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Use string IDs with dot notation (e.g., "1.2") for subtask references
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Use string IDs with dot notation (e.g., "1.2") for subtask references
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1248
File: packages/tm-core/src/storage/api-storage.ts:509-0
Timestamp: 2025-09-25T22:08:11.075Z
Learning: In API storage backend, subtasks have unique IDs (like "HAM-21") and use a separate parent_id column to establish parent-child relationships, rather than using dotted notation like file storage (e.g., "21.1").
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Subtasks must use consistent properties, maintain simple numeric IDs unique within the parent task, and must not duplicate parent task properties.
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/utils.js : Use tagged task system aware functions for task finding and manipulation, handle both task and subtask operations, and validate task IDs before operations.
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/utils.js : Implement reusable task finding utilities that support both task and subtask lookups and add context to subtask results.
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-09-24T15:12:12.658Z
Learning: Break down tasks using task-master expand --id=<id> with appropriate flags; clear and regenerate subtasks as needed
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.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1069
File: .changeset/fix-tag-complexity-detection.md:0-0
Timestamp: 2025-08-02T15:33:22.656Z
Learning: For changeset files (.changeset/*.md), Crunchyman-ralph prefers to ignore formatting nitpicks about blank lines between frontmatter and descriptions, as he doesn't mind having them and wants to avoid such comments in future reviews.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1132
File: .github/workflows/weekly-metrics-discord.yml:81-93
Timestamp: 2025-08-13T22:10:46.958Z
Learning: Crunchyman-ralph ignores YAML formatting nitpicks about trailing spaces when there's no project-specific YAML formatter configured, preferring to focus on functionality over cosmetic formatting issues.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1132
File: .github/workflows/weekly-metrics-discord.yml:81-93
Timestamp: 2025-08-13T22:10:46.958Z
Learning: Crunchyman-ralph ignores YAML formatting nitpicks about trailing spaces when there's no project-specific YAML formatter configured, preferring to focus on functionality over cosmetic formatting issues.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1200
File: src/ai-providers/custom-sdk/grok-cli/language-model.js:96-100
Timestamp: 2025-09-19T16:06:42.182Z
Learning: The user Crunchyman-ralph prefers to keep environment variable names explicit (like GROK_CLI_API_KEY) rather than supporting multiple aliases, to avoid overlap and ensure clear separation between different CLI implementations.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1178
File: packages/tm-core/src/subpath-exports.test.ts:6-9
Timestamp: 2025-09-03T12:45:30.724Z
Learning: The user Crunchyman-ralph prefers to avoid overly nitpicky or detailed suggestions in code reviews, especially for test coverage of minor import paths. Focus on more substantial issues rather than comprehensive coverage of all possible edge cases.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1105
File: scripts/modules/supported-models.json:242-254
Timestamp: 2025-08-08T11:33:15.297Z
Learning: Preference: In scripts/modules/supported-models.json, the "name" field is optional. For OpenAI entries (e.g., "gpt-5"), Crunchyman-ralph prefers omitting "name" when the id is explicit enough; avoid nitpicks requesting a "name" in such cases.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1217
File: apps/cli/src/index.ts:16-21
Timestamp: 2025-09-18T16:35:35.147Z
Learning: The user Crunchyman-ralph considers suggestions to export types for better ergonomics (like exporting UpdateInfo type alongside related functions) as nitpicky and prefers not to implement such suggestions.
📚 Learning: 2025-07-18T17:18:17.759Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/utils.js : Implement reusable task finding utilities that support both task and subtask lookups and add context to subtask results.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • apps/cli/src/utils/ui.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-10-27T17:16:25.440Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-10-27T17:16:25.440Z
Learning: Applies to packages/tm-core/**/*.{ts,tsx} : Expose clean facade APIs via domain objects (tasks, auth, workflow, git, config) in tm/core

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Allow filtering tasks by status within the current tag context, handle subtask display in lists, and use consistent table formats.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • apps/cli/src/utils/ui.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:18:17.759Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/utils.js : Use tagged task system aware functions for task finding and manipulation, handle both task and subtask operations, and validate task IDs before operations.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • apps/cli/src/utils/ui.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Use consistent formatting for task files, include all task properties in text files, and format dependencies with status indicators.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • apps/cli/src/utils/ui.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-09-26T19:05:47.555Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1252
File: packages/ai-sdk-provider-grok-cli/package.json:11-13
Timestamp: 2025-09-26T19:05:47.555Z
Learning: In the eyaltoledano/claude-task-master repository, internal tm/ packages use a specific export pattern where the "exports" field points to TypeScript source files (./src/index.ts) while "main" points to compiled output (./dist/index.js) and "types" points to source files (./src/index.ts). This pattern is used consistently across internal packages like tm/core and tm/ai-sdk-provider-grok-cli because they are consumed directly during build-time bundling with tsdown rather than being published as separate packages.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Use AI to generate detailed subtasks within the current tag context, considering complexity analysis for subtask counts and ensuring proper IDs for newly created subtasks.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-09-26T19:10:32.906Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1252
File: tsconfig.json:22-28
Timestamp: 2025-09-26T19:10:32.906Z
Learning: In the eyaltoledano/claude-task-master repository, all internal tm/ package path mappings in tsconfig.json consistently point to TypeScript source files (e.g., "./packages/*/src/index.ts") rather than built JavaScript. This is intentional architecture because tsdown bundles internal packages directly from source during build time, eliminating the need for separate compilation of internal packages.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
📚 Learning: 2025-07-18T17:09:45.690Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Allow numeric subtask IDs to reference other subtasks within the same parent

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • apps/cli/src/utils/ui.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:11:36.732Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/mcp.mdc:0-0
Timestamp: 2025-07-18T17:11:36.732Z
Learning: Applies to mcp-server/src/tools/*.js : All MCP tool execute methods that require access to the project root MUST be wrapped with the withNormalizedProjectRoot Higher-Order Function (HOF) from mcp-server/src/tools/utils.js.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 Learning: 2025-10-27T17:16:25.440Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-10-27T17:16:25.440Z
Learning: Applies to packages/tm-core/**/*.{ts,tsx} : Implement shared logic once in tm/core to avoid duplication across CLI and MCP

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 Learning: 2025-07-18T17:07:39.336Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/architecture.mdc:0-0
Timestamp: 2025-07-18T17:07:39.336Z
Learning: Applies to mcp-server/src/tools/*.js : MCP server tools in mcp-server/src/tools/*.js must have their execute methods wrapped with the withNormalizedProjectRoot higher-order function from tools/utils.js to ensure consistent path handling.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 Learning: 2025-07-18T17:11:36.732Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/mcp.mdc:0-0
Timestamp: 2025-07-18T17:11:36.732Z
Learning: Applies to mcp-server/src/core/direct-functions/*.js : The *Direct function is responsible for finding the exact tasks.json path using findTasksJsonPath, relying on the projectRoot passed in args.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 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 scripts/modules/**/*.test.js : Test CLI and MCP interfaces with real task data, verify end-to-end workflows across tag contexts, and test error scenarios and recovery in integration tests.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 Learning: 2025-07-18T17:18:17.759Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to .taskmasterconfig : Use `.taskmasterconfig` (JSON) in the project root for storing Taskmaster configuration (excluding API keys), and manage it via the `task-master models --setup` CLI command or the `models` MCP tool.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 Learning: 2025-07-18T17:18:17.759Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to mcp-server/src/tools/utils.js : Use `normalizeProjectRoot(rawPath, log)`, `getRawProjectRootFromSession(session, log)`, and `withNormalizedProjectRoot(executeFn)` in `mcp-server/src/tools/utils.js` to ensure project root paths are normalized for MCP tools.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Tasks must be accessed and updated through the tag resolution layer using getTasksForTag(data, tagName) and setTasksForTag(data, tagName, tasks); direct manipulation of the tagged structure in core functions is not allowed.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • apps/cli/src/commands/show.command.ts
📚 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 collecting information from multiple tasks, use comma-separated IDs to receive an array of tasks instead of getting them one at a time.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Provide functions for updating task status within the current tag context, handling both individual tasks and subtasks, and considering subtask status when updating parent tasks.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Tasks must be organized into separate contexts (tags) within tasks.json, using the tagged format: {"master": {"tasks": [...]}, "feature-branch": {"tasks": [...]}}. Legacy format {"tasks": [...]} must be silently migrated to the tagged format on first use.

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 Learning: 2025-07-18T17:09:45.690Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Represent task dependencies as arrays of task IDs

Applied to files:

  • apps/mcp/src/tools/tasks/get-task.tool.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Each task object must include all required properties (id, title, description, status, dependencies, priority, details, testStrategy, subtasks) and provide default values for optional properties. Extra properties not in the standard schema must not be added.

Applied to files:

  • apps/cli/src/utils/ui.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : Follow the provided structure for adding subtasks, including required options and detailed error handling.

Applied to files:

  • apps/cli/src/utils/ui.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 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 adding subtasks, including required and optional options, parameter validation, and detailed error handling.

Applied to files:

  • apps/cli/src/utils/ui.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Subtasks must use consistent properties, maintain simple numeric IDs unique within the parent task, and must not duplicate parent task properties.

Applied to files:

  • apps/cli/src/utils/ui.ts
  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:16:32.622Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/ui.mdc:0-0
Timestamp: 2025-07-18T17:16:32.622Z
Learning: Applies to scripts/modules/ui.js : Use chalk.blue for informational messages, chalk.green for success, chalk.yellow for warnings, chalk.red for errors, chalk.cyan for prompts/highlights, and chalk.magenta for subtask information

Applied to files:

  • apps/cli/src/utils/ui.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:09:16.839Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/context_gathering.mdc:0-0
Timestamp: 2025-07-18T17:09:16.839Z
Learning: Display token breakdowns using a detailed, sectioned format, showing tokens per task, file, and prompt, and use formatting utilities like `boxen` and `chalk` for CLI output.

Applied to files:

  • apps/cli/src/utils/ui.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:09:13.815Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/context_gathering.mdc:0-0
Timestamp: 2025-07-18T17:09:13.815Z
Learning: Display token breakdowns in CLI output using a detailed, sectioned format, including tasks, files, and prompt tokens, with clear formatting (e.g., using boxen and chalk).

Applied to files:

  • apps/cli/src/utils/ui.ts
📚 Learning: 2025-07-18T17:16:32.622Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/ui.mdc:0-0
Timestamp: 2025-07-18T17:16:32.622Z
Learning: Applies to scripts/modules/ui.js : Use getStatusWithColor for status display, formatDependenciesWithStatus for dependency lists, and truncate for overflowing text

Applied to files:

  • apps/cli/src/utils/ui.ts
📚 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 : Use boxen for important success messages with clear formatting, provide suggested next steps after command completion, and include ready-to-use commands for follow-up actions.

Applied to files:

  • apps/cli/src/utils/ui.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:16:32.622Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/ui.mdc:0-0
Timestamp: 2025-07-18T17:16:32.622Z
Learning: Applies to scripts/modules/ui.js : Use cli-table3 for table rendering, include colored bold headers, and set appropriate column widths for readability

Applied to files:

  • apps/cli/src/utils/ui.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Calculate and display completion statistics for the current tag, track both task and subtask completion, and use visual progress indicators.

Applied to files:

  • apps/cli/src/utils/ui.ts
  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Use string IDs with dot notation (e.g., "1.2") for subtask references

Applied to files:

  • packages/tm-core/src/modules/tasks/tasks-domain.ts
📚 Learning: 2025-07-18T17:09:45.690Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Support both task and subtask dependencies in cycle detection

Applied to files:

  • packages/tm-core/src/modules/tasks/tasks-domain.ts
📚 Learning: 2025-07-18T17:09:45.690Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Do not create circular dependencies between subtasks

Applied to files:

  • packages/tm-core/src/modules/tasks/tasks-domain.ts
  • apps/cli/src/commands/show.command.ts
📚 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 scripts/modules/task-manager.js : Features that create, read, update, or delete tasks belong in 'scripts/modules/task-manager.js'.

Applied to files:

  • packages/tm-core/src/modules/tasks/tasks-domain.ts
📚 Learning: 2025-09-25T22:08:11.075Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1248
File: packages/tm-core/src/storage/api-storage.ts:509-0
Timestamp: 2025-09-25T22:08:11.075Z
Learning: In API storage backend, subtasks have unique IDs (like "HAM-21") and use a separate parent_id column to establish parent-child relationships, rather than using dotted notation like file storage (e.g., "21.1").

Applied to files:

  • packages/tm-core/src/modules/tasks/tasks-domain.ts
📚 Learning: 2025-07-18T17:18:17.759Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/task-manager/**/*.js : Do not call AI-specific getters (like `getMainModelId`, `getMainMaxTokens`) from core logic functions in `scripts/modules/task-manager/*`; instead, pass the `role` to the unified AI service.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:09:13.815Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/context_gathering.mdc:0-0
Timestamp: 2025-07-18T17:09:13.815Z
Learning: Commands such as `analyze-complexity`, `expand-task`, `update-task`, and `add-task` should consider adopting the context gathering pattern for improved AI-powered assistance.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:54.131Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/telemetry.mdc:0-0
Timestamp: 2025-07-18T17:14:54.131Z
Learning: Applies to scripts/modules/task-manager/**/*.js : If the core logic function handles CLI output (outputFormat === 'text' or 'cli'), and aiServiceResponse.telemetryData is available, it must call displayAiUsageSummary(aiServiceResponse.telemetryData, 'cli') from scripts/modules/ui.js.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 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:

  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Extract tasks from PRD documents using AI, create them in the current tag context (defaulting to 'master'), provide clear prompts to guide AI task generation, and validate/clean up AI-generated tasks.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:54.131Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/telemetry.mdc:0-0
Timestamp: 2025-07-18T17:14:54.131Z
Learning: Applies to scripts/modules/task-manager/**/*.js : Functions in scripts/modules/task-manager/ that invoke AI services must call the appropriate AI service function (e.g., generateObjectService), passing commandName and outputType in the params object.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:54.131Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/telemetry.mdc:0-0
Timestamp: 2025-07-18T17:14:54.131Z
Learning: Applies to scripts/modules/task-manager/**/*.js : Core logic functions in scripts/modules/task-manager/ must return an object that includes aiServiceResponse.telemetryData.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:16:32.622Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/ui.mdc:0-0
Timestamp: 2025-07-18T17:16:32.622Z
Learning: Applies to scripts/modules/ui.js : Follow the provided display function pattern for displaying task information

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-21T02:41:13.453Z
Learnt from: rtmcrc
PR: eyaltoledano/claude-task-master#933
File: scripts/modules/task-manager/expand-all-tasks.js:0-0
Timestamp: 2025-07-21T02:41:13.453Z
Learning: In scripts/modules/task-manager/expand-all-tasks.js, the success flag should always be true when the expansion process completes successfully, even if individual tasks fail due to LLM errors. Failed tasks are designed to be expanded on subsequent iterations, so individual task failures don't constitute overall operation failure.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 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:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-09-24T15:12:12.658Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-09-24T15:12:12.658Z
Learning: View task details with task-master show <id> (supports dot notation for subtasks) before implementation

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
  • apps/cli/src/commands/show.command.ts
📚 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: When breaking down complex tasks, use the `expand_task` command with appropriate flags (`--force`, `--research`, `--num`, `--prompt`) and review generated subtasks for accuracy.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : Follow the provided structure for removing subtasks, including required options, conversion option, and detailed error handling.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 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:

  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:07:39.336Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/architecture.mdc:0-0
Timestamp: 2025-07-18T17:07:39.336Z
Learning: Applies to scripts/modules/task-manager/*.js : Files in scripts/modules/task-manager/ should each handle a specific action related to task management (e.g., add-task.js, expand-task.js), supporting the tagged task lists system and backward compatibility.

Applied to files:

  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:09:45.690Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Check for and remove references to non-existent tasks during cleanup

Applied to files:

  • apps/cli/src/commands/show.command.ts
📚 Learning: 2025-07-18T17:09:40.548Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Remove references to non-existent tasks during validation

Applied to files:

  • apps/cli/src/commands/show.command.ts
🧬 Code graph analysis (5)
apps/mcp/src/tools/tasks/get-task.tool.ts (2)
packages/tm-core/src/tm-core.ts (1)
  • tasks (92-94)
packages/tm-core/src/common/types/index.ts (1)
  • Subtask (88-92)
apps/cli/src/utils/ui.ts (1)
packages/tm-core/src/common/types/index.ts (1)
  • Subtask (88-92)
packages/tm-core/src/modules/tasks/tasks-domain.ts (3)
packages/tm-core/src/common/types/index.ts (1)
  • Subtask (88-92)
scripts/modules/task-manager/list-tasks.js (2)
  • task (844-844)
  • subtask (838-840)
scripts/modules/task-manager/update-subtask-by-id.js (1)
  • subtask (164-164)
apps/cli/src/commands/autopilot.command.ts (1)
packages/tm-core/src/common/types/index.ts (1)
  • Subtask (88-92)
apps/cli/src/commands/show.command.ts (2)
packages/tm-core/src/common/types/index.ts (2)
  • Subtask (88-92)
  • StorageType (11-11)
apps/cli/src/ui/components/task-detail.component.ts (1)
  • displayTaskDetails (280-351)

@Crunchyman-ralph Crunchyman-ralph force-pushed the claude/issue-1355-20251028-1743 branch from afa3dde to 7b00c52 Compare October 30, 2025 20:11
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/cli/src/commands/autopilot.command.ts (1)

285-323: Execution plan logic assumes Task with subtasks, but accepts Subtask.

validateTaskStructure and displayExecutionPlan accept Task | Subtask, but the logic only works correctly for a parent Task:

  • Line 313–315: getExecutionOrder(validationResult.task!) on a Subtask returns an empty array (Subtasks have subtasks?: never).
  • Line 348: Constructing ${task.id}.${subtask.id} produces incorrect IDs if task is a Subtask (e.g., id=2 instead of "4.2").
  • Line 340: Displays a count of subtasks, which would be zero/misleading for a Subtask input.

Either add an early guard to reject subtask IDs (see previous comment), or add explicit handling:

 private async validateTaskStructure(
   taskId: string,
   task: Task | Subtask
 ): Promise<AutopilotCommandResult & { orderedSubtasks?: Subtask[] }> {
+  // Reject subtasks: autopilot operates on parent tasks only
+  if ('parentId' in task) {
+    return {
+      success: false,
+      taskId,
+      task,
+      error: 'Autopilot requires a parent task',
+      message: `Task ${taskId} is a subtask. Please specify the parent task ID.`
+    };
+  }
+
   if (!this.tmCore) {
     return {
       success: false,

Alternatively, if autopilot should support single-subtask execution, add a branch to handle the Subtask case explicitly (e.g., treat it as a single-item execution plan).

Also applies to: 328-371

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7b00c52 and 9e63b4b.

📒 Files selected for processing (2)
  • .changeset/forty-squids-sell.md (1 hunks)
  • apps/cli/src/commands/autopilot.command.ts (7 hunks)
✅ Files skipped from review due to trivial changes (1)
  • .changeset/forty-squids-sell.md
🧰 Additional context used
📓 Path-based instructions (2)
apps/cli/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

@tm/cli must be a thin presentation layer only: no business logic, data transformations, validations, or calculations

Files:

  • apps/cli/src/commands/autopilot.command.ts
apps/{cli,mcp}/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Do not implement parsing, validation, or data transformation helpers in CLI/MCP; move them to @tm/core

Files:

  • apps/cli/src/commands/autopilot.command.ts
🧠 Learnings (36)
📓 Common learnings
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Allow numeric subtask IDs to reference other subtasks within the same parent
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Allow numeric subtask IDs to reference other subtasks within the same parent
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-24T15:12:58.855Z
Learning: Applies to assets/.claude/commands/taskmaster-complete.md : Create .claude/commands/taskmaster-complete.md with steps to review task, verify, run tests, set status done, and show next task
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-09-24T15:12:12.658Z
Learning: View task details with task-master show <id> (supports dot notation for subtasks) before implementation
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-10-27T17:16:25.440Z
Learning: Applies to CLAUDE.md : Main CLAUDE.md must import Task Master's workflow from ./.taskmaster/CLAUDE.md and treat it as authoritative
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/git_workflow.mdc:0-0
Timestamp: 2025-07-18T17:10:31.810Z
Learning: Pull Request titles must follow the format: Task <ID>: <Task Title>
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/git_workflow.mdc:0-0
Timestamp: 2025-07-18T17:10:31.810Z
Learning: Subtask commit messages must follow the format: feat(task-X): Complete subtask X.Y - [Subtask Title] with a detailed body describing implementation, key changes, and notes
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-24T15:12:58.855Z
Learning: Applies to assets/.claude/commands/taskmaster-next.md : Create .claude/commands/taskmaster-next.md with steps to run task-master next, then task-master show <id>, summarize, and suggest first step
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-10-27T17:16:25.440Z
Learning: Applies to .taskmaster/CLAUDE.md : Maintain Task Master's development workflow commands and guidelines in .taskmaster/CLAUDE.md as the source for import
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:40.548Z
Learning: Applies to scripts/modules/dependency-manager.js : Use string IDs with dot notation (e.g., "1.2") for subtask references
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Use string IDs with dot notation (e.g., "1.2") for subtask references
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1248
File: packages/tm-core/src/storage/api-storage.ts:509-0
Timestamp: 2025-09-25T22:08:11.075Z
Learning: In API storage backend, subtasks have unique IDs (like "HAM-21") and use a separate parent_id column to establish parent-child relationships, rather than using dotted notation like file storage (e.g., "21.1").
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/utils.js : Implement reusable task finding utilities that support both task and subtask lookups and add context to subtask results.
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/utils.js : Use tagged task system aware functions for task finding and manipulation, handle both task and subtask operations, and validate task IDs before operations.
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Subtasks must use consistent properties, maintain simple numeric IDs unique within the parent task, and must not duplicate parent task properties.
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-09-24T15:12:12.658Z
Learning: Break down tasks using task-master expand --id=<id> with appropriate flags; clear and regenerate subtasks as needed
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.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1069
File: .changeset/fix-tag-complexity-detection.md:0-0
Timestamp: 2025-08-02T15:33:22.656Z
Learning: For changeset files (.changeset/*.md), Crunchyman-ralph prefers to ignore formatting nitpicks about blank lines between frontmatter and descriptions, as he doesn't mind having them and wants to avoid such comments in future reviews.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1132
File: .github/workflows/weekly-metrics-discord.yml:81-93
Timestamp: 2025-08-13T22:10:46.958Z
Learning: Crunchyman-ralph ignores YAML formatting nitpicks about trailing spaces when there's no project-specific YAML formatter configured, preferring to focus on functionality over cosmetic formatting issues.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1132
File: .github/workflows/weekly-metrics-discord.yml:81-93
Timestamp: 2025-08-13T22:10:46.958Z
Learning: Crunchyman-ralph ignores YAML formatting nitpicks about trailing spaces when there's no project-specific YAML formatter configured, preferring to focus on functionality over cosmetic formatting issues.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1200
File: src/ai-providers/custom-sdk/grok-cli/language-model.js:96-100
Timestamp: 2025-09-19T16:06:42.182Z
Learning: The user Crunchyman-ralph prefers to keep environment variable names explicit (like GROK_CLI_API_KEY) rather than supporting multiple aliases, to avoid overlap and ensure clear separation between different CLI implementations.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1178
File: packages/tm-core/src/subpath-exports.test.ts:6-9
Timestamp: 2025-09-03T12:45:30.724Z
Learning: The user Crunchyman-ralph prefers to avoid overly nitpicky or detailed suggestions in code reviews, especially for test coverage of minor import paths. Focus on more substantial issues rather than comprehensive coverage of all possible edge cases.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1105
File: scripts/modules/supported-models.json:242-254
Timestamp: 2025-08-08T11:33:15.297Z
Learning: Preference: In scripts/modules/supported-models.json, the "name" field is optional. For OpenAI entries (e.g., "gpt-5"), Crunchyman-ralph prefers omitting "name" when the id is explicit enough; avoid nitpicks requesting a "name" in such cases.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1217
File: apps/cli/src/index.ts:16-21
Timestamp: 2025-09-18T16:35:35.147Z
Learning: The user Crunchyman-ralph considers suggestions to export types for better ergonomics (like exporting UpdateInfo type alongside related functions) as nitpicky and prefers not to implement such suggestions.
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Use consistent formatting for task files, include all task properties in text files, and format dependencies with status indicators.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-10-27T17:16:25.440Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-10-27T17:16:25.440Z
Learning: Applies to packages/tm-core/**/*.{ts,tsx} : Expose clean facade APIs via domain objects (tasks, auth, workflow, git, config) in tm/core

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 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:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:09:13.815Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/context_gathering.mdc:0-0
Timestamp: 2025-07-18T17:09:13.815Z
Learning: Commands such as `analyze-complexity`, `expand-task`, `update-task`, and `add-task` should consider adopting the context gathering pattern for improved AI-powered assistance.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Use AI to generate detailed subtasks within the current tag context, considering complexity analysis for subtask counts and ensuring proper IDs for newly created subtasks.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Extract tasks from PRD documents using AI, create them in the current tag context (defaulting to 'master'), provide clear prompts to guide AI task generation, and validate/clean up AI-generated tasks.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:54.131Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/telemetry.mdc:0-0
Timestamp: 2025-07-18T17:14:54.131Z
Learning: Applies to scripts/modules/task-manager/**/*.js : If the core logic function handles CLI output (outputFormat === 'text' or 'cli'), and aiServiceResponse.telemetryData is available, it must call displayAiUsageSummary(aiServiceResponse.telemetryData, 'cli') from scripts/modules/ui.js.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:18:17.759Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/task-manager/**/*.js : Do not call AI-specific getters (like `getMainModelId`, `getMainMaxTokens`) from core logic functions in `scripts/modules/task-manager/*`; instead, pass the `role` to the unified AI service.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:10:02.683Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dev_workflow.mdc:0-0
Timestamp: 2025-07-18T17:10:02.683Z
Learning: When breaking down complex tasks in Taskmaster, use the `expand_task` command with appropriate flags (`--num`, `--research`, `--force`, `--prompt`) and review generated subtasks for accuracy.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 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: When breaking down complex tasks, use the `expand_task` command with appropriate flags (`--force`, `--research`, `--num`, `--prompt`) and review generated subtasks for accuracy.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:09:45.690Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Allow numeric subtask IDs to reference other subtasks within the same parent

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Subtasks must use consistent properties, maintain simple numeric IDs unique within the parent task, and must not duplicate parent task properties.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-09-24T15:12:58.855Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-24T15:12:58.855Z
Learning: Reference task IDs in commit messages and PR titles/descriptions when completing tasks

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:06:57.833Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/ai_services.mdc:0-0
Timestamp: 2025-07-18T17:06:57.833Z
Learning: Applies to scripts/modules/task-manager/*.js : Do not implement fallback or retry logic outside `ai-services-unified.js`.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:09:45.690Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/dependencies.mdc:0-0
Timestamp: 2025-07-18T17:09:45.690Z
Learning: Applies to scripts/modules/dependency-manager.js : Use string IDs with dot notation (e.g., "1.2") for subtask references

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-10-27T17:16:25.440Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-10-27T17:16:25.440Z
Learning: Applies to .taskmaster/CLAUDE.md : Maintain Task Master's development workflow commands and guidelines in .taskmaster/CLAUDE.md as the source for import

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-10-27T17:16:25.440Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: CLAUDE.md:0-0
Timestamp: 2025-10-27T17:16:25.440Z
Learning: Applies to CLAUDE.md : Main CLAUDE.md must import Task Master's workflow from ./.taskmaster/CLAUDE.md and treat it as authoritative

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-09-24T15:12:58.855Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-24T15:12:58.855Z
Learning: Applies to assets/.claude/commands/taskmaster-complete.md : Create .claude/commands/taskmaster-complete.md with steps to review task, verify, run tests, set status done, and show next task

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 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:

  • apps/cli/src/commands/autopilot.command.ts
📚 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: When using git, commit relevant code changes and any updated/new rule files with comprehensive commit messages summarizing the work done for each subtask.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-09-24T15:12:58.855Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/AGENTS.md:0-0
Timestamp: 2025-09-24T15:12:58.855Z
Learning: Applies to assets/.claude/settings.json : Include the recommended tool allowlist in .claude/settings.json (Edit, Bash(task-master *), Bash(git commit:*), Bash(git add:*), Bash(npm run *), mcp__task_master_ai__*)

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:54.131Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/telemetry.mdc:0-0
Timestamp: 2025-07-18T17:14:54.131Z
Learning: Applies to scripts/modules/task-manager/**/*.js : Core logic functions in scripts/modules/task-manager/ must return an object that includes aiServiceResponse.telemetryData.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:16:32.622Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/ui.mdc:0-0
Timestamp: 2025-07-18T17:16:32.622Z
Learning: Applies to scripts/modules/ui.js : Follow the provided display function pattern for displaying task information

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-09-24T15:12:12.658Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: assets/.windsurfrules:0-0
Timestamp: 2025-09-24T15:12:12.658Z
Learning: View task details with task-master show <id> (supports dot notation for subtasks) before implementation

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:18:17.759Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/utils.js : Use tagged task system aware functions for task finding and manipulation, handle both task and subtask operations, and validate task IDs before operations.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : Follow the provided structure for adding subtasks, including required options and detailed error handling.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Provide functions for updating task status within the current tag context, handling both individual tasks and subtasks, and considering subtask status when updating parent tasks.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Calculate and display completion statistics for the current tag, track both task and subtask completion, and use visual progress indicators.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 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 adding subtasks, including required and optional options, parameter validation, and detailed error handling.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:18:17.759Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/utilities.mdc:0-0
Timestamp: 2025-07-18T17:18:17.759Z
Learning: Applies to scripts/modules/utils.js : Implement reusable task finding utilities that support both task and subtask lookups and add context to subtask results.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:09:13.815Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/context_gathering.mdc:0-0
Timestamp: 2025-07-18T17:09:13.815Z
Learning: Display token breakdowns in CLI output using a detailed, sectioned format, including tasks, files, and prompt tokens, with clear formatting (e.g., using boxen and chalk).

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:09:16.839Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/context_gathering.mdc:0-0
Timestamp: 2025-07-18T17:09:16.839Z
Learning: Display token breakdowns using a detailed, sectioned format, showing tokens per task, file, and prompt, and use formatting utilities like `boxen` and `chalk` for CLI output.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 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:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:14:29.399Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/tasks.mdc:0-0
Timestamp: 2025-07-18T17:14:29.399Z
Learning: Applies to scripts/modules/task-manager.js : Each task object must include all required properties (id, title, description, status, dependencies, priority, details, testStrategy, subtasks) and provide default values for optional properties. Extra properties not in the standard schema must not be added.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
📚 Learning: 2025-07-18T17:08:48.695Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/commands.mdc:0-0
Timestamp: 2025-07-18T17:08:48.695Z
Learning: Applies to scripts/modules/commands.js : Follow the provided structure for removing subtasks, including required options, conversion option, and detailed error handling.

Applied to files:

  • apps/cli/src/commands/autopilot.command.ts
🧬 Code graph analysis (1)
apps/cli/src/commands/autopilot.command.ts (1)
packages/tm-core/src/common/types/index.ts (1)
  • Subtask (88-92)
⏰ 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). (1)
  • GitHub Check: Test
🔇 Additional comments (1)
apps/cli/src/commands/autopilot.command.ts (1)

189-193: LGTM: Preserves original dotted ID for display.

Passing taskId separately and using it for display (line 200) correctly preserves the dotted notation when a subtask is requested (e.g., "4.1"), aligning with the PR objective.

Also applies to: 200-200

@Crunchyman-ralph Crunchyman-ralph merged commit 0c639bd into next Oct 30, 2025
6 checks passed
github-actions bot added a commit that referenced this pull request Oct 30, 2025
  This PR was automatically generated to update documentation based on recent changes.

  Original commit: fix: return actual subtask instead of parent task for subtask IDs (#1358)\n\nCo-authored-by: Ralph Khreish <Crunchyman-ralph@users.noreply.github.com>\nCo-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>\nFixes #1355\n\n

  Co-authored-by: Claude <claude-assistant@anthropic.com>
@coderabbitai coderabbitai bot mentioned this pull request Oct 31, 2025
16 tasks
@github-actions github-actions bot mentioned this pull request Nov 1, 2025
sfc-gh-dflippo pushed a commit to sfc-gh-dflippo/task-master-ai that referenced this pull request Dec 4, 2025
…altoledano#1358)

Co-authored-by: Ralph Khreish <Crunchyman-ralph@users.noreply.github.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Fixes eyaltoledano#1355
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: task-master show <taskId.subtaskId> returns parent task instead of subtask in 0.30.1

1 participant