$npx -y skills add acnlabs/OpenPersona --skill anyone-skillDistill anyone into a runnable OpenPersona skill pack — real or fictional, personal or public, living or historical. Collects chat logs, documents, and public content, extracts a 4-dimension persona, and generates a portable OpenPersona pack via skills/open-persona. Use when aske
| 1 | # anyone.skill — Distill Anyone |
| 2 | |
| 3 | > Every person is a unique decision system, an irreplicable voice, a finite set of memories. |
| 4 | > **anyone-skill** distills that uniqueness into a portable, evolvable OpenPersona skill pack. |
| 5 | |
| 6 | anyone-skill is a **distillation front-end** for OpenPersona. It handles data collection, 4-dimension extraction, and evidence grading. The final output is a full OpenPersona persona pack generated via `skills/open-persona`. |
| 7 | |
| 8 | **Dependency chain**: `anyone-skill` → `skills/open-persona` → `openpersona create` |
| 9 | **Extended chain (local model)**: `anyone-skill` → `persona-knowledge` → `persona-model-trainer` → runnable persona model |
| 10 | |
| 11 | **Optional integration**: When `persona-knowledge` is installed (`skills/persona-knowledge/`), anyone-skill uses it for persistent storage, semantic search, and Knowledge Graph instead of writing directly to `training/raw/`. Detection: |
| 12 | |
| 13 | ```bash |
| 14 | # Check at start of Phase 3 — if this directory exists, use persona-knowledge integration |
| 15 | ls skills/persona-knowledge/SKILL.md 2>/dev/null && echo "persona-knowledge detected" |
| 16 | ``` |
| 17 | |
| 18 | When detected, data flow becomes: `source → persona-knowledge ingest → MemPalace + KG + wiki → persona-knowledge export → training/` |
| 19 | |
| 20 | ## Trigger phrases |
| 21 | |
| 22 | - `/create-anyone` |
| 23 | - "distill X into a skill" |
| 24 | - "create a persona for X" |
| 25 | - "make a skill pack for X" |
| 26 | - "I want to talk to X as an AI" |
| 27 | - "clone X's personality" |
| 28 | |
| 29 | To evolve an existing persona: |
| 30 | |
| 31 | - "I have more data" / "add this to X" |
| 32 | - "that's not right" / "X wouldn't say that" |
| 33 | - `/update-anyone {slug}` |
| 34 | |
| 35 | --- |
| 36 | |
| 37 | ## Tools |
| 38 | |
| 39 | |
| 40 | | Task | Tool | |
| 41 | | -------------------------------------------- | -------------------------------------------------------------------------------------- | |
| 42 | | Read any text / JSON / CSV / PDF / image | `Read` (native — use for most chat exports) | |
| 43 | | Search public figures / fictional characters | `WebSearch` | |
| 44 | | Extract SQLite databases (iMessage / WeChat) | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/scripts/preprocess.py --input <file.db>` | |
| 45 | | Sample oversized files (>5000 messages) | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/scripts/preprocess.py --input <file> --max 3000` | |
| 46 | | Write / update files | `Write` / `Edit` | |
| 47 | | Version management | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/scripts/version_manager.py` | |
| 48 | | List existing personas | `Bash` → `python3 ${CLAUDE_SKILL_DIR}/scripts/skill_writer.py --action list` | |
| 49 | |
| 50 | |
| 51 | > **Reading strategy**: use `Read` directly for all text-based exports — WhatsApp `_chat.txt`, Telegram `result.json`, Slack/Discord JSON, email `.eml`, Twitter/X archive, Feishu/DingTalk export, plain text, CSV. The agent understands any readable format natively; no parser needed. |
| 52 | > Use `preprocess.py` only for: **(1)** binary SQLite `.db` files, **(2)** files too large to fit in context (auto-samples down to `--max`). |
| 53 | |
| 54 | --- |
| 55 | |
| 56 | ## Phase 0: Classify the Subject |
| 57 | |
| 58 | Determine which category the subject falls into — different categories use different data strategies and ethical rules: |
| 59 | |
| 60 | ``` |
| 61 | Who do you want to distill? |
| 62 | |
| 63 | [1] Yourself — full digital self |
| 64 | [2] Someone you know — colleague, friend, family, partner, ex |
| 65 | [3] Public figure — entrepreneur, artist, athlete, politician |
| 66 | [4] Fictional character — game, anime, novel, film, series |
| 67 | [5] Historical figure — relies on documents, biographies, speeches |
| 68 | [6] Archetype — composite persona, no single real subject |
| 69 | ``` |
| 70 | |
| 71 | --- |
| 72 | |
| 73 | ## Phase 1: Ethics & Copyright Check |
| 74 | |
| 75 | > Full rules: [references/ethics.md](references/ethics.md). Key points by category: |
| 76 | |
| 77 | **Someone you know** — confirm personal use only; no harassment, impersonation, or deception; all data stored locally. |
| 78 | |
| 79 | **Public figure** — use only publicly traceable sources; generated skill must include disclaimer on first run: *"Based on public information. Not the real person. For reference only."* |
| 80 | |
| 81 | **Fictional character** |
| 82 | |
| 83 | - Personal local use → no restrictions, direct roleplay mode |
| 84 | - Distributing to others → act |