AI-Assisted Authoring
Use AI agents to create physically realistic twin models and plant templates. Install the model-author skill and let your agent handle research, signal design, and validation.
AI agents can author .twin.yaml models and .miravo.yaml templates from a natural-language prompt. The model-author skill teaches any compatible agent the full modeling workflow.
Install
Section titled “Install”Agent Skills CLI:
npx skills add amine-amaach/miravo/skills/model-authorClaude Code:
ln -s /path/to/miravo/skills/model-author ~/.claude/skills/model-authorCodex:
ln -s /path/to/miravo/skills/model-author ~/.codex/skills/model-authorNo dependencies. Works with any agent that supports Agent Skills.
Create a twin model for a variable frequency drive controlling an industrial fanModel a centrifugal pump with hydraulic response and cavitation faultsWrite a plant template for a water treatment facility with 3 pumping stagesThe agent follows an 8-step workflow: research the physical asset, define parameters, order members by dependency, compose generator chains, design lifecycle and faults, then self-validate against a 25-point checklist.
Phenomenon-to-Generator Mapping
Section titled “Phenomenon-to-Generator Mapping”The skill maps real-world physics to the correct generator type:
| Physical Phenomenon | Generator | Example |
|---|---|---|
| Setpoint / schedule | timetable or step | Daily pump speed profile |
| Motor acceleration | slew-rate-limiter | 200 rpm/s up, 320 rpm/s down |
| Thermal inertia | first-order-lag | Bearing temp follows speed (tau 120s) |
| Process coupling | correlated | Fuel rate = 0.19 * load + 8 |
| Stochastic load | mean-reverting-noise | Load factor drifts around 0.72 pu |
| On/off with deadband | hysteresis-relay | Compressor load/unload |
| Multi-signal combination | weighted-sum | Current = speed*k1 + load*k2 |
| Accumulation | integrator | kWh totalizer, tank level |
| Wear-dependent | health-dependent | Vibration increases with lifecycle |
Example Output
Section titled “Example Output”A speed-control chain the agent produces for a pump:
speed_setpoint: kind: variable data_type: Double access: readwrite unit: rpm eu_range: [0, 3600] generator: type: timetable repeat: true interpolation: step points: - { time: 0, value: 0 } - { time: 21600, value: 1200 } - { time: 64800, value: 900 } - { time: 79200, value: 0 }
speed_reference: kind: variable data_type: Double access: read unit: rpm generator: type: gate enabled_member: run_command input: { member: speed_setpoint } disabled_value: 0
speed_feedback: kind: variable data_type: Double access: read unit: rpm eu_range: [0, 1850] generator: type: slew-rate-limiter input: { member: speed_reference } rate_up: 220 rate_down: 320 min: 0 max: 1850Motors do not reach full speed instantly (slew-rate-limiter). Process signals are zero when the asset is off (gate).
Validation Checklist
Section titled “Validation Checklist”The agent checks every model against these rules:
schema_version: "2"present, members reference only previously declared members- No instant temperatures — must use
first-order-lag(tau 60-600s) - No instant speed changes — must use
slew-rate-limiter - Lifecycle effects observable above noise (multiplier >= 1.3)
gain * rated_input + biasproduces expected outputfactor * source_rangestays withineu_range
Limitations
Section titled “Limitations”Generators use linear math. Non-linear physics (pump power cube law, valve flow square root) are approximated with linear factors tuned for the primary operating range. The agent documents these simplifications with YAML comments.