pm

A project-management helper for software repositories that coordinates coding work, tracks issues, and ranks unfinished tasks against a business goal. A repository is the project’s shared code and history, while an issue is a recorded task or problem.

In plain words
What is it for?
Use it to choose the next issues to work on, coordinate parallel coding threads, resume project-management work, and keep a standing work loop running.
Why use it?
It helps prevent coding threads from working on the wrong tasks or losing track of progress. It can start from the current GitHub state, continue from saved handoff information, or keep managing work during the day.

Skill for Claude CodeCodex

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/auerbachb/claude-code-config/pm
Any agent
npx skills add auerbachb/claude-code-config --skill pm
Clone the repo
git clone --depth 1 https://github.com/auerbachb/claude-code-config

Made for: Claude Code, Codex.

Per session 94 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 45,038 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.00094 $0.45038
Opus 5 $0.00047 $0.22519
Sonnet 5 $0.00019 $0.09008
Haiku 4.5 $0.00009 $0.04504

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

Security

Grade A, and why

pm 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 2d 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/skills/pm/SKILL.md · 1,765 lines

How it starts

The opening of the file, as written. The whole thing — 1,765 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Active PM orchestrator. Manages which issues are being worked on across coding threads, tracks progress, and suggests next work.

Two entry modes, plus one posture that wraps either:

  • Cold start (default): Scan GitHub state, suggest next 3-5 issues, enter orchestration loop.
  • Resume: Read in-flight state from session files and continue where the previous PM left off.
  • Day mode (/pm day), on top of either: after the entry mode finishes, stay running — the thread becomes the repo's standing worker and keeps looping between turns instead of stopping at the end of the turn. Step 2D owns it.

Parse $ARGUMENTS in this order — day tokens first (so they never fall through to the business goal), then the cleanup flag, then the mode:

  • Day mode + its flags (strip each token as you read it):

    • day (its own whitespace-delimited word) or --runDAY_MODE=true; otherwise false.
    • --tickDAY_TICK=true. This is internal: only the Monitor armed in 2D.2 passes it. It implies DAY_MODE=true.
    • --day-generation <token>TICK_GENERATION. Internal, always paired with --tick or --probe-wake.
    • --probe-wakeDAY_PROBE_WAKE=true. Internal: only the bounded probe Monitor armed in 2D.7 passes it, always with --day-generation. It implies DAY_MODE=true and routes straight to 2D.7's probe-fire handler — not to 2D.3's tick, which must not run while the board is parked.
    • --cadence NmDAY_CADENCE_MIN=N (default 5, range [1, 60]).
    • --max-pipeline-failures NMAX_PIPELINE_FAILURES=N (default 3, range [1, 10]).

    Validate both as unsigned integers with [[ "$v" =~ ^[0-9]+$ ]] before range-checking, and reject anything failing either test — naming the rejected input and falling back to the documented default. The pattern test is not belt-and-braces: both values are interpolated into 2D.2's --set JSON payload and into 2D.3's shell arithmetic, so 2.5 or abc does not merely produce a bad cadence, it writes a malformed day object into session state that every later read then fails on.

  • Cleanup escape hatch: if the remaining $ARGUMENTS contains the --no-clean flag or a bare fast token (its own whitespace-delimited word, e.g. /pm fast), set NO_CLEAN=true and strip that flag/token from the arguments before the checks below (so it is never read as a business goal); otherwise NO_CLEAN=false. NO_CLEAN=true suppresses the always-on Step 1C inline cleanup in both modes — see Step 1C.

  • Window flag: if the remaining $ARGUMENTS contains --window followed by a value, extract the complete value as WINDOW_STR and strip --window <value> from the arguments so it never falls through to the business goal. Empty WINDOW_STR means no window. Step 0b processes it. Multi-word values must be quoted (e.g. --window "3 hours", --window "until 5:00 PM") — an unquoted multi-word value will be split by the shell, leaving the first token as the value and the remaining words misread as part of the business goal.

  • Mode: if the remaining $ARGUMENTS contains "resume" or "handoff", enter Resume mode (Step 1A). Otherwise enter Cold Start mode (Step 1B). Any remaining text is the business goal — the outcome to rank the backlog against (see 1B.4). Hold it in BUSINESS_GOAL (empty when none), which is what 2D.2 persists so a day loop keeps ranking against it across ticks and context turnover. No goal is fine; ranking falls back to repo signals.

Day mode composes with everything above rather than replacing it: /pm day is a cold start that then keeps running, /pm day resume resumes and then keeps running, and /pm day increase scraping throughput carries that goal into every re-rank for the whole run.

A probe wake is not a tick either. When DAY_PROBE_WAKE=true, run Step 0, then go straight to 2D.7's probe-fire handler — skip 2D.3 entirely. A probe fire exists to re-read the runway while the board is parked; running a tick from it would dispatch work into the very wall the park was called to avoid.

Read the full file on GitHub · 1,765 lines

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. 2d ago First seen · 1,765 lines · 94 tokens per session scan A 71f8a3b9e8ed

Subscribe to this mod's changes

pm is a skill published in the GitHub repository auerbachb/claude-code-config (5 stars, last pushed 3d ago), licensed MIT. It adds 94 tokens to every session and 45,038 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-31.

Related

Other skills, from other repositories