mise-tool-management
Use when managing development tool versions with Mise. Covers installing tools, version pinning, and replacing language-specific version managers.
What this skill does
# Mise - Tool Management Managing development tool versions across projects with Mise as a unified version manager. ## Basic Tool Installation ### Installing Tools ```bash # Install specific version mise install [email protected] mise install [email protected] mise install [email protected] # Install latest version mise install node@latest mise install python@latest # Install from .tool-versions or mise.toml mise install ``` ### Setting Tool Versions ```bash # Set global version mise use --global node@20 # Set project version mise use [email protected] mise use [email protected] [email protected] # Use latest mise use node@latest ``` ## Tool Configuration in mise.toml ### Basic Tool Definitions ```toml # mise.toml [tools] node = "20.10.0" python = "3.12.0" rust = "1.75.0" terraform = "1.6.0" ``` ### Version Prefixes ```toml [tools] # Latest patch version node = "20.10" # Latest minor version node = "20" # Latest version node = "latest" # Prefix notation terraform = "1.6" # Latest 1.6.x ``` ### Multiple Versions ```toml [tools] # Use multiple versions node = ["20.10.0", "18.19.0"] python = ["3.12", "3.11", "3.10"] ``` ```bash # Switch between versions mise shell [email protected] ``` ## Tool-Specific Configuration ### Node.js Configuration ```toml [tools] node = { version = "20.10.0", postinstall = "corepack enable" } ``` ### Python with Virtual Environments ```toml [tools] python = "3.12" [env] _.python.venv = { path = ".venv", create = true } ``` ### Custom Tool Sources ```toml [tools] # From specific registry "cargo:eza" = "latest" "npm:typescript" = "5.3" # From git repository my-tool = "git:https://github.com/org/tool.git" ``` ## Supported Languages & Tools ### Core Tools ```toml [tools] # Languages bun = "1.0" deno = "1.38" elixir = "1.15" erlang = "26.1" go = "1.21" java = "21" node = "20.10" python = "3.12" ruby = "3.3" rust = "1.75" zig = "0.11" # Infrastructure terraform = "1.6" kubectl = "1.28" awscli = "2.13" ``` ### Package Managers ```toml [tools] "npm:pnpm" = "8.10" "npm:yarn" = "4.0" "cargo:cargo-binstall" = "latest" "go:github.com/golangci/golangci-lint/cmd/golangci-lint" = "latest" ``` ## Tool Version Strategies ### Lock to Specific Versions ```toml # Production: Pin exact versions [tools] node = "20.10.0" terraform = "1.6.4" ``` ### Use Ranges for Flexibility ```toml # Development: Use minor version ranges [tools] node = "20" # Any 20.x python = "3.12" # Any 3.12.x ``` ### Latest for Experimentation ```toml # Experimental projects [tools] rust = "latest" bun = "latest" ``` ## Managing Tool Aliases ### Creating Aliases ```bash # Set alias for current directory mise alias set node lts 20.10.0 # Set global alias mise alias set --global python3 [email protected] ``` ### Using Aliases in Configuration ```toml [tools] node = "lts" python = "3.12" ``` ## Tool Verification ### Check Installed Tools ```bash # List installed tools mise list # Check current versions mise current # Verify tool installation mise doctor ``` ### Tool Information ```bash # Show tool details mise ls-remote node # List available versions mise ls-remote python # Check latest version mise latest node ``` ## Migration from Other Version Managers ### From asdf ```bash # Mise reads .tool-versions files cat .tool-versions # nodejs 20.10.0 # python 3.12.0 # Migrate to mise.toml mise use [email protected] [email protected] ``` ### From nvm ```bash # Read from .nvmrc cat .nvmrc # 20.10.0 mise use node@$(cat .nvmrc) ``` ### From pyenv ```bash # Read from .python-version mise use python@$(cat .python-version) ``` ## Best Practices ### Pin Production Dependencies ```toml # Good: Explicit production versions [tools] node = "20.10.0" terraform = "1.6.4" postgres = "16.1" ``` ### Document Required Tools ```toml # mise.toml - All project dependencies in one place [tools] node = "20.10.0" python = "3.12.0" terraform = "1.6.4" kubectl = "1.28.0" [env] PROJECT_NAME = "my-app" ``` ### Use Tool-Specific Settings ```toml [tools] # Enable corepack for package managers node = { version = "20.10.0", postinstall = "corepack enable" } # Create Python virtual environment python = { version = "3.12", venv = ".venv" } ``` ### Verify Tool Installation ```bash # In CI/CD pipelines mise install --check mise doctor # Verify specific tools mise current node mise current python ``` ## Common Patterns ### Monorepo Tool Management ```toml # Root mise.toml - shared tools [tools] node = "20.10.0" terraform = "1.6.4" # packages/api/mise.toml - additional tools [tools] "npm:typescript" = "5.3" "npm:prisma" = "5.7" # packages/web/mise.toml [tools] "npm:next" = "14.0" ``` ### Development vs Production ```toml # mise.toml - production tools [tools] node = "20.10.0" postgres = "16.1" # mise.local.toml - development tools (gitignored) [tools] "npm:nodemon" = "latest" "cargo:cargo-watch" = "latest" ``` ### Tool Updates Strategy ```bash # Check for updates mise outdated # Update to latest patch version mise upgrade node # Update all tools mise upgrade # Update with constraints mise use node@20 # Updates to latest 20.x ``` ## Anti-Patterns ### Don't Mix Version Managers ```bash # Bad: Using multiple version managers nvm use 20 mise use node@20 # Conflicts # Good: Use only Mise mise use node@20 ``` ### Don't Hardcode Tool Paths ```bash # Bad: Hardcoded paths /Users/me/.local/share/mise/installs/node/20.10.0/bin/node # Good: Use mise shims or mise exec mise exec -- node mise x -- node ``` ### Don't Skip Version Constraints ```toml # Bad: No version specified [tools] node = "latest" # Can break on updates # Good: Specify constraints [tools] node = "20.10.0" # Explicit # OR node = "20" # Controlled range ``` ### Don't Ignore Tool Dependencies ```toml # Bad: Missing required tools [tools] terraform = "1.6" # Missing: kubectl, helm for deployment # Good: Include all dependencies [tools] terraform = "1.6.4" kubectl = "1.28.0" helm = "3.13.0" ``` ## Advanced Patterns ### Conditional Tool Installation ```toml [tools] # Install based on platform node = "20.10.0" python = "3.12" # Platform-specific tools [tools."cargo:watchexec-cli"] platforms = ["linux", "darwin"] version = "latest" ``` ### Tool Installation Hooks ```toml [tools] node = { version = "20.10.0", postinstall = ''' corepack enable npm install -g npm@latest ''' } ``` ### Backend Selection ```toml # Use specific backend for tools [tools] # Use core backend (faster) node = "core:20.10.0" # Use asdf plugin ruby = "asdf:3.3.0" ``` ## Related Skills - **task-configuration**: Defining tasks that use managed tools - **environment-management**: Managing environment variables with tools
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.