fix: resolve skill source path correctly for all scopes#514
Merged
breaking-brake merged 1 commit intomainbreaking-brake/cc-wf-studio:mainfrom Jan 29, 2026
fix/global-skill-path-resolutionbreaking-brake/cc-wf-studio:fix/global-skill-path-resolutionCopy head branch name to clipboard
Merged
fix: resolve skill source path correctly for all scopes#514breaking-brake merged 1 commit intomainbreaking-brake/cc-wf-studio:mainfrom fix/global-skill-path-resolutionbreaking-brake/cc-wf-studio:fix/global-skill-path-resolutionCopy head branch name to clipboard
breaking-brake merged 1 commit intomainbreaking-brake/cc-wf-studio:mainfrom
fix/global-skill-path-resolutionbreaking-brake/cc-wf-studio:fix/global-skill-path-resolutionCopy head branch name to clipboard
Conversation
- Use path.resolve() with skillPath directly instead of reconstructing path - Handles both absolute paths (user-scope) and relative paths (project-scope) - Mark unused _getSourceSkillsDir() with underscore prefix Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Merged
braking-brake-semantic-release Bot
pushed a commit
that referenced
this pull request
Jan 29, 2026
## [3.18.2](v3.18.1...v3.18.2) (2026-01-29) ### Bug Fixes * add CLI-aware skill normalization to skip native directories ([#512](#512)) ([0c49d94](0c49d94)) * add MCP server detection for Copilot CLI and Codex CLI ([#509](#509)) ([#510](#510)) ([ef31649](ef31649)) * add skills detection for Copilot/Codex with grouped UI ([#508](#508)) ([ab89f69](ab89f69)), closes [#507](#507) * remove Codex project trust workaround ([#513](#513)) ([c5a9c45](c5a9c45)), closes [#495](#495) * resolve skill source path correctly for all scopes ([#514](#514)) ([8caf97e](8caf97e)) * show AI provider badge for user scope skills ([#515](#515)) ([760d411](760d411)) ### Documentation * add AI coding tools configuration reference ([#505](#505)) ([f3bd005](f3bd005))
|
🎉 This PR is included in version 3.18.2 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When executing workflows with Codex CLI, skills from global/user-scope directories (e.g.,
~/.copilot/skills/time-greeting) fail to copy with ENOENT error.Current Behavior
~/.copilot/skills/time-greetingto workflowFailed to copy skill "time-greeting": ENOENT: no such file or directory, scandir '{project}/.copilot/skills/time-greeting'The
checkSkillsToNormalize()function was reconstructing the source path usinggetSourceSkillsDir(), which always returns project-scope paths. This caused user-scope skill paths to be incorrectly resolved.Expected Behavior
.claude/skills/Solution
Use
path.resolve(workspaceRoot, path.dirname(skillPath))to derive the source directory directly from the skill's actual path.Changes
File:
src/extension/services/skill-normalization-service.tsgetSourceSkillsDir()call withpath.resolve(workspaceRoot, path.dirname(skillPath))path.resolve()correctly handles:_getSourceSkillsDir()with underscore prefix for future useImpact
~/.copilot/skills/,~/.codex/skills/).github/skills/)path.resolve()handles both separators)Testing
~/.copilot/skills/) → Codex CLI execution.github/skills/) → Codex CLI executionnpm run check && npm run build)🤖 Generated with Claude Code