wavedrom-gen について
wavedrom-genは、自然言語のタイミング記述を編集可能なWaveJSONと図に変換するスキルです。固定バージョンの公式wavedromエンジンを使い、検証、レンダリング、タイミング上の前提確認を支援します。
主な機能
- 01編集可能なWaveJSON/JSON5の生成
- 02SVGの描画とPNG・HTMLの任意出力
- 03公式WaveDromエンジンによる検証
- 04signal、assign、reg図への対応
- 05タイミングの意味と描画結果の確認
活用シーン
- 01文章による説明からタイミング図を作成
- 02プロトコルや実装のタイミング詳細を描画
- 03編集・確認用のオフラインHTMLを作成
MCP 対応
利用可能な場合、wavedrom_validateとwavedrom_render MCPツールを優先します。未登録のMCPツールを登録する手順も説明しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ siliconpeasant/ soc_agent_skill --skill wavedrom-genインストール後、Claude Code で/wavedrom-genを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEpackage-lock.jsonpackage.jsonagents/openai.yamlexamples/a-pgm-mode-datasheet.json5a-pgm-mode-datasheet.svgasync-fifo-cdc.json5async-fifo-cdc.svgaxi4-read-write.json5axi4-read-write.svgqspi-quad-io-read.json5qspi-quad-io-read.svgreferences/datasheet-annotations.mdmcp-registration.mdmcp-tools.mdprotocol-questions.mdsemantic-review.mdwavejson-official.mdscripts/datasheet-annotations.cjsmcp-server.mjsregister-mcp.mjsrender-wavedrom.mjsvalidate-wavejson.mjswavedrom-engine.mjswavejson-lint.cjs詳細
WaveDrom Gen
自然言語から編集可能な WaveJSON/JSON5 を生成し、固定された公式の wavedrom メインパッケージエンジンでレンダリングします。構文の基準には [email protected] の renderAny の動作を使用し、カスタムの lint は品質向上のためのみに使用します。
必須の出力
- 編集可能なソースを
<descriptive-name>.json5として保存します。 - デフォルトで
<descriptive-name>.svgをレンダリングします。 - ラスター形式での納品や目視確認のために PNG を追加します。
- オフライン編集、ライブレンダリング、検証、ズーム、コピー、ダウンロードの操作を備えた、自己完結型の HTML を追加します。
- オプションの Datasheet 寸法は、同じ JSON5 内のトップレベル
datasheet.annotationsに追加します。 - タイミングの意味に大きく影響する前提を明記します。
- すべての成果物について絶対パスを返します。
ワークフロー
-
依頼を分類します。 自然言語によるタイミング図には
signalを使用します。明示的に依頼された場合は、公式のassignとregの図を保持または生成します。提示された仕様書、RTL、トレース、タイミング表は、権威ある情報源として扱います。 -
タイミングの仕様をまとめます。 時間単位またはクロックドメイン、アクティブエッジ、初期状態、信号とアクティブレベル、順序付けされたイベント、レイテンシ、転送条件、最終状態、未解決の前提を特定します。
-
重要な曖昧さを解消します。 不足している情報によって実装に忠実な図が大きく変わる場合に限り、質問します。概念図を作成する場合は、一般的なデフォルトを適用し、その旨を明記します。
-
公式の構文リファレンスを読みます。 WaveJSON を作成する前に references/wavejson-official.md を読みます。標準プロトコルでは、あわせて references/protocol-questions.md を読みます。同期処理や実装に忠実な作業では、references/semantic-review.md を読みます。仕様書のタイミング寸法では、references/datasheet-annotations.md を読みます。
-
公式の WaveJSON を記述します。 公式のすべてのフィールドを保持します。依頼された図に応じて
signal、assign、regを使用します。タイミング図では、period、phase、または公式の<...>サブサイクル構文が必要でない限り、スロットを一貫して 1 つ使用します。因果関係はedgeに、Datasheet 寸法はdatasheet.annotationsに記述します。同じ端点の組み合わせを両方に重複して記述しないでください。 -
公式エンジンで検証します。
wavedrom_validateMCP を優先します。それ以外の場合は、次を実行します。node <skill-dir>/scripts/validate-wavejson.mjs --input <source.json5>デフォルトでは、JSON5、公式レンダリング、または Datasheet 拡張機能のエラーがある場合にのみ検証が失敗します。セマンティック lint は助言として扱われるため、公式構文が妨げられることはありません。すべての警告を品質ゲートで失敗として扱う必要がある場合は、自然言語から生成した成果物に
--strictを追加します。 -
ローカルでレンダリングします。
wavedrom_renderMCP を優先します。それ以外の場合は、次を実行します。node <skill-dir>/scripts/render-wavedrom.mjs --input <source.json5> --svg <output.svg>必要に応じて
--png <output.png>または--html <output.html>を追加します。レンダラーは、SVG とオフライン HTML に、同じ固定済みの公式エンジンと同梱されているすべてのスキンを使用します。datasheet.annotationsの後処理はsignal図に対してのみ行い、拡張 SVG を PNG と HTML にも一貫して使用します。依存関係を無断でインストールしないでください。インストールが許可されている場合は、スキルディレクトリでnpm ci --omit=devを実行します。 -
結果を確認して調整します。 ラベル、遷移、グループ化、矢印、切り抜き、スキン、クリッピングを確認します。Datasheet 寸法では、投影線、矢印の先端、下付き文字、積み重なり、非表示のノードラベルも確認します。レンダリング結果をタイミングの仕様と照合します。レンダリングできることは、プロトコルが正しいことの証明にはなりません。
自然言語ポリシー
- 明示された事実は、プロトコルのデフォルト値に置き換えずに保持します。
- 不明な
x、ハイインピーダンスのz、保持状態の.、ギャップの|、データボックスの=/2〜9、サブサイクルの<...>を区別します。 - 図を完全に見せるためだけに信号を作り出してはいけません。
- 名前のあるプロトコルが曖昧な場合は、プロトコルのパラメーターを尋ねるか、概念例であることを明確に示した例を作成します。
- 図はそれぞれ焦点を絞り、明確さが向上する場合は、無関係なフェーズやクロックドメインを分けます。
- セットアップ/ホールド/幅/周期のスタイル指定は、公式の WaveJSON を置き換えるのではなく、オプションの
datasheet.annotationsを変更する要求として解釈します。 - ユーザーが変更を求めない限り、既存の公式構文をそのまま保持します。
品質ゲート
- JSON5 が解析できること。
- 固定された公式エンジンが
signal、assign、またはregから SVG を生成すること。 - 厳格モードが要求された場合、厳格なリンターで未解決のラベル、ノード、未文書化の波形文字、疑わしい設定が報告されないこと。
- データシートの注釈がある場合、既存の
signalノードを対象とし、edgeのペアと重複しないこと。 - 同期遷移と転送サイクルがタイミング契約に一致すること。
- SVG が存在し、空ではなく、SVG ルートを含むこと。
- HTML が要求された場合、自己完結型であり、ネットワークアクセスなしに埋め込みソースを再レンダリングできること。
- 最終成果物にソースとレンダリング済み成果物へのリンクが含まれ、前提が列挙されていること。
依存関係のベースライン
Node.js 20 以降を必須とします。公式のメインパッケージは [email protected] に固定し、同梱されている6つのスキン(default、narrow、dark、lowkey、narrower、narrowerer)を読み込みます。@resvg/resvg-js は、正規の公式 SVG から PNG を生成する場合にのみ使用します。
公式メインパッケージの CLI は、引き続き個別に利用できます。コマンドは npx wavedrom --input source.json5 > output.svg です。このスキルは同じパッケージエンジンを直接呼び出すため、MCP、SVG、PNG、オフライン HTML で互換性のベースラインが共通になります。
MCP ツールが登録されておらず、ユーザーが登録を希望している場合は、references/mcp-registration.md を読み込み、同梱の登録スクリプトを優先します。