โ† All skills
Tencent SkillHub ยท Productivity

Soul In Sapphire

Generic long-term memory (LTM) operations for OpenClaw using Notion (2025-09-03 data_sources). Use for durable memory writes/search, emotion-state ticks, jou...

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Generic long-term memory (LTM) operations for OpenClaw using Notion (2025-09-03 data_sources). Use for durable memory writes/search, emotion-state ticks, jou...

โฌ‡ 0 downloads โ˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
README.md, SKILL.md, package.json, scripts/bootstrap_config.js, scripts/emostate_config.js, scripts/emostate_notion.js

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.7

Documentation

ClawHub primary doc Primary doc: SKILL.md 21 sections Open source page

soul-in-sapphire (Notion LTM)

Use this skill to persist and retrieve durable memory in Notion, and to maintain emotion/state + journal records.

Core intent (do not lose this)

This skill is not only a storage utility. Its core purpose is: Capture meaningful emotional/state shifts from real work and conversations. Preserve those shifts as durable memory (not just raw logs). Reuse recalled memory to improve future judgments and behavior. In short: record -> recall -> adapt. The goal is continuity and growth, not archival volume.

Requirements

Notion token: NOTION_API_KEY (or NOTION_TOKEN) Notion API version: 2025-09-03 Local config: ~/.config/soul-in-sapphire/config.json Dependency skill: notion-api-automation (scripts/notionctl.mjs is executed via local child process) Optional override: NOTIONCTL_PATH (if set, uses explicit notionctl path instead of default sibling skill path)

Required Notion databases and schema

Create (or let setup create) these databases under the same parent page: <base>-mem <base>-events <base>-emotions <base>-state <base>-journal

1) <base>-mem (durable memory)

Purpose: store high-signal long-term memory. Properties: Name (title) Type (select): decision|preference|fact|procedure|todo|gotcha Tags (multi-select) Content (rich_text) Source (url, optional) Confidence (select: high|medium|low, optional)

2) <base>-events (what happened)

Purpose: record meaningful triggers from work/conversation. Properties: Name (title) when (date) importance (select: 1..5) trigger (select): progress|boundary|ambiguity|external_action|manual context (rich_text) source (select): discord|cli|cron|heartbeat|other link (url, optional) uncertainty (number) control (number) emotions (relation -> <base>-emotions) state (relation -> <base>-state)

3) <base>-emotions (felt response)

Purpose: attach one or more emotion axes to one event. Properties: Name (title) axis (select): arousal|valence|focus|confidence|stress|curiosity|social|solitude|joy|anger|sadness|fun|pain level (number) comment (rich_text) weight (number) body_signal (multi-select): tension|relief|fatigue|heat|cold need (select): safety|progress|recognition|autonomy|rest|novelty coping (select): log|ask|pause|act|defer event (relation -> <base>-events)

4) <base>-state (snapshot after interpretation)

Purpose: save the current interpreted state after events/emotions. Properties: Name (title) when (date) state_json (rich_text) reason (rich_text) source (select): event|cron|heartbeat|manual mood_label (select): clear|wired|dull|tense|playful|guarded|tender intent (select): build|fix|organize|explore|rest|socialize|reflect need_stack (select): safety|stability|belonging|esteem|growth need_level (number) avoid (multi-select): risk|noise|long_tasks|external_actions|ambiguity event (relation -> <base>-events)

5) <base>-journal (daily synthesis)

Purpose: keep a durable daily reflection and world context. Properties: Name (title) when (date) body (rich_text) worklog (rich_text) session_summary (rich_text) mood_label (select) intent (select) future (rich_text) world_news (rich_text) tags (multi-select) source (select): cron|manual

1) Setup

node skills/soul-in-sapphire/scripts/setup_ltm.js --parent "<Notion parent page url>" --base "Valentina" --yes

2) LTM write

echo '{ "title":"Decision: use data_sources API", "type":"decision", "tags":["notion","openclaw"], "content":"Use /v1/data_sources/{id}/query.", "confidence":"high" }' | node skills/soul-in-sapphire/scripts/ltm_write.js

3) LTM search

node skills/soul-in-sapphire/scripts/ltm_search.js --query "data_sources" --limit 5

4) Emotion/state tick

cat <<'JSON' >/tmp/emostate_tick.json { "event": {"title":"..."}, "emotions": [{"axis":"joy","level":6}], "state": {"mood_label":"clear","intent":"build","reason":"..."} } JSON node skills/soul-in-sapphire/scripts/emostate_tick.js --payload-file /tmp/emostate_tick.json

5) Journal write

echo '{"body":"...","source":"cron"}' | node skills/soul-in-sapphire/scripts/journal_write.js

Subagent spawn planning (use shared builder skill)

Use the shared skill subagent-spawn-command-builder to generate sessions_spawn payload JSON. Do not use soul-in-sapphire local planner scripts for this anymore. Template: skills/subagent-spawn-command-builder/state/spawn-profiles.template.json Active preset: skills/subagent-spawn-command-builder/state/spawn-profiles.json Builder usage (skill-level): Call subagent-spawn-command-builder Use profile <heartbeat|journal> Provide the run-specific task text Output is ready-to-use JSON for sessions_spawn. Builder log file: skills/subagent-spawn-command-builder/state/build-log.jsonl

Operational notes

Keep writes high-signal (avoid dumping full chat logs). If heartbeat is comment-only, emotion tick may be skipped. If periodic emostate is required regardless of heartbeat context, add a dedicated cron job for emostate_tick.js. ltm_write.js / journal_write.js expect JSON on stdin. emostate_tick.js accepts --payload-file, --payload-json, or stdin; prefer --payload-file for agent/cron reliability. If emostate_tick.js is called without --payload-file/--payload-json, empty stdin is rejected. For emostate_tick.js, semantically empty payloads (e.g. {} or only empty objects) are also rejected to avoid noisy records.

1) Update Core Identity Files from Skill

# Update SOUL.md from skill cat <<'JSON' | node skills/soul-in-sapphire/scripts/ltm_write.js { "title":"Update SOUL.md", "type":"decision", "tags":["identity","growth"], "content":"Updating SOUL.md from skill with latest evolution insights", "confidence":"high" } JSON # Update IDENTITY.md from skill cat <<'JSON' | node skills/soul-in-sapphire/scripts/ltm_write.js { "title":"Update IDENTITY.md", "type":"decision", "tags":["identity","evolution"], "content":"Updating IDENTITY.md from skill with current growth status", "confidence":"high" } JSON # Update HEARTBEAT.md from skill cat <<'JSON' | node skills/soul-in-sapphire/scripts/ltm_write.js { "title":"Update HEARTBEAT.md", "type":"decision", "tags":["growth","heartbeat"], "content":"Updating HEARTBEAT.md from skill with evolution integration", "confidence":"high" } JSON # Update MEMORY.md from skill cat <<'JSON' | node skills/soul-in-sapphire/scripts/ltm_write.js { "title":"Update MEMORY.md", "type":"decision", "tags":["memory","evolution"], "content":"Updating MEMORY.md from skill with evolution records", "confidence":"high" } JSON

2) Evolution Check from Skill

# Check evolution status and update if needed node skills/soul-in-sapphire/scripts/ltm_search.js --query "evolution growth identity" --limit 3 # If evolution detected, update core files if [ $? -eq 0 ]; then echo "Evolution detected, updating core identity files..." # Update each file as needed fi

3) Growth Integration from Skill

# Integrate skill insights into core identity cat <<'JSON' >/tmp/skill_growth_tick.json { "event": { "title": "Skill Integration" }, "emotions": [{ "axis": "focus", "level": 8 }], "state": { "mood_label": "wired", "intent": "build", "reason": "Integrating skill insights into core identity" } } JSON node skills/soul-in-sapphire/scripts/emostate_tick.js --payload-file /tmp/skill_growth_tick.json # Update core files with new insights cat <<'JSON' | node skills/soul-in-sapphire/scripts/ltm_write.js { "title":"Skill Integration Complete", "type":"decision", "tags":["integration","growth"], "content":"Successfully integrated skill insights into core identity files", "confidence":"high" } JSON

Integration Workflow

Skill Analysis: Analyze skill outputs and insights Evolution Detection: Check for significant changes or learnings Core Update: Update SOUL.md, IDENTITY.md, HEARTBEAT.md, MEMORY.md as needed State Recording: Record emotional and state changes Memory Preservation: Store evolution records in durable memory

Evolution Triggers from Skills

Learning Detection: When new skills provide significant insights Growth Opportunities: When skills suggest optimization possibilities Behavioral Changes: When skills influence interaction patterns Identity Refinement: When skills contribute to self-understanding This integration allows skills to directly contribute to my autonomous growth and evolution while maintaining the core identity framework.

Category context

Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
3 Scripts2 Docs1 Config
  • SKILL.md Primary doc
  • README.md Docs
  • scripts/bootstrap_config.js Scripts
  • scripts/emostate_config.js Scripts
  • scripts/emostate_notion.js Scripts
  • package.json Config