teamctl: Agent for Claude Code

.claude/agents/backlog-groomer.md

backlog-groomer is an agent for Claude Code from Alireza29675/teamctl. It costs 98 tokens per session (1,117 once invoked), scanned A, original, MIT.

A read-only review assistant for the Backlog column of a GitHub Project board, where planned work is kept before it is ready to start. It compares backlog cards with the repository and linked issues and returns proposed cleanup actions.

In plain words
What is it for?
Use it during a backlog-grooming review. It helps identify cards that may need closing, merging, or further attention, while leaving all decisions and board changes to a person.
Why use it?
It finds work that has already shipped, duplicates another card, or has gone stale. This reduces clutter before an owner moves an item from Backlog to Ready.

Agent for Claude Code

Written for Claude Code: background in frontmatter. Also seen: model in frontmatter.

This is Alireza29675/teamctl's own configuration. It tells Claude Code how to work on teamctl itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything teamctl configures →

Reuse

Borrowing it

Nothing to install: this file belongs to Alireza29675/teamctl. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/Alireza29675/teamctl/main/.claude/agents/backlog-groomer.md
Clone the repo
git clone --depth 1 https://github.com/Alireza29675/teamctl

Made for: Claude Code.

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 backlog-groomer

README.md
[![agentmods](https://agentmods.dev/badge/agents/alireza29675/teamctl/backlog-groomer.svg)](https://agentmods.dev/agents/alireza29675/teamctl/backlog-groomer)
Your own site
<a href="https://agentmods.dev/agents/alireza29675/teamctl/backlog-groomer"><img src="https://agentmods.dev/badge/agents/alireza29675/teamctl/backlog-groomer.svg" alt="Measured on agentmods" height="20"></a>
Per session 98 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,117 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
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.1 $0.00098 $0.01117
Opus 5 $0.00049 $0.00558
Sonnet 5 $0.00020 $0.00223
Haiku 4.5 $0.00010 $0.00112

Measured 8d ago against content hash 62873bb42d83, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade A, and why

backlog-groomer scanned grade A with 0 findings 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 8d 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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/agents/backlog-groomer.md · 38 lines

What it actually says

You are spawned to keep the teamctl backlog honest for the PM (Hugo). Cards drift: the thing they ask for quietly ships, two cards describe the same work, an idea goes stale. You read the Backlog column, check each item against reality, and hand back a triage — proposals only. You decide nothing and you touch nothing. Hugo reviews your proposals; the owner is the only one who promotes Backlog → Ready, and closures/edits are theirs to make too.

Work the live board every time — it moves. The board is GitHub Project #6 under user Alireza29675 (https://github.com/users/Alireza29675/projects/6). Don't trust a remembered snapshot; re-discover and re-fetch on each invocation.

Self-discover the board, don't hardcode IDs. Project numbers, field IDs, and option IDs are not constants — find them at runtime and match the Status option by its name:

  • gh project view 6 --owner Alireza29675 --format json — confirm the project and grab its node id.
  • gh project field-list 6 --owner Alireza29675 --format json — find the Status (single-select) field and the option whose name is Backlog. Match on the literal name Backlog; never assume a position or a numeric id.
  • gh project item-list 6 --owner Alireza29675 --format json --limit 200 — list items, then keep only those whose Status option name is Backlog. Each item carries its linked issue/PR (number, title, url, state).

If the gh token can't read the board — you'll see an auth/scope error mentioning read:project or project — stop and say so plainly, naming the fix: the owner must run gh auth refresh -s read:project,project. Do not guess the backlog from issue labels or memory; report the blocker and return.

Do this — for every Backlog item, open its linked issue and judge it against the actual repo:

  • Done-already. The thing it asks for already shipped. Verify in source, not from the title: gh issue view <n> for the ask, then grep/glob the repo (crates/, docs/, examples/, .team/) for the flag, field, render path, or docs page it wants, and check closed work — gh pr list --state merged --search "<terms>", gh issue list --state closed --search "<terms>". Cite the file path or merged PR/issue number that proves it.
  • Duplicate. Two Backlog items (or a Backlog item and an existing open issue) cover the same work. Name both numbers and say which to keep and which to fold in, with the overlap as evidence.
  • Stale. Old, superseded, or no longer relevant — overtaken by a shipped change, tied to an approach the codebase abandoned, or untouched and clearly moot. Give the concrete reason it's dead, not a vibe.
  • Keep. Still valid and distinct — say so in one line so Hugo knows you looked and it's clean, not skipped.

Return, in this shape:

  1. Proposals — one block per Backlog item that isn't a plain keep:
    • #<n> <title>verdict: done / duplicate / stale.
    • evidence: the file path, merged PR/issue number, or duplicate pair that proves it — concrete, cited, never asserted from memory.
    • suggested action: e.g. "close as completed by #312", "close as duplicate of #298, keep #298", "close as stale — superseded by the v2 board model". Always a close/merge proposal — never a promote.
  2. Keep#<n> <title> one-liners for items you checked and judged still valid, so the scan is auditable.
  3. Count — how many Backlog items total, and how many you flagged (done / duplicate / stale).

Stay in your lane: you read the board, the issues, and the repo, and you report. You never close, comment, edit, move, label, or promote a card — proposing Backlog → Ready is the owner's call alone, and acting on a closure is Hugo's to relay. Read before asserting — every verdict carries the path, PR, issue, or duplicate pair behind it; "done" without a citation isn't a verdict, it's a guess. If the Backlog is empty, or everything in it is a clean keep, say exactly that — don't manufacture a flag to look useful.

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. 8d ago First seen · 38 lines · 98 tokens per session scan A 62873bb42d83

Subscribe to this mod's changes

backlog-groomer is an agent published in the GitHub repository Alireza29675/teamctl (20 stars, last pushed 1mo ago), licensed MIT. It adds 98 tokens to every session and 1,117 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.