dev-env-setuplisted
Install: claude install-skill mickzijdel/dev-hooks
# dev-env-setup
Bring a repo up to **an opinionated dev-environment standard** and keep it there. It covers
both Python and Rails (Ruby) project types.
## The standard (v22)
A repo is **compliant at v22** when it has all of:
- **`mise.toml`** — tools pinned (`hk`, `pkl`, stack tool, `gitleaks`, `zizmor`, `actionlint`,
`node` for jscpd), `[settings] lockfile = true` and `minimum_release_age = "4d"`, and the
`[env]` version stamp `DEV_ENV_VERSION = "22"`.
- **`mise.lock`** (committed) — reproducible, checksum-verified tool installs. See "Lockfile &
supply-chain verification".
- **`.jscpd.json`** — duplication config (`minTokens 70`, `threshold 0`, path excludes under
`ignore` — never `ignorePattern`, inert in jscpd v5).
- **`scripts/run-jscpd.sh`** (added in v14) — the shared jscpd runner holding the
version-cooldown policy; both the hk step and CI's audit job call it (CI with `--require`)
so the two gates can't drift. Copied verbatim from the template (repo formatters may re-indent it; never hand-edit the logic).
- **`hk.pkl`** — per-stack linters **plus** the dead-code + duplication audits, the
`exec-bit-scripts` gate, the `actionlint` + `zizmor` GitHub Actions checks, `gitleaks`, and
`check-added-large-files`, in one `linters` mapping shared by the `pre-commit`/`fix`/`check`
hooks. Where a hand-rolled step exactly matched an hk built-in it's now the built-in
(`gitleaks`, `check_added_large_files`, `zizmor`, `actionlint`, and — in the shell stack, wher