GitHub - unravel-team/metaprogramming: A collection of common scaffolding capturing good software engineering patterns

Metaprogramming Conventions

Quickstart

  1. Copy language folder (clojure, golang, python, or typescript) to your project
  2. make doctor – verify toolchain
  3. make 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

TargetPurpose
helpShow available commands
doctorVerify required tools
initBootstrap setup
checkRun static analysis
formatApply formatting
testRun tests
buildCreate artifact

Language-Specific Conventions

Clojure

Tools: clojure CLI, clj-kondo, zprint, tagref

Targets: install, repl, check (tagref + clj-kondo + zprint)

See clojure/clojure.org

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/

See python/python.org

TypeScript

Tools: bun, node, tagref

Targets: install, check (Biome + tsc), test (Vitest), build (tsc)

Structure: src/, tests/

Workflow

make doctormake initmake testmake checkmake 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