skills/learn/SKILL.md
Real-time correction capture with Obsidian-backed context storage. Correction capture triggers mid-session on single keyword. Corrections stored as structured Obsidian notes for accurate root cause analysis.
npx skillsauth add ash4180/vorbit learnInstall 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.
Two modes:
Detailed specs live in references/ within this skill's directory. Glob for **/skills/learn/references/ to resolve the path. Read them when instructed at specific steps below.
| File | Contains |
|---|---|
| references/format.md | Scope classification table, examples |
| references/routing.md | Routing table by scope, absolute path routing, Cross-Reference Rule |
| references/consolidation.md | Document consolidation rules for .claude/rules/ files |
Corrections are stored as structured notes in the Obsidian vault at:
~/Projects/Thinking-Labs/claude/
projects/{project-name}/ ← per-project corrections
universal/ ← cross-project corrections
_corrections-index.md ← Dataview query (live, not static)
The index uses a Dataview query that reads YAML frontmatter from all notes — no manual rows to maintain.
At the start of every session, if pending-capture.md is in your context (symlinked from Obsidian vault):
pending-capture.md lives in the Obsidian vault (~/Projects/Thinking-Labs/claude/) and is symlinked into ~/.claude/rules/ for auto-loading. The stop hook writes to the Obsidian source; the symlink makes it appear in your context automatically.
pending-capture.md content → run the Stop-Hook Correction/Voluntary Flow from vorbit-learning-rules.md for each block, then delete the fileThis mode runs continuously during every session via the injected rules file. NOT invoked manually.
Any single correction keyword from the user is enough: "nope", "wrong", "that's not right", "still error", "not working", "broken", "roll back", "revert", "that's not how"
Repeated failure is NOT required. One correction = one trigger.
Once the problem is resolved (build passes, test passes, user confirms):
Step 1: Use AskUserQuestion: "I just fixed an issue. Want me to analyze the root cause?"
Step 2: Classify root cause
First check the Obsidian notes in ~/Projects/Thinking-Labs/claude/projects/{project}/ — has this project had similar corrections before? If so, reference the past note when classifying.
Use this decision tree in order. Stop at the first match:
Did a tool or MCP service behave unexpectedly? (e.g., Pencil dropped a property, Figma MCP returned stale data)
→ tool-behavior (universal)
Is this a user workflow or communication preference? (e.g., "always run tests first", "don't auto-commit")
→ user-preference (universal)
Did the agent make a reasoning error that would happen in ANY project? (e.g., assumed a typo, didn't check console)
→ agent-mistake (universal)
Is a skill's SKILL.md unclear or missing an instruction?
→ skill (project)
Does a hook script have a bug or missing logic?
→ script (project)
Is this a fact about the codebase that .claude/rules/ should know? (e.g., "events table uses soft deletes", "deploy requires migrations first")
→ knowledge (project)
Would a rule in CLAUDE.md have prevented this error? (e.g., "CORS middleware must be before auth")
→ claude-md (project)
Not enough context to classify confidently?
→ unclear — use AskUserQuestion to ask the user: "I can't determine the root cause with confidence. What went wrong?" Then reclassify with their answer.
Agent reasoning error, no documentation fix needed
→ general (nothing written)
Step 3: Use AskUserQuestion to present: what went wrong, root cause category, proposed file + content.
Step 4: Write the learning
Project-specific:
references/consolidation.md first. Determine topic, read/create rules file, append. Then apply the Cross-Reference Rule from references/routing.md to add a link in the project's CLAUDE.md under ## Knowledge Base.references/routing.md Group D to resolve plugin path. Read skill file, add minimum neededreferences/routing.md Group D to resolve plugin path. Read script, fix the bugUniversal:
references/consolidation.md first. Read or create ~/.claude/rules/agent-behavior.md, appendreferences/consolidation.md first. Read or create ~/.claude/rules/user-preferences.md, appendreferences/consolidation.md first. Read or create ~/.claude/rules/tool-quirks.md, appendStep 5: Update Obsidian note
If a pending Obsidian note exists for this correction (linked from pending-capture.md):
## Root Cause Analysis — explain WHY this happened and classify## Suggested Rule — write a concise imperative rule ready to paste into the destination file## Destination — the absolute path of the file to route toroot_cause, rule, routed_to, status: donerouted_to:
~/.claude/rules/...) → move to ~/Projects/Thinking-Labs/claude/universal//path/to/project/...) → move to ~/Projects/Thinking-Labs/claude/projects/{destination-project}/If this is a mid-session correction (no Obsidian note yet):
~/Projects/Thinking-Labs/claude/universal/~/Projects/Thinking-Labs/claude/projects/{destination-project}/Step 6: Resume primary task. Don't linger on the learning.
Triggers when the user explicitly asks to save something: "remember this", "save this", "note this", "keep this", "don't forget this", "log this".
Step 1: Use AskUserQuestion to confirm what to save and classify it:
Step 2: Propose file + content using AskUserQuestion:
Step 3: Write using the same routing as Correction Capture Step 4. Then update/create Obsidian note per Step 5.
Step 4: Run python3 ${CLAUDE_PLUGIN_ROOT}/skills/learn/hooks/mark_voluntary_seen.py to mark this session's voluntary keyword messages as seen. This prevents the stop hook from re-prompting at session end for the same capture you just handled. Then resume primary task.
development
Sync design tokens and components from a codebase to a Pencil canvas (`.pen` files), or set up a Pencil canvas from a style guide when no codebase exists. Use when the user says "sync pencil", "setup pencil", "configure pencil", "pencil sync", "sync tokens to pencil", "build pencil component library", or names Pencil/`.pen` files explicitly. Also triggers when mockups generated by Pencil don't match project conventions.
development
--- name: figma version: 1.6.0 description: Use when user says "figma", "figma it", "sync figma", "figma mockup", "create figma file", "design to figma", "figma from PRD", "figma from journey", "build in figma", or "figma design system" — anything that creates, syncs, or updates Figma design systems, components, variables, mockups, or front-end-ready screens. Always enumerates the linked Figma library FIRST (library-driven discovery, not per-need search), produces a block→DS mapping table for us
development
Use when the user wants to build Webflow pages, templates, or components, with or without Figma designs as reference.
testing
Use when the user wants to verify an implementation, validate acceptance criteria, or run a Vorbit-style post-change check using shared project rules.