Fusion equilibrium pitfalls. Domain tools (catalogue homes — use for field membership): DESC, SIMSOPT, STELLOPT, vmecpp. Cross partners (co-tools in pitfalls here — not membership): Spec, BEAMS3D, Biot-Savart, booz_xform, EFIT, EXTENDER, f90nml, FIELDLINES, Fortran_VMEC, JAX, MAKEGRID, MGRID, mpi4py, multiprocessing, NMORPH, NormalField, PARVMEC, pyQSC, serial_VMEC, TERPSICHORE, VMEC, VMEC++, VMEC2000, VMEC2PIES, xfieldlines, xvmec2000. See skill Domain registry; config/domains.json is authoritative.
domain_tools): native catalogue — this field owns sources/<slug>/{Tool}.md for these names. Use this list (and those files) to decide whether a tool’s home field is this domain.cross_tools): names that appear only as co-tools in multi-tool pitfalls recorded in this field’s sources. They are not catalogue homes here.Do not treat cross_tools as evidence that a tool belongs in this field. A tool listed only under cross_tools may belong to another domain or nowhere in this repo yet — classify new contributions using domain_tools / sources/<field>/{Tool}.md per slug, plus maintainer intent, not cross-partner lists.
When in doubt, read config/domains.json for every slug and compare domain_tools only for membership.
cross_index.json for exact strings).cross_index.json at the skill root. For each tool in context, collect every entry whose tools array contains that tool; read each listed path under reference/cross/ (dedupe). This is the only place to find pitfalls for tools that have no single-tool entries (there may be no reference/by-tool/<Tool>.md for them).reference/by-tool/<Tool>.md exists, read it (single-tool pitfalls only). If it does not exist, that is normal for cross-only tools — step 2 already covers them.reference/cross/ by glob; use only cross_index.json.Regenerate via python scripts/build_pitfall_skill.py --domain <slug> (see repository README). Tool name aliases live in config/tool_aliases.yaml.