---
name: skill-forge
description: |
When Claude discovers a non-obvious solution, unusual pattern, or hard-won
insight during a session, automatically forge it into a new skill. Don't
just note the learning - create the actual skill file so future sessions
benefit immediately. This is the flywheel: work → discovery → skill → smarter
future sessions → repeat.
allowed-tools: |
bash: ls, cat, mkdir
file: read, write
---
# Skill Forge
Knowledge that stays in one session is wasted. When Claude discovers something
non-obvious - a debugging technique, a gotcha, a pattern that works - it should
become a skill automatically. Not "maybe document this later" but "forge it now."
This is the flywheel that makes the skill library self-improving.
## When To Activate
Trigger when:
- Claude solves a problem that took multiple attempts
- Claude discovers a non-obvious pattern or gotcha
- A debugging session reveals something others would hit
- User says "we should remember this" or "make this a skill"
- Claude catches itself about to make a mistake it's made before
- A workaround is found for a tool/library limitation
- The solution was counter-intuitive
Do NOT trigger for:
- Obvious solutions anyone would find
- Project-specific knowledge (not generalizable)
- Things already covered by existing skills
- Minor learnings not worth the overhead
## Instructions
### Step 1: Identify the Insight
Capture what was learned:
```
Discovery: [One sentence summary]
Context: [What task/problem led to this]
Why non-obvious: [Why someone else would miss this]
Generalizable: [YES/NO - is this useful beyond this specific case?]
```
If not generalizable, stop - add to breadcrumbs instead, not a skill.
### Step 2: Extract the Pattern
Generalize from the specific case:
```
Specific case: [What happened here]
General pattern: [The reusable insight]
Triggers: [When should future Claude activate this]
```
### Step 3: Draft the Skill
Create the skill structure:
```markdown
---
name: [kebab-case-name]
description: |
[2-3 sentence description that would trigger activation]
allowed-tools: |
[appropriate tools]
---
# [Skill Name]
[Why this skill exists - the problem it prevents]
## When To Activate
Trigger when:
- [Condition 1]
- [Condition 2]
## Instructions
### Step 1: [First step]
[Instructions]
### Step 2: [Second step]
[Instructions]
## NEVER
- [Anti-pattern 1]
## ALWAYS
- [Required behaviour 1]
## Examples
### Example 1: [Scenario]
[Concrete example]
What DOESN'T work:
- [Failed approach and why]
## Origin
Forged from: [Brief description of the session/problem that spawned this]
```
### Step 4: Write the Skill File
Create the skill directory and file:
```
skills/[skill-name]/SKILL.md
```
### Step 5: Confirm Creation
```
Skill forged: [skill-name]
Location: skills/[skill-name]/SKILL.md
Trigger: [When it will activate]
This skill will now be available in future sessions.
```
## Quality Checks
Before forging, verify:
| Check | Requirement |
|-------|-------------|
| Generalizable | Useful beyond this specific project |
| Non-obvious | Not something Claude would naturally do |
| Actionable | Clear instructions, not just "be careful" |
| Triggered | Clear conditions for when to activate |
| Distinct | Not duplicate of existing skill |
## Skill Naming Conventions
- Use kebab-case: `cache-invalidation`, not `cacheInvalidation`
- Be specific: `async-cleanup` not `async-stuff`
- Verb or noun that implies action: `trace-imports`, `validate-env`
- Avoid generic names: `helper`, `utils`, `misc`
## NEVER
- Forge project-specific knowledge as skills (use breadcrumbs)
- Create skills for obvious things
- Forge without the `` section (failures teach)
- Create duplicate skills - check existing ones first
- Forge trivial learnings (overhead not worth it)
## ALWAYS
- Include the origin story (what spawned this skill)
- Add `` documenting what doesn't work
- Make triggers specific and unambiguous
- Test that the skill makes sense out of context
- Keep skills focused (one insight per skill)
## Examples
### Example 1: Debugging Discovery
During debugging, Claude discovers that a React hook was causing infinite
re-renders because of object reference comparison.
```
Discovery: useEffect with object dependency causes infinite loops
Context: Debugging React component that kept re-rendering
Why non-obvious: Object looks the same but reference changes each render
Generalizable: YES - common React gotcha
Forging skill: react-dependency-check
```
Resulting skill would include:
- Triggers: React debugging, infinite loops, useEffect issues
- Instructions: Check dependency array for objects/arrays
- Failed attempts: "Tried adding object directly to deps - still loops"
### Example 2: API Gotcha
Claude discovers that an API returns different formats based on count
(single object vs array).
```
Discovery: API returns object for 1 result, array for multiple
Context: Parsing API response failed on single-result queries
Why non-obvious: Only manifests with exactly one result
Generalizable: YES - common API pattern
Forging skill: api-response-normalization
```
### Example 3: Not Worth Forging
Claude fixes a typo in a config file.
```
Discovery: Config had typo in key name
Generalizable: NO - specific to this project
[Not forging - adding to breadcrumbs instead]
```
## The Flywheel
```
Session 1: Struggle with problem X
↓
Solve it after 30 min
↓
Forge skill "handle-X"
↓
Session 2: Encounter similar problem
↓
skill-gate activates "handle-X"
↓
Solved in 2 min
↓
Time saved: 28 min
↓
Compound over hundreds of sessions
```
## Integration with Other Skills
- **learn-from-this**: Analyzes failures, skill-forge turns them into skills
- **retrospective**: Reviews session, skill-forge captures key learnings
- **breadcrumbs**: For project-specific notes (not generalizable)
- **skill-gate**: Ensures forged skills get activated
## Why This Skill Exists
Every session, Claude learns things. Most of that knowledge evaporates when
the session ends. Skill-forge captures it.
The goal isn't to document everything - it's to capture the non-obvious wins
that would otherwise need to be rediscovered. Each forged skill is future
time saved.
Build the library. Close the loop. Make the system smarter over time.