Openclaw Spirits

v1.3.2

Companion spirit system for OpenClaw agents. Every user gets a unique spirit creature — deterministically generated from their identity (24 species, 5 rariti...

2· 397·2 current·2 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for ahaaiclub/openclaw-spirits.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Openclaw Spirits" (ahaaiclub/openclaw-spirits) from ClawHub.
Skill page: https://clawhub.ai/ahaaiclub/openclaw-spirits
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install openclaw-spirits

ClawHub CLI

Package manager switcher

npx clawhub@latest install openclaw-spirits
Security Scan
VirusTotalVirusTotal
Pending
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description, assets (sprites.json, companion.json), and scripts (generate.js, render.js, display.js, soul.js) align with a deterministic companion generator. No unrelated credentials, binaries, or platform-level access are requested.
Instruction Scope
Runtime instructions ask the agent to run local node scripts, call the agent's LLM to generate the 'soul', and save companion data under {baseDir}/assets/companion.json — all consistent with the stated purpose. The skill also instructs the agent to occasionally initiate brief passive messages; that is scope-appropriate for a 'companion' skill but could be considered unsolicited behavior by some users.
Install Mechanism
No install spec provided (instruction-only from registry). Code and assets are packaged with the skill; there are no external download/install steps or third-party package pulls in the manifest.
Credentials
Skill declares no required env vars or credentials, which matches the instructions. It does require a user identifier (Feishu open_id, Telegram ID, Discord ID, or username) to deterministically generate a spirit — this means PII-like identifiers will be used as seed input and stored in an in-skill companion.json; consider privacy implications of using platform IDs.
Persistence & Privilege
always:false and model invocation allowed (platform default). The skill's guidance asks for occasional passive appearances (agent-initiated one-liners), but this autonomy is not combined with broad credentials or system changes. No evidence the skill modifies other skills or system-wide configs.
Assessment
This package appears to be what it says: a deterministic 'spirit' companion that runs entirely from local scripts and the agent's LLM. Before installing, consider: (1) Privacy — the skill seeds generation with a user ID (open_id, Telegram/Discord ID, or username) and stores companion.json in the skill directory; if you don't want those identifiers used/stored, don't install. (2) Passive messages — the skill explicitly directs the agent to sometimes send short unsolicited one-liners; if you prefer no autonomous chatter, disable or avoid enabling the skill. (3) Review soul.js and other scripts yourself (or request their full source) to confirm they do not make external network calls or require API keys; the SKILL.md claims no network activity, but verifying the actual scripts eliminates residual doubt.

Like a lobster shell, security has layers — review code before you run it.

companionvk97cmp67qn66vm9yf19e7sh9vn8450e7creaturevk97cmp67qn66vm9yf19e7sh9vn8450e7engagementvk97cmp67qn66vm9yf19e7sh9vn8450e7familiarvk97cmp67qn66vm9yf19e7sh9vn8450e7gamificationvk97cmp67qn66vm9yf19e7sh9vn8450e7identityvk97cmp67qn66vm9yf19e7sh9vn8450e7latestvk97cmp67qn66vm9yf19e7sh9vn8450e7openclawvk97cmp67qn66vm9yf19e7sh9vn8450e7petvk97cmp67qn66vm9yf19e7sh9vn8450e7spiritsvk97cmp67qn66vm9yf19e7sh9vn8450e7virtual-petvk97cmp67qn66vm9yf19e7sh9vn8450e7
397downloads
2stars
10versions
Updated 3w ago
v1.3.2
MIT-0

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

CommandWhat it does
spirit or spirit showDisplay your spirit card
spirit summonFirst-time summoning (with hatching animation)
spirit statsDetailed 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:

node {baseDir}/scripts/display.js {baseDir}/assets/companion.json zh
node {baseDir}/scripts/display.js {baseDir}/assets/companion.json en

Species Emoji Map

SpeciesEmojiSpeciesEmoji
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 (元灵)

  1. Inkling 墨灵 — Shape-shifting ink drop
  2. Rustbell 锈铃 — Rusty bell with warm ring
  3. Mossrock 苔石 — Mossy rock that blinks
  4. Frostfang 霜齿 — Angular ice-fox
  5. Loopwyrm 迴纹 — Self-biting dragon
  6. Bubbell 泡铃 — Unbreakable bubble with face
  7. Cogbeast 齿轮兽 — Self-running gear beast
  8. Umbra 影子 — Semi-independent shadow
  9. Stardust 星沙 — Curious cosmic dust
  10. Crackle 裂纹 — Cracked crystal leaking light
  11. Wickling 烛芯 — Sentient candle
  12. Echochord 弦音 — Floating harp string

Comments

Loading comments...