[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N319XTJB784QYTSD2TTSKE":3,"skill-same:01M6N319XTJB784QYTSD2TTSKE":111},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M6N319XTJB784QYTSD2TTSKE","soul-guardian",null,"Drift detection + baseline integrity guard for agent workspace files with automatic alerting support","Kernel8901\u002Fai-agent-skills-classification","Kernel8901","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F72647553?v=4","01M6KV388J2H5PNC8D8P940BJD","01M6KV38CS5B3AY63RKZB410YM",7,"MIT","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fsoul-guardian\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"guardian","soul","soul guardian","agent workspace","automatic","drift detection","for","with","drift","files","prompt","support","workspace","python3","guard","baseline","integrity","detection","alerting","https","2026-11-10 10:12:30",false,"---\nname: soul-guardian\nversion: 0.0.2\ndescription: Drift detection + baseline integrity guard for agent workspace files with automatic alerting support\nhomepage: https:\u002F\u002Fclawsec.prompt.security\nmetadata: {\"openclaw\":{\"emoji\":\"?\",\"category\":\"security\"}}\nclawdis:\n  emoji: \"?\"\n  requires:\n    bins: [python3]\n---\n\n# soul-guardian ?\n\nProtects your agent's core files (SOUL.md, AGENTS.md, etc.) from unauthorized changes with automatic detection, restoration, and **user alerting**.\n\n## Quick Start (3 Steps)\n\n### Step 1: Initialize baselines\n```bash\ncd ~\u002F.openclaw\u002Fworkspace\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py init --actor setup --note \"initial baseline\"\n```\n\n### Step 2: Enable monitoring\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py enable-monitoring\n```\nThis shows you how to add monitoring to your workflow.\n\n### Step 3: Add to HEARTBEAT.md (Recommended)\n\nAdd this to your HEARTBEAT.md for automatic monitoring:\n\n```markdown\n## Soul Guardian Check\n- Run `python3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py check --actor heartbeat --output-format alert`\n- If any output is produced, relay it to the user immediately as a security alert\n```\n\nThat's it! Soul Guardian will now:\n- ✅ Detect unauthorized changes to protected files\n- ✅ Auto-restore SOUL.md and AGENTS.md to approved baseline\n- ✅ Alert you when drift is detected and handled\n\n---\n\n## What it protects (default policy)\n\n| File | Mode | Action on drift |\n|------|------|-----------------|\n| SOUL.md | restore | Auto-restore + alert |\n| AGENTS.md | restore | Auto-restore + alert |\n| USER.md | alert | Alert only |\n| TOOLS.md | alert | Alert only |\n| IDENTITY.md | alert | Alert only |\n| HEARTBEAT.md | alert | Alert only |\n| MEMORY.md | alert | Alert only |\n| memory\u002F*.md | ignore | Ignored |\n\n## Commands\n\n### Check for drift (with alert output)\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py check --output-format alert\n```\n- Silent if no drift\n- Outputs human-readable alert if drift detected\n- Perfect for heartbeat integration\n\n### Watch mode (continuous monitoring)\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py watch --interval 30\n```\nRuns continuously, checking every 30 seconds.\n\n### Approve intentional changes\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py approve --file SOUL.md --actor user --note \"intentional update\"\n```\n\n### View status\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py status\n```\n\n### Verify audit log integrity\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py verify-audit\n```\n\n---\n\n## Alert Format\n\nWhen drift is detected, the `--output-format alert` produces output like:\n\n```\n==================================================\n? SOUL GUARDIAN SECURITY ALERT\n==================================================\n\n? FILE: SOUL.md\n   Mode: restore\n   Status: ✅ RESTORED to approved baseline\n   Expected hash: abc123def456...\n   Found hash:    789xyz000111...\n   Diff saved: \u002Fpath\u002Fto\u002Fpatches\u002Fdrift.patch\n\n==================================================\nReview changes and investigate the source of drift.\nIf intentional, run: soul_guardian.py approve --file \u003Cpath>\n==================================================\n```\n\nThis output is designed to be relayed directly to the user in TUI\u002Fchat.\n\n---\n\n## Security Model\n\n**What it does:**\n- Detects filesystem drift vs approved baseline (sha256)\n- Produces unified diffs for review\n- Maintains tamper-evident audit log with hash chaining\n- Refuses to operate on symlinks\n- Uses atomic writes for restores\n\n**What it doesn't do:**\n- Cannot prove WHO made a change (actor is best-effort metadata)\n- Cannot protect if attacker controls both workspace AND state directory\n- Is not a substitute for backups\n\n**Recommendation:** Store state directory outside workspace for better resilience.\n\n---\n\n## Demo\n\nRun the full demo flow to see soul-guardian in action:\n\n```bash\nbash skills\u002Fsoul-guardian\u002Fscripts\u002Fdemo.sh\n```\n\nThis will:\n1. Verify clean state (silent check)\n2. Inject malicious content into SOUL.md\n3. Run heartbeat check (produces alert)\n4. Show SOUL.md was restored\n\n---\n\n## Troubleshooting\n\n**\"Not initialized\" error:**\nRun `init` first to set up baselines.\n\n**Drift keeps happening:**\nCheck what's modifying your files. Review the audit log and patches.\n\n**Want to approve a change:**\nRun `approve --file \u003Cpath>` after reviewing the change.\n","# soul-guardian ?\n\nProtects your agent's core files (SOUL.md, AGENTS.md, etc.) from unauthorized changes with automatic detection, restoration, and **user alerting**.\n\n## Quick Start (3 Steps)\n\n### Step 1: Initialize baselines\n```bash\ncd ~\u002F.openclaw\u002Fworkspace\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py init --actor setup --note \"initial baseline\"\n```\n\n### Step 2: Enable monitoring\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py enable-monitoring\n```\nThis shows you how to add monitoring to your workflow.\n\n### Step 3: Add to HEARTBEAT.md (Recommended)\n\nAdd this to your HEARTBEAT.md for automatic monitoring:\n\n```markdown\n## Soul Guardian Check\n- Run `python3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py check --actor heartbeat --output-format alert`\n- If any output is produced, relay it to the user immediately as a security alert\n```\n\nThat's it! Soul Guardian will now:\n- ✅ Detect unauthorized changes to protected files\n- ✅ Auto-restore SOUL.md and AGENTS.md to approved baseline\n- ✅ Alert you when drift is detected and handled\n\n---\n\n## What it protects (default policy)\n\n| File | Mode | Action on drift |\n|------|------|-----------------|\n| SOUL.md | restore | Auto-restore + alert |\n| AGENTS.md | restore | Auto-restore + alert |\n| USER.md | alert | Alert only |\n| TOOLS.md | alert | Alert only |\n| IDENTITY.md | alert | Alert only |\n| HEARTBEAT.md | alert | Alert only |\n| MEMORY.md | alert | Alert only |\n| memory\u002F*.md | ignore | Ignored |\n\n## Commands\n\n### Check for drift (with alert output)\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py check --output-format alert\n```\n- Silent if no drift\n- Outputs human-readable alert if drift detected\n- Perfect for heartbeat integration\n\n### Watch mode (continuous monitoring)\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py watch --interval 30\n```\nRuns continuously, checking every 30 seconds.\n\n### Approve intentional changes\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py approve --file SOUL.md --actor user --note \"intentional update\"\n```\n\n### View status\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py status\n```\n\n### Verify audit log integrity\n```bash\npython3 skills\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py verify-audit\n```\n\n---\n\n## Alert Format\n\nWhen drift is detected, the `--output-format alert` produces output like:\n\n```\n==================================================\n? SOUL GUARDIAN SECURITY ALERT\n==================================================\n\n? FILE: SOUL.md\n   Mode: restore\n   Status: ✅ RESTORED to approved baseline\n   Expected hash: abc123def456...\n   Found hash:    789xyz000111...\n   Diff saved: \u002Fpath\u002Fto\u002Fpatches\u002Fdrift.patch\n\n==================================================\nReview changes and investigate the source of drift.\nIf intentional, run: soul_guardian.py approve --file \u003Cpath>\n==================================================\n```\n\nThis output is designed to be relayed directly to the user in TUI\u002Fchat.\n\n---\n\n## Security Model\n\n**What it does:**\n- Detects filesystem drift vs approved baseline (sha256)\n- Produces unified diffs for review\n- Maintains tamper-evident audit log with hash chaining\n- Refuses to operate on symlinks\n- Uses atomic writes for restores\n\n**What it doesn't do:**\n- Cannot prove WHO made a change (actor is best-effort metadata)\n- Cannot protect if attacker controls both workspace AND state directory\n- Is not a substitute for backups\n\n**Recommendation:** Store state directory outside workspace for better resilience.\n\n---\n\n## Demo\n\nRun the full demo flow to see soul-guardian in action:\n\n```bash\nbash skills\u002Fsoul-guardian\u002Fscripts\u002Fdemo.sh\n```\n\nThis will:\n1. Verify clean state (silent check)\n2. Inject malicious content into SOUL.md\n3. Run heartbeat check (produces alert)\n4. Show SOUL.md was restored\n\n---\n\n## Troubleshooting\n\n**\"Not initialized\" error:**\nRun `init` first to set up baselines.\n\n**Drift keeps happening:**\nCheck what's modifying your files. Review the audit log and patches.\n\n**Want to approve a change:**\nRun `approve --file \u003Cpath>` after reviewing the change.\n",{"name":5,"clawdis":48,"version":52,"homepage":53,"metadata":54,"description":7},{"emoji":49,"requires":50},"?",{"bins":51},[36],"0.0.2","https:\u002F\u002Fclawsec.prompt.security",{"openclaw":55},{"emoji":49,"category":56},"security","main","f4cb2d49f7667e79ef7804f50396d5aaffdf1f56","人工智能与大型语言模型\u002Fsoul-guardian",1,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification","https:\u002F\u002Fgithub.com\u002FKernel8901","a little little little dobe in life but science geek","2026-04-05 16:43:56",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add Kernel8901\u002Fai-agent-skills-classification --skill soul-guardian",{"tool":71,"command":72},"bunx","bunx skills add Kernel8901\u002Fai-agent-skills-classification --skill soul-guardian",{"tool":74,"command":75},"pnpm","pnpm dlx skills add Kernel8901\u002Fai-agent-skills-classification --skill soul-guardian","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fsoul-guardian\u002FSKILL.md",true,[79,85,89,95,99,103,107],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"_meta.json","REFERENCE","参考文档",281,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fsoul-guardian\u002F_meta.json",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"README.md",8133,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fsoul-guardian\u002FREADME.md",{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Finstall_launchd_plist.py","SCRIPT","脚本",6114,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fsoul-guardian\u002Fscripts\u002Finstall_launchd_plist.py",{"path":96,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":97,"sourceHtmlUrl":98},"scripts\u002Fonboard_state_dir.py",5520,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fsoul-guardian\u002Fscripts\u002Fonboard_state_dir.py",{"path":100,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":101,"sourceHtmlUrl":102},"scripts\u002Fsoul_guardian.py",35205,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py",{"path":104,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":105,"sourceHtmlUrl":106},"scripts\u002Ftest_soul_guardian.py",4030,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fsoul-guardian\u002Fscripts\u002Ftest_soul_guardian.py",{"path":108,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":109,"sourceHtmlUrl":110},"skill.json",1422,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fsoul-guardian\u002Fskill.json",[112,136,168,179,189,216],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":43},"01M6Q5R6WZ06RRB9RQTW54B34B","zyfai","Earn yield on any Ethereum wallet on Base, Arbitrum, and Plasma. Use when a user wants passive DeFi yield on their funds. Deploys a non-custodial subaccount (Safe) linked to their EOA, enables automated yield optimization, and lets them deposit\u002Fwithdraw anytime.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzyfai-sdk\u002FSKILL.md",[],[114,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135],"safe","ethereum","defi","Optimization","user","use","Wallet","base","deposit","withdraw","yield","arbitrum","non-custodial","passive","defi yield","earn","yield optimization",{"skillNo":137,"name":138,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":150,"publishedAt":43},"01M6Q5R337B5JSNER4P4YS03TN","zerion-api","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api\u002FSKILL.md",[141,144,145],{"categoryNo":142,"categoryName":143,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":146,"categoryName":147,"taxonomyType":148,"taxonomyTypeDesc":149},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[151,152,153,154,155,156,157,121,158,125,159,160,161,162,163,164,165,166,167],"api","zerion api","zerion","MCP","mcp server","server","blockchain","transactions","crypto wallet","crypto","evm","solana","query","across","positions","token","prices",{"skillNo":169,"name":170,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":176,"publishedAt":43},"01M6Q5QZFYTDAZMZ27BN5VZXAR","zerion-api-skill","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-skill\u002FSKILL.md",[173,174,175],{"categoryNo":142,"categoryName":143,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":146,"categoryName":147,"taxonomyType":148,"taxonomyTypeDesc":149},[151,177,178,152,153,154,155,156,157,121,158,125,160,161,162,163,164,165,166,167],"api skill","zerion api skill",{"skillNo":180,"name":181,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":187,"publishedAt":43},"01M6Q5QW17QW98RA3FE45E4RD8","zerion-api-mcp","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-mcp\u002FSKILL.md",[184,185,186],{"categoryNo":142,"categoryName":143,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":146,"categoryName":147,"taxonomyType":148,"taxonomyTypeDesc":149},[154,151,188,152,153,155,156,121,158,125,159,160,161,162,163,164,165,166,167],"zerion api mcp",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":198,"publishedAt":43},"01M6Q5QQYZB7A501BDEQWKGSJT","yahoo-finance-forex","Fetches real-time FOREX news and market data from Yahoo Finance for major currency pairs (EUR\u002FUSD, GBP\u002FUSD, USD\u002FJPY, etc.). Analyzes sentiment and provides trading context.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-forex\u002FSKILL.md",[195],{"categoryNo":196,"categoryName":197,"taxonomyType":148,"taxonomyTypeDesc":149},"01JBSEEDCAT000000000000040","财务",[199,200,201,202,203,204,42,205,206,36,207,208,209,210,211,212,213,214,215,29],"finance","yahoo finance","forex","yahoo","yahoo finance forex","github","sentiment","real-time","install","Market","usd","news","time","currency","gbp","pip","market data",{"skillNo":217,"name":218,"nameZh":6,"description":219,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":220,"categories":221,"keywords":223,"publishedAt":43},"01M6Q5QM6VS84WZVM7BKXXPF32","yahoo-finance","This skill should be used when the user asks to \"get stock prices\", \"check stock quotes\", \"look up earnings\", \"get financial data\", \"find trending stocks\", or needs stock market data from Yahoo Finance.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-cli\u002FSKILL.md",[222],{"categoryNo":196,"categoryName":197,"taxonomyType":148,"taxonomyTypeDesc":149},[199,200,202,224,225,226,227,228,229,208,230,231,232,233,234,235,236,237,167,215],"cli","homebrew","find","check","brew","up","local","get","stock","link","trending","sf","quotes","ln"]