From mise-toolkit
Orientation for contributing to the jdx/mise Rust codebase — repo layout, build/test/lint commands, conventional-commit scopes, the hk pre-commit setup, and the rule that e2e tests must run via `mise run test:e2e` (never directly). Use whenever the user is working in the jdx/mise repo itself.
npx claudepluginhub ray-manaloto/claude-code-marketplace --plugin mise-toolkitThis skill uses the workspace's default tool permissions.
mise is a Rust CLI built with cargo. The repo's own `mise.toml` declares the toolchain and tasks.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Guides code writing, review, and refactoring with Karpathy-inspired rules to avoid overcomplication, ensure simplicity, surgical changes, and verifiable success criteria.
Share bugs, ideas, or general feedback.
mise is a Rust CLI built with cargo. The repo's own mise.toml declares the toolchain and tasks.
jdx/mise/
├── src/
│ ├── main.rs # entry point
│ ├── cli/ # subcommands (~50 files, one per command)
│ ├── config/ # mise.toml parsing, hierarchy, settings
│ ├── backend/ # 15 backends + helpers
│ ├── plugins/core/ # 13 built-in language tools
│ ├── toolset/ # version resolution, install state
│ ├── task/ # task definition + execution
│ └── ...
├── crates/vfox/ # vendored vfox crate (workspace member)
├── e2e/ # bash e2e tests, no extension, not chmod +x
├── e2e-win/ # Windows-specific e2e
├── docs/ # vitepress site for mise.jdx.dev
├── registry/ # tool short-name → backend mappings
├── settings.toml # canonical setting definitions (drives codegen)
├── mise.toml # the repo's own toolchain + tasks
└── tasks.toml # additional task definitions
These are all defined in the repo's mise.toml / tasks.toml:
| Command | Purpose |
|---|---|
mise run build (or mise run b) | cargo build, output at target/debug/mise |
mise run test (or mise run t) | unit tests + e2e tests |
mise run test:unit | unit tests only |
mise run test:e2e [path...] | e2e tests (specific files or full suite) |
mise run lint | all lint checks |
mise run lint-fix | autofix what's autofixable |
mise run format | format code |
mise run ci | format + build + test (matches CI) |
mise run snapshots | review/accept cargo insta snapshot updates |
mise run render | regenerate docs, completions, mangen, JSON schema |
mise run install-dev | install your local build to PATH |
mise --cd crates/vfox run test | run tests in the vfox crate |
mise --cd crates/vfox run lint-fix | lint-fix the vfox crate |
CLAUDE.md)mise run test:e2e <path>. The harness sets up isolated MISE_DATA_DIR per test and tears it down. The mise-toolkit plugin's block-direct-e2e.sh hook enforces this.chmod +x e2e tests. They're not executable; the harness invokes bash on them.MISE_DEBUG=1 / MISE_TRACE=1 for debug output. Not RUST_LOG.hk install --mise sets up the pre-commit hook (runs hk fix on commit). Do this once per clone.mise run lint-fix and git add the fixes before committing.chmod +x e2e files — already said this. It's important.Format: <type>(<scope>): <description> — lowercase after the colon, imperative mood.
feat: — new featuresfix: — bug fixes that affect CLI behavior (not CI/docs/infra)refactor: — code refactordocs: — docs changesstyle: — formatting (no logic)perf: — performancetest: — testschore: — maintenance, releases, deps, CIsecurity: — securityregistry: — anything in registry/ (no scope; same for new tools and fixes)install, activate, use, exec, run, etc.config, backend, env, task (note: task, not run, even though the code lives in src/cli/run.rs), vfox, python, github, release, completions, http, schema, doctor, shim, core, deps, cifix(install): resolve version mismatch for previously installed toolsfeat(activate): add fish shell supportfeat(vfox): add semver Lua module for version sortingfeat(env): add environment caching with module cacheability supportchore(ci): add FORGEJO_TOKEN for API authenticationregistry: add millerdocs(contributing): update hk usageschore: release 2026.1.6e2e/run_test.sh — the harness (read it if you're confused about isolation)e2e/assert.sh — assertion helpers (assert, assert_contains, assert_fail, assert_eq, assert_empty, assert_matches)e2e/<area>/test_<name> — individual tests, no extension, not chmod +xAdding a new mise setting requires editing settings.toml (the canonical definition file) and running mise run render:schema to regenerate the JSON schema. Then add the runtime handling in src/config/settings.rs (or wherever the existing similar setting lives).
_windows.rs (e.g., ruby_windows.rs).windows_shim_mode: exe / hardlink / symlink).e2e-win/.mise-contrib-add-backend — adding a new backendmise-contrib-add-registry — registry entries (90% case for new tools)mise-contrib-write-e2e-test — e2e bash conventionsmise-backend-expert agent — implements/reviews backend codemise-e2e-author agent — writes e2e testsCLAUDE.md