Community画像github.com

draw-flowchart

フローチャートや状態遷移図を、紙風のポスター(クリーム色の紙、タイプライター風フォント、ハッチングされた影、直角コネクタ、問題点を赤丸で囲む)として描画し、HTML・PNG・SVGをエクスポートします。ユーザーがフローチャート、プロセス図、状態遷移図、パイプライン図、実験計画図を依頼したときや、Mermaid図を洗練された画像に変換したいときに使用します。

draw-flowchart とは?

このAIエージェントスキルは、ユーザーが指定するプロセスや状態遷移を、紙風のポスターデザイン(クリーム色の紙、タイプライター風フォント、ハッチング影、直角コネクタ、問題点を赤丸で強調)に変換し、セルフコンテインされたHTML、高解像度PNG、SVGとして出力します。まず、ユーザーの目的を一文で要約し、あいまいな点や欠落した分岐、リスクのあるステップを特定します。次に、推奨されるpstack(TLA+仕様によるフォーマルチェック)または手書きのMermaid図を用いてプロセスをモデル化し、`scripts/make_poster.py` でレンダリングします。出力前にPNG画像を視覚チェックし、赤丸のノードとカードの対応、線の重なり、ラベルの可読性などを確認・修正します。対応プラットフォームはClaude Code、Cursor、Codexなど、Python 3.8+とChrome/Chromium(PNG/SVG出力用)が必要で、pstackを使用する場合はJava 11+とTLA+ツールが必要です。フォントはシステムフォント(macOSはAmerican Typewriter、Baskerville、Songti、Kaiti、Windows/LinuxはCourier New/Georgia/SimSun/Noto Serif CJKにフォールバック)を利用し、CJKフォントは別途インストールが必要な場合があります。最大30ノードが推奨され、それ以上は複数ポスターに分割することを推奨します。

対応✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/birchloveye/draw-flowchart/tree/HEAD/skills/draw-flowchart

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

フローチャートポスターを描く

作業は2つのパートに分かれます。

  1. プロセスをMermaidに変換する。 ここで判断力が求められます。状態は何か、どの分岐が欠けているか、プロセスがどこで詰まるか、ルールを破る可能性があるかを見極めます。
  2. scripts/make_poster.py でレンダリングする。 モデルは関与しないため、同じ入力からは常に同じポスターが生成されます。

<skill> はこのファイルが格納されているフォルダを指します。

ワークフロー

  1. プロセスを理解する。 ユーザーの目標を1文で言い換えます。あいまいな点、欠落した分岐(「このステップが失敗したらどうなるのか?」)、リスクのあるステップをリストアップします。自分で解決できない分岐についてのみユーザーに質問します。

  2. モデル化する。 チャート用のフォルダを作成します(ポスター1枚につき1フォルダ)。

    • pstackを使用する場合(推奨)。 pstackの statechart スキルが利用可能な場合(Claude Code: /pstack:statechart、Cursor: /statechart、またはディスク上の SKILL.md)、それを使用します。ユーザーのルールをINVARIANTとして持つTLA+仕様を書き、実行し、report.md を読みます。references/pstack-statechart.md に従ってビューモジュールを記述し、チャートがクリーンに変換されるようにします。その後、変換します:
      python3 <skill>/scripts/make_poster.py <folder> --from-statechart <statechart-out>/chart.mmd
      
      これにより <folder>/flow.mmd が書き込まれ、問題番号が順番に、それぞれが破るルールとともに出力されます。 ユーザーがpstackをオフにするよう依頼した場合は、オンにせず、次のパスを使用してその旨を伝えます。
    • pstackを使用しない場合。 references/mermaid-rules.md に従って <folder>/flow.mmd を手書きします。見つけた各問題(ルール違反、行き止まり、欠落した分岐)に breaks クラスをマークします。
    • make_poster.py <folder> --init [--lang zh] でスターターの flow.mmd と poster.json が作成されるので編集します。
  3. <folder>/poster.json を書く(references/poster-json.md):タイトル、サブタイトル、凡例をユーザーの言語で記述し、breaks ノードごとに1行のカードを番号順に記述します。

  4. レンダリングする。

    python3 <skill>/scripts/make_poster.py <folder>
    

    エラーがある間はチェックのみ行われ、何も描画されません。すべてのエラーを修正し、すべての警告を読みます。出力:poster.html(セルフコンテイン、オフラインでも動作)、poster.png(2倍サイズ)、poster.svg。

  5. poster.png を確認する。 画像を表示できない場合やコスト削減のため、このタスクをより安価なモデルやサブエージェントに引き渡します。以下をチェックします:

    • 赤丸で囲まれたノードすべてにカードの行があり、番号が一致していること。
    • 線がテキストを横切っていない、または間違ったボックスに付いていないこと。
    • ラベルがユーザーの言語であり、読み取れる十分な長さであること。
    • 重要な部分が密集していないこと。修正:ラベルを短くする、改行したい箇所にスペースを入れる、大きなチャートを2枚のポスターに分割する、または poster.json の style で間隔を上書きする。その後、再度レンダリングします。
  6. ユーザーに報告する。 最初にPNGパス、次に問題ごとに1行(ルールと、プロセスがそこに到達する方法)、最後にモデルが省略している内容を伝えます。poster.html にPNG/SVGエクスポートボタンがあることを言及します。

要件

  • Python 3.8以上(標準ライブラリ;Pillowがインストールされていれば写真の縮小に使用)。
  • PNG/SVGエクスポートにはChrome、Edge、またはChromium。見つからない場合でも poster.html は書き込まれます。エクスポートを有効にするには CHROME をブラウザのバイナリに設定します。
  • オプション:pstack(https://github.com/cursor/plugins/tree/main/pstack)によるTLA+チェック。Java 11以上とTLA+ツールが必要です(references/pstack-statechart.md を参照)。
  • フォントはシステムフォント(macOS:American Typewriter、Baskerville、Songti、Kaiti;WindowsとLinuxはCourier New / Georgia / SimSun / Noto Serif CJKにフォールバック)。Linuxでは中国語用にNoto Serif CJKなどのCJKフォントをインストールします。

制限事項

  • 上から下へのレイアウトのみ対応。
  • 複合状態、並列領域、ノート、サブグラフは非対応。ステートチャート出力ではフラットなビュー(state() が文字列を返す)を使用します。
  • 15~25ボックスが最適。30を超えるとチェックが警告を出します。より大きなプロセスは複数のポスターに分割します。
  • 自動レイアウトでは、時折不関連のボックスの近くに線が通ることがあります。そのためステップ5が存在します。

例

リポジトリ内の examples/paper-submission/:ジャーナル投稿のTLA+モデル(statechart/)、変換された flow.mmd、poster.json、およびレンダリングされたポスター。examples/paper-submission-zh/ は同じモデルの中国語ビューです。

関連スキル