Skip to content

Command line ​

bash
npx shibbo <command> [options]
CommandDoes
check <files | dirs | ->Score files and list hits with fixes
rulesPrint the rule block for an instructions file
init <harness>Set up rules, MCP and hooks for a harness
export <target>Write the rule block into one file format
show <id>One tell with its evidence
listAll tells; filter with --domain or --status
modelsMeasured models and release months
mcpStart the MCP server on stdio
hook <event>Hook entry point for harnesses (reads JSON on stdin)
--versionPrint the installed version

check ​

bash
shibbo check README.md docs/ --threshold 80
cat draft.md | shibbo check - --kind markdown
OptionDefaultDoes
--model <id>$SHIBBO_MODELWeigh the phrases this model over-uses more heavily
--threshold <n>0Exit 1 when any file scores under n. A value that isn't a number exits 2
--format <f>texttext, json or github (Actions annotations)
--alloffAlso print hits under their density limit, and the questions to judge by reading
--kind <k>from extensionFor stdin: markdown, text, html, css, code
--no-lexiconoffCurated rules only, without measured phrases
--disable <ids>noneSkip these tell ids, comma-separated
-q, --quietoffPrint only files under the threshold

The file's extension picks the rules: prose tells for Markdown and text, prose and interface tells for HTML, interface tells for CSS, interface and code tells for JSX, TSX, Vue, Svelte and Astro, and code tells for other source files.

Folders are walked recursively, skipping node_modules, .git, dist, build and hidden folders. Exit status: 0 when every file meets the threshold, 1 when one doesn't, 2 on errors.

rules ​

bash
shibbo rules --model gpt-6 --limit 10 --phrases 8
OptionDefaultDoes
--model <id>noneRank tells by this model's measured rates
--domain <list>prose,chatWhich tells to rank: prose, chat, code, ui, agent
--limit <n>14How many rules
--phrases <n>12How many measured phrases to list, when a model is given

The block opens with a Say it clearly section and, unless --domain leaves out agent, closes its list with six agent habits.

init ​

bash
shibbo init <harness> [--model <id>] [--dir <path>] [--dry-run]

init merges into existing config files, and hooks you already have stay. Harness ids: claude, codex, cursor, copilot, gemini, devin, cline, roo, aider, kiro, junie, amp, opencode, goose, zed, continue, warp. See the support table.

export ​

bash
shibbo export <claude | agents | cursor | vale> [--model <id>] [--out <dir>]

claude, agents and cursor write a marked block that later runs replace. vale writes one Vale rule per pattern tell into styles/Shibbo/.

hook ​

bash
shibbo hook <session-start | post-edit | stop> [--for <harness>]

Reads the harness's hook JSON on stdin and prints its feedback format. --for accepts claude (default), codex, cursor, gemini, copilot, devin, cline, kiro, junie. You rarely call this yourself: init writes the commands.

Measurements from Graphite’s AI Tells (2026), CC BY 4.0. Code under MIT.