一键导入
profile-me
Build a personal AI profile from your digital footprint — portrait, working-with-me guide, and compact system prompt for any AI assistant.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Build a personal AI profile from your digital footprint — portrait, working-with-me guide, and compact system prompt for any AI assistant.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Audit chezmoi dotfiles for drift, unmanaged files, and broken agent skill symlinks across Claude Code, Codex, Gemini, and other harnesses.
Scan Claude/Codex session logs to find agent behavior patterns, Toolsmith adoption gaps, repeated frustrations, and candidates for new skills/tools.
Generate user-facing changelog entries from git history — plain language, audience-segmented, with optional CHANGELOG.md update.
Consolidate/dedupe contacts from macOS, iCloud, Google, Zoho, or VCF with provenance-aware review, backups, and optional approved dossiers.
Capture a technical or product decision with chosen option, rejected alternatives, and rationale — in a format a future agent can read to reconstruct context.
Audit repos for SHA/digest dependency pinning and release cooldowns across Docker, CI, and major language ecosystems; report violations, fix with approval.
| name | profile-me |
| description | Build a personal AI profile from your digital footprint — portrait, working-with-me guide, and compact system prompt for any AI assistant. |
| display_name | Profile Me |
| brand_color | #1D4ED8 |
| local_only | true |
| group | For Anyone |
| usage | /profile-me:run |
| summary | Turn your digital footprint into a profile any AI can read, so assistants actually get you from the first message. |
| default_prompt | Build an evidence-based AI profile of me from the local artifacts available in this environment, and clearly label inferences vs. observations. |
Build an honest portrait of the user as a person — not a resume summary, not a list of their tech stack. The default goal is personality, not credentials.
Most developers who run this skill have conversation histories dominated by coding work. That data is real but misleading as a personality source — it's what they did at the desk, not who they are. The skill must look through the work to find the person.
Inspired by Orson Scott Card's Speaker for the Dead: tell the truth about who someone is — not to flatter, not to judge, but to understand and serve.
Core principles:
Trigger on requests like:
Not this skill: "update my resume", "write my LinkedIn bio", "describe my tech stack" — those are professional documents, use a different prompt or request the Professional Portrait explicitly.
Before reading ANY data, briefly tell the user what categories of data will be examined (conversation history, shell config, git config, project files, SSH config, AWS config) and ask: "Anything you'd like me to skip?"
This is a one-time check, not a per-file approval. Most users will say "go ahead" but some may exclude SSH config, AWS accounts, or specific directories. Respect exclusions completely — don't reference excluded data even indirectly.
Before analyzing anything, map what data sources exist. Not all users will have all sources. Run discovery in parallel where possible.
Source 1: AI Agent Conversation History
Probe for each and read what exists. Don't assume any particular agent is installed.
| Agent | Path | Format | User message field |
|---|---|---|---|
| Claude Code | ~/.claude/history.jsonl | JSONL | display |
| Aider | **/.aider.chat.history.md (per-project) | Markdown | lines after #### human |
| OpenCode | ~/.local/share/opencode/opencode.db | SQLite | message table, data col (JSON) |
| Copilot Chat (VS Code) | ~/Library/Application Support/Code/User/globalStorage/github.copilot-chat/**/*.jsonl | JSONL | v.requests[].message |
| Gemini CLI | ~/.gemini/ | metadata only | no conversation data stored locally |
| Cursor | ~/Library/Application Support/Cursor/User/globalStorage/ | SQLite/JSONL | similar to VS Code |
| Windsurf | ~/Library/Application Support/Windsurf/User/globalStorage/ | SQLite/JSONL | similar to VS Code |
| Continue.dev | ~/.continue/ | JSON sessions | messages[].content where role=user |
| ChatGPT (desktop) | ~/Library/Application Support/ChatGPT/ | SQLite | varies |
| Amazon Q | ~/.aws/amazonq/ | varies | varies |
Discovery commands:
# Check which agents have data
ls ~/.claude/history.jsonl 2>/dev/null && echo "claude-code"
find ~/dev -name ".aider.chat.history.md" -maxdepth 4 2>/dev/null
ls ~/.local/share/opencode/opencode.db 2>/dev/null && echo "opencode"
ls "~/Library/Application Support/Code/User/globalStorage/github.copilot-chat/" 2>/dev/null && echo "copilot-chat"
ls ~/.continue/ 2>/dev/null && echo "continue"
Source 1b: Claude Code Environment
~/.claude/CLAUDE.md # Global instructions — personality, preferences, rules
~/.claude/settings.json # Tool preferences, model choices
~/.claude/projects/*/memory/ # Per-project memories (feedback, user, project, reference types)
~/.claude/projects/*/memory/MEMORY.md # Memory indexes
~/.claude/agents/ # Custom agent definitions
~/.claude/skills/ # Installed skills
~/.claude/bin/ # Custom scripts and tools
Source 2: Personal Expression (prioritize these over work repos)
~/dev/me/ (or personal equivalent) # Personal/side projects — names, themes, what they chose to build
~/.local/share/chezmoi/ or ~/dotfiles/ # Dotfiles — configuration as aesthetic choice
~/cloud/ or ~/notes/ or ~/Documents/ # Personal notes, writing, Obsidian vaults
~/.zshrc or ~/.bashrc # Aliases and functions — naming reveals personality
~/dev/me/*/README.md # Personal project READMEs (distinct from work)
Skip for personal profile: Work repositories (~/dev/ excluding personal dir), work project READMEs, CI configs, deployment files. These describe the job, not the person.
Source 3: Shell & System Configuration
~/.bashrc or ~/.zshrc # Shell config — aliases, functions, env vars, PATH
~/.bash_profile or ~/.zprofile # Login shell config
~/.gitconfig # Git identity, aliases, preferences
~/.ssh/config # Connection patterns (work vs personal hosts)
~/.aws/config # Cloud account structure (if applicable)
Source 4: Conversation History Analysis
Harvest user messages from every agent source found in Source 1. Each format requires different extraction:
history.jsonl): jq -r 'select(.display != null and (.display | length) > 20) | .display' ~/.claude/history.jsonl.aider.chat.history.md): extract lines after #### human markerssqlite3 ~/.local/share/opencode/opencode.db "SELECT data FROM message" then parse JSON for role=userv.requests[].message from session filesmessages arrays from session JSON files, filter role == "user"Combine all sources into a single corpus before analysis. Deduplicate by content where the same text appears across agents. Note which agents were most active — tool diversity is itself a signal.
Extracting personality from work-heavy histories
Most developers' conversation histories are 90%+ coding requests. Don't profile the work — look for the person between the work. Specifically look for:
For the personal portrait, weight these signals more heavily than project counts or framework choices. A list of technologies is a LinkedIn section. The texture of how someone talks is a personality.
Extract from the combined corpus:
Read all discovered sources. Use subagents to parallelize across categories:
Conversation history sampling for personality: Sample broadly in time (beginning, middle, recent), but filter aggressively for personality signals. Skip: pure code requests, bug descriptions, "add X to Y", pasted content. Keep: opinions, frustrations, humor, naming choices, how they frame problems, off-task remarks, how they respond to errors, what they thank you for, what they push back on. Target 40-80 messages that would survive the filter "does this tell me something about who this person is?"
After collecting data, analyze across these dimensions. See references/analysis-framework.md
for the full analytical rubric with questions and evidence patterns for each dimension.
For personal portrait (default): use dimensions 3–7 only. Dimensions 1–2 belong in the Professional Portrait.
During analysis, actively guard against:
Default output: Personal Portrait + System Prompt. Always produce these two unless the user says otherwise.
Offer the Working-With-Me Guide and Professional Portrait as opt-in extras — mention them briefly after presenting the defaults. Do not produce a Professional Portrait unless explicitly requested.
Store outputs in the user's preferred temp/output directory.
portrait-personal.md)The "Speaker for the Dead" document. Who this person really is — not their resume, their self.
Structure:
Do not include: tech stack, job history, professional credentials, languages/frameworks. Those belong in the Professional Portrait. If a work pattern is genuinely revealing about personality (e.g., obsessive perfectionism about performance), note the personality trait, not the technical fact.
Critical writing prompts:
Tone: Warm but honest. Like a close friend who knows you well enough to be truthful. Never sycophantic, never clinical.
portrait-professional.md) (opt-in only)Do not produce this by default. Only generate if the user explicitly requests it (resume help, LinkedIn, interview prep, "what's my tech stack", etc.).
The document a hiring manager, recruiter, or professional contact should read.
Structure:
Proficiency calibration: For each technical area, assign an evidence-based depth level:
Always show the evidence for the rating. "Expert — 1,136 sessions, custom management commands, startup optimization from 5s to 1.2s" is credible. "Expert" alone is not.
Tone: Professional but not stiff. Third-person. Backed by evidence. Useful for resume updates, LinkedIn, cover letter context, or interview prep.
working-with-me.md)Direct instructions for an AI assistant or collaborator.
Structure:
Tone: Imperative, second-person, like agent instruction files (CLAUDE.md/AGENTS.md). Optimized for AI consumption.
system-prompt.md)A compact (under 1000 word) version of the Working-With-Me Guide, formatted for direct injection into an AI assistant's system prompt. Everything essential, nothing wasted.
Structure: Single flowing document with short sections. No tables or complex formatting. Must work in any LLM's system prompt field.
Run Phase 1 discovery. Report what sources were found and their sizes. Ask the user if there are additional data sources to include (e.g., specific directories, exported chat logs, notes).
Run Phase 2 deep reading with parallel subagents. This is the most token-intensive step.
Apply the analysis framework across all seven dimensions. Compile evidence for each finding. Flag inferences that are weakly supported.
Write all requested output documents. Apply bias guardrails during writing.
Share the outputs with the user. Invite feedback. Note that the profile is a snapshot — it reflects who they are now, from the evidence available, and should be updated over time.
If the user identifies inaccuracies or missing dimensions, update the documents. The user knows themselves better than any analysis — their corrections are data too.
The personal portrait quality depends heavily on the writing model's ability to synthesize narrative from evidence. Use the best available model tier for each task:
When running all four documents, consider dispatching subagents with model overrides: flagship tier for the personal portrait, mid-tier for the other three.