Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Turn a proven pattern or debugging solution into a standalone reusable skill with SKILL.md, reference docs, and examples. Use when the user runs /si:extract or asks to package a recurring solution from memory into a skill.
.claude/skills/alirezarezvani-extract/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 162% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 307% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 38% | 0% |
Transforms a recurring pattern or debugging solution into a standalone, portable skill that can be installed in any project.
/si:extract <pattern description> # Interactive extraction
/si:extract <pattern> --name docker-m1-fixes # Specify skill name
/si:extract <pattern> --output ./skills/ # Custom output directory
/si:extract <pattern> --dry-run # Preview without creating filesA learning qualifies for skill extraction when ANY of these are true:
| Criterion | Signal | |---|---| | Recurring | Same issue across 2+ projects | | Non-obvious | Required real debugging to discover | | Broadly applicable | Not tied to one specific codebase | | Complex solution | Multi-step fix that's easy to forget | | User-flagged | "Save this as a skill", "I want to reuse this" |
Read the user's description. Search auto-memory for related entries:
bashMEMORY_DIR="$HOME/.claude/projects/$(pwd | sed 's|/|%2F|g; s|%2F|/|; s|^/||')/memory" grep -rni "<keywords>" "$MEMORY_DIR/"
If found in auto-memory, use those entries as source material. If not, use the user's description directly.
Ask (max 2 questions):
Rules for naming:
docker-m1-fixes, api-timeout-patterns, pnpm-workspace-setupReserved fragments — must NOT appear in the skill name:
claudeanthropicFor skills about Claude Code itself, use the cc- prefix instead:
claude-code-settings → ✅ cc-settingsclaude-code-maintenance → ✅ cc-maintenanceclaude-mcp-tools → ✅ cc-mcp-toolsclaude-plugin-development → ✅ cc-plugin-developmentBefore writing the skill directory, check the proposed name against this list. If a reserved fragment is present, transform it (drop the fragment or replace the claude*/anthropic* prefix with cc-) and confirm with the user.
Spawn the skill-extractor agent for the actual file generation.
The agent creates:
<skill-name>/
├── SKILL.md # Main skill file with frontmatter
├── README.md # Human-readable overview
└── reference/ # (optional) Supporting documentation
└── examples.md # Concrete examples and edge casesThe generated SKILL.md must follow this format:
markdown--- name: "skill-name" description: "<one-line description>. Use when: <trigger conditions>." --- # <Skill Title> > One-line summary of what this skill solves. ## Quick Reference | Problem | Solution | |---------|----------| | {{problem 1}} | {{solution 1}} | | {{problem 2}} | {{solution 2}} | ## The Problem {{2-3 sentences explaining what goes wrong and why it's non-obvious.}} ## Solutions ### Option 1: {{Name}} (Recommended) {{Step-by-step with code examples.}} ### Option 2: {{Alternative}} {{For when Option 1 doesn't apply.}} ## Trade-offs | Approach | Pros | Cons | |----------|------|------| | Option 1 | {{pros}} | {{cons}} | | Option 2 | {{pros}} | {{cons}} | ## Edge Cases - {{edge case 1 and how to handle it}} - {{edge case 2 and how to handle it}}
Before finalizing, verify:
name and descriptionname matches the folder name (lowercase, hyphens)name does NOT contain reserved fragments claude or anthropic (use cc- prefix for Claude Code skills)✅ Skill extracted: {{skill-name}}
Files created:
{{path}}/SKILL.md ({{lines}} lines)
{{path}}/README.md ({{lines}} lines)
{{path}}/reference/examples.md ({{lines}} lines)
Install: /plugin install (copy to your skills directory)
Publish: clawhub publish {{path}}
Source: MEMORY.md entries at lines {{n, m, ...}} (retained — the skill is portable, the memory is project-specific)/si:extract "Fix for Docker builds failing on Apple Silicon with platform mismatch"Creates docker-m1-fixes/SKILL.md with:
/si:extract "Always regenerate TypeScript API client after modifying OpenAPI spec"Creates api-client-regen/SKILL.md with:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | pass→pass | 9,175 | 4,370 | -52% | 1 | 1 | 0% | 1,732 | 2,261 | +31% | 0 | 0 | — |
case-01 | fail→fail | 17,826 | 8,413 | -53% | 1 | 1 | 0% | 2,837 | 2,106 | -26% | 0 | 0 | — |
case-02 | fail→fail | 20,437 | 6,591 | -68% | 1 | 1 | 0% | 3,934 | 1,921 | -51% | 0 | 0 | — |
case-03 | fail→fail | 13,612 | 7,192 | -47% | 1 | 1 | 0% | 2,481 | 1,907 | -23% | 0 | 0 | — |
case-04 | fail→pass | 4,164 | 2,954 | -29% | 1 | 1 | 0% | 779 | 2,043 | +162% | 0 | 0 | — |
case-05 | fail→pass | 3,095 | 3,820 | +23% | 1 | 1 | 0% | 549 | 2,234 | +307% | 0 | 0 | — |
case-06 | fail→pass | 9,868 | 3,107 | -69% | 1 | 1 | 0% | 1,947 | 2,053 | +5% | 0 | 0 | — |
case-07 | pass→pass | 6,381 | 4,705 | -26% | 1 | 1 | 0% | 1,234 | 2,377 | +93% | 0 | 0 | — |
case-08 | pass→pass | 7,892 | 3,559 | -55% | 1 | 1 | 0% | 1,453 | 2,085 | +43% | 0 | 0 | — |
case-09 | fail→pass | 7,114 | 1,528 | -79% | 1 | 1 | 0% | 1,245 | 1,704 | +37% | 0 | 0 | — |
case-10 | pass→pass | 3,015 | 2,418 | -20% | 1 | 1 | 0% | 574 | 2,032 | +254% | 0 | 0 | — |
case-12 | fail→pass | 8,434 | 2,785 | -67% | 1 | 1 | 0% | 1,373 | 1,894 | +38% | 0 | 0 | — |
case-13 | pass→pass | 6,052 | 2,160 | -64% | 1 | 1 | 0% | 1,134 | 1,854 | +63% | 0 | 0 | — |
case-14 | pass→pass | 6,179 | 2,090 | -66% | 1 | 1 | 0% | 998 | 1,818 | +82% | 0 | 0 | — |
case-15 | fail→pass | 1,661 | 2,088 | +26% | 1 | 1 | 0% | 349 | 1,782 | +411% | 0 | 0 | — |
case-16 | pass→pass | 7,401 | 1,148 | -84% | 1 | 1 | 0% | 1,192 | 1,590 | +33% | 0 | 0 | — |
case-17 | fail→pass | 5,051 | 1,630 | -68% | 1 | 1 | 0% | 819 | 1,665 | +103% | 0 | 0 | — |
case-18 | pass→pass | 5,169 | 2,290 | -56% | 1 | 1 | 0% | 816 | 1,888 | +131% | 0 | 0 | — |
case-19 | pass→pass | 4,677 | 2,495 | -47% | 1 | 1 | 0% | 903 | 1,872 | +107% | 0 | 0 | — |
case-20 | fail→pass | 8,395 | 4,953 | -41% | 1 | 1 | 0% | 1,498 | 2,366 | +58% | 0 | 0 | — |
case-21 | pass→pass | 6,378 | 6,702 | +5% | 1 | 1 | 0% | 1,279 | 2,800 | +119% | 0 | 0 | — |
case-22 | pass→pass | 2,546 | 1,669 | -34% | 1 | 1 | 0% | 375 | 1,760 | +369% | 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 19 counted toward the lift figure. The other 3 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 +36 percentage points is the difference between those two pass rates over the 19 comparable cases. 3 cases got worse with the skill loaded, and they are 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.