ticket-template.md
75 lines · skills/bmad-agent-po/assets/ticket-template.md at bd70c64
Most marks come from matching words in the file, so treat them as pointers.
<!-- At create a container gets all but Requirements and Constraints, which SPEC writes from an input. An epic written at slicing gets Description, Outcome, Boundaries, Done when as far as known, and References to the parent; Requirements and Constraints come when it is refined. A pulled or reviewed story: Description, Verify: line, References, local Notes; refining adds numbered criteria and Boundaries. Done and dropped tickets stay as written. An initiative is the business outcome its epics serve, usually spanning quarters and more than one boundary; for a solo developer or small team a whole product is a fine initiative. -->
[Title]
Raw lines 1 to 22Description
[Container: a paragraph, what is true when done and why, pointing at the inputs or parent. Story: one sentence; with numbered criteria, 2–4 on how it advances the epic, not restating them.]
Raw lines 23 to 26Outcome
[Container: one sentence: for whom, what changes, the source's success signal named not restated. Story: cut.]
Raw lines 27 to 30Requirements
[Container: SPEC writes this from the ticket's .memlog.md; slicing never touches it. Initiative: R<n> (<source ids>): <checkable result>, ids prefixed with the source's References type when ambiguous (prd FR-2), its section when it has none. Epic: its owned parent lines, R<n> (parent R<m>): <the line>, deepened only as inputs require; split or added lines name a parent id or source section, all lines a source section when covers is empty. Story: only Verify: how it will be checked. No epic, refine = true, or on request: numbered criteria, each naming the epic ids it proves; a criterion states a rule, not an instance, with its failure path.]
- [Behavior name] (R<m>) Given [state before] When [the one action] Then [what is observable] And [another observation, if any]
Constraints
[SPEC writes this. Initiative: each design-bending non-negotiable, citing its source id or section. Epic: the parent's that bind it. Story: only ones beyond its epic's; behavior to keep goes under Boundaries.]
Raw lines 41 to 44Done when
[Container: three to six end checks from the source's measures and limits: an initiative's business outcomes, an epic's deliverables at its Requirements' altitude, production delivery among them. Story: cut.]
Raw lines 45 to 48Boundaries
[Container: its boundary and what it is not, from the source's non-goals. Initiative: plus a line per touched unit with no epic, and a one-sentence tracer path across epics. Epic: what belongs to siblings. Story: with numbered criteria, adjacent behavior an implementation could break, not files; else cut.]
- Touch point: [unit] — [what is used there]; owner: epic-[slug]
- Must not change: [behavior]
References
[type — location, section, location a path from {project-root} or a url. A line per companion SPEC writes or adopts, typed by content (glossary, design, architecture, prd). Initiative: section pointers into its sources and companions. Epic: the parent's Requirements, then the architecture spine section and design it adopts. Story: the parent, plus what the epic's lack.]
- parent — [path or url, section Requirements]
- [companion — a file beside this one, named for its content]
- [design — an adopted companion, such as DESIGN.md in the ux-<slug>/ run beside this file, or a url]
Notes
[Only what is unsettled here and not in the repo or source, one marked line each; cut if empty. SPEC writes Assumption: and Open question: from the memlog; slicing and refining, the rest.]
- Assumption: [an unconfirmed choice; once confirmed, a dated Decision]
- Open question: [container: what the source leaves open, and who waits; story: only its own, answered in its work]
- Unknown: [the gap and the entries waiting on it; gates an entry only once copied to its
unknownkey] - Parked: [an unplaced requirement id, why, with the user's knowledge]
- Decision: [the user's choice, dated; a declined suggestion too]
- Source conflict: [id or section — source vs code or another source]
- Waits on [epic] because: [reason, one per after entry]
- Dropped: [why, before status goes to dropped]