mcpField
A
ascii-diagram

ascii-diagram

github.com/lwlee2608テスト・品質1198 回インストール今日更新
リポジトリ

ascii-diagram について

ascii-diagramは、テキスト図を作成するエージェント向けのスキルです。描画ルールと印刷して確認する手順により、配置の問題を見つけて修正します。

主な機能

  1. 01Unicode罫線文字を優先
  2. 02枠幅と余白の統一
  3. 03接続線と矢印の配置確認
  4. 04タブと行末空白の検査
  5. 05ルーラーを使った検証

活用シーン

  1. 01枠の各行の幅を確認
  2. 02接続線の隙間やずれを発見
  3. 03共有前にテキスト図を点検

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lwlee2608/agent-skills --skill ascii-diagram

インストール後、Claude Code で/ascii-diagramを入力して読み込まれたか確認します。

詳細

ASCII 図を検証する

エージェントが生成する ASCII 図は、角のずれ、境界線の不揃い、接続線の途切れなど、配置に問題が生じることがよくあります。LLM は頭の中で文字数を正確に数えることができません。 このスキルでは、印刷して確認するループを使い、配置の不具合を見つけて修正します。

ルール

  1. Unicode の罫線文字を優先してください。 角には ┌、┐、└、┘、水平線には ─、垂直線には │、接続部には ┬、┴、├、┤、┼ を使います。ユーザーが明示的に要求した場合、または対象の形式で Unicode を表示できない場合に限り、通常の ASCII(+、-、|)を使ってください。同じ図でスタイルを混在させないでください。
  2. ボックスの各行は、上辺、内容行、下辺のすべてで幅を完全に揃えてください。
  3. 内容が短い行にはスペースを追加し、右側の境界線 │ がすべての行で同じ列にくるようにしてください。
  4. 接続線と矢印は、関連するボックスの境界に明確につながるようにしてください。隙間が意図したものか確認してください。
  5. タブ文字は使わないでください。 タブは表示幅が予測できず、配置を気付かないうちに崩します。スペースのみを使ってください。
  6. 行末に空白を入れないでください。 見えない行末の空白は幅の不一致を引き起こし、正しく見えても実際にはずれている原因になります。

検証手順

頭の中で文字数を数えて検証しようとしないでください。 代わりに、以下の印刷・確認ループを使ってください。

ステップ 0:サブエージェントに委任するか決める

図が (a)6 行を超え、かつ(b)複数のボックス、または入れ子/接続されたレイアウトを含む場合は、検証ループ全体をサブエージェントに委任してください(Agent ツールを使用)。このループでは大量のルーラー出力と反復作業が発生するため、メインコンテキストに残す必要はありません。

小さな図(単一のボックス、短い表、6 行以下)の場合は、インラインでループを実行してください。サブエージェントを起動するより、そのまま実行するほうが速いためです。

委任する場合は、次のテンプレートを使って引き継いでください(サブエージェントにはこのスキルが読み込まれていません)。

File: <absolute path>
Lines: <start>-<end>
Task: Run the verification loop in skills/ascii-diagram/SKILL.md steps 1-5. Edit the source file in place.
Report: PASS or FAIL, iteration count, and a one-line summary of fixes. Do not paste the diagram back.

サブエージェントから結果が返された後:

  • 編集された行を再度読み、要約が実際の変更内容と一致することを確認してください。 サブエージェントの報告は、意図を説明しているものであり、必ずしも差分を正確に反映しているとは限りません。
  • FAIL の場合(問題が残ったまま、サブエージェントが 3 回の反復上限に達した場合)、部分的な修正を受け入れるか、具体的な指示を添えて再度委任するか、インラインで仕上げるかを判断してください。FAIL をそのまま完了扱いにしないでください。
ステップ 1:図を一時ファイルに書き込む

Write ツールを使って、図を一時ファイルに書き込んでください。他のセッションのファイルを上書きしないよう、/tmp/diagram-<context>.txt のような一意のパスを使ってください(<context> は、このセッションに固有の具体的な内容に置き換えます。例:/tmp/diagram-auth-flow.txt)。以下のすべてのコマンドで同じパスを使用してください。

ステップ 2:列ルーラー付きで表示する

次の Bash コマンドを実行して、列番号付きで図を表示してください(<path> は一時ファイルのパスに置き換えます)。

awk 'BEGIN{
  ruler1=""; ruler2=""
  for(i=0;i<120;i++){
    ruler1=ruler1 sprintf("%d", int(i/10)%10)
    ruler2=ruler2 sprintf("%d", i%10)
  }
  print "     " ruler1
  print "     " ruler2
}
{printf "%3d: %s\n", NR, $0}' <path>

これにより、各行が行番号とともに表示され、上部には 2 行の列ルーラー(10 の位、1 の位)が出力されます。角、境界線、接続線が正しい列にあるか簡単に確認できます。図の幅が 120 列を超える場合は、ループ内の 120 を大きくしてください。

ステップ 3:見えない問題を確認する

通常の出力では見えない問題を見つけるため、次のチェックを実行してください(<path> は一時ファイルのパスに置き換えます)。

# Tabs (will break alignment silently)
grep -F $'\t' <path> && echo "FAIL: tabs found" || echo "OK: no tabs"
# Trailing whitespace
grep ' $' <path> && echo "FAIL: trailing spaces found" || echo "OK: no trailing whitespace"

見つかった問題をすべて修正してから、次に進んでください。

ステップ 4:ルーラー出力を目視で確認する

表示された出力を見て、次の点を確認してください。

  • ボックス幅の一貫性:各ボックスの右側の境界(│ または ┐/┘)は、すべての行で同じ列にありますか? ルーラーから列番号を読み取ってください。
  • 上辺と下辺の一致:下の角(└/┘)は、上の角(┌/┐)と同じ列にありますか?
  • 横並びの配置:隣接するボックスの列位置は一貫していますか?
  • 接続線:矢印は実際に境界文字に接していますか?
ステップ 5:修正して再確認する

問題が見つかった場合:

  1. ファイル内の図を修正します(一時ファイルではありません)。
  2. 更新した図を同じ一時ファイルに再度書き込みます。
  3. 再度、目盛りを付けて表示します。
  4. すべてのチェックに合格するまで、または 3 回繰り返すまで、どちらか先に達するまで繰り返します。3 回繰り返しても問題が残っている場合は、次に進みます。

よくある間違い

  • 右端の位置が 1 文字ずれている。 │ の前に余分なスペースがある、またはスペースが足りないため、右端が上端/下端の角とは異なる列にずれています。目盛りを使って、すべての行の終端が同じ列にあることを確認します。

    WRONG:                                  CORRECT:
    ┌──────────┐                            ┌──────────┐
    │ hello    │                            │ hello    │
    │ world     │  ← col 13                 │ world    │
    └──────────┘   ← col 12                 └──────────┘
    
  • 下端の幅が一致しない。 下端の ─ が上端より多い、または少ないため、閉じる角が誤った列に配置されています。目測ではなく、目盛りを使って数えます。

    WRONG:                                  CORRECT:
    ┌──────────┐  ← col 12                  ┌──────────┐
    │ content  │                            │ content  │
    └─────────┘   ← col 11                  └──────────┘
    
  • 横並びのボックス間の間隔が不均一。 隣接するボックス間の間隔が行ごとに異なり、2 つ目のボックスの位置がずれています。2 つ目のボックスの角が、すべての行で同じ列にあることを確認します。

    WRONG:                                  CORRECT:
    ┌───────┐   ┌───────┐                   ┌───────┐   ┌───────┐
    │ box 1 │   │ box 2 │                   │ box 1 │   │ box 2 │
    └───────┘    └───────┘  ← extra         └───────┘   └───────┘
    
  • ボックス描画スタイルが混在している。 同じ図の中で ASCII(+、-、|)と Unicode(┌、─、┐)の文字が混在しています。スタイルを 1 つ選び、一貫して使用します。

    WRONG:                                  CORRECT:
    ┌──────────+  ← ASCII +                 ┌──────────┐
    │ content  │                            │ content  │
    └──────────┘                            └──────────┘
    
  • 接続線がボックスの境界に接していない。 接続先のボックスとの間に隙間があり、矢印や線が浮いています。すべての接続線は、境界文字から始まり、境界文字で終わる必要があります。

    WRONG:                                  CORRECT:
    ┌───────┐     ┌───────┐                 ┌───────┐   ┌───────┐
    │ box 1 │  -> │ box 2 │                 │ box 1 │──>│ box 2 │
    └───────┘     └───────┘                 └───────┘   └───────┘
         gap ^  ^ gap                             no gaps
    

コメント