A curated skill collection for AI agents, including first-party skills and vendored framework/CMS best practices for use with the Agent Skills ecosystem and skills.sh.
- One directory per skill:
skills/<skill-name>/ - Skill entrypoint:
skills/<skill-name>/SKILL.md - Modular rules:
skills/<skill-name>/rules/*.md - One skill per domain where it helps: router
SKILL.md+references/(generated from vendors byscripts/sync-vendored.mjs) + optional first-partyrules/(gsap,sanity,animation) - Upstream vendors tracked as submodules under
vendor/
gsap: one skill for all GSAP topics (core, timeline, ScrollTrigger, plugins, React, frameworks, utils, performance, debug). Router +references/generated fromgreensock/gsap-skills(MIT) with display studio additions. Replaces the formergsap-*skills: install with--skill gsap.animation: web animation in one skill. First-party conventions (scroll-reveal presets, Lenis + GSAP ticker, page transitions, reduced motion, cleanup, Nuxt and vanilla adapters) inrules/, plus Emil Kowalski's guides (when/how to animate, easing, review, audit, gestures) inreferences/. Replacesmotion-conventionsand theemil-*skills: install with--skill animation.nuxt-sanity:@nuxtjs/sanitymodule integration best practices for Nuxt 3 + Sanity CMS. CoversuseSanityQuery,useLazySanityQuery,useSanity,SanityImage,SanityContent(Portable Text), visual editing with stega, TypeScript typegen, named clients, Nitro server routes, CORS, caching patterns, and dynamic sitemap generation.nuxt-seo:@nuxtjs/robotsbest practices for Nuxt 3. Covers robots.txt configuration,blockNonSeoBots,blockAiBots, per-page noindex viadefinePageMeta, route rules,useRobotsRulecomposable, environment-based indexing, andllms.txtfor AI tool documentation access.ruby: core Ruby language best practices (independent of any framework) covering syntax and types, collections/Enumerable, blocks/procs/lambdas, OOP and modules, metaprogramming, Bundler/gems, testing (RSpec/Minitest), and style/typing tooling (RuboCop, RBS, Steep, ruby-lsp).ruby-on-rails: full-stack Rails 8.1 best practices covering MVC lifecycle, Active Record (incl. multiple databases/sharding), routing, views, forms, background jobs, mailer, WebSockets, Active Storage, security (incl. the Rails 8 authentication generator), testing, performance, Kamal/Thruster deployment, engines/generators, and debugging.sanity-schema-accelerator: low-token Sanity schema generator for object blocks, pageBuilder arrays, singleton pages, and repeatable pages using your Display Studio conventions.shopify-development: Shopify apps, extensions, themes, GraphQL API, webhooks, Liquid templating, billing, metafields (API v2026-01).tailwind: Tailwind CSS v4 best practices covering utility-first patterns,@themevariables, responsive design, dark mode, custom styles, performance, accessibility, and a Figma → Tailwind theme generation workflow (paste Figma CSS variables, get@themeCSS files organized by category: colors, typography, spacing, radius/shadows, breakpoints).
nuxtvuevite
Compacted into skills/sanity (MIT): sanity-best-practices, content-modeling-best-practices, seo-aeo-best-practices, content-experimentation-best-practices as references/ topics. Install with --skill sanity.
web-design-guidelines
shopify: one skill for every Shopify developer surface (Admin, Storefront, Functions, Polaris, Hydrogen, Liquid, CLI, ...). Upstream's single skill replaces the formershopify-*skills. Upstream telemetry is disabled in the vendored scripts.ucp
cavemandeslopifygrill-mejunior-to-senior
MIT licensed, © Emil Kowalski. Web animation subset, compacted into skills/animation (references/): emil-design-eng, animate, review-animations, improve-animations, find-animation-opportunities, animation-vocabulary, apple-design.
ponytail
Install one skill from this repository:
npx skills add <owner>/<repo> --skill gsapInstall a specific first-party or vendored skill:
npx skills add <owner>/<repo> --skill nuxt-sanity
npx skills add <owner>/<repo> --skill nuxt
npx skills add <owner>/<repo> --skill sanityInstall all skills from this repository:
npx skills add <owner>/<repo> --skill '*'List discoverable skills before install:
npx skills add <owner>/<repo> --listThe --skill flag only accepts exact skill names (repeatable) or '*' for the entire repo — there is no prefix/glob shorthand like --skill 'shopify-*'. To install every skill from one vendor, list each of its skill names explicitly:
npx skills add display-design-studio/skills \
--skill shopify --skill ucpUse the vendor lists in Included skills above to get the exact names for other vendors:
antfu/skills:nuxt,vue,vitesanity-io/agent-toolkit: compacted intosanityvercel-labs/agent-skills:web-design-guidelinesShopify/Shopify-AI-Toolkit:shopify,ucpJuliusBrussee/skills:caveman,deslopify,grill-me,junior-to-senioremilkowalski/skills: compacted intoanimation
Alternatively, copy the vendor's skills directly from this repo's vendor/ submodules (read-only mirrors of upstream), the same way SYNC.md re-copies them into skills/:
cp -R vendor/shopify-ai-toolkit/skills/* /path/to/project/mnt/skills/vendor/See SYNC.md for the full per-skill cp -R list for each vendor.
- First-party skill frontmatter uses only
name+description(Anthropic spec). Attribution is tracked inrules/_coverage-map.md. - Vendored skills keep their upstream metadata and attribution.
- Sources are preserved via
vendor/submodules for update traceability.
The tailwind skill includes a purpose-built agent workflow to translate Figma CSS variables into Tailwind v4 @theme files. See skills/tailwind/rules/figma-to-theme-workflow.md for the full instructions.
How to use:
- Export CSS variables from Figma (via "Variables to CSS" plugin or Dev Mode copy)
- Paste them in chat and ask the agent to generate the Tailwind theme files
- The agent classifies variables (colors, typography, spacing, radius, shadows, breakpoints) and writes the corresponding
@themeCSS files using the templates inskills/tailwind/figma-tokens/
Place skills under mnt/skills/ (or the path configured in your agent environment). Separate first-party from vendored for easier sync management:
mnt/skills/
├── user/ # first-party, project-specific skills
│ ├── gsap/
│ │ └── SKILL.md
│ └── nuxt-sanity/
│ └── SKILL.md
└── vendor/ # upstream-synced, treat as read-only
├── content-modeling-best-practices/
│ └── SKILL.md
└── vite/
└── SKILL.md
The agent will scan all SKILL.md files under the configured root. The description field in each file's frontmatter is what Claude reads to decide whether to load a skill automatically — so it is the highest-leverage thing to get right.
-
Install via CLI:
npx skills add display-design-studio/skills --skill gsap
or copy the directory manually into
mnt/skills/user/(first-party) ormnt/skills/vendor/(upstream). -
Verify the SKILL.md frontmatter has a meaningful
description. If it doesn't, see the section below. -
No registration needed — the agent discovers skills from the file system automatically.
Use the skills CLI's dedicated update command (alias: upgrade) to pull the latest version of installed skills:
# Update all skills in the current project
npx skills update -p
# Update one or more specific skills
npx skills update gsap
npx skills update gsap nuxt-sanity
# Skip the scope prompt (auto-detects project vs. global)
npx skills update -yUse -g/--global instead of -p/--project to update global (user-level) skills.
Existing skill files are overwritten in place. First-party customisations (e.g. edited description fields) will be lost — back them up first if needed.
Claude decides which skills to load based solely on the description field in SKILL.md frontmatter. A weak description means the skill is silently ignored even when it would be useful.
Signs a description needs work:
- It reads like a product pitch ("A comprehensive guide to…") with no concrete nouns
- It omits the actual technology names, file types, or CLI commands
- It doesn't list the user-facing trigger words someone would naturally type
Pattern to follow:
description: |
Use this skill for <primary technology> tasks. Triggers include:
<trigger word>, <trigger word>, <trigger word>.
Also relevant for: <secondary concept>, <secondary concept>.Real example (before/after for vite):
# Before (weak — no triggers)
description: Best practices for Vite projects.
# After (strong — concrete triggers)
description: |
Use for any Vite build tooling question. Triggers: vite.config.ts, HMR,
Rollup plugin, library mode, SSR build, vitest config. Also covers
framework-specific setups: Vue, React, Svelte, Nuxt, SvelteKit.Rule of thumb: if you can picture a developer typing the trigger word in a chat message, it belongs in the description.
⚠️ For vendored skills, only edit thedescriptionfield — leave all other content intact to keep upstream diffs clean. See the sync section below.
Vendored skill content may be overwritten when you pull upstream changes. To protect custom description fields:
-
Before syncing, export your custom descriptions:
grep -r "^description:" mnt/skills/vendor/ > .skill-descriptions.bak
-
Run the sync (see
SYNC.mdfor the full workflow):git submodule update --remote --init --recursive # then re-copy from vendor/ into mnt/skills/vendor/ -
After syncing, re-apply your custom descriptions. If you keep them in a patch file (e.g.
patches/skill-descriptions.patch), a singlegit apply patches/skill-descriptions.patchrestores everything.
A description-improvements.patch for the vendored skills in this repo is included in patches/ — apply it after any upstream sync:
git apply patches/description-improvements.patch- Keep
SKILL.mdconcise as the skill router and index. - Put detailed implementation guidance in
rules/with focused files. - Prefer actionable rules with:
- why it matters
- incorrect pattern
- correct pattern
- links to official docs
- Keep a
_coverage-map.mdper skill to track source coverage.
- Create
skills/<skill-name>/SKILL.md. - Create
skills/<skill-name>/rules/_sections.md. - Create
skills/<skill-name>/rules/_coverage-map.md. - Create modular rule files under
skills/<skill-name>/rules/. - Use prefixed rule naming:
core-*,plugin-*,tools-*,perf-*,a11y-*,debug-*.
- Ensure each rule file includes:
- why it matters
- incorrect pattern
- correct pattern
- official docs links
- Update this
README.mdwith the new skill.
Update submodules to pull latest upstream content:
git submodule update --remote --init --recursiveThen re-copy needed skills from vendor/*/skills/* into skills/* and review diffs.
For a ready-to-run workflow, see SYNC.md.