Reviews pending corrections from the learnings queue and applies them as generalized rules to the relevant skill's Learnings & Corrections section. Uses the Reflect-Abstract-Generalize-Write pattern to convert raw user corrections into absolute directives that improve future skill execution. Use when the user asks to: - Apply learnings or corrections - Review the learnings queue - Improve skills from past feedback - "What corrections have accumulated?"
Process pending corrections from the learnings queue and apply them as generalized rules to the relevant skill files.
cat memory/drd/learnings-queue.jsonl
If the file is empty or contains no "status": "pending" entries, report
"No pending learnings to apply" and stop.
Parse each JSONL line and group entries by the skill field. Display a
summary to the user:
Pending learnings:
- create-drd: 3 corrections
- validate-drd: 1 correction
For each pending correction, apply the Reflect-Abstract-Generalize-Write pattern:
What exactly was corrected? Quote the user's original correction.
Is this specific to one case, or does it apply generally? Consider:
Write the learning as an absolute directive following the meta-rules:
Use AskUserQuestion to show the proposed learning and ask if it should be applied:
Proposed learning for create-drd:
- **L-003** (2026-03-20): Always use explicit CAST expressions for type conversions — never rely on implicit casting. Example: `CAST(date_col AS DATE)` not just `date_col`.
Apply this learning? [Yes / No / Edit]
For each approved learning:
Read the target skill file:
ba-plugin/skills/{skill-name}/SKILL.md
Find the ### Active Learnings section
Determine the next learning ID (L-001, L-002, etc.) by counting existing entries
Append the new learning bullet after any existing entries (or replace the "No learnings recorded yet" placeholder if this is the first)
Use the Edit tool to make the change
After all learnings are processed, update memory/drd/learnings-queue.jsonl:
"status": "pending" to "status": "applied" for applied entries"status": "pending" to "status": "rejected" for rejected entriesSummarize what was done: