| name | skillify |
| description | Use this skill when generalizing a workflow from the current session into a reusable SKILL.md. |
Skillify
Extracts a repeatable workflow from what was done in the current session and creates a reusable agent skill from it. Different from create-skill, which scaffolds from a blank template — this skill analyzes what actually happened and generalizes it.
When to use
- The user says "skillify this", "make this reusable", "turn what we just did into a skill", or similar
- A multi-step workflow was completed manually and is worth encoding for future use
- You want to capture decisions made in a session so an agent can repeat them without re-deriving
Steps
1. Identify the workflow to generalize
From the session history, extract:
- Trigger: What situation prompted this work? What would cause someone to want to do this again?
- Decisions: What choices were made and why? (These are the core of the skill)
- Steps: What was done, in what order?
- Inputs: What did the workflow need to know upfront?
- Outputs: What did it produce or change?
Separate decisions from documentation. The skill should encode what to decide and how — not reference material the model already knows.
2. Determine skill kind
| Signal | Kind |
|---|
| Workflow is personal, not tied to a specific codebase | Global (~/.agents/skills/<name>/) |
| Workflow only makes sense for contributors to this repo | Repo internal (.agents/skills/<name>/) |
| Workflow is meant to be installed by users of this package | Repo public (skills/<name>/) |
Ask the user if the context is ambiguous.
3. Draft the skill name and description
- Name: A short verb-noun or noun phrase that identifies the workflow (e.g.,
patch-skill, deploy-preview, sync-tokens)
- Description: ≤120 characters; must contain "Use this skill when"; specific enough to discriminate from other skills
Test the description: would an agent activate this skill in the right situation and NOT activate it otherwise?
4. Write SKILL.md
Use this structure:
---
name: <name>
description: Use this skill when <trigger>. <One-line summary.>
---
# <Title>
## When to use
<Precise trigger conditions>
## Steps
### 1. <Step title>
<Decision logic, not documentation>
### 2. <Step title>
...
## What NOT to do
- <Common mistake or anti-pattern>
Rules:
- Encode the WHY behind each step (the constraint or decision), not just the WHAT
- Flag deterministic steps as candidates for script extraction (see below)
- Keep each step focused on one decision or action
5. Flag script-extraction candidates
Mark any step that:
- Produces the same output given the same input (no judgment needed)
- Involves text manipulation, file I/O, or structured data processing
Add a TODO comment in the skill body:
<!-- TODO: extract to src/<domain>/... -->
6. Validate
Invoke audit-skill on the draft. Fix any CRITICAL findings before continuing.
Key checks to watch for:
- Q1: Does the description contain "Use this skill when"?
- Q5: Is the description ≤120 characters?
- Q6: Are there baked-in stack assumptions that should be detected at runtime?
7. Place and link
Use create-skill conventions:
npx skills add <path-to-skill>
ln -sf <path-to-skill> ~/.claude/skills/<name>