Agent skill

Worklog Design

by regisx001 in regisx001/Worklog

Design and UI skill for the Worklog desktop project manager.

MITAuto-check passedFrontend & Design

Install Worklog Design

skills CLI
$ npx skills add regisx001/Worklog --skill worklog-design -a claude-code

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

GitHub CLI
$ gh skill install regisx001/Worklog worklog-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/regisx001/Worklog.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/desgin .claude/skills/worklog-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
worklog-design
GitHub stars
261
Token cost
~3.3k tokens
SKILL.md length
760 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Design and UI skill for the Worklog desktop project manager.

  • Extending Worklogs UI — new views
  • SKILL.md covers Project Identity, Stack Constraints, Layout Architecture and Design Tokens & Custom…, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Visual polish aligned with the Carbon Design System and the local-first desktop product philosophy

What it does

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.

When your agent uses it

  • Extending Worklogs UI — new views
  • Visual polish aligned with the Carbon Design System and the local-first desktop product philosophy

Example prompts

  • “/worklog-design”

What it can do on your machine

Read from SKILL.md and the folder at commit 36806a5. 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

    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.

  • Network

    No URLs in SKILL.md.

    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

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.

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

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 regisx001/Worklog at commit 36806a5, republished under its MIT licence (© regisx001). 760 words, ~3,257 tokens.

Download SKILL.mdSave it as .claude/skills/worklog-design/SKILL.md (or your agent's skills folder).
name
worklog-design
description
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.

Worklog Design Skill

Project Identity

Worklog is a local-first, keyboard-driven desktop project manager for small dev teams.

Core qualities that should always be felt in the UI:

QualityWhat it means in practice
FastInstant feedback. No loading skeletons for local SQLite data. Transitions ≤ 150 ms.
Keyboard-firstEvery action reachable without a mouse. Shortcuts visible in tooltips.
Dense, not clutteredInformation-rich layout typical of desktop apps. Prefer compact Carbon sizing.
Local-first transparencyNo cloud metaphors. Workspace = folder on disk.
Small team focusNo enterprise complexity. One workspace, one team, clear hierarchy.

Stack Constraints

SvelteKit 5 + Svelte Runes
  • Components use $state, $derived, $effect — no writable() stores for new code.
  • Layouts own scope: workspace scope in +layout.svelte, board scope in nested layouts.
  • Use $page from $app/stores for route params; prefer typed params via RouteParams.
  • Async data goes in +page.ts / +layout.ts load() functions, not inline onMount.
  • Avoid onMount for data fetching; it causes flash-of-empty-content in Tauri webview.
Tauri v2
  • All persistence calls go through Tauri SQL plugin (@tauri-apps/plugin-sql) via the repository layer in src/lib/db/.
  • Never call the repository directly from a component — always go through a hook in src/lib/hooks/.
  • Tauri invoke for custom Rust commands (e.g., Git sync, file system operations).
  • Window is frameless; the app shell owns the drag region and custom title bar area.
  • No localStorage, sessionStorage, or IndexedDB — SQLite is the source of truth.
  • File paths use Tauri path API (appDataDir, join) — never hardcode OS paths.
carbon-components-svelte
  • Theme: use Gray 90 (g90) dark theme as the default — it matches the existing dark shell.
    • Import in app.html or root +layout.svelte: import 'carbon-components-svelte/css/g90.css'
    • For light mode support, dynamically swap to g10.
  • Use optimizeImports from carbon-preprocess-svelte in svelte.config.js to avoid slow dev builds.
  • Prefer Carbon's compact density tokens: size="sm" on buttons/inputs inside panels.
  • Do not fight Carbon's CSS custom properties — override with --cds-* tokens, never with !important hacks.
  • Common components to reach for first:
Use caseCarbon component
Sidebar navSideNav, SideNavItems, SideNavLink, SideNavMenu
Command palette / searchSearch + custom modal overlay
Ticket cardsTile, ClickableTile
Modals / dialogsModal
FormsTextInput, TextArea, Select, Toggle, Checkbox
Tags / labelsTag
Data tablesDataTable, Toolbar, ToolbarSearch
NotificationsInlineNotification, ToastNotification
ButtonsButton, IconButton
Context menusOverflowMenu, OverflowMenuItem
TooltipsTooltip, TooltipDefinition
Progress / loadingInlineLoading, SkeletonText

Layout Architecture

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:

  • The sidebar is fixed-width (240px default, resizable via CSS variable --worklog-sidebar-width).
  • The title bar drag region must use -webkit-app-region: drag with interactive elements set to -webkit-app-region: no-drag.
  • Never use full-page loading states — local SQLite is fast; show stale data instantly, then update.

Design Tokens & Custom Properties

Override or extend Carbon tokens at :root in src/app.css:

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:

css
#app-shell {
  zoom: var(--worklog-zoom);   /* Tauri webview supports this */
}

Component Patterns

Kanban Board
svelte
<!-- 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>
Ticket Card
svelte
<!-- 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>
Command Palette

Worklog's command palette (Ctrl/Cmd+K) should use Carbon's Search inside a Modal:

svelte
<!-- 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>

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

Interaction & Motion

Worklog is a productivity tool — motion must be functional, never decorative:

  • Transitions: transition: background 120ms ease, border-color 120ms ease for hover/focus states.
  • Panel slide-in: Ticket detail panel should slide in from the right at 200ms ease-out. Use Svelte's fly transition: transition:fly={{ x: 320, duration: 200 }}.
  • Column drag-and-drop: Use dndzone from svelte-dnd-action — it handles accessibility and keyboard DnD natively.
  • No skeleton loaders: Local SQLite data is synchronous-ish. Show last-known state immediately; update reactively.
  • Toast notifications: Use ToastNotification for Git sync events (success / failure). Position bottom-right, auto-dismiss after 4 s.

Accessibility (a11y)

Carbon handles most a11y out of the box. Worklog-specific requirements:

  • Every interactive Svelte component that isn't a native button must have role + tabindex="0" + onkeydown handler.
  • Keyboard shortcut hints: show in TooltipDefinition with align="bottom", text like M — move ticket.
  • Focus management: when ticket detail panel opens, move focus to the panel's close button; when it closes, return focus to the triggering card.
  • Use aria-live="polite" on the sync status badge in the sidebar.

File Conventions

FilePurpose
src/app.cssGlobal 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

✅ Do❌ Don't
Use Carbon tokens (--cds-*) for all colorsUse raw hex colors inside components
Put data access in hooks, not componentsCall db.* directly from a .svelte file
Use $state / $derived (Svelte 5 Runes)Use writable() / readable() stores
Reach for Carbon components firstRebuild what Carbon already provides
Keep transitions ≤ 200 msAdd decorative animations or loading spinners
Use OverflowMenu for context actionsBuild custom dropdown menus
Apply size="sm" in dense panel areasUse default (md) sizing everywhere — too tall
Test keyboard navigation on every new componentShip 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

Files

Just SKILL.md in .github/skills/desgin of regisx001/Worklog.

Open the folder on GitHubat commit 36806a5

Compare with similar skills

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.

Worklog Design compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Worklog Design this skillregisx001/Worklog261—~3.3kAutomated safety check: PassMIT
Svelte5 Best PracticesSikandarJODD/cnblocks4301 repos~810Automated safety check: PassMIT
Frontend Guidelightly-ai/lightly-studio896—~2.9kAutomated safety check: PassApache-2.0
Web Designdrewnekota/cetus146—~2.1kAutomated safety check: PassMIT
Pre Commit CheckMooshieblob1/MooshieUI207—~825Automated safety check: PassAGPL-3.0
Add Tauri Commanddevlint/GitWand180—~1.5kAutomated safety check: PassMIT

Similar skills

  • Svelte5 Best Practices

    SikandarJODD/cnblocks

    Svelte 5 runes, snippets, SvelteKit patterns, and modern best practices for TypeScript and component development.

    430 GitHub starsUsed in 1 repo~810 tokens
    DevelopmentAuto-check passed
  • 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
  • Web Design

    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.

    146 GitHub stars~2.1k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Pre Commit Check

    Mooshieblob1/MooshieUI

    Validates MooshieUI uncommitted changes before commit or PR — build gates, Rust fmt/clippy, conventions, i18n.

    207 GitHub stars~825 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Add Tauri Command

    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…

    180 GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Audit and improve repository code milestone by milestone for correctness, clarity, local reasoning, DRY design, explicit state modeling, panic resistance, and trustworthy TypeScript boundaries.

    395 GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed

More from regisx001/Worklog

  • Sveltekit Svelte5

    regisx001/Worklog

    Build, refactor, and debug features in SvelteKit + Svelte 5 runes.

    261 GitHub stars~2.3k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Worklog Design

What does Worklog Design do?

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.

When should I use Worklog Design?

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.

How do I install Worklog Design in Claude Code?

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.

How do I install Worklog Design in Codex?

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.

Can I use Worklog 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 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.

What does Worklog Design need to run?

SKILL.md names no scripts, command-line tools or credentials: Worklog Design is instructions for the agent only.

Does Worklog Design access the network?

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.

Is Worklog 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 Worklog Design use?

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.

How many tokens does Worklog Design use?

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.

What are the alternatives to Worklog Design?

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.

Who maintains Worklog Design?

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.