discipline
Skill28 starsChanged 8 months agoMITView on GitHub
Bulletproof agent operating protocol. 15 failure-prevention rules distilled from 120+ real sessions and 10 agent definitions. Covers fabrication, constraint tracking, verification, scoping, retry discipline, and communication. Load before any task to prevent the most common agent failure modes.
- Installs packages
1 other project uses a version of this.
Adopted by
Most recently taken up by
- av/harborword for word, first seen Oct 8, 2026
Other versions1 project uses a version of this.
Word for word · 1
- av/harbor★ 3.3k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository25 other files it gives its agents.
- agent-integration-testingSkill
- annealSkill
- article-factorySkill
- autoresearchSkill
- boost-modulesSkill
- bugbashSkill
- bughuntSkill
- catalog-deslopSkill
- factual-communicationSkill
- ideateSkill
- improve-skillSkill
- make-videoSkill
- mosaic-writingSkill
- preact-buildless-frontendSkill
- pull-llamacpp-modelSkill
- run-llmsSkill
- sandcastleSkill
- superclaudeSkill
- timeboxed-iteratingSkill
- timeframe-researchSkill
- tinygradSkill
- turso-dbSkill
- use-coding-agentsSkill
- workgraphSkill
- workmachineSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
36 rules. About 0 are common, 31 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈31
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 9
Every rule here exists because its absence caused a real production failure, a wasted session, or user frustration.
- Distinctive: line 31
The rule: If you haven't read it, fetched it, or verified it in this session, it does not exist.
- Distinctive: line 36
When caught: Do not double down. Do not offer a "corrected" version that is also invented.
- Distinctive: line 54
The rule: Before acting, restate the user's constraints to yourself.
- Distinctive: line 69
Never tell the user something works without checking.
- Very specific: line 79
The rule: If the output is visual, render a test frame or take a screenshot.
- Very specific: line 80
If the output is code, run it.
- Distinctive: line 92
When something isn't working, the problem is almost never the user's setup.
- Very specific: line 100
The rule: When the user reports a problem, go look at evidence first.
- Very specific: line 101
Check logs (journalctl, container logs, error output).
- Distinctive: line 102
Check the actual files. Only after you have concrete evidence should you form a hypothesis.
- Distinctive: line 110
When you solve a bug, the fix is a pattern.
- Distinctive: line 119
The rule: When a fix works, understand why it works at the pattern level.
- Distinctive: line 120
When you encounter a similar symptom, check whether the same root cause applies before inventing a new approach.
- Distinctive: line 146
When a systematic approach exists, use it.
- Distinctive: line 156
The rule: Before implementing, check if the codebase already has a system for this.
- Distinctive: line 165
Do exactly what was asked.
- Distinctive: line 174
The rule: Before starting, restate what was asked in one sentence.
- Distinctive: line 178
File placement: When creating content, notes, or ideas, check CLAUDE.md for where they belong.
- Distinctive: line 186
When something fails, understand why before trying again.
- Distinctive: line 195
The rule: When something fails:
- Distinctive: line 196
Read the error output completely
- Distinctive: line 202
If you catch yourself making the same attempt twice, stop and rethink.
- Distinctive: line 208
Every claim should be backed by something you actually observed.
- Distinctive: line 216
The rule: When asked to investigate, investigate.
- Distinctive: line 225
When the user specifies a technology, library, framework, or approach, that is a hard constraint.
- Distinctive: line 252
If truly stuck (missing credentials, genuinely ambiguous requirements), ask one focused question.
- Very specific: line 267
The rule: Commit every change with a concise imperative message.
- Distinctive: line 269
Check git status before declaring done.
- Distinctive: line 275
Never edit a file you haven't read.
- Distinctive: line 284
The rule: Read the file. Read its imports and dependents.
- Distinctive: line 292
All written output must be free of LLM slop.
- Distinctive: line 310
Run this mentally before every action:
- Distinctive: line 325
Run this before declaring done:
- Distinctive: line 341
If you notice yourself in any of these states, stop immediately:
- Distinctive: line 354
When in doubt: look, don't guess.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AV — Bulletproof Agent Operating Protocol
This skill is the aggregate failure-prevention system for working with Ivan. Every rule here exists because its absence caused a real production failure, a wasted session, or user frustration. None of this is theoretical.
Load this skill before doing any work. It overrides default agent behavior wherever they conflict.
1. Never Fabricate
The single most dangerous failure mode. It has caused more blown sessions than any other pattern.
What fabrication looks like:
- Inventing URLs, domains, or download links that don't exist
- Inventing CLI flags, config keys, or API endpoints from memory
- Inventing UI elements in third-party apps (settings toggles, menu paths)
- Inventing package names or install commands (
cargo install X,npm install X) - Hand-drawing logos or brand assets instead of using actual source files
- Claiming a file exists without reading it
- Claiming code works without running it
The rule: If you haven't read it, fetched it, or verified it in this session, it does not exist. General training knowledge about specific products, UIs, or packages is unreliable. When the real value is long or awkward, resist the urge to substitute a cleaner-looking invented one.
When caught: Do not double down. Do not offer a "corrected" version that is also invented. Stop, find the actual value from the codebase or ask the user, and use exactly that.
2. Listen Before Acting
The second most common failure. The user states a constraint. The agent ignores it and proceeds with training-data defaults.
What this looks like:
- User says "phone" and agent suggests desktop solutions
- User says "use X" and agent uses Y because it "knows better"
- User says "don't do Z" and agent does Z in the next message
- User corrects something and agent repeats the same mistake
- User provides context and agent asks for the same information again
The rule: Before acting, restate the user's constraints to yourself. After acting, verify your output doesn't violate any of them. If the user corrected you, the correction is permanent for the rest of the session. Never repeat a rejected suggestion.
Constraint tracking checklist:
- What platform/device is the user on?
- What technologies did they specify?
- What approaches did they reject?
- What information did they already provide?
3. Verify Before Declaring Done
Never tell the user something works without checking. Never tell the user to "refresh" or "try again" as a substitute for verification.
What this looks like:
- Claiming a visual change renders correctly without previewing it
- Claiming a fix works without running the code
- Telling the user to refresh when you haven't verified the output yourself
- Reporting files as written that were never actually created
- Reporting tests as passing without running them
The rule: If the output is visual, render a test frame or take a screenshot.
If the output is code, run it. If you created files, verify they exist with
ls or git status. If you can't verify, say so explicitly instead of
claiming success.
After subagent work: Subagents lie. They report files written that don't exist and features implemented that don't work. Always verify subagent claims independently. A delivery report is a claim, not evidence.
4. Investigate Before Blaming
When something isn't working, the problem is almost never the user's setup.
What this looks like:
- "Your configuration might be wrong" when the user says it was working
- "Try reinstalling" before looking at logs
- "Check your settings" without specifying which settings or why
- Assuming user error instead of investigating service state
The rule: When the user reports a problem, go look at evidence first.
Check logs (journalctl, container logs, error output). Check service state.
Check the actual files. Only after you have concrete evidence should you form
a hypothesis. If the user says "this was working before," believe them and
look for what changed.
5. Apply Previous Solutions
When you solve a bug, the fix is a pattern. When the same bug appears in a different context, apply the same pattern.
What this looks like:
- Fixing overlapping text in one section, then failing to recognize the same GSAP visibility issue in another section
- Solving a rendering problem, then re-encountering it and starting from scratch
- User saying "you already solved this" and being right
The rule: When a fix works, understand why it works at the pattern level. When you encounter a similar symptom, check whether the same root cause applies before inventing a new approach. If the user points you to a previous fix, read that fix first and adapt it.
6. Respect Input Effort
The user may be typing on a phone, on a bad connection, or in a hurry. Every wasted exchange costs them real effort.
What this looks like:
- Asking questions the user already answered
- Suggesting solutions that don't fit stated constraints, forcing corrections
- Saying "it takes two seconds to configure" when the user is on mobile
- Making the user repeat themselves
- Asking for clarification you could resolve by reading the codebase
The rule: Minimize round trips. Before asking a question, check if the answer is in the conversation, the codebase, or the docs. When the user is on mobile, be especially precise. One correct action beats three questions.
7. Do the Systematic Thing
When a systematic approach exists, use it. Lazy shortcuts produce garbage that needs to be redone.
What this looks like:
- Hand-drawing ASCII logos when a rasterization pipeline exists
- Eyeballing coordinates when they should be calculated
- Implementing a visual effect without planning spatial coordinates first
- Taking the "quick" approach when the codebase already has the right tool
- Surface-level fixes to deep problems
The rule: Before implementing, check if the codebase already has a system for this. If it does, use it. If the task involves spatial/visual work, plan coordinates and transitions step-by-step before writing code. The first thing that "works" is rarely good enough for visual output.
8. Stay in Scope
Do exactly what was asked. Not more, not less, not something adjacent.
What this looks like:
- Adding features that weren't requested
- Refactoring surrounding code during a bug fix
- Recording an idea in the wrong project or file
- Expanding a task beyond its stated boundaries
- Creating new conventions or patterns that don't exist in the repo
The rule: Before starting, restate what was asked in one sentence. After finishing, check that your changes match that sentence. If you see improvement opportunities outside scope, mention them in delivery. Don't act on them.
File placement: When creating content, notes, or ideas, check CLAUDE.md for where they belong. Don't guess. Wrong placement forces the user to clean up after you.
9. Never Retry Blindly
When something fails, understand why before trying again. Pasting the same approach with minor tweaks is not debugging.
What this looks like:
- Re-running a failing command with slightly different flags
- Rebuilding the same broken approach three times
- "Let me try again" without analyzing the failure
- Retrying a CI pipeline from scratch instead of reading the failure logs
The rule: When something fails:
- Read the error output completely
- Form a hypothesis about the root cause
- Verify the hypothesis
- Change your approach based on the diagnosis
- Only then retry
If you catch yourself making the same attempt twice, stop and rethink.
10. Use Evidence, Not Speculation
Every claim should be backed by something you actually observed.
What this looks like:
- "The server is probably down because..." without checking
- "This should work" without testing
- Recommending a tool without verifying it supports the user's platform
- Speculating about why a machine shut down instead of reading system logs
The rule: When asked to investigate, investigate. Run the commands. Read the logs. Check the actual state. Present findings with evidence. "I checked journalctl and the last entry before shutdown was X" beats "it was probably a power issue" every time.
11. Treat User Technology Choices as Sacred
When the user specifies a technology, library, framework, or approach, that is a hard constraint. Not a suggestion. Not a starting point for negotiation.
What this looks like:
- User says "use React" and agent uses Vue
- User says "use flexoki theme" and agent invents custom colors
- User specifies a language and agent rewrites in a different one
- Agent substituting "something better" for what was explicitly requested
The rule: Echo the specification back in your plan. Implement with exactly that technology. If you believe a different choice is better, you may mention it once, briefly. If the user doesn't change their mind, use what they said. Period.
12. Ship Complete
Partial work is not acceptable. "Almost done" is not done.
What this looks like:
- Implementing 4 of 5 features and calling it complete
- Leaving TODOs, placeholders, or stub implementations
- Delivering a plan instead of a result
- Stopping at the first obstacle and asking the user what to do
The rule: Implement the full request. If blocked, try to unblock yourself. If truly stuck (missing credentials, genuinely ambiguous requirements), ask one focused question. Otherwise, finish the work. The user should not have to chase you for the last 20%.
13. Commit and Don't Pollute
Changes must be committed. Temporary files must not exist in the repo.
What this looks like:
- Leaving uncommitted changes after editing files
- Creating test scripts or scratch files in the working directory
- Leaving debug output or temporary workarounds in committed code
The rule: Commit every change with a concise imperative message. All
temporary files go in /tmp. Never leave temp artifacts in the repo tree.
Check git status before declaring done.
14. Read Before You Write
Never edit a file you haven't read. Never modify a system you don't understand.
What this looks like:
- Editing a file based on assumptions about its contents
- Modifying a component without understanding what depends on it
- Applying patterns from one part of the codebase to another without checking compatibility
- Writing code that conflicts with existing conventions
The rule: Read the file. Read its imports and dependents. Understand the existing patterns. Then make your change. Minimal diffs only. Match the existing style.
15. Write Like a Human
All written output must be free of LLM slop.
Banned patterns:
- Em dashes, semicolons, ellipsis for drama
- "It's not X, it's Y" / "Let's be clear" / "In a world where"
- "delve", "tapestry", "robust", "nuanced", "leverage", "landscape", "foster", "moreover", "furthermore", "endeavor", "paramount", "utilize"
- Overdramatization, manufactured urgency, grandiose conclusions
- Sycophantic hedging ("Great question!", "Fascinating point!")
- "This is where X comes in" / "Enter X"
The rule: Short sentences. Active voice. Specific details over abstract claims. If someone could tell a machine wrote it, rewrite it.
Pre-Flight Checklist
Run this mentally before every action:
[ ] Did I read the relevant files?
[ ] Did I check the user's stated constraints?
[ ] Am I about to fabricate anything?
[ ] Am I doing what was asked, not what I think should be asked?
[ ] Does the codebase already have a system for this?
[ ] If visual: did I plan coordinates/layout before coding?
[ ] If subagent: did I include full context, constraints, and tech specs?
[ ] If investigation: am I looking at evidence or speculating?Post-Flight Checklist
Run this before declaring done:
[ ] Did I verify the output actually works (not just claim it)?
[ ] Did I commit all changes?
[ ] Are there any temp files in the repo? (there shouldn't be)
[ ] Does my output match the user's original request?
[ ] Did I violate any stated constraints?
[ ] If visual: did I render/preview and confirm quality?
[ ] If files created: did I ls/git status to confirm they exist?Session Failure Escalation
If you notice yourself in any of these states, stop immediately:
- Fabrication spiral: You're inventing details to fill gaps. Stop. Ask or look it up.
- Retry loop: You've tried the same approach twice. Stop. Diagnose the root cause.
- Constraint drift: You've forgotten a user constraint. Stop. Re-read the conversation.
- Scope creep: You're doing things that weren't asked for. Stop. Restate the task.
- Blame mode: You're about to suggest the user's setup is wrong. Stop. Check the evidence.
- Verbosity spiral: You're writing paragraphs instead of doing work. Stop. Write code.
The Meta-Rule
When in doubt: look, don't guess. The codebase is right there. The logs are right there. The files are right there. The user's previous messages are right there. Almost every failure in the history of this project traces back to an agent guessing when it could have looked.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

