loudmouth-ai 0.1.0 → 0.2.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 (593) hide show
  1. package/README.md +148 -77
  2. package/dist/build-info.json +3 -3
  3. package/extensions/package.json +6 -0
  4. package/package.json +1 -1
  5. package/skills/autopilot/SKILL.md +179 -0
  6. package/skills/goals/SKILL.md +189 -0
  7. package/skills/wordpress/SKILL.md +232 -0
  8. package/extensions/bluebubbles/clawdbot.plugin.json +0 -11
  9. package/extensions/bluebubbles/index.ts +0 -20
  10. package/extensions/bluebubbles/package.json +0 -33
  11. package/extensions/bluebubbles/src/accounts.ts +0 -80
  12. package/extensions/bluebubbles/src/actions.test.ts +0 -651
  13. package/extensions/bluebubbles/src/actions.ts +0 -403
  14. package/extensions/bluebubbles/src/attachments.test.ts +0 -346
  15. package/extensions/bluebubbles/src/attachments.ts +0 -282
  16. package/extensions/bluebubbles/src/channel.ts +0 -399
  17. package/extensions/bluebubbles/src/chat.test.ts +0 -462
  18. package/extensions/bluebubbles/src/chat.ts +0 -354
  19. package/extensions/bluebubbles/src/config-schema.ts +0 -51
  20. package/extensions/bluebubbles/src/media-send.ts +0 -168
  21. package/extensions/bluebubbles/src/monitor.test.ts +0 -2140
  22. package/extensions/bluebubbles/src/monitor.ts +0 -2101
  23. package/extensions/bluebubbles/src/onboarding.ts +0 -340
  24. package/extensions/bluebubbles/src/probe.ts +0 -127
  25. package/extensions/bluebubbles/src/reactions.test.ts +0 -393
  26. package/extensions/bluebubbles/src/reactions.ts +0 -183
  27. package/extensions/bluebubbles/src/runtime.ts +0 -14
  28. package/extensions/bluebubbles/src/send.test.ts +0 -809
  29. package/extensions/bluebubbles/src/send.ts +0 -418
  30. package/extensions/bluebubbles/src/targets.test.ts +0 -184
  31. package/extensions/bluebubbles/src/targets.ts +0 -323
  32. package/extensions/bluebubbles/src/types.ts +0 -127
  33. package/extensions/copilot-proxy/README.md +0 -24
  34. package/extensions/copilot-proxy/clawdbot.plugin.json +0 -11
  35. package/extensions/copilot-proxy/index.ts +0 -142
  36. package/extensions/copilot-proxy/package.json +0 -11
  37. package/extensions/google-antigravity-auth/README.md +0 -24
  38. package/extensions/google-antigravity-auth/clawdbot.plugin.json +0 -11
  39. package/extensions/google-antigravity-auth/index.ts +0 -437
  40. package/extensions/google-antigravity-auth/package.json +0 -11
  41. package/extensions/google-gemini-cli-auth/README.md +0 -35
  42. package/extensions/google-gemini-cli-auth/clawdbot.plugin.json +0 -11
  43. package/extensions/google-gemini-cli-auth/index.ts +0 -91
  44. package/extensions/google-gemini-cli-auth/oauth.test.ts +0 -228
  45. package/extensions/google-gemini-cli-auth/oauth.ts +0 -580
  46. package/extensions/google-gemini-cli-auth/package.json +0 -11
  47. package/extensions/googlechat/clawdbot.plugin.json +0 -11
  48. package/extensions/googlechat/index.ts +0 -20
  49. package/extensions/googlechat/package.json +0 -39
  50. package/extensions/googlechat/src/accounts.ts +0 -133
  51. package/extensions/googlechat/src/actions.ts +0 -162
  52. package/extensions/googlechat/src/api.test.ts +0 -62
  53. package/extensions/googlechat/src/api.ts +0 -259
  54. package/extensions/googlechat/src/auth.ts +0 -113
  55. package/extensions/googlechat/src/channel.ts +0 -580
  56. package/extensions/googlechat/src/monitor.test.ts +0 -27
  57. package/extensions/googlechat/src/monitor.ts +0 -900
  58. package/extensions/googlechat/src/onboarding.ts +0 -278
  59. package/extensions/googlechat/src/runtime.ts +0 -14
  60. package/extensions/googlechat/src/targets.test.ts +0 -35
  61. package/extensions/googlechat/src/targets.ts +0 -55
  62. package/extensions/googlechat/src/types.config.ts +0 -3
  63. package/extensions/googlechat/src/types.ts +0 -73
  64. package/extensions/imessage/clawdbot.plugin.json +0 -11
  65. package/extensions/imessage/index.ts +0 -18
  66. package/extensions/imessage/package.json +0 -11
  67. package/extensions/imessage/src/channel.ts +0 -294
  68. package/extensions/imessage/src/runtime.ts +0 -14
  69. package/extensions/line/clawdbot.plugin.json +0 -11
  70. package/extensions/line/index.ts +0 -20
  71. package/extensions/line/package.json +0 -29
  72. package/extensions/line/src/card-command.ts +0 -338
  73. package/extensions/line/src/channel.logout.test.ts +0 -96
  74. package/extensions/line/src/channel.sendPayload.test.ts +0 -308
  75. package/extensions/line/src/channel.ts +0 -773
  76. package/extensions/line/src/runtime.ts +0 -14
  77. package/extensions/matrix/CHANGELOG.md +0 -54
  78. package/extensions/matrix/clawdbot.plugin.json +0 -11
  79. package/extensions/matrix/index.ts +0 -18
  80. package/extensions/matrix/package.json +0 -36
  81. package/extensions/matrix/src/actions.ts +0 -185
  82. package/extensions/matrix/src/channel.directory.test.ts +0 -56
  83. package/extensions/matrix/src/channel.ts +0 -417
  84. package/extensions/matrix/src/config-schema.ts +0 -62
  85. package/extensions/matrix/src/directory-live.ts +0 -175
  86. package/extensions/matrix/src/group-mentions.ts +0 -61
  87. package/extensions/matrix/src/matrix/accounts.test.ts +0 -83
  88. package/extensions/matrix/src/matrix/accounts.ts +0 -63
  89. package/extensions/matrix/src/matrix/actions/client.ts +0 -53
  90. package/extensions/matrix/src/matrix/actions/messages.ts +0 -120
  91. package/extensions/matrix/src/matrix/actions/pins.ts +0 -70
  92. package/extensions/matrix/src/matrix/actions/reactions.ts +0 -84
  93. package/extensions/matrix/src/matrix/actions/room.ts +0 -88
  94. package/extensions/matrix/src/matrix/actions/summary.ts +0 -77
  95. package/extensions/matrix/src/matrix/actions/types.ts +0 -84
  96. package/extensions/matrix/src/matrix/actions.ts +0 -15
  97. package/extensions/matrix/src/matrix/active-client.ts +0 -11
  98. package/extensions/matrix/src/matrix/client/config.ts +0 -165
  99. package/extensions/matrix/src/matrix/client/create-client.ts +0 -127
  100. package/extensions/matrix/src/matrix/client/logging.ts +0 -35
  101. package/extensions/matrix/src/matrix/client/runtime.ts +0 -4
  102. package/extensions/matrix/src/matrix/client/shared.ts +0 -169
  103. package/extensions/matrix/src/matrix/client/storage.ts +0 -131
  104. package/extensions/matrix/src/matrix/client/types.ts +0 -34
  105. package/extensions/matrix/src/matrix/client.test.ts +0 -57
  106. package/extensions/matrix/src/matrix/client.ts +0 -9
  107. package/extensions/matrix/src/matrix/credentials.ts +0 -103
  108. package/extensions/matrix/src/matrix/deps.ts +0 -57
  109. package/extensions/matrix/src/matrix/format.test.ts +0 -34
  110. package/extensions/matrix/src/matrix/format.ts +0 -22
  111. package/extensions/matrix/src/matrix/index.ts +0 -11
  112. package/extensions/matrix/src/matrix/monitor/allowlist.ts +0 -58
  113. package/extensions/matrix/src/matrix/monitor/auto-join.ts +0 -68
  114. package/extensions/matrix/src/matrix/monitor/direct.ts +0 -105
  115. package/extensions/matrix/src/matrix/monitor/events.ts +0 -103
  116. package/extensions/matrix/src/matrix/monitor/handler.ts +0 -645
  117. package/extensions/matrix/src/matrix/monitor/index.ts +0 -279
  118. package/extensions/matrix/src/matrix/monitor/location.ts +0 -83
  119. package/extensions/matrix/src/matrix/monitor/media.test.ts +0 -103
  120. package/extensions/matrix/src/matrix/monitor/media.ts +0 -113
  121. package/extensions/matrix/src/matrix/monitor/mentions.ts +0 -31
  122. package/extensions/matrix/src/matrix/monitor/replies.ts +0 -96
  123. package/extensions/matrix/src/matrix/monitor/room-info.ts +0 -58
  124. package/extensions/matrix/src/matrix/monitor/rooms.ts +0 -43
  125. package/extensions/matrix/src/matrix/monitor/threads.ts +0 -64
  126. package/extensions/matrix/src/matrix/monitor/types.ts +0 -39
  127. package/extensions/matrix/src/matrix/poll-types.test.ts +0 -22
  128. package/extensions/matrix/src/matrix/poll-types.ts +0 -157
  129. package/extensions/matrix/src/matrix/probe.ts +0 -70
  130. package/extensions/matrix/src/matrix/send/client.ts +0 -63
  131. package/extensions/matrix/src/matrix/send/formatting.ts +0 -92
  132. package/extensions/matrix/src/matrix/send/media.ts +0 -220
  133. package/extensions/matrix/src/matrix/send/targets.test.ts +0 -102
  134. package/extensions/matrix/src/matrix/send/targets.ts +0 -144
  135. package/extensions/matrix/src/matrix/send/types.ts +0 -109
  136. package/extensions/matrix/src/matrix/send.test.ts +0 -172
  137. package/extensions/matrix/src/matrix/send.ts +0 -255
  138. package/extensions/matrix/src/onboarding.ts +0 -432
  139. package/extensions/matrix/src/outbound.ts +0 -53
  140. package/extensions/matrix/src/resolve-targets.ts +0 -89
  141. package/extensions/matrix/src/runtime.ts +0 -14
  142. package/extensions/matrix/src/tool-actions.ts +0 -160
  143. package/extensions/matrix/src/types.ts +0 -95
  144. package/extensions/mattermost/clawdbot.plugin.json +0 -11
  145. package/extensions/mattermost/index.ts +0 -18
  146. package/extensions/mattermost/package.json +0 -25
  147. package/extensions/mattermost/src/channel.test.ts +0 -43
  148. package/extensions/mattermost/src/channel.ts +0 -339
  149. package/extensions/mattermost/src/config-schema.ts +0 -56
  150. package/extensions/mattermost/src/group-mentions.ts +0 -14
  151. package/extensions/mattermost/src/mattermost/accounts.ts +0 -115
  152. package/extensions/mattermost/src/mattermost/client.ts +0 -208
  153. package/extensions/mattermost/src/mattermost/index.ts +0 -9
  154. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +0 -150
  155. package/extensions/mattermost/src/mattermost/monitor.ts +0 -921
  156. package/extensions/mattermost/src/mattermost/probe.ts +0 -70
  157. package/extensions/mattermost/src/mattermost/send.ts +0 -217
  158. package/extensions/mattermost/src/normalize.ts +0 -38
  159. package/extensions/mattermost/src/onboarding-helpers.ts +0 -42
  160. package/extensions/mattermost/src/onboarding.ts +0 -187
  161. package/extensions/mattermost/src/runtime.ts +0 -14
  162. package/extensions/mattermost/src/types.ts +0 -50
  163. package/extensions/msteams/CHANGELOG.md +0 -51
  164. package/extensions/msteams/clawdbot.plugin.json +0 -11
  165. package/extensions/msteams/index.ts +0 -18
  166. package/extensions/msteams/package.json +0 -36
  167. package/extensions/msteams/src/attachments/download.ts +0 -206
  168. package/extensions/msteams/src/attachments/graph.ts +0 -319
  169. package/extensions/msteams/src/attachments/html.ts +0 -76
  170. package/extensions/msteams/src/attachments/payload.ts +0 -22
  171. package/extensions/msteams/src/attachments/shared.ts +0 -235
  172. package/extensions/msteams/src/attachments/types.ts +0 -37
  173. package/extensions/msteams/src/attachments.test.ts +0 -424
  174. package/extensions/msteams/src/attachments.ts +0 -18
  175. package/extensions/msteams/src/channel.directory.test.ts +0 -46
  176. package/extensions/msteams/src/channel.ts +0 -436
  177. package/extensions/msteams/src/conversation-store-fs.test.ts +0 -88
  178. package/extensions/msteams/src/conversation-store-fs.ts +0 -155
  179. package/extensions/msteams/src/conversation-store-memory.ts +0 -45
  180. package/extensions/msteams/src/conversation-store.ts +0 -41
  181. package/extensions/msteams/src/directory-live.ts +0 -179
  182. package/extensions/msteams/src/errors.test.ts +0 -46
  183. package/extensions/msteams/src/errors.ts +0 -158
  184. package/extensions/msteams/src/file-consent-helpers.test.ts +0 -234
  185. package/extensions/msteams/src/file-consent-helpers.ts +0 -73
  186. package/extensions/msteams/src/file-consent.ts +0 -122
  187. package/extensions/msteams/src/graph-chat.ts +0 -52
  188. package/extensions/msteams/src/graph-upload.ts +0 -445
  189. package/extensions/msteams/src/inbound.test.ts +0 -67
  190. package/extensions/msteams/src/inbound.ts +0 -38
  191. package/extensions/msteams/src/index.ts +0 -4
  192. package/extensions/msteams/src/media-helpers.test.ts +0 -186
  193. package/extensions/msteams/src/media-helpers.ts +0 -77
  194. package/extensions/msteams/src/messenger.test.ts +0 -245
  195. package/extensions/msteams/src/messenger.ts +0 -460
  196. package/extensions/msteams/src/monitor-handler/inbound-media.ts +0 -123
  197. package/extensions/msteams/src/monitor-handler/message-handler.ts +0 -629
  198. package/extensions/msteams/src/monitor-handler.ts +0 -166
  199. package/extensions/msteams/src/monitor-types.ts +0 -5
  200. package/extensions/msteams/src/monitor.ts +0 -290
  201. package/extensions/msteams/src/onboarding.ts +0 -432
  202. package/extensions/msteams/src/outbound.ts +0 -47
  203. package/extensions/msteams/src/pending-uploads.ts +0 -87
  204. package/extensions/msteams/src/policy.test.ts +0 -210
  205. package/extensions/msteams/src/policy.ts +0 -202
  206. package/extensions/msteams/src/polls-store-memory.ts +0 -30
  207. package/extensions/msteams/src/polls-store.test.ts +0 -40
  208. package/extensions/msteams/src/polls.test.ts +0 -72
  209. package/extensions/msteams/src/polls.ts +0 -299
  210. package/extensions/msteams/src/probe.test.ts +0 -57
  211. package/extensions/msteams/src/probe.ts +0 -99
  212. package/extensions/msteams/src/reply-dispatcher.ts +0 -128
  213. package/extensions/msteams/src/resolve-allowlist.ts +0 -277
  214. package/extensions/msteams/src/runtime.ts +0 -14
  215. package/extensions/msteams/src/sdk-types.ts +0 -19
  216. package/extensions/msteams/src/sdk.ts +0 -33
  217. package/extensions/msteams/src/send-context.ts +0 -156
  218. package/extensions/msteams/src/send.ts +0 -489
  219. package/extensions/msteams/src/sent-message-cache.test.ts +0 -16
  220. package/extensions/msteams/src/sent-message-cache.ts +0 -41
  221. package/extensions/msteams/src/storage.ts +0 -22
  222. package/extensions/msteams/src/store-fs.ts +0 -80
  223. package/extensions/msteams/src/token.ts +0 -19
  224. package/extensions/nextcloud-talk/clawdbot.plugin.json +0 -11
  225. package/extensions/nextcloud-talk/index.ts +0 -18
  226. package/extensions/nextcloud-talk/package.json +0 -30
  227. package/extensions/nextcloud-talk/src/accounts.ts +0 -154
  228. package/extensions/nextcloud-talk/src/channel.ts +0 -404
  229. package/extensions/nextcloud-talk/src/config-schema.ts +0 -78
  230. package/extensions/nextcloud-talk/src/format.ts +0 -79
  231. package/extensions/nextcloud-talk/src/inbound.ts +0 -336
  232. package/extensions/nextcloud-talk/src/monitor.ts +0 -246
  233. package/extensions/nextcloud-talk/src/normalize.ts +0 -31
  234. package/extensions/nextcloud-talk/src/onboarding.ts +0 -341
  235. package/extensions/nextcloud-talk/src/policy.ts +0 -175
  236. package/extensions/nextcloud-talk/src/room-info.ts +0 -111
  237. package/extensions/nextcloud-talk/src/runtime.ts +0 -14
  238. package/extensions/nextcloud-talk/src/send.ts +0 -206
  239. package/extensions/nextcloud-talk/src/signature.ts +0 -67
  240. package/extensions/nextcloud-talk/src/types.ts +0 -179
  241. package/extensions/nostr/CHANGELOG.md +0 -46
  242. package/extensions/nostr/README.md +0 -136
  243. package/extensions/nostr/clawdbot.plugin.json +0 -11
  244. package/extensions/nostr/index.ts +0 -69
  245. package/extensions/nostr/package.json +0 -31
  246. package/extensions/nostr/src/channel.test.ts +0 -141
  247. package/extensions/nostr/src/channel.ts +0 -342
  248. package/extensions/nostr/src/config-schema.ts +0 -90
  249. package/extensions/nostr/src/metrics.ts +0 -464
  250. package/extensions/nostr/src/nostr-bus.fuzz.test.ts +0 -544
  251. package/extensions/nostr/src/nostr-bus.integration.test.ts +0 -452
  252. package/extensions/nostr/src/nostr-bus.test.ts +0 -199
  253. package/extensions/nostr/src/nostr-bus.ts +0 -741
  254. package/extensions/nostr/src/nostr-profile-http.test.ts +0 -378
  255. package/extensions/nostr/src/nostr-profile-http.ts +0 -500
  256. package/extensions/nostr/src/nostr-profile-import.test.ts +0 -120
  257. package/extensions/nostr/src/nostr-profile-import.ts +0 -259
  258. package/extensions/nostr/src/nostr-profile.fuzz.test.ts +0 -479
  259. package/extensions/nostr/src/nostr-profile.test.ts +0 -410
  260. package/extensions/nostr/src/nostr-profile.ts +0 -242
  261. package/extensions/nostr/src/nostr-state-store.test.ts +0 -128
  262. package/extensions/nostr/src/nostr-state-store.ts +0 -226
  263. package/extensions/nostr/src/runtime.ts +0 -14
  264. package/extensions/nostr/src/seen-tracker.ts +0 -271
  265. package/extensions/nostr/src/types.test.ts +0 -161
  266. package/extensions/nostr/src/types.ts +0 -99
  267. package/extensions/nostr/test/setup.ts +0 -5
  268. package/extensions/open-prose/README.md +0 -25
  269. package/extensions/open-prose/clawdbot.plugin.json +0 -11
  270. package/extensions/open-prose/index.ts +0 -5
  271. package/extensions/open-prose/package.json +0 -11
  272. package/extensions/open-prose/skills/prose/LICENSE +0 -21
  273. package/extensions/open-prose/skills/prose/SKILL.md +0 -318
  274. package/extensions/open-prose/skills/prose/alt-borges.md +0 -141
  275. package/extensions/open-prose/skills/prose/alts/arabian-nights.md +0 -358
  276. package/extensions/open-prose/skills/prose/alts/borges.md +0 -360
  277. package/extensions/open-prose/skills/prose/alts/folk.md +0 -322
  278. package/extensions/open-prose/skills/prose/alts/homer.md +0 -346
  279. package/extensions/open-prose/skills/prose/alts/kafka.md +0 -373
  280. package/extensions/open-prose/skills/prose/compiler.md +0 -2967
  281. package/extensions/open-prose/skills/prose/examples/01-hello-world.prose +0 -4
  282. package/extensions/open-prose/skills/prose/examples/02-research-and-summarize.prose +0 -6
  283. package/extensions/open-prose/skills/prose/examples/03-code-review.prose +0 -17
  284. package/extensions/open-prose/skills/prose/examples/04-write-and-refine.prose +0 -14
  285. package/extensions/open-prose/skills/prose/examples/05-debug-issue.prose +0 -20
  286. package/extensions/open-prose/skills/prose/examples/06-explain-codebase.prose +0 -17
  287. package/extensions/open-prose/skills/prose/examples/07-refactor.prose +0 -20
  288. package/extensions/open-prose/skills/prose/examples/08-blog-post.prose +0 -20
  289. package/extensions/open-prose/skills/prose/examples/09-research-with-agents.prose +0 -25
  290. package/extensions/open-prose/skills/prose/examples/10-code-review-agents.prose +0 -32
  291. package/extensions/open-prose/skills/prose/examples/11-skills-and-imports.prose +0 -27
  292. package/extensions/open-prose/skills/prose/examples/12-secure-agent-permissions.prose +0 -43
  293. package/extensions/open-prose/skills/prose/examples/13-variables-and-context.prose +0 -51
  294. package/extensions/open-prose/skills/prose/examples/14-composition-blocks.prose +0 -48
  295. package/extensions/open-prose/skills/prose/examples/15-inline-sequences.prose +0 -23
  296. package/extensions/open-prose/skills/prose/examples/16-parallel-reviews.prose +0 -19
  297. package/extensions/open-prose/skills/prose/examples/17-parallel-research.prose +0 -19
  298. package/extensions/open-prose/skills/prose/examples/18-mixed-parallel-sequential.prose +0 -36
  299. package/extensions/open-prose/skills/prose/examples/19-advanced-parallel.prose +0 -71
  300. package/extensions/open-prose/skills/prose/examples/20-fixed-loops.prose +0 -20
  301. package/extensions/open-prose/skills/prose/examples/21-pipeline-operations.prose +0 -35
  302. package/extensions/open-prose/skills/prose/examples/22-error-handling.prose +0 -51
  303. package/extensions/open-prose/skills/prose/examples/23-retry-with-backoff.prose +0 -63
  304. package/extensions/open-prose/skills/prose/examples/24-choice-blocks.prose +0 -86
  305. package/extensions/open-prose/skills/prose/examples/25-conditionals.prose +0 -114
  306. package/extensions/open-prose/skills/prose/examples/26-parameterized-blocks.prose +0 -100
  307. package/extensions/open-prose/skills/prose/examples/27-string-interpolation.prose +0 -105
  308. package/extensions/open-prose/skills/prose/examples/28-automated-pr-review.prose +0 -37
  309. package/extensions/open-prose/skills/prose/examples/28-gas-town.prose +0 -1572
  310. package/extensions/open-prose/skills/prose/examples/29-captains-chair.prose +0 -218
  311. package/extensions/open-prose/skills/prose/examples/30-captains-chair-simple.prose +0 -42
  312. package/extensions/open-prose/skills/prose/examples/31-captains-chair-with-memory.prose +0 -145
  313. package/extensions/open-prose/skills/prose/examples/33-pr-review-autofix.prose +0 -168
  314. package/extensions/open-prose/skills/prose/examples/34-content-pipeline.prose +0 -204
  315. package/extensions/open-prose/skills/prose/examples/35-feature-factory.prose +0 -296
  316. package/extensions/open-prose/skills/prose/examples/36-bug-hunter.prose +0 -237
  317. package/extensions/open-prose/skills/prose/examples/37-the-forge.prose +0 -1474
  318. package/extensions/open-prose/skills/prose/examples/38-skill-scan.prose +0 -455
  319. package/extensions/open-prose/skills/prose/examples/39-architect-by-simulation.prose +0 -277
  320. package/extensions/open-prose/skills/prose/examples/40-rlm-self-refine.prose +0 -32
  321. package/extensions/open-prose/skills/prose/examples/41-rlm-divide-conquer.prose +0 -38
  322. package/extensions/open-prose/skills/prose/examples/42-rlm-filter-recurse.prose +0 -46
  323. package/extensions/open-prose/skills/prose/examples/43-rlm-pairwise.prose +0 -50
  324. package/extensions/open-prose/skills/prose/examples/44-run-endpoint-ux-test.prose +0 -261
  325. package/extensions/open-prose/skills/prose/examples/45-plugin-release.prose +0 -159
  326. package/extensions/open-prose/skills/prose/examples/45-run-endpoint-ux-test-with-remediation.prose +0 -637
  327. package/extensions/open-prose/skills/prose/examples/46-run-endpoint-ux-test-fast.prose +0 -148
  328. package/extensions/open-prose/skills/prose/examples/46-workflow-crystallizer.prose +0 -225
  329. package/extensions/open-prose/skills/prose/examples/47-language-self-improvement.prose +0 -356
  330. package/extensions/open-prose/skills/prose/examples/48-habit-miner.prose +0 -445
  331. package/extensions/open-prose/skills/prose/examples/49-prose-run-retrospective.prose +0 -210
  332. package/extensions/open-prose/skills/prose/examples/README.md +0 -391
  333. package/extensions/open-prose/skills/prose/examples/roadmap/README.md +0 -22
  334. package/extensions/open-prose/skills/prose/examples/roadmap/iterative-refinement.prose +0 -20
  335. package/extensions/open-prose/skills/prose/examples/roadmap/parallel-review.prose +0 -18
  336. package/extensions/open-prose/skills/prose/examples/roadmap/simple-pipeline.prose +0 -17
  337. package/extensions/open-prose/skills/prose/examples/roadmap/syntax/open-prose-syntax.prose +0 -223
  338. package/extensions/open-prose/skills/prose/guidance/antipatterns.md +0 -951
  339. package/extensions/open-prose/skills/prose/guidance/patterns.md +0 -700
  340. package/extensions/open-prose/skills/prose/guidance/system-prompt.md +0 -180
  341. package/extensions/open-prose/skills/prose/help.md +0 -143
  342. package/extensions/open-prose/skills/prose/lib/README.md +0 -105
  343. package/extensions/open-prose/skills/prose/lib/calibrator.prose +0 -215
  344. package/extensions/open-prose/skills/prose/lib/cost-analyzer.prose +0 -174
  345. package/extensions/open-prose/skills/prose/lib/error-forensics.prose +0 -250
  346. package/extensions/open-prose/skills/prose/lib/inspector.prose +0 -196
  347. package/extensions/open-prose/skills/prose/lib/profiler.prose +0 -460
  348. package/extensions/open-prose/skills/prose/lib/program-improver.prose +0 -275
  349. package/extensions/open-prose/skills/prose/lib/project-memory.prose +0 -118
  350. package/extensions/open-prose/skills/prose/lib/user-memory.prose +0 -93
  351. package/extensions/open-prose/skills/prose/lib/vm-improver.prose +0 -243
  352. package/extensions/open-prose/skills/prose/primitives/session.md +0 -587
  353. package/extensions/open-prose/skills/prose/prose.md +0 -1235
  354. package/extensions/open-prose/skills/prose/state/filesystem.md +0 -478
  355. package/extensions/open-prose/skills/prose/state/in-context.md +0 -380
  356. package/extensions/open-prose/skills/prose/state/postgres.md +0 -875
  357. package/extensions/open-prose/skills/prose/state/sqlite.md +0 -572
  358. package/extensions/qwen-portal-auth/README.md +0 -24
  359. package/extensions/qwen-portal-auth/clawdbot.plugin.json +0 -11
  360. package/extensions/qwen-portal-auth/index.ts +0 -127
  361. package/extensions/qwen-portal-auth/oauth.ts +0 -190
  362. package/extensions/signal/clawdbot.plugin.json +0 -11
  363. package/extensions/signal/index.ts +0 -18
  364. package/extensions/signal/package.json +0 -11
  365. package/extensions/signal/src/channel.ts +0 -312
  366. package/extensions/signal/src/runtime.ts +0 -14
  367. package/extensions/telegram/clawdbot.plugin.json +0 -11
  368. package/extensions/telegram/index.ts +0 -18
  369. package/extensions/telegram/package.json +0 -11
  370. package/extensions/telegram/src/channel.ts +0 -478
  371. package/extensions/telegram/src/runtime.ts +0 -14
  372. package/extensions/tlon/README.md +0 -5
  373. package/extensions/tlon/clawdbot.plugin.json +0 -11
  374. package/extensions/tlon/index.ts +0 -18
  375. package/extensions/tlon/package.json +0 -30
  376. package/extensions/tlon/src/channel.ts +0 -379
  377. package/extensions/tlon/src/config-schema.test.ts +0 -32
  378. package/extensions/tlon/src/config-schema.ts +0 -43
  379. package/extensions/tlon/src/monitor/discovery.ts +0 -71
  380. package/extensions/tlon/src/monitor/history.ts +0 -87
  381. package/extensions/tlon/src/monitor/index.ts +0 -501
  382. package/extensions/tlon/src/monitor/processed-messages.test.ts +0 -24
  383. package/extensions/tlon/src/monitor/processed-messages.ts +0 -38
  384. package/extensions/tlon/src/monitor/utils.ts +0 -83
  385. package/extensions/tlon/src/onboarding.ts +0 -213
  386. package/extensions/tlon/src/runtime.ts +0 -14
  387. package/extensions/tlon/src/targets.ts +0 -79
  388. package/extensions/tlon/src/types.ts +0 -85
  389. package/extensions/tlon/src/urbit/auth.ts +0 -18
  390. package/extensions/tlon/src/urbit/http-api.ts +0 -36
  391. package/extensions/tlon/src/urbit/send.test.ts +0 -38
  392. package/extensions/tlon/src/urbit/send.ts +0 -127
  393. package/extensions/tlon/src/urbit/sse-client.test.ts +0 -41
  394. package/extensions/tlon/src/urbit/sse-client.ts +0 -367
  395. package/extensions/twitch/CHANGELOG.md +0 -21
  396. package/extensions/twitch/README.md +0 -89
  397. package/extensions/twitch/clawdbot.plugin.json +0 -9
  398. package/extensions/twitch/index.ts +0 -20
  399. package/extensions/twitch/package.json +0 -20
  400. package/extensions/twitch/src/access-control.test.ts +0 -489
  401. package/extensions/twitch/src/access-control.ts +0 -154
  402. package/extensions/twitch/src/actions.ts +0 -173
  403. package/extensions/twitch/src/client-manager-registry.ts +0 -115
  404. package/extensions/twitch/src/config-schema.ts +0 -82
  405. package/extensions/twitch/src/config.test.ts +0 -88
  406. package/extensions/twitch/src/config.ts +0 -116
  407. package/extensions/twitch/src/monitor.ts +0 -257
  408. package/extensions/twitch/src/onboarding.test.ts +0 -311
  409. package/extensions/twitch/src/onboarding.ts +0 -411
  410. package/extensions/twitch/src/outbound.test.ts +0 -373
  411. package/extensions/twitch/src/outbound.ts +0 -186
  412. package/extensions/twitch/src/plugin.test.ts +0 -39
  413. package/extensions/twitch/src/plugin.ts +0 -274
  414. package/extensions/twitch/src/probe.test.ts +0 -198
  415. package/extensions/twitch/src/probe.ts +0 -118
  416. package/extensions/twitch/src/resolver.ts +0 -137
  417. package/extensions/twitch/src/runtime.ts +0 -14
  418. package/extensions/twitch/src/send.test.ts +0 -289
  419. package/extensions/twitch/src/send.ts +0 -136
  420. package/extensions/twitch/src/status.test.ts +0 -270
  421. package/extensions/twitch/src/status.ts +0 -176
  422. package/extensions/twitch/src/token.test.ts +0 -171
  423. package/extensions/twitch/src/token.ts +0 -87
  424. package/extensions/twitch/src/twitch-client.test.ts +0 -574
  425. package/extensions/twitch/src/twitch-client.ts +0 -277
  426. package/extensions/twitch/src/types.ts +0 -141
  427. package/extensions/twitch/src/utils/markdown.ts +0 -92
  428. package/extensions/twitch/src/utils/twitch.ts +0 -78
  429. package/extensions/twitch/test/setup.ts +0 -7
  430. package/extensions/voice-call/CHANGELOG.md +0 -72
  431. package/extensions/voice-call/README.md +0 -134
  432. package/extensions/voice-call/clawdbot.plugin.json +0 -601
  433. package/extensions/voice-call/index.ts +0 -497
  434. package/extensions/voice-call/package.json +0 -16
  435. package/extensions/voice-call/src/cli.ts +0 -300
  436. package/extensions/voice-call/src/config.test.ts +0 -204
  437. package/extensions/voice-call/src/config.ts +0 -493
  438. package/extensions/voice-call/src/core-bridge.ts +0 -196
  439. package/extensions/voice-call/src/manager/context.ts +0 -21
  440. package/extensions/voice-call/src/manager/events.ts +0 -177
  441. package/extensions/voice-call/src/manager/lookup.ts +0 -33
  442. package/extensions/voice-call/src/manager/outbound.ts +0 -248
  443. package/extensions/voice-call/src/manager/state.ts +0 -50
  444. package/extensions/voice-call/src/manager/store.ts +0 -88
  445. package/extensions/voice-call/src/manager/timers.ts +0 -86
  446. package/extensions/voice-call/src/manager/twiml.ts +0 -9
  447. package/extensions/voice-call/src/manager.test.ts +0 -108
  448. package/extensions/voice-call/src/manager.ts +0 -876
  449. package/extensions/voice-call/src/media-stream.test.ts +0 -97
  450. package/extensions/voice-call/src/media-stream.ts +0 -393
  451. package/extensions/voice-call/src/providers/base.ts +0 -67
  452. package/extensions/voice-call/src/providers/index.ts +0 -10
  453. package/extensions/voice-call/src/providers/mock.ts +0 -168
  454. package/extensions/voice-call/src/providers/plivo.test.ts +0 -28
  455. package/extensions/voice-call/src/providers/plivo.ts +0 -504
  456. package/extensions/voice-call/src/providers/stt-openai-realtime.ts +0 -311
  457. package/extensions/voice-call/src/providers/telnyx.ts +0 -364
  458. package/extensions/voice-call/src/providers/tts-openai.ts +0 -264
  459. package/extensions/voice-call/src/providers/twilio/api.ts +0 -45
  460. package/extensions/voice-call/src/providers/twilio/webhook.ts +0 -29
  461. package/extensions/voice-call/src/providers/twilio.test.ts +0 -64
  462. package/extensions/voice-call/src/providers/twilio.ts +0 -595
  463. package/extensions/voice-call/src/response-generator.ts +0 -171
  464. package/extensions/voice-call/src/runtime.ts +0 -205
  465. package/extensions/voice-call/src/telephony-audio.ts +0 -88
  466. package/extensions/voice-call/src/telephony-tts.ts +0 -95
  467. package/extensions/voice-call/src/tunnel.ts +0 -331
  468. package/extensions/voice-call/src/types.ts +0 -272
  469. package/extensions/voice-call/src/utils.ts +0 -12
  470. package/extensions/voice-call/src/voice-mapping.ts +0 -65
  471. package/extensions/voice-call/src/webhook-security.test.ts +0 -233
  472. package/extensions/voice-call/src/webhook-security.ts +0 -446
  473. package/extensions/voice-call/src/webhook.ts +0 -490
  474. package/extensions/whatsapp/clawdbot.plugin.json +0 -11
  475. package/extensions/whatsapp/index.ts +0 -18
  476. package/extensions/whatsapp/package.json +0 -11
  477. package/extensions/whatsapp/src/channel.ts +0 -500
  478. package/extensions/whatsapp/src/runtime.ts +0 -14
  479. package/extensions/zalo/CHANGELOG.md +0 -55
  480. package/extensions/zalo/README.md +0 -50
  481. package/extensions/zalo/clawdbot.plugin.json +0 -11
  482. package/extensions/zalo/index.ts +0 -20
  483. package/extensions/zalo/package.json +0 -33
  484. package/extensions/zalo/src/accounts.ts +0 -71
  485. package/extensions/zalo/src/actions.ts +0 -62
  486. package/extensions/zalo/src/api.ts +0 -206
  487. package/extensions/zalo/src/channel.directory.test.ts +0 -35
  488. package/extensions/zalo/src/channel.ts +0 -394
  489. package/extensions/zalo/src/config-schema.ts +0 -24
  490. package/extensions/zalo/src/monitor.ts +0 -760
  491. package/extensions/zalo/src/monitor.webhook.test.ts +0 -70
  492. package/extensions/zalo/src/onboarding.ts +0 -405
  493. package/extensions/zalo/src/probe.ts +0 -46
  494. package/extensions/zalo/src/proxy.ts +0 -18
  495. package/extensions/zalo/src/runtime.ts +0 -14
  496. package/extensions/zalo/src/send.ts +0 -117
  497. package/extensions/zalo/src/status-issues.ts +0 -50
  498. package/extensions/zalo/src/token.ts +0 -55
  499. package/extensions/zalo/src/types.ts +0 -42
  500. package/extensions/zalouser/CHANGELOG.md +0 -33
  501. package/extensions/zalouser/README.md +0 -221
  502. package/extensions/zalouser/clawdbot.plugin.json +0 -11
  503. package/extensions/zalouser/index.ts +0 -32
  504. package/extensions/zalouser/package.json +0 -33
  505. package/extensions/zalouser/src/accounts.ts +0 -117
  506. package/extensions/zalouser/src/channel.test.ts +0 -17
  507. package/extensions/zalouser/src/channel.ts +0 -641
  508. package/extensions/zalouser/src/config-schema.ts +0 -27
  509. package/extensions/zalouser/src/monitor.ts +0 -574
  510. package/extensions/zalouser/src/onboarding.ts +0 -488
  511. package/extensions/zalouser/src/probe.ts +0 -28
  512. package/extensions/zalouser/src/runtime.ts +0 -14
  513. package/extensions/zalouser/src/send.ts +0 -150
  514. package/extensions/zalouser/src/status-issues.test.ts +0 -58
  515. package/extensions/zalouser/src/status-issues.ts +0 -81
  516. package/extensions/zalouser/src/tool.ts +0 -156
  517. package/extensions/zalouser/src/types.ts +0 -102
  518. package/extensions/zalouser/src/zca.ts +0 -208
  519. package/skills/1password/SKILL.md +0 -53
  520. package/skills/1password/references/cli-examples.md +0 -29
  521. package/skills/1password/references/get-started.md +0 -17
  522. package/skills/apple-notes/SKILL.md +0 -50
  523. package/skills/apple-reminders/SKILL.md +0 -67
  524. package/skills/bear-notes/SKILL.md +0 -79
  525. package/skills/bird/SKILL.md +0 -197
  526. package/skills/blogwatcher/SKILL.md +0 -46
  527. package/skills/blucli/SKILL.md +0 -27
  528. package/skills/bluebubbles/SKILL.md +0 -39
  529. package/skills/camsnap/SKILL.md +0 -25
  530. package/skills/canvas/SKILL.md +0 -189
  531. package/skills/clawdhub/SKILL.md +0 -53
  532. package/skills/coding-agent/SKILL.md +0 -278
  533. package/skills/discord/SKILL.md +0 -475
  534. package/skills/eightctl/SKILL.md +0 -29
  535. package/skills/food-order/SKILL.md +0 -41
  536. package/skills/gemini/SKILL.md +0 -23
  537. package/skills/gifgrep/SKILL.md +0 -47
  538. package/skills/github/SKILL.md +0 -48
  539. package/skills/gog/SKILL.md +0 -92
  540. package/skills/goplaces/SKILL.md +0 -30
  541. package/skills/himalaya/SKILL.md +0 -217
  542. package/skills/himalaya/references/configuration.md +0 -174
  543. package/skills/himalaya/references/message-composition.md +0 -182
  544. package/skills/imsg/SKILL.md +0 -25
  545. package/skills/local-places/SERVER_README.md +0 -101
  546. package/skills/local-places/SKILL.md +0 -91
  547. package/skills/local-places/pyproject.toml +0 -27
  548. package/skills/local-places/src/local_places/__init__.py +0 -2
  549. package/skills/local-places/src/local_places/google_places.py +0 -314
  550. package/skills/local-places/src/local_places/main.py +0 -65
  551. package/skills/local-places/src/local_places/schemas.py +0 -107
  552. package/skills/mcporter/SKILL.md +0 -38
  553. package/skills/model-usage/SKILL.md +0 -45
  554. package/skills/model-usage/references/codexbar-cli.md +0 -28
  555. package/skills/model-usage/scripts/model_usage.py +0 -310
  556. package/skills/nano-banana-pro/SKILL.md +0 -30
  557. package/skills/nano-banana-pro/scripts/generate_image.py +0 -169
  558. package/skills/nano-pdf/SKILL.md +0 -20
  559. package/skills/notion/SKILL.md +0 -156
  560. package/skills/obsidian/SKILL.md +0 -55
  561. package/skills/openai-image-gen/SKILL.md +0 -71
  562. package/skills/openai-image-gen/scripts/gen.py +0 -240
  563. package/skills/openai-whisper/SKILL.md +0 -19
  564. package/skills/openai-whisper-api/SKILL.md +0 -43
  565. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -85
  566. package/skills/openhue/SKILL.md +0 -30
  567. package/skills/oracle/SKILL.md +0 -105
  568. package/skills/ordercli/SKILL.md +0 -47
  569. package/skills/peekaboo/SKILL.md +0 -153
  570. package/skills/sag/SKILL.md +0 -62
  571. package/skills/session-logs/SKILL.md +0 -105
  572. package/skills/sherpa-onnx-tts/SKILL.md +0 -49
  573. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
  574. package/skills/skill-creator/SKILL.md +0 -371
  575. package/skills/skill-creator/license.txt +0 -202
  576. package/skills/skill-creator/scripts/init_skill.py +0 -378
  577. package/skills/skill-creator/scripts/package_skill.py +0 -111
  578. package/skills/skill-creator/scripts/quick_validate.py +0 -101
  579. package/skills/slack/SKILL.md +0 -144
  580. package/skills/songsee/SKILL.md +0 -29
  581. package/skills/sonoscli/SKILL.md +0 -26
  582. package/skills/spotify-player/SKILL.md +0 -34
  583. package/skills/summarize/SKILL.md +0 -67
  584. package/skills/things-mac/SKILL.md +0 -61
  585. package/skills/tmux/SKILL.md +0 -121
  586. package/skills/tmux/scripts/find-sessions.sh +0 -112
  587. package/skills/tmux/scripts/wait-for-text.sh +0 -83
  588. package/skills/trello/SKILL.md +0 -84
  589. package/skills/video-frames/SKILL.md +0 -29
  590. package/skills/video-frames/scripts/frame.sh +0 -81
  591. package/skills/voice-call/SKILL.md +0 -35
  592. package/skills/wacli/SKILL.md +0 -42
  593. package/skills/weather/SKILL.md +0 -49
@@ -1,951 +0,0 @@
1
- ---
2
- role: antipatterns
3
- summary: |
4
- Common mistakes and patterns to avoid in OpenProse programs.
5
- Read this file to identify and fix problematic code patterns.
6
- see-also:
7
- - prose.md: Execution semantics, how to run programs
8
- - compiler.md: Full syntax grammar, validation rules
9
- - patterns.md: Recommended design patterns
10
- ---
11
-
12
- # OpenProse Antipatterns
13
-
14
- This document catalogs patterns that lead to brittle, expensive, slow, or unmaintainable programs. Each antipattern includes recognition criteria and remediation guidance.
15
-
16
- ---
17
-
18
- ## Structural Antipatterns
19
-
20
- #### god-session
21
-
22
- A single session that tries to do everything. God sessions are hard to debug, impossible to parallelize, and produce inconsistent results.
23
-
24
- ```prose
25
- # Bad: One session doing too much
26
- session """
27
- Read all the code in the repository.
28
- Identify security vulnerabilities.
29
- Find performance bottlenecks.
30
- Check for style violations.
31
- Generate a comprehensive report.
32
- Suggest fixes for each issue.
33
- Prioritize by severity.
34
- Create a remediation plan.
35
- """
36
- ```
37
-
38
- **Why it's bad**: The session has no clear completion criteria. It mixes concerns that could be parallelized. Failure anywhere fails everything.
39
-
40
- **Fix**: Decompose into focused sessions:
41
-
42
- ```prose
43
- # Good: Focused sessions
44
- parallel:
45
- security = session "Identify security vulnerabilities"
46
- perf = session "Find performance bottlenecks"
47
- style = session "Check for style violations"
48
-
49
- session "Synthesize findings and prioritize by severity"
50
- context: { security, perf, style }
51
-
52
- session "Create remediation plan"
53
- ```
54
-
55
- #### sequential-when-parallel
56
-
57
- Running independent operations sequentially when they could run concurrently. Wastes wall-clock time.
58
-
59
- ```prose
60
- # Bad: Sequential independent work
61
- let market = session "Research market"
62
- let tech = session "Research technology"
63
- let competition = session "Research competition"
64
-
65
- session "Synthesize"
66
- context: [market, tech, competition]
67
- ```
68
-
69
- **Why it's bad**: Total time is sum of all research times. Each session waits for the previous one unnecessarily.
70
-
71
- **Fix**: Parallelize independent work:
72
-
73
- ```prose
74
- # Good: Parallel independent work
75
- parallel:
76
- market = session "Research market"
77
- tech = session "Research technology"
78
- competition = session "Research competition"
79
-
80
- session "Synthesize"
81
- context: { market, tech, competition }
82
- ```
83
-
84
- #### spaghetti-context
85
-
86
- Context passed haphazardly without clear data flow. Makes programs hard to understand and modify.
87
-
88
- ```prose
89
- # Bad: Unclear what context is actually used
90
- let a = session "Step A"
91
- let b = session "Step B"
92
- context: a
93
- let c = session "Step C"
94
- context: [a, b]
95
- let d = session "Step D"
96
- context: [a, b, c]
97
- let e = session "Step E"
98
- context: [a, c, d] # Why not b?
99
- let f = session "Step F"
100
- context: [a, b, c, d, e] # Everything?
101
- ```
102
-
103
- **Why it's bad**: Unclear which sessions depend on which outputs. Hard to parallelize or refactor.
104
-
105
- **Fix**: Minimize context to actual dependencies:
106
-
107
- ```prose
108
- # Good: Clear, minimal dependencies
109
- let research = session "Research"
110
- let analysis = session "Analyze"
111
- context: research
112
- let recommendations = session "Recommend"
113
- context: analysis # Only needs analysis, not research
114
- let report = session "Report"
115
- context: recommendations
116
- ```
117
-
118
- #### parallel-then-synthesize
119
-
120
- Spawning parallel agents for related analytical work, then synthesizing, when a single focused agent could do the entire job more efficiently.
121
-
122
- ```prose
123
- # Antipattern: Parallel investigation + synthesis
124
- parallel:
125
- code = session "Analyze code path"
126
- logs = session "Analyze logs"
127
- context = session "Analyze execution context"
128
-
129
- synthesis = session "Synthesize all findings"
130
- context: { code, logs, context }
131
- # 4 LLM calls, coordination overhead, fragmented context
132
- ```
133
-
134
- **Why it's bad**: For related analysis that feeds into one conclusion, the coordination overhead and context fragmentation often outweigh parallelism benefits. Each parallel agent sees only part of the picture.
135
-
136
- **Fix**: Use a single focused agent with multi-step instructions:
137
-
138
- ```prose
139
- # Good: Single comprehensive investigator
140
- diagnosis = session "Investigate the error"
141
- prompt: """Analyze comprehensively:
142
- 1. Check the code path that produced the error
143
- 2. Examine logs for timing and state
144
- 3. Review execution context
145
- Synthesize into a unified diagnosis."""
146
- # 1 LLM call, full context, no coordination
147
- ```
148
-
149
- **When parallel IS right**: When analyses are truly independent (security vs performance), when you want diverse perspectives that shouldn't influence each other, or when the work is so large it genuinely benefits from division.
150
-
151
- #### copy-paste-workflows
152
-
153
- Duplicating session sequences instead of using blocks. Leads to inconsistent changes and maintenance burden.
154
-
155
- ```prose
156
- # Bad: Duplicated workflow
157
- session "Security review of module A"
158
- session "Performance review of module A"
159
- session "Synthesize reviews of module A"
160
-
161
- session "Security review of module B"
162
- session "Performance review of module B"
163
- session "Synthesize reviews of module B"
164
-
165
- session "Security review of module C"
166
- session "Performance review of module C"
167
- session "Synthesize reviews of module C"
168
- ```
169
-
170
- **Why it's bad**: If the workflow needs to change, you must change it everywhere. Easy to miss one.
171
-
172
- **Fix**: Extract into a block:
173
-
174
- ```prose
175
- # Good: Reusable block
176
- block review-module(module):
177
- parallel:
178
- sec = session "Security review of {module}"
179
- perf = session "Performance review of {module}"
180
- session "Synthesize reviews of {module}"
181
- context: { sec, perf }
182
-
183
- do review-module("module A")
184
- do review-module("module B")
185
- do review-module("module C")
186
- ```
187
-
188
- ---
189
-
190
- ## Robustness Antipatterns
191
-
192
- #### unbounded-loop
193
-
194
- A loop without max iterations. Can run forever if the condition is never satisfied.
195
-
196
- ```prose
197
- # Bad: No escape hatch
198
- loop until **the code is perfect**:
199
- session "Improve the code"
200
- ```
201
-
202
- **Why it's bad**: "Perfect" may never be achieved. The program could run indefinitely, consuming resources.
203
-
204
- **Fix**: Always specify `max:`:
205
-
206
- ```prose
207
- # Good: Bounded iteration
208
- loop until **the code is perfect** (max: 10):
209
- session "Improve the code"
210
- ```
211
-
212
- #### optimistic-execution
213
-
214
- Assuming everything will succeed. No error handling for operations that can fail.
215
-
216
- ```prose
217
- # Bad: No error handling
218
- session "Call external API"
219
- session "Process API response"
220
- session "Store results in database"
221
- session "Send notification"
222
- ```
223
-
224
- **Why it's bad**: If the API fails, subsequent sessions receive no valid input. Silent corruption.
225
-
226
- **Fix**: Handle failures explicitly:
227
-
228
- ```prose
229
- # Good: Error handling
230
- try:
231
- let response = session "Call external API"
232
- retry: 3
233
- backoff: "exponential"
234
- session "Process API response"
235
- context: response
236
- catch as err:
237
- session "Handle API failure gracefully"
238
- context: err
239
- ```
240
-
241
- #### ignored-errors
242
-
243
- Using `on-fail: "ignore"` when failures actually matter. Masks problems that should surface.
244
-
245
- ```prose
246
- # Bad: Ignoring failures that matter
247
- parallel (on-fail: "ignore"):
248
- session "Charge customer credit card"
249
- session "Ship the product"
250
- session "Send confirmation email"
251
-
252
- session "Order complete!" # But was it really?
253
- ```
254
-
255
- **Why it's bad**: The order might be marked complete even if payment failed.
256
-
257
- **Fix**: Use appropriate failure policy:
258
-
259
- ```prose
260
- # Good: Fail-fast for critical operations
261
- parallel: # Default: fail-fast
262
- payment = session "Charge customer credit card"
263
- inventory = session "Reserve inventory"
264
-
265
- # Only ship if both succeeded
266
- session "Ship the product"
267
- context: { payment, inventory }
268
-
269
- # Email can fail without blocking
270
- try:
271
- session "Send confirmation email"
272
- catch:
273
- session "Queue email for retry"
274
- ```
275
-
276
- #### vague-discretion
277
-
278
- Discretion conditions that are ambiguous or unmeasurable.
279
-
280
- ```prose
281
- # Bad: What does "good enough" mean?
282
- loop until **the output is good enough**:
283
- session "Improve output"
284
-
285
- # Bad: Highly subjective
286
- if **the user will be happy**:
287
- session "Ship it"
288
- ```
289
-
290
- **Why it's bad**: The VM has no clear criteria for evaluation. Results are unpredictable.
291
-
292
- **Fix**: Provide concrete, evaluatable criteria:
293
-
294
- ```prose
295
- # Good: Specific criteria
296
- loop until **all tests pass and code coverage exceeds 80%** (max: 10):
297
- session "Improve test coverage"
298
-
299
- # Good: Observable conditions
300
- if **the response contains valid JSON with all required fields**:
301
- session "Process the response"
302
- ```
303
-
304
- #### catch-and-swallow
305
-
306
- Catching errors without meaningful handling. Hides problems without solving them.
307
-
308
- ```prose
309
- # Bad: Silent swallow
310
- try:
311
- session "Critical operation"
312
- catch:
313
- # Nothing here - error disappears
314
- ```
315
-
316
- **Why it's bad**: Errors vanish. No recovery, no logging, no visibility.
317
-
318
- **Fix**: Handle errors meaningfully:
319
-
320
- ```prose
321
- # Good: Meaningful handling
322
- try:
323
- session "Critical operation"
324
- catch as err:
325
- session "Log error for investigation"
326
- context: err
327
- session "Execute fallback procedure"
328
- # Or rethrow if unrecoverable:
329
- throw
330
- ```
331
-
332
- ---
333
-
334
- ## Cost Antipatterns
335
-
336
- #### opus-for-everything
337
-
338
- Using the most powerful (expensive) model for all tasks, including trivial ones.
339
-
340
- ```prose
341
- # Bad: Opus for simple classification
342
- agent classifier:
343
- model: opus
344
- prompt: "Categorize items as: spam, not-spam"
345
-
346
- # Expensive for a binary classification
347
- for email in emails:
348
- session: classifier
349
- prompt: "Classify: {email}"
350
- ```
351
-
352
- **Why it's bad**: Opus costs significantly more than haiku. Simple tasks don't benefit from advanced reasoning.
353
-
354
- **Fix**: Match model to task complexity:
355
-
356
- ```prose
357
- # Good: Haiku for simple tasks
358
- agent classifier:
359
- model: haiku
360
- prompt: "Categorize items as: spam, not-spam"
361
- ```
362
-
363
- #### context-bloat
364
-
365
- Passing excessive context that the session doesn't need.
366
-
367
- ```prose
368
- # Bad: Passing everything
369
- let full_codebase = session "Read entire codebase"
370
- let all_docs = session "Read all documentation"
371
- let history = session "Get full git history"
372
-
373
- session "Fix the typo in the README"
374
- context: [full_codebase, all_docs, history] # Massive overkill
375
- ```
376
-
377
- **Why it's bad**: Large contexts slow processing, increase costs, and can confuse the model with irrelevant information.
378
-
379
- **Fix**: Pass minimal relevant context:
380
-
381
- ```prose
382
- # Good: Minimal context
383
- let readme = session "Read the README file"
384
-
385
- session "Fix the typo in the README"
386
- context: readme
387
- ```
388
-
389
- #### unnecessary-iteration
390
-
391
- Looping when a single session would suffice.
392
-
393
- ```prose
394
- # Bad: Loop for what could be one call
395
- let items = ["apple", "banana", "cherry"]
396
- for item in items:
397
- session "Describe {item}"
398
- ```
399
-
400
- **Why it's bad**: Three sessions when one could handle all items. Session overhead multiplied.
401
-
402
- **Fix**: Batch when possible:
403
-
404
- ```prose
405
- # Good: Batch processing
406
- let items = ["apple", "banana", "cherry"]
407
- session "Describe each of these items: {items}"
408
- ```
409
-
410
- #### redundant-computation
411
-
412
- Computing the same thing multiple times.
413
-
414
- ```prose
415
- # Bad: Redundant research
416
- session "Research AI safety for security review"
417
- session "Research AI safety for ethics review"
418
- session "Research AI safety for compliance review"
419
- ```
420
-
421
- **Why it's bad**: Same research done three times with slightly different framing.
422
-
423
- **Fix**: Compute once, use many times:
424
-
425
- ```prose
426
- # Good: Compute once
427
- let research = session "Comprehensive research on AI safety"
428
-
429
- parallel:
430
- session "Security review"
431
- context: research
432
- session "Ethics review"
433
- context: research
434
- session "Compliance review"
435
- context: research
436
- ```
437
-
438
- ---
439
-
440
- ## Performance Antipatterns
441
-
442
- #### eager-over-computation
443
-
444
- Computing everything upfront when only some results might be needed.
445
-
446
- ```prose
447
- # Bad: Compute all branches even if only one is needed
448
- parallel:
449
- simple_analysis = session "Simple analysis"
450
- model: haiku
451
- detailed_analysis = session "Detailed analysis"
452
- model: sonnet
453
- deep_analysis = session "Deep analysis"
454
- model: opus
455
-
456
- # Then only use one based on some criterion
457
- choice **appropriate depth**:
458
- option "Simple":
459
- session "Use simple"
460
- context: simple_analysis
461
- option "Detailed":
462
- session "Use detailed"
463
- context: detailed_analysis
464
- option "Deep":
465
- session "Use deep"
466
- context: deep_analysis
467
- ```
468
-
469
- **Why it's bad**: All three analyses run even though only one is used.
470
-
471
- **Fix**: Compute lazily:
472
-
473
- ```prose
474
- # Good: Only compute what's needed
475
- let initial = session "Initial assessment"
476
- model: haiku
477
-
478
- choice **appropriate depth based on initial assessment**:
479
- option "Simple":
480
- session "Simple analysis"
481
- model: haiku
482
- option "Detailed":
483
- session "Detailed analysis"
484
- model: sonnet
485
- option "Deep":
486
- session "Deep analysis"
487
- model: opus
488
- ```
489
-
490
- #### over-parallelization
491
-
492
- Parallelizing so aggressively that overhead dominates or resources are exhausted.
493
-
494
- ```prose
495
- # Bad: 100 parallel sessions
496
- parallel for item in large_collection: # 100 items
497
- session "Process {item}"
498
- ```
499
-
500
- **Why it's bad**: May overwhelm the system. Coordination overhead can exceed parallelism benefits.
501
-
502
- **Fix**: Batch or limit concurrency:
503
-
504
- ```prose
505
- # Good: Process in batches
506
- for batch in batches(large_collection, 10):
507
- parallel for item in batch:
508
- session "Process {item}"
509
- ```
510
-
511
- #### premature-parallelization
512
-
513
- Parallelizing tiny tasks where sequential would be simpler and fast enough.
514
-
515
- ```prose
516
- # Bad: Parallel overkill for simple tasks
517
- parallel:
518
- a = session "Add 2 + 2"
519
- b = session "Add 3 + 3"
520
- c = session "Add 4 + 4"
521
- ```
522
-
523
- **Why it's bad**: Coordination overhead exceeds task time. Sequential would be simpler and possibly faster.
524
-
525
- **Fix**: Keep it simple:
526
-
527
- ```prose
528
- # Good: Sequential for trivial tasks
529
- session "Add 2+2, 3+3, and 4+4"
530
- ```
531
-
532
- #### synchronous-fire-and-forget
533
-
534
- Waiting for operations whose results you don't need.
535
-
536
- ```prose
537
- # Bad: Waiting for logging
538
- session "Do important work"
539
- session "Log the result" # Don't need to wait for this
540
- session "Continue with next important work"
541
- ```
542
-
543
- **Why it's bad**: Main workflow blocked by non-critical operation.
544
-
545
- **Fix**: Use appropriate patterns for fire-and-forget operations, or batch logging:
546
-
547
- ```prose
548
- # Better: Batch non-critical work
549
- session "Do important work"
550
- session "Continue with next important work"
551
- # ... more important work ...
552
-
553
- # Log everything at the end or async
554
- session "Log all operations"
555
- ```
556
-
557
- ---
558
-
559
- ## Maintainability Antipatterns
560
-
561
- #### magic-strings
562
-
563
- Hardcoded prompts repeated throughout the program.
564
-
565
- ```prose
566
- # Bad: Same prompt in multiple places
567
- session "You are a helpful assistant. Analyze this code for bugs."
568
- # ... later ...
569
- session "You are a helpful assistant. Analyze this code for bugs."
570
- # ... even later ...
571
- session "You are a helpful assistent. Analyze this code for bugs." # Typo!
572
- ```
573
-
574
- **Why it's bad**: Inconsistency when updating. Typos go unnoticed.
575
-
576
- **Fix**: Use agents:
577
-
578
- ```prose
579
- # Good: Single source of truth
580
- agent code-analyst:
581
- model: sonnet
582
- prompt: "You are a helpful assistant. Analyze code for bugs."
583
-
584
- session: code-analyst
585
- prompt: "Analyze the auth module"
586
- session: code-analyst
587
- prompt: "Analyze the payment module"
588
- ```
589
-
590
- #### opaque-workflow
591
-
592
- No structure or comments indicating what's happening.
593
-
594
- ```prose
595
- # Bad: What is this doing?
596
- let x = session "A"
597
- let y = session "B"
598
- context: x
599
- parallel:
600
- z = session "C"
601
- context: y
602
- w = session "D"
603
- session "E"
604
- context: [z, w]
605
- ```
606
-
607
- **Why it's bad**: Impossible to understand, debug, or modify.
608
-
609
- **Fix**: Use meaningful names and structure:
610
-
611
- ```prose
612
- # Good: Clear intent
613
- # Phase 1: Research
614
- let research = session "Gather background information"
615
-
616
- # Phase 2: Analysis
617
- let analysis = session "Analyze research findings"
618
- context: research
619
-
620
- # Phase 3: Parallel evaluation
621
- parallel:
622
- technical_eval = session "Technical feasibility assessment"
623
- context: analysis
624
- business_eval = session "Business viability assessment"
625
- context: analysis
626
-
627
- # Phase 4: Synthesis
628
- session "Create final recommendation"
629
- context: { technical_eval, business_eval }
630
- ```
631
-
632
- #### implicit-dependencies
633
-
634
- Relying on conversation history rather than explicit context.
635
-
636
- ```prose
637
- # Bad: Implicit state
638
- session "Set the project name to Acme"
639
- session "Set the deadline to Friday"
640
- session "Now create a project plan" # Hopes previous info is remembered
641
- ```
642
-
643
- **Why it's bad**: Relies on VM implementation details. Fragile across refactoring.
644
-
645
- **Fix**: Explicit context:
646
-
647
- ```prose
648
- # Good: Explicit state
649
- let config = session "Define project: name=Acme, deadline=Friday"
650
-
651
- session "Create a project plan"
652
- context: config
653
- ```
654
-
655
- #### mixed-concerns-agent
656
-
657
- Agents with prompts that cover too many responsibilities.
658
-
659
- ```prose
660
- # Bad: Jack of all trades
661
- agent super-agent:
662
- model: opus
663
- prompt: """
664
- You are an expert in:
665
- - Security analysis
666
- - Performance optimization
667
- - Code review
668
- - Documentation
669
- - Testing
670
- - DevOps
671
- - Project management
672
- - Customer communication
673
- When asked, perform any of these tasks.
674
- """
675
- ```
676
-
677
- **Why it's bad**: No focus means mediocre results across the board. Can't optimize model choice.
678
-
679
- **Fix**: Specialized agents:
680
-
681
- ```prose
682
- # Good: Focused expertise
683
- agent security-expert:
684
- model: sonnet
685
- prompt: "You are a security analyst. Focus only on security concerns."
686
-
687
- agent performance-expert:
688
- model: sonnet
689
- prompt: "You are a performance engineer. Focus only on optimization."
690
-
691
- agent technical-writer:
692
- model: haiku
693
- prompt: "You write clear technical documentation."
694
- ```
695
-
696
- ---
697
-
698
- ## Logic Antipatterns
699
-
700
- #### infinite-refinement
701
-
702
- Loops that can never satisfy their exit condition.
703
-
704
- ```prose
705
- # Bad: Perfection is impossible
706
- loop until **the code has zero bugs**:
707
- session "Find and fix bugs"
708
- ```
709
-
710
- **Why it's bad**: Zero bugs is unachievable. Loop runs until max (if specified) or forever.
711
-
712
- **Fix**: Use achievable conditions:
713
-
714
- ```prose
715
- # Good: Achievable condition
716
- loop until **all known bugs are fixed** (max: 20):
717
- session "Find and fix the next bug"
718
-
719
- # Or: Diminishing returns
720
- loop until **no significant bugs found in last iteration** (max: 10):
721
- session "Search for bugs"
722
- ```
723
-
724
- #### assertion-as-action
725
-
726
- Using conditions as actions—checking something without acting on the result.
727
-
728
- ```prose
729
- # Bad: Check but don't use result
730
- session "Check if the system is healthy"
731
- session "Deploy to production" # Deploys regardless!
732
- ```
733
-
734
- **Why it's bad**: The health check result isn't used. Deploy happens unconditionally.
735
-
736
- **Fix**: Use conditional execution:
737
-
738
- ```prose
739
- # Good: Act on the check
740
- let health = session "Check if the system is healthy"
741
-
742
- if **system is healthy**:
743
- session "Deploy to production"
744
- else:
745
- session "Alert on-call and skip deployment"
746
- context: health
747
- ```
748
-
749
- #### false-parallelism
750
-
751
- Putting sequential-dependent operations in a parallel block.
752
-
753
- ```prose
754
- # Bad: These aren't independent!
755
- parallel:
756
- data = session "Fetch data"
757
- processed = session "Process the data" # Needs data!
758
- context: data
759
- stored = session "Store processed data" # Needs processed!
760
- context: processed
761
- ```
762
-
763
- **Why it's bad**: Despite being in parallel, these must run sequentially due to dependencies.
764
-
765
- **Fix**: Be honest about dependencies:
766
-
767
- ```prose
768
- # Good: Sequential where needed
769
- let data = session "Fetch data"
770
- let processed = session "Process the data"
771
- context: data
772
- session "Store processed data"
773
- context: processed
774
- ```
775
-
776
- #### exception-as-flow-control
777
-
778
- Using try/catch for expected conditions rather than exceptional errors.
779
-
780
- ```prose
781
- # Bad: Exceptions for normal flow
782
- try:
783
- session "Find the optional config file"
784
- catch:
785
- session "Use default configuration"
786
- ```
787
-
788
- **Why it's bad**: Missing config is expected, not exceptional. Obscures actual errors.
789
-
790
- **Fix**: Use conditionals for expected cases:
791
-
792
- ```prose
793
- # Good: Conditional for expected case
794
- let config_exists = session "Check if config file exists"
795
-
796
- if **config file exists**:
797
- session "Load configuration from file"
798
- else:
799
- session "Use default configuration"
800
- ```
801
-
802
- #### excessive-user-checkpoints
803
-
804
- Prompting the user for decisions that have obvious or predictable answers.
805
-
806
- ```prose
807
- # Antipattern: Asking the obvious
808
- input "Blocking error detected. Investigate?" # Always yes
809
- input "Diagnosis complete. Proceed to triage?" # Always yes
810
- input "Tests pass. Deploy?" # Almost always yes
811
- ```
812
-
813
- **Why it's bad**: Each checkpoint is a round-trip waiting for user input. If the answer is predictable 90% of the time, you're adding latency for no value.
814
-
815
- **Fix**: Auto-proceed for obvious cases, only prompt when genuinely ambiguous:
816
-
817
- ```prose
818
- # Good: Auto-proceed with escape hatches for edge cases
819
- if observation.blocking_error:
820
- # Auto-investigate (don't ask - of course we investigate errors)
821
- let diagnosis = do investigate(...)
822
-
823
- # Only ask if genuinely ambiguous
824
- if diagnosis.confidence == "low":
825
- input "Low confidence diagnosis. Proceed anyway?"
826
-
827
- # Auto-deploy if tests pass (but log for audit)
828
- if fix.tests_pass:
829
- do deploy(...)
830
- ```
831
-
832
- **When checkpoints ARE right**: Irreversible actions (production deployments to critical systems), expensive operations (long-running jobs), or genuine decision points where the user's preference isn't predictable.
833
-
834
- #### fixed-observation-window
835
-
836
- Waiting for a predetermined duration when the signal arrived early.
837
-
838
- ```prose
839
- # Antipattern: Fixed window regardless of findings
840
- loop 30 times (wait: 2s each): # Always 60 seconds
841
- resume: observer
842
- prompt: "Keep watching the stream"
843
- # Runs all 30 iterations even if blocking error detected on iteration 1
844
- ```
845
-
846
- **Why it's bad**: Wastes time when the answer is already known. If the observer detected a fatal error at +5 seconds, why wait another 55 seconds?
847
-
848
- **Fix**: Use signal-driven exit conditions:
849
-
850
- ```prose
851
- # Good: Exit on significant signal
852
- loop until **blocking error OR completion** (max: 30):
853
- resume: observer
854
- prompt: "Watch the stream. Signal IMMEDIATELY on blocking errors."
855
- # Exits as soon as something significant happens
856
- ```
857
-
858
- Or use `early_exit` if your runtime supports it:
859
-
860
- ```prose
861
- # Good: Explicit early exit
862
- let observation = session: observer
863
- prompt: "Monitor for errors. Signal immediately if found."
864
- timeout: 120s
865
- early_exit: **blocking_error detected**
866
- ```
867
-
868
- ---
869
-
870
- ## Security Antipatterns
871
-
872
- #### unvalidated-input
873
-
874
- Passing external input directly to sessions without validation.
875
-
876
- ```prose
877
- # Bad: Direct injection
878
- let user_input = external_source
879
-
880
- session "Execute this command: {user_input}"
881
- ```
882
-
883
- **Why it's bad**: User could inject malicious prompts or commands.
884
-
885
- **Fix**: Validate and sanitize:
886
-
887
- ```prose
888
- # Good: Validate first
889
- let user_input = external_source
890
- let validated = session "Validate this input is a safe search query"
891
- context: user_input
892
-
893
- if **input is valid and safe**:
894
- session "Search for: {validated}"
895
- else:
896
- throw "Invalid input rejected"
897
- ```
898
-
899
- #### overprivileged-agents
900
-
901
- Agents with more permissions than they need.
902
-
903
- ```prose
904
- # Bad: Full access for simple task
905
- agent file-reader:
906
- permissions:
907
- read: ["**/*"]
908
- write: ["**/*"]
909
- bash: allow
910
- network: allow
911
-
912
- session: file-reader
913
- prompt: "Read the README.md file"
914
- ```
915
-
916
- **Why it's bad**: Task only needs to read one file but has full system access.
917
-
918
- **Fix**: Least privilege:
919
-
920
- ```prose
921
- # Good: Minimal permissions
922
- agent file-reader:
923
- permissions:
924
- read: ["README.md"]
925
- write: []
926
- bash: deny
927
- network: deny
928
- ```
929
-
930
- ---
931
-
932
- ## Summary
933
-
934
- Antipatterns emerge from:
935
-
936
- 1. **Laziness**: Copy-paste instead of abstraction, implicit instead of explicit
937
- 2. **Over-engineering**: Parallelizing everything, using opus for all tasks
938
- 3. **Under-engineering**: No error handling, unbounded loops, vague conditions
939
- 4. **Unclear thinking**: God sessions, mixed concerns, spaghetti context
940
-
941
- When reviewing OpenProse programs, ask:
942
-
943
- - Can independent work be parallelized?
944
- - Are loops bounded?
945
- - Are errors handled?
946
- - Is context minimal and explicit?
947
- - Are models matched to task complexity?
948
- - Are agents focused and reusable?
949
- - Would a stranger understand this code?
950
-
951
- Fix antipatterns early. They compound over time into unmaintainable systems.