Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Scaffold new AI agent skills with proper symlinking across all IDE tools (Cursor, Claude Code, Codex, etc.). Use when creating a new skill, adding a local skill, or when the user wants to write a custom skill -- either workspace-wide or for a specific project.
.claude/skills/bilal140202-scaffold-skill/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | -38% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -36% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -50% | 0% |
Creates new skills using the workspace script, which handles name validation, directory placement, and symlinking to all AI tool directories.
Ask the user if unclear.
root-config/.agents/skills/, symlinked to theworkspace root so all projects and AI tools (.agents/skills/, .claude/skills/, skills/) can discover it.
<repo>/.agents/skills/, symlinked into thatproject's AI tool directories only.
Run from the workspace/ directory:
bash# Workspace-wide npm run skills:create -- --name <skill-name> # Project-specific npm run skills:create -- --name <skill-name> --project <repo>
This validates the name, creates the directory with a template SKILL.md, and runs setup to symlink the skill into .claude/skills/ and skills/ so every AI tool can discover it.
Naming rules: lowercase letters, numbers, hyphens, underscores, and dots. Max 64 chars. Must start and end with a letter or number.
Do not write the SKILL.md content directly. Delegate to your IDE's skill-authoring guide for quality content and proper requirements gathering.
create-skill. Common locations:~/.cursor/skills-cursor/create-skill/SKILL.md~/.claude/skills-cursor/create-skill/SKILL.mdthe name or "skill" + "create" in the description.
including any discovery or requirements-gathering phase (asking the user questions about purpose, triggers, format, etc.). Use the scaffolded SKILL.md as your starting point; the guide tells you how to fill it in.
SKILL.md directly:description with a specific, third-persondescription that includes both WHAT the skill does and WHEN to use it.
Confirm the skill appears in the expected locations:
bashnpm run skills:list
If you cannot run the script, create the skill directory and SKILL.md manually under the correct .agents/skills/ path. Then ask the user to run:
bashcd workspace && npm run skills:setup
This re-syncs all symlinks.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-18 | fail→pass | 10,710 | 3,189 | -70% | 1 | 1 | 0% | 1,737 | 1,069 | -38% | 0 | 0 | — |
case-01 | fail→fail | 16,060 | 5,163 | -68% | 1 | 1 | 0% | 2,932 | 918 | -69% | 0 | 0 | — |
case-02 | fail→fail | 4,695 | 6,612 | +41% | 1 | 1 | 0% | 572 | 994 | +74% | 0 | 0 | — |
case-03 | fail→fail | 15,129 | 5,451 | -64% | 1 | 1 | 0% | 2,977 | 930 | -69% | 0 | 0 | — |
case-04 | fail→fail | 3,624 | 5,982 | +65% | 1 | 1 | 0% | 166 | 928 | +459% | 0 | 0 | — |
case-05 | fail→fail | 18,143 | 6,796 | -63% | 1 | 1 | 0% | 3,705 | 1,017 | -73% | 0 | 0 | — |
case-06 | fail→pass | 12,404 | 7,843 | -37% | 1 | 1 | 0% | 2,300 | 2,047 | -11% | 0 | 0 | — |
case-07 | fail→fail | 12,888 | 6,950 | -46% | 1 | 1 | 0% | 2,438 | 982 | -60% | 0 | 0 | — |
case-08 | pass→pass | 4,983 | 4,900 | -2% | 1 | 1 | 0% | 887 | 1,563 | +76% | 0 | 0 | — |
case-09 | fail→fail | 15,641 | 6,168 | -61% | 1 | 1 | 0% | 3,391 | 1,045 | -69% | 0 | 0 | — |
case-10 | fail→pass | 7,423 | 3,542 | -52% | 1 | 1 | 0% | 1,435 | 1,328 | -7% | 0 | 0 | — |
case-11 | pass→pass | 10,357 | 6,998 | -32% | 1 | 1 | 0% | 2,034 | 1,788 | -12% | 0 | 0 | — |
case-12 | fail→pass | 8,697 | 2,318 | -73% | 1 | 1 | 0% | 1,478 | 949 | -36% | 0 | 0 | — |
case-13 | fail→fail | 18,617 | 6,585 | -65% | 1 | 1 | 0% | 3,478 | 895 | -74% | 0 | 0 | — |
case-14 | fail→pass | 11,560 | 1,457 | -87% | 1 | 1 | 0% | 1,782 | 888 | -50% | 0 | 0 | — |
case-15 | fail→pass | 11,475 | 1,601 | -86% | 1 | 1 | 0% | 1,895 | 908 | -52% | 0 | 0 | — |
case-16 | fail→pass | 12,243 | 3,612 | -70% | 1 | 1 | 0% | 2,121 | 1,229 | -42% | 0 | 0 | — |
case-17 | fail→pass | 10,587 | 4,263 | -60% | 1 | 1 | 0% | 1,879 | 1,398 | -26% | 0 | 0 | — |
case-19 | fail→pass | 10,553 | 3,627 | -66% | 1 | 1 | 0% | 1,517 | 1,310 | -14% | 0 | 0 | — |
case-20 | fail→fail | 4,797 | 4,850 | +1% | 1 | 1 | 0% | 868 | 1,451 | +67% | 0 | 0 | — |
case-21 | pass→pass | 5,396 | 9,413 | +74% | 1 | 1 | 0% | 821 | 1,407 | +71% | 0 | 0 | — |
case-22 | pass→pass | 2,717 | 6,982 | +157% | 1 | 1 | 0% | 557 | 1,668 | +199% | 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 16 counted toward the lift figure. The other 6 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 16 comparable cases.
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.