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.5 | $0.00016 | $0.00354 |
| Sonnet 5.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 1mo 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.
- 1mo 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 1mo ago), licensed Apache-2.0. It adds 40 tokens to every session and 885 once invoked, about $0.0002 per session on Opus 5.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
paperclip
Use for Paperclip-managed tasks and heartbeats: reading task context, delivering task documents or files, updating completion or blockers, coordinating or delegating work, and following company governance. Includes control plane API operations for assignments, comments, approvals, and routines.
release-announcement
Write a release announcement — changelog, blog post, in-app note, or social post — that leads with user impact, names the audience, and includes upgrade/migration steps without filler.
ramp
Fetch and follow Ramp's published agent playbooks inside Paperclip, with mandatory approval gates for spend, incorporation, cards, account setup, and other financial actions.
index-refresh
Use when an LLM Wiki operation issue requests an index refresh. Rebuild wiki/index.md from the actual wiki tree, reconcile missing/deleted entries, and log counts without editing page bodies.
github-pr-workflow
Prepare a GitHub pull request from a feature branch — branch hygiene, commit shape, title/body, verification notes, screenshots for UI work, and replies to review comments.
paperclip-task-bridge
Create, comment on, update, and list Paperclip tasks from Hermes using scoped Paperclip API credentials.