devskill 2.0.6 → 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 (435) hide show
  1. package/meta.ts +9 -1
  2. package/package.json +1 -1
  3. package/scripts/cli.ts +55 -10
  4. package/skills/algorithmic-art/LICENSE.txt +202 -0
  5. package/skills/algorithmic-art/SKILL.md +405 -0
  6. package/skills/algorithmic-art/SYNC.md +5 -0
  7. package/skills/algorithmic-art/templates/generator_template.js +223 -0
  8. package/skills/algorithmic-art/templates/viewer.html +599 -0
  9. package/skills/brand-guidelines/LICENSE.txt +202 -0
  10. package/skills/brand-guidelines/SKILL.md +73 -0
  11. package/skills/brand-guidelines/SYNC.md +5 -0
  12. package/skills/canvas-design/LICENSE.txt +202 -0
  13. package/skills/canvas-design/SKILL.md +130 -0
  14. package/skills/canvas-design/SYNC.md +5 -0
  15. package/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  16. package/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  17. package/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  18. package/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  19. package/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  20. package/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  21. package/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  22. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  23. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  24. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  25. package/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  26. package/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  27. package/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  28. package/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  29. package/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  30. package/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  31. package/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  32. package/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  33. package/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  34. package/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  35. package/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  36. package/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  37. package/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  38. package/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  39. package/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  40. package/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  41. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  42. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  43. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  44. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  45. package/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  46. package/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  47. package/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  48. package/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  49. package/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  50. package/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  51. package/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  52. package/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  53. package/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  54. package/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  55. package/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  56. package/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  57. package/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  58. package/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  59. package/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  60. package/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  61. package/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  62. package/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  63. package/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  64. package/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  65. package/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  66. package/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  67. package/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  68. package/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  69. package/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  70. package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  71. package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  72. package/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  73. package/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  74. package/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  75. package/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  76. package/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  77. package/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  78. package/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  79. package/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  80. package/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  81. package/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  82. package/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  83. package/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  84. package/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  85. package/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  86. package/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  87. package/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  88. package/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  89. package/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  90. package/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  91. package/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  92. package/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  93. package/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  94. package/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  95. package/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  96. package/skills/claude-api/LICENSE.txt +202 -0
  97. package/skills/claude-api/SKILL.md +246 -0
  98. package/skills/claude-api/SYNC.md +5 -0
  99. package/skills/claude-api/csharp/claude-api.md +400 -0
  100. package/skills/claude-api/curl/examples.md +193 -0
  101. package/skills/claude-api/go/claude-api.md +404 -0
  102. package/skills/claude-api/java/claude-api.md +430 -0
  103. package/skills/claude-api/php/claude-api.md +241 -0
  104. package/skills/claude-api/python/agent-sdk/README.md +345 -0
  105. package/skills/claude-api/python/agent-sdk/patterns.md +359 -0
  106. package/skills/claude-api/python/claude-api/README.md +410 -0
  107. package/skills/claude-api/python/claude-api/batches.md +185 -0
  108. package/skills/claude-api/python/claude-api/files-api.md +165 -0
  109. package/skills/claude-api/python/claude-api/streaming.md +162 -0
  110. package/skills/claude-api/python/claude-api/tool-use.md +590 -0
  111. package/skills/claude-api/ruby/claude-api.md +92 -0
  112. package/skills/claude-api/shared/error-codes.md +206 -0
  113. package/skills/claude-api/shared/live-sources.md +121 -0
  114. package/skills/claude-api/shared/models.md +119 -0
  115. package/skills/claude-api/shared/tool-use-concepts.md +305 -0
  116. package/skills/claude-api/typescript/agent-sdk/README.md +296 -0
  117. package/skills/claude-api/typescript/agent-sdk/patterns.md +209 -0
  118. package/skills/claude-api/typescript/claude-api/README.md +321 -0
  119. package/skills/claude-api/typescript/claude-api/batches.md +106 -0
  120. package/skills/claude-api/typescript/claude-api/files-api.md +98 -0
  121. package/skills/claude-api/typescript/claude-api/streaming.md +178 -0
  122. package/skills/claude-api/typescript/claude-api/tool-use.md +527 -0
  123. package/skills/doc-coauthoring/SKILL.md +375 -0
  124. package/skills/doc-coauthoring/SYNC.md +5 -0
  125. package/skills/docx/LICENSE.txt +30 -0
  126. package/skills/docx/SKILL.md +590 -0
  127. package/skills/docx/SYNC.md +5 -0
  128. package/skills/docx/scripts/__init__.py +1 -0
  129. package/skills/docx/scripts/accept_changes.py +135 -0
  130. package/skills/docx/scripts/comment.py +318 -0
  131. package/skills/docx/scripts/office/helpers/__init__.py +0 -0
  132. package/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
  133. package/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  134. package/skills/docx/scripts/office/pack.py +159 -0
  135. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  136. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  137. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  138. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  139. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  140. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  141. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  142. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  143. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  144. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  145. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  146. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  147. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  148. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  149. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  150. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  151. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  152. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  153. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  154. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  155. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  156. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  157. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  158. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  159. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  160. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  161. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  162. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  163. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  164. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  165. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  166. package/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  167. package/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  168. package/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  169. package/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  170. package/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  171. package/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  172. package/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  173. package/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  174. package/skills/docx/scripts/office/soffice.py +183 -0
  175. package/skills/docx/scripts/office/unpack.py +132 -0
  176. package/skills/docx/scripts/office/validate.py +111 -0
  177. package/skills/docx/scripts/office/validators/__init__.py +15 -0
  178. package/skills/docx/scripts/office/validators/base.py +847 -0
  179. package/skills/docx/scripts/office/validators/docx.py +446 -0
  180. package/skills/docx/scripts/office/validators/pptx.py +275 -0
  181. package/skills/docx/scripts/office/validators/redlining.py +247 -0
  182. package/skills/docx/scripts/templates/comments.xml +3 -0
  183. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  184. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  185. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  186. package/skills/docx/scripts/templates/people.xml +3 -0
  187. package/skills/frontend-design/LICENSE.txt +177 -0
  188. package/skills/frontend-design/SKILL.md +42 -0
  189. package/skills/frontend-design/SYNC.md +5 -0
  190. package/skills/internal-comms/LICENSE.txt +202 -0
  191. package/skills/internal-comms/SKILL.md +32 -0
  192. package/skills/internal-comms/SYNC.md +5 -0
  193. package/skills/internal-comms/examples/3p-updates.md +47 -0
  194. package/skills/internal-comms/examples/company-newsletter.md +65 -0
  195. package/skills/internal-comms/examples/faq-answers.md +30 -0
  196. package/skills/internal-comms/examples/general-comms.md +16 -0
  197. package/skills/mcp-builder/LICENSE.txt +202 -0
  198. package/skills/mcp-builder/SKILL.md +236 -0
  199. package/skills/mcp-builder/SYNC.md +5 -0
  200. package/skills/mcp-builder/reference/evaluation.md +602 -0
  201. package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  202. package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  203. package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  204. package/skills/mcp-builder/scripts/connections.py +151 -0
  205. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  206. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  207. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  208. package/skills/next-best-practices/SKILL.md +153 -0
  209. package/skills/next-best-practices/SYNC.md +5 -0
  210. package/skills/next-best-practices/async-patterns.md +87 -0
  211. package/skills/next-best-practices/bundling.md +180 -0
  212. package/skills/next-best-practices/data-patterns.md +297 -0
  213. package/skills/next-best-practices/debug-tricks.md +105 -0
  214. package/skills/next-best-practices/directives.md +73 -0
  215. package/skills/next-best-practices/error-handling.md +227 -0
  216. package/skills/next-best-practices/file-conventions.md +140 -0
  217. package/skills/next-best-practices/font.md +245 -0
  218. package/skills/next-best-practices/functions.md +108 -0
  219. package/skills/next-best-practices/hydration-error.md +91 -0
  220. package/skills/next-best-practices/image.md +173 -0
  221. package/skills/next-best-practices/metadata.md +301 -0
  222. package/skills/next-best-practices/parallel-routes.md +287 -0
  223. package/skills/next-best-practices/route-handlers.md +146 -0
  224. package/skills/next-best-practices/rsc-boundaries.md +159 -0
  225. package/skills/next-best-practices/runtime-selection.md +39 -0
  226. package/skills/next-best-practices/scripts.md +141 -0
  227. package/skills/next-best-practices/self-hosting.md +371 -0
  228. package/skills/next-best-practices/suspense-boundaries.md +67 -0
  229. package/skills/next-cache-components/SKILL.md +411 -0
  230. package/skills/next-cache-components/SYNC.md +5 -0
  231. package/skills/next-upgrade/SKILL.md +50 -0
  232. package/skills/next-upgrade/SYNC.md +5 -0
  233. package/skills/pdf/LICENSE.txt +30 -0
  234. package/skills/pdf/SKILL.md +314 -0
  235. package/skills/pdf/SYNC.md +5 -0
  236. package/skills/pdf/forms.md +294 -0
  237. package/skills/pdf/reference.md +612 -0
  238. package/skills/pdf/scripts/check_bounding_boxes.py +65 -0
  239. package/skills/pdf/scripts/check_fillable_fields.py +11 -0
  240. package/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
  241. package/skills/pdf/scripts/create_validation_image.py +37 -0
  242. package/skills/pdf/scripts/extract_form_field_info.py +122 -0
  243. package/skills/pdf/scripts/extract_form_structure.py +115 -0
  244. package/skills/pdf/scripts/fill_fillable_fields.py +98 -0
  245. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  246. package/skills/pptx/LICENSE.txt +30 -0
  247. package/skills/pptx/SKILL.md +232 -0
  248. package/skills/pptx/SYNC.md +5 -0
  249. package/skills/pptx/editing.md +205 -0
  250. package/skills/pptx/pptxgenjs.md +420 -0
  251. package/skills/pptx/scripts/__init__.py +0 -0
  252. package/skills/pptx/scripts/add_slide.py +195 -0
  253. package/skills/pptx/scripts/clean.py +286 -0
  254. package/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  255. package/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
  256. package/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  257. package/skills/pptx/scripts/office/pack.py +159 -0
  258. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  259. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  260. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  261. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  262. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  263. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  264. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  265. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  266. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  267. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  268. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  269. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  270. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  271. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  272. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  273. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  274. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  275. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  276. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  277. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  278. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  279. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  280. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  281. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  282. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  283. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  284. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  285. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  286. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  287. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  288. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  289. package/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  290. package/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  291. package/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  292. package/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  293. package/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  294. package/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  295. package/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  296. package/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  297. package/skills/pptx/scripts/office/soffice.py +183 -0
  298. package/skills/pptx/scripts/office/unpack.py +132 -0
  299. package/skills/pptx/scripts/office/validate.py +111 -0
  300. package/skills/pptx/scripts/office/validators/__init__.py +15 -0
  301. package/skills/pptx/scripts/office/validators/base.py +847 -0
  302. package/skills/pptx/scripts/office/validators/docx.py +446 -0
  303. package/skills/pptx/scripts/office/validators/pptx.py +275 -0
  304. package/skills/pptx/scripts/office/validators/redlining.py +247 -0
  305. package/skills/pptx/scripts/thumbnail.py +289 -0
  306. package/skills/shadcn/LICENSE.md +21 -0
  307. package/skills/shadcn/SKILL.md +242 -0
  308. package/skills/shadcn/SYNC.md +5 -0
  309. package/skills/shadcn/agents/openai.yml +5 -0
  310. package/skills/shadcn/assets/shadcn-small.png +0 -0
  311. package/skills/shadcn/assets/shadcn.png +0 -0
  312. package/skills/shadcn/cli.md +257 -0
  313. package/skills/shadcn/customization.md +202 -0
  314. package/skills/shadcn/evals/evals.json +47 -0
  315. package/skills/shadcn/mcp.md +94 -0
  316. package/skills/shadcn/rules/base-vs-radix.md +306 -0
  317. package/skills/shadcn/rules/composition.md +195 -0
  318. package/skills/shadcn/rules/forms.md +192 -0
  319. package/skills/shadcn/rules/icons.md +101 -0
  320. package/skills/shadcn/rules/styling.md +162 -0
  321. package/skills/skill-creator/LICENSE.txt +202 -0
  322. package/skills/skill-creator/SKILL.md +485 -0
  323. package/skills/skill-creator/SYNC.md +5 -0
  324. package/skills/skill-creator/agents/analyzer.md +274 -0
  325. package/skills/skill-creator/agents/comparator.md +202 -0
  326. package/skills/skill-creator/agents/grader.md +223 -0
  327. package/skills/skill-creator/assets/eval_review.html +146 -0
  328. package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  329. package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  330. package/skills/skill-creator/references/schemas.md +430 -0
  331. package/skills/skill-creator/scripts/__init__.py +0 -0
  332. package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  333. package/skills/skill-creator/scripts/generate_report.py +326 -0
  334. package/skills/skill-creator/scripts/improve_description.py +247 -0
  335. package/skills/skill-creator/scripts/package_skill.py +136 -0
  336. package/skills/skill-creator/scripts/quick_validate.py +103 -0
  337. package/skills/skill-creator/scripts/run_eval.py +310 -0
  338. package/skills/skill-creator/scripts/run_loop.py +328 -0
  339. package/skills/skill-creator/scripts/utils.py +47 -0
  340. package/skills/slack-gif-creator/LICENSE.txt +202 -0
  341. package/skills/slack-gif-creator/SKILL.md +254 -0
  342. package/skills/slack-gif-creator/SYNC.md +5 -0
  343. package/skills/slack-gif-creator/core/easing.py +234 -0
  344. package/skills/slack-gif-creator/core/frame_composer.py +176 -0
  345. package/skills/slack-gif-creator/core/gif_builder.py +269 -0
  346. package/skills/slack-gif-creator/core/validators.py +136 -0
  347. package/skills/slack-gif-creator/requirements.txt +4 -0
  348. package/skills/theme-factory/LICENSE.txt +202 -0
  349. package/skills/theme-factory/SKILL.md +59 -0
  350. package/skills/theme-factory/SYNC.md +5 -0
  351. package/skills/theme-factory/theme-showcase.pdf +0 -0
  352. package/skills/theme-factory/themes/arctic-frost.md +19 -0
  353. package/skills/theme-factory/themes/botanical-garden.md +19 -0
  354. package/skills/theme-factory/themes/desert-rose.md +19 -0
  355. package/skills/theme-factory/themes/forest-canopy.md +19 -0
  356. package/skills/theme-factory/themes/golden-hour.md +19 -0
  357. package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  358. package/skills/theme-factory/themes/modern-minimalist.md +19 -0
  359. package/skills/theme-factory/themes/ocean-depths.md +19 -0
  360. package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  361. package/skills/theme-factory/themes/tech-innovation.md +19 -0
  362. package/skills/vue-best-practices/SYNC.md +1 -1
  363. package/skills/vue-jsx-best-practices/SYNC.md +1 -1
  364. package/skills/vue-options-api-best-practices/SYNC.md +1 -1
  365. package/skills/vue-pinia-best-practices/SYNC.md +1 -1
  366. package/skills/vue-router-best-practices/SYNC.md +1 -1
  367. package/skills/vue-testing-best-practices/SYNC.md +1 -1
  368. package/skills/web-artifacts-builder/LICENSE.txt +202 -0
  369. package/skills/web-artifacts-builder/SKILL.md +74 -0
  370. package/skills/web-artifacts-builder/SYNC.md +5 -0
  371. package/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  372. package/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  373. package/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  374. package/skills/webapp-testing/LICENSE.txt +202 -0
  375. package/skills/webapp-testing/SKILL.md +96 -0
  376. package/skills/webapp-testing/SYNC.md +5 -0
  377. package/skills/webapp-testing/examples/console_logging.py +35 -0
  378. package/skills/webapp-testing/examples/element_discovery.py +40 -0
  379. package/skills/webapp-testing/examples/static_html_automation.py +33 -0
  380. package/skills/webapp-testing/scripts/with_server.py +106 -0
  381. package/skills/xlsx/LICENSE.txt +30 -0
  382. package/skills/xlsx/SKILL.md +292 -0
  383. package/skills/xlsx/SYNC.md +5 -0
  384. package/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  385. package/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  386. package/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  387. package/skills/xlsx/scripts/office/pack.py +159 -0
  388. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  389. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  390. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  391. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  392. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  393. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  394. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  395. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  396. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  397. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  398. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  399. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  400. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  401. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  402. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  403. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  404. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  405. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  406. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  407. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  408. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  409. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  410. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  411. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  412. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  413. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  414. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  415. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  416. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  417. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  418. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  419. package/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  420. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  421. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  422. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  423. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  424. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  425. package/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  426. package/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  427. package/skills/xlsx/scripts/office/soffice.py +183 -0
  428. package/skills/xlsx/scripts/office/unpack.py +132 -0
  429. package/skills/xlsx/scripts/office/validate.py +111 -0
  430. package/skills/xlsx/scripts/office/validators/__init__.py +15 -0
  431. package/skills/xlsx/scripts/office/validators/base.py +847 -0
  432. package/skills/xlsx/scripts/office/validators/docx.py +446 -0
  433. package/skills/xlsx/scripts/office/validators/pptx.py +275 -0
  434. package/skills/xlsx/scripts/office/validators/redlining.py +247 -0
  435. package/skills/xlsx/scripts/recalc.py +184 -0
@@ -0,0 +1,430 @@
1
+ # Claude API — Java
2
+
3
+ > **Note:** The Java SDK supports the Claude API and beta tool use with annotated classes. Agent SDK is not yet available for Java.
4
+
5
+ ## Installation
6
+
7
+ Maven:
8
+
9
+ ```xml
10
+ <dependency>
11
+ <groupId>com.anthropic</groupId>
12
+ <artifactId>anthropic-java</artifactId>
13
+ <version>2.16.1</version>
14
+ </dependency>
15
+ ```
16
+
17
+ Gradle:
18
+
19
+ ```groovy
20
+ implementation("com.anthropic:anthropic-java:2.16.1")
21
+ ```
22
+
23
+ ## Client Initialization
24
+
25
+ ```java
26
+ import com.anthropic.client.AnthropicClient;
27
+ import com.anthropic.client.okhttp.AnthropicOkHttpClient;
28
+
29
+ // Default (reads ANTHROPIC_API_KEY from environment)
30
+ AnthropicClient client = AnthropicOkHttpClient.fromEnv();
31
+
32
+ // Explicit API key
33
+ AnthropicClient client = AnthropicOkHttpClient.builder()
34
+ .apiKey("your-api-key")
35
+ .build();
36
+ ```
37
+
38
+ ---
39
+
40
+ ## Basic Message Request
41
+
42
+ ```java
43
+ import com.anthropic.models.messages.MessageCreateParams;
44
+ import com.anthropic.models.messages.Message;
45
+ import com.anthropic.models.messages.Model;
46
+
47
+ MessageCreateParams params = MessageCreateParams.builder()
48
+ .model(Model.CLAUDE_OPUS_4_6)
49
+ .maxTokens(16000L)
50
+ .addUserMessage("What is the capital of France?")
51
+ .build();
52
+
53
+ Message response = client.messages().create(params);
54
+ response.content().stream()
55
+ .flatMap(block -> block.text().stream())
56
+ .forEach(textBlock -> System.out.println(textBlock.text()));
57
+ ```
58
+
59
+ ---
60
+
61
+ ## Streaming
62
+
63
+ ```java
64
+ import com.anthropic.core.http.StreamResponse;
65
+ import com.anthropic.models.messages.RawMessageStreamEvent;
66
+
67
+ MessageCreateParams params = MessageCreateParams.builder()
68
+ .model(Model.CLAUDE_OPUS_4_6)
69
+ .maxTokens(64000L)
70
+ .addUserMessage("Write a haiku")
71
+ .build();
72
+
73
+ try (StreamResponse<RawMessageStreamEvent> streamResponse = client.messages().createStreaming(params)) {
74
+ streamResponse.stream()
75
+ .flatMap(event -> event.contentBlockDelta().stream())
76
+ .flatMap(deltaEvent -> deltaEvent.delta().text().stream())
77
+ .forEach(textDelta -> System.out.print(textDelta.text()));
78
+ }
79
+ ```
80
+
81
+ ---
82
+
83
+ ## Thinking
84
+
85
+ **Adaptive thinking is the recommended mode for Claude 4.6+ models.** Claude decides dynamically when and how much to think. The builder has a direct `.thinking(ThinkingConfigAdaptive)` overload — no manual union wrapping.
86
+
87
+ ```java
88
+ import com.anthropic.models.messages.ContentBlock;
89
+ import com.anthropic.models.messages.MessageCreateParams;
90
+ import com.anthropic.models.messages.Model;
91
+ import com.anthropic.models.messages.ThinkingConfigAdaptive;
92
+
93
+ MessageCreateParams params = MessageCreateParams.builder()
94
+ .model(Model.CLAUDE_SONNET_4_6)
95
+ .maxTokens(16000L)
96
+ .thinking(ThinkingConfigAdaptive.builder().build())
97
+ .addUserMessage("Solve this step by step: 27 * 453")
98
+ .build();
99
+
100
+ for (ContentBlock block : client.messages().create(params).content()) {
101
+ block.thinking().ifPresent(t -> System.out.println("[thinking] " + t.thinking()));
102
+ block.text().ifPresent(t -> System.out.println(t.text()));
103
+ }
104
+ ```
105
+
106
+ > **Deprecated:** `ThinkingConfigEnabled.builder().budgetTokens(N)` (and the `.enabledThinking(N)` shortcut) still works on Claude 4.6 but is deprecated. Use adaptive thinking above.
107
+
108
+ `ContentBlock` narrowing: `.thinking()` / `.text()` return `Optional<T>` — use `.ifPresent(...)` or `.stream().flatMap(...)`. Alternative: `isThinking()` / `asThinking()` boolean+unwrap pairs (throws on wrong variant).
109
+
110
+ ---
111
+
112
+ ## Tool Use (Beta)
113
+
114
+ The Java SDK supports beta tool use with annotated classes. Tool classes implement `Supplier<String>` for automatic execution via `BetaToolRunner`.
115
+
116
+ ### Tool Runner (automatic loop)
117
+
118
+ ```java
119
+ import com.anthropic.models.beta.messages.MessageCreateParams;
120
+ import com.anthropic.models.beta.messages.BetaMessage;
121
+ import com.anthropic.helpers.BetaToolRunner;
122
+ import com.fasterxml.jackson.annotation.JsonClassDescription;
123
+ import com.fasterxml.jackson.annotation.JsonPropertyDescription;
124
+ import java.util.function.Supplier;
125
+
126
+ @JsonClassDescription("Get the weather in a given location")
127
+ static class GetWeather implements Supplier<String> {
128
+ @JsonPropertyDescription("The city and state, e.g. San Francisco, CA")
129
+ public String location;
130
+
131
+ @Override
132
+ public String get() {
133
+ return "The weather in " + location + " is sunny and 72°F";
134
+ }
135
+ }
136
+
137
+ BetaToolRunner toolRunner = client.beta().messages().toolRunner(
138
+ MessageCreateParams.builder()
139
+ .model("claude-opus-4-6")
140
+ .maxTokens(16000L)
141
+ .putAdditionalHeader("anthropic-beta", "structured-outputs-2025-11-13")
142
+ .addTool(GetWeather.class)
143
+ .addUserMessage("What's the weather in San Francisco?")
144
+ .build());
145
+
146
+ for (BetaMessage message : toolRunner) {
147
+ System.out.println(message);
148
+ }
149
+ ```
150
+
151
+ ### Memory Tool
152
+
153
+ The Java SDK provides `BetaMemoryToolHandler` for implementing the memory tool backend. You supply a handler that manages file storage, and the `BetaToolRunner` handles memory tool calls automatically.
154
+
155
+ ```java
156
+ import com.anthropic.helpers.BetaMemoryToolHandler;
157
+ import com.anthropic.helpers.BetaToolRunner;
158
+ import com.anthropic.models.beta.messages.BetaMemoryTool20250818;
159
+ import com.anthropic.models.beta.messages.BetaMessage;
160
+ import com.anthropic.models.beta.messages.MessageCreateParams;
161
+ import com.anthropic.models.beta.messages.ToolRunnerCreateParams;
162
+
163
+ // Implement BetaMemoryToolHandler with your storage backend (e.g., filesystem)
164
+ BetaMemoryToolHandler memoryHandler = new FileSystemMemoryToolHandler(sandboxRoot);
165
+
166
+ MessageCreateParams createParams = MessageCreateParams.builder()
167
+ .model("claude-opus-4-6")
168
+ .maxTokens(4096L)
169
+ .addTool(BetaMemoryTool20250818.builder().build())
170
+ .addUserMessage("Remember that my favorite color is blue")
171
+ .build();
172
+
173
+ BetaToolRunner toolRunner = client.beta().messages().toolRunner(
174
+ ToolRunnerCreateParams.builder()
175
+ .betaMemoryToolHandler(memoryHandler)
176
+ .initialMessageParams(createParams)
177
+ .build());
178
+
179
+ for (BetaMessage message : toolRunner) {
180
+ System.out.println(message);
181
+ }
182
+ ```
183
+
184
+ See the [shared memory tool concepts](../shared/tool-use-concepts.md) for more details on the memory tool.
185
+
186
+ ### Non-Beta Tool Declaration (manual JSON schema)
187
+
188
+ `Tool.InputSchema.Properties` is a freeform `Map<String, JsonValue>` wrapper — build property schemas via `putAdditionalProperty`. `type: "object"` is the default. The builder has a direct `.addTool(Tool)` overload that wraps in `ToolUnion` automatically.
189
+
190
+ ```java
191
+ import com.anthropic.core.JsonValue;
192
+ import com.anthropic.models.messages.Tool;
193
+
194
+ Tool tool = Tool.builder()
195
+ .name("get_weather")
196
+ .description("Get the current weather in a given location")
197
+ .inputSchema(Tool.InputSchema.builder()
198
+ .properties(Tool.InputSchema.Properties.builder()
199
+ .putAdditionalProperty("location", JsonValue.from(Map.of("type", "string")))
200
+ .build())
201
+ .required(List.of("location"))
202
+ .build())
203
+ .build();
204
+
205
+ MessageCreateParams params = MessageCreateParams.builder()
206
+ .model(Model.CLAUDE_SONNET_4_6)
207
+ .maxTokens(16000L)
208
+ .addTool(tool)
209
+ .addUserMessage("Weather in Paris?")
210
+ .build();
211
+ ```
212
+
213
+ For manual tool loops, handle `tool_use` blocks in the response, send `tool_result` back, loop until `stop_reason` is `"end_turn"`. See [shared tool use concepts](../shared/tool-use-concepts.md).
214
+
215
+ ### Building `MessageParam` with Content Blocks (Tool Result Round-Trip)
216
+
217
+ `MessageParam.Content` is an inner union class (string | list). Use the builder's `.contentOfBlockParams(List<ContentBlockParam>)` alias — there is NO separate `MessageParamContent` class with a static `ofBlockParams`:
218
+
219
+ ```java
220
+ import com.anthropic.models.messages.MessageParam;
221
+ import com.anthropic.models.messages.ContentBlockParam;
222
+ import com.anthropic.models.messages.ToolResultBlockParam;
223
+
224
+ List<ContentBlockParam> results = List.of(
225
+ ContentBlockParam.ofToolResult(ToolResultBlockParam.builder()
226
+ .toolUseId(toolUseBlock.id())
227
+ .content(yourResultString)
228
+ .build())
229
+ );
230
+
231
+ MessageParam toolResultMsg = MessageParam.builder()
232
+ .role(MessageParam.Role.USER)
233
+ .contentOfBlockParams(results) // builder alias for Content.ofBlockParams(...)
234
+ .build();
235
+ ```
236
+
237
+ ---
238
+
239
+ ## Effort Parameter
240
+
241
+ Effort is nested inside `OutputConfig` — there is NO `.effort()` directly on `MessageCreateParams.Builder`.
242
+
243
+ ```java
244
+ import com.anthropic.models.messages.OutputConfig;
245
+
246
+ .outputConfig(OutputConfig.builder()
247
+ .effort(OutputConfig.Effort.HIGH) // or LOW, MEDIUM, MAX
248
+ .build())
249
+ ```
250
+
251
+ Combine with `Thinking = ThinkingConfigAdaptive` for cost-quality control.
252
+
253
+ ---
254
+
255
+ ## Prompt Caching
256
+
257
+ System message as a list of `TextBlockParam` with `CacheControlEphemeral`. Use `.systemOfTextBlockParams(...)` — the plain `.system(String)` overload can't carry cache control.
258
+
259
+ ```java
260
+ import com.anthropic.models.messages.TextBlockParam;
261
+ import com.anthropic.models.messages.CacheControlEphemeral;
262
+
263
+ .systemOfTextBlockParams(List.of(
264
+ TextBlockParam.builder()
265
+ .text(longSystemPrompt)
266
+ .cacheControl(CacheControlEphemeral.builder()
267
+ .ttl(CacheControlEphemeral.Ttl.TTL_1H) // optional; also TTL_5M
268
+ .build())
269
+ .build()))
270
+ ```
271
+
272
+ There's also a top-level `.cacheControl(CacheControlEphemeral)` on `MessageCreateParams.Builder` and on `Tool.builder()`.
273
+
274
+ ---
275
+
276
+ ## Token Counting
277
+
278
+ ```java
279
+ import com.anthropic.models.messages.MessageCountTokensParams;
280
+
281
+ long tokens = client.messages().countTokens(
282
+ MessageCountTokensParams.builder()
283
+ .model(Model.CLAUDE_SONNET_4_6)
284
+ .addUserMessage("Hello")
285
+ .build()
286
+ ).inputTokens();
287
+ ```
288
+
289
+ ---
290
+
291
+ ## Structured Output
292
+
293
+ The class-based overload auto-derives the JSON schema from your POJO and gives you a typed `.text()` return — no manual schema, no manual parsing.
294
+
295
+ ```java
296
+ import com.anthropic.models.messages.StructuredMessageCreateParams;
297
+
298
+ record Book(String title, String author) {}
299
+ record BookList(List<Book> books) {}
300
+
301
+ StructuredMessageCreateParams<BookList> params = MessageCreateParams.builder()
302
+ .model(Model.CLAUDE_SONNET_4_6)
303
+ .maxTokens(16000L)
304
+ .outputConfig(BookList.class) // returns a typed builder
305
+ .addUserMessage("List 3 classic novels")
306
+ .build();
307
+
308
+ client.messages().create(params).content().stream()
309
+ .flatMap(cb -> cb.text().stream())
310
+ .forEach(typed -> {
311
+ // typed.text() returns BookList, not String
312
+ for (Book b : typed.text().books()) System.out.println(b.title());
313
+ });
314
+ ```
315
+
316
+ Supports Jackson annotations: `@JsonPropertyDescription`, `@JsonIgnore`, `@ArraySchema(minItems=...)`. Manual schema path: `OutputConfig.builder().format(JsonOutputFormat.builder().schema(...).build())`.
317
+
318
+ ---
319
+
320
+ ## PDF / Document Input
321
+
322
+ `DocumentBlockParam` builder has source shortcuts. Wrap in `ContentBlockParam.ofDocument()` and pass via `.addUserMessageOfBlockParams()`.
323
+
324
+ ```java
325
+ import com.anthropic.models.messages.DocumentBlockParam;
326
+ import com.anthropic.models.messages.ContentBlockParam;
327
+ import com.anthropic.models.messages.TextBlockParam;
328
+
329
+ DocumentBlockParam doc = DocumentBlockParam.builder()
330
+ .base64Source(base64String) // or .urlSource("https://...") or .textSource("...")
331
+ .title("My Document") // optional
332
+ .build();
333
+
334
+ .addUserMessageOfBlockParams(List.of(
335
+ ContentBlockParam.ofDocument(doc),
336
+ ContentBlockParam.ofText(TextBlockParam.builder().text("Summarize this").build())))
337
+ ```
338
+
339
+ ---
340
+
341
+ ## Server-Side Tools
342
+
343
+ Version-suffixed types; `name`/`type` auto-set by builder. Direct `.addTool()` overloads exist for every type — no manual `ToolUnion` wrapping.
344
+
345
+ ```java
346
+ import com.anthropic.models.messages.WebSearchTool20260209;
347
+ import com.anthropic.models.messages.ToolBash20250124;
348
+ import com.anthropic.models.messages.ToolTextEditor20250728;
349
+ import com.anthropic.models.messages.CodeExecutionTool20260120;
350
+
351
+ .addTool(WebSearchTool20260209.builder()
352
+ .maxUses(5L) // optional
353
+ .allowedDomains(List.of("example.com")) // optional
354
+ .build())
355
+ .addTool(ToolBash20250124.builder().build())
356
+ .addTool(ToolTextEditor20250728.builder().build())
357
+ .addTool(CodeExecutionTool20260120.builder().build())
358
+ ```
359
+
360
+ Also available: `WebFetchTool20260209`, `MemoryTool20250818`, `ToolSearchToolBm25_20251119`.
361
+
362
+ ### Beta namespace (MCP, compaction)
363
+
364
+ For beta-only features use `com.anthropic.models.beta.messages.*` — class names have a `Beta` prefix AND live in the beta package. The beta `MessageCreateParams.Builder` has direct `.addTool(BetaToolBash20250124)` overloads AND `.addMcpServer()`:
365
+
366
+ ```java
367
+ import com.anthropic.models.beta.messages.MessageCreateParams;
368
+ import com.anthropic.models.beta.messages.BetaToolBash20250124;
369
+ import com.anthropic.models.beta.messages.BetaCodeExecutionTool20260120;
370
+ import com.anthropic.models.beta.messages.BetaRequestMcpServerUrlDefinition;
371
+
372
+ MessageCreateParams params = MessageCreateParams.builder()
373
+ .model(Model.CLAUDE_OPUS_4_6)
374
+ .maxTokens(16000L)
375
+ .addBeta("mcp-client-2025-11-20")
376
+ .addTool(BetaToolBash20250124.builder().build())
377
+ .addTool(BetaCodeExecutionTool20260120.builder().build())
378
+ .addMcpServer(BetaRequestMcpServerUrlDefinition.builder()
379
+ .name("my-server")
380
+ .url("https://example.com/mcp")
381
+ .build())
382
+ .addUserMessage("...")
383
+ .build();
384
+
385
+ client.beta().messages().create(params);
386
+ ```
387
+
388
+ `BetaTool*` types are NOT interchangeable with non-beta `Tool*` — pick one namespace per request.
389
+
390
+ **Reading server-tool blocks in the response:** `ServerToolUseBlock` has `.id()`, `.name()` (enum), and `._input()` returning raw `JsonValue` — there is NO typed `.input()`. For code execution results, unwrap two levels:
391
+
392
+ ```java
393
+ for (ContentBlock block : response.content()) {
394
+ block.serverToolUse().ifPresent(stu -> {
395
+ System.out.println("tool: " + stu.name() + " input: " + stu._input());
396
+ });
397
+ block.codeExecutionToolResult().ifPresent(r -> {
398
+ r.content().resultBlock().ifPresent(result -> {
399
+ System.out.println("stdout: " + result.stdout());
400
+ System.out.println("stderr: " + result.stderr());
401
+ System.out.println("exit: " + result.returnCode());
402
+ });
403
+ });
404
+ }
405
+ ```
406
+
407
+ ---
408
+
409
+ ## Files API (Beta)
410
+
411
+ Under `client.beta().files()`. File references in messages need the beta message types (non-beta `DocumentBlockParam.Source` has no file-ID variant).
412
+
413
+ ```java
414
+ import com.anthropic.models.beta.files.FileUploadParams;
415
+ import com.anthropic.models.beta.files.FileMetadata;
416
+ import com.anthropic.models.beta.messages.BetaRequestDocumentBlock;
417
+ import java.nio.file.Paths;
418
+
419
+ FileMetadata meta = client.beta().files().upload(
420
+ FileUploadParams.builder()
421
+ .file(Paths.get("/path/to/doc.pdf")) // or .file(InputStream) or .file(byte[])
422
+ .build());
423
+
424
+ // Reference in a beta message:
425
+ BetaRequestDocumentBlock doc = BetaRequestDocumentBlock.builder()
426
+ .fileSource(meta.id())
427
+ .build();
428
+ ```
429
+
430
+ Other methods: `.list()`, `.delete(String fileId)`, `.download(String fileId)`, `.retrieveMetadata(String fileId)`.
@@ -0,0 +1,241 @@
1
+ # Claude API — PHP
2
+
3
+ > **Note:** The PHP SDK is the official Anthropic SDK for PHP. Tool runner and Agent SDK are not available. Bedrock, Vertex AI, and Foundry clients are supported.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ composer require "anthropic-ai/sdk"
9
+ ```
10
+
11
+ ## Client Initialization
12
+
13
+ ```php
14
+ use Anthropic\Client;
15
+
16
+ // Using API key from environment variable
17
+ $client = new Client(apiKey: getenv("ANTHROPIC_API_KEY"));
18
+ ```
19
+
20
+ ### Amazon Bedrock
21
+
22
+ ```php
23
+ use Anthropic\Bedrock;
24
+
25
+ // Constructor is private — use the static factory. Reads AWS credentials from env.
26
+ $client = Bedrock\Client::fromEnvironment(region: 'us-east-1');
27
+ ```
28
+
29
+ ### Google Vertex AI
30
+
31
+ ```php
32
+ use Anthropic\Vertex;
33
+
34
+ // Constructor is private. Parameter is `location`, not `region`.
35
+ $client = Vertex\Client::fromEnvironment(
36
+ location: 'us-east5',
37
+ projectId: 'my-project-id',
38
+ );
39
+ ```
40
+
41
+ ### Anthropic Foundry
42
+
43
+ ```php
44
+ use Anthropic\Foundry;
45
+
46
+ // Constructor is private. baseUrl or resource is required.
47
+ $client = Foundry\Client::withCredentials(
48
+ authToken: getenv('ANTHROPIC_FOUNDRY_AUTH_TOKEN'),
49
+ baseUrl: 'https://<resource>.services.ai.azure.com/anthropic',
50
+ );
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Basic Message Request
56
+
57
+ ```php
58
+ $message = $client->messages->create(
59
+ model: 'claude-opus-4-6',
60
+ maxTokens: 16000,
61
+ messages: [
62
+ ['role' => 'user', 'content' => 'What is the capital of France?'],
63
+ ],
64
+ );
65
+
66
+ // content is an array of polymorphic blocks (TextBlock, ToolUseBlock,
67
+ // ThinkingBlock). Accessing ->text on content[0] without checking the block
68
+ // type will throw if the first block is not a TextBlock (e.g., when extended
69
+ // thinking is enabled and a ThinkingBlock comes first). Always guard:
70
+ foreach ($message->content as $block) {
71
+ if ($block->type === 'text') {
72
+ echo $block->text;
73
+ }
74
+ }
75
+ ```
76
+
77
+ If you only want the first text block:
78
+
79
+ ```php
80
+ foreach ($message->content as $block) {
81
+ if ($block->type === 'text') {
82
+ echo $block->text;
83
+ break;
84
+ }
85
+ }
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Streaming
91
+
92
+ > **Requires SDK v0.5.0+.** v0.4.0 and earlier used a single `$params` array; calling with named parameters throws `Unknown named parameter $model`. Upgrade: `composer require "anthropic-ai/sdk:^0.6"`
93
+
94
+ ```php
95
+ use Anthropic\Messages\RawContentBlockDeltaEvent;
96
+ use Anthropic\Messages\TextDelta;
97
+
98
+ $stream = $client->messages->createStream(
99
+ model: 'claude-opus-4-6',
100
+ maxTokens: 64000,
101
+ messages: [
102
+ ['role' => 'user', 'content' => 'Write a haiku'],
103
+ ],
104
+ );
105
+
106
+ foreach ($stream as $event) {
107
+ if ($event instanceof RawContentBlockDeltaEvent && $event->delta instanceof TextDelta) {
108
+ echo $event->delta->text;
109
+ }
110
+ }
111
+ ```
112
+
113
+ ---
114
+
115
+ ## Tool Use (Manual Loop)
116
+
117
+ Tools are passed as arrays. **The SDK uses camelCase keys** (`inputSchema`, `toolUseID`, `stopReason`) and auto-maps to the API's snake_case on the wire — since v0.5.0. See [shared tool use concepts](../shared/tool-use-concepts.md) for the loop pattern.
118
+
119
+ ```php
120
+ use Anthropic\Messages\ToolUseBlock;
121
+
122
+ $tools = [
123
+ [
124
+ 'name' => 'get_weather',
125
+ 'description' => 'Get the current weather in a given location',
126
+ 'inputSchema' => [ // camelCase, not input_schema
127
+ 'type' => 'object',
128
+ 'properties' => [
129
+ 'location' => ['type' => 'string', 'description' => 'City and state'],
130
+ ],
131
+ 'required' => ['location'],
132
+ ],
133
+ ],
134
+ ];
135
+
136
+ $messages = [['role' => 'user', 'content' => 'What is the weather in SF?']];
137
+
138
+ $response = $client->messages->create(
139
+ model: 'claude-opus-4-6',
140
+ maxTokens: 16000,
141
+ tools: $tools,
142
+ messages: $messages,
143
+ );
144
+
145
+ while ($response->stopReason === 'tool_use') { // camelCase property
146
+ $toolResults = [];
147
+ foreach ($response->content as $block) {
148
+ if ($block instanceof ToolUseBlock) {
149
+ // $block->name : string — tool name to dispatch on
150
+ // $block->input : array<string,mixed> — parsed JSON input
151
+ // $block->id : string — pass back as toolUseID
152
+ $result = executeYourTool($block->name, $block->input);
153
+ $toolResults[] = [
154
+ 'type' => 'tool_result',
155
+ 'toolUseID' => $block->id, // camelCase, not tool_use_id
156
+ 'content' => $result,
157
+ ];
158
+ }
159
+ }
160
+
161
+ // Append assistant turn + user turn with tool results
162
+ $messages[] = ['role' => 'assistant', 'content' => $response->content];
163
+ $messages[] = ['role' => 'user', 'content' => $toolResults];
164
+
165
+ $response = $client->messages->create(
166
+ model: 'claude-opus-4-6',
167
+ maxTokens: 16000,
168
+ tools: $tools,
169
+ messages: $messages,
170
+ );
171
+ }
172
+
173
+ // Final text response
174
+ foreach ($response->content as $block) {
175
+ if ($block->type === 'text') {
176
+ echo $block->text;
177
+ }
178
+ }
179
+ ```
180
+
181
+ `$block->type === 'tool_use'` also works; `instanceof ToolUseBlock` narrows for PHPStan.
182
+
183
+
184
+ ---
185
+
186
+ ## Extended Thinking
187
+
188
+ **Adaptive thinking is the recommended mode for Claude 4.6+ models.** Claude decides dynamically when and how much to think.
189
+
190
+ ```php
191
+ use Anthropic\Messages\ThinkingBlock;
192
+
193
+ $message = $client->messages->create(
194
+ model: 'claude-opus-4-6',
195
+ maxTokens: 16000,
196
+ thinking: ['type' => 'adaptive'],
197
+ messages: [
198
+ ['role' => 'user', 'content' => 'Solve: 27 * 453'],
199
+ ],
200
+ );
201
+
202
+ // ThinkingBlock(s) precede TextBlock in content
203
+ foreach ($message->content as $block) {
204
+ if ($block instanceof ThinkingBlock) {
205
+ echo "Thinking:\n{$block->thinking}\n\n";
206
+ // $block->signature is an opaque string — preserve verbatim if
207
+ // passing thinking blocks back in multi-turn conversations
208
+ } elseif ($block->type === 'text') {
209
+ echo "Answer: {$block->text}\n";
210
+ }
211
+ }
212
+ ```
213
+
214
+ > **Deprecated:** `['type' => 'enabled', 'budgetTokens' => N]` (fixed-budget extended thinking) still works on Claude 4.6 but is deprecated. Use adaptive thinking above.
215
+
216
+ `$block->type === 'thinking'` also works for the check; `instanceof` narrows for PHPStan.
217
+
218
+ ---
219
+
220
+ ## Beta Features & Server-Side Tools
221
+
222
+ **`betas:` is NOT a param on `$client->messages->create()`** — it only exists on the beta namespace. Use it for features that need an explicit opt-in header:
223
+
224
+ ```php
225
+ use Anthropic\Beta\Messages\BetaRequestMCPServerURLDefinition;
226
+
227
+ $response = $client->beta->messages->create(
228
+ model: 'claude-opus-4-6',
229
+ maxTokens: 16000,
230
+ mcpServers: [
231
+ BetaRequestMCPServerURLDefinition::with(
232
+ name: 'my-server',
233
+ url: 'https://example.com/mcp',
234
+ ),
235
+ ],
236
+ betas: ['mcp-client-2025-11-20'], // only valid on ->beta->messages
237
+ messages: [['role' => 'user', 'content' => 'Use the MCP tools']],
238
+ );
239
+ ```
240
+
241
+ **Server-side tools** (bash, web_search, text_editor, code_execution) are GA and work on both paths — `Anthropic\Messages\ToolBash20250124` / `WebSearchTool20260209` / `ToolTextEditor20250728` / `CodeExecutionTool20260120` for non-beta, `Anthropic\Beta\Messages\BetaToolBash20250124` / `BetaWebSearchTool20260209` / `BetaToolTextEditor20250728` / `BetaCodeExecutionTool20260120` for beta. No `betas:` header needed for these.