SKILL Engineering Standards

VerifiedSafe

Provides engineering standards for building AI Agent Skills. Covers frontmatter spec, CLI standards, versioning, and quality checklist.

Sby Skills Guide Bot
DocumentationIntermediate
7/22/2026
Claude Code
#skill-authoring#frontmatter#standards#cli#versioning

Recommended for

Automated summary

An engineering-standards library for writing and reviewing SKILL.md files: frontmatter, description style, allowed-tools, CLI exit codes, and semver versioning.

Strengths

  • Draws a clear boundary with the official skill-creator through an ownership table and a hand-off index
  • Covers details that are often gotten wrong: metadata nesting, description length and tone (100-300 chars), allowed-tools
  • Gives concrete CLI standards (exit codes, output protocol, config, permissions) plus a semver breaking-change workflow
  • Cites external sources it builds on (anthropics/skills repo, Click, Typer, uv)

Limitations

  • Not standalone: it assumes you have already followed the official skill-creator workflow
  • Does not cover the creation process, evaluations, or Claude.ai/Cowork adaptation, which stay with skill-creator
  • The provided content is partly truncated (end of §0.5), so some referenced companion files are not detailed here
When to use it

Load it alongside skill-creator whenever you author, audit, or fix a SKILL's frontmatter, description, or engineering standards.

When not to use it

Don't use it as the sole guide for building a skill from scratch, or as a replacement for skill-creator's workflow and evaluation tooling.

Security analysis

Safe
Quality score85/100

The skill is purely informational and uses only the Read tool; it contains no instructions for destructive actions, exfiltration, or execution of code, and therefore poses no security risk.

No concerns found

How this analysis is made

Examples

Fix frontmatter compliance
Review the frontmatter of my SKILL.md. The description is only 60 characters, metadata fields are flat instead of nested, and allowed-tools is malformed. Bring it in line with the SKILL engineering standards.
Add CLI standards to a skill
My skill wraps a Python CLI. Add the exit code conventions, output protocol, config handling, and permission notes from the CLI standards, and tell me which parts belong to skill-creator instead.
Plan a breaking change
I need to rename a section and change the description of my published skill. Walk me through the semver versioning and breaking-change workflow, including what to bump in metadata.version.

name: skill-dev-standard description: | Use when building, reviewing, or fixing any SKILL. Covers: frontmatter spec, description style (100-300 chars, pushy), metadata nesting, allowed-tools, CLI standards, versioning. Trigger for: SKILL.md authoring, undertriggering, structure questions. Do NOT use for: skill-creator workflow. license: MIT allowed-tools: [Read] metadata: version: "2.2.0" type: docs author: Shrek valid_until: evergreen source_urls: - "https://github.com/anthropics/skills" - "https://click.palletsprojects.com/" - "https://typer.tiangolo.com/" - "https://docs.astral.sh/uv/" tags: - skill-development - standards - engineering - frontmatter - cli - docs

SKILL Engineering Standards

This SKILL is your project's quality standards library for building AI Agent Skills. When creating or modifying any SKILL, load this alongside skill-creator — this SKILL provides engineering standards, skill-creator provides the development workflow.

What This SKILL Does

This SKILL does not replace the official Anthropic skill-creator. It is its engineering complement. The two are complementary and should be loaded together:

| Concern | Owner | | -------------------------------------------------------------------------------------------------- | ---------------------------- | | Development workflow (requirements capture, interviews, testing, evaluation, iteration, packaging) | skill-creator (official) | | Design philosophy (Progressive Disclosure, writing style) | skill-creator (official) | | Evaluation toolchain (eval-viewer, run_loop, benchmark) | skill-creator (official) | | Claude.ai / Cowork environment adaptation | skill-creator (official) | | CLI SKILL engineering standards (exit codes, output protocol, config, permissions) | this SKILL | | Output Schema (inter-SKILL contracts, reducing compose hallucinations) | this SKILL | | Docs SKILL freshness and quality (valid_until, golden-set) | this SKILL | | Frontmatter compliance details (metadata nesting, allowed-tools) | this SKILL | | Semver versioning and Breaking Change workflow | this SKILL | | Quality checklist (CLI / docs / general — three columns) | this SKILL |

Do NOT use this SKILL alone — it assumes you have already followed skill-creator's workflow through "requirements capture → draft → testing → iteration". This SKILL supplements engineering standards at each stage. Full hand-off index: see §0.5 below.

§0.5 Hand-off Index with skill-creator

Forward hand-off (skill-creator → this SKILL)

| skill-creator stage | Hand off to this SKILL | | ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | After Capture Intent | Read §1 to choose SKILL type (CLI / docs / hybrid) | | Write the SKILL.md | Read references/skillmd-authoring.md §2.0–2.2 (progressive disclosure + description writing) | | Configure frontmatter | Read references/permissions.md §9 (permissions + allowed-tools) | | Choose CLI implementation language | Read references/cli-templates.md §4.0 (language-agnostic conventions), §4.6 (multi-language comparison) | | Need output templates / config boilerplates / payload samples | Read references/project-structure.md §3.5 (assets/ directory spec) | | Test Cases stage | CLI SKILL: read references/testing.md §10.1 (CliRunner); Docs SKILL: read §10.2 (golden-set) | | Iterate stage (bug fixing) | Read references/cli-runtime.md §7 (error handling), §8 (Output Schema) | | Before packaging | Read references/quality-and-release.md §12 quality checklist | | Version upgrade | Read references/quality-and-release.md §11 (Semver + breaking change workflow) | | MCP integration (optional) | Read references/quality-and-release.md §11.4 (MCP annotation alignment) |

Reverse hand-off (this SKILL → skill-creator)

| Trigger | Hand off to skill-creator | | ------------------------------------------------- | ------------------------------------------------------------------ | | Need requirements interview / scope clarification | "Capture Intent + Interview" section | | Need to run with-skill / baseline comparison | "Running and evaluating test cases" | | Need to measure description trigger rate | "Description optimization" (run_loop.py) | | Need to package into .skill file | "Package and Present" (package_skill.py) | | Need Claude.ai / Cowork environment adaptation | "Claude.ai-specific instructions" / "Cowork-Specific Instructions" |


§1 SKILL Type Decision

Classification

| Type | Purpose | Use When | Tech Stack | | ---------------- | ---------------------------------------- | ---------------------------------------------------- | --------------- | | CLI SKILL | Wraps CLI tools or APIs | System operations, API integrations, data processing | Click / Typer | | Docs SKILL | Wraps knowledge bases and reference docs | Domain knowledge, API docs, best practices | Markdown + code | | Hybrid SKILL | CLI + Docs combined | Scenarios requiring both operations and knowledge | CLI + Docs |

Decision Matrix

Choose CLI SKILL when:

  • Executing system commands or operations
  • Calling REST APIs for data interaction
  • Wrapping existing command-line tools
  • Needing CRUD operations
  • Data format conversion or processing

Choose Docs SKILL when:

  • Encapsulating domain knowledge and best practices
  • API reference documentation lookups
  • Coding conventions and pattern libraries
  • Architecture design guides
  • Troubleshooting guides

Choose Hybrid SKILL when:

  • Need both knowledge queries and operational execution
  • Docs contain executable code snippets
  • Dynamic queries and real-time operations need to be combined

See official examples: Anthropic skill-examples repository


Usage Steps

When creating a new SKILL, follow this order:

  1. Read §1 (this file) — decide type (CLI / docs / hybrid)
  2. Read references/skillmd-authoring.md §2.0 — understand Progressive Disclosure principles
  3. Read references/skillmd-authoring.md §2.2 — write description (trigger-first + pushy style + negative examples)
  4. Read references/project-structure.md §3 — set up directory structure
  5. Read references/cli-runtime.md §8, references/permissions.md §9 — declare output_schema and permissions
  6. Read references/permissions.md §9.4 — declare allowed-tools (top-level frontmatter field)
  7. Read references/testing.md §10 — write minimal test suite
  8. Use references/quality-and-release.md §12 checklist to validate, then hand to skill-creator to package

When modifying an existing SKILL:

  • Directly audit using references/quality-and-release.md §12 checklist
  • Fill in missing metadata.output_schema or metadata.permissions
  • Confirm allowed-tools is declared at the top level
  • Optimize description trigger keywords against references/skillmd-authoring.md §2.2

Quick Reference

description writing (highest priority)

The description is the core basis for Agent routing — how it is written directly determines recall rate. It must:

  • Start with verb + scenario enumeration, not a noun
  • Include 1–2 negative exclusions to help Agent avoid false triggers
  • 100–300 words recommended (hard limit: 1024 chars); keep key triggers in the first 30 words
  • No < or >: will be rejected by quick_validate.py (use { } for placeholders)
  • Pushy style: Claude defaults to undertriggering (not using SKILLs when it should). Actively list multiple user phrasings, related concepts, and implicit scenarios — not just a description of functionality.

Good example (CLI type):

Use this skill when generating Conventional Commits-compliant commit messages from git diff, staged changes, or change descriptions.
Covers: completing commit type prefixes (feat/fix/refactor/docs), inferring scope from multi-file diffs, generating multi-line commit bodies, appending BREAKING CHANGE annotations.
Also triggers when users say "how should I write this commit", "help me write a proper commit message", "format this as conventional commits".
Do NOT use for: actually running git commit, modifying git config, merging PRs.

Bad example:

Git commit tool that wraps commit message generation.

Full examples and rules → references/skillmd-authoring.md §2.2

Frontmatter compliant fields

Packaging validation only allows top-level fields: name, description, license, allowed-tools, metadata, compatibility

All custom fields (output_schema, permissions, valid_until, etc.) go inside metadata; allowed-tools is a top-level compliant field — do NOT put it inside metadata:

---
name: my-skill
description: "Use this skill when... Do NOT use for..."
license: MIT
allowed-tools: [Read, Bash]
metadata:
  version: "1.0.0"
  type: cli # cli | docs | hybrid
  valid_until: "2026-12-31" # or "evergreen"
  source_urls:
    - "https://docs.example.com"
  output_schema:
    format: json # json | text | mixed
  permissions:
    read_paths: ["~/.my-skill/"]
    write_paths: ["~/.my-skill/"]
    network_endpoints: ["https://api.example.com"]
    requires_elevation: false
    accesses_env_vars: ["MY_SKILL_TOKEN"]
---

Full template → references/skillmd-authoring.md §2.3

Directory naming conventions

| SKILL type | External reference dir | Knowledge base dir | | ------------ | ---------------------- | ------------------ | | CLI SKILL | docs/ | — | | Docs SKILL | — | references/ | | Hybrid SKILL | docs/ | references/ |

CLI SKILLs do NOT use references/ — avoids confusion with the docs SKILL knowledge base directory.

Full structure diagrams → references/project-structure.md §3.1–§3.4

Error output convention

All CLI SKILLs use JSON format for error output. Normal results → stdout, errors → stderr:

# Normal output
click.echo(json.dumps({"status": "ok", "data": result}))

# Error output
click.echo(json.dumps({"status": "error", "code": 1, "message": "..."}), err=True)
sys.exit(1)

Exit code convention: 0=success, 1=config error, 2=network error, 3=permission error, 4=param error, 99=unexpected error.

Full spec → references/cli-runtime.md §7


Reference Files Index

Read the relevant file on demand — no need to load everything:

| File | Coverage | When to read | | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | references/skillmd-authoring.md | §2.0 Progressive Disclosure; §2.1 required fields; §2.2 description writing; §2.3 full SKILL.md template; §2.4 docs SKILL specifics | When writing or reviewing any SKILL.md | | references/project-structure.md | §3.1–3.4 four structure diagrams (flat/modular/docs/hybrid); §3.5 assets/ spec (directory boundaries, placeholders, security) | When designing directory structure or needing output templates | | references/cli-templates.md | §4.0 language-agnostic conventions; §4.1 uv dependency management; §4.3 Click full template; §4.4 Typer template; §4.5 Click quick ref; §4.6 multi-language comparison | When implementing a CLI SKILL | | references/docs-development.md | §5.1 content organization; §5.2 quality standards; §5.3 freshness mechanism (valid_until); §5.4 doc templates | When implementing a Docs SKILL | | references/cli-runtime.md | §6 config management (priority + class template); §7 error handling (exit codes + JSON format); §8 Output Schema (TypedDict + JSON Schema) | When implementing config loading, error handling, or declaring output structure | | references/permissions.md | §9.1–9.3 permissions fields; §9.4 allowed-tools (top-level field) | When declaring permission boundaries | | references/testing.md | §10.1 CliRunner unit test template; §10.2 golden-set Q&A pairs; §10.3 test directory; §10.4 minimum test requirements | When writing tests | | references/quality-and-release.md | §11 Semver + Breaking Change + MCP annotation; §12 quality checklist (CLI/docs/general); §13 minimal templates; Appendix A references | Before packaging or on version upgrades |

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/skill-engineering-standards-mrwakaar/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/skill-engineering-standards-mrwakaar' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/skill-engineering-standards-mrwakaar/download' --output '.skill-downloads/skill-engineering-standards-mrwakaar/SKILL.md.part' && mv '.skill-downloads/skill-engineering-standards-mrwakaar/SKILL.md.part' '.skill-downloads/skill-engineering-standards-mrwakaar/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Original excerpt: Quick Reference

description writing (highest priority)

The description is the core basis for Agent routing — how it is written directly determines recall rate. It must:

  • Start with verb + scenario enumeration, not a noun
  • Include 1–2 negative exclusions to help Agent avoid false triggers
  • 100–300 words recommended (hard limit: 1024 chars); keep key triggers in the first 30 words
  • No < or >: will be rejected by quick_validate.py (use { } for placeholders)
  • Pushy style: Claude defaults to undertriggering (not using SKILLs when it should). Actively list multiple user phrasings, related concepts, and implicit scenarios — not just a description of functionality.

Good example (CLI type):

Use this skill when generating Conventional Commits-compliant commit messages from git diff, staged changes, or change descriptions.
Covers: completing commit type prefixes (feat/fix/refactor/docs), inferring scope from multi-file diffs, generating multi-line commit bodies, appending BREAKING CHANGE annotations.
Also triggers when users say "how should I write this commit", "help me write a proper commit message", "format this as conventional commits".
Do NOT use for: actually running git commit, modifying git config, merging PRs.

Bad example:

Git commit tool that wraps commit message generation.

Full examples and rules → references/skillmd-authoring.md §2.2

Frontmatter compliant fields

Packaging validation only allows top-level fields: name, description, license, allowed-tools, metadata, compatibility

All custom fields (output_schema, permissions, valid_until, etc.) go inside metadata; allowed-tools is a top-level compliant field — do NOT put it inside metadata:

---
name: my-skill
description: "Use this skill when... Do NOT use for..."
license: MIT
allowed-tools: [Read, Bash]
metadata:
  version: "1.0.0"
  type: cli # cli | docs | hybrid
  valid_until: "2026-12-31" # or "evergreen"
  source_urls:
    - "https://docs.example.com"
  output_schema:
    format: json # json | text | mixed
  permissions:
    read_paths: ["~/.my-skill/"]
    write_paths: ["~/.my-skill/"]
    network_endpoints: ["https://api.example.com"]
    requires_elevation: false
    accesses_env_vars: ["MY_SKILL_TOKEN"]
---

Full template → references/skillmd-authoring.md §2.3

Directory naming conventions

SKILL typeExternal reference dirKnowledge base dir
CLI SKILLdocs/—
Docs SKILL—references/
Hybrid SKILLdocs/references/

CLI SKILLs do NOT use references/ — avoids confusion with the docs SKILL knowledge base directory.

Full structure diagrams → references/project-structure.md §3.1–§3.4

Error output convention

All CLI SKILLs use JSON format for error output. Normal results → stdout, errors → stderr:

# Normal output
click.echo(json.dumps({"status": "ok", "data": result}))

# Error output
click.echo(json.dumps({"status": "error", "code": 1, "message": "..."}), err=True)
sys.exit(1)

Exit code convention: 0=success, 1=config error, 2=network error, 3=permission error, 4=param error, 99=unexpected error.

Full spec → references/cli-runtime.md §7


The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/skill-engineering-standards-mrwakaar/SKILL.md' && test -s '.skill-downloads/skill-engineering-standards-mrwakaar/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/skill-dev-standard' && cp -R '.skill-downloads/skill-engineering-standards-mrwakaar' '.claude/skills/skill-dev-standard'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/skill-engineering-standards-mrwakaar'

openskills read 'skill-engineering-standards-mrwakaar'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/skill-engineering-standards-mrwakaar/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills