compound-learnings — Claude Code skill: what it does, how to install
Transforms ephemeral session learnings into permanent rules, skills, and hooks. It turns repeated coding patterns into lasting project capabilities.
npx skills add parcadei/Continuous-Claude-v3 --skill compound-learnings -a claude-codeWhat compound-learnings does
The skill parses markdown files inside $CLAUDE_PROJECT_DIR/.claude/cache/learnings/ to locate recurring workflows and friction points. It inspects sections covering techniques, takeaways, and failures, then compiles a frequency table across past sessions.
A decision tree determines how each pattern is preserved. Step-by-step procedures become executable skills in .claude/skills/, heuristics become markdown rules in .claude/rules/, and automated gates turn into shell hooks. It prompts for explicit user approval via AskUserQuestion before generating any file.
This skill depends entirely on pre-existing session files in .claude/cache/learnings/. If your setup does not save session notes to that directory, the skill has nothing to process.
What it helps with
- convert past session notes into permanent agent rules
- turn recurring multi-step workflows into executable skills
- generate shell hooks for automatic pre-commit or session checks
- identify repeated coding mistakes across historical sessions
Example prompts for the agent
- Review recent session learnings and suggest new rules
- Improve my setup based on recent work
- Turn learnings into skills and hooks
How to install compound-learnings
1Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill compound-learnings -a claude-code2Manually: put the files in place
~/.claude/skills/compound-learnings/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/compound-learnings/
1Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill compound-learnings -a codex2Manually: put the files in place
.agents/skills/compound-learnings/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill compound-learnings -a cursor2Manually: put the files in place
.cursor/skills/compound-learnings/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install parcadei/Continuous-Claude-v3 compound-learnings2Manually: put the files in place
.github/skills/compound-learnings/SKILL.md1Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill compound-learnings -a gemini-cli2Platform CLI
gemini skills install https://github.com/parcadei/Continuous-Claude-v3 --path .claude/skills/compound-learningsManually: put the files in place
.devin/skills/compound-learnings/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill compound-learnings -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about compound-learnings
How to install compound-learnings in Claude Code?
Run npx skills add parcadei/Continuous-Claude-v3 --skill compound-learnings -a claude-code in your terminal.
What does the compound-learnings skill do?
It extracts recurring patterns from .claude/cache/learnings/*.md files and drafts permanent rules, skills, hooks, or agent updates.
How many times must a pattern appear before an artifact is suggested?
Single occurrences are skipped. At two occurrences the skill flags it for review, and three or more occurrences trigger a direct recommendation to build the artifact.
Source text
SKILL.md · MIT
---
name: compound-learnings
description: Transform session learnings into permanent capabilities (skills, rules, agents). Use when asked to "improve setup", "learn from sessions", "compound learnings", or "what patterns should become skills".
allowed-tools: [Read, Glob, Grep, Write, Edit, Bash, AskUserQuestion]
---
# Compound Learnings
Transform ephemeral session learnings into permanent, compounding capabilities.
## When to Use
- "What should I learn from recent sessions?"
- "Improve my setup based on recent work"
- "Turn learnings into skills/rules"
- "What patterns should become permanent?"
- "Compound my learnings"
## Process
### Step 1: Gather Learnings
```bash
# List learnings (most recent first)
ls -t $CLAUDE_PROJECT_DIR/.claude/cache/learnings/*.md | head -20
# Count total
ls $CLAUDE_PROJECT_DIR/.claude/cache/learnings/*.md | wc -l
```
Read the most recent 5-10 files (or specify a date range).
### Step 2: Extract Patterns (Structured)
For each learnings file, extract entries from these specific sections:
| Section Header | What to Extract |
|----------------|-----------------|
| `## Patterns` or `Reusable techniques` | Direct candidates for rules |
| `**Takeaway:**` or `**Actionable takeaway:**` | Decision heuristics |
| `## What Worked` | Success patterns |
| `## What Failed` | Anti-patterns (invert to rules) |
| `## Key Decisions` | Design principles |
Build a frequency table as you go:
```markdown
| Pattern | Sessions | Category |
|---------|----------|----------|
| "Check artifacts before editing" | abc, def, ghi | debugging |
| "Pass IDs explicitly" | abc, def, ghi, jkl | reliability |
```
### Step 2b: Consolidate Similar Patterns
Before counting, merge patterns that express the same principle:
**Example consolidation:**
- "Artifact-first debugging"
- "Verify hook output by inspecting files"
- "Filesystem-first debugging"
→ All express: **"Observe outputs before editing code"**
Use the most general formulation. Update the frequency table.
### Step 3: Detect Meta-Patterns
**Critical step:** Look at what the learnings cluster around.
If >50% of patterns relate to one topic (e.g., "hooks", "tracing", "async"):
→ That topic may need a **dedicated skill** rather than multiple rules
→ One skill compounds better than five rules
Ask yourself: *"Is there a skill that would make all these rules unnecessary?"*
### Step 4: Categorize (Decision Tree)
For each pattern, determine artifact type:
```
Is it a sequence of commands/steps?
→ YES → SKILL (executable > declarative)
→ NO ↓
Should it run automatically on an event (SessionEnd, PostToolUse, etc.)?
→ YES → HOOK (automatic > manual)
→ NO ↓
Is it "when X, do Y" or "never do X"?
→ YES → RULE
→ NO ↓
Does it enhance an existing agent workflow?
→ YES → AGENT UPDATE
→ NO → Skip (not worth capturing)
```
**Artifact Type Examples:**
| Pattern | Type | Why |
|---------|------|-----|
| "Run linting before commit" | Hook (PreToolUse) | Automatic gate |
| "Extract learnings on session end" | Hook (SessionEnd) | Automatic trigger |
| "Debug hooks step by step" | Skill | Manual sequence |
| "Always pass IDs explicitly" | Rule | Heuristic |
### Step 5: Apply Signal Thresholds
| Occurrences | Action |
|-------------|--------|
| 1 | Note but skip (unless critical failure) |
| 2 | Consider - present to user |
| 3+ | Strong signal - recommend creation |
| 4+ | Definitely create |
### Step 6: Propose Artifacts
Present each proposal in this format:
```markdown
---
## Pattern: [Generalized Name]
**Signal:** [N] sessions ([list session IDs])
**Category:** [debugging / reliability / workflow / etc.]
**Artifact Type:** Rule / Skill / Agent Update
**Rationale:** [Why this artifact type, why worth creating]
**Draft Content:**
\`\`\`markdown
[Actual content that would be written to file]
\`\`\`
**File:** `.claude/rules/[name].md` or `.claude/skills/[name]/SKILL.md`
---
```
Use `AskUserQuestion` to get approval for each artifact (or batch approval).
### Step 7: Create Approved Artifacts
#### For Rules:
```bash
# Write to rules directory
cat > $CLAUDE_PROJECT_DIR/.claude/rules/<name>.md << 'EOF'
# Rule Name
[Context: why this rule exists, based on N sessions]
## Pattern
[The reusable principle]
## DO
- [Concrete action]
## DON'T
- [Anti-pattern]
## Source Sessions
- [session-id-1]: [what happened]
- [session-id-2]: [what happened]
EOF
```
#### For Skills:
Create `.claude/skills/<name>/SKILL.md` with:
- Frontmatter (name, description, allowed-tools)
- When to Use
- Step-by-step instructions (executable)
- Examples from the learnings
Add triggers to `skill-rules.json` if appropriate.
#### For Hooks:
Create shell wrapper + TypeScript handler:
```bash
# Shell wrapper
cat > $CLAUDE_PROJECT_DIR/.claude/hooks/<name>.sh << 'EOF'
#!/bin/bash
set -e
cd "$CLAUDE_PROJECT_DIR/.claude/hooks"
cat | node dist/<name>.mjs
EOF
chmod +x $CLAUDE_PROJECT_DIR/.claude/hooks/<name>.sh
```
Then create `src/<name>.ts`, build with esbuild, and register in `settings.json`:
```json
{
"hooks": {
"EventName": [{
"hooks": [{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/<name>.sh"
}]
}]
}
}
```
#### For Agent Updates:
Edit existing agent in `.claude/agents/<name>.md` to add the learned capability.
### Step 8: Summary Report
```markdown
## Compounding Complete
**Learnings Analyzed:** [N] sessions
**Patterns Found:** [M]
**Artifacts Created:** [K]
### Created:
- Rule: `explicit-identity.md` - Pass IDs explicitly across boundaries
- Skill: `debug-hooks` - Hook debugging workflow
### Skipped (insufficient signal):
- "Pattern X" (1 occurrence)
**Your setup is now permanently improved.**
```
## Quality Checks
Before creating any artifact:
1. **Is it general enough?** Would it apply in other projects?
2. **Is it specific enough?** Does it give concrete guidance?
3. **Does it already exist?** Check `.claude/rules/` and `.claude/skills/` first
4. **Is it the right type?** Sequences → skills, heuristics → rules
## Files Reference
- Learnings: `.claude/cache/learnings/*.md`
- Skills: `.claude/skills/<name>/SKILL.md`
- Rules: `.claude/rules/<name>.md`
- Hooks: `.claude/hooks/<name>.sh` + `src/<name>.ts` + `dist/<name>.mjs`
- Agents: `.claude/agents/<name>.md`
- Skill triggers: `.claude/skills/skill-rules.json`
- Hook registration: `.claude/settings.json` → `hooks` section
© parcadei · MIT · parcadei/Continuous-Claude-v3