writing-skills — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited writing-skills (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Create or update high-quality Claude Code Agent Skills that Claude can reliably discover and use, and that remain maintainable as your library grows.
This Skill governs:
description fieldWhen asked to create or update a Skill, collect these inputs. If any are missing, ask targeted questions.
~/.claude/skills/ unless the user explicitly wants project scope in .claude/skills/For each Skill request, produce:
~/.claude/skills/<skill-name>/ or .claude/skills/<skill-name>/name, description (required)references/*.md for deeper guidanceassets/*.md for strict output formats (templates)examples.md for worked examplesscripts/*.py for deterministic validation or transformation (optional)If the user provides an existing Skill:
If no existing Skill exists:
Follow these rules:
Output:
nameThe description field drives discovery, so write it carefully.
Rules:
colon-space (: ) inside the description text — YAML parsers can misinterpret it as a key-value separator, breaking skill discovery. Use em-dashes (—) or rephrase insteadOutput:
description that includes clear triggersMatch the instruction strictness to task fragility:
Choose one default level for the Skill and state it explicitly in the instructions.
Keep SKILL.md as the "how to apply this Skill" guide.
Write all instructions in imperative form ("Run the script", "Check the output") rather than descriptive form ("The script should be run").
Use this structure as a default (adapt as needed):
Write steps as checklists when the workflow is complex so Claude can copy and tick them off.
If SKILL.md gets long or dense:
Use forward slashes in all paths.
Recommended multi-file structure:
SKILL.md (overview and workflow)references/ (deep standards)assets/ or templates/ (output formats)scripts/ (validators or deterministic transforms)Embed a repeatable loop inside the Skill instructions.
Default loop:
If you include scripts, prefer:
Use evaluation-driven development:
Aim for measurable outcomes where possible: "triggers without explicit invocation", "completes without user correction", or reduced tool-call count versus baseline. Quantitative baselines make it easier to judge whether a revision actually helped.
If the Skill will be used across different model tiers, test with each. What works for Opus may need more explicit detail for Haiku.
In SKILL.md, include the evaluation scenarios explicitly so they can be re-run.
If the workflow is security-sensitive or should be read-only:
allowed-tools in the frontmatter to restrict toolsallowed-tools and rely on normal tool permission promptsOnly add restrictions when they serve a clear purpose.
A Skill is ready when:
When updating an existing Skill:
After deployment, observe how Claude uses the Skill. Watch for: files it never reads (may be unnecessary), sections it re-reads (may belong in SKILL.md), and reference chains it fails to follow (may be too deep). These usage patterns reveal structural problems that static review misses.
If a new pattern applies broadly, prefer updating the shared Skill rather than creating many near-duplicates.
lowercase-with-hyphenswriting-skills, reviewing-code, generating-commits)Required fields:
---
name: skill-name
description: What this Skill does and when to use it
---Optional fields:
---
name: skill-name
description: What this Skill does and when to use it
allowed-tools: Read, Grep, Glob
model: claude-sonnet-4-20250514
context: fork
compatibility: Requires Python 3.10+ and poppler-utils
metadata:
author: Team Name
version: 1.0.0
---Security restrictions: Do not use XML angle brackets (< >) in any frontmatter field — frontmatter appears in the system prompt and angle brackets can cause parsing issues. Skill names must not contain "claude" or "anthropic" (reserved terms).
Single-file Skill (recommended for most Skills):
my-skill/
└── SKILL.mdMulti-file Skill (for complex Skills with lots of reference material):
my-skill/
├── SKILL.md # Overview and workflow
├── references/ # Detailed documentation
│ ├── api-reference.md
│ └── standards.md
├── assets/ # Output templates
│ └── template.md
├── examples.md # Worked examples
└── scripts/ # Validators/transforms
└── validate.pyWhen adding files to a Skill folder, choose the right type based on how Claude will use each resource.
`scripts/` — Include when the same code would be rewritten on every invocation, or when deterministic reliability matters. Scripts can be executed without loading into context: only their output consumes tokens. State clearly whether Claude should execute the script or read it as reference.
`references/` — Documentation Claude consults while working (schemas, API docs, standards). Loaded into context on demand. For files longer than roughly 10 000 words, include grep patterns in SKILL.md so Claude can extract only what it needs. Information lives in SKILL.md or references — not both.
`assets/` — Files used in output (templates, images, boilerplate). Never loaded into context; used directly in output. Zero context cost.
Core principle: Information lives in one place. Duplication across sections or files inflates token cost and creates drift.
Test this Skill with these scenarios:
references/~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.