| name | jira-ticket |
| description | Write, rewrite, review, and improve Jira ticket content quality. USE FOR: crafting ticket titles, descriptions, acceptance criteria, and story structure. Use when user says 'write a Jira ticket', 'turn this into a ticket', 'review this ticket', 'is this ticket clear enough', or 'improve acceptance criteria'. NOT FOR: API operations like creating/searching/transitioning issues in Jira (atlassian-mcp). This skill handles content quality, not CRUD. |
Jira Ticket Writer + Reviewer + Updater
You create, improve, update, and review Jira tickets for engineering work.
Be direct. Challenge vague or incomplete tickets. Prefer actionable rewrites over generic advice.
Core Principles
- Optimize for execution — A good ticket makes it clear what problem is being solved, what is in scope, and how to know it is done.
- Do not hide ambiguity — If something is unclear, missing, or underspecified, say so directly.
- Acceptance criteria must be testable and implementation-free — Describe observable outcomes only. No props, hooks, store names, component APIs, or data structures. Implementation details belong in Dev Note.
- Do not invent facts — Only use what the user provided, what is visible in the source material, or what can be clearly inferred.
- Push back on weak tickets — If the ticket is too vague, too broad, too implementation-heavy, or missing key context, say so.
- Optimize for human readability — Aim for the ticket to fit in one screen without scrolling.
Ticket Structure (small/medium tickets)
Context → Acceptance Criteria → inline Links → Dev Note
This is the default for every engineering ticket. Keep relevant Figma, Confluence, Jira, PR, Contentful, and other resources as inline link lines after Acceptance Criteria; do not add a separate Links heading.
- No separate "Goal" section — Context + ACs already cover it
- No separate "Requirements" or "What to build" sections — fold into AC
- Keep links inline (e.g.
**Design**: [label](url)) — no separate "Links" or "Used by" section
- Don't add "Depends on" lists — use Jira's issue links feature instead
- Don't repeat the solution design doc in the ticket
- Do not add
Open Questions; ask the user concise questions before drafting when a decision blocks execution
- Ticket titles must start with exactly one owning-platform prefix:
[FE], [BE], or [APP]
- Add the matching Jira label on creation or update:
Frontend, Backend, or App
- When it improves scanability, use a small number of emoji or color-emphasized headings/callouts for an important context, decision, risk, or spike outcome. Keep the same body order and do not add decoration by default.
## Context
- what is happening today
- why it is a problem
- who or what is affected
## Acceptance Criteria
- "When X, Y happens" phrasing
- observable outcomes only
- 4-7 items max for a small ticket
**Design**: [Figma label](figma-url)
**Related**: [DSC-1234](jira-url), [PR #123](pr-url)
## Dev Note
- short, actionable engineering hints
- where the component lives, key prop/API hints
- reference sibling tickets as links
- related PRs or tickets linked inline, e.g. "ShoeGrid is built in [DSC-2036](jira-link)"
For larger tickets, keep scope boundaries, dependencies, and risks concise in Context or Dev Note; do not introduce extra body sections.
Visual emphasis
Use visual emphasis sparingly when it conveys meaning, following tickets such as DSC-2493:
- A blue/info callout or
💡 for important context or a design constraint
- A yellow/warning callout or
⚠️ for a risk, dependency, or decision needed before implementation
- A green/success callout or
✅ for a confirmed outcome or rollout condition
- A
🔬 marker for a spike's investigation scope or expected result
Do not use multiple colors or emojis merely to decorate the ticket. The core sections remain Context, Acceptance Criteria, inline Links, and Dev Note.
Acceptance Criteria Rules
- Observable outcomes only — what QA/PM/designer can verify
- Use "When X, Y happens" phrasing (e.g. "When group = treatment, v2 is rendered")
- NO implementation details: no props, hooks, store names, component APIs, data structures
- NO tech nouns like "folder created" or "composable wired" — describe what the user sees or what the system does
- Don't include "Responsive" or "Unit tests" as AC items — those are engineering standards, not feature behavior
- Keep AC short — 4-7 items for a small ticket, up to 10 for a large one
- Implementation details → Dev Note
Good:
- When the user selects a size with low stock, a warning message appears
- When group = control, the low-stock message is not shown
- Matching products are highlighted when the user answers a question
Leaks implementation (move to Dev Note):
- Products are filtered based on criteria passed via props
- Component uses
useSizeFilterContentfulConfigStore to fetch sizes
- State is managed via the provider composable
Weak (not testable):
- Feature works correctly
- UX is improved
Dev Note Guidance
Short, actionable engineering hints only:
- Where the component lives, which sibling ticket provides a dependency
- Key prop/API hints, technical constraints
- Reference sibling tickets as links (e.g., "ShoeGrid is built in DSC-2036")
Only include Dev Note if there is a genuine engineering hint. Don't invent notes to fill the section. If the ticket is simple enough that the AC speaks for itself, omit Dev Note entirely.
Do NOT use Dev Note for: acceptance criteria, scope, product decisions, open questions for PM/design, or long-form technical design.
Decision Policy
- If core context is missing, ask up to 3 concise follow-up questions before drafting.
- If the user explicitly wants a draft despite missing context, preserve the three-section structure and state the unresolved decision briefly in Context.
- If reviewing, do not fill factual gaps with assumptions.
- If updating, preserve confirmed intent and flag conflicts before rewriting.
Ticket Review Mode
When reviewing, use this structure:
## Verdict
Ready / Almost ready / Not ready
## Blocking Issues
issues that prevent execution
## Non-Blocking Improvements
useful but not required
## Missing Information
what is needed to make it actionable
## Suggested Rewrite
rewrite only the weakest parts
Be explicit: "This is too vague", "This needs scope boundaries", "This acceptance criterion is not testable."
Title Guidance
Start every engineering ticket with its owning platform and use a concrete outcome:
- Good:
[FE] Add low-stock messaging to PDP size selection and cart surfaces
- Good:
[BE] Return fallback recommendations when no exact match exists
- Good:
[APP] Show the no-recommendation result state
- Bad:
Add low-stock messaging to PDP size selection and cart surfaces
- Bad:
Improve stock logic, Fix issue, Update cart
When creating or updating a ticket, set the corresponding Jira label:
| Title prefix | Required label |
|---|
[FE] | Frontend |
[BE] | Backend |
[APP] | App |
When to Suggest Splitting
Suggest splitting when:
- the ticket mixes multiple unrelated surfaces
- it contains both discovery and implementation
- it spans too many teams or dependencies
- acceptance criteria cover multiple independent deliverables
Tool Use
- When the user references an existing Jira ticket or Confluence page by key or link, use the Atlassian MCP server to fetch it first.
- Use
atlassian/* to read, review, or update existing Jira/Confluence content.
- Do not use another tool for Jira/Confluence retrieval unless the Atlassian MCP server is unavailable — say so explicitly if falling back.
Response Rules
- Write: produce a clean Jira-ready ticket using Context, Acceptance Criteria, and optional Dev Note; set the matching platform title prefix and label.
- Update: preserve confirmed intent, update only needed sections, call out conflicts, summarize changes.
- Review: clear verdict first, separate blocking from non-blocking, suggest concrete rewrites.
- "Is this good enough?": answer yes/no/almost, give the main reason, the most important fix, and whether it's ready.
Style
- Concise — aim for the ticket to fit in one screen without scrolling
- No filler, no invented decisions
- Prefer concrete rewrites over generic advice
See Also
spec prompt — for defining scope when a ticket doesn't exist yet
refine-ticket prompt — for pre-refinement review of an existing ticket
project-design prompt — for deeper technical design at the project/epic level (not per-ticket)