Skip to content

Repository layout

A plant repository holds the whole design as text files: P&IDs as DEXPI 2.0.1 XML, everything else as YAML with a schema, decisions and reviews as Markdown. There is no database and no server-side state; git is the history, branches are design alternatives, and pull requests are design reviews.

The table below is the template's own map of the repository, as cheme init writes it:

Path Contents
plant.yaml name, stage, sheets
pid/ P&ID sheets (DEXPI 2.0.1 XML)
process/design-basis.yaml capacity, feeds, products, utilities, site
process/materials.yaml, process/flowsheet.yaml components, blocks and streams: the source of the block flow and process flow diagrams (BFD, PFD) in process/*.xml
equipment/equipment-list.yaml, piping/line-list.yaml, control/instrument-list.yaml lists, consistent with the P&IDs
control/cause-effect.yaml interlocks and trips (cause and effect)
piping/special-items.yaml (optional) tagged piping components: safety valves, silencers, rupture discs (skill lists-sync)
safety/ HAZOP studies (safety/hazop/<id>/study.yaml) and the risk matrix they rate against; safety/README.md says how
layout/, electrical/, estimate/, lca/ 3D layout, electrical, cost estimate and life cycle assessment; each folder's README.md says what goes there
checks/checks.yaml engineering-step gates (checks that must pass before a stage is signed off); checks/status.json their result at the last sign-off
reviews/ review records
runs/ one record per design session, written by cheme runs record (runs/README.md); never edited
DESIGN.md, PROGRESS.md, STAGES.md decisions, change log, stage definitions
scripts/ scripts that generate sheets (see generator: in plant.yaml)
.claude/skills/ skills: the instructions an AI agent follows when it works here
Optional files join as the design advances: the 3D layout (layout/site-plan.yaml,
layout/building.yaml, layout/equipment-placement.yaml, ...; see 3D layout),
equipment datasheets in equipment/datasheets/, the estimate inputs in estimate/, the LCA in
lca/ and the electrical list in electrical/. Every YAML kind, the file it lives in and its
fields are listed in the schema reference; cheme schema prints the
same list.

Generated files are committed with their inputs (the BFD and PFD in process/, layout/plant-model.yaml, estimate/mto.csv), so a diff shows what changed and cheme impact can tell when they are out of date. Scratch output (cheme render, cheme diff) goes to build/.