Skip to content
Back to skills

Requirements Writing

ASecurity

Use when capturing what a feature must do - write testable user-story requirements that state WHAT and WHY, never HOW, with assumptions made explicit

  • 109 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 19, 2026
ai-agentsgoapiperformance

Works with

  • api

Security analysis

A100/100

Scanned October 2, 2026

npx -y skills add makifbaysal/tasktrooper --skill requirements-writing --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Requirements Writing?

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

Security grade badge for Requirements Writing
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/makifbaysal-requirements-writing/badge)](https://www.skillsdirectory.com/skills/makifbaysal-requirements-writing)

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: requirements-writing
category: pm
description: Use when capturing what a feature must do - write testable user-story requirements that state WHAT and WHY, never HOW, with assumptions made explicit
---
# Requirements Writing

## Overview

A requirement is a promise about behavior, written so QA can later prove it and a developer can build it without guessing. The recurring failures are requirements that specify implementation (HOW), bundle several behaviors into one, or hide assumptions that later surface as defects.

**Core principle:** State WHAT and WHY. HOW belongs to the architect and developers.

## The shape

- **User story:** As [persona], I want [capability], so that [outcome].
- **Context:** why now, what problem it solves.
- **Constraints:** hard limits (locale, performance, compliance) treated as given.
- **Assumptions:** stated explicitly — an unstated assumption becomes a defect.

## Rules

- **WHAT/WHY, not HOW — but field-aware.** `description` and `acceptance_criteria` state WHAT and WHY: "Users can export tasks to CSV" — not "add a `/export` endpoint using library X." Endpoints, files and tables belong only in `technical_description`, only once verified with code tools (`get_repo_tree`, `codebase_search`/`grep_code`), and only for small direct tasks you write yourself. A criterion may name an endpoint only when the API itself is the product surface (see acceptance-criteria-gwt's API-surface example) — not as a stand-in for what a user sees.
- **Independently testable.** If a requirement contains "and", consider splitting.
- **No solutioning in `description`/`acceptance_criteria`.** Naming a datastore, framework, or endpoint there is an architect/dev decision leaking in, even though the same name is correct in `technical_description`.

## Worked Example

```
❌ "Add a Redis cache to the task list endpoint so it's fast."
   (HOW — names the tech; "fast" is untestable)

✅ Story: As a project member, I want the task list to load quickly,
          so that I can scan my board without waiting.
   Context: boards with 500+ tasks feel sluggish today.
   Constraint: list renders < 500ms at p95 for 1000 tasks.
   Assumption: 1000 tasks is the realistic upper bound per project.
```

The architect chooses caching vs indexing vs pagination — the requirement fixes only the outcome and the bound.

## Common Mistakes

- Prescribing the implementation.
- "Fast/intuitive/robust" with no measurable target.
- One requirement covering three behaviors.
- Assumptions left unstated.

## Red Flags

- The requirement names a library, table, or endpoint.
- You can't say how QA would prove it.
- An adjective where a number belongs.

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…