- Add CSS components: .page-meta badges, .domain-header, .install-banner - Fix invisible tab navigation (explicit color for light/dark modes) - Rewrite generate-docs.py with design system templates - Domain indexes: centered headers with icons, install banners, grid cards - Skill pages: pill badges (domain, skill ID, source), install commands - Agent/command pages: type badges with domain icons - Regenerate all 210 pages (180 skills + 15 agents + 15 commands) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
190 lines
5.3 KiB
Markdown
190 lines
5.3 KiB
Markdown
---
|
|
title: "/si:extract — Create Skills from Patterns"
|
|
description: "/si:extract — Create Skills from Patterns - Claude Code skill from the Engineering - Core domain."
|
|
---
|
|
|
|
# /si:extract — Create Skills from Patterns
|
|
|
|
<div class="page-meta" markdown>
|
|
<span class="meta-badge">:material-code-braces: Engineering - Core</span>
|
|
<span class="meta-badge">:material-identifier: `extract`</span>
|
|
<span class="meta-badge">:material-github: <a href="https://github.com/alirezarezvani/claude-skills/tree/main/engineering-team/self-improving-agent/skills/extract/SKILL.md">Source</a></span>
|
|
</div>
|
|
|
|
<div class="install-banner" markdown>
|
|
<span class="install-label">Install:</span> <code>claude /plugin install engineering-skills</code>
|
|
</div>
|
|
|
|
|
|
Transforms a recurring pattern or debugging solution into a standalone, portable skill that can be installed in any project.
|
|
|
|
## Usage
|
|
|
|
```
|
|
/si:extract <pattern description> # Interactive extraction
|
|
/si:extract <pattern> --name docker-m1-fixes # Specify skill name
|
|
/si:extract <pattern> --output ./skills/ # Custom output directory
|
|
/si:extract <pattern> --dry-run # Preview without creating files
|
|
```
|
|
|
|
## When to Extract
|
|
|
|
A learning qualifies for skill extraction when ANY of these are true:
|
|
|
|
| Criterion | Signal |
|
|
|---|---|
|
|
| **Recurring** | Same issue across 2+ projects |
|
|
| **Non-obvious** | Required real debugging to discover |
|
|
| **Broadly applicable** | Not tied to one specific codebase |
|
|
| **Complex solution** | Multi-step fix that's easy to forget |
|
|
| **User-flagged** | "Save this as a skill", "I want to reuse this" |
|
|
|
|
## Workflow
|
|
|
|
### Step 1: Identify the pattern
|
|
|
|
Read the user's description. Search auto-memory for related entries:
|
|
|
|
```bash
|
|
MEMORY_DIR="$HOME/.claude/projects/$(pwd | sed 's|/|%2F|g; s|%2F|/|; s|^/||')/memory"
|
|
grep -rni "<keywords>" "$MEMORY_DIR/"
|
|
```
|
|
|
|
If found in auto-memory, use those entries as source material. If not, use the user's description directly.
|
|
|
|
### Step 2: Determine skill scope
|
|
|
|
Ask (max 2 questions):
|
|
- "What problem does this solve?" (if not clear)
|
|
- "Should this include code examples?" (if applicable)
|
|
|
|
### Step 3: Generate skill name
|
|
|
|
Rules for naming:
|
|
- Lowercase, hyphens between words
|
|
- Descriptive but concise (2-4 words)
|
|
- Examples: `docker-m1-fixes`, `api-timeout-patterns`, `pnpm-workspace-setup`
|
|
|
|
### Step 4: Create the skill files
|
|
|
|
**Spawn the `skill-extractor` agent** for the actual file generation.
|
|
|
|
The agent creates:
|
|
|
|
```
|
|
<skill-name>/
|
|
├── SKILL.md # Main skill file with frontmatter
|
|
├── README.md # Human-readable overview
|
|
└── reference/ # (optional) Supporting documentation
|
|
└── examples.md # Concrete examples and edge cases
|
|
```
|
|
|
|
### Step 5: SKILL.md structure
|
|
|
|
The generated SKILL.md must follow this format:
|
|
|
|
```markdown
|
|
---
|
|
name: "skill-name"
|
|
description: "<one-line description>. Use when: <trigger conditions>."
|
|
---
|
|
|
|
# <Skill Title>
|
|
|
|
> One-line summary of what this skill solves.
|
|
|
|
## Quick Reference
|
|
|
|
| Problem | Solution |
|
|
|---------|----------|
|
|
| {{problem 1}} | {{solution 1}} |
|
|
| {{problem 2}} | {{solution 2}} |
|
|
|
|
## The Problem
|
|
|
|
{{2-3 sentences explaining what goes wrong and why it's non-obvious.}}
|
|
|
|
## Solutions
|
|
|
|
### Option 1: {{Name}} (Recommended)
|
|
|
|
{{Step-by-step with code examples.}}
|
|
|
|
### Option 2: {{Alternative}}
|
|
|
|
{{For when Option 1 doesn't apply.}}
|
|
|
|
## Trade-offs
|
|
|
|
| Approach | Pros | Cons |
|
|
|----------|------|------|
|
|
| Option 1 | {{pros}} | {{cons}} |
|
|
| Option 2 | {{pros}} | {{cons}} |
|
|
|
|
## Edge Cases
|
|
|
|
- {{edge case 1 and how to handle it}}
|
|
- {{edge case 2 and how to handle it}}
|
|
```
|
|
|
|
### Step 6: Quality gates
|
|
|
|
Before finalizing, verify:
|
|
|
|
- [ ] SKILL.md has valid YAML frontmatter with `name` and `description`
|
|
- [ ] `name` matches the folder name (lowercase, hyphens)
|
|
- [ ] Description includes "Use when:" trigger conditions
|
|
- [ ] Solutions are self-contained (no external context needed)
|
|
- [ ] Code examples are complete and copy-pasteable
|
|
- [ ] No project-specific hardcoded values (paths, URLs, credentials)
|
|
- [ ] No unnecessary dependencies
|
|
|
|
### Step 7: Report
|
|
|
|
```
|
|
✅ Skill extracted: {{skill-name}}
|
|
|
|
Files created:
|
|
{{path}}/SKILL.md ({{lines}} lines)
|
|
{{path}}/README.md ({{lines}} lines)
|
|
{{path}}/reference/examples.md ({{lines}} lines)
|
|
|
|
Install: /plugin install (copy to your skills directory)
|
|
Publish: clawhub publish {{path}}
|
|
|
|
Source: MEMORY.md entries at lines {{n, m, ...}} (retained — the skill is portable, the memory is project-specific)
|
|
```
|
|
|
|
## Examples
|
|
|
|
### Extracting a debugging pattern
|
|
|
|
```
|
|
/si:extract "Fix for Docker builds failing on Apple Silicon with platform mismatch"
|
|
```
|
|
|
|
Creates `docker-m1-fixes/SKILL.md` with:
|
|
- The platform mismatch error message
|
|
- Three solutions (build flag, Dockerfile, docker-compose)
|
|
- Trade-offs table
|
|
- Performance note about Rosetta 2 emulation
|
|
|
|
### Extracting a workflow pattern
|
|
|
|
```
|
|
/si:extract "Always regenerate TypeScript API client after modifying OpenAPI spec"
|
|
```
|
|
|
|
Creates `api-client-regen/SKILL.md` with:
|
|
- Why manual regen is needed
|
|
- The exact command sequence
|
|
- CI integration snippet
|
|
- Common failure modes
|
|
|
|
## Tips
|
|
|
|
- Extract patterns that would save time in a *different* project
|
|
- Keep skills focused — one problem per skill
|
|
- Include the error messages people would search for
|
|
- Test the skill by reading it without the original context — does it make sense?
|