feat(skills): add bundled /review skill for out-of-the-box code review#2348
feat(skills): add bundled /review skill for out-of-the-box code review#2348DragonnZhang merged 7 commits intomainfrom
Conversation
Add a new 'bundled' skill level to the skill system and ship a /review skill that provides code review capability without any user configuration. - Add 'bundled' to SkillLevel type (lowest precedence: project > user > extension > bundled) - Load bundled skills from packages/core/src/skills/bundled/ via import.meta.url - Add /review skill supporting local changes, PR review, and file-specific review - Spawn 4 parallel review agents: Correctness & Security, Code Quality, Performance & Efficiency, and Undirected Audit Closes #2346 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
📋 Review SummaryThis PR introduces a new 'bundled' skill level to the skill system and ships a 🔍 General Feedback
🎯 Specific Feedback🔴 Critical
🟡 High
🟢 Medium
🔵 Low
✅ Highlights
|
- Fix getSkillsBaseDir() to handle all SkillLevel values explicitly (throw for 'extension', return bundled dir for 'bundled') - Cache bundled skills directory path in constructor instead of recomputing on every call - Update stale comments and JSDoc to reflect the full precedence chain (project > user > extension > bundled) - Add comment explaining why bundled/extension dirs are not watched - Update index.ts module doc to list all four skill levels - Add tests for bundled skills: listSkills, loadSkill fallback, project-level override, getSkillsBaseDir for bundled and extension Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Code Coverage Summary
CLI Package - Full Text ReportCore Package - Full Text ReportFor detailed HTML reports, please see the 'coverage-reports-22.x-ubuntu-latest' artifact from the main CI run. |
- Add bundled directory existence check with warning log on missing dir - Improve debug message to list all checked levels when skill not found - Clarify empty-diff behavior in SKILL.md (stop early, don't spawn agents) - Add guideline to flag exposed secrets/credentials as Critical Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove redundant getBundledSkillsDir() method, use field directly - Add allowedTools declaration to bundled review SKILL.md - Strengthen bundled base dir assertion with precise regex - Extract shared mock helpers and use exact path matching in tests - Add user-level over bundled precedence test Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds a new built-in (“bundled”) skill level so qwen-code can ship skills out-of-the-box, and introduces an initial bundled /review skill intended to provide turnkey code review behavior.
Changes:
- Extend the
SkillLeveltype with a new lowest-precedencebundledlevel. - Update
SkillManagerto discover/load bundled skills from a directory resolved relative toimport.meta.url, and includebundledin precedence. - Add tests for bundled skill loading/precedence and add a bundled
reviewskill definition.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/core/src/skills/types.ts | Adds bundled to the SkillLevel union type. |
| packages/core/src/skills/skill-manager.ts | Resolves and loads bundled skills; updates precedence order and base-dir handling. |
| packages/core/src/skills/skill-manager.test.ts | Adds unit tests covering bundled base dir + bundled skill discovery and precedence. |
| packages/core/src/skills/index.ts | Updates module docs to describe the new bundled level and precedence. |
| packages/core/src/skills/bundled/review/SKILL.md | Introduces the bundled /review skill content and metadata. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Addresses Copilot review feedback: replace non-canonical tool names (Agent, Bash, Grep, Read, Glob) with the canonical ToolNames identifiers (task, run_shell_command, grep_search, read_file, glob) so they match the values used by doesToolInvocationMatch() if enforcement is added. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add BundledSkillLoader to bridge bundled skills into the slash command system, making them directly invocable (e.g., /review) without going through /skills. Also copy bundled skill assets to dist/ for esbuild bundle compatibility. - Add BundledSkillLoader implementing ICommandLoader - Add CommandKind.SKILL enum value - Register loader in interactive, non-interactive, and command listing paths - Copy bundled skills dir in copy_bundle_assets.js for esbuild output - Add comprehensive tests (7 cases) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace hardcoded Unix path strings with path.join() calls so that path prefix comparisons work correctly on Windows. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>



Add a new 'bundled' skill level to the skill system and ship a /review skill that provides code review capability without any user configuration.
Add 'bundled' to SkillLevel type (lowest precedence: project > user > extension > bundled)
Load bundled skills from packages/core/src/skills/bundled/ via import.meta.url
Add /review skill supporting local changes, PR review, and file-specific review
Spawn 4 parallel review agents: Correctness & Security, Code Quality, Performance & Efficiency, and Undirected Audit