Skip to content
Agentmart
Submit a tool

papi-sdlc-user-stories

Create or work with user stories — define a single actor goal, its interface, and falsifiable acceptance criteria.

Skill by stainsby

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/stainsby-papi-sdlc-user-stories

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Create or work with user stories — define a single actor goal, its interface, and falsifiable acceptance criteria. [PAPI SDLC]

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/papi-sdlc-user-stories

What's inside

Skill name
papi-sdlc-user-stories
Description
Create or work with user stories — define a single actor goal, its interface, and falsifiable acceptance criteria. [PAPI SDLC]
License
MIT
Instructions
127 lines in SKILL.md · view on GitHub

Files (3)

  • SKILL.md
  • user-stories-template.md · assets/
  • user-story-template.md · assets/

SKILL.md (first lines)

# SDLC Task - User Stories

## When to use this skill

Use this skill whenever a unit of product or system behaviour needs to be
captured from the perspective of a specific actor — whether for backlog
grooming, epic decomposition, or as the specification source for a development
or component task.

## When to use this skill (continued)

- Read, copy and use the appropriate template.
- Create the parent document first if one does not yet exist for the product/epic.
- Each individual story document links back to its parent, and the parent indexes all child stories.

## Dependencies

Reading these skills is REQUIRED to understand and execute this skill:

- PAPI skill `papi-sdlc-understand`
- PAPI skill `papi-templates-understand`

## Core principles

### One story, one actor, one goal

A user story describes a single outcome for a single role. If the narrative
requires more than one actor or more than one goal, split it into separate
stories. Compound stories indicate unclear scope and produce untestable
acceptance criteria.

### Specific roles, not "user"

The actor must identify a real, distinguishable role with distinct needs
(e.g., "authenticated administrator", "background job scheduler",
"third-party API consumer"). Generic actors like "user" or "system" are
not acceptable — they obscure who actually benefits and make the story
harder to prioritise and validate.

### Goals state *what*, not *how*

The "I want to" clause must describe a goal, not an implementation. If the
narrative specifies a UI control, an API endpoint, or an algorithm, it has
crossed into solution space. Reserve implementation decisions for the
development or component task that fulfils the story.

### Falsifiable benefit

The "so that" clause must describe an outcome that can be confirmed or
refuted through the interface described in the story. If the benefit cannot
be observed or measured, it is not a valid acceptance criterion anchor and
the story needs to be rewritten.

### Interface before criteria

Before writing acceptance criteria, the Interface section must clearly
describe how the actor initiates the interaction and what observable
response or state change they receive. Acceptance criteria must assert
outcomes expressed in terms of that interface — not internal system state
or implementation details.

### Negative and boundary cases are required

Every story must include at least one acceptance criterion covering a
negative case (e.g., invalid input, unauthorised access, resource not found)
or a boundary condition. Stories with only happy-path criteria are
incomplete.

### Stories are not tasks, and carry no evidence

A user story is a specification artefact, not a work item. Once a story
reaches **Ready** status, one or more development or component tasks are
created to fulfil it. The story remains as the authoritative statement of
intent and is linked from those tasks.

The story document must not contain implementation notes, test results,
fulfilment status, or audit findings. Those belong in task, testing,
release, or audit artefacts. The story's only lifecycle signal is its
**Status** field.

### Stories know nothing about component specifications

A user story is an upstream statement of intent and MUST NOT reference
component specifications, capability codes, or any other solution
structure. The dependency points the other way: the user-facing
components that fulfil a story reference *it* from their capability
`**Users:**` fields (see the `papi-sdlc-component-specification` skill),
never the reverse. This keeps stories stable when the architecture is
refactored.

### Stories are written in the actor's language

Narrative, interface, and acceptance criteria must use vocabulary the
named role would actually use. Reviewer check: would this role read the
story and recognise their own world? If not, rewrite.

### Status reflects scope

A story's **Status** must be consistent with the scope of its parent
epic/release. Stories outside current scope stay **Draft** (or are
removed). Do not mark a story **Ready** unless its scope agrees with
that of its parent epic/release.

## Checklist when creating a user story

- [ ] ID assigned (unique within the epic or backlog)
- [ ] Actor is specific and distinguishable — not "user" or "system"
- [ ] Goal states what the actor achieves, not how the system implements it
- [ ] Benefit is falsifiable — it can be confirmed through the interface
- [ ] Interface section describes the observable interaction and response
- [ ] At least two acceptance criteria written in Given / When / Then form
- [ ] At least one negative or boundary acceptance criterion included
- [ ] All criteria are assertable through the interface, not internal state
- [ ] Story contains exactly one actor and one primary goal (split if not)
- [ ] `**Role:**` field set, matches the narrative actor, and matches a role defined in the parent user-stories document
- [ ] Story body is free of capability codes and component-spec references
- [ ] Wording uses language the named role would recognise
- [ ] No implementation / test / fulfilment / audit evidence in story body
- [ ] Status (Draft / Ready / In Progress / Done) matches parent scope

From stainsby/papi, MIT.

More from stainsby/papi

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
May 31, 2026 (5 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from stainsby

Cite this page

papi-sdlc-user-stories skill. Agent Mart. https://agentmart.dev/skills/stainsby-papi-sdlc-user-stories (last updated 2026-10-24)