loop-engineering
Skill2 starsChanged 4 months agoMITView on GitHub
Author a NEW, ready-to-run prompt or harness for a long-running iterative agent after its goal and load-bearing decisions are settled. Use for iterate-until-passing, multi-session, self-verifying, research, coding, or bulk processing loops that need state, stop conditions, and recovery. If intent is still unsettled, use loop-spec first. If a harness already exists and the user wants it improved or diagnosed, use loop-review first. Use loop-eval for test design, loop-ops for scheduling/unattended operation, and loop-retro after a real run. The deliverable is the smallest sufficient paste-ready harness, not the task itself. Trigger only when the user explicitly wants a reusable loop prompt/harness; direct requests to fix, run, or iterate on the task itself are ordinary execution. Requests that include actual scheduling/operation are led by loop-ops; when called by loop-ops, return only the per-run prompt.
33 other projects use a version of this.
Adopted by
Most recently taken up by
- vpeetla-ai/venkat-ai-platformtheir own version, first seen Nov 8, 2026
- Mark393295827/graph-engineering-architecturestheir own version, first seen Nov 8, 2026
- victor-hac-work/loop-engineering-skillstheir own version, first seen Nov 8, 2026
- jggomez/expert-ai-developer-skillstheir own version, first seen Nov 6, 2026
- Hakkadaikon/hymmetheir own version, first seen Oct 26, 2026
- vpeetla-ai/swarm-agent-patterntheir own version, first seen Oct 20, 2026
Used with
Projects with it also use aegis-gateway, deploy-vercel-render and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
vpeetla-aiSkillaegis-gateway
Integrate AegisAI gateway before tool side effects (notify, publish, deploy). Use when adding Slack/Telegram/WhatsApp notify, content publish, or any irreversible external action in VAP, AegisLoop, or ai-content-factory.
Also in 6 projects that use this
vpeetla-aiSkilldeploy-vercel-render
Deploy vpeetla-ai demos: Vercel static/Next.js frontends, Render FastAPI backends, env vars, free tier gotchas. Use when shipping demos, fixing deploy failures, or adding render.yaml / vercel.json.
Also in 6 projects that use this
HermeticOrmusSkilllanggraph-orchestration
LangGraph stateful multi-agent graphs with categorical coordination patterns and cyclic workflows. Use when building stateful AI agent systems, implementing multi-agent orchestration with conditional routing, creating cyclic workflows with persistence, or designing graph-based AI pipelines with checkpointing and human-in-the-loop patterns.
Also in 6 projects that use this
junimnjwSkillagentic-engineering
Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing.
Also in 7 projects that use this
- +8 more from vpeetla-ai
Other versions33 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 33
- bojieli/ai-agent-book-projects★ 53ksame name
- bojieli/ai-agent-book★ 53ksame name
- huytieu/COG-second-brain★ 1.3ksame name
- akitaonrails/my-skills★ 283same name
- jggomez/expert-ai-developer-skills★ 31same name
- aiconnai/agentshield★ 21same name
- sxivansx/loop-engineering★ 10same name
- victor-hac-work/loop-engineering-skills★ 5same name
- Mark393295827/graph-engineering-architectures★ 4same name
- aiconnai/engram★ 3same name
23 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository6 other files it gives its agents.
- loop-evalSkill
- loop-opsSkill
- loop-retroSkill
- loop-reviewSkill
- loop-specSkill
- skill-craftSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
18 rules. 0 are common, 14 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 27 edited versions we read keep these.
14
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 46
Every loop iteration is a fresh shift worker.
- Distinctive: line 61
If a loop prompt you write doesn't visibly defend against these two, it isn't done.
- Distinctive: line 65
Every iteration runs the same cycle.
- Distinctive: line 101
Use the smallest set of controls that closes demonstrated risks.
- Distinctive: line 140
Check readiness: If success, scope, safety boundaries, or budget still have unresolved load-bearing choices, hand off to loop-spec.
- Very specific: line 151
Select components, then assemble: Read references/component-catalog.md, record selected component IDs with an observed trigger, start from …
- Very specific: line 167
When the harness uses tools, shared state, provider model controls, or a host session command, emit and validate the applicable runtime …
- Very specific: line 172
Self-review before delivering: Run the produced prompt past the checklist in references/checklist.md (the same one loop-review uses).
- Distinctive: line 215
Add sub-agent orchestration only when it pays for itself: the side task would flood the main context, independent verification materially …
- Distinctive: line 220
Use only the roles needed: decomposer for genuinely complex leaves, plan-reviewer for high-risk plans, independent verifier for fuzzy or …
- Very specific: line 225
Docs & workspace integrity: when ratified steering documents are required, verify their expected versions/digests.
- Distinctive: line 232
Shakedown protocol: before L3 or multi-session unattended use, run 2–3 supervised increments, test the verifier, and deliberately interrupt …
- Distinctive: line 236
Calibration protocol (quality-fuzzy loops): when per-increment verification is judgment-based (labeling, research, summarizing), the …
- Distinctive: line 251
After the prompt, give a 2–4 line note: which pattern you used, the key design choices, and what the user should tune for their case.
- Distinctive: line 256
Before you call a loop prompt done, it should pass all of these:
- Distinctive: line 261
If the loop spans runs or promises recovery, progress survives a context reset and resume is crash-safe.
- Distinctive: line 271
Every instruction earns its place.
- Distinctive: line 298
Read these as needed — don't load everything up front (practice what you preach):
“Common” is measured: kept by at least 6 in 10 of the 27 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Loop Engineering
Loop engineering is the craft of designing the harness around a model so it can run repeatedly and autonomously toward a goal — across many turns and even across context resets — without going off the rails. The model is the engine; the loop is everything else: the goal it steers by, the state it remembers, the verification that keeps it honest, and the conditions that tell it to stop.
Your job when this skill triggers: take the user's task description and produce a complete loop prompt they can paste into a fresh agent and run. The deliverable is the prompt — not advice about loops, and not the task itself done for them. Write the paste-ready prompt and stop there. Only go on to actually execute or build what the prompt describes if the user explicitly asks (e.g. "run it", "execute", "跑一遍", "show it working"). If they just say "use loop-engineering for X" or "build me a loop that does X", they want the prompt, not X.
Respond and write the produced prompt in the user's language. Keep this skill's internal reasoning in English; switch to their language for the deliverable and the conversation.
The mental model
"Imagine a software project staffed by engineers working in shifts, where each new engineer arrives with no memory of what happened on the previous shift." — Anthropic, Effective harnesses for long-running agents
Every loop iteration is a fresh shift worker. They are smart but amnesiac. A good loop hands each shift: a clear goal, the current state written down, a way to verify their own work, and a rule for when to stop. Design for the amnesiac.
The two things that break loops
Almost every loop failure is one of these. Design against both, explicitly:
- Over-ambition — the agent tries to one-shot the whole thing, runs out of context mid-way, and leaves a half-built mess the next shift can't read. Antidote: one increment per iteration.
- False completion — the agent sees partial progress and declares victory without testing. Antidote: mandatory self-verification that tests the result the way a user would, plus verifiable success criteria.
If a loop prompt you write doesn't visibly defend against these two, it isn't done.
The five beats (the loop skeleton)
Every iteration runs the same cycle. Bake these five beats into the prompt:
- Orient — read the current state before doing anything (progress file, task list, git log, last error). Where am I? What's the next unfinished thing?
- Plan — choose the single smallest increment that moves toward the goal.
- Act — do that one increment. Nothing more.
- Verify — prove it works. Test as a user would, not just "the code looks right." A green unit test is not proof the feature works.
- Record — write progress to durable state, leave the workspace clean, so the next (amnesiac) shift can pick up instantly.
Then loop — until a stop condition fires.
The seven design dimensions
A top-tier loop prompt answers all seven. When authoring, walk this list and make
sure each is concretely specified, not hand-waved. Deep guidance for each lives in
references/principles.md (read it before authoring your first loop).
- Goal & success criteria — verifiable enough that two people would agree it's met. "Works well" is not a criterion; "all 12 acceptance checks pass" is.
- Stop conditions — when to stop succeeding (done), stop trying (blocked/ escalate), and a hard cap (max iterations / budget) so it can't loop forever.
- The loop skeleton — the five beats, with one increment per iteration.
- State & memory — what gets written where, so progress survives a context reset. Externalize to files; don't trust the context window.
- Context discipline — keep the working set small and high-signal; just-in-time retrieval over preloading; compaction/cleanup as it grows.
- Tools — the minimal set of clear, consolidated tools the loop needs, with recovery-oriented error handling. Classify calls as read-only or side-effecting; parallelize only independent reads and serialize effects.
- Verification & guardrails — how each iteration self-checks, plus explicit guardrails against the anti-patterns (no faking, no editing tests to pass).
Operational rigor
Use the smallest set of controls that closes demonstrated risks. The core floor is verifiable success, explicit stop conditions, one increment at a time, durable state when work spans runs, and real verification. Add the following when the task characteristics justify them:
- Make every success criterion machine-checkable. "Works well" can't be
verified; "
npm testexits 0", "the output CSV has N non-empty rows", "the endpoint returns 200" can. If a criterion genuinely needs human judgment, say exactly what the human checks. - When work spans runs, make resume crash-safe and idempotent. A long loop will be interrupted mid-iteration. Claim the work item before acting (mark it in-progress), make the Record step atomic, and ensure resuming never double-processes or corrupts state. The test: killed at any instant, the next run picks up cleanly — nothing lost, nothing done twice.
- Size the increment and the cap on purpose. The increment is the smallest unit you can independently verify. The hard cap is large enough to make real progress, small enough to stay inside the context/time budget — state the reasoning; don't drop in a random number.
- Give the operator a glanceable signal. A one-line status or end-of-run summary (done / in-progress / blocked / remaining) lets a human check the loop's health without reading everything. Long-running means unattended, and unattended means it has to report.
- Match autonomy to trust, and gate the rest. State an autonomy level — L1 report-only / L2 assisted (narrow reversible changes) / L3 unattended — and default a new loop to L1; earning a higher level is a deliberate decision, not a default. Route risky, irreversible, or ambiguous actions to a human gate: stop and escalate with full context rather than guess and act. For L2/L3, require the runtime environment—not prompt text—to enforce permissions, denylists, approval gates, and cancellation. Make the hard cap an externally enforced counter such as increments/tool calls/wall time; tokens/$ are hard caps only when a runtime meter can stop work, otherwise they are observed metrics. Never estimate them from model prose. Remember the loop amplifies judgment — good and bad, so keep its output small enough that a human will actually read it. For running a loop recurring or unattended, hand off to the loop-ops skill.
Workflow for authoring a loop prompt
- Check readiness. If success, scope, safety boundaries, or budget still have unresolved load-bearing choices, hand off to loop-spec. Do not re-interview when the user already supplied and confirmed those choices. A short, low-risk loop may use an inline mini-spec; a durable/high-risk loop should have SPEC/STANDARDS/GOALS files.
- Pick a pattern. Map the task to a loop pattern (iterate-until-green,
orchestrator-worker, spec→build→verify, parallel map-reduce, debug loop,
research loop). See
references/patterns.md— it gives the skeleton, when to use each, and the failure mode each guards against. - Select components, then assemble. Read
references/component-catalog.md, record selected component IDs with an observed trigger, start fromassets/harness-core.md, and add only the selected clauses fromassets/components/. For the new lifecycle controls, read the selected leaf directly:assets/components/profile.md,assets/components/rules.md,assets/components/deviations.md, orassets/components/explainer.md. Useassets/harness-skeleton.mdas the assembly sheet. Walk the seven dimensions; cut anything that isn't pulling weight. The catalog owns trigger, dependency, and acceptance detail; this skill only routes selected IDs to their leaves. With no optional trigger, keep the manifest and runtime CORE-only. Wire in verification. Decide how the loop proves each increment, and how the human will measure overall quality. For real success criteria and eval design, use the loop-eval skill.
When the harness uses tools, shared state, provider model controls, or a host session command, emit and validate the applicable runtime contract from
references/runtime-adapters.md. Bind STATE/CONTAIN to one authority context; do not treat PROFILE defaults as API assistant prefill.- Self-review before delivering. Run the produced prompt past the checklist
in
references/checklist.md(the same one loop-review uses). Fix any gap. - Confirm only when the risk warrants a gate. For L2/L3 autonomy, unattended operation, irreversible actions, or stop conditions not previously ratified, present done / blocked / hard-cap conditions and wait for user confirmation. For L1 report-only or reversible workspace-local loops whose stop conditions were already confirmed, restate them in the delivery note and proceed; an extra blocking turn adds no safety.
Output contract
Deliver a single, paste-ready prompt with clearly delineated sections and a short selected-component manifest. It must include: role/goal, the separately ratified autonomy level (default L1 when unset; intake approval never promotes it), verifiable success criteria, stop conditions with a deliberately sized enforceable cap, a human gate for risky/irreversible/ambiguous actions, the environment, the five-beat loop, real self-verification, guardrails, a glanceable status, and concrete first actions. Add durable state plus crash-safe idempotent resume when the work spans runs or promises interruption recovery. Add context-compaction rules when the working set can grow materially.
Complexity budget — omit modules whose trigger is absent:
| Module | Include only when |
PROFILE | Selected by the component-catalog trigger |
| Durable resume protocol | Work spans sessions/runs or promises interruption recovery |
| Sub-agent roles | Isolation, repeated specialization, or independent judgment offsets coordination cost |
| Plan-review cycle | An increment is complex or risky enough that an unchecked plan is material |
RULES | Selected by the component-catalog trigger |
DEVIATIONS | Selected by the component-catalog trigger |
EXPLAIN | Selected by the component-catalog trigger |
| Calibration/golden set | Quality is judgment-based and volume is large enough to drift |
| Shakedown/kill test | L3 or multi-session recovery will be relied upon |
| Four-file loop-docs set | Team ownership, long lifespan, or auditability warrants durable steering docs |
For a small deterministic one-session loop, the correct output is a short flat harness with none of those modules. Do not mention omitted machinery just to show you considered it. Never invent a token/$ budget or tool/model name. Name the external controller for hard caps; label unenforced token/$ values as observed metrics or placeholders.
Add sub-agent orchestration only when it pays for itself: the side task would flood the main context, independent verification materially reduces risk, or the same specialist role recurs. A single agent is the default for tightly coupled or small work. When roles are justified:
- Use only the roles needed: decomposer for genuinely complex leaves, plan-reviewer for high-risk plans, independent verifier for fuzzy or consequential outcomes, and a formatting helper only for repeated formatting work. Brief each role self-contained and use the cheapest capable model available at runtime; never hard-code a model or tool name the user's environment may not provide.
- Docs & workspace integrity: when ratified steering documents are required, verify their expected versions/digests. Missing or changed SPEC/STANDARDS/GOALS is a blocking human gate; the loop may create operational state/log files but must never reconstruct human-owned goalposts.
- Plan-iteration cycle when needed: for complex/high-risk leaves, propose → review → revise (cap review rounds) → proceed within the ratified autonomy level. Do not force a reviewer round on trivial increments.
- Shakedown protocol: before L3 or multi-session unattended use, run 2–3 supervised increments, test the verifier, and deliberately interrupt once if crash-resume is a requirement. One-session L1 loops do not need a ceremonial kill test.
- Calibration protocol (quality-fuzzy loops): when per-increment verification
is judgment-based (labeling, research, summarizing), the harness runs a
calibration increment on a cadence — golden-set items re-processed + random
completed items re-checked by the VERIFIER; agreement below the ratified
threshold pauses auto-continue and escalates with the disagreeing cases
(protocol designed with loop-eval). Deterministic loops state explicitly
that the test suite is the calibration and skip it — don't cargo-cult golden
sets where
npm testalready answers the question.
Lite contract — use a flat harness and inline mini-spec. Keep verifiable criteria, one increment per iteration, a budget-inclusive hard cap, and a status line. Add durable crash-safe state only if work must survive interruption. Add human confirmation only when the risk rule above requires it. Proportionality keeps the safety controls that match the actual failure modes.
After the prompt, give a 2–4 line note: which pattern you used, the key design choices, and what the user should tune for their case.
The quality bar
Before you call a loop prompt done, it should pass all of these:
- A fresh agent could start from it with zero extra context.
- Success is machine-checkable, not vibes. Stop conditions are explicit, including a hard cap (sized on purpose) so it can't run forever.
- If the loop spans runs or promises recovery, progress survives a context reset and resume is crash-safe; otherwise the prompt explicitly scopes itself to one session.
- It does one increment at a time (sized to the smallest verifiable unit) and verifies before moving on.
- It defends against over-ambition and false completion by name.
- A human can glance at a status/summary to see the loop's health.
- Load-bearing decisions came from the user or are visible, reversible defaults.
- Sub-agent roles, docs scaffolding, review cycles, calibration, and shakedown are present only where the task's scale, uncertainty, or risk justifies them.
- Every instruction earns its place; nothing speculative or redundant.
Rationalizations to refuse
Under time pressure the authoring agent (you) will be tempted to cut the very corners this skill exists to prevent. Each shortcut below feels reasonable in the moment; each is how a loop ships broken. When you catch yourself thinking the left column, apply the right.
| The tempting shortcut | Why it's wrong |
| "Fastest way to help is to just build the thing they described." | The deliverable of this skill is the loop prompt, not the executed task. Hand over the paste-ready prompt and stop; only run/build it yourself if the user explicitly asks. This is the most common drift — guard it hardest. |
| "The user's description is detailed enough — skip readiness." | Detail can still hide load-bearing ambiguity. Check success, scope, risk, and budget; invoke loop-spec only for unresolved decisions. |
| "Stop conditions were already covered — ask again anyway." | Repetition is not a safety control. Reconfirm only for unattended/risky autonomy or when the prior decision is missing or stale. |
| "Sub-agents make every harness stronger." | They add context boundaries, latency, and coordination failure. Use them when isolation, repetition, or independent judgment has measurable value. |
| "Every loop needs a kill test." | Interruption testing is essential when resume is promised. It is noise for a one-session report-only loop. |
| "Every increment is verified — calibration is redundant." | Per-increment checks are made by the same judgment that drifts. The golden set is the fixed star: it catches your criteria sliding across hundreds of increments, which no single increment's check can see. |
| "This loop is simple — it doesn't need a hard cap." | Every loop needs a seatbelt. No hard cap means it runs forever the moment the logic fails. Always include one. |
| "I'll just explain how to set the loop up." | The deliverable is the paste-ready prompt itself, not advice about loops. Write the prompt. |
| "'Works well' is a fine success criterion." | If two people could disagree whether it's met, it isn't a criterion. Make each one machine-checkable. |
| "The model will test its own work, so verification is optional." | False completion is the #1 way loops fail. Verification must be mandatory and actually exercise the result. |
| "Keeping state in the conversation is fine." | The context window resets. Anything that must survive a restart goes to a file. |
| "Crash-safety is overkill here." | A long loop will be interrupted mid-step. Claim-before-act + atomic record is the floor, not a luxury. |
| "I'm unsure what they want, but I'll pick something reasonable and proceed." | When a load-bearing requirement is genuinely ambiguous, surface it / ask the human — don't bake a guess into a loop that then runs unattended. |
Reference files
Read these as needed — don't load everything up front (practice what you preach):
references/principles.md— the distilled best-practices behind all seven dimensions, with sources. Read before authoring your first loop.references/patterns.md— the loop-pattern library (step 2).references/component-catalog.md— optional component triggers, dependencies, and acceptance checks (step 3).assets/harness-core.mdandassets/components/— composable runtime clauses.references/harness-template.md— legacy worked example; consult only when an example is needed, never copy it wholesale.references/context-and-state.md— deep dive on context engineering, memory, and surviving resets (dimensions 4–5).references/runtime-adapters.md— effect scheduling, authority binding, model/effort resolution, current prefill compatibility, eval identity, and verified host-session semantics.references/checklist.md— the audit checklist for self-review (step 5).assets/harness-skeleton.md— modular assembly sheet.assets/state.schema.json,assets/state.example.json, andscripts/validate_state.py— STATE contract and deterministic checks.scripts/select_components.py,scripts/state_transition.py,scripts/build_workflow.py,scripts/containment_check.py, andscripts/validate_runtime_contract.py— deterministic selector, runtime contract, and reference implementations used by component fixtures.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

