Claude Skills Manager
A VS Code extension that bundles a personal Claude Code
skill library and helps you install the skills relevant to whatever project
you have open.
This is the VS Code front-end for the claude-skills-deployer repo. The
skill content lives in ../skills_library/; this extension bundles a synced
copy (skills_library/, generated by npm run sync-skills, gitignored).
Features
Activity bar view ("Claude Skills") — lists every skill in the bundled
library with its status for the current workspace:
- 💡 relevant to this workspace but not yet installed
- ✅ installed in
<workspace>/.claude/skills/
- ◦ available in
~/.claude/skills/ but not relevant/installed here
- ⊘ not yet installed in
~/.claude/skills/ at all
Project-local skills — if <workspace>/.claude/skills/ already
contains skills that aren't part of the bundled library (e.g. this
extension was installed into a project that already has its own custom
skills, or skills installed from elsewhere), they're listed too, marked
project-only. Their description is read from the skill's own SKILL.md
frontmatter when available. This means installing the extension into an
existing project never hides skills that are already there.
On/off checkboxes — each skill in the tree has a checkbox: check it to
install ("enable") the skill into <workspace>/.claude/skills/, uncheck
it to remove ("disable") it from there. This is the simplest way to turn
individual skills on or off per project.
Note: <workspace>/.claude/skills/ is normally git-tracked and shared
with your team — unchecking a skill here deletes its files, and if you
commit that, it removes the skill for everyone after merge. To turn a
skill off only for yourself, without touching the shared files, use
the eye icon described below instead.
Multi-agent clones (auto-sync by default) — one skills_library/ fans
out to Claude, Cursor, Kiro (SKILL.md), and Copilot
(.github/instructions/*.instructions.md). When
claudeSkills.features.multiAgent is on and
claudeSkills.agents.syncWorkspaceToAll is true (default), your
effective skill set (enabled for you, respecting skillOverrides)
is mirrored to all enabled agent paths:
.cursor/skills/, .kiro/skills/, .github/instructions/ (Copilot).
Sync runs on checkbox/eye toggle, branch profile apply, extension startup,
and .claude/skills / settings.local.json changes. Manual:
Sync Workspace Skills to All Agents. .claude/skills/ stays the
git-tracked file source of truth.
Per-branch skill profiles — each git branch can have its own skill
layout stored in ~/.claude/learning/branch-profiles.json (global,
personal, not committed). A Branch profiles section at the top of the
Skills tree shows the current branch and saved profiles; toolbar icons
provide show / save / apply. The extension auto-saves when you install/remove
skills or change local overrides; on branch switch it restores the saved
profile for the new branch (adds missing skills by default, mirrored to other
agents when sync is on). Committed .claude/skills/ on the branch remains
the team-shared source of truth after you git commit.
Team branch profiles in git — commit a shared layout per branch in
.claude/skills-profile.json via Export Team Branch Profile to Git.
Shown in a Team profiles tree section. On branch switch: team profile first,
then personal profile from ~/.claude/learning/branch-profiles.json.
Multi-root workspaces — uses the active editor's workspace folder; Pick Active
Workspace Folder (or status bar) when multiple roots are open.
SKILL.md lint — source + Cursor/Kiro/Copilot mirror checks on sync (claudeSkills.lint.*); blocks multi-agent sync only when blockSyncOnError is on.
Attribution v2 hooks — Enable Attribution Hooks (v2) logs each
Skill tool invoke to runs.jsonl for per-skill cost attribution
without equal-split transcript guessing. Tokens are backfilled from
session transcripts via tool_use_id when the hook row has zero tokens.
Auto-installed when claudeSkills.agents.syncHooksOnSkillChange is on.
Copilot bootstrap — multi-agent sync writes .github/copilot-instructions.md
(always-on index) plus per-skill .github/instructions/*.instructions.md.
Local skill set vs. git branch — the checkbox means enabled for you,
not "change what the branch commits":
- Uncheck a branch-committed skill → writes
"off" to personal
.claude/settings.local.json (skillOverrides). Files stay in
.claude/skills/ for teammates; your git status stays clean.
- Check a skill not on the branch → copies into
.claude/skills/ and
adds it to .git/info/exclude so it stays personal-only on your machine.
- Uncheck a personal-only skill → removes the directory from your workspace.
Branch profiles in
~/.claude/learning/branch-profiles.json store this
per-branch effective set (including overrides), restored on branch switch.
Eye icon — same as uncheck/check for branch-committed skills (local
skillOverrides only). Disabled skills show "disabled locally" and a
closed-eye icon; the checkbox is unchecked while files remain on the branch.
Status bar items:
- How many relevant skills are pending install; click it to install them.
- A skill usage summary (active / needs review / unused), based on
.claude/learning/runs.jsonl written by the self-learning skill;
click it to open the full usage/KPI report.
- Today's estimated Claude spend (tokens + USD, with % of daily budget
when configured); click for the full usage report.
- Budget mode (Economy / Normal / Unlimited); click to cycle modes.
Claude Credits Usage report — the usage report also includes a
"Claude Credits Usage" section: total tokens and an estimated cost for the
last 14 days across all your projects, broken down by day and by model,
read directly from Claude Code's session transcripts
(~/.claude/projects/**/*.jsonl). The per-skill table also has a
Tokens column (populated once the self-learning skill records the
optional tokens field on a run).
Click any skill to open its SKILL.md (workspace copy if installed, else
global copy, else the bundled copy).
How to use this extension
- Install the
.vsix (Extensions view -> ... menu -> "Install from
VSIX...") or get it from the Marketplace, then open a workspace folder.
- Open the Claude Skills view in the activity bar. It lists the full
bundled skill library plus any skills already in
<workspace>/.claude/skills/, each annotated with its status for this
workspace (relevant / installed / available / project-only).
- First time only: run "Install Skill Library to ~/.claude/skills" to
seed your personal global library (subsequent steps copy from there).
- Run "Install Relevant Skills for Workspace" to auto-install the
skills that match files in your project (or "Preview Skill Detection
(Dry Run)" first to see what would happen without writing anything).
- Fine-tune per skill: tick/untick a skill's checkbox in the tree to
enable/disable it for this workspace, or right-click -> "Install to
Workspace .claude/skills" for a single skill.
- Click "Show Skill Usage Report" (graph icon, also in the status bar)
to see which installed skills are active, underused, or worth removing,
plus your overall Claude credits/token usage for the last 14 days.
- Optionally run "Enable Cost Control Hooks" to install session-size and
daily-budget
UserPromptSubmit hooks (warn at 80% of budget, auto-disable
high-tier skills when the cap is hit).
- Set budget caps under Settings → Extensions → Claude Skills Manager → Budget, or click the
Economy / Normal / Unlimited status bar item to cycle modes.
| Command |
What it does |
Claude Skills: Install Skill Library to ~/.claude/skills |
Copies every bundled skill into your personal global library (skips ones that already exist). |
Claude Skills: Install Relevant Skills for Workspace |
Detects which skills apply to the open workspace (by file patterns) and installs them. With syncWorkspaceToAll (default), deploys to all enabled agent workspace paths; otherwise Claude only. |
Claude Skills: Install All Skills for Workspace |
Same, ignoring detection — installs the whole library (all agents when sync is on). |
Claude Skills: Preview Skill Detection (Dry Run) |
Shows what would be installed, without writing anything. |
Claude Skills: Install to Workspace .claude/skills (per-skill, right-click in the tree) |
Installs a single skill into the current workspace, prompting before overwrite. |
Claude Skills: Disable Skill Locally (this workspace only) (per-skill, eye icon) |
Adds "<skill>": "off" to <workspace>/.claude/settings.local.json (skillOverrides) — turns the skill off for you only, without changing <workspace>/.claude/skills/. |
Claude Skills: Enable Skill Locally (per-skill, eye icon) |
Removes the local override, reverting the skill to the project default ("on"). |
Claude Skills: Show Skill Usage Report |
Opens a per-skill usage/KPI report (runs, success rate, tokens, last used, rating, suggested skills, misused/removal candidates) based on .claude/learning/runs.jsonl, plus a "Claude Credits Usage" section (tokens/estimated cost by day and model, last 14 days, all projects). |
Claude Skills: Enable Session Size Notifications |
Alias for Enable Cost Control Hooks (session size + budget). |
Claude Skills: Enable Cost Control Hooks (Budget + Session Size) |
Installs session-size-watch and budget-watch hooks: transcript size nudges, daily budget warnings, economy-mode enforcement, auto-disable of high-tier skills when the budget is exceeded. Syncs ~/.claude/learning/budget.json from VS Code settings. |
Claude Skills: Cycle Budget Mode (Economy / Normal / Unlimited) |
Cycles global budget mode. Economy disables high-tier skills locally; Normal enforces the daily cap; Unlimited only notifies at a high spend threshold. |
Claude Skills: Open Extension Settings |
Opens all extension settings (@ext:serhiivoinolovych.claude-skill-deployer); also available from the gear icon on the Skills Library toolbar. |
Claude Skills: Open Budget Settings |
Opens VS Code settings filtered to claudeSkills.budget.*. |
Claude Skills: Save Branch Skill Profile |
Snapshots installed skills + skillOverrides for the current git branch to ~/.claude/learning/branch-profiles.json. |
Claude Skills: Apply Branch Skill Profile |
Restores the saved profile for the current branch (install missing skills; optional remove extras via setting). |
Claude Skills: Show Branch Skill Profiles |
Lists all saved branch profiles for this repo (output channel + summary toast). Also visible in the Skills tree under Branch profiles. |
Claude Skills: Reset Mis-attributed Cost Data |
Removes collector-generated transcript rows and clears transcriptSkills so cost attribution can be re-collected accurately. |
Claude Skills: Install Skill Library to All Enabled AI Agents |
Copies the bundled library to global dirs for Claude, Cursor, Kiro, and Copilot (per claudeSkills.agents.enabled). |
Claude Skills: Show Enabled AI Agent Targets |
Lists which agents are enabled and their deploy paths (skills_library/agents.json). |
Claude Skills: Show Cost Intelligence Dashboard |
WebView: agent spend (14d), per-skill costs when attribution is reliable, cross-agent savings, optimizations. Hides per-skill data when equal-split mis-attribution is detected. |
Claude Skills: Sync Workspace Skills to All Agents |
Force mirror effective workspace skills to Cursor, Kiro, Copilot. |
Claude Skills: Show Cost Optimization Suggestions |
Actionable disable / agent-switch / archival hints from attribution data. |
Claude Skills: Apply Cost Optimizations |
Interactive apply (or auto when claudeSkills.optimizer.autoApply is on). |
Claude Skills: Manage Feature Toggles |
Flip major features on/off (claudeSkills.features.*). |
Claude Skills: Cycle Skill Sort (ROI / Cost) |
Sort skills tree by relevance, lowest cost, highest ROI, or best value. |
Claude Skills: Reset Emergency Cost Cutoff |
Re-enable skills after hard daily limit triggered. |
Claude Skills: Restore Archived Skill |
Move skill back from .claude/skills-archived/. |
Claude Skills: Estimate PR Review Cost |
PR cost estimate via gh (feature prCostEstimate). |
Claude Skills: Configure Weekly Report Email |
One-time setup: GitHub/GitLab token finds your inbox, SMTP sends the report. |
Claude Skills: Send Weekly AI Usage Report |
Sends cost/agent usage summary now (test) or waits for Monday 9:00 schedule. |
When claudeSkills.weeklyReport.enabled is on (default), the extension checks every 15 minutes while VS Code/Cursor is open. On the configured day (default Monday 9:00 local), it sends a plain informative email about AI agent usage and cost — no GitHub/GitLab issues.
One-time setup
- Open a workspace with a GitHub or GitLab
origin remote.
- Run Configure Weekly Report Email (sidebar key icon or Command Palette).
- Paste a personal access token (stored in VS Code Secret Storage — not in
settings.json), or reuse gh auth login / GITLAB_TOKEN.
- Complete SMTP (Gmail app password, Microsoft 365, or custom). Also stored in secrets.
Full token types, scopes, and settings table: see Weekly AI usage report in the repo README.
GitHub PAT (minimum scopes): read:user, user:email (classic) or fine-grained with Email addresses: Read + Profile: Read. repo is not required.
GitLab PAT (minimum scope): read_user.
SMTP is required — the git token finds your address; SMTP sends the mail.
Prerequisites
- One-time Configure Weekly Report Email (PAT + SMTP).
- VS Code/Cursor open at the scheduled time, or run Send Weekly AI Usage Report manually.
Advanced: claudeSkills.weeklyReport.emailTo or CLAUDE_SKILLS_SMTP_* env vars instead of the wizard.
Settings highlights
Find all options under Settings → Extensions → Claude Skills Manager (or search @ext:serhiivoinolovych.claude-skill-deployer). Sections: Budget, Agents, Features, Lint, Optimizer, Weekly Report, and more.
| Setting |
Default |
Purpose |
claudeSkills.budget.mode |
normal |
Economy / Normal / Unlimited token budget mode |
claudeSkills.budget.dailyBudgetUsd |
5 |
Daily estimated spend cap (USD) |
claudeSkills.branchProfiles.enabled |
true |
Per-git-branch skill profiles in ~/.claude/learning/branch-profiles.json |
claudeSkills.agents.enabled |
claude, cursor, kiro, copilot |
Agents that receive skill clones |
claudeSkills.agents.syncWorkspaceToAll |
true |
Fan out workspace install to all enabled agent paths (requires multiAgent feature) |
claudeSkills.agents.syncGlobalToAll |
true |
Fan out global library install to all enabled agent paths |
claudeSkills.agents.syncHooksOnSkillChange |
true |
Refresh/install cost-control hooks when workspace skills change |
claudeSkills.preferLocalSkillOverrides |
true |
Uncheck branch skill → skillOverrides off (no git diff) |
claudeSkills.features.costIntelligence |
true |
Dashboard, suggestions, export |
claudeSkills.features.emergencyCutoff |
true |
Hard daily limit (claudeSkills.emergency.hardLimitUsd, default $10) |
claudeSkills.features.communityBenchmarks |
false |
Opt-in community benchmarks |
claudeSkills.optimizer.autoApply |
false |
Auto-disable expensive idle skills |
claudeSkills.weeklyReport.enabled |
true |
Monday-morning AI usage report (local time) |
claudeSkills.weeklyReport.dayOfWeek |
1 |
0=Sun, 1=Mon, … |
claudeSkills.weeklyReport.hour |
9 |
Local hour |
claudeSkills.search.sortBy |
relevance |
lowest_cost, highest_roi, best_value |
Checkbox toggles your effective skill set: enable installs or clears skillOverrides; disable on a branch-committed skill sets skillOverrides: off locally (files stay on the branch). Personal-only skills are removed from disk and added to .git/info/exclude. Changes propagate to other enabled agents automatically.
All results are logged to the "Claude Skills" output channel.
Onboarding & recovery (v1.0.x)
| Command |
Purpose |
Claude Skills: Open Setup Wizard |
WebView checklist: verify global + workspace install, then optional cost features |
Claude Skills: Start Onboarding Tour (step prompts) |
Legacy step-by-step toast tour |
Claude Skills: Repair Claude Skills Data |
Fix corrupted JSON/JSONL, create missing dirs |
Claude Skills: Reset Mis-attributed Cost Data |
Fix inflated per-skill costs from pre-1.0.1 equal-split attribution |
First activation prompts Get Started if ~/.claude/skills/ is empty.
Cost attribution notes (v1.0.1+)
The background collector attributes session tokens only to skills with evidence
of actual use (SKILL.md reads, Skill tool calls, etc.) — not the full
skill_listing catalog. Unattributed sessions are labeled unattributed in
reports. Record runs with metadata.invoked: true via the self-learning
skill for best accuracy. Keep claudeSkills.optimizer.autoApply off until
attribution looks correct.
- SKILL.md lint is advisory by default (
claudeSkills.lint.blockSyncOnError to hard-block) — covers the .claude/skills source of truth plus Cursor/Kiro SKILL.md mirrors and Copilot .instructions.md mirror presence.
- Community benchmark upload requires you to configure endpoints (no default public server).
- PR comments require GitHub CLI and explicit feature enable.
- Copilot clones are instruction files, not native Copilot skills.
See root README.md and CHANGELOG.md.
Development
npm install
npm run sync-skills # copy ../skills_library -> ./skills_library
npm run compile # or: npm run watch
Press F5 in VS Code (with this folder open) to launch an Extension
Development Host.
Packaging
npm run package # runs sync-skills, then `vsce package` (requires @vscode/vsce)
Produces a .vsix you can install via "Extensions: Install from VSIX...".
| |