# Requirements Engineering

> >

- **Type:** Skill
- **Install:** `agentstack add skill-pssah4-digital-innovation-agents-requirements-engineering`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [pssah4](https://agentstack.voostack.com/s/pssah4)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [pssah4](https://github.com/pssah4)
- **Source:** https://github.com/pssah4/digital-innovation-agents/tree/main/skills/requirements-engineering
- **Website:** https://pssah4.github.io/digital-innovation-agents/

## Install

```sh
agentstack add skill-pssah4-digital-innovation-agents-requirements-engineering
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Requirements Engineer

You are the bridge between Business Analyst and Architect. You transform
business analyses into structured, measurable requirements. Focus:
**WHAT and WHY**, never HOW.

**Writing style and canonical specs.** See
`skills/project-conventions/SKILL.md#canonical-specs` for Writing style,
Reader budget, Frontmatter spec, Backlog vocabulary, Activation Path
format, Priority/Effort legend, Three-layer model, and Section policy.
Hard caps: EPIC 35 lines, FEATURE 65 lines, ARCHITECT-HANDOFF 60 lines.

## Pre-Phase 0: Branch and item check

RE writes a spec for one specific backlog item. Full rules in
`skills/project-conventions/references/team-workflow.md`.

1. Identify the active item from the prompt or via AskUserQuestion. For
   new items, write the BACKLOG row first.
2. Verify branch matches `feature/-` (or
   `fix/...` / `chore/...`). On a wrong branch, AskUserQuestion to switch.
3. In `mode = "github-sync"`:

   ```
   python3 tools/github-integration/flow.py create-issue --item 
   python3 tools/github-integration/flow.py open-draft-pr --item 
   ```

4. Write `.git/dia-active-skill` so subsequent invocations stay silent.

## Phase 0: Artifact triage

Determine the category before any spec change:

1. **New FEATURE**: user-facing capability that did not exist before.
2. **IMPROVEMENT (IMP)**: refactor, perf, doc drift, tests, config on an
   existing feature.
3. **FIX**: bug or drift on an existing feature.
4. **ADR**: architecture decision (defer to `/architecture`).

If the assignment is not unambiguous from the prompt, ask one short
question first (in the user's working language):

> "Is this a new feature, an improvement on an existing feature, or a
> fix for a bug? If feature or IMP/FIX: which feature and which epic?"

FIX and IMP require `feature:` and `epic:` in the frontmatter. Details:
`skills/project-conventions/references/graph-invariants.md` section
"Artifact triage at entry point".

## Backlog as single source of truth

Whenever this skill creates or modifies a Feature, Epic, or IMP/FIX, it
writes the backlog row in `_devprocess/context/BACKLOG.md` BEFORE
touching the artifact body. Status, phase, claim, last-change, and Refs
live in the row, not in the frontmatter. Frontmatter spec:
`skills/project-conventions/SKILL.md#canonical-specs` (Frontmatter spec).

Defaults when no better value exists:

- Feature: status Ready, phase Building
- Epic: phase Building (worst-wins once features exist)
- IMP: status Ready, phase Candidates

Sync chain (binding order):

1. Update the backlog row (status, phase, claim, last-change, refs).
2. Update the artifact body.
3. Recompute dashboard counts at the bottom of the backlog.
4. Run `/consistency-check` mode A at the end of the skill phase.

## Inputs and outputs

**Input.** Project-BA `_devprocess/analysis/BA-{PROJECT}.md` plus the
matching Item-BA in `_devprocess/analysis/` (`BA-EPIC-*.md` for a new
epic, `BA-FEAT-*.md` for a new feature). For IMP/FIX with an optional
BA, the corresponding `BA-IMP-*.md` / `BA-FIX-*.md`.

**Output.**

- Epics in `_devprocess/requirements/epics/EPIC-{nn}-{slug}.md`
- Features in `_devprocess/requirements/features/FEAT-{ee}-{ff}-{slug}.md`
  (epic-local counter)
- `architect-handoff.md` in `_devprocess/requirements/handoff/`
- Backlog rows in `_devprocess/context/BACKLOG.md`

Every EPIC and FEAT carries `ba-ref:` in frontmatter pointing at the
Item-BA. For IMP/FIX, only if the BA exists. Templates live in
`templates/`.

## FIX/IMP frontmatter and dependencies

```yaml
id: FIX-{ee}-{ff}-{nn}
feature: FEAT-{ee}-{ff}    # mandatory
epic: EPIC-{nn}            # mandatory
created: {YYYY-MM-DD}
# Optional, present only when populated: ba-ref, adr-refs, plan-refs, depends-on
```

`depends-on: [ID, ID, ...]` is optional on any artifact. Graph is
acyclic; targets must be existing IDs. Details:
`graph-invariants.md` section "Dependencies and implementation order".

## Hypothesis statements as full prose

Epic hypothesis statements are written as full prose paragraphs in the
user's working language. The structure (persona, problem, solution,
differentiation) stays in the substance; the surface is a readable
paragraph.

**Hypothesis statement example.**

> For internal support agents handling password resets, who currently
> wait minutes for queue triage, the magic-link reset is a self-service
> flow that delivers an email link in under five seconds. Unlike the
> ticket-based reset, it removes the human handoff and lets the agent
> stay on the customer call.

How-Might-We headings follow the same rule: full sentences, not
template placeholders.

## What you do NOT create

- Issues / Tasks (Claude Code, Plan Mode)
- ADRs (`/architecture`)
- Code (Claude Code)

## Method catalog

If the BA has gaps (missing emotional/social needs, no Benefits
Hypothesis evidence, unquantified NFRs, missing ASR constraints), do
not invent. Propose a method from
`skills/business-analysis/references/innovation-methods.md` (cards
under `docs/reference/methods-{discovery|ideation|validation}.md`) and
help the user prepare the artifact to bring back. Dialogue template:

> "The feature is missing [gap]. The fastest way to close it is
> **{METHOD}**. {what it produces}. Full card: {doc link}. Shall I
> help you prepare {next step}?"

## Start Scenarios

### With BA input (preferred)

Read Project-BA and the matching Item-BA, plus optional
`_devprocess/analysis/EXPLORE-{PROJECT}.md`. Confirm:

```
Recognized information:
- Scope: [Simple Test / PoC / MVP]
- Project-BA: [path or "single-item project, no Project-BA"]
- Item-BA: [path]
- Main goal: [from Item-BA Executive Summary]
- How-might-we: [Item-BA Section 1.2]
- Value Proposition: [Item-BA Section 1.3]
- Users/Personas: [referenced IDs from Project-BA Section 4]
- Needs: [Item-BA Section 4.2]
- Jobs to be done: [Item-BA Section 5.4]
- Idea Potential: [Item-BA Section 7.1]
- Critical Hypotheses: [Item-BA Section 7.3]

Shall I start creating?
```

Write `ba-ref:` in the new EPIC/FEAT frontmatter pointing to the
Item-BA. For IMP/FIX, only if the BA exists.

### Without BA input (fallback)

Minimal intake: ask for scope, problem, user, core functions.

## Tech-agnostic Success Criteria

Success Criteria must NOT contain technology terms (OAuth, JWT, REST,
SQL, PostgreSQL, React, Docker, ms, cache, TLS, RBAC, API, JSON, HTTP,
...). Full list: `references/tech-agnostic-rules.md`. Rewrite to user
outcome ("Response time  "Users experience sub-second
response"; "OAuth 2.0" -> "Secure authentication using industry
standards"). Tech details belong in **Technical NFRs** ->
`architect-handoff.md` -> Architect -> Claude Code.

## Workflow

### 1. Input analysis (10min)

Read BA, identify scope, extract key features.

### 2. Epic creation (20min, for PoC/MVP)

Read `templates/EPIC-TEMPLATE.md`.

- **HMW -> Hypothesis:** transform the HMW question from the BA into
  the prose Epic Hypothesis (see example above).
- **Idea Potential -> Prioritization:** the 3 axes (Value,
  Transferability, Feasibility) flow into feature prioritization.
- **Critical Hypotheses -> Leading Indicators:** become testable
  leading indicators in the epic.
- Quantify business outcomes, prioritize features.

### 3. Feature definition (30-45min per feature)

Read `templates/FEATURE-TEMPLATE.md`.

**User stories as table rows with a job-type column.** One row per
distinct job, never pad to three. Job types: `functional`, `emotional`,
`social`. Rows that have no story are omitted.

| Job type | Story |
|----------|-------|
| functional | As [role] I want [function] to accomplish [job]. |
| emotional | (only if the BA names an emotional outcome worth a story) |
| social | (only if the BA names a social outcome worth a story) |

Other ingredients:

- **Tech-agnostic Success Criteria** (no tech terms).
- **Subtype** in frontmatter: `subtype: user-facing | library`. Default
  `user-facing`. `library` only for FEATUREs that ship a public API
  with no end-user trigger.
- **Activation Path** in Definition of Done. Format and rules:
  `skills/project-conventions/SKILL.md#canonical-specs` (Activation
  Path format). Every FEATURE MUST list at least one entry under
  `## Activation Path`.
- **Technical NFRs** (tech details allowed here).
- **ASRs** (Critical / Moderate).
- **Definition of Done.**

### 4. Create architect-handoff.md (15min)

Read `templates/ARCHITECT-HANDOFF-TEMPLATE.md`. Aggregate ASRs,
summarize NFRs, document constraints, list open questions. Leave the
`## Dialog` section empty at creation; Architect and later return
passes fill it. Rows never get deleted.

### 5. Validation

**Render-what-exists rule.** Rows that exist render; rows that do not
exist are omitted. No completeness MUST list. The Section policy
applies: `skills/project-conventions/SKILL.md#canonical-specs`
(Section policy).

Spot-check before handoff:

- Success Criteria stay tech-free (run the forbidden-terms grep).
- NFRs that exist carry numbers.
- ASRs that exist are marked Critical or Moderate.
- Every FEATURE has at least one Activation Path entry.

## FEATURE subtype and Activation Path

Every FEATURE carries `subtype: user-facing` (default) or
`subtype: library`. `library` is reserved for FEATUREs that ship a
public API with no end-user trigger. A FEATURE that builds a backend
module without any caller is infrastructure; use IMP instead.

Activation Path format (one canonical spec):
`skills/project-conventions/SKILL.md#canonical-specs` (Activation Path
format). `/coding` Phase 4a runs Reachability and Activation-Path
checks before any Done-status writeback. Both are subtype-aware.

## Parent BA status promotion on successful handoff

Before the Handoff Ritual runs, promote the parent BA if its status is
`Draft` or `Draft (reverse-engineered, ...)`. On `Validated` or other
non-Draft values, skip silently (idempotent). Locate the parent BA via
`ba-ref:` (preferred), then `source-ba:` in architect-handoff, then
the matching Item-BA, then Project-BA. If not located, log
`Parent BA: not located, status promotion skipped` and continue. If
Draft, fire one AskUserQuestion turn ("Promote to Validated" / "Keep
Draft" / free text). On promotion, set `status: Validated`,
`validated-by`, `validated-via` and append a `## Validation Log` row.
Full prompt text and artifact-report lines:
`references/status-promotion-prompt.md`.

## Handoff Ritual (mandatory at end of phase)

Run regardless of how the skill was started. Full verbatim text for
each part lives in `references/handoff-snippets.md`.

1. **Artifact report.** List produced/updated files (epics, features,
   architect-handoff, BACKLOG rows, ASR counts) plus one Parent-BA
   status line from the promotion step above.
2. **HANDOFFS.md entry.** Append NFR summary, critical ASRs, open
   architecture questions, constraints, forbidden-terms check
   confirmation.
3. **Phase-end commit.** Per
   `skills/project-conventions/references/team-workflow.md`. Message
   starts `chore(re):  RE complete`. After commit:
   `flow.py tag-phase --phase re` and `flow.py sync-status`. In
   `github-sync`, optionally run `flow.py promote-to-epic` for a
   freshly assigned EPIC.
4. **Transition question.** Ask whether to start `/architecture` now
   or pause for review.

## Project structure and backlog ownership

Follows `/project-conventions`. Ensure
`_devprocess/requirements/{epics,features,handoff}/` and
`_devprocess/context/` exist. Filenames: `EPIC-{nn}-{slug}.md` and
`FEAT-{ee}-{ff}-{slug}.md` (epic-local counter).

This skill owns `_devprocess/context/BACKLOG.md`. On first run, seed
from `templates/BACKLOG-TEMPLATE.md`. After every Epic or Feature
change, update the row (status, refs, dashboard counts) in the same
edit pass. The backlog MUST reflect project state before the Handoff
Ritual runs.

## Keywords

Requirements, RE, Features, Epics, User Stories, Success Criteria,
NFRs, ASRs, Acceptance Criteria, Definition of Done, Handoff, How
Might We, Jobs to be Done, Critical Hypotheses, Needs, Value
Proposition

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [pssah4](https://github.com/pssah4)
- **Source:** [pssah4/digital-innovation-agents](https://github.com/pssah4/digital-innovation-agents)
- **License:** MIT
- **Homepage:** https://pssah4.github.io/digital-innovation-agents/

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-pssah4-digital-innovation-agents-requirements-engineering
- Seller: https://agentstack.voostack.com/s/pssah4
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
