Skip to content

cloudvoyant/mise-lib-template

Repository files navigation

mise-lib-template

Version Release

mise-lib-template is a template for building projects with automated versioning, testing, and GitHub Action powered CI/CD workflows. It is equipped with powerfulw scaffolding capabilities that support the following use cases:

  1. language agnostic libs built around mise -> adapt these as you need
  2. uv based python packages
  3. zig libraries and executables

Features

Here's what this template gives you off the bat:

  • A language-agnostic self-documenting task runner via mise. Keep all your project commands organized in mise.toml and mise-tasks/.
  • Environment variables and tool versions managed in mise.toml — no separate direnv or .envrc needed.
  • CI/CD with GitHub Actions - run test on MR commits, tag and release on merges to main.
  • Easy CI/CD customization with language-agnostic bash scripting - No need to get too deep into GitHub Actions for customization. Modify the publish recipe, set GitHub Secrets and you're good to go.
  • Trunk based development and automated versioning with conventional commits - semantic-release will handle version bumping for you! Work on feature branches and merge to main for bumps.
  • GCP Artifact Registry publishing (easily modified for other registries)
  • Cross-platform (macOS, Linux, Windows via WSL) - run mise install to install dependencies, or run tasks via Docker

Requirements

Run mise install to install all tools, then mise run install for npm dependencies.

Quick Start

Scaffold a new project:

# Click "Use this template" on GitHub, then:
git clone <your-new-repo>
cd <your-new-repo>
bash mise-tasks/scaffold --project your-project-name [--template uv|zig]

Or just run the scaffold script without flags for an interactive setup!

Install dependencies and adapt the template for your needs:

mise install            # Install all tools (node, shellcheck, shfmt, gcloud, claude, etc.)
mise run install        # Install npm dependencies (semantic-release and plugins)
claude /adapt           # Guided customization for your language / package manager

Type mise tasks to see all available tasks:

❯ mise tasks
build        Build the project
clean        Clean build artifacts
install      Install dependencies
publish      Publish package to registry
run          Run project locally
test         Run tests
...

Build, run, and test with mise run. The template will show TODO messages in console prior to adapting:

❯ mise run run
TODO: Implement build for mise-lib-template@2.0.0
TODO: Implement run

❯ mise run test
TODO: Implement build for mise-lib-template@2.0.0
TODO: Implement test

Task dependencies run automatically — mise run test runs build first!

Commit using conventional commits (feat:, fix:, docs:). Merge/push to main and CI/CD will run automatically bumping your project version and publishing a package.

Templates

This template supports three modes:

Template Language Package Manager Test Framework Publish Target
agnostic (any) GCP Artifact Registry
uv Python uv pytest PyPI
zig Zig zig build zig test GitHub Releases

Documentation

To learn more about using this template, read the docs:

References

About

Language agnostic platform for building libraries

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages