Skip to content

Improve how skills are written and organized#11

Draft
NagyVikt wants to merge 3 commits into
mainfrom
claude/skills-writing-organization-u328p7
Draft

Improve how skills are written and organized#11
NagyVikt wants to merge 3 commits into
mainfrom
claude/skills-writing-organization-u328p7

Conversation

@NagyVikt

Copy link
Copy Markdown
Contributor

What

A pass over the whole skill library (428 SKILL.md files) to improve how skills are written and organized, measured against the repo's own linter spec (rules R001–R013).

Lint diagnostics drop from 1,506 → 424, and errors from 45 → 1. Every frontmatter block now parses as valid YAML.

Commits

  1. Mechanical lint fixes (c15e39b) — across 384 skills:

    • Added 7 missing name: fields (derived from the H1).
    • Normalized 45 malformed allowed-tools: to Bash(name:*) form, keeping real top-level tools (Read, Write, …) and mcp__* tools bare.
    • Added category: to 350 skills that had no tags:/domain:/category:.
    • Replaced em dashes in prose with commas/periods per the voice rules (code spans and frontmatter left untouched; verified zero inline-code damage).
  2. README refresh (16e710b) — the README claimed "127 skills across 21 categories"; it's really 427 across 36. Corrected the headline, structure tree, and category table, and fixed the copy-paste skill-format example to use spec-valid frontmatter instead of the malformed ["tool_name"] form.

  3. Description rewrites + frontmatter validity (dc963aa):

    • R004 (194): gave every description a trigger phrase ("Use when …") so discovery can match it. Many used YAML folded blocks (>-) the parser reads as empty — inlined so the trigger is visible.
    • R003 (101): tightened over-long descriptions to ≤200 chars, keeping the trigger and key keywords.
    • R009 (banned vocab): reworded AI-vocabulary words; where a skill lists the banned words as a "don't use these" instruction, backticked them (the linter's sanctioned exemption).
    • Fixed pre-existing frontmatter defects a real YAML parser catches but the regex linter misses: 5 gstack skills had unterminated frontmatter (no closing ---), and several descriptions had unescaped colons.

Verification

  • bun src/index.ts lint-skill skills/ — 1 error, 11 warnings, 412 info (all info-level R010/R011/R013 plus 10 Prerequisites warnings, 1 broken anchor).
  • All 428 frontmatter blocks validated with a real YAML parser (yaml.safe_load).
  • Integrity check: 0 files had name:/allowed-tools:/category: changed by the description rewrites, and 0 code fences were altered.

Known residual

research/trendradar is a pure-MCP skill whose allowed-tools the linter's R005 can't express (it requires a Tool(...) paren wrapper, but the skill legitimately uses only mcp__* tools). Left as-is rather than fake a Bash permission.

Out of scope (left for follow-up)

R011 (missing example block, 328), R010 (large shell blocks, 77), R006 (missing Prerequisites, 10), R008 (one broken anchor) — these need per-skill design work rather than mechanical or description-level fixes.

🤖 Generated with Claude Code

https://claude.ai/code/session_016VVh7dkMEosfyHfvs6qCGv


Generated by Claude Code

claude added 3 commits June 20, 2026 06:47
Run the cue SKILL.md linter (R001-R013) across the library and clear all
mechanically-fixable issues:

- R001: add missing `name:` (derived from H1) to 7 skills
- R005: normalize malformed `allowed-tools:` to `Bash(name:*)` form,
  keeping real top-level tools (Read, Write, ...) and mcp tools bare
- R007: add `category:` (parent dir) to 350 skills missing tags/domain/category
- R009: replace em dashes in prose with commas/periods per voice rules
  (code spans and frontmatter left untouched)

Lint diagnostics drop from 1506 to 801; errors from 45 to 1 (the remaining
one is a pure-MCP skill the linter's R005 cannot express).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VVh7dkMEosfyHfvs6qCGv
The README claimed "127 skills across 21 categories"; the library now has 427
skills across 36. Update the headline, the structure tree, and the categories
table with accurate per-category counts, and fix the skill-format example to
use spec-valid frontmatter (`name:`, `Bash(name:*)` allowed-tools, `category:`)
instead of the malformed `["tool_name"]` form the linter rejects. Add a short
linting section pointing at the cue linter and the GitHub Action.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VVh7dkMEosfyHfvs6qCGv
Clear the judgment-level linter findings across the library:

- R004 (194): give every description a trigger phrase ("Use when ...") so
  skill discovery can match it. Many descriptions used YAML folded-block
  scalars (`>-`) the parser reads as empty; inline them so the trigger is seen.
- R003 (101): tighten over-long descriptions to <=200 chars, keeping the
  trigger and the highest-value keywords.
- R009 (banned vocab): reword AI-vocabulary words in prose with plain
  alternatives; where a skill lists the banned words as a "don't use these"
  instruction, wrap them in backticks (the linter's sanctioned exemption).

Also fix pre-existing frontmatter defects surfaced by validating every block
with a real YAML parser:

- 5 gstack skills had unterminated frontmatter (no closing `---`; an
  AUTO-GENERATED comment sat where the delimiter belongs). Add the closing
  delimiter and move the comment into the body.
- Quote descriptions containing an unescaped colon so the YAML parses.

All 428 frontmatter blocks now parse as valid YAML. Lint diagnostics drop to
424 (from 1506); the remaining items are info-level (R010/R011/R013), 10
Prerequisites warnings, one broken anchor, and one pure-MCP skill R005 the
linter can't express. No code blocks, `name:`, `allowed-tools:`, or `category:`
fields were altered by the description rewrites.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VVh7dkMEosfyHfvs6qCGv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants