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,345 @@
1
+ # Agent SDK — Python
2
+
3
+ The Claude Agent SDK provides a higher-level interface for building AI agents with built-in tools, safety features, and agentic capabilities.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install claude-agent-sdk
9
+ ```
10
+
11
+ ---
12
+
13
+ ## Quick Start
14
+
15
+ ```python
16
+ import anyio
17
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
18
+
19
+ async def main():
20
+ async for message in query(
21
+ prompt="Explain this codebase",
22
+ options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"])
23
+ ):
24
+ if isinstance(message, ResultMessage):
25
+ print(message.result)
26
+
27
+ anyio.run(main)
28
+ ```
29
+
30
+ ---
31
+
32
+ ## Built-in Tools
33
+
34
+ | Tool | Description |
35
+ | --------- | ------------------------------------ |
36
+ | Read | Read files in the workspace |
37
+ | Write | Create new files |
38
+ | Edit | Make precise edits to existing files |
39
+ | Bash | Execute shell commands |
40
+ | Glob | Find files by pattern |
41
+ | Grep | Search files by content |
42
+ | WebSearch | Search the web for information |
43
+ | WebFetch | Fetch and analyze web pages |
44
+ | AskUserQuestion | Ask user clarifying questions |
45
+ | Agent | Spawn subagents |
46
+
47
+ ---
48
+
49
+ ## Primary Interfaces
50
+
51
+ ### `query()` — Simple One-Shot Usage
52
+
53
+ The `query()` function is the simplest way to run an agent. It returns an async iterator of messages.
54
+
55
+ ```python
56
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
57
+
58
+ async for message in query(
59
+ prompt="Explain this codebase",
60
+ options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"])
61
+ ):
62
+ if isinstance(message, ResultMessage):
63
+ print(message.result)
64
+ ```
65
+
66
+ ### `ClaudeSDKClient` — Full Control
67
+
68
+ `ClaudeSDKClient` provides full control over the agent lifecycle. Use it when you need custom tools, hooks, streaming, or the ability to interrupt execution.
69
+
70
+ ```python
71
+ import anyio
72
+ from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock
73
+
74
+ async def main():
75
+ options = ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"])
76
+ async with ClaudeSDKClient(options=options) as client:
77
+ await client.query("Explain this codebase")
78
+ async for message in client.receive_response():
79
+ if isinstance(message, AssistantMessage):
80
+ for block in message.content:
81
+ if isinstance(block, TextBlock):
82
+ print(block.text)
83
+
84
+ anyio.run(main)
85
+ ```
86
+
87
+ `ClaudeSDKClient` supports:
88
+
89
+ - **Context manager** (`async with`) for automatic resource cleanup
90
+ - **`client.query(prompt)`** to send a prompt to the agent
91
+ - **`receive_response()`** for streaming messages until completion
92
+ - **`interrupt()`** to stop agent execution mid-task
93
+ - **Required for custom tools** (via SDK MCP servers)
94
+
95
+ ---
96
+
97
+ ## Permission System
98
+
99
+ ```python
100
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
101
+
102
+ async for message in query(
103
+ prompt="Refactor the authentication module",
104
+ options=ClaudeAgentOptions(
105
+ allowed_tools=["Read", "Edit", "Write"],
106
+ permission_mode="acceptEdits" # Auto-accept file edits
107
+ )
108
+ ):
109
+ if isinstance(message, ResultMessage):
110
+ print(message.result)
111
+ ```
112
+
113
+ Permission modes:
114
+
115
+ - `"default"`: Prompt for dangerous operations
116
+ - `"plan"`: Planning only, no execution
117
+ - `"acceptEdits"`: Auto-accept file edits
118
+ - `"bypassPermissions"`: Skip all prompts (use with caution)
119
+
120
+ ---
121
+
122
+ ## MCP (Model Context Protocol) Support
123
+
124
+ ```python
125
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
126
+
127
+ async for message in query(
128
+ prompt="Open example.com and describe what you see",
129
+ options=ClaudeAgentOptions(
130
+ mcp_servers={
131
+ "playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}
132
+ }
133
+ )
134
+ ):
135
+ if isinstance(message, ResultMessage):
136
+ print(message.result)
137
+ ```
138
+
139
+ ---
140
+
141
+ ## Hooks
142
+
143
+ Customize agent behavior with hooks using callback functions:
144
+
145
+ ```python
146
+ from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, ResultMessage
147
+
148
+ async def log_file_change(input_data, tool_use_id, context):
149
+ file_path = input_data.get('tool_input', {}).get('file_path', 'unknown')
150
+ print(f"Modified: {file_path}")
151
+ return {}
152
+
153
+ async for message in query(
154
+ prompt="Refactor utils.py",
155
+ options=ClaudeAgentOptions(
156
+ permission_mode="acceptEdits",
157
+ hooks={
158
+ "PostToolUse": [HookMatcher(matcher="Edit|Write", hooks=[log_file_change])]
159
+ }
160
+ )
161
+ ):
162
+ if isinstance(message, ResultMessage):
163
+ print(message.result)
164
+ ```
165
+
166
+ Hook callback inputs for tool-lifecycle events (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`) include `agent_id` and `agent_type` fields, allowing hooks to identify which agent (main or subagent) triggered the tool call.
167
+
168
+ Available hook events: `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `UserPromptSubmit`, `Stop`, `SubagentStop`, `PreCompact`, `Notification`, `SubagentStart`, `PermissionRequest`
169
+
170
+ ---
171
+
172
+ ## Common Options
173
+
174
+ `query()` takes a top-level `prompt` (string) and an `options` object (`ClaudeAgentOptions`):
175
+
176
+ ```python
177
+ async for message in query(prompt="...", options=ClaudeAgentOptions(...)):
178
+ ```
179
+
180
+ | Option | Type | Description |
181
+ | ----------------------------------- | ------ | -------------------------------------------------------------------------- |
182
+ | `cwd` | string | Working directory for file operations |
183
+ | `allowed_tools` | list | Tools the agent can use (e.g., `["Read", "Edit", "Bash"]`) |
184
+ | `tools` | list | Built-in tools to make available (restricts the default set) |
185
+ | `disallowed_tools` | list | Tools to explicitly disallow |
186
+ | `permission_mode` | string | How to handle permission prompts |
187
+ | `mcp_servers` | dict | MCP servers to connect to |
188
+ | `hooks` | dict | Hooks for customizing behavior |
189
+ | `system_prompt` | string | Custom system prompt |
190
+ | `max_turns` | int | Maximum agent turns before stopping |
191
+ | `max_budget_usd` | float | Maximum budget in USD for the query |
192
+ | `model` | string | Model ID (default: determined by CLI) |
193
+ | `agents` | dict | Subagent definitions (`dict[str, AgentDefinition]`) |
194
+ | `output_format` | dict | Structured output schema |
195
+ | `thinking` | dict | Thinking/reasoning control |
196
+ | `betas` | list | Beta features to enable (e.g., `["context-1m-2025-08-07"]`) |
197
+ | `setting_sources` | list | Settings to load (e.g., `["project"]`). Default: none (no CLAUDE.md files) |
198
+ | `env` | dict | Environment variables to set for the session |
199
+
200
+ ---
201
+
202
+ ## Message Types
203
+
204
+ ```python
205
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage, SystemMessage
206
+
207
+ async for message in query(
208
+ prompt="Find TODO comments",
209
+ options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"])
210
+ ):
211
+ if isinstance(message, ResultMessage):
212
+ print(message.result)
213
+ print(f"Stop reason: {message.stop_reason}") # e.g., "end_turn", "max_turns"
214
+ elif isinstance(message, SystemMessage) and message.subtype == "init":
215
+ session_id = message.data.get("session_id") # Capture for resuming later
216
+ ```
217
+
218
+ Typed task message subclasses are available for better type safety when handling subagent task events:
219
+ - `TaskStartedMessage` — emitted when a subagent task is registered
220
+ - `TaskProgressMessage` — real-time progress updates with cumulative usage metrics
221
+ - `TaskNotificationMessage` — task completion notifications
222
+
223
+ `RateLimitEvent` is emitted when the rate limit status transitions (e.g., from `allowed` to `allowed_warning` or `rejected`). Use it to warn users or back off gracefully:
224
+
225
+ ```python
226
+ from claude_agent_sdk import query, ClaudeAgentOptions, RateLimitEvent
227
+
228
+ async for message in query(prompt="...", options=ClaudeAgentOptions()):
229
+ if isinstance(message, RateLimitEvent):
230
+ print(f"Rate limit status: {message.rate_limit_info.status}")
231
+ if message.rate_limit_info.resets_at:
232
+ print(f"Resets at: {message.rate_limit_info.resets_at}")
233
+ ```
234
+
235
+ ---
236
+
237
+ ## Subagents
238
+
239
+ ```python
240
+ from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition, ResultMessage
241
+
242
+ async for message in query(
243
+ prompt="Use the code-reviewer agent to review this codebase",
244
+ options=ClaudeAgentOptions(
245
+ allowed_tools=["Read", "Glob", "Grep", "Agent"],
246
+ agents={
247
+ "code-reviewer": AgentDefinition(
248
+ description="Expert code reviewer for quality and security reviews.",
249
+ prompt="Analyze code quality and suggest improvements.",
250
+ tools=["Read", "Glob", "Grep"]
251
+ )
252
+ }
253
+ )
254
+ ):
255
+ if isinstance(message, ResultMessage):
256
+ print(message.result)
257
+ ```
258
+
259
+ ---
260
+
261
+ ## Error Handling
262
+
263
+ ```python
264
+ from claude_agent_sdk import query, ClaudeAgentOptions, CLINotFoundError, CLIConnectionError, ResultMessage
265
+
266
+ try:
267
+ async for message in query(
268
+ prompt="...",
269
+ options=ClaudeAgentOptions(allowed_tools=["Read"])
270
+ ):
271
+ if isinstance(message, ResultMessage):
272
+ print(message.result)
273
+ except CLINotFoundError:
274
+ print("Claude Code CLI not found. Install with: pip install claude-agent-sdk")
275
+ except CLIConnectionError as e:
276
+ print(f"Connection error: {e}")
277
+ ```
278
+
279
+ ---
280
+
281
+ ## Session History
282
+
283
+ Retrieve past session data with top-level functions:
284
+
285
+ ```python
286
+ from claude_agent_sdk import list_sessions, get_session_messages
287
+
288
+ # List all past sessions (sync function — no await)
289
+ sessions = list_sessions()
290
+ for session in sessions:
291
+ print(f"{session.session_id}: {session.cwd}")
292
+
293
+ # Get messages from a specific session (sync function — no await)
294
+ messages = get_session_messages(session_id="...")
295
+ for msg in messages:
296
+ print(msg)
297
+ ```
298
+
299
+ ### Session Mutations
300
+
301
+ Rename or tag sessions (sync functions — no await):
302
+
303
+ ```python
304
+ from claude_agent_sdk import rename_session, tag_session
305
+
306
+ # Rename a session
307
+ rename_session(session_id="...", title="My refactoring session")
308
+
309
+ # Tag a session (tags are Unicode-sanitized automatically)
310
+ tag_session(session_id="...", tag="experiment")
311
+
312
+ # Clear a tag
313
+ tag_session(session_id="...", tag=None)
314
+
315
+ # Optionally scope to a specific project directory
316
+ rename_session(session_id="...", title="New title", directory="/path/to/project")
317
+ ```
318
+
319
+ ---
320
+
321
+ ## MCP Server Management
322
+
323
+ Manage MCP servers at runtime using `ClaudeSDKClient`:
324
+
325
+ ```python
326
+ async with ClaudeSDKClient(options=options) as client:
327
+ # Reconnect a disconnected MCP server
328
+ await client.reconnect_mcp_server("my-server")
329
+
330
+ # Toggle an MCP server on/off
331
+ await client.toggle_mcp_server("my-server", enabled=False)
332
+
333
+ # Get status of all MCP servers
334
+ status = await client.get_mcp_status() # returns McpStatusResponse
335
+ ```
336
+
337
+ ---
338
+
339
+ ## Best Practices
340
+
341
+ 1. **Always specify allowed_tools** — Explicitly list which tools the agent can use
342
+ 2. **Set working directory** — Always specify `cwd` for file operations
343
+ 3. **Use appropriate permission modes** — Start with `"default"` and only escalate when needed
344
+ 4. **Handle all message types** — Check for `ResultMessage` to get agent output
345
+ 5. **Limit max_turns** — Prevent runaway agents with reasonable limits
@@ -0,0 +1,359 @@
1
+ # Agent SDK Patterns — Python
2
+
3
+ ## Basic Agent
4
+
5
+ ```python
6
+ import anyio
7
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
8
+
9
+ async def main():
10
+ async for message in query(
11
+ prompt="Explain what this repository does",
12
+ options=ClaudeAgentOptions(
13
+ cwd="/path/to/project",
14
+ allowed_tools=["Read", "Glob", "Grep"]
15
+ )
16
+ ):
17
+ if isinstance(message, ResultMessage):
18
+ print(message.result)
19
+
20
+ anyio.run(main)
21
+ ```
22
+
23
+ ---
24
+
25
+ ## Custom Tools
26
+
27
+ Custom tools require an MCP server. Use `ClaudeSDKClient` for full control (custom SDK MCP tools require `ClaudeSDKClient` — `query()` only supports external stdio/http MCP servers).
28
+
29
+ ```python
30
+ import anyio
31
+ from claude_agent_sdk import (
32
+ tool,
33
+ create_sdk_mcp_server,
34
+ ClaudeSDKClient,
35
+ ClaudeAgentOptions,
36
+ AssistantMessage,
37
+ TextBlock,
38
+ )
39
+
40
+ @tool("get_weather", "Get the current weather for a location", {"location": str})
41
+ async def get_weather(args):
42
+ location = args["location"]
43
+ return {"content": [{"type": "text", "text": f"The weather in {location} is sunny and 72°F."}]}
44
+
45
+ server = create_sdk_mcp_server("weather-tools", tools=[get_weather])
46
+
47
+ async def main():
48
+ options = ClaudeAgentOptions(mcp_servers={"weather": server})
49
+ async with ClaudeSDKClient(options=options) as client:
50
+ await client.query("What's the weather in Paris?")
51
+ async for message in client.receive_response():
52
+ if isinstance(message, AssistantMessage):
53
+ for block in message.content:
54
+ if isinstance(block, TextBlock):
55
+ print(block.text)
56
+
57
+ anyio.run(main)
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Hooks
63
+
64
+ ### After Tool Use Hook
65
+
66
+ Log file changes after any edit:
67
+
68
+ ```python
69
+ import anyio
70
+ from datetime import datetime
71
+ from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher, ResultMessage
72
+
73
+ async def log_file_change(input_data, tool_use_id, context):
74
+ file_path = input_data.get('tool_input', {}).get('file_path', 'unknown')
75
+ with open('./audit.log', 'a') as f:
76
+ f.write(f"{datetime.now()}: modified {file_path}\n")
77
+ return {}
78
+
79
+ async def main():
80
+ async for message in query(
81
+ prompt="Refactor utils.py to improve readability",
82
+ options=ClaudeAgentOptions(
83
+ allowed_tools=["Read", "Edit", "Write"],
84
+ permission_mode="acceptEdits",
85
+ hooks={
86
+ "PostToolUse": [HookMatcher(matcher="Edit|Write", hooks=[log_file_change])]
87
+ }
88
+ )
89
+ ):
90
+ if isinstance(message, ResultMessage):
91
+ print(message.result)
92
+
93
+ anyio.run(main)
94
+ ```
95
+
96
+ ---
97
+
98
+ ## Subagents
99
+
100
+ ```python
101
+ import anyio
102
+ from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition, ResultMessage
103
+
104
+ async def main():
105
+ async for message in query(
106
+ prompt="Use the code-reviewer agent to review this codebase",
107
+ options=ClaudeAgentOptions(
108
+ allowed_tools=["Read", "Glob", "Grep", "Agent"],
109
+ agents={
110
+ "code-reviewer": AgentDefinition(
111
+ description="Expert code reviewer for quality and security reviews.",
112
+ prompt="Analyze code quality and suggest improvements.",
113
+ tools=["Read", "Glob", "Grep"]
114
+ )
115
+ }
116
+ )
117
+ ):
118
+ if isinstance(message, ResultMessage):
119
+ print(message.result)
120
+
121
+ anyio.run(main)
122
+ ```
123
+
124
+ ---
125
+
126
+ ## MCP Server Integration
127
+
128
+ ### Browser Automation (Playwright)
129
+
130
+ ```python
131
+ import anyio
132
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
133
+
134
+ async def main():
135
+ async for message in query(
136
+ prompt="Open example.com and describe what you see",
137
+ options=ClaudeAgentOptions(
138
+ mcp_servers={
139
+ "playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}
140
+ }
141
+ )
142
+ ):
143
+ if isinstance(message, ResultMessage):
144
+ print(message.result)
145
+
146
+ anyio.run(main)
147
+ ```
148
+
149
+ ### Database Access (PostgreSQL)
150
+
151
+ ```python
152
+ import os
153
+ import anyio
154
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
155
+
156
+ async def main():
157
+ async for message in query(
158
+ prompt="Show me the top 10 users by order count",
159
+ options=ClaudeAgentOptions(
160
+ mcp_servers={
161
+ "postgres": {
162
+ "command": "npx",
163
+ "args": ["-y", "@modelcontextprotocol/server-postgres"],
164
+ "env": {"DATABASE_URL": os.environ["DATABASE_URL"]}
165
+ }
166
+ }
167
+ )
168
+ ):
169
+ if isinstance(message, ResultMessage):
170
+ print(message.result)
171
+
172
+ anyio.run(main)
173
+ ```
174
+
175
+ ---
176
+
177
+ ## Permission Modes
178
+
179
+ ```python
180
+ import anyio
181
+ from claude_agent_sdk import query, ClaudeAgentOptions
182
+
183
+ async def main():
184
+ # Default: prompt for dangerous operations
185
+ async for message in query(
186
+ prompt="Delete all test files",
187
+ options=ClaudeAgentOptions(
188
+ allowed_tools=["Bash"],
189
+ permission_mode="default" # Will prompt before deleting
190
+ )
191
+ ):
192
+ pass
193
+
194
+ # Plan: agent creates a plan before making changes
195
+ async for message in query(
196
+ prompt="Refactor the auth system",
197
+ options=ClaudeAgentOptions(
198
+ allowed_tools=["Read", "Edit"],
199
+ permission_mode="plan"
200
+ )
201
+ ):
202
+ pass
203
+
204
+ # Accept edits: auto-accept file edits
205
+ async for message in query(
206
+ prompt="Refactor this module",
207
+ options=ClaudeAgentOptions(
208
+ allowed_tools=["Read", "Edit"],
209
+ permission_mode="acceptEdits"
210
+ )
211
+ ):
212
+ pass
213
+
214
+ # Bypass: skip all prompts (use with caution)
215
+ async for message in query(
216
+ prompt="Set up the development environment",
217
+ options=ClaudeAgentOptions(
218
+ allowed_tools=["Bash", "Write"],
219
+ permission_mode="bypassPermissions"
220
+ )
221
+ ):
222
+ pass
223
+
224
+ anyio.run(main)
225
+ ```
226
+
227
+ ---
228
+
229
+ ## Error Recovery
230
+
231
+ ```python
232
+ import anyio
233
+ from claude_agent_sdk import (
234
+ query,
235
+ ClaudeAgentOptions,
236
+ CLINotFoundError,
237
+ CLIConnectionError,
238
+ ProcessError,
239
+ ResultMessage,
240
+ )
241
+
242
+ async def run_with_recovery():
243
+ try:
244
+ async for message in query(
245
+ prompt="Fix the failing tests",
246
+ options=ClaudeAgentOptions(
247
+ allowed_tools=["Read", "Edit", "Bash"],
248
+ max_turns=10
249
+ )
250
+ ):
251
+ if isinstance(message, ResultMessage):
252
+ print(message.result)
253
+ except CLINotFoundError:
254
+ print("Claude Code CLI not found. Install with: pip install claude-agent-sdk")
255
+ except CLIConnectionError as e:
256
+ print(f"Connection error: {e}")
257
+ except ProcessError as e:
258
+ print(f"Process error: {e}")
259
+
260
+ anyio.run(run_with_recovery)
261
+ ```
262
+
263
+ ---
264
+
265
+ ## Session Resumption
266
+
267
+ ```python
268
+ import anyio
269
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage, SystemMessage
270
+
271
+ async def main():
272
+ session_id = None
273
+
274
+ # First query: capture the session ID
275
+ async for message in query(
276
+ prompt="Read the authentication module",
277
+ options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"])
278
+ ):
279
+ if isinstance(message, SystemMessage) and message.subtype == "init":
280
+ session_id = message.data.get("session_id")
281
+
282
+ # Resume with full context from the first query
283
+ async for message in query(
284
+ prompt="Now find all places that call it", # "it" = auth module
285
+ options=ClaudeAgentOptions(resume=session_id)
286
+ ):
287
+ if isinstance(message, ResultMessage):
288
+ print(message.result)
289
+
290
+ anyio.run(main)
291
+ ```
292
+
293
+ ---
294
+
295
+ ## Session History
296
+
297
+ ```python
298
+ from claude_agent_sdk import list_sessions, get_session_messages
299
+
300
+ # List past sessions (sync function — no await)
301
+ sessions = list_sessions()
302
+ for session in sessions:
303
+ print(f"Session {session.session_id} in {session.cwd}")
304
+
305
+ # Retrieve messages from the most recent session (sync function — no await)
306
+ if sessions:
307
+ messages = get_session_messages(session_id=sessions[0].session_id)
308
+ for msg in messages:
309
+ print(msg)
310
+ ```
311
+
312
+ ---
313
+
314
+ ## Session Mutations
315
+
316
+ ```python
317
+ from claude_agent_sdk import rename_session, tag_session
318
+
319
+ session_id = "your-session-id"
320
+
321
+ # Rename a session
322
+ rename_session(session_id=session_id, title="Refactoring auth module")
323
+
324
+ # Tag a session for filtering
325
+ tag_session(session_id=session_id, tag="experiment-v2")
326
+
327
+ # Clear a tag
328
+ tag_session(session_id=session_id, tag=None)
329
+
330
+ # Scope to a specific project directory
331
+ rename_session(session_id=session_id, title="New title", directory="/path/to/project")
332
+ ```
333
+
334
+ ---
335
+
336
+ ## Custom System Prompt
337
+
338
+ ```python
339
+ import anyio
340
+ from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
341
+
342
+ async def main():
343
+ async for message in query(
344
+ prompt="Review this code",
345
+ options=ClaudeAgentOptions(
346
+ allowed_tools=["Read", "Glob", "Grep"],
347
+ system_prompt="""You are a senior code reviewer focused on:
348
+ 1. Security vulnerabilities
349
+ 2. Performance issues
350
+ 3. Code maintainability
351
+
352
+ Always provide specific line numbers and suggestions for improvement."""
353
+ )
354
+ ):
355
+ if isinstance(message, ResultMessage):
356
+ print(message.result)
357
+
358
+ anyio.run(main)
359
+ ```