Agent skill

Writing Rules

by PromptPartner in PromptPartner/agentsmith

Write or review anything an agent reads — a core rule, a profile gate, a SKILL.md description, an instruction-file line, a subagent prompt, a handoff note, a verify-phase label.

MITAuto-check passedWriting & Content

Install Writing Rules

skills CLI
$ npx skills add PromptPartner/agentsmith --skill writing-rules -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install PromptPartner/agentsmith writing-rules --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/PromptPartner/agentsmith.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/writing-rules .claude/skills/writing-rules && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
writing-rules
GitHub stars
177
Token cost
~2.9k tokens
SKILL.md length
1,718 words
Files
2
Skills in repo
10
Repo updated
First seen
Licence
MIT

At a glance

Write or review anything an agent reads — a core rule, a profile gate, a SKILL.md description, an instruction-file line, a subagent prompt, a handoff note, a verify-phase label.

  • Works in 3 steps: In-file step — what the agent does, in… → In-file reference — consulted on demand.… → Disclosed reference — a separate file…
  • Tasks that involve Brand voice and tone
  • SKILL.md covers Instruction vocabulary, The two loads, Context pointers and The ladder — where each piece…, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Writing Rules is an agent skill from PromptPartner/agentsmith. Write or review anything an agent reads — a core rule, a profile gate, a SKILL.md description, an instruction-file line, a subagent prompt, a handoff note, a verify-phase label. Part of the Agentsmith harness; supplies the levers that decide whether a line changes behaviour or only costs tokens — the two loads, context pointers, the ladder, completion criteria, leading words, the no-op test. Its default move is deletion, so it earns most on a draft that already exists.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `HARNESS-SURFACES.md`). Compatibility notes: Requires an Agent Skills-compatible coding agent with filesystem access.

It sits in Writing & Content, covering Brand voice and tone and Subagents. The repository describes itself as: Universal, model-agnostic operating harness for AI agents (Claude, Codex, Gemini, …) — a lean core + work-type profiles assembled by one setup script. The licence is MIT.

When your agent uses it

  • Tasks that involve Brand voice and tone
  • Tasks that involve Subagents

Example prompts

  • “/writing-rules”

Requirements

  • Compatibility (from SKILL.md): Requires an Agent Skills-compatible coding agent with filesystem access.

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. In-file step — what the agent does, in order. The primary tier.
  2. In-file reference — consulted on demand. Often a legitimately flat peer-set (every gate of a
  3. Disclosed reference — a separate file behind a pointer, loaded only when the pointer fires.

What it can do on your machine

Read from SKILL.md and the folder at commit b293c3a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires an Agent Skills-compatible coding agent with filesystem access.

    From compatibility in the SKILL.md frontmatter.

Context cost

Writing Rules loads about 2.9k tokens when it runs. Until then it costs about 122 tokens; SKILL.md has 1,718 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~122
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from PromptPartner/agentsmith at commit b293c3a, republished under its MIT licence (© PromptPartner). 1,718 words, ~2,886 tokens.

Download SKILL.mdSave it as .claude/skills/writing-rules/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
writing-rules
description
Write or review anything an agent reads — a core rule, a profile gate, a SKILL.md description, an instruction-file line, a subagent prompt, a handoff note, a verify-phase label. Part of the Agentsmith harness; supplies the levers that decide whether a line changes behaviour or only costs tokens — the two loads, context pointers, the ladder, completion criteria, leading words, the no-op test. Its default move is deletion, so it earns most on a draft that already exists.
compatibility
Requires an Agent Skills-compatible coding agent with filesystem access.

Writing rules — and anything else an agent reads

You are writing for a reader who has already read everything. Explanation is waste; precision is the whole job. Left alone, a model writing instructions for a model spends most of its words restating what it already knows — every one of those lines is a no-op: paid every turn, changing nothing.

The packaging differs (a core/ rule, a profile gate, a SKILL.md, a subagent prompt, a handoff note) but the writing does not. The same levers make each one predictable, so the agent takes the same process every run rather than producing the same output.

When the document is a harness surface — a core/ rule, a profile, a skill, a hook — read HARNESS-SURFACES.md for where it goes and what it costs.

Instruction vocabulary

AGENTS.md is the canonical portable instruction file. Never infer the active agent from this skill's install path: portable canonical content may be copied into a required client adapter such as .claude/skills. Treat client-specific instruction files as generated adapters; edit their shared core/ or profiles/ source, never an adapter copy.

The two loads

Every document and every pointer spends one of two budgets. Most authoring decisions are this one trade made in different places:

  • Context load — what always-loaded material costs the agent's window: an instruction-file line, a skill description, anything sitting in context every turn whether or not it fires.
  • Cognitive load — what it costs you: knowing which documents exist and when to reach for each. You are the index. Not a cost to minimise — it's the price of human agency. Spend it where human judgement matters; remove it where it doesn't.

Material behind a pointer escapes context load for the price of the pointer's own line. Material with no pointer at all rides entirely on cognitive load.

Context pointers

A context pointer is a reference held in context that names out-of-context material and encodes when to reach it. A skill's description and an instruction-file line naming a doc are the same object. The pointer's wording, not its target, decides how reliably the agent reaches through it — so a must-have target behind a weak pointer is a variance bug. Sharpen the wording first; inline the material only if sharpening fails.

A pointer does two jobs: say what the material is, and list the branches that should trigger it (a branch is a distinct case the document handles). Every word is paid every turn, so prune it harder than the body:

  • Front-load the leading word — the pointer is where it does its triggering work.
  • One trigger per branch. Synonyms renaming one branch are one branch written twice.
  • Cut identity the body already carries.

The ladder — where each piece sits

Documents are built from steps (ordered actions) and reference (facts consulted on demand). They mix freely: all steps, all reference, or both. The decision is how far down each piece sits:

  1. In-file step — what the agent does, in order. The primary tier.
  2. In-file reference — consulted on demand. Often a legitimately flat peer-set (every gate of a profile on one rung). That's an arrangement, not a smell.
  3. Disclosed reference — a separate file behind a pointer, loaded only when the pointer fires.

Progressive disclosure is the move down that ladder so the top stays legible. Branching is the cleanest test: inline what every branch needs; disclose what only some branches reach. Push too little down and the top bloats; push too much and you hide what the agent actually needs.

Co-location is the within-file companion — the ladder decides how far down, co-location decides what sits beside it. Keep a concept's definition, rules and caveats under one heading so reading one part brings its neighbours. (Distinct from duplication: that repeats one meaning in two places, scattering fragments one meaning across many.)

Sprawl is the failure mode here — a document simply too long, even when every line is live and unique. Attention thins across the excess. The cure is the ladder, not tighter sentences.

Completion criteria

Every step ends on a completion criterion — the condition that says the work is done. Two properties make it a lever, and both sharpen R5 (verify before you call it done):

  • Clarity — can the agent tell done from not-done? A vague bound ("understanding reached") invites premature completion: ending early because attention slipped to being done. The visible steps still ahead supply the pull; the criterion's clarity is the resistance. Sharpen the bound first — it's local and cheap. Only if it's irreducibly fuzzy and you observe the rush, split the sequence so the later steps aren't in view. That only works across a real context boundary (a handoff, a subagent dispatch); an inline call clears nothing.
  • Demand — how much it requires. "Every consumer of the change checked" forces thorough work where "check the change" does not. Demand drives legwork: the digging latent in the wording rather than written as its own step. It isn't step-bound — "every gate applied" binds a body of flat reference the same way.

The strongest criteria are both checkable and exhaustive. This is why R3 says every consumer and R2 says evidence you produced — both are demand, written into the bound.

Leading words

A leading word is a compact concept already living in the model's pretraining that the agent thinks with while running the document (atomic, evidence, Chesterton's Fence, tracer bullet). Repeated as a token, never as a sentence, it accumulates a distributed definition and anchors a whole region of behaviour in the fewest tokens — because it recruits priors the model already holds. Coining your own works if you define it clearly, but a made-up word recruits nothing: you pay in definition tokens what a pretrained word gives free. Reach for an existing word first.

It anchors twice — in the body for execution (the same behaviour every time the word appears), and in a pointer for invocation (when the same word lives in your prompts, your docs and your code, the agent links them and reaches the material more reliably).

Hunt for passages begging to collapse into one token. A triad spelled out at three sites; a pointer spending a sentence to gesture at one idea:

  • "fast, deterministic, low-overhead" → tight (a tight loop).
  • "a loop you believe in" → red — a fuzzy gate becomes a binary observable state.

Assume every document is carrying restatements that leading words retire. Go find them.

Negation is the failure mode beside this lever. Steering by prohibition drags the forbidden behaviour into context and makes it more available, not less — don't think of an elephant, and the elephant is all there is. The negation is a weak modifier the strongly-activated concept overruns, so the ban half-reads as an instruction. Prompt the positive: state the target behaviour so the banned one is never spoken. A prohibition earns its place only as a hard guardrail you cannot phrase positively — and even then, pair it with the positive target.

Show full SKILL.md (572 more words)Show less

Pruning — the default move is deletion

  • Keep each meaning in a single source of truth, so changing the behaviour is a one-place edit. Duplication costs maintenance and tokens, and inflates a meaning's prominence past its real rank. (The accidental inverse of a leading word, which repeats a token on purpose, never the meaning.)
  • The environment is a source of truth too — package.json scripts, config files, --help output, the directory layout. A document restating it is a cache, and a cache earns its load only when the lookup is expensive. Cache what the agent cannot find by looking: the unwritten convention, the reason behind a choice, the gotcha no config confesses. Leave one-command lookups to the environment, where they cannot go stale.
  • Check every line for relevance — does it still bear on what the document does? A line loses it by never bearing on the task, or by going stale as the world it describes changes. Without a pruning discipline the default fate is sediment: stale layers that settle because adding feels safe and removing feels risky.
  • Hunt no-ops sentence by sentence. The test is behavioural, not aesthetic: delete the line — does the agent behave differently? If not, it was never a rule. The test is model-relative, so two people disagreeing about a no-op disagree about the default, and settle it by running the document, not by arguing. When a sentence fails, delete the whole sentence rather than trim words from it. It grades leading words too: a word too weak to beat the default (be thorough, when the agent is already thorough-ish) is itself a no-op, and the fix is a stronger word.

The review pass

Most of the value lands here, not on a blank file. Name the failure mode before you fix it — sprawl, sediment, duplication, negation, premature completion, no-op — because the vocabulary is the repair kit. Then, given a draft:

  1. No-op sweep, sentence by sentence. Grade each line by behaviour, not by length: an agent told to shorten optimises for length, because length is what it can see.
  2. Find the duplication. Nothing stated twice, in any form. It's the most reliable sign a document was never tested.
  3. Check the ladder. Anything only some branches reach goes behind a pointer.
  4. Re-read the pointers — one trigger per branch, leading word first. A branch that needs material and has no pointer to it is the same finding in reverse.
  5. State every prohibition as its positive target, unless it's a hard guardrail.

Evidence when you cannot run it. The no-op test is behavioural, so a review with no run behind it yields candidates, not verdicts (R2). The reachable offline bar: quote the line, name the failure mode, and say which surviving line already carries the meaning. A deletion you can point at a single source of truth for is evidence; one justified by "reads redundant" is a guess. Mark the guesses, and settle them by running the document.

It's working if the document got shorter as it got better; if a leading word is visibly doing work in more than one place; and if nothing is stated twice.

Report

Say what you deleted and why, in failure-mode terms — not just what you added. If the document grew, justify the growth against the two loads.


Adapted from writing-for-agents by Matt Pocock — MIT © 2026. Concepts and leading words are his; the harness framing and R-number cross-references are ours. See docs/18-influences.md.

© PromptPartner, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/writing-rules of PromptPartner/agentsmith.

  • SKILL.md
  • HARNESS-SURFACES.md

Open the folder on GitHubat commit b293c3a

Compare with similar skills

Writing Rules next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Writing Rules compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Writing Rules this skillPromptPartner/agentsmith177—~2.9kAutomated safety check: PassMIT
Voice Profilepedrohcgs/claude-code-my-workflow1.7k—~1.6kAutomated safety check: NotesMIT
Benchmark Translateshapeshift/web206—~1.6kAutomated safety check: PassMIT
Docs Reviewantoinecellerier/speaker-tuning-to-easyeffects143—~1.5kAutomated safety check: PassMIT
Po Translatenatsukium/dotfiles106—~1.4kAutomated safety check: PassCC0-1.0
Voice Dna Creatorbam-bam-2/solo-skills367—~1.1kAutomated safety check: PassMIT

Similar skills

  • Voice Profile

    pedrohcgs/claude-code-my-workflow

    Extract a written voice profile from your own prior papers, then use it to keep new drafts sounding like you.

    1.7k GitHub stars~1.6k tokensUpdated 11 days ago
    Writing & ContentAuto-check: notes
  • Benchmark Translate

    shapeshift/web

    Run a quality benchmark of the /translate skill by selecting stratified test keys, capturing ground truth, translating, judging with sub-agents, and compiling a regression report.

    206 GitHub stars~1.6k tokensUpdated today
    Writing & ContentAuto-check passed
  • Docs Review

    antoinecellerier/speaker-tuning-to-easyeffects

    Reviews the user-facing docs — README.md and the user guides under docs/README.md "Using it" — by running them past subagent reviewers role-playing fixed personas: a first-time visitor, a user…

    143 GitHub stars~1.5k tokensUpdated today
    Writing & ContentAuto-check passed
  • Po Translate

    natsukium/dotfiles

    Orchestrate English→Japanese translation of po/ja.po — classify, delegate translation/review to subagents, iterate until clean

    106 GitHub stars~1.4k tokensUpdated today
    Writing & ContentAuto-check passed
  • Voice Dna Creator

    bam-bam-2/solo-skills

    Analyze writing samples to create a comprehensive voice DNA profile.

    367 GitHub stars~1.1k tokensUpdated 25 days ago
    Writing & ContentAuto-check passed
  • Kkirikkiri

    fivetaku/gptaku-plugins-codex

    Assemble and run a Codex-native agent team from one plain-language request.

    128 GitHub stars~12k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed

More from PromptPartner/agentsmith

All 10 skills in this repo
  • Autonomous Run

    PromptPartner/agentsmith

    Prepare, start, inspect, resume, or stop a finite local overnight coding run after a human has accepted a Wayfinder terminal spec; coordinates a declared Claude/Codex maker and independent checker…

    177 GitHub stars~1.3k tokensUpdated 2 days ago
    Auto-check passed
  • Grill With Docs

    PromptPartner/agentsmith

    Grill a fuzzy, single-session repository change into shared language, recorded decisions, and a handoff-ready plan.

    177 GitHub stars~960 tokensUpdated 2 days ago
    Auto-check passed
  • Wayfinder

    PromptPartner/agentsmith

    Wayfind a foggy, multi-session effort into an accepted repository spec and separate implementation-ticket drafts.

    177 GitHub stars~1.2k tokensUpdated 2 days ago
    Auto-check passed
  • Handoff

    PromptPartner/agentsmith

    Checkpoint work for recovery — fires on "handoff", "wrap up", context pressure, a closed phase, or before a long external wait or irreversible gate.

    177 GitHub stars~702 tokensUpdated 2 days ago
    Auto-check passed
  • Harness Doctor

    PromptPartner/agentsmith

    Check whether this project's Agentsmith harness is installed correctly and healthy — fires on "is my harness set up right?", "harness doctor", "check my harness".

    177 GitHub stars~845 tokensUpdated 2 days ago
    Auto-check passed
  • Harness Help

    PromptPartner/agentsmith

    Orient a non-coder to this project's Agentsmith harness — fires on "what is this harness?", "what are my rules?", "which profile am I on?", "what do I type next?".

    177 GitHub stars~568 tokensUpdated 2 days ago
    Auto-check passed

Questions about Writing Rules

What does Writing Rules do?

Write or review anything an agent reads — a core rule, a profile gate, a SKILL.md description, an instruction-file line, a subagent prompt, a handoff note, a verify-phase label. Writing Rules is an agent skill from PromptPartner/agentsmith.md description, an instruction-file line, a subagent prompt, a handoff note, a verify-phase label.

When should I use Writing Rules?

Writing Rules fits situations like: tasks that involve Brand voice and tone; tasks that involve Subagents.

How do I install Writing Rules in Claude Code?

Run `npx skills add PromptPartner/agentsmith --skill writing-rules -a claude-code`. Or copy the skill folder (skills/writing-rules in PromptPartner/agentsmith) into .claude/skills/writing-rules in your project. Claude Code loads it when a task matches its description.

How do I install Writing Rules in Codex?

Run `npx skills add PromptPartner/agentsmith --skill writing-rules -a codex`. Or copy the skill folder (skills/writing-rules in PromptPartner/agentsmith) into .agents/skills/writing-rules in your project. Codex loads it when a task matches its description.

Can I use Writing Rules in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add PromptPartner/agentsmith --skill writing-rules -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/writing-rules, .gemini/skills/writing-rules, .github/skills/writing-rules and .opencode/skills/writing-rules in your project.

What does Writing Rules need to run?

SKILL.md names no scripts, command-line tools or credentials: Writing Rules is instructions for the agent only. Compatibility (from SKILL.md): Requires an Agent Skills-compatible coding agent with filesystem access..

Does Writing Rules access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Writing Rules safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Writing Rules use?

Writing Rules is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Writing Rules use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Writing Rules?

Skills that share tags, products or a category with Writing Rules: Voice Profile (pedrohcgs/claude-code-my-workflow, 1.7k stars), Benchmark Translate (shapeshift/web, 206 stars), Docs Review (antoinecellerier/speaker-tuning-to-easyeffects, 143 stars) and Po Translate (natsukium/dotfiles, 106 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Writing Rules?

PromptPartner (a GitHub user) maintains it in PromptPartner/agentsmith, which has 177 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 7, 2026.

Source: PromptPartner/agentsmith on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.