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/.