skill-authoring

Skill Authoring — Official Best Practices

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "skill-authoring" with this command: npx skills add claude-dev-suite/claude-dev-suite/claude-dev-suite-claude-dev-suite-skill-authoring

Skill Authoring — Official Best Practices

File Structure

skill-name/ ├── SKILL.md # Main instructions (< 500 lines) ├── reference.md # Detailed docs (loaded on demand) ├── examples.md # Usage examples (loaded on demand) └── scripts/ └── helper.py # Utility scripts (executed, not loaded)

YAML Frontmatter


name: my-skill # max 64 chars, lowercase + hyphens only description: | # max 1024 chars, THIRD PERSON, no XML tags Processes PDF files and extracts text. Use when working with PDF files or when the user mentions document extraction. disable-model-invocation: false # true = only user can invoke via /name user-invocable: true # false = hidden from / menu, Claude-only allowed-tools: Read, Grep, Glob # restrict tools when skill is active model: sonnet # model override (sonnet, opus, haiku) context: fork # run in isolated subagent context agent: Explore # agent type when context: fork

Required: only description is recommended. name defaults to directory name.

Description — The Most Critical Field

Claude uses the description to decide which skill to load from 100+ available.

Rules:

  • Write in third person ("Processes files", NOT "I can help" or "You can use")

  • Include what it does AND when to use it

  • Be "pushy" — mention specific trigger contexts

  • Include key terms users would naturally say

Good:

description: Generates commit messages by analyzing git diffs. Use when the user asks for help writing commit messages or reviewing staged changes.

Bad:

description: Helps with git stuff

Core Content Principles

Claude is already smart — only add what it doesn't know

Challenge every line: "Does Claude need this explanation?" Remove basics.

Good (~50 tokens):

Extract PDF text

Use pdfplumber:

import pdfplumber
with pdfplumber.open("file.pdf") as pdf:
    text = pdf.pages[0].extract_text()

Bad (~150 tokens): explaining what PDFs are, what libraries are, how pip works.

One recommended approach, not many alternatives

Provide a default tool/library. Only mention alternatives when the choice is context-dependent.

Consistent terminology

Pick one term and use it throughout. Don't mix "endpoint", "URL", "route", "path".

No time-sensitive information

Don't write "as of 2025" or "before August, use the old API".

Progressive Disclosure

SKILL.md is a table of contents. Detailed content goes in separate files.

Pattern 1: References

Quick start

[essential code here]

Advanced features

Pattern 2: Domain-specific

bigquery-skill/ ├── SKILL.md (overview + navigation) └── reference/ ├── finance.md ├── sales.md └── product.md

Rules:

  • Keep references one level deep from SKILL.md (no nested chains)

  • Reference files > 100 lines need a table of contents at top

  • Claude loads referenced files only when needed — no context penalty

String Substitutions

Variable Description

$ARGUMENTS

All arguments passed to skill

$ARGUMENTS[N] or $N

Specific argument by index

${CLAUDE_SESSION_ID}

Current session ID

${CLAUDE_SKILL_DIR}

Directory containing SKILL.md

Dynamic injection: !shell command runs before Claude sees the content.

Invocation Control

Config User invokes Claude invokes

Default Yes Yes

disable-model-invocation: true

Yes No

user-invocable: false

No Yes

Workflows & Feedback Loops

For complex tasks, provide a checklist Claude can track:

Deploy workflow

  • Step 1: Run tests
  • Step 2: Build artifacts
  • Step 3: Deploy to staging
  • Step 4: Verify deployment
  • Step 5: Deploy to production

Implement validation loops: Run validator → fix → re-validate → proceed only when passing.

Anti-Patterns to Avoid

Anti-Pattern Fix

Body > 500 lines Split into SKILL.md + reference files

Deeply nested references (A→B→C) Keep all refs one level from SKILL.md

Too many options Provide one default, mention alternative only when needed

First/second person description Always third person

Vague description Include what + when + trigger keywords

Windows-style paths (
) Always use forward slashes

Explaining basics Claude knows Remove — Claude is already smart

Checklist Before Shipping

  • Description is specific, third person, includes trigger terms

  • SKILL.md body < 500 lines

  • Additional details in separate reference files

  • No time-sensitive info

  • Consistent terminology throughout

  • Concrete examples, not abstract

  • References one level deep

  • Tested with at least 3 real scenarios

Reference

  • Progressive disclosure patterns

  • Writing effective descriptions

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

skill-authoring

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

cron-scheduling

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

token-optimization

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

webrtc

No summary provided by upstream source.

Repository SourceNeeds Review