Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Turn raw PM content into a compliant, publish-ready skill. Use when creating or updating a repo skill without breaking standards.
.claude/skills/deanpeters-skill-authoring-workflow/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-15 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 159% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 68% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 86% | 0% |
Create or update PM skills without chaos. This workflow turns rough notes, workshop content, or half-baked prompt dumps into compliant skills/<skill-name>/SKILL.md assets that actually pass validation and belong in this repo.
Use it when you want to ship a new skill without "looks good to me" roulette.
Bring the raw material and the intent — rough is fine; the workflow exists to get it the rest of the way:
If you supply this inline with your request (e.g., "turn research/pricing-workshop-notes.md into an interactive advisor"), the workflow starts at Phase 1 with that context — it won't re-ask for what you already gave. If you provide nothing, it opens by asking what content you want to turn into a skill and offers the entry modes from the facilitation protocol.
Example: Use skill-authoring-workflow: convert research/pricing-workshop-notes.md into an interactive pricing advisor.
Use repo-native tools and standards before inventing a custom process:
scripts/find-a-skill.shscripts/add-a-skill.shscripts/build-a-skill.shscripts/test-a-skill.shscripts/check-skill-metadata.pybuild-a-skill.sh): Best when you have an idea but not final prose.add-a-skill.sh): Best when you already have source content.A skill is done only when:
name, description, intent, type)name <= 64 chars, description <= 200 chars)$ARGUMENTS (rationale: CONTRIBUTING.md, "Why We Don't Use $ARGUMENTS")When running this workflow as a guided conversation, use workshop-facilitation as the interaction protocol.
It defines:
Other (specify) when useful)This file defines the workflow sequence and domain-specific outputs. If there is a conflict, follow this file's workflow logic.
bash./scripts/find-a-skill.sh --keyword "<topic>"
If you have source material:
bash./scripts/add-a-skill.sh research/your-framework.md
If you want guided prompts:
bash./scripts/build-a-skill.sh
Manually review for:
sample-industrial.md)template.md when the skill produces an artifact — the output schema as a copy/paste fill-in with quality checksRun strict checks before thinking about commit:
bash./scripts/test-a-skill.sh --skill <skill-name> --smoke python3 scripts/check-skill-metadata.py skills/<skill-name>/SKILL.md python3 scripts/check-skill-triggers.py skills/<skill-name>/SKILL.md --show-cases
If this is a new skill:
If targeting Claude custom skill upload:
bash./scripts/zip-a-skill.sh --skill <skill-name> # or zip one category: ./scripts/zip-a-skill.sh --type component --output dist/skill-zips # or use a curated starter preset: ./scripts/zip-a-skill.sh --preset core-pm --output dist/skill-zips
Input: research/pricing-workshop-notes.md Goal: new interactive advisor
bash./scripts/add-a-skill.sh research/pricing-workshop-notes.md ./scripts/test-a-skill.sh --skill <new-skill-name> --smoke python3 scripts/check-skill-metadata.py skills/<new-skill-name>/SKILL.md
Expected result:
"We wrote a cool skill, skipped validation, forgot README counts, and shipped anyway."
Result:
workflow when the task is really a component template.intent become a substitute for a weak trigger description.README.mdAGENTS.mdCLAUDE.mddocs/Building PM Skills.mddocs/Add-a-Skill Utility Guide.mdscripts/add-a-skill.shscripts/build-a-skill.shscripts/find-a-skill.shscripts/test-a-skill.shscripts/check-skill-metadata.pyscripts/check-skill-triggers.pyscripts/zip-a-skill.sh| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-15 | fail→pass | 9,214 | 4,579 | -50% | 1 | 1 | 0% | 1,552 | 2,658 | +71% | 0 | 0 | — |
case-13 | pass→pass | 9,086 | 4,855 | -47% | 1 | 1 | 0% | 1,491 | 2,639 | +77% | 0 | 0 | — |
case-01 | fail→pass | 6,374 | 8,660 | +36% | 1 | 1 | 0% | 1,083 | 2,800 | +159% | 0 | 0 | — |
case-02 | fail→fail | 17,231 | 11,152 | -35% | 1 | 1 | 0% | 2,825 | 3,080 | +9% | 0 | 0 | — |
case-14 | fail→pass | 13,677 | 3,231 | -76% | 1 | 1 | 0% | 2,230 | 2,381 | +7% | 0 | 0 | — |
case-03 | fail→fail | 15,361 | 5,545 | -64% | 1 | 1 | 0% | 2,799 | 2,184 | -22% | 0 | 0 | — |
case-04 | pass→pass | 13,824 | 16,356 | +18% | 1 | 1 | 0% | 3,275 | 5,090 | +55% | 0 | 0 | — |
case-05 | pass→pass | 7,283 | 11,944 | +64% | 1 | 1 | 0% | 1,235 | 3,426 | +177% | 0 | 0 | — |
case-06 | pass→pass | 12,497 | 9,777 | -22% | 1 | 1 | 0% | 1,999 | 3,233 | +62% | 0 | 0 | — |
case-07 | fail→pass | 8,098 | 1,655 | -80% | 1 | 1 | 0% | 1,224 | 2,059 | +68% | 0 | 0 | — |
case-08 | fail→pass | 7,408 | 3,007 | -59% | 1 | 1 | 0% | 1,241 | 2,314 | +86% | 0 | 0 | — |
case-09 | fail→pass | 9,860 | 3,968 | -60% | 1 | 1 | 0% | 1,529 | 2,521 | +65% | 0 | 0 | — |
case-10 | fail→pass | 9,146 | 5,225 | -43% | 1 | 1 | 0% | 1,608 | 2,727 | +70% | 0 | 0 | — |
case-11 | fail→pass | 10,045 | 4,515 | -55% | 1 | 1 | 0% | 1,594 | 2,593 | +63% | 0 | 0 | — |
case-12 | pass→pass | 69,621 | 4,365 | -94% | 1 | 1 | 0% | 1,679 | 2,602 | +55% | 0 | 0 | — |
case-16 | fail→pass | 7,721 | 1,991 | -74% | 1 | 1 | 0% | 1,326 | 2,103 | +59% | 0 | 0 | — |
case-17 | pass→pass | 7,572 | 3,295 | -56% | 1 | 1 | 0% | 1,306 | 2,335 | +79% | 0 | 0 | — |
case-18 | fail→pass | 14,739 | 3,157 | -79% | 1 | 1 | 0% | 2,968 | 2,371 | -20% | 0 | 0 | — |
case-19 | fail→pass | 10,492 | 64,132 | +511% | 1 | 1 | 0% | 1,726 | 2,190 | +27% | 0 | 0 | — |
case-20 | fail→pass | 12,985 | 1,459 | -89% | 1 | 1 | 0% | 2,077 | 2,036 | -2% | 0 | 0 | — |
case-21 | fail→pass | 4,095 | 1,896 | -54% | 1 | 1 | 0% | 671 | 2,097 | +213% | 0 | 0 | — |
case-22 | fail→pass | 58,097 | 1,973 | -97% | 1 | 1 | 0% | 1,181 | 2,132 | +81% | 0 | 0 | — |
case-23 | fail→pass | 12,388 | 2,148 | -83% | 1 | 1 | 0% | 2,093 | 2,188 | +5% | 0 | 0 | — |
case-24 | pass→pass | 10,106 | 4,920 | -51% | 1 | 1 | 0% | 1,889 | 2,724 | +44% | 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. 24 cases were attempted, and 23 counted toward the lift figure. The other 1 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 +63 percentage points is the difference between those two pass rates over the 23 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.