CLI and detector reference
Generated by pnpm docs:generate from the built CLI and detector registry.
Version 0.29.0, JSON schema 0.8.0.
See agent usage, configuration, and scoring for interpretation.
Commands
Section titled “Commands”Usage: crimes [options] [command]
A crime scene investigator for your codebase. Built for agents, readable byhumans.
Options: -V, --version output the version number --no-init suppress the first-run auto-init prompt --init force the first-run auto-init prompt even if config exists --no-skill-update skip automatic skill refresh and update notices -h, --help display help for command
Commands: init [options] Set up config and optional agent skills, or safely refresh installed skills. ignore [options] <id-or-fingerprint> Suppress a specific finding by id or fingerprint. Requires --reason and writes .crimes/suppressions.json. unignore [options] <fingerprint> Remove a suppression entry from .crimes/suppressions.json by stable fingerprint. audit-suppressions [options] [path] List every entry in .crimes/suppressions.json with age and concerns about stale or vague reasons. explain [options] <id-or-fingerprint> Show a long-form rationale for one finding, by id or fingerprint. scan [options] [path] Scan a repository for maintainability crimes. context [options] <file> Inspect a single file: known crimes, likely tests, and agent-safe editing notes. hotspots [options] [path] Rank files by change risk using Git churn and current scan findings. diff [options] <range> Report new, fixed, and unchanged crimes between two Git refs. baseline Snapshot current findings to .crimes/baseline.json, or check against it. verdict [options] Summarise whether this branch makes the repo cleaner, worse, unchanged, or mixed. feedback [options] [fingerprint-or-id] Capture per-finding verdicts (tp/fp/known) to feed the calibration loop. Writes .crimes/feedback.jsonl and, on `fp`, an auto-suppression that resurfaces for re-confirmation on the next minor crimes bump. triage [options] [path] Walk findings and assign per-finding dispositions (fix-now / fix-this-PR / needs-design / wont-fix / scaffolding). migrate-pins [options] [path] Preview fingerprint migrations for triage, suppressions and baseline; apply a reviewed JSON plan. hook [options] Claude pre-edit hook: read tool input on stdin and return advisory context.
Tips: scope the scan to what you're changing — that's the whole trick: crimes scan --files a.ts,b.ts planning a change to known files crimes scan --related-to <file> …and everything importing it, or imported by it crimes scan --changed --base main reviewing edits you already made bare `crimes scan` audits the whole repo — useful, but rarely what you want mid-task. run `crimes context <file>` before editing — findings + likely tests + agent notes for one file. run `crimes init --agents` once; normal use refreshes generated skills or shows an update notice.Use crimes <command> --help for that command’s complete options.
scan --changed selects files; it does not distinguish old findings from new ones.
Use diff, verdict, or a baseline when you need a finding delta.
Detectors
Section titled “Detectors”70 registered detectors; 5 optional and off by default.
An optional id in detectors.enable adds that detector without disabling the defaults.
| ID | Charge | Default |
|---|---|---|
accessible_interaction_risk | Accessible Interaction Risk | Off (optional) |
action_label_drift | Action Label Drift | On |
agent_permission_sprawl | Loaded Agent | On |
boolean_naming_drift | Unprefixed Boolean | Off (optional) |
boolean_naming_drift.py | Boolean naming drift (Python) | Off (optional) |
circular_dependency | Circular Dependency | On |
circular_dependency.py | Circular Dependency (Python) | On |
command_drift_docs_code_drift | Docs Reference Missing Command | On |
commented_out_code | Commented-Out Code | On |
commented_out_code | Commented-Out Code (Universal) | On |
concept_alias_drift | Concept Alias Drift | On |
config_drift | Environment Roulette | On |
contract_drift | Contract Split-Brain | On |
copy_ia_drift | Copy / IA Drift | On |
cross_language_concept_alias_drift | Cross-language concept alias drift | On |
cross_language_route_drift | Cross-language route drift | On |
cross_language_type_drift | Cross-language type drift | On |
date_string_concat | Date String Sewing | On |
deep_import | Deep Import Abuse | On |
deep_import.py | Deep Import (Python) | On |
dependency_provenance_gap | Phantom Accomplice | On |
design_token_escape | Raw Style Concentration | Off (optional) |
direct_date | Direct Date.now() / new Date() | On |
direct_date.py | Direct clock read (Python) | On |
docs_code_drift | Docs-Code Drift | On |
dst_naive_arithmetic | DST-Naive Day Math | On |
duplicate_component_shape | Duplicate Component Shape | On |
duplicated_navigation_source | Duplicated Navigation Source | On |
duplicated_policy | Policy Doppelgänger | On |
duplicated_role_status_plan_check | Duplicated Role / Status / Plan Check | On |
exact_duplicate_block | Exact Duplicate Block | On |
finder_duplicate_filename | Finder Duplicate Filename | On |
hardcoded_local_path | Localhost-on-Disk | On |
hardcoded_localhost | Dev-Server URL | On |
high_fan_in_fan_out | High Fan-In / Fan-Out | On |
large_file | Large File | On |
large_function | Large Function | On |
large_function.py | God Function (Python) | On |
layer_violation | Layer Violation | On |
locale_drift | Host-Locale Drift | On |
logic_in_comments | Logic in Comments | On |
magic_domain_literal_scatter | Magic Domain Literal Scatter | On |
missing_agent_context | Missing Agent Context | On |
mixed_utc_local_methods | Half-UTC, Half-Local | On |
mixed_utc_local_methods.py | Mixed UTC and local clock reads (Python) | On |
mock_saturation | Mock Alibi | On |
name_behavior_mismatch | Name / Behaviour Mismatch | On |
near_duplicate_block | Near-Duplicate Block | On |
negative_flag_maze | Negative Flag Maze | On |
option_bag_junk_drawer | Option Bag Junk Drawer | On |
orphaned_destination | Orphaned Destination | On |
oversized_raster | Oversized Raster | On |
parallel_destination | Parallel Destination | Off (optional) |
pass_through_abstraction | Abstraction Laundering | On |
permission_ia_drift | Permission IA Drift | On |
raster_should_be_vector | Icon-Sized Raster | On |
responsive_fragility | Responsive Fragility | On |
return_shape_roulette | Return Shape Roulette | On |
route_metadata_drift | Route Metadata Drift | On |
singular_plural_type_mismatch | Plural Mismatch | On |
svg_with_embedded_raster | SVG With Embedded Raster | On |
swallowed_error | Catch and Release | On |
sync_io_in_hotpath | Sync I/O in Hot Path | On |
sync_io_in_hotpath.py | Blocking I/O in a hot path (Python) | On |
timezone_unsafe_parse | Timezone Roulette | On |
todo_density | TODO/FIXME Density | On |
unbounded_async_fanout | Concurrency Stampede | On |
unsafe_retry | Double Jeopardy | On |
weak_test_signal | Weak Test Signal | On |
weak_test_signal.py | Weak test signal (Python) | On |