Use when designing, building, writing, OR validating any nightshift interface, marketing page, doc, slide, mock, prototype, or brand asset — covers the night-sky dark theme, terracotta accent, Inter + JetBrains Mono type, design tokens, React UI-kit components, the technical no-hype brand voice, and a runnable adherence gate (token-drift + WCAG-AA contrast + lint). Trigger on "nightshift", "design with the brand", "terminal/pipeline UI", "ships while you sleep", "check brand adherence", "validate nightshift design".
nightshift is a Claude Code plugin that turns one terminal into a full AI software-delivery team — PM, architect, tech lead, engineers, QA — driven from the issue tracker. Tagline: "Your AI software team that ships while you sleep."
The design is nocturnal, calm, technical, no-hype. Audience is senior devs who live in the terminal and smell marketing instantly. Every artifact must feel credible, fast, technical — a premium dev-tool, never a generic SaaS splash. Lead with proof (terminal output, numbers), never adjectives.
The brand name is always lowercase — nightshift. Never "Nightshift" or "NightShift".
Two output modes (ask which if unclear):
If invoked with no guidance, ask what they want to build, ask a few sharp questions, then act as the expert designer.
tokens/*.css, mirrored machine-readable in _ds_manifest.json — query the manifest for an exact hex, never guess one.references/components.md) where they exist; hand-build only the rest, following references/patterns.md recipes. Never invent a value that has a token.templates/page-starter.html (inherits all tokens + signature motifs); diff against ui_kits/marketing + ui_kits/docs as the golden full-page references.npm run validate (token-drift + WCAG-AA contrast + oxlint), then walk references/adherence-checklist.md for the human-only checks. Every box passes or is deliberately N/A.| Need | File |
|---|---|
| Every token, exact value, semantic alias, base resets | references/tokens.md |
| Every component's full props/usage + product data (agents, commands) | references/components.md |
| Brand voice, casing, signature phrases, do/don't copy | references/voice-and-content.md |
| Recipes: hero, card, button, starfield, moon-glow, page scaffold, icons | references/patterns.md |
| Pre-ship adherence checklist | references/adherence-checklist.md |
| Copy-paste static page starter | templates/page-starter.html |
The raw source of truth still lives in tokens/, components/, guidelines/, ui_kits/, assets/ — read those for deepest fidelity.
"you" for the reader; "it"/"the agents" for the product. First person rare, only collective ("we").nightshift always lowercase. Agent/command names lowercase mono: product-manager, /auto, qa-engineer. Headings sentence case, never Title Case.// eyebrows over emoji. Never sprinkle emoji through body copy.Import the single entry point: styles.css (@import manifest of tokens/*.css). Use semantic aliases in components, not raw scale values. Exact hex values are not listed here on purpose — they live once in tokens/colors.css (mirrored in _ds_manifest.json); read them there so this summary can't drift. npm run check:tokens fails the build if any doc hex stops matching the CSS.
| Role | Alias |
|---|---|
| Page / void / sunken bg | --bg-page · --bg-void · --bg-sunken |
| Surfaces | --surface-card · --surface-raised · --surface-overlay · --surface-terminal |
| Accent (the one pointing color) | --accent · --accent-hover · --accent-press (terracotta) |
| Link / focus (cool indigo) | --link · --link-hover · --focus-ring |
| Text | --text-strong · --text-body · --text-muted · --text-dim · --text-on-accent |
| States | --success · --warning · --danger · --info (terminal-true) |
| Hairlines | --border-soft · --border-default · --border-strong · --border-accent |
| Code syntax | --code-comment/-keyword/-string/-fn/-num/-punct/-prompt |
Exact values + raw scale (--night-*, --terra-*, --moon-*, --indigo-*) → references/tokens.md or tokens/colors.css.
--font-sans Inter — display, headings, body. --font-mono JetBrains Mono — code, labels, UI chrome, eyebrows.--fw-extra (800), tracking --tracking-tight (-0.02em).--tracking-eyebrow (0.16em) — e.g. // HOW IT WORKS.--text-2xs11 · xs12 · sm13 · base15 · md17 · lg20 · xl25 · 2xl32 · 3xl42 · 4xl56 · 5xl72 · 6xl92 (px).tight1.06 snug1.22 normal1.5 relaxed1.65.--space-1..32 (4,8,12,16,20,24,32,40,48,64,80,96,128).--radius-* are 0 (site override at the token layer); only true circles use --radius-round: 50% (star dots, gate rings, traffic lights, status dots). Retired scale: 4/6/10/14/20/28/999.--elev-1..4. On dark, always pair shadow with a 1px hairline — shadow alone won't read.--glow-accent (terracotta, primary buttons + active pipeline stages), --glow-cool (indigo focus), --glow-focus (3px indigo ring — always visible, never removed).--ease-out cubic-bezier(.22,1,.36,1) at --dur-fast120 / --dur-base200 / --dur-slow360ms. Restrained, quick.--container-max1200 · --container-prose720 · --nav-height64.React, namespace window.NightshiftDesignSystem_983007. Each component has a .d.ts + .prompt.md (read for full API); each group a *.card.html specimen.
| Group | Components |
|---|---|
| core/ | Button, Badge, Card, InstallSnippet |
| terminal/ | Terminal (+ TermLine), CodeBlock, Pipeline |
| site/ | NavBar, Footer |
| data/ | AgentCard, CommandCard, Table |
Button example — variants primary (filled terracotta + glow) · secondary (raised + hairline) · ghost (text, fills on hover) · danger (red outline); sizes sm|md|lg; props mono (command labels), loading, disabled, iconLeft/iconRight, fullWidth:
<Button variant="primary" size="md">Install plugin</Button>
<Button variant="ghost" mono>/auto</Button>// uppercase eyebrows in terracotta above section headings.--surface-terminal) with streaming /auto pipeline output — lines reveal one at a time, then loop. The one "alive" motion.--surface-card fill, sharp corners (radius 0), deep soft shadow, hairline does the separating. Featured cards get accent ring + glow.translateY(-1px) buttons, -2px cards) + warms border to accent.→ ↓ ✓ ✗ ● ▌ ⌘ //. Real UI icons → Lucide (1.5px stroke, CDN) — a documented substitution; source ships no icon set.assets/logomark.svg (terracotta crescent, soft glow, two stars), 28px in nav.nightshift./auto run instead.--glow-focus always visible.// eyebrows.references/ — agent-facing digest: tokens.md, components.md, voice-and-content.md, patterns.md, adherence-checklist.md.templates/page-starter.html — copy-paste static page wired to the tokens + signature motifs._ds_manifest.json — authoritative machine index: every token (with definedIn), component, asset. Query for exact values instead of guessing.package.json + scripts/check-tokens.mjs + scripts/check-contrast.mjs — the npm run validate gate: token-drift, WCAG-AA contrast, oxlint (_adherence.oxlintrc.json).styles.css → tokens/ — colors.css, typography.css, spacing.css (radius/elevation/motion), fonts.css, base.css.components/{core,terminal,site,data}/ — .jsx + .d.ts + .prompt.md + group *.card.html.guidelines/*.card.html — color/type/spacing specimen cards.ui_kits/marketing/ and ui_kits/docs/ — full-page references (hero, agent grid, install, docs sidebar).assets/ — logomark.svg, logo.svg (dark bg), logo-light.svg (light bg — "night" in ink, "shift" in terracotta), favicon.svg, og-card.html, readme-banner.html, logo-card.html.README.md — full brand brief and product context. Source of truth: whimzyLive/nightshift-ai.Caveats: fonts via Google Fonts (self-host for production); Lucide + logomark are documented original substitutions.
8a737ca
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.