openclaw-node-harness 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +184 -0
- package/bin/discord-read.js +228 -0
- package/bin/fleet-deploy.js +365 -0
- package/bin/lane-watchdog.js +232 -0
- package/bin/mesh-agent.js +714 -0
- package/bin/mesh-bridge.js +535 -0
- package/bin/mesh-deploy-listener.js +322 -0
- package/bin/mesh-deploy.js +1048 -0
- package/bin/mesh-health-publisher.js +247 -0
- package/bin/mesh-task-daemon.js +451 -0
- package/bin/mesh-tool-discord.js +293 -0
- package/bin/mesh.js +649 -0
- package/boot/manifest.yaml +187 -0
- package/cli.js +35 -0
- package/config/daemon.json.template +16 -0
- package/config/obsidian-sync.json.template +39 -0
- package/config/openclaw.json.template +124 -0
- package/config/transcript-sources.json.template +22 -0
- package/identity/AGENTS.md +201 -0
- package/identity/CLAUDE.md +64 -0
- package/identity/DELEGATION.md +304 -0
- package/identity/HEARTBEAT.md +163 -0
- package/identity/MEMORY_SPEC.md +368 -0
- package/identity/PRINCIPLES.md +81 -0
- package/identity/SOUL.md +48 -0
- package/identity/TOOLS.md +47 -0
- package/install.sh +895 -0
- package/lib/agent-activity.js +390 -0
- package/lib/kanban-io.js +352 -0
- package/lib/mesh-registry.js +194 -0
- package/lib/mesh-roles.js +13 -0
- package/lib/mesh-tasks.js +306 -0
- package/lib/nats-resolve.js +108 -0
- package/mission-control/README.md +36 -0
- package/mission-control/drizzle/0000_simple_silhouette.sql +62 -0
- package/mission-control/drizzle/meta/0000_snapshot.json +413 -0
- package/mission-control/drizzle/meta/_journal.json +13 -0
- package/mission-control/drizzle.config.ts +13 -0
- package/mission-control/eslint.config.mjs +18 -0
- package/mission-control/next.config.ts +7 -0
- package/mission-control/package-lock.json +10518 -0
- package/mission-control/package.json +49 -0
- package/mission-control/postcss.config.mjs +7 -0
- package/mission-control/public/file.svg +1 -0
- package/mission-control/public/globe.svg +1 -0
- package/mission-control/public/next.svg +1 -0
- package/mission-control/public/vercel.svg +1 -0
- package/mission-control/public/window.svg +1 -0
- package/mission-control/scripts/enrich-descriptions.js +193 -0
- package/mission-control/scripts/gen-chronology.js +102 -0
- package/mission-control/scripts/import-pipeline-v2.js +523 -0
- package/mission-control/scripts/import-pipeline.js +295 -0
- package/mission-control/src/app/api/activity/live/route.ts +27 -0
- package/mission-control/src/app/api/activity/route.ts +47 -0
- package/mission-control/src/app/api/burndown/route.ts +112 -0
- package/mission-control/src/app/api/critical-path/route.ts +159 -0
- package/mission-control/src/app/api/dependencies/route.ts +176 -0
- package/mission-control/src/app/api/memory/categories/route.ts +93 -0
- package/mission-control/src/app/api/memory/consolidate/route.ts +107 -0
- package/mission-control/src/app/api/memory/doc/route.ts +89 -0
- package/mission-control/src/app/api/memory/flush/route.ts +129 -0
- package/mission-control/src/app/api/memory/graph/route.ts +105 -0
- package/mission-control/src/app/api/memory/items/route.ts +86 -0
- package/mission-control/src/app/api/memory/list/route.ts +48 -0
- package/mission-control/src/app/api/memory/retrieve/route.ts +51 -0
- package/mission-control/src/app/api/memory/search/route.ts +143 -0
- package/mission-control/src/app/api/memory/sync/route.ts +23 -0
- package/mission-control/src/app/api/memory/wikilinks/route.ts +75 -0
- package/mission-control/src/app/api/mesh/events/route.ts +67 -0
- package/mission-control/src/app/api/mesh/nodes/route.ts +221 -0
- package/mission-control/src/app/api/mesh/tokens/route.ts +133 -0
- package/mission-control/src/app/api/projects/route.ts +102 -0
- package/mission-control/src/app/api/resolve-path/route.ts +92 -0
- package/mission-control/src/app/api/scheduler/tick/route.ts +38 -0
- package/mission-control/src/app/api/scheduler/waves/route.ts +54 -0
- package/mission-control/src/app/api/screenshot/route.ts +127 -0
- package/mission-control/src/app/api/settings/gateway/route.ts +92 -0
- package/mission-control/src/app/api/skills/[id]/health/route.ts +57 -0
- package/mission-control/src/app/api/skills/list/route.ts +41 -0
- package/mission-control/src/app/api/souls/[id]/evolution/route.ts +253 -0
- package/mission-control/src/app/api/souls/[id]/prompt/route.ts +205 -0
- package/mission-control/src/app/api/souls/[id]/propagate/route.ts +146 -0
- package/mission-control/src/app/api/souls/route.ts +174 -0
- package/mission-control/src/app/api/tasks/[id]/handoff/route.ts +115 -0
- package/mission-control/src/app/api/tasks/[id]/route.ts +266 -0
- package/mission-control/src/app/api/tasks/[id]/tree/route.ts +94 -0
- package/mission-control/src/app/api/tasks/route.ts +253 -0
- package/mission-control/src/app/api/tts/route.ts +47 -0
- package/mission-control/src/app/api/workspace/files/route.ts +88 -0
- package/mission-control/src/app/api/workspace/read/route.ts +73 -0
- package/mission-control/src/app/burndown/page.tsx +309 -0
- package/mission-control/src/app/calendar/page.tsx +839 -0
- package/mission-control/src/app/favicon.ico +0 -0
- package/mission-control/src/app/globals.css +67 -0
- package/mission-control/src/app/graph/page.tsx +352 -0
- package/mission-control/src/app/layout.tsx +35 -0
- package/mission-control/src/app/live/page.tsx +232 -0
- package/mission-control/src/app/memory/page.tsx +154 -0
- package/mission-control/src/app/mesh/page.tsx +457 -0
- package/mission-control/src/app/obsidian/page.tsx +252 -0
- package/mission-control/src/app/page.tsx +70 -0
- package/mission-control/src/app/roadmap/page.tsx +1757 -0
- package/mission-control/src/app/settings/page.tsx +260 -0
- package/mission-control/src/app/souls/page.tsx +573 -0
- package/mission-control/src/components/board/activity-timeline.tsx +96 -0
- package/mission-control/src/components/board/daily-board.tsx +373 -0
- package/mission-control/src/components/board/kanban-board.tsx +364 -0
- package/mission-control/src/components/board/kanban-column.tsx +105 -0
- package/mission-control/src/components/board/live-stream.tsx +116 -0
- package/mission-control/src/components/board/skill-health-card.tsx +128 -0
- package/mission-control/src/components/board/status-banner.tsx +124 -0
- package/mission-control/src/components/board/task-card.tsx +454 -0
- package/mission-control/src/components/board/unified-task-dialog.tsx +1043 -0
- package/mission-control/src/components/layout/resizable-layout.tsx +68 -0
- package/mission-control/src/components/layout/sidebar.tsx +90 -0
- package/mission-control/src/components/live/audio-spectrum.tsx +106 -0
- package/mission-control/src/components/live/chat-bubble.tsx +52 -0
- package/mission-control/src/components/live/chat-input.tsx +92 -0
- package/mission-control/src/components/memory/doc-reader.tsx +172 -0
- package/mission-control/src/components/memory/memory-list.tsx +169 -0
- package/mission-control/src/components/memory/search-bar.tsx +67 -0
- package/mission-control/src/components/memory/search-results.tsx +149 -0
- package/mission-control/src/components/obsidian/backlinks-panel.tsx +52 -0
- package/mission-control/src/components/obsidian/file-tree.tsx +186 -0
- package/mission-control/src/components/obsidian/local-graph.tsx +107 -0
- package/mission-control/src/components/obsidian/obsidian-graph.tsx +192 -0
- package/mission-control/src/components/obsidian/obsidian-reader.tsx +246 -0
- package/mission-control/src/lib/activity.ts +29 -0
- package/mission-control/src/lib/config.ts +21 -0
- package/mission-control/src/lib/db/index.ts +429 -0
- package/mission-control/src/lib/db/schema.ts +218 -0
- package/mission-control/src/lib/gateway-notify.ts +113 -0
- package/mission-control/src/lib/hooks.ts +536 -0
- package/mission-control/src/lib/memory/categories.ts +125 -0
- package/mission-control/src/lib/memory/entities.ts +482 -0
- package/mission-control/src/lib/memory/extract.ts +369 -0
- package/mission-control/src/lib/memory/retrieval.ts +281 -0
- package/mission-control/src/lib/memory/wikilinks.ts +147 -0
- package/mission-control/src/lib/nats.ts +126 -0
- package/mission-control/src/lib/parsers/clawvault-doc.ts +98 -0
- package/mission-control/src/lib/parsers/daily-log.ts +73 -0
- package/mission-control/src/lib/parsers/memory-md.ts +81 -0
- package/mission-control/src/lib/parsers/task-markdown.ts +459 -0
- package/mission-control/src/lib/parsers/transcript.ts +209 -0
- package/mission-control/src/lib/scheduler.ts +394 -0
- package/mission-control/src/lib/speech/use-speech-pipeline.ts +176 -0
- package/mission-control/src/lib/sync/memory.ts +224 -0
- package/mission-control/src/lib/sync/tasks.ts +271 -0
- package/mission-control/src/lib/tts/edge.ts +31 -0
- package/mission-control/src/lib/tts/google.ts +78 -0
- package/mission-control/src/lib/tts/index.ts +39 -0
- package/mission-control/src/lib/tts/types.ts +18 -0
- package/mission-control/tsconfig.json +42 -0
- package/obsidian-vault/.obsidian/app.json +10 -0
- package/obsidian-vault/.obsidian/community-plugins.json +8 -0
- package/obsidian-vault/.obsidian/graph.json +40 -0
- package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/main.js +58769 -0
- package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/manifest.json +10 -0
- package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/styles.css +47 -0
- package/obsidian-vault/00-meta/.gitkeep +0 -0
- package/obsidian-vault/01-architecture/.gitkeep +0 -0
- package/obsidian-vault/02-smart-contracts/.gitkeep +0 -0
- package/obsidian-vault/03-backend/.gitkeep +0 -0
- package/obsidian-vault/04-mobile/.gitkeep +0 -0
- package/obsidian-vault/05-ar-mapping/.gitkeep +0 -0
- package/obsidian-vault/06-3d-assets/.gitkeep +0 -0
- package/obsidian-vault/07-sound-music/.gitkeep +0 -0
- package/obsidian-vault/08-lore/.gitkeep +0 -0
- package/obsidian-vault/09-quests-playthrough/.gitkeep +0 -0
- package/obsidian-vault/10-economy/.gitkeep +0 -0
- package/obsidian-vault/11-nft-assets/.gitkeep +0 -0
- package/obsidian-vault/12-nft-mechanics/.gitkeep +0 -0
- package/obsidian-vault/13-dao-guild-social/.gitkeep +0 -0
- package/obsidian-vault/14-game-progression/.gitkeep +0 -0
- package/obsidian-vault/15-analytics/.gitkeep +0 -0
- package/obsidian-vault/16-security/.gitkeep +0 -0
- package/obsidian-vault/17-devops/.gitkeep +0 -0
- package/obsidian-vault/18-marketplace/.gitkeep +0 -0
- package/obsidian-vault/19-decisions/.gitkeep +0 -0
- package/obsidian-vault/20-business-strategy/.gitkeep +0 -0
- package/obsidian-vault/21-legal-regulatory/.gitkeep +0 -0
- package/obsidian-vault/nodes/.gitkeep +0 -0
- package/openclaw.env.example +17 -0
- package/package.json +45 -0
- package/services/launchd/ai.openclaw.gateway.plist +59 -0
- package/services/launchd/ai.openclaw.lane-watchdog.plist +32 -0
- package/services/launchd/ai.openclaw.log-rotate.plist +28 -0
- package/services/launchd/ai.openclaw.memory-daemon.plist +36 -0
- package/services/launchd/ai.openclaw.mesh-agent.plist +38 -0
- package/services/launchd/ai.openclaw.mesh-bridge.plist +36 -0
- package/services/launchd/ai.openclaw.mesh-deploy-listener.plist +33 -0
- package/services/launchd/ai.openclaw.mesh-health-publisher.plist +29 -0
- package/services/launchd/ai.openclaw.mesh-task-daemon.plist +36 -0
- package/services/launchd/ai.openclaw.mesh-tool-discord.plist +36 -0
- package/services/launchd/ai.openclaw.mission-control.plist +41 -0
- package/services/service-manifest.json +13 -0
- package/services/systemd/openclaw-gateway.service +21 -0
- package/services/systemd/openclaw-lane-watchdog.service +21 -0
- package/services/systemd/openclaw-log-rotate.service +13 -0
- package/services/systemd/openclaw-log-rotate.timer +9 -0
- package/services/systemd/openclaw-memory-daemon.service +21 -0
- package/services/systemd/openclaw-mesh-agent.service +19 -0
- package/services/systemd/openclaw-mesh-bridge.service +21 -0
- package/services/systemd/openclaw-mesh-deploy-listener.service +23 -0
- package/services/systemd/openclaw-mesh-health-publisher.service +21 -0
- package/services/systemd/openclaw-mesh-task-daemon.service +21 -0
- package/services/systemd/openclaw-mesh-tool-discord.service +21 -0
- package/services/systemd/openclaw-mission-control.service +22 -0
- package/skills/1password/.clawhub/origin.json +7 -0
- package/skills/1password/SKILL.md +63 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/acquisition-channel-advisor/SKILL.md +643 -0
- package/skills/acquisition-channel-advisor/examples/conversation-flow.md +531 -0
- package/skills/agent-browser/.clawhub/origin.json +7 -0
- package/skills/agent-browser/CONTRIBUTING.md +63 -0
- package/skills/agent-browser/SKILL.md +338 -0
- package/skills/agentic-compass/.clawhub/origin.json +7 -0
- package/skills/agentic-compass/README.md +96 -0
- package/skills/agentic-compass/SKILL.md +112 -0
- package/skills/agentic-compass/references/README.md +5 -0
- package/skills/agentic-compass/scripts/agentic-compass.py +196 -0
- package/skills/arcane-dev-ops/SKILL.md +61 -0
- package/skills/arcane-dev-ops/references/checklist.md +22 -0
- package/skills/arcane-dev-ops/references/validation-cases.md +11 -0
- package/skills/arcane-dev-ops/scripts/prepush_check.sh +41 -0
- package/skills/auto-updater/.clawhub/origin.json +7 -0
- package/skills/auto-updater/SKILL.md +158 -0
- package/skills/auto-updater/references/agent-guide.md +152 -0
- package/skills/auto-updater/references/summary-examples.md +109 -0
- package/skills/business-health-diagnostic/SKILL.md +782 -0
- package/skills/byterover/.clawhub/origin.json +7 -0
- package/skills/byterover/SKILL.md +105 -0
- package/skills/byterover/TROUBLESHOOTING.md +50 -0
- package/skills/byterover/WORKFLOWS.md +229 -0
- package/skills/capability-evolver/.clawhub/origin.json +7 -0
- package/skills/capability-evolver/CONTRIBUTING.md +11 -0
- package/skills/capability-evolver/README.md +157 -0
- package/skills/capability-evolver/README.zh-CN.md +112 -0
- package/skills/capability-evolver/SKILL.md +93 -0
- package/skills/capability-evolver/assets/gep/capsules.json +5 -0
- package/skills/capability-evolver/assets/gep/genes.json +104 -0
- package/skills/capability-evolver/index.js +59 -0
- package/skills/capability-evolver/package.json +22 -0
- package/skills/capability-evolver/scripts/analyze_by_skill.js +121 -0
- package/skills/capability-evolver/scripts/build_public.js +350 -0
- package/skills/capability-evolver/scripts/export_history.js +98 -0
- package/skills/capability-evolver/scripts/extract_log.js +85 -0
- package/skills/capability-evolver/scripts/generate_history.js +75 -0
- package/skills/capability-evolver/scripts/human_report.js +147 -0
- package/skills/capability-evolver/scripts/publish_public.js +516 -0
- package/skills/capability-evolver/scripts/suggest_version.js +89 -0
- package/skills/capability-evolver/src/evolve.js +594 -0
- package/skills/capability-evolver/src/gep/assetStore.js +204 -0
- package/skills/capability-evolver/src/gep/candidates.js +134 -0
- package/skills/capability-evolver/src/gep/paths.js +23 -0
- package/skills/capability-evolver/src/gep/prompt.js +254 -0
- package/skills/capability-evolver/src/gep/selector.js +89 -0
- package/skills/capability-evolver/src/gep/signals.js +27 -0
- package/skills/cc-godmode/.clawhub/origin.json +7 -0
- package/skills/cc-godmode/CHANGELOG.md +66 -0
- package/skills/cc-godmode/README.md +293 -0
- package/skills/cc-godmode/SKILL.md +242 -0
- package/skills/cc-godmode/docs/AGENTS.md +332 -0
- package/skills/cc-godmode/docs/MIGRATION.md +206 -0
- package/skills/cc-godmode/docs/TROUBLESHOOTING.md +357 -0
- package/skills/cc-godmode/docs/WORKFLOWS.md +329 -0
- package/skills/cc-godmode/references/agents.md +433 -0
- package/skills/cc-godmode/scripts/build-skill.js +232 -0
- package/skills/clawdbot-filesystem/.clawhub/origin.json +7 -0
- package/skills/clawdbot-filesystem/LICENSE.md +21 -0
- package/skills/clawdbot-filesystem/README.md +322 -0
- package/skills/clawdbot-filesystem/SKILL.md +219 -0
- package/skills/clawdbot-filesystem/config.json +41 -0
- package/skills/clawdbot-filesystem/package.json +69 -0
- package/skills/clawdbot-security-check/.clawhub/origin.json +7 -0
- package/skills/clawdbot-security-check/README.md +168 -0
- package/skills/clawdbot-security-check/SKILL.md +145 -0
- package/skills/clawdbot-security-check/references/audit-checks.md +521 -0
- package/skills/clawdbot-security-check/skill.json +42 -0
- package/skills/clawddocs/.clawhub/origin.json +7 -0
- package/skills/clawddocs/SKILL.md +176 -0
- package/skills/clawddocs/package.json +9 -0
- package/skills/clawddocs/scripts/build-index.sh +17 -0
- package/skills/clawddocs/scripts/cache.sh +13 -0
- package/skills/clawddocs/scripts/fetch-doc.sh +7 -0
- package/skills/clawddocs/scripts/recent.sh +5 -0
- package/skills/clawddocs/scripts/search.sh +8 -0
- package/skills/clawddocs/scripts/sitemap.sh +23 -0
- package/skills/clawddocs/scripts/track-changes.sh +16 -0
- package/skills/clawddocs/snippets/common-configs.md +69 -0
- package/skills/clawguard/.clawhub/origin.json +7 -0
- package/skills/clawguard/SKILL.md +137 -0
- package/skills/company-research/SKILL.md +393 -0
- package/skills/company-research/examples/sample.md +164 -0
- package/skills/company-research/template.md +60 -0
- package/skills/crypto-price/.clawhub/origin.json +7 -0
- package/skills/crypto-price/ARCHITECTURE.md +437 -0
- package/skills/crypto-price/README.md +194 -0
- package/skills/crypto-price/SKILL.md +61 -0
- package/skills/crypto-price/requirements.txt +1 -0
- package/skills/crypto-price/scripts/get_price_chart.py +988 -0
- package/skills/customer-journey-map/SKILL.md +343 -0
- package/skills/customer-journey-map/examples/sample.md +33 -0
- package/skills/customer-journey-map/template.md +28 -0
- package/skills/customer-journey-mapping-workshop/SKILL.md +522 -0
- package/skills/deep-research/.clawhub/origin.json +7 -0
- package/skills/deep-research/SKILL.md +93 -0
- package/skills/deep-research/rules/logic.md +32 -0
- package/skills/discord-telegram-triage/SKILL.md +59 -0
- package/skills/discord-telegram-triage/references/discord-runbook.md +28 -0
- package/skills/discord-telegram-triage/references/validation-cases.md +11 -0
- package/skills/discord-telegram-triage/scripts/triage_snapshot.sh +23 -0
- package/skills/discovery-interview-prep/SKILL.md +408 -0
- package/skills/discovery-process/SKILL.md +503 -0
- package/skills/discovery-process/examples/sample.md +60 -0
- package/skills/discovery-process/template.md +39 -0
- package/skills/dist/arcane-dev-ops.skill +0 -0
- package/skills/dist/discord-telegram-triage.skill +0 -0
- package/skills/dist/founder-brief-summarizer.skill +0 -0
- package/skills/epic-breakdown-advisor/SKILL.md +664 -0
- package/skills/epic-hypothesis/SKILL.md +285 -0
- package/skills/epic-hypothesis/examples/sample.md +104 -0
- package/skills/epic-hypothesis/template.md +30 -0
- package/skills/excel/.clawhub/origin.json +7 -0
- package/skills/excel/SKILL.md +332 -0
- package/skills/excel/scripts/excel.py +1120 -0
- package/skills/fast-browser-use/.clawhub/origin.json +7 -0
- package/skills/fast-browser-use/CODEBUDDY.md +142 -0
- package/skills/fast-browser-use/Cargo.toml +77 -0
- package/skills/fast-browser-use/README.md +62 -0
- package/skills/fast-browser-use/SKILL.md +217 -0
- package/skills/fast-browser-use/package-lock.json +28 -0
- package/skills/fast-browser-use/package.json +8 -0
- package/skills/fast-browser-use/rustfmt.toml +10 -0
- package/skills/fast-browser-use/src/bin/cli.rs +373 -0
- package/skills/fast-browser-use/src/bin/mcp_server.rs +203 -0
- package/skills/fast-browser-use/src/browser/config.rs +136 -0
- package/skills/fast-browser-use/src/browser/debug.rs +16 -0
- package/skills/fast-browser-use/src/browser/mod.rs +61 -0
- package/skills/fast-browser-use/src/browser/session.rs +478 -0
- package/skills/fast-browser-use/src/dom/element.rs +442 -0
- package/skills/fast-browser-use/src/dom/extract_dom.js +849 -0
- package/skills/fast-browser-use/src/dom/mod.rs +14 -0
- package/skills/fast-browser-use/src/dom/tree.rs +296 -0
- package/skills/fast-browser-use/src/dom/yaml.rs +149 -0
- package/skills/fast-browser-use/src/error.rs +115 -0
- package/skills/fast-browser-use/src/lib.rs +17 -0
- package/skills/fast-browser-use/src/mcp/handler.rs +63 -0
- package/skills/fast-browser-use/src/mcp/mod.rs +81 -0
- package/skills/fast-browser-use/src/tools/Readability.min.js +1480 -0
- package/skills/fast-browser-use/src/tools/annotate.rs +165 -0
- package/skills/fast-browser-use/src/tools/click.rs +84 -0
- package/skills/fast-browser-use/src/tools/close.rs +35 -0
- package/skills/fast-browser-use/src/tools/close_tab.rs +45 -0
- package/skills/fast-browser-use/src/tools/convert_to_markdown.js +117 -0
- package/skills/fast-browser-use/src/tools/cookies.rs +58 -0
- package/skills/fast-browser-use/src/tools/debug.rs +44 -0
- package/skills/fast-browser-use/src/tools/evaluate.rs +40 -0
- package/skills/fast-browser-use/src/tools/extract.rs +66 -0
- package/skills/fast-browser-use/src/tools/go_back.rs +35 -0
- package/skills/fast-browser-use/src/tools/go_forward.rs +35 -0
- package/skills/fast-browser-use/src/tools/hover.js +33 -0
- package/skills/fast-browser-use/src/tools/hover.rs +97 -0
- package/skills/fast-browser-use/src/tools/html_to_markdown.rs +99 -0
- package/skills/fast-browser-use/src/tools/input.rs +93 -0
- package/skills/fast-browser-use/src/tools/local_storage.rs +159 -0
- package/skills/fast-browser-use/src/tools/markdown.rs +181 -0
- package/skills/fast-browser-use/src/tools/mod.rs +326 -0
- package/skills/fast-browser-use/src/tools/navigate.rs +55 -0
- package/skills/fast-browser-use/src/tools/new_tab.rs +60 -0
- package/skills/fast-browser-use/src/tools/press_key.rs +78 -0
- package/skills/fast-browser-use/src/tools/read_links.rs +59 -0
- package/skills/fast-browser-use/src/tools/readability_script.rs +8 -0
- package/skills/fast-browser-use/src/tools/screenshot.rs +47 -0
- package/skills/fast-browser-use/src/tools/scroll.js +22 -0
- package/skills/fast-browser-use/src/tools/scroll.rs +95 -0
- package/skills/fast-browser-use/src/tools/select.js +23 -0
- package/skills/fast-browser-use/src/tools/select.rs +129 -0
- package/skills/fast-browser-use/src/tools/sitemap.rs +426 -0
- package/skills/fast-browser-use/src/tools/snapshot.rs +324 -0
- package/skills/fast-browser-use/src/tools/switch_tab.rs +69 -0
- package/skills/fast-browser-use/src/tools/tab_list.rs +76 -0
- package/skills/fast-browser-use/src/tools/utils.rs +92 -0
- package/skills/fast-browser-use/src/tools/wait.rs +53 -0
- package/skills/fast-browser-use/test_auth.json +3 -0
- package/skills/fast-browser-use/test_state.json +6 -0
- package/skills/fast-browser-use/tests/browser_tools_integration.rs +233 -0
- package/skills/fast-browser-use/tests/cli_recipes_integration.rs +112 -0
- package/skills/fast-browser-use/tests/cookies_integration.rs +56 -0
- package/skills/fast-browser-use/tests/debug_integration.rs +83 -0
- package/skills/fast-browser-use/tests/dom_integration.rs +170 -0
- package/skills/fast-browser-use/tests/local_storage_integration.rs +75 -0
- package/skills/fast-browser-use/tests/markdown_integration.rs +448 -0
- package/skills/fast-browser-use/tests/navigation_integration.rs +241 -0
- package/skills/fast-browser-use/tests/sitemap_integration.rs +326 -0
- package/skills/fast-browser-use/tests/tab_management_integration.rs +300 -0
- package/skills/feature-investment-advisor/SKILL.md +639 -0
- package/skills/feature-investment-advisor/examples/conversation-flow.md +538 -0
- package/skills/finance-based-pricing-advisor/SKILL.md +763 -0
- package/skills/finance-metrics-quickref/SKILL.md +309 -0
- package/skills/find-skills/.clawhub/origin.json +7 -0
- package/skills/find-skills/SKILL.md +143 -0
- package/skills/flavor-text-writer/SKILL.md +27 -0
- package/skills/founder-brief-summarizer/SKILL.md +52 -0
- package/skills/founder-brief-summarizer/references/response-templates.md +15 -0
- package/skills/founder-brief-summarizer/references/validation-cases.md +11 -0
- package/skills/founder-brief-summarizer/scripts/brief_template.sh +28 -0
- package/skills/frontend-design/.clawhub/origin.json +7 -0
- package/skills/frontend-design/LICENSE.txt +190 -0
- package/skills/frontend-design/SKILL.md +53 -0
- package/skills/gemini/.clawhub/origin.json +7 -0
- package/skills/gemini/SKILL.md +33 -0
- package/skills/gemini-deep-research/.clawhub/origin.json +7 -0
- package/skills/gemini-deep-research/SKILL.md +78 -0
- package/skills/gemini-deep-research/scripts/deep_research.py +176 -0
- package/skills/git-essentials/.clawhub/origin.json +7 -0
- package/skills/git-essentials/SKILL.md +239 -0
- package/skills/git-essentials/references/advanced.md +211 -0
- package/skills/github/.clawhub/origin.json +7 -0
- package/skills/github/SKILL.md +57 -0
- package/skills/google-drive/.clawhub/origin.json +7 -0
- package/skills/google-drive/LICENSE.txt +21 -0
- package/skills/google-drive/SKILL.md +320 -0
- package/skills/growth-loop/SKILL.md +270 -0
- package/skills/growth-loop/_meta.json +9 -0
- package/skills/growth-loop/references/diagnosis-framework.md +84 -0
- package/skills/growth-loop/references/platform-benchmarks.md +79 -0
- package/skills/growth-loop/scripts/init-campaign.sh +274 -0
- package/skills/humanize-ai-text/.clawhub/origin.json +7 -0
- package/skills/humanize-ai-text/SKILL.md +192 -0
- package/skills/humanize-ai-text/scripts/compare.py +58 -0
- package/skills/humanize-ai-text/scripts/detect.py +160 -0
- package/skills/humanize-ai-text/scripts/patterns.json +191 -0
- package/skills/humanize-ai-text/scripts/transform.py +127 -0
- package/skills/humanizer/.clawhub/origin.json +7 -0
- package/skills/humanizer/README.md +82 -0
- package/skills/humanizer/SKILL.md +443 -0
- package/skills/jobs-to-be-done/SKILL.md +378 -0
- package/skills/jobs-to-be-done/examples/sample.md +80 -0
- package/skills/jobs-to-be-done/template.md +65 -0
- package/skills/lean-ux-canvas/SKILL.md +561 -0
- package/skills/lean-ux-canvas/examples/sample.md +88 -0
- package/skills/lean-ux-canvas/template.md +32 -0
- package/skills/markdown-formatter/.clawhub/origin.json +7 -0
- package/skills/markdown-formatter/README.md +137 -0
- package/skills/markdown-formatter/SKILL.md +369 -0
- package/skills/markdown-formatter/config.json +20 -0
- package/skills/markdown-formatter/index.js +439 -0
- package/skills/markdown-formatter/package.json +23 -0
- package/skills/markdown-formatter/test.js +23 -0
- package/skills/marketing-mode/.clawhub/origin.json +7 -0
- package/skills/marketing-mode/README.md +49 -0
- package/skills/marketing-mode/SKILL.md +703 -0
- package/skills/marketing-mode/mode-prompt.md +39 -0
- package/skills/marketing-mode/skill.json +51 -0
- package/skills/memory-hygiene/.clawhub/origin.json +7 -0
- package/skills/memory-hygiene/SKILL.md +91 -0
- package/skills/memory-setup/.clawhub/origin.json +7 -0
- package/skills/memory-setup/SKILL.md +180 -0
- package/skills/memorylayer/.clawhub/origin.json +7 -0
- package/skills/memorylayer/README.md +197 -0
- package/skills/memorylayer/SKILL.md +227 -0
- package/skills/memorylayer/examples/agent-integration.js +145 -0
- package/skills/memorylayer/examples/basic-usage.js +87 -0
- package/skills/memorylayer/examples/token-savings-demo.js +183 -0
- package/skills/memorylayer/index.js +115 -0
- package/skills/memorylayer/package-lock.json +295 -0
- package/skills/memorylayer/package.json +27 -0
- package/skills/memorylayer/python/memorylayer_skill.py +230 -0
- package/skills/memorylayer/python/requirements.txt +7 -0
- package/skills/mesh/SKILL.md +184 -0
- package/skills/model-usage/.clawhub/origin.json +7 -0
- package/skills/model-usage/SKILL.md +54 -0
- package/skills/model-usage/references/codexbar-cli.md +28 -0
- package/skills/model-usage/scripts/model_usage.py +310 -0
- package/skills/moltbook-interact/.clawhub/origin.json +7 -0
- package/skills/moltbook-interact/INSTALL.md +139 -0
- package/skills/moltbook-interact/README.md +198 -0
- package/skills/moltbook-interact/SKILL.md +72 -0
- package/skills/moltbook-interact/references/api.md +106 -0
- package/skills/moltbook-interact/scripts/moltbook.sh +142 -0
- package/skills/moltbook-registry/.clawhub/origin.json +7 -0
- package/skills/moltbook-registry/README.md +26 -0
- package/skills/moltbook-registry/SKILL.md +82 -0
- package/skills/moltbook-registry/index.js +180 -0
- package/skills/moltbook-registry/package.json +11 -0
- package/skills/mythril-scanner/SKILL.md +27 -0
- package/skills/n8n/.clawhub/origin.json +7 -0
- package/skills/n8n/SKILL.md +141 -0
- package/skills/n8n/references/api.md +156 -0
- package/skills/n8n/scripts/n8n_api.py +158 -0
- package/skills/n8n-workflow-automation/.clawhub/origin.json +7 -0
- package/skills/n8n-workflow-automation/SKILL.md +103 -0
- package/skills/n8n-workflow-automation/assets/runbook-template.md +32 -0
- package/skills/narrative-designer/SKILL.md +27 -0
- package/skills/ontology/.clawhub/origin.json +7 -0
- package/skills/ontology/SKILL.md +236 -0
- package/skills/ontology/references/queries.md +211 -0
- package/skills/ontology/references/schema.md +322 -0
- package/skills/ontology/scripts/ontology.py +374 -0
- package/skills/openai-image-gen/.clawhub/origin.json +7 -0
- package/skills/openai-image-gen/SKILL.md +45 -0
- package/skills/openai-image-gen/scripts/gen.py +227 -0
- package/skills/openclaw-agent-optimize/.clawhub/origin.json +7 -0
- package/skills/openclaw-agent-optimize/SKILL.md +33 -0
- package/skills/openclaw-agent-optimize/references/agent-orchestration.md +20 -0
- package/skills/openclaw-agent-optimize/references/context-management.md +15 -0
- package/skills/openclaw-agent-optimize/references/continuous-learning.md +14 -0
- package/skills/openclaw-agent-optimize/references/cron-optimization.md +16 -0
- package/skills/openclaw-agent-optimize/references/memory-patterns.md +14 -0
- package/skills/openclaw-agent-optimize/references/model-selection.md +18 -0
- package/skills/openclaw-skill-scanner/.clawhub/origin.json +7 -0
- package/skills/openclaw-skill-scanner/SKILL.md +88 -0
- package/skills/openclaw-skill-scanner/install-hook.sh +294 -0
- package/skills/openclaw-skill-scanner/report-template.md +53 -0
- package/skills/openclaw-skill-scanner/scanner.py +929 -0
- package/skills/openclaw-skill-scanner/whitelist.json +18 -0
- package/skills/opportunity-solution-tree/SKILL.md +428 -0
- package/skills/opportunity-solution-tree/examples/sample.md +104 -0
- package/skills/opportunity-solution-tree/template.md +33 -0
- package/skills/pdf/.clawhub/origin.json +7 -0
- package/skills/pdf/SKILL.md +304 -0
- package/skills/pestel-analysis/SKILL.md +384 -0
- package/skills/pestel-analysis/examples/sample.md +143 -0
- package/skills/pestel-analysis/template.md +53 -0
- package/skills/pol-probe/SKILL.md +217 -0
- package/skills/pol-probe/examples/sample.md +136 -0
- package/skills/pol-probe/template.md +59 -0
- package/skills/pol-probe-advisor/SKILL.md +492 -0
- package/skills/positioning-statement/SKILL.md +229 -0
- package/skills/positioning-statement/examples/sample.md +51 -0
- package/skills/positioning-statement/template.md +25 -0
- package/skills/positioning-workshop/SKILL.md +424 -0
- package/skills/prd-development/SKILL.md +654 -0
- package/skills/prd-development/examples/sample.md +43 -0
- package/skills/prd-development/template.md +55 -0
- package/skills/press-release/SKILL.md +277 -0
- package/skills/press-release/examples/sample.md +73 -0
- package/skills/press-release/template.md +39 -0
- package/skills/prioritization-advisor/SKILL.md +451 -0
- package/skills/proactive-messages/.clawhub/origin.json +7 -0
- package/skills/proactive-messages/SKILL.md +91 -0
- package/skills/problem-framing-canvas/SKILL.md +466 -0
- package/skills/problem-framing-canvas/examples/sample.md +58 -0
- package/skills/problem-framing-canvas/template.md +22 -0
- package/skills/problem-statement/SKILL.md +255 -0
- package/skills/problem-statement/examples/sample.md +82 -0
- package/skills/problem-statement/template.md +37 -0
- package/skills/product-strategy-session/SKILL.md +434 -0
- package/skills/product-strategy-session/examples/sample.md +67 -0
- package/skills/product-strategy-session/template.md +38 -0
- package/skills/prompt-guard/.clawhub/origin.json +7 -0
- package/skills/prompt-guard/ARCHITECTURE.md +364 -0
- package/skills/prompt-guard/CHANGELOG.md +200 -0
- package/skills/prompt-guard/README.md +215 -0
- package/skills/prompt-guard/SECURITY.md +66 -0
- package/skills/prompt-guard/SKILL.md +174 -0
- package/skills/prompt-guard/blog/how-i-secured-my-ai-agent.md +185 -0
- package/skills/prompt-guard/config.example.yaml +56 -0
- package/skills/prompt-guard/references/detection-patterns.md +298 -0
- package/skills/prompt-guard/requirements.txt +1 -0
- package/skills/prompt-guard/scripts/analyze_log.py +224 -0
- package/skills/prompt-guard/scripts/audit.py +344 -0
- package/skills/prompt-guard/scripts/detect.py +1587 -0
- package/skills/prompt-guard/scripts/hivefence.py +345 -0
- package/skills/proto-persona/SKILL.md +336 -0
- package/skills/proto-persona/examples/sample.md +97 -0
- package/skills/proto-persona/template.md +45 -0
- package/skills/recommendation-canvas/SKILL.md +382 -0
- package/skills/recommendation-canvas/examples/sample.md +94 -0
- package/skills/recommendation-canvas/template.md +86 -0
- package/skills/refactor-suggest/.clawhub/origin.json +7 -0
- package/skills/refactor-suggest/SKILL.md +94 -0
- package/skills/roadmap-planning/SKILL.md +506 -0
- package/skills/roadmap-planning/examples/sample.md +62 -0
- package/skills/roadmap-planning/template.md +30 -0
- package/skills/saas-economics-efficiency-metrics/SKILL.md +694 -0
- package/skills/saas-economics-efficiency-metrics/examples/cash-trap.md +365 -0
- package/skills/saas-economics-efficiency-metrics/examples/healthy-unit-economics.md +279 -0
- package/skills/saas-economics-efficiency-metrics/template.md +263 -0
- package/skills/saas-revenue-growth-metrics/SKILL.md +629 -0
- package/skills/saas-revenue-growth-metrics/examples/healthy-saas.md +131 -0
- package/skills/saas-revenue-growth-metrics/examples/warning-signs.md +229 -0
- package/skills/saas-revenue-growth-metrics/template.md +192 -0
- package/skills/save-money/.clawhub/origin.json +7 -0
- package/skills/save-money/SKILL.md +173 -0
- package/skills/scripts/golden_skills_v3.sh +32 -0
- package/skills/search/.clawhub/origin.json +7 -0
- package/skills/search/SKILL.md +18 -0
- package/skills/search/skill.json +1 -0
- package/skills/second-brain/.clawhub/origin.json +7 -0
- package/skills/second-brain/SKILL.md +278 -0
- package/skills/second-brain/scripts/ensue-api.sh +37 -0
- package/skills/self-improving-agent/.clawhub/origin.json +7 -0
- package/skills/self-improving-agent/.learnings/ERRORS.md +5 -0
- package/skills/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
- package/skills/self-improving-agent/.learnings/LEARNINGS.md +5 -0
- package/skills/self-improving-agent/SKILL.md +130 -0
- package/skills/self-improving-agent/assets/LEARNINGS.md +45 -0
- package/skills/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
- package/skills/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
- package/skills/self-improving-agent/hooks/openclaw/handler.js +56 -0
- package/skills/self-improving-agent/hooks/openclaw/handler.ts +62 -0
- package/skills/self-improving-agent/references/examples.md +374 -0
- package/skills/self-improving-agent/references/hooks-setup.md +223 -0
- package/skills/self-improving-agent/references/openclaw-integration.md +248 -0
- package/skills/self-improving-agent/references/templates.md +480 -0
- package/skills/self-improving-agent/scripts/activator.sh +20 -0
- package/skills/self-improving-agent/scripts/error-detector.sh +55 -0
- package/skills/self-improving-agent/scripts/extract-skill.sh +203 -0
- package/skills/self-improving-agent-1-0-2/.clawhub/origin.json +7 -0
- package/skills/self-improving-agent-1-0-2/SKILL.md +562 -0
- package/skills/self-improving-agent-1-0-2/assets/LEARNINGS.md +45 -0
- package/skills/self-improving-agent-1-0-2/assets/SKILL-TEMPLATE.md +182 -0
- package/skills/self-improving-agent-1-0-2/references/clawdbot-integration.md +311 -0
- package/skills/self-improving-agent-1-0-2/references/examples.md +374 -0
- package/skills/self-improving-agent-1-0-2/references/hooks-setup.md +223 -0
- package/skills/self-improving-agent-1-0-2/scripts/activator.sh +20 -0
- package/skills/self-improving-agent-1-0-2/scripts/error-detector.sh +55 -0
- package/skills/self-improving-agent-1-0-2/scripts/extract-skill.sh +203 -0
- package/skills/self-love-confidence/.clawhub/origin.json +7 -0
- package/skills/self-love-confidence/SKILL.md +79 -0
- package/skills/self-reflection/.clawhub/origin.json +7 -0
- package/skills/self-reflection/README.md +292 -0
- package/skills/self-reflection/SKILL.md +110 -0
- package/skills/self-reflection/self-reflection.example.json +6 -0
- package/skills/slither-analyzer/SKILL.md +27 -0
- package/skills/solidity-audit/SKILL.md +27 -0
- package/skills/soulcraft/.clawhub/origin.json +7 -0
- package/skills/soulcraft/README.md +123 -0
- package/skills/soulcraft/SKILL.md +340 -0
- package/skills/soulcraft/references/question-bank.md +154 -0
- package/skills/soulcraft/references/soul-examples.md +207 -0
- package/skills/soulcraft/research/RESEARCH_REPORT.md +317 -0
- package/skills/spotify-player/.clawhub/origin.json +7 -0
- package/skills/spotify-player/SKILL.md +44 -0
- package/skills/storyboard/SKILL.md +259 -0
- package/skills/storyboard/examples/sample.md +71 -0
- package/skills/storyboard/template.md +41 -0
- package/skills/summarize/.clawhub/origin.json +7 -0
- package/skills/summarize/SKILL.md +59 -0
- package/skills/superdesign/.clawhub/origin.json +7 -0
- package/skills/superdesign/SKILL.md +224 -0
- package/skills/tam-sam-som-calculator/SKILL.md +399 -0
- package/skills/tam-sam-som-calculator/examples/sample.md +142 -0
- package/skills/tam-sam-som-calculator/scripts/market-sizing.py +95 -0
- package/skills/tam-sam-som-calculator/template.md +35 -0
- package/skills/tavily-search/.clawhub/origin.json +7 -0
- package/skills/tavily-search/SKILL.md +49 -0
- package/skills/tavily-search/scripts/extract.mjs +59 -0
- package/skills/tavily-search/scripts/search.mjs +101 -0
- package/skills/twitter/SKILL.md +74 -0
- package/skills/twitter/_meta.json +9 -0
- package/skills/twitter/references/validation-cases.md +53 -0
- package/skills/twitter/scripts/twitter.sh +421 -0
- package/skills/ui-ux-pro-max/.clawhub/origin.json +7 -0
- package/skills/ui-ux-pro-max/SKILL.md +54 -0
- package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
- package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
- package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
- package/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
- package/skills/ui-ux-pro-max/scripts/search.py +111 -0
- package/skills/user-story/SKILL.md +272 -0
- package/skills/user-story/examples/sample.md +110 -0
- package/skills/user-story/scripts/user-story-template.py +65 -0
- package/skills/user-story/template.md +32 -0
- package/skills/user-story-mapping/SKILL.md +296 -0
- package/skills/user-story-mapping/examples/sample.md +77 -0
- package/skills/user-story-mapping/template.md +41 -0
- package/skills/user-story-mapping-workshop/SKILL.md +485 -0
- package/skills/user-story-mapping-workshop/template.md +28 -0
- package/skills/user-story-splitting/SKILL.md +313 -0
- package/skills/user-story-splitting/examples/sample.md +147 -0
- package/skills/user-story-splitting/template.md +37 -0
- package/skills/wacli/.clawhub/origin.json +7 -0
- package/skills/wacli/SKILL.md +53 -0
- package/skills/web-search/.clawhub/origin.json +7 -0
- package/skills/web-search/SKILL.md +151 -0
- package/skills/web-search/references/api-details.md +207 -0
- package/skills/web-search/scripts/search.py +576 -0
- package/skills/workshop-facilitation/SKILL.md +88 -0
- package/skills/world-builder/SKILL.md +27 -0
- package/souls/blockchain-auditor/PRINCIPLES.md +75 -0
- package/souls/blockchain-auditor/SOUL.md +56 -0
- package/souls/blockchain-auditor/capabilities.json +33 -0
- package/souls/blockchain-auditor/evolution/capsules.json +4 -0
- package/souls/blockchain-auditor/evolution/events.jsonl +1 -0
- package/souls/blockchain-auditor/evolution/genes.json +62 -0
- package/souls/daedalus/PRINCIPLES.md +78 -0
- package/souls/daedalus/SOUL.md +48 -0
- package/souls/daedalus/capabilities.json +46 -0
- package/souls/identity-architect/PRINCIPLES.md +83 -0
- package/souls/identity-architect/SOUL.md +66 -0
- package/souls/identity-architect/capabilities.json +38 -0
- package/souls/identity-architect/evolution/capsules.json +4 -0
- package/souls/identity-architect/evolution/events.jsonl +0 -0
- package/souls/identity-architect/evolution/genes.json +4 -0
- package/souls/infra-ops/PRINCIPLES.md +77 -0
- package/souls/infra-ops/SOUL.md +56 -0
- package/souls/infra-ops/capabilities.json +33 -0
- package/souls/infra-ops/evolution/capsules.json +4 -0
- package/souls/infra-ops/evolution/events.jsonl +0 -0
- package/souls/infra-ops/evolution/genes.json +4 -0
- package/souls/lore-writer/PRINCIPLES.md +74 -0
- package/souls/lore-writer/SOUL.md +54 -0
- package/souls/lore-writer/capabilities.json +37 -0
- package/souls/lore-writer/evolution/capsules.json +4 -0
- package/souls/lore-writer/evolution/events.jsonl +0 -0
- package/souls/lore-writer/evolution/genes.json +4 -0
- package/souls/qa-evidence/PRINCIPLES.md +97 -0
- package/souls/qa-evidence/SOUL.md +66 -0
- package/souls/qa-evidence/capabilities.json +32 -0
- package/souls/qa-evidence/evolution/capsules.json +4 -0
- package/souls/qa-evidence/evolution/events.jsonl +0 -0
- package/souls/qa-evidence/evolution/genes.json +4 -0
- package/souls/registry.json +211 -0
- package/souls/sync-registry.js +65 -0
- package/uninstall.sh +102 -0
- package/workspace-bin/auto-checkpoint +60 -0
- package/workspace-bin/clawvault-access-control +65 -0
- package/workspace-bin/clawvault-local +28 -0
- package/workspace-bin/compile-boot +494 -0
- package/workspace-bin/daily-log-writer.mjs +251 -0
- package/workspace-bin/evolve +540 -0
- package/workspace-bin/fitness_score.py +395 -0
- package/workspace-bin/hooks/pre-commit +80 -0
- package/workspace-bin/install-daemon +299 -0
- package/workspace-bin/lane-watchdog.js +232 -0
- package/workspace-bin/lib/__init__.py +0 -0
- package/workspace-bin/lib/frontmatter.py +114 -0
- package/workspace-bin/memory-daemon.mjs +879 -0
- package/workspace-bin/memory-maintenance.mjs +531 -0
- package/workspace-bin/mesh-bridge.mjs +154 -0
- package/workspace-bin/multi-review +130 -0
- package/workspace-bin/obsidian +125 -0
- package/workspace-bin/obsidian-sync.mjs +888 -0
- package/workspace-bin/openclaw-register-source +102 -0
- package/workspace-bin/proactive-scan +147 -0
- package/workspace-bin/quality-gate +175 -0
- package/workspace-bin/screenshot +96 -0
- package/workspace-bin/session-recap +453 -0
- package/workspace-bin/skill-audit +494 -0
- package/workspace-bin/skill-quality-check +134 -0
- package/workspace-bin/skill-routing-eval +599 -0
- package/workspace-bin/soul-prompt +251 -0
- package/workspace-bin/subagent-audit.mjs +267 -0
- package/workspace-bin/test-multi-soul-workflow +130 -0
- package/workspace-bin/trust-registry +465 -0
- package/workspace-docs/AGENTS.md +201 -0
- package/workspace-docs/CLAUDE.md +64 -0
- package/workspace-docs/PRINCIPLES.md +81 -0
- package/workspace-docs/SOUL.md +48 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openclaw-agent-optimize
|
|
3
|
+
description: Optimize an OpenClaw agent setup (model routing, context management, delegation, rules, memory). Use when asked about optimizing agents, improving OpenClaw setup, or agent best practices.
|
|
4
|
+
triggers:
|
|
5
|
+
- "optimize my agent setup"
|
|
6
|
+
- "improve OpenClaw configuration"
|
|
7
|
+
- "agent best practices"
|
|
8
|
+
- "reduce agent context size"
|
|
9
|
+
- "tune model routing"
|
|
10
|
+
negative_triggers:
|
|
11
|
+
- "build a new agent from scratch"
|
|
12
|
+
- "deploy my agent to production"
|
|
13
|
+
- "save money on API costs"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# OpenClaw Agent Optimization
|
|
17
|
+
|
|
18
|
+
Use this skill to tune an OpenClaw workspace for **cost-aware routing**, **parallel-first delegation**, and **lean context**.
|
|
19
|
+
|
|
20
|
+
## Workflow (concise)
|
|
21
|
+
1. **Audit rules + memory**: ensure rules are modular/short; memory is only restart-critical facts.
|
|
22
|
+
2. **Model routing**: confirm tiered routing (lightweight / mid / deep) aligns with live config.
|
|
23
|
+
3. **Context discipline**: apply progressive disclosure; move large static data to references/scripts.
|
|
24
|
+
4. **Delegation protocol**: parallelize independent tasks; use sub-agents for long/isolated work.
|
|
25
|
+
5. **Heartbeat batching**: ensure checks are grouped by tier to avoid extra passes.
|
|
26
|
+
|
|
27
|
+
## References
|
|
28
|
+
- `references/model-selection.md`
|
|
29
|
+
- `references/context-management.md`
|
|
30
|
+
- `references/agent-orchestration.md`
|
|
31
|
+
- `references/cron-optimization.md`
|
|
32
|
+
- `references/memory-patterns.md`
|
|
33
|
+
- `references/continuous-learning.md`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Agent Orchestration (Parallel-First)
|
|
2
|
+
|
|
3
|
+
## Core Rules
|
|
4
|
+
- **Always parallelize independent tasks.** If task B does not depend on task A, spawn both.
|
|
5
|
+
- Delegate long-running or noisy work to sub-agents to keep main context clean.
|
|
6
|
+
|
|
7
|
+
## Split-Role Delegation
|
|
8
|
+
Use multiple sub-agents with different roles when you need diverse perspectives:
|
|
9
|
+
- **Engineer**: implementation details
|
|
10
|
+
- **Reviewer**: correctness & style
|
|
11
|
+
- **Security**: risk assessment
|
|
12
|
+
|
|
13
|
+
## OpenClaw Mechanics
|
|
14
|
+
- Use `sessions_spawn` (or equivalent) to create sub-agents.
|
|
15
|
+
- Pass only the minimal context (goal, constraints, relevant files).
|
|
16
|
+
- Log sub-agent runs to `memory/delegation_log.json` for recovery.
|
|
17
|
+
|
|
18
|
+
## When to Keep Inline
|
|
19
|
+
- Quick tasks (<2 min)
|
|
20
|
+
- Interactive debugging with user feedback
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Context Management (Progressive Disclosure)
|
|
2
|
+
|
|
3
|
+
## Window Discipline
|
|
4
|
+
- Avoid the last ~20% of context for big refactors or multi-file edits.
|
|
5
|
+
- If close to the limit, ask to `/compact` before continuing.
|
|
6
|
+
|
|
7
|
+
## Progressive Disclosure (3 Levels)
|
|
8
|
+
1. **Metadata always visible**: filenames, brief summaries, TODOs.
|
|
9
|
+
2. **Body on trigger**: load only the file/section needed.
|
|
10
|
+
3. **Bundled resources on demand**: schemas/docs moved to references or scripts.
|
|
11
|
+
|
|
12
|
+
## OpenClaw Practices
|
|
13
|
+
- Store large/static content under `references/` or scripts.
|
|
14
|
+
- Summarize and point instead of pasting full blocks.
|
|
15
|
+
- Batch related decisions in a single call.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Continuous Learning (Hooks → Skills)
|
|
2
|
+
|
|
3
|
+
## Two-Layer Approach
|
|
4
|
+
- **Hooks (deterministic)**: Use pre/post tool hooks to capture atomic “instincts.”
|
|
5
|
+
- **Skills (probabilistic)**: Distill clusters of instincts into reusable skills.
|
|
6
|
+
|
|
7
|
+
## OpenClaw Adaptation
|
|
8
|
+
- Session-start: load minimal context (SOUL/USER + today’s memory).
|
|
9
|
+
- Session-end: write summaries + extract repeat patterns.
|
|
10
|
+
- Pre-compact: save critical state before context loss.
|
|
11
|
+
|
|
12
|
+
## Confidence Scoring
|
|
13
|
+
- Score instincts 0.3–0.9 based on reliability.
|
|
14
|
+
- Promote only high-confidence patterns into skills.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Cron Optimization (Patterns)
|
|
2
|
+
|
|
3
|
+
> Cron jobs are **deterministic** and should be lean. Move logic to scripts; keep prompts short.
|
|
4
|
+
|
|
5
|
+
## Patterns
|
|
6
|
+
- **One pass per tier**: batch same-frequency checks together.
|
|
7
|
+
- **Short prompts**: <300 tokens; call scripts for heavy logic.
|
|
8
|
+
- **No complex shell quoting**: use scripts under `/scripts`.
|
|
9
|
+
|
|
10
|
+
## Model Assignment
|
|
11
|
+
- Use lightweight tiers for cron unless the task is genuinely complex.
|
|
12
|
+
- Upgrade only if the cron task repeatedly fails.
|
|
13
|
+
|
|
14
|
+
## Guardrails
|
|
15
|
+
- Do not edit cron definitions unless explicitly requested.
|
|
16
|
+
- Favor idempotent scripts to reduce re-run risk.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Memory Patterns (Daily + Long-Term)
|
|
2
|
+
|
|
3
|
+
## Files
|
|
4
|
+
- **Daily log**: `memory/YYYY-MM-DD.md` (raw notes, events, links)
|
|
5
|
+
- **Long-term memory**: `MEMORY.md` (curated, stable facts only)
|
|
6
|
+
|
|
7
|
+
## Distillation Rules
|
|
8
|
+
- Only keep what survives a restart: preferences, guardrails, key configs.
|
|
9
|
+
- Remove transient task details after completion.
|
|
10
|
+
- Summarize big threads into 1–3 bullets with pointers.
|
|
11
|
+
|
|
12
|
+
## Cadence
|
|
13
|
+
- Distill daily logs periodically into `MEMORY.md`.
|
|
14
|
+
- Keep `MEMORY.md` short and actionable.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Model Selection (Tiered Routing)
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
Use the **cheapest capable** model for the task. Escalate only after failure or when clearly justified.
|
|
5
|
+
|
|
6
|
+
## Tiers
|
|
7
|
+
- **Lightweight / frequent**: routine tasks, web search loops, formatting, quick scripts.
|
|
8
|
+
- **Main coding / orchestration**: multi-file edits, coordinating sub-agents, integration work.
|
|
9
|
+
- **Deep reasoning / architecture**: design decisions, critical risk analysis, large refactors.
|
|
10
|
+
|
|
11
|
+
## OpenClaw Practice
|
|
12
|
+
- **Source of truth**: live config (`config.get`) and `MEMORY.md` model routing.
|
|
13
|
+
- **Sub-agents**: assign lightweight tiers by default; upgrade only if required.
|
|
14
|
+
- **Ask on ambiguity**: “Recommend mid-tier for this. OK to proceed?”
|
|
15
|
+
|
|
16
|
+
## Anti-patterns
|
|
17
|
+
- Using highest tier for simple tasks.
|
|
18
|
+
- Repeatedly asking user for model choice when the task is routine.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openclaw-skill-scanner
|
|
3
|
+
description: "Security scanner that detects malicious patterns (base64 payloads, reverse shells, data exfil, crypto miners) in ClawHub skills. Use before installing a new skill, when auditing installed skills for security risks, or as a pre-install safety gate."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
triggers:
|
|
6
|
+
- "scan skill for malware"
|
|
7
|
+
- "security scan skill"
|
|
8
|
+
- "check skill safety"
|
|
9
|
+
- "pre-install scan"
|
|
10
|
+
- "audit skill security"
|
|
11
|
+
negative_triggers:
|
|
12
|
+
- "skill quality audit"
|
|
13
|
+
- "scan network"
|
|
14
|
+
- "antivirus scan"
|
|
15
|
+
- "code review"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Skill Scanner
|
|
19
|
+
|
|
20
|
+
**Author:** vrtlly.us
|
|
21
|
+
**Category:** Security
|
|
22
|
+
|
|
23
|
+
## Description
|
|
24
|
+
|
|
25
|
+
Scans ClawHub skills for malicious patterns before and after installation. Detects base64 payloads, reverse shells, data exfiltration, crypto miners, obfuscated URLs, and more.
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
|
|
29
|
+
### Scan all installed skills
|
|
30
|
+
```bash
|
|
31
|
+
python3 scanner.py
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Scan a specific skill
|
|
35
|
+
```bash
|
|
36
|
+
python3 scanner.py --skill <skill-name>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Scan a specific file
|
|
40
|
+
```bash
|
|
41
|
+
python3 scanner.py --file <path-to-file>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Pre-install scan (download → scan → report → cleanup)
|
|
45
|
+
```bash
|
|
46
|
+
python3 scanner.py --pre-install <clawhub-slug>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### JSON output
|
|
50
|
+
```bash
|
|
51
|
+
python3 scanner.py --json
|
|
52
|
+
python3 scanner.py --skill <name> --json
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Safe install hook
|
|
56
|
+
```bash
|
|
57
|
+
bash install-hook.sh <clawhub-slug>
|
|
58
|
+
bash install-hook.sh <clawhub-slug> --force
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Detection Patterns
|
|
62
|
+
|
|
63
|
+
| Category | What it catches |
|
|
64
|
+
|---|---|
|
|
65
|
+
| Base64 payloads | Long base64 strings near exec/bash/eval |
|
|
66
|
+
| Pipe to shell | `curl ... \| bash`, `wget ... \| sh` |
|
|
67
|
+
| Raw IP connections | `http://1.2.3.4` style URLs |
|
|
68
|
+
| Dangerous functions | `eval()`, `exec()`, `os.system()`, `subprocess(shell=True)` |
|
|
69
|
+
| Hidden files | Dotfile creation in unexpected places |
|
|
70
|
+
| Env exfiltration | Reading `.env`, API keys sent outbound |
|
|
71
|
+
| Obfuscated URLs | rentry.co, pastebin, hastebin redirectors |
|
|
72
|
+
| Fake dependencies | References to non-existent packages |
|
|
73
|
+
| Data exfil endpoints | webhook.site, requestbin, etc. |
|
|
74
|
+
| Crypto mining | xmrig, stratum, mining pool references |
|
|
75
|
+
| Password archives | Password-protected zip/tar downloads |
|
|
76
|
+
|
|
77
|
+
## Risk Scores
|
|
78
|
+
|
|
79
|
+
- **0-29 (Green):** Clean — no suspicious patterns found
|
|
80
|
+
- **30-69 (Yellow):** Suspicious — review warnings before use
|
|
81
|
+
- **70-100 (Red):** Dangerous — likely malicious, do not install
|
|
82
|
+
|
|
83
|
+
## Files
|
|
84
|
+
|
|
85
|
+
- `scanner.py` — Main scanner engine
|
|
86
|
+
- `install-hook.sh` — Safe installation wrapper
|
|
87
|
+
- `whitelist.json` — Known-good and known-bad skill lists
|
|
88
|
+
- `report-template.md` — Markdown report template
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# install-hook.sh — Safe skill installation with pre-scan
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# bash install-hook.sh <clawhub-slug> [--force]
|
|
7
|
+
#
|
|
8
|
+
# Installs a ClawHub skill to a temp directory, scans it for malicious
|
|
9
|
+
# patterns, then either installs, warns, or blocks based on the risk score.
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
set -euo pipefail
|
|
13
|
+
|
|
14
|
+
# ─── Config ──────────────────────────────────────────────────────────────────
|
|
15
|
+
|
|
16
|
+
SCANNER_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
17
|
+
SCANNER="${SCANNER_DIR}/scanner.py"
|
|
18
|
+
WHITELIST="${SCANNER_DIR}/whitelist.json"
|
|
19
|
+
SKILLS_DIR="${HOME}/.openclaw/workspace/skills"
|
|
20
|
+
|
|
21
|
+
RED='\033[91m'
|
|
22
|
+
GREEN='\033[92m'
|
|
23
|
+
YELLOW='\033[93m'
|
|
24
|
+
CYAN='\033[96m'
|
|
25
|
+
BOLD='\033[1m'
|
|
26
|
+
DIM='\033[2m'
|
|
27
|
+
RESET='\033[0m'
|
|
28
|
+
|
|
29
|
+
# ─── Argument Parsing ────────────────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
SLUG=""
|
|
32
|
+
FORCE=false
|
|
33
|
+
|
|
34
|
+
for arg in "$@"; do
|
|
35
|
+
case "$arg" in
|
|
36
|
+
--force|-f)
|
|
37
|
+
FORCE=true
|
|
38
|
+
;;
|
|
39
|
+
--help|-h)
|
|
40
|
+
echo "Usage: bash install-hook.sh <clawhub-slug> [--force]"
|
|
41
|
+
echo ""
|
|
42
|
+
echo "Safely installs a ClawHub skill with pre-installation security scan."
|
|
43
|
+
echo ""
|
|
44
|
+
echo "Options:"
|
|
45
|
+
echo " --force, -f Force install even if dangerous (score > 70)"
|
|
46
|
+
echo " --help, -h Show this help"
|
|
47
|
+
echo ""
|
|
48
|
+
echo "Risk thresholds:"
|
|
49
|
+
echo " Score < 30: Auto-install (clean)"
|
|
50
|
+
echo " Score 30-70: Show warnings, ask for confirmation"
|
|
51
|
+
echo " Score > 70: Block installation (use --force to override)"
|
|
52
|
+
exit 0
|
|
53
|
+
;;
|
|
54
|
+
*)
|
|
55
|
+
if [ -z "$SLUG" ]; then
|
|
56
|
+
SLUG="$arg"
|
|
57
|
+
else
|
|
58
|
+
echo -e "${RED}Error: Unexpected argument: $arg${RESET}"
|
|
59
|
+
exit 1
|
|
60
|
+
fi
|
|
61
|
+
;;
|
|
62
|
+
esac
|
|
63
|
+
done
|
|
64
|
+
|
|
65
|
+
if [ -z "$SLUG" ]; then
|
|
66
|
+
echo -e "${RED}Error: No skill slug provided${RESET}"
|
|
67
|
+
echo "Usage: bash install-hook.sh <clawhub-slug> [--force]"
|
|
68
|
+
exit 1
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
# ─── Check Prerequisites ────────────────────────────────────────────────────
|
|
72
|
+
|
|
73
|
+
if [ ! -f "$SCANNER" ]; then
|
|
74
|
+
echo -e "${RED}Error: scanner.py not found at ${SCANNER}${RESET}"
|
|
75
|
+
exit 1
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
if ! command -v python3 &>/dev/null; then
|
|
79
|
+
echo -e "${RED}Error: python3 not found${RESET}"
|
|
80
|
+
exit 1
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
# ─── Check Blacklist First ──────────────────────────────────────────────────
|
|
84
|
+
|
|
85
|
+
if [ -f "$WHITELIST" ]; then
|
|
86
|
+
BLACKLISTED=$(python3 -c "
|
|
87
|
+
import json, sys
|
|
88
|
+
with open('${WHITELIST}') as f:
|
|
89
|
+
data = json.load(f)
|
|
90
|
+
for item in data.get('blacklisted', []):
|
|
91
|
+
if item['slug'] == '${SLUG}':
|
|
92
|
+
print(item.get('reason', 'Known malicious'))
|
|
93
|
+
sys.exit(0)
|
|
94
|
+
" 2>/dev/null || true)
|
|
95
|
+
|
|
96
|
+
if [ -n "$BLACKLISTED" ]; then
|
|
97
|
+
echo ""
|
|
98
|
+
echo -e "${RED}${BOLD}╔══════════════════════════════════════════════════╗${RESET}"
|
|
99
|
+
echo -e "${RED}${BOLD}║ 🚫 INSTALLATION BLOCKED — BLACKLISTED ║${RESET}"
|
|
100
|
+
echo -e "${RED}${BOLD}╚══════════════════════════════════════════════════╝${RESET}"
|
|
101
|
+
echo ""
|
|
102
|
+
echo -e "${RED} Skill: ${SLUG}${RESET}"
|
|
103
|
+
echo -e "${RED} Reason: ${BLACKLISTED}${RESET}"
|
|
104
|
+
echo ""
|
|
105
|
+
|
|
106
|
+
if [ "$FORCE" = true ]; then
|
|
107
|
+
echo -e "${YELLOW}${BOLD}⚠ --force specified, but blacklisted skills cannot be force-installed.${RESET}"
|
|
108
|
+
echo -e "${YELLOW} Remove it from whitelist.json blacklist first if you believe this is wrong.${RESET}"
|
|
109
|
+
fi
|
|
110
|
+
echo ""
|
|
111
|
+
exit 1
|
|
112
|
+
fi
|
|
113
|
+
fi
|
|
114
|
+
|
|
115
|
+
# ─── Create Temp Directory ──────────────────────────────────────────────────
|
|
116
|
+
|
|
117
|
+
TMPDIR=$(mktemp -d "/tmp/skill-scan-XXXXXX")
|
|
118
|
+
trap "rm -rf '$TMPDIR'" EXIT
|
|
119
|
+
|
|
120
|
+
echo ""
|
|
121
|
+
echo -e "${CYAN}${BOLD}🔍 Skill Scanner — Safe Install${RESET}"
|
|
122
|
+
echo -e "${DIM}────────────────────────────────────────${RESET}"
|
|
123
|
+
echo -e "${CYAN} Slug: ${SLUG}${RESET}"
|
|
124
|
+
echo ""
|
|
125
|
+
|
|
126
|
+
# ─── Download Skill ─────────────────────────────────────────────────────────
|
|
127
|
+
|
|
128
|
+
echo -e "${DIM}📦 Downloading skill to temp directory...${RESET}"
|
|
129
|
+
|
|
130
|
+
SKILL_TMPDIR="${TMPDIR}/${SLUG}"
|
|
131
|
+
mkdir -p "$SKILL_TMPDIR"
|
|
132
|
+
|
|
133
|
+
# Try openclaw hub install
|
|
134
|
+
if command -v openclaw &>/dev/null; then
|
|
135
|
+
if ! openclaw hub install "$SLUG" --dir "$TMPDIR" 2>/dev/null; then
|
|
136
|
+
echo -e "${RED}✗ Failed to download skill '${SLUG}' via openclaw hub${RESET}"
|
|
137
|
+
exit 1
|
|
138
|
+
fi
|
|
139
|
+
else
|
|
140
|
+
echo -e "${RED}✗ 'openclaw' CLI not found. Cannot download from ClawHub.${RESET}"
|
|
141
|
+
echo -e "${DIM} Install OpenClaw or manually place skill files in ${SKILLS_DIR}/${SLUG}/${RESET}"
|
|
142
|
+
exit 1
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
# Find the actual skill directory (might be nested)
|
|
146
|
+
if [ ! -d "$SKILL_TMPDIR" ]; then
|
|
147
|
+
# Try to find it
|
|
148
|
+
FOUND=$(find "$TMPDIR" -maxdepth 2 -name "SKILL.md" -type f 2>/dev/null | head -1)
|
|
149
|
+
if [ -n "$FOUND" ]; then
|
|
150
|
+
SKILL_TMPDIR=$(dirname "$FOUND")
|
|
151
|
+
else
|
|
152
|
+
# Just use whatever was downloaded
|
|
153
|
+
DIRS=$(find "$TMPDIR" -maxdepth 1 -type d ! -path "$TMPDIR" | head -1)
|
|
154
|
+
if [ -n "$DIRS" ]; then
|
|
155
|
+
SKILL_TMPDIR="$DIRS"
|
|
156
|
+
fi
|
|
157
|
+
fi
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
echo -e "${GREEN}✓ Downloaded${RESET}"
|
|
161
|
+
echo ""
|
|
162
|
+
|
|
163
|
+
# ─── Run Scanner ────────────────────────────────────────────────────────────
|
|
164
|
+
|
|
165
|
+
echo -e "${DIM}🔬 Scanning for malicious patterns...${RESET}"
|
|
166
|
+
echo ""
|
|
167
|
+
|
|
168
|
+
# Get JSON results for programmatic use
|
|
169
|
+
JSON_RESULT=$(python3 "$SCANNER" --file "$SKILL_TMPDIR" --json 2>/dev/null || true)
|
|
170
|
+
|
|
171
|
+
# Also run with directory scan for better coverage
|
|
172
|
+
SCAN_OUTPUT=$(python3 "$SCANNER" --dir "$TMPDIR" --skill "$(basename "$SKILL_TMPDIR")" 2>&1 || true)
|
|
173
|
+
|
|
174
|
+
# Get risk score
|
|
175
|
+
RISK_SCORE=$(echo "$JSON_RESULT" | python3 -c "
|
|
176
|
+
import json, sys
|
|
177
|
+
try:
|
|
178
|
+
data = json.load(sys.stdin)
|
|
179
|
+
skills = data.get('skills', [])
|
|
180
|
+
if skills:
|
|
181
|
+
print(skills[0].get('risk_score', 0))
|
|
182
|
+
else:
|
|
183
|
+
print(0)
|
|
184
|
+
except:
|
|
185
|
+
print(0)
|
|
186
|
+
" 2>/dev/null || echo "0")
|
|
187
|
+
|
|
188
|
+
# If JSON failed, try scanning the directory directly
|
|
189
|
+
if [ "$RISK_SCORE" = "0" ] || [ -z "$RISK_SCORE" ]; then
|
|
190
|
+
# Run full directory scan
|
|
191
|
+
JSON_RESULT=$(python3 "$SCANNER" --dir "$TMPDIR" --json 2>/dev/null || true)
|
|
192
|
+
RISK_SCORE=$(echo "$JSON_RESULT" | python3 -c "
|
|
193
|
+
import json, sys
|
|
194
|
+
try:
|
|
195
|
+
data = json.load(sys.stdin)
|
|
196
|
+
skills = data.get('skills', [])
|
|
197
|
+
max_score = 0
|
|
198
|
+
for s in skills:
|
|
199
|
+
score = s.get('risk_score', 0)
|
|
200
|
+
if score > max_score:
|
|
201
|
+
max_score = score
|
|
202
|
+
print(max_score)
|
|
203
|
+
except:
|
|
204
|
+
print(0)
|
|
205
|
+
" 2>/dev/null || echo "0")
|
|
206
|
+
fi
|
|
207
|
+
|
|
208
|
+
# Print the human-readable scan output
|
|
209
|
+
echo "$SCAN_OUTPUT"
|
|
210
|
+
|
|
211
|
+
# ─── Decision Logic ─────────────────────────────────────────────────────────
|
|
212
|
+
|
|
213
|
+
RISK_SCORE=${RISK_SCORE:-0}
|
|
214
|
+
|
|
215
|
+
echo -e "${DIM}────────────────────────────────────────${RESET}"
|
|
216
|
+
echo -e " Risk Score: ${BOLD}${RISK_SCORE}/100${RESET}"
|
|
217
|
+
echo ""
|
|
218
|
+
|
|
219
|
+
if [ "$RISK_SCORE" -lt 30 ]; then
|
|
220
|
+
# Clean — auto install
|
|
221
|
+
echo -e "${GREEN}${BOLD}✓ CLEAN — Installing skill...${RESET}"
|
|
222
|
+
|
|
223
|
+
DEST="${SKILLS_DIR}/${SLUG}"
|
|
224
|
+
if [ -d "$DEST" ]; then
|
|
225
|
+
echo -e "${YELLOW} Skill already exists at ${DEST}. Replacing...${RESET}"
|
|
226
|
+
rm -rf "$DEST"
|
|
227
|
+
fi
|
|
228
|
+
|
|
229
|
+
cp -r "$SKILL_TMPDIR" "$DEST"
|
|
230
|
+
echo -e "${GREEN}${BOLD}✓ Installed '${SLUG}' to ${DEST}${RESET}"
|
|
231
|
+
echo ""
|
|
232
|
+
exit 0
|
|
233
|
+
|
|
234
|
+
elif [ "$RISK_SCORE" -lt 70 ]; then
|
|
235
|
+
# Suspicious — ask for confirmation
|
|
236
|
+
echo -e "${YELLOW}${BOLD}⚠ SUSPICIOUS — This skill has some concerning patterns.${RESET}"
|
|
237
|
+
echo ""
|
|
238
|
+
|
|
239
|
+
if [ "$FORCE" = true ]; then
|
|
240
|
+
echo -e "${YELLOW} --force specified. Installing despite warnings...${RESET}"
|
|
241
|
+
else
|
|
242
|
+
echo -e "${YELLOW} Review the findings above. Do you want to install anyway?${RESET}"
|
|
243
|
+
echo ""
|
|
244
|
+
read -r -p " Install '${SLUG}'? [y/N]: " CONFIRM
|
|
245
|
+
if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then
|
|
246
|
+
echo -e "${RED} Installation cancelled.${RESET}"
|
|
247
|
+
echo ""
|
|
248
|
+
exit 1
|
|
249
|
+
fi
|
|
250
|
+
fi
|
|
251
|
+
|
|
252
|
+
DEST="${SKILLS_DIR}/${SLUG}"
|
|
253
|
+
if [ -d "$DEST" ]; then
|
|
254
|
+
echo -e "${YELLOW} Skill already exists at ${DEST}. Replacing...${RESET}"
|
|
255
|
+
rm -rf "$DEST"
|
|
256
|
+
fi
|
|
257
|
+
|
|
258
|
+
cp -r "$SKILL_TMPDIR" "$DEST"
|
|
259
|
+
echo -e "${GREEN}${BOLD}✓ Installed '${SLUG}' to ${DEST}${RESET}"
|
|
260
|
+
echo -e "${YELLOW} ⚠ Monitor this skill's behavior.${RESET}"
|
|
261
|
+
echo ""
|
|
262
|
+
exit 0
|
|
263
|
+
|
|
264
|
+
else
|
|
265
|
+
# Dangerous — block
|
|
266
|
+
echo -e "${RED}${BOLD}╔══════════════════════════════════════════════════╗${RESET}"
|
|
267
|
+
echo -e "${RED}${BOLD}║ 🚫 INSTALLATION BLOCKED — DANGEROUS ║${RESET}"
|
|
268
|
+
echo -e "${RED}${BOLD}╚══════════════════════════════════════════════════╝${RESET}"
|
|
269
|
+
echo ""
|
|
270
|
+
echo -e "${RED} Risk Score: ${RISK_SCORE}/100${RESET}"
|
|
271
|
+
echo -e "${RED} This skill contains patterns commonly found in malware.${RESET}"
|
|
272
|
+
echo ""
|
|
273
|
+
|
|
274
|
+
if [ "$FORCE" = true ]; then
|
|
275
|
+
echo -e "${RED}${BOLD} ⚠ --force specified. Installing DANGEROUS skill...${RESET}"
|
|
276
|
+
echo -e "${RED} YOU HAVE BEEN WARNED.${RESET}"
|
|
277
|
+
echo ""
|
|
278
|
+
|
|
279
|
+
DEST="${SKILLS_DIR}/${SLUG}"
|
|
280
|
+
if [ -d "$DEST" ]; then
|
|
281
|
+
rm -rf "$DEST"
|
|
282
|
+
fi
|
|
283
|
+
|
|
284
|
+
cp -r "$SKILL_TMPDIR" "$DEST"
|
|
285
|
+
echo -e "${YELLOW} Installed '${SLUG}' to ${DEST}${RESET}"
|
|
286
|
+
echo -e "${RED}${BOLD} ⚠ THIS SKILL MAY BE MALICIOUS. USE AT YOUR OWN RISK.${RESET}"
|
|
287
|
+
echo ""
|
|
288
|
+
exit 0
|
|
289
|
+
else
|
|
290
|
+
echo -e "${RED} Use --force to override: bash install-hook.sh ${SLUG} --force${RESET}"
|
|
291
|
+
echo ""
|
|
292
|
+
exit 1
|
|
293
|
+
fi
|
|
294
|
+
fi
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# 🔍 Skill Scanner Report
|
|
2
|
+
|
|
3
|
+
**Scan Date:** {scan_date}
|
|
4
|
+
**Scanner Version:** 1.0.0
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Summary
|
|
9
|
+
|
|
10
|
+
| Metric | Value |
|
|
11
|
+
|---|---|
|
|
12
|
+
| Skills Scanned | {total_skills} |
|
|
13
|
+
| Files Scanned | {total_files} |
|
|
14
|
+
| Total Findings | {total_findings} |
|
|
15
|
+
| Clean Skills | {clean_count} |
|
|
16
|
+
| Suspicious Skills | {suspicious_count} |
|
|
17
|
+
| Dangerous Skills | {dangerous_count} |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Results by Skill
|
|
22
|
+
|
|
23
|
+
{skill_results}
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Skill Detail Template
|
|
28
|
+
|
|
29
|
+
### {skill_name}
|
|
30
|
+
|
|
31
|
+
**Risk Score:** {risk_score}/100
|
|
32
|
+
**Status:** {status_emoji} {status_label}
|
|
33
|
+
**Files Scanned:** {files_scanned}
|
|
34
|
+
|
|
35
|
+
#### Findings
|
|
36
|
+
|
|
37
|
+
{findings_list}
|
|
38
|
+
|
|
39
|
+
| # | Severity | File | Line | Pattern | Match |
|
|
40
|
+
|---|---|---|---|---|---|
|
|
41
|
+
{findings_table}
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Legend
|
|
46
|
+
|
|
47
|
+
- 🟢 **Clean** (0-29): No suspicious patterns detected
|
|
48
|
+
- 🟡 **Suspicious** (30-69): Review warnings before use
|
|
49
|
+
- 🔴 **Dangerous** (70-100): Likely malicious — do not install
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
*Generated by skill-scanner v1.0.0 — https://github.com/openclaw/skill-scanner*
|