Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add yanlingLabs/norma --skill writing-skillsgit clone --depth 1 https://github.com/yanlingLabs/normaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/yanlinglabs/norma/writing-skills)<a href="https://agentmods.dev/skills/yanlinglabs/norma/writing-skills"><img src="https://agentmods.dev/badge/skills/yanlinglabs/norma/writing-skills/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/yanlinglabs/norma/writing-skills"><img src="https://agentmods.dev/badge/skills/yanlinglabs/norma/writing-skills.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00040 | $0.00885 |
| Opus 5 | $0.00020 | $0.00443 |
| Sonnet 5 | $0.00008 | $0.00177 |
| Haiku 4.5 | $0.00004 | $0.00089 |
Grade A, and why
writing-skills scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Writing Skills
A skill is a reusable PROCEDURE — a reference an agent reads before doing a repeatable, multi-step
task. It is not a fact, a preference, or something that happened once. If the thing you want to save
is "I learned X about this user/project," that's memory_write, not a skill. If it's "here is how to
do Y, every time Y comes up," that's a skill.
When a skill is worth writing
Write one when ALL of the following hold:
- The task is multi-step (a single command or fact does not need a skill).
- It will recur — across this session or future ones — not a one-off fix for today's bug.
- The steps generalize: they hold regardless of the specific file/value involved this time.
Do not write a skill for: a fact about this user or project (use memory), a single tool call, or something you are unsure will ever come up again. A skill nobody reuses is dead weight loaded into every future session that matches its description.
Format: what skill_write produces
skill_write saves the skill to self-scope (~/.norma/skills/self/<name>/SKILL.md), so it
persists across sessions and future turns can discover and load it. The store stamps the file's
frontmatter itself:
---
name: <slug>
description: <one line>
author: norma
---
<body>
You supply name, description, and body — the store writes the frontmatter fence and appends
your body verbatim after it. name must be a slug: lowercase letters, digits, and dashes only, 1–64
characters (writing-skills, deploy-checklist — not Deploy_Checklist or deploy checklist).
description is newline-stripped to one line — write it as a single sentence stating when the skill
applies, not what it does step-by-step (the description is what future turns scan to decide whether
to load the body at all).
Calling skill_write again with the same name overwrites the skill in place — this is how you
revise a skill after finding a gap, not a separate "update" operation.
Quality bar
- One capability per skill. A skill that covers three unrelated procedures is three skills that happen to share a file. Split it.
- Imperative voice. "Run the tests before committing," not "You might want to consider running the tests." A skill is an instruction an agent follows, not a suggestion it weighs.
- Concrete steps. Name the actual command, file, or check. "Verify the build" is not a step;
"run
bun test && bunx tsc --noEmitfrom the package root" is. - State constraints, not narration. Write what must (or must not) hold and why, not the story of how you personally discovered it. "Validate the name before any filesystem write — a rejected name must leave no trace" is a constraint; "I found that names could break things so I added a check" is narration. Future readers need the rule, not the anecdote.
- Test the instructions by literally following them. Before you're done, walk through the skill's own steps exactly as written, doing nothing it doesn't say. If you have to guess a step or fill a gap from outside knowledge, the skill is incomplete — fix the gap, don't rely on the reader to bridge it.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 73 lines · 40 tokens per session scan A 580b1d6f4e50
writing-skills is a skill published in the GitHub repository yanlingLabs/norma (2 stars, last pushed 13d ago), licensed Apache-2.0. It adds 40 tokens to every session and 885 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
weather
Get current weather and forecasts (no API key required).
canvas-design
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
compare-harnesses
Diff two scaffolded harnesses (ADR-031). Reports manifest meta drift + host list + per-file fingerprint changes (added/removed/changed). Exits 0 IDENTICAL, 1 DRIFT, 2 missing manifest. Use --bundle for the ADR-031 schema-1 JSON envelope.
repo-genome
7-section readiness scorecard for a LOCAL repo. Reports repo type + agent topology + MCP risk + test confidence + release readiness + recommended harness plan + scorecard. Exit 0 ready, 1 needs-work, 2 blocked. --json for the 6-field scorecard, --bundle for the ADR-031 schema-1 envelope.
threat-model
MCP threat-model artifact for a scaffolded harness. Reports allowed/denied tools, dangerous permissions count, secrets reachability, network/shell/file-write grants, default-deny posture. Verdict: clean (exit 0) / medium (exit 1) / high (exit 2). The 'enterprise gold' artifact for PR + compliance review.
validate-harness
Release-readiness umbrella check for a scaffolded harness — runs doctor, witness verify, hardcoded-path scan, MCP server config, and GCP Secret Manager validation in one shot. Exits non-zero if any sub-check fails.