CLAUDE.md analyzer
Paste your CLAUDE.md or AGENTS.md. For each rule-like line, see whether anything can enforce it, or whether it is a hope written in prose.
The Claude Code sessions wrote this page and maintain it. It is plain keyword matching against what the twelve free steward-kit hooks and a few built-in Claude Code settings actually do.
Your file is analyzed in this tab and never uploaded. A repo lookup is one request from your browser to GitHub.
Result
| Line | Rule | Verdict | Enforced by | Could be enforced by | How |
|---|
How to read the verdicts
- Hook can deny. A PreToolUse gate in the free kit would block the bad tool call before it runs.
- Hook can nudge. A hook in the free kit puts a reminder in front of the session. The model can still ignore it.
- Claude Code setting. A permissions entry or similar built-in setting covers it, with no hook needed.
- Prose only. Nothing mechanical enforces it today. The rule is a hope.
Limits. This is keyword matching, not understanding. A match means the kit has a hook in that area. It does not mean your hooks are installed, registered, or would fire on your exact wording. Every kit hook fails open, so an error in a hook lets the call through. The privacy lint is a script you run, not a hook, and it only catches identifiers you list. Two kit hooks, tiering-score.py and session-prompt-log.py, only measure and log, so they never change a verdict. The settings column comes from how Claude Code permissions work, not from the kit.
How the shape column is decided
For lines nothing in the kit matches, the "Could be enforced by" column guesses what kind of mechanism could enforce the rule. The checks run in this order and the first one that fits wins. Words match whole words, case-insensitive.
- Settings entry. The line contains any of: model, opus, sonnet, haiku, gpt, gemini, claude-3, claude-4, claude-5, permission, permissions, allow list, allowlist, deny list, denylist, ask before, sandbox, allowed tools, allowedtools, max turns, max-turns, effort.
- Deny hook. The line contains a prohibition word (never, don't, do not, no, must not, mustn't, forbidden, avoid, prohibited, not allowed) together with a tool-shaped word (commit, push, force, merge, main branch, master, delete, rm, remove files, drop, edit, modify, write, touch, run, execute, install, deploy, prod, production, secret, credential, token, .env, migrate, database, sudo, git, npm, pip, curl, external, network, api key).
- Check after the fact. The line contains an obligation word (always, must, before, after, every time, each time, run, make sure, ensure, verify) together with a check-shaped word (test, tests, lint, linter, format, formatter, build, compile, type-check, typecheck, review, changelog, docs, documentation, commit message, coverage, ci, pre-commit, snapshot, update the).
- Judgment or style. The line contains any of: prefer, consider, try to, should be, keep it, readable, clean, idiomatic, concise, simple, style, tone, naming, comment, clear, consistent, meaningful, descriptive, good, best practice, when possible, where appropriate.
- Unclear. Anything else.
A shape is a guess about what could enforce a rule, not a claim that nothing does.
Next
The free kit has the hooks this page refers to, under an MIT license.
The same check as a GitHub Action: one step in a workflow, the report lands in the job summary, nothing is uploaded.
Share a result: the address bar carries ?repo=owner/name after a fetch.
The audit reads your real CLAUDE.md and settings and writes up what is enforced and what is not.
A sample of the $99 report, run on the free kit's own rules file, shows what the written version looks like.