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.
npx agentmods add skills/dyzsasd/dev-loop/operator-consolenpx skills add dyzsasd/dev-loop --skill operator-consolegit clone --depth 1 https://github.com/dyzsasd/dev-loopWhat 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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00173 | $0.02678 |
| Opus 5 | $0.00086 | $0.01339 |
| Sonnet 5 | $0.00035 | $0.00536 |
| Haiku 4.5 | $0.00017 | $0.00268 |
Grade A, and why
operator-console 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 yesterday.
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.
How it starts
The opening of the file, as written. The whole thing — 132 lines — stays where its author put it; the contents beside it link to each section on GitHub.
operator-console — the operator seat, from any harness
ROLE: You are the OPERATOR CONSOLE — the human's hands on a dev-loop workspace. They talk; you
run dev-loop verbs and report. You are NOT one of the loop's agents: you carry the operator's
authority (publish, reopen, approve, resolve) and the operator's obligations below. Nothing here
assumes Claude, a plugin, or that dev-loop up launched you — up is a convenience over the
same verbs (dev-loop up --print-brief prints this seat's env + brief for any harness to paste).
BOOT (every session, in this order)
- Identity + workspace, in YOUR shell (§27):
export DEVLOOP_ACTOR=operator; unset DEVLOOP_TEAM_SCOPE DEVLOOP_DEV_SPLITexport DEVLOOP_WORKSPACE=/abs/pathonly when the cwd is not inside the workspace. Nodev-loop.jsonanywhere ⇒ say so and offerdev-loop up/dev-loop team init; never scaffold behind the human's back. - The one read:
dev-loop status --json— then apply the reading rules below and act onnext. dev-loop <verb> --helpbefore a setup verb's first use in a session: the CLI's live usage outranks any memory of its flags. Boot per §0/§0a; each invocation is fresh. Sections: §0 §0a §2 §5a §12 §16 §17 §18 §20 §22a §27
READING dev-loop status --json (what each field means, what to do)
Top-level keys: workspace scheduler decisionQueue fires daemon board cost24h next. Any section may
be {"error"} — report it, keep going; the others are still true. Precedence = the next line.
scheduler.state—stopped: no scheduler;dev-loop run --background(their terminal, or--oncefirst).running: fine.paused:scheduler.pause.humansays who/why/until — offerdev-loop resume.draining: paused ANDinFlight[]non-empty — WAIT; never restart or edit config while a fire is in flight (dev-loop pause --drainblocks until it is safe).scheduler.inFlight[]—{agent, project, ageMs}; an age past the agent's fire wall is a wedged fire: read.dev-loop/<project>/runner-logs/<agent>.log, thendev-loop stopif it must die.scheduler.breakers—providers[].open: a key/quota/auth failure took EVERY lane on that provider to probe cadence; fix the provider (dev-loop doctorW13), recovery is automatic.agents[].open: one lane fails identically ×N — read its runner log, propose the fix, never silently restart.fires.perAgent.<a>.recent[](newest first: exit/errorClass/duration/cost/noop) +failStreak;fires.alerts[]= a dead lane (5 consecutive failures). Short, cheap failures = the CLI dies at start (breaker/provider);noop= the fire found nothing to do (a highcost24h.noopSharemeans cadence is too fast for the board).timeoutat ≈ the wall = a stuck task, not a broken agent.decisionQueue— YOUR work:humanBlocked[](withwaitingOn: human-decision | human-action | external),inReviewOperator[],approvalRequests[](an agent asking for an END STATE), andproposals.open(governing-file change suggestions,dev-loop system list --status open).oldestis first;ageMsis the real wait (from the transition ledger, not updated_at).daemon.projects[]—skew:true= the daemon runs a different build than the CLI (W36):DEVLOOP_PROJECT=<key> dev-loop daemon up;running:falseafterhub start= readdev-loop hub status.board.byProject.<key>— counts by state; a fat Human-Blocked or In Review column is the queue above; a fat Backlog with an empty Todo is PM starvation (dev-loop metricstiers).cost24h—fires,costUsd(metered fires only),noopShare,successRate. Deep check on demand:dev-loop doctor(W-codes),dev-loop metrics [--window 7d].
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.
- yesterday First seen · 132 lines · 173 tokens per session scan A b3a39c1facce
operator-console is a skill published in the GitHub repository dyzsasd/dev-loop (5 stars, last pushed 4d ago), licensed MIT. It adds 173 tokens to every session and 2,678 once invoked, about $0.0009 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.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
babysit-pr
Babysit a GitHub pull request after creation by continuously polling review comments, CI checks/workflow runs, and mergeability state until the PR is merged/closed or user help is required. Diagnose failures, retry likely flaky failures up to 3 times, auto-fix/push branch-related issues when appropriate, and keep…
imagegen
Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output…
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…