{"adoption": {"forks": 1465, "observed_at": "2026-08-28T04:10:43.747928+00:00", "stars": 10687}, "canonical_url": "https://ross.abutalabs.com/products/loop-engineering", "card": {"archived": false, "artifact_type": "cli-tool", "description": "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.", "domain": ["developer-tools", "large-language-models"], "enriched": true, "function": ["cli", "agent-framework", "prompt-engineering", "mcp", "workflow-automation", "developer-tools", "ci-cd"], "health_score": 100, "homepage": "https://cobusgreyling.github.io/loop-engineering/", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["cobusgreyling/loop-engineering"], "name": "cobusgreyling/loop-engineering", "platform": ["cli", "cross-platform"], "pushed_at": "2026-08-26T08:22:02+00:00", "repo": "cobusgreyling/loop-engineering", "stars": 10687, "tags": ["loop-engineering", "claude-code", "codex", "agentic-coding", "ai-coding-agents", "npm-packages", "prompt-orchestration", "agent-workflows", "worktrees", "github-actions", "ai-agents", "automation", "command-line", "nodejs"], "topics": ["agentic-ai", "ai-agents", "claude-code", "codex", "devops-automation", "github-actions", "grok", "llm", "mcp", "ai-coding", "automation", "loop-engineering", "prompt-engineering", "anthropic", "claude", "coding-agents", "devtools"], "urls": [], "use_cases": ["audit a repo for readiness to run AI coding agent loops", "scaffold an automated agent loop in my project", "track and estimate the cost of AI coding agent runs", "set up scheduled agent runs with worktrees and verification", "learn patterns for orchestrating Claude Code and Codex without manual prompting", "add MCP connectors and sub-agent maker/checker splits to my workflow", "run AI coding agents from GitHub Actions on a schedule"], "what_it_is": "A collection of patterns, starter templates, and npm CLI tools for 'loop engineering' — designing automated loops that prompt and orchestrate AI coding agents like Claude Code, Codex, and Grok. It includes tools such as loop-audit, loop-init, and loop-cost that score repo readiness, scaffold agent loops, and track agent costs.", "when_to_avoid": ["you need a general-purpose agent framework for building custom LLM applications rather than coding-agent workflows", "you only prompt agents occasionally and don't need scheduled or automated loops", "you need a GUI or hosted platform rather than CLI tools and patterns"], "when_to_choose": ["you use AI coding agents (Claude Code, Codex, Grok) and want structured, repeatable automation loops instead of ad-hoc prompting", "you want ready-made CLI tooling to audit, initialize, and monitor agent loops", "you want tool-agnostic patterns that work across multiple coding agents and GitHub Actions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/loop-engineering", "repo": "cobusgreyling/loop-engineering", "role": "main", "score": 78}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:43.747928+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:18:10.691805+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aaa86d52a66d28e01c6b237cea4403e6ec6c72a66ec2fd94b3baba950e967d9c", "fetched_at": "2026-08-28T04:10:43.747928+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cobusgreyling/loop-engineering"}, {"content_hash": "e791e3a12a688bab7b316ff214ff7f679c2a10099fe2e31983db23320eed7a4d", "fetched_at": "2026-08-29T08:17:34.759388+00:00", "kind": "homepage", "missing": false, "url": "https://cobusgreyling.github.io/loop-engineering/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 6, "rhythm": 93}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 85, "days_push": 7, "days_rel": 44, "gap_med": 20, "n_releases_24m": 2}, "score": 78, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}