From odin
Persists user prohibitions as durable rules in AGENTS.md or CLAUDE.md. Apply when the user says 'stop doing X', 'ban this', or 'never do that again'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/odin:banthisThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Extend the local instruction surface with a named prohibition. The op-cell is **extend**: add one hard rule, keep existing project memory intact, and make the rule visible to future sessions.
Extend the local instruction surface with a named prohibition. The op-cell is extend: add one hard rule, keep existing project memory intact, and make the rule visible to future sessions.
Banthis is for user frustration or correction that should persist. It is not a notes system, preference logger, or policy engine.
Apply immediately when the user signals a behavior should never recur:
Certainty:
Do not write a ban when:
If a requested ban conflicts with an existing ban, surface the conflict instead of rewriting history.
Extract the invariant. Identify the forbidden behavior and the reason. No moralizing.
Craft the title. <60 characters, noun phrase or imperative fragment, no markdown markers.
No silent scope shrinkUser got mad because we keep doing dumb partial workCraft the rule. One line, direct prohibition, reason included:
Do not X — reason.Choose scope.
--global.--global.Write through the managed command. From the skill directory, run:
node scripts/banthis.mjs add "<title>" "Do not X — reason."
For user-wide bans:
node scripts/banthis.mjs --global add "<title>" "Do not X — reason."
Report minimally. Say which target file received the ban and whether it was added, updated, or unchanged.
The script resolves the write target deterministically:
--global always writes ~/.claude/CLAUDE.md.AGENTS.md takes precedence over CLAUDE.md.CLAUDE.md.No repository scan. No editor adapter. No external binary.
The script owns only this range:
<!-- banthis:start -->
...
<!-- banthis:end -->
Guardrails:
# H1; if no H1 exists, prepend the section.The managed section contains a preamble asserting that bans win over the current request. Future sessions must surface conflicts instead of quietly violating bans.
node scripts/banthis.mjs add <title> <rule>
node scripts/banthis.mjs list
node scripts/banthis.mjs remove <title>
node scripts/banthis.mjs init
Shortcut:
node scripts/banthis.mjs <title> <rule>
Flags:
-g, --global target ~/.claude/CLAUDE.md
-h, --help print usage
Results:
added — no case-insensitive title match existed.updated — title matched case-insensitively and title or rule changed.unchanged — exact title and rule already present.Do not … — reason.Before yielding after a ban operation:
<!-- banthis:start --> and one <!-- banthis:end --> pair.Do not unless the user supplied a stronger exact wording.list reports the expected title and rule preview.npx claudepluginhub outlinedriven/odin-claude-plugin --plugin odinPromotes patterns from MEMORY.md to CLAUDE.md or .claude/rules/ for permanent enforcement via /si:promote. Supports auto-detection, scoped targets, and rule distillation.
Guides creation of markdown-based Hookify rules to block dangerous bash commands, warn on risky file edits, and enforce behavioral guardrails in Claude Code.
Manages behavioral rules via the HammerTime stop hook system. Creates content rules for response enforcement and timer rules for blocking stops until a deadline.