Create ASCII diagrams for markdown using graph-easy. TRIGGERS - ASCII diagram, graph-easy, architecture diagram, markdown diagram.
From itpnpx claudepluginhub terrylica/cc-skills --plugin itpThis skill is limited to using the following tools:
references/diagram-patterns.mdreferences/dsl-syntax.mdreferences/embedding-guide.mdreferences/evolution-log.mdreferences/monospace-symbols.mdreferences/preflight-check.mdscripts/graph-easySearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Create ASCII architecture diagrams for any GitHub Flavored Markdown file using graph-easy. Pure text output with automatic layout - no image rendering required.
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
NOT for ADRs - Use adr-graph-easy-architect for Architecture Decision Records (includes ADR-specific patterns like 2-diagram requirement and before/after templates).
Ensure graph-easy is installed and functional before rendering. See Preflight Check for the full layered installation guide (mise-first approach, macOS + Linux).
Quick verify:
echo "[Test] -> [OK]" | graph-easy &>/dev/null && echo "✓ graph-easy ready"
Full syntax reference: DSL Syntax
[Node] -> [Node] # Basic edge
[A] -- label --> [B] # Labeled edge
[A] <-> [B] # Bidirectional
( Group: [Node A] [Node B] ) # Container
[n] { label: "Display Name"; } # Custom label
graph { label: "Title"; flow: south; } # Top-to-bottom
graph { label: "Title"; flow: east; } # Left-to-right
label: with semantic emoji + titleflow: direction| Location | Graphical Emojis | Unicode Symbols | ASCII Markers |
|---|---|---|---|
| Inside nodes | NEVER | OK | ALWAYS safe |
| Graph label | SAFE | OK | OK |
ASCII markers: [x] [+] [!] [OK] [>] [*] [~] [?] [=]
| Style | Syntax | Use For |
|---|---|---|
| Rounded | { shape: rounded; } | Start/end nodes |
| Double border | { border: double; } | Critical/emphasis |
| Bold border | { border: bold; } | Important nodes |
| Dotted border | { border: dotted; } | Optional (GH caution) |
| Solid arrow | -> / <-> | Normal/happy path |
| Dotted arrow | ..> | Conditional/alternate |
| Bold arrow | ==> | Critical path |
See Diagram Patterns for full examples (pipeline, multi-component, decision, grouped, bidirectional, layered architecture).
Quick templates:
# Pipeline (left-to-right)
graph { label: "Pipeline"; flow: east; }
[Input] -> [Process] -> [Output]
# Multi-component (top-down)
graph { label: "System"; flow: south; }
[Gateway] -> [Service A]
[Gateway] -> [Service B]
[Service A] -> [Database]
[Service B] -> [Database]
# For GitHub markdown (RECOMMENDED) - renders as solid lines
graph-easy --as=ascii << 'EOF'
graph { flow: south; }
[A] -> [B] -> [C]
EOF
# For terminal/local viewing - prettier Unicode lines
graph-easy --as=boxart << 'EOF'
graph { flow: south; }
[A] -> [B] -> [C]
EOF
| Mode | Command | When to Use |
|---|---|---|
ascii | --as=ascii | GitHub markdown - +--+ renders as solid lines everywhere |
boxart | --as=boxart | Terminal only - ┌──┐ looks nice locally, dotted on GitHub |
Why ASCII for GitHub? GitHub renders Unicode box-drawing characters (┌─┐│└─┘) as dotted lines. Pure ASCII (+---+, |) renders correctly everywhere.
After embedding, validate with: Skill(doc-tools:ascii-diagram-validator)
Full guide with GFM collapsible section syntax: Embedding Guide
CRITICAL: Every diagram MUST include a <details> source block. This is non-negotiable.
## Architecture
```
+----------+ +----------+ +----------+
| Input | --> | Process | --> | Output |
+----------+ +----------+ +----------+
```
<details>
<summary>graph-easy source</summary>
```
graph { flow: east; }
[Input] -> [Process] -> [Output]
```
</details>
Full reference: Monospace Symbols
Key markers: [+] Added | [x] Removed | [*] Changed | [!] Warning | [>] Active
WARNING: This is the most commonly forgotten requirement. Diagrams without labels are invalid.
graph { label: "Deployment Pipeline"; flow: east; }
[Build] -> [Test] -> [Deploy]
graph { flow: east; }
[Build] -> [Test] -> [Deploy]
Why this is wrong: Missing label: with emoji. Every diagram needs context at a glance.
graph { label: "Title"; } - semantic emoji + title (MOST FORGOTTEN - check first!)graph { flow: south; } or graph { flow: east; } - explicit direction--as=ascii for GitHub markdown (or --as=boxart for terminal only)<details> block with source - EVERY diagram MUST have collapsible source code blockascii-diagram-validator on the file after embedding diagram{ shape: rounded; } | Critical: { border: double; } | Optional: { border: dotted; }-> | Conditional: ..> | Critical: ==> | Labels: 1-3 wordsgraph { label: "..."; }( Name: ... ) for 4+ related nodes[db] { label: "PostgreSQL"; }<details> block with graph-easy DSL source--as=ascii for GitHub, --as=boxart for terminal\n, no truncation( Group: ... ) containers| Issue | Cause | Solution |
|---|---|---|
command not found | graph-easy not installed | Run preflight check |
| Dotted lines on GH | Used --as=boxart | Use --as=ascii for GitHub markdown |
| Box border broken | Graphical emoji in node | Remove emojis, use ASCII markers [x][+] |
| Nodes overlap | Too complex | Split into multiple diagrams (max 7-10 nodes) |
| Edge labels cut off | Label too long | Shorten to 1-3 words |
| No title showing | Wrong syntax | Use graph { label: "Title"; flow: south; } |
| Weird layout | No flow direction | Add graph { flow: south; } or flow: east |
| Parse error | Special chars in node | Escape or simplify node names |
After this skill completes, check before closing:
Only update if the issue is real and reproducible — not speculative.