agentsclimarketplace

Shadcn svelte

Skill j13z/j13z-svelte-essentials/agent-skills/src/shadcn-svelte

Use this skill when the project uses shadcn-svelte and the task involves implementing or refactoring UI with that library.From its SKILL.md

Install
npx -y skills add j13z/j13z-svelte-essentials --skill shadcn-svelte

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.5 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

shadcn-svelte Agent Skill

Preparation

  1. Projects may customize locations. Therefore read components.json completely and inspect its fields:
    • aliases.ui: hint to where components are located (replace $lib, likely with src/lib)
    • aliases.utils: hint where utils.ts is located (same logic)
    • tailwind.css: The main stylesheet with token and color definitions
  2. Read references/shadcn-svelte-component-index-llms.md.
  • Defer following specific component docs until you actually use a component or when you need more detailed information in advance for a specific task

shadcn-svelte does not come as regular node_modules dependency, but instead components are installed embedded into src/lib (resolve aliases.ui value) on demand.

  • That means (important!): If you think that a useful shadcn-svelte component listed in shadcn-svelte-component-index-llms.md is missing, stop an ask the user to install it.
  • Or – if you have the ability – install it yourself using the shadcn-svelte CLI: pnpm dlx shadcn-svelte@latest add button

Background

You need to understand these characteristics of shadcn-svelte:

  • It's components are "open code", their source code is pulled into the application like "starter kit". This gives the project full control. But: Never modify the component sources.

  • It's components compose very nicely because primitives forward the underlying element's attributes, especially the class attribute, so they remain full customizable and stylable.

    • You should however accept the default styles and only override them, if there's a clear reason.
  • shadcn-svelte provides a basic design system and theme configuration based on Tailwind.

Before you use a component for the first time, consult its linked documentation: Read the usage instructions and code example (load references component docs lazily / on demand).

Component selection

Strongly prefer existing shadcn-svelte components when they already cover the intended UI pattern. Do not rebuild common UI primitives with raw HTML + Tailwind just because it seems faster in the moment.

Only build custom low-level UI when:

  • the catalog clearly does not fit the use case
  • the custom structure is truly simpler

Instructions

Specific Tailwind Classes

shadcn-svelte defines custom CSS variables for colors such as:

--background
--foreground
--card
--card-foreground
--primary
--primary-foreground
--muted
--muted-foreground
--accent
--accent-foreground
--border
--input
--ring
…

From these, Tailwind constructs classes like the following - these are just examples:

bg-primary
bg-background
bg-card
text-primary-foreground
text-foreground
text-muted-foreground
text-warning-foreground
…

Do

  • If your component renders a primitive, expose a class prop an pass it on to maintain the an "openness" and composability properties. Use the cn(…) class composition helper function to pass on class / className props. Examples:
    <!-- With a `shadcn-svelte` Button -->
    <Button class={cn("<provided classes>", className)}>
      {@render children?.()}
    <Button>
    
    or the same with a simple DOM element:
    <button class={cn("<provided classes>", className)}>
      {@render children?.()}
    <button>
    

Avoid

  • For basic component use you well rarely have to write complex Tailwind class expressions with values, examples:
    • Avoid: px-[13.5px], use: px-2 (standard design token value)
    • Avoid: shadow-[0_35px_35px_rgba(0,0,0,0.25)], use: shadow-xl (simple pre-defined value from the design system)

Hard Rules

Notations:

  • Never use string interpolation to pass on classes, never: class="p-4 {className}" (instead: class={cn("p-4", className)}"). Reason: cn uses tailwind-merge to de-duplicate classes, so you don't end up e.g. with p-4 p2
  • Never use Svelte's class:foo="value" syntax
  • Avoid using the style
    • Exception: complex programmatic CSS transforms (or if instructed so); for simple ones prefer Tailwind
  • Never hard-code specific color values like bg-slate-500. Always use semantic color roles like bg-background.
  • Avoid using component-scoped stylesheeets (<style> element)
  • Avoid manually set border, hover styles, or other low-level skill, unless your task requires deviating from the default stylig

Resources

  • references/shadcn-svelte-component-index-llms.md

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.