Generate WaveJSON timing diagrams for digital signals and create HTML viewers to display them. Use when documenting signal timing, creating timing diagrams, analyzing protocol sequences, visualizing digital waveforms (clock, data, control signals), or displaying/rendering WaveDrom diagrams locally.
View on GitHubplugins/circuits/skills/wavejson/SKILL.md
February 1, 2026
Select agents to install to:
npx add-skill https://github.com/lumberbarons/lumber-mart/blob/main/plugins/circuits/skills/wavejson/SKILL.md -a claude-code --skill wavejsonInstallation paths:
.claude/skills/wavejson/# WaveJSON Timing Diagram Generator
Generate WaveJSON format timing diagrams for WaveDrom rendering. Perfect for documenting hardware interfaces, signal timing, protocol sequences, and any digital signal visualization.
**Format Reference:** This skill uses the [WaveJSON specification](https://github.com/wavedrom/schema/blob/master/WaveJSON.md)
and [WaveDrom](https://github.com/wavedrom/wavedrom) rendering engine, both licensed under MIT.
**Additional Resources:**
- `reference.md` - Quick reference card with wave characters, common patterns, detailed signal pattern examples, and validation checklist
## Important
- Keep signal names short, space is at a premium
## WaveJSON Format Overview
WaveJSON uses JSON to describe timing diagrams with these key components:
### Signal Object Structure
```json
{
"signal": [
{ "name": "clk", "wave": "p......." },
{ "name": "data", "wave": "x.345x..", "data": ["head", "body", "tail"] },
{ "name": "req", "wave": "0.1...0." }
]
}
```
### Wave Characters
**Clock waves:**
- `p` - positive edge clock (rising edge)
- `n` - negative edge clock (falling edge)
- `P` - positive edge with arrow
- `N` - negative edge with arrow
**Logic levels:**
- `0` - low level
- `1` - high level
- `.` - extends previous state
**Data values:**
- `=` - data value (color 2)
- `2`, `3`, `4`, `5` - data values with different colors
- `x` - undefined/don't care
- `z` - high impedance (tri-state)
- `u` - pull-up
- `d` - pull-down
**Special:**
- `|` - extend cycle and add gap
### Signal Properties
- `name` - Signal label (string)
- `wave` - Timing pattern (string, one char per cycle)
- `data` - Array of labels for data values (corresponds to `=`, `2`-`5` in wave)
- `period` - Signal repetition period (number)
- `phase` - Phase shift, positive=future, negative=delay (number)
- `node` - Markers for arrows: `.` (none), `A-Z` (invisible), others (visible)
### Signal Groups
Create hierarchical groups by using arrays with a label string: