Metaprogramming Conventions
Quickstart
- Copy language folder (clojure, golang, python, or typescript) to your project
make doctor– verify toolchainmake init– bootstrap dependencies (includes git hooks)
Recommended Tools
Optional tooling configurations that can improve your development experience are available in the recommended-tools/ folder. These are not required to build or test the project.
Examples include:
direnv– Automatic environment variable loading when entering project directories
See recommended-tools/README.md for details.
Common Make Targets
| Target | Purpose |
|---|---|
help | Show available commands |
doctor | Verify required tools |
init | Bootstrap setup |
check | Run static analysis |
format | Apply formatting |
test | Run tests |
build | Create artifact |
Language-Specific Conventions
Clojure
Tools: clojure CLI, clj-kondo, zprint, tagref
Targets: install, repl, check (tagref + clj-kondo + zprint)
Golang
Tools: go, gofumpt, golangci-lint, gotestsum, tagref
Targets: sync, install-dev-tools, check (golangci-lint + tagref)
Structure: cmd/, internal/, bin/
Python
Tools: python3, uv, ruff, pytest, basedpyright, bandit, tagref
Targets: venv, install-dev-tools, check (ruff + basedpyright + bandit + tagref)
Structure: src/<package>/, tests/
TypeScript
Tools: bun, node, tagref
Targets: install, check (Biome + tsc), test (Vitest), build (tsc)
Structure: src/, tests/
Workflow
make doctor → make init → make test → make check → make build
Extending
**Add language:** Create folder, add Makefile with 7 targets, document toolchain
**Add target:** Document here, add to all Makefiles
**Modify tools:** Document rationale, update doctor target