Agent skill

Lunora Design

by anolilab in anolilab/lunora

This skill should be used when the user explicitly says "Lunora style", "Lunora design", "/lunora-design", or directly asks to use/apply the Lunora design system.

MITAuto-check passedFrontend & Design

Install Lunora Design

skills CLI
$ npx skills add anolilab/lunora --skill lunora-design -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install anolilab/lunora lunora-design --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/anolilab/lunora.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/lunora-design .claude/skills/lunora-design && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
lunora-design
GitHub stars
284
Token cost
~4.5k tokens
SKILL.md length
2,414 words
Files
6 (incl. references)
Skills in repo
16
Repo updated
First seen
Licence
MIT

At a glance

This skill should be used when the user explicitly says "Lunora style", "Lunora design", "/lunora-design", or directly asks to use/apply the Lunora design system.

  • Works in 5 steps: DESIGN PHILOSOPHY → CRAFT RULES — HOW TO COMPOSE → ANTI-PATTERNS — WHAT TO NEVER DO → …
  • Explicitly says Lunora style
  • SKILL.md covers 1. DESIGN PHILOSOPHY, 2. CRAFT RULES — HOW TO COMPOSE, 3. ANTI-PATTERNS — WHAT TO… and 3.1 IMPLEMENTATION TRAPS —…, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Lunora Design is an agent skill from anolilab/lunora. This skill should be used when the user explicitly says "Lunora style", "Lunora design", "/lunora-design", or directly asks to use/apply the Lunora design system. NEVER trigger automatically for generic UI or design tasks.

Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `README.md`, `references/components.md` and `references/platform-mapping.md`).

It sits in Frontend & Design, covering Design systems. The repository describes itself as: Type-safe, real-time backend framework on your own Cloudflare account — Workers, Durable Objects, D1, R2, Queues. Convex-style DX, Vite-first. The licence is MIT.

When your agent uses it

  • Explicitly says Lunora style
  • Directly asks to use/apply the Lunora design system
  • Automatically for generic UI

Example prompts

  • “Lunora style”
  • “Lunora design”
  • “/lunora-design”
  • “/lunora-design”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write, Edit, Glob, Grep

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. DESIGN PHILOSOPHY
  2. CRAFT RULES — HOW TO COMPOSE
  3. ANTI-PATTERNS — WHAT TO NEVER DO
  4. WORKFLOW
  5. REFERENCE FILES

What it can do on your machine

Read from SKILL.md and the folder at commit 8597a6b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Glob
    • Grep

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript and typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Lunora Design loads about 4.5k tokens when it runs, and up to ~9.4k if it reads all its reference files. Until then it costs about 59 tokens; SKILL.md has 2,414 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~59
When it runs · the whole SKILL.md, loaded when a task matches
~4.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~9.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from anolilab/lunora at commit 8597a6b, republished under its MIT licence (© anolilab). 2,414 words, ~4,515 tokens.

Download SKILL.mdSave it as .claude/skills/lunora-design/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
lunora-design
description
This skill should be used when the user explicitly says "Lunora style", "Lunora design", "/lunora-design", or directly asks to use/apply the Lunora design system. NEVER trigger automatically for generic UI or design tasks.
allowed-tools
Read, Write, Edit, Glob, Grep
version
1.0.0

Lunora UI/UX Design System

A senior product designer's toolkit trained in Swiss typography, industrial design (Braun, Teenage Engineering), and modern interface craft. Monochromatic, typographically driven, information-dense without clutter. Dark and light mode with equal rigor.

Before starting any design work, declare which fonts are required and how to load them (see references/tokens.md Section 1). Never assume fonts are already available.


1. DESIGN PHILOSOPHY

  • Subtract, don't add. Every element must earn its pixel. Default to removal.
  • Structure is ornament. Expose the grid, the data, the hierarchy itself.
  • Monochrome is the canvas. Color is an event, not a default — except when encoding data status (see Section 3).
  • Type does the heavy lifting. Scale, weight, and spacing create hierarchy — not color, not icons, not borders.
  • Both modes are first-class. Dark mode (primary): Night — cool blue-violet near-black. Light mode: Ivory — cool off-white. Neither is "derived" — both get full design attention. Ask the user which mode to start with.
  • Industrial warmth. Technical and precise, but never cold. A human hand should be felt.

2. CRAFT RULES — HOW TO COMPOSE

2.1 Visual Hierarchy: The Three-Layer Rule

Every screen has exactly three layers of importance. Not two, not five. Three.

LayerWhatHow
PrimaryThe ONE thing the user sees first. A number, a headline, a state.Geist Sans at display size. --text-display. 48–96px breathing room.
SecondarySupporting context. Labels, descriptions, related data.Geist Sans at body/subheading. --text-primary. Grouped tight (8–16px) to the primary.
TertiaryMetadata, navigation, system info. Visible but never competing.Geist Mono at caption/label. --text-secondary or --text-disabled. ALL CAPS. Pushed to edges or bottom.

The test: Squint at the screen. Can you still tell what's most important? If two things compete, one needs to shrink, fade, or move.

Common mistake: Making everything "secondary." Evenly-sized elements with even spacing = visual flatness. Be brave — make the primary absurdly large and the tertiary absurdly small. The contrast IS the hierarchy.

2.2 Font Discipline

Per screen, use maximum:

  • 2 font families (Geist Sans + Geist Mono.)

Geist is settled, including for display. Reference sites in this space use wider geometric grotesques, and a display face is the first thing that looks "missing" when comparing side by side. It is not: Geist at 700 with the negative tracking in 2.10 is the tuned setting, and --font-display / --font-heading alias Geist deliberately rather than by omission. Do not propose swapping the display face as a fix for a page that looks off — measure the scale first (see 3.1), because a dropped size utility looks exactly like a wrong typeface.

  • 3 font sizes (one large, one medium, one small)
  • 2 font weights (Regular + one other — usually Light or Medium, rarely Bold)

Think of it as a budget. Every additional size/weight costs visual coherence. Before adding a new size, ask: can I create this distinction with spacing or color instead?

DecisionSizeWeightColor
Heading vs. bodyYesNoNo
Label vs. valueNoNoYes
Active vs. inactive navNoNoYes
Hero number vs. unitYesNoNo
Section title vs. contentYesOptionalNo

Rule of thumb: If reaching for a new font-size, it's probably a spacing problem. Add distance instead.

2.3 Spacing as Meaning

Spacing is the primary tool for communicating relationships.

Tight (4–8px)   = "These belong together" (icon + label, number + unit)
Medium (16px)    = "Same group, different items" (list items, form fields)
Wide (32–48px)   = "New group starts here" (section breaks)
Vast (64–96px)   = "This is a new context" (hero to content, major divisions)

If a divider line is needed, the spacing is probably wrong. Dividers are a symptom of insufficient spacing contrast. Use them only in data-dense lists where items are structurally identical.

2.4 Container Strategy (prefer top)
  1. Spacing alone (proximity groups items)
  2. A single divider line
  3. A subtle border outline
  4. A surface card with background change

Each step down adds visual weight. Use the lightest tool that works. Never box the most important element — let it float on the background.

2.5 Color as Hierarchy

In a monochrome system, the gray scale IS the hierarchy. Max 4 levels per screen:

--text-display (100%) → Hero numbers. One per screen.
--text-primary (90%)  → Body text, primary content.
--text-secondary (60%) → Labels, captions, metadata.
--text-disabled (40%) → Disabled, timestamps, hints.

The aurora ramp (cyan → violet → rose) is not part of the gray hierarchy. It's light, not paint — an event, not a default. Aurora Violet is the primary glow (the closest thing to a brand color); cyan = info/active, rose = emphasis. If >~10% of a view is aurora, pull back. Reach for the full gradient ribbon only on the focal moment (hero clause, active state, focus ring).

Emphasis is achromatic. The loudest control on a view — the primary button, the strongest interactive state — is bright, not saturated. It takes near-white on night (near-black on ivory), not the accent. Spending the accent on the primary button is the most common way a Lunora surface drifts colourful: the button is on every view, so the accent stops being an event. Keep a distinct emphasis / on-emphasis token pair for this and leave the accent for the moments below.

The accent budget, concretely. On a given view, chromatic colour is allowed in:

  1. one atmospheric field (a page-header colour field, one soft glow),
  2. numeric indices and section counters,
  3. exactly one highlighted cell per grid,
  4. focus and active states,
  5. a data status value (see below).

Everything else is grey. Anything not on that list wanting colour is asking for emphasis or ink.

Measure it, don't eyeball it. Colour creep is invisible while you add it, one component at a time. Count chromatic nodes in the rendered page and keep the ratio under ~10%:

js
// In the browser console on the rendered page.
const chromatic = [...document.querySelectorAll("*")].filter((el) => {
    const m = getComputedStyle(el).color.match(/\d+/g);
    if (!m) return false;
    const [r, g, b] = m.map(Number);
    return Math.max(r, g, b) - Math.min(r, g, b) > 40; // chromatic, not grey
});
console.log((chromatic.length / document.querySelectorAll("*").length) * 100);

A landing page that reads "too colourful" usually measures 9-12%. The same page after moving ticks, arrows, and per-card icons to grey measures 5-6%, and the accent starts meaning something again.

Data status colors (success green, warning amber, error red) are exempt from the aurora-only rule when encoding data values. Apply color to the value itself, not labels or row backgrounds. See references/tokens.md for the full color system.

2.6 Consistency vs. Variance

Be consistent in: Font families, label treatment (always Geist Mono ALL CAPS), spacing rhythm, color roles, component shapes, alignment.

Break the pattern in exactly ONE place per screen: An oversized number, a circular widget among rectangles, an aurora-ribbon clause among Moonlight text, a vast gap where everything else is tight.

This single break IS the design. Without it: sterile grid. With more than one: visual chaos.

2.7 Compositional Balance

Asymmetry > symmetry. Centered layouts feel generic. Favor deliberately unbalanced composition:

  • Large left, small right: Hero metric + metadata stack.
  • Top-heavy: Big headline near top, sparse content below.
  • Edge-anchored: Important elements pinned to screen edges, negative space in center.

Balance heavy elements with more empty space, not with more heavy elements.

2.8 The Lunora Vibe
  1. Confidence through emptiness. Large uninterrupted background areas. Resist filling space.
  2. Precision in the small things. Letter-spacing, exact gray values, 4px gaps. Micro-decisions compound into craft.
  3. Data as beauty. 36GB/s in Geist Mono at 48px IS the visual. No illustrations needed.
  4. Mechanical honesty. Controls look like controls. A toggle = physical switch. A gauge = instrument.
  5. One moment of surprise. An aurora-ribbon headline clause. A circular widget. A glowing aurora dot. Restraint makes the one expressive moment powerful.
  6. Percussive, not fluid. Imagine UI sounds: click not swoosh, tick not chime. Design transitions that feel mechanical and precise.
2.9 Visual Variety in Data-Dense Screens

When 3+ data sections appear on one screen, vary the visual form:

FormBest forWeight
Hero number (large Geist Sans/Geist Mono)Single key metricHeavy — use once
Segmented progress barProgress toward goalMedium
Concentric rings / arcsMultiple related percentagesMedium
Inline compact barSecondary metrics in rowsLight
Number-only with status colorValues without proportionLightest
SparklineTrends over timeMedium
Stat row (label + value)Simple data pointsLight

Lead section → heaviest treatment. Secondary → different form. Tertiary → lightest. The FORM varies, the VOICE stays the same.

Show full SKILL.md (1,153 more words)Show less
2.10 Marketing Surfaces (landing, docs hub, product pages)

Sections 2.1–2.9 assume a product screen. Marketing surfaces carry the same voice with three additional structures. They are not decoration; each one is load-bearing, and half-applying them is what makes a page read as generic.

Page header. A full-bleed saturated colour field with a dark panel set into its lower-left, overhanging the field's bottom edge. The overhang is the composition — a panel that sits neatly inside the band reads as a banner with a box on it. Build it by pulling the panel up with a negative margin while it stays in normal flow, never by positioning it absolutely: in flow the panel's own height sets the overhang and the following content is pushed down for free, where absolute positioning needs a spacer kept in sync by hand with a height that changes per breakpoint and per content.

The field is one brand colour with depth, not three in equal measure. Violet carries it; cyan and rose are edge blooms for dimension. An even three-way split reads as a stock mesh gradient and belongs to no brand. Punch a canvas-coloured halftone dot matrix through it (≈9px grid) so it resolves from cells rather than blurring.

The navbar sits over this field. Aurora accents are mid-lightness, so dark ink on them fails contrast — keep light ink and guarantee it with a top scrim gradient rather than flipping the nav to dark.

Numbered sections. Each band opens with an index stacked over a category label (01 / FRAMEWORK) in the left column, title and lead beside it. The label says what kind of section it is, which the title rarely does. Index in accent, label in faint grey.

Hairline grid. Cells separated by real 1px lines, not whitespace: the container paints the hairline colour and a 1px gap lets it through between opaque cells. Two consequences that bite:

  • cells must stay opaque — a translucent cell shows the hairline across its whole face instead of only at the seams;
  • a cell must be the grid's direct child — wrap one in a transparent reveal animation and the wrapper becomes the grid item, with the same result.

Type scale for marketing. The 3-sizes-per-screen budget in 2.2 governs product screens. Marketing surfaces use the published scale, capped so headings stop growing on wide monitors while gutters stay fluid:

RoleSizeLine heightTracking
display3.3rem cap0.95-0.04em
h12.75rem cap1.05-0.04em
h22.5rem cap1.05-0.035em
h31.4375rem cap1.08-0.028em
body0.9375rem1.55-0.01em
blurb0.8125rem1.5-0.01em
kicker (mono, caps)0.6875rem1.20.12em
micro (mono, caps)0.625rem1.50.18em

Negative tracking on display type is not optional. Large text set at default tracking is the single clearest tell of an untuned page.

Vary the layout family. A landing page that uses the hairline grid for four consecutive bands reads monotonous however good each band is. Rotate: hairline grid, rule-topped columns, a real table, a disclosure list, a full-bleed panel. No family twice in a row.


3. ANTI-PATTERNS — WHAT TO NEVER DO

  • No gradients in UI chrome — the one exception is the aurora ribbon on the focal accent (hero clause, active underline, focus ring)
  • No shadows. Depth = value step + one hairline. One atmospheric aurora glow per view max (soft radial behind a hero) — never on buttons.
  • No skeleton loading screens. Use [LOADING...] text or segmented spinner.
  • No toast popups. Use inline status text: [SAVED], [ERROR: ...]
  • No sad-face illustrations, cute mascots, or multi-paragraph empty states
  • No zebra striping in tables
  • No filled icons, multi-color icons, or emoji as UI
  • No parallax, scroll-jacking, or gratuitous animation
  • No spring/bounce easing. Use subtle ease-out only.
  • Sharp corners (rounded-none) on structural chrome — nav, console, buttons, cards, panels. Small radii (4–8px) only inside dense data (badges, table cells, chips). Never rounded glassy cards.
  • Data visualization: differentiate with opacity (100%/60%/30%) or pattern (solid/striped/dotted) before introducing color.

3.1 IMPLEMENTATION TRAPS — THINGS THAT FAIL SILENTLY

These do not throw, do not fail a type check, and do not fail a lint. They ship a page that looks subtly wrong for reasons no one can point at.

tailwind-merge eats named type-scale utilities. When the scale is named (text-h2, text-blurb) rather than sized (text-lg), tailwind-merge cannot distinguish it from a colour utility. It sees cn("text-h3", "text-ink"), assumes both are text colours, resolves the "conflict" in favour of the last one, and drops the size. Headings then render at the browser default while the class list still looks right in the source.

This is not hypothetical: it shipped, and every h3 on a landing page rendered at 16px instead of 23px until it was measured.

Register the names as a font-size group, once, where cn is defined:

ts
const twMerge = extendTailwindMerge({
    extend: {
        classGroups: {
            "font-size": [{ text: ["display", "h1", "h2", "h3", "body", "blurb", "kicker", "micro"] }],
        },
    },
});

Any token added to --text-* must be added here too. Verify with a direct assertion (twMerge("text-h3", "text-ink") must keep both) rather than trusting that it looks fine.

@theme vs @theme inline. Tokens declared in a plain @theme block are inlined at build time, so a runtime theme swap or a [data-theme] override does nothing. Use @theme inline when the value references another custom property, so utilities compile to var(--…).

Tailwind namespace names are not free-form. --container-shell produces max-w-shell, not max-w-container-shell. Check the generated utility exists before building a layout on it; a missing utility is simply no styling, not an error.

Verify the rendered page, not the source. Every trap above is invisible in the JSX and obvious in getComputedStyle. Before calling a surface done, read back the computed font sizes, line heights, and tracking of h1/h2/h3/body and compare them to the table in 2.10.


4. WORKFLOW

  1. Declare fonts — tell the user which fonts to load (see references/tokens.md)
  2. Ask mode — dark or light? Neither is default.
  3. Sketch hierarchy — identify the 3 layers before writing any code
  4. Compose — apply craft rules (Sections 2.1–2.10; 2.10 for marketing surfaces)
  5. Check tokens — consult references/tokens.md for exact values
  6. Build components — consult references/components.md for patterns
  7. Adapt to platform — consult references/platform-mapping.md for output conventions
  8. Measure the result — read back computed type and the chromatic ratio (2.5, 2.10). Section 3.1 lists what fails silently; none of it is visible in the source.

5. REFERENCE FILES

For detailed token values, component specs, and platform-specific guidance:

  • references/tokens.md — Fonts, type scale, color system (dark + light), spacing scale, radius/surface, motion, iconography, texture motifs
  • references/components.md — Cards, buttons, inputs, lists, tables, nav, tags, segmented controls, progress bars, charts, widgets, overlays, state patterns
  • references/platform-mapping.md — HTML/CSS, SwiftUI, React/Tailwind, Paper output conventions

Canonical token source. The shipped values live in marketing/design-tokens/ (tokens.css for Tailwind v4, tokens.ts for JS) with intent in marketing/design-tokens/DESIGN.md. Those are authoritative; the references here restate them for the methodology. When generating real code, import the tokens rather than re-typing hex values.


Adapted under the MIT License from the "Nothing Design Skill" by Dominik Martin (https://github.com/dominikmartn/nothing-design-skill). The craft methodology is the original author's; the palette, typeface, corners, and accent rules were reconciled to Lunora's established design language (marketing/design-tokens/DESIGN.md). See LICENSE.

© anolilab, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in .agents/skills/lunora-design of anolilab/lunora.

  • SKILL.md
  • LICENSE
  • README.md
  • references/components.md
  • references/platform-mapping.md
  • references/tokens.md

Open the folder on GitHubat commit 8597a6b

Compare with similar skills

Lunora Design next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Lunora Design compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Lunora Design this skillanolilab/lunora284—~4.5kAutomated safety check: PassMIT
Impeccablebestofjs/bestofjs3.1k26 repos~2.6kAutomated safety check: PassMIT
Figma Design System Builderwarpdotdev/warp65k2 repos~4.4kAutomated safety check: PassAGPL-3.0
Figma use_figma Plugin API Ruleswarpdotdev/warp65k4 repos~4.4kAutomated safety check: PassAGPL-3.0
UI StylingOhh-889/skyroc79513 repos~2.5kAutomated safety check: PassMIT
Shadcnsupabase/evals14543 repos~4.5kAutomated safety check: PassApache-2.0

Similar skills

  • Impeccable

    bestofjs/bestofjs

    A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…

    3.1k GitHub starsUsed in 26 repos~2.6k tokens
    Frontend & DesignAuto-check passed
  • Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.

    65k GitHub starsUsed in 2 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.

    65k GitHub starsUsed in 4 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • UI Styling

    Ohh-889/skyroc

    Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.

    795 GitHub starsUsed in 13 repos~2.5k tokens
    Frontend & DesignAuto-check passed
  • Shadcn

    supabase/evals

    Official

    Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI.

    145 GitHub starsUsed in 43 repos~4.5k tokens
    Frontend & DesignAuto-check passed
  • Design System

    Ohh-889/skyroc

    Token architecture, component specifications, and slide generation.

    795 GitHub starsUsed in 11 repos~1.7k tokens
    Frontend & DesignAuto-check passed

More from anolilab/lunora

All 16 skills in this repo
  • Lunora

    anolilab/lunora

    Routes general Lunora requests to the right Lunora skill and gives the shared mental model (codegen loop, generated api/internal references, review commands, add-on capabilities, the @lunora/mcp…

    284 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Lunora Create Package

    anolilab/lunora

    Builds a reusable Lunora capability, either as a registry item that lunora add / lunora registry add copies into an app's lunora/, or as a publishable @lunora/ workspace package in the Lunora…

    284 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Lunora Deploy

    anolilab/lunora

    Deploys a Lunora app to Cloudflare Workers + Durable Objects and gets wrangler.jsonc, remote resources and secrets to line up.

    284 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Plans and runs Lunora schema and data migrations with the widen → migrate → narrow pattern.

    284 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Diagnoses and fixes Lunora performance problems — full-table scans and missing indexes, expensive ctx.db.related traversals, OCC write conflicts (409 CONFLICT), live queries that re-run too often…

    284 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Lunora Quickstart

    anolilab/lunora

    Creates a new Lunora project or adds Lunora to an existing app, then gets the first schema + query/mutation round-trip running.

    284 GitHub stars~2.5k tokensUpdated today
    Auto-check passed

Questions about Lunora Design

What does Lunora Design do?

This skill should be used when the user explicitly says "Lunora style", "Lunora design", "/lunora-design", or directly asks to use/apply the Lunora design system. Lunora Design is an agent skill from anolilab/lunora. This skill should be used when the user explicitly says "Lunora style", "Lunora design", "/lunora-design", or directly asks to use/apply the Lunora design system.

When should I use Lunora Design?

Lunora Design fits situations like: explicitly says Lunora style; directly asks to use/apply the Lunora design system; automatically for generic UI.

How do I install Lunora Design in Claude Code?

Run `npx skills add anolilab/lunora --skill lunora-design -a claude-code`. Or copy the skill folder (.agents/skills/lunora-design in anolilab/lunora) into .claude/skills/lunora-design in your project. Claude Code loads it when a task matches its description.

How do I install Lunora Design in Codex?

Run `npx skills add anolilab/lunora --skill lunora-design -a codex`. Or copy the skill folder (.agents/skills/lunora-design in anolilab/lunora) into .agents/skills/lunora-design in your project. Codex loads it when a task matches its description.

Can I use Lunora Design in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add anolilab/lunora --skill lunora-design -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lunora-design, .gemini/skills/lunora-design, .github/skills/lunora-design and .opencode/skills/lunora-design in your project.

What does Lunora Design need to run?

SKILL.md names no scripts, command-line tools or credentials: Lunora Design is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep.

Does Lunora Design access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Lunora Design safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Lunora Design use?

Lunora Design is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Lunora Design use?

About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.9k tokens, read only when the agent opens those files.

What are the alternatives to Lunora Design?

Skills that share tags, products or a category with Lunora Design: Impeccable (bestofjs/bestofjs, 3.1k stars), Figma Design System Builder (warpdotdev/warp, 65k stars), Figma use_figma Plugin API Rules (warpdotdev/warp, 65k stars) and UI Styling (Ohh-889/skyroc, 795 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Lunora Design?

anolilab (a GitHub organization) maintains it in anolilab/lunora, which has 284 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 11, 2026.

Source: anolilab/lunora on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.