claudecode-omc 5.1.0 → 5.3.0
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.
- package/.local/skills/conductor/SKILL.md +397 -0
- package/bundled/manifest.json +3 -2
- package/bundled/upstream/anthropic-skills/skills/algorithmic-art/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/algorithmic-art/SKILL.md +405 -0
- package/bundled/upstream/anthropic-skills/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/bundled/upstream/anthropic-skills/skills/algorithmic-art/templates/viewer.html +599 -0
- package/bundled/upstream/anthropic-skills/skills/brand-guidelines/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/brand-guidelines/SKILL.md +73 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/SKILL.md +130 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/bundled/upstream/anthropic-skills/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +262 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/csharp/claude-api.md +402 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +216 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/go/claude-api.md +421 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +432 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +375 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/README.md +355 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/patterns.md +359 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +420 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +185 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +165 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +162 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +590 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +113 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +206 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +121 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +119 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +128 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +305 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/README.md +297 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/patterns.md +209 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +333 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +106 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +98 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +178 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +527 -0
- package/bundled/upstream/anthropic-skills/skills/doc-coauthoring/SKILL.md +375 -0
- package/bundled/upstream/anthropic-skills/skills/docx/LICENSE.txt +30 -0
- package/bundled/upstream/anthropic-skills/skills/docx/SKILL.md +590 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/__init__.py +1 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/accept_changes.py +135 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/comment.py +318 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/helpers/__init__.py +0 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/pack.py +159 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/soffice.py +183 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/unpack.py +132 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validate.py +111 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/__init__.py +15 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/base.py +847 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/docx.py +446 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/pptx.py +275 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/office/validators/redlining.py +247 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/comments.xml +3 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/bundled/upstream/anthropic-skills/skills/docx/scripts/templates/people.xml +3 -0
- package/bundled/upstream/anthropic-skills/skills/frontend-design/LICENSE.txt +177 -0
- package/bundled/upstream/anthropic-skills/skills/frontend-design/SKILL.md +42 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/SKILL.md +32 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/examples/3p-updates.md +47 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/examples/company-newsletter.md +65 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/examples/faq-answers.md +30 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/examples/general-comms.md +16 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/SKILL.md +236 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/reference/evaluation.md +602 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/scripts/connections.py +151 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/LICENSE.txt +30 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/SKILL.md +314 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/forms.md +294 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/reference.md +612 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/scripts/check_bounding_boxes.py +65 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/scripts/check_fillable_fields.py +11 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/scripts/create_validation_image.py +37 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/scripts/extract_form_field_info.py +122 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/scripts/extract_form_structure.py +115 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/scripts/fill_fillable_fields.py +98 -0
- package/bundled/upstream/anthropic-skills/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/LICENSE.txt +30 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/SKILL.md +232 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/editing.md +205 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/pptxgenjs.md +420 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/__init__.py +0 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/add_slide.py +195 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/clean.py +286 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/helpers/__init__.py +0 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/pack.py +159 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/soffice.py +183 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/unpack.py +132 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validate.py +111 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/__init__.py +15 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/base.py +847 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/docx.py +446 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/pptx.py +275 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/office/validators/redlining.py +247 -0
- package/bundled/upstream/anthropic-skills/skills/pptx/scripts/thumbnail.py +289 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/SKILL.md +485 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/agents/analyzer.md +274 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/agents/comparator.md +202 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/agents/grader.md +223 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/assets/eval_review.html +146 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/references/schemas.md +430 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/__init__.py +0 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/generate_report.py +326 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/improve_description.py +247 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/package_skill.py +136 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/run_eval.py +310 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/run_loop.py +328 -0
- package/bundled/upstream/anthropic-skills/skills/skill-creator/scripts/utils.py +47 -0
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/SKILL.md +254 -0
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/core/easing.py +234 -0
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/core/frame_composer.py +176 -0
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/core/gif_builder.py +269 -0
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/core/validators.py +136 -0
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/requirements.txt +4 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/SKILL.md +59 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/theme-showcase.pdf +0 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/desert-rose.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/golden-hour.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/SKILL.md +74 -0
- package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/LICENSE.txt +202 -0
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/SKILL.md +96 -0
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/examples/console_logging.py +35 -0
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/scripts/with_server.py +106 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/LICENSE.txt +30 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/SKILL.md +292 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/pack.py +159 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/soffice.py +183 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/unpack.py +132 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validate.py +111 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/__init__.py +15 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/base.py +847 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/docx.py +446 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/pptx.py +275 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/office/validators/redlining.py +247 -0
- package/bundled/upstream/anthropic-skills/skills/xlsx/scripts/recalc.py +184 -0
- package/bundled/upstream/anthropic-skills/spec/agent-skills-spec.md +3 -0
- package/bundled/upstream/anthropic-skills/template/SKILL.md +6 -0
- package/package.json +1 -1
- package/scripts/sync-upstream.sh +30 -10
- package/src/cli/artifact.js +2 -1
- package/src/cli/index.js +6 -0
- package/src/cli/setup.js +3 -0
- package/src/cli/skill.js +271 -0
- package/src/config/sources.js +12 -0
- package/src/merge/base-merger.js +28 -6
- package/src/utils/overlap.js +300 -0
- package/src/utils/quality.js +286 -32
- package/bundled/upstream/oh-my-claudecode/skills/conductor/SKILL.md +0 -231
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/AGENTS.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/ai-commenting/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/analyze/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/bdd-generator/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/e2e/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/electron-driver/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/electron-driver/scripts/driver-template.js +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/multi-model-research/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/examples.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/reference.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/scripts/check-complete.ps1 +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/scripts/check-complete.sh +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/scripts/init-session.ps1 +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/scripts/init-session.sh +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/scripts/session-catchup.py +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/templates/findings.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/templates/progress.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/planning-with-files/templates/task_plan.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/quick-init-project/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-creator/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-creator/references/upstream-anthropic-skill-creator.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-debugger/README.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-debugger/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-quality-analyzer/HOW_TO_USE.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-quality-analyzer/README.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-quality-analyzer/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-quality-analyzer/analyzer.py +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-quality-analyzer/expected_output.json +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-quality-analyzer/sample_input.json +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-tester/README.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/skill-tester/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/start-dev/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/tdd-generator/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/test-coverage/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/test-gen/SKILL.md +0 -0
- /package/{bundled/upstream/oh-my-claudecode → .local}/skills/ultraqa.md +0 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-api
|
|
3
|
+
description: "Build apps with the Claude API or Anthropic SDK. TRIGGER when: code imports `anthropic`/`@anthropic-ai/sdk`/`claude_agent_sdk`, or user asks to use Claude API, Anthropic SDKs, or Agent SDK. DO NOT TRIGGER when: code imports `openai`/other AI SDK, general programming, or ML/data-science tasks."
|
|
4
|
+
license: Complete terms in LICENSE.txt
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Building LLM-Powered Applications with Claude
|
|
8
|
+
|
|
9
|
+
This skill helps you build LLM-powered applications with Claude. Choose the right surface based on your needs, detect the project language, then read the relevant language-specific documentation.
|
|
10
|
+
|
|
11
|
+
## Defaults
|
|
12
|
+
|
|
13
|
+
Unless the user requests otherwise:
|
|
14
|
+
|
|
15
|
+
For the Claude model version, please use Claude Opus 4.6, which you can access via the exact model string `claude-opus-4-6`. Please default to using adaptive thinking (`thinking: {type: "adaptive"}`) for anything remotely complicated. And finally, please default to streaming for any request that may involve long input, long output, or high `max_tokens` — it prevents hitting request timeouts. Use the SDK's `.get_final_message()` / `.finalMessage()` helper to get the complete response if you don't need to handle individual stream events
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Language Detection
|
|
20
|
+
|
|
21
|
+
Before reading code examples, determine which language the user is working in:
|
|
22
|
+
|
|
23
|
+
1. **Look at project files** to infer the language:
|
|
24
|
+
|
|
25
|
+
- `*.py`, `requirements.txt`, `pyproject.toml`, `setup.py`, `Pipfile` → **Python** — read from `python/`
|
|
26
|
+
- `*.ts`, `*.tsx`, `package.json`, `tsconfig.json` → **TypeScript** — read from `typescript/`
|
|
27
|
+
- `*.js`, `*.jsx` (no `.ts` files present) → **TypeScript** — JS uses the same SDK, read from `typescript/`
|
|
28
|
+
- `*.java`, `pom.xml`, `build.gradle` → **Java** — read from `java/`
|
|
29
|
+
- `*.kt`, `*.kts`, `build.gradle.kts` → **Java** — Kotlin uses the Java SDK, read from `java/`
|
|
30
|
+
- `*.scala`, `build.sbt` → **Java** — Scala uses the Java SDK, read from `java/`
|
|
31
|
+
- `*.go`, `go.mod` → **Go** — read from `go/`
|
|
32
|
+
- `*.rb`, `Gemfile` → **Ruby** — read from `ruby/`
|
|
33
|
+
- `*.cs`, `*.csproj` → **C#** — read from `csharp/`
|
|
34
|
+
- `*.php`, `composer.json` → **PHP** — read from `php/`
|
|
35
|
+
|
|
36
|
+
2. **If multiple languages detected** (e.g., both Python and TypeScript files):
|
|
37
|
+
|
|
38
|
+
- Check which language the user's current file or question relates to
|
|
39
|
+
- If still ambiguous, ask: "I detected both Python and TypeScript files. Which language are you using for the Claude API integration?"
|
|
40
|
+
|
|
41
|
+
3. **If language can't be inferred** (empty project, no source files, or unsupported language):
|
|
42
|
+
|
|
43
|
+
- Use AskUserQuestion with options: Python, TypeScript, Java, Go, Ruby, cURL/raw HTTP, C#, PHP
|
|
44
|
+
- If AskUserQuestion is unavailable, default to Python examples and note: "Showing Python examples. Let me know if you need a different language."
|
|
45
|
+
|
|
46
|
+
4. **If unsupported language detected** (Rust, Swift, C++, Elixir, etc.):
|
|
47
|
+
|
|
48
|
+
- Suggest cURL/raw HTTP examples from `curl/` and note that community SDKs may exist
|
|
49
|
+
- Offer to show Python or TypeScript examples as reference implementations
|
|
50
|
+
|
|
51
|
+
5. **If user needs cURL/raw HTTP examples**, read from `curl/`.
|
|
52
|
+
|
|
53
|
+
### Language-Specific Feature Support
|
|
54
|
+
|
|
55
|
+
| Language | Tool Runner | Agent SDK | Notes |
|
|
56
|
+
| ---------- | ----------- | --------- | ------------------------------------- |
|
|
57
|
+
| Python | Yes (beta) | Yes | Full support — `@beta_tool` decorator |
|
|
58
|
+
| TypeScript | Yes (beta) | Yes | Full support — `betaZodTool` + Zod |
|
|
59
|
+
| Java | Yes (beta) | No | Beta tool use with annotated classes |
|
|
60
|
+
| Go | Yes (beta) | No | `BetaToolRunner` in `toolrunner` pkg |
|
|
61
|
+
| Ruby | Yes (beta) | No | `BaseTool` + `tool_runner` in beta |
|
|
62
|
+
| cURL | N/A | N/A | Raw HTTP, no SDK features |
|
|
63
|
+
| C# | No | No | Official SDK |
|
|
64
|
+
| PHP | Yes (beta) | No | `BetaRunnableTool` + `toolRunner()` |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Which Surface Should I Use?
|
|
69
|
+
|
|
70
|
+
> **Start simple.** Default to the simplest tier that meets your needs. Single API calls and workflows handle most use cases — only reach for agents when the task genuinely requires open-ended, model-driven exploration.
|
|
71
|
+
|
|
72
|
+
| Use Case | Tier | Recommended Surface | Why |
|
|
73
|
+
| ----------------------------------------------- | --------------- | ------------------------- | --------------------------------------- |
|
|
74
|
+
| Classification, summarization, extraction, Q&A | Single LLM call | **Claude API** | One request, one response |
|
|
75
|
+
| Batch processing or embeddings | Single LLM call | **Claude API** | Specialized endpoints |
|
|
76
|
+
| Multi-step pipelines with code-controlled logic | Workflow | **Claude API + tool use** | You orchestrate the loop |
|
|
77
|
+
| Custom agent with your own tools | Agent | **Claude API + tool use** | Maximum flexibility |
|
|
78
|
+
| AI agent with file/web/terminal access | Agent | **Agent SDK** | Built-in tools, safety, and MCP support |
|
|
79
|
+
| Agentic coding assistant | Agent | **Agent SDK** | Designed for this use case |
|
|
80
|
+
| Want built-in permissions and guardrails | Agent | **Agent SDK** | Safety features included |
|
|
81
|
+
|
|
82
|
+
> **Note:** The Agent SDK is for when you want built-in file/web/terminal tools, permissions, and MCP out of the box. If you want to build an agent with your own tools, Claude API is the right choice — use the tool runner for automatic loop handling, or the manual loop for fine-grained control (approval gates, custom logging, conditional execution).
|
|
83
|
+
|
|
84
|
+
### Decision Tree
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
What does your application need?
|
|
88
|
+
|
|
89
|
+
1. Single LLM call (classification, summarization, extraction, Q&A)
|
|
90
|
+
└── Claude API — one request, one response
|
|
91
|
+
|
|
92
|
+
2. Does Claude need to read/write files, browse the web, or run shell commands
|
|
93
|
+
as part of its work? (Not: does your app read a file and hand it to Claude —
|
|
94
|
+
does Claude itself need to discover and access files/web/shell?)
|
|
95
|
+
└── Yes → Agent SDK — built-in tools, don't reimplement them
|
|
96
|
+
Examples: "scan a codebase for bugs", "summarize every file in a directory",
|
|
97
|
+
"find bugs using subagents", "research a topic via web search"
|
|
98
|
+
|
|
99
|
+
3. Workflow (multi-step, code-orchestrated, with your own tools)
|
|
100
|
+
└── Claude API with tool use — you control the loop
|
|
101
|
+
|
|
102
|
+
4. Open-ended agent (model decides its own trajectory, your own tools)
|
|
103
|
+
└── Claude API agentic loop (maximum flexibility)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Should I Build an Agent?
|
|
107
|
+
|
|
108
|
+
Before choosing the agent tier, check all four criteria:
|
|
109
|
+
|
|
110
|
+
- **Complexity** — Is the task multi-step and hard to fully specify in advance? (e.g., "turn this design doc into a PR" vs. "extract the title from this PDF")
|
|
111
|
+
- **Value** — Does the outcome justify higher cost and latency?
|
|
112
|
+
- **Viability** — Is Claude capable at this task type?
|
|
113
|
+
- **Cost of error** — Can errors be caught and recovered from? (tests, review, rollback)
|
|
114
|
+
|
|
115
|
+
If the answer is "no" to any of these, stay at a simpler tier (single call or workflow).
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Architecture
|
|
120
|
+
|
|
121
|
+
Everything goes through `POST /v1/messages`. Tools and output constraints are features of this single endpoint — not separate APIs.
|
|
122
|
+
|
|
123
|
+
**User-defined tools** — You define tools (via decorators, Zod schemas, or raw JSON), and the SDK's tool runner handles calling the API, executing your functions, and looping until Claude is done. For full control, you can write the loop manually.
|
|
124
|
+
|
|
125
|
+
**Server-side tools** — Anthropic-hosted tools that run on Anthropic's infrastructure. Code execution is fully server-side (declare it in `tools`, Claude runs code automatically). Computer use can be server-hosted or self-hosted.
|
|
126
|
+
|
|
127
|
+
**Structured outputs** — Constrains the Messages API response format (`output_config.format`) and/or tool parameter validation (`strict: true`). The recommended approach is `client.messages.parse()` which validates responses against your schema automatically. Note: the old `output_format` parameter is deprecated; use `output_config: {format: {...}}` on `messages.create()`.
|
|
128
|
+
|
|
129
|
+
**Supporting endpoints** — Batches (`POST /v1/messages/batches`), Files (`POST /v1/files`), Token Counting, and Models (`GET /v1/models`, `GET /v1/models/{id}` — live capability/context-window discovery) feed into or support Messages API requests.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Current Models (cached: 2026-02-17)
|
|
134
|
+
|
|
135
|
+
| Model | Model ID | Context | Input $/1M | Output $/1M |
|
|
136
|
+
| ----------------- | ------------------- | -------------- | ---------- | ----------- |
|
|
137
|
+
| Claude Opus 4.6 | `claude-opus-4-6` | 200K (1M beta) | $5.00 | $25.00 |
|
|
138
|
+
| Claude Sonnet 4.6 | `claude-sonnet-4-6` | 200K (1M beta) | $3.00 | $15.00 |
|
|
139
|
+
| Claude Haiku 4.5 | `claude-haiku-4-5` | 200K | $1.00 | $5.00 |
|
|
140
|
+
|
|
141
|
+
**ALWAYS use `claude-opus-4-6` unless the user explicitly names a different model.** This is non-negotiable. Do not use `claude-sonnet-4-6`, `claude-sonnet-4-5`, or any other model unless the user literally says "use sonnet" or "use haiku". Never downgrade for cost — that's the user's decision, not yours.
|
|
142
|
+
|
|
143
|
+
**CRITICAL: Use only the exact model ID strings from the table above — they are complete as-is. Do not append date suffixes.** For example, use `claude-sonnet-4-5`, never `claude-sonnet-4-5-20250514` or any other date-suffixed variant you might recall from training data. If the user requests an older model not in the table (e.g., "opus 4.5", "sonnet 3.7"), read `shared/models.md` for the exact ID — do not construct one yourself.
|
|
144
|
+
|
|
145
|
+
A note: if any of the model strings above look unfamiliar to you, that's to be expected — that just means they were released after your training data cutoff. Rest assured they are real models; we wouldn't mess with you like that.
|
|
146
|
+
|
|
147
|
+
**Live capability lookup:** The table above is cached. When the user asks "what's the context window for X", "does X support vision/thinking/effort", or "which models support Y", query the Models API (`client.models.retrieve(id)` / `client.models.list()`) — see `shared/models.md` for the field reference and capability-filter examples.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Thinking & Effort (Quick Reference)
|
|
152
|
+
|
|
153
|
+
**Opus 4.6 — Adaptive thinking (recommended):** Use `thinking: {type: "adaptive"}`. Claude dynamically decides when and how much to think. No `budget_tokens` needed — `budget_tokens` is deprecated on Opus 4.6 and Sonnet 4.6 and must not be used. Adaptive thinking also automatically enables interleaved thinking (no beta header needed). **When the user asks for "extended thinking", a "thinking budget", or `budget_tokens`: always use Opus 4.6 with `thinking: {type: "adaptive"}`. The concept of a fixed token budget for thinking is deprecated — adaptive thinking replaces it. Do NOT use `budget_tokens` and do NOT switch to an older model.**
|
|
154
|
+
|
|
155
|
+
**Effort parameter (GA, no beta header):** Controls thinking depth and overall token spend via `output_config: {effort: "low"|"medium"|"high"|"max"}` (inside `output_config`, not top-level). Default is `high` (equivalent to omitting it). `max` is Opus 4.6 only. Works on Opus 4.5, Opus 4.6, and Sonnet 4.6. Will error on Sonnet 4.5 / Haiku 4.5. Combine with adaptive thinking for the best cost-quality tradeoffs. Use `low` for subagents or simple tasks; `max` for the deepest reasoning.
|
|
156
|
+
|
|
157
|
+
**Sonnet 4.6:** Supports adaptive thinking (`thinking: {type: "adaptive"}`). `budget_tokens` is deprecated on Sonnet 4.6 — use adaptive thinking instead.
|
|
158
|
+
|
|
159
|
+
**Older models (only if explicitly requested):** If the user specifically asks for Sonnet 4.5 or another older model, use `thinking: {type: "enabled", budget_tokens: N}`. `budget_tokens` must be less than `max_tokens` (minimum 1024). Never choose an older model just because the user mentions `budget_tokens` — use Opus 4.6 with adaptive thinking instead.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Compaction (Quick Reference)
|
|
164
|
+
|
|
165
|
+
**Beta, Opus 4.6 and Sonnet 4.6.** For long-running conversations that may exceed the 200K context window, enable server-side compaction. The API automatically summarizes earlier context when it approaches the trigger threshold (default: 150K tokens). Requires beta header `compact-2026-01-12`.
|
|
166
|
+
|
|
167
|
+
**Critical:** Append `response.content` (not just the text) back to your messages on every turn. Compaction blocks in the response must be preserved — the API uses them to replace the compacted history on the next request. Extracting only the text string and appending that will silently lose the compaction state.
|
|
168
|
+
|
|
169
|
+
See `{lang}/claude-api/README.md` (Compaction section) for code examples. Full docs via WebFetch in `shared/live-sources.md`.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Prompt Caching (Quick Reference)
|
|
174
|
+
|
|
175
|
+
**Prefix match.** Any byte change anywhere in the prefix invalidates everything after it. Render order is `tools` → `system` → `messages`. Keep stable content first (frozen system prompt, deterministic tool list), put volatile content (timestamps, per-request IDs, varying questions) after the last `cache_control` breakpoint.
|
|
176
|
+
|
|
177
|
+
**Top-level auto-caching** (`cache_control: {type: "ephemeral"}` on `messages.create()`) is the simplest option when you don't need fine-grained placement. Max 4 breakpoints per request. Minimum cacheable prefix is ~1024 tokens — shorter prefixes silently won't cache.
|
|
178
|
+
|
|
179
|
+
**Verify with `usage.cache_read_input_tokens`** — if it's zero across repeated requests, a silent invalidator is at work (`datetime.now()` in system prompt, unsorted JSON, varying tool set).
|
|
180
|
+
|
|
181
|
+
For placement patterns, architectural guidance, and the silent-invalidator audit checklist: read `shared/prompt-caching.md`. Language-specific syntax: `{lang}/claude-api/README.md` (Prompt Caching section).
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Reading Guide
|
|
186
|
+
|
|
187
|
+
After detecting the language, read the relevant files based on what the user needs:
|
|
188
|
+
|
|
189
|
+
### Quick Task Reference
|
|
190
|
+
|
|
191
|
+
**Single text classification/summarization/extraction/Q&A:**
|
|
192
|
+
→ Read only `{lang}/claude-api/README.md`
|
|
193
|
+
|
|
194
|
+
**Chat UI or real-time response display:**
|
|
195
|
+
→ Read `{lang}/claude-api/README.md` + `{lang}/claude-api/streaming.md`
|
|
196
|
+
|
|
197
|
+
**Long-running conversations (may exceed context window):**
|
|
198
|
+
→ Read `{lang}/claude-api/README.md` — see Compaction section
|
|
199
|
+
|
|
200
|
+
**Prompt caching / optimize caching / "why is my cache hit rate low":**
|
|
201
|
+
→ Read `shared/prompt-caching.md` + `{lang}/claude-api/README.md` (Prompt Caching section)
|
|
202
|
+
|
|
203
|
+
**Function calling / tool use / agents:**
|
|
204
|
+
→ Read `{lang}/claude-api/README.md` + `shared/tool-use-concepts.md` + `{lang}/claude-api/tool-use.md`
|
|
205
|
+
|
|
206
|
+
**Batch processing (non-latency-sensitive):**
|
|
207
|
+
→ Read `{lang}/claude-api/README.md` + `{lang}/claude-api/batches.md`
|
|
208
|
+
|
|
209
|
+
**File uploads across multiple requests:**
|
|
210
|
+
→ Read `{lang}/claude-api/README.md` + `{lang}/claude-api/files-api.md`
|
|
211
|
+
|
|
212
|
+
**Agent with built-in tools (file/web/terminal):**
|
|
213
|
+
→ Read `{lang}/agent-sdk/README.md` + `{lang}/agent-sdk/patterns.md`
|
|
214
|
+
|
|
215
|
+
### Claude API (Full File Reference)
|
|
216
|
+
|
|
217
|
+
Read the **language-specific Claude API folder** (`{language}/claude-api/`):
|
|
218
|
+
|
|
219
|
+
1. **`{language}/claude-api/README.md`** — **Read this first.** Installation, quick start, common patterns, error handling.
|
|
220
|
+
2. **`shared/tool-use-concepts.md`** — Read when the user needs function calling, code execution, memory, or structured outputs. Covers conceptual foundations.
|
|
221
|
+
3. **`{language}/claude-api/tool-use.md`** — Read for language-specific tool use code examples (tool runner, manual loop, code execution, memory, structured outputs).
|
|
222
|
+
4. **`{language}/claude-api/streaming.md`** — Read when building chat UIs or interfaces that display responses incrementally.
|
|
223
|
+
5. **`{language}/claude-api/batches.md`** — Read when processing many requests offline (not latency-sensitive). Runs asynchronously at 50% cost.
|
|
224
|
+
6. **`{language}/claude-api/files-api.md`** — Read when sending the same file across multiple requests without re-uploading.
|
|
225
|
+
7. **`shared/prompt-caching.md`** — Read when adding or optimizing prompt caching. Covers prefix-stability design, breakpoint placement, and anti-patterns that silently invalidate cache.
|
|
226
|
+
8. **`shared/error-codes.md`** — Read when debugging HTTP errors or implementing error handling.
|
|
227
|
+
9. **`shared/live-sources.md`** — WebFetch URLs for fetching the latest official documentation.
|
|
228
|
+
|
|
229
|
+
> **Note:** For Java, Go, Ruby, C#, PHP, and cURL — these have a single file each covering all basics. Read that file plus `shared/tool-use-concepts.md` and `shared/error-codes.md` as needed.
|
|
230
|
+
|
|
231
|
+
### Agent SDK
|
|
232
|
+
|
|
233
|
+
Read the **language-specific Agent SDK folder** (`{language}/agent-sdk/`). Agent SDK is available for **Python and TypeScript only**.
|
|
234
|
+
|
|
235
|
+
1. **`{language}/agent-sdk/README.md`** — Installation, quick start, built-in tools, permissions, MCP, hooks.
|
|
236
|
+
2. **`{language}/agent-sdk/patterns.md`** — Custom tools, hooks, subagents, MCP integration, session resumption.
|
|
237
|
+
3. **`shared/live-sources.md`** — WebFetch URLs for current Agent SDK docs.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## When to Use WebFetch
|
|
242
|
+
|
|
243
|
+
Use WebFetch to get the latest documentation when:
|
|
244
|
+
|
|
245
|
+
- User asks for "latest" or "current" information
|
|
246
|
+
- Cached data seems incorrect
|
|
247
|
+
- User asks about features not covered here
|
|
248
|
+
|
|
249
|
+
Live documentation URLs are in `shared/live-sources.md`.
|
|
250
|
+
|
|
251
|
+
## Common Pitfalls
|
|
252
|
+
|
|
253
|
+
- Don't truncate inputs when passing files or content to the API. If the content is too long to fit in the context window, notify the user and discuss options (chunking, summarization, etc.) rather than silently truncating.
|
|
254
|
+
- **Opus 4.6 / Sonnet 4.6 thinking:** Use `thinking: {type: "adaptive"}` — do NOT use `budget_tokens` (deprecated on both Opus 4.6 and Sonnet 4.6). For older models, `budget_tokens` must be less than `max_tokens` (minimum 1024). This will throw an error if you get it wrong.
|
|
255
|
+
- **Opus 4.6 prefill removed:** Assistant message prefills (last-assistant-turn prefills) return a 400 error on Opus 4.6. Use structured outputs (`output_config.format`) or system prompt instructions to control response format instead.
|
|
256
|
+
- **`max_tokens` defaults:** Don't lowball `max_tokens` — hitting the cap truncates output mid-thought and requires a retry. For non-streaming requests, default to `~16000` (keeps responses under SDK HTTP timeouts). For streaming requests, default to `~64000` (timeouts aren't a concern, so give the model room). Only go lower when you have a hard reason: classification (`~256`), cost caps, or deliberately short outputs.
|
|
257
|
+
- **128K output tokens:** Opus 4.6 supports up to 128K `max_tokens`, but the SDKs require streaming for values that large to avoid HTTP timeouts. Use `.stream()` with `.get_final_message()` / `.finalMessage()`.
|
|
258
|
+
- **Tool call JSON parsing (Opus 4.6):** Opus 4.6 may produce different JSON string escaping in tool call `input` fields (e.g., Unicode or forward-slash escaping). Always parse tool inputs with `json.loads()` / `JSON.parse()` — never do raw string matching on the serialized input.
|
|
259
|
+
- **Structured outputs (all models):** Use `output_config: {format: {...}}` instead of the deprecated `output_format` parameter on `messages.create()`. This is a general API change, not 4.6-specific.
|
|
260
|
+
- **Don't reimplement SDK functionality:** The SDK provides high-level helpers — use them instead of building from scratch. Specifically: use `stream.finalMessage()` instead of wrapping `.on()` events in `new Promise()`; use typed exception classes (`Anthropic.RateLimitError`, etc.) instead of string-matching error messages; use SDK types (`Anthropic.MessageParam`, `Anthropic.Tool`, `Anthropic.Message`, etc.) instead of redefining equivalent interfaces.
|
|
261
|
+
- **Don't define custom types for SDK data structures:** The SDK exports types for all API objects. Use `Anthropic.MessageParam` for messages, `Anthropic.Tool` for tool definitions, `Anthropic.ToolUseBlock` / `Anthropic.ToolResultBlockParam` for tool results, `Anthropic.Message` for responses. Defining your own `interface ChatMessage { role: string; content: unknown }` duplicates what the SDK already provides and loses type safety.
|
|
262
|
+
- **Report and document output:** For tasks that produce reports, documents, or visualizations, the code execution sandbox has `python-docx`, `python-pptx`, `matplotlib`, `pillow`, and `pypdf` pre-installed. Claude can generate formatted files (DOCX, PDF, charts) and return them via the Files API — consider this for "report" or "document" type requests instead of plain stdout text.
|
|
@@ -0,0 +1,402 @@
|
|
|
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.9.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). For placement patterns and the silent-invalidator audit checklist, see `shared/prompt-caching.md`.
|
|
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
|
+
Verify hits via `response.Usage.CacheCreationInputTokens` / `response.Usage.CacheReadInputTokens`.
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Token Counting
|
|
320
|
+
|
|
321
|
+
```csharp
|
|
322
|
+
MessageTokensCount result = await client.Messages.CountTokens(new MessageCountTokensParams {
|
|
323
|
+
Model = Model.ClaudeOpus4_6,
|
|
324
|
+
Messages = [new() { Role = Role.User, Content = "Hello" }],
|
|
325
|
+
});
|
|
326
|
+
long tokens = result.InputTokens;
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
`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.
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Structured Output
|
|
334
|
+
|
|
335
|
+
```csharp
|
|
336
|
+
OutputConfig = new OutputConfig {
|
|
337
|
+
Format = new JsonOutputFormat {
|
|
338
|
+
Schema = new Dictionary<string, JsonElement> {
|
|
339
|
+
["type"] = JsonSerializer.SerializeToElement("object"),
|
|
340
|
+
["properties"] = JsonSerializer.SerializeToElement(
|
|
341
|
+
new { name = new { type = "string" } }),
|
|
342
|
+
["required"] = JsonSerializer.SerializeToElement(new[] { "name" }),
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
`JsonOutputFormat.Type` is auto-set to `"json_schema"` by the constructor. `Schema` is `required`.
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## PDF / Document Input
|
|
353
|
+
|
|
354
|
+
`DocumentBlockParam` takes a `DocumentBlockParamSource` union: `Base64PdfSource` / `UrlPdfSource` / `PlainTextSource` / `ContentBlockSource`. `Base64PdfSource` auto-sets `MediaType = "application/pdf"` and `Type = "base64"`.
|
|
355
|
+
|
|
356
|
+
```csharp
|
|
357
|
+
new MessageParam {
|
|
358
|
+
Role = Role.User,
|
|
359
|
+
Content = new List<ContentBlockParam> {
|
|
360
|
+
new DocumentBlockParam { Source = new Base64PdfSource { Data = base64String } },
|
|
361
|
+
new TextBlockParam { Text = "Summarize this PDF" },
|
|
362
|
+
},
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## Server-Side Tools
|
|
369
|
+
|
|
370
|
+
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`.
|
|
371
|
+
|
|
372
|
+
```csharp
|
|
373
|
+
Tools = [
|
|
374
|
+
new WebSearchTool20260209(),
|
|
375
|
+
new ToolBash20250124(),
|
|
376
|
+
new ToolTextEditor20250728(),
|
|
377
|
+
new CodeExecutionTool20260120(),
|
|
378
|
+
],
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
Also available: `WebFetchTool20260209`, `MemoryTool20250818`. `WebSearchTool20260209` optionals: `AllowedDomains`, `BlockedDomains`, `MaxUses`, `UserLocation`.
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
## Files API (Beta)
|
|
386
|
+
|
|
387
|
+
Files live under `client.Beta.Files` (namespace `Anthropic.Models.Beta.Files`). `BinaryContent` implicit-converts from `Stream` and `byte[]`.
|
|
388
|
+
|
|
389
|
+
```csharp
|
|
390
|
+
using Anthropic.Models.Beta.Files;
|
|
391
|
+
using Anthropic.Models.Beta.Messages;
|
|
392
|
+
|
|
393
|
+
FileMetadata meta = await client.Beta.Files.Upload(
|
|
394
|
+
new FileUploadParams { File = File.OpenRead("doc.pdf") });
|
|
395
|
+
|
|
396
|
+
// Referencing the uploaded file requires Beta message types:
|
|
397
|
+
new BetaRequestDocumentBlock {
|
|
398
|
+
Source = new BetaFileDocumentSource { FileID = meta.ID },
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
The non-beta `DocumentBlockParamSource` union has no file-ID variant — file references need `client.Beta.Messages.Create()`.
|