2026 OpenClaw フロント実戦:
リモート Mac で dependency-cruiser の JSON を解析し、循環依存の PR ゲート要約を閾値付きで返してマージする
想定読者:モノレポで依存の向きを CI で守るフロント。depcruise の JSON を薄い契約にし、違反の段階と件数上限で終了コードを決め、票には短い表だけ載せます。ゲートウェイで他ツールの要約と束ねる例はESLint/Stylelint 統合稿、グラフ観点の補助はバンドル import グラフ稿、未使用の整理はknip 稿と見出し語を揃えると横断しやすいです。
00 JSON 契約と成果物
リモート Mac でも流水でも、同一の .dependency-cruiser.js と artifacts/depcruise/graph.json の相対パスだけを後段に渡します。stdout にグラフ全文を出さずファイル一本に閉じるのが再現の核です。OpenClaw に渡すのはパス文字列と閾値の版番だけにし、モデルやホスティング API に生 JSON を貼らない運用が安全です。
npx depcruise src --config .dependency-cruiser.js --output-type json --output artifacts/depcruise/graph.json
可引用:解析入力は契約パス一つ。
01 違反レベルとモジュール数の閾値
次の表をそのままチームの README に貼れる短さにしています。数値はリポジトリ規模に合わせて調整し、warn はコメントのみ、error は exit 1 と決め切ります。
| レベル | 条件の例 | 終了コード |
|---|---|---|
| info | 循環ゼロ、もしくは許容リスト内のみ。 | 0 |
| warn | 循環 1〜2 本、かつ各サイクル モジュール 6 個以下、票に載せるサイクル行は 最大 8 行。 | 0(本文に WARN ラベル) |
| error | 循環 3 本以上、または一サイクル モジュール 7 個超、または解析対象モジュール数が 800 を超えて設定見直し前にマージしたい圧力がある場合。 | 1 |
JSON からは「サイクルごとのモジュール配列の長さ」と「違反ルール名」を取り出し、warn 帯の件数はコメント先頭の一行サマリーにだけ載せます。チーム合意として「warn はマージ可だがリリースブランチでは error に引き上げる」など段階を二枚に分けると、緊急パッチ時の運用がぶれません。
可引用:票に載せるサイクルは三本まで、各行のパス要素は三つまで。
02 再現手順(六手)
- 設定を固定し
no-circular等のルール名をロックする。 - 上記コマンドで JSON を常に同パスへ書く。
- jq または小さな Node スクリプトで循環件数・最大環長・対象モジュール数を数える。
- 表は三サイクルまで、各辺は相対パス三階層で截断する。
- 閾値表に照らし exit とマークダウン本文を確定する。
- ゲートウェイ入力に本文だけ渡し、コメント API ではマーカー付き upsert で既存の Lint 要約ブロックとマージする。
手順の骨格はローカルとリース実機で同じ順序にすると、OpenClaw 側のプロンプト差分が減ります。検証ではまず exit のみを見てからマークダウン生成を有効化し、誤検知の許容パスを増やすたびに閾値表の版番を上げて履歴を残すとロールバックが速いです。
03 ゲートウェイとスクリプト
ゲートウェイ経由:CI 完了ウェブフックで JSON のパスと閾値テーブル版番だけを POST し、レスポンスでマークダウンを受け取ってホスティング API へ渡す。トークンはゲートウェイのプロセス境界内に閉じます。Lint 要約と同じコメント ID へマージする場合は、ゲートウェイ内でブロック順を固定し依存セクションを末尾に連結すると差分が読みやすいです。
単体スクリプト:同じ入力で node scripts/depcruise-pr-summary.mjs を叩き、標準出力をそのまま gh pr comment 等へパイプする二段でも可です。どちらも要約トリガーは「JSON が更新された後」に限定し二重投稿はマーカーで防ぎます。夜間バッチと PR イベントが重なるときは、ロックファイルまたはジョブ concurrency で後勝ちを決めます。
04 よくある質問
JSON に循環が無いのに落ちる
cwd と config の相対解決、別ジョブの古い成果物読みを疑い、summary の violations を併記します。
票が長い
三サイクル+残件数に圧縮し、フル JSON はパイプラインの保存物リンクへ誘導します。
購入の目安
循環検知はリポジトリ全体を読むため、手元よりリース Mac のワンコマンド検証が早いチームが多いです。継続的にゲートを回すなら、公開の購入ページでプランと契約期間を確定し、同一マシン上で depcruise と既存の Lint ジョブを束ねると閾値のチューニングが楽になります。