writing-skills

writing-skills is a skill for Claude Code, Codex from yanlingLabs/norma. It costs 40 tokens per session (885 once invoked), scanned A, original, Apache-2.0.

A reusable set of written steps for handling a recurring, multi-step task. It can be saved so an agent can find and follow it in later sessions.

In plain words
What is it for?
Use it to decide when a procedure deserves its own skill and to create or improve that skill for future work.
Why use it?
It prevents repeatable procedures from being forgotten or recreated from scratch. It also separates reusable instructions from one-time facts or project notes.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to decide when a procedure deserves its own skill and to create or improve that skill for future work.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/yanlinglabs/norma/writing-skills
Install

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.

Any agent
npx skills add yanlingLabs/norma --skill writing-skills
Clone the repo
git clone --depth 1 https://github.com/yanlingLabs/norma

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for writing-skills

README.md
[![agentmods](https://agentmods.dev/badge/skills/yanlinglabs/norma/writing-skills/github.svg)](https://agentmods.dev/skills/yanlinglabs/norma/writing-skills)
Your own site
<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.

agentmods 80×15 button for writing-skills

Your own site · 80×15
<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>
Per session 40 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 885 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 10d ago against content hash 580b1d6f4e50, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

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.

packages/core/skills/writing-skills/SKILL.md · 73 lines

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 --noEmit from 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.

Read the full file on GitHub · 73 lines

Changes

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.

  1. 10d ago First seen · 73 lines · 40 tokens per session scan A 580b1d6f4e50

Subscribe to this mod's changes

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.

Related

Other skills, from other repositories

weather

Get current weather and forecasts (no API key required).

netease-youdao/LobsterAI · 13 tokens

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.

netease-youdao/LobsterAI · 59 tokens

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.

ruvnet/metaharness · 66 tokens

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.

ruvnet/metaharness · 73 tokens

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.

ruvnet/metaharness · 0 tokens

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.

ruvnet/metaharness · 50 tokens