skill-authoring · git:20260629.ee6fb37 · 2026-06-29 · sha256 9c437bf617f8cdac

skill-authoring git:20260629.ee6fb37A

Immutable. This exact content is served forever at /api/v1/blob/9c437bf617f8cdac.

---
description: Conventions for writing or editing a SKILL.md skill package.
globs: **/SKILL.md
---

# Authoring a SKILL.md

Every skill is a self-contained package documented by its `SKILL.md`.

## Frontmatter

YAML frontmatter is required on every `SKILL.md`:

```yaml
---
name: kebab-case-skill-name        # matches the folder name
description: >                      # ≤ ~60 tokens — surfaced in manifests & routers
  One or two sentences on what the skill does and when to use it.
metadata:
  version: 1.0.0
  tags: [tag-one, tag-two]
---
```

The `description` is consumed by `cli/skills.json`, `registry.json`, and `.gemini/skills-index.json` — keep it tight (≤ ~60 tokens) and action-oriented. Generative skills open with a brief **Clarify-First** alignment step before producing output.

## Progressive disclosure

Keep the top of `SKILL.md` lean (Tier-1: purpose, when-to-use, the core workflow). Push depth into `references/` and load it on demand. Don't inline a 2,000-line knowledge base into the workflow.

## Structure

- `scripts/` — Python CLI tools, **standard library only, no ML/LLM calls** (see the python-tools rule).
- `references/` — expert knowledge bases the workflow links to.
- `assets/` — user-facing templates.

## After any add / rename / remove

Regenerate the machine-readable surfaces so nothing drifts:

```bash
python scripts/build_manifest.py   # rewrites cli/skills.json, registry.json, .gemini/skills-index.json
```

If you change a domain's skill count, also update `.claude-plugin/marketplace.json` (and that domain's `.claude-plugin/plugin.json`) plus the prose configs (`CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, `.cursorrules`, `.windsurfrules`, `.clinerules`, `.goosehints`).