adr-graph-easy-architect
ASCII architecture diagrams for ADRs via graph-easy. TRIGGERS - ADR diagram, architecture diagram, ASCII diagram.
What this skill does
# ADR Graph-Easy Architect
Create comprehensive ASCII architecture diagrams for Architecture Decision Records (ADRs) 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.
## When to Use This Skill
- Writing new ADR that involves architectural changes
- ADR describes migration, integration, or system changes
- User asks for visual representation of a decision
- Existing ADR diagram needs review or update
## Preflight Check
Ensure graph-easy is installed and functional before rendering diagrams.
Full setup instructions: [Preflight Setup](./references/preflight-setup.md)
**Quick verify:**
```bash
echo "[Test] -> [OK]" | graph-easy --as=boxart &>/dev/null && echo "โ graph-easy ready"
```
---
## DSL Quick Reference
Full syntax with examples, node styling, edge styles, and emoji rules: [DSL Syntax Reference](./references/dsl-syntax.md)
### Essential Syntax
```
[Node] # Node
[A] -> [B] # Edge
[A] -- label --> [B] # Labeled edge
[A] <-> [B] # Bidirectional
( Group: [Node A] [Node B] ) # Group/container
[id] { label: "Display"; } # Custom label
```
### Flow Direction (MANDATORY)
```
graph { flow: south; } # Top-to-bottom (architecture, decisions)
graph { flow: east; } # Left-to-right (pipelines, sequences)
```
### Graph Label (MANDATORY: EVERY diagram MUST have emoji + title)
**WARNING**: This is the most commonly forgotten requirement. Diagrams without labels are invalid.
**Correct:**
```
graph { label: "๐ Database Migration"; flow: south; }
[Old DB] -> [New DB]
```
**Anti-Pattern (INVALID):**
```
graph { flow: south; }
[Old DB] -> [New DB]
```
Missing `label:` with emoji. The preflight validator will **BLOCK** any ADR containing diagrams without `graph { label: "emoji ..."; }`.
### Emoji Selection (for graph labels ONLY - never inside nodes)
| Diagram Type | Emoji | Diagram Type | Emoji |
| ------------------ | ----- | ---------------- | ----- |
| Migration/Change | ๐ | Architecture | ๐๏ธ |
| Deployment/Release | ๐ | Network/API | ๐ |
| Data Flow | ๐ | Storage/Database | ๐พ |
| Security/Auth | ๐ | Monitoring | ๐ก |
| Error/Failure | โ ๏ธ | Hook/Event | ๐ช |
| Decision/Branch | ๐ | Before/After | โฎ๏ธ/โญ๏ธ |
### Node & Edge Styling Summary
| Style | Syntax | Use For |
| --------------- | --------------------- | --------------------- |
| Rounded corners | `{ shape: rounded; }` | Start/end nodes |
| Double border | `{ border: double; }` | Critical/emphasis |
| Bold border | `{ border: bold; }` | Important nodes |
| Dotted border | `{ border: dotted; }` | Optional/skippable |
| Solid arrow | `->` | Main/happy path |
| Dotted arrow | `..>` | Conditional/alternate |
| Bold arrow | `==>` | Emphasized/critical |
| Labeled edge | `-- label -->` | Annotated connections |
### Character Safety
- Graphical emojis INSIDE nodes: **NEVER** (breaks box alignment)
- Unicode symbols inside nodes (checkmark, cross, warning): **OK** (single-width)
- ASCII markers inside nodes ([x] [+] [!]): **ALWAYS safe**
- Graphical emojis in `graph { label: }`: **OK**
Full symbol reference: [Monospace-Safe Symbols](./references/monospace-symbols.md)
---
## Common Diagram Patterns
### Migration (Before -> After)
```
graph { flow: south; }
[Before] -- migrate --> [After]
```
### Multi-Component System
```
graph { flow: south; }
[A] -> [B] -> [C]
[B] -> [D]
```
### Pipeline (Left-to-Right)
```
graph { flow: east; }
[Input] -> [Process] -> [Output]
```
### Decision with Options
```
graph { flow: south; }
[Decision] -> [Option A]
[Decision] -> [Option B]
```
### Grouped Components
```
( Group:
[Component 1]
[Component 2]
)
[External] -> [Component 1]
```
### Bidirectional Flow
```
[Client] <-> [Server]
[Server] -> [Database]
```
More patterns by ADR type: [Diagram Examples](./references/diagram-examples.md)
---
## Rendering
### Command (MANDATORY: Always use boxart)
```bash
graph-easy --as=boxart << 'EOF'
graph { flow: south; }
[A] -> [B] -> [C]
EOF
```
**Never use** `--as=ascii` - it produces ugly `+--+` boxes instead of clean `โโโโ` lines.
### Validation Workflow
```bash
# 1. Write DSL to heredoc
# 2. Render with boxart
# 3. Review output
# 4. Iterate if needed
# 5. Copy final ASCII to ADR
```
---
## Embedding in ADR
Every rendered diagram MUST include a collapsible `<details>` block with graph-easy source. Full format guide and GFM syntax rules: [ADR Embedding Guide](./references/adr-embedding.md)
**Required format:**
````markdown
```
โโโโโโโโโ โโโโโโโโ
โ Build โ --> โ Test โ
โโโโโโโโโ โโโโโโโโ
```
<details>
<summary>graph-easy source</summary>
```
graph { label: "๐ Pipeline"; flow: east; }
[Build] -> [Test]
```
</details>
````
**The `<details>` block is MANDATORY** - never embed a diagram without its source.
---
## Mandatory Checklist (Before Rendering)
### Graph-Level (MUST have)
- [ ] **`graph { label: "๐ Title"; }`** - semantic emoji + title (MOST FORGOTTEN - check first!)
- [ ] `graph { flow: south; }` or `graph { flow: east; }` - explicit direction
- [ ] Command uses `--as=boxart` - NEVER `--as=ascii`
### Embedding (MUST have - non-negotiable)
- [ ] **`<details>` block with source** - EVERY diagram MUST have collapsible source code block
- [ ] Format: rendered diagram in ` ``` ` block, followed by `<details><summary>graph-easy source</summary>` with source
- [ ] Never commit a diagram without its reproducible source
### Node Styling (Visual hierarchy)
- [ ] Start/end nodes: `{ shape: rounded; }` - entry/exit points
- [ ] Critical/important nodes: `{ border: double; }` or `{ border: bold; }`
- [ ] Optional/skippable nodes: `{ border: dotted; }`
- [ ] Long labels use `\n` for multiline - max ~15 chars per line
### Edge Styling (Semantic meaning)
- [ ] Main/happy path: `->` solid arrow
- [ ] Conditional/alternate: `..>` dotted arrow
- [ ] Emphasized/critical: `==>` bold arrow
- [ ] Edge labels are SHORT (1-3 words): `-- YES -->`, `-- error -->`
### Character Safety (Alignment)
- [ ] NO graphical emojis inside nodes (break alignment)
- [ ] Unicode symbols OK inside nodes (single-width)
- [ ] ASCII markers ALWAYS safe ([x] [+] [!] [OK])
- [ ] Graphical emojis ONLY in `graph { label: "..."; }` title
### Structure (Organization)
- [ ] Groups `( Name: ... )` used for logical clustering when 4+ related nodes
- [ ] Node IDs short, labels descriptive: `[db] { label: "PostgreSQL"; }`
- [ ] No more than 7-10 nodes per diagram (split if larger)
## Success Criteria
### Correctness
1. **Parses without error** - graph-easy accepts the DSL
2. **Renders cleanly** - no misaligned boxes or broken lines
3. **Matches content** - all key elements from description represented
4. **Source preserved (MANDATORY)** - EVERY diagram has `<details>` block with source
### Aesthetics
1. **Uses boxart** - clean Unicode lines, not ASCII `+--+`
2. **Visual hierarchy** - start/end rounded, important bold/double, optional dotted
3. **Consistent styling** - same border style = same semantic meaning throughout
4. **Readable labels** - multiline with `\n`, no truncation
5. **Clear flow** - direction matches natural reading (top-down or left-right)
### Comprehensiveness
1. **Semantic emoji in title** - emoji chosen to match diagram purpose
2. **Legend if needed** - multiline title with `\n` for complex diagrams
3. **Edge semantics** - solid=normal, dotted=conditional, bold=critical
4. **Logical grouping** - related nodes in `( Group: ... )` containers
## TroublRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.