crank-health

Installation
SKILL.md

Crank health

Measure, then plan. The analyzers produce the evidence; you produce eight letters and a plan of tasks a coding agent can work and verify. Grades come from references/grading.md, the plan from assets/plan.md.

references/ and assets/ are relative to this skill's directory. The target path defaults to the current repo. Quick profile unless --deep. --only <category,…> narrows the categories; the rest read not assessed (not selected). --project repeats; the selection is the union, the rollup covers the selection only, and repo-wide tools run over the selected directories.

Every project is its own unit, so a monorepo is N projects plus the rollup: a repo-wide measure takes one pass per project directory for the project letter and one over the selection for the rollup.

Contracts

  • Zero footprint. Everything you write goes under the run dir <repo>/.crank-health/<YYYY-MM-DD>-<4 hex>/, evidence in raw/ findings/ summary/, tool caches and mirrors in scratch/. Create .crank-health/.gitignore containing * only if it does not exist; another run's dir beside yours is not yours to touch. Tools that write beside the code are redirected by the flags in the references. The footprint comparison in references/inventory.md must come back empty before you report.
  • Secrets never quoted. Each tool's redaction flag sits in its reference row, and a secret finding anchors on the rule id and the file, never the flagged line. Copies of source under scratch/ (the aislop mirror, the complexipy copy, a PR base worktree) hold every secret the repo does, so scratch/ is deleted in step 7 and the run dir is grepped before you report.
  • Quick never executes repo code. Build, test and mutation tools run only under --deep, and mutation tools only where the repo owns and installed them (an ephemeral copy fails confidently instead of saying "not available").
  • One tool never aborts the run. A tool that fails records a state and the run continues; assets/summary.md defines the five states and what each must carry. Budgets: 120 s, 300 s for Go, cppcheck and build tools, 15 min for mutation, enforced with perl -e 'alarm shift; exec @ARGV' <secs> <command…> (macOS has no timeout); a killed tool is timeout. Non-zero exit is not failure: most linters exit 1 on findings.
  • Nothing to measure is not assessed (reason), never A. All eight categories appear in every report.

Steps

Installs
7
First Seen
Sep 8, 2026