[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6G2PJ1ZS6M4JZNHWYA9NFGF":3,"skill-same:01M6G2PJ1ZS6M4JZNHWYA9NFGF":142},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":16,"publishedAt":17,"linkOnly":18,"markdownContent":19,"markdownBody":19,"frontMatter":20,"refName":21,"commitSha":22,"skillDirectory":23,"forksCount":24,"repositoryHtmlUrl":25,"repositoryHomepageUrl":6,"ownerHtmlUrl":26,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":27,"install":28,"resources":41},"01M6G2PJ1ZS6M4JZNHWYA9NFGF","janitor",null,"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\u002Fsarthib7\u002Fjanitor\u002FSKILL.md",[],[5],"2026-11-10 10:12:30",false,"# Janitor - AI Agent Cleanup & Session Management Skill\n\n## Overview\n\n**Janitor** is an intelligent cleanup and session management skill for OpenClaw AI agents. It automatically manages cache, optimizes memory usage, and **prevents context overflow** by monitoring token usage and intelligently pruning old sessions.\n\nThink of Janitor as your **AI Agent's Intelligent Maintenance Crew** that:\n- ? Cleans cache files to optimize token usage\n- ?️ Frees up unused memory and RAM\n- ? **Monitors context usage in real-time (NEW!)**\n- ? **Automatically prunes old sessions (NEW!)**\n- ? **Archives sessions before deletion (NEW!)**\n- ? **Emergency recovery at 95% context usage (NEW!)**\n- ? Reports cleanup statistics back to the agent\n- ? **Multi-channel notifications (NEW!)**\n\n## Quick Start\n\n### Installation\n\n```bash\ncd \u002FUsers\u002Fsarthiborkar\u002FDesktop\u002Fbutler-main\u002Fjanitor\nnpm install  # No dependencies needed!\n```\n\n### Basic Usage\n\n```javascript\nconst Janitor = require('.\u002Fsrc\u002FJanitor');\n\n\u002F\u002F Create janitor instance\nconst janitor = new Janitor();\n\n\u002F\u002F Run cleanup\nconst result = await janitor.cleanup();\nconsole.log(result);\n\u002F\u002F {\n\u002F\u002F   filesDeleted: 42,\n\u002F\u002F   spaceSaved: \"1.2 MB\",\n\u002F\u002F   duration: \"150ms\",\n\u002F\u002F   memoryFreed: true\n\u002F\u002F }\n\n\u002F\u002F Get report\nconst report = await janitor.report();\n```\n\n## Features\n\n### 1. Cache Cleanup\n\nAutomatically cleans cache files that consume disk space and slow down operations:\n\n```javascript\nconst janitor = new Janitor();\n\n\u002F\u002F Clean cache files\nawait janitor.cleanup();\n```\n\n**Cleaned Items:**\n- `node_modules\u002F.cache\u002F**` - Node module caches\n- `**\u002F*.cache` - Generic cache files\n- `.DS_Store` - macOS metadata files\n- `dist\u002F**\u002F*.map` - Source map files\n- `coverage\u002F**` - Test coverage reports\n- `tmp\u002F**` - Temporary files\n- `**\u002F*.log` - Old log files (>7 days)\n\n### 2. Memory Optimization\n\nFrees up unused memory to optimize token usage:\n\n```javascript\nconst janitor = new Janitor();\n\n\u002F\u002F Free memory\njanitor.freeMemory();\n\n\u002F\u002F Check memory usage\nconst memoryStats = janitor.getMemoryUsage();\nconsole.log(memoryStats);\n\u002F\u002F {\n\u002F\u002F   rss: \"45.2 MB\",\n\u002F\u002F   heapTotal: \"12.8 MB\",\n\u002F\u002F   heapUsed: \"8.4 MB\",\n\u002F\u002F   external: \"1.2 MB\"\n\u002F\u002F }\n```\n\n**Memory Operations:**\n- Triggers garbage collection (if enabled)\n- Clears Node.js require cache\n- Reports memory usage statistics\n\n### 3. Unused File Cleanup\n\nRemoves files not accessed for a configurable period:\n\n```javascript\nconst janitor = new Janitor({\n  unusedFileAgeDays: 7  \u002F\u002F Delete files not accessed in 7 days\n});\n\nawait janitor.cleanup();\n```\n\n**Safety Features:**\n- Never deletes important files (package.json, README.md, src\u002F, .git\u002F, etc.)\n- Configurable age threshold\n- Reports files before deletion\n\n### 4. Post-Push Cleanup\n\nAutomatically clean up after GitHub push:\n\n```javascript\nconst janitor = new Janitor({\n  autoCleanAfterPush: true\n});\n\n\u002F\u002F After git push\nawait janitor.cleanupAfterPush();\n```\n\n**Use Case:**\nAfter pushing code to GitHub, temporary build artifacts, cache files, and coverage reports are no longer needed locally.\n\n### 5. Reporting & Statistics\n\nGet detailed cleanup statistics:\n\n```javascript\nconst janitor = new Janitor();\n\n\u002F\u002F Run some cleanups\nawait janitor.cleanup();\nawait janitor.cleanup();\n\n\u002F\u002F Get stats\nconst stats = janitor.getStats();\nconsole.log(stats);\n\u002F\u002F {\n\u002F\u002F   totalCleanups: 2,\n\u002F\u002F   totalFilesDeleted: 84,\n\u002F\u002F   totalSpaceSaved: \"2.4 MB\",\n\u002F\u002F   memoryUsage: { ... }\n\u002F\u002F }\n\n\u002F\u002F Get full report with recommendations\nconst report = await janitor.report();\nconsole.log(report);\n\u002F\u002F {\n\u002F\u002F   timestamp: \"2026-02-07T...\",\n\u002F\u002F   status: \"healthy\",\n\u002F\u002F   stats: { ... },\n\u002F\u002F   recommendations: [\n\u002F\u002F     \"Regular cleanup recommended.\"\n\u002F\u002F   ]\n\u002F\u002F }\n```\n\n## Configuration\n\n### Default Configuration\n\n```javascript\n{\n  enabled: true,\n  autoCleanAfterPush: true,\n  unusedFileAgeDays: 7,\n  cachePatterns: [\n    '**\u002F*.cache',\n    '**\u002Fnode_modules\u002F.cache\u002F**',\n    '**\u002F.DS_Store',\n    '**\u002Fdist\u002F**\u002F*.map',\n    '**\u002Ftmp\u002F**',\n    '**\u002F*.log',\n    '**\u002Fcoverage\u002F**'\n  ]\n}\n```\n\n### Custom Configuration\n\n```javascript\nconst janitor = new Janitor({\n  enabled: true,\n  autoCleanAfterPush: false,  \u002F\u002F Disable auto-cleanup after push\n  unusedFileAgeDays: 14,       \u002F\u002F Keep files for 2 weeks\n  cachePatterns: [\n    '**\u002F*.cache',\n    '**\u002Fmy-custom-cache\u002F**'\n  ]\n});\n```\n\n## Integration with Butler\n\n### Method 1: Direct Integration\n\n```javascript\nconst Butler = require('..\u002Fsrc\u002FButler');\nconst Janitor = require('..\u002Fjanitor\u002Fsrc\u002FJanitor');\n\nconst butler = new Butler();\nconst janitor = new Janitor();\n\n\u002F\u002F Spawn agent and cleanup after\nasync function runTaskWithCleanup() {\n  const results = await butler.spawnAgent(\n    'DataAnalysis',\n    'Analyze data and generate report',\n    200000\n  );\n\n  \u002F\u002F Cleanup after task\n  const cleanupResult = await janitor.cleanup();\n  console.log('Cleanup:', cleanupResult);\n\n  return results;\n}\n\nrunTaskWithCleanup();\n```\n\n### Method 2: Auto-Cleanup Hook\n\n```javascript\nconst Butler = require('..\u002Fsrc\u002FButler');\nconst Janitor = require('..\u002Fjanitor\u002Fsrc\u002FJanitor');\n\nclass ButlerWithJanitor extends Butler {\n  constructor() {\n    super();\n    this.janitor = new Janitor({ autoCleanAfterPush: true });\n  }\n\n  async spawnAgent(...args) {\n    const result = await super.spawnAgent(...args);\n\n    \u002F\u002F Auto-cleanup after agent completes\n    await this.janitor.cleanup();\n\n    return result;\n  }\n}\n\nconst butler = new ButlerWithJanitor();\n```\n\n## Examples\n\n### Example 1: Basic Cleanup\n\n```javascript\nconst Janitor = require('.\u002Fsrc\u002FJanitor');\n\nasync function basicCleanup() {\n  const janitor = new Janitor();\n\n  console.log('Starting cleanup...');\n  const result = await janitor.cleanup();\n\n  console.log(`✅ Deleted ${result.filesDeleted} files`);\n  console.log(`✅ Saved ${result.spaceSaved}`);\n}\n\nbasicCleanup();\n```\n\n### Example 2: Scheduled Cleanup\n\n```javascript\nconst Janitor = require('.\u002Fsrc\u002FJanitor');\n\nconst janitor = new Janitor();\n\n\u002F\u002F Run cleanup every hour\nsetInterval(async () => {\n  console.log('? Running scheduled cleanup...');\n  const result = await janitor.cleanup();\n  console.log(`Cleaned: ${result.spaceSaved}`);\n}, 60 * 60 * 1000); \u002F\u002F 1 hour\n```\n\n### Example 3: Git Hook Integration\n\nCreate `.git\u002Fhooks\u002Fpost-commit`:\n\n```bash\n#!\u002Fbin\u002Fsh\nnode janitor\u002Fsrc\u002Findex.js cleanup --after-push\n```\n\n### Example 4: Monitoring & Alerts\n\n```javascript\nconst Janitor = require('.\u002Fsrc\u002FJanitor');\n\nconst janitor = new Janitor();\n\nasync function monitor() {\n  const report = await janitor.report();\n\n  if (report.recommendations.length > 0) {\n    console.log('⚠️  Recommendations:');\n    report.recommendations.forEach(r => console.log(`   - ${r}`));\n  }\n\n  \u002F\u002F Send to monitoring system\n  sendToMonitoring(report);\n}\n\nsetInterval(monitor, 5 * 60 * 1000); \u002F\u002F Every 5 minutes\n```\n\n## CLI Usage\n\nCreate `src\u002Findex.js`:\n\n```javascript\n#!\u002Fusr\u002Fbin\u002Fenv node\nconst Janitor = require('.\u002FJanitor');\n\nconst janitor = new Janitor();\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\n(async () => {\n  switch (command) {\n    case 'cleanup':\n      const result = await janitor.cleanup();\n      console.log('Result:', result);\n      break;\n\n    case 'report':\n      const report = await janitor.report();\n      console.log(JSON.stringify(report, null, 2));\n      break;\n\n    case 'stats':\n      const stats = janitor.getStats();\n      console.log(stats);\n      break;\n\n    default:\n      console.log('Usage: node index.js [cleanup|report|stats]');\n  }\n})();\n```\n\nThen use:\n\n```bash\nnode janitor\u002Fsrc\u002Findex.js cleanup\nnode janitor\u002Fsrc\u002Findex.js report\nnode janitor\u002Fsrc\u002Findex.js stats\n```\n\n## API Reference\n\n### Constructor\n\n```javascript\nnew Janitor(config?: object)\n```\n\n### Methods\n\n#### `cleanup(workingDir?: string): Promise\u003CCleanupResult>`\n\nRun full cleanup operation.\n\n**Returns:**\n```javascript\n{\n  filesDeleted: number,\n  spaceSaved: string,\n  duration: string,\n  memoryFreed: boolean\n}\n```\n\n#### `cleanupAfterPush(): Promise\u003CCleanupResult | null>`\n\nAuto-cleanup after git push (if enabled).\n\n#### `freeMemory(): void`\n\nFree up memory by triggering garbage collection and clearing caches.\n\n#### `getStats(): object`\n\nGet cleanup statistics.\n\n#### `report(): Promise\u003CReport>`\n\nGenerate comprehensive report with recommendations.\n\n#### `getMemoryUsage(): object`\n\nGet current memory usage statistics.\n\n## Best Practices\n\n### 1. Regular Cleanup\n\nRun cleanup regularly to prevent cache buildup:\n\n```javascript\n\u002F\u002F Every hour\nsetInterval(() => janitor.cleanup(), 60 * 60 * 1000);\n```\n\n### 2. Post-Task Cleanup\n\nAlways cleanup after completing tasks:\n\n```javascript\nasync function runTask() {\n  \u002F\u002F Do work\n  await butler.spawnAgent(...);\n\n  \u002F\u002F Cleanup\n  await janitor.cleanup();\n}\n```\n\n### 3. Monitor Memory\n\nTrack memory usage to detect leaks:\n\n```javascript\nconst memUsage = janitor.getMemoryUsage();\nconsole.log('Heap used:', memUsage.heapUsed);\n```\n\n### 4. Safe Deletion\n\nJanitor automatically protects important files, but you can add custom protection:\n\n```javascript\n\u002F\u002F Override isImportant method if needed\njanitor.isImportant = (filePath) => {\n  const important = ['my-important-file.txt'];\n  return important.some(name => filePath.includes(name));\n};\n```\n\n## Performance\n\n- Cleanup duration: 50-500ms (depends on file count)\n- Memory overhead: \u003C5MB\n- No external dependencies\n- Safe for concurrent operations\n\n## Troubleshooting\n\n### Issue: High Memory Usage\n\n**Solution:** Run `janitor.freeMemory()` to trigger garbage collection.\n\n### Issue: Files Not Being Deleted\n\n**Solution:** Check if files are in protected directories (node_modules, .git, src).\n\n### Issue: Cleanup Too Aggressive\n\n**Solution:** Increase `unusedFileAgeDays` in config:\n\n```javascript\nconst janitor = new Janitor({ unusedFileAgeDays: 30 });\n```\n\n## Roadmap\n\n- [ ] Custom cleanup patterns via config file\n- [ ] Integration with Butler dashboard\n- [ ] Real-time cleanup monitoring\n- [ ] Cloud storage cleanup (S3, GCS)\n- [ ] Docker container cleanup\n- [ ] Database cache cleanup\n\n## License\n\nMIT\n\n## Support\n\n- Issues: [GitHub Issues](https:\u002F\u002Fgithub.com\u002Fzoro-jiro-san\u002Fbutler\u002Fissues)\n- Docs: This file\n\n---\n\n**Janitor v1.0.0** - Keeping your AI agents clean and efficient!\n",{},"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fsarthib7\u002Fjanitor",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":7,"skillName":5,"commands":29,"prompt":39,"zipAvailable":40},[30,33,36],{"tool":31,"command":32},"npx","npx skills add kbarbel640-del\u002Fskills --skill janitor",{"tool":34,"command":35},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill janitor",{"tool":37,"command":38},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill janitor","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002FSKILL.md",true,[42,48,54,58,62,66,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138],{"path":43,"resourceType":44,"resourceTypeDesc":45,"sizeBytes":46,"sourceHtmlUrl":47},"_meta.json","REFERENCE","参考文档",458,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002F_meta.json",{"path":49,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":52,"sourceHtmlUrl":53},"config.example.js","SCRIPT","脚本",6122,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fconfig.example.js",{"path":55,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":56,"sourceHtmlUrl":57},"examples\u002Fsession-management.js",9099,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fexamples\u002Fsession-management.js",{"path":59,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":60,"sourceHtmlUrl":61},"index.js",10305,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Findex.js",{"path":63,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":64,"sourceHtmlUrl":65},"install.sh",11362,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Finstall.sh",{"path":67,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":68,"sourceHtmlUrl":69},"janitor.js",19010,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fjanitor.js",{"path":71,"resourceType":44,"resourceTypeDesc":45,"sizeBytes":72,"sourceHtmlUrl":73},"README.md",11894,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002FREADME.md",{"path":75,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":76,"sourceHtmlUrl":77},"scripts\u002Fpre-start-cleanup.sh",7269,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fscripts\u002Fpre-start-cleanup.sh",{"path":79,"resourceType":44,"resourceTypeDesc":45,"sizeBytes":80,"sourceHtmlUrl":81},"SECURITY_HARDENING.md",12057,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002FSECURITY_HARDENING.md",{"path":83,"resourceType":44,"resourceTypeDesc":45,"sizeBytes":84,"sourceHtmlUrl":85},"SECURITY.md",11348,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002FSECURITY.md",{"path":87,"resourceType":44,"resourceTypeDesc":45,"sizeBytes":88,"sourceHtmlUrl":89},"skill.json",4992,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fskill.json",{"path":91,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":92,"sourceHtmlUrl":93},"src\u002Fservices\u002Fcontext-watcher.js",8289,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Fservices\u002Fcontext-watcher.js",{"path":95,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":96,"sourceHtmlUrl":97},"src\u002Fservices\u002Fgithub-backup.js",9695,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Fservices\u002Fgithub-backup.js",{"path":99,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":100,"sourceHtmlUrl":101},"src\u002Fservices\u002Fnotifier.js",9965,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Fservices\u002Fnotifier.js",{"path":103,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":104,"sourceHtmlUrl":105},"src\u002Fsession-management\u002Fanalyzer.js",14818,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Fsession-management\u002Fanalyzer.js",{"path":107,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":108,"sourceHtmlUrl":109},"src\u002Fsession-management\u002Farchiver.js",12421,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Fsession-management\u002Farchiver.js",{"path":111,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":112,"sourceHtmlUrl":113},"src\u002Fsession-management\u002Femergency.js",10242,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Fsession-management\u002Femergency.js",{"path":115,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":116,"sourceHtmlUrl":117},"src\u002Fsession-management\u002Fmonitor.js",7670,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Fsession-management\u002Fmonitor.js",{"path":119,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":120,"sourceHtmlUrl":121},"src\u002Fsession-management\u002Fpruner.js",9534,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Fsession-management\u002Fpruner.js",{"path":123,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":124,"sourceHtmlUrl":125},"src\u002Futils\u002Fconfig-manager.js",7084,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Futils\u002Fconfig-manager.js",{"path":127,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":128,"sourceHtmlUrl":129},"src\u002Futils\u002Fdashboard.js",8682,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Futils\u002Fdashboard.js",{"path":131,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":132,"sourceHtmlUrl":133},"src\u002Futils\u002Fsecurity.js",8242,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsrc\u002Futils\u002Fsecurity.js",{"path":135,"resourceType":44,"resourceTypeDesc":45,"sizeBytes":136,"sourceHtmlUrl":137},"systemd\u002FREADME.md",6544,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Fsystemd\u002FREADME.md",{"path":139,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":140,"sourceHtmlUrl":141},"tests\u002Frun-tests.js",8664,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fsarthib7\u002Fjanitor\u002Ftests\u002Frun-tests.js",[143,174,203,224,230,250],{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":154,"publishedAt":17},"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",[149],{"categoryNo":150,"categoryName":151,"taxonomyType":152,"taxonomyTypeDesc":153},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173],"crowd prompting","prompting","api","with","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":185,"publishedAt":17},"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",[180],{"categoryNo":181,"categoryName":182,"taxonomyType":183,"taxonomyTypeDesc":184},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[186,157,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,162,202],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking","use",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":212,"publishedAt":17},"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",[209],{"categoryNo":210,"categoryName":211,"taxonomyType":183,"taxonomyTypeDesc":184},"01JBSEEDCAT000000000000021","资料检索与研究",[213,214,215,216,217,218,219,158,220,200,202,221,157,222,223],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":225,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":226,"categories":227,"keywords":229,"publishedAt":17},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[228],{"categoryNo":210,"categoryName":211,"taxonomyType":183,"taxonomyTypeDesc":184},[216,215,214,213,223,218,219,158,217,200,202,220,221,157,222],{"skillNo":231,"name":232,"nameZh":6,"description":233,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":234,"categories":235,"keywords":236,"publishedAt":17},"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",[],[237,238,239,240,241,242,243,244,245,246,247,248,249],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":251,"name":252,"nameZh":6,"description":253,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":254,"categories":255,"keywords":260,"publishedAt":17},"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",[256,257],{"categoryNo":181,"categoryName":182,"taxonomyType":183,"taxonomyTypeDesc":184},{"categoryNo":258,"categoryName":259,"taxonomyType":152,"taxonomyTypeDesc":153},"01JBSEEDCAT000000000000037","律师与法务",[261,262,263,264,158,265,266,21,267,221,268,269,270,271,272,171,273,274,275],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]