devskill 2.0.5 → 2.0.7

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 (438) hide show
  1. package/landing/app/[locale]/page.tsx +68 -2
  2. package/landing/messages/en.json +12 -2
  3. package/landing/messages/vi.json +13 -3
  4. package/meta.ts +18 -1
  5. package/package.json +5 -1
  6. package/scripts/cli.ts +175 -46
  7. package/skills/algorithmic-art/LICENSE.txt +202 -0
  8. package/skills/algorithmic-art/SKILL.md +405 -0
  9. package/skills/algorithmic-art/SYNC.md +5 -0
  10. package/skills/algorithmic-art/templates/generator_template.js +223 -0
  11. package/skills/algorithmic-art/templates/viewer.html +599 -0
  12. package/skills/brand-guidelines/LICENSE.txt +202 -0
  13. package/skills/brand-guidelines/SKILL.md +73 -0
  14. package/skills/brand-guidelines/SYNC.md +5 -0
  15. package/skills/canvas-design/LICENSE.txt +202 -0
  16. package/skills/canvas-design/SKILL.md +130 -0
  17. package/skills/canvas-design/SYNC.md +5 -0
  18. package/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  19. package/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  20. package/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  21. package/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  22. package/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  23. package/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  24. package/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  25. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  26. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  27. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  28. package/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  29. package/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  30. package/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  31. package/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  32. package/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  33. package/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  34. package/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  35. package/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  36. package/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  37. package/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  38. package/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  39. package/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  40. package/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  41. package/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  42. package/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  43. package/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  44. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  45. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  46. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  47. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  48. package/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  49. package/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  50. package/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  51. package/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  52. package/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  53. package/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  54. package/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  55. package/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  56. package/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  57. package/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  58. package/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  59. package/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  60. package/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  61. package/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  62. package/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  63. package/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  64. package/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  65. package/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  66. package/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  67. package/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  68. package/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  69. package/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  70. package/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  71. package/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  72. package/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  73. package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  74. package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  75. package/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  76. package/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  77. package/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  78. package/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  79. package/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  80. package/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  81. package/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  82. package/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  83. package/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  84. package/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  85. package/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  86. package/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  87. package/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  88. package/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  89. package/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  90. package/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  91. package/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  92. package/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  93. package/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  94. package/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  95. package/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  96. package/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  97. package/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  98. package/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  99. package/skills/claude-api/LICENSE.txt +202 -0
  100. package/skills/claude-api/SKILL.md +246 -0
  101. package/skills/claude-api/SYNC.md +5 -0
  102. package/skills/claude-api/csharp/claude-api.md +400 -0
  103. package/skills/claude-api/curl/examples.md +193 -0
  104. package/skills/claude-api/go/claude-api.md +404 -0
  105. package/skills/claude-api/java/claude-api.md +430 -0
  106. package/skills/claude-api/php/claude-api.md +241 -0
  107. package/skills/claude-api/python/agent-sdk/README.md +345 -0
  108. package/skills/claude-api/python/agent-sdk/patterns.md +359 -0
  109. package/skills/claude-api/python/claude-api/README.md +410 -0
  110. package/skills/claude-api/python/claude-api/batches.md +185 -0
  111. package/skills/claude-api/python/claude-api/files-api.md +165 -0
  112. package/skills/claude-api/python/claude-api/streaming.md +162 -0
  113. package/skills/claude-api/python/claude-api/tool-use.md +590 -0
  114. package/skills/claude-api/ruby/claude-api.md +92 -0
  115. package/skills/claude-api/shared/error-codes.md +206 -0
  116. package/skills/claude-api/shared/live-sources.md +121 -0
  117. package/skills/claude-api/shared/models.md +119 -0
  118. package/skills/claude-api/shared/tool-use-concepts.md +305 -0
  119. package/skills/claude-api/typescript/agent-sdk/README.md +296 -0
  120. package/skills/claude-api/typescript/agent-sdk/patterns.md +209 -0
  121. package/skills/claude-api/typescript/claude-api/README.md +321 -0
  122. package/skills/claude-api/typescript/claude-api/batches.md +106 -0
  123. package/skills/claude-api/typescript/claude-api/files-api.md +98 -0
  124. package/skills/claude-api/typescript/claude-api/streaming.md +178 -0
  125. package/skills/claude-api/typescript/claude-api/tool-use.md +527 -0
  126. package/skills/doc-coauthoring/SKILL.md +375 -0
  127. package/skills/doc-coauthoring/SYNC.md +5 -0
  128. package/skills/docx/LICENSE.txt +30 -0
  129. package/skills/docx/SKILL.md +590 -0
  130. package/skills/docx/SYNC.md +5 -0
  131. package/skills/docx/scripts/__init__.py +1 -0
  132. package/skills/docx/scripts/accept_changes.py +135 -0
  133. package/skills/docx/scripts/comment.py +318 -0
  134. package/skills/docx/scripts/office/helpers/__init__.py +0 -0
  135. package/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
  136. package/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  137. package/skills/docx/scripts/office/pack.py +159 -0
  138. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  139. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  140. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  141. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  142. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  143. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  144. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  145. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  146. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  147. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  148. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  149. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  150. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  151. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  152. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  153. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  154. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  155. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  156. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  157. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  158. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  159. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  160. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  161. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  162. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  163. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  164. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  165. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  166. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  167. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  168. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  169. package/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  170. package/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  171. package/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  172. package/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  173. package/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  174. package/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  175. package/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  176. package/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  177. package/skills/docx/scripts/office/soffice.py +183 -0
  178. package/skills/docx/scripts/office/unpack.py +132 -0
  179. package/skills/docx/scripts/office/validate.py +111 -0
  180. package/skills/docx/scripts/office/validators/__init__.py +15 -0
  181. package/skills/docx/scripts/office/validators/base.py +847 -0
  182. package/skills/docx/scripts/office/validators/docx.py +446 -0
  183. package/skills/docx/scripts/office/validators/pptx.py +275 -0
  184. package/skills/docx/scripts/office/validators/redlining.py +247 -0
  185. package/skills/docx/scripts/templates/comments.xml +3 -0
  186. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  187. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  188. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  189. package/skills/docx/scripts/templates/people.xml +3 -0
  190. package/skills/frontend-design/LICENSE.txt +177 -0
  191. package/skills/frontend-design/SKILL.md +42 -0
  192. package/skills/frontend-design/SYNC.md +5 -0
  193. package/skills/internal-comms/LICENSE.txt +202 -0
  194. package/skills/internal-comms/SKILL.md +32 -0
  195. package/skills/internal-comms/SYNC.md +5 -0
  196. package/skills/internal-comms/examples/3p-updates.md +47 -0
  197. package/skills/internal-comms/examples/company-newsletter.md +65 -0
  198. package/skills/internal-comms/examples/faq-answers.md +30 -0
  199. package/skills/internal-comms/examples/general-comms.md +16 -0
  200. package/skills/mcp-builder/LICENSE.txt +202 -0
  201. package/skills/mcp-builder/SKILL.md +236 -0
  202. package/skills/mcp-builder/SYNC.md +5 -0
  203. package/skills/mcp-builder/reference/evaluation.md +602 -0
  204. package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  205. package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  206. package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  207. package/skills/mcp-builder/scripts/connections.py +151 -0
  208. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  209. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  210. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  211. package/skills/next-best-practices/SKILL.md +153 -0
  212. package/skills/next-best-practices/SYNC.md +5 -0
  213. package/skills/next-best-practices/async-patterns.md +87 -0
  214. package/skills/next-best-practices/bundling.md +180 -0
  215. package/skills/next-best-practices/data-patterns.md +297 -0
  216. package/skills/next-best-practices/debug-tricks.md +105 -0
  217. package/skills/next-best-practices/directives.md +73 -0
  218. package/skills/next-best-practices/error-handling.md +227 -0
  219. package/skills/next-best-practices/file-conventions.md +140 -0
  220. package/skills/next-best-practices/font.md +245 -0
  221. package/skills/next-best-practices/functions.md +108 -0
  222. package/skills/next-best-practices/hydration-error.md +91 -0
  223. package/skills/next-best-practices/image.md +173 -0
  224. package/skills/next-best-practices/metadata.md +301 -0
  225. package/skills/next-best-practices/parallel-routes.md +287 -0
  226. package/skills/next-best-practices/route-handlers.md +146 -0
  227. package/skills/next-best-practices/rsc-boundaries.md +159 -0
  228. package/skills/next-best-practices/runtime-selection.md +39 -0
  229. package/skills/next-best-practices/scripts.md +141 -0
  230. package/skills/next-best-practices/self-hosting.md +371 -0
  231. package/skills/next-best-practices/suspense-boundaries.md +67 -0
  232. package/skills/next-cache-components/SKILL.md +411 -0
  233. package/skills/next-cache-components/SYNC.md +5 -0
  234. package/skills/next-upgrade/SKILL.md +50 -0
  235. package/skills/next-upgrade/SYNC.md +5 -0
  236. package/skills/pdf/LICENSE.txt +30 -0
  237. package/skills/pdf/SKILL.md +314 -0
  238. package/skills/pdf/SYNC.md +5 -0
  239. package/skills/pdf/forms.md +294 -0
  240. package/skills/pdf/reference.md +612 -0
  241. package/skills/pdf/scripts/check_bounding_boxes.py +65 -0
  242. package/skills/pdf/scripts/check_fillable_fields.py +11 -0
  243. package/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
  244. package/skills/pdf/scripts/create_validation_image.py +37 -0
  245. package/skills/pdf/scripts/extract_form_field_info.py +122 -0
  246. package/skills/pdf/scripts/extract_form_structure.py +115 -0
  247. package/skills/pdf/scripts/fill_fillable_fields.py +98 -0
  248. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  249. package/skills/pptx/LICENSE.txt +30 -0
  250. package/skills/pptx/SKILL.md +232 -0
  251. package/skills/pptx/SYNC.md +5 -0
  252. package/skills/pptx/editing.md +205 -0
  253. package/skills/pptx/pptxgenjs.md +420 -0
  254. package/skills/pptx/scripts/__init__.py +0 -0
  255. package/skills/pptx/scripts/add_slide.py +195 -0
  256. package/skills/pptx/scripts/clean.py +286 -0
  257. package/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  258. package/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
  259. package/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  260. package/skills/pptx/scripts/office/pack.py +159 -0
  261. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  262. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  263. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  264. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  265. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  266. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  267. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  268. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  269. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  270. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  271. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  272. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  273. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  274. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  275. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  276. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  277. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  278. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  279. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  280. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  281. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  282. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  283. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  284. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  285. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  286. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  287. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  288. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  289. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  290. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  291. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  292. package/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  293. package/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  294. package/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  295. package/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  296. package/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  297. package/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  298. package/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  299. package/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  300. package/skills/pptx/scripts/office/soffice.py +183 -0
  301. package/skills/pptx/scripts/office/unpack.py +132 -0
  302. package/skills/pptx/scripts/office/validate.py +111 -0
  303. package/skills/pptx/scripts/office/validators/__init__.py +15 -0
  304. package/skills/pptx/scripts/office/validators/base.py +847 -0
  305. package/skills/pptx/scripts/office/validators/docx.py +446 -0
  306. package/skills/pptx/scripts/office/validators/pptx.py +275 -0
  307. package/skills/pptx/scripts/office/validators/redlining.py +247 -0
  308. package/skills/pptx/scripts/thumbnail.py +289 -0
  309. package/skills/shadcn/LICENSE.md +21 -0
  310. package/skills/shadcn/SKILL.md +242 -0
  311. package/skills/shadcn/SYNC.md +5 -0
  312. package/skills/shadcn/agents/openai.yml +5 -0
  313. package/skills/shadcn/assets/shadcn-small.png +0 -0
  314. package/skills/shadcn/assets/shadcn.png +0 -0
  315. package/skills/shadcn/cli.md +257 -0
  316. package/skills/shadcn/customization.md +202 -0
  317. package/skills/shadcn/evals/evals.json +47 -0
  318. package/skills/shadcn/mcp.md +94 -0
  319. package/skills/shadcn/rules/base-vs-radix.md +306 -0
  320. package/skills/shadcn/rules/composition.md +195 -0
  321. package/skills/shadcn/rules/forms.md +192 -0
  322. package/skills/shadcn/rules/icons.md +101 -0
  323. package/skills/shadcn/rules/styling.md +162 -0
  324. package/skills/skill-creator/LICENSE.txt +202 -0
  325. package/skills/skill-creator/SKILL.md +485 -0
  326. package/skills/skill-creator/SYNC.md +5 -0
  327. package/skills/skill-creator/agents/analyzer.md +274 -0
  328. package/skills/skill-creator/agents/comparator.md +202 -0
  329. package/skills/skill-creator/agents/grader.md +223 -0
  330. package/skills/skill-creator/assets/eval_review.html +146 -0
  331. package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  332. package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  333. package/skills/skill-creator/references/schemas.md +430 -0
  334. package/skills/skill-creator/scripts/__init__.py +0 -0
  335. package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  336. package/skills/skill-creator/scripts/generate_report.py +326 -0
  337. package/skills/skill-creator/scripts/improve_description.py +247 -0
  338. package/skills/skill-creator/scripts/package_skill.py +136 -0
  339. package/skills/skill-creator/scripts/quick_validate.py +103 -0
  340. package/skills/skill-creator/scripts/run_eval.py +310 -0
  341. package/skills/skill-creator/scripts/run_loop.py +328 -0
  342. package/skills/skill-creator/scripts/utils.py +47 -0
  343. package/skills/slack-gif-creator/LICENSE.txt +202 -0
  344. package/skills/slack-gif-creator/SKILL.md +254 -0
  345. package/skills/slack-gif-creator/SYNC.md +5 -0
  346. package/skills/slack-gif-creator/core/easing.py +234 -0
  347. package/skills/slack-gif-creator/core/frame_composer.py +176 -0
  348. package/skills/slack-gif-creator/core/gif_builder.py +269 -0
  349. package/skills/slack-gif-creator/core/validators.py +136 -0
  350. package/skills/slack-gif-creator/requirements.txt +4 -0
  351. package/skills/theme-factory/LICENSE.txt +202 -0
  352. package/skills/theme-factory/SKILL.md +59 -0
  353. package/skills/theme-factory/SYNC.md +5 -0
  354. package/skills/theme-factory/theme-showcase.pdf +0 -0
  355. package/skills/theme-factory/themes/arctic-frost.md +19 -0
  356. package/skills/theme-factory/themes/botanical-garden.md +19 -0
  357. package/skills/theme-factory/themes/desert-rose.md +19 -0
  358. package/skills/theme-factory/themes/forest-canopy.md +19 -0
  359. package/skills/theme-factory/themes/golden-hour.md +19 -0
  360. package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  361. package/skills/theme-factory/themes/modern-minimalist.md +19 -0
  362. package/skills/theme-factory/themes/ocean-depths.md +19 -0
  363. package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  364. package/skills/theme-factory/themes/tech-innovation.md +19 -0
  365. package/skills/vue-best-practices/SYNC.md +1 -1
  366. package/skills/vue-jsx-best-practices/SYNC.md +1 -1
  367. package/skills/vue-options-api-best-practices/SYNC.md +1 -1
  368. package/skills/vue-pinia-best-practices/SYNC.md +1 -1
  369. package/skills/vue-router-best-practices/SYNC.md +1 -1
  370. package/skills/vue-testing-best-practices/SYNC.md +1 -1
  371. package/skills/web-artifacts-builder/LICENSE.txt +202 -0
  372. package/skills/web-artifacts-builder/SKILL.md +74 -0
  373. package/skills/web-artifacts-builder/SYNC.md +5 -0
  374. package/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  375. package/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  376. package/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  377. package/skills/webapp-testing/LICENSE.txt +202 -0
  378. package/skills/webapp-testing/SKILL.md +96 -0
  379. package/skills/webapp-testing/SYNC.md +5 -0
  380. package/skills/webapp-testing/examples/console_logging.py +35 -0
  381. package/skills/webapp-testing/examples/element_discovery.py +40 -0
  382. package/skills/webapp-testing/examples/static_html_automation.py +33 -0
  383. package/skills/webapp-testing/scripts/with_server.py +106 -0
  384. package/skills/xlsx/LICENSE.txt +30 -0
  385. package/skills/xlsx/SKILL.md +292 -0
  386. package/skills/xlsx/SYNC.md +5 -0
  387. package/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  388. package/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  389. package/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  390. package/skills/xlsx/scripts/office/pack.py +159 -0
  391. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  392. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  393. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  394. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  395. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  396. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  397. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  398. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  399. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  400. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  401. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  402. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  403. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  404. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  405. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  406. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  407. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  408. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  409. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  410. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  411. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  412. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  413. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  414. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  415. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  416. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  417. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  418. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  419. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  420. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  421. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  422. package/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  423. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  424. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  425. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  426. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  427. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  428. package/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  429. package/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  430. package/skills/xlsx/scripts/office/soffice.py +183 -0
  431. package/skills/xlsx/scripts/office/unpack.py +132 -0
  432. package/skills/xlsx/scripts/office/validate.py +111 -0
  433. package/skills/xlsx/scripts/office/validators/__init__.py +15 -0
  434. package/skills/xlsx/scripts/office/validators/base.py +847 -0
  435. package/skills/xlsx/scripts/office/validators/docx.py +446 -0
  436. package/skills/xlsx/scripts/office/validators/pptx.py +275 -0
  437. package/skills/xlsx/scripts/office/validators/redlining.py +247 -0
  438. package/skills/xlsx/scripts/recalc.py +184 -0
@@ -0,0 +1,527 @@
1
+ # Tool Use — TypeScript
2
+
3
+ For conceptual overview (tool definitions, tool choice, tips), see [shared/tool-use-concepts.md](../../shared/tool-use-concepts.md).
4
+
5
+ ## Tool Runner (Recommended)
6
+
7
+ **Beta:** The tool runner is in beta in the TypeScript SDK.
8
+
9
+ Use `betaZodTool` with Zod schemas to define tools with a `run` function, then pass them to `client.beta.messages.toolRunner()`:
10
+
11
+ ```typescript
12
+ import Anthropic from "@anthropic-ai/sdk";
13
+ import { betaZodTool } from "@anthropic-ai/sdk/helpers/beta/zod";
14
+ import { z } from "zod";
15
+
16
+ const client = new Anthropic();
17
+
18
+ const getWeather = betaZodTool({
19
+ name: "get_weather",
20
+ description: "Get current weather for a location",
21
+ inputSchema: z.object({
22
+ location: z.string().describe("City and state, e.g., San Francisco, CA"),
23
+ unit: z.enum(["celsius", "fahrenheit"]).optional(),
24
+ }),
25
+ run: async (input) => {
26
+ // Your implementation here
27
+ return `72°F and sunny in ${input.location}`;
28
+ },
29
+ });
30
+
31
+ // The tool runner handles the agentic loop and returns the final message
32
+ const finalMessage = await client.beta.messages.toolRunner({
33
+ model: "claude-opus-4-6",
34
+ max_tokens: 16000,
35
+ tools: [getWeather],
36
+ messages: [{ role: "user", content: "What's the weather in Paris?" }],
37
+ });
38
+
39
+ console.log(finalMessage.content);
40
+ ```
41
+
42
+ **Key benefits of the tool runner:**
43
+
44
+ - No manual loop — the SDK handles calling tools and feeding results back
45
+ - Type-safe tool inputs via Zod schemas
46
+ - Tool schemas are generated automatically from Zod definitions
47
+ - Iteration stops automatically when Claude has no more tool calls
48
+
49
+ ---
50
+
51
+ ## Manual Agentic Loop
52
+
53
+ Use this when you need fine-grained control (custom logging, conditional tool execution, streaming individual iterations, human-in-the-loop approval):
54
+
55
+ ```typescript
56
+ import Anthropic from "@anthropic-ai/sdk";
57
+
58
+ const client = new Anthropic();
59
+ const tools: Anthropic.Tool[] = [...]; // Your tool definitions
60
+ let messages: Anthropic.MessageParam[] = [{ role: "user", content: userInput }];
61
+
62
+ while (true) {
63
+ const response = await client.messages.create({
64
+ model: "claude-opus-4-6",
65
+ max_tokens: 16000,
66
+ tools: tools,
67
+ messages: messages,
68
+ });
69
+
70
+ if (response.stop_reason === "end_turn") break;
71
+
72
+ // Server-side tool hit iteration limit; append assistant turn and re-send to continue
73
+ if (response.stop_reason === "pause_turn") {
74
+ messages.push({ role: "assistant", content: response.content });
75
+ continue;
76
+ }
77
+
78
+ const toolUseBlocks = response.content.filter(
79
+ (b): b is Anthropic.ToolUseBlock => b.type === "tool_use",
80
+ );
81
+
82
+ messages.push({ role: "assistant", content: response.content });
83
+
84
+ const toolResults: Anthropic.ToolResultBlockParam[] = [];
85
+ for (const tool of toolUseBlocks) {
86
+ const result = await executeTool(tool.name, tool.input);
87
+ toolResults.push({
88
+ type: "tool_result",
89
+ tool_use_id: tool.id,
90
+ content: result,
91
+ });
92
+ }
93
+
94
+ messages.push({ role: "user", content: toolResults });
95
+ }
96
+ ```
97
+
98
+ ### Streaming Manual Loop
99
+
100
+ Use `client.messages.stream()` + `finalMessage()` instead of `.create()` when you need streaming within a manual loop. Text deltas are streamed on each iteration; `finalMessage()` collects the complete `Message` so you can inspect `stop_reason` and extract tool-use blocks:
101
+
102
+ ```typescript
103
+ import Anthropic from "@anthropic-ai/sdk";
104
+
105
+ const client = new Anthropic();
106
+ const tools: Anthropic.Tool[] = [...];
107
+ let messages: Anthropic.MessageParam[] = [{ role: "user", content: userInput }];
108
+
109
+ while (true) {
110
+ const stream = client.messages.stream({
111
+ model: "claude-opus-4-6",
112
+ max_tokens: 64000,
113
+ tools,
114
+ messages,
115
+ });
116
+
117
+ // Stream text deltas on each iteration
118
+ stream.on("text", (delta) => {
119
+ process.stdout.write(delta);
120
+ });
121
+
122
+ // finalMessage() resolves with the complete Message — no need to
123
+ // manually wire up .on("message") / .on("error") / .on("abort")
124
+ const message = await stream.finalMessage();
125
+
126
+ if (message.stop_reason === "end_turn") break;
127
+
128
+ // Server-side tool hit iteration limit; append assistant turn and re-send to continue
129
+ if (message.stop_reason === "pause_turn") {
130
+ messages.push({ role: "assistant", content: message.content });
131
+ continue;
132
+ }
133
+
134
+ const toolUseBlocks = message.content.filter(
135
+ (b): b is Anthropic.ToolUseBlock => b.type === "tool_use",
136
+ );
137
+
138
+ messages.push({ role: "assistant", content: message.content });
139
+
140
+ const toolResults: Anthropic.ToolResultBlockParam[] = [];
141
+ for (const tool of toolUseBlocks) {
142
+ const result = await executeTool(tool.name, tool.input);
143
+ toolResults.push({
144
+ type: "tool_result",
145
+ tool_use_id: tool.id,
146
+ content: result,
147
+ });
148
+ }
149
+
150
+ messages.push({ role: "user", content: toolResults });
151
+ }
152
+ ```
153
+
154
+ > **Important:** Don't wrap `.on()` events in `new Promise()` to collect the final message — use `stream.finalMessage()` instead. The SDK handles all error/abort/completion states internally.
155
+
156
+ > **Error handling in the loop:** Use the SDK's typed exceptions (e.g., `Anthropic.RateLimitError`, `Anthropic.APIError`) — see [Error Handling](./README.md#error-handling) for examples. Don't check error messages with string matching.
157
+
158
+ > **SDK types:** Use `Anthropic.MessageParam`, `Anthropic.Tool`, `Anthropic.ToolUseBlock`, `Anthropic.ToolResultBlockParam`, `Anthropic.Message`, etc. for all API-related data structures. Don't redefine equivalent interfaces.
159
+
160
+ ---
161
+
162
+ ## Handling Tool Results
163
+
164
+ ```typescript
165
+ const response = await client.messages.create({
166
+ model: "claude-opus-4-6",
167
+ max_tokens: 16000,
168
+ tools: tools,
169
+ messages: [{ role: "user", content: "What's the weather in Paris?" }],
170
+ });
171
+
172
+ for (const block of response.content) {
173
+ if (block.type === "tool_use") {
174
+ const result = await executeTool(block.name, block.input);
175
+
176
+ const followup = await client.messages.create({
177
+ model: "claude-opus-4-6",
178
+ max_tokens: 16000,
179
+ tools: tools,
180
+ messages: [
181
+ { role: "user", content: "What's the weather in Paris?" },
182
+ { role: "assistant", content: response.content },
183
+ {
184
+ role: "user",
185
+ content: [
186
+ { type: "tool_result", tool_use_id: block.id, content: result },
187
+ ],
188
+ },
189
+ ],
190
+ });
191
+ }
192
+ }
193
+ ```
194
+
195
+ ---
196
+
197
+ ## Tool Choice
198
+
199
+ ```typescript
200
+ const response = await client.messages.create({
201
+ model: "claude-opus-4-6",
202
+ max_tokens: 16000,
203
+ tools: tools,
204
+ tool_choice: { type: "tool", name: "get_weather" },
205
+ messages: [{ role: "user", content: "What's the weather in Paris?" }],
206
+ });
207
+ ```
208
+
209
+ ---
210
+
211
+ ## Server-Side Tools
212
+
213
+ Version-suffixed `type` literals; `name` is fixed per interface. Pass plain object literals — the `ToolUnion` type is satisfied structurally. **The `name`/`type` pair must match the interface**: mixing `str_replace_based_edit_tool` (20250728 name) with `text_editor_20250124` (which expects `str_replace_editor`) is a TS2322.
214
+
215
+ **Don't type-annotate as `Tool[]`** — `Tool` is just the custom-tool variant. Let structural typing infer from the `tools` param, or annotate as `Anthropic.Messages.ToolUnion[]` if you must:
216
+
217
+ ```typescript
218
+ // ✓ let inference work — no annotation
219
+ const response = await client.messages.create({
220
+ model: "claude-opus-4-6",
221
+ max_tokens: 16000,
222
+ tools: [
223
+ { type: "text_editor_20250728", name: "str_replace_based_edit_tool" },
224
+ { type: "bash_20250124", name: "bash" },
225
+ { type: "web_search_20260209", name: "web_search" },
226
+ { type: "code_execution_20260120", name: "code_execution" },
227
+ ],
228
+ messages: [{ role: "user", content: "..." }],
229
+ });
230
+
231
+ // ✗ this is a TS2352 — Tool is the CUSTOM tool variant only
232
+ // const tools: Anthropic.Tool[] = [{ type: "text_editor_20250728", ... }]
233
+ ```
234
+
235
+ | Interface | `name` | `type` |
236
+ |---|---|---|
237
+ | `ToolTextEditor20250124` | `str_replace_editor` | `text_editor_20250124` |
238
+ | `ToolTextEditor20250429` | `str_replace_based_edit_tool` | `text_editor_20250429` |
239
+ | `ToolTextEditor20250728` | `str_replace_based_edit_tool` | `text_editor_20250728` |
240
+ | `ToolBash20250124` | `bash` | `bash_20250124` |
241
+ | `WebSearchTool20260209` | `web_search` | `web_search_20260209` |
242
+ | `WebFetchTool20260209` | `web_fetch` | `web_fetch_20260209` |
243
+ | `CodeExecutionTool20260120` | `code_execution` | `code_execution_20260120` |
244
+
245
+ **Don't mix beta and non-beta types**: if you call `client.beta.messages.create()`, the response `content` is `BetaContentBlock[]` — you cannot pass that to a non-beta `ContentBlockParam[]` without narrowing each element.
246
+
247
+ ---
248
+
249
+
250
+ ## Code Execution
251
+
252
+ ### Basic Usage
253
+
254
+ ```typescript
255
+ import Anthropic from "@anthropic-ai/sdk";
256
+
257
+ const client = new Anthropic();
258
+
259
+ const response = await client.messages.create({
260
+ model: "claude-opus-4-6",
261
+ max_tokens: 16000,
262
+ messages: [
263
+ {
264
+ role: "user",
265
+ content:
266
+ "Calculate the mean and standard deviation of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]",
267
+ },
268
+ ],
269
+ tools: [{ type: "code_execution_20260120", name: "code_execution" }],
270
+ });
271
+ ```
272
+
273
+ ### Reading Local Files (ESM note)
274
+
275
+ `__dirname` doesn't exist in ES modules. For script-relative paths use `import.meta.url`:
276
+
277
+ ```typescript
278
+ import { readFileSync } from "fs";
279
+ import { fileURLToPath } from "url";
280
+ import { dirname, join } from "path";
281
+
282
+ const __dirname = dirname(fileURLToPath(import.meta.url));
283
+ const pdfBytes = readFileSync(join(__dirname, "sample.pdf"));
284
+ ```
285
+
286
+ Or use a CWD-relative path if the script runs from a known directory: `readFileSync("./sample.pdf")`.
287
+
288
+ ### Upload Files for Analysis
289
+
290
+ ```typescript
291
+ import Anthropic, { toFile } from "@anthropic-ai/sdk";
292
+ import { createReadStream } from "fs";
293
+
294
+ const client = new Anthropic();
295
+
296
+ // 1. Upload a file
297
+ const uploaded = await client.beta.files.upload({
298
+ file: await toFile(createReadStream("sales_data.csv"), undefined, {
299
+ type: "text/csv",
300
+ }),
301
+ betas: ["files-api-2025-04-14"],
302
+ });
303
+
304
+ // 2. Pass to code execution
305
+ // Code execution is GA; Files API is still beta (pass via RequestOptions)
306
+ const response = await client.messages.create(
307
+ {
308
+ model: "claude-opus-4-6",
309
+ max_tokens: 16000,
310
+ messages: [
311
+ {
312
+ role: "user",
313
+ content: [
314
+ {
315
+ type: "text",
316
+ text: "Analyze this sales data. Show trends and create a visualization.",
317
+ },
318
+ { type: "container_upload", file_id: uploaded.id },
319
+ ],
320
+ },
321
+ ],
322
+ tools: [{ type: "code_execution_20260120", name: "code_execution" }],
323
+ },
324
+ { headers: { "anthropic-beta": "files-api-2025-04-14" } },
325
+ );
326
+ ```
327
+
328
+ ### Retrieve Generated Files
329
+
330
+ ```typescript
331
+ import path from "path";
332
+ import fs from "fs";
333
+
334
+ const OUTPUT_DIR = "./claude_outputs";
335
+ await fs.promises.mkdir(OUTPUT_DIR, { recursive: true });
336
+
337
+ for (const block of response.content) {
338
+ if (block.type === "bash_code_execution_tool_result") {
339
+ const result = block.content;
340
+ if (result.type === "bash_code_execution_result" && result.content) {
341
+ for (const fileRef of result.content) {
342
+ if (fileRef.type === "bash_code_execution_output") {
343
+ const metadata = await client.beta.files.retrieveMetadata(
344
+ fileRef.file_id,
345
+ );
346
+ const downloadResponse = await client.beta.files.download(fileRef.file_id);
347
+ const fileBytes = Buffer.from(await downloadResponse.arrayBuffer());
348
+ const safeName = path.basename(metadata.filename);
349
+ if (!safeName || safeName === "." || safeName === "..") {
350
+ console.warn(`Skipping invalid filename: ${metadata.filename}`);
351
+ continue;
352
+ }
353
+ const outputPath = path.join(OUTPUT_DIR, safeName);
354
+ await fs.promises.writeFile(outputPath, fileBytes);
355
+ console.log(`Saved: ${outputPath}`);
356
+ }
357
+ }
358
+ }
359
+ }
360
+ }
361
+ ```
362
+
363
+ ### Container Reuse
364
+
365
+ ```typescript
366
+ // First request: set up environment
367
+ const response1 = await client.messages.create({
368
+ model: "claude-opus-4-6",
369
+ max_tokens: 16000,
370
+ messages: [
371
+ {
372
+ role: "user",
373
+ content: "Install tabulate and create data.json with sample user data",
374
+ },
375
+ ],
376
+ tools: [{ type: "code_execution_20260120", name: "code_execution" }],
377
+ });
378
+
379
+ // Reuse container
380
+ // container is nullable — set only when using server-side code execution
381
+ const containerId = response1.container!.id;
382
+
383
+ const response2 = await client.messages.create({
384
+ container: containerId,
385
+ model: "claude-opus-4-6",
386
+ max_tokens: 16000,
387
+ messages: [
388
+ {
389
+ role: "user",
390
+ content: "Read data.json and display as a formatted table",
391
+ },
392
+ ],
393
+ tools: [{ type: "code_execution_20260120", name: "code_execution" }],
394
+ });
395
+ ```
396
+
397
+ ---
398
+
399
+ ## Memory Tool
400
+
401
+ ### Basic Usage
402
+
403
+ ```typescript
404
+ const response = await client.messages.create({
405
+ model: "claude-opus-4-6",
406
+ max_tokens: 16000,
407
+ messages: [
408
+ {
409
+ role: "user",
410
+ content: "Remember that my preferred language is TypeScript.",
411
+ },
412
+ ],
413
+ tools: [{ type: "memory_20250818", name: "memory" }],
414
+ });
415
+ ```
416
+
417
+ ### SDK Memory Helper
418
+
419
+ Use `betaMemoryTool` with a `MemoryToolHandlers` implementation:
420
+
421
+ ```typescript
422
+ import {
423
+ betaMemoryTool,
424
+ type MemoryToolHandlers,
425
+ } from "@anthropic-ai/sdk/helpers/beta/memory";
426
+
427
+ const handlers: MemoryToolHandlers = {
428
+ async view(command) { ... },
429
+ async create(command) { ... },
430
+ async str_replace(command) { ... },
431
+ async insert(command) { ... },
432
+ async delete(command) { ... },
433
+ async rename(command) { ... },
434
+ };
435
+
436
+ const memory = betaMemoryTool(handlers);
437
+
438
+ const runner = client.beta.messages.toolRunner({
439
+ model: "claude-opus-4-6",
440
+ max_tokens: 16000,
441
+ tools: [memory],
442
+ messages: [{ role: "user", content: "Remember my preferences" }],
443
+ });
444
+
445
+ for await (const message of runner) {
446
+ console.log(message);
447
+ }
448
+ ```
449
+
450
+ For full implementation examples, use WebFetch:
451
+
452
+ - `https://github.com/anthropics/anthropic-sdk-typescript/blob/main/examples/tools-helpers-memory.ts`
453
+
454
+ ---
455
+
456
+ ## Structured Outputs
457
+
458
+ ### JSON Outputs (Zod — Recommended)
459
+
460
+ ```typescript
461
+ import Anthropic from "@anthropic-ai/sdk";
462
+ import { z } from "zod";
463
+ import { zodOutputFormat } from "@anthropic-ai/sdk/helpers/zod";
464
+
465
+ const ContactInfoSchema = z.object({
466
+ name: z.string(),
467
+ email: z.string(),
468
+ plan: z.string(),
469
+ interests: z.array(z.string()),
470
+ demo_requested: z.boolean(),
471
+ });
472
+
473
+ const client = new Anthropic();
474
+
475
+ const response = await client.messages.parse({
476
+ model: "claude-opus-4-6",
477
+ max_tokens: 16000,
478
+ messages: [
479
+ {
480
+ role: "user",
481
+ content:
482
+ "Extract: Jane Doe (jane@co.com) wants Enterprise, interested in API and SDKs, wants a demo.",
483
+ },
484
+ ],
485
+ output_config: {
486
+ format: zodOutputFormat(ContactInfoSchema),
487
+ },
488
+ });
489
+
490
+ // parsed_output is null if parsing failed — assert or guard
491
+ console.log(response.parsed_output!.name); // "Jane Doe"
492
+ ```
493
+
494
+ ### Strict Tool Use
495
+
496
+ ```typescript
497
+ const response = await client.messages.create({
498
+ model: "claude-opus-4-6",
499
+ max_tokens: 16000,
500
+ messages: [
501
+ {
502
+ role: "user",
503
+ content: "Book a flight to Tokyo for 2 passengers on March 15",
504
+ },
505
+ ],
506
+ tools: [
507
+ {
508
+ name: "book_flight",
509
+ description: "Book a flight to a destination",
510
+ strict: true,
511
+ input_schema: {
512
+ type: "object",
513
+ properties: {
514
+ destination: { type: "string" },
515
+ date: { type: "string", format: "date" },
516
+ passengers: {
517
+ type: "integer",
518
+ enum: [1, 2, 3, 4, 5, 6, 7, 8],
519
+ },
520
+ },
521
+ required: ["destination", "date", "passengers"],
522
+ additionalProperties: false,
523
+ },
524
+ },
525
+ ],
526
+ });
527
+ ```