Trusted — Risk Score 5/100
Last scan:1 day ago Rescan
5 /100
soul-in-sapphire
Long-term memory, state tracking, continuity review, and identity-change support for OpenClaw using Notion as a durable backend
A legitimate long-term-memory and continuity skill that uses a well-structured local subprocess bridge to the Notion API, with filesystem operations confined to documented paths and no credential harvesting or exfiltration.
Skill Namesoul-in-sapphire
Duration43.6s
Enginepi
Safe to install
Approve for use. No actionable security concerns found.
ResourceDeclaredInferredStatusEvidence
Filesystem READ READ ✓ Aligned setup_ltm.js:identityName() reads IDENTITY.md; emostate_tick.js updates memory/n…
Network READ READ ✓ Aligned notionctl_bridge.js:runApi() proxies all API calls through local notionctl.mjs s…
Shell WRITE WRITE ✓ Aligned notionctl_bridge.js:17 uses execFileSync('node', args) — declared in SKILL.md me…
Environment READ READ ✓ Aligned notionctl_bridge.js:9 reads NOTIONCTL_PATH; emostate_tick.js does not iterate os…
Skill Invoke WRITE WRITE ✓ Aligned SKILL.md declares 'dependsOnSkills': ['notion-api-automation']; notionctl_bridge…
Clipboard NONE NONE No clipboard access found in any script
Browser NONE NONE No browser automation in any script
Database WRITE WRITE ✓ Aligned All write scripts (emostate_tick.js, journal_write.js, ltm_write.js) create Noti…
1 findings
🔗
Medium External URL 外部 URL
https://www.notion.so/my-integrations
README.md:159

File Tree

17 files · 77.3 KB · 2257 lines
JavaScript 11f · 1494L Markdown 2f · 721L JSON 4f · 42L
├─ 📁 scripts
│ ├─ 📜 conflict_track.js JavaScript 80L · 2.5 KB
│ ├─ 📜 continuity_check.js JavaScript 136L · 4.7 KB
│ ├─ 📜 emostate_tick.js JavaScript 442L · 13.5 KB
│ ├─ 📜 identity_diff.js JavaScript 90L · 3.2 KB
│ ├─ 📋 input.json JSON 10L · 1.6 KB
│ ├─ 📜 journal_patch_schema.js JavaScript 42L · 1.4 KB
│ ├─ 📜 journal_write.js JavaScript 119L · 3.9 KB
│ ├─ 📜 ltm_search.js JavaScript 67L · 2.2 KB
│ ├─ 📜 ltm_write.js JavaScript 48L · 1.9 KB
│ ├─ 📜 notionctl_bridge.js JavaScript 190L · 6.3 KB
│ ├─ 📜 setup_ltm.js JavaScript 230L · 8.3 KB
│ └─ 📜 state_recall.js JavaScript 50L · 1.7 KB
├─ 📁 state
│ └─ 📋 subagent-models.json JSON 17L · 293 B
├─ 📋 package-lock.json JSON 10L · 147 B
├─ 📋 package.json JSON 5L · 72 B
├─ 📝 README.md Markdown 295L · 9.4 KB
└─ 📝 SKILL.md Markdown 426L · 16.3 KB

Dependencies 1 items

PackageVersionSourceKnown VulnsNotes
node (runtime) required system No Runtime dependency; no npm packages declared in package.json

Security Positives

✓ No credential harvesting — NOTION_API_KEY is consumed only for Notion authentication, not exfiltrated
✓ No sensitive path access — ~/.ssh, ~/.aws, .env files are not read
✓ No obfuscation — all code is clean ESM JavaScript with readable structure
✓ No remote script execution — no curl|bash, wget|sh, or eval() of encoded strings
✓ No base64-encoded execution or anti-analysis techniques
✓ Doc-to-code match is excellent — SKILL.md accurately describes all implemented behavior
✓ Subprocess via execFileSync is limited to the documented notionctl.mjs entrypoint
✓ Local filesystem writes are confined to documented paths (memory/, state/)
✓ Dependency surface is minimal — package.json has no external npm dependencies
✓ All API interactions go exclusively through the official Notion API
✓ Conflict records and state snapshots are append-only local artifacts with no outbound transmission