@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
@@ -1,156 +1,176 @@
1
1
  ---
2
2
  name: liteparse
3
- description: Parse documents into LLM-ready content entirely on the local machine — PDF / DOCX / XLSX / PPTX / images → Markdown, structured JSON (with bounding boxes), or page screenshots, via the `lit` CLI. No cloud, no LLM, works offline. Use whenever the user attaches or points to a document that must be read before reasoning, or asks to extract text / tables / page images from a file.
3
+ scope: common
4
+ description: "Parse local document files into LLM-ready content on the daemon itself — PDFs → Markdown / structured JSON (with bounding boxes) / page screenshots via the bundled `lit` CLI. PDF works out of the box, offline, zero external deps (Tesseract + PDFium are bundled): digital PDFs use a near-instant native text path (`--no-ocr`), scanned PDFs fall back to bundled OCR. Image files (PNG/JPG) additionally need ImageMagick, and Office files (DOCX/XLSX/PPTX) need LibreOffice — install those on demand only when required. Use whenever the user attaches or points to a local file that must be read before reasoning, or asks to extract text / tables / page images from a file on disk. For web URLs and search, use the `ingest` skill instead."
4
5
  ---
5
6
 
6
7
  # LiteParse (local-first document parsing)
7
8
 
8
- LiteParse is a standalone OSS parser (Rust core, PDFium + Tesseract +
9
- LibreOffice) that turns documents into text the model can read — **fully
10
- local, zero cloud dependency, works with no network**. It is the
11
- daemon's local-first document-parsing path.
9
+ LiteParse turns document files into text the model can read — **on the
10
+ daemon machine, offline, zero cloud dependency**. It ships as the
11
+ `@llamaindex/liteparse` npm package (CLI: `lit`) with **PDFium and
12
+ Tesseract bundled inside the package** — the digital-PDF and scanned-OCR
13
+ paths need no external system dependencies.
12
14
 
13
15
  > Upstream: [`run-llama/liteparse`](https://github.com/run-llama/liteparse)
14
16
  > + skill [`run-llama/llamaparse-agent-skills`](https://github.com/run-llama/llamaparse-agent-skills/blob/main/skills/liteparse/SKILL.md).
15
17
  > Apache-2.0 (core) / MIT (skill), © LlamaIndex. Vendored as a Prismer
16
- > built-in; the CLI (`lit`) self-installs on first use (see below).
18
+ > built-in.
17
19
 
18
- ## Scope — liteparse vs `ingest`
20
+ ## Capability tiers — what works where
21
+
22
+ | Tier | Inputs | External dep | Status |
23
+ | --- | --- | --- | --- |
24
+ | **1 — PDF** | digital + scanned PDF | **none** (Tesseract + PDFium bundled) | **Default, out of the box** — `lit` is baked into the daemon image |
25
+ | **2 — Images** | PNG / JPG / TIFF / … | **ImageMagick** | Install on demand |
26
+ | **3 — Office** | DOCX / XLSX / PPTX / ODT | **LibreOffice** (~1GB) | Install on demand |
27
+
28
+ Only Tier 1 is guaranteed present. Tiers 2 and 3 pull large system
29
+ dependencies that are **deliberately not baked into the daemon image** —
30
+ install them yourself, only when the actual input requires it (see
31
+ below). Do not assume they are already installed.
19
32
 
20
- Two document paths coexist; pick by network + fidelity needs:
21
-
22
- - **`liteparse` (this skill) — local-first.** Local document files →
23
- Markdown / JSON / screenshots, fully offline, zero cost, zero cloud.
24
- Covers PDF, Word, PowerPoint, spreadsheets, images. Built-in
25
- Tesseract OCR for clean scans; LibreOffice for Office formats.
26
- **Default for**: files already on disk, offline / cloud-unreachable
27
- situations, digital PDFs, quick extraction, bounding boxes, page
28
- screenshots.
29
- - **`ingest` (sibling skill) — cloud-backed.** `cloud load` / `cloud
30
- search` for **web URLs** (HQCC compression) and `cloud parse` for
31
- **hi-res OCR** of scans / handwriting / dense tables. **Use when**:
32
- the source is a web page (liteparse can't fetch URLs), or local
33
- parsing quality is insufficient (dense tables, multi-column,
34
- handwriting, low-quality scans).
35
-
36
- Decision rule: **local file → try `liteparse` first** (free, offline,
37
- fast). Escalate to `ingest`'s `cloud parse -m hires` only when local
38
- fidelity falls short. **Web URL / search → `ingest`** (liteparse parses
39
- local files and stdin, not remote pages — if you only have a URL,
40
- `curl -sL <url> -o file` then parse the local copy, or route to
41
- `ingest`).
42
-
43
- When local parsing is low-confidence (empty pages, garbled OCR),
44
- **flag the region** and consider escalating to `ingest`; never invent
45
- content.
46
-
47
- ## First-use install (self-bootstrapping)
48
-
49
- The `lit` CLI ships via npm/pip/cargo (same CLI). Check, then install if
50
- missing. Do this once per environment, quietly.
33
+ ## Tier 1 — PDF (default, ready to use)
34
+
35
+ `lit` is available on the daemon. Sanity-check once, quietly:
51
36
 
52
37
  ```bash
53
- # 1. Is it already available? (sandbox image may bake it)
54
- command -v lit && lit --version && echo "lit ready" || {
55
- # 2. Install the CLI
56
- npm i -g @llamaindex/liteparse && lit --version
57
- }
38
+ command -v lit && lit --version # baked into the image
58
39
  ```
59
40
 
60
- System dependencies for Office conversion + image handling (only needed
61
- for non-PDF inputs):
41
+ If (and only if) it is somehow missing, install the package locally — it
42
+ is ~38MB with the OCR/render binaries bundled and installs in a few
43
+ seconds:
62
44
 
63
45
  ```bash
64
- # LibreOffice — required for DOCX/XLSX/PPTX/ODT/RTF conversion
65
- brew install --cask libreoffice # macOS
66
- apt-get install -y libreoffice # Debian/Ubuntu (daemon image)
67
-
68
- # ImageMagick — required for some image formats
69
- brew install imagemagick # macOS
70
- apt-get install -y imagemagick # Debian/Ubuntu
46
+ npm i @llamaindex/liteparse && npx lit --version
71
47
  ```
72
48
 
73
- If install fails (no network, no package manager), do **not** fabricate
74
- parsed content — report `lit unavailable (<reason>)` and stop.
49
+ > Do **not** rely on the CLI "self-installing on first use" — that path
50
+ > is unreliable (npm permission / cache conflicts). Either it is baked
51
+ > in, or you install the package explicitly as above.
75
52
 
76
- ## CLI reference
53
+ ### Native text path vs OCR — pick deliberately, cost differs ~10×
77
54
 
78
- ### Parse a file
55
+ - **Digital PDF (has an embedded text layer): use `--no-ocr`.** PDFium
56
+ extracts the text directly — **near-instant (~0.35s/page)**, no OCR.
57
+ This is the fast, cheap path; prefer it whenever the PDF is
58
+ computer-generated.
59
+ - **Scanned / image-only PDF: leave OCR on (default).** The bundled
60
+ Tesseract OCRs each page — **~5s/page**, an order of magnitude slower.
61
+ Only pay this when there is no real text layer.
62
+
63
+ If unsure which kind you have, run `--no-ocr` first: empty/garbled output
64
+ means it's a scan → re-run without `--no-ocr` to OCR it.
79
65
 
80
66
  ```bash
81
- lit parse document.pdf # → text on stdout
82
- lit parse document.pdf --format json -o out.json # structured JSON + bounding boxes
83
- lit parse document.pdf --target-pages "1-5,10,15-20" # page subset
84
- lit parse document.pdf --no-ocr # skip OCR (digital PDFs only)
85
- lit parse document.pdf --dpi 300 # higher render DPI
86
- lit parse scan.pdf --ocr-language eng+chi_sim # Tesseract lang codes
87
- lit parse secured.pdf --password '****' # encrypted docs
88
- curl -sL https://example.com/report.pdf | lit parse - # stdin (download-then-parse)
67
+ lit parse report.pdf --no-ocr # digital PDF → fast native text
68
+ lit parse scan.pdf # scanned PDF → bundled OCR
69
+ lit parse report.pdf --format markdown -o out.md # Markdown output to a file
70
+ lit parse report.pdf --format json -o out.json # structured JSON + bounding boxes
71
+ lit parse report.pdf --target-pages "1-5,10,15-20" # page subset (huge speedup on OCR path)
89
72
  ```
90
73
 
91
- Key `lit parse` options: `-o/--output`, `--format json|text`
92
- (default text), `--no-ocr`, `--ocr-language <lang>`, `--ocr-server-url
93
- <url>` (plug an external OCR HTTP server), `--tessdata-path`,
94
- `--target-pages "1-5,10"`, `--max-pages <n>` (default 1000), `--dpi`
95
- (default 150), `--preserve-small-text`, `--password`, `--num-workers`,
96
- `-q/--quiet`.
74
+ `--format` accepts `markdown` (default) or `json` (adds per-block
75
+ bounding boxes). Other useful flags: `-o/--output`, `--target-pages
76
+ "1-5,10"`, `--dpi <n>` (render DPI, default 150 — bump to 300 for small
77
+ scanned text), `--ocr-language eng+chi_sim` (Tesseract lang codes for the
78
+ OCR path), `--password '****'` (encrypted PDFs), `-q/--quiet`.
97
79
 
98
- ### Batch a directory
80
+ ### Page screenshots (for figures/charts text can't capture)
99
81
 
100
82
  ```bash
101
- lit batch-parse ./input-dir ./output-dir
102
- lit batch-parse ./input-dir ./output-dir --recursive --extension .pdf --format json
83
+ lit screenshot report.pdf -o ./shots # all pages → PNG
84
+ lit screenshot report.pdf --target-pages "1,3,5" -o ./shots
85
+ lit screenshot report.pdf --dpi 300 -o ./shots # high-res
103
86
  ```
104
87
 
105
- ### Page screenshots (for visual content text can't capture)
88
+ ## Tier 2 — Image files (install ImageMagick on demand)
89
+
90
+ Parsing standalone image files (PNG/JPG/TIFF/…) needs **ImageMagick**,
91
+ which is not in the daemon image. Install it the first time you actually
92
+ have an image input:
106
93
 
107
94
  ```bash
108
- lit screenshot document.pdf -o ./screenshots # all pages → PNG
109
- lit screenshot document.pdf --target-pages "1,3,5" -o ./shots
110
- lit screenshot document.pdf --dpi 300 -o ./shots # high-res
95
+ apt-get update && apt-get install -y imagemagick # Debian/Ubuntu (daemon image)
96
+ brew install imagemagick # macOS (local dev)
97
+ lit parse diagram.png --format markdown
111
98
  ```
112
99
 
113
- Supported formats: PDF · Word (DOC/DOCX/DOCM/ODT/RTF) · PowerPoint
114
- (PPT/PPTX/PPTM/ODP) · Spreadsheets (XLS/XLSX/ODS/CSV/TSV) · Images
115
- (JPG/PNG/GIF/BMP/TIFF/WEBP/SVG).
100
+ If ImageMagick can't be installed (no network / no apt), report
101
+ `ImageMagick unavailable` and stop — don't fabricate the image's contents.
102
+
103
+ ## Tier 3 — Office documents (install LibreOffice on demand)
104
+
105
+ DOCX / XLSX / PPTX / ODT conversion needs **LibreOffice (~1GB)**, which is
106
+ **intentionally not baked into the daemon image**. Install it only when
107
+ you genuinely need to parse an Office file (it's a big download — don't do
108
+ it speculatively):
109
+
110
+ ```bash
111
+ apt-get update && apt-get install -y libreoffice # Debian/Ubuntu (daemon image)
112
+ brew install --cask libreoffice # macOS (local dev)
113
+ lit parse deck.pptx --format markdown
114
+ ```
115
+
116
+ If LibreOffice can't be installed, say so and ask the user for a PDF
117
+ export of the document instead of guessing.
118
+
119
+ > A shared **cloud parse service for heavy formats** (offloading Office /
120
+ > hi-res OCR to a hosted backend so agents don't install 1GB deps) is a
121
+ > future TODO — it is **not** running today. Don't route to a cloud OCR
122
+ > endpoint.
123
+
124
+ ## Scope — liteparse vs `ingest`
125
+
126
+ Two skills, clean split by **source location**:
127
+
128
+ - **`liteparse` (this skill)** — **local files on disk.** PDF / image /
129
+ Office files already on the machine → Markdown / JSON / screenshots,
130
+ fully offline. This is the only local document-parsing path.
131
+ - **`ingest` (sibling skill)** — **web URLs and search.** `cloud load` /
132
+ `cloud search` fetch and compress remote pages. `liteparse` cannot
133
+ fetch URLs; if you only have a URL, either `curl -sL <url> -o file`
134
+ then parse the local copy with `liteparse`, or route to `ingest`.
135
+
136
+ Decision rule: **local file → `liteparse`. Web page / search → `ingest`.**
116
137
 
117
138
  ## Workflow
118
139
 
119
- 1. **Locate the file.** If it's a workspace asset, resolve its local
120
- path (see `assets` skill). If it's a URL, `curl -sL <url> -o
121
- <name>` first — `lit` parses local files (and stdin), not remote
122
- pages.
123
- 2. **Pick mode.**
124
- - Digital PDF / clean doc → `lit parse <f>` (add `--no-ocr` to skip
125
- OCR and go faster when the PDF has a real text layer).
126
- - Scan / image / handwriting → leave OCR on; set `--ocr-language`
127
- and bump `--dpi 300` if text is small.
128
- - Need spatial structure / tables with coordinates → `--format
129
- json` (gives bounding boxes).
130
- - Need to *see* a chart/figure/signature → `lit screenshot`, then
131
- read the PNG.
132
- 3. **Read the result as source of truth.** Base extraction/summary
133
- only on what `lit` returned. If a page is empty or low-confidence,
134
- say so; don't guess.
135
- 4. **Deliver products, if the parse output itself is the deliverable.**
136
- Write final files into `$PRISMER_ARTIFACTS_DIR` (the dispatch's
137
- `artifacts/` dir — auto-archived as IMAssets by the daemon's
138
- artifacts-watcher and attached to your reply). See `office-artifacts`
139
- SKILL.md §Delivery contract for the full delivery rules.
140
+ 1. **Locate the file.** Workspace asset → resolve its local path (see the
141
+ `assets` skill). URL-only → `curl -sL <url> -o <name>` first, then
142
+ parse the local copy (or use `ingest`).
143
+ 2. **Pick the path by input type + kind.**
144
+ - PDF, computer-generated → `lit parse <f> --no-ocr` (fast native).
145
+ - PDF, scanned/image-only → `lit parse <f>` (OCR); set
146
+ `--ocr-language`, bump `--dpi 300` for small text, and use
147
+ `--target-pages` to avoid OCR'ing pages you don't need.
148
+ - Need spatial structure / table coordinates → `--format json`.
149
+ - Need to *see* a chart/figure/signature → `lit screenshot`, then read
150
+ the PNG.
151
+ - Image file → install ImageMagick (Tier 2), then parse.
152
+ - Office file → install LibreOffice (Tier 3), then parse.
153
+ 3. **Read the result as source of truth.** Base extraction/summary only on
154
+ what `lit` returned. Empty or low-confidence page → say so; never guess.
155
+ 4. **Deliver products** only when the user requests the parse output as a
156
+ file. Write the requested final file into `$PRISMER_ARTIFACTS_DIR`, then
157
+ explicitly run `cloud deliver <abs-path>` for the current reply or
158
+ `cloud task attach <abs-path>` for a task. Auto-scan is OFF; writing the
159
+ file alone is not delivery. See `office-artifacts` SKILL.md §Delivery contract.
140
160
 
141
161
  ## Output reporting
142
162
 
143
- - After a parse: `Parsed <filename>: <N> pages, format=<text|json>,
144
- ocr=<on|off>` — then proceed with the user's actual question.
145
- - Don't dump the entire parsed body into chat unless asked; summarize
146
- and cite page numbers.
147
- - After screenshots: `Rendered <N> page screenshot(s) → <dir>` and read
163
+ - After a parse: `Parsed <filename>: <N> pages, format=<markdown|json>,
164
+ path=<native|ocr>` — then answer the user's actual question, citing page
165
+ numbers. Don't dump the whole parsed body into chat unless asked.
166
+ - After screenshots: `Rendered <N> page screenshot(s) → <dir>`, then read
148
167
  the relevant ones.
149
168
 
150
169
  ## HARD RULE — never claim a parse you didn't run
151
170
 
152
171
  Forbidden unless `lit` actually ran with exit 0 and produced output:
153
- "parsed the document", "the PDF says…", "extracted the table". If `lit`
154
- is unavailable or the parse failed, completion text must start with
155
- `无法解析文档 (reason)` / `Cannot parse document (reason)` — do not
156
- substitute guessed content.
172
+ "parsed the document", "the PDF says…", "extracted the table". If `lit` is
173
+ unavailable, a required dependency (ImageMagick / LibreOffice) can't be
174
+ installed, or the parse failed, completion text must start with `无法解析
175
+ 文档 (reason)` / `Cannot parse document (reason)` — do not substitute
176
+ guessed content.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: mcp-builder
3
+ scope: coding
3
4
  description: Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
4
5
  license: Complete terms in LICENSE.txt
5
6
  ---
@@ -389,7 +389,7 @@ After creating your evaluation file, you can use the provided evaluation harness
389
389
 
390
390
  Or install manually:
391
391
  ```bash
392
- pip install anthropic mcp
392
+ pip install 'anthropic>=0.39,<2' 'mcp>=1.9,<2'
393
393
  ```
394
394
 
395
395
  2. **Set API Key**
@@ -400,6 +400,15 @@ After creating your evaluation file, you can use the provided evaluation harness
400
400
 
401
401
  ## Evaluation File Format
402
402
 
403
+ Every invocation below must additionally supply `--model "$ANTHROPIC_MODEL"`
404
+ and one or more `--allow-tool <reviewed-read-only-tool-name>` options. The
405
+ harness refuses implicit all-tool access. Review the stdio command before
406
+ starting it; a tool's `readOnlyHint` is not an authorization boundary. Use a
407
+ read-only test principal, never a production write-capable credential. Each
408
+ task has a 600s limit, at most 20 tool turns, and 60s per tool/model request.
409
+ Do not place secrets in `-H` or `-e` arguments; inherit stdio credentials from
410
+ the environment or use a local, non-secret test endpoint.
411
+
403
412
  Evaluation files use XML format with `<qa_pair>` elements:
404
413
 
405
414
  ```xml
@@ -599,4 +608,4 @@ If tasks are timing out:
599
608
  - Use a more capable model (e.g., `claude-3-7-sonnet-20250219`)
600
609
  - Check if tools are returning too much data
601
610
  - Verify pagination is working correctly
602
- - Consider simplifying complex questions
611
+ - Consider simplifying complex questions
@@ -544,11 +544,13 @@ async function getUser(id: string): Promise<any> {
544
544
  "node": ">=18"
545
545
  },
546
546
  "dependencies": {
547
- "@modelcontextprotocol/sdk": "^1.6.1",
547
+ "@modelcontextprotocol/sdk": "^1.12.0",
548
+ "express": "^4.21.2",
548
549
  "axios": "^1.7.9",
549
550
  "zod": "^3.23.8"
550
551
  },
551
552
  "devDependencies": {
553
+ "@types/express": "^4.17.21",
552
554
  "@types/node": "^22.10.0",
553
555
  "tsx": "^4.19.2",
554
556
  "typescript": "^5.7.2"
@@ -596,6 +598,8 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
596
598
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
597
599
  import { z } from "zod";
598
600
  import axios, { AxiosError } from "axios";
601
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
602
+ import express from "express";
599
603
 
600
604
  // Constants
601
605
  const API_BASE_URL = "https://api.example.com/v1";
@@ -697,7 +701,14 @@ server.registerTool(
697
701
  }
698
702
  },
699
703
  async (params: UserSearchInput) => {
700
- // Implementation as shown above
704
+ try {
705
+ const result = await makeApiRequest<unknown>('users/search', 'GET', undefined, {
706
+ query: params.query, limit: params.limit, offset: params.offset,
707
+ });
708
+ return { content: [{ type: 'text' as const, text: JSON.stringify(result) }] };
709
+ } catch (error) {
710
+ return { isError: true, content: [{ type: 'text' as const, text: handleApiError(error) }] };
711
+ }
701
712
  }
702
713
  );
703
714
 
@@ -722,6 +733,15 @@ async function runHTTP() {
722
733
  }
723
734
 
724
735
  const app = express();
736
+ const accessToken = process.env.MCP_ACCESS_TOKEN;
737
+ if (!accessToken) throw new Error('MCP_ACCESS_TOKEN is required for HTTP transport');
738
+ app.use((req, res, next) => {
739
+ if (!['localhost', '127.0.0.1'].includes(req.hostname) || req.headers.origin || req.headers.authorization !== `Bearer ${accessToken}`) {
740
+ res.sendStatus(403);
741
+ return;
742
+ }
743
+ next();
744
+ });
725
745
  app.use(express.json());
726
746
 
727
747
  app.post('/mcp', async (req, res) => {
@@ -735,7 +755,7 @@ async function runHTTP() {
735
755
  });
736
756
 
737
757
  const port = parseInt(process.env.PORT || '3000');
738
- app.listen(port, () => {
758
+ app.listen(port, '127.0.0.1', () => {
739
759
  console.error(`MCP server running on http://localhost:${port}/mcp`);
740
760
  });
741
761
  }
@@ -825,6 +845,15 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
825
845
  import express from "express";
826
846
 
827
847
  const app = express();
848
+ const accessToken = process.env.MCP_ACCESS_TOKEN;
849
+ if (!accessToken) throw new Error('MCP_ACCESS_TOKEN is required');
850
+ app.use((req, res, next) => {
851
+ if (!['localhost', '127.0.0.1'].includes(req.hostname) || req.headers.origin || req.headers.authorization !== `Bearer ${accessToken}`) {
852
+ res.sendStatus(403);
853
+ return;
854
+ }
855
+ next();
856
+ });
828
857
  app.use(express.json());
829
858
 
830
859
  app.post('/mcp', async (req, res) => {
@@ -840,7 +869,7 @@ app.post('/mcp', async (req, res) => {
840
869
  await transport.handleRequest(req, res, req.body);
841
870
  });
842
871
 
843
- app.listen(3000);
872
+ app.listen(3000, '127.0.0.1');
844
873
  ```
845
874
 
846
875
  #### stdio (For Local Integrations)
@@ -967,4 +996,4 @@ Before finalizing your Node/TypeScript MCP server implementation, ensure:
967
996
  - [ ] dist/index.js created and executable
968
997
  - [ ] Server runs: `node dist/index.js --help`
969
998
  - [ ] All imports resolve correctly
970
- - [ ] Sample tool calls work as expected
999
+ - [ ] Sample tool calls work as expected
@@ -536,7 +536,11 @@ async def get_document(name: str) -> str:
536
536
  Resources are useful for static or semi-static data that doesn't
537
537
  require complex parameters. They use URI templates for flexible access.
538
538
  '''
539
- document_path = f"./docs/{name}"
539
+ from pathlib import Path
540
+ root = Path('./docs').resolve()
541
+ document_path = (root / name).resolve()
542
+ if not document_path.is_relative_to(root) or not document_path.is_file():
543
+ raise ValueError('Document must be a file under the docs root')
540
544
  with open(document_path, "r") as f:
541
545
  return f.read()
542
546
 
@@ -716,4 +720,4 @@ Before finalizing your Python MCP server implementation, ensure:
716
720
  - [ ] Server runs successfully: `python your_server.py --help`
717
721
  - [ ] All imports resolve correctly
718
722
  - [ ] Sample tool calls work as expected
719
- - [ ] Error scenarios handled gracefully
723
+ - [ ] Error scenarios handled gracefully
@@ -67,7 +67,7 @@ class MCPConnection(ABC):
67
67
  async def call_tool(self, tool_name: str, arguments: dict[str, Any]) -> Any:
68
68
  """Call a tool on the MCP server with provided arguments."""
69
69
  result = await self.session.call_tool(tool_name, arguments=arguments)
70
- return result.content
70
+ return result.model_dump(mode='json', exclude_none=True)
71
71
 
72
72
 
73
73
  class MCPConnectionStdio(MCPConnection):
@@ -6,6 +6,7 @@ This script evaluates MCP servers by running test questions against them using C
6
6
  import argparse
7
7
  import asyncio
8
8
  import json
9
+ import os
9
10
  import re
10
11
  import sys
11
12
  import time
@@ -70,10 +71,11 @@ def parse_evaluation_file(file_path: Path) -> list[dict[str, Any]]:
70
71
  "answer": (answer_elem.text or "").strip(),
71
72
  })
72
73
 
74
+ if not evaluations or any(not qa['question'] or not qa['answer'] for qa in evaluations):
75
+ raise ValueError('Evaluation must contain non-empty question/answer pairs')
73
76
  return evaluations
74
77
  except Exception as e:
75
- print(f"Error parsing evaluation file {file_path}: {e}")
76
- return []
78
+ raise ValueError(f"Invalid evaluation file: {file_path}") from e
77
79
 
78
80
 
79
81
  def extract_xml_content(text: str, tag: str) -> str | None:
@@ -89,6 +91,7 @@ async def agent_loop(
89
91
  question: str,
90
92
  tools: list[dict[str, Any]],
91
93
  connection: Any,
94
+ max_turns: int = 20,
92
95
  ) -> tuple[str, dict[str, Any]]:
93
96
  """Run the agent loop with MCP tools."""
94
97
  messages = [{"role": "user", "content": question}]
@@ -105,34 +108,39 @@ async def agent_loop(
105
108
  messages.append({"role": "assistant", "content": response.content})
106
109
 
107
110
  tool_metrics = {}
111
+ allowed_names = {tool['name'] for tool in tools}
112
+ turns = 0
108
113
 
109
114
  while response.stop_reason == "tool_use":
110
- tool_use = next(block for block in response.content if block.type == "tool_use")
111
- tool_name = tool_use.name
112
- tool_input = tool_use.input
113
-
114
- tool_start_ts = time.time()
115
- try:
116
- tool_result = await connection.call_tool(tool_name, tool_input)
117
- tool_response = json.dumps(tool_result) if isinstance(tool_result, (dict, list)) else str(tool_result)
118
- except Exception as e:
119
- tool_response = f"Error executing tool {tool_name}: {str(e)}\n"
120
- tool_response += traceback.format_exc()
121
- tool_duration = time.time() - tool_start_ts
122
-
123
- if tool_name not in tool_metrics:
124
- tool_metrics[tool_name] = {"count": 0, "durations": []}
125
- tool_metrics[tool_name]["count"] += 1
126
- tool_metrics[tool_name]["durations"].append(tool_duration)
127
-
128
- messages.append({
129
- "role": "user",
130
- "content": [{
131
- "type": "tool_result",
132
- "tool_use_id": tool_use.id,
133
- "content": tool_response,
134
- }]
135
- })
115
+ turns += 1
116
+ if turns > max_turns:
117
+ raise RuntimeError('Tool turn budget exceeded')
118
+ results = []
119
+ for tool_use in response.content:
120
+ if tool_use.type != 'tool_use':
121
+ continue
122
+ tool_name = tool_use.name
123
+ tool_start_ts = time.monotonic()
124
+ is_error = False
125
+ try:
126
+ if tool_name not in allowed_names:
127
+ raise PermissionError('Tool not allowlisted')
128
+ tool_result = await asyncio.wait_for(connection.call_tool(tool_name, tool_use.input), timeout=60)
129
+ if hasattr(tool_result, 'model_dump'):
130
+ tool_result = tool_result.model_dump(mode='json', exclude_none=True)
131
+ is_error = isinstance(tool_result, dict) and bool(tool_result.get('isError'))
132
+ tool_response = json.dumps(tool_result, default=lambda v: v.model_dump(mode='json'))
133
+ except Exception as e:
134
+ is_error = True
135
+ tool_response = 'Tool failed: ' + type(e).__name__
136
+ metric = tool_metrics.setdefault(tool_name, {'count': 0, 'durations': []})
137
+ metric['count'] += 1
138
+ metric['durations'].append(time.monotonic() - tool_start_ts)
139
+ results.append({'type': 'tool_result', 'tool_use_id': tool_use.id,
140
+ 'content': tool_response, 'is_error': is_error})
141
+ if not results:
142
+ raise RuntimeError('tool_use response contained no tool calls')
143
+ messages.append({'role': 'user', 'content': results})
136
144
 
137
145
  response = await asyncio.to_thread(
138
146
  client.messages.create,
@@ -146,7 +154,7 @@ async def agent_loop(
146
154
 
147
155
  response_text = next(
148
156
  (block.text for block in response.content if hasattr(block, "text")),
149
- None,
157
+ '',
150
158
  )
151
159
  return response_text, tool_metrics
152
160
 
@@ -220,14 +228,21 @@ TASK_TEMPLATE = """
220
228
  async def run_evaluation(
221
229
  eval_path: Path,
222
230
  connection: Any,
223
- model: str = "claude-3-7-sonnet-20250219",
231
+ model: str,
232
+ allowed_tools: list[str] | None = None,
224
233
  ) -> str:
225
234
  """Run evaluation with MCP server tools."""
226
235
  print("🚀 Starting Evaluation")
227
236
 
228
- client = Anthropic()
237
+ if not allowed_tools:
238
+ raise ValueError('Explicit --allow-tool is required; use reviewed read-only test tools')
239
+ client = Anthropic(timeout=60, max_retries=0)
229
240
 
230
241
  tools = await connection.list_tools()
242
+ missing = set(allowed_tools) - {tool['name'] for tool in tools}
243
+ if missing:
244
+ raise ValueError('Allowlisted tools not advertised: ' + ', '.join(sorted(missing)))
245
+ tools = [tool for tool in tools if tool['name'] in allowed_tools]
231
246
  print(f"📋 Loaded {len(tools)} tools from MCP server")
232
247
 
233
248
  qa_pairs = parse_evaluation_file(eval_path)
@@ -236,7 +251,7 @@ async def run_evaluation(
236
251
  results = []
237
252
  for i, qa_pair in enumerate(qa_pairs):
238
253
  print(f"Processing task {i + 1}/{len(qa_pairs)}")
239
- result = await evaluate_single_task(client, model, qa_pair, tools, connection, i)
254
+ result = await asyncio.wait_for(evaluate_single_task(client, model, qa_pair, tools, connection, i), timeout=600)
240
255
  results.append(result)
241
256
 
242
257
  correct = sum(r["score"] for r in results)
@@ -321,7 +336,8 @@ Examples:
321
336
 
322
337
  parser.add_argument("eval_file", type=Path, help="Path to evaluation XML file")
323
338
  parser.add_argument("-t", "--transport", choices=["stdio", "sse", "http"], default="stdio", help="Transport type (default: stdio)")
324
- parser.add_argument("-m", "--model", default="claude-3-7-sonnet-20250219", help="Claude model to use (default: claude-3-7-sonnet-20250219)")
339
+ parser.add_argument('-m', '--model', default=os.environ.get('ANTHROPIC_MODEL'), help='Authorized model ID, or ANTHROPIC_MODEL')
340
+ parser.add_argument('--allow-tool', action='append', required=True, help='Reviewed tool name; repeat for each permitted tool')
325
341
 
326
342
  stdio_group = parser.add_argument_group("stdio options")
327
343
  stdio_group.add_argument("-c", "--command", help="Command to run MCP server (stdio only)")
@@ -335,6 +351,8 @@ Examples:
335
351
  parser.add_argument("-o", "--output", type=Path, help="Output file for evaluation report (default: stdout)")
336
352
 
337
353
  args = parser.parse_args()
354
+ if not args.model:
355
+ parser.error('--model or ANTHROPIC_MODEL is required')
338
356
 
339
357
  if not args.eval_file.exists():
340
358
  print(f"Error: Evaluation file not found: {args.eval_file}")
@@ -360,7 +378,7 @@ Examples:
360
378
 
361
379
  async with connection:
362
380
  print("✅ Connected successfully")
363
- report = await run_evaluation(args.eval_file, connection, args.model)
381
+ report = await run_evaluation(args.eval_file, connection, args.model, args.allow_tool)
364
382
 
365
383
  if args.output:
366
384
  args.output.write_text(report)
@@ -1,2 +1,2 @@
1
- anthropic>=0.39.0
2
- mcp>=1.1.0
1
+ anthropic>=0.39.0,<2
2
+ mcp>=1.9.0,<2