Skip to content

Guide · Agent skill

How to use the Writing Specs agent skill (writing-specs)

Updated · written with AI from the project's own documentation and checked against our catalogue data

Writing Specs is an agent skill that gives an AI agent a quality bar for project specification documents: goal-and-requirements docs, architecture docs and module SPECs. It makes the agent write short specs, mark unconfirmed inferences, avoid placeholder sections and keep rationale in the spec rather than in code comments. This guide explains what an agent skill is, how to install this one, how to trigger it, and where it does and does not help.

Writing SpecsJetBrains/thinkrail · Apache-2.0

Quick start

  1. 1Download the ZIP. Download the writing-specs skill ZIP from this page.
  2. 2Unzip into a skills folder. Unzip it into ~/.claude/skills/ for personal use, or into the project's .claude/skills/ folder for one repository.
  3. 3Or upload it in the Claude apps. Alternatively, go to Settings → Capabilities → Skills in the Claude apps and upload the skill there.
  4. 4Ask for a spec in plain language. Request a goal-and-requirements doc, an architecture doc or a module SPEC by name, without a special command.
  5. 5Review the output. Check unconfirmed markers and confirm the content is settled before accepting it.
  6. 6Keep status draft until review. Leave new specs at status: draft and change them only after you have reviewed them.

What is an agent skill and what does writing-specs do?

An agent skill is a folder containing a SKILL.md file that an AI agent loads to follow a particular set of instructions when a request matches the skill's description. The writing-specs skill is part of the ThinkRail workflow family, and its SKILL.md is the shared quality bar for every spec a workflow produces.

The skill does not run a workflow or execute code. It is guidance that shapes how the agent drafts or revises a spec at the step where one is written.

  • Keeps specs short: small enough to read in one sitting, explaining intent rather than listing files or restating code.
  • Records only settled content; unsettled sections are left out instead of filled with [TBD] or placeholder headings.
  • Marks anything inferred rather than confirmed, inline where it stands.
  • Sets new and inferred specs to status: draft until a user has reviewed them.
  • Keeps rationale, decisions, invariants and bug post-mortems in the spec, not in code comments.
  • Keeps the goal doc about the product: no versions, releases, phases, MVP/v1/v2 splits or later lists.

How do you install the writing-specs skill?

Download the ZIP of the skill from this page. The skill's files are SKILL.md. Unzip it into one of two places, depending on how you want to use it.

For a personal setup, unzip it into ~/.claude/skills/. For a single project, unzip it into the project's .claude/skills/ folder so that it applies only to that repository.

You can also upload the skill in the Claude apps under Settings → Capabilities → Skills.

  • Personal: ~/.claude/skills/writing-specs/
  • Project only: .claude/skills/writing-specs/ inside your repository

How do you trigger the skill with natural requests?

The skill loads when a request matches its description, which is about drafting or revising a spec artifact: a goal-and-requirements doc, an architecture doc or a module SPEC. You do not need to type a special command. Ask for the spec in plain language and name the kind of document you want.

The skill also loads when a workflow skill names it at a step that writes a spec, so requests made inside a ThinkRail workflow usually trigger it without extra wording.

  • Draft a goal-and-requirements doc for this product, keep it to what the product does and what it excludes.
  • Revise the module SPEC for the payments module so the rationale lives in the spec, not in code comments.
  • Write an architecture spec for the sync service and mark anything you could not confirm from the code.

What does it need and what are the safety notes?

The skill lists no requirements. It does not run scripts and does not use the network. Its only file is SKILL.md.

It is written for projects that follow ThinkRail spec-graph conventions. It refers to spec_* tools and status fields, so in a setup without those, parts of the guidance will not map onto anything you have.

  • Requires: nothing listed
  • Runs scripts: no
  • Uses network: no
  • Files: SKILL.md

What does a good spec look like after the skill runs?

Expect a spec that is brief and specific. A module spec should explain what the module is for, what it owns and where its boundary runs. Dependencies between sibling modules belong in the parent's spec, and each fact should appear once, with links by id instead of repeated text.

Expect unconfirmed points to be labelled where they occur, and a new spec to carry status: draft until you review it.

  • Read the spec in one sitting; if it is longer, ask the agent to cut it to intent and boundary.
  • Check every inline unconfirmed marker before you accept the spec.
  • Review the draft yourself before changing status out of draft.

Tips for getting the most out of it

Give the agent the real source material, such as the code, notes or a discussion summary, so it has something to confirm against. Without it, more of the spec will be marked unconfirmed.

Keep one spec per genuine boundary, not one per directory or file. If you are unsure whether a module needs its own spec, describe the boundary and ask the agent to justify the split.

  • Paste or point to the code and decisions the spec should reflect.
  • Ask for revisions in small steps, one spec at a time.
  • When the agent moves a rationale paragraph out of code, check that only a one-line pointer remains where misediting would break something.

What people use it for

  • Drafting a goal-and-requirements doc that states the product's goal, audience, capabilities and non-goals without a release plan.
  • Writing a module SPEC that explains a module's purpose and boundary, with rationale kept in the spec.
  • Revising an architecture spec so that unconfirmed inferences are clearly marked.
  • Cleaning up a repository where rationale has ended up in code comments, moving it into the owning spec and leaving a one-line pointer.

Frequently asked questions

Is the writing-specs skill free?

The source lists the licence as Apache-2.0. The source does not mention pricing, so check the repository's licence file for the terms.

What do I need to use the writing-specs skill?

The skill lists no requirements, runs no scripts and uses no network. It is designed for projects that follow ThinkRail spec-graph conventions.

How do I install an agent skill like writing-specs?

Download the ZIP, then unzip it into ~/.claude/skills/ or a project's .claude/skills/ folder. You can also upload it under Settings → Capabilities → Skills in the Claude apps.

Does writing-specs run code or workflows?

No. The skill says it is not a workflow and has nothing to execute. It only guides how the agent writes specs.

Can I use writing-specs without ThinkRail?

It refers to spec_* tools and status fields, so projects without those conventions may find parts of it do not apply. It can still serve as an example of a clear spec quality bar for your own skills.

Why does the agent mark some spec content as unconfirmed?

The skill tells the agent to mark anything inferred rather than confirmed, inline where it stands. This stops guesses from looking like settled facts.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

Use writing-specs if you work in the ThinkRail workflow or keep product goal docs and module specs in a repository and want an agent to follow shared, concise rules. Pick something else if you need an agent to execute tasks, run a workflow or write specs in a setup without ThinkRail's spec-graph conventions.

Download the skill