managing-project-backlog

managing-project-backlog is a skill for Claude Code, Codex from jonthebeef/deckhand. It costs 179 tokens per session (4,821 once invoked), scanned A, original, MIT.

A workflow for planning and maintaining a GitHub Projects v2 board, GitHub's newer project-tracking system, using epics, linked sub-issues, priorities, owners, and kanban columns.

In plain words
What is it for?
Use it to create epics, break work into sub-issues, prioritize and assign tickets, and move them from Backlog through Done.
Why use it?
It keeps each task connected to a larger product goal and makes the board's work states and ownership consistent.

Skill for Claude CodeCodex

Part of the deckhand plugin — 2 skills shipped together

Install

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.

agentmods
npx agentmods add skills/jonthebeef/deckhand/managing-project-backlog
Any agent
npx skills add jonthebeef/deckhand --skill managing-project-backlog
Clone the repo
git clone --depth 1 https://github.com/jonthebeef/deckhand

Made for: Claude Code, Codex.

Or install deckhand, the plugin that ships this one along with the rest of its 2 skills.

Wrote 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.

agentmods badge for managing-project-backlog

README.md
[![agentmods](https://agentmods.dev/badge/skills/jonthebeef/deckhand/managing-project-backlog.svg)](https://agentmods.dev/skills/jonthebeef/deckhand/managing-project-backlog)
Your own site
<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>
Per session 179 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,821 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 4d ago against content hash f4e314c0d15c, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

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)
skills/managing-project-backlog/SKILL.md · 420 lines

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.md next to this file:

  • Configuredboard-config.md has 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 list comes 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:

  1. 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 via gh api graphql, and write the populated config to both skills' board-config.md files. 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 write board-config.md directly.

  2. 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 user for organization if 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 populated board-config.md yourself.

Do not invent IDs. Do not skip setup and hope it works. Only proceed to the rest of the workflow once board-config.md has 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.md and its VERSION). 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-lifecycle already offered, skip.
  • To disable: the user drops an empty .no-update-check file in this folder, or just asks. See the README's "Staying up to date" section.

Read the full file on GitHub · 420 lines

Files

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.

Changes

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.

  1. 4d ago First seen · 420 lines · 179 tokens per session scan A f4e314c0d15c

Subscribe to this mod's changes

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.

Related

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.

marcus/sidecar · 57 tokens

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.

Peiiii/nextclaw · 45 tokens

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,并维护它们之间的升级关系。.

Peiiii/nextclaw · 116 tokens

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).

serejaris/personal-corp-os · 63 tokens

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", "почини контур", "заведи отдел", "куда положить задачу"…

serejaris/personal-corp-os · 102 tokens

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…

serejaris/personal-corp-os · 140 tokens