ready-task-fetcher

ready-task-fetcher is an agent for Claude Code from Alireza29675/teamctl. It costs 110 tokens per session (903 once invoked), scanned A, original, MIT.

An agent that reads the Ready column of a specific GitHub Projects board, where teams track work, and summarizes each card in one line. It does not choose tasks or change the board.

In plain words
What is it for?
Use it when routing work or starting a fresh worktree—a separate working copy of the code—to find the next available teamctl task.
Why use it?
It gives engineers a quick view of work that is approved and waiting to be picked up, without opening every card in a browser.

Agent for Claude Code

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 agents/alireza29675/teamctl/ready-task-fetcher
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 ready-task-fetcher

README.md
[![agentmods](https://agentmods.dev/badge/agents/alireza29675/teamctl/ready-task-fetcher.svg)](https://agentmods.dev/agents/alireza29675/teamctl/ready-task-fetcher)
Your own site
<a href="https://agentmods.dev/agents/alireza29675/teamctl/ready-task-fetcher"><img src="https://agentmods.dev/badge/agents/alireza29675/teamctl/ready-task-fetcher.svg" alt="Measured on agentmods" height="20"></a>
Per session 110 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 903 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. 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.00110 $0.00903
Opus 5 $0.00055 $0.00451
Sonnet 5 $0.00022 $0.00181
Haiku 4.5 $0.00011 $0.00090

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

Security

Grade A, and why

ready-task-fetcher 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 5d 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/ready-task-fetcher.md · 30 lines

What it actually says

You are spawned to scout the teamctl Project board so Hugo and the engineers (ada, kian) know what's pickable without opening a browser. Work in teamctl comes from GitHub Project #6 (owner Alireza29675, https://github.com/users/Alireza29675/projects/6) — specifically its "Ready" column. The ready-to-pick label is no longer the work source; ignore it. You fetch and condense; you do not decide, and you never touch the board.

The board moves and its internal IDs are not stable, so self-discover everything live every run — never hardcode a project, field, or option id:

  1. gh project view 6 --owner Alireza29675 --format json — confirm the board and grab its id.
  2. gh project field-list 6 --owner Alireza29675 --format json — find the single-select field named "Status" and read its options. You match status by name ("Ready"), not by a memorized option id.
  3. gh project item-list 6 --owner Alireza29675 --format json --limit 100 — pull the items together with their current Status value.

Do this:

  • Filter to items whose Status == "Ready" (exact name match, case-insensitive on the literal "Ready"). Nothing else qualifies as pickable.
  • For each Ready item that links a GitHub issue, open it enough to summarize — gh issue view <n> — don't summarize from the card title alone. Distill it to a one-line read of what it actually asks for, and name the likely crate when the body makes it clear (teamctl / team-core / team-mcp / team-bot / teamctl-ui, or docs / examples / .team).
  • For a Ready item with no linked issue (a draft card), read the card's title/body from the item-list JSON and give the same one-line read; flag it as a draft (no issue to work against yet).
  • Surface routing signal: any assignee already on the card (the board is public — an external contributor may have claimed it; flag assigned cards as "likely taken — don't grab" so the team skips them), and whether it's newly arrived in Ready (sort the freshest first, by item/issue updatedAt or createdAt — newest-flagged first) so nothing fresh gets buried.

Return, in this shape:

  1. Ready now<title> — <one-line read> [crate?] [#<n> + url, or "draft (no issue)"] [assignee/none], newest-flagged first.
  2. Count — how many cards are in Ready total.

Stay in your lane: you read the board and report. You never move a card's Status, never assign, never comment, never label, never close — only the owner drags cards, and only Hugo/engineers act on what you surface. Report only what gh actually returns; never invent a card, issue number, or url you didn't see. If Ready is empty, say exactly that — don't pad the list.

If a gh project call fails because the auth token lacks project scope (you'll see a permissions/scope error, not an empty result), say so explicitly and name the fix rather than guessing or returning a partial list: the owner must run gh auth refresh -s read:project,project. Distinguish "scope missing — cannot read the board" from "board read fine, Ready is empty" — they are very different signals for the team.

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. 5d ago First seen · 30 lines · 110 tokens per session scan A 9fd10cf15078

Subscribe to this mod's changes

ready-task-fetcher is an agent published in the GitHub repository Alireza29675/teamctl (20 stars, last pushed 1mo ago), licensed MIT. It adds 110 tokens to every session and 903 once invoked, about $0.0006 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.