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.

9 min read·
01

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.

25+
skills in the AY pack
6
skill categories
1 phrase
to trigger any of them
02

Three skill types

Built-inShipped with the plugin

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-functions
When:Lean on these first. Zero maintenance cost.
CustomMarkdown files you write

Custom 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-research
When:Use for every repeatable workflow unique to your operation.
Plugin-injectedInjected at session start by a plugin hook

Plugin-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-router
When:Use when the right skill depends on the current project, not the user.
03

Anatomy 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.

~/.claude/skills/my-skill.md
---
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 ...
FieldPurposeRequired
descriptionOne-line summary. Shown in /skills list.yes
triggersExact phrases that activate this skill.yes
categoryGroups skills in the /skills panel.no
toolsTool calls the skill is allowed to make.no
priorityHigher number = higher injection order (default 0).no
04

Skill 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."

If you need to…UseBecause
You repeat the same multi-step workflowSkillEncapsulates the steps, makes them triggerable by a phrase.
You want a one-shot shortcut in the UISlash command/commands are UI shortcuts. They don't carry instruction payloads.
You need automatic side effects on tool useHookHooks fire on tool events: lint after Edit, notify on Stop.
The workflow requires rich context (files, API state)SkillSkills receive the full session context. Hooks and slash commands don't.
You want to protect or audit file writesHookPreToolUse / PostToolUse hooks intercept write tool calls.
The action should run in CI without a terminalHook (async)Async hooks run headlessly and don't block the session.

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.

05

Three worked examples

Real skills from the AY Automate pack. Click any to see the frontmatter.

06

Distribution patterns

Skills need to reach the right sessions. There are four distribution patterns; pick the one that matches your scope.

🌐
~/.claude/skills/Global

Available in every project on your machine. Good for personal productivity skills.

📁
.claude/skills/Project

Checked into git. Every teammate and CI run gets the same skill set.

Plugin injectionDynamic

Skills pushed at session start based on tech stack detection. Zero config for end users.

🔗
CLAUDE.md @importComposable

Reference 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.