extract
Extract Skill
Typically runs automatically via SessionStart hook.
Process pending learning extractions from previous sessions.
How It Works
The SessionStart hook runs:
ao extract
This checks for queued extractions and outputs prompts for Claude to process.
Manual Execution
Given /extract:
Step 1: Check for Pending Extractions
ao extract 2>/dev/null
Or check the pending queue:
cat .agents/ao/pending.jsonl 2>/dev/null | head -5
Step 2: Process Each Pending Item
For each queued session:
- Read the session summary
- Extract actionable learnings
- Write to
.agents/learnings/
Step 3: Write Learnings
Write to: .agents/learnings/YYYY-MM-DD-<session-id>.md
# Learning: <Short Title>
**ID**: L1
**Category**: <debugging|architecture|process|testing|security>
**Confidence**: <high|medium|low>
## What We Learned
<1-2 sentences describing the insight>
## Why It Matters
<1 sentence on impact/value>
## Source
Session: <session-id>
Step 3.5: Validate Learnings
After writing learning files, validate each has required fields:
- Scan newly written files:
ls -t .agents/learnings/YYYY-MM-DD-*.md 2>/dev/null | head -5
-
For each file, check required fields:
- Heading: File must start with
# Learning: <title>(non-empty title) - Category: Must contain
**Category**: <value>where value is one of:debugging,architecture,process,testing,security - Confidence: Must contain
**Confidence**: <value>where value is one of:high,medium,low - Content: Must contain a
## What We Learnedsection with at least one non-empty line after the heading
- Heading: File must start with
-
Report validation results:
- For each valid learning: "✓ : valid"
- For each invalid learning: "⚠ : missing " (list each missing field)
-
Do NOT delete or retry invalid learnings. Log the warning and proceed. Invalid learnings are still better than no learnings — the warning helps identify extraction quality issues over time.
Step 4: Clear the Queue
ao extract --clear 2>/dev/null
Step 5: Report Completion
Tell the user:
- Number of learnings extracted
- Key insights
- Location of learning files
The Knowledge Loop
Session N ends:
→ ao forge --last-session --queue
→ Session queued in pending.jsonl
Session N+1 starts:
→ ao extract (this skill)
→ Claude processes the queue
→ Writes to .agents/learnings/
→ Validates required fields
→ Loop closed
Key Rules
- Runs automatically - usually via hook
- Process the queue - don't leave extractions pending
- Be specific - actionable learnings, not vague observations
- Close the loop - extraction completes the knowledge cycle
Examples
SessionStart Hook Invocation
Hook triggers: session-start.sh runs at session start
What happens:
- Hook calls
ao extract 2>/dev/null - CLI outputs queued session IDs and prompts
- Agent processes each pending extraction
- Agent writes learnings to
.agents/learnings/<date>-<session>.md - Agent validates required fields and reports results
- Hook calls
ao extract --clearto empty queue
Result: Prior session knowledge automatically extracted at session start without user action.
Manual Extraction Trigger
User says: /extract or "extract learnings from last session"
What happens:
- Agent checks pending queue with
ao extract - Agent reads session summaries from queue
- Agent extracts decisions, learnings, failures
- Agent writes to
.agents/learnings/with proper structure - Agent validates fields (category, confidence, content)
- Agent clears queue and reports completion
Result: Pending extractions processed manually, queue cleared, learnings indexed.
Troubleshooting
| Problem | Cause | Solution |
|---|---|---|
| No pending extractions found | Queue empty or ao CLI unavailable | Check .agents/ao/pending.jsonl exists; verify ao CLI installed |
| Invalid learning warning | Missing category/confidence/content | Review learning file, add missing fields; DO NOT delete |
| extraction --clear fails | CLI not available or permission error | Manually truncate .agents/ao/pending.jsonl as fallback |
| Duplicate extractions | Queue not cleared after processing | Always run ao extract --clear after writing learnings |