ticket — tm_ticket, rendered as a card
tm_ticket is read-only and derives every state from task.json itself, the same way tm_board
does. This skill calls it with the key the user gave and prints the Output Template below; it
makes no decisions.
Process
- Take the key as given:
E-xxxxxxxxfor the EPIC,E-xxxxxxxx/Pnfor one STORY.tm_ticket({key})resolves the 8-char EPIC prefix to its task itself — no separate lookup, unlikeboard. - Call
tm_ticket({key}). - Render by
kind(EPICorSTORY) per the Output Template below. Print only what the reply carries — it has no transition history orattacks[]yet; don't invent them. - If the human wants the long form, name
doc_pathrather than reading the md into context — render it first withtm_docs({task_id})if it doesn't exist on disk yet.
Output Template
EPIC (kind: "EPIC"):
E-a1b2c3d4 결제 취소 기능 state: IN_PROGRESS phase: impl daemon: pid 4121 alive
doc: .teams_output/team/E-a1b2c3d4/INDEX.md
STORY (kind: "STORY"):
E-a1b2c3d4/P2 결제 취소 API state: IN_REVIEW
tasks: 2/5
worktree: /proj/.worktrees/P2 @ team/E-a1b2c3d4/P2
last verdict: accept 94 (or: rejected — <reason>; gaps: <gap, gap>; or —)
reporter: shape (repair = QA-raised defect story)
doc: .teams_output/team/E-a1b2c3d4/40-stories/P2.md
daemon prints none when the EPIC has none yet. worktree prints — before any dispatch has
run. tasks is — when no dispatch has started a child run to measure.
What Claude Does
Calls tm_ticket({key}) with the key as given and renders the card above — nothing more.
What You Do
Give a ticket key, EPIC or STORY. Open doc_path yourself for the long form; the skill won't
paste it into the conversation.
Related Skills
board— every EPIC, or one EPIC's STORY kanbanorchestrate— drives the run this ticket reports on