rules
The rules section controls when the rules text reaches the model, which rendering goes out, and where the text comes from.
"rules": { "onContextStart": ["startup", "resume", "clear", "compact"], "contextStartText": "full", "onSubagentStart": true, "onViolation": true, "manifest": null, "extra": null, "messagesPath": null}onContextStart
Section titled “onContextStart”The context starts that inject the rules: any of startup, resume, clear, and compact. The default is all four, so the rules are present at the start of every context. Trim the list when something else carries the rules at startup, a CLAUDE.md say; ["compact"] then covers the one start nothing else does.
contextStartText
Section titled “contextStartText”Which rendering a context start and a subagent start inject. full, the default, is every bullet with its examples and the Vale rules that check it, about 600 words. condensed is the short texts, about 330 words. The prompt after a violation always carries the condensed form with the report. Three shipped bullets have no short text, so they reach the model only through the full text.
onSubagentStart
Section titled “onSubagentStart”true, the default, injects the rules into each subagent when it spawns. A subagent starts with fresh context and never sees the main session’s injections.
onViolation
Section titled “onViolation”true, the default, injects the condensed reminder with the reply report on the prompt after a reply broke a rule. false holds the report for the next context start.
manifest
Section titled “manifest”A path to a rules manifest of your own, replacing the shipped one. Relative paths resolve against the project. A path that does not exist or is not JSON falls back to the shipped rules; session start says so once and the doctor warns. See the rules manifest and the extra file.
A path to an extra rules file. null, the default, looks for .just-say-so-rules.json in the project root or a directory above it. The file adds bullets, replaces shipped ones by id, or drops them.
messagesPath
Section titled “messagesPath”A JSON file that overrides the sentences the hooks say, per key. Unlisted keys keep the shipped English. The keys are in rules/messages.json. A relative path here resolves against the directory the hook ran from, not the project.