Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Guide for modifying an already-installed workspace capability — adding or editing its MCP servers, skills, integrations, or agent guidance. Use when the user wants to customize, change, or extend an existing capability.
.claude/skills/holaboss-ai-customize-capability/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -44% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -48% | 0% |
Modify a capability that is already installed in this workspace. The most common request is giving it an MCP server so its agent gains new tools, but the same flow covers adding skills, integrations, or guidance.
A capability's source of truth is its manifest at capabilities/<capability-id>/capability.yaml. Re-installing reads that manifest and upserts the capability — re-install IS the update mechanism, and it never creates a duplicate.
capabilities/<capability-id>/capability.yaml exists, edit it in place.it. Reconstruct the existing config first so nothing is dropped: keep the capability's current skills (as ref), its integrations, and its agent_prompt, then add your change on top.
capability_install tool with capability_id: <capability-id>.It re-reads the manifest and upserts the capability. A malformed manifest is rejected with a precise error — fix and retry.
compiles MCP servers at run start, so the current run won't see the new tools. Ask them to send a new message to pick them up.
Add an mcp: block to the manifest. Each server connects the capability's agent to an MCP endpoint and exposes the tools you list.
Remote server (an HTTP/SSE MCP endpoint):
yamlmcp: servers: - id: x # letters/digits/_/-, unique in this capability type: remote url: https://mcp.example/sse headers: # optional — e.g. auth Authorization: Bearer <token> tools: [create_post, list_posts] # which tools to expose (required, ≥1)
Local server (a subprocess speaking MCP over stdio):
yamlmcp: servers: - id: helper type: local command: [npx, "-y", "@modelcontextprotocol/server-everything"] environment: # optional SOME_TOKEN: "{env:SOME_TOKEN}" # reads from the runtime environment tools: [echo, add]
Rules:
tools must list at least one tool name — you declare exactly which tools to expose.url; local servers require command.headers (remote) or environment (local). Both header andenvironment values may use {env:VAR_NAME} to read from the runtime environment instead of hard-coding secrets.
before writing the manifest.
The exposed tools become available to the capability's agent on the next run.
Confirm what you changed and remind the user to start a new message so the agent picks up the new MCP tools.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 11,621 | 11,897 | +2% | 1 | 1 | 0% | 2,230 | 1,138 | -49% | 0 | 0 | — |
case-02 | fail→fail | 11,684 | 7,451 | -36% | 1 | 1 | 0% | 2,368 | 1,322 | -44% | 0 | 0 | — |
case-03 | fail→fail | 10,354 | 7,867 | -24% | 1 | 1 | 0% | 1,256 | 1,065 | -15% | 0 | 0 | — |
case-04 | fail→fail | 34,486 | 6,804 | -80% | 1 | 1 | 0% | 7,618 | 1,370 | -82% | 0 | 0 | — |
case-05 | fail→fail | 6,200 | 12,827 | +107% | 1 | 1 | 0% | 1,059 | 1,269 | +20% | 0 | 0 | — |
case-06 | fail→pass | 13,367 | 6,574 | -51% | 1 | 1 | 0% | 2,341 | 1,793 | -23% | 0 | 0 | — |
case-07 | fail→pass | 9,967 | 7,232 | -27% | 1 | 1 | 0% | 1,648 | 2,066 | +25% | 0 | 0 | — |
case-08 | fail→pass | 12,501 | 3,350 | -73% | 1 | 1 | 0% | 2,348 | 1,322 | -44% | 0 | 0 | — |
case-09 | pass→pass | 8,723 | 3,483 | -60% | 1 | 1 | 0% | 1,490 | 1,195 | -20% | 0 | 0 | — |
case-10 | pass→pass | 27,138 | 4,712 | -83% | 1 | 1 | 0% | 1,500 | 1,469 | -2% | 0 | 0 | — |
case-11 | fail→pass | 11,717 | 3,677 | -69% | 1 | 1 | 0% | 1,868 | 1,368 | -27% | 0 | 0 | — |
case-12 | fail→pass | 14,409 | 2,366 | -84% | 1 | 1 | 0% | 2,087 | 1,086 | -48% | 0 | 0 | — |
case-13 | pass→pass | 10,821 | 2,652 | -75% | 1 | 1 | 0% | 1,570 | 1,160 | -26% | 0 | 0 | — |
case-14 | fail→pass | 10,723 | 3,217 | -70% | 1 | 1 | 0% | 1,624 | 1,328 | -18% | 0 | 0 | — |
case-15 | pass→pass | 5,476 | 3,172 | -42% | 1 | 1 | 0% | 919 | 1,131 | +23% | 0 | 0 | — |
case-16 | fail→pass | 10,163 | 3,747 | -63% | 1 | 1 | 0% | 1,520 | 1,451 | -5% | 0 | 0 | — |
case-17 | pass→pass | 8,924 | 2,982 | -67% | 1 | 1 | 0% | 1,333 | 1,201 | -10% | 0 | 0 | — |
case-18 | fail→fail | 7,668 | 6,391 | -17% | 1 | 1 | 0% | 1,207 | 1,771 | +47% | 0 | 0 | — |
case-19 | fail→pass | 10,408 | 4,443 | -57% | 1 | 1 | 0% | 1,766 | 1,500 | -15% | 0 | 0 | — |
case-20 | pass→pass | 6,839 | 3,021 | -56% | 1 | 1 | 0% | 1,142 | 1,220 | +7% | 0 | 0 | — |
case-21 | fail→pass | 12,246 | 2,512 | -79% | 1 | 1 | 0% | 1,829 | 1,177 | -36% | 0 | 0 | — |
case-22 | pass→pass | 15,640 | 5,463 | -65% | 1 | 1 | 0% | 2,157 | 1,621 | -25% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 17 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.