From 06eea50dae6fc18a836053273fb3e78d1a4a6217 Mon Sep 17 00:00:00 2001
From: Cobus Greyling
Date: Tue, 9 Jun 2026 19:15:25 +0200
Subject: [PATCH] feat: make loop-engineering super useful
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- loop-audit v1.4: dynamic 'loopActivity' signal (git history, 'Last run' timestamps in STATE, scheduled workflows, run logs). L3 now requires real usage evidence (not just files). Stronger --suggest output and recommendations. Updated tests + README.
- GitHub Pages showcase: Interactive Pattern Picker (click symptom pills → exact npx + first /loop command + links). Live Readiness Simulator (checkboxes for all signals → live score + level + next action, mirrors computeScore + new L3 rules). Hero now has prominent one-click copy npx CTAs for loop-init and loop-audit.
- New low-risk pattern: Issue Triage (perfect companion to Daily Triage for noisy GitHub/Linear issues). 7 patterns total. Updated registry.yaml (validated), patterns/README, pattern-picker.md decision flow + table.
- Polish: loop-init bumped to 1.2.0. Main + tool READMEs, badges, and quickstart language updated to emphasize 'npx works today' and the new interactive tools + activity proof requirement. Builds and validation green.
All changes dogfood the philosophy: structure + actual runs = high L3 score.
---
README.md | 8 +-
docs/assets/css/showcase.css | 104 +++++++++-
docs/index.html | 262 ++++++++++++++++++++++++-
docs/pattern-picker.md | 6 +-
patterns/README.md | 1 +
patterns/issue-triage.md | 94 +++++++++
patterns/registry.yaml | 15 ++
tools/loop-audit/README.md | 7 +-
tools/loop-audit/dist/auditor.d.ts | 4 +
tools/loop-audit/dist/auditor.js | 84 +++++++-
tools/loop-audit/dist/cli.js | 13 +-
tools/loop-audit/package.json | 4 +-
tools/loop-audit/src/auditor.ts | 86 +++++++-
tools/loop-audit/src/cli.ts | 13 +-
tools/loop-audit/test/auditor.test.mjs | 20 +-
tools/loop-init/README.md | 4 +
tools/loop-init/dist/cli.js | 8 +
tools/loop-init/package.json | 2 +-
tools/loop-init/src/cli.ts | 11 +-
19 files changed, 724 insertions(+), 22 deletions(-)
create mode 100644 patterns/issue-triage.md
diff --git a/README.md b/README.md
index fa06c8e..a2e446f 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
-
+
@@ -42,10 +42,10 @@ A loop is a recursive goal: you define a purpose and the AI iterates (often with
| [Pattern Picker](docs/pattern-picker.md) | Which loop to run first — **start here if unsure** |
| [Primitives Matrix](docs/primitives-matrix.md) | Grok vs Claude Code vs Codex — bookmark this |
| [Loop Design Checklist](docs/loop-design-checklist.md) | Ship readiness rubric |
-| [Patterns](patterns/README.md) | 6 production patterns including the new low-risk Changelog Drafter |
+| [Patterns](patterns/README.md) | 6 production patterns (new low-risk Changelog Drafter) + interactive picker |
| [Starters](starters/) | Clone-and-run kits (Grok, Claude Code, Codex) |
-| [loop-audit](tools/loop-audit/) | Loop Readiness Score CLI — `npx @cobusgreyling/loop-audit` |
-| [loop-init](tools/loop-init/) | Scaffold starters — `npx @cobusgreyling/loop-init` |
+| [loop-audit](tools/loop-audit/) | Loop Readiness Score CLI (v1.4 + dynamic activity) — `npx @cobusgreyling/loop-audit . --suggest` |
+| [loop-init](tools/loop-init/) | Scaffold starters (v1.2) — `npx @cobusgreyling/loop-init . --pattern daily-triage --tool grok` |
| [Stories](stories/) | Real wins and honest failures |
## Why This Matters
diff --git a/docs/assets/css/showcase.css b/docs/assets/css/showcase.css
index baf7adf..2bb301f 100644
--- a/docs/assets/css/showcase.css
+++ b/docs/assets/css/showcase.css
@@ -506,4 +506,106 @@ section {
.nav-links { display: none; }
.hero { padding: 48px 0 40px; }
.flow-arrow { display: none; }
-}
\ No newline at end of file
+}
+
+/* === Interactive widgets (v1.4 site upgrade) === */
+.interactive {
+ background: var(--bg-elevated);
+ border: 1px solid var(--border);
+ border-radius: var(--radius);
+ padding: 28px;
+ margin: 24px 0;
+}
+
+.symptom-pills {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ margin: 16px 0;
+}
+
+.symptom-pill {
+ padding: 8px 14px;
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ border-radius: 999px;
+ font-size: 0.82rem;
+ color: var(--text-muted);
+ cursor: pointer;
+ user-select: none;
+ transition: all 0.15s;
+}
+
+.symptom-pill:hover { border-color: var(--accent); color: var(--text); }
+.symptom-pill.active {
+ background: rgba(62, 232, 197, 0.15);
+ border-color: var(--accent);
+ color: var(--accent);
+ font-weight: 600;
+}
+
+.reco-card {
+ margin-top: 16px;
+ padding: 16px 18px;
+ background: #050810;
+ border: 1px solid var(--accent);
+ border-radius: 10px;
+ font-size: 0.9rem;
+}
+
+.reco-card .cmd {
+ font-family: var(--font-mono);
+ background: rgba(255,255,255,0.04);
+ padding: 2px 6px;
+ border-radius: 4px;
+}
+
+.check-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
+ gap: 8px 16px;
+ margin: 16px 0;
+}
+
+.check-item {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ font-size: 0.85rem;
+ color: var(--text-muted);
+ cursor: pointer;
+}
+
+.check-item input { accent-color: var(--accent); }
+
+.live-score {
+ display: flex;
+ align-items: center;
+ gap: 16px;
+ margin: 12px 0;
+ padding: 12px 16px;
+ background: var(--bg-card);
+ border-radius: 10px;
+}
+
+.live-score .big {
+ font-size: 2.1rem;
+ font-weight: 800;
+ color: var(--accent);
+ line-height: 1;
+}
+
+.live-score .meta { font-size: 0.85rem; }
+
+.copy-btn {
+ font-size: 0.7rem;
+ padding: 2px 8px;
+ border-radius: 4px;
+ background: rgba(62,232,197,0.1);
+ color: var(--accent);
+ border: 1px solid rgba(62,232,197,0.3);
+ cursor: pointer;
+ margin-left: 8px;
+}
+
+.copy-btn:hover { background: rgba(62,232,197,0.2); }
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 03670d2..1cf596b 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -32,7 +32,7 @@
- Open source · Tool-agnostic · Production-ready · L3 dogfood score · 6 patterns
+ Open source · Tool-agnostic · Production-ready · L3 dogfood · 6 patterns · Interactive tools
Design the system
that prompts your agents
Loop engineering moves you from "I prompt → agent responds → I prompt again"
@@ -43,6 +43,12 @@
Design the system
that prompts your agents
Read the Essay
Primitives Matrix
+
+ Or try instantly: npx @cobusgreyling/loop-init . --pattern daily-triage --tool grok
+
+ npx @cobusgreyling/loop-audit . --suggest
+
+
Get started
+
+
+ Play with it
+ Interactive Pattern Picker & Readiness Simulator
+ Pick your pain. See the exact loop + commands. Simulate your score live.
+
+
+
What's hurting right now?
+
+
CI red / flaky checks
+
PRs stalling on review/CI
+
Morning chaos — what should I do?
+
Dependabot / CVE noise
+
Merge debt / TODOs piling up
+
Stale release notes / changelogs
+
+
+
+
Recommended:
+
Scaffold:
+
First run (report-only):
+
+
+
+
+
+
+
Deep dives
Engineering, not hype
@@ -330,5 +398,197 @@ Ready to stop prompting?
+
+