Write user story
Skill MarieLynneBlock/arcanum-artifex/skills/analysis/write-user-story
Prompts, skills, and agents that survive contact with real workflows. No vendor loyalty. Occasionally heretical. π§π»ββοΈ
npx -y skills add MarieLynneBlock/arcanum-artifex --skill write-user-storyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Produces a complete, ready-to-groom user story following the standard Atlassian/agile format. It applies the INVEST criteria and the 3 Cs framework (Card, Conversation, Confirmation) to ensure each story is well-scoped, valuable, and testable β not just syntactically correct.
SKILL.md
6.0 KB, as published. Nobody here has run it
What this skill does
Produces a complete, ready-to-groom user story following the standard Atlassian/agile format. It applies the INVEST criteria and the 3 Cs framework (Card, Conversation, Confirmation) to ensure each story is well-scoped, valuable, and testable β not just syntactically correct.
Reference: Atlassian β User stories with examples and a template
When to use it
- User asks to "write a user story" or "create a story" for a feature or requirement.
- User wants to refine a rough idea, acceptance note, or bug description into a proper story.
- User needs to validate whether an existing story is well-formed.
- User is decomposing an epic into individual stories.
Key concepts
The standard format (Connextra template)
As a [persona],
I want to [action / capability],
so that [benefit / outcome].
- Persona β who benefits (not "user" generically β use a real role: "logged-in customer", "warehouse operator", "admin").
- Want β the capability or action, not the implementation ("I want to filter results" not "I want a dropdown").
- Benefit β the why; if the benefit is obvious, keep it short but never omit it.
INVEST criteria
A well-formed story is:
| Letter | Criterion | What to check |
|---|---|---|
| I | Independent | Can be developed without another story blocking it? |
| N | Negotiable | Is it a conversation-starter, not a contract? |
| V | Valuable | Does it deliver value to the persona? |
| E | Estimable | Is it specific enough for the team to size? |
| S | Small | Completable within a single sprint? |
| T | Testable | Do the acceptance criteria make pass/fail possible? |
3 Cs
- Card β the written story (brief; a reminder, not a spec).
- Conversation β the discussion between team and stakeholders that fills in detail.
- Confirmation β the acceptance criteria that confirm the story is done.
Instructions
-
Identify the persona. Use the most specific role that benefits from this story. Avoid "user" alone.
-
State the want. Describe what the persona wants to do, not how the system implements it. Focus on the outcome, not the feature.
-
State the benefit. Explain why this matters to the persona or the business. If the user did not provide one, infer it from context and flag it for confirmation.
-
Write the story card using the Connextra template.
-
Check INVEST. Flag any criterion the story fails and suggest a fix:
- Too large β split into smaller stories.
- Too vague to estimate β add a constraint or scope note.
- Not independently deliverable β identify the dependency.
-
Write acceptance criteria using Given/When/Then (Gherkin) or a plain bulleted list if Gherkin is too heavyweight:
- Each criterion must be independently verifiable.
- Cover the happy path and at least one edge case.
- Avoid implementation details in criteria.
-
Add a Definition of Done reminder (standard checklist unless the user provides a custom one).
-
Produce the output using the format below.
Output format
## User Story: [short title]
**As a** [persona],
**I want to** [action],
**so that** [benefit].
---
### Acceptance Criteria
- [ ] Given [context], when [action], then [outcome].
- [ ] Given [context], when [action], then [outcome].
- [ ] [Edge case or negative path]
### Definition of Done
- [ ] Acceptance criteria all pass.
- [ ] Code reviewed and merged.
- [ ] Unit/integration tests written and passing.
- [ ] Documented (if applicable).
- [ ] Deployed to staging and smoke-tested.
### INVEST check
| Criterion | Status | Note |
| --- | --- | --- |
| Independent | Pass / Fail | ... |
| Negotiable | Pass / Fail | ... |
| Valuable | Pass / Fail | ... |
| Estimable | Pass / Fail | ... |
| Small | Pass / Fail | ... |
| Testable | Pass / Fail | ... |
### Notes
- [Dependencies, assumptions, or open questions]
Examples
Example 1 β Filter a product list
Input: "Write a story for filtering search results by price range."
Expected output:
## User Story: Filter search results by price range
**As a** shopper,
**I want to** filter product search results by a minimum and maximum price,
**so that** I only see products I can afford and avoid scrolling through irrelevant results.
### Acceptance Criteria
- [ ] Given I am on a search results page, when I set a minimum price of $10 and a maximum of $50 and apply the filter, then only products priced between $10 and $50 are shown.
- [ ] Given I apply a price filter, when no products match, then a "No results found" message is shown and the filter values are preserved.
- [ ] Given I apply a price filter, when I clear it, then all results are restored.
Example 2 β Vague input requiring a split
Input: "User can manage their account."
Expected output: Story flagged as failing Small (too broad) and Estimable (too vague). Skill proposes a split into: change email, change password, delete account β each as a separate story.
Notes
- A story card should fit on an index card. If the "want" clause needs multiple sentences, the story is likely too large β split it.
- Do not write stories in the passive voice ("It should be possible toβ¦") β keep the persona as the subject.
- Acceptance criteria are not a full test plan; they define the boundaries of done, not every test case.
- If the user does not provide a persona, ask for one before writing β guessing the wrong role produces the wrong story.