# Oracle Pattern Library Common patterns, solutions, and best practices for the Oracle knowledge management system. ## Knowledge Entry Patterns ### Pattern: Security Critical **When:** Recording security-related knowledge **Structure:** ```json { "category": "gotcha" or "correction", "priority": "critical", "title": "Always [security practice]", "content": "Security vulnerability description and correct approach", "context": "When handling [user input/authentication/etc]", "tags": ["security", "xss|sql-injection|csrf|etc"] } ``` **Example:** - Input validation - Authentication bypasses - Injection vulnerabilities - Data exposure ### Pattern: Performance Optimization **When:** Recording performance-related learnings **Structure:** ```json { "category": "solution", "priority": "high", "title": "Use [optimized approach] for [use case]", "content": "Performance problem and solution with metrics", "examples": ["Before/after code"], "tags": ["performance", "optimization"] } ``` **Example:** - Caching strategies - Query optimization - Algorithm improvements ### Pattern: Common Mistake **When:** User corrects a repeated mistake **Structure:** ```json { "category": "correction", "priority": "high", "title": "Don't [wrong approach]", "content": "āŒ Wrong: [what not to do]\\nāœ“ Right: [correct approach]\\nReason: [why]", "context": "When [situation]", "tags": ["common-mistake"] } ``` **Example:** - API misuse - Framework gotchas - Language quirks ## Session Recording Patterns ### Pattern: Bug Fix Session **When:** Session focused on fixing a bug **Template:** ```markdown ## Summary Fixed [bug description] ## Activities - Identified root cause in [location] - Implemented fix in [location] - Added tests to prevent regression ## Changes Made - File: [path] - Change: [what changed] - Reason: Fix for [bug] ## Learnings - 🟔 [HIGH] [Root cause and how to prevent] ## Corrections (if applicable) - What was wrong: [incorrect assumption/approach] - What's right: [correct understanding/approach] ``` ### Pattern: Feature Implementation **When:** Adding new functionality **Template:** ```markdown ## Summary Implemented [feature name] ## Activities - Designed [component/system] - Implemented [components] - Added tests - Updated documentation ## Decisions - Decision: [technical decision made] - Rationale: [why this approach] - Alternatives: [other options considered] ## Learnings - [Patterns established] - [Solutions used] ``` ### Pattern: Refactoring Session **When:** Improving existing code **Template:** ```markdown ## Summary Refactored [what] to [improvement] ## Activities - Analyzed current implementation - Refactored [components] - Verified no breaking changes ## Changes Made - [List of files and changes] ## Learnings - [Patterns applied] - [Anti-patterns removed] ``` ## Query Patterns ### Pattern: Pre-Task Context **When:** Starting a new task **Command:** ```bash python .claude/skills/oracle/scripts/query_knowledge.py --task "implement [feature]" --priority high ``` **What it does:** - Surfaces relevant patterns - Shows related solutions - Highlights potential gotchas ### Pattern: Post-Correction **When:** After being corrected **Command:** ```bash python .claude/skills/oracle/scripts/record_session.py --corrections "wrong->right" python .claude/skills/oracle/scripts/query_knowledge.py --category corrections --recent 10 ``` **What it does:** - Records the correction - Shows recent corrections to identify patterns ### Pattern: Weekly Review **When:** Regular maintenance **Commands:** ```bash # See what we've learned python .claude/skills/oracle/scripts/query_knowledge.py --recent 20 # Find automation opportunities python .claude/skills/oracle/scripts/analyze_patterns.py # Update documentation python .claude/skills/oracle/scripts/generate_context.py --output claude.md --update ``` ## Integration Patterns ### Pattern: Continuous Learning **Setup:** 1. `claude.md` with Oracle section 2. Session start hook loads context 3. After each session: record learnings 4. Weekly: analyze patterns **Benefit:** Continuous improvement, knowledge compounds ### Pattern: Team Knowledge Base **Setup:** 1. Oracle in git repository 2. `.gitignore` excludes sensitive session logs 3. `claude.md` committed and shared 4. Team members contribute learnings **Benefit:** Shared institutional knowledge ### Pattern: Documentation Sync **Setup:** 1. Record sessions with learnings 2. Oracle context in `claude.md` 3. Use learnings to update docs 4. Keep docs and knowledge in sync **Benefit:** Documentation stays current ## Automation Patterns ### Pattern: Repeated Command **Detection:** Activity appears 3+ times: "Run tests" **Action:** ```bash # Oracle generates ./auto_run_tests.sh # Which contains #!/bin/bash npm test # or pytest # or cargo test ``` **Usage:** Use script instead of asking Claude ### Pattern: Multi-Step Process **Detection:** Same sequence appears repeatedly: 1. "Build project" 2. "Run linter" 3. "Run tests" **Action:** ```bash # Oracle generates ./auto_pre_commit.sh # Which contains #!/bin/bash npm run build && npm run lint && npm test ``` ### Pattern: Context Generation **Detection:** Repeatedly asking about same topic **Action:** Add to claude.md auto-inject: ```markdown ## Authentication Context [Relevant knowledge auto-injected] ``` ## Anti-Patterns (What NOT to Do) ### Anti-Pattern: Recording Everything āŒ **Don't:** Record every tiny action āœ“ **Do:** Record meaningful learnings and corrections **Why:** Bloats knowledge base, harder to find relevant info ### Anti-Pattern: Vague Entries āŒ **Don't:** "Something about databases" āœ“ **Do:** "Use connection pooling for database connections to prevent connection exhaustion" **Why:** Vague entries aren't useful for recall ### Anti-Pattern: Duplicate Knowledge āŒ **Don't:** Create new entry for same knowledge āœ“ **Do:** Update existing entry or add examples **Why:** Duplicates cause confusion and bloat ### Anti-Pattern: Wrong Priorities āŒ **Don't:** Mark everything as critical āœ“ **Do:** Save critical for security, data loss, breaking issues **Why:** Dilutes importance, everything seems urgent ### Anti-Pattern: No Tags āŒ **Don't:** Skip tags thinking title is enough āœ“ **Do:** Add 2-4 relevant tags **Why:** Tags enable better search and categorization ### Anti-Pattern: Never Reviewing āŒ **Don't:** Set and forget āœ“ **Do:** Review monthly, update priorities, archive old entries **Why:** Stale knowledge becomes misleading ### Anti-Pattern: Ignoring Automations āŒ **Don't:** Keep asking LLM for same repeated task āœ“ **Do:** Use or create automation scripts **Why:** Wastes tokens and time on deterministic tasks ## Common Use Cases ### Use Case 1: Onboarding New Developers **Situation:** New team member joining project **Solution:** ```bash # Generate comprehensive onboarding context python .claude/skills/oracle/scripts/generate_context.py --tier 2 > onboarding.md # Include: # - Critical gotchas # - Key patterns # - Team preferences # - Common solutions ``` ### Use Case 2: Context Switching **Situation:** Coming back to project after time away **Solution:** ```bash # Load session start context python .claude/skills/oracle/scripts/load_context.py # Review recent sessions python .claude/skills/oracle/scripts/query_knowledge.py --recent 10 # Review project timeline cat .oracle/timeline/project_timeline.md | tail -50 ``` ### Use Case 3: Bug Investigation **Situation:** Investigating a bug **Solution:** ```bash # Search for related issues python .claude/skills/oracle/scripts/query_knowledge.py "bug-related-keywords" # Check if similar bug was fixed before python .claude/skills/oracle/scripts/query_knowledge.py --category gotchas --tags bug # After fix, record to prevent recurrence python .claude/skills/oracle/scripts/record_session.py --interactive ``` ### Use Case 4: Architecture Decision **Situation:** Making important architectural choice **Solution:** ```bash # Review existing patterns python .claude/skills/oracle/scripts/query_knowledge.py --category patterns # Review past decisions grep "Decision:" .oracle/sessions/*.md # After deciding, record rationale python .claude/skills/oracle/scripts/record_session.py \ --summary "Decided to use [approach]" \ --learnings "Use [approach] because [rationale]" ``` ## Success Metrics Track these to measure Oracle effectiveness: ### Metric 1: Correction Reduction **Measure:** Count corrections per week **Target:** Declining trend (learning from mistakes) **How:** ```bash grep -c "## Corrections" .oracle/sessions/*.md ``` ### Metric 2: Knowledge Reuse **Measure:** use_count in knowledge entries **Target:** Increasing use counts on valuable entries **How:** ```bash python .claude/skills/oracle/scripts/query_knowledge.py --sort used ``` ### Metric 3: Automation Adoption **Measure:** Generated scripts being used **Target:** High usage of automation scripts **How:** Check git history for manual vs scripted operations ### Metric 4: Context Relevance **Measure:** How often injected context is actually useful **Target:** High relevance rate **How:** Subjective assessment during sessions --- **Pattern Library Version**: 1.0 **Last Updated**: 2025-11-19