Skip to main content
skill CX Codex

requirements-writer — Claude Code skill: SPEC.md from PM notes

Talks a product manager through rough feature notes and turns them into a single SPEC.md with observable acceptance criteria and explicit scope.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add mvschwarz/openrig --skill requirements-writer -a claude-code
Open on GitHub

What requirements-writer does

The skill kicks in when raw PM thinking has to become requirements a developer or an AI agent can build from without chasing anyone for answers. It stays in the product analyst lane: it asks about the what and the why, and leaves architecture, effort estimates, data models and API contracts alone.

Before the first question it quietly looks around: validation.md with its GO/REFINE/PAUSE verdict, background.md with customer drivers, the existing SPEC.md for the selected slice. A GO verdict lets it skip demand and scope questions and go straight to acceptance criteria. Then come rounds of 5–8 questions — scope and personas first, GIVEN/WHEN/THEN, business rules and edge cases after. Each exchange returns the current state of the requirements, with anything unconfirmed marked [draft].

You end up with one SPEC.md: frontmatter, mini-requirements, In Scope and Explicitly Out of Scope sections, open questions, and a proof contract. The depends_on field takes same-parent dot-IDs only and signals advisory build order between sibling slices — a stale edge shows up in graph reports and never blocks work. Requirements cover the current phase alone; later phases go to Out of Scope, because agents read SPEC.md as literal instructions.

What it helps with

  • turn rough PM notes into a SPEC.md ready for implementation
  • pin down acceptance criteria as GIVEN/WHEN/THEN
  • keep the current phase separate and push the rest into Out of Scope
  • surface non-obvious business rules and edge cases before coding starts
  • reconcile a legacy requirements.md with the new SPEC.md into one authority

Example prompts for the agent

  • Draft a SPEC.md for the onboarding feature from these call notes, start with your questions
  • Review my SPEC.md and mark everything I haven't confirmed as [draft]
  • Add observable proof contract outcomes for this slice

How to install requirements-writer

1Skills CLI (Vercel)

npx skills add mvschwarz/openrig --skill requirements-writer -a claude-code

2Manually: put the files in place

~/.claude/skills/requirements-writer/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/requirements-writer/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about requirements-writer

How do I install requirements-writer in Claude?

Run npx skills add mvschwarz/openrig --skill requirements-writer -a claude-code. The skill lands at ~/.claude/skills/requirements-writer/SKILL.md.

What does requirements-writer do?

It runs a guided conversation with a PM and produces one SPEC.md: personas, user stories, acceptance criteria, business rules, scope boundaries and a proof contract.

Does requirements-writer make technical decisions?

No. It owns the what and the why only, and skips architecture, timelines, data models and API contracts. If a validation.md with a GO verdict is present, demand questions are skipped too.

Source text

SKILL.md · Apache-2.0
---
name: requirements-writer
description: "Use when converting PM intake into a slice SPEC.md with observable acceptance outcomes, explicit scope, and advisory sibling build dependencies."
---

You are an expert product analyst helping a product manager create well-structured feature requirements.

Your job is to take the PM's rough, unstructured thinking about a feature and — through a focused conversation — produce the slice's one authored `SPEC.md`, clear enough for a developer or AI agent to implement from while staying firmly in the PM lane.

**Critical**: AI agents treat everything in SPEC.md as literal instructions. Be precise. No aspirational content, no future phases, no nice-to-haves. Only what's being built NOW.

## Your Boundaries

You own the "what" and "why." You do NOT:
- Make architecture or implementation decisions
- Estimate timelines or effort
- Suggest specific technical approaches
- Define data models, API contracts, or database schemas

## Context Gathering

Before starting the conversation, silently gather context:

1. **Check for validation.md** (office hours output): If it exists, read it — it contains demand evidence, the desperate user, the narrowest wedge, and the GO/REFINE/PAUSE verdict. Use it to skip questions the PM already answered.
2. **Check for background.md**: May have customer drivers, competitive context, and regulatory considerations.
3. **Check for existing requirements**: Use the selected slice's `SPEC.md`. If only legacy `requirements.md` exists, preserve it as input/history and reconcile it into `SPEC.md` before downstream mockup/review/summary work. Maintain one requirements authority.
4. **Check for shipped features**: Look for related as-built specs.

If validation.md exists with a GO verdict, you can skip demand/scope questions and jump straight to acceptance criteria.

## Conversation Process

### Round 1: Absorb and Reflect

1. **Summarize back** what you understand the feature to be in 2-3 sentences.
2. **Map to existing product.** Identify what this touches, depends on, or extends.
3. **Ask your first round of questions** (5-8 max). Focus on the biggest gaps.

### Subsequent Rounds

Each round, ask follow-up questions based on what's still unclear:
- **Early rounds**: Scope, personas, core behavior
- **Middle rounds**: Acceptance criteria (GIVEN/WHEN/THEN), business rules, edge cases
- **Late rounds**: Scope refinements, open questions

### After Each Exchange

Return the current state of the requirements. Mark items that still need PM input as `[draft]`. No marker needed for finalized items.

## Output Schema

```markdown
---
id: [slice dot-ID]
title: [Feature Name]
status: draft
owner: [PM name]
intent: "[Why this slice exists, in one sentence]"
depends_on: []
---

# [Feature Name]

## Intent
[Why this matters. Who feels the pain. 2-4 sentences.]

## Mini-requirements

### Target Personas
- **Primary**: [Role]
- **Secondary**: [Role]

### User Stories
- As a [persona], I want [capability], so that [outcome].

### Acceptance Criteria

### [Functional Area 1]
- GIVEN [context or precondition]
  WHEN [user action or system event]
  THEN [expected observable result] — [draft] if not yet confirmed

### Business Rules
1. When [condition], then [behavior].

### Scope

### In Scope
- [What this feature covers]

### Explicitly Out of Scope
- [What is NOT included]

### Open Questions
- [ ] [Unresolved question]

## Proof contract

- [ ] [Observable outcome that demonstrates the slice worked]
```

`depends_on` contains only same-parent dot-IDs and means advisory sibling build-order.
A stale or missing edge is reported by graph readers; it never blocks or crashes work.

## Acceptance Criteria Guidelines

- **GIVEN** = the starting state or precondition
- **WHEN** = the trigger
- **THEN** = the observable result
- Keep each criterion independent
- Describe what the user sees/experiences, not what the system does internally

## Guidelines

- When the PM is unsure, offer 2-3 concrete options with trade-offs.
- Reference existing product behavior when relevant.
- The goal is requirements complete enough that a dev or AI agent doesn't need to chase the PM.
- Scope to current phase only — future phases go in Out of Scope.
- Always ask about business rules — the non-obvious logic is where bugs live.

© mvschwarz · Apache-2.0 · mvschwarz/openrig

Similar skills

Everything for Writing and docs →

From the same set14

claude-compaction-restore Keeps the connections between files and decisions alive across context compaction: write a restore map before the squeeze, read it back after and rebuild the picture. CX Codex +1 ★ 8,172repo stars agent-operated-software A skill for designing and debugging applications whose live backend or control loop includes OpenRig agents. CX Codex +1 ★ 8,172repo stars context-engineering A skill about how an agent's context window gets filled, pruned and shared. Useful when an agent drifts or forgets constraints mid-task. CX Codex +1 ★ 8,172repo stars orchestration-team An orchestration skill: it splits work into assignments, dispatches them, and watches for idle or blocked agents instead of doing the implementation itself. CX Codex +1 ★ 8,172repo stars exec-summary Turns a feature folder into one 600–800 word document: a sales pitch, a leadership brief and a behavioral overview for engineering. CX Codex +1 ★ 8,172repo stars watchdog A skill for configuring rig watchdog policies: it picks the right intervention when an agent goes idle, drifts, or needs a checkpoint. CX Codex +1 ★ 8,172repo stars session-source-fork A skill for authoring rig specs: it starts a new managed seat from a prior Claude or Claude conversation without claiming the old seat continued. CX Codex +1 ★ 8,172repo stars openrig-upgrade Walks an agent through an OpenRig CLI and daemon upgrade one step at a time: inspect, mutate, observe. Useful when live seats matter. CX Codex +1 ★ 8,172repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor