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.
Files changed (779) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +184 -0
  3. package/bin/discord-read.js +228 -0
  4. package/bin/fleet-deploy.js +365 -0
  5. package/bin/lane-watchdog.js +232 -0
  6. package/bin/mesh-agent.js +714 -0
  7. package/bin/mesh-bridge.js +535 -0
  8. package/bin/mesh-deploy-listener.js +322 -0
  9. package/bin/mesh-deploy.js +1048 -0
  10. package/bin/mesh-health-publisher.js +247 -0
  11. package/bin/mesh-task-daemon.js +451 -0
  12. package/bin/mesh-tool-discord.js +293 -0
  13. package/bin/mesh.js +649 -0
  14. package/boot/manifest.yaml +187 -0
  15. package/cli.js +35 -0
  16. package/config/daemon.json.template +16 -0
  17. package/config/obsidian-sync.json.template +39 -0
  18. package/config/openclaw.json.template +124 -0
  19. package/config/transcript-sources.json.template +22 -0
  20. package/identity/AGENTS.md +201 -0
  21. package/identity/CLAUDE.md +64 -0
  22. package/identity/DELEGATION.md +304 -0
  23. package/identity/HEARTBEAT.md +163 -0
  24. package/identity/MEMORY_SPEC.md +368 -0
  25. package/identity/PRINCIPLES.md +81 -0
  26. package/identity/SOUL.md +48 -0
  27. package/identity/TOOLS.md +47 -0
  28. package/install.sh +895 -0
  29. package/lib/agent-activity.js +390 -0
  30. package/lib/kanban-io.js +352 -0
  31. package/lib/mesh-registry.js +194 -0
  32. package/lib/mesh-roles.js +13 -0
  33. package/lib/mesh-tasks.js +306 -0
  34. package/lib/nats-resolve.js +108 -0
  35. package/mission-control/README.md +36 -0
  36. package/mission-control/drizzle/0000_simple_silhouette.sql +62 -0
  37. package/mission-control/drizzle/meta/0000_snapshot.json +413 -0
  38. package/mission-control/drizzle/meta/_journal.json +13 -0
  39. package/mission-control/drizzle.config.ts +13 -0
  40. package/mission-control/eslint.config.mjs +18 -0
  41. package/mission-control/next.config.ts +7 -0
  42. package/mission-control/package-lock.json +10518 -0
  43. package/mission-control/package.json +49 -0
  44. package/mission-control/postcss.config.mjs +7 -0
  45. package/mission-control/public/file.svg +1 -0
  46. package/mission-control/public/globe.svg +1 -0
  47. package/mission-control/public/next.svg +1 -0
  48. package/mission-control/public/vercel.svg +1 -0
  49. package/mission-control/public/window.svg +1 -0
  50. package/mission-control/scripts/enrich-descriptions.js +193 -0
  51. package/mission-control/scripts/gen-chronology.js +102 -0
  52. package/mission-control/scripts/import-pipeline-v2.js +523 -0
  53. package/mission-control/scripts/import-pipeline.js +295 -0
  54. package/mission-control/src/app/api/activity/live/route.ts +27 -0
  55. package/mission-control/src/app/api/activity/route.ts +47 -0
  56. package/mission-control/src/app/api/burndown/route.ts +112 -0
  57. package/mission-control/src/app/api/critical-path/route.ts +159 -0
  58. package/mission-control/src/app/api/dependencies/route.ts +176 -0
  59. package/mission-control/src/app/api/memory/categories/route.ts +93 -0
  60. package/mission-control/src/app/api/memory/consolidate/route.ts +107 -0
  61. package/mission-control/src/app/api/memory/doc/route.ts +89 -0
  62. package/mission-control/src/app/api/memory/flush/route.ts +129 -0
  63. package/mission-control/src/app/api/memory/graph/route.ts +105 -0
  64. package/mission-control/src/app/api/memory/items/route.ts +86 -0
  65. package/mission-control/src/app/api/memory/list/route.ts +48 -0
  66. package/mission-control/src/app/api/memory/retrieve/route.ts +51 -0
  67. package/mission-control/src/app/api/memory/search/route.ts +143 -0
  68. package/mission-control/src/app/api/memory/sync/route.ts +23 -0
  69. package/mission-control/src/app/api/memory/wikilinks/route.ts +75 -0
  70. package/mission-control/src/app/api/mesh/events/route.ts +67 -0
  71. package/mission-control/src/app/api/mesh/nodes/route.ts +221 -0
  72. package/mission-control/src/app/api/mesh/tokens/route.ts +133 -0
  73. package/mission-control/src/app/api/projects/route.ts +102 -0
  74. package/mission-control/src/app/api/resolve-path/route.ts +92 -0
  75. package/mission-control/src/app/api/scheduler/tick/route.ts +38 -0
  76. package/mission-control/src/app/api/scheduler/waves/route.ts +54 -0
  77. package/mission-control/src/app/api/screenshot/route.ts +127 -0
  78. package/mission-control/src/app/api/settings/gateway/route.ts +92 -0
  79. package/mission-control/src/app/api/skills/[id]/health/route.ts +57 -0
  80. package/mission-control/src/app/api/skills/list/route.ts +41 -0
  81. package/mission-control/src/app/api/souls/[id]/evolution/route.ts +253 -0
  82. package/mission-control/src/app/api/souls/[id]/prompt/route.ts +205 -0
  83. package/mission-control/src/app/api/souls/[id]/propagate/route.ts +146 -0
  84. package/mission-control/src/app/api/souls/route.ts +174 -0
  85. package/mission-control/src/app/api/tasks/[id]/handoff/route.ts +115 -0
  86. package/mission-control/src/app/api/tasks/[id]/route.ts +266 -0
  87. package/mission-control/src/app/api/tasks/[id]/tree/route.ts +94 -0
  88. package/mission-control/src/app/api/tasks/route.ts +253 -0
  89. package/mission-control/src/app/api/tts/route.ts +47 -0
  90. package/mission-control/src/app/api/workspace/files/route.ts +88 -0
  91. package/mission-control/src/app/api/workspace/read/route.ts +73 -0
  92. package/mission-control/src/app/burndown/page.tsx +309 -0
  93. package/mission-control/src/app/calendar/page.tsx +839 -0
  94. package/mission-control/src/app/favicon.ico +0 -0
  95. package/mission-control/src/app/globals.css +67 -0
  96. package/mission-control/src/app/graph/page.tsx +352 -0
  97. package/mission-control/src/app/layout.tsx +35 -0
  98. package/mission-control/src/app/live/page.tsx +232 -0
  99. package/mission-control/src/app/memory/page.tsx +154 -0
  100. package/mission-control/src/app/mesh/page.tsx +457 -0
  101. package/mission-control/src/app/obsidian/page.tsx +252 -0
  102. package/mission-control/src/app/page.tsx +70 -0
  103. package/mission-control/src/app/roadmap/page.tsx +1757 -0
  104. package/mission-control/src/app/settings/page.tsx +260 -0
  105. package/mission-control/src/app/souls/page.tsx +573 -0
  106. package/mission-control/src/components/board/activity-timeline.tsx +96 -0
  107. package/mission-control/src/components/board/daily-board.tsx +373 -0
  108. package/mission-control/src/components/board/kanban-board.tsx +364 -0
  109. package/mission-control/src/components/board/kanban-column.tsx +105 -0
  110. package/mission-control/src/components/board/live-stream.tsx +116 -0
  111. package/mission-control/src/components/board/skill-health-card.tsx +128 -0
  112. package/mission-control/src/components/board/status-banner.tsx +124 -0
  113. package/mission-control/src/components/board/task-card.tsx +454 -0
  114. package/mission-control/src/components/board/unified-task-dialog.tsx +1043 -0
  115. package/mission-control/src/components/layout/resizable-layout.tsx +68 -0
  116. package/mission-control/src/components/layout/sidebar.tsx +90 -0
  117. package/mission-control/src/components/live/audio-spectrum.tsx +106 -0
  118. package/mission-control/src/components/live/chat-bubble.tsx +52 -0
  119. package/mission-control/src/components/live/chat-input.tsx +92 -0
  120. package/mission-control/src/components/memory/doc-reader.tsx +172 -0
  121. package/mission-control/src/components/memory/memory-list.tsx +169 -0
  122. package/mission-control/src/components/memory/search-bar.tsx +67 -0
  123. package/mission-control/src/components/memory/search-results.tsx +149 -0
  124. package/mission-control/src/components/obsidian/backlinks-panel.tsx +52 -0
  125. package/mission-control/src/components/obsidian/file-tree.tsx +186 -0
  126. package/mission-control/src/components/obsidian/local-graph.tsx +107 -0
  127. package/mission-control/src/components/obsidian/obsidian-graph.tsx +192 -0
  128. package/mission-control/src/components/obsidian/obsidian-reader.tsx +246 -0
  129. package/mission-control/src/lib/activity.ts +29 -0
  130. package/mission-control/src/lib/config.ts +21 -0
  131. package/mission-control/src/lib/db/index.ts +429 -0
  132. package/mission-control/src/lib/db/schema.ts +218 -0
  133. package/mission-control/src/lib/gateway-notify.ts +113 -0
  134. package/mission-control/src/lib/hooks.ts +536 -0
  135. package/mission-control/src/lib/memory/categories.ts +125 -0
  136. package/mission-control/src/lib/memory/entities.ts +482 -0
  137. package/mission-control/src/lib/memory/extract.ts +369 -0
  138. package/mission-control/src/lib/memory/retrieval.ts +281 -0
  139. package/mission-control/src/lib/memory/wikilinks.ts +147 -0
  140. package/mission-control/src/lib/nats.ts +126 -0
  141. package/mission-control/src/lib/parsers/clawvault-doc.ts +98 -0
  142. package/mission-control/src/lib/parsers/daily-log.ts +73 -0
  143. package/mission-control/src/lib/parsers/memory-md.ts +81 -0
  144. package/mission-control/src/lib/parsers/task-markdown.ts +459 -0
  145. package/mission-control/src/lib/parsers/transcript.ts +209 -0
  146. package/mission-control/src/lib/scheduler.ts +394 -0
  147. package/mission-control/src/lib/speech/use-speech-pipeline.ts +176 -0
  148. package/mission-control/src/lib/sync/memory.ts +224 -0
  149. package/mission-control/src/lib/sync/tasks.ts +271 -0
  150. package/mission-control/src/lib/tts/edge.ts +31 -0
  151. package/mission-control/src/lib/tts/google.ts +78 -0
  152. package/mission-control/src/lib/tts/index.ts +39 -0
  153. package/mission-control/src/lib/tts/types.ts +18 -0
  154. package/mission-control/tsconfig.json +42 -0
  155. package/obsidian-vault/.obsidian/app.json +10 -0
  156. package/obsidian-vault/.obsidian/community-plugins.json +8 -0
  157. package/obsidian-vault/.obsidian/graph.json +40 -0
  158. package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/main.js +58769 -0
  159. package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/manifest.json +10 -0
  160. package/obsidian-vault/.obsidian/plugins/obsidian-local-rest-api/styles.css +47 -0
  161. package/obsidian-vault/00-meta/.gitkeep +0 -0
  162. package/obsidian-vault/01-architecture/.gitkeep +0 -0
  163. package/obsidian-vault/02-smart-contracts/.gitkeep +0 -0
  164. package/obsidian-vault/03-backend/.gitkeep +0 -0
  165. package/obsidian-vault/04-mobile/.gitkeep +0 -0
  166. package/obsidian-vault/05-ar-mapping/.gitkeep +0 -0
  167. package/obsidian-vault/06-3d-assets/.gitkeep +0 -0
  168. package/obsidian-vault/07-sound-music/.gitkeep +0 -0
  169. package/obsidian-vault/08-lore/.gitkeep +0 -0
  170. package/obsidian-vault/09-quests-playthrough/.gitkeep +0 -0
  171. package/obsidian-vault/10-economy/.gitkeep +0 -0
  172. package/obsidian-vault/11-nft-assets/.gitkeep +0 -0
  173. package/obsidian-vault/12-nft-mechanics/.gitkeep +0 -0
  174. package/obsidian-vault/13-dao-guild-social/.gitkeep +0 -0
  175. package/obsidian-vault/14-game-progression/.gitkeep +0 -0
  176. package/obsidian-vault/15-analytics/.gitkeep +0 -0
  177. package/obsidian-vault/16-security/.gitkeep +0 -0
  178. package/obsidian-vault/17-devops/.gitkeep +0 -0
  179. package/obsidian-vault/18-marketplace/.gitkeep +0 -0
  180. package/obsidian-vault/19-decisions/.gitkeep +0 -0
  181. package/obsidian-vault/20-business-strategy/.gitkeep +0 -0
  182. package/obsidian-vault/21-legal-regulatory/.gitkeep +0 -0
  183. package/obsidian-vault/nodes/.gitkeep +0 -0
  184. package/openclaw.env.example +17 -0
  185. package/package.json +45 -0
  186. package/services/launchd/ai.openclaw.gateway.plist +59 -0
  187. package/services/launchd/ai.openclaw.lane-watchdog.plist +32 -0
  188. package/services/launchd/ai.openclaw.log-rotate.plist +28 -0
  189. package/services/launchd/ai.openclaw.memory-daemon.plist +36 -0
  190. package/services/launchd/ai.openclaw.mesh-agent.plist +38 -0
  191. package/services/launchd/ai.openclaw.mesh-bridge.plist +36 -0
  192. package/services/launchd/ai.openclaw.mesh-deploy-listener.plist +33 -0
  193. package/services/launchd/ai.openclaw.mesh-health-publisher.plist +29 -0
  194. package/services/launchd/ai.openclaw.mesh-task-daemon.plist +36 -0
  195. package/services/launchd/ai.openclaw.mesh-tool-discord.plist +36 -0
  196. package/services/launchd/ai.openclaw.mission-control.plist +41 -0
  197. package/services/service-manifest.json +13 -0
  198. package/services/systemd/openclaw-gateway.service +21 -0
  199. package/services/systemd/openclaw-lane-watchdog.service +21 -0
  200. package/services/systemd/openclaw-log-rotate.service +13 -0
  201. package/services/systemd/openclaw-log-rotate.timer +9 -0
  202. package/services/systemd/openclaw-memory-daemon.service +21 -0
  203. package/services/systemd/openclaw-mesh-agent.service +19 -0
  204. package/services/systemd/openclaw-mesh-bridge.service +21 -0
  205. package/services/systemd/openclaw-mesh-deploy-listener.service +23 -0
  206. package/services/systemd/openclaw-mesh-health-publisher.service +21 -0
  207. package/services/systemd/openclaw-mesh-task-daemon.service +21 -0
  208. package/services/systemd/openclaw-mesh-tool-discord.service +21 -0
  209. package/services/systemd/openclaw-mission-control.service +22 -0
  210. package/skills/1password/.clawhub/origin.json +7 -0
  211. package/skills/1password/SKILL.md +63 -0
  212. package/skills/1password/references/cli-examples.md +29 -0
  213. package/skills/1password/references/get-started.md +17 -0
  214. package/skills/acquisition-channel-advisor/SKILL.md +643 -0
  215. package/skills/acquisition-channel-advisor/examples/conversation-flow.md +531 -0
  216. package/skills/agent-browser/.clawhub/origin.json +7 -0
  217. package/skills/agent-browser/CONTRIBUTING.md +63 -0
  218. package/skills/agent-browser/SKILL.md +338 -0
  219. package/skills/agentic-compass/.clawhub/origin.json +7 -0
  220. package/skills/agentic-compass/README.md +96 -0
  221. package/skills/agentic-compass/SKILL.md +112 -0
  222. package/skills/agentic-compass/references/README.md +5 -0
  223. package/skills/agentic-compass/scripts/agentic-compass.py +196 -0
  224. package/skills/arcane-dev-ops/SKILL.md +61 -0
  225. package/skills/arcane-dev-ops/references/checklist.md +22 -0
  226. package/skills/arcane-dev-ops/references/validation-cases.md +11 -0
  227. package/skills/arcane-dev-ops/scripts/prepush_check.sh +41 -0
  228. package/skills/auto-updater/.clawhub/origin.json +7 -0
  229. package/skills/auto-updater/SKILL.md +158 -0
  230. package/skills/auto-updater/references/agent-guide.md +152 -0
  231. package/skills/auto-updater/references/summary-examples.md +109 -0
  232. package/skills/business-health-diagnostic/SKILL.md +782 -0
  233. package/skills/byterover/.clawhub/origin.json +7 -0
  234. package/skills/byterover/SKILL.md +105 -0
  235. package/skills/byterover/TROUBLESHOOTING.md +50 -0
  236. package/skills/byterover/WORKFLOWS.md +229 -0
  237. package/skills/capability-evolver/.clawhub/origin.json +7 -0
  238. package/skills/capability-evolver/CONTRIBUTING.md +11 -0
  239. package/skills/capability-evolver/README.md +157 -0
  240. package/skills/capability-evolver/README.zh-CN.md +112 -0
  241. package/skills/capability-evolver/SKILL.md +93 -0
  242. package/skills/capability-evolver/assets/gep/capsules.json +5 -0
  243. package/skills/capability-evolver/assets/gep/genes.json +104 -0
  244. package/skills/capability-evolver/index.js +59 -0
  245. package/skills/capability-evolver/package.json +22 -0
  246. package/skills/capability-evolver/scripts/analyze_by_skill.js +121 -0
  247. package/skills/capability-evolver/scripts/build_public.js +350 -0
  248. package/skills/capability-evolver/scripts/export_history.js +98 -0
  249. package/skills/capability-evolver/scripts/extract_log.js +85 -0
  250. package/skills/capability-evolver/scripts/generate_history.js +75 -0
  251. package/skills/capability-evolver/scripts/human_report.js +147 -0
  252. package/skills/capability-evolver/scripts/publish_public.js +516 -0
  253. package/skills/capability-evolver/scripts/suggest_version.js +89 -0
  254. package/skills/capability-evolver/src/evolve.js +594 -0
  255. package/skills/capability-evolver/src/gep/assetStore.js +204 -0
  256. package/skills/capability-evolver/src/gep/candidates.js +134 -0
  257. package/skills/capability-evolver/src/gep/paths.js +23 -0
  258. package/skills/capability-evolver/src/gep/prompt.js +254 -0
  259. package/skills/capability-evolver/src/gep/selector.js +89 -0
  260. package/skills/capability-evolver/src/gep/signals.js +27 -0
  261. package/skills/cc-godmode/.clawhub/origin.json +7 -0
  262. package/skills/cc-godmode/CHANGELOG.md +66 -0
  263. package/skills/cc-godmode/README.md +293 -0
  264. package/skills/cc-godmode/SKILL.md +242 -0
  265. package/skills/cc-godmode/docs/AGENTS.md +332 -0
  266. package/skills/cc-godmode/docs/MIGRATION.md +206 -0
  267. package/skills/cc-godmode/docs/TROUBLESHOOTING.md +357 -0
  268. package/skills/cc-godmode/docs/WORKFLOWS.md +329 -0
  269. package/skills/cc-godmode/references/agents.md +433 -0
  270. package/skills/cc-godmode/scripts/build-skill.js +232 -0
  271. package/skills/clawdbot-filesystem/.clawhub/origin.json +7 -0
  272. package/skills/clawdbot-filesystem/LICENSE.md +21 -0
  273. package/skills/clawdbot-filesystem/README.md +322 -0
  274. package/skills/clawdbot-filesystem/SKILL.md +219 -0
  275. package/skills/clawdbot-filesystem/config.json +41 -0
  276. package/skills/clawdbot-filesystem/package.json +69 -0
  277. package/skills/clawdbot-security-check/.clawhub/origin.json +7 -0
  278. package/skills/clawdbot-security-check/README.md +168 -0
  279. package/skills/clawdbot-security-check/SKILL.md +145 -0
  280. package/skills/clawdbot-security-check/references/audit-checks.md +521 -0
  281. package/skills/clawdbot-security-check/skill.json +42 -0
  282. package/skills/clawddocs/.clawhub/origin.json +7 -0
  283. package/skills/clawddocs/SKILL.md +176 -0
  284. package/skills/clawddocs/package.json +9 -0
  285. package/skills/clawddocs/scripts/build-index.sh +17 -0
  286. package/skills/clawddocs/scripts/cache.sh +13 -0
  287. package/skills/clawddocs/scripts/fetch-doc.sh +7 -0
  288. package/skills/clawddocs/scripts/recent.sh +5 -0
  289. package/skills/clawddocs/scripts/search.sh +8 -0
  290. package/skills/clawddocs/scripts/sitemap.sh +23 -0
  291. package/skills/clawddocs/scripts/track-changes.sh +16 -0
  292. package/skills/clawddocs/snippets/common-configs.md +69 -0
  293. package/skills/clawguard/.clawhub/origin.json +7 -0
  294. package/skills/clawguard/SKILL.md +137 -0
  295. package/skills/company-research/SKILL.md +393 -0
  296. package/skills/company-research/examples/sample.md +164 -0
  297. package/skills/company-research/template.md +60 -0
  298. package/skills/crypto-price/.clawhub/origin.json +7 -0
  299. package/skills/crypto-price/ARCHITECTURE.md +437 -0
  300. package/skills/crypto-price/README.md +194 -0
  301. package/skills/crypto-price/SKILL.md +61 -0
  302. package/skills/crypto-price/requirements.txt +1 -0
  303. package/skills/crypto-price/scripts/get_price_chart.py +988 -0
  304. package/skills/customer-journey-map/SKILL.md +343 -0
  305. package/skills/customer-journey-map/examples/sample.md +33 -0
  306. package/skills/customer-journey-map/template.md +28 -0
  307. package/skills/customer-journey-mapping-workshop/SKILL.md +522 -0
  308. package/skills/deep-research/.clawhub/origin.json +7 -0
  309. package/skills/deep-research/SKILL.md +93 -0
  310. package/skills/deep-research/rules/logic.md +32 -0
  311. package/skills/discord-telegram-triage/SKILL.md +59 -0
  312. package/skills/discord-telegram-triage/references/discord-runbook.md +28 -0
  313. package/skills/discord-telegram-triage/references/validation-cases.md +11 -0
  314. package/skills/discord-telegram-triage/scripts/triage_snapshot.sh +23 -0
  315. package/skills/discovery-interview-prep/SKILL.md +408 -0
  316. package/skills/discovery-process/SKILL.md +503 -0
  317. package/skills/discovery-process/examples/sample.md +60 -0
  318. package/skills/discovery-process/template.md +39 -0
  319. package/skills/dist/arcane-dev-ops.skill +0 -0
  320. package/skills/dist/discord-telegram-triage.skill +0 -0
  321. package/skills/dist/founder-brief-summarizer.skill +0 -0
  322. package/skills/epic-breakdown-advisor/SKILL.md +664 -0
  323. package/skills/epic-hypothesis/SKILL.md +285 -0
  324. package/skills/epic-hypothesis/examples/sample.md +104 -0
  325. package/skills/epic-hypothesis/template.md +30 -0
  326. package/skills/excel/.clawhub/origin.json +7 -0
  327. package/skills/excel/SKILL.md +332 -0
  328. package/skills/excel/scripts/excel.py +1120 -0
  329. package/skills/fast-browser-use/.clawhub/origin.json +7 -0
  330. package/skills/fast-browser-use/CODEBUDDY.md +142 -0
  331. package/skills/fast-browser-use/Cargo.toml +77 -0
  332. package/skills/fast-browser-use/README.md +62 -0
  333. package/skills/fast-browser-use/SKILL.md +217 -0
  334. package/skills/fast-browser-use/package-lock.json +28 -0
  335. package/skills/fast-browser-use/package.json +8 -0
  336. package/skills/fast-browser-use/rustfmt.toml +10 -0
  337. package/skills/fast-browser-use/src/bin/cli.rs +373 -0
  338. package/skills/fast-browser-use/src/bin/mcp_server.rs +203 -0
  339. package/skills/fast-browser-use/src/browser/config.rs +136 -0
  340. package/skills/fast-browser-use/src/browser/debug.rs +16 -0
  341. package/skills/fast-browser-use/src/browser/mod.rs +61 -0
  342. package/skills/fast-browser-use/src/browser/session.rs +478 -0
  343. package/skills/fast-browser-use/src/dom/element.rs +442 -0
  344. package/skills/fast-browser-use/src/dom/extract_dom.js +849 -0
  345. package/skills/fast-browser-use/src/dom/mod.rs +14 -0
  346. package/skills/fast-browser-use/src/dom/tree.rs +296 -0
  347. package/skills/fast-browser-use/src/dom/yaml.rs +149 -0
  348. package/skills/fast-browser-use/src/error.rs +115 -0
  349. package/skills/fast-browser-use/src/lib.rs +17 -0
  350. package/skills/fast-browser-use/src/mcp/handler.rs +63 -0
  351. package/skills/fast-browser-use/src/mcp/mod.rs +81 -0
  352. package/skills/fast-browser-use/src/tools/Readability.min.js +1480 -0
  353. package/skills/fast-browser-use/src/tools/annotate.rs +165 -0
  354. package/skills/fast-browser-use/src/tools/click.rs +84 -0
  355. package/skills/fast-browser-use/src/tools/close.rs +35 -0
  356. package/skills/fast-browser-use/src/tools/close_tab.rs +45 -0
  357. package/skills/fast-browser-use/src/tools/convert_to_markdown.js +117 -0
  358. package/skills/fast-browser-use/src/tools/cookies.rs +58 -0
  359. package/skills/fast-browser-use/src/tools/debug.rs +44 -0
  360. package/skills/fast-browser-use/src/tools/evaluate.rs +40 -0
  361. package/skills/fast-browser-use/src/tools/extract.rs +66 -0
  362. package/skills/fast-browser-use/src/tools/go_back.rs +35 -0
  363. package/skills/fast-browser-use/src/tools/go_forward.rs +35 -0
  364. package/skills/fast-browser-use/src/tools/hover.js +33 -0
  365. package/skills/fast-browser-use/src/tools/hover.rs +97 -0
  366. package/skills/fast-browser-use/src/tools/html_to_markdown.rs +99 -0
  367. package/skills/fast-browser-use/src/tools/input.rs +93 -0
  368. package/skills/fast-browser-use/src/tools/local_storage.rs +159 -0
  369. package/skills/fast-browser-use/src/tools/markdown.rs +181 -0
  370. package/skills/fast-browser-use/src/tools/mod.rs +326 -0
  371. package/skills/fast-browser-use/src/tools/navigate.rs +55 -0
  372. package/skills/fast-browser-use/src/tools/new_tab.rs +60 -0
  373. package/skills/fast-browser-use/src/tools/press_key.rs +78 -0
  374. package/skills/fast-browser-use/src/tools/read_links.rs +59 -0
  375. package/skills/fast-browser-use/src/tools/readability_script.rs +8 -0
  376. package/skills/fast-browser-use/src/tools/screenshot.rs +47 -0
  377. package/skills/fast-browser-use/src/tools/scroll.js +22 -0
  378. package/skills/fast-browser-use/src/tools/scroll.rs +95 -0
  379. package/skills/fast-browser-use/src/tools/select.js +23 -0
  380. package/skills/fast-browser-use/src/tools/select.rs +129 -0
  381. package/skills/fast-browser-use/src/tools/sitemap.rs +426 -0
  382. package/skills/fast-browser-use/src/tools/snapshot.rs +324 -0
  383. package/skills/fast-browser-use/src/tools/switch_tab.rs +69 -0
  384. package/skills/fast-browser-use/src/tools/tab_list.rs +76 -0
  385. package/skills/fast-browser-use/src/tools/utils.rs +92 -0
  386. package/skills/fast-browser-use/src/tools/wait.rs +53 -0
  387. package/skills/fast-browser-use/test_auth.json +3 -0
  388. package/skills/fast-browser-use/test_state.json +6 -0
  389. package/skills/fast-browser-use/tests/browser_tools_integration.rs +233 -0
  390. package/skills/fast-browser-use/tests/cli_recipes_integration.rs +112 -0
  391. package/skills/fast-browser-use/tests/cookies_integration.rs +56 -0
  392. package/skills/fast-browser-use/tests/debug_integration.rs +83 -0
  393. package/skills/fast-browser-use/tests/dom_integration.rs +170 -0
  394. package/skills/fast-browser-use/tests/local_storage_integration.rs +75 -0
  395. package/skills/fast-browser-use/tests/markdown_integration.rs +448 -0
  396. package/skills/fast-browser-use/tests/navigation_integration.rs +241 -0
  397. package/skills/fast-browser-use/tests/sitemap_integration.rs +326 -0
  398. package/skills/fast-browser-use/tests/tab_management_integration.rs +300 -0
  399. package/skills/feature-investment-advisor/SKILL.md +639 -0
  400. package/skills/feature-investment-advisor/examples/conversation-flow.md +538 -0
  401. package/skills/finance-based-pricing-advisor/SKILL.md +763 -0
  402. package/skills/finance-metrics-quickref/SKILL.md +309 -0
  403. package/skills/find-skills/.clawhub/origin.json +7 -0
  404. package/skills/find-skills/SKILL.md +143 -0
  405. package/skills/flavor-text-writer/SKILL.md +27 -0
  406. package/skills/founder-brief-summarizer/SKILL.md +52 -0
  407. package/skills/founder-brief-summarizer/references/response-templates.md +15 -0
  408. package/skills/founder-brief-summarizer/references/validation-cases.md +11 -0
  409. package/skills/founder-brief-summarizer/scripts/brief_template.sh +28 -0
  410. package/skills/frontend-design/.clawhub/origin.json +7 -0
  411. package/skills/frontend-design/LICENSE.txt +190 -0
  412. package/skills/frontend-design/SKILL.md +53 -0
  413. package/skills/gemini/.clawhub/origin.json +7 -0
  414. package/skills/gemini/SKILL.md +33 -0
  415. package/skills/gemini-deep-research/.clawhub/origin.json +7 -0
  416. package/skills/gemini-deep-research/SKILL.md +78 -0
  417. package/skills/gemini-deep-research/scripts/deep_research.py +176 -0
  418. package/skills/git-essentials/.clawhub/origin.json +7 -0
  419. package/skills/git-essentials/SKILL.md +239 -0
  420. package/skills/git-essentials/references/advanced.md +211 -0
  421. package/skills/github/.clawhub/origin.json +7 -0
  422. package/skills/github/SKILL.md +57 -0
  423. package/skills/google-drive/.clawhub/origin.json +7 -0
  424. package/skills/google-drive/LICENSE.txt +21 -0
  425. package/skills/google-drive/SKILL.md +320 -0
  426. package/skills/growth-loop/SKILL.md +270 -0
  427. package/skills/growth-loop/_meta.json +9 -0
  428. package/skills/growth-loop/references/diagnosis-framework.md +84 -0
  429. package/skills/growth-loop/references/platform-benchmarks.md +79 -0
  430. package/skills/growth-loop/scripts/init-campaign.sh +274 -0
  431. package/skills/humanize-ai-text/.clawhub/origin.json +7 -0
  432. package/skills/humanize-ai-text/SKILL.md +192 -0
  433. package/skills/humanize-ai-text/scripts/compare.py +58 -0
  434. package/skills/humanize-ai-text/scripts/detect.py +160 -0
  435. package/skills/humanize-ai-text/scripts/patterns.json +191 -0
  436. package/skills/humanize-ai-text/scripts/transform.py +127 -0
  437. package/skills/humanizer/.clawhub/origin.json +7 -0
  438. package/skills/humanizer/README.md +82 -0
  439. package/skills/humanizer/SKILL.md +443 -0
  440. package/skills/jobs-to-be-done/SKILL.md +378 -0
  441. package/skills/jobs-to-be-done/examples/sample.md +80 -0
  442. package/skills/jobs-to-be-done/template.md +65 -0
  443. package/skills/lean-ux-canvas/SKILL.md +561 -0
  444. package/skills/lean-ux-canvas/examples/sample.md +88 -0
  445. package/skills/lean-ux-canvas/template.md +32 -0
  446. package/skills/markdown-formatter/.clawhub/origin.json +7 -0
  447. package/skills/markdown-formatter/README.md +137 -0
  448. package/skills/markdown-formatter/SKILL.md +369 -0
  449. package/skills/markdown-formatter/config.json +20 -0
  450. package/skills/markdown-formatter/index.js +439 -0
  451. package/skills/markdown-formatter/package.json +23 -0
  452. package/skills/markdown-formatter/test.js +23 -0
  453. package/skills/marketing-mode/.clawhub/origin.json +7 -0
  454. package/skills/marketing-mode/README.md +49 -0
  455. package/skills/marketing-mode/SKILL.md +703 -0
  456. package/skills/marketing-mode/mode-prompt.md +39 -0
  457. package/skills/marketing-mode/skill.json +51 -0
  458. package/skills/memory-hygiene/.clawhub/origin.json +7 -0
  459. package/skills/memory-hygiene/SKILL.md +91 -0
  460. package/skills/memory-setup/.clawhub/origin.json +7 -0
  461. package/skills/memory-setup/SKILL.md +180 -0
  462. package/skills/memorylayer/.clawhub/origin.json +7 -0
  463. package/skills/memorylayer/README.md +197 -0
  464. package/skills/memorylayer/SKILL.md +227 -0
  465. package/skills/memorylayer/examples/agent-integration.js +145 -0
  466. package/skills/memorylayer/examples/basic-usage.js +87 -0
  467. package/skills/memorylayer/examples/token-savings-demo.js +183 -0
  468. package/skills/memorylayer/index.js +115 -0
  469. package/skills/memorylayer/package-lock.json +295 -0
  470. package/skills/memorylayer/package.json +27 -0
  471. package/skills/memorylayer/python/memorylayer_skill.py +230 -0
  472. package/skills/memorylayer/python/requirements.txt +7 -0
  473. package/skills/mesh/SKILL.md +184 -0
  474. package/skills/model-usage/.clawhub/origin.json +7 -0
  475. package/skills/model-usage/SKILL.md +54 -0
  476. package/skills/model-usage/references/codexbar-cli.md +28 -0
  477. package/skills/model-usage/scripts/model_usage.py +310 -0
  478. package/skills/moltbook-interact/.clawhub/origin.json +7 -0
  479. package/skills/moltbook-interact/INSTALL.md +139 -0
  480. package/skills/moltbook-interact/README.md +198 -0
  481. package/skills/moltbook-interact/SKILL.md +72 -0
  482. package/skills/moltbook-interact/references/api.md +106 -0
  483. package/skills/moltbook-interact/scripts/moltbook.sh +142 -0
  484. package/skills/moltbook-registry/.clawhub/origin.json +7 -0
  485. package/skills/moltbook-registry/README.md +26 -0
  486. package/skills/moltbook-registry/SKILL.md +82 -0
  487. package/skills/moltbook-registry/index.js +180 -0
  488. package/skills/moltbook-registry/package.json +11 -0
  489. package/skills/mythril-scanner/SKILL.md +27 -0
  490. package/skills/n8n/.clawhub/origin.json +7 -0
  491. package/skills/n8n/SKILL.md +141 -0
  492. package/skills/n8n/references/api.md +156 -0
  493. package/skills/n8n/scripts/n8n_api.py +158 -0
  494. package/skills/n8n-workflow-automation/.clawhub/origin.json +7 -0
  495. package/skills/n8n-workflow-automation/SKILL.md +103 -0
  496. package/skills/n8n-workflow-automation/assets/runbook-template.md +32 -0
  497. package/skills/narrative-designer/SKILL.md +27 -0
  498. package/skills/ontology/.clawhub/origin.json +7 -0
  499. package/skills/ontology/SKILL.md +236 -0
  500. package/skills/ontology/references/queries.md +211 -0
  501. package/skills/ontology/references/schema.md +322 -0
  502. package/skills/ontology/scripts/ontology.py +374 -0
  503. package/skills/openai-image-gen/.clawhub/origin.json +7 -0
  504. package/skills/openai-image-gen/SKILL.md +45 -0
  505. package/skills/openai-image-gen/scripts/gen.py +227 -0
  506. package/skills/openclaw-agent-optimize/.clawhub/origin.json +7 -0
  507. package/skills/openclaw-agent-optimize/SKILL.md +33 -0
  508. package/skills/openclaw-agent-optimize/references/agent-orchestration.md +20 -0
  509. package/skills/openclaw-agent-optimize/references/context-management.md +15 -0
  510. package/skills/openclaw-agent-optimize/references/continuous-learning.md +14 -0
  511. package/skills/openclaw-agent-optimize/references/cron-optimization.md +16 -0
  512. package/skills/openclaw-agent-optimize/references/memory-patterns.md +14 -0
  513. package/skills/openclaw-agent-optimize/references/model-selection.md +18 -0
  514. package/skills/openclaw-skill-scanner/.clawhub/origin.json +7 -0
  515. package/skills/openclaw-skill-scanner/SKILL.md +88 -0
  516. package/skills/openclaw-skill-scanner/install-hook.sh +294 -0
  517. package/skills/openclaw-skill-scanner/report-template.md +53 -0
  518. package/skills/openclaw-skill-scanner/scanner.py +929 -0
  519. package/skills/openclaw-skill-scanner/whitelist.json +18 -0
  520. package/skills/opportunity-solution-tree/SKILL.md +428 -0
  521. package/skills/opportunity-solution-tree/examples/sample.md +104 -0
  522. package/skills/opportunity-solution-tree/template.md +33 -0
  523. package/skills/pdf/.clawhub/origin.json +7 -0
  524. package/skills/pdf/SKILL.md +304 -0
  525. package/skills/pestel-analysis/SKILL.md +384 -0
  526. package/skills/pestel-analysis/examples/sample.md +143 -0
  527. package/skills/pestel-analysis/template.md +53 -0
  528. package/skills/pol-probe/SKILL.md +217 -0
  529. package/skills/pol-probe/examples/sample.md +136 -0
  530. package/skills/pol-probe/template.md +59 -0
  531. package/skills/pol-probe-advisor/SKILL.md +492 -0
  532. package/skills/positioning-statement/SKILL.md +229 -0
  533. package/skills/positioning-statement/examples/sample.md +51 -0
  534. package/skills/positioning-statement/template.md +25 -0
  535. package/skills/positioning-workshop/SKILL.md +424 -0
  536. package/skills/prd-development/SKILL.md +654 -0
  537. package/skills/prd-development/examples/sample.md +43 -0
  538. package/skills/prd-development/template.md +55 -0
  539. package/skills/press-release/SKILL.md +277 -0
  540. package/skills/press-release/examples/sample.md +73 -0
  541. package/skills/press-release/template.md +39 -0
  542. package/skills/prioritization-advisor/SKILL.md +451 -0
  543. package/skills/proactive-messages/.clawhub/origin.json +7 -0
  544. package/skills/proactive-messages/SKILL.md +91 -0
  545. package/skills/problem-framing-canvas/SKILL.md +466 -0
  546. package/skills/problem-framing-canvas/examples/sample.md +58 -0
  547. package/skills/problem-framing-canvas/template.md +22 -0
  548. package/skills/problem-statement/SKILL.md +255 -0
  549. package/skills/problem-statement/examples/sample.md +82 -0
  550. package/skills/problem-statement/template.md +37 -0
  551. package/skills/product-strategy-session/SKILL.md +434 -0
  552. package/skills/product-strategy-session/examples/sample.md +67 -0
  553. package/skills/product-strategy-session/template.md +38 -0
  554. package/skills/prompt-guard/.clawhub/origin.json +7 -0
  555. package/skills/prompt-guard/ARCHITECTURE.md +364 -0
  556. package/skills/prompt-guard/CHANGELOG.md +200 -0
  557. package/skills/prompt-guard/README.md +215 -0
  558. package/skills/prompt-guard/SECURITY.md +66 -0
  559. package/skills/prompt-guard/SKILL.md +174 -0
  560. package/skills/prompt-guard/blog/how-i-secured-my-ai-agent.md +185 -0
  561. package/skills/prompt-guard/config.example.yaml +56 -0
  562. package/skills/prompt-guard/references/detection-patterns.md +298 -0
  563. package/skills/prompt-guard/requirements.txt +1 -0
  564. package/skills/prompt-guard/scripts/analyze_log.py +224 -0
  565. package/skills/prompt-guard/scripts/audit.py +344 -0
  566. package/skills/prompt-guard/scripts/detect.py +1587 -0
  567. package/skills/prompt-guard/scripts/hivefence.py +345 -0
  568. package/skills/proto-persona/SKILL.md +336 -0
  569. package/skills/proto-persona/examples/sample.md +97 -0
  570. package/skills/proto-persona/template.md +45 -0
  571. package/skills/recommendation-canvas/SKILL.md +382 -0
  572. package/skills/recommendation-canvas/examples/sample.md +94 -0
  573. package/skills/recommendation-canvas/template.md +86 -0
  574. package/skills/refactor-suggest/.clawhub/origin.json +7 -0
  575. package/skills/refactor-suggest/SKILL.md +94 -0
  576. package/skills/roadmap-planning/SKILL.md +506 -0
  577. package/skills/roadmap-planning/examples/sample.md +62 -0
  578. package/skills/roadmap-planning/template.md +30 -0
  579. package/skills/saas-economics-efficiency-metrics/SKILL.md +694 -0
  580. package/skills/saas-economics-efficiency-metrics/examples/cash-trap.md +365 -0
  581. package/skills/saas-economics-efficiency-metrics/examples/healthy-unit-economics.md +279 -0
  582. package/skills/saas-economics-efficiency-metrics/template.md +263 -0
  583. package/skills/saas-revenue-growth-metrics/SKILL.md +629 -0
  584. package/skills/saas-revenue-growth-metrics/examples/healthy-saas.md +131 -0
  585. package/skills/saas-revenue-growth-metrics/examples/warning-signs.md +229 -0
  586. package/skills/saas-revenue-growth-metrics/template.md +192 -0
  587. package/skills/save-money/.clawhub/origin.json +7 -0
  588. package/skills/save-money/SKILL.md +173 -0
  589. package/skills/scripts/golden_skills_v3.sh +32 -0
  590. package/skills/search/.clawhub/origin.json +7 -0
  591. package/skills/search/SKILL.md +18 -0
  592. package/skills/search/skill.json +1 -0
  593. package/skills/second-brain/.clawhub/origin.json +7 -0
  594. package/skills/second-brain/SKILL.md +278 -0
  595. package/skills/second-brain/scripts/ensue-api.sh +37 -0
  596. package/skills/self-improving-agent/.clawhub/origin.json +7 -0
  597. package/skills/self-improving-agent/.learnings/ERRORS.md +5 -0
  598. package/skills/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
  599. package/skills/self-improving-agent/.learnings/LEARNINGS.md +5 -0
  600. package/skills/self-improving-agent/SKILL.md +130 -0
  601. package/skills/self-improving-agent/assets/LEARNINGS.md +45 -0
  602. package/skills/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
  603. package/skills/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
  604. package/skills/self-improving-agent/hooks/openclaw/handler.js +56 -0
  605. package/skills/self-improving-agent/hooks/openclaw/handler.ts +62 -0
  606. package/skills/self-improving-agent/references/examples.md +374 -0
  607. package/skills/self-improving-agent/references/hooks-setup.md +223 -0
  608. package/skills/self-improving-agent/references/openclaw-integration.md +248 -0
  609. package/skills/self-improving-agent/references/templates.md +480 -0
  610. package/skills/self-improving-agent/scripts/activator.sh +20 -0
  611. package/skills/self-improving-agent/scripts/error-detector.sh +55 -0
  612. package/skills/self-improving-agent/scripts/extract-skill.sh +203 -0
  613. package/skills/self-improving-agent-1-0-2/.clawhub/origin.json +7 -0
  614. package/skills/self-improving-agent-1-0-2/SKILL.md +562 -0
  615. package/skills/self-improving-agent-1-0-2/assets/LEARNINGS.md +45 -0
  616. package/skills/self-improving-agent-1-0-2/assets/SKILL-TEMPLATE.md +182 -0
  617. package/skills/self-improving-agent-1-0-2/references/clawdbot-integration.md +311 -0
  618. package/skills/self-improving-agent-1-0-2/references/examples.md +374 -0
  619. package/skills/self-improving-agent-1-0-2/references/hooks-setup.md +223 -0
  620. package/skills/self-improving-agent-1-0-2/scripts/activator.sh +20 -0
  621. package/skills/self-improving-agent-1-0-2/scripts/error-detector.sh +55 -0
  622. package/skills/self-improving-agent-1-0-2/scripts/extract-skill.sh +203 -0
  623. package/skills/self-love-confidence/.clawhub/origin.json +7 -0
  624. package/skills/self-love-confidence/SKILL.md +79 -0
  625. package/skills/self-reflection/.clawhub/origin.json +7 -0
  626. package/skills/self-reflection/README.md +292 -0
  627. package/skills/self-reflection/SKILL.md +110 -0
  628. package/skills/self-reflection/self-reflection.example.json +6 -0
  629. package/skills/slither-analyzer/SKILL.md +27 -0
  630. package/skills/solidity-audit/SKILL.md +27 -0
  631. package/skills/soulcraft/.clawhub/origin.json +7 -0
  632. package/skills/soulcraft/README.md +123 -0
  633. package/skills/soulcraft/SKILL.md +340 -0
  634. package/skills/soulcraft/references/question-bank.md +154 -0
  635. package/skills/soulcraft/references/soul-examples.md +207 -0
  636. package/skills/soulcraft/research/RESEARCH_REPORT.md +317 -0
  637. package/skills/spotify-player/.clawhub/origin.json +7 -0
  638. package/skills/spotify-player/SKILL.md +44 -0
  639. package/skills/storyboard/SKILL.md +259 -0
  640. package/skills/storyboard/examples/sample.md +71 -0
  641. package/skills/storyboard/template.md +41 -0
  642. package/skills/summarize/.clawhub/origin.json +7 -0
  643. package/skills/summarize/SKILL.md +59 -0
  644. package/skills/superdesign/.clawhub/origin.json +7 -0
  645. package/skills/superdesign/SKILL.md +224 -0
  646. package/skills/tam-sam-som-calculator/SKILL.md +399 -0
  647. package/skills/tam-sam-som-calculator/examples/sample.md +142 -0
  648. package/skills/tam-sam-som-calculator/scripts/market-sizing.py +95 -0
  649. package/skills/tam-sam-som-calculator/template.md +35 -0
  650. package/skills/tavily-search/.clawhub/origin.json +7 -0
  651. package/skills/tavily-search/SKILL.md +49 -0
  652. package/skills/tavily-search/scripts/extract.mjs +59 -0
  653. package/skills/tavily-search/scripts/search.mjs +101 -0
  654. package/skills/twitter/SKILL.md +74 -0
  655. package/skills/twitter/_meta.json +9 -0
  656. package/skills/twitter/references/validation-cases.md +53 -0
  657. package/skills/twitter/scripts/twitter.sh +421 -0
  658. package/skills/ui-ux-pro-max/.clawhub/origin.json +7 -0
  659. package/skills/ui-ux-pro-max/SKILL.md +54 -0
  660. package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
  661. package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
  662. package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
  663. package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
  664. package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
  665. package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
  666. package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
  667. package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
  668. package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
  669. package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
  670. package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
  671. package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
  672. package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
  673. package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
  674. package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
  675. package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
  676. package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
  677. package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
  678. package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
  679. package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
  680. package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
  681. package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
  682. package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
  683. package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
  684. package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
  685. package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
  686. package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
  687. package/skills/ui-ux-pro-max/scripts/core.py +253 -0
  688. package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
  689. package/skills/ui-ux-pro-max/scripts/search.py +111 -0
  690. package/skills/user-story/SKILL.md +272 -0
  691. package/skills/user-story/examples/sample.md +110 -0
  692. package/skills/user-story/scripts/user-story-template.py +65 -0
  693. package/skills/user-story/template.md +32 -0
  694. package/skills/user-story-mapping/SKILL.md +296 -0
  695. package/skills/user-story-mapping/examples/sample.md +77 -0
  696. package/skills/user-story-mapping/template.md +41 -0
  697. package/skills/user-story-mapping-workshop/SKILL.md +485 -0
  698. package/skills/user-story-mapping-workshop/template.md +28 -0
  699. package/skills/user-story-splitting/SKILL.md +313 -0
  700. package/skills/user-story-splitting/examples/sample.md +147 -0
  701. package/skills/user-story-splitting/template.md +37 -0
  702. package/skills/wacli/.clawhub/origin.json +7 -0
  703. package/skills/wacli/SKILL.md +53 -0
  704. package/skills/web-search/.clawhub/origin.json +7 -0
  705. package/skills/web-search/SKILL.md +151 -0
  706. package/skills/web-search/references/api-details.md +207 -0
  707. package/skills/web-search/scripts/search.py +576 -0
  708. package/skills/workshop-facilitation/SKILL.md +88 -0
  709. package/skills/world-builder/SKILL.md +27 -0
  710. package/souls/blockchain-auditor/PRINCIPLES.md +75 -0
  711. package/souls/blockchain-auditor/SOUL.md +56 -0
  712. package/souls/blockchain-auditor/capabilities.json +33 -0
  713. package/souls/blockchain-auditor/evolution/capsules.json +4 -0
  714. package/souls/blockchain-auditor/evolution/events.jsonl +1 -0
  715. package/souls/blockchain-auditor/evolution/genes.json +62 -0
  716. package/souls/daedalus/PRINCIPLES.md +78 -0
  717. package/souls/daedalus/SOUL.md +48 -0
  718. package/souls/daedalus/capabilities.json +46 -0
  719. package/souls/identity-architect/PRINCIPLES.md +83 -0
  720. package/souls/identity-architect/SOUL.md +66 -0
  721. package/souls/identity-architect/capabilities.json +38 -0
  722. package/souls/identity-architect/evolution/capsules.json +4 -0
  723. package/souls/identity-architect/evolution/events.jsonl +0 -0
  724. package/souls/identity-architect/evolution/genes.json +4 -0
  725. package/souls/infra-ops/PRINCIPLES.md +77 -0
  726. package/souls/infra-ops/SOUL.md +56 -0
  727. package/souls/infra-ops/capabilities.json +33 -0
  728. package/souls/infra-ops/evolution/capsules.json +4 -0
  729. package/souls/infra-ops/evolution/events.jsonl +0 -0
  730. package/souls/infra-ops/evolution/genes.json +4 -0
  731. package/souls/lore-writer/PRINCIPLES.md +74 -0
  732. package/souls/lore-writer/SOUL.md +54 -0
  733. package/souls/lore-writer/capabilities.json +37 -0
  734. package/souls/lore-writer/evolution/capsules.json +4 -0
  735. package/souls/lore-writer/evolution/events.jsonl +0 -0
  736. package/souls/lore-writer/evolution/genes.json +4 -0
  737. package/souls/qa-evidence/PRINCIPLES.md +97 -0
  738. package/souls/qa-evidence/SOUL.md +66 -0
  739. package/souls/qa-evidence/capabilities.json +32 -0
  740. package/souls/qa-evidence/evolution/capsules.json +4 -0
  741. package/souls/qa-evidence/evolution/events.jsonl +0 -0
  742. package/souls/qa-evidence/evolution/genes.json +4 -0
  743. package/souls/registry.json +211 -0
  744. package/souls/sync-registry.js +65 -0
  745. package/uninstall.sh +102 -0
  746. package/workspace-bin/auto-checkpoint +60 -0
  747. package/workspace-bin/clawvault-access-control +65 -0
  748. package/workspace-bin/clawvault-local +28 -0
  749. package/workspace-bin/compile-boot +494 -0
  750. package/workspace-bin/daily-log-writer.mjs +251 -0
  751. package/workspace-bin/evolve +540 -0
  752. package/workspace-bin/fitness_score.py +395 -0
  753. package/workspace-bin/hooks/pre-commit +80 -0
  754. package/workspace-bin/install-daemon +299 -0
  755. package/workspace-bin/lane-watchdog.js +232 -0
  756. package/workspace-bin/lib/__init__.py +0 -0
  757. package/workspace-bin/lib/frontmatter.py +114 -0
  758. package/workspace-bin/memory-daemon.mjs +879 -0
  759. package/workspace-bin/memory-maintenance.mjs +531 -0
  760. package/workspace-bin/mesh-bridge.mjs +154 -0
  761. package/workspace-bin/multi-review +130 -0
  762. package/workspace-bin/obsidian +125 -0
  763. package/workspace-bin/obsidian-sync.mjs +888 -0
  764. package/workspace-bin/openclaw-register-source +102 -0
  765. package/workspace-bin/proactive-scan +147 -0
  766. package/workspace-bin/quality-gate +175 -0
  767. package/workspace-bin/screenshot +96 -0
  768. package/workspace-bin/session-recap +453 -0
  769. package/workspace-bin/skill-audit +494 -0
  770. package/workspace-bin/skill-quality-check +134 -0
  771. package/workspace-bin/skill-routing-eval +599 -0
  772. package/workspace-bin/soul-prompt +251 -0
  773. package/workspace-bin/subagent-audit.mjs +267 -0
  774. package/workspace-bin/test-multi-soul-workflow +130 -0
  775. package/workspace-bin/trust-registry +465 -0
  776. package/workspace-docs/AGENTS.md +201 -0
  777. package/workspace-docs/CLAUDE.md +64 -0
  778. package/workspace-docs/PRINCIPLES.md +81 -0
  779. package/workspace-docs/SOUL.md +48 -0
@@ -0,0 +1,465 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ bin/trust-registry — Per-soul trust scoring for intelligent delegation
4
+
5
+ Tracks success/failure per specialist soul. Trust scores inform
6
+ delegation decisions: which soul gets the task, how much autonomy,
7
+ which model tier. Includes circuit breaker pattern to pause delegation
8
+ to repeatedly-failing souls.
9
+
10
+ Based on the Intelligent AI Delegation framework (DeepMind, 2026).
11
+
12
+ Usage:
13
+ bin/trust-registry show # display all souls + trust
14
+ bin/trust-registry score <soul-id> # show single soul score
15
+ bin/trust-registry update <soul-id> \\
16
+ --result success|failure \\
17
+ --turns N \\
18
+ [--verified true|false] \\
19
+ [--task "description"] # record a delegation outcome
20
+ bin/trust-registry recommend "task description" # suggest best soul
21
+ bin/trust-registry reset <soul-id> # reset a soul's record
22
+ bin/trust-registry check <soul-id> # check if circuit allows delegation
23
+ bin/trust-registry status # show circuit breaker state for all souls
24
+
25
+ Storage: .tmp/trust-registry.json
26
+ """
27
+
28
+ import argparse
29
+ import json
30
+ import os
31
+ import sys
32
+ from datetime import datetime
33
+ from pathlib import Path
34
+
35
+ WORKSPACE = Path(__file__).parent.parent
36
+ REGISTRY_FILE = WORKSPACE / ".tmp" / "trust-registry.json"
37
+ SOULS_DIR = Path.home() / ".openclaw" / "souls"
38
+
39
+ # ── Tier definitions ──────────────────────────────────────────────────────────
40
+ # Tiers gate autonomy level and model assignment.
41
+
42
+ TIERS = {
43
+ "new": {"min_tasks": 0, "max_autonomy": "atomic", "default_model": "sonnet"},
44
+ "developing": {"min_tasks": 3, "max_autonomy": "guided", "default_model": "sonnet"},
45
+ "proven": {"min_tasks": 10, "max_autonomy": "open-ended", "default_model": "sonnet"},
46
+ "expert": {"min_tasks": 25, "max_autonomy": "full", "default_model": "opus"},
47
+ }
48
+
49
+ TIER_ORDER = ["new", "developing", "proven", "expert"]
50
+
51
+ # Autonomy levels:
52
+ # atomic = strict input/output, no sub-decomposition
53
+ # guided = can decompose, must report each step
54
+ # open-ended = can pursue sub-goals, report at completion
55
+ # full = can delegate further, minimal oversight
56
+
57
+
58
+ # ── Registry I/O ──────────────────────────────────────────────────────────────
59
+
60
+ def load_registry():
61
+ if not REGISTRY_FILE.exists():
62
+ return {"souls": {}, "delegations": []}
63
+ try:
64
+ data = json.loads(REGISTRY_FILE.read_text(encoding="utf-8"))
65
+ if "souls" not in data:
66
+ data["souls"] = {}
67
+ if "delegations" not in data:
68
+ data["delegations"] = []
69
+ return data
70
+ except (json.JSONDecodeError, OSError):
71
+ return {"souls": {}, "delegations": []}
72
+
73
+
74
+ def save_registry(data):
75
+ REGISTRY_FILE.parent.mkdir(parents=True, exist_ok=True)
76
+ REGISTRY_FILE.write_text(json.dumps(data, indent=2, ensure_ascii=False), encoding="utf-8")
77
+
78
+
79
+ # ── Trust computation ─────────────────────────────────────────────────────────
80
+
81
+ def compute_trust(soul_data):
82
+ """
83
+ Trust score (0.0 - 1.0):
84
+ success_rate × 0.50 (did it work?)
85
+ verification_rate × 0.30 (was the output verified?)
86
+ efficiency × 0.20 (how many turns did it take?)
87
+ """
88
+ total = soul_data.get("tasks_total", 0)
89
+ if total == 0:
90
+ return 0.5 # neutral for new souls
91
+
92
+ succeeded = soul_data.get("tasks_succeeded", 0)
93
+ verified = soul_data.get("tasks_verified", 0)
94
+ avg_turns = soul_data.get("avg_turns", 10.0)
95
+
96
+ success_rate = succeeded / total
97
+ verification_rate = verified / max(1, succeeded) # of successes, how many verified?
98
+ efficiency = max(0.0, 1.0 - min(1.0, avg_turns / 20.0)) # 20 turns = 0 efficiency
99
+
100
+ trust = (success_rate * 0.50) + (verification_rate * 0.30) + (efficiency * 0.20)
101
+ return round(min(1.0, max(0.0, trust)), 3)
102
+
103
+
104
+ def compute_tier(soul_data, trust_score):
105
+ """Assign tier based on task count + trust score."""
106
+ total = soul_data.get("tasks_total", 0)
107
+
108
+ # Must meet both task count AND trust threshold
109
+ if total >= 25 and trust_score >= 0.80:
110
+ return "expert"
111
+ if total >= 10 and trust_score >= 0.65:
112
+ return "proven"
113
+ if total >= 3 and trust_score >= 0.50:
114
+ return "developing"
115
+ return "new"
116
+
117
+
118
+ # ── Commands ──────────────────────────────────────────────────────────────────
119
+
120
+ def cmd_show(args):
121
+ """Display all souls with trust scores."""
122
+ reg = load_registry()
123
+ souls = reg["souls"]
124
+
125
+ if not souls:
126
+ # Auto-discover from souls directory
127
+ if SOULS_DIR.exists():
128
+ discovered = [d.name for d in SOULS_DIR.iterdir() if d.is_dir() and (d / "SOUL.md").exists()]
129
+ if discovered:
130
+ print(f" No delegation history. {len(discovered)} soul(s) available:")
131
+ for s in sorted(discovered):
132
+ print(f" {s} [new] trust=0.500")
133
+ return
134
+ print(" No souls registered. Run `bin/trust-registry update <soul> --result success` after a delegation.")
135
+ return
136
+
137
+ # Header
138
+ print(f"\n{'Soul':<25} {'Tier':<13} {'Trust':>6} {'Tasks':>6} {'Pass%':>6} {'Turns':>6} {'Last Used':<12}")
139
+ print("─" * 85)
140
+
141
+ for soul_id in sorted(souls.keys()):
142
+ s = souls[soul_id]
143
+ trust = compute_trust(s)
144
+ tier = compute_tier(s, trust)
145
+ total = s.get("tasks_total", 0)
146
+ succeeded = s.get("tasks_succeeded", 0)
147
+ pass_rate = f"{succeeded/total:.0%}" if total > 0 else "n/a"
148
+ avg_turns = f"{s.get('avg_turns', 0):.1f}" if total > 0 else "n/a"
149
+ last_used = s.get("last_used", "never")
150
+
151
+ tier_badge = {"new": "○", "developing": "◐", "proven": "●", "expert": "★"}.get(tier, "?")
152
+
153
+ print(f" {soul_id:<23} {tier_badge} {tier:<11} {trust:>6.3f} {total:>6} {pass_rate:>6} {avg_turns:>6} {last_used:<12}")
154
+
155
+ total_delegations = len(reg.get("delegations", []))
156
+ print(f"\n Total delegations recorded: {total_delegations}")
157
+ print()
158
+
159
+
160
+ def cmd_score(args):
161
+ """Show detailed score for a single soul."""
162
+ reg = load_registry()
163
+ soul_id = args.soul_id
164
+ s = reg["souls"].get(soul_id)
165
+
166
+ if not s:
167
+ print(f" No data for '{soul_id}'. Soul has no delegation history.")
168
+ return
169
+
170
+ trust = compute_trust(s)
171
+ tier = compute_tier(s, trust)
172
+ tier_info = TIERS[tier]
173
+
174
+ print(f"\n Soul: {soul_id}")
175
+ print(f" Trust Score: {trust:.3f}")
176
+ print(f" Tier: {tier}")
177
+ print(f" Max Autonomy: {tier_info['max_autonomy']}")
178
+ print(f" Default Model: {tier_info['default_model']}")
179
+ print(f"\n Stats:")
180
+ print(f" Total tasks: {s.get('tasks_total', 0)}")
181
+ print(f" Succeeded: {s.get('tasks_succeeded', 0)}")
182
+ print(f" Failed: {s.get('tasks_failed', 0)}")
183
+ print(f" Verified: {s.get('tasks_verified', 0)}")
184
+ print(f" Avg turns: {s.get('avg_turns', 0):.1f}")
185
+ print(f" Last used: {s.get('last_used', 'never')}")
186
+
187
+ # Recent delegations
188
+ delegations = [d for d in reg.get("delegations", []) if d.get("soul_id") == soul_id]
189
+ recent = delegations[-5:]
190
+ if recent:
191
+ print(f"\n Recent delegations:")
192
+ for d in reversed(recent):
193
+ result = "✓" if d.get("result") == "success" else "✗"
194
+ print(f" {result} {d.get('date', '?')} turns={d.get('turns', '?')} {d.get('task', '')[:50]}")
195
+ print()
196
+
197
+
198
+ def cmd_update(args):
199
+ """Record a delegation outcome."""
200
+ reg = load_registry()
201
+ soul_id = args.soul_id
202
+ result = args.result
203
+ turns = args.turns or 1
204
+ verified = args.verified in ("true", "yes", "1", True) if args.verified else False
205
+ task_desc = args.task or ""
206
+
207
+ if soul_id not in reg["souls"]:
208
+ reg["souls"][soul_id] = {
209
+ "tasks_total": 0,
210
+ "tasks_succeeded": 0,
211
+ "tasks_failed": 0,
212
+ "tasks_verified": 0,
213
+ "avg_turns": 0.0,
214
+ "last_used": "",
215
+ }
216
+
217
+ s = reg["souls"][soul_id]
218
+ s["tasks_total"] += 1
219
+
220
+ if result == "success":
221
+ s["tasks_succeeded"] += 1
222
+ if verified:
223
+ s["tasks_verified"] += 1
224
+ else:
225
+ s["tasks_failed"] += 1
226
+
227
+ # Running average of turns
228
+ prev_total = s["tasks_total"] - 1
229
+ if prev_total > 0:
230
+ s["avg_turns"] = (s["avg_turns"] * prev_total + turns) / s["tasks_total"]
231
+ else:
232
+ s["avg_turns"] = float(turns)
233
+
234
+ s["last_used"] = datetime.now().strftime("%Y-%m-%d")
235
+
236
+ # Record delegation event
237
+ reg["delegations"].append({
238
+ "soul_id": soul_id,
239
+ "result": result,
240
+ "turns": turns,
241
+ "verified": verified,
242
+ "task": task_desc[:200],
243
+ "date": datetime.now().strftime("%Y-%m-%d %H:%M"),
244
+ })
245
+
246
+ # Keep delegation log bounded (last 500)
247
+ if len(reg["delegations"]) > 500:
248
+ reg["delegations"] = reg["delegations"][-500:]
249
+
250
+ # Circuit breaker state machine
251
+ cb_state = s.get("circuit_state", "closed")
252
+ if result == "failure":
253
+ s["consecutive_failures"] = s.get("consecutive_failures", 0) + 1
254
+ if s["consecutive_failures"] >= 3 and cb_state == "closed":
255
+ s["circuit_state"] = "open"
256
+ s["circuit_opened_at"] = datetime.now().isoformat()
257
+ print(f" ⚡ CIRCUIT OPEN: {soul_id} — {s['consecutive_failures']} consecutive failures, cooldown {s.get('cooldown_minutes', 30)}min")
258
+ elif cb_state == "half_open":
259
+ s["circuit_state"] = "open"
260
+ s["circuit_opened_at"] = datetime.now().isoformat()
261
+ print(f" ⚡ CIRCUIT RE-OPENED: {soul_id} — probe failed")
262
+ elif result == "success":
263
+ if s.get("consecutive_failures", 0) > 0 or cb_state != "closed":
264
+ s["consecutive_failures"] = 0
265
+ if cb_state in ("half_open", "open"):
266
+ s["circuit_state"] = "closed"
267
+ s["circuit_opened_at"] = None
268
+ print(f" ✓ CIRCUIT CLOSED: {soul_id} — recovered")
269
+ else:
270
+ s["consecutive_failures"] = 0
271
+
272
+ save_registry(reg)
273
+
274
+ trust = compute_trust(s)
275
+ tier = compute_tier(s, trust)
276
+ icon = "✓" if result == "success" else "✗"
277
+ print(f" {icon} Recorded: {soul_id} result={result} turns={turns} verified={verified}")
278
+ print(f" Trust: {trust:.3f} Tier: {tier} ({s['tasks_succeeded']}/{s['tasks_total']} succeeded)")
279
+ cb = s.get("circuit_state", "closed")
280
+ if cb != "closed":
281
+ print(f" Circuit: {cb.upper()} (consecutive_failures={s.get('consecutive_failures', 0)})")
282
+
283
+
284
+ def cmd_recommend(args):
285
+ """Recommend best soul for a task based on trust + capability match."""
286
+ reg = load_registry()
287
+ query = args.query
288
+
289
+ if not reg["souls"]:
290
+ print(" No delegation history. Cannot recommend. Use any available soul.")
291
+ return
292
+
293
+ # Score each soul: trust × recency bonus
294
+ candidates = []
295
+ for soul_id, s in reg["souls"].items():
296
+ trust = compute_trust(s)
297
+ tier = compute_tier(s, trust)
298
+
299
+ # Recency bonus: used in last 7 days = +0.05
300
+ last = s.get("last_used", "")
301
+ recency_bonus = 0.0
302
+ if last:
303
+ try:
304
+ days_ago = (datetime.now() - datetime.strptime(last, "%Y-%m-%d")).days
305
+ if days_ago <= 7:
306
+ recency_bonus = 0.05
307
+ except ValueError:
308
+ pass
309
+
310
+ score = trust + recency_bonus
311
+ candidates.append((soul_id, score, trust, tier, s))
312
+
313
+ candidates.sort(key=lambda x: x[1], reverse=True)
314
+
315
+ print(f"\n Recommendation for: \"{query[:80]}\"")
316
+ print(f" (Ranked by trust score + recency)\n")
317
+
318
+ for i, (soul_id, score, trust, tier, s) in enumerate(candidates[:5], 1):
319
+ tier_info = TIERS[tier]
320
+ print(f" {i}. {soul_id} trust={trust:.3f} tier={tier} autonomy={tier_info['max_autonomy']} model={tier_info['default_model']}")
321
+
322
+ print()
323
+
324
+
325
+ def cmd_reset(args):
326
+ """Reset a soul's delegation history."""
327
+ reg = load_registry()
328
+ soul_id = args.soul_id
329
+
330
+ if soul_id in reg["souls"]:
331
+ del reg["souls"][soul_id]
332
+ reg["delegations"] = [d for d in reg["delegations"] if d.get("soul_id") != soul_id]
333
+ save_registry(reg)
334
+ print(f" Reset: {soul_id}")
335
+ else:
336
+ print(f" No data for '{soul_id}'. Nothing to reset.")
337
+
338
+
339
+ # ── Circuit Breaker ──────────────────────────────────────────────────────────
340
+
341
+ def cmd_check(args):
342
+ """Check if a soul's circuit allows delegation. Exit 0=available, 1=blocked."""
343
+ reg = load_registry()
344
+ soul_id = args.soul_id
345
+ s = reg["souls"].get(soul_id, {})
346
+
347
+ cb_state = s.get("circuit_state", "closed")
348
+
349
+ if cb_state == "closed":
350
+ print(f" {soul_id}: CLOSED (available)")
351
+ sys.exit(0)
352
+
353
+ if cb_state == "open":
354
+ opened_at = s.get("circuit_opened_at")
355
+ cooldown = s.get("cooldown_minutes", 30)
356
+ if opened_at:
357
+ try:
358
+ elapsed = (datetime.now() - datetime.fromisoformat(opened_at)).total_seconds() / 60
359
+ except (ValueError, TypeError):
360
+ elapsed = 0
361
+ if elapsed >= cooldown:
362
+ s["circuit_state"] = "half_open"
363
+ s["last_probe_at"] = datetime.now().isoformat()
364
+ save_registry(reg)
365
+ print(f" {soul_id}: HALF_OPEN (cooldown expired, probe allowed)")
366
+ sys.exit(0)
367
+ else:
368
+ remaining = cooldown - elapsed
369
+ print(f" {soul_id}: OPEN ({remaining:.0f}min remaining)")
370
+ sys.exit(1)
371
+ else:
372
+ print(f" {soul_id}: OPEN (no timestamp, resetting)")
373
+ s["circuit_state"] = "closed"
374
+ s["consecutive_failures"] = 0
375
+ save_registry(reg)
376
+ sys.exit(0)
377
+
378
+ if cb_state == "half_open":
379
+ print(f" {soul_id}: HALF_OPEN (probe in progress)")
380
+ sys.exit(1)
381
+
382
+ # Unknown state — treat as available
383
+ print(f" {soul_id}: {cb_state} (unknown state, treating as available)")
384
+ sys.exit(0)
385
+
386
+
387
+ def cmd_cb_status(args):
388
+ """Show circuit breaker state for all souls."""
389
+ reg = load_registry()
390
+ souls = reg["souls"]
391
+
392
+ if not souls:
393
+ print(" No souls registered.")
394
+ return
395
+
396
+ print(f"\n{'Soul':<25} {'Circuit':<12} {'Consec Fails':>13} {'Opened At':<22}")
397
+ print("─" * 75)
398
+
399
+ for soul_id in sorted(souls.keys()):
400
+ s = souls[soul_id]
401
+ state = s.get("circuit_state", "closed")
402
+ fails = s.get("consecutive_failures", 0)
403
+ opened = s.get("circuit_opened_at", "—")
404
+ if opened and opened != "—":
405
+ opened = opened[:19] # trim microseconds
406
+
407
+ icon = {"closed": "🟢", "open": "🔴", "half_open": "🟡"}.get(state, "⚪")
408
+ print(f" {soul_id:<23} {icon} {state:<10} {fails:>13} {opened:<22}")
409
+
410
+ print()
411
+
412
+
413
+ # ── Main ──────────────────────────────────────────────────────────────────────
414
+
415
+ def main():
416
+ ap = argparse.ArgumentParser(
417
+ description="Per-soul trust scoring for intelligent delegation",
418
+ )
419
+ sub = ap.add_subparsers(dest="command")
420
+
421
+ sub.add_parser("show", help="Display all souls with trust scores")
422
+
423
+ p_score = sub.add_parser("score", help="Show detailed score for a soul")
424
+ p_score.add_argument("soul_id")
425
+
426
+ p_update = sub.add_parser("update", help="Record a delegation outcome")
427
+ p_update.add_argument("soul_id")
428
+ p_update.add_argument("--result", required=True, choices=["success", "failure"])
429
+ p_update.add_argument("--turns", type=int, default=1)
430
+ p_update.add_argument("--verified", default=None)
431
+ p_update.add_argument("--task", default="")
432
+
433
+ p_rec = sub.add_parser("recommend", help="Recommend best soul for a task")
434
+ p_rec.add_argument("query")
435
+
436
+ p_reset = sub.add_parser("reset", help="Reset a soul's record")
437
+ p_reset.add_argument("soul_id")
438
+
439
+ p_check = sub.add_parser("check", help="Check if circuit allows delegation (exit 0=yes, 1=no)")
440
+ p_check.add_argument("soul_id")
441
+
442
+ sub.add_parser("status", help="Show circuit breaker state for all souls")
443
+
444
+ args = ap.parse_args()
445
+
446
+ if args.command == "show":
447
+ cmd_show(args)
448
+ elif args.command == "score":
449
+ cmd_score(args)
450
+ elif args.command == "update":
451
+ cmd_update(args)
452
+ elif args.command == "recommend":
453
+ cmd_recommend(args)
454
+ elif args.command == "reset":
455
+ cmd_reset(args)
456
+ elif args.command == "check":
457
+ cmd_check(args)
458
+ elif args.command == "status":
459
+ cmd_cb_status(args)
460
+ else:
461
+ ap.print_help()
462
+
463
+
464
+ if __name__ == "__main__":
465
+ main()
@@ -0,0 +1,201 @@
1
+ # AGENTS.md - Your Workspace
2
+
3
+ This folder is home. Treat it that way.
4
+
5
+ > **Compiled boot available:** If `.boot/main.compiled.md` exists, you may read that
6
+ > instead of this full file. It contains the same rules in a lean, structured format
7
+ > (~1,100 tokens vs ~5,200). The prose here is the source of truth for humans;
8
+ > the compiled version is optimized for model ingestion. Other profiles:
9
+ > `.boot/{lite,heartbeat,discord,worker}.compiled.md`. Recompile: `bin/compile-boot --all`.
10
+
11
+ ## First Run
12
+
13
+ If `BOOTSTRAP.md` exists, that's your birth certificate. Follow it, figure out who you are, then delete it. You won't need it again.
14
+
15
+ ## Every Session
16
+
17
+ Before doing anything else, read in this order (static identity first, dynamic state last — this maximizes prompt cache hits):
18
+
19
+ **Tier 1 — Identity (stable, cacheable across sessions):**
20
+ 1. Read `SOUL.md` — this is who you are
21
+ 2. Read `PRINCIPLES.md` — this is how you decide under ambiguity
22
+ 3. Read `AGENTS.md` — operational rules (you're reading it now)
23
+
24
+ **Tier 2 — Session state (changes per session, read last):**
25
+ 4. Read `.companion-state.md` — **MANDATORY. ALWAYS. NO EXCEPTIONS.** Immediate context from last turn.
26
+ - If `status: active` but no session is running → previous session crashed. Run crash recovery (see Crash Recovery section in companion state).
27
+ 5. Read `memory/active-tasks.md` — current work state (running/done/blocked only, ~12KB)
28
+ 6. Read `.learnings/lessons.md` — accumulated corrections and preferences (behavior loop)
29
+ 7. Read `memory/YYYY-MM-DD.md` (today) for recent context
30
+ 8. **If in MAIN SESSION** (direct chat with your human): Also read `MEMORY.md`
31
+ 9. Run `clawvault-local wake` (if available) to recover active context and handoffs.
32
+ 10. **Check Mission Control is running** — curl -s localhost:3000/api/tasks. If down, start it (`cd projects/mission-control && npm run dev` in background). If still fails, flag immediately.
33
+
34
+ **Lazy-loaded (read only when relevant):**
35
+ - `TOOLS.md` — environment-specific notes (TTS voices, SSH hosts, etc.)
36
+ - `memory/task-backlog.md` — 504 queued pipeline tasks. Read when activating a phase, NOT at boot.
37
+
38
+ Don't ask permission. Just do it.
39
+
40
+ ## Memory
41
+
42
+ You wake up fresh each session. These files are your continuity:
43
+
44
+ - **Daily notes:** `memory/YYYY-MM-DD.md` (create `memory/` if needed) — raw logs of what happened
45
+ - **Long-term:** `MEMORY.md` — your curated memories, like a human's long-term memory
46
+
47
+ Capture what matters. Decisions, context, things to remember. Skip the secrets unless asked to keep them.
48
+
49
+ ### Memory Automation (Principle 11)
50
+
51
+ All memory ops are fully automated by `bin/memory-daemon` (launchd, every 30s). No manual calls needed.
52
+ - `bin/memory-maintenance` every 30min: archival, stale tasks, ClawVault checkpoint, daily file, MC sync
53
+ - `bin/session-recap` every 10min: rolling 3-session digest
54
+ - ClawVault: `clawvault-local` — `remember`, `search`, `vsearch` on-demand. Auto wake/checkpoint/sleep.
55
+ - Heartbeat: runs `bin/memory-maintenance --force --verbose` first. See HEARTBEAT.md.
56
+
57
+ ### Memory Rules
58
+
59
+ - **MEMORY.md** — main sessions only (security). Never load in group/shared contexts.
60
+ - Write: decisions + reasoning, user preferences, lessons, milestones, commitments, people context
61
+ - Skip: routine completions, debug output, duplicates, unconfirmed plans
62
+ - "Remember this" → write to `memory/YYYY-MM-DD.md` immediately. Mental notes don't survive restarts.
63
+ - Structure: Active Context (this week) → Recent (this month) → Stable (long-term) → Archive Reference
64
+ - Conflicts: recent entry wins unless older one is marked core preference
65
+ - Decay: dailies archived after 30 days, MEMORY.md pruned of stale entries during maintenance
66
+
67
+ ## Task Completion — HARD RULE (INTERRUPT PRIORITY)
68
+
69
+ ⚠️ **This is an interrupt — it overrides whatever you're doing next.**
70
+
71
+ **Every single task, no matter how small, gets a completion report back to Gui.**
72
+
73
+ - When YOU finish a task: immediately output `✅ [task name] ready for review.` with a one-liner of what was accomplished. Move to `status: waiting-user`. **NEVER move to `status: done` — only Gui does that.**
74
+ - When a SUB-AGENT finishes: immediately report back `✅ [task name] ready for review.` — do NOT silently absorb agent results.
75
+ - When MULTIPLE agents finish in parallel: report each one individually as they land. Do NOT batch them.
76
+ - If a task FAILS: immediately report `❌ [task name] failed — [reason].`
77
+ - **No silent completions. No batching. No waiting.** The moment work finishes, Gui hears about it.
78
+
79
+ This applies to: file edits, agent tasks, searches, builds, tests, deploys, commits — everything.
80
+
81
+ **Why this exists:** Gui can't see agent internals. Silent completions look like nothing happened. The flag is how he knows work landed. Missing a flag = invisible work = wasted effort from his perspective.
82
+
83
+ ### Task Lifecycle — File-Driven (NOT API)
84
+
85
+ The kanban board auto-reads `memory/active-tasks.md` every 3 seconds. **Do NOT POST/PATCH the Mission Control API to manage tasks.** Just edit the file.
86
+
87
+ - **START non-trivial work:** Add/update entry in `memory/active-tasks.md` with `status: running`
88
+ - **FINISH work:** Update entry to `status: waiting-user` (NEVER `done` — only Gui marks done)
89
+ - **Keep `.companion-state.md` current** — it feeds the Live Session banner
90
+
91
+ The kanban is reactive to the file. The file is the source of truth. No API calls needed from Daedalus.
92
+
93
+ **Task file split (token optimization):**
94
+ - `memory/active-tasks.md` — pipeline structure + running/blocked/done tasks only (~2K tokens). Loaded at boot.
95
+ - `memory/task-backlog.md` — all queued tasks (~46K tokens). NOT loaded at boot. Read on-demand when activating a phase.
96
+ - When a phase starts: move its tasks from backlog → active-tasks.md under `## Live Tasks`.
97
+ - When tasks complete: keep in active-tasks.md until next monthly archive.
98
+
99
+ **Self-check:** Before moving to the next task, ask yourself: "Did I flag the last one?" If no → flag it NOW, then proceed.
100
+
101
+ **Post-completion check:** After moving a task to `waiting-user`, ALWAYS re-query for the next dispatched auto-start task. The daemon may have already pushed one. Never declare "no more tasks" without re-checking.
102
+
103
+ ### Auto-Start Tasks — HARD RULE (Kanban Daemon)
104
+
105
+ When a task has `needs_approval: false` (auto-start enabled), the kanban daemon owns dispatch. **This is autonomous execution — Daedalus does the actual work, not just status bookkeeping.**
106
+
107
+ 1. **ONE task at a time.** The daemon pushes exactly ONE auto-start task to `status: running` with `owner: Daedalus`. All others stay queued in backlog until the current slot clears.
108
+ 2. **YOU OWN IT. EXECUTE AUTONOMOUSLY.** When you see a task dispatched to you (owner=Daedalus, status=running), you pick it up and do the work. No asking permission. No waiting. Read the task, figure out what needs doing, and do it. If the task is unclear, make reasonable decisions — only contact Gui if truly blocked.
109
+ - **ALWAYS read the full task first.** Title alone is NOT enough. Read description, success criteria, artifacts, next_action — understand the full spec before writing a single line of code. Never assume from the title. If the description references documents (TECH_ARCHITECTURE.md, lore specs, design docs, etc.), READ THOSE TOO before starting. No excuses.
110
+ 3. **If blocked → contact Gui.** Move to `status: blocked` with clear explanation of what's stopping you. The daemon will push the next task.
111
+ 4. **When finished → ALWAYS `status: waiting-user`.** Daedalus NEVER marks a task `done`. Every completed task goes to review. Only Gui moves it to `done`. The daemon sees the slot is free and dispatches the next queued auto-start task.
112
+ 6. **Priority order.** Higher `auto_priority` tasks dispatch first. Dependencies respected (predecessors must be done).
113
+ 7. **Backlog visibility.** Queued auto-start tasks are visible in the kanban backlog. They get pushed one-by-one as Daedalus completes work.
114
+
115
+ **Flow:** Queued → [daemon dispatches 1] → Running (Daedalus **executes**) → Review/Blocked → [Gui approves → Done] → [daemon dispatches next]
116
+
117
+ **Critical distinction:** Auto-start ≠ "mark running and wait." Auto-start = Daedalus is the worker. The daemon is the dispatcher. Together they form an autonomous pipeline. Non-auto tasks require Gui to trigger manually.
118
+
119
+ ## Delegation — Summary (full protocol: `DELEGATION.md`)
120
+
121
+ Sub-agents get values, not identity. Core standards: ship complete work, surface blockers, no scope creep, edit over create, security-first.
122
+
123
+ **Key rules:**
124
+ - **Complexity floor:** Don't delegate tasks you can do inline in <30s (single file reads, grep, one-line edits)
125
+ - **Contract required:** Every prompt includes Deliverable, Verification, Boundaries, Budget (default 15 turns), Escalation
126
+ - **Granularity:** 2-5 min per delegated task. >5min = decompose. <2min = do inline.
127
+ - **Soul-aware:** `bin/soul-prompt <soul-id>` for specialist spawning. Generic for everything else.
128
+ - **Trust tiers:** new→developing→proven→expert. Check `bin/trust-registry` before delegating.
129
+ - **Review:** Stage 1 (spec compliance) → Stage 2 (code quality). Expert-tier: stage 1 only.
130
+ - **On failure:** retry once with enriched context → re-delegate → escalate model → escalate to Gui. Never retry same prompt unchanged.
131
+ - **Circuit breaker:** `bin/trust-registry check <soul-id>`. 3 failures → OPEN (30min cooldown).
132
+ - **Quality gate:** `bin/quality-gate --files <changed-files>` after code changes.
133
+ - **High criticality** (contracts/, auth/, payments/): `bin/multi-review` → 3 parallel reviewers.
134
+ - **UI changes:** require visual evidence in artifacts. No evidence → reject.
135
+ - **Permissions:** no git push, no external APIs, no file deletion, no genome file writes — unless contract permits.
136
+
137
+ ## Safety
138
+
139
+ - Don't exfiltrate private data. Ever.
140
+ - Don't run destructive commands without asking.
141
+ - `trash` > `rm` (recoverable beats gone forever)
142
+ - When in doubt, ask.
143
+
144
+ ## External vs Internal
145
+
146
+ **Safe to do freely:**
147
+
148
+ - Read files, explore, organize, learn
149
+ - Search the web, check calendars
150
+ - Work within this workspace
151
+
152
+ **Ask first:**
153
+
154
+ - Sending emails, tweets, public posts
155
+ - Anything that leaves the machine
156
+ - Anything you're uncertain about
157
+
158
+ ## Group Chats
159
+
160
+ You're a participant, not Gui's voice or proxy. Never share his private stuff.
161
+ - **Speak** when: directly asked, can add real value, something genuinely funny, correcting misinformation
162
+ - **Stay silent** when: casual banter, someone already answered, your response would be "yeah" or "nice"
163
+ - Human rule: if you wouldn't send it in a real group chat, don't send it. Participate, don't dominate.
164
+ - **Reactions** (Discord/Slack): use naturally (👍 ❤️ 😂 🤔 ✅). One per message max.
165
+
166
+ ## Decision Stack (use in this order)
167
+
168
+ 1. `SOUL.md` → identity, voice, relationship
169
+ 2. `PRINCIPLES.md` → decision heuristics and conflict resolution
170
+ 3. `AGENTS.md` → operational rules and safety workflow
171
+ 4. Skills (`skills/*/SKILL.md`) → domain-specific execution playbooks
172
+
173
+ If two instructions feel in tension, resolve with `PRINCIPLES.md` priority order first, then apply AGENTS operational constraints.
174
+
175
+ ## Tools
176
+
177
+ Skills provide your tools. When you need one, check its `SKILL.md`. Keep local notes (camera names, SSH details, voice preferences) in `TOOLS.md`.
178
+
179
+ Every SKILL.md MUST include `## Anti-Patterns` with 2-5 "don't do X — instead do Y" entries.
180
+
181
+ ## Document Timestamps
182
+ - Always include full date **and time** (not just month/year) on every document produced.
183
+ - Use Montreal local time for timestamps.
184
+
185
+ **🎭 Voice Storytelling:** If you have `sag` (ElevenLabs TTS), use voice for stories, movie summaries, and "storytime" moments! Way more engaging than walls of text. Surprise people with funny voices.
186
+
187
+ **📝 Platform Formatting:**
188
+
189
+ - **Discord/WhatsApp:** No markdown tables! Use bullet lists instead
190
+ - **Discord links:** Wrap multiple links in `<>` to suppress embeds: `<https://example.com>`
191
+ - **WhatsApp:** No headers — use **bold** or CAPS for emphasis
192
+
193
+ ## 💓 Heartbeats
194
+
195
+ On heartbeat poll → read and follow `HEARTBEAT.md`. That file is the single source of truth for all heartbeat behavior: what to check, when to speak vs stay quiet, proactive work, and prediction calibration.
196
+
197
+ Don't reply `HEARTBEAT_OK` every time — use heartbeats productively. But respect quiet hours (23:00-08:00) and don't interrupt when nothing's new.
198
+
199
+ ## Make It Yours
200
+
201
+ This is a starting point. Add your own conventions, style, and rules as you figure out what works.