claude-skills/docs/commands/cs-write-a-skill.md
Claude 32a0da53a4
chore(v2.8.0-sprint3): cross-platform sync + docs generation + MkDocs nav + CHANGELOG
Sprint 3 closure for v2.8.0. Brings the 2 new top-level domains
(business-operations + commercial) to release-ready by extending the
cross-platform sync infrastructure, the docs generator, and the MkDocs
nav to recognize them.

## Cross-platform sync (codex / gemini / hermes)

- scripts/sync-codex-skills.py — SKILL_DOMAINS extended with
  business-operations + commercial. Regenerated .codex/skills/ symlinks
  for 15 new skills + .codex/skills-index.json with full descriptions.
- scripts/sync-gemini-skills.py — DOMAIN_MAP extended with all 5 v2.7.0+
  v2.8.0 top-level domains (productivity, marketing-top-level, research,
  business-operations, commercial). +30 items synced.
- scripts/sync-hermes-skills.py — DOMAIN_DIRS extended with
  business-operations + commercial.

## Docs generation (Pass 2 command/agent discovery)

scripts/generate-docs.py extended with:

- DOMAINS dict extended with business-operations (sort=13) and commercial
  (sort=14) entries.
- Pass 2 for agent discovery — walks <domain>/agents/<agent>.md
  (v2.8.0 pattern), in addition to <domain>/<plugin>/agents/<agent>.md
  (legacy pattern).
- Pass 2 for command discovery — walks <domain>/commands/<cmd>.md
  (v2.8.0 pattern) AND <domain>/<skill>/commands/<cmd>.md (v2.7.0
  pattern). Previously, only root-level commands/*.md were discovered;
  35 commands were orphaned (v2.7.0 capture/pulse/landing/etc. +
  all v2.8.0 commands).

Result: 311 skill pages + 75 agent pages + 69 command pages = 455
total. Up from 311 + 73 + 34 = 418.

## MkDocs nav

mkdocs.yml updated with:

- Business Operations section (7 sub-skill nav entries)
- Commercial section (8 sub-skill nav entries)
- 2 new orchestrator agents added to Agents nav
- 17 new v2.8.0 slash commands added to Commands nav

MkDocs build succeeds (non-strict) in ~17s. Strict mode flags 3 pre-
existing broken links in older content (cs-aeo, grill-with-docs) —
out of scope for v2.8.0.

## CHANGELOG.md

v2.8.0 entry rewritten from "Sprint 1 only" to the full Sprint 1 + 2 + 3
view. All 13 sub-skills documented with canon attribution. Stats updated:

- 313 -> 328 skills (+15)
- 12 -> 14 top-level domains
- 60 -> 77 slash commands (+17)
- 402 -> 441 Python tools (+39)
- 542 -> 581 reference docs (+39)
- 46 -> 48 cs-* agents (+2)
- 57 -> 59 marketplace plugins (+2)
- 34 -> 69 documented commands in MkDocs (+35)

## Root CLAUDE.md

Updated Current Scope + Current Version to reflect v2.8.0 (released)
status. Sprint 1 "in-flight" -> "complete". Counts updated to
328 skills / 441 tools / 77 commands.

## Per-skill audit (scripts/audit_skills.py)

Ran across 329 total skills. All 13 v2.8.0 sub-skills audited with
skill_review_checklist_runner.py: 1 score 5/6, 7 score 4/6, 4 score
3/6, 1 score 2/6 (knowledge-ops). Dominant failure mode: rule #2
"SKILL.md under 100 lines" — known tension with our deliberate
Forcing-question library depth (mandatory per user direction). Tracked
as ADVISORY for skills that deliberately expose extended grill
discipline.

## Plugin manifest validation

scripts/check_plugin_json.py --all passes (exit 0) for all 47 plugin
manifests including the 2 new ones. The PR #690 validator recognizes
the source extension field per CLAUDE.md.

https://claude.ai/code/session_015bBb4HzWCf5HH5QK2TGtnW
2026-05-19 06:02:00 +00:00

5.5 KiB

title description
/cs-write-a-skill — Slash Command for AI Coding Agents /cs:write-a-skill <name-or-description> — Author a new agent skill with Matt Pocock's 3-phase workflow (Gather → Draft → Review). Runs 6. Slash command for Claude Code, Codex CLI, Gemini CLI.

/cs-write-a-skill

:material-console: Slash Command :material-github: Source

Command: /cs:write-a-skill <name-or-description>

The skill-author persona pressure-tests any new-skill commit. Six forcing questions before any merge, matching Matt Pocock's review checklist.

When to Run

  • Starting a new skill from scratch
  • Deriving a skill from an upstream (MIT-licensed) source
  • Auditing an existing skill against current standards
  • Reviewing a new-skill PR before merge

The Six Skill-Author Questions

1. What's the description, and does it pass Matt's 4-rule test?

The description is the only thing your agent sees when deciding to load this skill.

  • Max 1024 chars
  • Third person (no I / you / we)
  • First sentence: what it does (action verb)
  • Second sentence: "Use when [specific triggers]"
  • Run skill_description_validator.py

2. Is SKILL.md under 100 lines?

Over 100 lines = over-conditioning + reference soup downstream.

  • If yes: great, ship it
  • If no: split workflows into references/<topic>.md; replace inline content with 1-2 line pointers
  • Wrapper-derived skills (preserving upstream content) get a documented exception

3. Are there time-sensitive claims?

Dates rot. "As of October 2024" becomes wrong by next year.

  • Remove: "as of YYYY", "in YYYY", "released YYYY", "updated YYYY"
  • Replace with: pattern description that doesn't depend on date
  • Example: not "ISO 42001 published December 2023"; use "ISO 42001 (the first AI management-system standard)"

4. Is terminology consistent?

Synonym drift confuses agents + readers.

  • Pick one: agent OR bot, skill OR tool, user OR developer
  • Use the chosen term throughout
  • Document the choice in a glossary if multiple stakeholders involved

5. Are there at least 2 concrete examples (good + bad if possible)?

Without examples, agents construct from scratch and hallucinate.

  • At least 1 code block
  • Ideally good/bad contrast (Matt's pattern)
  • Examples must be runnable or copy-pasteable

6. Are references one level deep + no circular refs?

Deep nesting = agent gives up resolving the chain.

  • Flat references/<topic>.md layout
  • No references/category/subtopic.md
  • No A→B→A cycles
  • Run skill_structure_validator.py

Workflow

# 1. Description gate
python ../skills/write-a-skill/scripts/skill_description_validator.py path/to/SKILL.md

# 2. Structure gate
python ../skills/write-a-skill/scripts/skill_structure_validator.py path/to/skill-folder/

# 3. Combined review (Matt's 6-item checklist)
python ../skills/write-a-skill/scripts/skill_review_checklist_runner.py path/to/skill-folder/

# 4. Karpathy code-quality gate (if scripts/ exist)
python ../../karpathy-coder/skills/karpathy-coder/scripts/complexity_checker.py path/to/skill-folder/scripts/
python ../../karpathy-coder/skills/karpathy-coder/scripts/assumption_linter.py path/to/skill-folder/scripts/

# 5. Attribution check (if derived)
grep -r "derived_from\|original_author" path/to/skill-folder/

Output Format

# Skill Author Review: <skill-name>
**Date:** YYYY-MM-DD

## The Decision Being Made
[gather | draft | review | validate | derive | audit]

## Description Validation
- Length: N chars (limit 1024): pass/fail
- Third person: pass/fail
- "Use when" trigger: pass/fail
- Action verb in first sentence: pass/fail

## Structure Validation
- SKILL.md present + ≤100 lines: pass/fail (N lines)
- References one level deep: pass/fail
- No circular refs: pass/fail
- scripts/ folder: present/absent (optional)

## Review Checklist (Matt's 6 items)
- [x|/] 1. Description includes triggers
- [x|/] 2. SKILL.md under 100 lines
- [x|/] 3. No time-sensitive info
- [x|/] 4. Consistent terminology
- [x|/] 5. Concrete examples included
- [x|/] 6. References one level deep

## Karpathy Code Gate (if applicable)
- complexity_checker: PASS / WARN (with findings)
- assumption_linter: CLEAN / NOISY

## Attribution (if derived skill)
- Upstream link: present/missing
- License compatibility: yes/no
- Author credit: present/missing

## Verdict
🟢 SHIP | 🟡 WARN-WITH-JUSTIFICATION | 🔴 BLOCK

## Top 3 Actions (if not green)
[3 concrete fixes with file:line references]

Routing

  • /cs:karpathy-check — for code-quality concerns in scripts/
  • /cs:tdd — for testing discipline (different from skill quality gates)
  • /cs:decide — to log the verdict

Version: 1.0.0 Derived: Matt Pocock's write-a-skill (MIT) + this repo's wrapper