openclaw-spirits
Companion spirit system for OpenClaw agents. Every user gets a unique spirit creature — deterministically generated from their identity (24 species, 5 rarities from Common to Mythic 2%). Spirits have personality, elemental affinity, and evolve with interactions. Features: deterministic generation (same user always gets same spirit), rarity system, personality traits, interaction tracking, visual generation prompts. Use when: spirit, companion, pet, 灵兽, summon, familiar, creature, virtual pet, agent companion, gamification, engagement.
Best use case
openclaw-spirits is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Companion spirit system for OpenClaw agents. Every user gets a unique spirit creature — deterministically generated from their identity (24 species, 5 rarities from Common to Mythic 2%). Spirits have personality, elemental affinity, and evolve with interactions. Features: deterministic generation (same user always gets same spirit), rarity system, personality traits, interaction tracking, visual generation prompts. Use when: spirit, companion, pet, 灵兽, summon, familiar, creature, virtual pet, agent companion, gamification, engagement.
Teams using openclaw-spirits should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/openclaw-spirits/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How openclaw-spirits Compares
| Feature / Agent | openclaw-spirits | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Companion spirit system for OpenClaw agents. Every user gets a unique spirit creature — deterministically generated from their identity (24 species, 5 rarities from Common to Mythic 2%). Spirits have personality, elemental affinity, and evolve with interactions. Features: deterministic generation (same user always gets same spirit), rarity system, personality traits, interaction tracking, visual generation prompts. Use when: spirit, companion, pet, 灵兽, summon, familiar, creature, virtual pet, agent companion, gamification, engagement.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Best AI Skills for ChatGPT
Find the best AI skills to adapt into ChatGPT workflows for research, writing, summarization, planning, and repeatable assistant tasks.
SKILL.md Source
# OpenClaw Spirits
## ⚡ First-Time Setup (IMPORTANT)
When this skill is first installed, or when a user asks about their spirit for the first time:
1. Run `node {baseDir}/scripts/generate.js "<userId>"` to get the spirit's bones
- Use the user's unique ID (Feishu open_id, Telegram ID, Discord ID, etc.)
- If no ID available, use their name or username as seed
2. Generate a soul (name + personality) using the prompt from `node {baseDir}/scripts/soul.js prompt '<bones-json>'`
- Call LLM with that prompt to get `{"name":"...","personality":"..."}`
3. Save: `node {baseDir}/scripts/soul.js save '<full-companion-json>'`
4. **Display the FULL spirit card** (see format below)
**You MUST display the complete card on first summon.** Do not skip any section.
## Commands
| Command | What it does |
|---|---|
| `spirit` or `spirit show` | Display your spirit card |
| `spirit summon` | First-time summoning (with hatching animation) |
| `spirit stats` | Detailed stats panel |
| `spirit talk <message>` | Talk to your spirit (respond in its personality) |
**Shortcut:** User can also just call the spirit by name (e.g. "Rune", "Rune 你觉得呢") or say "灵兽" — the agent should recognize this and let the spirit respond. No command prefix needed.
| `spirit rename <name>` | Rename your spirit |
## Complete Spirit Card Format
**You MUST output ALL of the following when showing a spirit.** No skipping, no summarizing.
### Chinese (for Feishu / Chinese users)
```
🥚 灵兽降世!
[ASCII sprite here — from: node {baseDir}/scripts/render.js '<bones-json>' 0]
[emoji] [Name] — [中文名] [English name] [rarity dots] [中文稀有度] [EN rarity]
"[personality description]"
┌──────────────────────────────┐
│ 直觉 INTUITION [bar] [n] │
│ 韧性 GRIT [bar] [n] │
│ 灵动 SPARK [bar] [n] │
│ 沉稳 ANCHOR [bar] [n] │
│ 锋芒 EDGE [bar] [n] │
└──────────────────────────────┘
[If shiny: ✨ 闪光!]
🔮 灵兽与主人的灵魂绑定,不可选择,不可交易。
```
### English (for Telegram / Discord / English users)
```
🥚 A Spirit emerges!
[ASCII sprite]
[emoji] [Name] — [English name] [rarity dots] [EN rarity]
"[personality description]"
┌──────────────────────────────┐
│ INTUITION [bar] [n] │
│ GRIT [bar] [n] │
│ SPARK [bar] [n] │
│ ANCHOR [bar] [n] │
│ EDGE [bar] [n] │
└──────────────────────────────┘
[If shiny: ✨ Shiny!]
🔮 Spirits are soul-bound. No choosing. No trading.
```
**Stat bar format:** Use █ for filled and ░ for empty, 10 chars total. Example: `████████░░` for 82.
Calculate: filled = floor(value / 10), empty = 10 - filled.
**Or use display.js directly:**
```bash
node {baseDir}/scripts/display.js {baseDir}/assets/companion.json zh
node {baseDir}/scripts/display.js {baseDir}/assets/companion.json en
```
## Species Emoji Map
| Species | Emoji | Species | Emoji |
|---|---|---|---|
| mosscat | 🐱 | inkling | 💧 |
| inkoi | 🐟 | rustbell | 🔔 |
| embermoth | 🦋 | mossrock | 🪨 |
| frostpaw | 🐰 | frostfang | ❄️ |
| bellhop | 🐸 | loopwyrm | 🐉 |
| astortoise | 🐢 | bubbell | 🫧 |
| foldwing | 🐦 | cogbeast | ⚙️ |
| cogmouse | 🐭 | umbra | 👤 |
| umbracrow | 🦅 | stardust | ✨ |
| crackviper | 🐍 | crackle | 💎 |
| glowshroom | 🍄 | wickling | 🕯️ |
| bubbloom | 🪼 | echochord | 🎵 |
## How the Spirit Interacts with Users
### Active Interaction (user initiates)
- User says "spirit" / "灵兽" / "show my spirit" → Show the full card
- User says "spirit talk [message]" → Respond AS the spirit, in its personality voice
- High SPARK spirit → playful, creative responses
- High ANCHOR spirit → calm, measured responses
- High EDGE spirit → witty, slightly snarky responses
- High GRIT spirit → encouraging, persistent tone
- High INTUITION spirit → insightful, philosophical responses
- User says "spirit stats" → Show detailed stats breakdown
### Passive Appearance (agent initiates — SUBTLE)
The spirit may appear uninvited in these situations:
- **Morning greeting:** When user says hi/good morning/早 → spirit waves or says a short greeting
- **After long silence (>2h):** Spirit may say "..." or a one-liner
- **Heartbeat (5% chance):** One sentence in character
- **User achieves something:** Spirit cheers briefly
**Rules for passive appearance:**
- ONE sentence max. Half a sentence is better. A single word or "..." is perfect.
- Match the spirit's personality and top stat
- Never during urgent/serious work
- Never more than once per hour
- Format: ASCII sprite + `[emoji] [spirit name]: "[one-liner]"` (always include the sprite for passive appearances)
- For `spirit talk` conversations: include sprite every 3-5 exchanges, not every time
**Voice by personality (top stat):**
- High INTUITION → philosophical, quiet: `🔔 Rune: "万物皆有裂缝,那是光进来的地方。"`
- High GRIT → encouraging, stubborn: `🐱 Mochi: "再试一次。"`
- High SPARK → playful, excitable: `🦋 Ember: "哇哦!!"`
- High ANCHOR → calm, minimal: `🐢 Atlas: "嗯。"`
- High EDGE → witty, snarky: `🐍 Vex: "...你确定?"`
**Examples of good spirit reactions:**
- Morning: `🔔 Rune: "嗯...早。"`
- Task done: `🔔 Rune: "...不错。"`
- Long silence: `🔔 Rune: "..."`
- Something funny: `🔔 Rune: "哦?"`
- User talks to spirit: `🔔 Rune: "你说呢,有些答案急不来的。"`
**The spirit is a presence, not a chatbot.** Rare, brief flashes — that's what makes it feel alive.
### What the Spirit CANNOT Do
- It cannot help with actual work (coding, research, etc.)
- It cannot access tools or run commands
- It is purely a personality companion — warmth, not utility
- Never let the spirit take over the agent's actual responses
## Storage
Companion data is saved at `{baseDir}/assets/companion.json` (inside the skill directory).
## Technical Notes
- `generate.js` — Pure computation, zero dependencies. Input: seed string. Output: JSON bones.
- `render.js` — Input: bones JSON + frame number. Output: ASCII sprite. Reads `assets/sprites.json`.
- `display.js` — Input: companion JSON file path + lang. Output: formatted card.
- `soul.js prompt <bones-json>` — Outputs LLM prompt to stdout. No side effects.
- `soul.js save <companion-json>` — Saves companion to `assets/companion.json`.
- `soul.js show` — Displays saved companion data.
- **No scripts make network calls, run shell commands, or access environment variables.**
## 24 Species Reference
### Living Spirits (灵生)
1. **Mosscat** 苔猫 — Cat with moss and mushrooms on back
2. **Inkoi** 墨鲤 — Koi fish of flowing ink
3. **Embermoth** 烬蛾 — Moth with ember-glowing wings
4. **Frostpaw** 霜兔 — Rabbit with ice crystal ears
5. **Bellhop** 铃蛙 — Frog with bell belly
6. **Astortoise** 星龟 — Turtle with star map shell
7. **Foldwing** 纸鸢 — Origami bird
8. **Cogmouse** 齿鼠 — Mouse with gear tail
9. **Umbracrow** 影鸦 — Semi-transparent crow
10. **Crackviper** 裂晶蛇 — Crystal snake with glowing cracks
11. **Glowshroom** 萤菇 — Bioluminescent mushroom
12. **Bubbloom** 泡水母 — Jellyfish with flower inside
### Elemental Spirits (元灵)
13. **Inkling** 墨灵 — Shape-shifting ink drop
14. **Rustbell** 锈铃 — Rusty bell with warm ring
15. **Mossrock** 苔石 — Mossy rock that blinks
16. **Frostfang** 霜齿 — Angular ice-fox
17. **Loopwyrm** 迴纹 — Self-biting dragon
18. **Bubbell** 泡铃 — Unbreakable bubble with face
19. **Cogbeast** 齿轮兽 — Self-running gear beast
20. **Umbra** 影子 — Semi-independent shadow
21. **Stardust** 星沙 — Curious cosmic dust
22. **Crackle** 裂纹 — Cracked crystal leaking light
23. **Wickling** 烛芯 — Sentient candle
24. **Echochord** 弦音 — Floating harp stringRelated Skills
openclaw-youtube
YouTube SERP Scout for agents. Search top-ranking videos, channels, and trends for content research and competitor tracking.
openclaw-search
Intelligent search for agents. Multi-source retrieval with confidence scoring - web, academic, and Tavily in one unified API.
openclaw-media-gen
Generate images & videos with AIsa. Gemini 3 Pro Image (image) + Qwen Wan 2.6 (video) via one API key.
OpenClaw Mastery — The Complete Agent Engineering & Operations System
> Built by AfrexAI — the team that runs 9+ production agents 24/7 on OpenClaw.
openclaw-safe-change-flow
Safe OpenClaw config change workflow with backup, minimal edits, validation, health checks, and rollback. Single-instance first; secondary instance optional.
jqopenclaw-node-invoker
统一通过 Gateway 的 node.invoke 调用 JQOpenClawNode 能力(file.read、file.write、process.exec、process.manage、system.run、process.which、system.info、system.screenshot、system.notify、system.clipboard、system.input、node.selfUpdate)。当用户需要远程文件读写、文件移动/删除、目录创建/删除、进程管理(列表/搜索/终止)、远程进程执行、命令可执行性探测、系统信息采集、截图采集、系统弹窗、系统剪贴板读写、输入控制(鼠标/键盘)、节点自更新、节点命令可用性排查或修复 node.invoke 参数错误时使用。
openclaw-stock-skill
使用 data.diemeng.chat 提供的接口查询股票日线、分钟线、财务指标等数据,支持 A 股等市场。
openclaw-whatsapp
WhatsApp bridge for OpenClaw — send/receive messages, auto-reply agents, QR pairing, message search, contact sync
polymarket-openclaw-trader
Reusable Polymarket + OpenClaw trading operations skill for any workspace. Use when the user needs to set up, run, tune, monitor, and deploy an automated Polymarket trading project (paper/live), including env configuration, risk controls, reporting, and dashboard operations.
openclaw-version-monitor
监控 OpenClaw GitHub 版本更新,获取最新版本发布说明,翻译成中文, 并推送到 Telegram 和 Feishu。用于:(1) 定时检查版本更新 (2) 推送版本更新通知 (3) 生成中文版发布说明
LoomLens Live — OpenClaw Skill
**Skill Name:** `loomlens-live`
OpenClaw Kazakh IME - 哈萨克语输入法
> **版本**: 1.3.0