loop-engineering
Practical patterns, starters & CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.
File Explorer
- add-adopter.yml
- bug-report.yml
- config.yml
- pattern-request.yml
- share-story.yml
- audit.yml
- changelog-drafter.yml
- daily-triage.yml
- publish-goal-audit-bootstrap.yml
- release-goal-audit.yml
- release-goal-init.yml
- release-loop-audit.yml
- release-loop-context.yml
- release-loop-cost.yml
- release-loop-gate.yml
- release-loop-init.yml
- release-loop-mcp-server.yml
- release-loop-sandbox.yml
- release-loop-swarm.yml
- release-loop-sync.yml
- release-loop-worktree.yml
- release-loop.yml
- release-readiness-core.yml
- update-star-history.yml
- validate-patterns.yml
- welcome-contributors.yml
- CODE_OF_CONDUCT.md
- dependabot.yml
- FUNDING.yml
- PULL_REQUEST_TEMPLATE.md
- ruleset-main-protection.json
- LE5.jpeg
- loop-anatomy.jpg
- loop-audit-demo.gif
- loop-cycle-animated.svg
- loop-engineering-logo.jpg
- loop-engineering-logo.svg
- loop-engineering-social-banner.jpg
- patterns-overview.svg
- primitives-infographic.jpg
- section-divider.svg
- social-preview.jpg
- star-history-dark.svg
- star-history.svg
- author-banner.jpg
- showcase.css
- star-history.css
- substack-score-climbs-then-budget-burns.md
- v1.6.0-social-drafts.md
- _config.yml
- adopters.md
- anti-patterns.md
- architecture-diagrams.md
- area-owners.md
- cli-front-door.md
- concepts.md
- failure-modes.md
- GITHUB_PAGES.md
- index.html
- loop-design-checklist.md
- loop-init-validation.md
- multi-loop.md
- operating-loops.md
- pattern-picker.md
- primitives-matrix.md
- primitives.md
- QUICKSTART.md
- RELEASE.md
- safety.md
- star-history.html
- changelog-drafter.md
- ci-sweeper.md
- constraints.md
- daily-triage.md
- dependency-sweeper.md
- issue-triage.md
- post-merge-cleanup.md
- pr-babysitter.md
- changelog-drafter.md
- ci-sweeper.md
- constraints.md
- daily-triage.md
- dependency-sweeper.md
- issue-triage.md
- post-merge-cleanup.md
- pr-babysitter.md
- changelog-drafter.md
- ci-sweeper.md
- constraints.md
- daily-triage.md
- dependency-sweeper.md
- issue-triage.md
- post-merge-cleanup.md
- pr-babysitter.md
- README.md
- changelog-drafter.yml
- ci-sweeper.yml
- daily-triage.yml
- dependency-sweeper.yml
- issue-triage.yml
- post-merge-cleanup.yml
- pr-babysitter.yml
- README.md
- changelog-drafter.md
- ci-sweeper.md
- constraints.md
- daily-triage.md
- dependency-sweeper.md
- issue-triage.md
- post-merge-cleanup.md
- pr-babysitter.md
- README.md
- ci-sweeper.md
- daily-triage.md
- issue-triage.md
- pr-babysitter.md
- README.md
- github-propose.json
- github-readonly.mcp.json
- linear.json
- loop-engineering.mcp.json
- README.md
- safe-write-pattern.md
- slack-read.json
- changelog-drafter.md
- ci-sweeper.md
- daily-triage.md
- dependency-sweeper.md
- issue-triage.md
- post-merge-cleanup.md
- pr-babysitter.md
- README.md
- changelog-drafter.md
- ci-sweeper.md
- constraints-example.md
- constraints.md
- daily-triage.md
- dependency-sweeper.md
- issue-triage.md
- post-merge-cleanup.md
- pr-babysitter.md
- README.md
- changelog-drafter.md
- ci-sweeper.md
- daily-triage.md
- dependency-sweeper.md
- issue-triage.md
- post-merge-cleanup.md
- pr-babysitter.md
- README.md
- README.md
- changelog-drafter.md
- ci-sweeper.md
- daily-triage.md
- dependency-sweeper.md
- issue-triage.md
- post-merge-cleanup.md
- pr-babysitter.md
- README.md
- registry.schema.json
- registry.yaml
- alternative_openers.txt
- compressed_version.txt
- MANIFEST.sha256
- MANIFEST_VERIFY.txt
- README.md
- TERMINAL_ART.txt
- sources.md
- adopters-row.md
- aider-appendix.md
- amazon-q-appendix.md
- append-run-log-invalid-json-test.md
- budget-negotiator-docs.md
- changelog-drafter-story.md
- ci-sweeper-story.md
- cline-appendix.md
- codeium-appendix.md
- continue-dev-matrix.md
- contributing-path-abc.md
- cursor-changelog-drafter-example.md
- cursor-ci-sweeper-example.md
- cursor-constraints.md
- cursor-daily-triage.md
- cursor-dependency-sweeper-example.md
- cursor-issue-triage-example.md
- cursor-post-merge-cleanup-example.md
- cursor-pr-babysitter-example.md
- daily-triage-story.md
- dependency-sweeper-story.md
- examples-aider-link.md
- examples-cursor-windsurf-columns.md
- harden-loop-action-command.md
- hermes-ci-sweeper-example.md
- hermes-copy-paste-starters.md
- hermes-examples-readme.md
- hermes-issue-triage-example.md
- hermes-pr-babysitter-example.md
- hermes-quickstart.md
- hermes-readme-index.md
- issue-triage-story.md
- loop-init-validation-checklist.md
- loop-sandbox-story.md
- loop-sync-crlf-tests.md
- loop-worktree-week-two-story.md
- multi-loop-failure-story.md
- multi-loop-story.md
- opencode-constraints-example.md
- post-merge-cleanup-story.md
- pr-babysitter-story.md
- quickstart-loop-action.md
- quickstart-loop-context.md
- quickstart-loop-gate.md
- quickstart-loop-sandbox.md
- quickstart-loop-swarm.md
- quickstart-loop-sync.md
- quickstart-mcp-server.md
- quickstart-minimax-foundry.md
- quickstart-tool-values.md
- quickstart-worktree-lock-import.md
- readiness-core-skill-dedup-test.md
- windows-contributor-notes.md
- windsurf-changelog-drafter-example.md
- windsurf-ci-sweeper-example.md
- windsurf-daily-triage.md
- windsurf-dependency-sweeper-example.md
- windsurf-issue-triage-example.md
- windsurf-post-merge-cleanup-example.md
- windsurf-pr-babysitter-example.md
- zed-appendix.md
- append-run-log.mjs
- append-run-log.test.mjs
- before-after-demo.sh
- check-loop-init-sync.mjs
- ci-audit-gates.sh
- ci-validate-gates.sh
- create-good-first-issues.sh
- generate-audit-demo-gif.py
- generate-contributors.mjs
- generate-star-history.py
- upload-social-preview.sh
- validate-registry.mjs
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- verifier.md
- SKILL.md
- SKILL.md
- verifier.toml
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- SKILL.md
- changelog-drafter-state.md.example
- LOOP.md
- README.md
- SKILL.md
- AGENTS.md
- changelog-drafter-state.md.example
- LOOP.md
- opencode.json.example
- README.md
- loop-verifier.md
- SKILL.md
- verifier.toml
- SKILL.md
- SKILL.md
- ci-sweeper-state.md.example
- README.md
- SKILL.md
- AGENTS.md
- ci-sweeper-state.md.example
- LOOP.md
- opencode.json.example
- README.md
- loop-verifier.md
- SKILL.md
- verifier.toml
- SKILL.md
- SKILL.md
- dependency-sweeper-state.md.example
- LOOP.md
- README.md
- SKILL.md
- AGENTS.md
- dependency-sweeper-state.md.example
- LOOP.md
- opencode.json.example
- README.md
- loop-verifier.md
- SKILL.md
- verifier.toml
- SKILL.md
- SKILL.md
- SKILL.md
- issue-triage-state.md.example
- LOOP.md
- README.md
- SKILL.md
- AGENTS.md
- issue-triage-state.md.example
- LOOP.md
- opencode.json.example
- README.md
- SKILL.md
- LOOP.md
- README.md
- STATE.md.example
- loop-verifier.md
- SKILL.md
- LOOP.md
- README.md
- STATE.md.example
- verifier.toml
- SKILL.md
- LOOP.md
- README.md
- STATE.md.example
- SKILL.md
- AGENTS.md
- LOOP.md
- opencode.json.example
- README.md
- STATE.md.example
- loop-verifier.md
- SKILL.md
- verifier.toml
- SKILL.md
- SKILL.md
- LOOP.md
- post-merge-state.md.example
- README.md
- SKILL.md
- AGENTS.md
- LOOP.md
- opencode.json.example
- post-merge-state.md.example
- README.md
- loop-verifier.md
- SKILL.md
- verifier.toml
- SKILL.md
- SKILL.md
- LOOP.md
- pr-babysitter-state.md.example
- README.md
- SKILL.md
- AGENTS.md
- LOOP.md
- opencode.json.example
- pr-babysitter-state.md.example
- README.md
- README.md
- changelog-drafter-week-one.md
- ci-sweeper-infinite-flaky-test.md
- ci-sweeper-symptom-patching-and-circuit-breaker.md
- daily-triage-report-only.md
- dependency-sweeper-week-one.md
- dependency-vs-ci-sweeper-collision.md
- ky-cut-surface-generation-vs-consequence.md
- l1-to-l2-graduation.md
- loop-budget-example.md
- loop-run-log-example.md
- loop-sandbox-ephemeral-isolation.md
- loop-worktree-week-two.md
- multi-loop-collision.md
- multi-loop-coordination.md
- post-merge-cleanup-honest-win.md
- pr-babysitter-week-one.md
- quant-loop-out-of-time.md
- quant-loop-the-verifier-problem.md
- README.md
- score-climbs-then-budget-burns.md
- why-we-killed-ci-sweeper.md
- fleet-inbox.md
- fleet-registry.md
- gate.yaml.template
- goal-budget.md.template
- goal-run-log.md.template
- GOAL.md.template
- loop-budget.md.template
- loop-constraints.md
- loop-run-log.md.template
- memory-budget.md
- memory-tiers.md
- pattern-template.md
- SKILL.md.budget-negotiator
- SKILL.md.goal-scoper
- SKILL.md.goal-verifier
- SKILL.md.issue-triage
- SKILL.md.loop-budget
- SKILL.md.loop-constraints
- SKILL.md.loop-guard
- SKILL.md.loop-intake
- SKILL.md.loop-triage
- SKILL.md.minimal-fix
- SKILL.md.verifier
- STATE.md.template
- auditor.d.ts
- auditor.d.ts.map
- auditor.js
- auditor.js.map
- cli.d.ts
- cli.d.ts.map
- cli.js
- cli.js.map
- reporter.d.ts
- reporter.d.ts.map
- reporter.js
- reporter.js.map
- auditor.ts
- cli.ts
- reporter.ts
- .gitkeep
- SKILL.md
- AGENTS.md
- GOAL.md
- package.json
- auditor.test.mjs
- package-lock.json
- package.json
- README.md
- tsconfig.json
- cli.d.ts
- cli.js
- contributor-cta.d.ts
- contributor-cta.js
- bundle-assets.mjs
- cli.ts
- contributor-cta.ts
- cli.test.mjs
- .gitignore
- package-lock.json
- package.json
- README.md
- tsconfig.json
- cli.d.ts
- cli.js
- doctor.d.ts
- doctor.js
- files.d.ts
- files.js
- pass-through.d.ts
- pass-through.js
- status.d.ts
- status.js
- wizard.d.ts
- wizard.js
- cli.ts
- doctor.ts
- files.ts
- pass-through.ts
- status.ts
- wizard.ts
- cli.test.mjs
- files.test.mjs
- CHANGELOG.md
- package-lock.json
- package.json
- README.md
- tsconfig.json
- action.yml
- README.md
- auditor.d.ts
- auditor.js
- autofixer.d.ts
- autofixer.js
- cli.d.ts
- cli.js
- contributor-cta.d.ts
- contributor-cta.js
- reporter.d.ts
- reporter.js
- auditor.ts
- autofixer.ts
- cli.ts
- contributor-cta.ts
- reporter.ts
- auditor.test.mjs
- autofixer.test.mjs
- CHANGELOG.md
- package-lock.json
- package.json
- README.md
- tsconfig.json
- budget-resolver.d.ts
- budget-resolver.js
- cli.d.ts
- cli.js
- context-manager.d.ts
- context-manager.js
- daily-spend.d.ts
- daily-spend.js
- budget-resolver.ts
- cli.ts
- context-manager.ts
- daily-spend.ts
- on-exceed-capture.mjs
- on-exceed-ignore-stdin.mjs
- budget-resolver.test.mjs
- cli.test.mjs
- context-manager.test.mjs
- daily-spend.test.mjs
- package-lock.json
- package.json
- README.md
- tsconfig.json
- cli.d.ts
- cli.js
- estimator.d.ts
- estimator.js
- bundle-registry.mjs
- cli.ts
- estimator.ts
- estimator.test.mjs
- package-lock.json
- package.json
- README.md
- registry.json
- tsconfig.json
- cli.d.ts
- cli.js
- gate.d.ts
- gate.js
- cli.ts
- gate.ts
- cli.test.mjs
- gate.test.mjs
- package-lock.json
- package.json
- README.md
- tsconfig.json
- cli.d.ts
- cli.js
- contributor-cta.d.ts
- contributor-cta.js
- bundle-assets.mjs
- cli.ts
- contributor-cta.ts
- cli.test.mjs
- .gitignore
- CHANGELOG.md
- package-lock.json
- package.json
- README.md
- registry.yaml
- tsconfig.json
- cli.d.ts
- cli.js
- metrics.d.ts
- metrics.js
- cli.ts
- metrics.ts
- metrics.test.mjs
- package-lock.json
- package.json
- README.md
- tsconfig.json
- cli.d.ts
- cli.js
- sandbox.d.ts
- sandbox.js
- cli.ts
- sandbox.ts
- sandbox.test.mjs
- package-lock.json
- package.json
- README.md
- tsconfig.json
- cli.d.ts
- cli.js
- swarm.d.ts
- swarm.js
- cli.ts
- swarm.ts
- swarm.test.mjs
- package-lock.json
- package.json
- README.md
- tsconfig.json
- cli.d.ts
- cli.js
- sync.d.ts
- sync.js
- cli.ts
- sync.ts
- sync.test.mjs
- package-lock.json
- package.json
- README.md
- tsconfig.json
- cli.d.ts
- cli.js
- lock.d.ts
- lock.js
- worktree.d.ts
- worktree.js
- cli.ts
- lock.ts
- worktree.ts
- cli.test.mjs
- lock.test.mjs
- package-exports.test.mjs
- worktree.test.mjs
- package-lock.json
- package.json
- README.md
- tsconfig.json
- index.d.ts
- index.js
- resolver.d.ts
- resolver.js
- index.ts
- resolver.ts
- server.test.mjs
- CHANGELOG.md
- package-lock.json
- package.json
- README.md
- tsconfig.json
- index.ts
- index.test.mjs
- .gitignore
- package-lock.json
- package.json
- README.md
- tsconfig.json
- .gitignore
- _config.yml
- AGENTS.md
- changelog-drafter-state.md
- CODE_OF_CONDUCT.md
- CODEOWNERS
- CONTRIBUTING.md
- CONTRIBUTORS.md
- gate.yaml
- LICENSE
- loop-budget.md
- loop-constraints.md
- loop-run-log.md
- LOOP.md
- package-lock.json
- package.json
- README.md
- RELEASE_NOTES_DRAFT.md
- RELEASE_NOTES_v1.5.0.md
- SECURITY.md
- STATE.md
# Installation Guide
nodeSetup Steps
npm install
Install root dependencies.
npm test
Run validation tests for registry and scripts.
npx @cobusgreyling/loop init . --pattern daily-triage --tool grok
Initialize a loop engineering template with a chosen pattern and tool.
npx @cobusgreyling/loop doctor .
Diagnose the loop setup readiness and view recommended actions.
Key Commands
npx @cobusgreyling/loop init . --pattern daily-triage --tool grok
Scaffolds skills, state, and budget files, then prints the Loop Ready score.
npx @cobusgreyling/loop doctor .
Turns audit and sync into top next action recommendations.
npx @cobusgreyling/loop audit . --suggest
Audits project loop readiness score and provides suggestions.
npx @cobusgreyling/loop cost
Estimates token spend and costs for agent loops.
# Use via CDN
jsDelivrjsDelivr serves any public GitHub repository as a CDN with zero setup. Pick a version and a file to get a ready-to-paste link and snippet.
Release Timeline
Actively Maintained- 2026-07-20 v1.6.0 — Foundry funnel + loop-gate
- 2026-06-30 v1.5.0 — Community Tools Drop
Command Glossary
Commands referenced in this DOCs, explained below.
claude
View Details ▼
claude
An agent-based coding tool that understands your code base and helps you code faster through natural language commands.
claude prompt
Execute with prompt:
claude update
Update `claude`:
claude mcp list
Get the list of specified MCP servers:
codex
View Details ▼
codex
Natural language code assistant for the terminal, powered by OpenAI.
Reads and edits files in your current directory to fulfill requests.
codex
Start an interactive Codex session in the current directory:
codex "{{prompt}}"
Run a single Codex command using a prompt:
codex --sandbox workspace-write "{{prompt}}"
Run a prompt allowing Codex to edit files in the workspace:
node
View Details ▼
node
Server-side JavaScript platform (Node.js).
node {{path/to/file}}
Run a JavaScript file:
node
Start a REPL (interactive shell):
node --watch {{path/to/file}}
Execute the specified file restarting the process when an imported file is changed (requires Node.js version 18.11+):
npx
View Details ▼
npx
This command is an alias of `npm exec`.
tldr npm exec
View documentation for the original command:
opencode
View Details ▼
opencode
An AI coding agent.
Some subcommands such as `auth`, `models`, `web`, etc. have their own usage documentation.
opencode
Start the interactive TUI:
opencode {{[-c|--continue]}}
Continue the most recent session:
opencode run "{{message}}"
Run opencode in non-interactive mode by passing a prompt directly:
