🌍 Global Mirror — Visit original CN site →
Back to skills

Nomnoml

ASecurity

Writes, edits, and renders nomnoml diagrams (text-to-UML) for architecture sketches, class diagrams, sequence-like flows, and relationship graphs. Use when asked to create or update nomnoml code, convert a description into a diagram, or render nomnoml to SVG/PNG for docs.

3 stars
0 votes
1 copies
2 views
Added 2/11/2026
developmentnodeapifrontendbackend

Works with

cliapi

Security Analysis

A100/100

Scanned 2/12/2026

Install via CLI

$openskills install knoopx/pi
Download Zip
SKILL.md
---
name: nomnoml
description: Writes, edits, and renders nomnoml diagrams (text-to-UML) for architecture sketches, class diagrams, sequence-like flows, and relationship graphs. Use when asked to create or update nomnoml code, convert a description into a diagram, or render nomnoml to SVG/PNG for docs.
---

# nomnoml

Convert plain-text descriptions into nomnoml markup and (optionally) render it via CLI.

Primary reference: https://nomnoml.com

## Quick start

### Minimal diagram

```nomnoml
[User]->[AuthService]
[AuthService]->[DB]
```

### Typical class box

```nomnoml
[Order|
  +id: UUID;
  +total: Money;
  |
  +addItem(item);
  +checkout();
]
```

## Syntax essentials

### Nodes (boxes)

- Basic: `[A]`
- With compartments (title | attributes | methods): `[A|x; y|do();]`
- Escape newlines with actual newlines (preferred) or `\n` when needed.

### Relationships (common)

```text
[A]->[B]        # association / dependency
[A]-->[B]       # dotted
[A]-:>[B]       # composition-like (varies by style)
[A]<-[B]        # reverse arrow
[A]-[B]         # line without arrow
```

If arrow semantics are ambiguous, prefer clear labels:

```nomnoml
[API]->[DB]
[API] "reads/writes" -> [DB]
```

### Cardinalities / labels

```nomnoml
[Customer] 1->* [Order]
[Order] 1->* [OrderLine]
```

### Grouping

```nomnoml
[<frame> Payments|
  [API]
  [Worker]
]

[API]->[Worker]
```

Common containers:

- `<frame>`: big box grouping
- `<package>`: package-like grouping
- `<actor>`: actor stick figure

### Styling / directives

Add directives at the top using `#`:

```nomnoml
#direction: right
#spacing: 40
#ranker: tight-tree

[Client]->[API]
```

Common directives:

- `#direction: right|down`
- `#spacing: <number>`
- `#padding: <number>`
- `#ranker: network-simplex|tight-tree|longest-path`

## Workflow: generate a diagram from a description

1. Identify the **diagram type**:
   - Class/data model → boxes with compartments + inheritance/associations
   - Architecture/services → frames/packages + arrows + labeled edges
   - Flow/steps → simple boxes + arrows; keep it readable

2. Choose names:
   - Use stable nouns for nodes (`AuthService`, `TokenStore`, `Frontend`).
   - Keep node names short; put details in compartments or labels.

3. Produce nomnoml code:
   - Start with `#direction: right` for architecture diagrams.
   - Use frames/packages to group by bounded context.
   - Add labels for anything non-obvious.

4. Iterate:
   - If diagram is too dense, split into multiple diagrams (by subsystem).

## Rendering (tool)

If a rendered asset is needed, use the nomnoml tools instead of CLI.

### Option A: quick preview

Use the tool to render directly in chat:

- `nomnoml-display` with inline `source` for a quick preview.

### Option B: render to SVG

Use the tool to render and optionally write a file:

- `nomnoml-render` with inline `source` and optional `outputFile`.
- `nomnoml-render-file` with `inputFile` and optional `outputFile`.

If rendering isn’t required, still produce the `.nomnoml` source file so it can be rendered later.

## Patterns

### Architecture sketch (recommended default)

```nomnoml
#direction: right

[<actor> User]->[WebApp]

[<frame> Backend|
  [API]
  [Worker]
]

[WebApp]->[API]
[Worker]->[DB]
[API]->[DB]

[DB]
```

### Class diagram with inheritance

```nomnoml
[<abstract> Animal|+name: string|+speak()]
[Dog|+breed: string|+speak()]
[Cat|+color: string|+speak()]

[Animal]<:-[Dog]
[Animal]<:-[Cat]
```

### Entity relationship (simple)

```nomnoml
#direction: down

[User|id; email]
[Session|id; userId; expiresAt]

[User] 1->* [Session]
```

## When asked to “update an existing diagram”

- Preserve existing node names unless there’s a clear rename.
- Apply the smallest diff:
  - add one box/edge at a time
  - keep direction/ranker consistent
- If you change meaning, update edge labels to stay explicit.

Comments (0)

No comments yet. Be the first to comment!

Nomnoml (Grade A) - Claude Skill | Skills Directory

Stay up to date

Get the latest news on AI tools and skills delivered to your inbox.