Install
openclaw skills install @siliconpeasant/wavedrom-genGenerate official WaveDrom timing diagrams from natural language.
openclaw skills install @siliconpeasant/wavedrom-genTurn natural language into editable WaveJSON/JSON5 and render it with the pinned official wavedrom main-package engine. Treat wavedrom@3.6.2 renderAny behavior as the syntax authority; use custom lint only as a quality layer.
<descriptive-name>.json5.<descriptive-name>.svg by default.datasheet.annotations.Classify the request. Use signal for natural-language timing diagrams. Preserve or generate official assign and reg diagrams when explicitly requested. Treat a supplied specification, RTL, trace, or timing table as authoritative.
Build a timing contract. Identify the time unit or clock domain, active edge, initial state, signals and active levels, ordered events, latency, transfer conditions, final state, and unresolved assumptions.
Resolve consequential ambiguity. Ask only when a missing fact would materially change an implementation-accurate diagram. For a conceptual draft, apply conventional defaults and disclose them.
Read the official syntax reference. Read references/wavejson-official.md before authoring WaveJSON. For standard protocols, also read references/protocol-questions.md. For synchronous or implementation-accurate work, read references/semantic-review.md. For specification-sheet timing dimensions, read references/datasheet-annotations.md.
Write official WaveJSON. Preserve all official fields. Use signal, assign, or reg according to the requested diagram. For timing diagrams, use one slot consistently unless period, phase, or official <...> sub-cycle syntax is needed. Put causal relationships in edge; put Datasheet dimensions in datasheet.annotations. Do not duplicate the same endpoint pair in both.
Validate with the official engine. Prefer wavedrom_validate MCP. Otherwise run:
node <skill-dir>/scripts/validate-wavejson.mjs --input <source.json5>
Default validation fails only on JSON5, official rendering, or Datasheet-extension errors; semantic lint remains advisory so official syntax is not blocked. Add --strict for natural-language-generated deliverables when every warning must fail the quality gate.
Render locally. Prefer wavedrom_render MCP. Otherwise run:
node <skill-dir>/scripts/render-wavedrom.mjs --input <source.json5> --svg <output.svg>
Add --png <output.png> or --html <output.html> as needed. The renderer uses the same pinned official engine and all shipped skins for SVG and offline HTML. It post-processes datasheet.annotations only on signal diagrams and uses the enhanced SVG consistently for PNG and HTML. Do not silently install dependencies; when installation is authorized, run npm ci --omit=dev in the skill directory.
Inspect and reconcile. Check labels, transitions, grouping, arrows, cropping, skin, and clipping. For Datasheet dimensions, also check projection lines, arrowheads, subscripts, stacking, and hidden node labels. Reconcile the rendered result with the timing contract; renderability does not prove protocol correctness.
x, high impedance z, held state ., gaps |, data boxes =/2-9, and sub-cycles <...>.datasheet.annotations, not as replacements for official WaveJSON.signal, assign, or reg.signal nodes and do not duplicate an edge pair.Require Node.js 20 or newer. Pin the official main package as wavedrom@3.6.2 and load its six shipped skins: default, narrow, dark, lowkey, narrower, and narrowerer. Use @resvg/resvg-js only to derive PNG from the canonical official SVG.
The official main-package CLI remains available separately as npx wavedrom --input source.json5 > output.svg; this skill calls the same package engine directly so MCP, SVG, PNG, and offline HTML share one compatibility baseline.
When MCP tools are not registered and the user wants them, read references/mcp-registration.md and prefer the bundled registration script.