Learn from Conversation
Analyze the conversation to extract lessons learned, then persist them to AI assistant configuration files.
Supported Assistants
| Assistant | Config File | Format |
|---|
| Claude Code | | Markdown |
| Gemini | | Markdown |
| AGENTS.md | | Markdown |
| Cursor | or | Markdown/MDC |
| GitHub Copilot | .github/copilot-instructions.md
| Markdown |
| Windsurf | | Markdown |
| Continue | | JSON |
See references/assistant-configs.md for format details.
Process
1. Detect and Assess Configurations
Scan for config files and check their sizes:
bash
for f in CLAUDE.md GEMINI.md AGENTS.md .cursorrules .github/copilot-instructions.md \
.windsurf/rules/rules.md .continuerc.json; do
[ -f "$f" ] && wc -l "$f"
done
find .cursor/rules -name "*.mdc" -exec wc -l {} \; 2>/dev/null
Behavior based on detection:
| Scenario | Action |
|---|
| Single config found | Update it automatically |
| Multiple configs found | Prompt user to select which to update |
| No configs found | Display init commands from assistant-configs.md, then exit |
Size Thresholds
| Lines | Status | Action |
|---|
| < 400 | Healthy | Add learnings directly |
| 400-500 | Warning | Add carefully, suggest cleanup |
| > 500 | Oversized | Refactor before adding new content |
Discover Existing Skills
List skills for routing decisions:
bash
find . -name "SKILL.md" -type f 2>/dev/null | grep -v node_modules | \
xargs grep -l "^name:" | while read -r f; do
grep -m1 "^name:" "$f" | sed 's/name: //'
done
2. Analyze Conversation
Scan for:
- Corrections: Commands retried, assumptions proven wrong, missing prerequisites
- Discoveries: Undocumented patterns, integration quirks, environment requirements
- Improvements: Steps that should be automated or validated earlier
3. Categorize and Route Each Learning
| Category | Primary Destination | Fallback When Oversized |
|---|
| Project facts | Config file | Extract to new skill |
| Prerequisites | Config file | Extract to skill |
| Environment | Config file | Extract to skill |
| Workflow pattern | Existing related skill | Create new skill |
| Automated workflow | New skill | New skill (always) |
Routing Decision Tree
For each learning, evaluate in order:
-
Is this a multi-step automated workflow (>5 steps)?
- YES → Create new skill (proceed to Step 5, Route C)
- NO → Continue
-
Does an existing skill cover this topic?
- YES → Update that skill
- NO → Continue
-
Is the target config file oversized (>500 lines)?
- YES → Create new skill OR offer refactoring (see Step 4)
- NO → Continue
-
Is this learning situation-specific (applies to narrow context)?
- YES → Create new skill with or context constraints
- NO → Add to config file
Size-Based Rules
| Learning Size | Preferred Destination |
|---|
| < 3 lines | Config file (even if near threshold) |
| 3-30 lines | Follow decision tree above |
| > 30 lines | Strongly prefer skill creation |
Skill Relevance Matching
Match learnings to existing skills using these criteria:
| Learning Topic | Matching Skill Indicators |
|---|
| Testing patterns | Skill name contains: test, spec, e2e, unit |
| Build/compile issues | Skill name contains: build, compile, bundle |
| Dependencies | Skill name contains: package, dependency, npm, yarn |
| API patterns | Skill name contains: api, http, fetch, request |
| Database | Skill name contains: db, database, migration, schema |
| Deployment | Skill name contains: deploy, release, ci, cd |
Also check skill
field for keyword overlap with the learning topic.
4. Present and Confirm
For each learning, show:
**[Category]**: [Brief description]
- Source: [What happened in conversation]
- Proposed change: [Exact text or file to add]
- Destination: [Config file] ([current] → [projected] lines)
Handle Size Threshold
If adding the learning would push a config file over threshold:
Adding this learning would bring [filename] to [X] lines (threshold: [Y]).
Options:
1. Add learning anyway (not recommended)
2. [Refactor](references/refactoring.md) existing content to skills first, then add
3. Create a new skill for this learning instead
4. Skip this config file
Ask for confirmation before applying each change.
5. Apply Changes
Apply changes based on routing decision from Step 3:
Route A: Add to Config File
Markdown configs (CLAUDE.md, GEMINI.md, AGENTS.md, Copilot, Windsurf):
- Find appropriate section, preserve existing structure
- Append to relevant section or create new section if needed
Cursor rules:
- Legacy : Treat like markdown, append content
- Modern : See references/format-cursor-mdc.md
- Update field, preserving existing content
- See references/format-continue.md
Route B: Update Existing Skill
When adding to an existing skill:
- Read the skill file:
- Find appropriate section or create new one
- Append learning, maintaining the skill's existing structure
- If skill has references, consider adding to reference file instead
Skill update format:
markdown
## [New Section or append to existing]
[Learning content formatted as guidance or workflow step]
Route C: Create New Skill
Create in
with this template:
markdown
---
name: [learning-topic]
description: [What this handles and when to use it - triggers belong here, not in body]
---
# [Learning Topic]
[Learning content structured as workflow]
## Process
### 1. [First Step]
[Details]
6. Verify Changes
After applying each change, confirm success by showing:
✓ Added to [file path]:
[Section name]
> [First 2-3 lines of added content...]
If a write failed, report the error and offer to retry or skip.
7. Summarize
List:
- Config files modified (with full paths)
- Sections updated in each file
- Any skills created
Examples
| Situation | Learning |
|---|
| "e2e tests failed because API wasn't running" | Add prerequisite to selected config(s) |
| "Parse SDK doesn't work with Vite out of the box" | Document workaround in selected config(s) |
| "Build failed because NODE_ENV wasn't set" | Add required env var to selected config(s) |
| "Every component needs tests, lint, build..." | Create skill |
Edge Cases
| Scenario | Handling |
|---|
| No configs detected | Guide user to initialize one first, exit early |
| Multiple configs found | Prompt user to select which to update |
| Malformed config file | Warn and skip that file |
| Duplicate content exists | Check before adding, warn if similar learning exists |
| Config file already oversized | Offer refactoring before adding (Step 4) |
| Learning matches multiple skills | Present options, let user choose which skill to update |
| Skill file also oversized | Suggest creating sub-skills or reference files |
| Learning is very small (<3 lines) | Prefer config file even if near threshold |
| Learning is very large (>30 lines) | Strongly suggest skill creation |
| No existing skills found | Skip skill matching, proceed with config or new skill |
Guidelines
See references/guidelines.md for learning quality principles.