SuperAPI AI Directory

do-tickets

Agents & models

View repository

Updated 10-16 00:02

About this skill

do-tickets

A ticket is a unit of work in sesh. When one is bound to your thread it's assigned to you; its prompt is your instructions. Loop: find → read → report.

Statuses: triage (draft) → ready (final, unattached) → active (assigned to a thread) → done / dropped (terminal). An active ticket on your thread = your work; mark it done when finished.

# FIND — your thread's tickets (auto-detected via the pane marker / $SESH_THREAD_ID)
sesh ticket list --current                 # id  status  name  thread
sesh ticket list --current --json          # one JSON object per line

# READ — the instructions (raw, no trailing newline)
sesh ticket get --id <id> --field prompt   # --field: id|name|prompt|status|thread|created|closed|notes
sesh ticket get --id <id> --json           # whole record
REPORT — close AND record what you did, in one call (ALWAYS leave a note on close)

sesh ticket set-status --id --status done --note "what you did; closed by " sesh ticket set-status --id --status active --thread


**Always leave a note when you close a ticket.** A ticket has a free-text **`notes`**
field; when you mark a ticket `done` (or `dropped`), append a short note explaining what
you did and — if there was a commit — which commit closed it. **Write notes in markdown**
(headings, lists, fenced code, links) — they are rendered as markdown in the Obsidian
ticket-note panel where Lukas reads them during consolidation. `--note` on `set-status`
appends as part of the same call (each `--note` appends, blank-line separated). You can
also append/replace notes independently:

```bash
sesh ticket set --id <id> --append-note "investigated; root cause is X"   # append
sesh ticket set --id <id> --notes "<full text>"                          # REPLACE
sesh ticket get --id <id> --field notes                                  # read them back

--id takes the full ticket UUID (from ticket list). Commands auto-route to wherever the ticket lives, so acting on your own thread's tickets just works.

A prompt may reference files/images as @blob(<hex>) tokens. When the prompt is delivered to you (send-prompt) these are already expanded to real paths you can read. If you read the prompt raw with ticket get --field prompt, the tokens are NOT expanded — pipe through sesh blob expand to resolve them to paths:

sesh ticket get --id <id> --field prompt | sesh blob expand   # @blob(..) → real file paths

Other ops: ticket create --name <n> [--prompt <t>], ticket set --id <id> [--name|--prompt|--notes|--append-note], ticket send-prompt --id <id> (deliver to the bound thread: literal Pi RPC steering, guarded terminal paste for other headed agents), ticket delete --id <id>. (sesh ticket --help for the rest.)

Pi delivery preserves an unsent editor draft and does not interpret leading slash commands. Missing/broken RPC is a loud failure, never a terminal-paste fallback. Use sesh thread command deliberately for Pi commands such as /compact, not a ticket prompt. Submission acknowledgement is not completion of the agent's turn.