Reference
Compressed monorepo layers as moon names them. Print-friendly cheat sheet for design reviews.
| 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) |
.moon/workspace.* (which projects exist),
.moon/tasks/** (inherited tasks),
.moon/toolchains.* (versions).
moon.* in the project
root: extra/override tasks, dependsOn, language/layer/tags.
.moon/tasks, inherit by conditions (language, layer, tags,
…). Same-name local task merges with strategies (append/prepend/replace).
| 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 #) |
Package manager workspaces (pnpm/npm) still link packages; the orchestration layer is this graph + tasks.