Skip to content

feat: add lint rule for shiv plugin prerequisites#60

Open
olavostauros wants to merge 3 commits into
KnickKnackLabs:mainfrom
olavostauros:feat/mise-shiv-plugin
Open

feat: add lint rule for shiv plugin prerequisites#60
olavostauros wants to merge 3 commits into
KnickKnackLabs:mainfrom
olavostauros:feat/mise-shiv-plugin

Conversation

@olavostauros

@olavostauros olavostauros commented Jun 23, 2026

Copy link
Copy Markdown

Summary

Adds mise-shiv-plugin lint rule that ensures repos declaring shiv-managed tools in mise.toml have the required plugin setup. Without this, mise install fails silently on clean CI runners with "shiv is not a valid plugin name" and "custom backends is experimental" — as observed in KnickKnackLabs/chat#39.

The rule:

  1. Scans [tools] for keys matching shiv:*
  2. If found, checks [plugins] shiv = "https://github.com/KnickKnackLabs/vfox-shiv" and [settings] experimental = true
  3. Reports missing entries as FAIL, clean or no-shiv-tools as OK, file-level ignores as SKIP, missing mise.toml as INFO

Affects 6/8 KKL repos that declare shiv tools (chat, modules, notes, readme, shimmer, shiv).

Files changed

File Change
.mise/tasks/lint/mise-shiv-plugin New rule (~90 lines, config-to-TOML validation)
test/lint/mise-shiv-plugin/mise-shiv-plugin.bats 11 BATS tests
test/lint/mise-shiv-plugin/fixtures/ 7 fixture scenarios
test/lint/github-actions/fixtures/fix-lints-provisioned/mise.toml Added codebase:ignore mise-shiv-plugin to prevent cross-rule flagging

Validation

  • mise run test229/229 pass (11 new tests at indices 116–126, zero regressions)
  • mise run lint:mise-shiv-plugin . — self-hosting clean (codebase repo has no shiv tools)
  • mise run lint:shellcheck .mise/tasks/lint/mise-shiv-plugin — ShellCheck-clean
  • git diff --check — no whitespace errors

Closes #34

Adds mise-shiv-plugin lint rule that flags mise.toml files declaring
shiv-managed tools without the required [plugins] shiv entry and
[settings] experimental = true. Based on the CI failure observed in
KnickKnackLabs/chat#39.

Includes 11 BATS tests across 7 fixture scenarios, plus an ignore
directive on an existing github-actions fixture that declares shiv tools.

Implements KnickKnackLabs#34 (KnickKnackLabs/codebase)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

lint: require shiv plugin setup when mise.toml declares shiv tools

1 participant