# Repocount

> Repocount

- Skill: `natejswenson/repocount` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add natejswenson/repocount`
- Raw SKILL.md: https://api.skillmd.com/api/skills/natejswenson/repocount/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: natejswenson (https://skillmd.com/u/natejswenson)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/natejswenson/repocount

---


# /repocount — Count what a repository owes you — open PRs, stale branches, unreleased commits — as one table

You are running the **repocount** skill.

**Announce at start:** "I'm using the repocount skill — Count what a repository owes you — open PRs, stale branches, unreleased commits — as one table."

> Commands below run from the directory containing this `SKILL.md` (`$SKILL_DIR`).
> Resolve it once. Pass `--repo <path>` to work against the user's repo.

## The one rule

**Never report a count you did not read from the repository itself — an estimate is a guess wearing a number.**

## What is code and what is judgment

The split is declared in `skill-invariants.json` and checked — a deterministic
step whose command does not exist fails `skillfactory verify`.

| Deterministic — the machine decides | Command |
|---|---|
| read the repo's counts | `node scripts/repocount.js count` |
| resolve the release convention | `node scripts/repocount.js detect` |

| Model judgment — nothing on disk answers it | Why |
|---|---|
| decide which of the counts actually matters today | urgency is context no file records |
| phrase the recommendation | the same numbers mean different things before and after a release |

## The flow

### 1. Detect — never ask what you can read

Run the detection command first and read its table. **Never ask about anything
in it.** A confirmation is not a question.

### 2. Ask at most two questions, one at a time

Opinionated, with a one-line reason. Zero questions is correct when the request
already answered them.

### 3. Do the work

- `repocount detect` — the repo's remote, default branch and release convention, as one table
- `repocount count` — open PRs, stale branches and unreleased commits, each with its age

### 4. Report

One table with a fixed column set, then one sentence, then stop.

## Commands

| Command | Returns |
|---|---|
| `repocount detect` | the repo's remote, default branch and release convention, as one table |
| `repocount count` | open PRs, stale branches and unreleased commits, each with its age |

## Rules that are not negotiable

- **Never report a count you did not read from the repository itself — an estimate is a guess wearing a number.**
- **Never claim a result you did not observe.** Say what you verified and what
  you did not.

<!-- press:runtime -->
In Claude Code, load `/press`; in Codex, load $press`; then follow the shared PRESS terminal/UI contract from `brand/agent-ui.md`. Do not copy or override that contract here.
<!-- press:runtime -->

## What's here

| Path | Is |
|---|---|
| `scripts/repocount.js` | the CLI: `detect`, `count` |
| `references/anatomy.md` | the fixed shape of a repocount report |

## Maintainer reference — not part of a user run

`skill-invariants.json` names what must not silently disappear, declares which
half of this skill is code, and lists the baseline eval set. The baseline is
pinned against a real run — see its `update_command` to refresh it.

