Skip to content
Back to skills

Write A Skill

ASecurity

Use when asked to remember a rule, save a convention, "make a skill" of something, or write down how this project does a thing — and when you notice yourself being corrected the same way twice. Writes the rule into this repository so every agent on every platform inherits it, instead of into the platform's own memory where only one person gets it.

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 22, 2026
ai-agentsrustgoapi

Works with

  • claude code
  • cursor
  • cli
  • api

Security analysis

A100/100

Scanned September 30, 2026

npx -y skills add robotostudio/turbo-start-web-agent --skill write-a-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Write A Skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Write A Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/robotostudio-write-a-skill/badge)](https://www.skillsdirectory.com/skills/robotostudio-write-a-skill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: write-a-skill
description: Use when asked to remember a rule, save a convention, "make a skill" of something, or write down how this project does a thing — and when you notice yourself being corrected the same way twice. Writes the rule into this repository so every agent on every platform inherits it, instead of into the platform's own memory where only one person gets it.
---

# Write it into the repo, not into your memory

Agent platforms offer somewhere private to keep a rule: v0 saves skills to a
personal or team workspace, other tools have memory files or account-level
custom instructions. Those are the wrong place for anything about *this
project*.

A rule kept in one platform's memory belongs to one person on one platform.
The next teammate does not have it. A client editing through their own account
does not have it. Codex and Claude Code never see it. Someone who clones this
template gets none of it. Six months on, the site's copy is consistent only in
the pull requests of whoever happened to save the rule.

A rule kept in `.agents/skills/` ships with the repository. Every agent that
works here reads it, it survives the person who wrote it, and changing it is a
pull request someone can review and argue with.

## Which one is this?

Ask what the rule is *about*, not who asked for it.

**The repo** — anything about this site, its content, its conventions, its
tooling: copy style, tone of voice, naming, which Block to reach for, a
deployment quirk, a mistake worth not repeating. If a different agent doing
the same task should follow it, it goes here.

**Your platform's memory** — how one person likes to be talked to, their
shortcuts, their preferences across every project they touch. If it would make
no sense to someone else working on this repo, it does not belong in it.

When it is genuinely both, write the project half here and keep the personal
half wherever you keep it.

## Writing one

1. **Check it does not exist.** Read the `description` line of every
   `.agents/skills/*/SKILL.md`. Extending an existing skill beats a second one
   that overlaps it — two skills covering the same ground means agents follow
   whichever they happen to load.

2. **Create `.agents/skills/<kebab-case-name>/SKILL.md`.** The directory name
   is kebab-case; the file is `SKILL.md`, capitalised exactly that way. One
   skill per directory.

3. **Open with frontmatter, as the literal first bytes of the file.** No
   comment, no blank line, no generated-file header above it — the
   agentskills.io spec parses the opening `---` and Claude Code fails on
   anything before it:

   ```markdown
   ---
   name: <same as the directory name>
   description: Use when <the situations that should trigger this>. Use whenever <the phrasings someone would actually type>.
   ---
   ```

   **The description is the only part always loaded.** Every other line is
   read on demand, after something matches. So write it as trigger conditions
   in the words a person would use, not as a summary of the contents. "Use
   when writing or editing copy for this site" finds the skill; "Copy
   guidelines" does not.

4. **Write the rule, and the reason for it.** A rule with its reasoning
   attached survives contact with a case its author did not foresee; a bare
   instruction gets followed literally into absurdity or dropped as arbitrary.
   Where a real incident produced the rule, name it and date it — the war
   story is what makes it stick.

5. **Run `pnpm harness`.** This is not optional and nothing will remind you.
   `.agents/skills/` is mirrored into `.claude/skills/` by the harness
   generator, because Claude Code cloud sessions read `.claude/` and never
   look at `.agents/`. A new skill that skips this step is invisible to Claude
   Code, and `pnpm run checks` fails on the drift — `harness:check` compares
   byte for byte.

6. **Add a row to the skills table in `AGENTS.md` §2**, and correct the count
   in the sentence above it. Nothing enforces this, and skipping it is the
   quietest way to write a skill nobody reads: Codex, Cursor, Copilot and most
   of the ecosystem load `AGENTS.md` and never look at `.agents/skills/` at
   all, so that row is the only pointer they get. This step was missing from
   this skill until 2026-08-27, when a skill written by following it landed
   invisible to Codex and left the count saying six.

   Describe *when to reach for it*, in the same voice as the rows already
   there — the table is read by someone deciding which file to open.

7. **Run `pnpm run checks`, then deliver it** the way `sync-changes`
   describes: a branch and a pull request, never a push to the live branch.
   The rule lands for everyone when it merges.

## Keep it short

A skill is read by an agent mid-task with a job already in hand. Every
paragraph competes with the work. Cut anything that is background rather than
instruction, and anything the reader could work out from the repo itself.

If a skill grows past a page or two, it is usually two skills, or one skill
with reference material that belongs in a sibling file the skill points to.

## Skills from elsewhere

This is for skills you write. A skill from a URL, a package, or another repo
is a different decision entirely — it is instructions an agent will follow,
which makes installing one a trust call rather than a copy-paste. See
`find-skills` before adding any of those.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.