name: electromechanics-syntax
description: Local authoring syntax for motorized moving parts and future electromechanics sections. Use when editing assembly_definition.yaml, final_assembly, moving_parts, AssemblyPartConfig.control, or related motion syntax in planner and solution handoffs.
Electromechanics Syntax
Overview
This skill covers the solution-facing syntax for motorized moving parts. It is
the contract layer between authored handoffs and runtime controller mapping.
Use it before editing assembly_definition.yaml or solution scripts that
declare moving parts, motor controls, or future explicit electronics.
For explicit circuit, power, or wire-routing work, still load
electronics-engineering.
Read First
specs/architecture/agents/handover-contracts.mdshared/models/schemas.py../cots-parts/SKILL.md../electronics-engineering/SKILL.mdwhen the handoff includes an explicitelectronicssection or circuit-validation task
Core Rules
AssemblyDefinition.final_assemblyis the authored source of truth.moving_partsis derived from it.- Use
PartConfig.nameas the stable moving-part identifier. - Use
AssemblyPartConfig.dofsto declare motion.dofs: []means static. - Use
AssemblyPartConfig.controlonly for motorized parts. The canonical control modes areCONSTANT,SINUSOIDAL, andON_OFF. The parser accepts case-insensitive spellings, but new handoffs should use uppercase canonical values. - Keep
speedpopulated for motorized parts. Usefrequencyonly when the selected control mode needs it. - Keep COTS motor identity explicit in
assembly_definition.yaml.cots_parts. Motion syntax does not replace provenance. - Motors alone do not imply an
electronicssection. Add power or wiring only when the handoff explicitly requires it. - Do not invent backend-specific motor fields, hidden controller names, or alternate syntax layers.
Authoring Pattern
- Identify every moving part in the approved handoff.
- Bind the part name, DOFs, and control mode to the same stable label.
- If the part is COTS-backed, keep the catalog
part_idaligned with the motion contract. - If the handoff includes explicit power or wire routing, switch to
electronics-engineeringfor that part of the contract. - Keep the solution script and assembly names synchronized so the runtime can build controller maps without guessing.
Example
cots_parts:
- part_id: ServoMotor_DS3218
manufacturer: Generic
unit_cost_usd: 18.0
quantity: 1
source: catalog
final_assembly:
- name: drive_motor
config:
dofs: ["rotate_z"]
control:
mode: CONSTANT
speed: 1.0
- name: frame
config:
dofs: []
Future Expansion
- This skill will absorb explicit electronics syntax later.
- Until that lands, explicit circuit and wiring work should still use
electronics-engineering. - For geometry and COTS motor bodies, keep using
build123d-cad-drafting-skillandcots-parts.