OpenDesign from the CLI: driving the full design workflow with the `od` command — scripted, composable, agent-ready. Built as a decision-grade AI literacy deck for developers, power users.
A locked, single-theme deck plugin derived from the MIT-licensed
nicobailon/visual-explainer
slide-deck template, restyled with the Terminal Mono aesthetic from its
references/slide-patterns.md. Developer-native and typographically strict:
near-black ground, monospace everything, one green voice, a faint dot grid.
Zero skeuomorphism, zero effects. No $ prompts, no red/yellow/green
window chrome, no CRT scanlines, no vignettes, no glows. This theme stands on
typographic discipline and the dot-grid texture alone. (The skeuomorphic
"terminal theater" look belongs to a different plugin — do not drift there.)
Start from example.html in this plugin folder. It is the proven seed: copy
its :root tokens (both themes), deck/slide CSS, dot-grid treatment, and the
entire SlideEngine script verbatim, then replace only the slide content. Do not
rewrite the design system, and do not introduce any color or font outside this
spec.
:root)Dark is the default theme; light mode switches automatically via
prefers-color-scheme: light. Both blocks are part of the locked spec —
dual-theme support is the visual-explainer family signature and must ship in
every deck.
:root {
--font-body: 'Geist Mono', 'SF Mono', Consolas, monospace;
--font-mono: 'Geist Mono', 'SF Mono', Consolas, monospace;
--bg: #0a0e14; /* near-black ground */
--surface: #12161e;
--surface2: #1a1f2a;
--surface-elevated: #222836;
--border: rgba(80, 250, 123, 0.06); /* low-opacity green hairline */
--border-bright: rgba(80, 250, 123, 0.12);
--text: #c8d6e5;
--text-dim: #7d8c9b; /* AA on --bg for body text */
--accent: #50fa7b; /* Dracula green — the only voice */
--accent-dim: rgba(80, 250, 123, 0.08);
--code-bg: #060a10;
--code-text: #c8d6e5;
--dot: rgba(80, 250, 123, 0.05); /* dot-grid ink */
}
@media (prefers-color-scheme: light) {
:root {
--bg: #f4f6f8;
--surface: #ffffff;
--surface2: #eaecf0;
--surface-elevated: #f8f9fa;
--border: rgba(0, 80, 40, 0.08);
--border-bright: rgba(0, 80, 40, 0.16);
--text: #1a2332;
--text-dim: #5a6a7a;
--accent: #0d7a3e; /* deep green for light ground */
--accent-dim: rgba(13, 122, 62, 0.08);
--code-bg: #1a2332; /* code blocks stay dark in light mode */
--code-text: #c8d6e5;
--dot: rgba(13, 122, 62, 0.07);
}
}
https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400;500;600;700&display=swap).
Fallback stack 'SF Mono', Consolas, monospace. No second typeface, ever.clamp(36px, 7vw, 88px) weight 400 letter-spacing -2px; headings
clamp(24px, 4vw, 42px) weight 400 letter-spacing -1px.--text-dim.--text-dim.font-variant-numeric: tabular-nums.background-image: radial-gradient(var(--dot) 1px, transparent 1px); background-size: 24px 24px;
This replaces the radial accent glows other family themes use — no glows here.--border / --border-bright.
No box-shadows, no blurs (except the nav-dots backdrop blur from the seed).--accent (no round dots); deck dots are squares..deck is a 100dvh scroll-snap container; each page is one
<section class="slide"> (also 100dvh, scroll-snap-align: start).n / N counter,
fading hints. Keyboard ←/→, ↑/↓, Space, PageUp/PageDown,
Home/End; touch swipe (50px threshold); IntersectionObserver toggles
.visible for entrance reveals.#/<n> via
history.replaceState; deep links restore on load and hashchange..reveal children stagger in at 0.1s steps when the slide gains
.visible; animate only opacity/transform; prefers-reduced-motion
disables all of it.--surface /
--surface2), 1px --border-bright divider; "before" label in
--text-dim, "after" label in --accent..pipe-node boxes (1px hairline,
mono name + uppercase meta) joined by 1px connector lines with CSS-triangle
arrowheads and tiny uppercase edge labels; accent-bordered nodes mark
emphasis; legend row below. Never mermaid, never any external JS.--surface2,
zebra rows, accent-tint hover, inline code chips in --accent-dim.--code-bg block with accent filename tab; .hl accent and
.cm dim spans for highlighting (code stays dark in both themes).> glyph in accent at 0.08 opacity as
the quote mark (no curly serif quotes), upright mono blockquote, uppercase
cite.<em> word,
top hairline, corner bracket, uppercase next-steps sub-line.#50fa7b dark / #0d7a3e light),
the listed surfaces and text tones. No red/blue/yellow semantic colors —
express "before/risk/off" with --text-dim and "after/win/on" with
--accent.example.html; replace content only — never redesign the theme.Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/ve-terminal-mono · pinned to the source commit
# Run from your project root
git clone https://github.com/nexu-io/open-design.git .skillboard-tmp
git -C .skillboard-tmp checkout 9881cff70e02be86c2a58130af512011ba23d4af
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/plugins/_official/examples/ve-terminal-mono" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/nexu-io/open-design.git .skillboard-tmp
git -C .skillboard-tmp checkout 9881cff70e02be86c2a58130af512011ba23d4af
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/plugins/_official/examples/ve-terminal-mono" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/ve-terminal-mono
Scanner static-checks@0.1.0 · commit 9881cff70e02. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
No static rules matched. This is not a safety guarantee.