Worklog Design
regisx001/Worklog
Design and UI skill for the Worklog desktop project manager.
Read before writing or reviewing any frontend code in lightlystudioview - Svelte, TypeScript, or SvelteKit files.
$ npx skills add lightly-ai/lightly-studio --skill frontend-guide -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install lightly-ai/lightly-studio frontend-guide --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/lightly-ai/lightly-studio.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/frontend-guide .claude/skills/frontend-guide && 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 "frontend-guide" agent skill from https://github.com/lightly-ai/lightly-studio/tree/main/.agents/skills/frontend-guide into .claude/skills/frontend-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-guide", 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/lightly-ai/lightly-studio/tree/main/.agents/skills/frontend-guideType 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 lightly-ai/lightly-studio --skill frontend-guide -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install lightly-ai/lightly-studio frontend-guide --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lightly-ai/lightly-studio.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/frontend-guide .agents/skills/frontend-guide && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "frontend-guide" agent skill from https://github.com/lightly-ai/lightly-studio/tree/main/.agents/skills/frontend-guide into .agents/skills/frontend-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-guide", 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 lightly-ai/lightly-studio --skill frontend-guide -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install lightly-ai/lightly-studio frontend-guide --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lightly-ai/lightly-studio.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/frontend-guide .cursor/skills/frontend-guide && 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 "frontend-guide" agent skill from https://github.com/lightly-ai/lightly-studio/tree/main/.agents/skills/frontend-guide into .cursor/skills/frontend-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-guide", 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/lightly-ai/lightly-studio.git --path .agents/skills/frontend-guide--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 lightly-ai/lightly-studio --skill frontend-guide -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install lightly-ai/lightly-studio frontend-guide --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lightly-ai/lightly-studio.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/frontend-guide .gemini/skills/frontend-guide && 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 "frontend-guide" agent skill from https://github.com/lightly-ai/lightly-studio/tree/main/.agents/skills/frontend-guide into .gemini/skills/frontend-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-guide", 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 lightly-ai/lightly-studio frontend-guideInstalls 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 lightly-ai/lightly-studio --skill frontend-guide -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/lightly-ai/lightly-studio.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/frontend-guide .github/skills/frontend-guide && 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 "frontend-guide" agent skill from https://github.com/lightly-ai/lightly-studio/tree/main/.agents/skills/frontend-guide into .github/skills/frontend-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-guide", 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 lightly-ai/lightly-studio --skill frontend-guide -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install lightly-ai/lightly-studio frontend-guide --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lightly-ai/lightly-studio.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/frontend-guide .opencode/skills/frontend-guide && 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 "frontend-guide" agent skill from https://github.com/lightly-ai/lightly-studio/tree/main/.agents/skills/frontend-guide into .opencode/skills/frontend-guide/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-guide", 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.
frontend-guideRead before writing or reviewing any frontend code in lightlystudioview - Svelte, TypeScript, or SvelteKit files.
Frontend Guide is an agent skill from lightly-ai/lightly-studio. Read before writing or reviewing any frontend code in lightlystudioview - Svelte, TypeScript, or SvelteKit files. Covers component structure and naming, stores vs runes, absolute vs relative imports, Shadcn and Tailwind usage, Svelte 5 syntax, TanStack Query hooks, bundle size limits, Storybook stories, and vitest conventions.
Its SKILL.md is about 2.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 Design systems, Unit testing and CSS and styling. It works with Svelte, TypeScript, SvelteKit and shadcn/ui. The repository describes itself as: LightlyStudio - The Unified Data Platform for Multimodal ML. The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 34ffd8c. 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:
makenpmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
svelte.devvitest.devkit.svelte.devnext.shadcn-svelte.combits-ui.comlucide.devtanstack.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.
Frontend Guide loads about 2.9k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 790 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 lightly-ai/lightly-studio at commit 34ffd8c, republished under its Apache-2.0 licence (© lightly-ai). 790 words, ~2,879 tokens.
.claude/skills/frontend-guide/SKILL.md (or your agent's skills folder).Coding standards for frontend development in LightlyStudio using SvelteKit and TypeScript.
Minimize framework-specific syntax to reduce coupling and improve testability:
AuthForm/AuthForm.svelte).useAuth.ts, const myVar).Canonical layout:
src/
components/
AuthForm/
AuthForm.svelte
AuthForm.test.ts
AuthForm.stories.svelte # if needed
UserDashboard/
UserDashboard.svelte
UserDashboard.test.ts
UserDashboard.helpers.ts # if needed
UserProfile/ # subcomponent
UserProfile.svelte
UserProfile.test.ts
lib/
hooks/
index.ts # barrel exports
useAuth/
useAuth.ts
useAuth.test.ts
useData/
useData.ts
useData.test.ts.svelte.ts files for component logic, state machines, and hooks that use TanStack Query (since v6 uses runes internally).index.ts) to define a module's public API. Import from module level, not deep paths:// ✅ from "$lib/hooks" - not "$lib/hooks/useData/useData"
import { useData, useAuth } from "$lib/hooks";from "$lib/hooks", from "$lib/components/ui/button".from "../UserDashboard.helpers".interface for component props, function parameters, and return types:interface UseDataParams {
title: string;
onClick: () => void;
}
interface UseDataReturn {
data: string;
isLoading: boolean;
}
export function useData(params: UseDataParams): UseDataReturn {
return { data: params.title, isLoading: false };
}type UseDataParams = Parameters<typeof useData>[0];
type UseDataReturn = ReturnType<typeof useData>;
type TitleOnly = Pick<UseDataParams, "title">;
type WithoutTitle = Omit<UseDataParams, "title">;$lib/components/ui for standard UI elements (buttons, inputs, cards, tabs, alerts, tables).$lib/components when combining multiple Shadcn components, adding business logic, or needing custom behavior.@lucide/svelte.cn() from $lib/utils for conditional Tailwind class composition....rest, or intentional wrapper/proxy components.Keep JS chunk sizes below 500KB. Use dynamic imports for heavy components:
<script lang="ts">
import { onMount } from 'svelte';
let HeavyChart;
onMount(async () => {
const module = await import('$lib/components/HeavyChart.svelte');
HeavyChart = module.default;
});
</script>
{#if HeavyChart}
<svelte:component this={HeavyChart} />
{/if}When reviewing bundle size:
Use Svelte 5 patterns in all new code:
Props - use $props() with a typed interface:
<script lang="ts">
interface Props {
value: string;
placeholder?: string;
onSearch: (query: string) => void;
disabled?: boolean;
}
let {
value,
placeholder = 'Enter text',
onSearch,
disabled = false
}: Props = $props();
</script>Event handlers - use onclick, onchange, etc. (not on:click, on:change).
Reactive declarations - use $derived or derived() stores, not $:. Do not mix the two approaches - pick one per file/module.
Page state - use $app/state, not $app/stores:
import { page } from "$app/state";
page.params.sampleId; // no $ prefix neededHooks and reactivity - for hooks that wrap TanStack Query, accept a getter function (thunk) for reactive parameters. TanStack Query v6 uses thunks for reactivity — do not pass Svelte stores or $derived values:
// Hook definition (useFrames.svelte.ts — must be .svelte.ts for TanStack v6)
export const useFrames = (
getParams: () => { video_frame_collection_id: string; filter: VideoFrameFilter }
) => {
const query = createInfiniteQuery(() => {
const { video_frame_collection_id, filter } = getParams();
return {
...getAllFramesInfiniteOptions({
path: { video_frame_collection_id },
body: { filter }
}),
getNextPageParam: (lastPage) => lastPage.nextCursor || undefined
};
});
return { query };
};
// Consumer (+page.svelte)
const { query } = useFrames(() => ({
video_frame_collection_id: collectionId,
filter: currentFilter
}));
// query is a reactive proxy — access query.isSuccess, query.data directly (no $ prefix)For non-TanStack hooks with static parameters, pass values via SvelteKit's page load function or direct props.
Create small, reusable hooks in src/lib/hooks - avoid monolithic stores. We do not use a services folder; hooks handle data fetching and state.
Ref: lightly_studio_view/src/lib/hooks/useTags/useTags.ts, lightly_studio_view/src/lib/hooks/useFeatureFlags/useFeatureFlags.ts.
Generic hooks go in src/lib/hooks; component-specific hooks go in the component's folder.
For data fetching and API work:
createQuery/createInfiniteQuery must be .svelte.ts files.query.isSuccess, query.data directly — no $ prefix needed.Store-based hook example (playground):
// useCounter.ts
import { writable } from 'svelte/store';
const count = writable<number>(0);
export function useCounter() {
function increment() {
count.update((c) => c + 1);
}
function resetCount() {
count.set(0);
}
return { count, increment, resetCount };
}
// Counter.svelte
<script lang="ts">
import { useCounter } from './useCounter';
const { count, increment } = useCounter();
</script>
<button onclick={() => increment()}>Count: {$count}</button>Prefer these solutions in order:
setContext/getContext) - for state shared within a component subtree.$app/state - for server-loaded page data accessible by any component on the page.Snippet type) - for UI composition / layout customization without passing content as props.src/routes/.lightly_studio_view/src/routes/datasets/[dataset_id]/[collection_type]/[collection_id]/images/[sampleId]/.+layout.svelte for shared layouts. E.g. the collection layout at lightly_studio_view/src/routes/datasets/[dataset_id]/[collection_type]/[collection_id]/+layout.svelte.Use simplified story syntax - no explicit {#snippet children()} for text content:
<Story name="H1" args={{ variant: 'h1' }}>
Heading 1 - Large Page Title
</Story>Testing levels: Unit tests for isolated components/functions, integration tests for component interactions, end-to-end tests for full application flows.
Unit test example:
import { render, screen } from "@testing-library/svelte";
import MyComponent from "./MyComponent.svelte";
describe("MyComponent", () => {
it("renders the title", () => {
render(MyComponent, { props: { title: "Hello World" } });
expect(screen.getByText("Hello World")).toBeInTheDocument();
});
});defaultProps helper objects to avoid repeating prop definitions across tests. Override individual props with spread: { ...defaultProps, isUploading: true }.Before submitting code:
# Static checks (TypeScript, ESLint, Prettier, Svelte check)
make static-checks
# Unit tests
npm run test:unitAll checks must pass before committing.
© lightly-ai, Apache-2.0. 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/frontend-guide of lightly-ai/lightly-studio.
Open the folder on GitHubat commit 34ffd8c
Frontend Guide 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 |
|---|---|---|---|---|---|---|
| Frontend Guide this skilllightly-ai/lightly-studio | 896 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Worklog Designregisx001/Worklog | 261 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Morphous CatalogAmeyanagi/morphos | 102 | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Atlaspacifio/ui | 154 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Nextjs15 Initbear2u/my-skills | 933 | — | ~2.4k | Automated safety check: Pass | None | |
| Weft FrontendWeaveMindAI/weft | 2k | — | ~8k | Automated safety check: Notes | Custom licence |
regisx001/Worklog
Design and UI skill for the Worklog desktop project manager.
Ameyanagi/morphos
Create or refresh Morphous website design-system/theme bundles from animal, insect, plant, landscape, mineral, weather, or other nature motifs.
pacifio/ui
Atlas — a design language and UI guide system for agent interfaces.
bear2u/my-skills
A skill your agent uses when user wants to create a new Next.js 15 project (Todo/Blog/Dashboard/E-commerce/Custom domain) with App Router, ShadCN, Zustand, Tanstack Query, and modern Next.js stack
WeaveMindAI/weft
Read when the user wants a page, app or site for the program, and before dispatching the frontend-builder: the verified scaffold commands, the default stack (pnpm, SvelteKit, PostgreSQL, BetterAuth…
first-fluke/oh-my-agent
Frontend specialist for React, Next.js, TypeScript with FSD-lite architecture, shadcn/ui, and design system alignment.
lightly-ai/lightly-studio
Read before adding or changing backend code in lightlystudio - FastAPI routes, services, resolvers, SQLModel tables, or database access.
lightly-ai/lightly-studio
Read before writing or reviewing any Python code in this repository.
lightly-ai/lightly-studio
Read when naming anything user-facing - GUI text, docs, public Python API names, arguments, docstrings, or error messages.
lightly-ai/lightly-studio
Read when opening a pull request, writing a PR description, splitting work into PRs, or deciding whether a change is too large to review.
lightly-ai/lightly-studio
Read when adding a new function, module, or component, or when a file is growing large enough that splitting it is worth considering.
Categories
Read before writing or reviewing any frontend code in lightlystudioview - Svelte, TypeScript, or SvelteKit files. Frontend Guide is an agent skill from lightly-ai/lightly-studio. Read before writing or reviewing any frontend code in lightlystudioview - Svelte, TypeScript, or SvelteKit files.
Frontend Guide fits situations like: tasks that involve Design systems; tasks that involve Unit testing; tasks that involve CSS and styling.
Run `npx skills add lightly-ai/lightly-studio --skill frontend-guide -a claude-code`. Or copy the skill folder (.agents/skills/frontend-guide in lightly-ai/lightly-studio) into .claude/skills/frontend-guide in your project. Claude Code loads it when a task matches its description.
Run `npx skills add lightly-ai/lightly-studio --skill frontend-guide -a codex`. Or copy the skill folder (.agents/skills/frontend-guide in lightly-ai/lightly-studio) into .agents/skills/frontend-guide 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 lightly-ai/lightly-studio --skill frontend-guide -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/frontend-guide, .gemini/skills/frontend-guide, .github/skills/frontend-guide and .opencode/skills/frontend-guide in your project.
Going by SKILL.md and its folder, Frontend Guide needs the command-line tools its instructions call (make and npm).
SKILL.md names 7 domains. As links in the text: svelte.dev, vitest.dev, kit.svelte.dev, next.shadcn-svelte.com, bits-ui.com, lucide.dev and tanstack.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.
Frontend Guide is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 Frontend Guide: Worklog Design (regisx001/Worklog, 261 stars), Morphous Catalog (Ameyanagi/morphos, 102 stars), Atlas (pacifio/ui, 154 stars) and Nextjs15 Init (bear2u/my-skills, 933 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
lightly-ai (a GitHub organization) maintains it in lightly-ai/lightly-studio, which has 896 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 7, 2026.
Source: lightly-ai/lightly-studio on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.