Reference

Architecture map

Compressed monorepo layers as moon names them. Print-friendly cheat sheet for design reviews.

Layers (outside → inside)

Layer What it is moon home
Workspace Repo root that owns projects, toolchain, tasks, VCS coupling .moon/ + .moon/workspace.*
Projects Apps, libs, tools — unique IDs, optional moon.* Discovered via projects globs/map; edges via dependsOn + language implicits
Project graph DAG of project relationships moon project-graph; feeds task/CI affected
Tasks Commands in a project context (lint, test, build, dev…) Per-project moon.* and/or inherited .moon/tasks/**
Targets scope:task — how you run and wire deps e.g. app:lint, :lint, ^:build
Toolchain Pinned language/tool versions for reproducible runs .moon/toolchains.* (via proto)

Config: shared vs local

Target cheatsheet

Pattern Meaning
app:lint Task lint in project app
:lint Run lint in all projects (CLI)
~:lint Closest project (cwd) or “this project” in config
^:build In config: build of each depended-on project
#frontend:lint Projects tagged frontend (quote #)

Why the graph matters

Package manager workspaces (pnpm/npm) still link packages; the orchestration layer is this graph + tasks.