.claude/skills/insight-extraction/SKILL.md
Extract actionable insights from completed coding sessions. Use when a session completes to capture learnings for future sessions.
npx skillsauth add oimiragieo/agent-studio insight-extractionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Analyze completed coding sessions and extract structured learnings for the memory system. Insights help future sessions avoid mistakes, follow established patterns, and understand the codebase faster.
Core principle: Extract ACTIONABLE knowledge, not logs. Every insight should help a future session do something better.
Always:
Exceptions:
NO SESSION END WITHOUT INSIGHT EXTRACTION FOR NON-TRIVIAL WORK
Non-trivial sessions should capture learnings before context is lost.
To extract insights, you need:
# Get the diff of changes
git diff HEAD~1 --stat
git diff HEAD~1
# Get commit message
git log -1 --pretty=format:"%s%n%n%b"
# Get list of modified files
git diff HEAD~1 --name-only
For each modified file, extract:
Good example:
{
"path": "src/stores/terminal-store.ts",
"purpose": "Zustand store managing terminal session state with immer middleware",
"changes_made": "Added setAssociatedTask action to link terminals with tasks",
"patterns_used": ["Zustand action pattern", "immer state mutation"],
"gotchas": ["State changes must go through actions, not direct mutation"]
}
Bad example (too vague):
{
"path": "src/stores/terminal-store.ts",
"purpose": "A store file",
"changes_made": "Added some code",
"patterns_used": [],
"gotchas": []
}
Only extract patterns that are reusable:
Good example:
{
"pattern": "Use e.stopPropagation() on interactive elements inside containers with onClick handlers",
"applies_to": "Any clickable element nested inside a parent with click handling",
"example": "Terminal.tsx header - dropdown needs stopPropagation to prevent focus stealing"
}
Must be specific and actionable:
Good example:
{
"gotcha": "Terminal header onClick steals focus from child interactive elements",
"trigger": "Adding buttons/dropdowns to Terminal header without stopPropagation",
"solution": "Call e.stopPropagation() in onClick handlers of child elements"
}
Capture the learning from success or failure:
This helps future sessions learn from past attempts.
Specific, actionable advice for future work:
Good: "When adding more controls to Terminal header, follow the dropdown pattern in this session - use stopPropagation and position relative to header"
Bad: "Write good code" or "Test thoroughly"
Create the structured insight output:
# Session Insights: [Task Name]
## Date
[timestamp]
## Task
[Description of what was being implemented]
## Outcome
[SUCCESS/FAILURE]
## File Insights
### [file-path]
- **Purpose**: [what this file does]
- **Changes**: [what was changed and why]
- **Patterns**: [patterns used]
- **Gotchas**: [things to watch out for]
## Patterns Discovered
### [Pattern Name]
- **Pattern**: [description]
- **Applies to**: [when to use]
- **Example**: [file or code reference]
## Gotchas Discovered
### [Gotcha Name]
- **Issue**: [what to avoid]
- **Trigger**: [what causes it]
- **Solution**: [how to handle]
## Approach Analysis
### What Worked
[Description of successful approach]
### What Failed (if applicable)
[Description of failed approaches and why]
### Alternatives Tried
[List of other approaches attempted]
## Recommendations for Future Sessions
1. [Specific recommendation 1]
2. [Specific recommendation 2]
Save to .claude/context/memory/learnings.md (append).
If the diff is very small or empty:
If the session failed:
Before completing insight extraction:
Why it's wrong: "Fixed the bug" helps no one.
Do this instead: "Fixed race condition in useEffect by adding cleanup function. Pattern: always return cleanup from async effects."
Why it's wrong: "Test your code" is not actionable.
Do this instead: "Run npm test src/stores after changing store logic - the tests catch state management bugs."
Why it's wrong: Future sessions won't understand why.
Do this instead: Include file paths, function names, and specific scenarios.
This skill works well with:
[CODE], [WORKFLOW], [SECURITY], etc.) — untagged insights are effectively invisible to agents searching by domain.| Anti-Pattern | Why It Fails | Correct Approach |
| ------------------------------------------------------------ | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| Recording activity ("implemented auth") instead of learnings | Agents can reconstruct history from git; they cannot reconstruct tacit knowledge | Record "why" and "gotcha": "Fiber's CSRF middleware must be before route registration, not after" |
| Skipping deduplication check | Duplicate entries inflate memory size and confuse retrieval | grep -i "keyword" learnings.md before appending; update existing entry if found |
| Vague insights without file/function context | Future sessions can't locate or apply the insight | Include concrete path: "In .claude/hooks/routing/routing-guard.cjs line 47: exit 0 on parse error" |
| Extracting only at session end | Long sessions lose early context; critical gotchas forgotten | Extract after each significant task completion, not just at session boundary |
| Storing insights only in task metadata | Task metadata is not read by future sessions or agents | Always write to .claude/context/memory/learnings.md with tagged format |
Before starting:
Read .claude/context/memory/learnings.md
After completing:
.claude/context/memory/learnings.md.claude/context/memory/issues.md.claude/context/memory/decisions.mdASSUME INTERRUPTION: If it's not in memory, it didn't happen.
tools
Comprehensive biosignal processing toolkit for analyzing physiological data including ECG, EEG, EDA, RSP, PPG, EMG, and EOG signals. Use this skill when processing cardiovascular signals, brain activity, electrodermal responses, respiratory patterns, muscle activity, or eye movements. Applicable for heart rate variability analysis, event-related potentials, complexity measures, autonomic nervous system assessment, psychophysiology research, and multi-modal physiological signal integration.
tools
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
data-ai
Molecular featurization for ML (100+ featurizers). ECFP, MACCS, descriptors, pretrained models (ChemBERTa), convert SMILES to features, for QSAR and molecular ML.
development
Run Python code in the cloud with serverless containers, GPUs, and autoscaling. Use when deploying ML models, running batch processing jobs, scheduling compute-intensive tasks, or serving APIs that require GPU acceleration or dynamic scaling.