learn-from-session
Skill78 starsChanged 5 months agoMITView on GitHub
Analyze Claude Code sessions to learn what went right/wrong and suggest high-confidence improvements to skills. Use when asked to analyze a session, learn from a session, or review workflow effectiveness.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- siostechlabs/brainygym-skillstheir own version, first seen Oct 25, 2026
- notacp/learn-from-sessiontheir own version, first seen Aug 1, 2026
- Arcadi4/skillstheir own version, first seen Jul 6, 2026
- Erlemar/cayley-puzzlestheir own version, first seen Jul 5, 2026
- Erlemar/dswoktheir own version, first seen Jun 22, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- Erlemar/dswok★ 33same name
- notacp/learn-from-session★ 17same name
- Arcadi4/skills★ 4same name
- Erlemar/cayley-puzzles★ 0same name
- siostechlabs/brainygym-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- harden-task-fileSkill
- sync-claude-code-pluginsSkill
- sync-toolsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
18 rules. 0 are common, 16 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
16
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
Signal quality bar: Only recommend changes that would have prevented specific rework in the session.
- Distinctive: line 48
Use Bash to find:
- Distinctive: line 53
If file not found: Ask user to provide the session file path directly or check if session ID is correct.
- Distinctive: line 125
CRITICAL: Write to log IMMEDIATELY after each finding—never batch writes.
- Distinctive: line 137
Expansion: When skills are discovered, add one todo per skill:
- Very specific: line 161
Use jq to parse:
- Distinctive: line 193
Only flag as "skipped" if evidence suggests the skill would have prevented issues that occurred.
- Distinctive: line 207
Test failures followed by code changes
- Distinctive: line 220
Write ALL iteration findings to log file NOW, before proceeding to 3.2.
- Distinctive: line 239
Write ALL correction findings to log file NOW, before proceeding to 3.3.
- Distinctive: line 262
Write ALL deviation findings to log file NOW, before proceeding to 3.4.
- Distinctive: line 282
Write ALL missing question findings to log file NOW, before proceeding to 3.5.
- Distinctive: line 302
Write ALL post-implementation findings to log file NOW, before proceeding to Phase 4.
- Distinctive: line 342
Test files that document expected behavior
- Distinctive: line 356
Write discovered skills to log file NOW, before proceeding to 4.2.
- Distinctive: line 423
Write skill gap findings to log file after analyzing EACH skill—never batch multiple skills into one write.
- Distinctive: line 431
CRITICAL: Use the Read tool to read the FULL analysis log file NOW before any synthesis.
- Very specific: line 438
Action: Use Read("/tmp/session-analysis-{id}-{timestamp}.md") to read the entire log file.
“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
User request: $ARGUMENTS
Analyze a Claude Code session to identify what went well and what could be improved, then suggest high-confidence fixes to skills in this repository.
Input formats:
- Session ID (UUID):
184078b7-2609-46e0-a1f2-bb42367a8d34 - Session file path:
~/.claude/projects/.../session-id.jsonl - Inline commentary: Text description of what happened
Output: High-confidence issues only with evidence-based suggestions for skill improvements.
Signal quality bar: Only recommend changes that would have prevented specific rework in the session. A fix is high-signal when ALL of:
- You can point to exact message numbers where rework occurred
- The skill change would have triggered BEFORE that rework
- Following the change would have produced correct output initially
Definition - high-signal fix: A skill change that passes the 3/3 counterfactual test (see Phase 5.2).
Phase 1: Parse Input & Setup
1.1 Identify input type
| Input Pattern | Type | Action |
UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) | Session ID | Find and read session file |
Path ending in .jsonl | Session file | Read directly |
| Other text | Commentary | Analyze inline, may reference sessions |
1.2 Locate session file (if session ID)
Session files are stored at:
~/.claude/projects/{project-path-encoded}/{session-id}.jsonlNote: {project-path-encoded} replaces path separators with URL-safe encoding (e.g., /home/user/myproject becomes -home-user-myproject). Don't rely on exact path structure—use find instead.
Use Bash to find:
find ~/.claude/projects -name "*{session-id}*" -type f 2>/dev/nullIf file not found: Ask user to provide the session file path directly or check if session ID is correct.
1.3 Create analysis log
Path: /tmp/session-analysis-{session-id-short}-{timestamp}.md
Purpose: External memory that persists findings beyond LLM working memory. Write to this file IMMEDIATELY after each discovery—never batch multiple findings into one write.
# Session Analysis Log
Session: {id or "inline commentary"}
Started: {timestamp}
Status: IN_PROGRESS
---
## Session Overview
<!-- Write immediately after Phase 2 parsing -->
**Initial request**:
**Skills invoked**:
**Outcome**:
**Session length**:
---
## Pattern Detection
### Iterations Found
<!-- Write immediately after detecting iterations - before moving to corrections -->
### User Corrections Found
<!-- Write immediately after detecting corrections - before moving to deviations -->
### Workflow Deviations Found
<!-- Write immediately after detecting deviations - before moving to missing questions -->
### Missing Questions Found
<!-- Write immediately after detecting missing questions - before moving to post-impl -->
### Post-Implementation Fixes Found
<!-- Write immediately after detecting post-impl fixes - before skill comparison -->
---
## Skill Comparison
### Skills Discovered
<!-- Write immediately after discovering which skills were used -->
### Skill: {name}
<!-- Write immediately after analyzing EACH skill - don't batch -->
---
## Potential Issues
<!-- Write each issue as identified during comparison -->
---
## Counterfactual Analysis
<!-- Write results of 3/3 test for each issue -->
---
## Final Recommendations
<!-- Populated after refresh step -->1.4 Create todo list
CRITICAL: Write to log IMMEDIATELY after each finding—never batch writes.
- [ ] Setup: Create log file, parse session, write overview
- [ ] Pattern detection: iterations, corrections, deviations, missing questions, post-impl fixes (write each to log)
- [ ] Skill discovery: extract skills, locate files, write to log
- [ ] (expand: "Analyze {skill}" for each skill found)
- [ ] Refresh context: read FULL analysis log
- [ ] Counterfactual analysis: test each issue, write recommendations
- [ ] Output final reportExpansion: When skills are discovered, add one todo per skill:
- [ ] Analyze {skill-name} skill + write findings to logWhy write-after-each-step matters: By synthesis, early findings suffer context rot. Writing externalizes findings to a file that persists. The refresh step moves ALL findings to context end (highest attention zone).
Phase 2: Parse Session
2.1 Session file structure
Claude Code sessions are JSONL files with these record types:
| Type | Contains |
user | User messages, message.content field |
assistant | Claude responses, tool calls, thinking |
system | System events, commands, hooks |
file-history-snapshot | File state tracking |
2.2 Extract key events
Use jq to parse:
# User messages
cat {session-file} | jq -r 'select(.type == "user") | .message.content' 2>/dev/null
# Tool calls
cat {session-file} | jq -r 'select(.type == "assistant") | .message.content | if type == "array" then .[] | select(.type == "tool_use") | .name else empty end' 2>/dev/null
# Skill invocations
grep -o '"skill":"[^"]*"' {session-file} | sort | uniq -c2.3 Build session overview
Extract and log:
- Initial request: First user message (the goal)
- Workflow used: Which skills invoked (
/spec,/plan,/implement, etc.) - Workflow skipped: Skills that would typically apply but weren't invoked (see table below)
- Outcome: Success, partial, or required rework
- Session length: Message count, duration if available
Expected skills by task type (use to detect skipped workflows):
| Task Indicators in Request | Expected Skills |
| "build", "implement", "create feature", "add" | spec → plan → implement |
| "fix bug", "debug", "not working" | bugfix |
| "review", "check", "audit" | review (or specific review-*) |
| "refactor", "improve", "optimize" | plan → implement |
| Multi-file changes (3+ files likely) | plan before implement |
Only flag as "skipped" if evidence suggests the skill would have prevented issues that occurred.
Phase 3: Pattern Detection
Analyze the session for these patterns. Each pattern has evidence requirements.
3.1 Iteration patterns (things that didn't work first time)
Evidence required: Same file edited multiple times, OR error → fix → retry sequence
Look for:
- TypeScript errors followed by fixes
- Test failures followed by code changes
- Lint errors followed by formatting changes
- Same function/file edited more than once with different intent (not additive changes, but corrections)
Log format:
### Iteration: {description}
- Files affected: {list}
- Attempts: {count}
- Root cause: {why it didn't work first time}
- Potential skill gap: {what could have prevented this}Write ALL iteration findings to log file NOW, before proceeding to 3.2.
3.2 User corrections ("no, I meant...")
Evidence required: User message containing correction language
Correction indicators:
- "no", "not what I meant", "actually", "instead", "I meant"
- "let's go back", "undo", "revert"
- "that's wrong", "incorrect"
Log format:
### User Correction: {what was corrected}
- Original action: {what Claude did}
- User feedback: {correction text}
- Missing context: {what Claude should have asked/known}Write ALL correction findings to log file NOW, before proceeding to 3.3.
3.3 Workflow deviations
Evidence required: Expected workflow step skipped or out-of-order
Check for:
- Multi-phase skill invoked but phases skipped (read skill to know expected phases)
- Skill with prerequisites invoked without those prerequisites (e.g., implementation without planning)
- Ordered steps executed out of order
- Verification/validation steps skipped before proceeding
How to detect: Compare skill's documented phases against actual session sequence.
Log format:
### Workflow Deviation: {what was skipped/reordered}
- Skill: {which skill's workflow}
- Expected flow: {phases from skill definition}
- Actual flow: {what happened in session}
- Impact: {did this cause issues later?}Write ALL deviation findings to log file NOW, before proceeding to 3.4.
3.4 Missing questions
Evidence required: Information discovered during implementation that should have been asked upfront
Look for:
- Design decisions made mid-implementation
- Assumptions that were later corrected
- "The user confirmed..." appearing late in session
- Post-implementation "actually, let's change..." patterns
Log format:
### Missing Question: {what should have been asked}
- Discovered at: {phase where it came up}
- Impact: {rework required}
- Skill gap: {which skill should have asked this}Write ALL missing question findings to log file NOW, before proceeding to 3.5.
3.5 Post-implementation fixes
Evidence required: Changes made AFTER "implementation complete" or PR creation
Look for:
- Commits/changes after PR URL appears
- Refactoring after "done" or "complete" messages
- Review findings that required code changes
- User requesting changes after seeing "finished"
Log format:
### Post-Implementation Fix: {what was fixed}
- Original implementation: {what was done}
- Fix required: {what changed}
- Should have been caught by: {which phase/skill}Write ALL post-implementation findings to log file NOW, before proceeding to Phase 4.
Phase 4: Skill Comparison
4.1 Discover skills used in session
Step 1: Extract skill invocations from session:
# Find all Skill tool invocations (handles both "skill" and skill names in tool calls)
grep -oE '"skill"\s*:\s*"[^"]*"' {session-file} | sort | uniq -c
# Find slash command patterns in user messages (alphanumeric with hyphens)
grep -oE '/[a-zA-Z][a-zA-Z0-9-]*' {session-file} | sort | uniq -c
# Find Skill tool calls with plugin:skill format
grep -oE 'Skill\s*\(\s*"[^"]+:[^"]+"' {session-file} | sort | uniq -cStep 2: Find ALL relevant files for each skill.
# Find skill definition
find . -path "*/skills/{skill-name}/SKILL.md" -type f
# Find related agents (look in same plugin's agents/ folder)
PLUGIN_DIR=$(dirname $(dirname {skill-path}))
ls "$PLUGIN_DIR/agents/" 2>/dev/null
# Find hooks that might affect this skill
grep -r "{skill-name}" --include="*.py" */hooks/ 2>/dev/nullThis discovers:
- The SKILL.md definition itself
- Agents the skill spawns (e.g., plan-verifier for /plan)
- Hooks that intercept skill behavior (e.g., Stop hook)
- Shared utilities the skill depends on
- Test files that document expected behavior
Step 3: Log discovered skills with full context:
## Skills Used in Session
### {skill-name}
- **SKILL.md**: {path}
- **Related agents**: {list from explorer}
- **Related hooks**: {list from explorer}
- **Invoked**: {count} timesWrite discovered skills to log file NOW, before proceeding to 4.2.
4.2 Extract actionable rules from each skill
For each skill file, extract:
Rule indicators (look for these patterns):
must,should,never,always→ mandatory behaviors## Phase N:or### Step N:→ workflow phasesquestions:orAskUserQuestion→ required user prompts| Condition | Action |tables → decision rules**CRITICAL**,**IMPORTANT**→ high-priority rules- [ ]todo templates → expected workflow stepsAcceptance:orValidation:→ verification requirements
Extract and log:
### Skill: {name}
**File**: {path}
**Mandatory behaviors**:
- {rule with line number}
**Workflow phases**:
1. {phase name} - expected outputs: {list}
**Required questions** (when applicable):
- {question topic}
**Verification steps**:
- {what should be checked}4.3 Compare documented vs actual
For each skill used in the session:
| Aspect | Documented | Actual | Gap? | Impact |
| Questions asked | {from skill} | {from session} | {Y/N} | {would have prevented X} |
| Phases followed | {from skill} | {from session} | {Y/N} | {would have caught Y} |
| Validations run | {from skill} | {from session} | {Y/N} | {would have avoided Z} |
| Outputs produced | {from skill} | {from session} | {Y/N} | {required later but missing} |
Key comparison questions:
- Did the skill ask all documented questions? If not, did missing answers cause issues?
- Were all phases executed in order? If skipped, did it matter?
- Were validations run? If skipped, did bugs slip through?
- Did outputs match documented format? If not, did downstream steps suffer?
4.4 Log skill gaps with impact
### Skill Gap: {skill name}
- **Rule violated**: {what skill says to do, with line reference}
- **What happened**: {actual behavior in session}
- **Evidence**: {specific session content showing gap}
- **Impact**: {did this cause iteration/correction/rework?}
- **Counterfactual**: {if rule was followed, would outcome differ?}
- **Confidence**: HIGH | MEDIUM | LOWOnly log gaps where:
- Evidence is clear (specific session content)
- Impact is documented (caused measurable problem)
- Counterfactual is plausible (fix would have helped)
Write skill gap findings to log file after analyzing EACH skill—never batch multiple skills into one write.
Phase 5: Synthesize Recommendations
5.1 Refresh context (non-negotiable)
CRITICAL: Use the Read tool to read the FULL analysis log file NOW before any synthesis.
Why this step exists: By this point, findings from Phase 3 (pattern detection) have suffered context rot—they're in the "lost middle" of conversation. The log file contains ALL findings written throughout this workflow. Reading it:
- Moves ALL findings to context END (highest attention zone)
- Converts holistic synthesis (LLMs are bad at this) into dense recent context (LLMs are good at this)
- Restores details that would otherwise be missed
Action: Use Read("/tmp/session-analysis-{id}-{timestamp}.md") to read the entire log file. Do NOT proceed to 5.2 until this is complete.
5.2 Counterfactual analysis (the high-signal filter)
For each potential issue, answer these three questions with specific evidence:
| Test | Question | Evidence Required |
| T1: Rework identified | Can you cite specific message numbers where rework occurred? | Message #X shows error, #Y shows fix |
| T2: Intervention point | At which earlier message would the skill change have triggered? | Message #Z is where skill phase X runs |
| T3: Trigger conditions met | Did the session content at that point contain info that would activate the change? | Quote the text that would trigger it |
Scoring:
| Score | Criteria | Action |
| 3/3 | All three answered with specific evidence | HIGH confidence → Include |
| 2/3 | One test lacks specific evidence | MEDIUM confidence → Deferred section |
| 1/3 or 0/3 | Multiple tests lack evidence | LOW confidence → Discard |
Example counterfactual:
Issue: Plan skill should ask about time filtering
T1 (Rework): Message #47 adds 90-day filter, #48 user says "yes that's what I meant"
T2 (Intervention): Message #12 is plan phase, "Files to modify" section
T3 (Trigger): Message #5 user wrote "recent refunds" - this would trigger temporal scope question
Score: 3/3 → HIGH confidence5.3 Additional disqualifiers
Even with 3/3 counterfactual score, discard if:
- Compliance failure: Skill already documents this; it just wasn't followed
- One-off context: Unusual situation unlikely to recur (e.g., user typo)
- Scope creep: Fix would make skill too complex for marginal benefit
- Side effects: Fix would break other documented behavior
5.4 Format recommendations
For each HIGH confidence issue:
## Issue: {short title}
**Confidence**: HIGH
**Counterfactual score**: 3/3
### Evidence
{Quote or describe specific session content}
### What Happened
{Brief description of the problem}
### Root Cause
{Why the current skill didn't prevent this - be specific about what's missing}
### Counterfactual
- **Iteration avoided**: {which rework/correction would NOT have happened}
- **Intervention point**: {exact moment the fix would have triggered}
- **Trigger condition**: {why the fix would have applied to this session}
### Suggested Fix
**File**: {skill file path}
**Section**: {phase/section name}
**Line**: ~{approximate line number}
**Current behavior**:
{What the skill does now}
**Proposed behavior**:
{What the skill should do instead}
```{code block showing the diff if applicable}```
### Risk Assessment
- **Side effects**: {could this break other flows? NO/LOW/MEDIUM/HIGH}
- **Complexity added**: {minimal/moderate/significant}
- **Test approach**: {how to verify the fix works}Phase 6: Output
6.1 Final report structure
# Session Analysis: {session id or description}
## Summary
- **Session outcome**: {success/partial/rework needed}
- **Workflow used**: {skills invoked}
- **Iterations observed**: {count of retry/fix cycles}
- **High-signal fixes**: {count} (3/3 counterfactual score)
## What Went Well
{List of things that worked correctly - be specific about which skill behaviors succeeded}
## Iteration Timeline
{Chronological list of corrections/retries observed, with timestamps if available}
1. {time}: {what was attempted}
2. {time}: {what went wrong}
3. {time}: {how it was fixed}
## High-Confidence Improvements
### Fix 1: {title}
{Full format from 5.4}
### Fix 2: {title}
...
## Deferred (Partial Counterfactual Match)
{Issues that scored 2/3 - might help but not definitively causal}
| Issue | Missing Criterion | Why Deferred |
|-------|-------------------|--------------|
| {title} | {which of the 3 failed} | {brief explanation} |
## Not Actionable
{Issues that scored 1/3 or 0/3, or hit disqualifiers - briefly note for transparency}
---
Analysis log: {log file path}6.2 Return report
Output the final report. User can then decide which fixes to implement.
Key Principles
| Principle | Rule |
| Counterfactual-driven | Every fix must pass the 3/3 counterfactual test |
| Evidence-based | Quote or cite specific session content |
| Iteration-focused | Primary signal = things that required retry/correction |
| Skill-focused | Goal is improving skills, not critiquing user or session |
| Log-driven | Write findings to log as you go, refresh before synthesis |
Confidence Criteria (Counterfactual-Based)
| Score | Test Results | Action |
| 3/3 | Would avoid iteration + Name exact moment + Conditions would trigger | HIGH → Include |
| 2/3 | Two of three | MEDIUM → Deferred section |
| 1/3 | One of three | LOW → Not Actionable section |
| 0/3 | None | Discard entirely |
Disqualifiers (Even at 3/3)
| Disqualifier | Why It Filters Out |
| Compliance failure | Skill already covers this - LLM didn't follow |
| One-off context | Unusual situation unlikely to recur |
| Scope creep | Fix adds complexity disproportionate to benefit |
| Side effects | Fix would break other documented behaviors |
Error Handling
| Error | Response |
| Session file not found | Ask user to provide path directly |
| Malformed JSONL (parse error) | Skip malformed lines, note in report |
| Skill file not found | Note as "skill definition unavailable" in comparison |
| jq not available | Use grep/sed fallback patterns to extract JSON fields |
| Empty session | Report "Session contains no analyzable content" |
Never Do
- Suggest changes without specific session evidence
- Include fixes that score <3/3 in main recommendations
- Skip the counterfactual test ("it seems like it would help")
- Skip reading the full analysis log before synthesis
- Critique user behavior (focus on skill gaps, not user mistakes)
- Suggest fixes that would break other documented behavior
- Recommend changes to skills that weren't used in the session
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

