惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
V
V2EX
量子位
Last Week in AI
Last Week in AI
Jina AI
Jina AI
博客园 - 【当耐特】
爱范儿
爱范儿
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
小众软件
小众软件
IT之家
IT之家
博客园_首页
博客园 - 聂微东
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗

Show HN

GitHub - astefanutti/shaderbang: Shebang for Shaders Show HN: Generate Claude Code Workflows using Spec Driven Development approach Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal).
GitHub - faisalishfaq2005/loopflow
faisalishfaq · 2026-06-21 · via Show HN

loopflow logo

npm License

Stop prompting your coding agent. Design the loop that prompts it.

LoopFlow turns Claude Code into a system that runs itself: you declare a goal, a pipeline of agents, and a verification gate in one YAML file — LoopFlow iterates until the gate passes, the budget runs out, or the attempt limit is hit. One agent writes, a different agent checks, and a memory file makes every run smarter than the last.

$ loopflow run test-and-fix

Iteration 1/3
  ▸ fix …
    done · $0.31 · resume: claude --resume 072f1abb…
  ▸ review (gate) …
    gate FAIL · $0.12
    │ The date parser fix only handles ISO strings; the failing test
    │ also feeds epoch millis. Root cause not addressed.

Iteration 2/3
  ▸ fix …
    done · $0.28
  ▸ review (gate) …
    done · $0.11

✓ success · 2 iteration(s) · $0.82

📺 Demo video

LoopFlow demo — release-check loop, 2 iterations

LoopFlow demo — release-check loop, 2 iterations


Why loops?

For two years the workflow was: write a prompt, read the output, write the next prompt. You held the tool the whole time.

That's changing. As Boris Cherny (creator of Claude Code) put it: "I don't prompt Claude anymore. I have loops running that prompt Claude."

A loop is a recursive goal: you define what "done" looks like, and the agent iterates until it gets there. But doing this raw has three sharp edges:

  1. Agents grade their own homework. The model that wrote the fix will happily declare it works.
  2. Unattended loops burn money. A loop running itself is also a loop making mistakes — and spending tokens — unattended.
  3. The agent forgets everything between runs. Every run re-derives what the last run already learned.

LoopFlow is a small, sharp tool built around exactly those three problems:

Problem LoopFlow answer
Self-grading Gates — a separate agent, with a separate persona, must output VERDICT: PASS before the loop ends
Runaway cost Budgets — a hard USD ceiling enforced twice: by the runner and by Claude Code's own --max-budget-usd on every step
Amnesia Memory — a plain Markdown file per loop, appended after every run, injected into every prompt. The agent forgets; the repo doesn't
Collisions Worktrees — opt-in git worktree isolation, so loops never fight you (or each other) for the working tree
Auditability Every step logs a session idclaude --resume <id> drops you into the full transcript of any step, any time

No API keys, no daemon, no cloud. If claude works in your terminal, loopflow works.

Quickstart

npm install -g @loopflow/cli   # or: npx @loopflow/cli

cd your-project
loopflow init             # scaffolds .loopflow/ with three starter loops
loopflow run test-and-fix --dry-run   # see exactly what each agent will be told
loopflow run test-and-fix             # run it for real

Requirements: Node 18+, Claude Code installed and authenticated.

Anatomy of a loop

# .loopflow/loops/test-and-fix.yaml
name: test-and-fix
description: Run the test suite, fix failures, verify the fix.

budget:
  max_usd: 2.00        # hard ceiling for the whole run, all iterations included
  max_iterations: 3    # how many attempts the gate may reject

worktree: false        # set true to run in an isolated git worktree

defaults:
  permission_mode: acceptEdits

steps:
  - id: fix
    role: >            # persona — appended to Claude's system prompt
      You are a careful maintainer. You make the smallest change that fixes
      the problem, and you never weaken a test to make it pass.
    prompt: |
      Run this project's test suite. Diagnose and fix the root cause of any
      failure. Re-run to confirm. Summarize what you changed and why.

  - id: review
    gate: true         # ← the loop cannot succeed until this step says PASS
    role: >
      You are a skeptical senior engineer reviewing a change you did not
      write. You trust nothing without evidence.
    prompt: |
      A previous agent claims to have fixed failing tests. Inspect the diff,
      re-run the suite yourself, and check no test was weakened or deleted.

What happens when you run it

            ┌──────────────────────────────────────────────┐
            │              iteration (≤ max)               │
            │                                              │
 memory ──▶ │  step: fix ──▶ step: review (gate) ──┐       │
   ▲        │      ▲                               │       │
   │        │      └── reviewer feedback ◀── FAIL ─┤       │
   │        └──────────────────────────────────────┼───────┘
   │                                               │ PASS
   └──────────────── run record ◀──────────────────┘
  • Each step is one headless Claude Code run (claude -p). Steps see the loop's memory, the outputs of earlier steps in the iteration, and — on retries — the gate's feedback.
  • A gate must end with VERDICT: PASS or VERDICT: FAIL. No verdict counts as FAIL: an unverified pass is not a pass.
  • On FAIL, the loop starts over with the reviewer's feedback injected into every prompt.
  • Every run appends a record to .loopflow/memory/<loop>.md — outcome, cost, and the final summary — which the next run reads.

Here's what that looks like in a real run — a release-check loop catching a debug artifact the fix step missed:

Loop retries after gate rejects iteration 1

Gate passes all tests but catches a leftover console.log — feedback injected into the next iteration

Gate confirms the artifact is gone — VERDICT: PASS, 3 iterations, $0.61

The starter loops

loopflow init gives you three loops designed to be stolen from:

  • test-and-fix — fixer + skeptical reviewer gate. The canonical write/verify pair.
  • debt-audit — a discovery loop. Maintains .loopflow/reports/debt-audit.md and uses memory to track what got fixed, what's new, and what keeps being ignored.
  • docs-sync — finds documentation that drifted from the code, fixes it in an isolated worktree, and a gate verifies every claim against the source.

Got a loop of your own? Contribute it to the cookbook — community loops live in loops/.

Scheduling — the heartbeat

LoopFlow deliberately ships no daemon. Use the scheduler you already have:

# cron (Linux/macOS) — audit debt every Monday at 9am
0 9 * * 1  cd /path/to/project && loopflow run debt-audit

# Windows Task Scheduler
schtasks /create /tn "debt-audit" /sc weekly /d MON /st 09:00 ^
  /tr "cmd /c cd /d C:\path\to\project && loopflow run debt-audit"

CI works too — a GitHub Action that runs loopflow run docs-sync weekly and opens a PR from the kept worktree branch is ~20 lines.

Staying the engineer

A loop changes the work — it doesn't delete you from it. LoopFlow's design assumes three things stay true:

  • Verification is still on you. Gates catch the obvious failures, but --verbose and claude --resume <session-id> exist so you can read what the loop actually did. Read it.
  • Comprehension debt is real. The faster a loop ships code you didn't write, the faster the gap grows between what exists and what you understand. Memory files and kept worktrees are designed to be read by humans, not just machines.
  • The comfortable posture is the dangerous one. When the loop runs itself, it's tempting to stop having an opinion. Design the loop with judgment — then keep judging the output.

Build the loop. But build it like someone who intends to stay the engineer, not just the person who presses go.

CLI reference

Command What it does
loopflow init [--force] Scaffold .loopflow/ with starter loops
loopflow list List loops with steps, gates, and budgets
loopflow validate [name] Validate loop definitions (all by default)
loopflow run <name> Run a loop
--dry-run Print every composed prompt; invoke nothing
-i, --iterations <n> Override budget.max_iterations
-b, --budget <usd> Override budget.max_usd
-v, --verbose Print full step outputs

Exit codes: 0 success · 1 loop failed (gate exhausted, budget, error) · 2 configuration error. Cron- and CI-friendly.

Programmatic API

Everything the CLI does is exported:

import { loadLoop, runLoop } from "@loopflow/cli";

const loop = loadLoop(process.cwd(), "test-and-fix");
const result = await runLoop(loop, { root: process.cwd() });
console.log(result.outcome, result.costUsd);

Roadmap

  • loopflow daemon — built-in scheduler with cron expressions in loop.yaml
  • Parallel steps (fan-out across worktrees)
  • Structured gate verdicts via --json-schema
  • Loop run history & loopflow logs
  • Adapters for other headless agents (Codex CLI, …)

Contributing

The most valuable contribution is a loop that solved a real problem for you — see CONTRIBUTING.md. Code contributions: the engine is ~600 lines of typed, tested TypeScript; npm test runs in under a second.

License

MIT