Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Skill creation, update and management — generates skill directory structure, validates against best practices, enforces line count limits. Use when creating, updating, or improving skills.
.claude/skills/transilienceai-skill-update/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -15% | 0% |
Generate or refine Claude Code skills following Anthropic best practices.
scripts/skill_linter.py)SKILL.md ≤ 150 linesreference/*.md ≤ 200 lines (reference/scenarios/*.md ≤ 400 lines)README.md ≤ 100 linesSKILL.md has YAML frontmatter with name + descriptionDO NOT / MUST NOT / NEVER outside an ## Anti-Patterns sectionreference/ holds detail; reference/scenarios/ holds concrete exploit flows.reference/role-*.md = HOW agents behave when spawned.skills/<skill-name>/
├── SKILL.md # ≤150 lines, YAML + navigation
├── reference/
│ ├── *-principles.md # ≤150 lines (decision tree)
│ ├── INDEX.md
│ ├── *.md # patterns, ≤200 lines
│ └── scenarios/
│ └── <category>/
│ └── *.md # ≤400 lines, self-contained
└── README.md # optional, ≤100 linesyaml--- name: <skill-name> description: What it does AND when to use. Include trigger phrases. --- # <Skill Name> <one-paragraph scope> ## When to use - <bullet> ## Workflow / Quick start <≤30 lines> ## References - [reference/...](reference/...) ## Anti-Patterns - <when negative framing is genuinely needed, put it here>
The procedure is a workflow — every step is code-enforced, so none can be skipped.
Workflow('skill-update', { output_dir: 'projects/<engagement>' }) // harvest an engagement
Workflow('skill-update', { learnings: [{ text, technique_type }] }) // judge a known set
Workflow('skill-update', { mode: 'audit' }) // read-only, writes nothingAdd dryRun: true to see the write plan without writing. Parent-orchestrator only.
Phases. Intake (baseline skill_linter.py --json) → Harvest (reframe learnings) → Judge (four gates + blind refuters) → Route (author the block) → Write (persist verbatim) → Sweep (confidentiality guard) → Verify (linter delta, not an absolute clean tree — the base carries pre-existing violations).
Every promote/reject/write decision is pure JS in .claude/workflows/lib/wf-helpers.mjs (promotionGate, capBudget, writeGate, lintDelta, skillUpdateGate). No agent decides whether a learning is promoted or a write is allowed.
Process the techniques and failure modes from completed engagements. Promote a learning to the skill base only if all four hold:
scripts/skill_linter.py flags duplicates.)Always frame as a reusable pattern: "when encountering X condition, try Y approach" — never "on box-N, Y worked". Use <TARGET_IP>, <DC_FQDN>, <DOMAIN> placeholders in tool examples.
Three buckets, built in code so a run cannot claim an edit it did not make: Updated. / Skipped. (with the gate that failed) / No changes.
reference/ instead).reference/ immediately.Other measured skills in the registry, with their headline benchmark lift.