Svelte5 Best Practices
SikandarJODD/cnblocks
Svelte 5 runes, snippets, SvelteKit patterns, and modern best practices for TypeScript and component development.
Design and UI skill for the Worklog desktop project manager.
$ npx skills add regisx001/Worklog --skill worklog-design -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install regisx001/Worklog worklog-design --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/regisx001/Worklog.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/desgin .claude/skills/worklog-design && 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 "worklog-design" agent skill from https://github.com/regisx001/Worklog/tree/master/.github/skills/desgin into .claude/skills/worklog-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worklog-design", 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/regisx001/Worklog/tree/master/.github/skills/desginType 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 regisx001/Worklog --skill worklog-design -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install regisx001/Worklog worklog-design --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/regisx001/Worklog.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/desgin .agents/skills/worklog-design && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "worklog-design" agent skill from https://github.com/regisx001/Worklog/tree/master/.github/skills/desgin into .agents/skills/worklog-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worklog-design", 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 regisx001/Worklog --skill worklog-design -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install regisx001/Worklog worklog-design --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/regisx001/Worklog.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/desgin .cursor/skills/worklog-design && 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 "worklog-design" agent skill from https://github.com/regisx001/Worklog/tree/master/.github/skills/desgin into .cursor/skills/worklog-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worklog-design", 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/regisx001/Worklog.git --path .github/skills/desgin--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 regisx001/Worklog --skill worklog-design -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install regisx001/Worklog worklog-design --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/regisx001/Worklog.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/desgin .gemini/skills/worklog-design && 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 "worklog-design" agent skill from https://github.com/regisx001/Worklog/tree/master/.github/skills/desgin into .gemini/skills/worklog-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worklog-design", 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 regisx001/Worklog worklog-designInstalls 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 regisx001/Worklog --skill worklog-design -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/regisx001/Worklog.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/desgin .github/skills/worklog-design && 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 "worklog-design" agent skill from https://github.com/regisx001/Worklog/tree/master/.github/skills/desgin into .github/skills/worklog-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worklog-design", 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 regisx001/Worklog --skill worklog-design -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install regisx001/Worklog worklog-design --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/regisx001/Worklog.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/desgin .opencode/skills/worklog-design && 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 "worklog-design" agent skill from https://github.com/regisx001/Worklog/tree/master/.github/skills/desgin into .opencode/skills/worklog-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worklog-design", 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.
worklog-designDesign and UI skill for the Worklog desktop project manager.
Worklog Design is an agent skill from regisx001/Worklog. Design and UI skill for the Worklog desktop project manager. Stack: SvelteKit 5 (Svelte Runes), Tauri v2, carbon-components-svelte, TypeScript, Bun. Use whenever building, refactoring, or extending Worklog's UI — new views, components, layouts, theming, or visual polish aligned with the Carbon Design System and the local-first desktop product philosophy.
Its SKILL.md is about 3.3k 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 Project management, Theming and dark mode and Refactoring. It works with Svelte, Tauri, SvelteKit and TypeScript. The repository describes itself as: Worklog is a local-first desktop project manager for small development teams. It is built for fast, keyboard-first planning with a Kanban workflow and zero cloud dependency for… The licence is MIT.
Read from SKILL.md and the folder at commit 36806a5. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are svelte and css).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Worklog Design loads about 3.3k tokens when it runs. Until then it costs about 93 tokens; SKILL.md has 760 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 regisx001/Worklog at commit 36806a5, republished under its MIT licence (© regisx001). 760 words, ~3,257 tokens.
.claude/skills/worklog-design/SKILL.md (or your agent's skills folder).Worklog is a local-first, keyboard-driven desktop project manager for small dev teams.
Core qualities that should always be felt in the UI:
| Quality | What it means in practice |
|---|---|
| Fast | Instant feedback. No loading skeletons for local SQLite data. Transitions ≤ 150 ms. |
| Keyboard-first | Every action reachable without a mouse. Shortcuts visible in tooltips. |
| Dense, not cluttered | Information-rich layout typical of desktop apps. Prefer compact Carbon sizing. |
| Local-first transparency | No cloud metaphors. Workspace = folder on disk. |
| Small team focus | No enterprise complexity. One workspace, one team, clear hierarchy. |
$state, $derived, $effect — no writable() stores for new code.+layout.svelte, board scope in nested layouts.$page from $app/stores for route params; prefer typed params via RouteParams.+page.ts / +layout.ts load() functions, not inline onMount.onMount for data fetching; it causes flash-of-empty-content in Tauri webview.@tauri-apps/plugin-sql) via the repository layer in src/lib/db/.src/lib/hooks/.invoke for custom Rust commands (e.g., Git sync, file system operations).localStorage, sessionStorage, or IndexedDB — SQLite is the source of truth.appDataDir, join) — never hardcode OS paths.g90) dark theme as the default — it matches the existing dark shell.app.html or root +layout.svelte: import 'carbon-components-svelte/css/g90.css'g10.optimizeImports from carbon-preprocess-svelte in svelte.config.js to avoid slow dev builds.size="sm" on buttons/inputs inside panels.--cds-* tokens, never with !important hacks.| Use case | Carbon component |
|---|---|
| Sidebar nav | SideNav, SideNavItems, SideNavLink, SideNavMenu |
| Command palette / search | Search + custom modal overlay |
| Ticket cards | Tile, ClickableTile |
| Modals / dialogs | Modal |
| Forms | TextInput, TextArea, Select, Toggle, Checkbox |
| Tags / labels | Tag |
| Data tables | DataTable, Toolbar, ToolbarSearch |
| Notifications | InlineNotification, ToastNotification |
| Buttons | Button, IconButton |
| Context menus | OverflowMenu, OverflowMenuItem |
| Tooltips | Tooltip, TooltipDefinition |
| Progress / loading | InlineLoading, SkeletonText |
AppShell (root +layout.svelte)
├── TitleBar ← custom drag region, app name, window controls
├── SideNav ← workspaces list + board tree
│ ├── WorkspaceHeader
│ ├── BoardTree ← per-board SideNavLink with right-click OverflowMenu
│ └── NavFooter ← settings link, sync status badge
└── MainContent ← <slot /> — swapped by nested routes
├── KanbanView ← /boards/[id]
├── TableView ← /boards/[id]/table
├── TimelineView ← /boards/[id]/timeline
└── SettingsView ← /settings/[tab]Key layout rules:
240px default, resizable via CSS variable --worklog-sidebar-width).-webkit-app-region: drag with interactive elements set to -webkit-app-region: no-drag.Override or extend Carbon tokens at :root in src/app.css:
:root {
/* Sidebar */
--worklog-sidebar-width: 240px;
--worklog-sidebar-bg: var(--cds-ui-background); /* matches g90 */
/* Kanban columns */
--worklog-column-width: 280px;
--worklog-column-gap: 12px;
/* Ticket card */
--worklog-card-radius: 2px; /* Carbon is square-ish */
--worklog-card-padding: 12px;
/* Status colors — extend Carbon's semantic palette */
--worklog-status-backlog: var(--cds-text-02);
--worklog-status-todo: var(--cds-interactive-01);
--worklog-status-in-progress: #f1c21b; /* Carbon yellow-30 */
--worklog-status-done: #42be65; /* Carbon green-40 */
/* Priority */
--worklog-priority-low: var(--cds-text-02);
--worklog-priority-medium: var(--cds-interactive-01);
--worklog-priority-high: #ff832b; /* Carbon orange-40 */
--worklog-priority-critical: var(--cds-support-error);
/* Typography — Carbon uses IBM Plex by default; Worklog inherits this */
--worklog-font-mono: 'IBM Plex Mono', monospace;
/* Zoom — controlled by app settings (50%–200%) */
--worklog-zoom: 1;
}Apply zoom at the app shell level:
#app-shell {
zoom: var(--worklog-zoom); /* Tauri webview supports this */
}<!-- KanbanBoard.svelte -->
<script lang="ts">
import { Tag, OverflowMenu, OverflowMenuItem } from 'carbon-components-svelte';
import type { Ticket } from '$lib/db/types';
let { columns }: { columns: KanbanColumn[] } = $props();
</script>
<div class="kanban-board">
{#each columns as col}
<div class="kanban-column">
<header class="col-header">
<span class="col-title">{col.label}</span>
<Tag size="sm">{col.tickets.length}</Tag>
</header>
<div class="col-body">
{#each col.tickets as ticket (ticket.id)}
<TicketCard {ticket} />
{/each}
</div>
</div>
{/each}
</div>
<style>
.kanban-board {
display: flex;
gap: var(--worklog-column-gap);
height: 100%;
overflow-x: auto;
padding: 16px;
}
.kanban-column {
flex: 0 0 var(--worklog-column-width);
display: flex;
flex-direction: column;
background: var(--cds-ui-01);
border: 1px solid var(--cds-ui-03);
}
.col-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 12px;
border-bottom: 1px solid var(--cds-ui-03);
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--cds-text-02);
}
.col-body {
flex: 1;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 4px;
padding: 8px;
}
</style><!-- TicketCard.svelte -->
<script lang="ts">
import { Tag, OverflowMenu, OverflowMenuItem } from 'carbon-components-svelte';
import type { Ticket } from '$lib/db/types';
let { ticket, onSelect, onMove }: {
ticket: Ticket;
onSelect: (id: string) => void;
onMove: (id: string, direction: 'next' | 'prev') => void;
} = $props();
function handleKeydown(e: KeyboardEvent) {
if (e.key === 'm') onMove(ticket.id, 'next');
if (e.key === 'Escape') { /* close panel */ }
}
</script>
<div
class="ticket-card"
tabindex="0"
role="button"
aria-label="Ticket: {ticket.title}"
onclick={() => onSelect(ticket.id)}
onkeydown={handleKeydown}
>
<div class="ticket-header">
<span class="ticket-id">{ticket.id.slice(0, 8)}</span>
<OverflowMenu size="sm" flipped>
<OverflowMenuItem text="Move forward" on:click={() => onMove(ticket.id, 'next')} />
<OverflowMenuItem text="Move back" on:click={() => onMove(ticket.id, 'prev')} />
<OverflowMenuItem text="Delete" danger />
</OverflowMenu>
</div>
<p class="ticket-title">{ticket.title}</p>
<div class="ticket-meta">
{#if ticket.priority}
<Tag size="sm" type="outline"
style="--tag-color: var(--worklog-priority-{ticket.priority})">
{ticket.priority}
</Tag>
{/if}
{#if ticket.due_date}
<span class="ticket-date">{formatDate(ticket.due_date)}</span>
{/if}
</div>
</div>
<style>
.ticket-card {
background: var(--cds-ui-02);
border: 1px solid var(--cds-ui-03);
border-radius: var(--worklog-card-radius);
padding: var(--worklog-card-padding);
cursor: pointer;
transition: border-color 120ms ease, background 120ms ease;
}
.ticket-card:hover,
.ticket-card:focus-visible {
border-color: var(--cds-interactive-01);
outline: none;
background: var(--cds-hover-ui);
}
.ticket-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 6px;
}
.ticket-id {
font-family: var(--worklog-font-mono);
font-size: 0.6875rem;
color: var(--cds-text-03);
}
.ticket-title {
font-size: 0.875rem;
line-height: 1.4;
color: var(--cds-text-01);
margin: 0 0 8px;
}
.ticket-meta {
display: flex;
align-items: center;
gap: 6px;
flex-wrap: wrap;
}
.ticket-date {
font-size: 0.6875rem;
color: var(--cds-text-03);
font-family: var(--worklog-font-mono);
}
</style>Worklog's command palette (Ctrl/Cmd+K) should use Carbon's Search inside a Modal:
<!-- CommandPalette.svelte -->
<script lang="ts">
import { Modal, Search } from 'carbon-components-svelte';
let open = $state(false);
let query = $state('');
</script>
<svelte:window onkeydown={(e) => {
if ((e.ctrlKey || e.metaKey) && e.key === 'k') {
e.preventDefault();
open = true;
}
}} />
<Modal bind:open size="sm" passiveModal modalHeading="" hasScrollingContent>
<Search bind:value={query} placeholder="Type a command…" autofocus size="lg" />
<!-- filtered results list -->
</Modal>Worklog is a productivity tool — motion must be functional, never decorative:
transition: background 120ms ease, border-color 120ms ease for hover/focus states.200ms ease-out. Use Svelte's fly transition: transition:fly={{ x: 320, duration: 200 }}.dndzone from svelte-dnd-action — it handles accessibility and keyboard DnD natively.ToastNotification for Git sync events (success / failure). Position bottom-right, auto-dismiss after 4 s.Carbon handles most a11y out of the box. Worklog-specific requirements:
role + tabindex="0" + onkeydown handler.TooltipDefinition with align="bottom", text like M — move ticket.aria-live="polite" on the sync status badge in the sidebar.| File | Purpose |
|---|---|
src/app.css | Global CSS, custom properties, Carbon theme import |
src/lib/components/app/ | Domain feature components (KanbanBoard, TicketCard, etc.) |
src/lib/components/ui/ | Generic reusable components that wrap or extend Carbon |
src/lib/hooks/ | Svelte 5 Runes hooks — data fetching, mutations, reactive state |
src/lib/db/ | Repository layer — only place that calls @tauri-apps/plugin-sql |
src/routes/ | SvelteKit routes; layouts own scope |
| ✅ Do | ❌ Don't |
|---|---|
Use Carbon tokens (--cds-*) for all colors | Use raw hex colors inside components |
| Put data access in hooks, not components | Call db.* directly from a .svelte file |
Use $state / $derived (Svelte 5 Runes) | Use writable() / readable() stores |
| Reach for Carbon components first | Rebuild what Carbon already provides |
| Keep transitions ≤ 200 ms | Add decorative animations or loading spinners |
Use OverflowMenu for context actions | Build custom dropdown menus |
Apply size="sm" in dense panel areas | Use default (md) sizing everywhere — too tall |
| Test keyboard navigation on every new component | Ship mouse-only interactions |
© regisx001, 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 .github/skills/desgin of regisx001/Worklog.
Open the folder on GitHubat commit 36806a5
Worklog 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Worklog Design this skillregisx001/Worklog | 261 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Svelte5 Best PracticesSikandarJODD/cnblocks | 430 | 1 repos | ~810 | Automated safety check: Pass | MIT | |
| Frontend Guidelightly-ai/lightly-studio | 896 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Web Designdrewnekota/cetus | 146 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Pre Commit CheckMooshieblob1/MooshieUI | 207 | — | ~825 | Automated safety check: Pass | AGPL-3.0 | |
| Add Tauri Commanddevlint/GitWand | 180 | — | ~1.5k | Automated safety check: Pass | MIT |
SikandarJODD/cnblocks
Svelte 5 runes, snippets, SvelteKit patterns, and modern best practices for TypeScript and component development.
lightly-ai/lightly-studio
Read before writing or reviewing any frontend code in lightlystudioview - Svelte, TypeScript, or SvelteKit files.
drewnekota/cetus
A skill your agent uses when building any web page, HTML artifact, landing page, dashboard, slide deck, report, email, or UI component the user will look at.
Mooshieblob1/MooshieUI
Validates MooshieUI uncommitted changes before commit or PR — build gates, Rust fmt/clippy, conventions, i18n.
devlint/GitWand
A skill your agent uses when the user wants to expose a Rust feature to the Vue frontend, add a Tauri IPC command, invoke something from a Vue component, or wire up any backend/frontend…
pmndrs/glyph
Audit and improve repository code milestone by milestone for correctness, clarity, local reasoning, DRY design, explicit state modeling, panic resistance, and trustworthy TypeScript boundaries.
regisx001/Worklog
Build, refactor, and debug features in SvelteKit + Svelte 5 runes.
Categories
Design and UI skill for the Worklog desktop project manager. Worklog Design is an agent skill from regisx001/Worklog. Design and UI skill for the Worklog desktop project manager.
Worklog Design fits situations like: extending Worklogs UI — new views; visual polish aligned with the Carbon Design System and the local-first desktop product philosophy.
Run `npx skills add regisx001/Worklog --skill worklog-design -a claude-code`. Or copy the skill folder (.github/skills/desgin in regisx001/Worklog) into .claude/skills/worklog-design in your project. Claude Code loads it when a task matches its description.
Run `npx skills add regisx001/Worklog --skill worklog-design -a codex`. Or copy the skill folder (.github/skills/desgin in regisx001/Worklog) into .agents/skills/worklog-design 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 regisx001/Worklog --skill worklog-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/worklog-design, .gemini/skills/worklog-design, .github/skills/worklog-design and .opencode/skills/worklog-design in your project.
SKILL.md names no scripts, command-line tools or credentials: Worklog Design is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Worklog Design is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k 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 Worklog Design: Svelte5 Best Practices (SikandarJODD/cnblocks, 430 stars), Frontend Guide (lightly-ai/lightly-studio, 896 stars), Web Design (drewnekota/cetus, 146 stars) and Pre Commit Check (Mooshieblob1/MooshieUI, 207 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
regisx001 (a GitHub user) maintains it in regisx001/Worklog, which has 261 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on August 18, 2026.
Source: regisx001/Worklog on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.