[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FKBKPS07FSS2MZDBM6WJ97":3,"skill-same:01M6FKBKPS07FSS2MZDBM6WJ97":107},{"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":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6FKBKPS07FSS2MZDBM6WJ97","soul-guardian",null,"Drift detection + baseline integrity guard for agent workspace files with automatic alerting support","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdavida-ps\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],"soul","soul guardian","guardian","python3","with","drift","files","prompt","agent workspace","workspace","security","guard","baseline","integrity","detection","alerting","https","support","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":46,"version":50,"homepage":51,"metadata":52,"description":7},{"emoji":47,"requires":48},"?",{"bins":49},[26],"0.0.2","https:\u002F\u002Fclawsec.prompt.security",{"openclaw":53},{"emoji":47,"category":33},"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fdavida-ps\u002Fsoul-guardian",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add kbarbel640-del\u002Fskills --skill soul-guardian",{"tool":67,"command":68},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill soul-guardian",{"tool":70,"command":71},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill soul-guardian","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdavida-ps\u002Fsoul-guardian\u002FSKILL.md",true,[75,81,85,91,95,99,103],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"_meta.json","REFERENCE","参考文档",281,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdavida-ps\u002Fsoul-guardian\u002F_meta.json",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"README.md",8133,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdavida-ps\u002Fsoul-guardian\u002FREADME.md",{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"scripts\u002Finstall_launchd_plist.py","SCRIPT","脚本",6114,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdavida-ps\u002Fsoul-guardian\u002Fscripts\u002Finstall_launchd_plist.py",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Fonboard_state_dir.py",5520,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdavida-ps\u002Fsoul-guardian\u002Fscripts\u002Fonboard_state_dir.py",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"scripts\u002Fsoul_guardian.py",35205,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdavida-ps\u002Fsoul-guardian\u002Fscripts\u002Fsoul_guardian.py",{"path":100,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":101,"sourceHtmlUrl":102},"scripts\u002Ftest_soul_guardian.py",4030,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdavida-ps\u002Fsoul-guardian\u002Fscripts\u002Ftest_soul_guardian.py",{"path":104,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":105,"sourceHtmlUrl":106},"skill.json",1422,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdavida-ps\u002Fsoul-guardian\u002Fskill.json",[108,137,162,183,189,209],{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":119,"publishedAt":41},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[114],{"categoryNo":115,"categoryName":116,"taxonomyType":117,"taxonomyTypeDesc":118},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[120,121,122,27,123,124,125,126,127,128,129,130,131,132,133,134,39,135,136],"crowd prompting","prompting","api","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","content","ai agents",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":144,"publishedAt":41},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[143],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[145,122,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,126,161],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking","use",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":171,"publishedAt":41},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[168],{"categoryNo":169,"categoryName":170,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[172,173,174,175,176,177,178,27,179,159,161,180,122,181,182],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":184,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":188,"publishedAt":41},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[187],{"categoryNo":169,"categoryName":170,"taxonomyType":20,"taxonomyTypeDesc":21},[175,174,173,172,182,177,178,27,176,159,161,179,180,122,181],{"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":195,"publishedAt":41},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[196,197,198,199,200,201,202,203,204,205,206,207,208],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":219,"publishedAt":41},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[215,216],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":217,"categoryName":218,"taxonomyType":117,"taxonomyTypeDesc":118},"01JBSEEDCAT000000000000037","律师与法务",[220,221,222,223,27,224,225,54,226,180,227,228,229,230,231,39,232,233,234],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]