Skip to content
Back to skills

Prismantis

BSecurity

Show the prismantis demo. Use when the user runs $prismantis or asks what prismantis is or does.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 21, 2026
ai-agentsgoshellbashnodeawsgit

Works with

  • claude code
  • terminal
  • cli

Security analysis

B85/100
  • highContains large base64-encoded strings that could be hidden payloads

Pro shows the line behind each finding and how to fix it

Scanned October 21, 2026

npx -y skills add Hanafubuki/ops-control --skill prismantis --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Prismantis?

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

Security grade badge for Prismantis
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/hanafubuki-prismantis/badge)](https://www.skillsdirectory.com/skills/hanafubuki-prismantis)

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: prismantis
description: Show the prismantis demo. Use when the user runs $prismantis or asks what prismantis is or does.
---

Reply with exactly the markdown between the START and END lines, nothing before or after it.

START
> This is the Claude Code demo. In Codex, copy buttons, tool rows, diff cards, alert boxes, heading styles, prose colors, figures and charts are not drawn yet: see codex/README.md in the prismantis repo.

# prismantis

Colored markdown for Claude Code replies: **bold**, *italic*, ~~struck~~, `inline code`, a [link](https://github.com/NahumLitvin/prismantis) and a bare URL https://github.com/NahumLitvin/prismantis/issues, both clickable, numbers like 99.9% and 250ms, paths like ~/src/app.ts.

Code-shaped prose stays as written: f(*args, **kwargs), a link with parentheses [Foo_(bar)](https://en.wikipedia.org/wiki/Foo_(bar)), a file link [`render.tsx`](https://github.com/NahumLitvin/prismantis/blob/main/hooks/render.tsx) and **bold with *italic* inside**.

## Commands

| Command | Does |
|---------|------|
| `/prismantis` | This screen |
| `/prismantis theme <name>` | Switch theme on the spot (`/prismantis <name>` works too), `random` for a new dark one now and each time the mod loads |
| `/prismantis copy` | Copy the last reply, or `copy code` for its last code block |
| `/prismantis setup` | Pick a theme, table, task, prompt, tool row and tool output style from drawn samples |
| `/config` | Edit any option |

> [!NOTE]
> 16 themes ship with it. `mono` uses no color, only bold and dim.

### Pick a theme

```bash
/prismantis theme nord
/prismantis theme github-light
/prismantis theme random
```

1. Dark: catppuccin-mocha, dracula, nord, tokyo-night, gruvbox-dark, rose-pine, everforest, github-dark, one-dark, solarized-dark
2. Light: catppuccin-latte, gruvbox-light, rose-pine-dawn, github-light, solarized-light
3. Plain
   - mono

> [!TIP]
> Any color slot beats the theme. Set `headingColor` or `numberColor` to a hex value in `/config`.

## Everything it draws

### Copy tables

Use `⧉ md` for Markdown, `⧉ art` for chat, or `⧉ html` for a formatted table. `⧉ html` shows in a local macOS, Linux or Windows terminal and writes HTML and tab-separated plain text together; Linux needs CopyQ running. Pasted into Slack it makes a native table; Slack keeps cell text but drops bold, links and alignment. If that fails, it copies the plain text alone. Set `copyButtonStyle` to `hover` in `/config` and every copy button hides until the pointer is on its block.

| Item | Quantity[^count] | Status |
|:-----|---------:|:------:|
| **Apples** | 3 | *Ready* |
| Oranges | 5 | Pending |

### Alerts

> [!IMPORTANT]
> After updating the plugin, open sessions need `/reload`.

> [!WARNING]
> Terminals that copy on select (Warp) can turn a click on a copy button into a selection. Use the keyboard shortcut.
> Selecting a typeset formula copies blank cells. Its copy button copies the LaTeX.

> [!CAUTION]
> Claude Code refuses trees over 20000 nodes. A code block past about 500 highlighted lines falls back to plain text.

### Task lists

- [x] Parse the reply
- [x] Draw it
  - [x] Tables and code
  - [ ] Diagrams on the desktop app
- [ ] Ship the next release

### Your prompts

Scroll up: what you typed draws in a bubble. `promptStyle` switches to `bar`, `chevron` or `off` in `/config`. Set `clock` to `24h` or `12h` and each prompt shows when you sent it, and each turn's last line when it finished.

### Tool rows

Tool calls draw as one line, dimmed on the right by default. Set `toolStyle` in `/config` to `chat`, `tree-dim`, `tree-bold` or `classic`. `toolOutput: quiet` in `/config` hides what Claude only read and says in plain words what each call did: `Read src/app.ts lines 1–40`, `Searched src/ for "TODO"`.

Each edit or new file draws as a diff card headed `+N −M`: added and removed lines on a tint of the theme's own green and red, kept readable in every theme, long lines wrapped, the first 20 lines and a `+K more lines` button that opens the rest. Files a shell command changes (`sed -i`, a script) get the same card, one per file, headed by its path. Set `diffStyle` in `/config` for the look: `card`, `full`, `marks` or `bar`.

### Quotes and rules

> A quote keeps its text when you copy it, without the `> ` markers.
>
> It keeps its paragraphs and lists too:
> - **bold** and `inline code` stay styled
> - each item gets its own row
>
> > A nested quote draws inside the bar.

<summary>
A line that holds only a tag draws dim, so wrapper tags show the reply's structure.
</summary>

---

### Code

```json
{ "theme": "dracula", "headingStyle": "banner", "mermaid": true }
```

Blocks of 10 lines or more get line numbers. Past 30 lines they fold to the first 20 and a `+M more lines` button, `show less` folds them back; `⧉ copy` still copies the whole block.

```ts
type Item = { name: string; price: number; qty: number }

const basket: Item[] = [
  { name: 'apples', price: 1.2, qty: 3 },
  { name: 'oranges', price: 0.8, qty: 5 },
  { name: 'pears', price: 1.5, qty: 2 },
  { name: 'plums', price: 2.1, qty: 4 },
  { name: 'grapes', price: 3.4, qty: 1 },
  { name: 'lemons', price: 0.6, qty: 6 },
  { name: 'melons', price: 4.0, qty: 1 },
  { name: 'cherries', price: 5.5, qty: 2 },
  { name: 'figs', price: 2.8, qty: 3 },
  { name: 'limes', price: 0.5, qty: 8 },
  { name: 'peaches', price: 1.9, qty: 4 },
  { name: 'kiwis', price: 0.9, qty: 6 },
]

const total = (items: Item[]): number =>
  items.reduce((sum, item) => sum + item.price * item.qty, 0)

const cheapest = (items: Item[]): Item | undefined =>
  [...items].sort((a, b) => a.price - b.price)[0]

const byName = (items: Item[]): Item[] =>
  [...items].sort((a, b) => a.name.localeCompare(b.name))

const receipt = (items: Item[]): string[] =>
  byName(items).map(item => `${item.name.padEnd(10)} ${item.qty} x ${item.price.toFixed(2)}`)

console.log(receipt(basket).join('\n'))
console.log('total', total(basket).toFixed(2))
console.log('cheapest', cheapest(basket)?.name)
```

#### Math

$$
\int_0^\infty e^{-x^2}\,dx = \frac{\sqrt{\pi}}{2}
$$

#### Images

In kitty and Ghostty a PNG on a line of its own draws as a picture: a local path, `~/`, `file://` or a `data:` URL. Web images stay links, prismantis downloads nothing. Other terminals show the alt text in link color.

![prism band](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAAAoCAIAAAAAIrR+AAACdElEQVR42u3TewcQBgAA8ZNkkkySJEmSJJOWrW3t/cyWJJlMkmQmSZIkSSaTJEmSJEmStLS0trX3smVLkiRJkiTJZCZJdrNvsP0xNu73Fc4hOBAfwyH4OA7HkTgax+J4nIiTcQpOw+k4A1/EV/FNfBtn41x8F9/DhbgY38eluBxX4mpci+vxQ/wIN+NW3I47cTfuxf14EA/jUTyOJ/EUfo3f44/4M57DC3gJr+A1vIG38A7+ir/hfXyIf/BIHsjvck/uym25KdflqlyWi3JezsoZOS3fyVfyuZyQY3JEDskB2Sd7ZJfskG2yRTbJRtkg62SNrJIVskw+kCWySBbIfJknc2SWzJQ35BV5QZ6Vp2SqPCGTZIKMkzEySkbIMBkqg2WQDPgrwAAchINxKA7DETgKx+A4nICT8Amcik/hM/g8voyv40ychXNwHs7HBbgIl+AHuAxX4Cpcg+twA27ETbgFt+EO3IV7cB8ewEN4BI/hCfwMv8Rv8TSewbN4Hi/iZbyK1/Em3sa7eA9/xwf4iD/kodyX3+RXuSO35IZckytySS7IOflFfpIf5Bs5JSfluByVw3JQ9ste2S07Zbtslc3ykXwo62WtrJaVslyWyvuyWBbKe/KuzJXZ8o68Ja/JSzJDpss0mSKTZaKMl7EyWkbKcHlchshjMvDvHvAkPo3P/TsHfIyf4Kf4xT88YABJ/rcaOGngJA2cpIGTBk7SwEkaOEkDJw2cpIGTNHDSwEkaOEkDJ2ngpIGTNHCSBk7SwEkDJ2ngJA2cNHCSBk7SwEkaOGngJA2cpIGTNHDSwEkaOEkDJw2cpIGTNHCSBk4aOMl/yZ8SRd1gPq93WQAAAABJRU5ErkJggg==)

#### Footnotes

Latency fell to 120ms[^lat] after the cache change[^cache].

Click a mark to see its note. Point at a note to light the marks that cite it. Both need Claude Code 2.1.295 or later.

[^count]: Counted at close.
[^lat]: Median of 50 runs.
[^cache]: Entries expire after 10m.

#### Diagrams

```mermaid
flowchart LR
    R["<i>Reply</i>"] --> P["<b>Parse</b>"]
    P --> D["<u>Draw</u>"]
    D --> S["<s>Screen</s>"]
```

```mermaid
sequenceDiagram
    participant U as You
    participant C as Claude
    participant P as prismantis
    U->>C: prompt
    C->>P: markdown
    P-->>U: colored reply
```

```mermaid
xychart-beta
    title "Color options per group"
    x-axis [text, head, num, code, diag]
    y-axis "options" 0 --> 8
    bar [7, 3, 2, 6, 2]
```

Name each series and the legend says which line is which:

```mermaid
xychart-beta
    title "Replies per hour"
    x-axis [09, 10, 11, 12, 13]
    y-axis 0 --> 40
    line "east" [30, 34, 22, 26, 31]
    line "west" [12, 18, 25, 20, 14]
```

A pie draws round with a legend. Set `pieStyle` to `bars` in `/config` for one bar per slice:

```mermaid
pie showData title Time per reply stage
    "Parse" : 3
    "Draw" : 9
    "Paint" : 5
```

```mermaid
gantt
    title Release week
    dateFormat YYYY-MM-DD
    section Build
    Parser   :p, 2026-10-05, 2d
    Renderer :r, after p, 3d
    section Ship
    Review   :after r, 2d
    Release  :milestone, 2026-10-12, 0d
```

A diagram wider than the terminal stays source, with a dim line saying why:

```mermaid
flowchart TD
    Q[Queue] --> W1[Worker 1] & W2[Worker 2] & W3[Worker 3] & W4[Worker 4] & W5[Worker 5] & W6[Worker 6] & W7[Worker 7] & W8[Worker 8] & W9[Worker 9] & W10[Worker 10] & W11[Worker 11] & W12[Worker 12] & W13[Worker 13] & W14[Worker 14] & W15[Worker 15] & W16[Worker 16]
```

A figure draws as written, its markup colored by role:

```figure
{dim:timeout at 10 s, handler books at 12 s, retry books again}
          {note:0 s}           {note:10 s}  {note:12 s}              {note:later}
          {accent:▏─────────────▏─────▏─────────────────▏}
Provider  {accent:██████████████}{warn:✗} timeout               {accent:█} retry
Handler   {ok:████████████████████} 200, nobody waits
Bookings  0                   {ok:1}                 {warn:2 twice}
```
END

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.