feedback-loop/SKILL.md
Self-validate work through deterministic feedback loops with repro, measurement, and exit criteria. Use when stuck, outcomes unclear, validation needs automation across code, UI/visual, or data pipeline tasks.
npx skillsauth add sanurb/skills feedback-loopInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create fast, deterministic feedback loops so the agent can self-validate and converge.
Before any loop, find or create the repro command. In an unfamiliar codebase:
AGENTS.md, README.md, CONTRIBUTING.md for test/dev/build commandspackage.json scripts, Makefile, justfile, Taskfile, Cargo.toml, pyproject.toml.github/workflows/, .gitlab-ci.yml, Jenkinsfile for test/build steps**/*test*.*, **/*spec*.*| Signal | Loop type | Recipe | |---|---|---| | Failing tests, errors, type errors, regressions | Debugging | loop-recipes.md#debugging | | Visual output, animation, layout, rendering | UI/visual | loop-recipes.md#uivisual | | Metrics drift, ETL, data quality | Data pipeline | loop-recipes.md#data-pipeline | | Build/compile errors, dependency issues | Debugging | Use build command as repro |
If multiple match, prefer the loop with the most deterministic measurement.
| Artifact | What | Example |
|---|---|---|
| Repro | Deterministic command or URL | npm test -- auth, agent-browser open localhost:3000 |
| Expected vs observed | Explicit comparison | "expected 200, got 401" |
| Measurement method | Re-runnable check | test runner, agent-browser snapshot -i, metrics query |
Full artifact matrix per loop type: loop-recipes.md
If tmux is available, set up persistent feedback sources in adjacent panes:
| Source | Start command | Read signal |
|---|---|---|
| Test watcher | npm run test:watch / pytest-watch | tmux capture-pane -p -J -t {pane} -S -50 then grep PASS/FAIL |
| Dev server | npm run dev / cargo watch -x run | tmux capture-pane -p -J -t {pane} -S -50 then grep ERROR |
| Build watcher | tsc --watch / cargo watch -x check | tmux capture-pane -p -J -t {pane} -S -50 then grep error |
| Browser | agent-browser open localhost:3000 | agent-browser snapshot -i |
Read from adjacent pane: tmux capture-pane -p -J -t {pane} -S -50
Wait for pattern: while ! tmux capture-pane -p -t {pane} -S -20 | grep -q "pattern"; do sleep 1; done
This gives continuous feedback without re-running full commands each iteration.
If no new signal after 2 iterations:
If a bug spans domains (e.g., visual symptom but root cause in data/logic):
Stop and ask the user when:
When escalating, provide: repro command, last hypothesis, all artifacts collected.
If the repro is non-deterministic:
--seed flags)faketime, test fixtures with fixed dates)| File | Purpose | |---|---| | loop-recipes.md | Steps, tooling, artifacts, checklists per loop type | | examples.md | Full worked loop iterations with hypotheses + decisions |
development
Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub, GitLab, fp, or local markdown), triage label vocabulary, and domain doc layout. Run before first use of `fp-plan`, `fp-implement`, `fp-review`, `to-issues`, `to-prd`, `triage`, `diagnose`, `tdd`, `improve-codebase-architecture`, or `zoom-out` — or if those skills appear to be missing context about the issue tracker, triage labels, or domain docs.
development
Build a throwaway prototype to flush out a design before committing to it. Routes between two branches — a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route. Use when the user wants to prototype, sanity-check a data model or state machine, mock up a UI, explore design options, or says "prototype this", "let me play with it", "try a few designs".
tools
Control herdr (a terminal-native agent multiplexer) from inside it. Manage workspaces and tabs, split panes, spawn sibling agents, read pane output, and wait for state changes — all via CLI commands that talk to the running herdr instance over a local unix socket. Use when running inside herdr (HERDR_ENV=1). Do not use outside herdr.
documentation
Compact the current conversation into a handoff document for another agent to pick up.