Agent skill

User Profile Keeper

by dongshuyan in dongshuyan/compass-skills

Local user-profile maintenance skill for Codex, Claude Code, OpenClaw, OpenCode, and other agent harnesses.

MITAuto-check passedProductivity & Automation

Install User Profile Keeper

skills CLI
$ npx skills add dongshuyan/compass-skills --skill user-profile-keeper -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install dongshuyan/compass-skills user-profile-keeper --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/dongshuyan/compass-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/user-profile-keeper .claude/skills/user-profile-keeper && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
user-profile-keeper
GitHub stars
753
Token cost
~2.4k tokens
SKILL.md length
906 words
Files
11 (incl. scripts, references)
Skills in repo
9
Repo updated
First seen
Licence
MIT

At a glance

Local user-profile maintenance skill for Codex, Claude Code, OpenClaw, OpenCode, and other agent harnesses.

  • Works in 5 steps: Identify the user. Use default unless… → Read current state with… → Apply the Context Adequacy Gate. For… → …
  • Explicitly invokes $user-profile-keeper to create
  • SKILL.md covers Language Policy, Role, Portability and Core Contract, plus 6 more sections
  • Runs Python scripts from its folder; calls python3

What it does

User Profile Keeper is an agent skill from dongshuyan/compass-skills. Local user-profile maintenance skill for Codex, Claude Code, OpenClaw, OpenCode, and other agent harnesses. Use only when the user explicitly invokes $user-profile-keeper to create, initialize, update, query, correct, delete, export, or audit a local persistent user profile. It can extract durable collaboration preferences, requirement-expression habits, capability boundaries, recurring omissions, risk preferences, privacy boundaries, and typical events from the current session into auditable, confirmable…

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts and reference files (for example `agents/openai.yaml`, `references/examples.md` and `references/privacy-boundary.md`).

It sits in Productivity & Automation. It works with Python. The repository describes itself as: 司南:个性化 AI 任务总控 Skills 系统 /COMPASS: Personal Alignment Skills OS for AI Agents. The licence is MIT.

When your agent uses it

  • Explicitly invokes $user-profile-keeper to create
  • Audit a local persistent user profile

Example prompts

  • “/user-profile-keeper”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Identify the user. Use default unless the user explicitly names another identity. Initialize with scripts/profile_store.py init --user…
  2. Read current state with scripts/profile_store.py read --user --view clarification_summary.
  3. Apply the Context Adequacy Gate. For first-run questionnaire requests, run scripts/onboarding_webui.py --user .
  4. Extract candidate updates from the current session. Separate durable profile evidence from task-local instructions, AGENTS rules…
  5. Write safely

What it can do on your machine

Read from SKILL.md and the folder at commit 1b2e556. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

User Profile Keeper loads about 2.4k tokens when it runs, and up to ~8.5k if it reads all its reference files. Until then it costs about 165 tokens; SKILL.md has 906 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~165
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from dongshuyan/compass-skills at commit 1b2e556, republished under its MIT licence (© dongshuyan). 906 words, ~2,397 tokens.

Download SKILL.mdSave it as .claude/skills/user-profile-keeper/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
user-profile-keeper
description
Local user-profile maintenance skill for Codex, Claude Code, OpenClaw, OpenCode, and other agent harnesses. Use only when the user explicitly invokes $user-profile-keeper to create, initialize, update, query, correct, delete, export, or audit a local persistent user profile. It can extract durable collaboration preferences, requirement-expression habits, capability boundaries, recurring omissions, risk preferences, privacy boundaries, and typical events from the current session into auditable, confirmable, retractable local profile data. Do not auto-invoke, upload profile data, or replace task-clarifier's normal clarification flow.

User Profile Keeper

Language Policy

All output directed at the user — profile summaries, proposals, exports, questions, and confirmations — must be written in the user's language. Detect the user's language from their message. Default to Chinese when unknown. Skill instructions are written in English; that does not affect the language of user-facing output.

Role

Maintain a local-only user profile. The default user is default. Create or switch to another user only when the user explicitly names another identity.

Portability

This skill is agent-agnostic. Resolve paths from the directory that contains this SKILL.md. Use the available Python command on the host (python3, python, or py -3). The scripts are intended for macOS, Windows, and Linux with Python 3 and the standard library.

Core Contract

  • Use this skill only when the user explicitly invokes $user-profile-keeper.
  • Store profile data in the host user's local home directory under .compass-skills/user-profiles/v1 by default. Use COMPASS_USER_PROFILE_HOME to set another local directory.
  • Do not upload profile data. Do not read browser cookies, tokens, passwords, private keys, verification codes, or credentials.
  • Treat the store as local plaintext. Before first initialization, tell the user that local files can be read by local processes, users, or backups with sufficient permission.
  • Every profile assertion must include source type, confidence, sensitivity, status, and evidence. Avoid untraceable conclusions.
  • Low-sensitivity explicit facts with no conflict may be sent through --auto-apply-safe; the script decides whether they become active. Inferred, private, sensitive, high-impact, or conflicting facts must become pending proposals.
  • Profile scope includes collaboration preferences, requirement-expression habits, capability boundaries, risk confirmation, privacy boundaries, anti-bubble rules, typical events, and user-provided background such as age range, education, field, role, experience stage, and long-term goals.
  • Treat background information as private by default unless the user explicitly asks for a low-sensitivity summary. Keep it out of cross-skill summaries by default.
  • Let the user view, correct, retract, delete, and export profile data at any time.
  • Read the full profile only inside this skill. Other skills may read only low-sensitivity views such as clarification_summary.
  • Current session instructions, AGENTS rules, repository constraints, and skill operating rules constrain the current task. They do not initialize a durable user profile by themselves.
  • If the user asks for the onboarding questionnaire or first-run WebUI, run scripts/onboarding_webui.py --user <id>.

Context Adequacy Gate

Use one gate:

  • Active profile exists: treat the task as an incremental update. Do not recommend the questionnaire by default.
  • No active profile exists: recommend the onboarding questionnaire. If the user asks for it, run the WebUI. If the user declines, continue with the current task and use proposals for any durable profile candidates.

Do not decide that the current session is "enough" by counting covered questionnaire modules. Do not initialize an active profile from operational instructions.

Session Inference Policy

  • source_type=inferred always becomes a pending proposal. It never becomes active through --auto-apply-safe.
  • Explicit self-reported background information, including age range, education, field, role, experience stage, and long-term goals, becomes a pending proposal by default with sensitivity=private.
  • Use inference only to improve collaboration and follow-up questions. Avoid diagnosis, personality labels, value judgments, and restrictions on the user's choices.
Show full SKILL.md (397 more words)Show less

Workflow

  1. Identify the user. Use default unless the user explicitly names another identity. Initialize with scripts/profile_store.py init --user <id> when needed.
  2. Read current state with scripts/profile_store.py read --user <id> --view clarification_summary.
  3. Apply the Context Adequacy Gate. For first-run questionnaire requests, run scripts/onboarding_webui.py --user <id>.
  4. Extract candidate updates from the current session. Separate durable profile evidence from task-local instructions, AGENTS rules, repository constraints, and skill operating rules.
  5. Write safely:
    • For clearly self-reported, low-sensitivity, non-conflicting collaboration facts, use update-from-session --auto-apply-safe. The script applies only candidates that pass safety checks and sends the rest to proposals.
    • For every other candidate, create a proposal with proposal-create or update-from-session without relying on auto-apply.
    • Report what was applied, proposed, redacted, skipped, and why.

Read references/update-policy.md for auto-apply, pending, conflict, correction, and first-run rules. Read references/privacy-boundary.md for sensitivity boundaries.

Storage And Tools

The main store is managed by scripts/profile_store.py:

  • init: create registry, user directory, and SQLite database.
  • read: read clarification_summary, profile_overview, full, or pending.
  • update-from-session: update from agent-extracted candidate JSON or create proposals.
  • proposal-list / proposal-apply / proposal-reject: review and apply pending updates.
  • assertion-add / correct / delete / search / export: manual CRUD and export.
  • validate: read-only check of an initialized store's integrity, permissions, WAL mode, and orphan evidence references. It reports a missing profile without initializing one.

validate does not change profile data or the registry. On a WAL-mode store, SQLite may still create or update a temporary -shm coordination file while opening the database read-only. On POSIX systems, unexpected directory or database modes make validation fail; on Windows, permission_ok is null because POSIX mode bits are not a reliable permission check there.

Key usage examples:

bash
# Initialize (macOS / Linux)
python3 <skill-dir>/scripts/profile_store.py init --user default
# Windows
py -3 <skill-dir>\scripts\profile_store.py init --user default

# Read low-sensitivity summary for task-clarifier
python3 <skill-dir>/scripts/profile_store.py read --user default --view clarification_summary

# Submit a self-reported low-sensitivity candidate (auto-apply-safe path)
python3 <skill-dir>/scripts/profile_store.py update-from-session \
  --user default \
  --session-summary "User requires confirmation before high-impact actions." \
  --candidate-json '[{"category":"risk_boundary","claim":"confirm_high_impact_actions","value":{"summary":"Confirm before delete, overwrite, publish, or install."},"scope":"global","source_type":"self_report","confidence":0.95,"sensitivity":"low","evidence":{"summary":"User explicitly stated this.","context":"current session"}}]' \
  --auto-apply-safe

# Submit a private background or inferred candidate as proposal
python3 <skill-dir>/scripts/profile_store.py update-from-session \
  --user default \
  --session-summary "User filled background in onboarding." \
  --candidate-json '[{"category":"education_background","claim":"major_or_specialty","value":{"summary":"User self-reported a field or research direction."},"scope":"global","source_type":"self_report","confidence":0.9,"sensitivity":"private","evidence":{"summary":"Onboarding questionnaire.","context":"local onboarding"}}]' \
  --propose

# Review and apply proposals
python3 <skill-dir>/scripts/profile_store.py proposal-list --user default
python3 <skill-dir>/scripts/profile_store.py proposal-apply --user default --proposal-id <id>

# Start onboarding WebUI
python3 <skill-dir>/scripts/onboarding_webui.py --user default

Read references/profile-schema.md for data structure and JSON input format. Read references/questionnaire.md when onboarding is needed.

Read Views

  • clarification_summary: low-sensitivity, active, need-alignment-related summary for optional use by skills such as $task-clarifier.
  • profile_overview: low/private active overview for this skill; excludes sensitive, intimate, secret, and raw evidence text.
  • full: full profile, only when the user explicitly invokes this skill for profile work.
  • pending: pending proposals; never treat them as stable profile facts.

Read references/task-clarifier-integration.md for the $task-clarifier boundary. Read references/examples.md for typical usage.

Safety Defaults

  • Store no secrets, tokens, passwords, private keys, verification codes, or credentials.
  • Send sensitive experiences, health, religion, politics, finance, identity, intimate history, and similar content to proposal or redaction paths.
  • Current user statements override stored profile data.
  • Treat the profile as collaboration support and need-alignment evidence.

© dongshuyan, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files (scripts, references) in skills/user-profile-keeper of dongshuyan/compass-skills.

  • SKILL.md
  • agents/openai.yaml
  • references/examples.md
  • references/privacy-boundary.md
  • references/profile-schema.md
  • references/questionnaire.md
  • references/task-clarifier-integration.md
  • references/update-policy.md
  • scripts/onboarding_webui.py
  • scripts/profile_store.py
  • scripts/smoke_test_onboarding.py

Open the folder on GitHubat commit 1b2e556

Compare with similar skills

User Profile Keeper next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

User Profile Keeper compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
User Profile Keeper this skilldongshuyan/compass-skills753—~2.4kAutomated safety check: PassMIT
Process Inboxtelegramdesktop/tdesktop33k1 repos~5.4kAutomated safety check: PassGPL-3.0
Process InboxTDesktop-x64/tdesktop3k—~4.3kAutomated safety check: PassGPL-3.0
Telegrambubbuild/bub1.7k—~2.2kAutomated safety check: PassApache-2.0
Browser Use Terminalbrowser-use/terminal650—~2.1kAutomated safety check: PassMIT
Robocorp Automationrobocorp/robocorp653—~3.3kAutomated safety check: PassApache-2.0

Similar skills

  • Process Inbox

    telegramdesktop/tdesktop

    Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.

    33k GitHub starsUsed in 1 repo~5.4k tokens
    Productivity & AutomationAuto-check passed
  • Process Inbox

    TDesktop-x64/tdesktop

    Process the local ignored ai-tdesktop inbox into durable, independently testable Telegram Desktop task records while task execution worktrees remain active.

    3k GitHub stars~4.3k tokensUpdated 19 days ago
    Productivity & AutomationAuto-check passed
  • Telegram

    bubbuild/bub

    Telegram Bot skill for sending and editing Telegram messages via Bot API.

    1.7k GitHub stars~2.2k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Browser Use Terminal

    browser-use/terminal

    Direct browser control via the Browser Use Terminal CLI. An agent skill from browser-use/terminal.

    650 GitHub stars~2.1k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • Robocorp Automation

    robocorp/robocorp

    Bootstrap from an empty folder or build, debug, locally run, and validate Python automations built with Robocorp or Sema4.ai tooling, robocorp.tasks, rcc, robocorp-browser, and RPA Framework.

    653 GitHub stars~3.3k tokensUpdated 2 days ago
    Productivity & AutomationAuto-check passed
  • Cron Ops

    czl9707/build-your-own-openclaw

    Create, list, and delete scheduled cron jobs. An agent skill from czl9707/build-your-own-openclaw.

    1.9k GitHub stars~593 tokensUpdated 3 mo ago
    Productivity & AutomationAuto-check passed

More from dongshuyan/compass-skills

All 9 skills in this repo
  • Task Forest

    dongshuyan/compass-skills

    Maintains a repo-local task forest or task DAG for the current workspace.

    753 GitHub stars~1.6k tokensUpdated 1 mo ago
    Auto-check passed
  • Run History Skill Builder

    dongshuyan/compass-skills

    Turn a completed task, browser flow, artifact pipeline, failure-recovery trace, or repeatedly refined workflow into a new reusable skill package or a reviewed skill-design plan.

    753 GitHub stars~1.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Run History Skill Upgrader

    dongshuyan/compass-skills

    Use real run evidence, validation failures, source drift, platform drift, and user feedback to plan and, only after explicit approval, apply structural upgrades to an existing skill.

    753 GitHub stars~1.7k tokensUpdated 1 mo ago
    Auto-check passed
  • Session Handoff Prompt

    dongshuyan/compass-skills

    Create a concise continuation prompt that a fresh agent session can paste in to resume a long or degraded session.

    753 GitHub stars~1.7k tokensUpdated 1 mo ago
    Auto-check passed
  • Assess Interview Candidate

    dongshuyan/compass-skills

    根据候选人简历与岗位要求生成可审计的后台评估、简明的候选人介绍、按岗位重要性排列的简历疑点、12–18 道可直接照读的面试题,以及支持重点标记和本机保存的离线 HTML。用于招聘方准备结构化面试、核验岗位能力和记录回答。不要用于求职者模拟面试、私人背景调查、心理或人格诊断、从敏感属性推断表现,或自动录用、淘汰、排序候选人。

    753 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Academic Humanizer

    dongshuyan/compass-skills

    Draft, audit, or minimally revise English- or Chinese-language academic prose to reduce formulaic, vacuous, mechanically repetitive, or process-leaking language while preserving claims, evidence…

    753 GitHub stars~4.2k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Questions about User Profile Keeper

What does User Profile Keeper do?

Local user-profile maintenance skill for Codex, Claude Code, OpenClaw, OpenCode, and other agent harnesses. User Profile Keeper is an agent skill from dongshuyan/compass-skills. Local user-profile maintenance skill for Codex, Claude Code, OpenClaw, OpenCode, and other agent harnesses.

When should I use User Profile Keeper?

User Profile Keeper fits situations like: explicitly invokes $user-profile-keeper to create; audit a local persistent user profile.

How do I install User Profile Keeper in Claude Code?

Run `npx skills add dongshuyan/compass-skills --skill user-profile-keeper -a claude-code`. Or copy the skill folder (skills/user-profile-keeper in dongshuyan/compass-skills) into .claude/skills/user-profile-keeper in your project. Claude Code loads it when a task matches its description.

How do I install User Profile Keeper in Codex?

Run `npx skills add dongshuyan/compass-skills --skill user-profile-keeper -a codex`. Or copy the skill folder (skills/user-profile-keeper in dongshuyan/compass-skills) into .agents/skills/user-profile-keeper in your project. Codex loads it when a task matches its description.

Can I use User Profile Keeper in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dongshuyan/compass-skills --skill user-profile-keeper -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/user-profile-keeper, .gemini/skills/user-profile-keeper, .github/skills/user-profile-keeper and .opencode/skills/user-profile-keeper in your project.

What does User Profile Keeper need to run?

Going by SKILL.md and its folder, User Profile Keeper needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does User Profile Keeper access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is User Profile Keeper safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does User Profile Keeper use?

User Profile Keeper is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does User Profile Keeper use?

About 2.4k tokens (SKILL.md is roughly 9.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.1k tokens, read only when the agent opens those files.

What are the alternatives to User Profile Keeper?

Skills that share tags, products or a category with User Profile Keeper: Process Inbox (telegramdesktop/tdesktop, 33k stars), Process Inbox (TDesktop-x64/tdesktop, 3k stars), Telegram (bubbuild/bub, 1.7k stars) and Browser Use Terminal (browser-use/terminal, 650 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains User Profile Keeper?

dongshuyan (a GitHub user) maintains it in dongshuyan/compass-skills, which has 753 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on August 26, 2026.

Source: dongshuyan/compass-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.