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/managing-project-backlognpx skills add jonthebeef/deckhand --skill managing-project-backloggit 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/managing-project-backlog)<a href="https://agentmods.dev/skills/jonthebeef/deckhand/managing-project-backlog"><img src="https://agentmods.dev/badge/skills/jonthebeef/deckhand/managing-project-backlog.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.00179 | $0.04821 |
| Opus 5 | $0.00089 | $0.02410 |
| Sonnet 5 | $0.00036 | $0.00964 |
| Haiku 4.5 | $0.00018 | $0.00482 |
Grade A, and why
managing-project-backlog 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/managing-project-backlog/VERSION 2>/dev/null) How it starts
The opening of the file, as written. The whole thing — 420 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Managing the Project Backlog
Automate the GitHub Projects kanban workflow — from epic creation through to merged. Every piece of work traces back to an epic; every epic connects to the product roadmap.
⛔ Invocation rule — read first. This skill governs the deckhand GitHub Projects board workflow. Fire eagerly when the user is doing board work — "the board", "the backlog", "pick up #N", "work on #N", "what's next", epics, sub-issues, prioritising, a pasted GitHub Projects URL. Then apply the board-awareness gate in the first-invocation protocol below: if a board is in play (configured, or present on the repo) act on it; if there is genuinely no board, step aside rather than barging in. Once you're doing board operations, follow this skill's conventions consistently for the rest of the session.
If you find yourself about to run
gh issue ...,gh project ..., or pick up an issue without having read this skill in the current session — STOP and load it first. The board IDs, column mappings, and the "read epic + siblings before starting" protocol below are not optional context.
⚠ First-invocation protocol (read this BEFORE running any board operation).
deckhand only operates on a GitHub Projects board, so first establish which situation you're in by reading
board-config.mdnext to this file:
- Configured —
board-config.mdhas no<...>placeholders (<OWNER>,<REPO>,<PROJECT_NUMBER>,<PROJECT_ID>,<STATUS_FIELD_ID>,<EPICS_OPTION_ID>, etc.). Proceed as normal — this is the everyday case, and "pick up #N" / "what's next" 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-managing-project-backlog>/../ticket-lifecycle/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 both skills'board-config.mdfiles. When invoking from Claude Code, ask the user the three questions in chat, then call the script — 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 populatedboard-config.mdyourself.Do not invent IDs. Do not skip setup and hope it works. Only proceed to the rest of the workflow once
board-config.mdhas no<...>placeholders left. The "Project Discovery" section below shows how to look them up manually if needed.
🔄 Staying up to date (quiet by default).
On your first invocation in a session, run a throttled version check from the folder this skill is installed in (the one holding this
SKILL.mdand itsVERSION). Suggested one-liner — adapt the path; on Codex/Cursor it's wherever this skill actually lives:DIR="<this skill's folder>" [ -f "$DIR/.no-update-check" ] && exit 0 # user opted out [ -f "$DIR/.last-update-check" ] && [ -z "$(find "$DIR/.last-update-check" -mtime +0 2>/dev/null)" ] && exit 0 # checked < 24h ago touch "$DIR/.last-update-check" LOCAL=$(cat "$DIR/VERSION" 2>/dev/null) REMOTE=$(curl -fsS --max-time 3 https://raw.githubusercontent.com/jonthebeef/deckhand/main/skills/managing-project-backlog/VERSION 2>/dev/null) [ -n "$REMOTE" ] && [ "$REMOTE" != "$LOCAL" ] && echo "deckhand update available: $LOCAL -> $REMOTE"
- If a newer version is reported: tell the user once, briefly ("deckhand $REMOTE is available, you have $LOCAL — want me to update it?"), then get on with their actual request. Never block on it.
- If current, offline, or the check errors: say nothing. Silence is the default.
- Don't offer twice in one session — if
ticket-lifecyclealready offered, skip.- To disable: the user drops an empty
.no-update-checkfile in this folder, or just asks. See the README's "Staying up to date" section.
What ships with it
2 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 · 420 lines · 179 tokens per session scan A f4e314c0d15c
managing-project-backlog is a skill published in the GitHub repository jonthebeef/deckhand (6 stars, last pushed 2mo ago), licensed MIT. It adds 179 tokens to every session and 4,821 once invoked, about $0.0009 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.
linear-cli
Use when the user wants to list, view, start, create, or update Linear issues from the terminal via schpet/linear-cli, including setup, auth, repo config, and safe read/write boundaries.
project-knowledge-governance
当用户要求沉淀、整理、归档、维护或分流项目想法、产品思考、讨论记录、PRD、设计、计划、路线图、TODO、docs/thoughts、docs/designs、docs/plans 或 docs/logs 迭代记录时使用。用于判断内容应进入 docs/TODO.md、docs/thoughts、docs/designs、docs/plans、docs/prd、docs/ROADMAP.md 还是 docs/logs,并维护它们之间的升级关系。.
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…