way-magefile
Mage
Mage is a make-like build tool using Go. You write plain-old go functions, and Mage automatically uses them as Makefile-like runnable targets.
When to Use
- Creating build scripts for Go projects.
- Automating tasks (install, build, clean, release).
- Managing dependencies between tasks.
Core Concepts
1. Magefiles
- Any Go file with
//go:build mage(or+build magefor older Go). - Usually named
magefile.goor placed inmagefiles/directory. package main.
2. Targets
- Exported functions with specific signatures:
func Target()func Target() errorfunc Target(ctx context.Context) error- First sentence of doc comment is the short description (
mage -l).
3. Dependencies
- Use
mg.Deps(Func)to declare dependencies. - Dependencies run exactly once per execution.
mg.Depsruns in parallel;mg.SerialDepsruns serially.
Quick Start
To create a new magefile:
mage -init
Common Tasks
Running Commands:
Use github.com/magefile/mage/sh for shell execution.
import "github.com/magefile/mage/sh"
// ...
err := sh.Run("go", "build", "./...")
Clean Up:
import "github.com/magefile/mage/sh"
// ...
sh.Rm("bin")
References
- Way Conventions: See references/way-style.md for Way-specific patterns and helpers.
- API Documentation: See references/api.md for
mg,sh, andtargetpackage details. - Examples: See references/examples.md for common patterns.
More from way-platform/skills
way-go-style
Guide for writing idiomatic, effective, and standard Go code. Use this skill when writing, refactoring, or reviewing Go code to ensure adherence to established conventions and best practices.
18ileap
>-
17agents-md
This skill should be used when the user asks to "create AGENTS.md", "update AGENTS.md", "maintain agent docs", "set up CLAUDE.md", or needs to keep agent instructions concise. Guides discovery of local skills and enforces minimal documentation style.
11way-brand-identity
Write copy and use colors according to the Way brand.
11aep
AEP (API Enhancement Proposals) design standards. Use when designing, reviewing, or implementing APIs to ensure compliance with AEP conventions.
5spacelift-terraform
Spacelift for Terraform GitOps. Use when working with Spacelift stacks, runs, policies, contexts, worker pools, drift detection, or spacectl CLI.
4