From live-rules
Inspect and maintain the live-rules in the project's live-rules file (.claude/live-rules.md by default, or wherever LIVE_RULES_PATH points): list every rule with its scope and status, audit them for problems (broken frontmatter, globs that match nothing, duplicates, oversized bodies, conflicts), enable or disable a rule, or explain which rules are currently active. Use when the user asks to "list my rules", "what rules are active", "show live-rules", "audit my rules", "disable the X rule", "enable the X rule", "turn off that rule", "why did Claude get that instruction", or "clean up my rules". To create or edit a rule, use add-rule instead.
How this skill is triggered — by the user, by Claude, or both
Slash command
/live-rules:manage-rulesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Read, audit, and toggle the rules in the project's live-rules file without changing what any of them
Read, audit, and toggle the rules in the project's live-rules file without changing what any of them
say. For authoring or editing rule content, use the add-rule skill. The full format is documented in
../add-rule/references/rule-format.md.
All rules live in one Markdown file. Resolve it in this order:
LIVE_RULES_PATH is set (commonly in .claude/settings.json under env), that path is the
file (project-relative, absolute, or ~-relative)..claude/live-rules.md at the project root.If the file does not exist, there are no rules yet; point the user at add-rule to create the first
one.
The file is a sequence of rule sections. Each rule is a frontmatter block between --- fences
followed by its body, and the next --- begins the next rule. Anything before the first fence is a
title or intro and is ignored. Parse each section's frontmatter to get its scope, priority, and
enabled state; the body is the instruction text.
Parse every section and present a compact table (use the description as the rule's name, falling
back to its position in the file):
| Rule | Scope | Fires when | Priority | Enabled |
|---|---|---|---|---|
| House style | global | every prompt | 0 | yes |
| React component conventions | glob | editing **/*.tsx | 0 | yes |
| API layer rules | dir | editing under packages/api | 0 | yes |
| Deploy checklist | prompt | prompt matches deploy | 0 | yes |
| Strict lint gate | glob | editing **/*.ts | 0 | no |
Derive the scope the same way the hooks do: no scope fields means global; otherwise list whichever
of globs / dirs / prompt are present. A rule can have more than one scope. If a rule also
declares include:, note it (e.g. "+ includes .claude/.codebase-info/INDEX.md"); include: is a
payload, not a scope, so a rule with only include: is still global.
Check each rule and report concrete issues (name the rule by its description):
[...], a missing
closing ---, no body at all).--- line inside a body, which the parser reads as the next rule's fence and which will
silently split or merge rules. Suggest replacing it with *** or ___.git ls-files, or a recursive listing minus the usual noise dirs). A glob matching zero files is
probably a typo or a stale path./.../flags that does not compile).include: target that does not exist: resolve each include path (project-relative, or
absolute / ~-relative) and check the file is there. A rule whose includes are all missing is
silently dropped and injects nothing, so a broken path means the rule never fires. Flag it.*.tsx-only instruction living as a
global rule, so it hits every unrelated prompt).Summarize findings as a short list of "rule: problem, suggested fix". Only change the file if the user
asks; add-rule is the right tool for rewrites.
Toggle a rule without deleting it: find its section, set enabled: true or enabled: false in that
section's frontmatter (add the field if it is absent), and save. Leave the other sections untouched.
The change takes effect on the next prompt or edit. Confirm which rule you toggled and its new state.
Given a situation ("for a normal prompt", "when I edit src/app/page.tsx", "when I say 'deploy'"),
walk the rules and report which ones would be injected and why, mirroring the hook logic:
/ is repo-anchored), plus dir rules whose directory contains
it. Global and prompt rules do not fire on edits.A rule that carries include: only fires if at least one of its included files exists; if they are all
missing it is dropped, so factor that in when explaining why a rule did or did not appear.
This is the fastest way to answer "why did Claude just follow rule X" or "why didn't it".
enabled. Send content
changes to add-rule.CLAUDE.md. Rules live only in the live-rules file.CLAUDE.md left untouchednpx claudepluginhub eigenwise/eigenwise-toolshed --plugin live-rulesCreate or edit a live-rules rule: a frontmatter-plus-body section in the project's live-rules file (.claude/live-rules.md by default, or wherever LIVE_RULES_PATH points) that gets injected into Claude's context automatically when it applies. Use when the user asks to "add a rule", "create a rule", "make a rule that...", "add a coding guideline/guardrail/convention", "enforce that ...", "always do X", "whenever I edit *.tsx do Y", "when I work in packages/api do Z", "when my prompt mentions 'deploy' remind me to ...", "load my codebase map into every session", "keep file X in front of you", or "set up live-rules". Picks the right scope (global, path/glob, directory, or prompt-keyword) and writes valid frontmatter, including an `include:` payload to inject a live file's contents. To list, audit, enable, or disable existing rules instead, use manage-rules.
Manage modular rules in .claude/rules/ with path-specific globs. Use when adding or listing rules, syncing with CLAUDE.md, or validating path frontmatter.
Guides writing effective .claude/rules/ files for Claude Code, with imperative framing and enforceability checks. Useful when creating or refining project-specific rules.