Skip to content

Claude Code Skills

Skills are reusable instruction packs that teach Claude Code how to do a specific task well — design a landing page, run an SEO audit, review a release. A skill is a folder with a SKILL.md (a description plus instructions) and any supporting files. When a task matches a skill's description, Claude Code loads it automatically.

In this boilerplate they ship committed. Clone the repo and they load on your first session, with nothing to install.

What ships

Design and UX

Symlinked into .agents/skills/

  • accessibility-inclusive-design
  • agentic-ai-generative-ux
  • design-critique-case-studies
  • design-systems-architecture
  • interaction-motion-design
  • nng-ux-heuristics
  • ui-visual-design-system
  • ux-ethics-content-strategy

Next.js and code patterns

Symlinked into .agents/skills/

  • component-patterns-code
  • nextjs-advanced-routing
  • nextjs-app-router-fundamentals
  • nextjs-dynamic-routes-params
  • nextjs-server-client-components
  • performance-states-patterns
  • vercel-ai-sdk

SEO

Symlinked into .agents/skills/

  • seo-initial

Spec Harness (the build loop)

Real directories in .claude/skills/

  • spec-harness
  • spec-harness-audit
  • spec-harness-build
  • spec-harness-generate-agents
  • spec-harness-install
  • spec-harness-learn
  • spec-harness-plan
  • spec-harness-rules
  • spec-harness-spec
  • spec-harness-tasks
  • spec-harness-tester
  • spec-harness-tickets
  • spec-harness-verify

Guardrails

Real directories in .claude/skills/

  • backend-secrets-lock
  • release-preflight
  • secrets-guard
The directory is the source of truth
The list above is a published copy of .claude/skills/. Read the directory itself after you add or archive one. pnpm run init resolves every symlink in there on a fresh clone and stops if one points at nothing, because a broken link costs you a skill without showing up in ls.

How they are wired

Claude Code scans .claude/skills/ and loads anything it finds at .claude/skills/<name>/SKILL.md. Two shapes live there and both load the same way: the design, UX, Next.js and SEO packs are symlinks whose canonical folders sit in .agents/skills/, and the Spec Harness family plus the guardrail skills are real directories that exist only in .claude/skills/. The symlink is a filing choice, not a switch.

Archiving works by depth, not by deleting anything. .claude/skills/_archived/ holds skills that are kept but not loaded: discovery only looks one level deep, so an archived skill's SKILL.md sits one level too far to be found. To bring one back, move or link it up one level.

Terminal
# restore an archived skill that lives in .agents/skills/_archived/
ln -s ../../.agents/skills/_archived/<skill-name> .claude/skills/<skill-name>
# restore an archived skill that is a real directory
$
mv.claude/skills/_archived/<skill-name> .claude/skills/<skill-name>
# archive an active one (kept on disk, no longer loaded)
$
mv.claude/skills/<skill-name> .claude/skills/_archived/<skill-name>

How skills work

  • A skill lives in a directory with a SKILL.md at its root.
  • The frontmatter description controls when the skill triggers.
  • The body holds the methodology Claude follows once the skill is active.

Adding a skill to your project

Project skills live in .claude/skills/:

Terminal
$
mkdir-p .claude/skills/my-skill

Then create .claude/skills/my-skill/SKILL.md:

SKILL.md
---
name: my-skill
description: Use when the user asks to do X. Triggers on "X", "do X", "X this page".
---

# My Skill

Step-by-step instructions Claude should follow when this skill is active...
Project vs personal skills
Project skills in .claude/skills/ ship with the repo and are shared with your team. Personal skills live in ~/.claude/skills/ and follow you across projects.

Adding your own

A skill for your own product (your editorial voice, your review checklist, your deploy ritual) is a folder and a file. Drop it next to the ones that ship and it loads on the next session.

The description is the trigger
The frontmatter description is the only thing that decides whether a skill fires. Keep it specific and name the phrases you would actually type. A vague description either never triggers or triggers on the wrong task.