Archify
agent skill for architecture · workflow · sequence · dataflow · lifecycle — tt-a1i/archify v2.16.0
Archify は Cursor、Claude Code、Codex CLI、opencode 向けの Agent Skill。システムの説明・リポジトリ・Mermaid 断片を受け取り、エージェントが型付き JSON IR を書き、Archify がそれを決定論的に自己完結 HTML へコンパイルする。出力はブラウザで開き、テーマ切替(T)・スタイル切替(S)・エクスポート(E)が使える。リポジトリは tt-a1i/archify、現行安定版は v2.16.0。
- 汎用 auto-layout や Mermaid テーマではなく、階層・間隔・経路・強調をエージェントが判断する。共有された自動接続点は決定論的に分散し、1 点に矢印が集まらない
- 納品前に schema・レイアウト・HTML/SVG・経路・ラベル余白の検査を全通過させる。失敗時は Node のスタックではなく、ルールコードと対象と実測値を含む修復用 JSON が返る
- 読者側の操作はすべて「書かれた事実」の範囲に閉じる。検索・上流/下流到達・経路プローブ・ロール比較・ガイド付きストーリーは、トポロジを創作せず実行時影響も主張しない
- 成果物は 1 枚の HTML。書き出しは常に図全体で、一時的なビューア状態を含まない
npx skills add tt-a1i/archify -g
# Cursor へ非対話で入れる(明示指定)
npx -y skills add tt-a1i/archify --skill archify --agent cursor --global --copy --yes
# 試し打ち(永続インストールなし)
npx skills use tt-a1i/archify@archify --agent codex--agent は cursor / codex / claude-code / opencode に対応する。エージェント別の正確なコマンドは クイックスタートの切替ページで確認できる。プロジェクトページは tt-a1i.github.io/archify。
| 環境 | 配置先 | 能力 |
|---|---|---|
| Claude Code | ~/.claude/skills/ または .claude/skills/ | レンダラ + 検証フル |
| Codex CLI | ~/.agents/skills/ または .agents/skills/ | レンダラ + 検証フル |
| opencode | ~/.config/opencode/skills/、.opencode/skills/、.agents/skills/ | レンダラ + 検証フル |
| Raven | archify.zip を ~/.raven/workspace/skills に展開 | レンダラ + 検証フル。切替ページの対象外 |
| DeepSeek Harness | dsh plugin --profile web add @tt-a1i/archify-dsh@0.1.0 | コミュニティ統合。開発者プレビュー、Node ^22.19.0 || >=24.0.0 |
| Claude.ai / Project Knowledge | archify.zip をアップロード | サンドボックス次第。Node 無しなら architecture 手置きモード |
node bin/archify.mjs doctor でランタイム面を検査し、node bin/archify.mjs demo <output-directory> で開ける例と次のコマンドを出す。ZIP 同梱のスタンドアロンバリデータは開発依存なしで不正入力を拒否する。
ARCHIFY_UPDATE_CHECK_DISABLED=1 を設定する。
1 枚でリポジトリ全体を説明しようとせず、見たい観点を 1 つ選ぶ。どれを選ぶか迷ったら、CLI に聞ける。
node bin/archify.mjs guide "Show an API request with Redis cache miss"
node bin/archify.mjs guide "Map Kafka topics, consumer groups, replay, and DLQ" --jsonarchitecture
コンポーネント・クラウド資源・境界。主経路と trust boundary。任意で deployment-ownership プロファイルを有効にすると、担当者・リージョン・DB のプライベート配置・境界越えラベルが揃わない限り fail closed になる。
workflow
CI/CD・承認・ツール呼び出し・ランブック。新規は schema_version: 2 の readable-v2 契約で、列 0..5 は論理ランクのまま配置とラベル余白をコンパイラが決める。既存 v1 の固定座標は維持される。
sequence
API 呼び出し連鎖・キャッシュフォールバック・非同期トレース。既定は固定幅レイアウト。参加者ラベルが収まらないときだけ meta.column_fit: "spread" にする。
dataflow
パイプライン・系譜・PII 境界。ステージ横断の flow ラベルと classification。
lifecycle
状態機械・待機・リトライ・終端。フェーズ列 0..4 が主レールを占め、イベント / 終端列 N(0..2)は主列 N + 2 の真下に揃う。復帰可能な状態は type: "failure" に加えて、実際に稼働状態へ戻る遷移を持たせる。
Mermaid 入力
貼られた Mermaid を機械パースして描画するのではなく、構造だけ読んで archify スタイルで置き直す。flowchart → workflow(またはコンポーネントなら architecture)、sequenceDiagram → sequence、stateDiagram → lifecycle。スタイル指定は捨て、トポロジと意味だけ残す。
5 モードとも同じループ。レンダラのソースを触らず、診断が指した箇所だけ JSON を直して再実行する。
flowchart TD
A["Generate typed JSON IR"] --> B["validate --quality showcase --json"]
B -->|diagnostics| E["診断された subject だけ直す"]
E --> B
B -->|pass| P["preview(任意 / last-good ループ)"]
P --> D["deliver(原子的に置換 + 受領書)"]
B -->|pass| D
D --> V["visual-check(ブラウザ実測)"]
V --> R["人による知覚レビュー"]
該当する schemas/<type>.schema.json、schemas/common.schema.json、そして examples/ の同型 JSON を 1 本だけ読む。例はフィールド形状の参照で、事実の流用元ではない。
レンダラ内部を覗く前に候補ファイルを書く。主経路 1 本、短い枝、疎なラベル、主要ノードは 12 個まで。meta.quality_profile: "showcase" を既定にする。
validate <type> <candidate>.json --quality showcase --json。artifact 検査 4 項目だけの受領書は基本検証で、showcase 合格ではない。9 項目すべてと composition エラー 0・警告 0 が条件。
deliver <type> <candidate>.json <out>.html --quality showcase --json。仕様のバイト列を凍結し、検査を通った候補だけを原子的に置換して、双方の SHA-256 とバイト数を返す。
deliver は決定論的な成果物検査を証明し、visual-check <out>.html --json は実ブラウザでの挙動を 1440×900 / 1600×1000 / 1920×1080 / 2048×1320 で実測する(受領書は visualReview: "pending" のまま、Chrome が無ければ skipped)。見た目の良否の判断は人間または画像を見られるレビュアーの担当。
deliver が失敗したときは前の成果物がそのまま残るので、そのパスに visual-check をかけても古い last-good を見てしまう。診断の subject と evidence を確認し、supportedFixes の範囲だけ直す。2 ラウンド続けてエラー最小値が改善しなければ止めて未解決の診断を報告する。
assets/template.html に architecture の SVG を手配置。色はインラインではなく CSS のセマンティッククラスを使う。テーマ切替が壊れない。
可読性は「全依存を矢印で描くこと」ではなく、1 本の物語が辿れる配置から来る。
- 主経路は 1 本 — 枝は主経路の最近傍ノードから出す。ルーティング制御を足す前に、価値の低いエッジを削る。
- ラベルは意味データ — 衝突したらまずラベルを移し、経路と間隔を調整し、最後に意味を保ったまま短くする。削除は幾何の修復ではない。両端点から完全に自明で、プロトコル・動作・方向・同期性・境界越えの情報を含まない場合だけ省く。
- 間隔は「空き」で測る — 中心間距離ではなく実際のクリアランス。ラベルの空きは実測マスク幅を超えていること。
- 自動経路は端点の面を所有する — 面は方向の契約で、最初と最後のセグメントはその面に垂直に出入りする。診断が求めるまで
via/channelX/channelY/labelAtを書かない。1 回の修復で足す幾何制御は 1 つまで。 - 詳細はカードへ — ポリシーや技術メモは summary cards に置き、矢印を増やさない。不透明な無関係ノードを横切るエッジ、曖昧な共有通路、他の経路を覆うラベルは受け入れない。
スタンドアロンのデスクトップビューアは「最初の 1 画面で完結する成果物」として作る。1 枚のレスポンシブ HTML で済ませ、デバイス別 HTML や別トポロジは作らない。ビューアが調整してよいのは外側の読み幅だけで、authored な SVG / viewBox・比率・意味的な配置・通常の文書フローは保つ。
- 納品前に実 HTML を 1440×900・1600×1000・1920×1080 で開く。大画面向けなら 2048×1320 も見る。各サイズで
scrollWidth <= innerWidthとscrollHeight <= innerHeightを満たすこと。 - あふれたら、ノード・ラベル・主パネルを縮める前に、本当に冗長な内容を削るか間隔を詰める。
- 最大サイズで下部に目立つ空き帯が残るなら、authored な Y 座標を再配分して viewBox の高さを比例して増やす。埋め草の文や装飾カードは足さない。
overflow: hidden、内部スクローラ、SVG 高さの引き伸ばし、文字の縮小で合格を偽装しない。狭い画面では縦スクロールしてよい。
| フィールド | 既定の扱い | 設定するとき |
|---|---|---|
meta.visual_preset | 省略して classic で開く。カラーモードとプリセットは独立 | signal-flow / blueprint / editorial を明示的に頼まれたとき |
meta.subtitle | 省略。タイトルやノードの言い換えを作らない | 短い補足行を明示的に頼まれたとき |
meta.legend | 省略して auto。IR に存在するセマンティック種別だけを名指す | mode: auto|all|hidden と entries.<kind>.label|visible のみ |
meta.locale | 省略で英語。翻訳されるのはビューア UI だけで、本文は翻訳されない | en または zh-CN。それ以外の言語は省略し、UI と <html lang> が英語になることを明示する |
meta.animation | 省略で静的 | デモや発表用に "trace"。prefers-reduced-motion を尊重する |
meta.engineering_profile | 省略。リージョンや境界の記述だけでは有効化しない | 本番デプロイ構成・所有権の引き継ぎ・fail-closed レビューを明示的に求められ、事実が判明しているとき |
brand | 省略。「データベース」のような役割からブランドを推測しない | ノードが実在プロダクトを指すとき。プリセットが無ければ公式 URL から digest 固定でキャプチャする |
node bin/archify.mjs brands "<name>" --json で組み込みマークを探し、未知のブランドは brands capture "<url>" --json の戻り値を brand に書く。render と validate は未固定のキャプチャを行わない。バッジはセマンティックな type・ラベル・関係の事実を置き換えない。
cd archify
node bin/archify.mjs doctor
node bin/archify.mjs demo /tmp/archify-demo
node bin/archify.mjs guide "Show CI/CD checks, approval, deploy, and rollback"
node bin/archify.mjs validate workflow examples/agent-tool-call.workflow.json --quality showcase --json
node bin/archify.mjs preview workflow examples/agent-tool-call.workflow.json /tmp/workflow.html --quality showcase
node bin/archify.mjs deliver workflow examples/agent-tool-call.workflow.json /tmp/workflow.html --quality showcase --open --json
node bin/archify.mjs visual-check /tmp/workflow.html --jsonコマンドの役割
| コマンド | 役割 |
|---|---|
validate | 修復中に回す検査。--quality showcase で 9 項目、--json で安定したルールコードと修復候補を返す。workflow v2 の幾何診断は --layout-json |
deliver | 最終受け入れ。仕様バイト列を凍結し、検査通過後に原子的に置換して SHA-256 とバイト数を返す。失敗時は前の成果物をそのまま保つ |
preview | 任意のデスクトップループ。ランダムな 127.0.0.1 ポートで JSON 1 本を監視し、全ゲート通過後だけ再読込。失敗中は last-good を表示し続ける。Ctrl-C で停止、--no-open で自動起動なし |
visual-check | 納品済み HTML を書き換えずにブラウザ実測を集める。測定値とスクリーンショットは知覚的な良否を承認しない |
compare | 検証済み architecture スナップショット 2 つを Before / Delta / After に並べ、機械可読な受領書を出す |
migrate | migrate workflow <src> <dst> --to-schema 2 --json。絶対座標を非破壊で写し、完全に検査を通った出力だけ書く |
guide / brands / doctor / demo | 図タイプの相談、ブランドマーク照会、ランタイム点検、動く例の生成 |
生成 HTML の操作
| 操作 | キー / 場所 | 内容 |
|---|---|---|
| Diagram Guide | ? | 図の読み方を事実ベースで説明する |
| ノード検索・フォーカス | / | セマンティックノードを探して選択する |
| 上流 / 下流の到達 | フォーカス後 Upstream / Downstream | 書かれた関係の推移閉包。ノード数・リンク数・最大ホップを報告する。影響範囲や実行時因果ではない |
| 経路プローブ | R / PATH | 指定 2 点間の最短の authored 有向経路を辿る |
| ロール比較 | L / LENS | セマンティックロール 1〜2 種の間の実トラフィックを比べる |
| 全体マップ | M / MAP | 現在位置を示すオーバービューレーダー |
| ガイド付きストーリー | P、[ ] | 有限の名前付きチャプターを再生する。meta.views は 5 章まで |
| 発表モード / スタイル / テーマ | F / S / T | Presentation Stage、4 プリセットの巡回、ダーク / ライト切替 |
| Export | E | PNG をクリップボードへコピー、PNG / JPEG / WebP / SVG / WebM をダウンロード、1200×630 の Share Card をコピー。経路や到達を出した直後は Route / Reach Share Card も選べる |
| ズーム | + / - / 0 | 拡大・縮小・リセット |
#focus=<id>、#focus=<id>&reach=upstream|downstream、#relation=<id>、#route=<source>~<target>、#lens=<kind>~<kind>、#view=<view-id> で読み手の状態を復元できる。読者由来のモーションは有限で prefers-reduced-motion を尊重し、正規のエクスポートには入らない。
設計レビューや PR レビューでは、検証済みの architecture スナップショット 2 つを比べる。compare は両方を独立に検証し、authored な安定 ID だけでコンポーネントと関係を対応付け、追加・削除・変更・移動・経路変更を分けて分類する。
node archify/bin/archify.mjs compare architecture base.json head.json architecture-delta.html --json- 削除されたノードと関係は元の座標を保ち、移動したノードは
MOVE FROMのファントムを残す。端点が変わった関係は旧経路と新経路の両方を出す。 + / ~ / − / ↔と線種で意味を示すので、色やモーションに依存せず読める。- 整形・キー順・要素順・
wraps・sourcesの集合的な変更はセマンティックハッシュと成果物バイト列を変えない。失敗時は前の成果物が残る。 - リポジトリの不一致、共有コンポーネント ID がゼロ、関係 ID の欠落、境界キーの曖昧さは fail closed。
- 成果物は
AUTHORED SNAPSHOTSと表示し、リポジトリ証拠のゲートを両方通ったときだけREVISION-PINNED INPUTSになる。
リポジトリは必須ではない。Use Archify to draw: Browser -> API -> Redis cache -> PostgreSQL fallback. のように説明だけでも描ける。ソースを根拠にしたいときはリポジトリを開いて次のように頼む。
Analyze this repository, then use archify to create a high-level runtime architecture diagram.
Show 8–12 core components, one primary request or data path, external dependencies, and trust boundaries.
Put supporting detail in cards instead of adding more edges.フロー特化
Use archify to draw this login flow: Browser -> Web App -> API -> JWT validation ->
Redis session lookup -> PostgreSQL fallback. Make the cache-miss path secondary.データ系譜
Draw a data-flow diagram from Web and Mobile events through Consent Gate, Kafka,
Warehouse, and Feature Store to Dashboards and ML consumers. Mark the PII boundary.チャットでの修正は JSON IR を残したまま「add Redis」「move auth to the left」のように局所変更する。
v2.16.0(2026-08-30)は workflow の制約駆動コンパイラ(schema v2 の readable-v2 契約と --layout-json 受領書)、5 レンダラの meta.locale による範囲限定ローカライズ、通知のみの組み込み更新チェックを追加した。自動 Mermaid パース、汎用 auto-layout、ホスティング共有、WYSIWYG 編集は意図的に現在のスコープ外(ROADMAP.md、CHANGELOG.md)。
- GitHub: tt-a1i/archify — 本体リポジトリ
- プロジェクトページ
- Proof Lab — 検査済み 11 シナリオと JSON ソース、検証受領書
- シナリオガイド — 図タイプの選び方
- SKILL.md — エージェント向け手順
- schemas/README.md — JSON IR 契約
- authoring-cookbook.md — 作図クックブック
- CHANGELOG.md — v2.16.0 までの変更履歴
- Cocoon-AI/architecture-diagram-generator — フォーク元(MIT v1.0)
- vercel-labs/skills — インストールに使う skills CLI