The rules that cannot be broken in a PR. AGENTS.md lists them in one line each; the reasons are in CONTRIBUTING.md, "Rules that aren't negotiable".
Independent
- Behaviour comes from public documentation, general CAD conventions and user feedback. File formats come from public specifications.
- Never copy another product's code, icons, artwork, help text, tooltips, templates or materials.
- Reference tests use analytic values (
tools/oracle-analytic/) or open-source tools. Expected values never come from a commercial CAD product. - Do not drive, script, automate or extract data from commercial CAD products (Fusion, SolidWorks, Onshape, ...) for this project: no test data, measurements, command lists, ids or files produced with them.
- Command ids are our own: dotted, lower-case
<area>.<thing>[.<variant>], never another product's id.
No GPL, LGPL or AGPL code
- Do not read, copy or link OpenCASCADE, FreeCAD (including planegcs), SolveSpace, CadQuery/OCP, LibreCAD or QCAD. Do not even read their sources.
tools/freecad-oracle/runs FreeCAD as a separate program through its public scripting API to compute reference values. Nothing from FreeCAD is linked, vendored or shipped. The sketch solver and the blend operations are our own.- Permissive dependencies are fine: say which one you add and why in the PR.
THIRD-PARTY-LICENSES.txtis regenerated onmain; never edit it in a PR (cargo xtask licences --checkonly reports). - Code adapted from other permissive projects (MIT OR Apache-2.0) is noted in ATTRIBUTION.md. Projects published by storytold can serve as references for implementation conventions.
Assets: the most serious rule
- SolidCraft contains no iconography, images, fonts or artwork from commercial CAD products, ever. Screenshots of commercial CAD software are never committed.
- Every file asset is original or openly licensed and has a row in ATTRIBUTION.md.
cargo xtask assetsenforces it. - Command icons are the original SVG masters in
assets/icons/ui/design/svg/, compiled throughcrates/ui-egui/src/icon_svg.rs. - Before any icon, icon assignment or media edit, read
assets/AGENTS.md,assets/icons/ui/AGENTS.mdandassets/icons/ui/STYLE_GUIDE.md. Use the canonical bases and named finished references there; never invent a parallel icon style.cargo xtask iconsvalidates them.
The name
- SolidCraft everywhere: crates
solidcraft-*, binariessolidcraftandsolidcraft-cli,.scdesigns (.solidcraftstill opens), thesolidcraft/Nformat tag,SOLIDCRAFT_*environment variables, settings and recovery folders, the MCP server name, docs, CI and packaging. - The old name survives only in the compatibility shims listed in
docs/compatibility.md. Do not add new uses of it. - Public docs, web and Flatpak deployments use project Pages
/solidcraft/. Do not add permanent old-name Pages aliases. - Labels, parameter docs, messages and docs use the terms in the glossary (
docs/book/src/reference/glossary.md): one term for each idea. A change that adds a new idea adds its term there. - Units are millimetres and radians internally; Z is up.