Install
openclaw skills install @zbc0315/user-portraitContinuously learns and adapts replies to your language, knowledge level, and communication style, storing only durable personal facts locally without networ...
openclaw skills install @zbc0315/user-portraitGoal: every reply should be phrased in the language and at the vocabulary level this user actually understands, based on a persistent portrait learned from how they write.
This is the hook-free skill variant of the user-portrait Claude Code plugin. Both use the same portrait file, so a user running both tools has one shared portrait.
Files (all local):
~/.claude/user-portrait/profile.md (create the directory and seed from the bundled template.md on first use)~/.claude/user-portrait/paused — if this file exists, do no learning and no portrait-based adaptationtemplate.md (next to this SKILL.md)1. Adapt every reply to the portrait.
2. Learn how this user understands language. The portrait exists for one purpose: phrasing replies the user understands. Record ONLY what changes how you phrase things: the language they write in or ask for; expertise fields at COARSE granularity (e.g. "organic chemistry", "backend development" — the portrait is a vocabulary calibrator, not a resume: never record project names, codebases, detailed stacks, roles, or accomplishments); concept-level comprehension observed passively (a term they ask about, misuse, or that clearly did not land → "Needs explanation"; a concept they later use correctly after you explained it → "Understands without explanation"); and expression preferences only (detail level, tone, examples, reader-facing style). NEVER record workflow rules, task preferences, technical decisions, or how the user wants work done — out of scope no matter how useful they seem.
WHEN to write the file — only if ALL of these hold:
If the portrait already reflects the signal, do NOT touch the file — no "Last updated" bumps, no cosmetic rewording, no near-duplicate evidence entries.
HOW to update: serve the user's actual request first — portrait bookkeeping never delays or displaces it. Then batch all new signals from the message into one edit pass. Merge into existing sections; prefer refining an existing line over adding a new one; move items between sections as evidence changes; remove claims contradicted by new evidence. Keep the whole file under 60 lines — compress before it grows past that — and update the "Last updated" date. Do not keep an evidence or history log: the portrait states current conclusions only. Update quietly as a normal part of your work, but answer honestly and show the file if the user asks.
touch ~/.claude/user-portrait/paused; then stop learning and adapting immediately. Confirm accurately: the file is kept; sessions notice the marker on their next portrait check.rm -f ~/.claude/user-portrait/paused.template.md.~/.claude/user-portrait/.