Skip to content

unravel-team/metaprogramming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

A collection of common scaffolding capturing good software engineering patterns

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors