Claude
Skills
Sign in
Back

nav-profile

Included with Lifetime
$97 forever

Manage user preferences and corrections for bilateral modeling. Auto-learns from session corrections. Use when user says "save my preferences", "remember I like...", or auto-triggers after corrections.

General

What this skill does


# Navigator Profile Skill

Manage user preferences for bilateral modeling - enabling Claude to understand and adapt to your working style, technical preferences, and past corrections.

## Why This Exists (Theory of Mind)

Based on Riedl & Weidmann 2025 research on Human-AI Synergy:
- Theory of Mind (ToM) is the key differentiator in human-AI collaboration success
- Users with higher ToM achieve 23-29% performance boost
- **Bilateral modeling** completes the ToM loop: Claude models you, you model Claude

This skill enables Claude to:
- Remember your preferences across sessions
- Learn from corrections without you repeating them
- Adapt communication style to your level
- Build a persistent mental model of YOU

## When to Invoke

**Auto-invoke when**:
- User says "save my preferences", "remember I like..."
- User says "update my profile", "change my preference for..."
- After detecting a correction pattern (auto-learn mode)
- User says "show my profile", "what do you know about me?"

**DO NOT invoke if**:
- User is creating a context marker (use nav-marker)
- User wants session-specific preferences only
- User explicitly says "just for this session"

## Profile Location

`.agent/.user-profile.json` (git-ignored, session-persistent)

## Execution Steps

### Step 1: Determine Action

**SHOW** (viewing profile):
```
User: "Show my profile", "What do you remember about me?"
→ Display current profile
```

**UPDATE** (explicit preference):
```
User: "Remember I prefer functional style", "Save that I like concise explanations"
→ Update specific preference
```

**LEARN** (auto-detect correction):
```
[Internal trigger after correction detected]
→ Extract and save correction pattern
```

**RESET** (clear profile):
```
User: "Reset my profile", "Clear my preferences"
→ Confirm and delete profile
```

### Step 2: Load or Initialize Profile

**Check if profile exists**:
```bash
if [ -f ".agent/.user-profile.json" ]; then
  echo "Profile exists"
else
  echo "No profile found, will create new"
fi
```

**Initialize new profile** (if not exists):
```json
{
  "version": "1.0",
  "created": "{YYYY-MM-DD}",
  "last_updated": "{YYYY-MM-DD}",
  "preferences": {
    "communication": {
      "verbosity": "balanced",
      "confirmation_threshold": "high-stakes",
      "explanation_style": "examples"
    },
    "technical": {
      "preferred_frameworks": [],
      "code_style": "mixed",
      "testing_preference": "tdd"
    },
    "workflow": {
      "autonomous_commits": true,
      "auto_compact_threshold": 80,
      "marker_before_risky": true
    }
  },
  "corrections": [],
  "goals": []
}
```

### Step 3A: Show Profile (If SHOW Action)

**Display current profile**:
```
Your Navigator Profile
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Communication Preferences:
- Verbosity: {verbosity}
- Confirmation: {confirmation_threshold} (when to verify understanding)
- Explanations: {explanation_style}

Technical Preferences:
- Preferred frameworks: {frameworks or "none set"}
- Code style: {code_style}
- Testing: {testing_preference}

Workflow Preferences:
- Autonomous commits: {autonomous_commits}
- Auto-compact at: {auto_compact_threshold}% context
- Markers before risky changes: {marker_before_risky}

Learned Corrections ({count}):
{recent_corrections_list}

Active Goals ({count}):
{active_goals_list}

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Last updated: {last_updated}
```

### Step 3B: Update Profile (If UPDATE Action)

**Parse preference from user input**:
```
User: "Remember I prefer functional style"
→ Category: technical
→ Field: code_style
→ Value: functional

User: "I like concise explanations"
→ Category: communication
→ Field: verbosity
→ Value: concise
```

**Map common expressions to profile fields**:

| User Says | Category | Field | Value |
|-----------|----------|-------|-------|
| "concise", "brief", "short" | communication | verbosity | concise |
| "detailed", "thorough" | communication | verbosity | detailed |
| "always confirm" | communication | confirmation_threshold | always |
| "skip confirmations" | communication | confirmation_threshold | never |
| "functional style" | technical | code_style | functional |
| "OOP style" | technical | code_style | oop |
| "prefer React" | technical | preferred_frameworks | [append "react"] |
| "prefer Express" | technical | preferred_frameworks | [append "express"] |

**Update and save**:
```json
// Update specific field
profile.preferences[category][field] = value;
profile.last_updated = "{YYYY-MM-DD}";

// Write to file
Write(".agent/.user-profile.json", JSON.stringify(profile, null, 2));
```

**Confirm update**:
```
✅ Profile updated!

Changed: {category}.{field}
From: {old_value}
To: {new_value}

This will affect future sessions.
```

### Step 3C: Auto-Learn Correction (If LEARN Action) [AUTO-TRIGGER]

**IMPORTANT**: This action triggers automatically - no explicit skill invocation needed.

**When to detect corrections** (monitor ALL conversations):
- User says "No, I meant...", "Actually...", "Not X, use Y"
- User repeats a correction they gave before
- User shows frustration at repeated mistake

**Trigger patterns to watch for**:
```
"No, ..." → Direct correction
"I said ..." → Repeated instruction
"Actually, ..." → Clarification
"Not X, Y" → Substitution
"Always use ..." → Rule establishment
"Never do ..." → Anti-pattern
"I prefer ..." → Preference
```

**When detected**:
```
User: "No, I meant plural /users not /user"
→ Correction detected: REST naming convention preference
→ Auto-save to profile (silent)
```

**Extract correction pattern**:
```python
correction = {
  "date": "{YYYY-MM-DD}",
  "context": "{what we were doing}",
  "original": "{what I said/generated}",
  "corrected_to": "{what user wanted}",
  "pattern": "{generalized rule}",
  "confidence": "high|medium|low"
}
```

**Add to corrections list**:
```json
profile.corrections.push(correction);

// Keep last 20 corrections (rolling window)
if (profile.corrections.length > 20) {
  profile.corrections.shift();
}
```

**Silently acknowledge** (don't interrupt flow):
```
[Internal log: Correction saved to profile]
```

**Sync to Knowledge Graph** (if enabled in config):
```bash
PLUGIN_DIR="${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/plugins/cache/navigator-marketplace/navigator}"
[ -d "$PLUGIN_DIR" ] || PLUGIN_DIR="$HOME/.claude/plugins/marketplaces/navigator-marketplace"
# Check if knowledge graph integration is enabled
if [ -f ".agent/knowledge/graph.json" ]; then
  # Convert correction to memory
  python3 "$PLUGIN_DIR/skills/nav-graph/functions/correction_to_memory.py" \
    --action convert-one \
    --correction-json '{"pattern": "{pattern}", "context": "{context}", "confidence": "{confidence}"}' \
    --graph-path .agent/knowledge/graph.json

  # [Internal log: Correction synced to knowledge graph as memory]
fi
```

This creates a pitfall/pattern/learning memory in the knowledge graph, making the correction available via "What do we know about X?" queries.

**Periodically surface learnings** (every 5 corrections):
```
📚 I've learned from your corrections:
- REST endpoints should use plural nouns
- You prefer functional components over class components
- TypeScript strict mode is required

These will be applied in future sessions.
```

### Step 3D: Reset Profile (If RESET Action)

**Confirm before delete**:
```
⚠️  This will delete your Navigator profile:
- {X} saved preferences
- {Y} learned corrections
- {Z} active goals

This cannot be undone.

Delete profile? [y/N]
```

**If confirmed**:
```bash
rm .agent/.user-profile.json
```

**Confirm deletion**:
```
✅ Profile deleted

Future sessions will start fresh.
To rebuild, use "Save my preferences" as you work.
```

### Step 4: Update Goals (Optional)

**If user mentions a goal**:
```
User: "I'm working on the OAuth feature"
→ Add/update goal in profile
```

**Goal structure**:
```json
{
  "name": "oauth-feature",
  "started": "{YYYY-MM-DD}",
  "context": "OAuth implementation for user login",
  "s
Files: 5
Size: 35.5 KB
Complexity: 44/100
Category: General

Related in General