Skip to content
Rakesh Singh edited this page Oct 23, 2026 · 1 revision

Rules

Each rule is one small module in src/toolism/rules/. The full description of every rule, with its exact conditions, is generated into docs/rules.md (toolism rules prints the same list).

Safety levels

Level Id band Meaning
safe (default) SL0xx Validation-equivalent: the slim schema accepts exactly the same tool calls, and only information the model already has is removed
annotations SL1xx Still validation-equivalent, but drops annotation text (examples, long descriptions) that might help the model; measure on your own evals
changes validation SL2xx Reserved; none ship today

The safe rules, in one line each

Id Name Removes
SL001 redundant-title Titles that only repeat the property, $defs key or tool name
SL002 nullable-anyof anyOf: [{type: X}, {type: null}] → type: [X, "null"]
SL003 null-default default: null on optional properties
SL004 inline-defs Single-use $defs (inlined) and unused ones
SL005 description-whitespace Docstring indentation, trailing spaces, extra blank lines
SL006 echo-description Property descriptions that only repeat the property name
SL007 stable-order Nothing (off by default): sorts tools so prompt-cache prefixes stay stable
SL008 noop-keywords Keywords that never change validation
SL009 schema-uri $schema URIs when the schema validates the same without them

Annotation-level rules (--level annotations)

Id Name Removes
SL101 max-description-length Truncates descriptions longer than max_chars at a sentence boundary
SL102 drop-examples examples / example keywords

OpenAI strict: true tools are respected: anything strict mode requires is left alone.

Want to write a rule? CONTRIBUTING has a 3-step guide.

Clone this wiki locally