Mage is a make/rake-like build tool implemented in Go. Instead of a DSL or Makefile syntax, users write plain Go functions in files tagged with `//go:build mage`, and the `mage` CLI turns those functions into runnable targets. The core pipeline is parse -> generate -> compile -> run: `parse/parse.go` uses `go/ast` and `go/doc` to extract targets, namespaces, aliases, defaults, and argument metadata; `mage/main.go` generates a temporary Go main program from templates; and the compiled binary is executed to run the requested target. This design gives mage first-class help text, flag parsing for target arguments, dependency ordering, and cross-platform behavior without requiring a separate scripting language. The repository is also a library and dogfoods itself. The `mg` package provides runtime support for magefiles: parallel/serial dependency execution, namespace embedding, context-aware deps, fatal error handling, and argument-wrapping adapters. The `sh` package offers small composable shell helpers for running commands, capturing output, and handling exit codes. A `target` package adds file-modification-time checks to skip unnecessary builds. The project includes an extensive test suite covering AST parsing, generated mainfile determinism, shell completions, cross-compilation, signals, and many historical edge cases. The docs site is Hugo-based and bundled under `site/`, but the core tool has no runtime dependency beyond the Go standard library. Maintenance is active: CI runs across operating systems, linting and release automation are configured, and the repository continues to ship versions. Technical drift is low for the core code, though the bundled documentation theme and some README claims lag slightly behind the Go module's declared minimum version.