agentsclimarketplace

Ticket splitter

Skill cat2000/domain-knowledge-ops/.cursor/skills/ticket-splitter

Use when splitting one Jira story into INVEST-testable backlog items with clear scope and done_when. Triggers: @ticket-splitter, Jira key, pasted requirement, team=, brief, or after @requirement-risk on the same key. Anchors to domain briefs; does not write curated.From its SKILL.md

Install
npx -y skills add cat2000/domain-knowledge-ops --skill ticket-splitter

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 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.

SKILL.md

6.3 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

ticket-splitter (INVEST backlog slices)

First principles

Artifact: iteration-ready commitments — each item has a boundary (scope) and an observable completion face (done_when). Not a task list or “dev vs QA” role split.

Quality: done_when must say what done looks like and how it is seen (user behavior / system-observable state / contract). “Dev done”, “ready for QA” are not completion faces. Title = 3-second headline (one primary outcome). scope bullets = one idea each (P11/P12).

Wiki @generate-knowledge-from-wikiThis skill
Cost of errorPollutes library briefsPlanning meeting rewrites a few items
Who stops bad outputHuman confirms modulesScripts block fake testability / missing structure
LoopPrep → confirm → compose → gateDraft → gate → fix failures only → gate

Corollaries

  1. Do not wait for human confirm in the loop.
  2. Borrow wiki’s script-verified explicit form, not confirm/continue ritual.
  3. Scripts do not decide “how many slices”.
  4. Substance: ticket_system.md; presentation: references/presentation.md.

When to use

  • Planning: cut one Jira story into executable backlog items
  • Need observable scope / done_when
  • Optional domain briefs under curated/by-root/<root_id>/

When not

ScenarioUse
Risk only@requirement-risk
Refresh wiki / write briefs@generate-knowledge-from-wiki / @distill-domain-knowledge
Sprint bulk into briefs@add-knowledge-from-jira
Requirement unreadableState blockers; do not interrogate endlessly

How to invoke

  • @ticket-splitter DEMO-1 team=demo (offline demo)
  • @ticket-splitter PROJ-123
  • @ticket-splitter team=<key> PROJ-123
  • @ticket-splitter PROJ-123 + code paths (R2.5 anchors)
  • @ticket-splitter PROJ-123 brief
  • Or pasted requirement text

Offline DEMO-*: ../_shared/offline-demo.md.

ParamValuesDefault
teamkey/alias in team-roots.jsonattribution / Agile Team
briefshort-mode words in messagefull items

Preconditions & failures

  • Offline DEMO-*: no credentials
  • Real keys: .env Atlassian/Jira credentials + network; fetch_jira_attachments.py as needed
  • No credentials → paste text or DEMO-1
  • No brief → still emit; note missing anchors
  • Gate fail → fix and re-run; do not claim done without pass

Decision tree

Jira key?
├─ DEMO-* / offline → fixtures/offline-demo; skip network
├─ real key → attachments via MCP or fetch script
├─ Resolve team/root
├─ primary slug → S7 locale brief (`*-domain-brief.md` / `*-领域知识定稿.md` per locale); else S6 source-brief / work draft (noted)
├─ Jira says “dev only, test elsewhere”? → do not invent test rows; note in narrative
├─ brief mode? → Scope + split overview + correction note (still gated)
├─ Draft → .jira_attachments/<KEY>/split_draft.md when KEY present
└─ Gate: validate_ticket_split.py [--brief] → fix → deliver

Responsibility

LayerAgentScript
EvidenceWhich briefs / code anchorsFetch issue & attachments
GenerateSplit + presentationNo prose authorship
GateFix from reportvalidate_ticket_split.py
Semantic reviewOnly if user asks for principlesNone

Gate rules

  1. Full and brief must pass validator before delivery.
  2. Fake testability (done_when = “dev done / ready for QA” with no observable state) → fail.
  3. Need Scope + ## Split overview (or locale equivalent the validator accepts); full items need title/scope/done_when/deps/confidence.
  4. P11 title anti-patterns and P12 welded scope bullets → fail when detectable.
  5. On fail, fix only reported issues.
  6. Standards: ticket_system.md + presentation; scripts verify only.
  7. Never write curated/ or run distill check.

Presentation & domain library

Unlike @add-knowledge-from-jira, this skill outputs iteration backlog items, not library merges.

Agent checklist

  1. Load Jira + domain evidence; fetch attachments if needed.
  2. Split per ticket_system; constrain with briefs; write correction narrative when needed.
  3. Presentation + P11/P12 self-check; attach risk R-00N when same-session risk exists (P7).
  4. validate_ticket_split.py; fix until pass; deliver in chat.
  5. Do not default-wait for human confirm.

Done when

  • Validator exit 0 (or explicitly marked failed)
  • Scope + split overview present
  • Full items have observable done_when; no fake-testability ban words
  • Titles/scope pass P11/P12 intent
  • Risk R-00N linked when applicable
  • Not split primarily as “dev vs test” for the same outcome

Forbidden

  • Write curated/ / run distill check
  • Items that contradict explicit brief out-of-scope
  • Invent subsystem names absent from briefs
  • Skip gate or wait for confirm unless ungated draft requested
  • Copy wiki confirm→continue as the split main flow
  • Weld multi-concern scope into one bullet; empty verbs as fake coverage

Handoff to @ticket-test-design

After a usable split (or instead of split when AC are already clear), testers may @ticket-test-design <same KEY> to produce must/should/later cases proving AC / done_when.

Examples

@ticket-splitter DEMO-1 team=demo
→ offline → draft → validate → deliver

@requirement-risk PROJ-1 then @ticket-splitter PROJ-1
→ no confirm wait; link R-00N; note open MUST assumptions

What ships with it: 2 files

9.6 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.