AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

User Stories

skill-sidsaladi9-persona-os-user-stories · by Sidsaladi9

Breaks an epic, spec, or feature into well-formed user stories with Given/When/Then acceptance criteria, applies INVEST, and splits stories that are too big. Use when a PM says "break this epic into stories", "write user stories", needs "acceptance criteria for X", wants to "split this story", or asks to "turn this PRD into a backlog".

No reviews yet
0 installs
5 views
0.0% view→install

Install

$ agentstack add skill-sidsaladi9-persona-os-user-stories

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-sidsaladi9-persona-os-user-stories)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of User Stories? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

User Stories

Turn a fuzzy epic, spec, or feature into a backlog of small, testable, independently shippable user stories. Each story names a user, a capability, and an outcome, carries acceptance criteria a developer and tester can verify, and is sliced as a thin vertical end-to-end path — never a horizontal technical layer. Where a story is too big, split it with a proven pattern rather than guessing.

Grounded in: User Story Mapping — Jeff Patton: vertical slices and story mapping, with INVEST and Given/When/Then. Go deeper (The Product Channel): Guide to Product Requirements Documents

When to use this

  • An epic or spec is too large to estimate or build, and needs decomposing.
  • You're handed a PRD and need a ready-to-groom backlog out of it.
  • A single story keeps growing or hides several decisions and should be split.
  • A story exists but its acceptance criteria are vague, missing, or untestable.
  • Sprint planning needs stories small enough to fit a sprint with clear "done."

Before you start (gather these)

  • The epic / spec / feature you're decomposing — the scope boundary.
  • The user or persona who benefits (and any distinct user types involved).
  • The outcome / goal: what changes for them when this ships.
  • If pointed at a PRD or doc, read it first and pull the above from it.
  • If scope, persona, or outcome is unclear, ask before slicing — don't invent them.

Principles

  • Story form: As a [user/persona], I want [capability], so that [outcome]. The "so that" is non-negotiable — it's the user value and the reason to build.
  • INVEST every story:
  • Independent — minimal ordering dependencies on other stories.
  • Negotiable — a conversation, not a frozen contract of implementation detail.
  • Valuable — delivers observable value to a user or the business.
  • Estimable — the team understands it well enough to size it.
  • Small — fits comfortably in a sprint; ideally a few days.
  • Testable — you can write the acceptance criteria that prove it's done.
  • Acceptance criteria as Given/When/Then — Given [context], When [action], Then [observable result]. Cover the happy path AND edge cases (empty, invalid, unauthorized, limits, failures).
  • Vertical slices over horizontal — each story is a thin end-to-end path that delivers value (UI + logic + data for one capability), not a layer ("build the API," "build the schema") that delivers nothing alone. Exception for quality-bar / model-accuracy work: a story that proves a probabilistic capability hits its bar against an eval set (detection/scoring verified offline, no UI yet) is a legitimate first vertical slice — the verifiable accuracy is the value.
  • Acceptance criteria for probabilistic / ML / quality-bar features — Given/When/Then is deterministic, but ML behavior is only correct ~85% of the time, so don't write AC as if each case must pass. Instead make the criteria threshold-based and measured against a fixed eval set / golden dataset: define a labeled dataset, set precision/recall (or F1, accuracy) targets, and write AC like "Given the golden eval set of N labeled examples, when the model runs, then precision ≥ 0.90 and recall ≥ 0.80." Specify the dataset, the metric, and the threshold so the AC is still pass/fail — just measured statistically rather than per-instance.

Splitting patterns (when a story is too big)

  • Workflow steps — slice along the steps of a process. "Checkout" → enter address → choose shipping → pay → confirm.
  • Business-rule variations — one story per rule. Discount: percentage off, then BOGO, then loyalty tier.
  • Happy vs. edge path — ship the happy path first, edges as follow-ups. "Pay with valid card" before "handle declined card."
  • Simple vs. complex — do the basic case, defer the hard one. "Search by exact name" before "fuzzy + filters search."
  • Data / interface variations — split by input type, format, or channel. "Upload CSV" before "upload Excel and JSON."
  • CRUD operations — split create / read / update / delete. "View saved reports" can ship before "edit" and "delete."
  • Defer performance — make it work, then make it fast. "Generate report (any speed)" before "generate report in <2s."

Process

  1. Identify the user(s) and the epic's outcome — who benefits and what changes for them. List distinct personas if more than one.
  2. Slice into vertical stories — break the outcome into thin end-to-end capabilities, each delivering value on its own. Reach for a splitting pattern when a slice is still chunky.
  3. Write each in story form — As a / I want / so that. Confirm the "so that" states real value.
  4. Add Given/When/Then acceptance criteria — at least one happy-path scenario plus the edge cases that matter (invalid, empty, unauthorized, limits, failure).
  5. Check INVEST and bound the slice — run each story through the six letters; flag and fix anything that fails. State what's explicitly out of scope for the story (deferred work, things handled elsewhere) so the boundary is unambiguous.
  6. Split anything too big — if a story fails Small or Estimable, or hides multiple decisions, apply a splitting pattern and re-check.
  7. Sequence — order by dependency and value; surface the thinnest slice that proves the epic end-to-end first.

Output template

Copy-paste per story:

### [Story title]

As a [user/persona],
I want [capability],
so that [outcome].

**Acceptance criteria**
- Given [context], when [action], then [observable result].
- Given [edge context], when [action], then [result].
- Given [error/limit context], when [action], then [result].

**Notes / edge cases**
- [assumptions, open questions, data or rule details]

**Out of scope**
- [explicitly not in this story — deferred or handled elsewhere]

Suggested build order

  1. [story] — thinnest end-to-end slice; proves the path.
  2. [story] — [why next: unblocks X / highest value]
  3. [story] — ...

Worked example (the split that matters)

An epic arrives as "bulk CSV export." The lazy split is by layer — backend story, frontend story, QA story — which produces three stories none of which ship value alone.

The useful split is by thin vertical slice, each independently shippable:

  1. As an ops manager, I want to export the current filtered view as CSV, so I can hand my director numbers without asking data for a pull. — one view, ≤1,000 rows, synchronous download.
  2. As an ops manager, I want exports over 1,000 rows to arrive by email, so a big export doesn't time out in my browser.
  3. As an ops manager, I want my last export's filters remembered, so the Monday report takes one click.

Story 1 alone is worth shipping. That's the test: if a story can't be released on its own and be worth something, it's a task, not a story.

Notice the "so that" clauses — each names a real outcome, not a restatement of the action. "so that I can export a CSV" is the tell that the value wasn't understood.

Avoid (anti-patterns)

  • Horizontal / technical-layer stories — "build the API," "create the schema," "wire up the service." They deliver no user value alone. Slice vertically. Exception: a detection/eval-only story for an ML or quality-bar feature — verified against an eval set with no UI — is not a horizontal layer; the measured accuracy is real, demonstrable value and is a valid first slice.
  • Untestable acceptance criteria — "works well," "is fast," "is intuitive." If you can't write a pass/fail check, rewrite it as Given/When/Then.
  • Giant stories — one story hiding a dozen decisions, rules, or screens. If you can't estimate it, split it.
  • Missing the "so that" — a capability with no stated user value. If there's no outcome, question whether to build it.

Tips

  • One verb per story. "Create and edit and export" is three stories.
  • If estimation triggers an argument, the story is too big or too vague — split or clarify.
  • Write the edge-case criteria first sometimes; they expose hidden scope fast.
  • A story you can demo in one sentence ("watch me pay with a saved card") is the right size.
  • Keep acceptance criteria about observable behavior, not implementation.
  • Name the persona specifically ("returning shopper," not "user") — it sharpens the slice.

Source & license

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

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

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.