Are you the author? Sign in to claim
33 battle-tested skills + minimal .claude harness for any coding agent (Claude Code, Cursor, Codex, Gemini CLI).
▄█ ▄██████▄ ▄██████▄ ▄███████▄ ▄█ ▄█▄ ▄█ ███
███ ███ ███ ███ ███ ███ ███ ███ ▄███▀ ███ ▀█████████▄
███ ███ ███ ███ ███ ███ ███ ███▐██▀ ███▌ ▀███▀▀██
███ ███ ███ ███ ███ ███ ███ ▄█████▀ ███▌ ███ ▀
███ ███ ███ ███ ███ ▀█████████▀ ▀▀█████▄ ███▌ ███
███ ███ ███ ███ ███ ███ ███▐██▄ ███ ███
███▌ ▄ ███ ███ ███ ███ ███ ███ ▀███▄███ ███
█████▄▄██ ▀██████▀ ▀██████▀ ▄████▀ ███ ▀█▀ █▀ ▄████▀
A drop-in .claude/ harness + 49 battle-tested skills for coding agents.
Plan → Act → Verify, enforced by files on disk. Ships the floor, keeps out of your way.
# 1. drop the harness into your project (safe: skips existing files)
curl -fsSL https://raw.githubusercontent.com/Archive228/loopkit/main/install.sh | bash
# 2. open Claude Code / Cursor / Codex in the same directory
claude
# 3. write a one-line spec, then let the loop drive
echo "STATUS: not-started" > IMPLEMENTATION_PLAN.md
./run.sh
That's it. Skills load only when a task triggers them. The verifier subagent closes the loop.
Existing files are kept by default. Pass
FORCE=1to overwrite, orBACKUP=1to snapshot your current.claude/to.claude.bak-<timestamp>/before writing.
Prefer one skill over the whole floor?
npx -p claude-loopkit loopkit-add adversarial-verify
Installs only that skill into ./.claude/skills/. Pass --force to overwrite an existing copy. Browse the catalog at skills/.
Straight from my own .claude/ directory. This is the loadout I actually reach for — not a methodology, not a lifecycle, not a framework.
loopkit is:
loopkit isn't:
run.sh is 8 lines.Every skill fires inside this shape. The harness enforces it.
PLAN ──▶ ACT ──▶ VERIFY
▲ │
└────── revise ──────┘
spec-first, context-budget, tool-restraint, planner-spec-expand, sprint-contract load here.adversarial-verify + evaluator-calibration + the verifier subagent close the loop before anything ships.Full theory: Loop and Harness engineering: 7 files, 5 steps.
your-project/
├── .claude/
│ ├── CLAUDE.md # 60-line standing context (edit for your stack)
│ ├── settings.json # permission allowlist + format-on-write hook
│ ├── agents/
│ │ └── verifier.md # adversarial verifier subagent (Haiku, JSON-out)
│ ├── hooks/ # session-start bootstrap
│ └── skills/ # 49 skills, symlinked or copied
├── .mcp.json # MCP server wiring (github, context7)
├── MEMORY.md # cross-session memory index (keep terse)
└── run.sh # Plan → Act → Verify loop runner
Every file below is opinionated on purpose. Change what doesn't fit; the loop still works.
.claude/CLAUDE.md — standing context60 lines, no more. The tax on every turn. Stack, layout, commands, conventions, the three things the agent must never do. Prune weekly.
.claude/settings.json — permissions + hooksAllowlist for read-only Bash and Read; deny-list for rm -rf and force-push. PostToolUse hook runs Prettier on every Edit/Write so the diff stays reviewable.
.claude/agents/verifier.md — the adversarial subagentRuns on Haiku. Reads the diff assuming it's broken. Checks the 11 "fake done" shortcuts (see skills/adversarial-verify). Returns JSON. Does not propose fixes, does not run code, does not be polite. This is the load-bearing piece.
.claude/hooks/ — session-start bootstrapFires when the agent opens the project. Reminds it of the loop shape and points at CLAUDE.md. Zero runtime cost.
.claude/skills/ — the 49-skill libraryEach skill: YAML frontmatter with name + description, a short body, no runtime dependencies. Loads only when its trigger fires. See the full list below.
.mcp.json — MCP wiringGitHub + Context7 by default. Add your own; the harness doesn't care.
MEMORY.md — cross-session indexPreferences, decisions, feedback you keep re-applying. Prune every session or it becomes rot.
run.sh — the loop runner8 lines. Reads PROMPT.md + IMPLEMENTATION_PLAN.md, does one step, verifies, loops until STATUS: done. Fresh context each turn; state lives on disk.
49 skills across 10 tracks. Each one: name → what it does → when it fires.
passes:false, editable-passes-only → multi-session buildsinit.sh + test.sh/stop.sh/reset.sh siblings, under 120s → setting up a repo for multi-session agent workSkills stay short. When one needs a longer reference, it points here:
Three commands ship in .claude/commands/. Each loads a small set of skills and drives a fixed protocol — no hidden state.
/spec — write PROMPT.md and IMPLEMENTATION_PLAN.md before the agent touches code./verify — assume the diff is broken; run the 11-shortcut checklist and dispatch the verifier subagent./polish — batch quality pass over the current diff (simplify → reduce-nesting → kill-dead-code → a11y-pass → loading-empty-error-states → readme-audit).Pick one. All three drop the same files into your current project.
# via curl (no Node required, recommended)
curl -fsSL https://raw.githubusercontent.com/Archive228/loopkit/main/install.sh | bash
# via skills.sh (works with any agent that reads SKILL.md)
npx skills add Archive228/loopkit
# via git (if you want to fork first)
git clone https://github.com/Archive228/loopkit
cp -r loopkit/.claude your-project/
Options for the curl installer:
| Env var | Effect |
|---|---|
FORCE=1 | Overwrite existing files instead of skipping |
BACKUP=1 | Snapshot existing .claude/ to .claude.bak-<timestamp>/ before writing |
DEST=/path | Install into a specific directory instead of $PWD |
LOOPKIT_REF=<branch> | Install from a specific branch/tag (default main) |
The installer prints every write, verifies the claude CLI is on your PATH afterward, and exits non-zero if anything critical failed.
Not tied to Claude. See docs/portability.md.
Works with anything that reads SKILL.md:
Claude Code · Cursor · Codex · Gemini CLI · Windsurf · GitHub Copilot CLI
Every skill file is a plain markdown doc with a YAML header. Nothing agent-specific inside the body. If your agent reads .claude/skills/, ~/.claude/skills/, or a SKILL.md file, loopkit fits.
The bundled harness (settings.json, hooks, verifier subagent) is Claude-Code-shaped. Cursor/Codex/Gemini users can ignore the harness and use just the skills — or port the three harness files (they're small).
| loopkit | obra/superpowers | mattpocock/skills | addyosmani/agent-skills | |
|---|---|---|---|---|
| Ships a harness (settings, verifier, loop runner) | yes | no | no | no |
| Skills load only on trigger (YAML frontmatter) | yes | yes | yes | yes |
| Methodology commitment required | none | Prime Radiant | GSD-adjacent | 6-phase lifecycle |
| Skill count | 49 | ~40 | ~19 | ~24 |
| Compatible with non-Claude agents | yes | Claude-first | multi | multi |
| Install size | tiny | medium | medium | medium |
Full breakdown: docs/vs-others.md.
loopkit is deliberately not a methodology. Approaches like BMAD, Spec-Kit, and full lifecycle skill packs try to help by owning the process — but they take away the control that makes agents useful in your codebase. loopkit gives you the mini-skills and a floor to stand on. Everything else is yours to shape.
The two failure modes long-running agents actually hit (doing too much at once; premature victory) are structural, not skill-shaped. run.sh + the verifier subagent are the structural answer. The skills just make each turn cheaper. The new loop & harness track (planner-spec-expand, sprint-contract, evaluator-calibration, harness-stripping, and friends) operationalizes the multi-session discipline described in the companion article.
PRs welcome. The bar:
docs/checklists/.name, description. Nothing else is required; nothing else should be added without a reason.Adding a skill:
# 1. copy the template (once available in template/SKILL.md)
cp template/SKILL.md skills/my-new-skill/SKILL.md
# 2. write it
$EDITOR skills/my-new-skill/SKILL.md
# 3. validate the frontmatter shape
./scripts/validate-skills
# 4. open a PR
Full contribution guide: CONTRIBUTING.md.
MIT. Built to be forked. Follow the build: @archive on X · article: Loop and Harness engineering.
1000+ skills curated from Anthropic, Vercel, Stripe, and other engineering teams
Design enforcement with memory — keeps your UI consistent across a project
Detects 37 AI writing patterns and rewrites text with human rhythm across 5 voice profiles
WCAG accessibility audit — automated scanning, manual review, remediation