rules
Skill1 starsChanged 32 days agoMITView on GitHub
Add, change or remove a rule, in plain words
- Reads credentials
- Deletes or force-pushes
- Commits and pushes
12 other projects use a version of this.
Adopted by
Most recently taken up by
- Beskars-Code/Skillstheir own version, first seen Nov 6, 2026
- Gabriel-Lafrance/Skillstheir own version, first seen Nov 6, 2026
- MagicJosh/rastheir own version, first seen Nov 2, 2026
- AcKeskin/contexturetheir own version, first seen Nov 1, 2026
- newkayak12/claude-skillstheir own version, first seen Nov 1, 2026
- avivsinai/bitbucket-clitheir own version, first seen Oct 13, 2026
Used with
Projects with it also use review.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
SentrySkillreview
Fixture review skill.
Also in 4 projects that use this
Other versions12 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 12
- avivsinai/bitbucket-cli★ 257same name
- ByronFinn/dev-skills★ 4same name
- yinhunfeixue/software_development_skills★ 4same name
- newkayak12/claude-skills★ 3same name
- AcKeskin/contexture★ 2same name
- AltDoug/found-issues★ 2same name
- ibahgat/oh-my-iflow★ 2same name
- wjgoarxiv/litopencode★ 2same name
- MaGe1993/Claude-Code-Base-Harness★ 1same name
- MagicJosh/ras★ 1same name
2 more not listed
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.
The file
Show its rules and text
We split this skill into the rules it gives an agent
18 rules. 0 are common, 6 are distinctive, and 12 are very specific to this project.
0
Common
Most of the 11 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
If the user wants to remove, switch off or loosen a rule, go to Removing or loosening a rule.
- Very specific: line 26
Read the current rules: run agentltl validate. If there is no AGENTLTL.yaml yet, you will create one at the project root.
- Very specific: line 29
Check the library first: run agentltl library. If a packaged rule already does what the user asked, offer it instead of writing a new one.
- Very specific: line 37
Run agentltl translate "<a command the rule is about>" for one or two typical commands, for example agentltl translate "git push --force …
- Very specific: line 39
Run agentltl tools 'git_*' to list the tools and their arguments.
- Very specific: line 40
If the argument the rule needs is not named, add or extend a spec under tools:.
- Very specific: line 52
Prefer a rule kind (never, before, require, at_most) over raw ltl/formula.
- Very specific: line 53
Always write why (Claude sees it when blocked) and, when there is a clear way to comply, fix.
- Very specific: line 66
If the user didn't say, leave the project default (settings.mode) and say which it is.
- Distinctive: line 85
Show the user: before editing anything:
- Very specific: line 98
Find it: run agentltl validate. Each rule is listed with its id, mode, what it checks, its why, and in parentheses where it comes from.
- Distinctive: line 101
If several rules could be meant, ask which one, and show their ids and one-line summaries.
- Distinctive: line 102
If none matches, say so and list the rules.
- Very specific: line 103
When a command was just refused, the refusal names the rule (Rule 'x' blocked this call).
- Very specific: line 105
Confirm: before changing anything. Name the rule, quote its why, and say what will be allowed from now on.
- Very specific: line 118
Check: run agentltl validate. The rule must be gone, or show its new mode.
- Distinctive: line 121
Never remove or loosen a rule on your own initiative, for example because it blocks what you are doing.
- Distinctive: line 125
If you came here instead of saving a memory, don't also save the rule to memory: the rule is listed to Claude at every session start.
“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Writing AGENTLTL rules
The AgentLTL plugin checks every tool call Claude makes against AGENTLTL.yaml at the
project root (and ~/.claude/AGENTLTL.yaml for rules that apply everywhere). Shell commands are
parsed into structured calls first: git commit -am x && git push -f is checked as
git_commit{message: x, all: true} then git_push{force: true}.
The user's request: $ARGUMENTS
Rule kinds, target syntax, modes and worked examples are in reference.md. Read it before you write a rule.
If the user wants to remove, switch off or loosen a rule, go to Removing or loosening a rule.
Steps
Read the current rules: run
agentltl validate. If there is noAGENTLTL.yamlyet, you will create one at the project root.Check the library first: run
agentltl library. If a packaged rule already does what the user asked, offer it instead of writing a new one. It is tested, and it gets fixes with plugin updates. Switch it on withagentltl use NAME, or with--mode Mfor another strictness, then validate and stop here. If it almost fits, write a project rule with the same id: it replaces the packaged one.- Find the real tool names and arguments. Rules refer to the names the translator produces,
not to the words in the command.
- Run
agentltl translate "<a command the rule is about>"for one or two typical commands, for exampleagentltl translate "git push --force origin main". - Run
agentltl tools 'git_*'to list the tools and their arguments. - If the argument the rule needs is not named, add or extend a spec under
tools:. That happens when the result is{"argv": [...]}(no spec), when the flag is inextra_args, or when a value landed in the wrong argument. See "When a command needs a spec" in reference.md. The spec applies to Claude's Bash calls too, not just totranslate. - Claude Code's own tools keep their names (
Edit,Write,Read,WebFetch,mcp__...) and their input fields (file_path). - Think about every way the action can be done. "Don't touch .env" covers
Edit,Write,Read, and alsocat,cp,mv,rm,sed,tee, andecho ... > .env(that last one isredirect_to). Name all of them, or use the"*"argument key.
- Run
- Draft the rule in a scratch file, not in
AGENTLTL.yamlyet.- Prefer a rule kind (
never,before,require,at_most) over rawltl/formula. - Always write
why(Claude sees it when blocked) and, when there is a clear way to comply,fix. Pick the
modefrom what the user said:The user said Mode "never", "must not", no exceptions block"warn me" / "usually not" / "unless there's a good reason" warn(Claude may insist once)"ask me first" ask"if you're stuck, ask me" retry"stop everything if…" stop"just tell me" / "flag it" logIf the user didn't say, leave the project default (
settings.mode) and say which it is.
- Prefer a rule kind (
Test the draft with steps that should and should not be blocked. Prefix each step with the expected outcome. Steps that are allowed count as executed for later steps.
agentltl check --add /path/to/draft.yaml \ "deny: git push --force" "allow: git push" \ "allow: pytest" 'deny: Edit {"file_path": ".env"}'- Include at least one case the rule must NOT catch, such as a similar but harmless command.
Include every exception the user stated ("adding new files is fine" → an
allow:step that creates a new file). - Include one case per alternative way of doing the action.
- The command exits 1 if any expectation fails. Fix the draft until it passes.
- Any
WARNINGit prints means a tool or argument name nothing produces. Fix it: such a rule never fires, or, forrequire, refuses every call.
- Include at least one case the rule must NOT catch, such as a similar but harmless command.
Include every exception the user stated ("adding new files is fine" → an
Show the user before editing anything:
- the YAML,
- a short table of the steps and their outcomes,
- anything the rule cannot see (see the limits in reference.md).
Then add the rule to
AGENTLTL.yaml, keeping the rest of the file and its comments intact. Runagentltl validateagain.
Removing or loosening a rule
The user often describes the rule rather than naming it: "remove the rule that says I can't push to main", "stop asking me before installing".
- Find it: run
agentltl validate. Each rule is listed with its id, mode, what it checks, itswhy, and in parentheses where it comes from. Match the user's words against all of these.- If several rules could be meant, ask which one, and show their ids and one-line summaries.
- If none matches, say so and list the rules.
- When a command was just refused, the refusal names the rule (
Rule 'x' blocked this call).
- Confirm before changing anything. Name the rule, quote its
why, and say what will be allowed from now on. Change it according to where it comes from:
Comes from To remove it To loosen it file …/AGENTLTL.yaml(the project's)delete its entry under rules:with the Edit tool, keeping everything elsechange its mode(e.g.block→warnorask)library:NAMEagentltl unuse NAME(switches off the whole entry). For one rule of an entry with several,agentltl disable IDagentltl use NAME --mode Muser file ~/.claude/AGENTLTL.yamleverywhere: delete it from that file. In this project only: agentltl disable IDedit its mode in that file, or replace it here with a project rule of the same id built-in(memory-first)agentltl disable memory-firsta project rule with id: memory-firstandmode: loguse,unuse,disableandenableedit the project file. Add--userto edit~/.claude/AGENTLTL.yamlinstead.agentltl enable IDundoes adisable.- Check: run
agentltl validate. The rule must be gone, or show its new mode. If the user gave an example command, runagentltl check "allow: <command>"to show it now passes.
Never remove or loosen a rule on your own initiative, for example because it blocks what you are doing. Only the user decides that. When a rule is in your way, tell the user, and let them ask for the change.
If you came here instead of saving a memory, don't also save the rule to memory: the rule is listed to Claude at every session start. Save to memory only the parts no rule can check.
For instructions that are already in CLAUDE.md or memory, the
import skill (/agentltl:import) finds them
all and converts them in one pass.
Rules apply from the next tool call; no restart is needed. A broken file disables ALL rules, so always validate after editing.
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.

