skill-learning-patterns
Skill Learning Patterns
This meta-skill teaches agents to recognize valuable learnings during their work and contribute improvements back to the communal skill repository through pull requests.
Core Philosophy
This repository is a living knowledge base that improves through collective learning. As agents work on tasks, they discover:
- Better approaches than documented
- Missing error handling cases
- Gaps in existing skills
- Clearer ways to explain patterns
- New patterns worth capturing
These discoveries should flow back into the repository so all agents benefit.
Critical principle: Skills must contain general-purpose knowledge that helps many agents across different contexts. This is not a place for project-specific configurations, personal preferences, or one-off solutions. Focus on patterns, principles, and practices that are broadly applicable.
When to Use This Skill
Use this skill when:
- You discover something that took significant time to figure out
- Existing skill instructions led you astray or were incomplete
- You find yourself repeatedly solving the same undocumented problem
- You correct a mistake based on learning what actually works
- You notice a pattern emerging across multiple tasks
- You want to improve or clarify existing documentation
Learning Recognition Process
1. Notice Patterns During Work
Pay attention to signals that indicate learnable moments:
Time investment signals:
- "I spent 20+ minutes debugging this"
- "I tried 3 approaches before finding what worked"
- "I wish I had known this at the start"
Repetition signals:
- "This is the third time I've solved this"
- "I remember encountering this before"
- "Other agents probably face this too"
Correction signals:
- "The skill said X, but Y actually works better"
- "I misunderstood the instruction and it caused problems"
- "This approach failed in ways not documented"
Consult references/recognizing-learnings.md for detailed patterns.
2. Validate the Learning
Before proposing changes, validate based on contribution type:
For Tool/SDK Documentation:
- ✅ Tool is widely-used (1000+ GitHub stars, top search result, or Letta product)
- ✅ Shares battle-tested insights beyond official docs (what you struggled with, not basic usage)
- ✅ Well-documented with working examples
- ✅ Accurate and up-to-date
- ❌ NOT just "getting started" guides (official docs already cover that)
For Pattern Contributions:
- ✅ Is this generalizable beyond your specific context? (Most critical)
- ✅ Have you seen this pattern multiple times? (2-3+ instances)
- ✅ Did you test that your approach works better?
- ✅ Does this address a real gap vs. personal preference?
- ✅ Are there edge cases or tradeoffs to consider?
- ✅ Framework-specific patterns require validation through real agent experience (not just "well-established practices")
See references/validation-criteria.md for detailed guidance.
3. Determine Contribution Type
Update existing skill when:
- Skill has incorrect or outdated information
- Skill is missing an important case or pattern
- Instructions are unclear and caused confusion
- Examples would help but are missing
Create new skill when:
- Tool/SDK: Widely-used tool (1000+ stars/top search result/Letta product) with battle-tested insights
- Pattern: Appears frequently (3+ times) across different contexts and isn't documented
- Knowledge would benefit many agents across different projects (not just your specific setup)
Do NOT contribute when:
- Learning is specific to your project/context (e.g., "Our API endpoint is X")
- Solution only works in your unique environment
- It's a personal preference without objective benefit
- It's a one-off workaround for unusual situation
- Knowledge is too narrow to help other agents
Note in conversation only when:
- Learning might be valuable but needs more validation
- Pattern needs more observation before documenting
- Temporary workaround that might become obsolete
4. Contribute via Pull Request
Important: All contributions go through pull requests, not direct commits to main.
PR workflow:
- Create a feature branch for your changes
- Make updates to skill(s)
- Test that changes improve clarity/correctness
- Write clear PR description with rationale
- Submit PR for review
- Respond to feedback and iterate
Consult references/pr-workflow.md for detailed process.
Contribution Quality Standards
Good Contributions Include
Clear rationale:
"I encountered rate limiting with OpenRouter 5 times. Added exponential
backoff pattern with jitter which resolved all instances. This pattern
isn't documented anywhere in ai/models/."
Before/after comparison:
Before: "Use memory_rethink for updates"
After: "Use memory_insert for concurrent writes (safer), memory_rethink
only for single-agent exclusive access"
Why: Prevents data loss in multi-agent scenarios
Evidence of validation:
"Tested across 3 different projects, pattern held. Also confirmed in
Letta docs. Previous approach caused data loss 2/3 times."
Preserved existing knowledge:
- Don't delete working information
- Build on rather than replace
- Add context, don't remove context
Avoid These Anti-Patterns
❌ Premature optimization - Changing after single instance without validation
❌ Over-generalization - "This worked for me once" → "Always do this"
❌ Opinion as fact - Personal preference without objective improvement
❌ Churn - Changes that are different but not better
❌ Deleting context - Removing information that might help others
Common Pitfalls
Even well-intentioned contributions can miss the mark. Here are patterns to watch for:
Pitfall 1: The Specificity Trap
Pattern: Documenting your specific solution instead of extracting the general pattern.
Example - TOO SPECIFIC:
Skill: git-workflow-manager
Content: "Always end commits with: Written by Cameron ◯ Letta Code"
Problem: This is Cameron's personal preference, not general knowledge
Example - APPROPRIATELY GENERAL:
Skill: git-workflow-manager (revised concept)
Content: "Check repository for commit conventions in CONTRIBUTING.md or recent commits"
Better: Teaches pattern of discovering conventions, applies to any repository
How to avoid:
- Ask: "Would this help an agent on a completely different project?"
- Look for personal names, specific URLs, environment-specific configs
- Extract the pattern, not just your implementation
Pitfall 2: Documentation vs. Specialized Knowledge
Pattern: Creating skills that just reformat well-known documentation.
Example - JUST DOCUMENTATION:
Skill: "How to use git"
Content: Explains git commands, branching, committing, PR creation
Problem: This is standard git knowledge available everywhere
Example - SPECIALIZED KNOWLEDGE:
Skill: "mcp-builder" (in this repository)
Content: Patterns for creating MCP servers - not just "how to use the MCP protocol"
but specific guidance on tool design, error handling patterns, testing strategies
Better: Takes general protocol knowledge and adds specialized patterns for building quality servers
How to avoid:
- If official docs cover it well, link to docs instead of recreating
- Ask: "What specialized insight am I adding beyond standard documentation?"
- Focus on non-obvious patterns, edge cases, or agent-specific considerations
Pitfall 3: Over-Generalizing From One Instance
Pattern: "I made one mistake" → "Let's create 3 new skills to prevent it"
Real example from this repository (November 2025):
Observation: One agent submitted overly-specific git-workflow-manager skill
Initial reaction: "We need CULTURE.md + 3 new skills (knowledge-curation,
agent-human-collaboration, pattern-recognition) + extended documentation"
Correction: Another agent called this out as the exact over-generalization we warn against
Right-sized solution: Add this "Common Pitfalls" section instead
Learning: The system worked - peer review caught premature abstraction
How to avoid:
- Count your data points: 1 occurrence = note it, 3+ = consider contributing
- Check if existing skill can be extended instead of creating new one
- Ask: "Am I solving a real recurring problem or reacting to one experience?"
Pitfall 4: The Abstraction Ladder Confusion
Understanding where your learning sits on the abstraction ladder:
Level 1 - Specific Solution (TOO LOW for skills):
"I configured Firebase Auth with Google OAuth by setting these environment
variables and calling these specific API endpoints"
→ Too specific, only helps others using Firebase + Google OAuth
Level 2 - Pattern (GOOD for skills):
"OAuth integration strategies: Provider discovery, token management, callback
handling, session persistence. Applies to Google, GitHub, Microsoft, etc."
→ General enough to help with any OAuth integration
Level 3 - Principle (ALSO GOOD for skills):
"Delegating authentication to specialized providers: Trade-offs between
managed auth services vs. self-hosted, security considerations, user experience"
→ Helps with authentication decisions broadly
Where to contribute:
- Level 1: Keep in project-specific docs or memory, not skills
- Level 2: Perfect for skills - concrete patterns that generalize
- Level 3: Great for skills - principles that apply across domains
How to climb the ladder:
- Start with: "What did I do?"
- Extract: "What pattern was I following?"
- Distill: "What principle guided this?"
- Contribute at Level 2 or 3
Pitfall 5: Personal Preferences as Best Practices
Pattern: "I like doing it this way" → "Everyone should do it this way"
Example:
"Always use arrow functions in JavaScript"
"Always put API calls in src/api/ directory"
"Always use Claude Sonnet over GPT-4o"
→ These are preferences without objective evidence of superiority
How to avoid:
- Ask: "Can I measure why this is better?" (speed, reliability, cost, etc.)
- Consider: "Are there valid reasons someone would choose differently?"
- Test: "Does this improve outcomes or just match my style?"
Pitfall 6: Fragmenting Information
Pattern: Creating new skills/docs when information should be added to existing ones.
Signs you're fragmenting:
- New skill significantly overlaps with existing skill's domain
- Information could be a section in existing skill
- Creates "which skill do I check?" confusion
- Duplicates concepts across multiple skills
How to avoid:
- Review existing skills in the domain first
- Ask: "Does this extend an existing skill or truly need separate space?"
- Bias toward extending existing skills unless clearly distinct domain
Self-Check Before Contributing
Ask yourself:
- ❓ Is this general enough? (Would it help agents on different projects?)
- ❓ Is this specialized enough? (Does it add insight beyond standard docs?)
- ❓ Is this validated enough? (Have I seen this pattern 2+ times?)
- ❓ Is this objective enough? (Based on evidence, not preference?)
- ❓ Is this appropriately placed? (New skill vs. extend existing vs. don't contribute?)
If you can confidently answer yes to all five → Contribute
If you're unsure on any → More validation needed or reconsider contribution type
PR Description Template
Use this template for skill contributions:
## What
[Brief description of what's changing]
## Why
[Problem you encountered / gap you found / improvement opportunity]
## Evidence
[How you validated this is better / how you tested / how often you saw this]
## Impact
[Who benefits / what situations this helps / what it prevents]
## Testing
[How you verified the change works / examples you tried]
See references/contribution-examples.md for real examples.
Example Workflows
Workflow 1: Correcting Existing Skill
During task: "Following letta-memory-architect, I used memory_rethink for
concurrent updates. Result: data loss when two agents wrote simultaneously."
Validation: "Checked references/concurrency.md - it says memory_insert is
safer but warning wasn't prominent. Tested memory_insert with concurrent
writes - no data loss."
Action:
1. Create feature branch: fix/memory-concurrency-warning
2. Update SKILL.md to make warning more prominent
3. Add concrete example of data loss scenario
4. Create PR: "Emphasize memory_insert for concurrent writes"
5. Explain in PR: "Misread the guidance, led to data loss. Making warning
more visible to prevent this for other agents."
Workflow 2: Adding Missing Pattern
During task: "Hit OpenRouter rate limits 5 times across different projects.
Spent 30min each time figuring out exponential backoff."
Validation: "Pattern works consistently. Checked ai/models/ - not documented.
This is generalizable beyond my specific use case."
Action:
1. Create feature branch: add/api-rate-limiting-skill
2. Create new skill: ai/models/api-rate-limiting/
3. Document exponential backoff pattern with code examples
4. Create PR: "Add API rate limiting patterns"
5. Explain: "Common pattern that caused repeated debugging time. Validated
across 5 instances with different APIs."
Workflow 3: Clarifying Ambiguity
During task: "Skill said 'use appropriate model' but didn't define criteria.
Tried GPT-4o, Claude Sonnet, GPT-4o-mini before finding best fit."
Validation: "Through testing, identified that task complexity + budget
constraints should guide model choice. This clarification would have saved
1 hour."
Action:
1. Create feature branch: clarify/model-selection-criteria
2. Add decision tree to skill
3. Include examples: "For X task → Y model because Z"
4. Create PR: "Add model selection decision tree"
5. Explain: "Ambiguous guidance led to trial-and-error. Adding decision
criteria to help agents choose upfront."
Self-Correction Culture
When you make mistakes:
- Note what you learned
- Update relevant skill if gap exists
- Don't just fix the instance, prevent future instances
When you discover better approaches:
- Compare objectively with current documented approach
- Test to validate improvement
- Propose update with clear reasoning
When skills lead you astray:
- Don't assume skill is wrong without investigation
- Validate your alternative approach
- If truly better, propose improvement with evidence
Validation Questions
Before submitting PR, ask:
- Is this a genuine improvement or just different?
- Have I validated this works better?
- Is my evidence strong enough?
- Am I preserving existing valid knowledge?
- Will other agents benefit from this?
- Is my PR description clear about what and why?
Building on Others
Attribution:
- Reference existing skills you're building on
- Credit agents/humans whose insights helped
- Link to forum discussions or sources
Collaboration:
- Respond to PR feedback constructively
- Iterate based on reviewer insights
- Merge after approval, don't force through
Continuous improvement:
- Your contribution will be built upon by others
- This is expected and encouraged
- Living knowledge base means constant evolution
Next Steps
After contributing:
- Watch for PR feedback and respond
- Note if your learning helps in future tasks
- Continue pattern recognition in your work
- Build on what you contributed as you learn more
The goal: A knowledge base that gets smarter with every agent interaction.