Frontend Guide
lightly-ai/lightly-studio
Read before writing or reviewing any frontend code in lightlystudioview - Svelte, TypeScript, or SvelteKit files.
Our preferred CSS framework — ultra-lightweight, semantic HTML UI library (~8KB).
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill oat-css -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter oat-css --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "oat-css" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/oat-css into .claude/skills/oat-css/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oat-css", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/oat-cssType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill oat-css -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter oat-css --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/oat-css .agents/skills/oat-css && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "oat-css" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/oat-css into .agents/skills/oat-css/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oat-css", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill oat-css -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter oat-css --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/oat-css .cursor/skills/oat-css && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "oat-css" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/oat-css into .cursor/skills/oat-css/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oat-css", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/spinspire/pocketbase-sveltekit-starter.git --path .agents/skills/oat-css--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill oat-css -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter oat-css --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/oat-css .gemini/skills/oat-css && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "oat-css" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/oat-css into .gemini/skills/oat-css/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oat-css", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install spinspire/pocketbase-sveltekit-starter oat-cssInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill oat-css -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/oat-css .github/skills/oat-css && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "oat-css" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/oat-css into .github/skills/oat-css/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oat-css", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add spinspire/pocketbase-sveltekit-starter --skill oat-css -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install spinspire/pocketbase-sveltekit-starter oat-css --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/spinspire/pocketbase-sveltekit-starter.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/oat-css .opencode/skills/oat-css && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "oat-css" agent skill from https://github.com/spinspire/pocketbase-sveltekit-starter/tree/master/.agents/skills/oat-css into .opencode/skills/oat-css/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oat-css", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
oat-cssOur 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). 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.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 66f6dee. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
bunnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
unpkg.comAlso links to:
github.comnadh.inoat.inkicons.getbootstrap.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from spinspire/pocketbase-sveltekit-starter at commit 66f6dee, republished under its MIT licence (© spinspire). 844 words, ~3,932 tokens.
.claude/skills/oat-css/SKILL.md (or your agent's skills folder).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.
bun add @knadh/oatIn your app entry or root SCSS:
@import '@knadh/oat/oat.min.css';Import the JS for dynamic components (dialog, dropdown, tabs, toast, tooltip, sidebar):
import '@knadh/oat/oat.min.js';Or selectively import individual files from @knadh/oat/css/ and @knadh/oat/js/.
<link rel="stylesheet" href="https://unpkg.com/@knadh/oat/oat.min.css">
<script src="https://unpkg.com/@knadh/oat/oat.min.js" defer></script>Use semantic HTML. Oat styles elements based on their tag and ARIA attributes, not CSS classes.
<!-- ❌ 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>Only override when:
:root (see Theming below).hstack, .vstack, .container/.row/.col-* grid, or add your ownEvery Oat component below is purely semantic HTML. No custom CSS needed.
<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> is styled by default. Use data-variant for semantics, .outline/.ghost for style, .small/.large for size.
<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:
<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><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>Use role="alert" with optional data-variant (success, warning, error).
<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>Wrap inputs in <label data-field> for proper styling. Input groups use <fieldset class="group">.
<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>Uses native <dialog> with commandfor/command attributes (zero JS required).
<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>Uses <ot-dropdown> WebComponent + native Popover API.
<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>Uses <ot-tabs> WebComponent.
<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><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><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>Native <details>/<summary>.
<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 value="60" max="100"></progress>
<meter value="0.8" min="0" max="1" low="0.3" high="0.7" optimum="1"></meter><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><div role="status" class="skeleton line"></div>
<div role="status" class="skeleton box"></div><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><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>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()Just use the title attribute.
<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>12-column CSS grid.
<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>Common utility classes from utilities.css:
| Class | Purpose |
|---|---|
.hstack | Horizontal flex container |
.vstack | Vertical flex container |
.justify-start/center/end/between | Flex justify |
.items-start/center/end | Flex 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-light | Muted text |
.text-center | Center text |
.align-center | Center content |
.unstyled | Remove list/button default styles |
.table | Scrollable table wrapper |
.badge | Badge/tag |
.button | Link styled as button |
.skeleton | Loading placeholder |
.outline | Outline variant for buttons |
.ghost | Ghost variant for buttons |
.small, .large | Size modifier |
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.
Set data-theme="dark" on <body> to force dark. Oat also auto-detects prefers-color-scheme.
Oat exposes spacing, typography, shadow, and radius tokens:
.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);
}Oat is created by Kailash Nadh and used in his own projects. The community has built:
in-view, hover, on-load triggers<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.
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.
<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.
| Method | Link |
|---|---|
| CDN | https://unpkg.com/bootstrap-icons@1.11.3/bootstrap-icons.svg |
| npm | npm install bootstrap-icons, copy node_modules/bootstrap-icons/bootstrap-icons.svg |
<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.
6,128 icons, slightly heavier sprite (2 MB raw, ~700 KB gzipped), more variety and a modern 2px-stroke style. MIT license.
<svg width="24" height="24">
<use href="tabler-sprite.svg#tabler-refresh"/>
</svg>svg-sprite to build a sprite with only the icons you need. Adds a build step but minimizes payload.Oat's .icon utility sizes a button for icon-only usage:
<button class="ghost icon" aria-label="Close">
<svg width="16" height="16" fill="currentColor">
<use href="bootstrap-icons.svg#x-lg"/>
</svg>
</button>These compositions use only Oat's built-in components and utility classes — no custom CSS:
Stats cards (dashboard metrics):
<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:
<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:
<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><button> is already styled, a <dialog> already worksdata-variant (not custom classes) for color semantics: primary, secondary, success, danger, warningrole="alert", aria-busy="true", role="switch") — Oat styles them automatically.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
Just SKILL.md in .agents/skills/oat-css of spinspire/pocketbase-sveltekit-starter.
Open the folder on GitHubat commit 66f6dee
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Oat CSS this skillspinspire/pocketbase-sveltekit-starter | 511 | — | ~3.9k | Automated safety check: Pass | MIT | |
| Frontend Guidelightly-ai/lightly-studio | 896 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Sveltekit Svelte5 Tailwind Skill302ai/302-AI-Studio | 132 | — | ~3.5k | Automated safety check: Pass | AGPL-3.0 | |
| Tailwindcss Developmentanonaddy/anonaddy | 4.9k | 10 repos | ~865 | Automated safety check: Pass | MIT | |
| UI StylingOhh-889/skyroc | 795 | 13 repos | ~2.5k | Automated safety check: Pass | MIT | |
| MCP Developmentcoollabsio/coolify | 63k | 1 repos | ~949 | Automated safety check: Pass | MIT |
lightly-ai/lightly-studio
Read before writing or reviewing any frontend code in lightlystudioview - Svelte, TypeScript, or SvelteKit files.
302ai/302-AI-Studio
Comprehensive integration skill for building sites with SvelteKit 2, Svelte 5, and Tailwind CSS v4
anonaddy/anonaddy
Always invoke when the user's message includes 'tailwind' in any form.
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.
coollabsio/coolify
A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.
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.
spinspire/pocketbase-sveltekit-starter
Bun as runtime, package manager, bundler, and test runner. An agent skill from spinspire/pocketbase-sveltekit-starter.
spinspire/pocketbase-sveltekit-starter
Operate PocketBase via its REST API. An agent skill from spinspire/pocketbase-sveltekit-starter.
spinspire/pocketbase-sveltekit-starter
Extend PocketBase with custom hooks and routes in JS or Go. An agent skill from spinspire/pocketbase-sveltekit-starter.
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.
spinspire/pocketbase-sveltekit-starter
Create distinctive, production-grade frontend interfaces with high design quality and accessible markup.
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.
Works with
Categories
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).
Oat CSS fits situations like: tasks that involve CSS and styling.
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.
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.
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.
Going by SKILL.md and its folder, Oat CSS needs the command-line tools its instructions call (bun and npm).
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.
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.
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.
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.
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.
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.