# Docs - [What Spirolo does](/docs): A static reader for JavaScript and TypeScript test suites. - [Install and first run](/docs/install): One npm package, one native binary, no config. - [Reading a report](/docs/reading-a-report): What each line of `spirolo check` means, on a real run. - [How far to trust a finding](/docs/trust): How rules are measured, the four tiers, and what can fail your build. - [Configuration](/docs/configuration): The optional .spirolorc.jsonc, rule severities, and the baseline. - Rules - [Rules](/docs/rules): Sixteen rules in five families, each with its measured status. - **Weak tests** - [absence-anchor](/docs/rules/absence-anchor): A render test that only checks that things are absent. - [weak-assertion](/docs/rules/weak-assertion): Assertions that check a value exists without checking what it is. - [handler-drift](/docs/rules/handler-drift): A mock handler that cannot match the URLs your code calls. - [data-layer-mock](/docs/rules/data-layer-mock): An integration test that mocks your own data layer. - [generator-walk](/docs/rules/generator-walk): A saga test that pins the order of yields instead of the outcome. - **Merge gate** - [fail-closed-setup](/docs/rules/fail-closed-setup): A runner setup that lets a broken test pass. - [dead-skip](/docs/rules/dead-skip): A skipped test that nothing tracks. - [gate-truth](/docs/rules/gate-truth): A merge gate that does not gate. - **Unused tests** - [duplicate-test](/docs/rules/duplicate-test): Two tests that check one behaviour twice. - [redundant-test](/docs/rules/redundant-test): Two tests that kill exactly the same mutants. - [unused-mock](/docs/rules/unused-mock): A mock that nothing reaches. - [orphan-test](/docs/rules/orphan-test): A test file that never runs. - [stale-snapshot](/docs/rules/stale-snapshot): A stored snapshot no test writes any more. - **Flaky** - [flake-candidate](/docs/rules/flake-candidate): A test that times itself or reads the date twice. - [flake-observed](/docs/rules/flake-observed): A test that both passed and failed on the same code. - **Health** - [untested-hotspot](/docs/rules/untested-hotspot): A source module whose behaviour no test pins. - **Where it runs** - [CI](/docs/ci): Job summaries, GitHub annotations and SARIF. - [Editor](/docs/editor): Findings in VS Code, on every save. - [Agents (MCP)](/docs/mcp): The same analysis as MCP tools, over stdio. - **Reference** - [Commands](/docs/commands): Every subcommand, in one place.