Our preferred CSS framework — ultra-lightweight, semantic HTML UI library (~8KB).

MITAuto-check passedFrontend & Design

Install Oat CSS

skills CLI
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill oat-css -a claude-code

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

GitHub CLI
$ gh skill install spinspire/pocketbase-sveltekit-starter oat-css --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/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/oat-css .claude/skills/oat-css && 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
oat-css
GitHub stars
511
Token cost
~3.9k tokens
SKILL.md length
844 words
Files
1
Skills in repo
8
Repo updated
First seen
Licence
MIT

At a glance

Our preferred CSS framework — ultra-lightweight, semantic HTML UI library (~8KB).

  • Works in 4 steps: Brand colors — redefine CSS variables in… → Layout — use Oat's .hstack, .vstack,… → Complex compositions — recipes like… → …
  • Tasks that involve CSS and styling
  • SKILL.md covers Installation, Core Principle, When to Add Custom CSS/SCSS and Components, plus 1 more section
  • Calls bun and npm; reaches unpkg.com

What it does

Oat CSS is an agent skill from spinspire/pocketbase-sveltekit-starter. Our preferred CSS framework — ultra-lightweight, semantic HTML UI library (~8KB). Style web UIs with semantic HTML and minimal classes. Override with app-level SCSS only when necessary.

Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering CSS and styling. It works with SvelteKit. The repository describes itself as: a starter project to build a SvelteKit frontend with PocketBase backend. The licence is MIT.

When your agent uses it

  • Tasks that involve CSS and styling

Example prompts

  • “/oat-css”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Brand colors — redefine CSS variables in :root (see Theming below)
  2. Layout — use Oat's .hstack, .vstack, .container/.row/.col-* grid, or add your own
  3. Complex compositions — recipes like stats cards, split buttons, form cards
  4. Custom animations or interactions — Oat doesn't ship opinionated transitions beyond the basics

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • bun
    • npm

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • unpkg.com

    Also links to:

    • github.com
    • nadh.in
    • oat.ink
    • icons.getbootstrap.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

Oat CSS loads about 3.9k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 844 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~48
When it runs · the whole SKILL.md, loaded when a task matches
~3.9k

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 spinspire/pocketbase-sveltekit-starter at commit 66f6dee, republished under its MIT licence (© spinspire). 844 words, ~3,932 tokens.

Download SKILL.mdSave it as .claude/skills/oat-css/SKILL.md (or your agent's skills folder).
name
oat-css
description
Our preferred CSS framework — ultra-lightweight, semantic HTML UI library (~8KB). Style web UIs with semantic HTML and minimal classes. Override with app-level SCSS only when necessary.
license
MIT
authors
SpinSpire Team

Oat CSS

Oat is an ultra-lightweight (~8KB min+gz), zero-dependency, semantic HTML/CSS/JS UI library by Kailash Nadh (5k+ stars on GitHub). It styles native HTML elements out of the box — no classes needed for basic UIs. Dynamic components use WebComponents with minimal JS.

Philosophy: Semantic tags and attributes are styled contextually without classes, forcing best practices and reducing markup class pollution. Only reach for custom CSS when Oat's defaults don't cover your use case.

Installation

npm (SvelteKit, Vite, etc.)
bun add @knadh/oat

In your app entry or root SCSS:

scss
@import '@knadh/oat/oat.min.css';

Import the JS for dynamic components (dialog, dropdown, tabs, toast, tooltip, sidebar):

ts
import '@knadh/oat/oat.min.js';

Or selectively import individual files from @knadh/oat/css/ and @knadh/oat/js/.

CDN
html
<link rel="stylesheet" href="https://unpkg.com/@knadh/oat/oat.min.css">
<script src="https://unpkg.com/@knadh/oat/oat.min.js" defer></script>

Core Principle

Use semantic HTML. Oat styles elements based on their tag and ARIA attributes, not CSS classes.

html
<!-- ❌ Class-heavy approach you DON'T need with Oat -->
<div class="card">
  <div class="card-header">
    <h3 class="card-title">Title</h3>
  </div>
  <div class="card-body">
    <p>Content</p>
  </div>
  <div class="card-footer">
    <button class="btn btn-primary">Save</button>
  </div>
</div>

<!-- ✅ Semantic HTML — Oat styles this automatically -->
<article class="card">
  <header>
    <h3>Title</h3>
  </header>
  <p>Content</p>
  <footer>
    <button>Save</button>
  </footer>
</article>

When to Add Custom CSS/SCSS

Only override when:

  1. Brand colors — redefine CSS variables in :root (see Theming below)
  2. Layout — use Oat's .hstack, .vstack, .container/.row/.col-* grid, or add your own
  3. Complex compositions — recipes like stats cards, split buttons, form cards
  4. Custom animations or interactions — Oat doesn't ship opinionated transitions beyond the basics

Every Oat component below is purely semantic HTML. No custom CSS needed.

Components

Typography
html
<h1>Heading 1</h1>  <h2>Heading 2</h2>  <h3>Heading 3</h3>
<p>Paragraph with <strong>bold</strong>, <em>italic</em>, and <a href="#">a link</a>.</p>
<pre><code>code block</code></pre>
<blockquote>Blockquote</blockquote>
<hr>
<ul><li>List item</li></ul>
<ol><li>Ordered item</li></ol>
Button

<button> is styled by default. Use data-variant for semantics, .outline/.ghost for style, .small/.large for size.

html
<button>Primary</button>
<button data-variant="secondary">Secondary</button>
<button data-variant="danger">Danger</button>
<button class="outline">Outline</button>
<button class="ghost">Ghost</button>
<button class="small">Small</button>
<button class="large">Large</button>
<button disabled>Disabled</button>
<a href="#" class="button">Link as button</a>

Button group:

html
<menu class="buttons">
  <li><button class="outline">Left</button></li>
  <li><button class="outline">Center</button></li>
  <li><button class="outline">Right</button></li>
</menu>
Card
html
<article class="card">
  <header>
    <h3>Card Title</h3>
    <p>Description</p>
  </header>
  <p>Content here.</p>
  <footer class="hstack">
    <button class="outline">Cancel</button>
    <button>Save</button>
  </footer>
</article>
Alert

Use role="alert" with optional data-variant (success, warning, error).

html
<div role="alert" data-variant="success">
  <strong>Success!</strong> Your changes have been saved.
</div>
<div role="alert" data-variant="warning">
  <strong>Warning!</strong> Please review before continuing.
</div>
<div role="alert">
  <strong>Info</strong> This is a default alert.
</div>
<div role="alert" data-variant="error">
  <strong>Error!</strong> Something went wrong.
</div>
Form

Wrap inputs in <label data-field> for proper styling. Input groups use <fieldset class="group">.

html
<form>
  <label data-field>
    Name
    <input type="text" placeholder="Enter your name" />
  </label>
  <label data-field>
    <input type="checkbox" /> I agree
  </label>
  <label data-field>
    <input type="checkbox" role="switch" checked> Toggle
  </label>
  <fieldset class="hstack">
    <legend>Preference</legend>
    <label><input type="radio" name="pref"> A</label>
    <label><input type="radio" name="pref"> B</label>
  </fieldset>
  <fieldset class="group">
    <input type="text" placeholder="Search" />
    <button>Go</button>
  </fieldset>
  <div data-field="error">
    <label>Email</label>
    <input type="email" aria-invalid="true" value="bad" />
    <div class="error" role="status">Invalid email.</div>
  </div>
</form>
Dialog (modal)

Uses native <dialog> with commandfor/command attributes (zero JS required).

html
<button commandfor="my-dialog" command="show-modal">Open</button>
<dialog id="my-dialog" closedby="any">
  <form method="dialog">
    <header><h3>Title</h3></header>
    <div><p>Content</p></div>
    <footer>
      <button commandfor="my-dialog" command="close" class="outline">Cancel</button>
      <button value="confirm">Confirm</button>
    </footer>
  </form>
</dialog>
Dropdown

Uses <ot-dropdown> WebComponent + native Popover API.

html
<ot-dropdown>
  <button popovertarget="menu" class="outline">Options ▾</button>
  <menu popover id="menu">
    <button role="menuitem">Profile</button>
    <button role="menuitem">Settings</button>
    <hr>
    <button role="menuitem">Logout</button>
  </menu>
</ot-dropdown>
Tabs

Uses <ot-tabs> WebComponent.

html
<ot-tabs>
  <div role="tablist">
    <button role="tab">Account</button>
    <button role="tab">Password</button>
  </div>
  <div role="tabpanel"><h3>Account Settings</h3></div>
  <div role="tabpanel"><h3>Password Settings</h3></div>
</ot-tabs>
Table
html
<div class="table">
  <table>
    <thead><tr><th>Name</th><th>Status</th></tr></thead>
    <tbody>
      <tr><td>Alice</td><td><span class="badge" data-variant="success">Active</span></td></tr>
    </tbody>
  </table>
</div>
Badge
html
<span class="badge">Default</span>
<span class="badge" data-variant="success">Success</span>
<span class="badge" data-variant="danger">Danger</span>
<span class="badge" data-variant="warning">Warning</span>
<span class="badge outline">Outline</span>
Accordion

Native <details>/<summary>.

html
<details>
  <summary>What is Oat?</summary>
  <p>Oat is a minimal, semantic-first UI library.</p>
</details>
<details name="group">
  <summary>Grouped</summary>
</details>
Progress & Meter
html
<progress value="60" max="100"></progress>
<meter value="0.8" min="0" max="1" low="0.3" high="0.7" optimum="1"></meter>
Spinner
html
<div aria-busy="true"></div>
<div aria-busy="true" data-spinner="large"></div>
<button aria-busy="true" disabled>Loading</button>
<div aria-busy="true" data-spinner="large overlay">Content dims</div>
Skeleton
html
<div role="status" class="skeleton line"></div>
<div role="status" class="skeleton box"></div>
Avatar
html
<figure data-variant="avatar" aria-label="Jane Doe">
  <img src="/avatar.svg" alt="" />
</figure>
<figure data-variant="avatar" aria-label="Oat">
  <abbr title="Jane Doe">OT</abbr>
</figure>
Sidebar
html
<div data-sidebar-layout>
  <aside data-sidebar>
    <nav><ul><li><a href="#" aria-current="page">Home</a></li></ul></nav>
  </aside>
  <main>Content</main>
</div>
<!-- With top nav -->
<body data-sidebar-layout>
  <nav data-topnav>
    <button data-sidebar-toggle aria-label="Menu">☰</button>
    <span>App</span>
  </nav>
  <aside data-sidebar>...</aside>
  <main>...</main>
</body>
Toast
js
ot.toast('Saved!', 'Success', { variant: 'success' })
ot.toast('Error!', 'Oops', { variant: 'danger', placement: 'top-left' })
ot.toast('Warning', null, { variant: 'warning' })
ot.toast('Info', null, { placement: 'top-center' })

// Custom HTML
ot.toast.el(document.querySelector('#my-toast-template'), { duration: 8000 })
// Clear all
ot.toast.clear()
Tooltip

Just use the title attribute.

html
<button title="Save your changes">Save</button>
<button title="On left" data-tooltip-placement="left">Left</button>
<button title="On bottom" data-tooltip-placement="bottom">Bottom</button>
Grid

12-column CSS grid.

html
<div class="container">
  <div class="row">
    <div class="col-4">4 cols</div>
    <div class="col-4">4 cols</div>
    <div class="col-4">4 cols</div>
  </div>
  <div class="row">
    <div class="col-6">6 cols</div>
    <div class="col-4 offset-2">4 cols offset 2</div>
  </div>
</div>
Utilities

Common utility classes from utilities.css:

ClassPurpose
.hstackHorizontal flex container
.vstackVertical flex container
.justify-start/center/end/betweenFlex justify
.items-start/center/endFlex align
.gap-{0-8}Gap spacing
.mt-{0-8}, .mb-{0-8}, .mx-{0-8}, .my-{0-8}Margin
.pt-{0-8}, .pb-{0-8}, .px-{0-8}, .py-{0-8}Padding
.text-lightMuted text
.text-centerCenter text
.align-centerCenter content
.unstyledRemove list/button default styles
.tableScrollable table wrapper
.badgeBadge/tag
.buttonLink styled as button
.skeletonLoading placeholder
.outlineOutline variant for buttons
.ghostGhost variant for buttons
.small, .largeSize modifier

Theming

If asked to customize the default oat-css theme, first offer to replicate one of the themes from https://oat.ink/demo/ If the user still wants to create a new theme, then override ONLY (minimal) what needs to be overridden in ":root". Oat uses light-dark() for automatic dark mode based on system preference. See the full list at theme.css.

Dark mode

Set data-theme="dark" on <body> to force dark. Oat also auto-detects prefers-color-scheme.

Design tokens

Oat exposes spacing, typography, shadow, and radius tokens:

scss
.custom {
  padding: var(--space-4);
  margin-block-end: var(--space-6);
  border-radius: var(--radius-medium);
  box-shadow: var(--shadow-medium);
  transition: transform var(--transition-fast);
}

Community Usage & Extensions

Oat is created by Kailash Nadh and used in his own projects. The community has built:

  • oat-chips — Chip/tag component with filters, colors, selection
  • oat-animate — Lightweight animation extension with in-view, hover, on-load triggers
  • oat-table — Sort, filter, and select rows in semantic <table>

Oat is compared alongside Water.css, Pico CSS, and MVP.css as a minimal, classless, or semantic-first CSS framework. Its distinctive traits are the shadcn-inspired aesthetic, WebComponents for dynamic widgets (tabs, dropdown), and the sub-10KB bundle.

Show full SKILL.md (329 more words)Show less

Icons

Oat doesn't bundle an icon set. The approach that fits Oat's philosophy (zero dependencies, vanilla HTML, no build step) is the SVG sprite pattern: one .svg file referenced via <use> in your HTML.

html
<svg width="24" height="24" fill="currentColor">
  <use href="bootstrap-icons.svg#icon-name"/>
</svg>

Style with CSS — size via width/height, color via color/fill.

Lightest sprite (578 KB raw, ~96 KB gzipped), 2,000+ icons, clean design that matches Oat's aesthetic, MIT license.

MethodLink
CDNhttps://unpkg.com/bootstrap-icons@1.11.3/bootstrap-icons.svg
npmnpm install bootstrap-icons, copy node_modules/bootstrap-icons/bootstrap-icons.svg
html
<svg width="16" height="16" fill="currentColor">
  <use href="bootstrap-icons.svg#check-circle"/>
</svg>
<svg width="24" height="24" fill="currentColor">
  <use href="bootstrap-icons.svg#gear"/>
</svg>
<svg width="20" height="20" fill="currentColor">
  <use href="bootstrap-icons.svg#x-lg"/>
</svg>

Browse icons at https://icons.getbootstrap.com — the icon name is the filename without .svg.

Alternative: Tabler Icons

6,128 icons, slightly heavier sprite (2 MB raw, ~700 KB gzipped), more variety and a modern 2px-stroke style. MIT license.

html
<svg width="24" height="24">
  <use href="tabler-sprite.svg#tabler-refresh"/>
</svg>
Tradeoffs
  • SVG sprite — one HTTP request, cached after first visit, no JS, no build step. The full set is always loaded regardless of which icons you use (not tree-shakeable).
  • Tree-shakeable npm packages (Lucide, Boxicons, Heroicons) require a bundler and a framework — they don't fit Oat's vanilla HTML + CSS philosophy. Use them only if you're already committed to a JS build pipeline.
  • Custom sprite — for maximum minimalism, use a CLI like svg-sprite to build a sprite with only the icons you need. Adds a build step but minimizes payload.
Icon button helper

Oat's .icon utility sizes a button for icon-only usage:

html
<button class="ghost icon" aria-label="Close">
  <svg width="16" height="16" fill="currentColor">
    <use href="bootstrap-icons.svg#x-lg"/>
  </svg>
</button>

Real-world patterns

These compositions use only Oat's built-in components and utility classes — no custom CSS:

Stats cards (dashboard metrics):

html
<div class="container">
  <div class="row">
    <article class="card col-4">
      <header class="hstack justify-between items-center">
        <h4>Revenue</h4>
        <span class="badge" data-variant="success">+12%</span>
      </header>
      <h2>$42,200</h2>
      <progress value="72" max="100"></progress>
    </article>
  </div>
</div>

Form card:

html
<article class="card">
  <header><h3>Profile</h3><p class="text-light">Update info</p></header>
  <label data-field>Name <input type="text"></label>
  <label data-field><input type="checkbox" role="switch"> Notifications</label>
  <footer class="hstack justify-end mt-4">
    <button class="outline">Cancel</button>
    <button>Save</button>
  </footer>
</article>

Empty state:

html
<article class="card align-center">
  <h3>Nothing here yet</h3>
  <p class="text-light">Create something to get started.</p>
  <footer class="hstack justify-center mt-4">
    <button>New item</button>
  </footer>
</article>

Key Guidelines

  1. Reach for semantic HTML first — a <button> is already styled, a <dialog> already works
  2. Use data-variant (not custom classes) for color semantics: primary, secondary, success, danger, warning
  3. Use ARIA attributes (role="alert", aria-busy="true", role="switch") — Oat styles them automatically
  4. Prefer Oat's composable components (card + hstack + badge + progress) over writing custom SCSS
  5. Override CSS variables for theming instead of writing component-level overrides
  6. Keep HTML clean — minimal classes, semantic tags, readable structure
  7. Only write custom SCSS when Oat doesn't provide a component, or your layout needs unique structure not covered by .hstack/.vstack/.grid

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

Files

Just SKILL.md in .agents/skills/oat-css of spinspire/pocketbase-sveltekit-starter.

Open the folder on GitHubat commit 66f6dee

Compare with similar skills

Oat CSS 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.

Oat CSS compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Oat CSS this skillspinspire/pocketbase-sveltekit-starter511—~3.9kAutomated safety check: PassMIT
Frontend Guidelightly-ai/lightly-studio896—~2.9kAutomated safety check: PassApache-2.0
Sveltekit Svelte5 Tailwind Skill302ai/302-AI-Studio132—~3.5kAutomated safety check: PassAGPL-3.0
Tailwindcss Developmentanonaddy/anonaddy4.9k10 repos~865Automated safety check: PassMIT
UI StylingOhh-889/skyroc79513 repos~2.5kAutomated safety check: PassMIT
MCP Developmentcoollabsio/coolify63k1 repos~949Automated safety check: PassMIT

Similar skills

  • Frontend Guide

    lightly-ai/lightly-studio

    Read before writing or reviewing any frontend code in lightlystudioview - Svelte, TypeScript, or SvelteKit files.

    896 GitHub stars~2.9k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Comprehensive integration skill for building sites with SvelteKit 2, Svelte 5, and Tailwind CSS v4

    132 GitHub stars~3.5k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • Tailwindcss Development

    anonaddy/anonaddy

    Always invoke when the user's message includes 'tailwind' in any form.

    4.9k GitHub starsUsed in 10 repos~865 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
  • MCP Development

    coollabsio/coolify

    A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.

    63k GitHub starsUsed in 1 repo~949 tokens
    Frontend & DesignAuto-check passed
  • Web Animation Design

    baptisteArno/typebot.io

    Guides easing, timing and animation choices for UI motion, based on a web animation course, and reviews existing animations in a before-and-after table.

    11k GitHub starsUsed in 2 repos~2.7k tokens
    Frontend & DesignAuto-check passed

More from spinspire/pocketbase-sveltekit-starter

All 8 skills in this repo
  • Bun Runtime

    spinspire/pocketbase-sveltekit-starter

    Bun as runtime, package manager, bundler, and test runner. An agent skill from spinspire/pocketbase-sveltekit-starter.

    511 GitHub starsUsed in 5 repos~653 tokens
    Auto-check: notes
  • Pb API

    spinspire/pocketbase-sveltekit-starter

    Operate PocketBase via its REST API. An agent skill from spinspire/pocketbase-sveltekit-starter.

    511 GitHub stars~562 tokensUpdated 1 mo ago
    Auto-check: notes
  • Pb Extend

    spinspire/pocketbase-sveltekit-starter

    Extend PocketBase with custom hooks and routes in JS or Go. An agent skill from spinspire/pocketbase-sveltekit-starter.

    511 GitHub stars~689 tokensUpdated 1 mo ago
    Auto-check: notes
  • Pwa

    spinspire/pocketbase-sveltekit-starter

    A skill your agent uses when the user asks to make a site installable, turn it into a PWA, add a service worker, add a web app manifest, enable "add to home screen", or support offline.

    511 GitHub stars~1.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Frontend Design

    spinspire/pocketbase-sveltekit-starter

    Create distinctive, production-grade frontend interfaces with high design quality and accessible markup.

    511 GitHub starsUsed in 1 repo~2.6k tokens
    Auto-check passed
  • Code Reuse

    spinspire/pocketbase-sveltekit-starter

    A skill your agent uses when building a UI component, PocketBase hook, page, or app feature and there is proven code to copy from the reference repos.

    511 GitHub stars~2.5k tokensUpdated 1 mo ago
    Auto-check: notes

Works with

Questions about Oat CSS

What does Oat CSS do?

Our preferred CSS framework — ultra-lightweight, semantic HTML UI library (~8KB). Oat CSS is an agent skill from spinspire/pocketbase-sveltekit-starter. Our preferred CSS framework — ultra-lightweight, semantic HTML UI library (~8KB).

When should I use Oat CSS?

Oat CSS fits situations like: tasks that involve CSS and styling.

How do I install Oat CSS in Claude Code?

Run `npx skills add spinspire/pocketbase-sveltekit-starter --skill oat-css -a claude-code`. Or copy the skill folder (.agents/skills/oat-css in spinspire/pocketbase-sveltekit-starter) into .claude/skills/oat-css in your project. Claude Code loads it when a task matches its description.

How do I install Oat CSS in Codex?

Run `npx skills add spinspire/pocketbase-sveltekit-starter --skill oat-css -a codex`. Or copy the skill folder (.agents/skills/oat-css in spinspire/pocketbase-sveltekit-starter) into .agents/skills/oat-css in your project. Codex loads it when a task matches its description.

Can I use Oat CSS 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 spinspire/pocketbase-sveltekit-starter --skill oat-css -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/oat-css, .gemini/skills/oat-css, .github/skills/oat-css and .opencode/skills/oat-css in your project.

What does Oat CSS need to run?

Going by SKILL.md and its folder, Oat CSS needs the command-line tools its instructions call (bun and npm).

Does Oat CSS access the network?

SKILL.md names 5 domains. In commands or code: unpkg.com; the agent is likely to contact it when it follows the instructions. As links in the text: github.com, nadh.in, oat.ink and icons.getbootstrap.com. This is read from the text; nothing was executed.

Is Oat CSS 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 Oat CSS use?

Oat CSS is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Oat CSS use?

About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Oat CSS?

Skills that share tags, products or a category with Oat CSS: Frontend Guide (lightly-ai/lightly-studio, 896 stars), Sveltekit Svelte5 Tailwind Skill (302ai/302-AI-Studio, 132 stars), Tailwindcss Development (anonaddy/anonaddy, 4.9k 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 Oat CSS?

spinspire (a GitHub organization) maintains it in spinspire/pocketbase-sveltekit-starter, which has 511 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on August 22, 2026.

Source: spinspire/pocketbase-sveltekit-starter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.