agentleFS
adezdevadezdev/blueprint/skills/requirements/SKILL.md

requirements

Skill0 starsChanged 3 months agoMITView on GitHub

Turn a rough plan into a traceable requirements.md with stable R-ids and testable EARS acceptance criteria. Use when the user says "/blueprint:requirements", "write requirements", "turn this plan into requirements", "spec this out", or hands over a plan.md / design doc / issue and wants it made rigorous before any code is written.

16 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use agent-browser.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • VercelSkill

    agent-browser

    Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

9 rules. 0 are common, 6 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 12 edited versions we read keep these.

  • 6

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read ${CLAUDE_PLUGIN_ROOT}/FORMAT.md first (or FORMAT.md at the repo root if you are working inside the blueprint repo itself).

    line 8
  2. Very specific:

    No plan at all → the conversation *is* the plan.

    line 21
  3. Very specific:

    Write one ### R<n> per user-visible capability: If two requirements always change together and no one would ever want one without the …

    line 36
  4. Distinctive:

    Write ACs in EARS: Every AC must be assertable by a test that only sees the outside of the system.

    line 40
  5. Distinctive:

    If there are no open questions, say the spec is ready and skip the caveat.

    line 86
  6. Distinctive:

    No implementation nouns in this file.

    line 90
  7. Distinctive:

    No AC that cannot fail. "The system SHALL be reliable" is not an AC.

    line 94
  8. Distinctive:

    Prefer fewer, sharper requirements.

    line 95
  9. Distinctive:

    Never write requirements.md and architecture.md in the same pass.

    line 97

“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Blueprint: requirements

Read ${CLAUDE_PLUGIN_ROOT}/FORMAT.md first (or FORMAT.md at the repo root if you are working inside the blueprint repo itself). It defines the ID grammar and the exact document shape. Do not improvise a variant.

Input

Argument is a feature slug or a path. Resolve in this order:

  1. Explicit path given (/blueprint:requirements docs/oauth-plan.md) → use it.
  2. Slug given (/blueprint:requirements token-refresh) → read .blueprint/token-refresh/plan.md.
  3. Nothing given → if exactly one .blueprint/*/plan.md exists, use it. Otherwise ask which.
  4. No plan at all → the conversation is the plan. Say so, and write plan.md from what the user has told you before continuing.

What you do

  1. Read the plan and the codebase it lands in. Grep for the systems it touches. A requirement written without knowing what already exists is how you get R-ids for things that shipped last year.
  2. Extract intent, not implementation. The plan will contain solution language ("add a Redis cache"). Requirements record the need behind it ("repeat lookups SHALL complete in under 50ms"). If a constraint is genuinely fixed by the user (must use their existing Postgres), record it under Scope as a stated constraint, not as an AC.
  3. Write one ### R<n> per user-visible capability. If two requirements always change together and no one would ever want one without the other, they are one requirement.
  4. Write ACs in EARS. Every AC must be assertable by a test that only sees the outside of the system. Reject your own AC if you cannot name the test that would fail.
  5. Fill ## Out of scope honestly. List what a reader would reasonably assume is included and is not. This section prevents the most expensive kind of rework.
  6. Do not invent answers to gaps. Anything the plan does not settle goes in ## Open questions as Q<n>. Then ask the user the top 1–3 blocking ones directly. Guessing here is the single worst failure mode of this skill — a wrong assumption at R-level propagates through architecture and tasks and is not caught until the code is written.
  7. Write the answers back. An answer that lives only in the chat is an answer the next phase cannot see. When the user settles a question, in the same pass:

    • mark it status: answered — <the answer>, keeping the Q<n>. The marker goes on the same line as the id, directly after it — the check is line-based, so a marker pushed onto a continuation line reads as unanswered. Let the question text wrap underneath instead;
    • fold the consequence into the document. A fixed decision becomes a stated constraint under ## Scope; a new capability becomes a new R<n> with its own criteria.

    An answered question that changed nothing in the document usually means it was not blocking. Say so rather than inventing a requirement for it.

  8. Write the file to .blueprint/<slug>/requirements.md, at the root of the repository being built — including when that repository is Blueprint itself.

Updating an existing requirements.md

Append new R-ids. Never renumber. If a requirement changed meaning, that is a new R-id and the old one gets status: dropped — superseded by R7. Then say which architecture components and tasks now reference a dropped id — the user needs to know the downstream cost before accepting the change.

Done

Report: count of requirements and ACs, the out-of-scope list, and any open questions still unanswered. Then one line:

Next: /blueprint:architecture <slug> — but answer Q1–Q2 first.

If there are no open questions, say the spec is ready and skip the caveat.

Rules

  • No implementation nouns in this file. No class names, no libraries, no file paths, no schemas. The one exception is a non-functional requirement where the constraint is the dependency — portability, operability, a runtime that must or must not be present. Name the category, never the product.
  • No AC that cannot fail. "The system SHALL be reliable" is not an AC.
  • Prefer fewer, sharper requirements. Ten R-ids for a two-day feature means you are describing the implementation.
  • Never write requirements.md and architecture.md in the same pass. The gap between them is where the user gets to disagree cheaply.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.