ticket-tracker
Use when the request is about the *current state* of GitHub issues rather than creating new ones: "where are my tickets", "show the board", "what's in progress", "what's ready to pick up", "move issue N to in-review", "mark N done", "update the ticket status". Live triage board over GitHub issues via the gh CLI, moving each between backlog -> ready -> in-progress -> in-review -> done using status labels. This is the ticket-level board; ./ideas/roadmap.html is the feature-level one. To file new tickets, use /to-tickets, file-issue for a single ad-hoc one, or /sweep for a batch of small fixes.
- License 许可
- MIT
- 最近更新
- 2026-11-11
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- ticket-tracker
- description
- Use when the request is about the *current state* of GitHub issues rather than creating new ones: "where are my tickets", "show the board", "what's in progress", "what's ready to pick up", "move issue N to in-review", "mark N done", "update the ticket status". Live triage board over GitHub issues via the gh CLI, moving each between backlog -> ready -> in-progress -> in-review -> done using status labels. This is the ticket-level board; ./ideas/roadmap.html is the feature-level one. To file new tickets, use /to-tickets, file-issue for a single ad-hoc one, or /sweep for a batch of small fixes.
02 资源文件 1
- 参考文档evals/evals.json4.0 KB
03 SKILL.md 正文
Ticket Tracker
The live state-machine layer over GitHub issues. Where triage-issue/to-tickets create tickets,
this skill is the ongoing surface that reads and moves them. State lives on GitHub, not in a file,
so it is never stale.
Where this sits
PORTFOLIO — many features ideate or chat-to-approach
↓
./docs/approach.md → ./ideas/roadmap.html
↓ pick ONE card
FEATURE — one feature per run to-prd → to-plan → to-tickets → ticket-tracker
non-code work: to-prd → to-tickets
^^^^^^^^^^^^^^ you are here
Never send the user backwards. A missing upstream artifact is written inline or offered, never a reason to stop and run another skill first. The one hard gate is an approved plan.
./ideas/roadmap.html and this board are different altitudes, not rival copies. A roadmap card is a
feature — something to be built — and one card fans out into several tickets, which is what this
board tracks. Do not tell the user the roadmap is superseded, and do not render a feature-level
roadmap from issues; a board full of tickets is not a roadmap.
State machine
A ticket carries exactly one status:* label. States, in order:
status:backlog → status:ready → status:in-progress → status:in-review → status:done
- backlog — captured, not yet scoped to pick up. Open issues with no
status:*label are treated as backlog. - ready — scoped and grabbable now.
- in-progress — actively being worked.
- in-review — PR open / awaiting review.
- done — merged/closed. Closing the issue is the terminal action.
Forward moves are the norm; backward moves (e.g. review kicked back to in-progress) are allowed. Reject a move that skips more than one state unless the user is explicit — a jump usually means a missing label, not real progress.
Setup (once per repo)
Before relying on the labels, check they exist:
gh label list --search status: | grep -q status: || {
gh label create "status:backlog" -c "#cccccc" -f
gh label create "status:ready" -c "#0e8a16" -f
gh label create "status:in-progress" -c "#1d76db" -f
gh label create "status:in-review" -c "#fbca04" -f
gh label create "status:done" -c "#5319e7" -f
}
Show the board
Read live state and group by column. Never render from a cached file.
gh issue list --state open --limit 200 \
--json number,title,labels,assignees \
--jq 'sort_by(.number)'
Derive each ticket's state from its status:* label (none → backlog). Print one column per
state in order, each ticket as #<number> <title> [@assignee]. Put done/closed items last or
omit unless asked. Keep it to a scannable text board.
Move a ticket
Swap the label so exactly one status:* remains, then confirm:
gh issue edit <number> \
--remove-label "status:<from>" \
--add-label "status:<to>"
- If the current state is unknown, read the issue's labels first (
gh issue view <number> --json labels). - Moving to
done: also close the issue —gh issue close <number>. - Moving out of
done: reopen it —gh issue reopen <number>. - After editing, re-read and state the ticket's new position:
#<n> is now <state>.
Getting tickets onto the board
This skill tracks tickets; it does not investigate or file them. To add new work:
- Bugs / reported problems → defer to triage-issue (investigate + file), then the new issue lands in backlog.
- Planned work → point the user at
/to-tickets, then label the batch ready.
Do not duplicate those flows. When a ticket-tracker request implies creating an issue, hand off,
then apply the initial status:* label and show the board.
04 同仓库更多 Skills
vault-recall
Answer the user's conceptual or technical question using their Obsidian vault as well as general knowledge. Use when the user asks a question (not a task) whose topic appears in the vault MOC digest from session start. Not for task instructions, not mid-task, and not for writing to the vault (that is to-vault).
ingest
Ingest one external source (an article, course lesson, doc, PDF or URL) into the user's Obsidian vault: save the original to raw/, then build wiki/ pages per the vault's § Ingest. Use when the user types /ingest, or says "ingest this", "add this source to my wiki", "put this article/lesson in the vault as a wiki page". Works from any repo. Routing rule: someone else's words go to wiki/ (this skill); the user's own learnings and decisions go to notes/ (/to-vault).
to-tickets
Breaks a source into independently-grabbable GitHub tickets. For a code feature the source is the plan (`docs/plans/<feature>.md`, from /to-plan) and every new or changed symbol lands in exactly one ticket, its signatures copied into the ticket body; a non-code feature is cut from the PRD's slices. Cuts tickets for one feature per run. If a code feature has no approved plan, offers /to-plan instead of cutting from prose. In a repo that runs command-centre, also emits `[[task]]` blocks into its config; in a plain treepad repo, emits a Batch Manifest instead so the tickets materialise as stacked worktrees.
to-seams
Records an agreed-but-unlanded cross-repo interface as a seam: the file a consumer's agent gets pasted into its prompt as ground truth, plus the `[[seam]]` block command-centre reads for the retirement pointer. Use when two repos need to build against an interface neither has landed yet — "record a seam for X", "we agreed on this schema, seam it", "add a seam so Y can build against Z's new field". Halts for approval before writing either file.
to-roadmap
Prioritises settled features into a Now / Next / Later kanban board, rendered as a self-contained ./ideas/roadmap.html. Each card is a feature, not a ticket — one card later becomes several tickets via /to-prd -> /to-plan -> /to-tickets. Boards the features in ./docs/approach.md, or the "## Accepted ideas" in ./ideas/CONTEXT.md when there is no approach doc. The approach doc is settled truth: this assigns tiers and reasons about ordering, it never re-litigates what was decided.
to-prd
Turns one feature idea into a PRD built on journeys: a one-line problem, journeys (each ending in an observable state) and delivery slices that say what is usable after each. Interviews, explores the codebase, and saves to docs/prds/<feature>.md. Covers exactly one feature: given a multi-feature source, ask which one. Reads any approach doc or ideate report as priors so it doesn't re-ask what's settled, but needs none. Starts the per-feature spine (/to-prd -> /to-plan -> /to-tickets).