feat(skills): add per-profile skills management#711
Draft
cooco119 wants to merge 1 commit intokaitranntt:devfrom
Draft
feat(skills): add per-profile skills management#711cooco119 wants to merge 1 commit intokaitranntt:devfrom
cooco119 wants to merge 1 commit intokaitranntt:devfrom
Conversation
Enable per-profile skill isolation by leveraging CLAUDE_CONFIG_DIR. When skills_mode is set to 'isolated', the instance's skills symlink is replaced with a real directory where shared skills are individually symlinked and profile-specific skills can coexist. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
Summary
skills_mode(shared|isolated) to account config, enabling per-profile skill isolationsyncSkills()in SharedManager that converts the instanceskills/symlink to a real directory with individually symlinked shared skillsccs skills <profile> <command>CLI that wrapsnpx skillswithCLAUDE_CONFIG_DIRtargeting the correct instance directoryccs skills <profile> add, sync shared skills duringccs syncHow it works
When
skills_mode: isolatedis set for an account profile:skills/symlink (→ shared → ~/.claude/skills) is replaced with a real directory~/.claude/skills/is individually symlinked into the instance directorynpx skills add -gruns withCLAUDE_CONFIG_DIRpointing to the instance, so new skills install directly into the isolated directoryChanged files
src/auth/account-context.tsAccountSkillsModetype,skillsModein policy/metadatasrc/config/unified-config-types.tsskills_modeonAccountConfigsrc/types/config.tsskills_modeonProfileMetadatasrc/management/shared-manager.tssyncSkills()+syncSharedSkillsToIsolated()src/management/instance-manager.tssyncSkills()inensureInstance()src/commands/sync-command.tsccs syncsrc/commands/skills-command.tsnpx skillssrc/ccs.tsskillssubcommandsrc/commands/help-command.tstests/unit/skills-sync.test.tsTest plan
bun run format— cleanbun run typecheck— no errorsbun run lint:fix— cleanbun run validate— exit 0 (pre-existing failures unrelated)bun run validate:ci-parity— passed (pre-push hook)ccs skills personal isolate→ccs skills personal add <pkg>→ccs skills personal listccs skills personal sharerestores shared modeccs syncpreserves isolated skills🤖 Generated with Claude Code