Skip to content
Back to skills

Arkitect Excalidraw

ASecurity

Create or edit editable Excalidraw (.excalidraw) diagrams — system and application architectures for any cloud or stack, software component and block diagrams, data pipelines, agentic/LLM systems, network and deployment views, flows and decision paths — in a hand-drawn house style, using Excalidraw's own default libraries plus custom icons built from real product logos. Use whenever the request involves an Excalidraw scene or library, a diagram for a README or a whiteboard, a system design, c...

  • 9 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 19, 2026
ai-agentsrustgobashsqlnodeexpressawsgitdatabasebackend

Security analysis

A100/100

Pro scans all 12 files and shows the line behind each finding

Scanned September 25, 2026

npx -y skills add mouadja02/arkitect --skill arkitect-excalidraw --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Arkitect Excalidraw?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Arkitect Excalidraw
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mouadja02-arkitect-excalidraw/badge)](https://www.skillsdirectory.com/skills/mouadja02-arkitect-excalidraw)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: arkitect-excalidraw
description: Create or edit editable Excalidraw (.excalidraw) diagrams — system and application architectures for any cloud or stack, software component and block diagrams, data pipelines, agentic/LLM systems, network and deployment views, flows and decision paths — in a hand-drawn house style, using Excalidraw's own default libraries plus custom icons built from real product logos. Use whenever the request involves an Excalidraw scene or library, a diagram for a README or a whiteboard, a system design, component or block diagram, anything wanted quickly or in a sketchy style, an icon built from a product logo, or an edit to an existing .excalidraw file.
---

# Architecture diagrams in Excalidraw

Produces native, editable `.excalidraw` JSON — never a flattened image, never
Mermaid as the final artifact. Any cloud, any stack. The builder applies the
house style, binds the arrows and embeds the icons; you write a small JSON spec.
Scripts live in `${CLAUDE_PLUGIN_ROOT}/skills/arkitect-excalidraw/scripts`.

## What to read

Read only what the task needs. Every path is relative to this skill.

| Task | Read |
|---|---|
| Draw a new scene | this file, the one pattern you pick in step 2, and one worked example (step 4) |
| Edit an existing `.excalidraw` | `references/editing.md` |
| An item the search cannot find, an unnamed library item, a logo, a public library | `references/icons.md` |
| Rendering fails, or the user wants the real app | `references/rendering.md` |
| Hand-written scene JSON | `references/excalidraw-format.md` |
| A deliberate deviation from the house style, or its evidence | `references/style-guide.md` |

If `~/.arkitect/excalidraw/style-notes.md` or `patterns.md` exist
(`$ARKITECT_HOME/excalidraw/` when set), read them too: they are what
`/learn-excalidraw-style` found in the user's own scenes, and they win over the
shipped guide. Say so in the report.

The builder already draws the corpus's habits: elbow arrows at stroke width 4,
edge captions beside the line, dashed-rectangle regions, captions below shapes.
Do not undo them by hand.

## Workflow

1. **Decide whether to ask** — see Interview first, below. Most requests are
   drawn straight away, with the assumptions stated.

2. **Pick a pattern and state assumptions.** Choose the nearest, then read
   only that `## N.` section of `references/pattern-catalog.md`:
   1 pipeline · 2 scope or trust box · 3 tiers · 4 request with a decision ·
   5 current vs proposed · 6 external systems · 7 one service's inside ·
   8 agentic/LLM · 9 ordered protocol · 10 legend · 11 sources into one store ·
   12 tables inside a product · 13 big phases (CI/CD) · 14 one tool, many
   outputs · 15 naming convention · 16 two diagrams, one canvas · 17 unwired
   components. Prefer 11–17, the corpus's own shapes, when the system fits.
   Spec fragments: `assets/templates/patterns.json`. Write every assumption
   down for the report and, where it matters, a note on the canvas.
   **An assumption fills a gap the user left open; it never overrides a stated
   fact.** Never add, remove or renumber a component they specified: if the
   stated count draws awkwardly, draw the stated count and say the layout is
   tight.

3. **Resolve icons — bundled libraries first.**
   ```bash
   node scripts/find-icon.mjs "postgres" --compact
   ```
   Put the ref from a match in the spec: `"icon": "data-platform:9"`. A node
   that only names its component resolves by product name alone; the search says
   what it would draw (`"draws"`) or why it gets a placeholder. Shared packs fill
   gaps (`"icon": "drawio:databases/postgresql"`). Unnamed library items:
   `references/icons.md`. **Otherwise use a placeholder and move on**:
   `kind: "placeholder"`, or an unresolvable `icon`, draws a dotted `?` slot
   named under `placeholders` in the build report. Do not fetch a logo unless
   asked, and **never** use one product's mark for another.

4. **Build from a spec.** First see which style this install draws with:
   ```bash
   node scripts/build-diagram.mjs --print-style
   node scripts/build-diagram.mjs my-spec.json --out "path/to/architecture.excalidraw"
   ```
   Write the spec next to the output file, never inside this skill's folder.
   With `"source": "override"` (the user's own conventions), pick each edge
   `kind` by its `meaning` there and keep the tokens it changed. A non-empty
   `style.errors` means the override was ignored: tell the user. Never pass
   `--defaults` for a user's scene.

   **Look at one worked example's PNG before writing a spec**, then its spec:
   `assets/templates/starter-architecture.spec.json` for every node and
   connector kind, or `assets/templates/aws-data-platform.spec.json` for a
   large real answer (regions per phase, sublabels, an error lane, assumptions
   on the canvas, fractional `col`/`row`).

   The build writes nothing and lists every problem (exit 1) when an edge or
   parent names something missing or a number is not one (a string `col`, a
   size ≤ 0). Edges connect nodes, not boundaries. Fix the spec; never drop the
   edge. A missing `col` or `row` is 0. The report lists an unknown `kind` under
   `unknownKinds`, a key no part of a spec takes — a node's `style` above all — under
   `unknownFields`, a shape faking a boundary under `looksLikeBoundary`, a
   shape naming a bundled product under `namesAProduct`, and an edge through a
   node it does not connect under `crossings` (move that node): fix each or
   report it; a field the builder dropped never applied. Hand-written JSON only for what
   the spec cannot express: `references/editing.md`.

5. **Never overwrite blind.** The builder backs up an existing file, keeping the
   oldest plus the newest five (`--keep-backups N`, `0` keeps all). Every other
   edit goes `analyze → back up → edit → validate`, and the backup is
   `node scripts/backup.mjs "<file>"` before the first write. Suggest
   `*.backup-*` for the user's `.gitignore`.

6. **Validate.**
   ```bash
   node scripts/validate-excalidraw.mjs "path/to/architecture.excalidraw"
   ```
   Errors block delivery. Warnings are judgement calls: check each one against
   the render.

7. **Render and look at it.**
   ```bash
   node scripts/render-excalidraw.mjs "path/to/architecture.excalidraw" --out-dir .analysis/renders --width 2200
   ```
   Needs a local Edge, Chrome or Chromium; with none it exits 1 — fall back to
   `--format svg`, dropping `--width`, which is PNG-only. Retry with
   `--no-sandbox` only when the error names it. Read the PNG back and
   iterate; a scene that validates but reads badly is not done. The PNG is
   geometry-faithful, not font-faithful: judge layout from it, not typography;
   an SVG is markup you read, not a picture you see, and settles neither. First
   renders nearly always need, in the spec:
   - a long region label overrunning: one or two words, detail in sublabels;
   - a line through a third icon: `"route": "avoid"`; two on one line: `"straight"`.

8. **Open it in the real app** when the user wants to, and before claiming it
   looks right in Excalidraw itself: `references/rendering.md`.

9. **Report.** Write all seven headings out first, in order, then fill them in.
   Each one appears even where it is a single line:

   **File** · **Engine** · **Assumptions** · **Icons** · **Validation** · **Render** · **Deviations**

   **Engine** only when the user named none: what made it Excalidraw rather than
   Draw.io — the audience, the sketch style, the README; never a generic virtue.
   **Assumptions**: every one, asked or not, and any product the user did not
   name. **Icons**: each ref and its source — bundled library, shared pack, a
   logo you built; every placeholder. **Render**: you looked at the PNG, or it
   failed and why; never "rendered" for a render that failed, and never a
   picture you did not see. With only an SVG, say so — spacing and crossings are
   then the validator's findings, quoted as its. **Validation**: each warning
   left, with every id it names, as a defect still there, never "minor" or
   "a few"; each defect seen and left, by page.
   **Deviations** from the guide.
   Offer nothing Arkitect cannot do: there is no PowerPoint or PDF export.

## Interview first

**Ask only what would change the drawing, and only someone who can answer.**
A request that names its components and flows is drawn, not questioned — even
with a product or a source left unnamed: pick the common choice, draw, and list
it under Assumptions.

A diagram is a claim about someone's system; a wrong claim drawn well gets
believed. Ask **one question at a time**, each with your **recommended answer**
and a one-line reason, in dependency order, feeding answers forward. **Never ask
about styling** — that is this skill's job. Skip a branch the request already
answers or that cannot change the drawing:

1. **Purpose and audience** — who reads it, what decision it supports. Everything below depends on it.
2. **Scope** — what is inside, and what is deliberately outside.
3. **Level** — one box per service, container or team; never mixed.
4. **State** — as-is, to-be, or both (two frames or one comparison).
5. **Components by real product name** — "Snowflake", not "the warehouse"; this decides the icons.
6. **Flows** — what moves, which way, sync or event-driven; only those worth an arrow.
7. **Boundaries** — trust, network, ownership, account; they become the containers.
8. **What must be visible** — failure paths, multi-region, HA/DR, a control under review.
9. **Frames** — split by lifecycle stage or audience, not by how much fits.
10. **Unknowns** — agree up front: a stated assumption or a labelled placeholder, never invention.

**Stop when** the remaining unknowns could not change the drawing: a three-box
flow needs two questions, a review-board architecture needs the ladder. Write
the answers down; they are the report's assumptions and the canvas note.

## Safety — always

- The user's scenes stay on the machine. Nothing is uploaded; the local
  Excalidraw container has no backend.
- The only network requests are public logos and the public library catalogue,
  and only when asked. Search the product name alone — never a customer,
  codename, hostname or anything else from the diagram.
- Never read a whole existing scene into context; embedded images run to
  megabytes of base64. `references/editing.md` says how to work on one.

## Non-negotiables

- Editable `.excalidraw` JSON is the deliverable; images embed in the scene's
  `files`, never linked.
- Every arrow bound at both ends, so the diagram survives being dragged around.
- A missing icon is an obvious placeholder named in the report, never another
  product's mark or a grey box passed off as finished.
- Excalidraw's font sizes, stroke widths and palette plus the house accents; a
  product's brand colour where the diagram is about it.
- A legend whenever more than one connector kind is used; assumptions on the
  canvas.

Files in this skill

  • SKILL.md9.5 KB
  • assets/icons/README.md1018 B
  • assets/libraries/README.md1.1 KB
  • assets/libraries/bundled/ATTRIBUTION.md3.2 KB
  • assets/libraries/bundled/architecture-diagram-components.excalidrawlib52.9 KB
  • assets/libraries/bundled/artem-s-icons.excalidrawlib53.9 KB
  • assets/libraries/bundled/authors.json11.8 KB
  • assets/libraries/bundled/awesome-icons.excalidrawlib64.7 KB
  • assets/libraries/bundled/aws-serverless.excalidrawlib95.8 KB
  • assets/libraries/bundled/azure-cloud-services.excalidrawlib77.8 KB
  • assets/libraries/bundled/cloud-design-patterns.excalidrawlib97.6 KB
  • assets/libraries/bundled/data-science.excalidrawlib22.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…