authoring-adept-loops

Compose a loop — a scheduled system that discovers work, hands it to agents, verifies with an independent evaluator, persists state, and reschedules itself. Apply when the user wants automation that r

SKILL.md

GitHub

Composing a loop with adept

A loop is a system that prompts agents so a human doesn't have to: each turn it discovers work, hands off to an agent, verifies the result, persists state, and reschedules. Skip any move and the loop fails a predictable way — no verification is an agent nodding at itself; no persistence starts from scratch every morning; no schedule is a script someone forgets to run.

adept manages two of the six parts as canonical, synced resources — skills (discovery knowledge) and agents (the generator/evaluator pair). The rest (worktrees, connectors, memory files, schedules) belong to the harness and repo; this skill tells you how to wire them together.

Scaffold the composition

adept loop add ci-triage --workflow

creates:

  • skills/ci-triage/ — discovery skill (triage template: Read → Judge → Write → Hand off → Stop). activation: manual on purpose: the automation invokes it by name; it must not auto-fire in normal sessions.
  • agents/ci-triage-reviewer.md — evaluator agent (adversarial template: assume broken, act don't read, PASS/REJECT verdict).
  • .github/workflows/adept-loop-ci-triage.yml — cloud cron skeleton (only with --workflow); fill in the harness invocation + auth secret.

Then edit the scaffolds, adept agent check ci-triage-reviewer, adept sync.

The five moves, mapped

Move Where it lives adept's part
Discovery triage skill — what to read, how to judge noise vs. actionable adept skill add <id> --template triage
Handoff one git worktree per finding (claude --worktree, Codex background worktree) skill's "Hand off" section emits the task lines
Verification evaluator agent, different instructions (ideally different model) than the maker adept agent add <id> --template evaluator
Persistence ./state/<id>.md committed to the repo — the agent forgets, the repo does not skill's "Write" section owns it
Scheduling cloud cron (machine off, ≥1h interval) or local /loop/automations (machine on, minute-level) --workflow skeleton

Non-negotiables (the parts that produce safety, not output)

  • Independent evaluator. An agent grading its own work praises it. Keep maker and checker separate; tune the checker skeptical; make it verify by acting (run tests, click the page), and let a stop condition (e.g. Claude Code /goal) be judged by a fresh model.
  • The Stop section. The skill's boundary ("Never merge. Never delete. Uncertain → ./inbox/ for a human") is the one thing the loop cannot infer. Leave it out and the loop merges with confidence it has not earned.
  • Human review stays. PRs open, never auto-merge. The pause is a permanent feature, not scaffolding to remove once trusted.
  • Cap before you ship. Per-run budget, daily budget, max retries — set them before the first unattended run, because one bug spinning idle overnight otherwise becomes a bill.
  • Grow parallelism last. Prove the evaluator catches real mistakes on one finding end-to-end before letting five agents run at once.

Four silent costs (watch for them, tell the user)

Verification debt (unreviewed output), comprehension rot (code nobody read), cognitive surrender (nobody says "this is wrong" anymore), token blowout (retries all night). They reinforce each other; the guard for all four is a check that can say "no" plus a human who still reads a sample daily.

See [[authoring-adept-skills]] for the discovery skill's craft, [[authoring-adept-agents]] for evaluator design, and [[using-adept]] for the CLI. adept loop add --help is the source of truth for flags.