projectbluefin/testsuite/writing-skills
Claude Code and agent skill by projectbluefin/testsuite
- community
Checking that the SKILL.md file is still in the repository.
How to write, split, and review docs/skills/ files in testsuite. Load when creating, editing, or deleting a skill.
Install
npx vskill@latest install projectbluefin/testsuite/writing-skillsSKILL.md
Writing skills for testsuite
When to Use
- Creating a new skill in
docs/skills/. - Splitting an oversized skill into
SKILL.md+references/. - Updating a skill after discovering a new pattern or workaround.
- Proposing deletion or merge of stale skills.
When NOT to Use
- For root
AGENTS.mdorREADME.mdchanges — seemeta/skill-improvement/SKILL.mdfor the update trigger. - For one-off prose that does not describe when an agent should load it.
Directory and file naming
- Path:
docs/skills/<category>/<name>/SKILL.md, where<category>is one of
ci-ops, test-authoring, or meta.
- Directory name must equal the frontmatter
nameandid. name: 1–64 chars, lowercase alphanumerics and hyphens only, no leading/trailing hyphen, no consecutive hyphens.- Optional:
references/,scripts/,assets/inside the skill directory.
Router and catalog exceptions
docs/SKILL.mdis the task router required by the factory onboarding
contract. It carries the same front-matter schema but lives outside docs/skills/.
docs/skills/index.mdanddocs/skills/index.jsonare generated by
scripts/generate_skill_index.py. Never hand-edit them.
Frontmatter schema
The schema matches projectbluefin/common's catalog contract so factory tooling can read either repo. Canonical definition: `docs/skills/index.schema.json`.
Required fields (enforced by scripts/validate_docs.py):
| Field | Rule | |
|---|---|---|
name | Matches the parent directory. | |
id | Kebab-case; must equal name. | |
version | Quoted string, e.g. "1.0". | |
last_updated | YYYY-MM-DD. | |
one_line_purpose | ≤120 chars; imperative; distinct from description. | |
entry_point | Repo-relative path to this file. | |
category | ci-ops, test-authoring, or meta. | |
status | active, deprecated, or reserved. | |
tags | Non-empty list. | |
description | Tells the agent when to load the file. |
Optional: mcp_compliance_level, dependencies, compatibility, license, and metadata (repo-local taxonomy: type, audience, maturity).
Reference files under references/ are not catalog entries. They may carry a short name and description only.
After changing any front matter, regenerate the catalog:
Progressive disclosure budgets
| Layer | Max size | What it holds | |
|---|---|---|---|
Router (docs/SKILL.md) | 2,000 tokens | Hard rules + routing table | |
SKILL.md | 5,000 tokens | When to Use / When NOT / Core process / quick examples | |
references/<topic>.md | 2,000 tokens | Deep dive: API quirks, manifests, full examples | |
| Scripts/assets | as needed | Loaded only when the skill instructs it |
As a rule of thumb: SKILL.md ≤ 500 lines; references ≤ 200 lines. These are hard limits enforced by scripts/validate_docs.py in CI.
Token rules
- One canonical source per fact — link, do not copy.
- One H1 per file; prefer H2; avoid H5+.
- H2 sections ≤ 300 tokens — split or move to references.
- Prefer tables over paragraphs for maps and checklists.
- No badges in skill files.
- Use code blocks, not full CI logs.
- Use relative links to other skills and references.
- Avoid nested callouts — if it needs a note, consider a heading.
How to split a skill
- Run
wc -land estimate tokens (bytes ÷ 4). - Keep When to Use / When NOT / Core Process / Red Flags / Verification in
SKILL.md. - Move large topic clusters to
references/<topic>.md; link fromSKILL.md. - Add an On-demand references section in
SKILL.mdlisting links. - Preserve old links by updating paths after the move.
How to delete or merge a skill
- Do not delete without a redirect note in the successor skill or
docs/SKILL.md. - Merge only when two skills share the same trigger and audience.
- Update the
docs/SKILL.mdrouting table, then run
python3 scripts/generate_skill_index.py to refresh the catalog.
Review checklist
- [ ]
namematches the parent directory, andidmatchesname. - [ ] All catalog fields present;
entry_pointmatches the real path. - [ ]
descriptionstates when to load. - [ ]
python3 scripts/generate_skill_index.py --checkpasses. - [ ]
docs/SKILL.mdrouting table lists the skill. - [ ] No duplicate H1; no H5+.
- [ ] Size budgets met.
- [ ] Project/org strings replaced with
projectbluefin/ublue-osplaceholders where appropriate. - [ ] Cross-links use relative paths.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdocs/skills/meta/writing-skills/SKILL.md
Popularity
- Repository stars
- 3
- Repository forks
- 17
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/projectbluefin/testsuite/writing-skills)