Skip to content

feat(devtools): move this repo to mise and lefthook's shared rules - #52

Merged
davidmoralesz merged 2 commits into
feat/ci-lintfrom
feat/mise-toolchain
Oct 9, 2026
Merged

davidmoralesz merged 2 commits into
feat/ci-lintfrom
feat/mise-toolchain

Conversation

@davidmoralesz

Copy link
Copy Markdown
Contributor

What

Second of two, stacked on feat/ci-lint.

  • mise.toml and mise.lock pin node, pnpm, lefthook, Prettier, commitlint, actionlint, zizmor, shellcheck and gitleaks. They replace install-hooks.sh, Homebrew and the devDependencies.
  • lefthook.yml runs each tool through mise exec, so the "skip if not installed" guards are gone, and it extends lefthook/org.yml for the push checks.
  • self-lint calls ci-lint. The workflows and Pins and formatting jobs keep their names because rulesets/checks-dotgithub.json requires them.
  • commitlint.config.mjs becomes .commitlintrc.yaml, which ci-pr reads, so this repo's scope list is now enforced on pull requests too. It no longer extends config-conventional: no header length limit (Dependabot titles exceed 100) and no subject-case rule.
  • package.json keeps semantic-release only.
  • ci-pre-commit.yml and .pre-commit-hooks.yaml are documented as deprecated; they stay until the consumers move.

To know

  • Dependabot does not read mise.toml. Tool bumps are manual: edit, mise lock, commit.
  • ci-lint defaults to mise 2026.10.0. The lockfile here was written by 2026.10.6; if the older release cannot read it, this PR's lint / lefthook job will say so.
  • Dependabot PR 48 (lefthook bump in package.json) is obsolete after this.
  • Follow-up: add lint / lefthook to rulesets/checks-dotgithub.json.

Tested

  • mise install --locked, then lefthook run pre-commit --all-files: all six jobs pass.
  • bash .devtools/test-hooks.sh: all pass.
  • commitlint through mise: rejects feat(nope): x, accepts feat(actions)!: x.
  • Committed and pushed through the new hooks.
  • Not tested: release.yml with the trimmed package.json. It only runs on main.

@davidmoralesz
davidmoralesz added this pull request to stack #53 October 9, 2026 17:59
mise.toml and mise.lock replace install-hooks.sh, Homebrew and the devDependencies, so
the hooks no longer skip a linter that is not installed. self-lint calls ci-lint, which
runs the same lefthook.yml. commitlint.config.mjs becomes .commitlintrc.yaml, which
ci-pr can read, so this repo's scopes are now enforced on the pull request too. pnpm is
left with semantic-release only.

ci-pre-commit and the pre-commit hooks are deprecated and stay until consumers move.
Replaces the hand-written rules in .commitlintrc.yaml with
@commitlint/config-conventional plus this repo's scopes, pinned through mise next to
the CLI. Also requires the lint / lefthook check in the ruleset, and documents how the
tools in mise.toml are bumped by hand.
@davidmoralesz
davidmoralesz merged commit 888a8d6 into main Oct 9, 2026
6 checks passed
@davidmoralesz
davidmoralesz deleted the feat/mise-toolchain branch October 9, 2026 18:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant