agentleFS
tangency-labstangency-labs/solidcraft/skills/solidcraft-commands/SKILL.md

solidcraft-commands

Skill15k starsChanged 18 days agoApache-2.0View on GitHub

Use when adding or changing a SolidCraft command or any user-visible behaviour, or when deciding which crate code belongs in. Covers CommandSpec, command ids, programmatic calls vs dialogs, crate layering and the generated feature list.

1 other project uses a version of this.

Adopted by

Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data

Week of Sep 13: 0 new projectsWeek of Sep 20: 0 new projectsWeek of Sep 27: 0 new projectsWeek of Oct 4: 0 new projectsWeek of Oct 11: 0 new projectsWeek of Oct 18: 0 new projectsWeek of Oct 25: 0 new projectsWeek of Nov 1: 0 new projects
Sep 2026Oct 2026Nov 2026
New projects taking a version of this file each week, over the 8 weeks our latest run read: only 0 in all, so this is a hint, not a trend.

Most recently taken up by

Who's talking about tangency-labs/solidcraft

The biggest 5 of 84 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 84

Talked about on GitHub, YouTube and Bluesky (84 times).

On GitHub · 50

45 more on GitHub

On YouTube · 25

20 more on YouTube

On Bluesky · 9

4 more on Bluesky

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 0 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Add a CommandSpec to the right file in crates/engine/src/cmd/ and implement run (fn(&mut Session, &Value) -> Result<Value>).

    line 11
  2. Very specific:

    Add the label as cmd.<command id> in a pending locale file (cargo xtask i18n --add-missing lists what is missing).

    line 16
  3. Very specific:

    Run cargo xtask features to see the generated docs/features.md change, but do not commit it: main regenerates it after each merge.

    line 18
  4. Very specific:

    If the command saves something new in a design, add a format file: skills/solidcraft-file-formats/SKILL.md.

    line 19
  5. Very specific:

    If it needs a dialog or panel: skills/solidcraft-ui/SKILL.md.

    line 20
  6. Very specific:

    Only crates/kernel may use truck.

    line 33

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Adding a command

User-visible behaviour is a command. The toolbar, dialogs, sketch tools, palette, scripts, CLI, control channel and MCP all reach the same commands through Session::execute(id, params). The long form is docs/book/src/dev/commands.md.

Steps

  1. Add a CommandSpec to the right file in crates/engine/src/cmd/ and implement run (fn(&mut Session, &Value) -> Result<Value>). Fields: id, label, toolbar tab and panel (.at), icon (.icon), shortcut (.key), params doc (.params), enabled (its error string is the disabled-button tooltip).
  2. The id is our own: dotted, lower-case <area>.<thing>[.<variant>], such as solid.extrude or sketch.rectangle.two_point. Never another product's id.
  3. Validate inputs first (units, ranges, references) and return BadParams rather than building a broken feature. Parameters are hostile: see skills/solidcraft-crash-safety/SKILL.md.
  4. Give it input and output schemas: a contract and a reply type in crates/engine/src/schema/, registered with checked!, .contract and .output. A command should have them and a test warns without them; this will become required. schema/unconverted.txt only shrinks. How: docs/book/src/dev/schemas.md.
  5. Engine tests measure the result: volume, area, face/edge/vertex counts against values you can derive by hand. Where they go: skills/solidcraft-tests/SKILL.md.
  6. Add the label as cmd.<command id> in a pending locale file (cargo xtask i18n --add-missing lists what is missing); a test fails without it. See skills/solidcraft-ui-text/SKILL.md.
  7. A command the ribbon shows also needs help: help.<command id> (what it does, then when to use it) in the pending file, and its id in DOCUMENTED in crates/ui-egui/src/command_help.rs. A test fails without them.
  8. Run cargo xtask features to see the generated docs/features.md change, but do not commit it: main regenerates it after each merge.
  9. If the command saves something new in a design, add a format file: skills/solidcraft-file-formats/SKILL.md.
  10. If it needs a dialog or panel: skills/solidcraft-ui/SKILL.md.

Programmatic calls never open dialogs

engine.execute runs the JSON form. Only toolbar clicks (ui.start) start interactive tools and dialogs, which then run commands. A dialog is a front-end form that builds the parameters.

A command that changes the design is undoable by default (the session snapshots the document first), and a failing command leaves the document unchanged.

Layering

cargo xtask layers fails the build when a lower layer depends on a higher one:

L0 geom -> L1 sketch, kernel, render -> L2 doc -> L3 io -> L4 engine -> L5 ui-egui -> apps.

  • Nothing below L5 depends on egui, eframe, winit, wgpu or rfd. The UI crate is swappable.
  • Only crates/kernel may use truck.
  • The UI is thin: panels read engine state and act through app.run(id, params) or app.start(id).
  • A new module's mod line goes into the existing sorted group, not a new group at the end (cargo fmt keeps each group sorted).

Roadmap

ROADMAP.md tracks milestones; update it when a milestone task lands.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.