Agents Best Practices
DenisSergeevitch/agents-best-practices
A skill your agent uses when designing, generating an MVP blueprint for, auditing, troubleshooting, refactoring, or explaining an agentic harness for any domain.
Scaffold a well-designed agent loop with best-practice coaching and a cross-model review council.
$ npx skills add ksimback/looper --skill looper -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ksimback/looper looper --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "looper" agent skill from https://github.com/ksimback/looper/tree/main into .claude/skills/looper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "looper", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ksimback/looper --skill looper -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ksimback/looper looper --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "looper" agent skill from https://github.com/ksimback/looper/tree/main into .agents/skills/looper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "looper", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ksimback/looper --skill looper -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ksimback/looper looper --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "looper" agent skill from https://github.com/ksimback/looper/tree/main into .cursor/skills/looper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "looper", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ksimback/looper --skill looper -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ksimback/looper looper --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "looper" agent skill from https://github.com/ksimback/looper/tree/main into .gemini/skills/looper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "looper", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ksimback/looper looperInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ksimback/looper --skill looper -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "looper" agent skill from https://github.com/ksimback/looper/tree/main into .github/skills/looper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "looper", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ksimback/looper --skill looper -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ksimback/looper looper --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "looper" agent skill from https://github.com/ksimback/looper/tree/main into .opencode/skills/looper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "looper", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
looperScaffold a well-designed agent loop with best-practice coaching and a cross-model review council.
Looper is an agent skill from ksimback/looper. Scaffold a well-designed agent loop with best-practice coaching and a cross-model review council. Use when the user wants to design, build, or set up an agent loop, iterative agent workflow, self-review loop, LLM-as-judge loop, multi-model council, reviewer/judge gate, or /goal-style looping process. Start from a named pattern template (security-scan, code-review, bug-hunt, docs-sync, research-synthesis) or from a blank interview. Guide goal refinement, typed verification criteria, reviewer and judge selection…
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 84 other files, including scripts and reference files (for example `.github/workflows/ci.yml`, `CHANGELOG.md` and `CONTRIBUTING.md`).
It sits in AI & LLM Engineering, covering Autonomous loops, LLM evaluation and Security review. The repository describes itself as: Design visual, review-gated agent loops for Claude Code before you run them. The licence is MIT.
11 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8a9b798. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteBashFrom allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python, from the files we listed), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Looper loads about 2.7k tokens when it runs, and up to ~4.7k if it reads all its reference files. Until then it costs about 182 tokens; SKILL.md has 1,070 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
- Default redaction globs are `.env`, `.env.*`, `secrets/**`, and `**/*.key`.allowed-tools: Read, Write, BashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from ksimback/looper at commit 8a9b798, republished under its MIT licence (© ksimback). 1,070 words, ~2,693 tokens.
.claude/skills/looper/SKILL.md (or your agent's skills folder). This skill also uses 77 other files; get the full folder from GitHub.Use Looper as a loop design coach and scaffolder. During design, interview,
critique, validate, and write files. After emission, offer to run the loop in
the current session using RUN_IN_SESSION.md; keep run-loop.py as the
advanced external runner.
--template <name> from the
/looper arguments. If no target is given, use ./looper-output. If the
target contains an existing loop.yaml, treat the task as an edit/resume
instead of a fresh scaffold. If a template was requested, follow Template
Mode below instead of the blank-slate interview in step 3.references/goal-rubric.md.references/verification-rubric.md.references/council-rubric.md.references/control-rubric.md.references/model-detection.md.revise_until_clean must name a judge member
or human as verdict_source.max_iterations, a revision cap on
each gate, a no-progress stop, and either a budget cap or an explicit human
stop point.loop.yamlloop.resolved.jsonLOOP.mdRUN_IN_SESSION.mdrun-loop.pyloop-workspace/README.mdloop.yaml, resolve the helper Python (see Helper Python
below) and run:
"$LOOPER_PYTHON" ${CLAUDE_SKILL_DIR}/scripts/looper.py compile <target>/loop.yaml --out <target>/loop.resolved.json --render <target>/LOOP.md --session-prompt <target>/RUN_IN_SESSION.md
Then run
"$LOOPER_PYTHON" ${CLAUDE_SKILL_DIR}/scripts/looper.py lint <target>/loop.yaml
and relay the findings: fix any error[...] before continuing (the spec
would not behave as written), and surface warning[...] lines to the user
as design coaching they may accept or address.RUN_IN_SESSION.md directly as the active task. If no, explain that
the same file is the easy restart path and run-loop.py is available for
advanced external execution.The pattern library lives at ${CLAUDE_SKILL_DIR}/templates/loops/ — one
directory per template containing a complete, compilable loop.yaml (with
{{PLACEHOLDER}} tokens marking project-specific slots), a README.md
(use-when, placeholder table, customization notes), and optionally
scripts/ with helper checkers. The catalog index is
templates/loops/README.md.
A template is a pre-answered interview, not a bypass of design review:
loop.yaml, the edit/resume
rule in step 1 wins: do not overwrite it with a template. Say the
directory already has a loop and ask the user to pick an empty target or
confirm they want it replaced before continuing.--template has no name, an unknown name, or the user asks what is
available, show the catalog table (template + use-when) and let them pick.loop.yaml and README.md. Use the template as the
seed instead of a blank spec.{{PLACEHOLDER}} slot named in the template README, run
the host-model stage against detected CLIs (detect-models) and swap
host / council invocations to what is actually installed and authed,
then confirm target and workspace paths.{{ token remains in loop.yaml. The compiler
prints looper: warning: unresolved template placeholders remain ...
for this case — treat that warning as a blocker, not advice.scripts/ directory (when present)
into <target>/scripts/ alongside the standard emitted files, before
running compile.loop.yaml, loop.resolved.json, or model registries..env, .env.*, secrets/**, and **/*.key.loop.yaml human-readable and commented where useful. The emitted
runner reads only loop.resolved.json.RUN_IN_SESSION.md as the default/easy execution handoff. It is meant
for the current LLM session or a future pasted prompt.templates/run-loop.py exactly unless the user explicitly asks to edit
the external runner contract.The installer creates a private venv inside the skill directory. Its Python
lives at .venv/bin/python on macOS/Linux and .venv/Scripts/python.exe on
Windows. Shell state does not persist between commands, so prefix every helper
invocation below with this resolution (works in POSIX shells and Git Bash on
Windows):
LOOPER_PYTHON="${CLAUDE_SKILL_DIR}/.venv/bin/python"; [ -x "$LOOPER_PYTHON" ] || LOOPER_PYTHON="${CLAUDE_SKILL_DIR}/.venv/Scripts/python.exe"; [ -x "$LOOPER_PYTHON" ] || { LOOPER_PYTHON=python3; "$LOOPER_PYTHON" -c "" >/dev/null 2>&1 || LOOPER_PYTHON=python; }The final fallback executes the candidate rather than just locating it: on
Windows, python3 on PATH is often the Microsoft Store alias stub, which
exists but cannot run scripts. If no candidate can execute -c "", tell the
user to rerun the Looper installer (it creates the venv).
Each command below assumes the Helper Python resolution is prefixed in the same shell invocation:
"$LOOPER_PYTHON" ${CLAUDE_SKILL_DIR}/scripts/looper.py detect-models --write"$LOOPER_PYTHON" ${CLAUDE_SKILL_DIR}/scripts/looper.py register-model <id> --invoke "<cmd> [args...]""$LOOPER_PYTHON" ${CLAUDE_SKILL_DIR}/scripts/looper.py compile <target>/loop.yaml --out <target>/loop.resolved.json --render <target>/LOOP.md --session-prompt <target>/RUN_IN_SESSION.md--strict to fail on warnings, --json for tooling):
"$LOOPER_PYTHON" ${CLAUDE_SKILL_DIR}/scripts/looper.py lint <target>/loop.yaml"$LOOPER_PYTHON" ${CLAUDE_SKILL_DIR}/scripts/looper.py session-prompt <target>/loop.resolved.json --out <target>/RUN_IN_SESSION.mdUse this shape and customize labels:
+--------------------------------+
| 1. Goal + context |
| read sources |
+--------------------------------+
|
v
+--------------------------------+
| 2. Draft plan.md |
| state -> state.json |
+--------------------------------+
|
v
+--------------------------------+
| 3. Plan gate |
| verdict: reviewer-1 |
+--------------------------------+
| needs work -> revise <= 3 -> step 2
| pass
v
+--------------------------------+
| 4. Write delivery-N.md |
| log -> run-log.md |
+--------------------------------+
|
v
+--------------------------------+
| 5. Delivery gate |
| verdict: reviewer-1 |
+--------------------------------+
| needs work -> revise <= 3 -> step 4
| pass
v
+--------------------------------+
| 6. Final output |
| all gates clean |
+--------------------------------+
Stops: pass gates | max 12 iterations | no progress x2 | budget 30m, $5.0, 2000000 tokensprogrammatic, judge, or human.revise_until_clean gate has a valid verdict_source.loop_control has iteration, revision, no-progress, and wall-clock or budget
caps.run-log.md and state.json path.loop.resolved.json, LOOP.md, and RUN_IN_SESSION.md compile
successfully before handoff.© ksimback, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 77 other files (scripts, references) in the repository root of ksimback/looper.
Open the folder on GitHubat commit 8a9b798
Looper next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Looper this skillksimback/looper | 710 | — | ~2.7k | Automated safety check: Notes | MIT | |
| Agents Best PracticesDenisSergeevitch/agents-best-practices | 2.4k | — | ~7.4k | Automated safety check: Pass | MIT | |
| Loop Architectfabricioctelles/skills | 106 | — | ~2.1k | Automated safety check: Notes | MIT | |
| Clawpathy AutoresearchClawBio/ClawBio | 1.2k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Evalagentevals-dev/agentevals | 162 | — | ~904 | Automated safety check: Pass | Apache-2.0 | |
| Autocontext Knowledge Creatorgreyhaven-ai/autocontext | 1.3k | — | ~964 | Automated safety check: Pass | Apache-2.0 |
DenisSergeevitch/agents-best-practices
A skill your agent uses when designing, generating an MVP blueprint for, auditing, troubleshooting, refactoring, or explaining an agentic harness for any domain.
fabricioctelles/skills
Design well-structured agent loops with best-practice coaching and cross-model review gates before you run them.
ClawBio/ClawBio
Eval-driven skill tuning. An agent skill from ClawBio/ClawBio.
agentevals-dev/agentevals
Evaluate and score agent behavior against a golden reference.
greyhaven-ai/autocontext
Runs the `autoctx` CLI to improve an approach to a task over several generations, score or refine a single output and inspect what a run produced.
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
Categories
Scaffold a well-designed agent loop with best-practice coaching and a cross-model review council. Looper is an agent skill from ksimback/looper. Scaffold a well-designed agent loop with best-practice coaching and a cross-model review council.
Looper fits situations like: the user wants to design; set up an agent loop; iterative agent workflow; self-review loop.
Run `npx skills add ksimback/looper --skill looper -a claude-code`. Or copy the skill folder (the ksimback/looper repository) into .claude/skills/looper in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ksimback/looper --skill looper -a codex`. Or copy the skill folder (the ksimback/looper repository) into .agents/skills/looper in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ksimback/looper --skill looper -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/looper, .gemini/skills/looper, .github/skills/looper and .opencode/skills/looper in your project.
Going by SKILL.md and its folder, Looper needs Python for the scripts in its folder. Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Bash.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Looper is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Looper: Agents Best Practices (DenisSergeevitch/agents-best-practices, 2.4k stars), Loop Architect (fabricioctelles/skills, 106 stars), Clawpathy Autoresearch (ClawBio/ClawBio, 1.2k stars) and Eval (agentevals-dev/agentevals, 162 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ksimback (a GitHub user) maintains it in ksimback/looper, which has 710 GitHub stars. The repository was last updated on August 9, 2026.
Source: ksimback/looper on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.