From napticstack-skills
Produce a Unicode box-drawing ASCII-art visual of a topic — flow, system architecture, agent topology, decision tree, deploy pipeline, before/after comparison, anything explainable as a picture rendered in monospace. Triggers on "ascii visual", "ascii art", "ascii diagram", "draw X", "visualize X", "diagram of X", "show me a picture of X", "make a visual of X". Speech-to-text alias: "a s c i i" (with spaces). NOT for: numeric charts (use a chart), external Slack/PDF deliverables (those have their own skills — sprint-notify, nap-slack, gen-pdf), or requests that explicitly want SVG/Mermaid output.
How this skill is triggered — by the user, by Claude, or both
Slash command
/napticstack-skills:ascii-visualThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When asked to visualize a topic in ASCII, produce a Unicode box-drawing diagram inside a markdown fenced code block. The diagram is the deliverable — surrounding prose introduces it and (sometimes) interprets it, but the visual carries the explanation.
When asked to visualize a topic in ASCII, produce a Unicode box-drawing diagram inside a markdown fenced code block. The diagram is the deliverable — surrounding prose introduces it and (sometimes) interprets it, but the visual carries the explanation.
Core principle: the visual is more valuable than prose precisely because drawing it forces commitment to concrete claims — real file paths, real function names, real numbers. If you can't fill in a specific value, the topic isn't understood well enough to visualize yet — go find the answer first.
Use when the user asks for:
Use proactively when a complex flow or comparison just landed in prose and the reader would parse it faster as a diagram.
Do NOT use for:
/sprint-notify or /nap-slack (they have their own visual patterns)/gen-pdf (renders proper graphics)| Use | Characters |
|---|---|
| Single-line component boxes | ┌ ─ ┐ │ └ ┘ ├ ┤ ┬ ┴ ┼ |
| Double-line header/section boxes | ╔ ═ ╗ ║ ╚ ╝ ╠ ╣ ╦ ╩ ╬ |
| Arrows (flow direction) | ──> / <── / ▼ / ▲ / ↓ / ← / → |
| Branches / forks | ─┬─ (split) / ─┴─ (join) / ┼ (cross) |
| Status glyphs | ✓ (ok) / ✗ (fail) / ╳ (blocked) / • (bullet) |
Avoid raw ASCII (-, |, +) — they don't align cleanly and look amateur. Mobile Slack and some terminals render box-drawing chars better than -+|.
╔══ REAL DM SMOKE TEST ══╗. Reader knows the topic from glance #1.(1) send DM, (2) validate secret, (3) route to FAQ. The diagram doubles as a runbook.── boto3 invoke ──> not bare ─►.agents/inbound_webhook/handler.py), real function names (format_reply_for_channel), real env var names (BOOKING_LAMBDA_NAME), real Lambda names (naptic-platform-aer-pilates-prod-faq-agent), real numbers (0.75s pause, ≤ 400 chars, cap at 3 chunks). If you can't fill in a real value, stop and find it.•-bulleted items inside its box. Add a sub-title row underneath the box border if it helps reading. ╔══════════════════════════════════════════╗
║ CUSTOMER MESSAGE (IG DM / email) ║
║ e.g. "what classes do you have tonight?"║
╚════════════════════╤═════════════════════╝
│
▼
┌──────────────────────────────────────────┐
│ FAQ AGENT (Sonnet 4.6) │
│ unified inbound responder │
│ tools: │
│ • retrieve_knowledge (KB walk) │
│ • send_email │
│ • handoff_to_booking ← NEW (#487) │
└──────┬──────────────────┬────────────────┘
│ │
┌────────────┴───────┐ ┌──────┴──────────────────┐
│ FAQ-OWNED │ │ HANDOFF-OWNED │
│ (KB walk only) │ │ (boto3 lambda invoke) │
│ • pricing │ │ • "tonight's classes?" │
│ • intro offers │ │ • "is Saturday Aerial │
│ • membership │ │ 11am open?" │
│ • refunds │ │ • "who teaches X?" │
│ • brand questions │ │ • availability checks │
└────────────────────┘ └──────────┬──────────────┘
│ boto3.invoke(
│ FunctionName=
│ BOOKING_LAMBDA_NAME)
▼
┌─────────────────────────────┐
│ BOOKING AGENT (Haiku 4.5) │
│ READ-ONLY, Phase 1 │
│ • lookup_schedule │
│ • lookup_class │
│ • lookup_availability │
└─────────────────────────────┘
ROLLBACK: BOOKING_HANDOFF_DISABLED=1 → tool returns ""
FAQ Rule 12 triggers graceful defer.
Evidence to look for (the trail):
manychat_reply_delivered { chunk_count: > 1 } in CloudWatchbooking_handoff_succeeded { response_chars: > 0 }body_text joined by ---chunk-split---| Mistake | Fix |
|---|---|
Using - ` | +` instead of box-drawing chars |
Placeholder names (<your-lambda-name>, TODO, XXX) | Stop. Find the real value. The skill is wasted if the diagram lies. |
Bare arrows with no labels (─► alone) | Label every arrow with what it conveys: ── boto3 invoke ──>. |
| One huge mega-diagram covering 3 unrelated flows | Split into 2–3 separate diagrams with their own headline boxes. |
| Diagram without an evidence trail | Add a short bulleted list of CloudWatch log shapes / DDB rows / HTTP responses to verify. |
| Inlining a multi-line visual in prose (no code fence) | Wrap in triple-backticks. Markdown collapses whitespace; the visual breaks. |
| Width > 75 chars | Mobile/Slack wraps unpredictably past 65–70. Tighten the boxes. |
| Topic | Shape |
|---|---|
| Linear flow (A → B → C → D) | Vertical sequence, ▼ arrows, one box per step |
| Decision tree | ─┬─ fork, condition labels on each branch |
| System architecture | Stacked boxes, sub-boxes for components inside, arrows showing data flow |
| Agent topology | One box per agent, arrows showing handoff direction, group similar agents in a parent frame |
| Before/after | Two diagrams stacked or side-by-side, identical box shapes, table beneath comparing rows |
| Pipeline (build/deploy) | Horizontal sequence with ──> arrows; each stage's gate condition labeled |
| Timeline | Calendar squares or a ├──┼──┼──┤ horizontal axis with date labels |
| Topology / relationships | Hub-and-spoke or graph with ─┬─ joins |
For Slack-specific client comms or sprint-notify patterns (calendar grid, status line, big-number callout, tab/nav), see ~/.claude/skills/sprint-notify/SKILL.md — different deliverable channel, similar visual idioms.
/sprint-recap + /sprint-notify, both must include an ASCII visual.~/.claude/skills/sprint-notify/SKILL.md — Slack-specific ASCII pattern library (calendar / status line / big-number / tab nav)./gen-pdf — when the deliverable needs to render to PDF, use that instead./nap-slack — when the deliverable goes to a Slack client channel, use that instead.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub napticstacks/napticstack-skills