Awesome-omni-skill mise-task-configuration
Use when defining and configuring Mise tasks in mise.toml. Covers task definitions, dependencies, file tasks, and parallel execution.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/cli-automation/mise-task-configuration" ~/.claude/skills/diegosouzapw-awesome-omni-skill-mise-task-configuration && rm -rf "$T"
manifest:
skills/cli-automation/mise-task-configuration/SKILL.mdsource content
Mise - Task Configuration
Defining and managing tasks in Mise for build automation, testing, and development workflows.
Basic Task Definition
Simple TOML Tasks
# mise.toml [tasks.build] description = "Build the project" run = "cargo build --release" [tasks.test] description = "Run all tests" run = "cargo test" [tasks.lint] description = "Run linter" run = "cargo clippy -- -D warnings"
Running Tasks
# Run a task mise run build mise build # Shorthand if no command conflicts # Run multiple tasks mise run build test lint # List available tasks mise tasks ls # Show task details mise tasks info build
Task Dependencies
Sequential Dependencies
[tasks.deploy] description = "Deploy the application" depends = ["build", "test"] run = "./deploy.sh"
Parallel Dependencies
[tasks.ci] description = "Run CI checks" depends = ["lint", "test", "security-scan"] run = "echo 'All checks passed'"
Mise automatically runs dependencies in parallel when possible.
File Tasks
Creating File Tasks
# Create task directory mkdir -p .mise/tasks # Create executable task file cat > .mise/tasks/deploy <<'EOF' #!/usr/bin/env bash # mise description="Deploy the application" # mise depends=["build", "test"] echo "Deploying..." ./scripts/deploy.sh EOF chmod +x .mise/tasks/deploy
File Task Metadata
#!/usr/bin/env bash # mise description="Task description" # mise depends=["dependency1", "dependency2"] # mise sources=["src/**/*.rs"] # mise outputs=["target/release/app"] # Task implementation
Advanced Task Configuration
Task Arguments
[tasks.test] description = "Run tests with optional filter" run = ''' if [ -n "$1" ]; then cargo test "$1" else cargo test fi '''
# Run all tests mise test # Run specific test mise test user_tests
Environment Variables in Tasks
[tasks.build] description = "Build with specific configuration" env = { RUST_ENV = "production", OPTIMIZATION = "3" } run = "cargo build --release" [tasks.dev] description = "Start development server" env = { NODE_ENV = "development", PORT = "3000" } run = "npm run dev"
Task Aliases
[tasks.b] alias = "build" [tasks.t] alias = "test" [tasks.d] alias = "dev"
# Use aliases mise b # Runs build mise t # Runs test
File Watching
Watch Mode Tasks
[tasks.watch] description = "Watch and rebuild on changes" run = "cargo watch -x build" [tasks."test:watch"] description = "Watch and run tests" run = "cargo watch -x test"
# Built-in watch with mise mise watch --task build
Monorepo Task Patterns
Workspace Tasks
# Root mise.toml [tasks.build-all] description = "Build all packages" depends = ["pkg-a:build", "pkg-b:build", "pkg-c:build"] run = "echo 'All packages built'" [tasks."pkg-a:build"] description = "Build package A" run = "cd packages/pkg-a && cargo build" [tasks."pkg-b:build"] description = "Build package B" run = "cd packages/pkg-b && cargo build"
Per-Package Tasks
# packages/pkg-a/mise.toml [tasks.build] description = "Build package A" run = "cargo build" [tasks.test] description = "Test package A" depends = ["build"] run = "cargo test"
Task Validation
Validate Task Configuration
# Validate all tasks mise tasks validate # Check specific task mise tasks info build
Common Validation Errors
# Error: Missing required fields [tasks.broken] run = "echo test" # Missing description # Error: Invalid dependency [tasks.deploy] description = "Deploy" depends = ["nonexistent-task"] run = "./deploy.sh" # Error: Circular dependency [tasks.a] description = "Task A" depends = ["b"] run = "echo a" [tasks.b] description = "Task B" depends = ["a"] # Circular! run = "echo b"
Best Practices
Organize Tasks by Purpose
# Build tasks [tasks.build] description = "Build production binary" run = "cargo build --release" [tasks."build:debug"] description = "Build debug binary" run = "cargo build" # Test tasks [tasks.test] description = "Run all tests" run = "cargo test" [tasks."test:unit"] description = "Run unit tests only" run = "cargo test --lib" [tasks."test:integration"] description = "Run integration tests" run = "cargo test --test '*'" # Development tasks [tasks.dev] description = "Start development server" run = "cargo run" [tasks.watch] description = "Watch and rebuild" run = "cargo watch -x run"
Use Descriptive Names
# Good: Clear, descriptive names [tasks."test:integration:api"] description = "Run API integration tests" run = "pytest tests/integration/api" # Avoid: Vague names [tasks.t1] description = "Some test" run = "pytest"
Leverage Dependencies
# Good: Explicit dependencies [tasks.deploy] description = "Deploy to production" depends = ["lint", "test", "build"] run = "./scripts/deploy.sh" # Avoid: Manual sequencing in run command [tasks.deploy] description = "Deploy to production" run = ''' cargo clippy cargo test cargo build --release ./scripts/deploy.sh '''
Use Environment Variables
# Access mise environment variables [tasks.info] description = "Show task info" run = ''' echo "Task: $MISE_TASK_NAME" echo "Project root: $MISE_PROJECT_ROOT" echo "Config root: $MISE_CONFIG_ROOT" '''
Common Patterns
Pre/Post Hooks
[tasks.build] description = "Build with pre/post hooks" depends = ["pre-build"] run = "cargo build" [tasks.pre-build] description = "Run before build" run = "echo 'Preparing build...'" [tasks.post-build] description = "Run after build" run = "echo 'Build complete!'" [tasks."build:full"] description = "Build with all hooks" depends = ["pre-build", "build", "post-build"] run = "echo 'Full build pipeline complete'"
Conditional Execution
[tasks.deploy] description = "Deploy only if tests pass" run = ''' if mise test; then ./scripts/deploy.sh else echo "Tests failed, deployment cancelled" exit 1 fi '''
Multi-Stage Builds
[tasks.build] description = "Multi-stage build" depends = ["compile", "optimize", "package"] run = "echo 'Build complete'" [tasks.compile] description = "Compile source" run = "cargo build --release" [tasks.optimize] description = "Optimize binary" depends = ["compile"] run = "strip target/release/app" [tasks.package] description = "Create package" depends = ["optimize"] run = "tar -czf app.tar.gz target/release/app"
Anti-Patterns
Don't Hardcode Paths
# Bad: Hardcoded absolute paths [tasks.build] description = "Build" run = "cd /Users/me/project && cargo build" # Good: Use relative paths and environment variables [tasks.build] description = "Build" run = "cd $MISE_PROJECT_ROOT && cargo build"
Don't Duplicate Logic
# Bad: Duplicated test logic [tasks."test:unit"] run = "cargo test --lib" [tasks."test:integration"] run = "cargo test --test '*'" [tasks."test:all"] run = "cargo test --lib && cargo test --test '*'" # Good: Use dependencies [tasks."test:all"] depends = ["test:unit", "test:integration"] run = "echo 'All tests complete'"
Don't Ignore Exit Codes
# Bad: Swallowing errors [tasks.ci] run = ''' cargo clippy || true cargo test || true echo "CI complete" ''' # Good: Fail fast [tasks.ci] depends = ["lint", "test"] run = "echo 'CI checks passed'"
Related Skills
- tool-management: Managing tool versions with Mise
- environment-management: Environment variables and configuration