hub
Skills Overview: The Compound Edge
Every skill type explained. Built-ins, custom, plugin-injected. When to use a skill vs. a slash command vs. a hook.
The compound edge
A skill is a markdown file. The frontmatter declares when it activates; the body tells Claude exactly what to do. That's it. But the simplicity is deceptive: skills are where individual effort compounds into institutional memory.
Every time you encode a workflow into a skill file, you take it off your plate forever. The next time that situation arises (a new prospect, a weekly review, a client onboarding), you type a phrase and Claude does the work. The skill stack grows. The cognitive load shrinks.
Three skill types
Built-in skills are bundled in the vercel-plugin (or AY Automate's skills pack) and injected automatically when their trigger phrases appear in the conversation. You never write them; they just appear.
nextjsai-sdkshadcnauthvercel-functionsCustom skills live in ~/.claude/skills/ or .claude/skills/ as plain .md files. The frontmatter declares triggers; the body is the instruction set. They load into every session and activate on matching phrases.
client-onboardingproposalweekly-synthesisprospect-researchPlugin-injected skills are delivered dynamically through Claude Code's hook system. The plugin reads the project context (tech stack, open files, error logs) and pushes relevant skill content before the first token is generated.
vercel-plugintinybirdsupabaseposthog-integration-nextjs-app-routerAnatomy of a skill file
Every skill is a .md file with a YAML frontmatter block. The body is free-form instructions; write it the same way you'd brief a smart contractor.
--- description: One-line summary triggers: - exact phrase - another phrase category: sales tools: - WebFetch - Write priority: 0 --- # My Skill When the user triggers this skill, do the following: 1. First step 2. Second step 3. Return the result as ...
descriptionOne-line summary. Shown in /skills list.yestriggersExact phrases that activate this skill.yescategoryGroups skills in the /skills panel.notoolsTool calls the skill is allowed to make.nopriorityHigher number = higher injection order (default 0).noSkill vs slash command vs hook
The three primitives are complementary, not interchangeable. The question is never "which one is better"; it's "which one fits the job."
Rule of thumb: If you'd put it in a runbook, make it a skill. If you'd put it in a Makefile, make it a hook. If you just want a shortcut label, make it a slash command.
Three worked examples
Real skills from the AY Automate pack. Click any to see the frontmatter.
Distribution patterns
Skills need to reach the right sessions. There are four distribution patterns; pick the one that matches your scope.
~/.claude/skills/GlobalAvailable in every project on your machine. Good for personal productivity skills.
.claude/skills/ProjectChecked into git. Every teammate and CI run gets the same skill set.
Plugin injectionDynamicSkills pushed at session start based on tech stack detection. Zero config for end users.
CLAUDE.md @importComposableReference skill files from CLAUDE.md with @path/to/skill.md. Keeps context lean.
The compound effect in practice: A team of 5 sharing a .claude/skills/ directory means every skill one person writes is available to everyone from the next git pull. 20 hours of workflow encoding becomes 100 hours of recovered capacity.
Want this running in your stack?
AY Automate builds AI automation systems for production teams.