From claude-worktrace
Learns user preferences from corrections (3+), steering patterns, periodic checkpoints, and explicit triggers to adapt Claude's behavior across sessions.
npx claudepluginhub thumperl/claude-worktrace --plugin claude-worktraceThis skill uses the workspace's default tool permissions.
Analyze how the user has been steering you, identify patterns, and — with confirmation — persist those learnings for all future sessions.
Analyzes coding sessions to detect corrections and preferences, proposing targeted updates to active Skills or CLAUDE.md. Triggered by 'learn from this session' or 'update skills'.
Captures friction from coding sessions like user corrections, redos, and frustration to log lessons learned and route improvements to context files. Triggers on /retrospective or detected signals.
Manages persistent user preferences and corrections for bilateral modeling in coding sessions. Stores in .agent/.user-profile.json; auto-learns from corrections or triggers on 'save preferences', 'remember I like...'
Share bugs, ideas, or general feedback.
Analyze how the user has been steering you, identify patterns, and — with confirmation — persist those learnings for all future sessions.
Every correction is signal. Without this skill, the user re-trains Claude every session. This skill closes the loop by capturing preferences and making them permanent.
A "steer" is ANY input where the user shapes HOW you work. The bar is intentionally low:
Key insight: if the user is telling you HOW to do something (not just WHAT), that's a steer.
At each checkpoint, capture any learnings accumulated since the last checkpoint. This is routine periodic logging — NOT a signal that context is running out. After capturing, resume the current task immediately without comment. Do not suggest compacting, ending the session, or starting fresh.
"Learn this", "remember this", "always do it this way", "improve yourself".
Checkpoint triggers (~25/50/75% context):
📋 Checkpoint — patterns detected:
1. **[Category]**: [Preference summary]
Evidence: "[Brief quote]"
2. **[Category]**: [Preference summary]
Evidence: "[Brief quote]"
Options:
[1] Save these
[2] Skip, save nothing
[3] Let me edit/add my own
On [1]: persist via write_preferences.py --target log-only (logged, not auto-applied to CLAUDE.md)
On [2]: discard and continue
On [3]: accept user input, then persist
After the user responds, immediately resume the current task.
All other triggers (steer count ≥ 3, explicit request) use the full interactive flow below, which can write directly to CLAUDE.md on confirmation.
This is critical. Do NOT analyze your own conversation directly — you have blind spots about your own mistakes. Instead, spawn a subagent to analyze the transcript with fresh eyes.
Use the Agent tool to spawn an analyzer:
Prompt for the subagent:
"Read the analyzer instructions at ${CLAUDE_PLUGIN_ROOT}/agents/analyzer.md
Then analyze this conversation transcript for user steering patterns:
<transcript>
[Paste or summarize the key parts of the conversation — focus on user messages
that steered, corrected, or guided behavior. Include what Claude did before
each steer so the analyzer has context.]
</transcript>
Also check these existing preferences for conflicts:
[Include current contents of ~/.claude/CLAUDE.md if available]
Return your analysis as JSON following the format in the analyzer instructions."
The subagent returns structured JSON with steers found, patterns identified, and any conflicts.
Read the JSON response. Sanity-check:
Show EXACTLY what was learned, concisely:
📋 Patterns detected from this session:
1. **[Category]**: [Preference summary]
Evidence: "[Brief quote]"
2. **[Category]**: [Preference summary]
Evidence: "[Brief quote]"
[If conflicts:] ⚠️ Conflict: Previously you preferred X, but this session suggests Y. Which should I keep?
Save these to your global preferences?
Keep it SHORT. The user wants to see what you learned and confirm quickly.
Write preferences using the bundled script:
python "${CLAUDE_PLUGIN_ROOT}/scripts/write_preferences.py" \
--preferences '[{"category": "...", "preference": "...", "context": "...", "evidence": "..."}]' \
--target global
The script handles:
~/.claude/CLAUDE.md (global, cross-project, active in all sessions)~/Documents/AI/self-improve/preferences-log.md (detailed log with timestamps, synced across devices)If the script isn't available, write directly to ~/.claude/CLAUDE.md under a ## User Preferences (Auto-Learned) section.
After saving preferences, also trigger the worklog-logging skill to capture what was accomplished. Present both outputs together for a single confirmation.
After logging, immediately continue with the current task. Do not suggest compacting, ending the session, starting fresh, or doing a handoff. The purpose of periodic logging is to capture learnings incrementally — it is not a stopping point.
If a new preference contradicts an existing one:
~/.claude/CLAUDE.md (auto-loaded by Claude in every session)~/Documents/AI/self-improve/preferences-log.md (synced across devices, includes evidence and timestamps)~/.claude/self-improve-preferences.mdHooks in hooks/hooks.json automatically detect steering patterns on PreCompact/SessionEnd and log them to ~/Documents/AI/self-improve/preferences-log.md. Steers are never auto-applied — the manual flow (conversation-based, user-confirmed) remains the only path to CLAUDE.md.
Reviewing detected steers: Say "review detected steers", "what have you learned", or "show auto-detected preferences" to review and promote unconfirmed items.
Users can always:
~/.claude/CLAUDE.md directly