Guide for creating effective, portable skills that extend Claude's capabilities with specialized knowledge, workflows, and tool integrations. Use when: (1) Creating a new skill from scratch, (2) Updating or improving an existing skill, (3) Structuring skill content for progressive disclosure, (4) Writing skill descriptions and triggers, (5) Packaging a skill for distribution. Triggers on: "create a skill", "build a skill", "new skill", "update this skill", "improve skill description", "skill structure", "skill triggers".
Install with Tessl CLI
npx tessl i github:ravnhq/ai-toolkit --skill agent-skill-creator97
Quality
100%
Does it follow best practices?
Impact
90%
1.16xAverage score across 3 eval scenarios
Create effective, portable skills that work across Claude.ai, Claude Code, and the API. A skill is a folderized instruction set that encodes a reusable workflow once, then applies it consistently.
skill-name/
├── SKILL.md # Required: YAML frontmatter + markdown instructions
├── scripts/ # Optional: executable code for deterministic tasks
├── references/ # Optional: docs loaded into context as needed
└── assets/ # Optional: files used in output (templates, images, fonts)Two parts:
name and description fields. Always in context. Determines when the skill triggers.| Directory | Purpose | Loaded into context? |
|---|---|---|
scripts/ | Executable code (Python/Bash) for deterministic operations | Only when Claude reads them |
references/ | Documentation Claude consults while working | On demand |
assets/ | Files used in output (templates, images, fonts) | Never — used directly in output |
Do not include README.md, CHANGELOG.md, or any auxiliary documentation files.
The context window is shared. Only include what Claude does not already know. Prefer concise examples over verbose explanations. Challenge each paragraph: "Does this justify its token cost?"
Hard limit: Keep SKILL.md body under 5,000 words. Move detailed content to references/.
Match specificity to the task's fragility:
Three-layer loading minimizes context usage:
Keep SKILL.md lean. Split into reference files when approaching 300 lines. Always reference split files from SKILL.md with clear descriptions of when to read them.
Gather concrete use cases before building anything.
Entry: User request to create or improve a skill.
Actions:
Exit: Clear understanding of the skill's scope, triggers, and expected outputs.
Determine what reusable resources the skill needs.
Entry: Concrete use cases from Step 1.
Actions:
scripts/references/assets/references/workflows.md for common patterns.Exit: List of resources to create and SKILL.md outline.
Create the skill folder and write its contents.
Entry: Resource list and SKILL.md outline from Step 2.
Actions:
Create the skill folder following the structure above. If scripts/init_skill.py is available in the environment, use it as a scaffolding accelerator:
scripts/init_skill.py <skill-name> --path <output-directory>Otherwise, create the folder and SKILL.md manually.
Write bundled resources first — scripts, references, assets. Test scripts by running them. Delete any scaffolding files not needed.
Write SKILL.md:
references/description-authoring.md for the description formulareferences/validation-checklist.md to ensure the skill meets all structural requirementsDelete unused scaffolding — remove example files and empty directories.
Exit: Complete skill folder with all resources and SKILL.md.
Validate triggering and output quality.
Entry: Complete skill from Step 3.
Actions:
See references/testing-iteration.md for detailed testing methodology and success criteria.
Exit: Skill triggers reliably (~90% on relevant prompts) and produces consistent output.
Refine based on real usage.
Entry: Test results or user feedback.
Actions:
references/testing-iteration.mdExit: Skill meets success criteria across real-world usage.
Package a finished skill as a .skill file (zip with .skill extension). If scripts/package_skill.py is available, use it — it validates and packages automatically:
scripts/package_skill.py <path/to/skill-folder> [output-directory]Otherwise, zip the skill folder manually ensuring SKILL.md is at the root of the archive.
Consult these based on the skill's needs:
references/description-authoring.md — formula, trigger phrases, negative triggers, hard constraintsreferences/workflows.md — sequential, multi-service, iterative, context-aware, domain intelligencereferences/output-patterns.md — templates and example-based output guidancereferences/testing-iteration.md — triggering tests, functional tests, performance metrics, diagnosticsreferences/validation-checklist.md — structural requirements every skill must meetreferences/troubleshooting.md — common failures and resolution pathsUser: "Create a new skill for converting PDFs to markdown with reusable scripts."
Expected behavior: Follow this skill's workflow — understand use cases, plan resources, build the skill.
User: "Find and fix a TypeScript type error in src/api/client.ts."
Expected behavior: Do not use this skill. Choose a more relevant skill or proceed directly.
references/description-authoring.md.references/ files. Keep SKILL.md as a lean workflow guide.references/troubleshooting.md.0a59ae9
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.