import
Skill1 starsChanged 32 days agoMITView on GitHub
Turn CLAUDE.md and memory into enforced rules
- Installs packages
16 other projects use a version of this.
Adopted by
Most recently taken up by
- BermanRoman/promt-seo-geotheir own version, first seen Nov 8, 2026
- buildomator/buildomatortheir own version, first seen Nov 4, 2026
- Anglesite/anglesite-skillstheir own version, first seen Oct 27, 2026
- John-Daniels/loretheir own version, first seen Oct 13, 2026
- Holojerm/drawthesystemtheir own version, first seen Oct 11, 2026
- skullninja/coco-workflowtheir own version, first seen Oct 11, 2026
Used with
Projects with it also use export, report and 1 more.
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.
soilmassSkillexport
Animation export configurations including format selection, resolution, framerate, quality, and optimization settings. Use when rendering animations for web, mobile, video, or social media. Provides tokens for all export parameters across Lottie, GIF, video, and sprite sheet formats.
Also in 3 projects that use this
MicrosoftSkillreport
Turn an exploration (threads, findings, charts) into a single Markdown report — note, blog post, executive summary, KPI dashboard, slide brief, or multi-section analytical report, with embedded charts.
Also in 3 projects that use this
OpenAISkillaudit
Audit or critique a product flow, journey, workflow, funnel, onboarding path, checkout path, settings path, screen, or multi-step product experience by capturing screenshots first, then reporting UX, design, and accessibility findings inline from that evidence. Use Figma only when the user explicitly asks for a board. Use when the user asks to audit, review, critique, inspect, assess, analyze, evaluate, or give feedback on a product experience.
Also in 3 projects that use this
Other versions16 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 16
- ZimoLiao/scholaraio★ 585same name
- buildomator/buildomator★ 102same name
- StarRocks/starrocks-debug-skills★ 77same name
- crisandrews/ClawCode★ 64same name
- myclaude-sh/myclaude-creator-engine★ 25same name
- Anglesite/anglesite-skills★ 15same name
- jamillazarev/multica-ops★ 11same name
- skullninja/coco-workflow★ 7same name
- michaelengland/deckwright★ 2same name
- enkerewpo/zoresearch★ 1same name
6 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
We split this skill into the rules it gives an agent
9 rules. 0 are common, 2 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 12 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Read it before you draft anything.
- Very specific: line 22
Scan: run agentltl memory scan --json (add --user if given), and agentltl library --json.
- Very specific: line 49
If unsure, choose not-a-rule.
- Very specific: line 65
Write why from the statement's own reason (memory often has a Why: line), and fix from its How to apply:, if it has one.
- Very specific: line 67
Add from: {file: <path>, line: <n>, id: <id>}.
- Very specific: line 80
Ask the user: Use AskUserQuestion with multiSelect: true, one question per memory file, or per theme when a file has more than 4 candidates.
- Very specific: line 87
After the questions, list the not-a-rule statements in one short paragraph, so the user sees that nothing was dropped silently.
- Very specific: line 106
If they say yes, replace each converted statement with (enforced by AGENTLTL rule <id>).
- Distinctive: line 109
Never delete a memory file.
“Common” is measured: kept by at least 6 in 10 of the 12 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
Turning memory into rules
What CLAUDE.md, .claude/rules/ and auto memory say is only read, and can be forgotten.
An AGENTLTL rule is checked on every tool call. This skill finds the statements in memory
that are really rules about tool calls, and turns them into tested rules, one approval at a
time. Everything else stays in memory, where it belongs.
Arguments: $ARGUMENTS (--user: the user's own memory, whose rules go in
~/.claude/AGENTLTL.yaml).
The rule syntax is in the rules skill's reference.md. Read it before you draft anything.
Steps
Scan: run
agentltl memory scan --json(add--userif given), andagentltl library --json. The scan lists the memory files and the statements in them that read like instructions about actions (candidate), each with:id: the statement's id, used byfrom:anddecline;file,line,section(the heading it sits under),text, andcontext(an auto-memory file's body: read it, the details are there);commands: the commands it quotes, translated into the calls a rule names (git_submodule_update {"init": true, "recursive": true}).needs_speclists calls with no spec yet, whose options a rule can't name;target:projectoruser, the rule file a rule from it belongs in.
Statements already covered by a rule (
from:) or declined before are left out.--allshows every statement. If nothing is left, say so and stop.With more than about 40 statements, hand each file to a subagent with steps 2 and 3 and this file's path. Ask each one for its candidates as YAML, so the memory text doesn't fill this conversation.
Sort each statement into exactly one class:
Class When Example librarya library entry already does it (on or off) "never add Claude as co-author" → no-claude-coauthorruleit names an action and the check is on the call: its tool, its arguments, what came before it, how many times " git submodule update --init— NEVER--recursive"partialpart of it can be checked, part is judgment "do not pip-install into a host env": a bare pip installcan be caught, "host" can't be fullynot-a-rulea fact, a preference about code or prose, a plan, a judgment "prefer vLLM over TransformersModel", "report against the same run's baseline" If unsure, choose
not-a-rule. A wrong refusal costs the user more than a missed rule, and memory still holds the statement. Statements about how to write code are almost never rules: AGENTLTL sees tool calls, not the code inside them.- Draft a rule for each
library,ruleandpartialstatement:- Library: name the entry. If it is already on and does what the statement says,
the statement is covered: note it, and record it with step 6's
--fromonly. - Ground it in real calls. Use the statement's
commands, andagentltl translatefor any other command it implies. For aneeds_speccall, write a spec undertools:in the same draft (reference.md, "When a command needs a spec"), and translate again to confirm the option now has a name. - Pick the mode from the words, never stricter than the text:
- "never", "must not", NEVER →
block; - "avoid", "prefer", "usually", "don't … unless", or any exception the rule can't see →
warn; - "ask me first", "check with me" →
ask.
- "never", "must not", NEVER →
- Write
whyfrom the statement's own reason (memory often has a Why: line), andfixfrom its How to apply:, if it has one. - Add
from: {file: <path>, line: <n>, id: <id>}. The path is relative to the project root, or begins with~for files in the home directory.
- Library: name the entry. If it is already on and does what the statement says,
the statement is covered: note it, and record it with step 6's
Test every draft with
agentltl check --add <draft>.yaml. Build the steps from the statement:deny:(orask:) the command it forbids, written as the memory writes it;allow:each exception it states ("inside docker is fine" →allow: docker compose run --rm harness pip install x);allow:a similar command that must pass (git submodule update --init).
Fix the draft until the check passes with no WARNING. A rule that can't pass its own statement's cases is
not-a-rule. Say why when you present it.- Ask the user. Use AskUserQuestion with
multiSelect: true, one question per memory file, or per theme when a file has more than 4 candidates. Each option's label is the rule id. Its description quotes the statement briefly, then gives the mode and what gets refused, like this:"NEVER --recursive" (CLAUDE.md:9) → block: git submodule update --recursive.- For a
partialrule, also say what stays unchecked. - For a
libraryentry, write "packaged rule" in the description. - After the questions, list the
not-a-rulestatements in one short paragraph, so the user sees that nothing was dropped silently. - Without AskUserQuestion, show a numbered list and ask for the numbers.
- For a
Apply what was ticked, adding
--userto each command when the statement'stargetisuser:- a library entry:
agentltl use NAME --from ID. Run it for an entry that is already on too: it records the statement as covered. - your own rules: add them under
rules:of the target file (the project'sAGENTLTL.yaml, or~/.claude/AGENTLTL.yaml), with theirtools:specs, keeping the rest of the file; - for anything unticked:
agentltl memory decline ID..., so the next scan doesn't ask again.agentltl memory forget IDundoes it.
Then run
agentltl validate. Each new rule showsfrom <file>:<line>.- a library entry:
- Leave the memory as it is, unless the user asks otherwise. It still helps Claude
plan before acting; the rule refuses the call if the plan goes wrong.
- Offer once: "Replace the converted lines in memory with a pointer to the rule?"
- If they say yes, replace each converted statement with
(enforced by AGENTLTL rule <id>). Thememory-firstrule warns once on that edit. That's expected: repeat the same call. - Never delete a memory file.
- Summarise: the number of rules added and their modes, the specs added, what was
declined, and what stays in memory as not-a-rule. Running
/agentltl:importagain later only shows what's new.
Rules apply from the next tool call; no restart is needed.
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.

