A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Teaches Claude to use a dozen visualization-building tools — raster, SVG, web, video, terminal, interactive, gaze plots,
muriel is a Claude Code skill that produces visual artifacts across sixteen channels — fourteen output + two cross-channel references — enforcing an 8:1 contrast floor and brand-token discipline at render time. Design tokens import from design.md and export to W3C DTCG; a vision-model critique agent audits the output; the floor never bends.
A single skill file (SKILL.md) teaches the agent to generate every visual artifact a researcher-designer-engineer ships — from text source files that diff in git and regenerate from data. The constraint discipline (8:1 contrast, OLED palette, one font treatment, generated > drawn, reproducible > one-off) stays live at render time: brand tokens are parsed, contrast is audited, dimensions are enforced — not as lint after the fact, but as part of the act of making.
muriel is the grandmother to marginalia (editorial callouts and magazine layouts, cited throughout channels/web.md) and iblipper (kinetic typography and emotional-vocabulary animation, cited in vocabularies/kinetic-typography.md). Both grew from the same constraint discipline and ship as the defaults here because they're tuned to pass muriel's rules out of the box.
They're defaults, not requirements. The constraint discipline — 8:1 contrast, OLED palette, one font treatment, brand tokens live at render time — is the backbone. The specific libraries are preferences. Swap in your favorite editorial library, kinetic-typography engine, chart renderer, style-guide loader, imagegen provider, or rasterizer; muriel's opinions are about what constraints hold, not which library enforces them. Every channel doc names which library it assumes, and none of those assumptions are load-bearing against a sensible substitute.
Python channels
Editorial
Interactive / graphics
Diagrams / video
Fourteen output channels, each with its own subfile under channels/:
typeset.py) — store assets, icons, banners, wordmarks, screenshot designssvgwrite, cairosvg, Mermaid, Excalidraw) — paper figures, data-driven diagrams, scalable icons, flowchartsdesktop-control + hyperframes) — product demos, GIFs, HTML → MP4 compositionschart.py) — sparklines, bar charts, tablestypeset.render_heatmap()) — Tobii-style fixation heatmapsmuriel.stats) — paper figures, notebook editorial, APA reportingchannels/charts.md.muriel.spatial + render_assets/) — depth scaffolding for layered typography + scalar-field topology. Static SVG perspective grids (1pt / 2pt / 3pt / iso) where grid() scaffolds space, plus ridgemap() — a sibling primitive that scaffolds scalar fields as stacked 1D slices (Joy Division / Harold Craft 1970 pulsar plot lineage). Three.js + CSS3DRenderer exemplars share one helper lib. Cooper VLW / Mackinlay-Robertson-Card / Dumais Data Mountain lineage. See channels/spatial.md.outer = inner + padding), optical alignment, shadows-over-borders, scale-on-press (0.96, never below 0.95), contextual icon animations (scale 0.25→1 + blur 4px→0 + bounce: 0), 40×40px hit area, no transition: all, tabular nums, text-wrap: balance / pretty, macOS font smoothing. 16 numbered rules, mined from thedavidmurray/claude-make-interfaces-feel-better (MIT, archived) with muriel's 8:1 contrast floor still binding. See channels/polish.md.Plus two cross-channel references used by every channel:
channels/dimensions.md) — social cards, device footprints, viewport tiers, paper sizes, video resolutionschannels/style-guides.md) — brand.toml schema, motion tokens, CSS / matplotlibrc derivation, ownership rules. Round-trips through Google Stitch design.md import (muriel import) and W3C Design Tokens (DTCG) export (muriel export-dtcg), so brand.toml plugs into style-dictionary, theo, Figma tokens-studio, token-css, and the iOS / Android / Tailwind pipelines downstream.muriel is a multi-constraint solver for visual production. The tooling is LLM-native (skill format, vision-model critique, brand tokens alive at render time, motion as a first-class schema field, engine adapters for Pillow / Flux / pretext / ffmpeg / Playwright). The principles are older: Cooper's Visible Language Workshop, Tufte's data-ink discipline, Bertin's retinal variable ranking, Gestalt grouping, CRAP layout, Reichle's E-Z Reader, scanpath patterns from vision science. The tools serve the principles.
Where things live. The skill's canonical source is
plugins/muriel/skills/compose/SKILL.md. The repo root's.claude-plugin/holds onlymarketplace.json; the plugin's own manifest lives atplugins/muriel/.claude-plugin/plugin.json(a root-level manifest isn't needed when the marketplacesourcepoints to a subdirectory). The committed.agents/skills/murielsymlink is a deliberate cross-harness bridge (see Other AI harnesses below), not a stray copy.
From any Claude Code session:
/plugin marketplace add andyed/muriel
/plugin install muriel@andyed-muriel
That's it — no clone, no symlinks. /plugin uninstall reverses cleanly. Invoke with /muriel:compose (plugin skills are namespaced; the muriel: prefix prevents collisions with other plugins). The muriel-critique subagent loads alongside the skill.
If you're working on the muriel repo itself, install from a checkout so edits show up live:
git clone https://github.com/andyed/muriel ~/Documents/dev/muriel
cd ~/Documents/dev/muriel && ./install.sh
The script symlinks plugins/muriel/skills/compose/ into ~/.claude/skills/muriel/ (so the bare /muriel invocation continues to work) and the critique agent into ~/.claude/agents/. It refuses if the plugin install is already present, to avoid double-loading.
pip install -e ~/Documents/dev/muriel # source install (editable)
# pip install muriel # PyPI — not yet published; track via GitHub Releases
pip install https://github.com/andyed/muriel/releases/download/v0.11.0/muriel-0.11.0-py3-none-any.whl
Then, from any script or notebook:
from muriel import matplotlibrc_dark # auto-applies an OLED matplotlibrc on import
from muriel.stats import format_comparison # APA-style reporting helpers
from muriel.contrast import audit_svg # WCAG 8:1 audit, module + CLI
from muriel.styleguide import load_styleguide # brand.toml loader with aliases + motion
from muriel.dimensions import figsize_for, OG_CARD
After pip install, the muriel command dispatches to every subcommand:
muriel # list subcommands
muriel capture https://example.com # responsive screenshot sweep
muriel contrast audit page.svg # WCAG 8:1 audit
muriel dimensions # print the dimensions registry
muriel heroshot in.png out.png --tilt 12 --brand brand.toml --target og.card
muriel tilt-shift raw.png hero.png # fake-lens depth-of-field blur
muriel venn spec.json out.png # area-proportional Euler diagram
muriel styleguide brand.toml --css # derive CSS :root custom properties
Each subcommand is also callable directly via python -m muriel.capture, python -m muriel.tools.heroshot, etc.
The muriel-critique subagent ships with the plugin and is loaded automatically by both install paths above (plugin install and install.sh). Dispatch it from any Claude Code session with the Agent tool, subagent_type: muriel-critique. See Critique agent below.
The canonical SKILL.md at plugins/muriel/skills/compose/SKILL.md uses the Agent Skills format that's portable across most agent harnesses. The repo ships a .agents/skills/muriel symlink to the canonical source — read natively by Codex CLI and as an alternate path by Cursor, Gemini CLI, GitHub Copilot, OpenCode, and Pi. Per-harness verification is unfinished; see HARNESSES.md for the rollout plan and the verification checklist. Kiro, Qoder, Rovo Dev, and Trae need per-harness manifest shims (P1, not yet landed).
| Channel | Required | Optional |
|---|---|---|
| Raster | Python 3, Pillow | muriel/typeset.py for templates |
| SVG | none (hand-rolled) | svgwrite, drawsvg, cairosvg, rsvg-convert, Mermaid CLI, mcp_excalidraw for live-canvas refinement |
| Web (editorial) | marginalia (CDN) | pandoc 3.x for markdown → HTML |
| Web (static capture) | Playwright or weasyprint | headless Chrome |
| Interactive | modern browser | D3, Three.js, p5.js, PixiJS v8 (CDN) |
| Video | ffmpeg (full build: brew tap homebrew-ffmpeg/ffmpeg) | hyperframes for HTML → MP4; desktop-control for automated capture |
| Terminal | Python 3 | muriel/chart.py |
| Density viz / Gaze | Python 3, Pillow | muriel/typeset.py render_heatmap() |
| Science | Python 3 | matplotlib, NumPy (for figures); muriel.stats / muriel.matplotlibrc_{dark,light} / muriel.dimensions ship stdlib-only |
| Infographics | Python 3 | svgwrite, cairosvg for raster export |
| Dimensions | Python 3 | — (stdlib-only reference module) |
| Style guides | Python 3 | tomli on 3.10 (3.11+ has tomllib); optional matplotlib for rcparams derivation |
Encoded in SKILL.md and enforced across every channel:
muriel ships a vision-model critique agent at plugins/muriel/agents/muriel-critique.md. It reads a rendered artifact and names — with evidence — every way the artifact fails muriel's rules, channel anti-patterns, and (optionally) a brand.toml's tokens. Read-only tools (Read / Glob / Grep), hardened against prompt-injection, badge-laundering, and contrast-claim spoofing embedded in the image itself.
Install: the subagent ships with the muriel plugin and is loaded automatically by both install paths in Install above (plugin install via /plugin install muriel@andyed-muriel and the developer install.sh route). No manual symlinks required.
Invoke from any Claude Code session:
"Run muriel-critique on
path/to/artifact.pngwith channelrasterand brandexamples/muriel-brand.toml."
Output: a structured markdown critique with a verdict (PASS / NEEDS REVISION / FAIL), a numbered issue list (rule / evidence / fix, severity-tagged), and a rationale. CRITICAL severity → FAIL; any HIGH → NEEDS REVISION; otherwise PASS.
Regression fixtures: adversarial and baseline artifacts for the critique agent live at examples/critique-fixtures/ with their expected verdicts. Contribute new attacks there — any CVE for visual-critic systems can be a one-paragraph pull request.
scrutinizer-brand.toml StyleGuide, the foveal_overlay primitive (port of the in-app overlay), the engine_sectors_overlay primitive (Blauch et al. 2026 isotropic cortical sectors), the palettes module (Wong / IBM / Tol), and the contrast/dimension constants. The page also exposes Scrutinizer's perceptual decay constants (SIGMA_LM, SIGMA_BY, CMF_A, etc.) for designers building peripheral-aware UI. First public artifact of the muriel + Scrutinizer integration.brand-guidelines (Anthropic's seven brand colors + Poppins/Lora typography applied via python-pptx; the canonical example of single-palette + single-typography-pair brand application), theme-factory (ten named themes — Ocean Depths, Sunset Boulevard, Forest Canopy, Modern Minimalist, Golden Hour, Arctic Frost, Desert Rose, Tech Innovation, Botanical Garden, Midnight Galaxy — plus an "ask the user, vibe-generate a similar one" custom-theme path), canvas-design (PNG/PDF visual art with a custom canvas-fonts directory), frontend-design (UI/UX templates), web-artifacts-builder (HTML artifacts with React + Tailwind), algorithmic-art (p5.js generative with seeded randomness), slack-gif-creator (size-constrained animated GIFs). muriel positions on the same surface but with stricter constraints: 11 palettes vs 1, two-tier text-safe/decorative-only vs ungated, contrast-by-construction generation (muriel.palettes.generate_for_floor()) vs pick-from-menu, 8:1 floor vs no contrast guarantee, motion tokens in brand.toml vs no motion vocabulary, audit pipeline vs apply-and-ship. Anthropic ships breadth (17 skills across many domains); muriel ships depth on this one. Useful baseline to position any new muriel feature against./impeccable:* commands (craft, critique, audit, polish, bolder, quieter, distill, harden, animate, colorize, typeset, layout, …), twenty-seven deterministic anti-pattern rules plus twelve LLM-critique rules, and a standalone npx impeccable detect CLI (regex + Puppeteer screenshot scan, no API key required) that emits JSON for twenty-four detectable issues. Packaged across eleven harnesses (Claude Code, Cursor, Codex CLI, Gemini CLI, GitHub Copilot, Kiro, OpenCode, Pi, Qoder, Rovo Dev, Trae). muriel's Absolute bans section in channels/web.md and the reflex-fonts anti-pattern are rephrased from impeccable. Where impeccable is single-surface + JS-side and ships its own detector, muriel is multi-channel + Python-native with a vision-model critique agent; they complement — chaining muriel capture → npx impeccable detect → muriel-critique is the strongest pipeline for "render → static-rule scan → vision-critic" on a web surface. muriel's cross-harness rollout in HARNESSES.md mirrors impeccable's packaging matrix.vocabularies/surfaces.md; patterns mined include the typed frontmatter shape (category / scenario / aspect_hint / featured / recommended / example_source_url), the "absolute rules per surface" enforcement pattern (deck-swiss-international's border-radius: 0 everywhere, 22 locked layouts S01–S22, locked 4-theme palette with no hex modification), CJK-first font stacks (Latin display + Noto Sans SC), and the "inspired by" lineage chain shipped as data not prose. Take/keep-ours mapping in the Sibling skills table. Full surface implementation queued.vocabularies/pixijs.md; upstream is where the depth lives.channels/charts.md — we ported the rule structure, per-library config tables, and anti-pattern PATTERN→FIX detection format, then overrode the color tokens because Tufte's published palette fails muriel's 8:1 floor (their #666 series and #e41a1c accent score 5.7 and 4.7). Specific divergences logged in the Sibling skills table.channels/science.md and queued channels (market-research, pptx). muriel borrows test-selection vocabulary, the generate→render→inspect PPTX inspection loop, and the GRADE/Cochrane bias taxonomy; we keep our standard-library-only muriel.stats (no scipy/pingouin) and 8:1 audit on every figure. Take/keep-ours mapping in the Sibling skills table.muriel/tools/venn.py.muriel CLI's subcommand-dispatch pattern is borrowed from their social_cli/.channels/diagrams.md catalog grows past the matrix + cycle MVP toward causal DAG and stack primitives.channels/video.md tooltip-burn + ffmpeg recipes for product-demo / walkthrough videos. AGPL means muriel never embeds or imports Recordly; the integration is purely filesystem/MP4 hand-off..excalidraw JSON, Mermaid convert, live canvas at localhost:3000). Complementary to muriel: muriel generates SVG/raster artifacts deterministically from specs; mcp_excalidraw lets a Claude Code agent manipulate diagrams in a live canvas with the draw-observe-adjust loop. Pairs cleanly with the planned muriel.authoring.excalidraw emitter — muriel writes the .excalidraw source file, mcp_excalidraw opens it for iterative refinement, muriel re-audits on re-export.skill.md index. The structural model + 16 numbered rules behind muriel's channels/polish.md — we ported the whole rule set verbatim because the values are tuned (concentric outer = inner + padding, exact scale(0.96) press never below 0.95, exact scale 0.25→1 + bounce: 0 for contextual icon swaps, 40×40px hit area, ~100ms stagger between semantic chunks) and overrode by adding the 8:1 contrast floor as a binding gate on top of the polish layer. Sits in a different lane from impeccable — impeccable runs deterministic anti-pattern detection over a rendered page; this codifies the design-engineering recipes you reach for when authoring the page.agents/muriel-critique.md and the queued 5-dimension critique scoring (where Mayer's coherence / signaling / contiguity could become evaluation axes).DESIGN.md. Validates the same stance muriel takes on nexu-io/open-design and the curator workflow in SKILL.md — useful external precedent when explaining muriel's mining ethos to a new contributor.SKILL.md Sibling-skills table; don't treat the indices themselves as authoritative.MIT. See LICENSE.
Claude Code skill for YouTube creators — channel audits, video SEO, retention scripts, thumbnails, content strategy, Sho
AI image generation skill for Claude Code -- Creative Director powered by Gemini
Universal SEO skill for Claude Code. 25 sub-skills + 18 sub-agents covering technical SEO, E-E-A-T, schema, GEO/AEO, bac
Design enforcement with memory — keeps your UI consistent across a project