Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/jonthebeef/deckhand/ticket-lifecyclenpx skills add jonthebeef/deckhand --skill ticket-lifecyclegit clone --depth 1 https://github.com/jonthebeef/deckhandWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jonthebeef/deckhand/ticket-lifecycle)<a href="https://agentmods.dev/skills/jonthebeef/deckhand/ticket-lifecycle"><img src="https://agentmods.dev/badge/skills/jonthebeef/deckhand/ticket-lifecycle.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00166 | $0.06513 |
| Opus 5 | $0.00083 | $0.03256 |
| Sonnet 5 | $0.00033 | $0.01303 |
| Haiku 4.5 | $0.00017 | $0.00651 |
Grade A, and why
ticket-lifecycle scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
> REMOTE=$(curl -fsS --max-time 3 https://raw.githubusercontent.com/jonthebeef/deckhand/main/skills/ticket-lifecycle/VERSION 2>/dev/null) How it starts
The opening of the file, as written. The whole thing — 335 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Ticket Lifecycle
Automated batch ticket processing for any GitHub-Projects-driven repo. Take a set of GitHub issues, implement fixes, run code review, address feedback, watch CI, merge when green, and move tickets across the Kanban board.
⛔ Invocation rule — this skill is MODULAR.
Ticket Lifecycle is for running a GitHub Projects board's tickets through their full lifecycle; reach for it when that is what the user wants, not for every passing mention of a bug or issue. The full Phase 0→7 sequence describes the ideal run: many tickets in parallel worktrees, fresh-context reviewers, the lot. But the value of the skill is the discipline of the phases, not the parallelism. Most sessions will use a subset:
- Solo / single ticket, sequential, no worktrees → still use this skill. Drop Phase 2's parallelism, run one Implement → Simplify → Review → Fix-loop → Merge cycle. Phase 0 (load learnings) and Phase 3.5 (capture learnings) still apply.
- Fixing review feedback on an existing PR → start at Phase 4. You already have implementation; just run the fix-and-review loop until clean, then Phase 6 (Merge) and Phase 7 (Cleanup).
- Already-merged ticket, board cleanup pending → jump to Phase 7.
- Can't dispatch subagents at all → run the phases yourself in the main thread. The review-isolation rule (Phase 3) becomes "open a fresh Claude Code session for the review" instead of "dispatch an isolated agent". The discipline still holds.
- Tiny one-line fix → Phases 1 (read), 2 (implement + test), 6 (merge), 7 (board move) are usually enough. Skip Simplify and Review only if the change is genuinely trivial and the user has signalled they don't want a fresh-eyes review.
Do not skip this skill because you can't run all of it. The wrong move is "I can't do Phase 2 in parallel worktrees, therefore I won't use Ticket Lifecycle at all" — that throws away Phases 0, 3, 3.5, 4, 5, 6, 7 along with it. Instead: announce which phases apply, which you're skipping, and why. Then run the applicable phases properly.
Phases are independently valuable. Phase 3 (isolated review) on its own catches bugs. Phase 4 (review loop) on its own raises PR quality. Phase 5 (sub-issue linking) on its own keeps the backlog navigable. Use what fits.
When the user wants the board-driven lifecycle, invoke and state which phases you're using.
⚠ First-invocation protocol (read this BEFORE running any phase).
deckhand only operates on a GitHub Projects board, so first establish which situation you're in by reading
references/board-config.md:
- Configured —
board-config.mdhas no<...>placeholders (<OWNER>,<REPO>,<PROJECT_NUMBER>,<PROJECT_ID>,<STATUS_FIELD_ID>,<EPICS_OPTION_ID>, etc.). Proceed with the workflow as normal — this is the everyday case, and "pick up #N" / "process prioritized" should just work.- Not configured, but a board is in play — placeholders remain, but the user is clearly doing GitHub Projects board work, or the repo's owner has a board (a quick
gh project list --owner <owner>returns one). Offer to wire deckhand up: run setup (below), then proceed. Ask first; don't force it.- No board in play — placeholders remain AND there is no GitHub Projects board to drive (not a GitHub repo, or
gh project listcomes back empty, and the user only said something generic). Step aside: briefly say deckhand runs off a GitHub Projects board and you don't see one here, offer to set one up if they'd like, and otherwise do nothing. Do NOT run board operations or push setup on someone who has no board.When a board is in play but not yet configured, set it up before any board operation. You — the assisting Claude — must run setup before any board operation.
Two options, in order of preference:
Run the bundled script:
bash <path-to-skill>/setup.sh. It's interactive — it will ask the user for owner, repo, and project number, auto-discover the rest viagh api graphql, and write the populated config to this skill'sreferences/board-config.md(and tomanaging-project-backlog/board-config.mdif it's installed alongside). When invoking from Claude Code, ask the user the three questions in chat, then call the script and pipe the answers in — or perform the equivalent GraphQL discovery yourself and writeboard-config.mddirectly.Do it inline: if the user can't run an interactive script, you can do the discovery yourself. Ask the user for owner / repo / project number, then run:
gh api graphql -f query='query{user(login:"<OWNER>"){projectV2(number:<NUM>){id title fields(first:50){nodes{... on ProjectV2SingleSelectField{id name options{id name}}}}}}}'(swap
userfororganizationif the owner is an org). Show the user the discovered column list, ask them to map each of the six workflow terms (Epics / Backlog / Prioritized / Doing / Review / Done) to one of their actual columns, then write the populatedreferences/board-config.mdyourself.Do not invent IDs. Do not skip setup and hope it works — every Phase that touches the board needs real IDs. Only proceed to the rest of the workflow once
board-config.mdhas no<...>placeholders left.The skill assumes the logical workflow columns Epics / Backlog / Prioritized / Doing / Review / Done. Your actual column names can be anything — setup maps your column names to these terms. The skill also assumes a
CLAUDE.mdat repo root with project standards and (optionally) a lessons doc.
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 335 lines · 166 tokens per session scan A 5c9a6a094efb
ticket-lifecycle is a skill published in the GitHub repository jonthebeef/deckhand (6 stars, last pushed 2mo ago), licensed MIT. It adds 166 tokens to every session and 6,513 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
project-switching
Project switching implementation in sidecar: project discovery, state management, UI flow, modal rendering, filtering, theme preview, and plugin reinitialization. Use when working on the project switcher feature, project management, worktree switching, or the project configuration system.
manager
Sync session work into GitHub issues, or query track status across repos. Write: find/update issue + W-label. Read: "что по ". Triggers: "создай issue", "синкни сессию", "manager". Not day/week plans (daily-tasks).
corp-doctor
Use when a Personal Corp operating loop needs setup, repair, a new department, or task routing: HQ files and agent rules, GitHub issue workflow, corp- owner map, department repositories, or deciding which repo an issue belongs to. Triggers: "corp doctor", "почини контур", "заведи отдел", "куда положить задачу"…
pm-prioritize
Use when ranking a list of requirements, features, or backlog items using RICE / ICE / MoSCoW / Kano. Built-in decision tree picks the right framework based on data availability and decision context. Output is a transparent matrix, 2×2 Impact/Effort quadrant, and a Sprint allocation proposal. User-invoked only — do…
pm-roadmap
Сводит статус итерации, оценивает прогресс milestones, фиксирует изменения приоритетов, отслеживает зависимости и выдаёт roadmap в формате Now/Next/Later с атрибуцией задержек по 5 причинам, health score и фреймворком обрезки scope при нехватке ресурсов. User-invoked only — do NOT auto-trigger. Triggers on…
retro
Use when the user asks for "ретро", "обзор недели", or "что было за неделю" and the department needs a fact-based closeout plus its next Area goal.