attack-loop
Run a bounded implement-attack-repair loop for a user-specified task.
Skill by btseytlin
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/btseytlin-attack-loop
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/attack-loop
What's inside
- Skill name
attack-loop- Description
- Run a bounded implement-attack-repair loop for a user-specified task. Use when work needs repeated independent criticism: perform the task, dispatch a fresh attacker, verify significant findings, repair them, and stop on a clean attack or the user's round limit.
- License
- WTFPL
- Instructions
- 105 lines in SKILL.md · view on GitHub
Files (2)
- SKILL.md
- openai.yaml · agents/
SKILL.md (first lines)
# Attack loop Use this standalone workflow when a task needs independent adversarial passes without a `make` task file. ## Require a bounded contract Require these inputs in the user's request: - Target work — free-form description of what to do. - Maximum rounds — positive whole number of attacker passes. - Stop condition — observable condition that defines a clean completion. Ask before acting if any input is missing or ambiguous. Do not invent defaults. Pick an authority level before the initial work and state it in the first update: - Read-only — inspect and report; do not change files or external state. - Write and probe — change workspace files and run temporary verification probes. - Full task authority — take actions the request already authorizes, including external writes. Change authority between rounds only when the request authorizes it. Report each change. Stop when the next needed action exceeds authority. Example: ``` Use $attack-loop to add CSV import validation. Run at most 3 rounds. Stop when malformed rows fail loudly and a fresh attack finds no confirmed defect. ``` ## Run one independent attack per round 1. Perform or repair the target work under the current authority. 2. Dispatch one fresh attacker. Pass the absolute working directory, target work, constraints, stop condition, current authority, and raw current artifacts or diff. 3. Do not pass controller rationale, proposed fixes, or earlier attacker reports. The attacker must form an independent view from the current state. 4. Give the attacker only the current authority. It may run probes but must not repair the deliverable or alter external state solely to manufacture a finding. 5. Have the attacker attack, not confirm. Adapt `uverify`'s categories: valid-input edge cases, invalid-input rejection, stated invariants and contracts, real callers and outputs, state/order/retry behavior, and the shortest end-to-end smoke path. 6. Require each attack to name the hypothesized bite and run an appropriate probe or inspection. Capture real output. An unavailable probe is a coverage gap, never a passing result. Require this attacker report: ``` Attacks run: - <hypothesis> — held | broke: <evidence> Findings: - F<n> — <severity, violated condition, concrete bad path, evidence, expected behavior> Coverage gaps: - <unrun necessary attack and blocker> ``` An attacker may return no findings. Do not require a defect, reword a prior concern, elevate a style preference, or call missing tests a bug without a violated requirement. Unsupported risks belong under coverage gaps or no report. ## Defend findings fairly For every finding, restate it, verify it against the current artifact, and classify it before changing anything: - Fix — reproduced break, violated contract or invariant, or highly certain defect with a concrete bad path; material and in scope. - Record — unsupported, duplicate, cosmetic, hypothetical, or out of scope; do not repair it merely to extend the loop. - Defer — potentially material but blocked by missing authority, infrastructure, or user direction; do not treat the round as clean. For a reproduced failure, use `udebug` before editing: reproduce, trace root cause, test one hypothesis, then make one root-cause repair. Re-run the reproduction and relevant checks after the repair. Sweep for the same defect pattern when the root cause can recur. Do not accept a finding blindly. Do not add a workaround, fallback, dependency, or refactor unless the verified defect requires it and the task scope permits it. ## Stop only on evidence Start another round after every repair. Stop early only when both hold: - The explicit stop condition has direct evidence. - The latest fresh attacker found no confirmed significant defect and no blocking coverage gap. Stop as `limit reached` after the maximum round count. Do not call this a clean completion unless both conditions above already hold. Stop as `blocked` when authority is insufficient, required evidence cannot be obtained, the task needs a material user decision, or `udebug` reaches three failed repairs for one defect. If the stop condition passes before an attack, still run one fresh attack before declaring completion. ## Report every round and the outcome Before work, state target work, maximum rounds, stop condition, and authority. After every attack, report one compact update: ``` Round <n>/<max> — <authority> - Confirmed: <finding IDs and decisions> - Recorded or deferred: <IDs and reason> - Next: repair | next attack | clean | limit reached | blocked ``` Finish with: - Outcome: `clean`, `limit reached`, or `blocked`. - Stop-condition evidence. - Authority timeline. - Round ledger: attacks, confirmed findings, repairs, and verification. - Deferred coverage gaps and required next action. Never claim success from passing unit tests, a clean diff, an attacker assertion, or an unrun smoke path. ## Terminal state Report the final outcome and leave the user with evidence for any remaining action. Do not create a task file or invoke `ureview` as part of this standalone loop.
From btseytlin/ultrapack, WTFPL.
More from btseytlin/ultrapack
- 0.658score
expand
btseytlin
Turn one user criticism into a principle-level fix: find the violated principle, every similar occurrence, and fix the shared cause.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
uexecute
btseytlin
Use to implement an approved plan.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
uverify
btseytlin
Use after execute to attack the change and demonstrate how it's broken.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
make
btseytlin
Orchestrate the full Ultrapack workflow in Codex and Pi: create or resume a task file, design, plan, execute, verify, review, and validate the observable goal.
SkillAFreshness: A★ 46Claude Code +9 - 0.655score
udesign
btseytlin
Use before any creative work — features, components, behavior changes.
SkillAFreshness: A★ 46Claude Code +9 - 0.618score
udocument
btseytlin
Use when writing or editing documentation — project docs, CLAUDE.md, READMEs, SKILL.md, docstrings, inline comments.
SkillBFreshness: B★ 46Claude Code +9 - 0.618score
qplan
btseytlin
Quickly design and plan, wait for plan approval, then execute sequential phases with focused verification and a manual try.
SkillBFreshness: B★ 46Claude Code +9 - 0.618score
git-worktrees
btseytlin
Use when a task needs an isolated checkout.
SkillBFreshness: B★ 46Claude Code +9 - 0.618score
handsoff
btseytlin
Contract for hands-off mode — the ultrapack workflow variant that minimizes user prompts after Design, takes the safest reversible path, and logs every…
SkillBFreshness: B★ 46Claude Code +9 - 0.618score
ureview
btseytlin
Use after verify passes for the future maintainer's audit — sit in the chair of the person who'll touch this code in 3-6 months and ask "what will bite us…
SkillBFreshness: B★ 46Claude Code +9 - 0.615score
udebug
btseytlin
Use on any bug, test failure, or unexpected behavior before proposing a fix.
SkillBFreshness: B★ 46Claude Code +9 - 0.615score
uplan
btseytlin
Use after design to turn a validated spec into a lean implementation plan.
SkillBFreshness: B★ 46Claude Code +9
Signals
- Stars
- 46
- Forks
- 12
- Open issues
- 1
- Last commit (this folder)
- Aug 3, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- WTFPL
- Repository
- github.com/btseytlin/ultrapack
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from btseytlin
- 0.658score
uverify
btseytlin
Use after execute to attack the change and demonstrate how it's broken.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
expand
btseytlin
Turn one user criticism into a principle-level fix: find the violated principle, every similar occurrence, and fix the shared cause.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
uexecute
btseytlin
Use to implement an approved plan.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
make
btseytlin
Orchestrate the full Ultrapack workflow in Codex and Pi: create or resume a task file, design, plan, execute, verify, review, and validate the observable goal.
SkillAFreshness: A★ 46Claude Code +9 - 0.655score
udesign
btseytlin
Use before any creative work — features, components, behavior changes.
SkillAFreshness: A★ 46Claude Code +9 - 0.618score
handsoff
btseytlin
Contract for hands-off mode — the ultrapack workflow variant that minimizes user prompts after Design, takes the safest reversible path, and logs every…
SkillBFreshness: B★ 46Claude Code +9
Cite this page
attack-loop skill. Agent Mart. https://agentmart.dev/skills/btseytlin-attack-loop (last updated 2026-10-24)