chore: fix CI failing to release#1232
Conversation
🦋 Changeset detectedLatest commit: 455cd1c 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 |
WalkthroughRemoved three packages from the changeset ignore list, removed top-level version fields from several package manifests, bumped the extension version, updated/added dependencies and scripts in root and workspace manifests, and compacted JSON arrays to single-line formatting. No source-code API changes. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Dev as Developer
participant Git as Git/CI
participant Changeset as Changeset Processor
participant Release as Release pipeline
Dev->>Git: Push changes (package manifests, .changeset, .manypkg)
Git->>Changeset: Trigger changeset processing
note right of Changeset #DDEBF7: Previously ignored: @tm/cli, @tm/core, @tm/build-config\nNow included for processing
Changeset->>Release: Emit package releases for included packages
Release->>Git: Publish updated package metadata / create releases
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests
Comment |
Crunchyman-ralph
left a comment
There was a problem hiding this comment.
whatever doesn't have a version will automatically be ignored which is exactly what we want!
There was a problem hiding this comment.
Actionable comments posted: 3
📜 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 (6)
.changeset/config.json(1 hunks)apps/cli/package.json(2 hunks)apps/extension/package.json(3 hunks)package.json(2 hunks)packages/build-config/package.json(1 hunks)packages/tm-core/package.json(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
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
.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/config.json
🧠 Learnings (18)
📓 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.
📚 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:
packages/tm-core/package.jsonpackage.jsonapps/extension/package.jsonapps/cli/package.json
📚 Learning: 2025-09-17T19:09:08.882Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1211
File: jest.resolver.cjs:8-15
Timestamp: 2025-09-17T19:09:08.882Z
Learning: In the eyaltoledano/claude-task-master project, the team only uses .ts files and does not plan to use .tsx or .mts extensions, so Jest resolver and build tooling should focus on .js → .ts mapping only.
Applied to files:
packages/tm-core/package.jsonpackage.jsonapps/cli/package.json
📚 Learning: 2025-09-03T12:16:15.866Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1178
File: packages/tm-core/package.json:13-64
Timestamp: 2025-09-03T12:16:15.866Z
Learning: For internal packages in the claude-task-master project, Crunchyman-ralph prefers pointing package.json "types" entries to src .ts files rather than dist .d.ts files for better developer experience (DX), as the packages are not being exported as SDKs.
Applied to files:
packages/tm-core/package.jsonpackage.jsonapps/cli/package.json
📚 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: Applies to .taskmaster/config.json : Store Taskmaster configuration settings (AI model selections, parameters, logging level, default subtasks/priority, project name, tag management) in `.taskmaster/config.json` in the project root. Do not configure these via environment variables.
Applied to files:
packages/tm-core/package.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: Applies to tasks.json : Use the `tasks.json` file (generated by Taskmaster) to store the project's task list, including tags and task structures.
Applied to files:
packages/tm-core/package.jsonapps/cli/package.json
📚 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:
packages/tm-core/package.json
📚 Learning: 2025-09-22T16:42:54.285Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: public/assets/AGENTS.md:0-0
Timestamp: 2025-09-22T16:42:54.285Z
Learning: Applies to public/assets/**/.mcp.json : Configure the Task Master MCP server in .mcp.json under mcpServers.task-master-ai with command npx and the listed env keys
Applied to files:
package.json
📚 Learning: 2025-08-06T21:12:20.981Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1091
File: assets/claude/agents/task-executor.md:1-6
Timestamp: 2025-08-06T21:12:20.981Z
Learning: In the eyaltoledano/claude-task-master repository, agent files in assets/claude/agents/ are intended for distribution to users (for copying), while identical files in .claude/agents/ are for internal project use. This intentional duplication serves different purposes and is not a DRY violation.
Applied to files:
package.json
📚 Learning: 2025-09-22T16:42:54.285Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: public/assets/AGENTS.md:0-0
Timestamp: 2025-09-22T16:42:54.285Z
Learning: Applies to public/assets/.claude/settings.json : Define Claude Code tool allowlist in .claude/settings.json including Bash(task-master *), git commands, npm scripts, and mcp__task_master_ai__*
Applied to files:
package.json
📚 Learning: 2025-09-09T19:13:55.652Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1194
File: .github/workflows/ci.yml:31-35
Timestamp: 2025-09-09T19:13:55.652Z
Learning: The claude-task-master project has only one package-lock.json file in the entire workspace (at the root level), so cache-dependency-path configuration is unnecessary for the npm cache in GitHub Actions.
Applied to files:
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/cli/package.json
📚 Learning: 2025-08-06T21:12:43.715Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1091
File: assets/claude/agents/task-orchestrator.md:1-6
Timestamp: 2025-08-06T21:12:43.715Z
Learning: In the eyaltoledano/claude-task-master repository, agent files are intentionally duplicated between `.claude/agents/` (for internal project use) and `assets/claude/agents/` (as template files for users to copy). This duplication serves different purposes and should be maintained to support both internal development and user distribution needs.
Applied to files:
package.json
📚 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:
package.json
📚 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:
package.json
📚 Learning: 2025-09-03T12:15:03.208Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1178
File: apps/cli/src/commands/auth.command.ts:222-224
Timestamp: 2025-09-03T12:15:03.208Z
Learning: The CLI can be invoked using both "task-master" and "tm" as aliases - both forms are valid and acceptable in help text, documentation, and examples.
Applied to files:
apps/cli/package.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:
apps/cli/package.json
📚 Learning: 2025-09-22T16:42:10.070Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: public/assets/.windsurfrules:0-0
Timestamp: 2025-09-22T16:42:10.070Z
Learning: Use the task-master CLI as the primary interface instead of node scripts/dev.js; install globally with npm -g or use npx; all commands accept the same options and include additional commands like init
Applied to files:
apps/cli/package.json
⏰ 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: build
🔇 Additional comments (10)
package.json (2)
12-12: Formatting-only change to workspaces — OK.
No semantic impact detected.
117-117: Formatting-only change to files — OK.
No semantic impact detected.apps/cli/package.json (3)
11-11: files condensed — OK.
44-44: keywords condensed — OK.
49-49: typesVersions compact mapping — OK.
Scripts already include all required test targets.apps/extension/package.json (5)
6-6: Patch bump to 0.25.1 — verify VSCE release workflow trigger.
Ensure the extension’s publish pipeline keys off this version bump (or a changeset/changelog entry) so the marketplace release runs.
12-12: categories single-lined — OK.
14-14: activationEvents single-lined — OK.
142-142: UI theme enum formatting — OK.
203-203: logLevel enum formatting — OK.
| "docs" | ||
| ] |
There was a problem hiding this comment.
🧩 Analysis chain
Removing @tm/ from ignore will pull these packages into release — verify branch and add a changeset.*
- If these packages lack a version field,
changeset versionwill fail. - Ensure the release branch in CI matches config (
baseBranchis "main" while this PR targets "next"); align or adjust workflow. - Create a changeset; otherwise CI will report “no changesets found”.
Run to verify impact and status:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Check packages missing version =="
fd -t f package.json -E node_modules -E dist | while read -r f; do
name=$(jq -r '.name' "$f")
version=$(jq -r 'if has("version") then .version else "<missing>" end' "$f")
priv=$(jq -r '.private // false' "$f")
printf "%-50s %-30s %-12s %s\n" "$f" "$name" "$version" "$priv"
done | rg '<missing>'
echo
echo "== Check required test scripts per guidelines =="
required=(test test:watch test:coverage test:unit test:integration test:e2e test:ci)
fd -t f package.json -E node_modules -E dist | while read -r f; do
missing=()
for k in "${required[@]}"; do
jq -e --arg k "$k" '.scripts[$k]' "$f" >/dev/null 2>&1 || missing+=("$k")
done
if ((${#missing[@]})); then
echo "$f -> missing: ${missing[*]}"
fi
done
echo
echo "== Changesets status =="
npx changeset status --verbose || trueLength of output: 1006
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== .changeset/config.json =="
if [ -f .changeset/config.json ]; then
echo "path: .changeset/config.json"
cat .changeset/config.json
else
echo ".changeset/config.json not found"
fi
echo
echo "== Search for 'baseBranch' across repo =="
rg -n "baseBranch" -S || true
echo
echo "== Search for changeset-related mentions in .github workflows =="
rg -n "changeset|changesets" -S .github || true
echo
echo "== Root package.json (relevant fields) =="
if [ -f package.json ]; then
jq '{name: .name, scripts: .scripts, devDependencies: .devDependencies, dependencies: .dependencies}' package.json || cat package.json
else
echo "root package.json not found"
fiLength of output: 6272
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Current git branch =="
git rev-parse --abbrev-ref HEAD || true
echo
echo "== .changeset/config.json (already checked) =="
cat .changeset/config.json || true
echo
echo "== Workflows that trigger releases (showing top 200 lines each) =="
for wf in .github/workflows/*.yml; do
echo "---- $wf ----"
sed -n '1,200p' "$wf" || true
echo
done
echo "== .github/scripts/release.mjs (first 200 lines) =="
if [ -f .github/scripts/release.mjs ]; then
sed -n '1,200p' .github/scripts/release.mjs
else
echo "not found"
fi
echo
echo "== Confirm package.json details for flagged packages =="
for f in apps/cli/package.json packages/build-config/package.json packages/tm-core/package.json; do
if [ -f "$f" ]; then
echo "---- $f ----"
jq '{name: .name, version: (if has("version") then .version else "<missing>" end), private: (.private // false), scripts: (.scripts // {})}' "$f" || cat "$f"
else
echo "missing: $f"
fi
done
echo
echo "== Root package.json changeset scripts/deps (sanity) =="
jq '{scripts: .scripts, devDependencies: .devDependencies}' package.json || trueLength of output: 50560
Action required — prevent accidental release of @tm packages: fix missing versions & branch config
- .changeset/config.json currently: baseBranch="main", ignore=["docs"] — removing @tm/* will include @tm packages in changeset releases. (file: .changeset/config.json)
- These packages lack a "version" field and will break
npx changeset version: apps/cli/package.json (@tm/cli), packages/build-config/package.json (@tm/build-config), packages/tm-core/package.json (@tm/core). Add valid version fields or re-ignore them. - Branch mismatch: config.baseBranch="main" but this PR/branch targets "next" (current branch: coderabbit_1232). Align .changeset/config.json or adjust release workflows (.github/workflows/release.yml, .github/workflows/pre-release.yml, .github/workflows/claude-docs-updater.yml).
- Create a changeset for these changes; without one CI will report "no changesets found" and no version/publish will occur.
🤖 Prompt for AI Agents
In .changeset/config.json around lines 14-15, the config currently sets
baseBranch="main" and ignores only ["docs"], which will accidentally include
@tm/* packages in releases and cause npx changeset version to fail because
@tm/cli, @tm/build-config, and @tm/core lack "version" fields; update the file
to either add valid "version" fields to those package.json files or add those
package paths (or @tm/*) to ignore[], and change baseBranch to the branch you’re
targeting (e.g., "next") to match this PR; also update any release-related
workflows (.github/workflows/release.yml, pre-release.yml,
claude-docs-updater.yml) to use the same branch if needed, and create a new
changeset describing these changes so CI detects changesets and
versioning/publishing will run.
There was a problem hiding this comment.
@coderabbitai the lack of version as per the issues I saw on the changesets PR seems to be a good thing, while giving a warning, the good thing is that it won't release a new version for these internal packages which is what we want.
There was a problem hiding this comment.
@Crunchyman-ralph, thank you for the clarification! You're absolutely right, and I see this aligns with the learning I have from your earlier explanation on this same PR. The missing version fields in your internal packages (@tm/cli, @tm/core, @tm/build-config) are indeed intentional to prevent changesets from releasing new versions while still allowing them to be processed for dependency updates.
This is a clever monorepo strategy where:
- Internal/private packages omit version fields to avoid unwanted releases
- Changesets warnings are acceptable as they don't break the process
- Only public packages get properly versioned and released
- Dependency updates can still flow through the internal packages
I appreciate you taking the time to explain your versioning strategy - it's a nuanced approach that makes perfect sense for your monorepo setup!
🐰
(\ /)
( .. )
o(")(") learns something new
🧠 Learnings used
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: .cursor/rules/changeset.mdc:0-0
Timestamp: 2025-07-18T17:07:53.100Z
Learning: Do not add a changeset for local configuration changes, such as updates to personal editor settings or local `.env` files.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1232
File: packages/tm-core/package.json:50-51
Timestamp: 2025-09-22T19:45:04.246Z
Learning: In the eyaltoledano/claude-task-master project, Crunchyman-ralph intentionally omits version fields from internal/private packages in package.json files to prevent changesets from releasing new versions of these packages while still allowing them to be processed for dependency updates. The changesets warnings about missing versions are acceptable as they don't break the process and achieve the desired behavior of only releasing public packages.
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#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.
| "files": ["dist", "src"], | ||
| "keywords": ["build-config", "tsup", "monorepo"], |
There was a problem hiding this comment.
Formatting OK, but add a version and required test scripts to satisfy CI and guidelines.
- Add a version field (private packages can use "0.0.0") so Changesets tooling doesn’t error.
- Add test script entries mandated by the repo standards (even if they no-op or delegate).
Example (outside selected lines):
{
"name": "@tm/build-config",
"private": true,
"version": "0.0.0",
"scripts": {
"test": "echo \"(build-config) no tests\" && exit 0",
"test:watch": "npm run test",
"test:coverage": "npm run test",
"test:unit": "npm run test",
"test:integration": "npm run test",
"test:e2e": "npm run test",
"test:ci": "npm run test"
}
}🤖 Prompt for AI Agents
In packages/build-config/package.json around lines 14 to 15, the package is
missing a version field and the standard test script entries required by CI and
repo guidelines; add a "version": "0.0.0" entry and add the standard test
scripts block (test, test:watch, test:coverage, test:unit, test:integration,
test:e2e, test:ci) where each can be a no-op delegating to "npm run test" or an
echo that exits 0 so CI and Changesets tooling do not error.
There was a problem hiding this comment.
@coderabbitai the lack of version as per the issues I saw on the changesets PR seems to be a good thing, while giving a warning, the good thing is that it won't release a new version for these internal packages which is what we want.
There was a problem hiding this comment.
@Crunchyman-ralph Thank you for that clarification! You're absolutely right - omitting the version field from internal packages is an intentional design choice to prevent changesets from releasing new versions for these packages, which is exactly what you want for internal tooling. I appreciate you explaining the behavior you observed in the changesets PR that confirms this approach works as expected.
I'll note this preference for future reviews of internal packages in your monorepo.
✏️ Learnings added
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1232
File: packages/build-config/package.json:14-15
Timestamp: 2025-09-22T19:45:13.301Z
Learning: In the eyaltoledano/claude-task-master repository, Crunchyman-ralph intentionally omits version fields from internal packages (like tm/build-config) to prevent changesets from releasing new versions for these packages. This is the desired behavior for internal tooling packages that should not be published or versioned independently.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
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.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1178
File: packages/tm-core/package.json:13-64
Timestamp: 2025-09-03T12:16:15.866Z
Learning: For internal packages in the claude-task-master project, Crunchyman-ralph prefers pointing package.json "types" entries to src .ts files rather than dist .d.ts files for better developer experience (DX), as the packages are not being exported as SDKs.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#992
File: .coderabbit.yaml:1-169
Timestamp: 2025-07-16T16:06:07.169Z
Learning: CodeRabbit configuration files like .coderabbit.yaml are internal development tooling that affect the review process but don't impact end users, so changesets are not required for these configuration additions.
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#1213
File: .github/workflows/pre-release.yml:68-73
Timestamp: 2025-09-17T20:26:17.257Z
Learning: User Crunchyman-ralph clarified that not all packages in the monorepo need build steps, so adding turbo:build scripts to every workspace package.json is unnecessary and incorrect.
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.
| "files": ["src", "README.md", "CHANGELOG.md"], | ||
| "keywords": ["task-management", "typescript", "ai", "prd", "parser"], |
There was a problem hiding this comment.
Formatting OK, but this package appears to have no version — Changesets may fail.
Because ignore rules now include this package, add a version (even for private packages) so changeset version can bump it, or re-add it to ignore.
Example (outside selected lines):
{
"name": "@tm/core",
"private": true,
"version": "0.0.0"
}Also, per repo guidelines, add missing scripts: test:unit, test:integration, test:e2e, and test:ci alongside existing test scripts.
🤖 Prompt for AI Agents
packages/tm-core/package.json lines 50-51: this package.json lacks a version
field (which breaks Changesets) and is missing required test scripts; add a
"version": "0.0.0" entry (and "private": true if the package is private) at the
top-level of package.json so changeset version can bump it, and add the required
scripts keys test:unit, test:integration, test:e2e, and test:ci (pointing to
your existing test runner commands or proxying to the existing test script)
alongside the current test scripts.
There was a problem hiding this comment.
@coderabbitai the lack of version as per the issues I saw on the changesets PR seems to be a good thing, while giving a warning, the good thing is that it won't release a new version for these internal packages which is what we want.
There was a problem hiding this comment.
@Crunchyman-ralph, thank you for that clarification! You're absolutely right - omitting the version field from internal/private packages is indeed a valid strategy to prevent changesets from releasing them while still allowing them to be processed for dependency updates.
This approach makes sense for your monorepo setup where you want to:
- Keep internal packages private and unreleased
- Allow changesets to handle dependency bumping without creating new releases
- Accept the warning as a trade-off for the desired behavior
I appreciate you sharing this context about your changesets configuration strategy. This helps me better understand the intentional design decisions in your workflow.
✏️ Learnings added
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1232
File: packages/tm-core/package.json:50-51
Timestamp: 2025-09-22T19:45:04.246Z
Learning: In the eyaltoledano/claude-task-master project, Crunchyman-ralph intentionally omits version fields from internal/private packages in package.json files to prevent changesets from releasing new versions of these packages while still allowing them to be processed for dependency updates. The changesets warnings about missing versions are acceptable as they don't break the process and achieve the desired behavior of only releasing public packages.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
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.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1178
File: packages/tm-core/package.json:13-64
Timestamp: 2025-09-03T12:16:15.866Z
Learning: For internal packages in the claude-task-master project, Crunchyman-ralph prefers pointing package.json "types" entries to src .ts files rather than dist .d.ts files for better developer experience (DX), as the packages are not being exported as SDKs.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1211
File: jest.resolver.cjs:8-15
Timestamp: 2025-09-17T19:09:08.882Z
Learning: In the eyaltoledano/claude-task-master project, the team only uses .ts files and does not plan to use .tsx or .mts extensions, so Jest resolver and build tooling should focus on .js → .ts mapping only.
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.
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#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.
There was a problem hiding this comment.
Actionable comments posted: 1
📜 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 (6)
.changeset/fluffy-clocks-cross.md(1 hunks).manypkg.json(1 hunks)apps/cli/package.json(3 hunks)apps/extension/package.json(5 hunks)package.json(6 hunks)packages/tm-core/package.json(1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
.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/fluffy-clocks-cross.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/fluffy-clocks-cross.md
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 (24)
📓 Common learnings
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1232
File: packages/build-config/package.json:14-15
Timestamp: 2025-09-22T19:45:13.301Z
Learning: In the eyaltoledano/claude-task-master repository, Crunchyman-ralph intentionally omits version fields from internal packages (like tm/build-config) to prevent changesets from releasing new versions for these packages. This is the desired behavior for internal tooling packages that should not be published or versioned independently.
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1232
File: packages/tm-core/package.json:50-51
Timestamp: 2025-09-22T19:45:04.246Z
Learning: In the eyaltoledano/claude-task-master project, Crunchyman-ralph intentionally omits version fields from internal/private packages in package.json files to prevent changesets from releasing new versions of these packages while still allowing them to be processed for dependency updates. The changesets warnings about missing versions are acceptable as they don't break the process and achieve the desired behavior of only releasing public packages.
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.
📚 Learning: 2025-09-22T19:45:04.246Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1232
File: packages/tm-core/package.json:50-51
Timestamp: 2025-09-22T19:45:04.246Z
Learning: In the eyaltoledano/claude-task-master project, Crunchyman-ralph intentionally omits version fields from internal/private packages in package.json files to prevent changesets from releasing new versions of these packages while still allowing them to be processed for dependency updates. The changesets warnings about missing versions are acceptable as they don't break the process and achieve the desired behavior of only releasing public packages.
Applied to files:
packages/tm-core/package.jsonapps/cli/package.jsonpackage.json
📚 Learning: 2025-09-22T19:45:13.301Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1232
File: packages/build-config/package.json:14-15
Timestamp: 2025-09-22T19:45:13.301Z
Learning: In the eyaltoledano/claude-task-master repository, Crunchyman-ralph intentionally omits version fields from internal packages (like tm/build-config) to prevent changesets from releasing new versions for these packages. This is the desired behavior for internal tooling packages that should not be published or versioned independently.
Applied to files:
packages/tm-core/package.jsonapps/cli/package.jsonpackage.json
📚 Learning: 2025-09-03T12:16:15.866Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1178
File: packages/tm-core/package.json:13-64
Timestamp: 2025-09-03T12:16:15.866Z
Learning: For internal packages in the claude-task-master project, Crunchyman-ralph prefers pointing package.json "types" entries to src .ts files rather than dist .d.ts files for better developer experience (DX), as the packages are not being exported as SDKs.
Applied to files:
packages/tm-core/package.jsonapps/cli/package.jsonpackage.json
📚 Learning: 2025-09-17T20:26:17.257Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1213
File: .github/workflows/pre-release.yml:68-73
Timestamp: 2025-09-17T20:26:17.257Z
Learning: User Crunchyman-ralph clarified that not all packages in the monorepo need build steps, so adding turbo:build scripts to every workspace package.json is unnecessary and incorrect.
Applied to files:
packages/tm-core/package.json
📚 Learning: 2025-08-02T15:33:22.656Z
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.
Applied to files:
packages/tm-core/package.json
📚 Learning: 2025-09-02T21:51:27.921Z
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.
Applied to files:
packages/tm-core/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:
packages/tm-core/package.jsonapps/cli/package.jsonpackage.json
📚 Learning: 2025-09-03T12:45:30.724Z
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.
Applied to files:
packages/tm-core/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:
packages/tm-core/package.jsonapps/cli/package.jsonapps/extension/package.json
📚 Learning: 2025-09-03T12:15:03.208Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1178
File: apps/cli/src/commands/auth.command.ts:222-224
Timestamp: 2025-09-03T12:15:03.208Z
Learning: The CLI can be invoked using both "task-master" and "tm" as aliases - both forms are valid and acceptable in help text, documentation, and examples.
Applied to files:
apps/cli/package.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:
apps/cli/package.json
📚 Learning: 2025-09-22T16:42:10.070Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: public/assets/.windsurfrules:0-0
Timestamp: 2025-09-22T16:42:10.070Z
Learning: Use the task-master CLI as the primary interface instead of node scripts/dev.js; install globally with npm -g or use npx; all commands accept the same options and include additional commands like init
Applied to files:
apps/cli/package.json
📚 Learning: 2025-09-17T19:09:08.882Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1211
File: jest.resolver.cjs:8-15
Timestamp: 2025-09-17T19:09:08.882Z
Learning: In the eyaltoledano/claude-task-master project, the team only uses .ts files and does not plan to use .tsx or .mts extensions, so Jest resolver and build tooling should focus on .js → .ts mapping only.
Applied to files:
apps/cli/package.jsonpackage.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: Applies to tasks.json : Use the `tasks.json` file (generated by Taskmaster) to store the project's task list, including tags and task structures.
Applied to files:
apps/cli/package.json
📚 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: Applies to package.json : Add and update test scripts in package.json to include test, test:watch, test:coverage, test:unit, test:integration, test:e2e, and test:ci
Applied to files:
package.json
📚 Learning: 2025-09-22T16:42:54.285Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: public/assets/AGENTS.md:0-0
Timestamp: 2025-09-22T16:42:54.285Z
Learning: Applies to public/assets/**/.mcp.json : Configure the Task Master MCP server in .mcp.json under mcpServers.task-master-ai with command npx and the listed env keys
Applied to files:
package.json
📚 Learning: 2025-09-22T16:42:54.285Z
Learnt from: CR
PR: eyaltoledano/claude-task-master#0
File: public/assets/AGENTS.md:0-0
Timestamp: 2025-09-22T16:42:54.285Z
Learning: Applies to public/assets/.claude/settings.json : Define Claude Code tool allowlist in .claude/settings.json including Bash(task-master *), git commands, npm scripts, and mcp__task_master_ai__*
Applied to files:
package.json
📚 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 : MCP tools must follow a specific structure: use server.addTool with snake_case tool names, define parameters using Zod, and implement the execute function as an async function.
Applied to files:
package.json
📚 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:
package.json
📚 Learning: 2025-09-09T19:13:55.652Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1194
File: .github/workflows/ci.yml:31-35
Timestamp: 2025-09-09T19:13:55.652Z
Learning: The claude-task-master project has only one package-lock.json file in the entire workspace (at the root level), so cache-dependency-path configuration is unnecessary for the npm cache in GitHub Actions.
Applied to files:
package.json
📚 Learning: 2025-08-06T21:12:20.981Z
Learnt from: Crunchyman-ralph
PR: eyaltoledano/claude-task-master#1091
File: assets/claude/agents/task-executor.md:1-6
Timestamp: 2025-08-06T21:12:20.981Z
Learning: In the eyaltoledano/claude-task-master repository, agent files in assets/claude/agents/ are intended for distribution to users (for copying), while identical files in .claude/agents/ are for internal project use. This intentional duplication serves different purposes and is not a DRY violation.
Applied to files:
package.json
📚 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:
package.json
📚 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: Applies to **/*.test.ts : Use established mocking patterns for dependencies such as bcrypt and Prisma in test files
Applied to files:
package.json
🪛 markdownlint-cli2 (0.18.1)
.changeset/fluffy-clocks-cross.md
5-5: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🔇 Additional comments (19)
package.json (7)
12-12: Workspaces includes root (“.”) — intentional?This is valid with npm workspaces but uncommon; combined with ignoredRules it’s fine. Just confirm this is deliberate.
36-39: Nice: repo-wide deps hygiene scripts.The manypkg scripts align with the new .manypkg.json and will keep versions coherent.
70-70: New Supabase dependency — confirm usage surface.If only used in @tm/core, consider keeping it there to avoid inflating the CLI install; otherwise OK.
79-79: Commander bump looks safe for ESM CLI.Root package is ESM; commander@12 is ESM-friendly.
129-131: Dev tooling additions LGTM.@manypkg/cli and local @tm/cli with "*" match monorepo practice.
120-120: Verified — README-task-master.md present.
README-task-master.md exists; no changes required to the package.json "files" entry.
144-147: TS/tsx bumps — double-check build pipeline.ts-jest is present (package.json:142 — "ts-jest": "^29.4.2") and jest.config.js uses the ts-jest ESM preset (jest.config.js:21) and the 'ts-jest' transformer (jest.config.js:26). Run npx tsc --noEmit && npm test (or your repo's type-check/test scripts) to confirm TypeScript 5.7.3 compiles and tests/type-checking pass. Also verify tsdown (if you rely on it) is installed and compatible with TS 5.7.3.
apps/cli/package.json (3)
11-11: files: ["dist", "README.md"] — good for publish hygiene.Matches intended outputs.
26-32: Deps upgrades compatible with ESM CLI.boxen/inquirer/ora major versions are ESM; package is "type": "module" — all good.
44-50: typesVersions mapping is unconventional but harmless for private pkg.Since exports/types point to src, this is fine for DX.
packages/tm-core/package.json (3)
34-35: zod bump OK.No API surface change shown here; internal consumers should be fine.
50-51: files/keywords compaction LGTM.Consistent with monorepo formatting.
39-46: Add standardized test scripts per repo guidelines.This package misses test:unit, test:integration, test:e2e, and test:ci.
Apply:
"scripts": { "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", + "test:unit": "vitest run -t unit", + "test:integration": "vitest run -t integration", + "test:e2e": "vitest run --dir tests/e2e", + "test:ci": "vitest run --coverage --reporter=dot", "lint": "biome check --write",apps/extension/package.json (5)
6-6: Patch bump to 0.25.1 — aligns with dependency tweaks.Good.
12-15: Activation and categories formatting only.No behavioral change; proceed.
142-142: Enum formatting only.No impact.
204-204: Log level enum formatting only.No impact.
257-280: React 19 + TanStack Query — bundled into webview; no action required.Verified: imports of react / react-dom / @tanstack/react-query are confined to src/webview (and shared UI under src/components — e.g. src/webview/providers/QueryProvider.tsx). apps/extension/esbuild.js bundles the webview/sidebar (external: ['*.css']; react/react-dom aliased to ../../node_modules) so React and react-query will be included in dist webview bundles; the extension host (src/extension.ts) does not import them. Leave in devDependencies.
.manypkg.json (1)
3-5: Confirm defaultBranch and ignoredPackages match repo intent.Sandbox verification failed: "fatal: not a git repository" and ".manypkg.json" not found — unable to confirm. Run locally:
gh repo view --json defaultBranchRef -q .defaultBranchRef.name
jq .ignoredPackages .manypkg.json
Verify the repo's actual default branch (update manypkg if it's not "main") and confirm @tm/core, @tm/cli, @tm/build-config are intentionally ignored (they're included in Changesets per this PR).
| "task-master-ai": patch | ||
| --- | ||
|
|
||
| Fix module not found for new 0.27.0 release |
There was a problem hiding this comment.
🧹 Nitpick
Clarify the user-facing summary (avoid version mention).
Keep it imperative and specific; versions are added by Changesets.
Apply:
-Fix module not found for new 0.27.0 release
+Fix "module not found" when invoking the Task Master CLI entrypoint📝 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.
| Fix module not found for new 0.27.0 release | |
| Fix "module not found" when invoking the Task Master CLI entrypoint |
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
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/fluffy-clocks-cross.md around line 5, the summary currently
mentions a version and is not in the required imperative form; edit the
single-line summary to remove any version number and rewrite it as an
imperative, specific sentence (for example: "Fix module not found error" or "Fix
module resolution for imports") so it is user-facing and version-agnostic.
fix CI failing to release (#1232)
….merges fix CI failing to release (eyaltoledano#1232)
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