@prismer/runtime 2.0.8 → 2.2.63

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 (633) hide show
  1. package/CHANGELOG.md +4004 -0
  2. package/README.md +34 -12
  3. package/apc/skills/FIELD-DICTIONARY.md +111 -0
  4. package/apc/skills/bug-reproduce/SKILL.md +150 -0
  5. package/apc/skills/bug-reproduce/skill.json +96 -0
  6. package/apc/skills/code-review/SKILL.md +198 -0
  7. package/apc/skills/code-review/skill.json +124 -0
  8. package/apc/skills/design-review/SKILL.md +122 -0
  9. package/apc/skills/design-review/skill.json +88 -0
  10. package/apc/skills/doc-sync/SKILL.md +168 -0
  11. package/apc/skills/doc-sync/skill.json +81 -0
  12. package/apc/skills/env-doctor/SKILL.md +194 -0
  13. package/apc/skills/env-doctor/skill.json +209 -0
  14. package/apc/skills/git-ops/SKILL.md +189 -0
  15. package/apc/skills/git-ops/skill.json +94 -0
  16. package/apc/skills/impact-trace/SKILL.md +168 -0
  17. package/apc/skills/impact-trace/skill.json +104 -0
  18. package/apc/skills/observability/SKILL.md +195 -0
  19. package/apc/skills/observability/skill.json +116 -0
  20. package/apc/skills/release-db-config-sync/SKILL.md +186 -0
  21. package/apc/skills/release-db-config-sync/skill.json +109 -0
  22. package/apc/skills/release-ota-promote/SKILL.md +195 -0
  23. package/apc/skills/release-ota-promote/skill.json +176 -0
  24. package/apc/skills/release-preflight/SKILL.md +174 -0
  25. package/apc/skills/release-preflight/skill.json +175 -0
  26. package/apc/skills/release-rollback/SKILL.md +214 -0
  27. package/apc/skills/release-rollback/skill.json +230 -0
  28. package/apc/skills/release-tag/SKILL.md +194 -0
  29. package/apc/skills/release-tag/skill.json +94 -0
  30. package/apc/skills/releasing-prod/SKILL.md +49 -0
  31. package/apc/skills/releasing-test/SKILL.md +144 -0
  32. package/apc/skills/sdk-release/SKILL.md +200 -0
  33. package/apc/skills/spec-intake/SKILL.md +169 -0
  34. package/apc/skills/spec-intake/skill.json +93 -0
  35. package/apc/skills/test-result-feedback/SKILL.md +239 -0
  36. package/apc/skills/test-result-feedback/skill.json +193 -0
  37. package/apc/skills/test-runner/SKILL.md +169 -0
  38. package/apc/skills/test-runner/skill.json +103 -0
  39. package/apc/skills/ui-align/SKILL.md +209 -0
  40. package/apc/skills/ui-align/skill.json +114 -0
  41. package/apc/skills/ui-canvas/SKILL.md +148 -0
  42. package/apc/skills/ui-canvas/skill.json +127 -0
  43. package/built-in-skills/agent-coordination/SKILL.md +77 -38
  44. package/built-in-skills/agent-meta/SKILL.md +12 -0
  45. package/built-in-skills/assets/SKILL.md +9 -7
  46. package/built-in-skills/browser-use/SKILL.md +93 -0
  47. package/built-in-skills/canvas-design/SKILL.md +4 -3
  48. package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-OFL.txt +93 -0
  49. package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-OFL.txt +93 -0
  50. package/built-in-skills/canvas-design/canvas-fonts/LICENSE-SOURCES.md +16 -0
  51. package/built-in-skills/claim-agent-ownership/SKILL.md +10 -5
  52. package/built-in-skills/claude-api/SKILL.md +2 -1
  53. package/built-in-skills/claude-api/python/claude-api/README.md +2 -2
  54. package/built-in-skills/claude-api/python/claude-api/tool-use.md +9 -5
  55. package/built-in-skills/claude-api/python/managed-agents/README.md +11 -1
  56. package/built-in-skills/claude-api/shared/error-codes.md +4 -4
  57. package/built-in-skills/claude-api/shared/managed-agents-client-patterns.md +4 -2
  58. package/built-in-skills/claude-api/shared/managed-agents-core.md +1 -2
  59. package/built-in-skills/claude-api/shared/managed-agents-events.md +41 -22
  60. package/built-in-skills/claude-api/shared/managed-agents-multiagent.md +5 -3
  61. package/built-in-skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +1 -1
  62. package/built-in-skills/claude-api/shared/managed-agents-tools.md +2 -3
  63. package/built-in-skills/claude-api/shared/model-migration.md +3 -3
  64. package/built-in-skills/claude-api/shared/models.md +1 -1
  65. package/built-in-skills/claude-api/typescript/claude-api/batches.md +1 -1
  66. package/built-in-skills/claude-api/typescript/claude-api/files-api.md +3 -1
  67. package/built-in-skills/claude-api/typescript/claude-api/tool-use.md +8 -2
  68. package/built-in-skills/claude-api/typescript/managed-agents/README.md +8 -2
  69. package/built-in-skills/codebase-design/DEEPENING.md +37 -0
  70. package/built-in-skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  71. package/built-in-skills/codebase-design/LICENSE +21 -0
  72. package/built-in-skills/codebase-design/SKILL.md +130 -0
  73. package/built-in-skills/codebase-design/references/requesting-code-review/GUIDE.md +291 -0
  74. package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE +21 -0
  75. package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE.superpowers +21 -0
  76. package/built-in-skills/codebase-design/references/requesting-code-review/NOTICE.md +37 -0
  77. package/built-in-skills/codebase-design/references/sdlc-review/GUIDE.md +130 -0
  78. package/built-in-skills/codebase-design/references/sdlc-review/LICENSE +21 -0
  79. package/built-in-skills/codebase-design/references/sdlc-review/NOTICE.md +17 -0
  80. package/built-in-skills/codebase-design/references/simplify-code/GUIDE.md +269 -0
  81. package/built-in-skills/codebase-design/references/simplify-code/LICENSE +21 -0
  82. package/built-in-skills/codebase-design/references/simplify-code/NOTICE.md +37 -0
  83. package/built-in-skills/competitor-intelligence/LICENSE +21 -0
  84. package/built-in-skills/competitor-intelligence/NOTICE.md +6 -0
  85. package/built-in-skills/competitor-intelligence/SKILL.md +125 -0
  86. package/built-in-skills/competitor-intelligence/scripts/watch_state.py +160 -0
  87. package/built-in-skills/conversation-compaction/SKILL.md +117 -0
  88. package/built-in-skills/council-creator/SKILL.md +427 -0
  89. package/built-in-skills/diagnosing-bugs/LICENSE +21 -0
  90. package/built-in-skills/diagnosing-bugs/SKILL.md +148 -0
  91. package/built-in-skills/diagnosing-bugs/references/desktop-dom/GUIDE.md +64 -0
  92. package/built-in-skills/diagnosing-bugs/references/desktop-dom/LICENSE +21 -0
  93. package/built-in-skills/diagnosing-bugs/references/desktop-dom/NOTICE.md +17 -0
  94. package/built-in-skills/diagnosing-bugs/references/systematic-debugging/GUIDE.md +410 -0
  95. package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE +21 -0
  96. package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE.superpowers +21 -0
  97. package/built-in-skills/diagnosing-bugs/references/systematic-debugging/NOTICE.md +37 -0
  98. package/built-in-skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  99. package/built-in-skills/doc-coauthoring/SKILL.md +7 -0
  100. package/built-in-skills/doc-coauthoring/references/humanizer/GUIDE.md +647 -0
  101. package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE +21 -0
  102. package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE.hermes +21 -0
  103. package/built-in-skills/doc-coauthoring/references/humanizer/PROVENANCE.md +7 -0
  104. package/built-in-skills/document-actions/LICENSE +21 -0
  105. package/built-in-skills/document-actions/NOTICE.md +21 -0
  106. package/built-in-skills/document-actions/SKILL.md +46 -0
  107. package/built-in-skills/domain-modeling/ADR-FORMAT.md +47 -0
  108. package/built-in-skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  109. package/built-in-skills/domain-modeling/LICENSE +21 -0
  110. package/built-in-skills/domain-modeling/SKILL.md +76 -0
  111. package/built-in-skills/evidence-citations/LICENSE +21 -0
  112. package/built-in-skills/evidence-citations/NOTICE.md +21 -0
  113. package/built-in-skills/evidence-citations/SKILL.md +46 -0
  114. package/built-in-skills/evidence-citations/references/citation-formats.md +68 -0
  115. package/built-in-skills/evidence-citations/references/grounding-rationale.md +64 -0
  116. package/built-in-skills/evidence-citations/scripts/sources.py +720 -0
  117. package/built-in-skills/frontend-design/SKILL.md +7 -0
  118. package/built-in-skills/frontend-design/references/claude-design/GUIDE.md +650 -0
  119. package/built-in-skills/frontend-design/references/claude-design/LICENSE +21 -0
  120. package/built-in-skills/frontend-design/references/claude-design/LICENSE.hermes +21 -0
  121. package/built-in-skills/frontend-design/references/claude-design/PROVENANCE.md +7 -0
  122. package/built-in-skills/human-approval/SKILL.md +17 -2
  123. package/built-in-skills/image-generate/SKILL.md +107 -301
  124. package/built-in-skills/image-generate/scripts/generate-and-deliver.mjs +310 -0
  125. package/built-in-skills/ingest/SKILL.md +13 -45
  126. package/built-in-skills/internal-comms/SKILL.md +1 -0
  127. package/built-in-skills/liteparse/SKILL.md +130 -110
  128. package/built-in-skills/mcp-builder/SKILL.md +1 -0
  129. package/built-in-skills/mcp-builder/reference/evaluation.md +11 -2
  130. package/built-in-skills/mcp-builder/reference/node_mcp_server.md +34 -5
  131. package/built-in-skills/mcp-builder/reference/python_mcp_server.md +6 -2
  132. package/built-in-skills/mcp-builder/scripts/connections.py +1 -1
  133. package/built-in-skills/mcp-builder/scripts/evaluation.py +52 -34
  134. package/built-in-skills/mcp-builder/scripts/requirements.txt +2 -2
  135. package/built-in-skills/meeting-actions/LICENSE +21 -0
  136. package/built-in-skills/meeting-actions/NOTICE.md +21 -0
  137. package/built-in-skills/meeting-actions/SKILL.md +48 -0
  138. package/built-in-skills/memory/SKILL.md +444 -55
  139. package/built-in-skills/memory/references/llm-wiki/GUIDE.md +468 -0
  140. package/built-in-skills/memory/references/llm-wiki/LICENSE +21 -0
  141. package/built-in-skills/memory/references/llm-wiki/NOTICE.md +4 -0
  142. package/built-in-skills/memory/references/llm-wiki/scripts/lint_wiki.py +84 -0
  143. package/built-in-skills/memory/references/llm-wiki/scripts/requirements.txt +1 -0
  144. package/built-in-skills/memory/references/llm-wiki/templates/SCHEMA.md +19 -0
  145. package/built-in-skills/memory/references/llm-wiki/templates/index.md +9 -0
  146. package/built-in-skills/memory/references/llm-wiki/templates/log.md +4 -0
  147. package/built-in-skills/memory-dream/SKILL.md +332 -0
  148. package/built-in-skills/memory-import/SKILL.md +51 -0
  149. package/built-in-skills/office-artifacts/NOTICE.md +15 -0
  150. package/built-in-skills/office-artifacts/SKILL.md +37 -4
  151. package/built-in-skills/office-artifacts/references/RESOURCE-LIMITS.md +44 -0
  152. package/built-in-skills/office-artifacts/references/document-generation/GUIDE.md +105 -0
  153. package/built-in-skills/office-artifacts/references/docx/GUIDE.md +196 -0
  154. package/built-in-skills/office-artifacts/references/docx/LICENSE +21 -0
  155. package/built-in-skills/office-artifacts/references/docx/NOTICE.md +21 -0
  156. package/built-in-skills/office-artifacts/references/docx/references/revisions-and-comments.md +88 -0
  157. package/built-in-skills/office-artifacts/references/docx/scripts/docx_comments.py +292 -0
  158. package/built-in-skills/office-artifacts/references/docx/scripts/docx_common.py +93 -0
  159. package/built-in-skills/office-artifacts/references/docx/scripts/docx_create.py +177 -0
  160. package/built-in-skills/office-artifacts/references/docx/scripts/docx_edit.py +250 -0
  161. package/built-in-skills/office-artifacts/references/docx/scripts/docx_read.py +169 -0
  162. package/built-in-skills/office-artifacts/references/docx/scripts/docx_revisions.py +149 -0
  163. package/built-in-skills/office-artifacts/references/docx/scripts/docx_template.py +70 -0
  164. package/built-in-skills/office-artifacts/references/docx/scripts/docx_validate.py +155 -0
  165. package/built-in-skills/office-artifacts/references/docx/tests/test_docx_skill.py +525 -0
  166. package/built-in-skills/office-artifacts/references/pdf/GUIDE.md +125 -0
  167. package/built-in-skills/office-artifacts/references/pdf/LICENSE +21 -0
  168. package/built-in-skills/office-artifacts/references/pdf/NOTICE.md +21 -0
  169. package/built-in-skills/office-artifacts/references/pdf/references/forms.md +99 -0
  170. package/built-in-skills/office-artifacts/references/pdf/references/nano-pdf-editing.md +40 -0
  171. package/built-in-skills/office-artifacts/references/pdf/references/ocr-extraction.md +165 -0
  172. package/built-in-skills/office-artifacts/references/pdf/scripts/_raster.py +87 -0
  173. package/built-in-skills/office-artifacts/references/pdf/scripts/extract_marker.py +95 -0
  174. package/built-in-skills/office-artifacts/references/pdf/scripts/extract_pymupdf.py +107 -0
  175. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_create.py +153 -0
  176. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_fill_form.py +97 -0
  177. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_form_layout.py +168 -0
  178. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_make_form.py +145 -0
  179. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_merge.py +50 -0
  180. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_meta.py +123 -0
  181. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_page_image.py +101 -0
  182. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_read.py +153 -0
  183. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_secure.py +71 -0
  184. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_split.py +86 -0
  185. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_stamp.py +145 -0
  186. package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_watermark.py +51 -0
  187. package/built-in-skills/office-artifacts/references/pdf/tests/test_pdf_skill.py +414 -0
  188. package/built-in-skills/office-artifacts/references/powerpoint/GUIDE.md +220 -0
  189. package/built-in-skills/office-artifacts/references/powerpoint/LICENSE +21 -0
  190. package/built-in-skills/office-artifacts/references/powerpoint/NOTICE.md +21 -0
  191. package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_create.py +214 -0
  192. package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_edit.py +442 -0
  193. package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_from_template.py +88 -0
  194. package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_read.py +131 -0
  195. package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_render.py +104 -0
  196. package/built-in-skills/office-artifacts/references/powerpoint/tests/test_powerpoint_skill.py +478 -0
  197. package/built-in-skills/office-artifacts/references/xlsx/GUIDE.md +196 -0
  198. package/built-in-skills/office-artifacts/references/xlsx/LICENSE +21 -0
  199. package/built-in-skills/office-artifacts/references/xlsx/NOTICE.md +21 -0
  200. package/built-in-skills/office-artifacts/references/xlsx/references/restructuring.md +74 -0
  201. package/built-in-skills/office-artifacts/references/xlsx/scripts/csv_to_xlsx.py +108 -0
  202. package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_create.py +259 -0
  203. package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_edit.py +269 -0
  204. package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_read.py +160 -0
  205. package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_recalc.py +111 -0
  206. package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_restructure.py +418 -0
  207. package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_to_csv.py +69 -0
  208. package/built-in-skills/office-artifacts/references/xlsx/tests/test_xlsx_skill.py +542 -0
  209. package/built-in-skills/office-artifacts/tests/test_resource_regressions.py +272 -0
  210. package/built-in-skills/okr/SKILL.md +154 -0
  211. package/built-in-skills/persona/SKILL.md +81 -0
  212. package/built-in-skills/persona-generator/SKILL.md +296 -0
  213. package/built-in-skills/pkf-svg/SKILL.md +258 -0
  214. package/built-in-skills/pkf-svg/references/architecture-diagram/GUIDE.md +148 -0
  215. package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE +21 -0
  216. package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE.hermes +21 -0
  217. package/built-in-skills/pkf-svg/references/architecture-diagram/PROVENANCE.md +7 -0
  218. package/built-in-skills/pkf-svg/references/architecture-diagram/templates/template.html +345 -0
  219. package/built-in-skills/pkf-writing/SKILL.md +258 -0
  220. package/built-in-skills/prismer-airtable/LICENSE +21 -0
  221. package/built-in-skills/prismer-airtable/NOTICE.md +11 -0
  222. package/built-in-skills/prismer-airtable/SKILL.md +248 -0
  223. package/built-in-skills/prismer-airtable/scripts/airtable_client.py +76 -0
  224. package/built-in-skills/prismer-apple-notes/LICENSE +21 -0
  225. package/built-in-skills/prismer-apple-notes/NOTICE.md +17 -0
  226. package/built-in-skills/prismer-apple-notes/SKILL.md +118 -0
  227. package/built-in-skills/prismer-apple-notes/scripts/readiness.py +47 -0
  228. package/built-in-skills/prismer-apple-reminders/LICENSE +21 -0
  229. package/built-in-skills/prismer-apple-reminders/NOTICE.md +17 -0
  230. package/built-in-skills/prismer-apple-reminders/SKILL.md +155 -0
  231. package/built-in-skills/prismer-apple-reminders/scripts/readiness.py +47 -0
  232. package/built-in-skills/prismer-ascii-video/LICENSE +21 -0
  233. package/built-in-skills/prismer-ascii-video/LICENSE.hermes +21 -0
  234. package/built-in-skills/prismer-ascii-video/PROVENANCE.md +7 -0
  235. package/built-in-skills/prismer-ascii-video/README.md +290 -0
  236. package/built-in-skills/prismer-ascii-video/SKILL.md +252 -0
  237. package/built-in-skills/prismer-ascii-video/provenance/category-DESCRIPTION.md +3 -0
  238. package/built-in-skills/prismer-ascii-video/references/architecture.md +807 -0
  239. package/built-in-skills/prismer-ascii-video/references/composition.md +900 -0
  240. package/built-in-skills/prismer-ascii-video/references/effects.md +1877 -0
  241. package/built-in-skills/prismer-ascii-video/references/inputs.md +693 -0
  242. package/built-in-skills/prismer-ascii-video/references/optimization.md +688 -0
  243. package/built-in-skills/prismer-ascii-video/references/scenes.md +1018 -0
  244. package/built-in-skills/prismer-ascii-video/references/shaders.md +1408 -0
  245. package/built-in-skills/prismer-ascii-video/references/troubleshooting.md +360 -0
  246. package/built-in-skills/prismer-baoyu-infographic/LICENSE +21 -0
  247. package/built-in-skills/prismer-baoyu-infographic/LICENSE.hermes +21 -0
  248. package/built-in-skills/prismer-baoyu-infographic/LICENSE.origin +21 -0
  249. package/built-in-skills/prismer-baoyu-infographic/PORT_NOTES.md +37 -0
  250. package/built-in-skills/prismer-baoyu-infographic/PROVENANCE.md +7 -0
  251. package/built-in-skills/prismer-baoyu-infographic/SKILL.md +240 -0
  252. package/built-in-skills/prismer-baoyu-infographic/references/analysis-framework.md +182 -0
  253. package/built-in-skills/prismer-baoyu-infographic/references/base-prompt.md +43 -0
  254. package/built-in-skills/prismer-baoyu-infographic/references/layouts/bento-grid.md +41 -0
  255. package/built-in-skills/prismer-baoyu-infographic/references/layouts/binary-comparison.md +48 -0
  256. package/built-in-skills/prismer-baoyu-infographic/references/layouts/bridge.md +41 -0
  257. package/built-in-skills/prismer-baoyu-infographic/references/layouts/circular-flow.md +41 -0
  258. package/built-in-skills/prismer-baoyu-infographic/references/layouts/comic-strip.md +41 -0
  259. package/built-in-skills/prismer-baoyu-infographic/references/layouts/comparison-matrix.md +41 -0
  260. package/built-in-skills/prismer-baoyu-infographic/references/layouts/dashboard.md +41 -0
  261. package/built-in-skills/prismer-baoyu-infographic/references/layouts/dense-modules.md +72 -0
  262. package/built-in-skills/prismer-baoyu-infographic/references/layouts/funnel.md +41 -0
  263. package/built-in-skills/prismer-baoyu-infographic/references/layouts/hierarchical-layers.md +48 -0
  264. package/built-in-skills/prismer-baoyu-infographic/references/layouts/hub-spoke.md +41 -0
  265. package/built-in-skills/prismer-baoyu-infographic/references/layouts/iceberg.md +41 -0
  266. package/built-in-skills/prismer-baoyu-infographic/references/layouts/isometric-map.md +41 -0
  267. package/built-in-skills/prismer-baoyu-infographic/references/layouts/jigsaw.md +41 -0
  268. package/built-in-skills/prismer-baoyu-infographic/references/layouts/linear-progression.md +48 -0
  269. package/built-in-skills/prismer-baoyu-infographic/references/layouts/periodic-table.md +41 -0
  270. package/built-in-skills/prismer-baoyu-infographic/references/layouts/story-mountain.md +41 -0
  271. package/built-in-skills/prismer-baoyu-infographic/references/layouts/structural-breakdown.md +48 -0
  272. package/built-in-skills/prismer-baoyu-infographic/references/layouts/tree-branching.md +41 -0
  273. package/built-in-skills/prismer-baoyu-infographic/references/layouts/venn-diagram.md +41 -0
  274. package/built-in-skills/prismer-baoyu-infographic/references/layouts/winding-roadmap.md +41 -0
  275. package/built-in-skills/prismer-baoyu-infographic/references/structured-content-template.md +244 -0
  276. package/built-in-skills/prismer-baoyu-infographic/references/styles/aged-academia.md +36 -0
  277. package/built-in-skills/prismer-baoyu-infographic/references/styles/bold-graphic.md +36 -0
  278. package/built-in-skills/prismer-baoyu-infographic/references/styles/chalkboard.md +61 -0
  279. package/built-in-skills/prismer-baoyu-infographic/references/styles/claymation.md +29 -0
  280. package/built-in-skills/prismer-baoyu-infographic/references/styles/corporate-memphis.md +29 -0
  281. package/built-in-skills/prismer-baoyu-infographic/references/styles/craft-handmade.md +44 -0
  282. package/built-in-skills/prismer-baoyu-infographic/references/styles/cyberpunk-neon.md +29 -0
  283. package/built-in-skills/prismer-baoyu-infographic/references/styles/hand-drawn-edu.md +63 -0
  284. package/built-in-skills/prismer-baoyu-infographic/references/styles/ikea-manual.md +29 -0
  285. package/built-in-skills/prismer-baoyu-infographic/references/styles/kawaii.md +29 -0
  286. package/built-in-skills/prismer-baoyu-infographic/references/styles/knolling.md +29 -0
  287. package/built-in-skills/prismer-baoyu-infographic/references/styles/lego-brick.md +29 -0
  288. package/built-in-skills/prismer-baoyu-infographic/references/styles/morandi-journal.md +60 -0
  289. package/built-in-skills/prismer-baoyu-infographic/references/styles/origami.md +29 -0
  290. package/built-in-skills/prismer-baoyu-infographic/references/styles/pixel-art.md +29 -0
  291. package/built-in-skills/prismer-baoyu-infographic/references/styles/pop-laboratory.md +48 -0
  292. package/built-in-skills/prismer-baoyu-infographic/references/styles/retro-pop-grid.md +47 -0
  293. package/built-in-skills/prismer-baoyu-infographic/references/styles/storybook-watercolor.md +29 -0
  294. package/built-in-skills/prismer-baoyu-infographic/references/styles/subway-map.md +29 -0
  295. package/built-in-skills/prismer-baoyu-infographic/references/styles/technical-schematic.md +36 -0
  296. package/built-in-skills/prismer-baoyu-infographic/references/styles/ui-wireframe.md +29 -0
  297. package/built-in-skills/prismer-blocked-page-recovery/LICENSE +21 -0
  298. package/built-in-skills/prismer-blocked-page-recovery/NOTICE.md +17 -0
  299. package/built-in-skills/prismer-blocked-page-recovery/SKILL.md +158 -0
  300. package/built-in-skills/prismer-blocked-page-recovery/scripts/recover_page.py +311 -0
  301. package/built-in-skills/prismer-box/LICENSE +21 -0
  302. package/built-in-skills/prismer-box/NOTICE.md +11 -0
  303. package/built-in-skills/prismer-box/SKILL.md +147 -0
  304. package/built-in-skills/prismer-box/references/bulk-operations.md +43 -0
  305. package/built-in-skills/prismer-box/references/cli-guide.md +133 -0
  306. package/built-in-skills/prismer-box/references/content-workflows.md +86 -0
  307. package/built-in-skills/prismer-box/references/hubs.md +77 -0
  308. package/built-in-skills/prismer-box/references/oauth-setup.md +92 -0
  309. package/built-in-skills/prismer-box/references/rest-api.md +37 -0
  310. package/built-in-skills/prismer-box/references/sdk-development.md +85 -0
  311. package/built-in-skills/prismer-box/references/search-and-ai.md +147 -0
  312. package/built-in-skills/prismer-box/references/troubleshooting.md +33 -0
  313. package/built-in-skills/prismer-box/references/webhooks-and-events.md +43 -0
  314. package/built-in-skills/prismer-codebase-inspection/LICENSE +21 -0
  315. package/built-in-skills/prismer-codebase-inspection/NOTICE.md +17 -0
  316. package/built-in-skills/prismer-codebase-inspection/SKILL.md +141 -0
  317. package/built-in-skills/prismer-computer-use/LICENSE +21 -0
  318. package/built-in-skills/prismer-computer-use/NOTICE.md +17 -0
  319. package/built-in-skills/prismer-computer-use/SKILL.md +372 -0
  320. package/built-in-skills/prismer-design-md/LICENSE +21 -0
  321. package/built-in-skills/prismer-design-md/LICENSE.hermes +21 -0
  322. package/built-in-skills/prismer-design-md/PROVENANCE.md +7 -0
  323. package/built-in-skills/prismer-design-md/SKILL.md +227 -0
  324. package/built-in-skills/prismer-design-md/templates/starter.md +99 -0
  325. package/built-in-skills/prismer-email-inbox-triage/LICENSE +21 -0
  326. package/built-in-skills/prismer-email-inbox-triage/NOTICE.md +11 -0
  327. package/built-in-skills/prismer-email-inbox-triage/SKILL.md +116 -0
  328. package/built-in-skills/prismer-findmy/LICENSE +21 -0
  329. package/built-in-skills/prismer-findmy/NOTICE.md +17 -0
  330. package/built-in-skills/prismer-findmy/SKILL.md +150 -0
  331. package/built-in-skills/prismer-findmy/scripts/readiness.py +47 -0
  332. package/built-in-skills/prismer-gif-search/LICENSE +21 -0
  333. package/built-in-skills/prismer-gif-search/LICENSE.hermes +21 -0
  334. package/built-in-skills/prismer-gif-search/PROVENANCE.md +7 -0
  335. package/built-in-skills/prismer-gif-search/SKILL.md +97 -0
  336. package/built-in-skills/prismer-gif-search/scripts/tenor.py +81 -0
  337. package/built-in-skills/prismer-github/LICENSE +21 -0
  338. package/built-in-skills/prismer-github/NOTICE.md +17 -0
  339. package/built-in-skills/prismer-github/SKILL.md +74 -0
  340. package/built-in-skills/prismer-github/references/auth.md +91 -0
  341. package/built-in-skills/prismer-github/references/ci-troubleshooting.md +193 -0
  342. package/built-in-skills/prismer-github/references/code-review.md +465 -0
  343. package/built-in-skills/prismer-github/references/conventional-commits.md +81 -0
  344. package/built-in-skills/prismer-github/references/github-api-cheatsheet.md +177 -0
  345. package/built-in-skills/prismer-github/references/issue-to-pr.md +74 -0
  346. package/built-in-skills/prismer-github/references/issues.md +336 -0
  347. package/built-in-skills/prismer-github/references/pr-workflow.md +346 -0
  348. package/built-in-skills/prismer-github/references/repo-management.md +484 -0
  349. package/built-in-skills/prismer-github/references/review-output-template.md +84 -0
  350. package/built-in-skills/prismer-github/scripts/ensure-gh.py +132 -0
  351. package/built-in-skills/prismer-github/scripts/gh-env.sh +25 -0
  352. package/built-in-skills/prismer-github/scripts/git-credential-token.py +68 -0
  353. package/built-in-skills/prismer-github/scripts/github-api.py +71 -0
  354. package/built-in-skills/prismer-github/scripts/github-context.py +28 -0
  355. package/built-in-skills/prismer-github/templates/bug-report.md +35 -0
  356. package/built-in-skills/prismer-github/templates/feature-request.md +31 -0
  357. package/built-in-skills/prismer-github/templates/pr-body-bugfix.md +35 -0
  358. package/built-in-skills/prismer-github/templates/pr-body-feature.md +33 -0
  359. package/built-in-skills/prismer-google-workspace/LICENSE +21 -0
  360. package/built-in-skills/prismer-google-workspace/NOTICE.md +11 -0
  361. package/built-in-skills/prismer-google-workspace/SKILL.md +369 -0
  362. package/built-in-skills/prismer-google-workspace/references/daily-brief.md +65 -0
  363. package/built-in-skills/prismer-google-workspace/references/gmail-search-syntax.md +63 -0
  364. package/built-in-skills/prismer-google-workspace/scripts/_hermes_home.py +17 -0
  365. package/built-in-skills/prismer-google-workspace/scripts/_private_state.py +39 -0
  366. package/built-in-skills/prismer-google-workspace/scripts/google_api.py +1339 -0
  367. package/built-in-skills/prismer-google-workspace/scripts/gws_bridge.py +121 -0
  368. package/built-in-skills/prismer-google-workspace/scripts/setup.py +563 -0
  369. package/built-in-skills/prismer-google-workspace/tests/test_productivity_regressions.py +214 -0
  370. package/built-in-skills/prismer-hermes-agent/LICENSE +21 -0
  371. package/built-in-skills/prismer-hermes-agent/NOTICE.md +17 -0
  372. package/built-in-skills/prismer-hermes-agent/SKILL.md +247 -0
  373. package/built-in-skills/prismer-hermes-agent/references/background-systems.md +108 -0
  374. package/built-in-skills/prismer-hermes-agent/references/cli-reference.md +158 -0
  375. package/built-in-skills/prismer-hermes-agent/references/configuration.md +96 -0
  376. package/built-in-skills/prismer-hermes-agent/references/contributor-guide.md +151 -0
  377. package/built-in-skills/prismer-hermes-agent/references/delegate-task-concurrency-diagnosis.md +47 -0
  378. package/built-in-skills/prismer-hermes-agent/references/desktop-plugins.md +215 -0
  379. package/built-in-skills/prismer-hermes-agent/references/native-mcp.md +351 -0
  380. package/built-in-skills/prismer-hermes-agent/references/petdex.md +82 -0
  381. package/built-in-skills/prismer-hermes-agent/references/portal-auth-for-third-party-apps.md +135 -0
  382. package/built-in-skills/prismer-hermes-agent/references/project-context-files.md +55 -0
  383. package/built-in-skills/prismer-hermes-agent/references/providers-and-models.md +81 -0
  384. package/built-in-skills/prismer-hermes-agent/references/security-privacy.md +73 -0
  385. package/built-in-skills/prismer-hermes-agent/references/slash-commands.md +119 -0
  386. package/built-in-skills/prismer-hermes-agent/references/themes.md +134 -0
  387. package/built-in-skills/prismer-hermes-agent/references/troubleshooting.md +87 -0
  388. package/built-in-skills/prismer-hermes-agent/references/tui-widgets.md +144 -0
  389. package/built-in-skills/prismer-hermes-agent/references/webhooks.md +219 -0
  390. package/built-in-skills/prismer-hermes-agent/references/windows-quirks.md +64 -0
  391. package/built-in-skills/prismer-hermes-agent/templates/clock.mjs +51 -0
  392. package/built-in-skills/prismer-hermes-agent/templates/plugin.js +97 -0
  393. package/built-in-skills/prismer-hermes-agent/templates/skin.yaml +49 -0
  394. package/built-in-skills/prismer-himalaya/LICENSE +21 -0
  395. package/built-in-skills/prismer-himalaya/NOTICE.md +11 -0
  396. package/built-in-skills/prismer-himalaya/SKILL.md +340 -0
  397. package/built-in-skills/prismer-himalaya/references/configuration.md +227 -0
  398. package/built-in-skills/prismer-himalaya/references/message-composition.md +206 -0
  399. package/built-in-skills/prismer-himalaya/scripts/compose_draft.py +48 -0
  400. package/built-in-skills/prismer-im-collab/SKILL.md +27 -7
  401. package/built-in-skills/prismer-imessage/LICENSE +21 -0
  402. package/built-in-skills/prismer-imessage/NOTICE.md +17 -0
  403. package/built-in-skills/prismer-imessage/SKILL.md +128 -0
  404. package/built-in-skills/prismer-imessage/scripts/readiness.py +47 -0
  405. package/built-in-skills/prismer-manim-video/LICENSE +21 -0
  406. package/built-in-skills/prismer-manim-video/LICENSE.hermes +21 -0
  407. package/built-in-skills/prismer-manim-video/PROVENANCE.md +7 -0
  408. package/built-in-skills/prismer-manim-video/README.md +23 -0
  409. package/built-in-skills/prismer-manim-video/SKILL.md +279 -0
  410. package/built-in-skills/prismer-manim-video/references/animation-design-thinking.md +161 -0
  411. package/built-in-skills/prismer-manim-video/references/animations.md +282 -0
  412. package/built-in-skills/prismer-manim-video/references/camera-and-3d.md +135 -0
  413. package/built-in-skills/prismer-manim-video/references/decorations.md +202 -0
  414. package/built-in-skills/prismer-manim-video/references/equations.md +216 -0
  415. package/built-in-skills/prismer-manim-video/references/graphs-and-data.md +163 -0
  416. package/built-in-skills/prismer-manim-video/references/mobjects.md +333 -0
  417. package/built-in-skills/prismer-manim-video/references/paper-explainer.md +255 -0
  418. package/built-in-skills/prismer-manim-video/references/production-quality.md +190 -0
  419. package/built-in-skills/prismer-manim-video/references/rendering.md +187 -0
  420. package/built-in-skills/prismer-manim-video/references/scene-planning.md +118 -0
  421. package/built-in-skills/prismer-manim-video/references/troubleshooting.md +135 -0
  422. package/built-in-skills/prismer-manim-video/references/updaters-and-trackers.md +260 -0
  423. package/built-in-skills/prismer-manim-video/references/visual-design.md +124 -0
  424. package/built-in-skills/prismer-manim-video/scripts/setup.sh +15 -0
  425. package/built-in-skills/prismer-maps/LICENSE +21 -0
  426. package/built-in-skills/prismer-maps/NOTICE.md +11 -0
  427. package/built-in-skills/prismer-maps/SKILL.md +240 -0
  428. package/built-in-skills/prismer-maps/scripts/maps_client.py +1324 -0
  429. package/built-in-skills/prismer-node-inspect-debugger/LICENSE +21 -0
  430. package/built-in-skills/prismer-node-inspect-debugger/NOTICE.md +17 -0
  431. package/built-in-skills/prismer-node-inspect-debugger/SKILL.md +347 -0
  432. package/built-in-skills/prismer-notion/LICENSE +21 -0
  433. package/built-in-skills/prismer-notion/NOTICE.md +11 -0
  434. package/built-in-skills/prismer-notion/SKILL.md +495 -0
  435. package/built-in-skills/prismer-notion/references/block-types.md +112 -0
  436. package/built-in-skills/prismer-obsidian/LICENSE +21 -0
  437. package/built-in-skills/prismer-obsidian/LICENSE.hermes +21 -0
  438. package/built-in-skills/prismer-obsidian/PROVENANCE.md +7 -0
  439. package/built-in-skills/prismer-obsidian/SKILL.md +80 -0
  440. package/built-in-skills/prismer-obsidian/provenance/category-DESCRIPTION.md +3 -0
  441. package/built-in-skills/prismer-obsidian/scripts/write_note.py +84 -0
  442. package/built-in-skills/prismer-p5js/LICENSE +21 -0
  443. package/built-in-skills/prismer-p5js/LICENSE.hermes +21 -0
  444. package/built-in-skills/prismer-p5js/PROVENANCE.md +7 -0
  445. package/built-in-skills/prismer-p5js/README.md +64 -0
  446. package/built-in-skills/prismer-p5js/SKILL.md +574 -0
  447. package/built-in-skills/prismer-p5js/references/animation.md +439 -0
  448. package/built-in-skills/prismer-p5js/references/color-systems.md +355 -0
  449. package/built-in-skills/prismer-p5js/references/core-api.md +410 -0
  450. package/built-in-skills/prismer-p5js/references/export-pipeline.md +534 -0
  451. package/built-in-skills/prismer-p5js/references/interaction.md +398 -0
  452. package/built-in-skills/prismer-p5js/references/shapes-and-geometry.md +300 -0
  453. package/built-in-skills/prismer-p5js/references/troubleshooting.md +532 -0
  454. package/built-in-skills/prismer-p5js/references/typography.md +302 -0
  455. package/built-in-skills/prismer-p5js/references/visual-effects.md +905 -0
  456. package/built-in-skills/prismer-p5js/references/webgl-and-3d.md +423 -0
  457. package/built-in-skills/prismer-p5js/scripts/export-frames.js +91 -0
  458. package/built-in-skills/prismer-p5js/scripts/render.sh +113 -0
  459. package/built-in-skills/prismer-p5js/scripts/serve.sh +25 -0
  460. package/built-in-skills/prismer-p5js/scripts/setup.sh +87 -0
  461. package/built-in-skills/prismer-p5js/templates/viewer.html +401 -0
  462. package/built-in-skills/prismer-popular-web-designs/LICENSE +21 -0
  463. package/built-in-skills/prismer-popular-web-designs/LICENSE.hermes +21 -0
  464. package/built-in-skills/prismer-popular-web-designs/LICENSE.origin +21 -0
  465. package/built-in-skills/prismer-popular-web-designs/PROVENANCE.md +7 -0
  466. package/built-in-skills/prismer-popular-web-designs/SKILL.md +218 -0
  467. package/built-in-skills/prismer-popular-web-designs/templates/airbnb.md +259 -0
  468. package/built-in-skills/prismer-popular-web-designs/templates/airtable.md +102 -0
  469. package/built-in-skills/prismer-popular-web-designs/templates/apple.md +326 -0
  470. package/built-in-skills/prismer-popular-web-designs/templates/bmw.md +193 -0
  471. package/built-in-skills/prismer-popular-web-designs/templates/cal.md +272 -0
  472. package/built-in-skills/prismer-popular-web-designs/templates/claude.md +325 -0
  473. package/built-in-skills/prismer-popular-web-designs/templates/clay.md +317 -0
  474. package/built-in-skills/prismer-popular-web-designs/templates/clickhouse.md +294 -0
  475. package/built-in-skills/prismer-popular-web-designs/templates/cohere.md +279 -0
  476. package/built-in-skills/prismer-popular-web-designs/templates/coinbase.md +142 -0
  477. package/built-in-skills/prismer-popular-web-designs/templates/composio.md +320 -0
  478. package/built-in-skills/prismer-popular-web-designs/templates/cursor.md +322 -0
  479. package/built-in-skills/prismer-popular-web-designs/templates/elevenlabs.md +278 -0
  480. package/built-in-skills/prismer-popular-web-designs/templates/expo.md +294 -0
  481. package/built-in-skills/prismer-popular-web-designs/templates/figma.md +233 -0
  482. package/built-in-skills/prismer-popular-web-designs/templates/framer.md +259 -0
  483. package/built-in-skills/prismer-popular-web-designs/templates/hashicorp.md +291 -0
  484. package/built-in-skills/prismer-popular-web-designs/templates/ibm.md +345 -0
  485. package/built-in-skills/prismer-popular-web-designs/templates/intercom.md +159 -0
  486. package/built-in-skills/prismer-popular-web-designs/templates/kraken.md +138 -0
  487. package/built-in-skills/prismer-popular-web-designs/templates/linear.app.md +380 -0
  488. package/built-in-skills/prismer-popular-web-designs/templates/lovable.md +311 -0
  489. package/built-in-skills/prismer-popular-web-designs/templates/minimax.md +270 -0
  490. package/built-in-skills/prismer-popular-web-designs/templates/mintlify.md +339 -0
  491. package/built-in-skills/prismer-popular-web-designs/templates/miro.md +121 -0
  492. package/built-in-skills/prismer-popular-web-designs/templates/mistral.ai.md +274 -0
  493. package/built-in-skills/prismer-popular-web-designs/templates/mongodb.md +279 -0
  494. package/built-in-skills/prismer-popular-web-designs/templates/notion.md +322 -0
  495. package/built-in-skills/prismer-popular-web-designs/templates/nvidia.md +306 -0
  496. package/built-in-skills/prismer-popular-web-designs/templates/ollama.md +280 -0
  497. package/built-in-skills/prismer-popular-web-designs/templates/opencode.ai.md +294 -0
  498. package/built-in-skills/prismer-popular-web-designs/templates/pinterest.md +243 -0
  499. package/built-in-skills/prismer-popular-web-designs/templates/posthog.md +269 -0
  500. package/built-in-skills/prismer-popular-web-designs/templates/raycast.md +281 -0
  501. package/built-in-skills/prismer-popular-web-designs/templates/replicate.md +274 -0
  502. package/built-in-skills/prismer-popular-web-designs/templates/resend.md +316 -0
  503. package/built-in-skills/prismer-popular-web-designs/templates/revolut.md +198 -0
  504. package/built-in-skills/prismer-popular-web-designs/templates/runwayml.md +257 -0
  505. package/built-in-skills/prismer-popular-web-designs/templates/sanity.md +370 -0
  506. package/built-in-skills/prismer-popular-web-designs/templates/sentry.md +275 -0
  507. package/built-in-skills/prismer-popular-web-designs/templates/spacex.md +207 -0
  508. package/built-in-skills/prismer-popular-web-designs/templates/spotify.md +259 -0
  509. package/built-in-skills/prismer-popular-web-designs/templates/stripe.md +335 -0
  510. package/built-in-skills/prismer-popular-web-designs/templates/supabase.md +268 -0
  511. package/built-in-skills/prismer-popular-web-designs/templates/superhuman.md +265 -0
  512. package/built-in-skills/prismer-popular-web-designs/templates/together.ai.md +276 -0
  513. package/built-in-skills/prismer-popular-web-designs/templates/uber.md +308 -0
  514. package/built-in-skills/prismer-popular-web-designs/templates/vercel.md +323 -0
  515. package/built-in-skills/prismer-popular-web-designs/templates/voltagent.md +336 -0
  516. package/built-in-skills/prismer-popular-web-designs/templates/warp.md +266 -0
  517. package/built-in-skills/prismer-popular-web-designs/templates/webflow.md +105 -0
  518. package/built-in-skills/prismer-popular-web-designs/templates/wise.md +186 -0
  519. package/built-in-skills/prismer-popular-web-designs/templates/x.ai.md +270 -0
  520. package/built-in-skills/prismer-popular-web-designs/templates/zapier.md +341 -0
  521. package/built-in-skills/prismer-product-price-monitor/LICENSE +21 -0
  522. package/built-in-skills/prismer-product-price-monitor/NOTICE.md +11 -0
  523. package/built-in-skills/prismer-product-price-monitor/SKILL.md +97 -0
  524. package/built-in-skills/prismer-product-price-monitor/scripts/watch_state.py +116 -0
  525. package/built-in-skills/prismer-python-debugpy/LICENSE +21 -0
  526. package/built-in-skills/prismer-python-debugpy/NOTICE.md +17 -0
  527. package/built-in-skills/prismer-python-debugpy/SKILL.md +377 -0
  528. package/built-in-skills/prismer-python-debugpy/scripts/dap_client.py +68 -0
  529. package/built-in-skills/prismer-songsee/LICENSE +21 -0
  530. package/built-in-skills/prismer-songsee/LICENSE.hermes +21 -0
  531. package/built-in-skills/prismer-songsee/PROVENANCE.md +7 -0
  532. package/built-in-skills/prismer-songsee/SKILL.md +91 -0
  533. package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE +21 -0
  534. package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE.hermes +21 -0
  535. package/built-in-skills/prismer-songwriting-and-ai-music/PROVENANCE.md +7 -0
  536. package/built-in-skills/prismer-songwriting-and-ai-music/SKILL.md +317 -0
  537. package/built-in-skills/prismer-spike/LICENSE +21 -0
  538. package/built-in-skills/prismer-spike/LICENSE.gsd +21 -0
  539. package/built-in-skills/prismer-spike/NOTICE.md +17 -0
  540. package/built-in-skills/prismer-spike/SKILL.md +212 -0
  541. package/built-in-skills/prismer-teams-meeting-pipeline/LICENSE +21 -0
  542. package/built-in-skills/prismer-teams-meeting-pipeline/NOTICE.md +11 -0
  543. package/built-in-skills/prismer-teams-meeting-pipeline/SKILL.md +156 -0
  544. package/built-in-skills/prismer-xurl/LICENSE +21 -0
  545. package/built-in-skills/prismer-xurl/LICENSE.hermes +21 -0
  546. package/built-in-skills/prismer-xurl/PROVENANCE.md +7 -0
  547. package/built-in-skills/prismer-xurl/SKILL.md +444 -0
  548. package/built-in-skills/prismer-xurl/provenance/category-DESCRIPTION.md +3 -0
  549. package/built-in-skills/prismer-youtube-content/LICENSE +21 -0
  550. package/built-in-skills/prismer-youtube-content/LICENSE.hermes +21 -0
  551. package/built-in-skills/prismer-youtube-content/PROVENANCE.md +7 -0
  552. package/built-in-skills/prismer-youtube-content/SKILL.md +86 -0
  553. package/built-in-skills/prismer-youtube-content/provenance/category-DESCRIPTION.md +3 -0
  554. package/built-in-skills/prismer-youtube-content/references/output-formats.md +56 -0
  555. package/built-in-skills/prismer-youtube-content/scripts/fetch_transcript.py +146 -0
  556. package/built-in-skills/proactivity/SKILL.md +84 -0
  557. package/built-in-skills/remotion/SKILL.md +431 -0
  558. package/built-in-skills/research-arxiv/LICENSE +21 -0
  559. package/built-in-skills/research-arxiv/NOTICE.md +4 -0
  560. package/built-in-skills/research-arxiv/SKILL.md +263 -0
  561. package/built-in-skills/research-arxiv/scripts/search_arxiv.py +111 -0
  562. package/built-in-skills/role-builder/SKILL.md +209 -0
  563. package/built-in-skills/role-builder/scripts/author-role.mjs +350 -0
  564. package/built-in-skills/role-builder/scripts/ingest-role.mjs +121 -0
  565. package/built-in-skills/role-builder/scripts/instantiate-and-run.mjs +304 -0
  566. package/built-in-skills/role-builder/scripts/operation-harness.mjs +269 -0
  567. package/built-in-skills/skill-creator/LICENSE.prismer +21 -0
  568. package/built-in-skills/skill-creator/NOTICE.md +18 -0
  569. package/built-in-skills/skill-creator/SKILL.md +182 -421
  570. package/built-in-skills/skill-creator/eval-viewer/generate_review.py +20 -31
  571. package/built-in-skills/skill-creator/eval-viewer/viewer.html +35 -23
  572. package/built-in-skills/skill-creator/references/external-library-import.md +110 -0
  573. package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/GUIDE.md +220 -0
  574. package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/LICENSE +21 -0
  575. package/built-in-skills/skill-creator/references/skill-authoring/GUIDE.md +134 -0
  576. package/built-in-skills/{skill-authoring/skill.json → skill-creator/references/skill-authoring/draft-contract.json} +3 -3
  577. package/built-in-skills/skill-creator/references/skill-builder/GUIDE.md +167 -0
  578. package/built-in-skills/skill-creator/references/skill-builder/scripts/ingest.mjs +93 -0
  579. package/built-in-skills/skill-creator/scripts/aggregate_benchmark.py +3 -2
  580. package/built-in-skills/skill-creator/scripts/import-library.mjs +498 -0
  581. package/built-in-skills/skill-creator/scripts/improve_description.py +14 -16
  582. package/built-in-skills/skill-creator/scripts/package_skill.py +16 -9
  583. package/built-in-skills/skill-creator/scripts/quick_validate.py +22 -5
  584. package/built-in-skills/skill-creator/scripts/run_eval.py +63 -144
  585. package/built-in-skills/skill-creator/scripts/run_loop.py +24 -16
  586. package/built-in-skills/slack-gif-creator/SKILL.md +20 -0
  587. package/built-in-skills/slack-gif-creator/core/gif_builder.py +13 -2
  588. package/built-in-skills/slack-gif-creator/core/validators.py +17 -7
  589. package/built-in-skills/tasks/SKILL.md +39 -24
  590. package/built-in-skills/tdd/LICENSE +21 -0
  591. package/built-in-skills/tdd/SKILL.md +117 -0
  592. package/built-in-skills/tdd/mocking.md +59 -0
  593. package/built-in-skills/tdd/refactoring.md +10 -0
  594. package/built-in-skills/tdd/references/test-driven-development/GUIDE.md +356 -0
  595. package/built-in-skills/tdd/references/test-driven-development/LICENSE +21 -0
  596. package/built-in-skills/tdd/references/test-driven-development/LICENSE.superpowers +21 -0
  597. package/built-in-skills/tdd/references/test-driven-development/NOTICE.md +37 -0
  598. package/built-in-skills/tdd/tests.md +61 -0
  599. package/built-in-skills/team/SKILL.md +3 -2
  600. package/built-in-skills/web-artifacts-builder/SKILL.md +4 -3
  601. package/built-in-skills/web-artifacts-builder/scripts/bundle-artifact.sh +9 -7
  602. package/built-in-skills/web-artifacts-builder/scripts/init-artifact.sh +28 -55
  603. package/built-in-skills/webapp-qa/LICENSE +21 -0
  604. package/built-in-skills/webapp-qa/NOTICE.md +37 -0
  605. package/built-in-skills/webapp-qa/SKILL.md +41 -0
  606. package/built-in-skills/webapp-qa/references/dogfood/GUIDE.md +161 -0
  607. package/built-in-skills/webapp-qa/references/issue-taxonomy.md +109 -0
  608. package/built-in-skills/webapp-qa/templates/dogfood-report-template.md +86 -0
  609. package/built-in-skills/webapp-testing/SKILL.md +10 -2
  610. package/built-in-skills/webapp-testing/examples/console_logging.py +10 -4
  611. package/built-in-skills/webapp-testing/examples/element_discovery.py +11 -4
  612. package/built-in-skills/webapp-testing/examples/static_html_automation.py +14 -9
  613. package/built-in-skills/webapp-testing/scripts/with_server.py +34 -10
  614. package/built-in-skills/wechat-pay/SKILL.md +59 -0
  615. package/built-in-skills/weekly-review/LICENSE +21 -0
  616. package/built-in-skills/weekly-review/NOTICE.md +21 -0
  617. package/built-in-skills/weekly-review/SKILL.md +49 -0
  618. package/components/eaas-pi-components.manifest.json +37 -0
  619. package/dist/cli.cjs +75799 -20210
  620. package/dist/cli.js +75900 -20248
  621. package/dist/index.cjs +76159 -20082
  622. package/dist/index.d.cts +4766 -766
  623. package/dist/index.d.ts +4766 -766
  624. package/dist/index.js +76040 -19960
  625. package/package.json +42 -6
  626. package/plugins/memory/prismer/__init__.py +1215 -0
  627. package/plugins/memory/prismer/plugin.yaml +8 -0
  628. package/plugins/memory/prismer/tool-schemas.generated.json +257 -0
  629. package/plugins/tools/prismer-recall/__init__.py +282 -0
  630. package/plugins/tools/prismer-recall/plugin.yaml +15 -0
  631. package/built-in-skills/memory-curation/SKILL.md +0 -135
  632. package/built-in-skills/skill-authoring/SKILL.md +0 -124
  633. package/built-in-skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
@@ -8,6 +8,8 @@ for a set of queries. Outputs results as JSON.
8
8
  import argparse
9
9
  import json
10
10
  import os
11
+ import re
12
+ import tempfile
11
13
  import select
12
14
  import subprocess
13
15
  import sys
@@ -16,7 +18,10 @@ import uuid
16
18
  from concurrent.futures import ProcessPoolExecutor, as_completed
17
19
  from pathlib import Path
18
20
 
19
- from scripts.utils import parse_skill_md
21
+ if __package__:
22
+ from .utils import parse_skill_md
23
+ else:
24
+ from utils import parse_skill_md
20
25
 
21
26
 
22
27
  def find_project_root() -> Path:
@@ -33,153 +38,60 @@ def find_project_root() -> Path:
33
38
 
34
39
 
35
40
  def run_single_query(
36
- query: str,
37
- skill_name: str,
38
- skill_description: str,
39
- timeout: int,
40
- project_root: str,
41
- model: str | None = None,
41
+ query: str, skill_name: str, skill_description: str, timeout: int,
42
+ project_root: str, model: str | None = None,
42
43
  ) -> bool:
43
- """Run a single query and return whether the skill was triggered.
44
-
45
- Creates a command file in .claude/commands/ so it appears in Claude's
46
- available_skills list, then runs `claude -p` with the raw query.
47
- Uses --include-partial-messages to detect triggering early from
48
- stream events (content_block_start) rather than waiting for the
49
- full assistant message, which only arrives after tool execution.
50
- """
51
- unique_id = uuid.uuid4().hex[:8]
52
- clean_name = f"{skill_name}-skill-{unique_id}"
53
- project_commands_dir = Path(project_root) / ".claude" / "commands"
54
- command_file = project_commands_dir / f"{clean_name}.md"
55
-
56
- try:
57
- project_commands_dir.mkdir(parents=True, exist_ok=True)
58
- # Use YAML block scalar to avoid breaking on quotes in description
59
- indented_desc = "\n ".join(skill_description.split("\n"))
60
- command_content = (
61
- f"---\n"
62
- f"description: |\n"
63
- f" {indented_desc}\n"
64
- f"---\n\n"
65
- f"# {skill_name}\n\n"
66
- f"This skill handles: {skill_description}\n"
44
+ """Evaluate only a temporary probe skill; never write into the user's repo."""
45
+ if os.environ.get("PRISMER_ALLOW_PAID_EVAL") != "1":
46
+ raise PermissionError("Set PRISMER_ALLOW_PAID_EVAL=1 after approving evaluation cost")
47
+ if not re.fullmatch(r"[a-z0-9]+(?:-[a-z0-9]+)*", skill_name):
48
+ raise ValueError("Unsafe skill name")
49
+ if timeout <= 0:
50
+ raise ValueError("timeout must be positive")
51
+ clean_name = f"{skill_name}-skill-{uuid.uuid4().hex[:8]}"
52
+ with tempfile.TemporaryDirectory(prefix="skill-trigger-") as directory:
53
+ skill_dir = Path(directory) / ".claude" / "skills" / clean_name
54
+ skill_dir.mkdir(parents=True)
55
+ description = "\\n ".join(skill_description.splitlines())
56
+ (skill_dir / "SKILL.md").write_text(
57
+ f"---\\nname: {clean_name}\\ndescription: |\\n {description}\\n---\\n"
58
+ "Report that this probe skill was selected. Do not execute any other action.\\n",
59
+ encoding="utf-8",
67
60
  )
68
- command_file.write_text(command_content)
69
-
70
- cmd = [
71
- "claude",
72
- "-p", query,
73
- "--output-format", "stream-json",
74
- "--verbose",
75
- "--include-partial-messages",
76
- ]
61
+ cmd = ["claude", "-p", query, "--output-format", "stream-json", "--verbose",
62
+ "--bare", "--tools", "Read,Skill", "--allowedTools", "Read,Skill",
63
+ "--permission-mode", "dontAsk", "--strict-mcp-config",
64
+ "--mcp-config", '{"mcpServers":{}}', "--setting-sources", "",
65
+ "--no-session-persistence", "--max-budget-usd", "0.25"]
77
66
  if model:
78
67
  cmd.extend(["--model", model])
79
-
80
- # Remove CLAUDECODE env var to allow nesting claude -p inside a
81
- # Claude Code session. The guard is for interactive terminal conflicts;
82
- # programmatic subprocess usage is safe.
83
- env = {k: v for k, v in os.environ.items() if k != "CLAUDECODE"}
84
-
85
- process = subprocess.Popen(
86
- cmd,
87
- stdout=subprocess.PIPE,
88
- stderr=subprocess.DEVNULL,
89
- cwd=project_root,
90
- env=env,
91
- )
92
-
93
- triggered = False
94
- start_time = time.time()
95
- buffer = ""
96
- # Track state for stream event detection
97
- pending_tool_name = None
98
- accumulated_json = ""
99
-
100
- try:
101
- while time.time() - start_time < timeout:
102
- if process.poll() is not None:
103
- remaining = process.stdout.read()
104
- if remaining:
105
- buffer += remaining.decode("utf-8", errors="replace")
106
- break
107
-
108
- ready, _, _ = select.select([process.stdout], [], [], 1.0)
109
- if not ready:
110
- continue
111
-
112
- chunk = os.read(process.stdout.fileno(), 8192)
113
- if not chunk:
114
- break
115
- buffer += chunk.decode("utf-8", errors="replace")
116
-
117
- while "\n" in buffer:
118
- line, buffer = buffer.split("\n", 1)
119
- line = line.strip()
120
- if not line:
121
- continue
122
-
123
- try:
124
- event = json.loads(line)
125
- except json.JSONDecodeError:
68
+ # communicate drains both pipes; errors are never scored as negatives.
69
+ completed = subprocess.run(cmd, cwd=directory, env=dict(os.environ),
70
+ capture_output=True, text=True, timeout=timeout)
71
+ if completed.returncode:
72
+ raise RuntimeError(f"Claude evaluation exited {completed.returncode}")
73
+ triggered, finished = False, False
74
+ for line in completed.stdout.splitlines():
75
+ try:
76
+ event = json.loads(line)
77
+ except json.JSONDecodeError:
78
+ continue
79
+ if event.get("type") == "assistant":
80
+ for block in event.get("message", {}).get("content", []):
81
+ if block.get("type") != "tool_use":
126
82
  continue
127
-
128
- # Early detection via stream events
129
- if event.get("type") == "stream_event":
130
- se = event.get("event", {})
131
- se_type = se.get("type", "")
132
-
133
- if se_type == "content_block_start":
134
- cb = se.get("content_block", {})
135
- if cb.get("type") == "tool_use":
136
- tool_name = cb.get("name", "")
137
- if tool_name in ("Skill", "Read"):
138
- pending_tool_name = tool_name
139
- accumulated_json = ""
140
- else:
141
- return False
142
-
143
- elif se_type == "content_block_delta" and pending_tool_name:
144
- delta = se.get("delta", {})
145
- if delta.get("type") == "input_json_delta":
146
- accumulated_json += delta.get("partial_json", "")
147
- if clean_name in accumulated_json:
148
- return True
149
-
150
- elif se_type in ("content_block_stop", "message_stop"):
151
- if pending_tool_name:
152
- return clean_name in accumulated_json
153
- if se_type == "message_stop":
154
- return False
155
-
156
- # Fallback: full assistant message
157
- elif event.get("type") == "assistant":
158
- message = event.get("message", {})
159
- for content_item in message.get("content", []):
160
- if content_item.get("type") != "tool_use":
161
- continue
162
- tool_name = content_item.get("name", "")
163
- tool_input = content_item.get("input", {})
164
- if tool_name == "Skill" and clean_name in tool_input.get("skill", ""):
165
- triggered = True
166
- elif tool_name == "Read" and clean_name in tool_input.get("file_path", ""):
167
- triggered = True
168
- return triggered
169
-
170
- elif event.get("type") == "result":
171
- return triggered
172
- finally:
173
- # Clean up process on any exit path (return, exception, timeout)
174
- if process.poll() is None:
175
- process.kill()
176
- process.wait()
177
-
83
+ args = block.get("input", {})
84
+ if block.get("name") == "Skill":
85
+ triggered |= clean_name in args.get("skill", "")
86
+ elif block.get("name") == "Read":
87
+ triggered |= clean_name in args.get("file_path", "")
88
+ elif event.get("type") == "result":
89
+ if event.get("is_error") or event.get("subtype") not in (None, "success"):
90
+ raise RuntimeError("Claude evaluation returned an error result")
91
+ finished = True
92
+ if not finished:
93
+ raise RuntimeError("Claude evaluation produced no successful terminal result")
178
94
  return triggered
179
- finally:
180
- if command_file.exists():
181
- command_file.unlink()
182
-
183
95
 
184
96
  def run_eval(
185
97
  eval_set: list[dict],
@@ -193,6 +105,14 @@ def run_eval(
193
105
  model: str | None = None,
194
106
  ) -> dict:
195
107
  """Run the full eval set and return results."""
108
+ if not eval_set or num_workers < 1 or runs_per_query < 1 or timeout <= 0:
109
+ raise ValueError('Non-empty eval set and positive workers/runs/timeout required')
110
+ if not 0 < trigger_threshold <= 1:
111
+ raise ValueError('trigger_threshold must be in (0, 1]')
112
+ if len({item['query'] for item in eval_set}) != len(eval_set):
113
+ raise ValueError('Duplicate queries make train/test membership ambiguous')
114
+ if len(eval_set) * runs_per_query > 300 or num_workers > 10:
115
+ raise ValueError('Evaluation exceeds 300-call or 10-worker safety budget')
196
116
  results = []
197
117
 
198
118
  with ProcessPoolExecutor(max_workers=num_workers) as executor:
@@ -221,8 +141,7 @@ def run_eval(
221
141
  try:
222
142
  query_triggers[query].append(future.result())
223
143
  except Exception as e:
224
- print(f"Warning: query failed: {e}", file=sys.stderr)
225
- query_triggers[query].append(False)
144
+ raise RuntimeError('Evaluation incomplete; failed calls cannot count as negative triggers') from e
226
145
 
227
146
  for query, triggers in query_triggers.items():
228
147
  item = query_items[query]
@@ -15,27 +15,37 @@ import time
15
15
  import webbrowser
16
16
  from pathlib import Path
17
17
 
18
- from scripts.generate_report import generate_html
19
- from scripts.improve_description import improve_description
20
- from scripts.run_eval import find_project_root, run_eval
21
- from scripts.utils import parse_skill_md
18
+ if __package__:
19
+ from .generate_report import generate_html
20
+ from .improve_description import improve_description
21
+ from .run_eval import find_project_root, run_eval
22
+ from .utils import parse_skill_md
23
+ else:
24
+ from generate_report import generate_html
25
+ from improve_description import improve_description
26
+ from run_eval import find_project_root, run_eval
27
+ from utils import parse_skill_md
22
28
 
23
29
 
24
30
  def split_eval_set(eval_set: list[dict], holdout: float, seed: int = 42) -> tuple[list[dict], list[dict]]:
25
31
  """Split eval set into train and test sets, stratified by should_trigger."""
26
- random.seed(seed)
32
+ rng = random.Random(seed)
33
+ if not 0 < holdout < 1:
34
+ raise ValueError('holdout must be between 0 and 1')
27
35
 
28
36
  # Separate by should_trigger
29
37
  trigger = [e for e in eval_set if e["should_trigger"]]
30
38
  no_trigger = [e for e in eval_set if not e["should_trigger"]]
31
39
 
32
40
  # Shuffle each group
33
- random.shuffle(trigger)
34
- random.shuffle(no_trigger)
41
+ if len(trigger) < 2 or len(no_trigger) < 2:
42
+ raise ValueError('Stratified holdout needs at least two positive and two negative queries')
43
+ rng.shuffle(trigger)
44
+ rng.shuffle(no_trigger)
35
45
 
36
46
  # Calculate split points
37
- n_trigger_test = max(1, int(len(trigger) * holdout))
38
- n_no_trigger_test = max(1, int(len(no_trigger) * holdout))
47
+ n_trigger_test = min(len(trigger) - 1, max(1, int(len(trigger) * holdout)))
48
+ n_no_trigger_test = min(len(no_trigger) - 1, max(1, int(len(no_trigger) * holdout)))
39
49
 
40
50
  # Split
41
51
  test_set = trigger[:n_trigger_test] + no_trigger[:n_no_trigger_test]
@@ -60,6 +70,8 @@ def run_loop(
60
70
  log_dir: Path | None = None,
61
71
  ) -> dict:
62
72
  """Run the eval + improvement loop."""
73
+ if max_iterations < 1 or not 0 <= holdout < 1:
74
+ raise ValueError('Positive max_iterations and holdout in [0, 1) required')
63
75
  project_root = find_project_root()
64
76
  name, original_description, content = parse_skill_md(skill_path)
65
77
  current_description = description_override or original_description
@@ -213,13 +225,9 @@ def run_loop(
213
225
 
214
226
  current_description = new_description
215
227
 
216
- # Find the best iteration by TEST score (or train if no test set)
217
- if test_set:
218
- best = max(history, key=lambda h: h["test_passed"] or 0)
219
- best_score = f"{best['test_passed']}/{best['test_total']}"
220
- else:
221
- best = max(history, key=lambda h: h["train_passed"])
222
- best_score = f"{best['train_passed']}/{best['train_total']}"
228
+ # Selection cannot use holdout scores; improvement also receives train only.
229
+ best = max(history, key=lambda h: h['train_passed'])
230
+ best_score = f"{best['train_passed']}/{best['train_total']}"
223
231
 
224
232
  if verbose:
225
233
  print(f"\nExit reason: {exit_reason}", file=sys.stderr)
@@ -1,9 +1,29 @@
1
1
  ---
2
2
  name: slack-gif-creator
3
+ scope: persistence
3
4
  description: Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack."
4
5
  license: Complete terms in LICENSE.txt
6
+ config:
7
+ - key: SLACK_WEBHOOK_URL
8
+ type: secret
9
+ required: false
10
+ default: null
11
+ bindable: [role, agent]
12
+ description: Optional Slack Incoming Webhook to post the finished GIF to a channel directly. Webhook URLs embed a token — treated as a secret.
13
+ prompt:
14
+ zh: "要把 GIF 直接发到 Slack 频道吗?请提供 Incoming Webhook URL。"
15
+ en: "Should the GIF be posted to a Slack channel directly? Provide the Incoming Webhook URL."
5
16
  ---
6
17
 
18
+ ## Optional: post directly to Slack
19
+
20
+ If `SLACK_WEBHOOK_URL` is present in your environment, you may additionally
21
+ post the finished GIF to that Slack channel (upload the file where the
22
+ webhook workflow expects it, or send a message linking the delivered asset).
23
+ Never print the webhook URL itself into chat, files, or logs. When the
24
+ variable is absent, skip this step silently — delivery below is the only
25
+ required output.
26
+
7
27
  ## Delivering the GIF
8
28
 
9
29
  When this skill finishes producing an animated GIF (`output.gif`), deliver
@@ -29,7 +29,10 @@ class GIFBuilder:
29
29
  self.width = width
30
30
  self.height = height
31
31
  self.fps = fps
32
+ if fps <= 0 or width <= 0 or height <= 0:
33
+ raise ValueError('Dimensions and fps must be positive')
32
34
  self.frames: list[np.ndarray] = []
35
+ self._frame_ticks: list[int] = []
33
36
 
34
37
  def add_frame(self, frame: np.ndarray | Image.Image):
35
38
  """
@@ -50,6 +53,7 @@ class GIFBuilder:
50
53
  frame = np.array(pil_frame)
51
54
 
52
55
  self.frames.append(frame)
56
+ self._frame_ticks.append(1)
53
57
 
54
58
  def add_frames(self, frames: list[np.ndarray | Image.Image]):
55
59
  """Add multiple frames at once."""
@@ -136,6 +140,7 @@ class GIFBuilder:
136
140
  return 0
137
141
 
138
142
  deduplicated = [self.frames[0]]
143
+ ticks = [self._frame_ticks[0]]
139
144
  removed_count = 0
140
145
 
141
146
  for i in range(1, len(self.frames)):
@@ -151,10 +156,13 @@ class GIFBuilder:
151
156
  # High threshold (0.9995+) means only remove nearly identical frames
152
157
  if similarity < threshold:
153
158
  deduplicated.append(self.frames[i])
159
+ ticks.append(self._frame_ticks[i])
154
160
  else:
161
+ ticks[-1] += self._frame_ticks[i]
155
162
  removed_count += 1
156
163
 
157
164
  self.frames = deduplicated
165
+ self._frame_ticks = ticks
158
166
  return removed_count
159
167
 
160
168
  def save(
@@ -213,6 +221,8 @@ class GIFBuilder:
213
221
  )
214
222
  # Keep every nth frame to get close to 12 frames
215
223
  keep_every = max(1, len(self.frames) // 12)
224
+ self._frame_ticks = [sum(self._frame_ticks[i:i + keep_every])
225
+ for i in range(0, len(self.frames), keep_every)]
216
226
  self.frames = [
217
227
  self.frames[i] for i in range(0, len(self.frames), keep_every)
218
228
  ]
@@ -221,7 +231,7 @@ class GIFBuilder:
221
231
  optimized_frames = self.optimize_colors(num_colors, use_global_palette=True)
222
232
 
223
233
  # Calculate frame duration in milliseconds
224
- frame_duration = 1000 / self.fps
234
+ frame_duration = [1000 * ticks / self.fps for ticks in self._frame_ticks]
225
235
 
226
236
  # Save GIF
227
237
  imageio.imwrite(
@@ -242,7 +252,7 @@ class GIFBuilder:
242
252
  "dimensions": f"{self.width}x{self.height}",
243
253
  "frame_count": len(optimized_frames),
244
254
  "fps": self.fps,
245
- "duration_seconds": len(optimized_frames) / self.fps,
255
+ "duration_seconds": sum(self._frame_ticks) / self.fps,
246
256
  "colors": num_colors,
247
257
  }
248
258
 
@@ -267,3 +277,4 @@ class GIFBuilder:
267
277
  def clear(self):
268
278
  """Clear all frames (useful for creating multiple GIFs)."""
269
279
  self.frames = []
280
+ self._frame_ticks = []
@@ -9,7 +9,8 @@ from pathlib import Path
9
9
 
10
10
 
11
11
  def validate_gif(
12
- gif_path: str | Path, is_emoji: bool = True, verbose: bool = True
12
+ gif_path: str | Path, is_emoji: bool = True, verbose: bool = True,
13
+ max_bytes: int = 5 * 1024 * 1024,
13
14
  ) -> tuple[bool, dict]:
14
15
  """
15
16
  Validate GIF for Slack (dimensions, size, frame count).
@@ -25,6 +26,8 @@ def validate_gif(
25
26
  from PIL import Image
26
27
 
27
28
  gif_path = Path(gif_path)
29
+ if max_bytes <= 0:
30
+ raise ValueError('max_bytes must be positive')
28
31
 
29
32
  if not gif_path.exists():
30
33
  return False, {"error": f"File not found: {gif_path}"}
@@ -37,21 +40,25 @@ def validate_gif(
37
40
  # Get dimensions and frame info
38
41
  try:
39
42
  with Image.open(gif_path) as img:
43
+ if img.format != 'GIF':
44
+ return False, {'error': 'Input must be a GIF, not ' + str(img.format)}
40
45
  width, height = img.size
41
46
 
42
47
  # Count frames
43
48
  frame_count = 0
49
+ duration_ms = 0
44
50
  try:
45
51
  while True:
46
52
  img.seek(frame_count)
53
+ img.load()
54
+ duration_ms += img.info.get('duration', 0)
47
55
  frame_count += 1
48
56
  except EOFError:
49
57
  pass
50
58
 
51
59
  # Get duration
52
60
  try:
53
- duration_ms = img.info.get("duration", 100)
54
- total_duration = (duration_ms * frame_count) / 1000
61
+ total_duration = duration_ms / 1000
55
62
  fps = frame_count / total_duration if total_duration > 0 else 0
56
63
  except:
57
64
  total_duration = None
@@ -73,9 +80,12 @@ def validate_gif(
73
80
  )
74
81
  dim_pass = aspect_ratio <= 2.0 and 320 <= min(width, height) <= 640
75
82
 
83
+ passes = dim_pass and size_bytes <= max_bytes and frame_count > 0
76
84
  results = {
77
85
  "file": str(gif_path),
78
- "passes": dim_pass,
86
+ "passes": passes,
87
+ "size_pass": size_bytes <= max_bytes,
88
+ "max_bytes": max_bytes,
79
89
  "width": width,
80
90
  "height": height,
81
91
  "size_kb": size_kb,
@@ -112,10 +122,10 @@ def validate_gif(
112
122
  f" Note: {'Emoji should be 128x128' if is_emoji else 'Unusual dimensions for Slack'}"
113
123
  )
114
124
 
115
- if size_mb > 5.0:
116
- print(f" Note: Large file size - consider fewer frames/colors")
125
+ if size_bytes > max_bytes:
126
+ print(f" Failed: exceeds configured size budget ({max_bytes} bytes)")
117
127
 
118
- return dim_pass, results
128
+ return passes, results
119
129
 
120
130
 
121
131
  def is_slack_ready(
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: tasks
3
+ scope: common
3
4
  description: Manage Prismer workspace tasks across the full Kanban lifecycle — create, list, inspect, update, complete, approve, reject, cancel. Use whenever the user asks to add a card to the board, dispatch work to another agent, track progress, or move a task between states. Executes via the `cloud task` CLI.
4
5
  ---
5
6
 
@@ -11,13 +12,22 @@ Use this skill to drive the **workspace Kanban** end-to-end. Tasks are durable b
11
12
 
12
13
  When the user asks you to **assign / delegate / hand off** work to ANOTHER agent (e.g. "create kanban tasks and assign to @research-agent", "give this to Bob"):
13
14
 
14
- 1. **Call `cloud task create --assignee-name <agent>` (or `--assignee-id`).** That is the ONLY legitimate delegation path. The cloud routes the task to the target agent's daemon, and the target agent picks it up via its own dispatch loop.
15
- 2. **STOP** as soon as `cloud task create` returns task IDs. Reply to the user with the IDs / titles. **Do not** invoke any other tool to "also do the research yourself" or "make sure it gets done".
15
+ 1. **Call `cloud task create --assignee-name <agent>` (or `--assignee-id`).** That is the ONLY legitimate delegation path. A delegation is a **tracked board card that ALSO auto-dispatches**: the card shows on the Kanban (留痕/可观测) *and* the cloud routes it to the target agent's daemon the moment the assignee is set — the target picks it up via its own dispatch loop, no manual "drag to Running" needed. (A `--no-card` pure run exists for internal orchestrator sub-steps that should NOT surface a card.)
16
+ 2. **For a delegation-only request, stop after reporting the returned IDs / titles.** If the user also requested orchestration, follow-through, or result collection, continue read-only status/result collection with bounded waits as described below. Never duplicate the assignee's work yourself.
16
17
  3. **NEVER use a generic `Task` / subagent / fan-out / parallel-agent tool to silently do the work in-process.** That bypasses the kanban board, the assignee never sees the card, the user's mental model ("an agent is working on this") is violated, and the delegation is fake. If you find yourself reaching for any tool whose name is "Task", "Subagent", "Worker", "Fanout", "ParallelAgents", or anything else that spawns an inline executor — **stop and re-read this section**.
17
18
  4. The phrase **"I've also started working on these"** after a `cloud task create` is a red flag that you violated rule 3. The correct phrase is **"Tasks created and assigned. @research-agent will pick up the cards."**
18
19
 
19
20
  This is non-negotiable. Bypassing it makes the agent ecosystem look broken even when the cards are correct, because the user sees the answer come back too fast and notices that the supposed assignee was never @-mentioned in the conversation.
20
21
 
22
+ ## ↩️ 结果回流 — 委派后怎么拿到结果(HARD)
23
+
24
+ 委派出去之后,**结果不会自动回流**到你的对话或 run —— 没有回调、没有自动推送。被派的 agent 在它**自己的独立 context** 里执行(不进你当前这条会话、也不会在这里发言),产物落在 **task 卡 + 看板**上。所以:
25
+
26
+ - **要看结果,你必须主动拉**:`cloud task get <taskId>` 读 `status` / `result` / 附件。`status=completed` 才算交付;`review` 等你 approve/reject。
27
+ - **编排节奏**:`cloud task create --assignee-name <peer>` → 拿到 taskId → 反复 `cloud task get <taskId>` 直到 `status` 进终态 → 读产物 → 决定下一步。(有 `cloud task wait <id>` 时优先用它,省手搓轮询。)
28
+ - **「看不到对方回复 ≠ 它没在干」**。被派 agent 沉默是正常的——它在独立 context 里跑,结果只在卡上。**绝不要**因为对话里没动静就自己把活重做一遍(那就是影子执行,违反上面的 Hard rules)。
29
+ - 只要求委派时,报 taskId 后结束本轮;明确要求编排/收集结果时,同轮可继续 `cloud task get`,退避轮询、有超时,不重新执行受派任务。不要自行安排未来轮询或声称已有后台监控。
30
+
21
31
  ## When to use
22
32
 
23
33
  - The user asks to **create**, **assign**, **schedule**, or **track** work ("add to kanban", "give Bob this task", "remind me to ship X by Friday").
@@ -33,11 +43,17 @@ This is non-negotiable. Bypassing it makes the agent ecosystem look broken even
33
43
 
34
44
  ```
35
45
  pending → assigned → running → review → completed | failed | cancelled
36
- ↓
37
- approved / rejected (review only)
46
+ ↑ ↓
47
+ └──── blocked ────────┤ (unblock returns to assigned)
48
+ ↓
49
+ awaiting_approval
50
+ ↓
51
+ approved / rejected (back to review)
38
52
  ```
39
53
 
40
- A `work_item` shows on the Kanban; a `goal` shows on the Goals lane. Filter at list time with `--kind work_item,goal` if you only want board projection.
54
+ Nine-state lifecycle: `pending / assigned / running / review / blocked / awaiting_approval / completed / failed / cancelled`. `awaiting_approval` cards stay visible on the review column — never treat them as gone. `blocked` has its own column.
55
+
56
+ A `work_item` shows on the Kanban; a `goal` shows on the Goals lane. Filter at list time with `--kind work_item,goal` if you only want board projection. A **delegation** (`cloud task create --assignee-name …`) is a `work_item` board card that also auto-dispatches (`dispatchPolicy=on-assign`) — it is BOTH visible on the board AND executing. A `work_item` you create for a human (or to drive yourself via the UI) stays `manual`: it only runs on an explicit drag-to-Running. **Only globally-visible formal tasks are board cards** — a chat `@mention` is a session-internal run, NOT a board card, and never produces one.
41
57
 
42
58
  ## Permission model (v2.0 — `release 200` state machine)
43
59
 
@@ -267,7 +283,7 @@ You MUST also confirm:
267
283
 
268
284
  ### As a verifier agent (when you receive task.verify.requested)
269
285
 
270
- You will receive an IM message:
286
+ You will receive a task dispatch message:
271
287
 
272
288
  type: task.verify.requested
273
289
  taskId: ...
@@ -332,7 +348,7 @@ cloud task apply-template <taskId> --template <id> # adopt a template
332
348
 
333
349
  ## 产物输出(user-deliverable)
334
350
 
335
- **交付是显式的**(release202/09 P2 起)。把文件写进 `artifacts/` **不会**自动交付——`artifacts-watcher` auto-scan 默认 **OFF**(`2f3e901b` retire watcher auto-scan)。每个要给用户的产物都必须显式跑一条 `cloud deliver` / `cloud task attach`。
351
+ **文件交付是显式的**(release202/09 P2 起)。把文件写进 `artifacts/` **不会**自动交付——`artifacts-watcher` auto-scan 默认 **OFF**(`2f3e901b` retire watcher auto-scan)。仅当 carrier 决策是文件时,才使用 `cloud deliver` / `cloud task attach` 显式交付该文件。
336
352
 
337
353
  ```bash
338
354
  # 1) 把最终产物写到 artifacts/(draft / 中间文件走 scratch,不会被交付)
@@ -345,39 +361,38 @@ cloud task attach "${PRISMER_ARTIFACTS_DIR}/my-report.md" # 动作 ③:挂
345
361
 
346
362
  > ⚠️ **写进 `artifacts/` ≠ 交付**。没有 auto-scan。每个文件都要显式 `cloud deliver`(聊天回复产物)或 `cloud task attach`(任务卡产物),否则用户收不到。`artifacts/` 放最终交付物,draft / 中间文件走 `scratch/`。
347
363
 
348
- > **Hermes 适配额外要求**:hermes 没有 per-dispatch env id(`PRISMER_RUN_ID` / `PRISMER_CONVERSATION_ID` 均 unset),裸 `cloud deliver <path>` 找不到 dispatch 会报错。必须从 `<execution_context>` 抄 `<run_id>` 和 `<conversation_id>` 当 flag 传:
364
+ > **常态(含 hermes):直接 `cloud deliver <abs-path>` 即可**——hermes 虽没有 per-dispatch env id(`PRISMER_RUN_ID` / `PRISMER_CONVERSATION_ID` unset),但 daemon(release203/15c)会按你的 agent 身份自动关联你**当前**的 dispatch,补全 run/conversation。spawn 适配器(claude-code / codex)env 已注入,同样无需 flag。
365
+ > **仅以下情形才手传 flag**:(a) 你要对**另一个**(非当前)dispatch 交付;(b) daemon 返回 **409 歧义**(同 agent 多个并发 dispatch 无法区分)。这时才从 `<execution_context>` 抄 `<run_id>` / `<conversation_id>`:
349
366
  > ```bash
350
367
  > cloud deliver "<abs-path>" --run-id "<run_id>" --conversation-id "<conversation_id>"
351
368
  > ```
352
- > spawn 适配器(claude-code / codex / openclaw)env 已注入,无需这两个 flag。详见 `office-artifacts` SKILL(唯一交付契约)。
369
+ > 详见 `office-artifacts` SKILL(唯一交付契约)。
353
370
 
354
371
  **Workflow**:
355
372
 
356
- 1. 中间脚本 / draft 写到 `${PRISMER_SCRATCH_DIR}/`(scratch,不进 IMAsset、不交付)
373
+ 1. 中间脚本 / draft 写到 `${PRISMER_SCRATCH_DIR}/`(scratch,不进 Asset、不交付)
357
374
  2. 最终产物写到 `${PRISMER_ARTIFACTS_DIR}/`(agent process env; physically `${TASK_WORKDIR}/artifacts/`)
358
375
  3. **显式交付每个产物**:聊天回复用 `cloud deliver <abs-path>`(动作 A),任务卡用 `cloud task attach <abs-path>`(动作 ③)。命令成功会打印 `assetId`
359
376
 
360
- **禁止**:
361
-
362
- - 不要在对话里贴大段 markdown 充当 "产物"——实际产物必须落文件
363
- - 不要把 draft / 中间产物丢进 `artifacts/`——那里只放最终交付物(draft 走 `scratch/`)
364
- - 不要以为写进 `artifacts/` 就交付了——没有 auto-scan,必须显式 `cloud deliver` / `cloud task attach`
377
+ ### Carrier 选择与显式交付
365
378
 
366
- ### 文档型交付物 = markdown 文件(不是 chat 长文)
379
+ carrier 优先级是:**用户明确要求 > Runtime carrier directive > 已选内容 skill > task 默认**。`tasks` skill 只管任务与回执,不擅自把内容改成 Markdown 文件、Asset 或 Memory Page。
367
380
 
368
- **SOP(适用于一切「文档型」交付物:方案 / 报告 / 调研 / 规格 / 总结 / 评审记录…)**:
381
+ 1. **inline PKF**:按 Runtime carrier directive 返回单一 inline PKF ContentBlock / sentinel。不写文件,不调 `cloud deliver` / `cloud task attach`,不并行产出 `.md` / `.html` / `.css` / `.js`。
382
+ 2. **用户明确要求文件**:按用户指定格式或内容 skill 决定的格式写入 `${PRISMER_ARTIFACTS_DIR}/`,再显式调 `cloud deliver` / `cloud task attach`。不要另造 Markdown 投影。
383
+ 3. **Asset / Memory**:只有用户要求或 Runtime carrier directive 明确选中时才 materialize;必须以服务端返回的 id / path / version / hash 以及读回结果作为权威证据。
384
+ 4. **任务 evidence**:截图、benchmark JSON、日志等原始证据可作为明确文件附件显式 `cloud task attach`;它们不会改变主交付物的 carrier。
369
385
 
370
- 1. 文档型最终产物**必须写成 markdown 文件**(`.md`),落到 `${PRISMER_ARTIFACTS_DIR}/`(agent process env;physically `${TASK_WORKDIR}/artifacts/`)。daemon artifacts-watcher 会自动把它注册成 task-bound IMAsset 并挂到本次 dispatch 的 `reply.assetIds`(见上「自动归档」)。
371
- 2. chat 里的文字回复是 **summary / teaser**(一两句话点出产了什么、关键结论),**不是交付物本身**。交付物在产物资产里,用户在 task 详情的 Artifacts 看完整内容;下游 task 可经 Library 复用同一份 markdown 资产。
372
- 3. **文件名 / 结构由 skill 按目的自定**——别套死 schema。一般约定:用有意义的文件名(如 `research-summary.md` / `design-review.md` / `q3-plan.md`),需要时拆多个文件。一个 task 可产多个 markdown。
373
-
374
- **为什么**:贴在对话里的长 markdown 是一次性的、不可复用、污染时间线、跨设备 / 刷新易丢;写成文件后它是有 hash、可预览、可 promote 到 Library Root、可被下游 task 引用的**资产**。chat 时间线的完成卡只 surface「N 个产物 →」,点进 task drawer 看正文。
386
+ **禁止**:
375
387
 
376
- > 二进制 office 产物(DOCX/PPTX/XLSX/PDF)见 `office-artifacts` skill;markdown 文档型走本节。两者都落 `artifacts/`,区别只是格式。
388
+ - inline 选中后并行生成 Markdown/HTML/CSS/JS 或附件;
389
+ - 把 draft / 中间产物放进 `artifacts/`(draft 走 `scratch/`);
390
+ - 把“写进 `artifacts/`”当成已交付——auto-scan 是 OFF,文件 carrier 必须有显式 receipt;
391
+ - 用 role 模板或 task 流程覆盖 Runtime carrier directive。
377
392
 
378
393
  **Self-check checkpoint**:
379
394
 
380
- `cloud task update --status review` 内嵌调用本地 daemon `/v1/checkpoints/pre_status_change`。该 hook 比较 `artifacts/` 内文件 sha256 与已 attach IMAsset.contentHash,若 diff 非空:
395
+ `cloud task update --status review` 内嵌调用本地 daemon `/v1/checkpoints/pre_status_change`。该 hook 比较 `artifacts/` 内文件 sha256 与已 attach Asset.contentHash,若 diff 非空:
381
396
 
382
397
  - exit code = 12
383
398
  - stderr 列出未 attach 的文件路径 + hash + size