claude-code-config: Skill for Claude Code

.claude/skills/board/SKILL.md

board is a skill for Claude Code from auerbachb/claude-code-config. It costs 151 tokens per session (13,165 once invoked), scanned A, original, MIT.

A command that displays the current table of running pipelines, including their phase, start time, expected end, and remaining work. A pipeline is an automated sequence of development or deployment tasks.

In plain words
What is it for?
It is for monitoring active pipelines in one repository or across all repositories in an orchestration system.
Why use it?
It gives a current view of ongoing work without relying on an earlier message or stale session context.

Skill for Claude Code

Written for Claude Code: argument-hint in frontmatter. Also seen: mentions subagents; positional $N argument.

This is auerbachb/claude-code-config's own configuration. It tells Claude Code how to work on claude-code-config 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 claude-code-config configures →

Reuse

Borrowing it

Nothing to install: this file belongs to auerbachb/claude-code-config. 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/auerbachb/claude-code-config/main/.claude/skills/board/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/auerbachb/claude-code-config

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 board

README.md
[![agentmods](https://agentmods.dev/badge/skills/auerbachb/claude-code-config/board/github.svg)](https://agentmods.dev/skills/auerbachb/claude-code-config/board)
Your own site
<a href="https://agentmods.dev/skills/auerbachb/claude-code-config/board"><img src="https://agentmods.dev/badge/skills/auerbachb/claude-code-config/board/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for board

Your own site · 80×15
<a href="https://agentmods.dev/skills/auerbachb/claude-code-config/board"><img src="https://agentmods.dev/badge/skills/auerbachb/claude-code-config/board.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 151 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 13,165 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. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
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.00151 $0.13165
Opus 5 $0.00076 $0.06582
Sonnet 5 $0.00030 $0.02633
Haiku 4.5 $0.00015 $0.01316

Measured today against content hash 35226f09d848, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

board 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 today.

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/board/SKILL.md · 853 lines

How it starts

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

Answer "where is everything right now?" with one keystroke instead of one sentence.

The "Running now" table (.claude/reference/time-estimates.md §"Running now Table") already renders at dispatch, on every heartbeat tick, and whenever the user asks a progress question in plain language. What it lacked was a name: a short command that summons the current board immediately, from any orchestration thread, without composing a question. /board is that name. Natural-language asks keep working exactly as before — this is an alias, not a replacement.

Invocable from any orchestration thread, including one resumed after a context compaction: every clock it prints — starts above all — is read back from durable session state rather than from the thread's memory of the round.

It boards the repo it is invoked for, resolved by the standard scoping every other surface uses (Step 1) — not whichever repo happened to dispatch. Run from another repo, it shows that repo's round; to span several, pass --all-repos. The resolution is deliberately not special-cased here: the freshness record in Step 5 has to land on the same key the armed floor watch polls, and a /board that resolved its repo differently from /subagent would write a record nothing reads.

Round membership is durable, and where it is missing /board says so rather than implying it. The dispatcher records the whole round — launched and queued alike — at dispatch (/subagent Step 7.0 → .repos["<key>"].round.members), so all three row classes reconstruct from state for any thread: Running rows from pipelines, Queued rows as members with no recorded started_at, and Completed this round rows as members whose PR merged (Step 3). No queue in memory, no timestamp inference, and a compaction costs nothing.

The residual case is a round with no such record — one dispatched before this field existed, or one whose write degraded. There the old behaviour stands and is labelled: a non-dispatching thread renders no queued rows, and bounds completed rows by timestamp, so it calls that delivered count approximate (Step 4's summary line). The board is then honest but partial, never silently short a row. The dispatching thread keeps one advantage in both cases — only it can confirm a pre-PR row from the live agent handle it is holding (Step 3).

/board is symlinked globally, but its helper scripts are not, so Step 0 resolves each one — never a bare .claude/scripts/… path (.claude/reference/portable-skill-resolution.md).

Scope boundary. /status is the PR-fleet dashboard — every open PR with its review state, whether or not this session dispatched it. /subagent is the dispatcher that owns this same table at launch and on heartbeats. /board neither dispatches nor reviews nor merges: it reads state and prints one table. Its only write is the shared table-render timestamp in Step 5, which is not a change to any pipeline — it is how the hourly freshness floor learns the user has just seen a current board (time-estimates.md §"Table freshness — the hourly floor").


Step 0: Resolve shared tooling

resolve_script() {
  local name="$1" candidate
  for candidate in \
    "$HOME/.claude/skills-worktree/.claude/scripts/$name" \
    "$HOME/.claude/scripts/$name" \
    ".claude/scripts/$name"; do
    if [[ -x "$candidate" ]]; then echo "$candidate"; return 0; fi
  done
  return 1
}
SESSION_STATE_SH=$(resolve_script session-state.sh || true)
ESTIMATE_RESOLVE_SH=$(resolve_script estimate-resolve.sh || true)
OVERRUN_CHECK_SH=$(resolve_script overrun-check.sh || true)
TABLE_FRESHNESS_SH=$(resolve_script table-freshness.sh || true)

Read time-estimates.md through the matching .claude/reference/ candidate order.

When something does not resolve, say so in one line; never skip the contract silently.

  • SESSION_STATE_SH empty → required. Print ERROR: session-state.sh not found (checked all three paths) — /board cannot read round state and stop. Every row on this board comes from that file; there is no degraded board without it, and inventing rows from the current clock is the one failure the recorded starts exist to prevent.
  • ESTIMATE_RESOLVE_SH empty → optional. Print DEGRADED: estimate-resolve.sh not found (checked all three paths) — Est column renders as unestimated and continue.
  • OVERRUN_CHECK_SH empty → optional. Print DEGRADED: overrun-check.sh not found (checked all three paths) — clock columns render as — and continue. Still print the table: it carries the round's shape and run order even with three empty columns, and the line above already said why they are empty.
  • TABLE_FRESHNESS_SH empty → optional. Print DEGRADED: table-freshness.sh not found (checked all three paths) — this render is not recorded against the hourly table-freshness floor and continue. The board is still correct; only the clock in Step 5 is lost.

Read the full file on GitHub · 853 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. today Changed · +117 lines · +6 tokens per session 35226f09d848
  2. 6d ago Changed · +1 lines 307e7b4ac482
  3. 7d ago First seen · 735 lines · 145 tokens per session scan A 0fbb41d659ef

Subscribe to this mod's changes

board is a skill published in the GitHub repository auerbachb/claude-code-config (5 stars, last pushed today), licensed MIT. It adds 151 tokens to every session and 13,165 once invoked, about $0.0008 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-09-05.