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,5 @@
1
+ # Sync Info
2
+
3
+ - **Source:** `vendor/anthropics/skills/claude-api`
4
+ - **Git SHA:** `887114fd09f8f24a7e6c907f9ee505348498ab6a`
5
+ - **Synced:** 2026-03-24
@@ -0,0 +1,400 @@
1
+ # Claude API — C#
2
+
3
+ > **Note:** The C# SDK is the official Anthropic SDK for C#. Tool use is supported via the Messages API. A class-annotation-based tool runner is not available; use raw tool definitions with JSON schema. The SDK also supports Microsoft.Extensions.AI IChatClient integration with function invocation.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ dotnet add package Anthropic
9
+ ```
10
+
11
+ ## Client Initialization
12
+
13
+ ```csharp
14
+ using Anthropic;
15
+
16
+ // Default (uses ANTHROPIC_API_KEY env var)
17
+ AnthropicClient client = new();
18
+
19
+ // Explicit API key (use environment variables — never hardcode keys)
20
+ AnthropicClient client = new() {
21
+ ApiKey = Environment.GetEnvironmentVariable("ANTHROPIC_API_KEY")
22
+ };
23
+ ```
24
+
25
+ ---
26
+
27
+ ## Basic Message Request
28
+
29
+ ```csharp
30
+ using Anthropic.Models.Messages;
31
+
32
+ var parameters = new MessageCreateParams
33
+ {
34
+ Model = Model.ClaudeOpus4_6,
35
+ MaxTokens = 16000,
36
+ Messages = [new() { Role = Role.User, Content = "What is the capital of France?" }]
37
+ };
38
+ var response = await client.Messages.Create(parameters);
39
+
40
+ // ContentBlock is a union wrapper. .Value unwraps to the variant object,
41
+ // then OfType<T> filters to the type you want. Or use the TryPick* idiom
42
+ // shown in the Thinking section below.
43
+ foreach (var text in response.Content.Select(b => b.Value).OfType<TextBlock>())
44
+ {
45
+ Console.WriteLine(text.Text);
46
+ }
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Streaming
52
+
53
+ ```csharp
54
+ using Anthropic.Models.Messages;
55
+
56
+ var parameters = new MessageCreateParams
57
+ {
58
+ Model = Model.ClaudeOpus4_6,
59
+ MaxTokens = 64000,
60
+ Messages = [new() { Role = Role.User, Content = "Write a haiku" }]
61
+ };
62
+
63
+ await foreach (RawMessageStreamEvent streamEvent in client.Messages.CreateStreaming(parameters))
64
+ {
65
+ if (streamEvent.TryPickContentBlockDelta(out var delta) &&
66
+ delta.Delta.TryPickText(out var text))
67
+ {
68
+ Console.Write(text.Text);
69
+ }
70
+ }
71
+ ```
72
+
73
+ **`RawMessageStreamEvent` TryPick methods** (naming drops the `Message`/`Raw` prefix): `TryPickStart`, `TryPickDelta`, `TryPickStop`, `TryPickContentBlockStart`, `TryPickContentBlockDelta`, `TryPickContentBlockStop`. There is no `TryPickMessageStop` — use `TryPickStop`.
74
+
75
+ ---
76
+
77
+ ## Thinking
78
+
79
+ **Adaptive thinking is the recommended mode for Claude 4.6+ models.** Claude decides dynamically when and how much to think.
80
+
81
+ ```csharp
82
+ using Anthropic.Models.Messages;
83
+
84
+ var response = await client.Messages.Create(new MessageCreateParams
85
+ {
86
+ Model = Model.ClaudeOpus4_6,
87
+ MaxTokens = 16000,
88
+ // ThinkingConfigParam? implicitly converts from the concrete variant classes —
89
+ // no wrapper needed.
90
+ Thinking = new ThinkingConfigAdaptive(),
91
+ Messages =
92
+ [
93
+ new() { Role = Role.User, Content = "Solve: 27 * 453" },
94
+ ],
95
+ });
96
+
97
+ // ThinkingBlock(s) precede TextBlock in Content. TryPick* narrows the union.
98
+ foreach (var block in response.Content)
99
+ {
100
+ if (block.TryPickThinking(out ThinkingBlock? t))
101
+ {
102
+ Console.WriteLine($"[thinking] {t.Thinking}");
103
+ }
104
+ else if (block.TryPickText(out TextBlock? text))
105
+ {
106
+ Console.WriteLine(text.Text);
107
+ }
108
+ }
109
+ ```
110
+
111
+ > **Deprecated:** `new ThinkingConfigEnabled { BudgetTokens = N }` (fixed-budget extended thinking) still works on Claude 4.6 but is deprecated. Use adaptive thinking above.
112
+
113
+ Alternative to `TryPick*`: `.Select(b => b.Value).OfType<ThinkingBlock>()` (same LINQ pattern as the Basic Message example).
114
+
115
+ ---
116
+
117
+ ## Tool Use
118
+
119
+ ### Defining a tool
120
+
121
+ `Tool` (NOT `ToolParam`) with an `InputSchema` record. `InputSchema.Type` is auto-set to `"object"` by the constructor — don't set it. `ToolUnion` has an implicit conversion from `Tool`, triggered by the collection expression `[...]`.
122
+
123
+ ```csharp
124
+ using System.Text.Json;
125
+ using Anthropic.Models.Messages;
126
+
127
+ var parameters = new MessageCreateParams
128
+ {
129
+ Model = Model.ClaudeSonnet4_6,
130
+ MaxTokens = 16000,
131
+ Tools = [
132
+ new Tool {
133
+ Name = "get_weather",
134
+ Description = "Get the current weather in a given location",
135
+ InputSchema = new() {
136
+ Properties = new Dictionary<string, JsonElement> {
137
+ ["location"] = JsonSerializer.SerializeToElement(
138
+ new { type = "string", description = "City name" }),
139
+ },
140
+ Required = ["location"],
141
+ },
142
+ },
143
+ ],
144
+ Messages = [new() { Role = Role.User, Content = "Weather in Paris?" }],
145
+ };
146
+ ```
147
+
148
+ Derived from `anthropic-sdk-csharp/src/Anthropic/Models/Messages/Tool.cs` and `ToolUnion.cs:799` (implicit conversion).
149
+
150
+ See [shared tool use concepts](../shared/tool-use-concepts.md) for the loop pattern.
151
+ ### Converting response content to the follow-up assistant message
152
+
153
+ When echoing Claude's response back in the assistant turn, **there is no `.ToParam()` helper** — manually reconstruct each `ContentBlock` variant as its `*Param` counterpart. Do NOT use `new ContentBlockParam(block.Json)`: it compiles and serializes, but `.Value` stays `null` so `TryPick*`/`Validate()` fail (degraded JSON pass-through, not the typed path).
154
+
155
+ ```csharp
156
+ using Anthropic.Models.Messages;
157
+
158
+ Message response = await client.Messages.Create(parameters);
159
+
160
+ // No .ToParam() — reconstruct per variant. Implicit conversions from each
161
+ // *Param type to ContentBlockParam mean no explicit wrapper.
162
+ List<ContentBlockParam> assistantContent = [];
163
+ List<ContentBlockParam> toolResults = [];
164
+ foreach (ContentBlock block in response.Content)
165
+ {
166
+ if (block.TryPickText(out TextBlock? text))
167
+ {
168
+ assistantContent.Add(new TextBlockParam { Text = text.Text });
169
+ }
170
+ else if (block.TryPickThinking(out ThinkingBlock? thinking))
171
+ {
172
+ // Signature MUST be preserved — the API rejects tampering
173
+ assistantContent.Add(new ThinkingBlockParam
174
+ {
175
+ Thinking = thinking.Thinking,
176
+ Signature = thinking.Signature,
177
+ });
178
+ }
179
+ else if (block.TryPickRedactedThinking(out RedactedThinkingBlock? redacted))
180
+ {
181
+ assistantContent.Add(new RedactedThinkingBlockParam { Data = redacted.Data });
182
+ }
183
+ else if (block.TryPickToolUse(out ToolUseBlock? toolUse))
184
+ {
185
+ // ToolUseBlock has required Caller; ToolUseBlockParam.Caller is optional — don't copy it
186
+ assistantContent.Add(new ToolUseBlockParam
187
+ {
188
+ ID = toolUse.ID,
189
+ Name = toolUse.Name,
190
+ Input = toolUse.Input,
191
+ });
192
+ // Execute the tool; collect ONE result per tool_use block — the API
193
+ // rejects the follow-up if any tool_use ID lacks a matching tool_result.
194
+ string result = ExecuteYourTool(toolUse.Name, toolUse.Input);
195
+ toolResults.Add(new ToolResultBlockParam
196
+ {
197
+ ToolUseID = toolUse.ID,
198
+ Content = result,
199
+ });
200
+ }
201
+ }
202
+
203
+ // Follow-up: prior messages + assistant echo + user tool_result(s)
204
+ List<MessageParam> followUpMessages =
205
+ [
206
+ .. parameters.Messages,
207
+ new() { Role = Role.Assistant, Content = assistantContent },
208
+ new() { Role = Role.User, Content = toolResults },
209
+ ];
210
+ ```
211
+
212
+ `ToolResultBlockParam` has no tuple constructor — use the object initializer. `Content` is a string-or-list union; a plain `string` implicitly converts.
213
+
214
+ ---
215
+
216
+ ## Context Editing / Compaction (Beta)
217
+
218
+ **Beta-namespace prefix is inconsistent** (source-verified against `src/Anthropic/Models/Beta/Messages/*.cs` @ 12.8.0). No prefix: `MessageCreateParams`, `MessageCountTokensParams`, `Role`. **Everything else has the `Beta` prefix**: `BetaMessageParam`, `BetaMessage`, `BetaContentBlock`, `BetaToolUseBlock`, all block param types. The unprefixed `Role` WILL collide with `Anthropic.Models.Messages.Role` if you import both namespaces (CS0104). Safest: import only Beta; if mixing, alias the beta `Role`:
219
+
220
+ ```csharp
221
+ using Anthropic.Models.Beta.Messages;
222
+ using NonBeta = Anthropic.Models.Messages; // only if you also need non-beta types
223
+ // Now: MessageCreateParams, BetaMessageParam, Role (beta's), NonBeta.Role (if needed)
224
+ ```
225
+
226
+
227
+ `BetaMessage.Content` is `IReadOnlyList<BetaContentBlock>` — a 15-variant discriminated union. Narrow with `TryPick*`. **Response `BetaContentBlock` is NOT assignable to param `BetaContentBlockParam`** — there's no `.ToParam()` in C#. Round-trip by converting each block:
228
+
229
+ ```csharp
230
+ using Anthropic.Models.Beta.Messages;
231
+
232
+ var betaParams = new MessageCreateParams // no Beta prefix — one of only 2 unprefixed
233
+ {
234
+ Model = Model.ClaudeOpus4_6,
235
+ MaxTokens = 16000,
236
+ Betas = ["compact-2026-01-12"],
237
+ ContextManagement = new BetaContextManagementConfig
238
+ {
239
+ Edits = [new BetaCompact20260112Edit()],
240
+ },
241
+ Messages = messages,
242
+ };
243
+ BetaMessage resp = await client.Beta.Messages.Create(betaParams);
244
+
245
+ foreach (BetaContentBlock block in resp.Content)
246
+ {
247
+ if (block.TryPickCompaction(out BetaCompactionBlock? compaction))
248
+ {
249
+ // Content is nullable — compaction can fail server-side
250
+ Console.WriteLine($"compaction summary: {compaction.Content}");
251
+ }
252
+ }
253
+
254
+ // Context-edit metadata lives on a separate nullable field
255
+ if (resp.ContextManagement is { } ctx)
256
+ {
257
+ foreach (var edit in ctx.AppliedEdits)
258
+ Console.WriteLine($"cleared {edit.ClearedInputTokens} tokens");
259
+ }
260
+
261
+ // ROUND-TRIP: BetaMessageParam.Content is BetaMessageParamContent (a string|list
262
+ // union). It implicit-converts from List<BetaContentBlockParam>, NOT from the
263
+ // response's IReadOnlyList<BetaContentBlock>. Convert each block:
264
+ List<BetaContentBlockParam> paramBlocks = [];
265
+ foreach (var b in resp.Content)
266
+ {
267
+ if (b.TryPickText(out var t)) paramBlocks.Add(new BetaTextBlockParam { Text = t.Text });
268
+ else if (b.TryPickCompaction(out var c)) paramBlocks.Add(new BetaCompactionBlockParam { Content = c.Content });
269
+ // ... other variants as needed
270
+ }
271
+ messages.Add(new BetaMessageParam { Role = Role.Assistant, Content = paramBlocks });
272
+ ```
273
+
274
+ All 15 `BetaContentBlock.TryPick*` variants: `Text`, `Thinking`, `RedactedThinking`, `ToolUse`, `ServerToolUse`, `WebSearchToolResult`, `WebFetchToolResult`, `CodeExecutionToolResult`, `BashCodeExecutionToolResult`, `TextEditorCodeExecutionToolResult`, `ToolSearchToolResult`, `McpToolUse`, `McpToolResult`, `ContainerUpload`, `Compaction`.
275
+
276
+ **`BetaToolUseBlock.Input` is `IReadOnlyDictionary<string, JsonElement>`** — index by key then call the `JsonElement` extractor:
277
+
278
+ ```csharp
279
+ if (block.TryPickToolUse(out BetaToolUseBlock? tu))
280
+ {
281
+ int a = tu.Input["a"].GetInt32();
282
+ string s = tu.Input["name"].GetString()!;
283
+ }
284
+ ```
285
+
286
+ ---
287
+
288
+ ## Effort Parameter
289
+
290
+ Effort is nested under `OutputConfig`, NOT a top-level property. `ApiEnum<string, Effort>` has an implicit conversion from the enum, so assign `Effort.High` directly.
291
+
292
+ ```csharp
293
+ OutputConfig = new OutputConfig { Effort = Effort.High },
294
+ ```
295
+
296
+ Values: `Effort.Low`, `Effort.Medium`, `Effort.High`, `Effort.Max`. Combine with `Thinking = new ThinkingConfigAdaptive()` for cost-quality control.
297
+
298
+ ---
299
+
300
+ ## Prompt Caching
301
+
302
+ `System` takes `MessageCreateParamsSystem?` — a union of `string` or `List<TextBlockParam>`. There is no `SystemTextBlockParam`; use plain `TextBlockParam`. The implicit conversion needs the concrete `List<TextBlockParam>` type (array literals won't convert).
303
+
304
+ ```csharp
305
+ System = new List<TextBlockParam> {
306
+ new() {
307
+ Text = longSystemPrompt,
308
+ CacheControl = new CacheControlEphemeral(), // auto-sets Type = "ephemeral"
309
+ },
310
+ },
311
+ ```
312
+
313
+ Optional `Ttl` on `CacheControlEphemeral`: `new() { Ttl = Ttl.Ttl1h }` or `Ttl.Ttl5m`. `CacheControl` also exists on `Tool.CacheControl` and top-level `MessageCreateParams.CacheControl`.
314
+
315
+ ---
316
+
317
+ ## Token Counting
318
+
319
+ ```csharp
320
+ MessageTokensCount result = await client.Messages.CountTokens(new MessageCountTokensParams {
321
+ Model = Model.ClaudeOpus4_6,
322
+ Messages = [new() { Role = Role.User, Content = "Hello" }],
323
+ });
324
+ long tokens = result.InputTokens;
325
+ ```
326
+
327
+ `MessageCountTokensParams.Tools` uses a different union type (`MessageCountTokensTool`) than `MessageCreateParams.Tools` (`ToolUnion`) — if you're passing tools, the compiler will tell you when it matters.
328
+
329
+ ---
330
+
331
+ ## Structured Output
332
+
333
+ ```csharp
334
+ OutputConfig = new OutputConfig {
335
+ Format = new JsonOutputFormat {
336
+ Schema = new Dictionary<string, JsonElement> {
337
+ ["type"] = JsonSerializer.SerializeToElement("object"),
338
+ ["properties"] = JsonSerializer.SerializeToElement(
339
+ new { name = new { type = "string" } }),
340
+ ["required"] = JsonSerializer.SerializeToElement(new[] { "name" }),
341
+ },
342
+ },
343
+ },
344
+ ```
345
+
346
+ `JsonOutputFormat.Type` is auto-set to `"json_schema"` by the constructor. `Schema` is `required`.
347
+
348
+ ---
349
+
350
+ ## PDF / Document Input
351
+
352
+ `DocumentBlockParam` takes a `DocumentBlockParamSource` union: `Base64PdfSource` / `UrlPdfSource` / `PlainTextSource` / `ContentBlockSource`. `Base64PdfSource` auto-sets `MediaType = "application/pdf"` and `Type = "base64"`.
353
+
354
+ ```csharp
355
+ new MessageParam {
356
+ Role = Role.User,
357
+ Content = new List<ContentBlockParam> {
358
+ new DocumentBlockParam { Source = new Base64PdfSource { Data = base64String } },
359
+ new TextBlockParam { Text = "Summarize this PDF" },
360
+ },
361
+ }
362
+ ```
363
+
364
+ ---
365
+
366
+ ## Server-Side Tools
367
+
368
+ Web search, bash, text editor, and code execution are built-in server tools. Type names are version-suffixed; constructors auto-set `name`/`type`. All implicit-convert to `ToolUnion`.
369
+
370
+ ```csharp
371
+ Tools = [
372
+ new WebSearchTool20260209(),
373
+ new ToolBash20250124(),
374
+ new ToolTextEditor20250728(),
375
+ new CodeExecutionTool20260120(),
376
+ ],
377
+ ```
378
+
379
+ Also available: `WebFetchTool20260209`, `MemoryTool20250818`. `WebSearchTool20260209` optionals: `AllowedDomains`, `BlockedDomains`, `MaxUses`, `UserLocation`.
380
+
381
+ ---
382
+
383
+ ## Files API (Beta)
384
+
385
+ Files live under `client.Beta.Files` (namespace `Anthropic.Models.Beta.Files`). `BinaryContent` implicit-converts from `Stream` and `byte[]`.
386
+
387
+ ```csharp
388
+ using Anthropic.Models.Beta.Files;
389
+ using Anthropic.Models.Beta.Messages;
390
+
391
+ FileMetadata meta = await client.Beta.Files.Upload(
392
+ new FileUploadParams { File = File.OpenRead("doc.pdf") });
393
+
394
+ // Referencing the uploaded file requires Beta message types:
395
+ new BetaRequestDocumentBlock {
396
+ Source = new BetaFileDocumentSource { FileID = meta.ID },
397
+ }
398
+ ```
399
+
400
+ The non-beta `DocumentBlockParamSource` union has no file-ID variant — file references need `client.Beta.Messages.Create()`.
@@ -0,0 +1,193 @@
1
+ # Claude API — cURL / Raw HTTP
2
+
3
+ Use these examples when the user needs raw HTTP requests or is working in a language without an official SDK.
4
+
5
+ ## Setup
6
+
7
+ ```bash
8
+ export ANTHROPIC_API_KEY="your-api-key"
9
+ ```
10
+
11
+ ---
12
+
13
+ ## Basic Message Request
14
+
15
+ ```bash
16
+ curl https://api.anthropic.com/v1/messages \
17
+ -H "Content-Type: application/json" \
18
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
19
+ -H "anthropic-version: 2023-06-01" \
20
+ -d '{
21
+ "model": "claude-opus-4-6",
22
+ "max_tokens": 16000,
23
+ "messages": [
24
+ {"role": "user", "content": "What is the capital of France?"}
25
+ ]
26
+ }'
27
+ ```
28
+
29
+ ### Parsing the response
30
+
31
+ Use `jq` to extract fields from the JSON response. Do not use `grep`/`sed` —
32
+ JSON strings can contain any character and regex parsing will break on quotes,
33
+ escapes, or multi-line content.
34
+
35
+ ```bash
36
+ # Capture the response, then extract fields
37
+ response=$(curl -s https://api.anthropic.com/v1/messages \
38
+ -H "Content-Type: application/json" \
39
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
40
+ -H "anthropic-version: 2023-06-01" \
41
+ -d '{"model":"claude-opus-4-6","max_tokens":16000,"messages":[{"role":"user","content":"Hello"}]}')
42
+
43
+ # Print the first text block (-r strips the JSON quotes)
44
+ echo "$response" | jq -r '.content[0].text'
45
+
46
+ # Read usage fields
47
+ input_tokens=$(echo "$response" | jq -r '.usage.input_tokens')
48
+ output_tokens=$(echo "$response" | jq -r '.usage.output_tokens')
49
+
50
+ # Read stop reason (for tool-use loops)
51
+ stop_reason=$(echo "$response" | jq -r '.stop_reason')
52
+
53
+ # Extract all text blocks (content is an array; filter to type=="text")
54
+ echo "$response" | jq -r '.content[] | select(.type == "text") | .text'
55
+ ```
56
+
57
+
58
+ ---
59
+
60
+ ## Streaming (SSE)
61
+
62
+ ```bash
63
+ curl https://api.anthropic.com/v1/messages \
64
+ -H "Content-Type: application/json" \
65
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
66
+ -H "anthropic-version: 2023-06-01" \
67
+ -d '{
68
+ "model": "claude-opus-4-6",
69
+ "max_tokens": 64000,
70
+ "stream": true,
71
+ "messages": [{"role": "user", "content": "Write a haiku"}]
72
+ }'
73
+ ```
74
+
75
+ The response is a stream of Server-Sent Events:
76
+
77
+ ```
78
+ event: message_start
79
+ data: {"type":"message_start","message":{"id":"msg_...","type":"message",...}}
80
+
81
+ event: content_block_start
82
+ data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
83
+
84
+ event: content_block_delta
85
+ data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}
86
+
87
+ event: content_block_stop
88
+ data: {"type":"content_block_stop","index":0}
89
+
90
+ event: message_delta
91
+ data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":12}}
92
+
93
+ event: message_stop
94
+ data: {"type":"message_stop"}
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Tool Use
100
+
101
+ ```bash
102
+ curl https://api.anthropic.com/v1/messages \
103
+ -H "Content-Type: application/json" \
104
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
105
+ -H "anthropic-version: 2023-06-01" \
106
+ -d '{
107
+ "model": "claude-opus-4-6",
108
+ "max_tokens": 16000,
109
+ "tools": [{
110
+ "name": "get_weather",
111
+ "description": "Get current weather for a location",
112
+ "input_schema": {
113
+ "type": "object",
114
+ "properties": {
115
+ "location": {"type": "string", "description": "City name"}
116
+ },
117
+ "required": ["location"]
118
+ }
119
+ }],
120
+ "messages": [{"role": "user", "content": "What is the weather in Paris?"}]
121
+ }'
122
+ ```
123
+
124
+ When Claude responds with a `tool_use` block, send the result back:
125
+
126
+ ```bash
127
+ curl https://api.anthropic.com/v1/messages \
128
+ -H "Content-Type: application/json" \
129
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
130
+ -H "anthropic-version: 2023-06-01" \
131
+ -d '{
132
+ "model": "claude-opus-4-6",
133
+ "max_tokens": 16000,
134
+ "tools": [{
135
+ "name": "get_weather",
136
+ "description": "Get current weather for a location",
137
+ "input_schema": {
138
+ "type": "object",
139
+ "properties": {
140
+ "location": {"type": "string", "description": "City name"}
141
+ },
142
+ "required": ["location"]
143
+ }
144
+ }],
145
+ "messages": [
146
+ {"role": "user", "content": "What is the weather in Paris?"},
147
+ {"role": "assistant", "content": [
148
+ {"type": "text", "text": "Let me check the weather."},
149
+ {"type": "tool_use", "id": "toolu_abc123", "name": "get_weather", "input": {"location": "Paris"}}
150
+ ]},
151
+ {"role": "user", "content": [
152
+ {"type": "tool_result", "tool_use_id": "toolu_abc123", "content": "72°F and sunny"}
153
+ ]}
154
+ ]
155
+ }'
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Extended Thinking
161
+
162
+ > **Opus 4.6 and Sonnet 4.6:** Use adaptive thinking. `budget_tokens` is deprecated on both Opus 4.6 and Sonnet 4.6.
163
+ > **Older models:** Use `"type": "enabled"` with `"budget_tokens": N` (must be < `max_tokens`, min 1024).
164
+
165
+ ```bash
166
+ # Opus 4.6: adaptive thinking (recommended)
167
+ curl https://api.anthropic.com/v1/messages \
168
+ -H "Content-Type: application/json" \
169
+ -H "x-api-key: $ANTHROPIC_API_KEY" \
170
+ -H "anthropic-version: 2023-06-01" \
171
+ -d '{
172
+ "model": "claude-opus-4-6",
173
+ "max_tokens": 16000,
174
+ "thinking": {
175
+ "type": "adaptive"
176
+ },
177
+ "output_config": {
178
+ "effort": "high"
179
+ },
180
+ "messages": [{"role": "user", "content": "Solve this step by step..."}]
181
+ }'
182
+ ```
183
+
184
+ ---
185
+
186
+ ## Required Headers
187
+
188
+ | Header | Value | Description |
189
+ | ------------------- | ------------------ | -------------------------- |
190
+ | `Content-Type` | `application/json` | Required |
191
+ | `x-api-key` | Your API key | Authentication |
192
+ | `anthropic-version` | `2023-06-01` | API version |
193
+ | `anthropic-beta` | Beta feature IDs | Required for beta features |