loop-economist
Reviews what an engineering loop's actual runs cost and produced — reading Claude Code session transcripts and git history rather than the loop's documents.
Skill by Busy-Office
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/busy-office-loop-economist
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: finance, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/loop-economist
What's inside
- Skill name
loop-economist- Description
- Reviews what an engineering loop's actual runs cost and produced — reading Claude Code session transcripts and git history rather than the loop's documents. Reports tokens per shipped change, cache and subagent spend, rework and thrash, how often a human had to intervene, and whether the right agent, model or persona did each kind of work; scores six dimensions (effectiveness, efficiency, budget, plan quality, agent fit, convergence) into a verdict, and prescribes what closes each finding — a verifier seam, routing the searching out, a bounded subloop or a gauntlet for items one run cannot converge on, or handing the queue to requeue when the input rather than the actor is the problem. Use when someone asks how efficient or effective their loop or agents are, what the loop is costing in tokens or budget, whether it is worth running, why it keeps redoing the same work, whether it is using the right model or agents, how to orchestrate multiple agents or personas across the work, or wants their multi-agent build loop analysed, scored or made cheaper.
- License
- MIT
- Instructions
- 236 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- description: longer than 1024 characters
Files (14)
- SKILL.md
- evals.json · evals/
- BAR.md · evals/gauntlet/
- ROUNDS.md · evals/gauntlet/
- BACKLOG.md · fixtures/thrash-run/docs/
- expect.json · fixtures/thrash-run/
- s1.jsonl · fixtures/thrash-run/transcripts/
- agent-fit.md · references/
- metrics.md · references/
- patterns.md · references/
- verifier.md · references/personas/
- report-template.md · references/
- scorecard.md · references/
- runs.mjs · scripts/
SKILL.md (first lines)
# Loop Economist
`loop-doctor` reads a loop's documents and asks whether the design is
sound. Loop-economist reads what the loop **actually did** — every session
transcript and every commit in a window — and asks a different question:
*what did a unit of shipped change cost, and was it produced by the right
crew?*
A loop can score well on its documents and still spend forty thousand
tokens a tick re-reading a codebase to change one line, or ship and then
un-ship the same file four times. Only the runs show that.
```mermaid
flowchart LR
A["runs.mjs<br/>transcripts + git · read-only"] --> B["the economics<br/>tokens per commit"]
B --> C["findings<br/>Leak · Misroute · No-converge · Ill-formed"]
C --> D["score<br/>6 × 0–5 → verdict"]
D --> E["prescribe<br/>verifier · routing · subloop · gauntlet"]
E --> F{"binding constraint?"}
F -- the actor --> G["review<br/>economics · score · findings · do-next"]
F -- the input --> H["hand off to<br/>requeue"]
```
## The guard-rail: no overhead on the project
- **Write nothing into the target repo.** The review goes to the
scratchpad, or to a published page if that is how they read things.
- **Run nothing of the project's.** No install, build or test run. Only
`git log` and the collector.
- **Never quote a transcript.** Sessions contain the user's own words and
their code. Cite a session by id and a metric, never by content.
- **Read bounded.** `derived` and `warnings` fully; `sessions` and
`git.commits` by id only, when a finding needs that one entry's
evidence. Never read the full `runs.json` — it scales with the window,
`derived` doesn't.
- **One context, one pass.** No subagents by default — reviewing a
fan-out problem by fanning out is its own joke.
- **Leave a receipt** in the footer: transcripts read, window, commits,
repo untouched.
## Workflow
### 1. Collect
```bash
node <skill-dir>/scripts/runs.mjs <repo-path> --since 14d > <scratchpad>/runs.json
jq '{derived, warnings, records, git: {commits: (.git.commits | length), rework: .git.rework}}' <scratchpad>/runs.json
```
`derived` already carries every rate this review reports — tokens per
commit, cache hit rate, subagent share, rework rate, the session-id lists
for thrash and zero-commit — and costs a few hundred tokens regardless of
window. **Read that slice fully; do not read the full `runs.json` top to
bottom.** The `sessions` array and `git.commits` are per-run raw detail
that scales with the window (every session's tool/subagent breakdown,
every commit's numstat) and the review never quotes them — findings cite
a session id or a sha, not their contents. Treat the full file as an
index: pull one entry only when a finding needs to cite that specific
session or commit —
```bash
jq --arg id "<session-id>" '.sessions[] | select(.id == $id)' <scratchpad>/runs.json
```
— never `Read` the whole `runs.json` into context. Sessions (tokens by
kind, models, tools, subagents by type, human turns, interrupts, tool
errors, repeated identical calls, files edited), git (commits, churn,
rework commits), and the loop's records (open/done/vague items) are the
raw material `derived` is computed from; the numbers are the evidence,
not the raw rows.
Pick the window from the loop's cadence: at least **20 ticks or 14 days**,
whichever is longer. Say the window in the first line of the review; every
rate is meaningless without it.
**Write the review from one collection, and quote that collection's numbers.**
A rolling window moves: a review drafted from Monday's run and finished on
Tuesday will state a commit count that no longer exists, and every derived rate
inherits it. Re-run the collector immediately before writing, and verify with
`node evals/bar-check.mjs loop-economist <artifact> --collector <run.json>`,
which compares the headline figures against the collection.
No transcripts (a loop that runs elsewhere, or a fresh machine) → the
budget half is `NOT MEASURED`. Score effectiveness, plan quality and
convergence from git and the records, and say plainly which four numbers
you could not see. Do not infer tokens from diff sizes.
### 2. Read the economics
`references/metrics.md` — each metric with its band and the cause a
reading out of band implies. Establish **tokens per commit** first; it is
the number the reader will remember. Then the three that explain it:
cache hit rate, subagent share, tool calls per edit.
### 3. Find the findings
One row per finding, classified:
- **Leak** — spend that produced no kept change (a zero-commit session, a
fan-out whose output was re-derived, state re-read every tick).
- **Misroute** — the wrong actor did the work: `agent-fit.md`.
- **No-converge** — thrash, rework, a file the loop cannot leave alone.
- **Ill-formed** — the item had no acceptance test; no actor could have
converged.
Each row cites a session id, a file or a metric. "Could be more efficient"
is not a row.
### 4. Score
`references/scorecard.md`. Six dimensions 0–5, one-line reason each citing
a number, mean → verdict (`compounding · productive · expensive ·
spinning`), then the caps: nothing shipped caps at *spinning*; more than
three human turns a run caps at *productive*; rework over 0.4 caps at
*expensive*.
**Show the mean and name every cap, including the ones that do not bind.** Add
the numbers up and check the division — a mean that disagrees with its own six
scores is the easiest thing in the review to falsify. Then one line: which capsFrom Busy-Office/ai-skills, MIT.
More from Busy-Office/ai-skills
- 0.570score
jev
Busy-Office
Get a fast, typed second opinion (yes/no, choice, or score with probabilities) from jev-ai.pro before acting.
SkillAFreshness: AClaude Code +9 - 0.566score
loop-doctor
Busy-Office
Reviews — and, when asked, sets up — a project's autonomous, scheduled loop — the routine that wakes on a cadence (cron, launchd, a /loop interval, a cloud…
SkillAFreshness: AClaude Code +9 - 0.566score
graph-engineer
Busy-Office
Turns a linear agent, prompt chain, or orchestration script into an engineered graph — nodes with contracts, edges that carry data, fan-out/fan-in only where…
SkillAFreshness: AClaude Code +9 - 0.529score
app-icon-generator
Busy-Office
Generate a complete app icon set — iOS AppIcon.appiconset, Android launcher + adaptive icons, and web favicons/PWA manifest icons — from a single square…
SkillBFreshness: BClaude Code +9 - 0.529score
progress-dashboard
Busy-Office
Publishes a one-page stakeholder progress dashboard for any git project — where it stands, what's waiting on people, whether it's stalled — from whatever…
SkillBFreshness: BClaude Code +9 - 0.529score
requeue
Busy-Office
Reviews and reorders the queue an engineering loop or team works from — backlog, roadmap, todo, milestones — so the next work picked up is the right work.
SkillBFreshness: BClaude Code +9 - 0.525score
solo-flow
Busy-Office
Prescribes and audits a trunk-based git workflow for a repository with exactly one writer — a single autonomous agent or loop, with no other humans committing.
SkillBFreshness: BClaude Code +9 - 0.283score
sharpen-intent
Busy-Office
No description from the publisher yet.
SkillBFreshness: BClaude Code +9 - 0.283score
loop-atlas
Busy-Office
No description from the publisher yet.
SkillBFreshness: BClaude Code +9 - 0.283score
wake-weight
Busy-Office
No description from the publisher yet.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 20, 2026 (1 month ago)
- Last release
- Sep 8, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Busy-Office/ai-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Busy-Office
- 0.570score
jev
Busy-Office
Get a fast, typed second opinion (yes/no, choice, or score with probabilities) from jev-ai.pro before acting.
SkillAFreshness: AClaude Code +9 - 0.566score
graph-engineer
Busy-Office
Turns a linear agent, prompt chain, or orchestration script into an engineered graph — nodes with contracts, edges that carry data, fan-out/fan-in only where…
SkillAFreshness: AClaude Code +9 - 0.566score
loop-doctor
Busy-Office
Reviews — and, when asked, sets up — a project's autonomous, scheduled loop — the routine that wakes on a cadence (cron, launchd, a /loop interval, a cloud…
SkillAFreshness: AClaude Code +9 - 0.529score
app-icon-generator
Busy-Office
Generate a complete app icon set — iOS AppIcon.appiconset, Android launcher + adaptive icons, and web favicons/PWA manifest icons — from a single square…
SkillBFreshness: BClaude Code +9 - 0.529score
progress-dashboard
Busy-Office
Publishes a one-page stakeholder progress dashboard for any git project — where it stands, what's waiting on people, whether it's stalled — from whatever…
SkillBFreshness: BClaude Code +9 - 0.529score
requeue
Busy-Office
Reviews and reorders the queue an engineering loop or team works from — backlog, roadmap, todo, milestones — so the next work picked up is the right work.
SkillBFreshness: BClaude Code +9
Cite this page
loop-economist skill. Agent Mart. https://agentmart.dev/skills/busy-office-loop-economist (last updated 2026-10-24)