@khalidsaidi/skillrunner 0.1.2 → 0.1.3
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/README.md +6 -4
- package/dist/cli.js +1904 -89
- package/dist/cli.js.map +1 -1
- package/dist/registry/dist/index.json +1858 -0
- package/dist/registry/skills/anthropic-algorithmic-art/SKILL.md +420 -0
- package/dist/registry/skills/anthropic-algorithmic-art/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-algorithmic-art/upstream/SKILL.md +405 -0
- package/dist/registry/skills/anthropic-algorithmic-art/upstream/templates/generator_template.js +223 -0
- package/dist/registry/skills/anthropic-algorithmic-art/upstream/templates/viewer.html +599 -0
- package/dist/registry/skills/anthropic-brand-guidelines/SKILL.md +88 -0
- package/dist/registry/skills/anthropic-brand-guidelines/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-brand-guidelines/upstream/SKILL.md +73 -0
- package/dist/registry/skills/anthropic-canvas-design/SKILL.md +145 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/SKILL.md +130 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/DMMono-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Gloock-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Italiana-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Jura-Light.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Jura-Medium.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Jura-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-Italic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Lora-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Outfit-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Tektur-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/dist/registry/skills/anthropic-canvas-design/upstream/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/dist/registry/skills/anthropic-doc-coauthoring/SKILL.md +391 -0
- package/dist/registry/skills/anthropic-doc-coauthoring/upstream/SKILL.md +375 -0
- package/dist/registry/skills/anthropic-docx/SKILL.md +496 -0
- package/dist/registry/skills/anthropic-docx/upstream/LICENSE.txt +30 -0
- package/dist/registry/skills/anthropic-docx/upstream/SKILL.md +481 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/__init__.py +1 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/accept_changes.py +135 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/comment.py +318 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/helpers/__init__.py +0 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/helpers/merge_runs.py +199 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/helpers/simplify_redlines.py +197 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/pack.py +159 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/mce/mc.xsd +75 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/soffice.py +183 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/unpack.py +132 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validate.py +111 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/__init__.py +15 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/base.py +847 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/docx.py +446 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/pptx.py +275 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/office/validators/redlining.py +247 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/comments.xml +3 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/commentsExtended.xml +3 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/commentsExtensible.xml +3 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/commentsIds.xml +3 -0
- package/dist/registry/skills/anthropic-docx/upstream/scripts/templates/people.xml +3 -0
- package/dist/registry/skills/anthropic-frontend-design/SKILL.md +57 -0
- package/dist/registry/skills/anthropic-frontend-design/upstream/LICENSE.txt +177 -0
- package/dist/registry/skills/anthropic-frontend-design/upstream/SKILL.md +42 -0
- package/dist/registry/skills/anthropic-internal-comms/SKILL.md +47 -0
- package/dist/registry/skills/anthropic-internal-comms/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-internal-comms/upstream/SKILL.md +32 -0
- package/dist/registry/skills/anthropic-internal-comms/upstream/examples/3p-updates.md +47 -0
- package/dist/registry/skills/anthropic-internal-comms/upstream/examples/company-newsletter.md +65 -0
- package/dist/registry/skills/anthropic-internal-comms/upstream/examples/faq-answers.md +30 -0
- package/dist/registry/skills/anthropic-internal-comms/upstream/examples/general-comms.md +16 -0
- package/dist/registry/skills/anthropic-mcp-builder/SKILL.md +251 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/SKILL.md +236 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/reference/evaluation.md +602 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/reference/mcp_best_practices.md +249 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/reference/node_mcp_server.md +970 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/reference/python_mcp_server.md +719 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/scripts/connections.py +151 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/scripts/evaluation.py +373 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/scripts/example_evaluation.xml +22 -0
- package/dist/registry/skills/anthropic-mcp-builder/upstream/scripts/requirements.txt +2 -0
- package/dist/registry/skills/anthropic-pdf/SKILL.md +329 -0
- package/dist/registry/skills/anthropic-pdf/upstream/LICENSE.txt +30 -0
- package/dist/registry/skills/anthropic-pdf/upstream/SKILL.md +314 -0
- package/dist/registry/skills/anthropic-pdf/upstream/forms.md +294 -0
- package/dist/registry/skills/anthropic-pdf/upstream/reference.md +612 -0
- package/dist/registry/skills/anthropic-pdf/upstream/scripts/check_bounding_boxes.py +65 -0
- package/dist/registry/skills/anthropic-pdf/upstream/scripts/check_fillable_fields.py +11 -0
- package/dist/registry/skills/anthropic-pdf/upstream/scripts/convert_pdf_to_images.py +33 -0
- package/dist/registry/skills/anthropic-pdf/upstream/scripts/create_validation_image.py +37 -0
- package/dist/registry/skills/anthropic-pdf/upstream/scripts/extract_form_field_info.py +122 -0
- package/dist/registry/skills/anthropic-pdf/upstream/scripts/extract_form_structure.py +115 -0
- package/dist/registry/skills/anthropic-pdf/upstream/scripts/fill_fillable_fields.py +98 -0
- package/dist/registry/skills/anthropic-pdf/upstream/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/dist/registry/skills/anthropic-pptx/SKILL.md +247 -0
- package/dist/registry/skills/anthropic-pptx/upstream/LICENSE.txt +30 -0
- package/dist/registry/skills/anthropic-pptx/upstream/SKILL.md +232 -0
- package/dist/registry/skills/anthropic-pptx/upstream/editing.md +205 -0
- package/dist/registry/skills/anthropic-pptx/upstream/pptxgenjs.md +420 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/__init__.py +0 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/add_slide.py +195 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/clean.py +286 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/helpers/__init__.py +0 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/helpers/merge_runs.py +199 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/helpers/simplify_redlines.py +197 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/pack.py +159 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/mce/mc.xsd +75 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/soffice.py +183 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/unpack.py +132 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validate.py +111 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/__init__.py +15 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/base.py +847 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/docx.py +446 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/pptx.py +275 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/office/validators/redlining.py +247 -0
- package/dist/registry/skills/anthropic-pptx/upstream/scripts/thumbnail.py +289 -0
- package/dist/registry/skills/anthropic-skill-creator/SKILL.md +372 -0
- package/dist/registry/skills/anthropic-skill-creator/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-skill-creator/upstream/SKILL.md +357 -0
- package/dist/registry/skills/anthropic-skill-creator/upstream/references/output-patterns.md +82 -0
- package/dist/registry/skills/anthropic-skill-creator/upstream/references/workflows.md +28 -0
- package/dist/registry/skills/anthropic-skill-creator/upstream/scripts/init_skill.py +303 -0
- package/dist/registry/skills/anthropic-skill-creator/upstream/scripts/package_skill.py +110 -0
- package/dist/registry/skills/anthropic-skill-creator/upstream/scripts/quick_validate.py +103 -0
- package/dist/registry/skills/anthropic-slack-gif-creator/SKILL.md +269 -0
- package/dist/registry/skills/anthropic-slack-gif-creator/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-slack-gif-creator/upstream/SKILL.md +254 -0
- package/dist/registry/skills/anthropic-slack-gif-creator/upstream/core/easing.py +234 -0
- package/dist/registry/skills/anthropic-slack-gif-creator/upstream/core/frame_composer.py +176 -0
- package/dist/registry/skills/anthropic-slack-gif-creator/upstream/core/gif_builder.py +269 -0
- package/dist/registry/skills/anthropic-slack-gif-creator/upstream/core/validators.py +136 -0
- package/dist/registry/skills/anthropic-slack-gif-creator/upstream/requirements.txt +4 -0
- package/dist/registry/skills/anthropic-theme-factory/SKILL.md +73 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/SKILL.md +59 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/theme-showcase.pdf +0 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/arctic-frost.md +19 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/botanical-garden.md +19 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/desert-rose.md +19 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/forest-canopy.md +19 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/golden-hour.md +19 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/midnight-galaxy.md +19 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/modern-minimalist.md +19 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/ocean-depths.md +19 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/sunset-boulevard.md +19 -0
- package/dist/registry/skills/anthropic-theme-factory/upstream/themes/tech-innovation.md +19 -0
- package/dist/registry/skills/anthropic-web-artifacts-builder/SKILL.md +89 -0
- package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/SKILL.md +74 -0
- package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/scripts/bundle-artifact.sh +54 -0
- package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/scripts/init-artifact.sh +322 -0
- package/dist/registry/skills/anthropic-web-artifacts-builder/upstream/scripts/shadcn-components.tar.gz +0 -0
- package/dist/registry/skills/anthropic-webapp-testing/SKILL.md +111 -0
- package/dist/registry/skills/anthropic-webapp-testing/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/anthropic-webapp-testing/upstream/SKILL.md +96 -0
- package/dist/registry/skills/anthropic-webapp-testing/upstream/examples/console_logging.py +35 -0
- package/dist/registry/skills/anthropic-webapp-testing/upstream/examples/element_discovery.py +40 -0
- package/dist/registry/skills/anthropic-webapp-testing/upstream/examples/static_html_automation.py +33 -0
- package/dist/registry/skills/anthropic-webapp-testing/upstream/scripts/with_server.py +106 -0
- package/dist/registry/skills/anthropic-xlsx/SKILL.md +307 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/LICENSE.txt +30 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/SKILL.md +292 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/helpers/__init__.py +0 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/helpers/merge_runs.py +199 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/helpers/simplify_redlines.py +197 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/pack.py +159 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/mce/mc.xsd +75 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/soffice.py +183 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/unpack.py +132 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validate.py +111 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/__init__.py +15 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/base.py +847 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/docx.py +446 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/pptx.py +275 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/office/validators/redlining.py +247 -0
- package/dist/registry/skills/anthropic-xlsx/upstream/scripts/recalc.py +184 -0
- package/dist/registry/skills/changelog-from-commits/SKILL.md +17 -0
- package/dist/registry/skills/changelog-from-commits/scripts/check.sh +5 -0
- package/dist/registry/skills/changelog-from-commits/scripts/run.sh +25 -0
- package/dist/registry/skills/code-review-checklist/SKILL.md +19 -0
- package/dist/registry/skills/debugging-playbook/SKILL.md +17 -0
- package/dist/registry/skills/dependency-audit-report/SKILL.md +18 -0
- package/dist/registry/skills/dependency-audit-report/scripts/check.sh +5 -0
- package/dist/registry/skills/dependency-audit-report/scripts/run.sh +9 -0
- package/dist/registry/skills/dependency-security-fix/SKILL.md +19 -0
- package/dist/registry/skills/dependency-security-fix/scripts/check.sh +8 -0
- package/dist/registry/skills/dependency-security-fix/scripts/run.sh +28 -0
- package/dist/registry/skills/deployment-checklist/SKILL.md +18 -0
- package/dist/registry/skills/docs-styleguide/SKILL.md +16 -0
- package/dist/registry/skills/git-commit-style/SKILL.md +16 -0
- package/dist/registry/skills/git-status-report/SKILL.md +17 -0
- package/dist/registry/skills/git-status-report/scripts/check.sh +5 -0
- package/dist/registry/skills/git-status-report/scripts/run.sh +16 -0
- package/dist/registry/skills/node-doctor/SKILL.md +31 -0
- package/dist/registry/skills/node-doctor/scripts/check.sh +5 -0
- package/dist/registry/skills/node-doctor/scripts/run.sh +12 -0
- package/dist/registry/skills/openai-cloudflare-deploy/SKILL.md +240 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/SKILL.md +224 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/assets/cloudflare-small.svg +3 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/assets/cloudflare.png +0 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/README.md +89 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/api.md +190 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/configuration.md +182 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/gotchas.md +158 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/agents-sdk/patterns.md +192 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/README.md +175 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/configuration.md +111 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/dynamic-routing.md +82 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/features.md +96 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/sdk-integration.md +114 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-gateway/troubleshooting.md +88 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/README.md +138 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/api.md +87 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/configuration.md +88 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/gotchas.md +81 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ai-search/patterns.md +85 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/README.md +92 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/api.md +112 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/configuration.md +112 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/gotchas.md +85 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/analytics-engine/patterns.md +83 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/README.md +65 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/api.md +204 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/configuration.md +160 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/gotchas.md +225 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api/patterns.md +204 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/README.md +44 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/api.md +141 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/configuration.md +192 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/gotchas.md +125 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/api-shield/patterns.md +180 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/README.md +90 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/api.md +240 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/configuration.md +197 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/gotchas.md +111 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/argo-smart-routing/patterns.md +104 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/README.md +122 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/api.md +203 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/configuration.md +188 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/gotchas.md +208 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bindings/patterns.md +200 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/README.md +94 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/api.md +169 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/configuration.md +163 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/gotchas.md +114 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/bot-management/patterns.md +182 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/README.md +78 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/api.md +108 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/configuration.md +78 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/gotchas.md +88 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/browser-rendering/patterns.md +91 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/README.md +111 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/api.md +71 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/configuration.md +81 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/gotchas.md +92 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/c3/patterns.md +82 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/README.md +147 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/api.md +194 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/configuration.md +169 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/gotchas.md +132 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cache-reserve/patterns.md +197 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/README.md +85 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/api.md +187 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/configuration.md +188 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/gotchas.md +178 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/containers/patterns.md +202 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/README.md +99 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/api.md +196 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/configuration.md +180 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/gotchas.md +199 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/cron-triggers/patterns.md +190 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/README.md +133 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/api.md +196 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/configuration.md +188 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/gotchas.md +98 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/d1/patterns.md +189 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/README.md +41 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/api.md +164 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/configuration.md +93 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/gotchas.md +107 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/ddos/patterns.md +174 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/README.md +75 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/api.md +102 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/configuration.md +112 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/gotchas.md +150 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/patterns.md +182 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/do-storage/testing.md +183 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/README.md +185 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/api.md +187 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/configuration.md +160 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/gotchas.md +197 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/durable-objects/patterns.md +201 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/README.md +89 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/api.md +195 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/configuration.md +186 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/gotchas.md +196 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-routing/patterns.md +229 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/README.md +151 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/api.md +237 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/configuration.md +112 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/gotchas.md +125 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/email-workers/patterns.md +102 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/README.md +82 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/api.md +143 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/configuration.md +159 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/gotchas.md +77 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/hyperdrive/patterns.md +190 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/README.md +61 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/api.md +96 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/configuration.md +211 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/gotchas.md +99 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/images/patterns.md +115 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/README.md +89 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/api.md +160 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/configuration.md +144 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/gotchas.md +131 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/kv/patterns.md +196 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/README.md +105 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/api.md +187 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/configuration.md +173 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/gotchas.md +160 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/miniflare/patterns.md +181 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/README.md +99 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/api.md +199 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/configuration.md +114 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/gotchas.md +165 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/network-interconnect/patterns.md +166 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/README.md +87 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/api.md +164 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/configuration.md +169 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/gotchas.md +115 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/observability/patterns.md +105 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/README.md +88 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/api.md +204 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/configuration.md +201 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/gotchas.md +203 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages/patterns.md +204 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/README.md +98 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/api.md +143 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/configuration.md +122 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/gotchas.md +94 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pages-functions/patterns.md +137 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/README.md +105 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/api.md +208 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/configuration.md +98 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/gotchas.md +80 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pipelines/patterns.md +87 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/README.md +100 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/api.md +200 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/configuration.md +198 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/gotchas.md +181 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/pulumi/patterns.md +191 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/README.md +96 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/api.md +206 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/configuration.md +144 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/gotchas.md +206 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/queues/patterns.md +220 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/README.md +95 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/api.md +200 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/configuration.md +165 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/gotchas.md +190 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2/patterns.md +193 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/README.md +149 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/api.md +199 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/configuration.md +198 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/gotchas.md +170 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-data-catalog/patterns.md +191 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/README.md +128 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/api.md +158 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/configuration.md +147 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/gotchas.md +212 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/r2-sql/patterns.md +222 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/README.md +65 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/api.md +158 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/configuration.md +137 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/gotchas.md +133 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtime-sfu/patterns.md +174 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/README.md +113 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/api.md +212 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/configuration.md +203 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/gotchas.md +169 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/realtimekit/patterns.md +223 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/README.md +96 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/api.md +198 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/configuration.md +143 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/gotchas.md +194 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/sandbox/patterns.md +201 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/README.md +74 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/api.md +200 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/configuration.md +185 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/gotchas.md +97 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/secrets-store/patterns.md +207 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/README.md +138 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/api.md +183 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/configuration.md +196 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/gotchas.md +174 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/smart-placement/patterns.md +183 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/README.md +68 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/api.md +198 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/configuration.md +227 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/gotchas.md +86 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/snippets/patterns.md +135 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/README.md +52 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/api.md +181 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/configuration.md +194 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/gotchas.md +145 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/spectrum/patterns.md +196 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/README.md +65 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/api.md +199 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/configuration.md +186 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/gotchas.md +162 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/static-assets/patterns.md +189 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/README.md +114 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/api-live.md +195 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/api.md +199 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/configuration.md +141 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/gotchas.md +130 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/stream/patterns.md +184 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/README.md +89 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/api.md +200 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/configuration.md +176 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/gotchas.md +192 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tail-workers/patterns.md +180 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/README.md +102 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/api.md +178 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/configuration.md +197 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/gotchas.md +150 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/terraform/patterns.md +174 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/README.md +129 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/api.md +193 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/configuration.md +157 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/gotchas.md +147 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/networking.md +168 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/tunnel/patterns.md +192 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/README.md +82 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/api.md +239 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/configuration.md +179 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/gotchas.md +231 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turn/patterns.md +213 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/README.md +99 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/api.md +240 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/configuration.md +222 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/gotchas.md +218 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/turnstile/patterns.md +193 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/README.md +133 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/api.md +88 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/configuration.md +88 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/gotchas.md +76 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/vectorize/patterns.md +90 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/README.md +113 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/api.md +202 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/configuration.md +203 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/gotchas.md +204 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/waf/patterns.md +197 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/README.md +140 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/configuration.md +76 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/gotchas.md +82 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/integration.md +60 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/web-analytics/patterns.md +91 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/README.md +78 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/api.md +185 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/configuration.md +183 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/gotchas.md +139 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workerd/patterns.md +192 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/README.md +108 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/api.md +195 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/configuration.md +185 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/frameworks.md +197 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/gotchas.md +136 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers/patterns.md +198 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/README.md +197 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/api.md +112 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/configuration.md +97 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/gotchas.md +114 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-ai/patterns.md +120 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/README.md +89 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/api.md +196 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/configuration.md +167 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/gotchas.md +134 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-for-platforms/patterns.md +188 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/README.md +127 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/api.md +101 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/configuration.md +163 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/gotchas.md +88 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-playground/patterns.md +132 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/README.md +127 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/api.md +202 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/configuration.md +147 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/gotchas.md +167 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workers-vpc/patterns.md +209 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/README.md +69 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/api.md +185 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/configuration.md +151 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/gotchas.md +97 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/workflows/patterns.md +175 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/README.md +141 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/api.md +188 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/auth.md +73 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/configuration.md +197 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/gotchas.md +197 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/wrangler/patterns.md +209 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/README.md +111 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/api.md +112 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/configuration.md +90 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/gotchas.md +81 -0
- package/dist/registry/skills/openai-cloudflare-deploy/upstream/references/zaraz/patterns.md +74 -0
- package/dist/registry/skills/openai-develop-web-game/SKILL.md +164 -0
- package/dist/registry/skills/openai-develop-web-game/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-develop-web-game/upstream/SKILL.md +149 -0
- package/dist/registry/skills/openai-develop-web-game/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-develop-web-game/upstream/assets/game-small.svg +4 -0
- package/dist/registry/skills/openai-develop-web-game/upstream/assets/game.png +0 -0
- package/dist/registry/skills/openai-develop-web-game/upstream/references/action_payloads.json +7 -0
- package/dist/registry/skills/openai-develop-web-game/upstream/scripts/web_game_playwright_client.js +356 -0
- package/dist/registry/skills/openai-doc/SKILL.md +95 -0
- package/dist/registry/skills/openai-doc/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-doc/upstream/SKILL.md +80 -0
- package/dist/registry/skills/openai-doc/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-doc/upstream/assets/doc-small.svg +3 -0
- package/dist/registry/skills/openai-doc/upstream/assets/doc.png +0 -0
- package/dist/registry/skills/openai-doc/upstream/scripts/render_docx.py +296 -0
- package/dist/registry/skills/openai-figma/SKILL.md +58 -0
- package/dist/registry/skills/openai-figma/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/openai-figma/upstream/SKILL.md +42 -0
- package/dist/registry/skills/openai-figma/upstream/agents/openai.yaml +14 -0
- package/dist/registry/skills/openai-figma/upstream/assets/figma-small.svg +3 -0
- package/dist/registry/skills/openai-figma/upstream/assets/figma.png +0 -0
- package/dist/registry/skills/openai-figma/upstream/assets/icon.svg +28 -0
- package/dist/registry/skills/openai-figma/upstream/references/figma-mcp-config.md +35 -0
- package/dist/registry/skills/openai-figma/upstream/references/figma-tools-and-prompts.md +34 -0
- package/dist/registry/skills/openai-figma-implement-design/SKILL.md +279 -0
- package/dist/registry/skills/openai-figma-implement-design/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/openai-figma-implement-design/upstream/SKILL.md +264 -0
- package/dist/registry/skills/openai-figma-implement-design/upstream/agents/openai.yaml +14 -0
- package/dist/registry/skills/openai-figma-implement-design/upstream/assets/figma-small.svg +3 -0
- package/dist/registry/skills/openai-figma-implement-design/upstream/assets/figma.png +0 -0
- package/dist/registry/skills/openai-figma-implement-design/upstream/assets/icon.svg +28 -0
- package/dist/registry/skills/openai-gh-address-comments/SKILL.md +39 -0
- package/dist/registry/skills/openai-gh-address-comments/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/openai-gh-address-comments/upstream/SKILL.md +25 -0
- package/dist/registry/skills/openai-gh-address-comments/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-gh-address-comments/upstream/assets/github-small.svg +3 -0
- package/dist/registry/skills/openai-gh-address-comments/upstream/assets/github.png +0 -0
- package/dist/registry/skills/openai-gh-address-comments/upstream/scripts/fetch_comments.py +237 -0
- package/dist/registry/skills/openai-gh-fix-ci/SKILL.md +84 -0
- package/dist/registry/skills/openai-gh-fix-ci/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-gh-fix-ci/upstream/SKILL.md +69 -0
- package/dist/registry/skills/openai-gh-fix-ci/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-gh-fix-ci/upstream/assets/github-small.svg +3 -0
- package/dist/registry/skills/openai-gh-fix-ci/upstream/assets/github.png +0 -0
- package/dist/registry/skills/openai-gh-fix-ci/upstream/scripts/inspect_pr_checks.py +509 -0
- package/dist/registry/skills/openai-imagegen/SKILL.md +189 -0
- package/dist/registry/skills/openai-imagegen/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-imagegen/upstream/SKILL.md +174 -0
- package/dist/registry/skills/openai-imagegen/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-imagegen/upstream/assets/imagegen-small.svg +5 -0
- package/dist/registry/skills/openai-imagegen/upstream/assets/imagegen.png +0 -0
- package/dist/registry/skills/openai-imagegen/upstream/references/cli.md +132 -0
- package/dist/registry/skills/openai-imagegen/upstream/references/codex-network.md +28 -0
- package/dist/registry/skills/openai-imagegen/upstream/references/image-api.md +36 -0
- package/dist/registry/skills/openai-imagegen/upstream/references/prompting.md +81 -0
- package/dist/registry/skills/openai-imagegen/upstream/references/sample-prompts.md +384 -0
- package/dist/registry/skills/openai-imagegen/upstream/scripts/image_gen.py +876 -0
- package/dist/registry/skills/openai-jupyter-notebook/SKILL.md +122 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/SKILL.md +107 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/assets/experiment-template.ipynb +110 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/assets/jupyter-small.svg +3 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/assets/jupyter.png +0 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/assets/tutorial-template.ipynb +107 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/references/experiment-patterns.md +10 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/references/notebook-structure.md +17 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/references/quality-checklist.md +11 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/references/tutorial-patterns.md +9 -0
- package/dist/registry/skills/openai-jupyter-notebook/upstream/scripts/new_notebook.py +130 -0
- package/dist/registry/skills/openai-linear/SKILL.md +101 -0
- package/dist/registry/skills/openai-linear/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/openai-linear/upstream/SKILL.md +87 -0
- package/dist/registry/skills/openai-linear/upstream/agents/openai.yaml +14 -0
- package/dist/registry/skills/openai-linear/upstream/assets/linear-small.svg +5 -0
- package/dist/registry/skills/openai-linear/upstream/assets/linear.png +0 -0
- package/dist/registry/skills/openai-netlify-deploy/SKILL.md +263 -0
- package/dist/registry/skills/openai-netlify-deploy/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-netlify-deploy/upstream/SKILL.md +247 -0
- package/dist/registry/skills/openai-netlify-deploy/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-netlify-deploy/upstream/assets/netlify-small.svg +11 -0
- package/dist/registry/skills/openai-netlify-deploy/upstream/assets/netlify.png +0 -0
- package/dist/registry/skills/openai-netlify-deploy/upstream/references/cli-commands.md +162 -0
- package/dist/registry/skills/openai-netlify-deploy/upstream/references/deployment-patterns.md +303 -0
- package/dist/registry/skills/openai-netlify-deploy/upstream/references/netlify-toml.md +259 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/SKILL.md +70 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/LICENSE.txt +7 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/SKILL.md +56 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/agents/openai.yaml +14 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/assets/notion-small.svg +11 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/assets/notion.png +0 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/evaluations/README.md +95 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/evaluations/conversation-to-wiki.json +31 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/evaluations/decision-record.json +31 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/examples/conversation-to-faq.md +226 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/examples/decision-capture.md +126 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/examples/how-to-guide.md +118 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/database-best-practices.md +112 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/decision-log-database.md +58 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/documentation-database.md +93 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/faq-database.md +57 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/how-to-guide-database.md +38 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/learning-database.md +35 -0
- package/dist/registry/skills/openai-notion-knowledge-capture/upstream/reference/team-wiki-database.md +27 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/SKILL.md +74 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/LICENSE.txt +7 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/SKILL.md +60 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/agents/openai.yaml +14 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/assets/notion-small.svg +11 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/assets/notion.png +0 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/evaluations/README.md +101 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/evaluations/decision-meeting-prep.json +35 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/evaluations/status-meeting-prep.json +35 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/examples/customer-meeting.md +125 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/examples/executive-review.md +78 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/examples/project-decision.md +431 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/examples/sprint-planning.md +80 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/brainstorming-template.md +81 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/decision-meeting-template.md +94 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/one-on-one-template.md +58 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/retrospective-template.md +58 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/sprint-planning-template.md +68 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/status-update-template.md +74 -0
- package/dist/registry/skills/openai-notion-meeting-intelligence/upstream/reference/template-selection-guide.md +56 -0
- package/dist/registry/skills/openai-notion-research-documentation/SKILL.md +73 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/LICENSE.txt +7 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/SKILL.md +59 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/agents/openai.yaml +14 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/assets/notion-small.svg +11 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/assets/notion.png +0 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/evaluations/README.md +109 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/evaluations/basic-research.json +28 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/evaluations/research-to-database.json +29 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/examples/competitor-analysis.md +283 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/examples/market-research.md +62 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/examples/technical-investigation.md +233 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/examples/trip-planning.md +128 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/advanced-search.md +212 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/citations.md +190 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/comparison-format.md +37 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/comparison-template.md +44 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/comprehensive-report-format.md +41 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/comprehensive-report-template.md +64 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/format-selection-guide.md +95 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/quick-brief-format.md +37 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/quick-brief-template.md +25 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/research-summary-format.md +33 -0
- package/dist/registry/skills/openai-notion-research-documentation/upstream/reference/research-summary-template.md +49 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/SKILL.md +72 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/LICENSE.txt +7 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/SKILL.md +58 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/agents/openai.yaml +14 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/assets/notion-small.svg +11 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/assets/notion.png +0 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/evaluations/README.md +120 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/evaluations/basic-spec-implementation.json +32 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/evaluations/spec-to-tasks.json +35 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/examples/api-feature.md +461 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/examples/database-migration.md +81 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/examples/ui-component.md +68 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/milestone-summary-template.md +27 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/progress-tracking.md +458 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/progress-update-template.md +25 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/quick-implementation-plan.md +26 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/spec-parsing.md +383 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/standard-implementation-plan.md +146 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/task-creation-template.md +34 -0
- package/dist/registry/skills/openai-notion-spec-to-implementation/upstream/reference/task-creation.md +441 -0
- package/dist/registry/skills/openai-openai-docs/SKILL.md +71 -0
- package/dist/registry/skills/openai-openai-docs/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-openai-docs/upstream/SKILL.md +56 -0
- package/dist/registry/skills/openai-openai-docs/upstream/agents/openai.yaml +14 -0
- package/dist/registry/skills/openai-openai-docs/upstream/assets/openai-small.svg +3 -0
- package/dist/registry/skills/openai-openai-docs/upstream/assets/openai.png +0 -0
- package/dist/registry/skills/openai-pdf/SKILL.md +82 -0
- package/dist/registry/skills/openai-pdf/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-pdf/upstream/SKILL.md +67 -0
- package/dist/registry/skills/openai-pdf/upstream/agents/openai.yaml +5 -0
- package/dist/registry/skills/openai-pdf/upstream/assets/pdf.png +0 -0
- package/dist/registry/skills/openai-playwright/SKILL.md +162 -0
- package/dist/registry/skills/openai-playwright/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-playwright/upstream/NOTICE.txt +14 -0
- package/dist/registry/skills/openai-playwright/upstream/SKILL.md +147 -0
- package/dist/registry/skills/openai-playwright/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-playwright/upstream/assets/playwright-small.svg +3 -0
- package/dist/registry/skills/openai-playwright/upstream/assets/playwright.png +0 -0
- package/dist/registry/skills/openai-playwright/upstream/references/cli.md +116 -0
- package/dist/registry/skills/openai-playwright/upstream/references/workflows.md +95 -0
- package/dist/registry/skills/openai-playwright/upstream/scripts/playwright_cli.sh +25 -0
- package/dist/registry/skills/openai-render-deploy/SKILL.md +495 -0
- package/dist/registry/skills/openai-render-deploy/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-render-deploy/upstream/SKILL.md +479 -0
- package/dist/registry/skills/openai-render-deploy/upstream/agents/openai.yaml +14 -0
- package/dist/registry/skills/openai-render-deploy/upstream/assets/docker.yaml +62 -0
- package/dist/registry/skills/openai-render-deploy/upstream/assets/go-api.yaml +35 -0
- package/dist/registry/skills/openai-render-deploy/upstream/assets/nextjs-postgres.yaml +35 -0
- package/dist/registry/skills/openai-render-deploy/upstream/assets/node-express.yaml +25 -0
- package/dist/registry/skills/openai-render-deploy/upstream/assets/python-django.yaml +89 -0
- package/dist/registry/skills/openai-render-deploy/upstream/assets/render-small.svg +3 -0
- package/dist/registry/skills/openai-render-deploy/upstream/assets/render.png +0 -0
- package/dist/registry/skills/openai-render-deploy/upstream/assets/static-site.yaml +54 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/blueprint-spec.md +718 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/codebase-analysis.md +49 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/configuration-guide.md +603 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/deployment-details.md +224 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/direct-creation.md +113 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/error-patterns.md +13 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/post-deploy-checks.md +36 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/runtimes.md +473 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/service-types.md +450 -0
- package/dist/registry/skills/openai-render-deploy/upstream/references/troubleshooting-basics.md +36 -0
- package/dist/registry/skills/openai-screenshot/SKILL.md +282 -0
- package/dist/registry/skills/openai-screenshot/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-screenshot/upstream/SKILL.md +267 -0
- package/dist/registry/skills/openai-screenshot/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-screenshot/upstream/assets/screenshot-small.svg +5 -0
- package/dist/registry/skills/openai-screenshot/upstream/assets/screenshot.png +0 -0
- package/dist/registry/skills/openai-screenshot/upstream/scripts/ensure_macos_permissions.sh +54 -0
- package/dist/registry/skills/openai-screenshot/upstream/scripts/macos_display_info.swift +22 -0
- package/dist/registry/skills/openai-screenshot/upstream/scripts/macos_permissions.swift +40 -0
- package/dist/registry/skills/openai-screenshot/upstream/scripts/macos_window_info.swift +126 -0
- package/dist/registry/skills/openai-screenshot/upstream/scripts/take_screenshot.ps1 +163 -0
- package/dist/registry/skills/openai-screenshot/upstream/scripts/take_screenshot.py +585 -0
- package/dist/registry/skills/openai-security-best-practices/SKILL.md +102 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/SKILL.md +86 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/agents/openai.yaml +4 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/golang-general-backend-security.md +826 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-express-web-server-security.md +1158 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-general-web-frontend-security.md +747 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-jquery-web-frontend-security.md +678 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-typescript-nextjs-web-server-security.md +1144 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-typescript-react-web-frontend-security.md +990 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/javascript-typescript-vue-web-frontend-security.md +791 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/python-django-web-server-security.md +882 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/python-fastapi-web-server-security.md +1036 -0
- package/dist/registry/skills/openai-security-best-practices/upstream/references/python-flask-web-server-security.md +705 -0
- package/dist/registry/skills/openai-security-ownership-map/SKILL.md +222 -0
- package/dist/registry/skills/openai-security-ownership-map/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-security-ownership-map/upstream/SKILL.md +206 -0
- package/dist/registry/skills/openai-security-ownership-map/upstream/agents/openai.yaml +4 -0
- package/dist/registry/skills/openai-security-ownership-map/upstream/references/neo4j-import.md +60 -0
- package/dist/registry/skills/openai-security-ownership-map/upstream/scripts/build_ownership_map.py +956 -0
- package/dist/registry/skills/openai-security-ownership-map/upstream/scripts/community_maintainers.py +544 -0
- package/dist/registry/skills/openai-security-ownership-map/upstream/scripts/query_ownership.py +483 -0
- package/dist/registry/skills/openai-security-ownership-map/upstream/scripts/run_ownership_map.py +200 -0
- package/dist/registry/skills/openai-security-threat-model/SKILL.md +97 -0
- package/dist/registry/skills/openai-security-threat-model/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-security-threat-model/upstream/SKILL.md +81 -0
- package/dist/registry/skills/openai-security-threat-model/upstream/agents/openai.yaml +4 -0
- package/dist/registry/skills/openai-security-threat-model/upstream/references/prompt-template.md +255 -0
- package/dist/registry/skills/openai-security-threat-model/upstream/references/security-controls-and-assets.md +32 -0
- package/dist/registry/skills/openai-sentry/SKILL.md +138 -0
- package/dist/registry/skills/openai-sentry/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-sentry/upstream/SKILL.md +123 -0
- package/dist/registry/skills/openai-sentry/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-sentry/upstream/assets/sentry-small.svg +3 -0
- package/dist/registry/skills/openai-sentry/upstream/assets/sentry.png +0 -0
- package/dist/registry/skills/openai-sentry/upstream/scripts/sentry_api.py +238 -0
- package/dist/registry/skills/openai-skill-creator/SKILL.md +382 -0
- package/dist/registry/skills/openai-skill-creator/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/openai-skill-creator/upstream/SKILL.md +368 -0
- package/dist/registry/skills/openai-skill-creator/upstream/agents/openai.yaml +4 -0
- package/dist/registry/skills/openai-skill-creator/upstream/references/openai_yaml.md +43 -0
- package/dist/registry/skills/openai-skill-creator/upstream/scripts/generate_openai_yaml.py +225 -0
- package/dist/registry/skills/openai-skill-creator/upstream/scripts/init_skill.py +397 -0
- package/dist/registry/skills/openai-skill-creator/upstream/scripts/quick_validate.py +101 -0
- package/dist/registry/skills/openai-skill-installer/SKILL.md +72 -0
- package/dist/registry/skills/openai-skill-installer/upstream/LICENSE.txt +202 -0
- package/dist/registry/skills/openai-skill-installer/upstream/SKILL.md +58 -0
- package/dist/registry/skills/openai-skill-installer/upstream/agents/openai.yaml +5 -0
- package/dist/registry/skills/openai-skill-installer/upstream/assets/skill-installer-small.svg +3 -0
- package/dist/registry/skills/openai-skill-installer/upstream/assets/skill-installer.png +0 -0
- package/dist/registry/skills/openai-skill-installer/upstream/scripts/github_utils.py +21 -0
- package/dist/registry/skills/openai-skill-installer/upstream/scripts/install-skill-from-github.py +308 -0
- package/dist/registry/skills/openai-skill-installer/upstream/scripts/list-skills.py +107 -0
- package/dist/registry/skills/openai-sora/SKILL.md +168 -0
- package/dist/registry/skills/openai-sora/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-sora/upstream/SKILL.md +153 -0
- package/dist/registry/skills/openai-sora/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-sora/upstream/assets/sora-small.svg +4 -0
- package/dist/registry/skills/openai-sora/upstream/assets/sora.png +0 -0
- package/dist/registry/skills/openai-sora/upstream/references/cinematic-shots.md +53 -0
- package/dist/registry/skills/openai-sora/upstream/references/cli.md +248 -0
- package/dist/registry/skills/openai-sora/upstream/references/codex-network.md +28 -0
- package/dist/registry/skills/openai-sora/upstream/references/prompting.md +137 -0
- package/dist/registry/skills/openai-sora/upstream/references/sample-prompts.md +95 -0
- package/dist/registry/skills/openai-sora/upstream/references/social-ads.md +42 -0
- package/dist/registry/skills/openai-sora/upstream/references/troubleshooting.md +58 -0
- package/dist/registry/skills/openai-sora/upstream/references/video-api.md +45 -0
- package/dist/registry/skills/openai-sora/upstream/scripts/sora.py +970 -0
- package/dist/registry/skills/openai-speech/SKILL.md +159 -0
- package/dist/registry/skills/openai-speech/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-speech/upstream/SKILL.md +144 -0
- package/dist/registry/skills/openai-speech/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-speech/upstream/assets/speech-small.svg +3 -0
- package/dist/registry/skills/openai-speech/upstream/assets/speech.png +0 -0
- package/dist/registry/skills/openai-speech/upstream/references/accessibility.md +32 -0
- package/dist/registry/skills/openai-speech/upstream/references/audio-api.md +31 -0
- package/dist/registry/skills/openai-speech/upstream/references/cli.md +99 -0
- package/dist/registry/skills/openai-speech/upstream/references/codex-network.md +28 -0
- package/dist/registry/skills/openai-speech/upstream/references/ivr.md +32 -0
- package/dist/registry/skills/openai-speech/upstream/references/narration.md +31 -0
- package/dist/registry/skills/openai-speech/upstream/references/prompting.md +38 -0
- package/dist/registry/skills/openai-speech/upstream/references/sample-prompts.md +44 -0
- package/dist/registry/skills/openai-speech/upstream/references/voice-directions.md +80 -0
- package/dist/registry/skills/openai-speech/upstream/references/voiceover.md +31 -0
- package/dist/registry/skills/openai-speech/upstream/scripts/text_to_speech.py +528 -0
- package/dist/registry/skills/openai-spreadsheet/SKILL.md +137 -0
- package/dist/registry/skills/openai-spreadsheet/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-spreadsheet/upstream/SKILL.md +122 -0
- package/dist/registry/skills/openai-spreadsheet/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-spreadsheet/upstream/assets/spreadsheet-small.svg +3 -0
- package/dist/registry/skills/openai-spreadsheet/upstream/assets/spreadsheet.png +0 -0
- package/dist/registry/skills/openai-spreadsheet/upstream/references/examples/openpyxl/create_basic_spreadsheet.py +51 -0
- package/dist/registry/skills/openai-spreadsheet/upstream/references/examples/openpyxl/create_spreadsheet_with_styling.py +96 -0
- package/dist/registry/skills/openai-spreadsheet/upstream/references/examples/openpyxl/read_existing_spreadsheet.py +59 -0
- package/dist/registry/skills/openai-spreadsheet/upstream/references/examples/openpyxl/styling_spreadsheet.py +79 -0
- package/dist/registry/skills/openai-transcribe/SKILL.md +96 -0
- package/dist/registry/skills/openai-transcribe/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-transcribe/upstream/SKILL.md +81 -0
- package/dist/registry/skills/openai-transcribe/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-transcribe/upstream/assets/transcribe-small.svg +3 -0
- package/dist/registry/skills/openai-transcribe/upstream/assets/transcribe.png +0 -0
- package/dist/registry/skills/openai-transcribe/upstream/references/api.md +8 -0
- package/dist/registry/skills/openai-transcribe/upstream/scripts/transcribe_diarize.py +276 -0
- package/dist/registry/skills/openai-vercel-deploy/SKILL.md +84 -0
- package/{LICENSE → dist/registry/skills/openai-vercel-deploy/upstream/LICENSE.txt} +1 -1
- package/dist/registry/skills/openai-vercel-deploy/upstream/SKILL.md +68 -0
- package/dist/registry/skills/openai-vercel-deploy/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-vercel-deploy/upstream/assets/vercel-small.svg +5 -0
- package/dist/registry/skills/openai-vercel-deploy/upstream/assets/vercel.png +0 -0
- package/dist/registry/skills/openai-vercel-deploy/upstream/scripts/deploy.sh +301 -0
- package/dist/registry/skills/openai-yeet/SKILL.md +44 -0
- package/dist/registry/skills/openai-yeet/upstream/LICENSE.txt +201 -0
- package/dist/registry/skills/openai-yeet/upstream/SKILL.md +28 -0
- package/dist/registry/skills/openai-yeet/upstream/agents/openai.yaml +6 -0
- package/dist/registry/skills/openai-yeet/upstream/assets/yeet-small.svg +3 -0
- package/dist/registry/skills/openai-yeet/upstream/assets/yeet.png +0 -0
- package/dist/registry/skills/pr-description-style/SKILL.md +16 -0
- package/dist/registry/skills/react-maintenance-upgrade/SKILL.md +19 -0
- package/dist/registry/skills/react-maintenance-upgrade/scripts/check.sh +8 -0
- package/dist/registry/skills/react-maintenance-upgrade/scripts/run.sh +28 -0
- package/dist/registry/skills/react-patterns/SKILL.md +16 -0
- package/dist/registry/skills/release-notes-style/SKILL.md +16 -0
- package/dist/registry/skills/repo-bootstrap/SKILL.md +33 -0
- package/dist/registry/skills/repo-bootstrap/scripts/check.sh +8 -0
- package/dist/registry/skills/repo-bootstrap/scripts/run.sh +44 -0
- package/dist/registry/skills/run-build/SKILL.md +17 -0
- package/dist/registry/skills/run-build/scripts/check.sh +5 -0
- package/dist/registry/skills/run-build/scripts/run.sh +19 -0
- package/dist/registry/skills/run-format/SKILL.md +17 -0
- package/dist/registry/skills/run-format/scripts/check.sh +5 -0
- package/dist/registry/skills/run-format/scripts/run.sh +8 -0
- package/dist/registry/skills/run-lint/SKILL.md +17 -0
- package/dist/registry/skills/run-lint/scripts/check.sh +5 -0
- package/dist/registry/skills/run-lint/scripts/run.sh +19 -0
- package/dist/registry/skills/run-tests/SKILL.md +17 -0
- package/dist/registry/skills/run-tests/scripts/check.sh +5 -0
- package/dist/registry/skills/run-tests/scripts/run.sh +20 -0
- package/dist/registry/skills/run-typecheck/SKILL.md +17 -0
- package/dist/registry/skills/run-typecheck/scripts/check.sh +8 -0
- package/dist/registry/skills/run-typecheck/scripts/run.sh +23 -0
- package/dist/registry/skills/security-hygiene/SKILL.md +17 -0
- package/dist/registry/skills/terraform-drift-audit/SKILL.md +18 -0
- package/dist/registry/skills/terraform-drift-audit/scripts/check.sh +3 -0
- package/dist/registry/skills/terraform-drift-audit/scripts/run.sh +4 -0
- package/dist/registry/skills/terraform-fmt-validate/SKILL.md +17 -0
- package/dist/registry/skills/terraform-fmt-validate/scripts/check.sh +3 -0
- package/dist/registry/skills/terraform-fmt-validate/scripts/run.sh +5 -0
- package/dist/registry/skills/terraform-structure/SKILL.md +16 -0
- package/dist/registry/skills/testing-playbook/SKILL.md +16 -0
- package/package.json +10 -7
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/commands/cursor.d.ts +0 -27
- package/dist/commands/cursor.d.ts.map +0 -1
- package/dist/commands/cursor.js +0 -80
- package/dist/commands/cursor.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -13
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -59
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/info.d.ts +0 -13
- package/dist/commands/info.d.ts.map +0 -1
- package/dist/commands/info.js +0 -102
- package/dist/commands/info.js.map +0 -1
- package/dist/commands/install.d.ts +0 -13
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -167
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/list.d.ts +0 -13
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -51
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -15
- package/dist/commands/logs.d.ts.map +0 -1
- package/dist/commands/logs.js +0 -99
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/open.d.ts +0 -13
- package/dist/commands/open.d.ts.map +0 -1
- package/dist/commands/open.js +0 -30
- package/dist/commands/open.js.map +0 -1
- package/dist/commands/plan.d.ts +0 -14
- package/dist/commands/plan.d.ts.map +0 -1
- package/dist/commands/plan.js +0 -75
- package/dist/commands/plan.js.map +0 -1
- package/dist/commands/run.d.ts +0 -17
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -143
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/search.d.ts +0 -13
- package/dist/commands/search.d.ts.map +0 -1
- package/dist/commands/search.js +0 -32
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/uninstall.d.ts +0 -13
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js +0 -35
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/util.d.ts +0 -7
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js +0 -9
- package/dist/util.js.map +0 -1
- package/dist/utils/json.d.ts +0 -11
- package/dist/utils/json.d.ts.map +0 -1
- package/dist/utils/json.js +0 -10
- package/dist/utils/json.js.map +0 -1
|
@@ -0,0 +1,882 @@
|
|
|
1
|
+
# Django (Python) Web Security Spec (Django 6.0.x, Python 3.x)
|
|
2
|
+
|
|
3
|
+
This document is designed as a **security spec** that supports:
|
|
4
|
+
|
|
5
|
+
1. **Secure-by-default code generation** for new Django code.
|
|
6
|
+
2. **Security review / vulnerability hunting** in existing Django code (passive “notice issues while working” and active “scan the repo and report findings”).
|
|
7
|
+
|
|
8
|
+
It is intentionally written as a set of **normative requirements** (“MUST/SHOULD/MAY”) plus **audit rules** (what bad patterns look like, how to detect them, and how to fix/mitigate them).
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 0) Safety, boundaries, and anti-abuse constraints (MUST FOLLOW)
|
|
13
|
+
|
|
14
|
+
* MUST NOT request, output, log, or commit secrets (API keys, passwords, private keys, session cookies, `SECRET_KEY`, `SECRET_KEY_FALLBACKS`, database passwords).
|
|
15
|
+
* MUST NOT “fix” security by disabling protections (e.g., removing `CsrfViewMiddleware`, sprinkling `@csrf_exempt`, loosening `ALLOWED_HOSTS` to `['*']`, disabling `SecurityMiddleware`, disabling template auto-escaping, disabling permission checks).
|
|
16
|
+
* MUST provide **evidence-based findings** during audits: cite file paths, code snippets, and concrete configuration values that justify the claim.
|
|
17
|
+
* MUST treat uncertainty honestly: if a protection might exist in infrastructure (reverse proxy, WAF, CDN, ingress controller), report it as “not visible in app code; verify at runtime / edge config”.
|
|
18
|
+
* MUST keep fixes compatible with Django’s intended security model: prefer Django’s built-ins (middleware, auth, forms, ORM) over custom security logic whenever possible. Django’s deployment checklist and system checks are part of the intended model. ([Django Project][1])
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1) Operating modes
|
|
23
|
+
|
|
24
|
+
### 1.1 Generation mode (default)
|
|
25
|
+
|
|
26
|
+
When asked to write new Django code or modify existing code:
|
|
27
|
+
|
|
28
|
+
* MUST follow every **MUST** requirement in this spec.
|
|
29
|
+
* SHOULD follow every **SHOULD** requirement unless the user explicitly says otherwise.
|
|
30
|
+
* MUST prefer safe-by-default Django APIs and proven libraries over custom security code.
|
|
31
|
+
* MUST avoid introducing new risky sinks (dynamic template rendering from untrusted strings, unsafe redirects, unsafe file serving, shell execution, raw SQL string formatting, SSRF-capable URL fetchers from untrusted input).
|
|
32
|
+
|
|
33
|
+
### 1.2 Passive review mode (always on while editing)
|
|
34
|
+
|
|
35
|
+
While working anywhere in a Django repo (even if the user did not ask for a security scan):
|
|
36
|
+
|
|
37
|
+
* MUST “notice” violations of this spec in touched/nearby code.
|
|
38
|
+
* SHOULD mention issues as they come up, with a brief explanation + safe fix.
|
|
39
|
+
|
|
40
|
+
### 1.3 Active audit mode (explicit scan request)
|
|
41
|
+
|
|
42
|
+
When the user asks to “scan”, “audit”, or “hunt for vulns”:
|
|
43
|
+
|
|
44
|
+
* MUST systematically search the codebase for violations of this spec.
|
|
45
|
+
* MUST output findings in a structured format (see §2.3).
|
|
46
|
+
|
|
47
|
+
Recommended audit order:
|
|
48
|
+
|
|
49
|
+
1. Deployment entrypoints (ASGI/WSGI), Dockerfiles, Procfiles, systemd units, platform manifests.
|
|
50
|
+
2. `settings.py` and environment-specific settings modules.
|
|
51
|
+
3. Middleware ordering and enabled protections.
|
|
52
|
+
4. Authn/authz (login, session management, permissions, admin).
|
|
53
|
+
5. CSRF protections and state-changing endpoints.
|
|
54
|
+
6. Templates and XSS.
|
|
55
|
+
7. File handling (uploads/downloads/static/media) and path traversal.
|
|
56
|
+
8. Injection classes (SQL, command execution, unsafe deserialization).
|
|
57
|
+
9. Outbound requests (SSRF).
|
|
58
|
+
10. Redirect handling (open redirects) + CORS + security headers (CSP, HSTS, etc.).
|
|
59
|
+
11. Dependency/pinning and patch posture.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 2) Definitions and review guidance
|
|
64
|
+
|
|
65
|
+
### 2.1 Untrusted input (treat as attacker-controlled unless proven otherwise)
|
|
66
|
+
|
|
67
|
+
Examples include:
|
|
68
|
+
|
|
69
|
+
* `request.GET`, `request.POST`, `request.FILES`
|
|
70
|
+
* `request.body`, JSON bodies (e.g., `json.loads(request.body)`), DRF `request.data`
|
|
71
|
+
* URL path parameters (e.g., `<int:id>`, `<slug:...>`)
|
|
72
|
+
* `request.headers` / `request.META` (including `HTTP_HOST`, `HTTP_ORIGIN`, `HTTP_REFERER`, `HTTP_X_FORWARDED_*`)
|
|
73
|
+
* `request.COOKIES`
|
|
74
|
+
* Any data from external systems (webhooks, third-party APIs, message queues)
|
|
75
|
+
* Any persisted content that originated from users (DB rows, cached content, file uploads)
|
|
76
|
+
|
|
77
|
+
Django explicitly emphasizes “never trust user-controlled data” and recommends using forms/validation. ([Django Project][2])
|
|
78
|
+
|
|
79
|
+
### 2.2 State-changing request
|
|
80
|
+
|
|
81
|
+
A request is state-changing if it can create/update/delete data, change auth/session state, trigger side effects (purchase, email send, webhook send), or initiate privileged actions.
|
|
82
|
+
|
|
83
|
+
### 2.3 Required audit finding format
|
|
84
|
+
|
|
85
|
+
For each issue found, output:
|
|
86
|
+
|
|
87
|
+
* Rule ID:
|
|
88
|
+
* Severity: Critical / High / Medium / Low
|
|
89
|
+
* Location: file path + function/class/view name + line(s)
|
|
90
|
+
* Evidence: the exact code/config snippet
|
|
91
|
+
* Impact: what could go wrong, who can exploit it
|
|
92
|
+
* Fix: safe change (prefer minimal diff)
|
|
93
|
+
* Mitigation: defense-in-depth if immediate fix is hard
|
|
94
|
+
* False positive notes: what to verify if uncertain
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 3) Secure baseline: minimum production configuration (MUST in production)
|
|
99
|
+
|
|
100
|
+
This is the smallest “production baseline” that prevents common Django misconfigurations. Django provides a “Deployment checklist” and recommends running `manage.py check --deploy` against production settings. ([Django Project][1])
|
|
101
|
+
|
|
102
|
+
### 3.1 Settings management pattern (SHOULD)
|
|
103
|
+
|
|
104
|
+
* SHOULD use environment-based configuration (or a secret manager) so production settings are not hard-coded.
|
|
105
|
+
* MUST treat sensitive settings as confidential (e.g., `SECRET_KEY`, DB passwords) and keep them out of source control. Django’s checklist explicitly recommends loading `SECRET_KEY` from env or a file rather than hardcoding. ([Django Project][1])
|
|
106
|
+
* SHOULD separate dev vs prod settings modules, with safe defaults for production (fail closed if critical settings are missing). ([Django Project][1])
|
|
107
|
+
|
|
108
|
+
### 3.2 Minimum baseline targets (production)
|
|
109
|
+
|
|
110
|
+
* MUST NOT use `manage.py runserver` as the production entrypoint; use a production-ready WSGI or ASGI server. ([Django Project][1])
|
|
111
|
+
* MUST set `DEBUG = False` in production. ([Django Project][1])
|
|
112
|
+
* MUST set a strong, secret `SECRET_KEY` and keep it secret; MAY use `SECRET_KEY_FALLBACKS` for safe rotation. ([Django Project][1])
|
|
113
|
+
* MUST set `ALLOWED_HOSTS` to expected hosts (no wildcard unless you do your own host validation). ([Django Project][1])
|
|
114
|
+
* MUST enforce HTTPS for authenticated areas (ideally site-wide for any login-capable app) and set `CSRF_COOKIE_SECURE=True` and `SESSION_COOKIE_SECURE=True` when HTTPS is used. ([Django Project][1])
|
|
115
|
+
* SHOULD enable key `SecurityMiddleware` headers/settings: HSTS, Referrer-Policy, COOP, nosniff, SSL redirect (with correct proxy configuration). ([Django Project][3])
|
|
116
|
+
* MUST treat user uploads as untrusted; ensure your web server never interprets them as executable content; keep `MEDIA_ROOT` separate from `STATIC_ROOT`. ([Django Project][1])
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 4) Rules (generation + audit)
|
|
121
|
+
|
|
122
|
+
Each rule contains: required practice, insecure patterns, detection hints, and remediation.
|
|
123
|
+
|
|
124
|
+
### DJANGO-DEPLOY-001: Do not use Django’s development server in production
|
|
125
|
+
|
|
126
|
+
Severity: High (if production)
|
|
127
|
+
|
|
128
|
+
Required:
|
|
129
|
+
|
|
130
|
+
* MUST NOT deploy `manage.py runserver` as the production server.
|
|
131
|
+
* MUST run behind a production-grade WSGI or ASGI server. ([Django Project][1])
|
|
132
|
+
|
|
133
|
+
Insecure patterns:
|
|
134
|
+
|
|
135
|
+
* Production docs/scripts using `python manage.py runserver 0.0.0.0:8000`.
|
|
136
|
+
* Docker `CMD`/entrypoint uses `runserver`.
|
|
137
|
+
* Kubernetes/Procfile/systemd units invoking `runserver`.
|
|
138
|
+
|
|
139
|
+
Detection hints:
|
|
140
|
+
|
|
141
|
+
* Search for `manage.py runserver`, `runserver 0.0.0.0`, `--insecure`.
|
|
142
|
+
* Check Docker `CMD/ENTRYPOINT`, Procfile, systemd unit files, Helm charts.
|
|
143
|
+
|
|
144
|
+
Fix:
|
|
145
|
+
|
|
146
|
+
* Use a production server (WSGI/ASGI) as recommended in Django’s deployment checklist. ([Django Project][1])
|
|
147
|
+
|
|
148
|
+
Note:
|
|
149
|
+
|
|
150
|
+
* `runserver` is fine for local development. Only flag if it’s used as the production entrypoint.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### DJANGO-DEPLOY-002: `DEBUG` MUST be disabled in production
|
|
155
|
+
|
|
156
|
+
Severity: High
|
|
157
|
+
|
|
158
|
+
Required:
|
|
159
|
+
|
|
160
|
+
* MUST set `DEBUG = False` in production.
|
|
161
|
+
* MUST treat any mechanism that exposes debug pages/tracebacks to untrusted users as a critical information disclosure risk. Django’s checklist explicitly warns `DEBUG=True` leaks source excerpts, local variables, settings, and more. ([Django Project][1])
|
|
162
|
+
|
|
163
|
+
Insecure patterns:
|
|
164
|
+
|
|
165
|
+
* `DEBUG = True` in production settings.
|
|
166
|
+
* Environment defaults to `DEBUG=True` unless explicitly overridden.
|
|
167
|
+
|
|
168
|
+
Detection hints:
|
|
169
|
+
|
|
170
|
+
* Search `DEBUG = True`, `DEBUG=os.environ.get(..., True)`, `DJANGO_DEBUG`, `.env` files.
|
|
171
|
+
* Look for “production” settings modules that import from dev defaults.
|
|
172
|
+
|
|
173
|
+
Fix:
|
|
174
|
+
|
|
175
|
+
* Set `DEBUG=False` in prod settings; use explicit environment config.
|
|
176
|
+
* Ensure error reporting is via safe logging/monitoring, not debug pages. ([Django Project][1])
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
### DJANGO-CONFIG-001: `SECRET_KEY` must be strong, secret, and rotated safely
|
|
181
|
+
|
|
182
|
+
Severity: High (Critical if missing in production with signing/sessions)
|
|
183
|
+
|
|
184
|
+
Required:
|
|
185
|
+
|
|
186
|
+
* MUST set a large random `SECRET_KEY` in production and keep it secret. ([Django Project][1])
|
|
187
|
+
* MUST NOT commit it to source control or print/log it. ([Django Project][1])
|
|
188
|
+
* SHOULD load it from env or a file/secret store (not hard-coded). ([Django Project][1])
|
|
189
|
+
* MAY rotate keys using `SECRET_KEY_FALLBACKS` to avoid instantly invalidating all signed data; MUST remove old keys from fallbacks in a timely manner. ([Django Project][1])
|
|
190
|
+
|
|
191
|
+
Insecure patterns:
|
|
192
|
+
|
|
193
|
+
* Hard-coded `SECRET_KEY = "..."` in repo for production.
|
|
194
|
+
* `SECRET_KEY` reused across environments.
|
|
195
|
+
* `SECRET_KEY_FALLBACKS` contains long-expired keys indefinitely.
|
|
196
|
+
|
|
197
|
+
Detection hints:
|
|
198
|
+
|
|
199
|
+
* Search for `SECRET_KEY =`, `SECRET_KEY_FALLBACKS`, `.env` committed files, `print(settings.SECRET_KEY)`.
|
|
200
|
+
|
|
201
|
+
Fix:
|
|
202
|
+
|
|
203
|
+
* Load from secret manager / environment variable.
|
|
204
|
+
* If rotating:
|
|
205
|
+
|
|
206
|
+
* Set new `SECRET_KEY`
|
|
207
|
+
* Keep old key(s) temporarily in `SECRET_KEY_FALLBACKS`
|
|
208
|
+
* Remove old key(s) after the rotation window. ([Django Project][1])
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
### DJANGO-HOST-001: Host header must be validated (`ALLOWED_HOSTS` must be strict)
|
|
213
|
+
|
|
214
|
+
Severity: Medium
|
|
215
|
+
|
|
216
|
+
Required:
|
|
217
|
+
|
|
218
|
+
* MUST set `ALLOWED_HOSTS` in production to your expected domains/hosts. ([Django Project][1])
|
|
219
|
+
* MUST NOT set `ALLOWED_HOSTS = ['*']` in production unless you also implement your own robust `Host` validation (Django warns that wildcards require your own validation to avoid CSRF-class attacks). ([Django Project][1])
|
|
220
|
+
* SHOULD configure the fronting web server to reject unknown hosts early (defense-in-depth). ([Django Project][1])
|
|
221
|
+
|
|
222
|
+
Insecure patterns:
|
|
223
|
+
|
|
224
|
+
* `ALLOWED_HOSTS = ['*']` (or env expands to `*`) in production.
|
|
225
|
+
* `ALLOWED_HOSTS = []` with `DEBUG=False` (site won’t run, or misconfigured deployments attempt workarounds).
|
|
226
|
+
|
|
227
|
+
Detection hints:
|
|
228
|
+
|
|
229
|
+
* Search `ALLOWED_HOSTS`.
|
|
230
|
+
* Check platform environment settings that override `ALLOWED_HOSTS`.
|
|
231
|
+
|
|
232
|
+
Fix:
|
|
233
|
+
|
|
234
|
+
* Set `ALLOWED_HOSTS = ['example.com', 'www.example.com', ...]` for prod.
|
|
235
|
+
* Keep dev hosts separate.
|
|
236
|
+
|
|
237
|
+
Notes:
|
|
238
|
+
|
|
239
|
+
* Django uses the Host header for URL construction; fake Host values can lead to CSRF, cache poisoning, and poisoned email links (Django security docs call this out). ([Django Project][2])
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
### DJANGO-HTTPS-001: If TLS is used cookie transport must be secured
|
|
244
|
+
|
|
245
|
+
Severity: High (Critical for auth-enabled apps)
|
|
246
|
+
|
|
247
|
+
NOTE: Only enforce this if TLS is enabled, as it will break non-TLS applications
|
|
248
|
+
|
|
249
|
+
If using TLS:
|
|
250
|
+
* MUST set:
|
|
251
|
+
|
|
252
|
+
* `CSRF_COOKIE_SECURE = True` ([Django Project][1])
|
|
253
|
+
* `SESSION_COOKIE_SECURE = True` ([Django Project][1])
|
|
254
|
+
* SHOULD consider enabling:
|
|
255
|
+
|
|
256
|
+
* `SECURE_SSL_REDIRECT = True` (with correct proxy config) ([Django Project][3])
|
|
257
|
+
* HSTS via `SECURE_HSTS_SECONDS` (+ includeSubDomains/preload as appropriate). ([Django Project][3])
|
|
258
|
+
|
|
259
|
+
Insecure patterns:
|
|
260
|
+
|
|
261
|
+
* Login pages over HTTP, or mixed HTTP/HTTPS with the same session cookie.
|
|
262
|
+
* `CSRF_COOKIE_SECURE=False` or `SESSION_COOKIE_SECURE=False` in production HTTPS.
|
|
263
|
+
* HSTS enabled incorrectly (can break site for the duration).
|
|
264
|
+
|
|
265
|
+
Detection hints:
|
|
266
|
+
|
|
267
|
+
* Inspect `settings.py` for `CSRF_COOKIE_SECURE`, `SESSION_COOKIE_SECURE`, `SECURE_SSL_REDIRECT`, `SECURE_HSTS_SECONDS`.
|
|
268
|
+
* Inspect proxy/ingress config for HTTP->HTTPS redirect behavior.
|
|
269
|
+
|
|
270
|
+
Fix:
|
|
271
|
+
|
|
272
|
+
* Enable HTTPS redirect and secure cookies.
|
|
273
|
+
* Add HSTS carefully (start with low value, validate, then increase). Django warns misconfig can break your site for the HSTS duration. ([Django Project][3])
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
### DJANGO-PROXY-001: Reverse proxy trust must be configured correctly (`SECURE_PROXY_SSL_HEADER`)
|
|
278
|
+
|
|
279
|
+
Severity: Medium (when behind a TLS proxy)
|
|
280
|
+
|
|
281
|
+
Required:
|
|
282
|
+
|
|
283
|
+
* If behind a reverse proxy that terminates TLS, MUST configure Django so `request.is_secure()` reflects the *external* scheme, otherwise CSRF and other logic can break. Django documents using `SECURE_PROXY_SSL_HEADER` for this. ([Django Project][3])
|
|
284
|
+
* MUST only set `SECURE_PROXY_SSL_HEADER` if you control the proxy (or have guarantees) and it strips inbound spoofed headers. Django explicitly warns misconfig can compromise security and lists required conditions. ([Django Project][3])
|
|
285
|
+
|
|
286
|
+
Insecure patterns:
|
|
287
|
+
|
|
288
|
+
* `SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")` in an environment where the proxy does not strip user-supplied `X-Forwarded-Proto`.
|
|
289
|
+
* Infinite redirect loops after setting `SECURE_SSL_REDIRECT=True` (often indicates proxy HTTPS detection is wrong). ([Django Project][3])
|
|
290
|
+
|
|
291
|
+
Detection hints:
|
|
292
|
+
|
|
293
|
+
* Search `SECURE_PROXY_SSL_HEADER`, `SECURE_SSL_REDIRECT`.
|
|
294
|
+
* Inspect ingress/proxy behavior for stripping forwarded headers.
|
|
295
|
+
|
|
296
|
+
Fix:
|
|
297
|
+
|
|
298
|
+
* Set `SECURE_PROXY_SSL_HEADER` only if the proxy strips and sets the header correctly (per Django’s documented prerequisites). ([Django Project][3])
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
### DJANGO-SESS-001: Session cookies must use secure attributes in production
|
|
303
|
+
|
|
304
|
+
Severity: Medium (Only if TLS enabled)
|
|
305
|
+
|
|
306
|
+
Required (production, HTTPS):
|
|
307
|
+
|
|
308
|
+
* MUST set `SESSION_COOKIE_SECURE=True` (only transmit over HTTPS). ([Django Project][3])
|
|
309
|
+
* MUST keep `SESSION_COOKIE_HTTPONLY=True` (Django default is `True`). ([Django Project][3])
|
|
310
|
+
* SHOULD keep `SESSION_COOKIE_SAMESITE='Lax'` (Django default is `Lax`) unless a justified cross-site flow requires `None`. ([Django Project][3])
|
|
311
|
+
* SHOULD avoid setting `SESSION_COOKIE_DOMAIN` unless you truly need cross-subdomain cookies (subdomain-wide cookies expand attack surface).
|
|
312
|
+
|
|
313
|
+
Insecure patterns:
|
|
314
|
+
|
|
315
|
+
* `SESSION_COOKIE_SECURE=False` in production HTTPS.
|
|
316
|
+
|
|
317
|
+
IMPORTANT NOTE: Only set `Secure` in production environment when TLS is configured. When running in a local dev environment over HTTP, do not set `Secure` property on cookies. You should do this conditionally based on if the app is running in production mode. You should also include a property like `SESSION_COOKIE_SECURE` which can be used to disable `Secure` cookies when testing over HTTP.
|
|
318
|
+
|
|
319
|
+
* `SESSION_COOKIE_HTTPONLY=False`.
|
|
320
|
+
* `SESSION_COOKIE_SAMESITE=None` combined with cookie-authenticated state-changing endpoints (higher CSRF risk).
|
|
321
|
+
|
|
322
|
+
Detection hints:
|
|
323
|
+
|
|
324
|
+
* Search for `SESSION_COOKIE_` settings, `response.set_cookie(..., httponly=..., secure=..., samesite=...)`.
|
|
325
|
+
|
|
326
|
+
Fix:
|
|
327
|
+
|
|
328
|
+
* Set the above explicitly in production settings.
|
|
329
|
+
* Validate compatibility with your auth flows. ([Django Project][3])
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
### DJANGO-SESS-002: CSRF cookie settings must be deliberate (HttpOnly has tradeoffs)
|
|
334
|
+
|
|
335
|
+
Severity: Medium
|
|
336
|
+
|
|
337
|
+
Required:
|
|
338
|
+
|
|
339
|
+
* SHOULD set `CSRF_COOKIE_SECURE=True` when using HTTPS/TLS. ([Django Project][3])
|
|
340
|
+
* SHOULD keep `CSRF_COOKIE_SAMESITE='Lax'` unless you have a cross-site requirement. Django default is `Lax`. ([Django Project][3])
|
|
341
|
+
* MAY set `CSRF_COOKIE_HTTPONLY=True` (default is `False`) if your frontend does not need to read the CSRF cookie. If you enable it, your JS must read the CSRF token from the DOM instead (Django documents this). ([Django Project][3])
|
|
342
|
+
|
|
343
|
+
Insecure patterns:
|
|
344
|
+
|
|
345
|
+
* `CSRF_COOKIE_SECURE=False` in production HTTPS/TLS.
|
|
346
|
+
* Setting `CSRF_COOKIE_HTTPONLY=True` but still relying on “read csrftoken cookie in JS” patterns (breaks CSRF for AJAX).
|
|
347
|
+
* `CSRF_COOKIE_SAMESITE=None` without a clear reason.
|
|
348
|
+
|
|
349
|
+
Detection hints:
|
|
350
|
+
|
|
351
|
+
* Search for `CSRF_COOKIE_` settings.
|
|
352
|
+
* Search JS for `document.cookie` usage to fetch `csrftoken`.
|
|
353
|
+
|
|
354
|
+
Fix:
|
|
355
|
+
|
|
356
|
+
* Align cookie settings with your CSRF token acquisition method (cookie vs DOM) as Django describes. ([Django Project][4])
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
### DJANGO-CSRF-001: Cookie-authenticated state-changing requests MUST be CSRF-protected
|
|
361
|
+
|
|
362
|
+
Severity: High
|
|
363
|
+
|
|
364
|
+
Required:
|
|
365
|
+
|
|
366
|
+
* MUST keep `django.middleware.csrf.CsrfViewMiddleware` enabled (it is activated by default). ([Django Project][4])
|
|
367
|
+
* MUST include `{% csrf_token %}` in internal POST forms; MUST NOT include it in forms that POST to external URLs (Django warns this leaks the token). ([Django Project][4])
|
|
368
|
+
* MUST protect all state-changing endpoints (POST/PUT/PATCH/DELETE) that rely on cookies for authentication.
|
|
369
|
+
* For AJAX/SPA calls, MUST send the CSRF token via the `X-CSRFToken` header (or configured header name) as documented. ([Django Project][4])
|
|
370
|
+
* MUST be very careful with `@csrf_exempt` and use it only when absolutely necessary; if used, MUST replace CSRF with an appropriate alternative control (e.g., request signing for webhooks). Django explicitly warns about `csrf_exempt`. ([Django Project][2])
|
|
371
|
+
|
|
372
|
+
Insecure patterns:
|
|
373
|
+
|
|
374
|
+
* Missing `CsrfViewMiddleware` in `MIDDLEWARE`.
|
|
375
|
+
* `@csrf_exempt` on general-purpose authenticated views.
|
|
376
|
+
* POST/PUT/PATCH/DELETE endpoints with session auth and no CSRF tokens.
|
|
377
|
+
* Using GET for state-changing actions (amplifies CSRF risk).
|
|
378
|
+
|
|
379
|
+
Detection hints:
|
|
380
|
+
|
|
381
|
+
* Inspect `settings.py` `MIDDLEWARE` for `CsrfViewMiddleware` and its order (Django notes it should come before middleware that assumes CSRF is handled). ([Django Project][4])
|
|
382
|
+
* Search for `csrf_exempt`, `csrf_protect`, `ensure_csrf_cookie`.
|
|
383
|
+
* Enumerate URL patterns for non-GET methods; confirm CSRF coverage.
|
|
384
|
+
|
|
385
|
+
Fix:
|
|
386
|
+
|
|
387
|
+
* Re-enable `CsrfViewMiddleware`, add CSRF tokens to forms, and add AJAX header handling.
|
|
388
|
+
* For caching decorators: if you cache a view that needs CSRF tokens, apply `@csrf_protect` as Django documents to avoid caching a response without CSRF cookie/Vary headers. ([Django Project][4])
|
|
389
|
+
|
|
390
|
+
Notes:
|
|
391
|
+
|
|
392
|
+
* When deployed with HTTPS, Django’s CSRF middleware also checks the Referer header for same-origin (Django security docs mention this). ([Django Project][2])
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
### DJANGO-XSS-001: Prevent reflected/stored XSS in templates and HTML generation
|
|
397
|
+
|
|
398
|
+
Severity: High
|
|
399
|
+
|
|
400
|
+
Required:
|
|
401
|
+
|
|
402
|
+
* MUST rely on Django template auto-escaping (safe-by-default) for HTML templates. Django security docs highlight that Django templates escape dangerous characters but have limitations. ([Django Project][2])
|
|
403
|
+
* MUST NOT disable auto-escaping broadly (`{% autoescape off %}`) unless the content is trusted or safely sanitized. ([Django Project][5])
|
|
404
|
+
* MUST NOT mark untrusted content as safe:
|
|
405
|
+
|
|
406
|
+
* Avoid `mark_safe(...)` on user data.
|
|
407
|
+
* Avoid `|safe` on user-controlled content.
|
|
408
|
+
* MUST be careful about HTML context pitfalls (e.g., unquoted attributes); Django explicitly shows an example where escaping does not protect an unquoted attribute context. ([Django Project][2])
|
|
409
|
+
* SHOULD prefer safe HTML construction helpers (e.g., `format_html`) rather than manual concatenation that risks missing escapes. ([Django Project][6])
|
|
410
|
+
|
|
411
|
+
Insecure patterns:
|
|
412
|
+
|
|
413
|
+
* `{% autoescape off %}{{ user_input }}{% endautoescape %}`
|
|
414
|
+
* `{{ user_input|safe }}`
|
|
415
|
+
* `mark_safe(request.GET["q"])`
|
|
416
|
+
* Unquoted attribute injections: `<style class={{ var }}>...` (Django’s own example). ([Django Project][2])
|
|
417
|
+
|
|
418
|
+
Detection hints:
|
|
419
|
+
|
|
420
|
+
* Search templates for `|safe`, `autoescape off`, `safeseq`.
|
|
421
|
+
* Search Python for `mark_safe`, `SafeString`, or direct HTML concatenation with request/DB values.
|
|
422
|
+
* Review any code returning `HttpResponse(user_value)` where `user_value` contains HTML.
|
|
423
|
+
|
|
424
|
+
Fix:
|
|
425
|
+
|
|
426
|
+
* Remove unsafe marking; sanitize only when strictly necessary (use an allowlist-based HTML sanitizer).
|
|
427
|
+
* Quote attributes and avoid placing untrusted values into dangerous contexts.
|
|
428
|
+
* Add CSP as defense-in-depth (see DJANGO-CSP-001). ([Django Project][2])
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
### DJANGO-TEMPLATE-001: Never render untrusted template source strings
|
|
433
|
+
|
|
434
|
+
Severity: High to Critical (depends on context and exposure)
|
|
435
|
+
|
|
436
|
+
Required:
|
|
437
|
+
|
|
438
|
+
* MUST NOT render templates where the template source string is influenced by untrusted input (request, user content, DB rows editable by untrusted users).
|
|
439
|
+
* MUST treat “template from string” patterns as dangerous, even if Django templates are more constrained than some other engines: they can still leak data from context, bypass escaping, and create XSS or content injection.
|
|
440
|
+
|
|
441
|
+
Insecure patterns:
|
|
442
|
+
|
|
443
|
+
* `Template(request.GET["tmpl"]).render(Context(...))`
|
|
444
|
+
* Saving user templates in the DB and rendering them with normal privileges/context.
|
|
445
|
+
|
|
446
|
+
Detection hints:
|
|
447
|
+
|
|
448
|
+
* Search for `django.template.Template(`, `Engine.from_string`, `.render(Context(` with non-constant strings.
|
|
449
|
+
* Trace where the template string comes from (admin panels, DB, uploads, requests).
|
|
450
|
+
|
|
451
|
+
Fix:
|
|
452
|
+
|
|
453
|
+
* Replace with non-executing formatting (e.g., `string.Template`, explicit placeholders) or a strict allowlisted rendering model.
|
|
454
|
+
* If you *must* support user-defined templates, isolate heavily (separate service/tenant context, strict allowlists, and assume bypasses are possible).
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
### DJANGO-SQL-001: Prevent SQL injection (use ORM or parameterized raw SQL)
|
|
459
|
+
|
|
460
|
+
Severity: High
|
|
461
|
+
|
|
462
|
+
Required:
|
|
463
|
+
|
|
464
|
+
* MUST use Django ORM/querysets for normal DB access; Django notes querysets are parameterized and protected from SQL injection under typical use. ([Django Project][2])
|
|
465
|
+
* MUST be very careful with raw SQL; if using `raw()`, `cursor.execute()`, `extra()`, or `RawSQL`, MUST pass parameters separately (e.g., `params=`) and MUST NOT string-interpolate untrusted input into SQL. Django’s raw SQL docs warn to escape user-controlled parameters using `params`. ([Django Project][7])
|
|
466
|
+
* MUST NOT quote placeholders in SQL templates (Django docs explicitly warn that quoting `%s` placeholders makes it unsafe). ([Django Project][8])
|
|
467
|
+
* SHOULD avoid `extra()` and `RawSQL` unless necessary; Django security docs call for caution. ([Django Project][2])
|
|
468
|
+
|
|
469
|
+
Insecure patterns:
|
|
470
|
+
|
|
471
|
+
* `cursor.execute(f"SELECT ... WHERE id={request.GET['id']}")`
|
|
472
|
+
* `Model.objects.raw("... %s" % user_input)` (string formatting)
|
|
473
|
+
* `extra(where=[f"headline='{q}'"])`
|
|
474
|
+
* Quoted placeholders: `WHERE othercol = '%s'` (explicitly documented as unsafe). ([Django Project][8])
|
|
475
|
+
|
|
476
|
+
Detection hints:
|
|
477
|
+
|
|
478
|
+
* Grep for `.raw(`, `.extra(`, `RawSQL(`, `connection.cursor()`, `.execute(`.
|
|
479
|
+
* Grep for SQL keywords (`SELECT`, `UPDATE`, `DELETE`, `INSERT`) in Python strings.
|
|
480
|
+
* Track untrusted inputs into these call sites.
|
|
481
|
+
|
|
482
|
+
Fix:
|
|
483
|
+
|
|
484
|
+
* Prefer ORM queries.
|
|
485
|
+
* If raw SQL is unavoidable, use parameters (`params`, DB-API param binding) and do not quote placeholders. ([Django Project][7])
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
### DJANGO-CMD-001: Prevent OS command injection
|
|
490
|
+
|
|
491
|
+
Severity: Critical to High (depends on exposure)
|
|
492
|
+
|
|
493
|
+
Required:
|
|
494
|
+
|
|
495
|
+
* MUST avoid executing system commands with attacker-influenced input.
|
|
496
|
+
* If subprocess is necessary:
|
|
497
|
+
|
|
498
|
+
* MUST pass args as a list (not a shell string).
|
|
499
|
+
* MUST NOT use `shell=True` with attacker-influenced content.
|
|
500
|
+
* SHOULD use strict allowlists for variable components.
|
|
501
|
+
* SHOULD prefer pure-Python libraries instead of shelling out.
|
|
502
|
+
|
|
503
|
+
Insecure patterns:
|
|
504
|
+
|
|
505
|
+
* `os.system(request.GET["cmd"])`
|
|
506
|
+
* `subprocess.run(f"convert {path}", shell=True)` where `path` is user-controlled.
|
|
507
|
+
|
|
508
|
+
Detection hints:
|
|
509
|
+
|
|
510
|
+
* Search `os.system`, `subprocess`, `Popen`, `shell=True`.
|
|
511
|
+
* Trace request/DB inputs into those calls.
|
|
512
|
+
|
|
513
|
+
Fix:
|
|
514
|
+
|
|
515
|
+
* Replace with library APIs; if unavoidable, hard-code executable and allowlist validated parameters.
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
### DJANGO-UPLOAD-001: File uploads must be validated, stored safely, and served safely
|
|
520
|
+
|
|
521
|
+
Severity: High
|
|
522
|
+
|
|
523
|
+
Required:
|
|
524
|
+
|
|
525
|
+
* MUST treat all user uploads as untrusted. Django explicitly warns “Media files are uploaded by your users. They’re untrusted!” ([Django Project][1])
|
|
526
|
+
* MUST ensure the web server never interprets user uploads as executable code (e.g., don’t allow uploaded `.php` or HTML to execute/inline as active content). ([Django Project][1])
|
|
527
|
+
* MUST enforce size limits (at least at the web server; Django security docs recommend limiting upload size at the server to prevent DoS). ([Django Project][2])
|
|
528
|
+
* SHOULD validate file types using allowlists and content checks (not only extensions).
|
|
529
|
+
* SHOULD store uploads outside the application code directory and outside any static root.
|
|
530
|
+
* SHOULD consider serving uploads from a separate top-level/second-level domain to reduce same-origin impact; Django security docs recommend a distinct domain and note that a subdomain may be insufficient for some protections. ([Django Project][2])
|
|
531
|
+
* MUST be aware of polyglot upload risks: Django documents a case where HTML can be uploaded “as an image” by using a valid PNG header (and may be served as HTML depending on the web server). ([Django Project][2])
|
|
532
|
+
|
|
533
|
+
Insecure patterns:
|
|
534
|
+
|
|
535
|
+
* Serving uploads inline with `text/html` or without forcing download for potentially active formats.
|
|
536
|
+
* Upload allowlist based only on extension.
|
|
537
|
+
* Upload storage inside static roots or code roots.
|
|
538
|
+
|
|
539
|
+
Detection hints:
|
|
540
|
+
|
|
541
|
+
* Search for `request.FILES`, `FileField`, `ImageField`, upload forms/views.
|
|
542
|
+
* Inspect upload serving paths and Nginx/Apache config (media handlers).
|
|
543
|
+
* Check `MEDIA_URL`, `MEDIA_ROOT`, and static config.
|
|
544
|
+
|
|
545
|
+
Fix:
|
|
546
|
+
|
|
547
|
+
* Configure the web server to serve uploads as inert bytes (no execution), and consider forcing `Content-Disposition: attachment` for risky types.
|
|
548
|
+
* Use a separate domain for user content when warranted. ([Django Project][2])
|
|
549
|
+
|
|
550
|
+
---
|
|
551
|
+
|
|
552
|
+
### DJANGO-PATH-001: Prevent path traversal and unsafe file serving (static/media separation)
|
|
553
|
+
|
|
554
|
+
Severity: High
|
|
555
|
+
|
|
556
|
+
Required:
|
|
557
|
+
|
|
558
|
+
* MUST NOT treat user input as a filesystem path for reads/writes/serving.
|
|
559
|
+
* MUST keep `MEDIA_ROOT` and `STATIC_ROOT` distinct; Django settings docs explicitly warn they must have different values to avoid security implications. ([Django Project][3])
|
|
560
|
+
* SHOULD prefer using Django storage APIs keyed by server-side identifiers rather than accepting arbitrary relative paths from users.
|
|
561
|
+
|
|
562
|
+
Insecure patterns:
|
|
563
|
+
|
|
564
|
+
* `open(os.path.join(MEDIA_ROOT, request.GET["path"]))`
|
|
565
|
+
* Download endpoints that take `?file=../../...` style parameters.
|
|
566
|
+
* Misconfigured `MEDIA_ROOT == STATIC_ROOT`.
|
|
567
|
+
|
|
568
|
+
Detection hints:
|
|
569
|
+
|
|
570
|
+
* Grep for `open(`, `Path(`, `os.path.join(` used with request values.
|
|
571
|
+
* Check `MEDIA_ROOT`, `STATIC_ROOT` in settings. ([Django Project][3])
|
|
572
|
+
|
|
573
|
+
Fix:
|
|
574
|
+
|
|
575
|
+
* Use server-side IDs mapped to known files.
|
|
576
|
+
* Keep static and media separated and ensure the web server treats media as untrusted. ([Django Project][3])
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
### DJANGO-REDIRECT-001: Prevent open redirects (`next`, `return_to`, `redirect`)
|
|
581
|
+
|
|
582
|
+
Severity: Medium (High when combined with auth flows)
|
|
583
|
+
|
|
584
|
+
Required:
|
|
585
|
+
|
|
586
|
+
* MUST validate redirect targets derived from untrusted input (e.g., `next`, `return_to`).
|
|
587
|
+
* SHOULD restrict to same-site relative paths or allowlisted hosts/schemes.
|
|
588
|
+
* SHOULD use Django’s safe URL helpers (e.g., `django.utils.http.url_has_allowed_host_and_scheme`) rather than custom parsing.
|
|
589
|
+
|
|
590
|
+
Insecure patterns:
|
|
591
|
+
|
|
592
|
+
* `return redirect(request.GET.get("next"))` with no validation.
|
|
593
|
+
* Redirect allowlist implemented with naive string checks.
|
|
594
|
+
|
|
595
|
+
Detection hints:
|
|
596
|
+
|
|
597
|
+
* Search for `redirect(` and track origin of the target.
|
|
598
|
+
* Search for parameters named `next`, `return_to`, `redirect`, `url`.
|
|
599
|
+
|
|
600
|
+
Fix:
|
|
601
|
+
|
|
602
|
+
* Validate with allowlists and default to a safe internal path if validation fails.
|
|
603
|
+
* Ensure host validation via `ALLOWED_HOSTS` remains strict (see DJANGO-HOST-001). ([Django Project][3])
|
|
604
|
+
|
|
605
|
+
---
|
|
606
|
+
|
|
607
|
+
### DJANGO-HEADERS-001: Enable essential security headers (SecurityMiddleware + clickjacking protection)
|
|
608
|
+
|
|
609
|
+
Severity: Medium to High
|
|
610
|
+
|
|
611
|
+
Required:
|
|
612
|
+
|
|
613
|
+
* SHOULD use `django.middleware.security.SecurityMiddleware` and configure it appropriately (production) for:
|
|
614
|
+
|
|
615
|
+
* `X-Content-Type-Options: nosniff` (Django setting `SECURE_CONTENT_TYPE_NOSNIFF`, default `True`). ([Django Project][3])
|
|
616
|
+
* `Referrer-Policy` (Django setting `SECURE_REFERRER_POLICY`, default `'same-origin'`). ([Django Project][3])
|
|
617
|
+
* COOP (Django setting `SECURE_CROSS_ORIGIN_OPENER_POLICY`, default `'same-origin'`). ([Django Project][3])
|
|
618
|
+
* HTTPS redirects and HSTS as appropriate (see DJANGO-HTTPS-001). ([Django Project][3])
|
|
619
|
+
* SHOULD enable clickjacking protection via X-Frame-Options middleware; Django security docs strongly recommend it for sites that don’t need third-party framing. ([Django Project][2])
|
|
620
|
+
|
|
621
|
+
Insecure patterns:
|
|
622
|
+
|
|
623
|
+
* Missing SecurityMiddleware.
|
|
624
|
+
* Missing clickjacking protection (or disabling it globally) without a clear framing requirement.
|
|
625
|
+
* Over-broad framing allowances for sensitive endpoints.
|
|
626
|
+
|
|
627
|
+
Detection hints:
|
|
628
|
+
|
|
629
|
+
* Inspect `MIDDLEWARE` for SecurityMiddleware and XFrameOptionsMiddleware.
|
|
630
|
+
* Search for per-view disabling of framing/CSRF protections.
|
|
631
|
+
|
|
632
|
+
Fix:
|
|
633
|
+
|
|
634
|
+
* Add/enable middleware and configure the settings intentionally. ([Django Project][3])
|
|
635
|
+
|
|
636
|
+
NOTE:
|
|
637
|
+
|
|
638
|
+
* Some headers may be set at the edge (CDN/reverse proxy). If not visible in app code, flag as “verify at edge”.
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
642
|
+
### DJANGO-CSP-001: Deploy a Content Security Policy (CSP) as defense-in-depth
|
|
643
|
+
|
|
644
|
+
Severity: Medium (High for apps rendering untrusted content)
|
|
645
|
+
|
|
646
|
+
NOTE: It is most important to set the CSP's script-src. All other directives are not as important and can generally be excluded for the ease of development.
|
|
647
|
+
|
|
648
|
+
Required:
|
|
649
|
+
|
|
650
|
+
* SHOULD deploy a CSP to mitigate XSS and content injection classes; Django’s security docs recommend CSP and note it is new in Django 6.0. ([Django Project][2])
|
|
651
|
+
* MUST understand CSP limitations:
|
|
652
|
+
|
|
653
|
+
* Avoid excluding routes from CSP coverage; Django warns that an unprotected page can undermine protected pages due to same-origin policy. ([Django Project][2])
|
|
654
|
+
* MAY start with `SECURE_CSP_REPORT_ONLY` to iterate safely (Django provides report-only support). ([Django Project][3])
|
|
655
|
+
|
|
656
|
+
Insecure patterns:
|
|
657
|
+
|
|
658
|
+
* No CSP on apps that render user-controlled content.
|
|
659
|
+
* CSP excludes “just a couple pages” (weakens overall protection), especially pages with any injection surface. ([Django Project][2])
|
|
660
|
+
* CSP uses overly permissive directives (e.g., widespread `unsafe-inline`) without justification.
|
|
661
|
+
|
|
662
|
+
Detection hints:
|
|
663
|
+
|
|
664
|
+
* Search `SECURE_CSP`, `SECURE_CSP_REPORT_ONLY`, and CSP middleware configuration.
|
|
665
|
+
* Inspect reverse proxy/CDN config for CSP headers.
|
|
666
|
+
|
|
667
|
+
Fix:
|
|
668
|
+
|
|
669
|
+
* Implement a realistic CSP, ideally report-only first, then enforce. ([Django Project][3])
|
|
670
|
+
|
|
671
|
+
---
|
|
672
|
+
|
|
673
|
+
### DJANGO-AUTH-001: Password storage must use Django’s secure hashers; password policy must be configured
|
|
674
|
+
|
|
675
|
+
Severity: High
|
|
676
|
+
|
|
677
|
+
Required:
|
|
678
|
+
|
|
679
|
+
* MUST use Django’s built-in password hashing (never store plaintext or reversible encrypted passwords).
|
|
680
|
+
* SHOULD prefer modern hashers and keep defaults updated; Django documents `PASSWORD_HASHERS` and includes modern options (Argon2, bcrypt, scrypt, PBKDF2 variants). ([Django Project][3])
|
|
681
|
+
* SHOULD configure `AUTH_PASSWORD_VALIDATORS` (default is empty) for production password policy. ([Django Project][3])
|
|
682
|
+
|
|
683
|
+
Insecure patterns:
|
|
684
|
+
|
|
685
|
+
* Custom password storage or hashing.
|
|
686
|
+
* Plaintext passwords stored in DB fields.
|
|
687
|
+
* No password validation on consumer-facing apps.
|
|
688
|
+
|
|
689
|
+
Detection hints:
|
|
690
|
+
|
|
691
|
+
* Search for `.set_password(` usage vs manual hashing.
|
|
692
|
+
* Inspect settings for `PASSWORD_HASHERS` and `AUTH_PASSWORD_VALIDATORS`. ([Django Project][3])
|
|
693
|
+
|
|
694
|
+
Fix:
|
|
695
|
+
|
|
696
|
+
* Use Django auth user model APIs.
|
|
697
|
+
* Enable password validators appropriate to the product’s risk profile. ([Django Project][3])
|
|
698
|
+
|
|
699
|
+
---
|
|
700
|
+
|
|
701
|
+
### DJANGO-AUTHZ-001: Authorization must be explicit and consistent
|
|
702
|
+
|
|
703
|
+
Severity: High
|
|
704
|
+
|
|
705
|
+
Required:
|
|
706
|
+
|
|
707
|
+
* MUST enforce authorization checks on every privileged action (view, modify, admin-like operations).
|
|
708
|
+
* MUST NOT rely on UI-only restrictions (e.g., hiding buttons) without server-side permission checks.
|
|
709
|
+
* SHOULD use Django’s permissions/groups and per-object authorization patterns where applicable.
|
|
710
|
+
|
|
711
|
+
Insecure patterns:
|
|
712
|
+
|
|
713
|
+
* Views that assume “user is logged in” implies “user may do action”.
|
|
714
|
+
* Missing authorization checks on update/delete endpoints.
|
|
715
|
+
|
|
716
|
+
Detection hints:
|
|
717
|
+
|
|
718
|
+
* Enumerate views that modify state; ensure they validate ownership/permission.
|
|
719
|
+
* Look for use of only `is_authenticated` or only `is_staff` without checking object-level access.
|
|
720
|
+
|
|
721
|
+
Fix:
|
|
722
|
+
|
|
723
|
+
* Add explicit permission checks and tests for unauthorized access.
|
|
724
|
+
|
|
725
|
+
---
|
|
726
|
+
|
|
727
|
+
### DJANGO-ADMIN-001: Django admin must be treated as a high-value target
|
|
728
|
+
|
|
729
|
+
Severity: High
|
|
730
|
+
|
|
731
|
+
Required:
|
|
732
|
+
|
|
733
|
+
* MUST ensure admin is protected by strong authentication and HTTPS-only transport (see DJANGO-HTTPS-001). ([Django Project][1])
|
|
734
|
+
* SHOULD restrict admin exposure (network allowlists, VPN, SSO, or additional authentication controls) when possible.
|
|
735
|
+
* SHOULD audit installed admin extensions and third-party apps for XSS/CSRF exposure.
|
|
736
|
+
|
|
737
|
+
Insecure patterns:
|
|
738
|
+
|
|
739
|
+
* Admin exposed to the internet with weak authentication.
|
|
740
|
+
* Admin served over HTTP.
|
|
741
|
+
|
|
742
|
+
Detection hints:
|
|
743
|
+
|
|
744
|
+
* Search `urlpatterns` for `admin.site.urls`.
|
|
745
|
+
* Check deployment config for IP allowlisting or auth gateways.
|
|
746
|
+
|
|
747
|
+
Fix:
|
|
748
|
+
|
|
749
|
+
* Add network controls and enforce HTTPS.
|
|
750
|
+
|
|
751
|
+
---
|
|
752
|
+
|
|
753
|
+
### DJANGO-LOG-001: Logging and error reporting must not leak secrets
|
|
754
|
+
|
|
755
|
+
Severity: Medium to High
|
|
756
|
+
|
|
757
|
+
Required:
|
|
758
|
+
|
|
759
|
+
* MUST NOT log secrets (including `SECRET_KEY`, session cookies, auth headers, password reset tokens).
|
|
760
|
+
* MUST configure production logging deliberately; Django’s deployment checklist explicitly calls out reviewing logging before production. ([Django Project][1])
|
|
761
|
+
* MUST ensure `DEBUG=False` in production so exceptions aren’t rendered with sensitive context. ([Django Project][1])
|
|
762
|
+
|
|
763
|
+
Insecure patterns:
|
|
764
|
+
|
|
765
|
+
* Logging full request headers or cookies in production.
|
|
766
|
+
* Printing settings dictionaries.
|
|
767
|
+
* Debug error pages.
|
|
768
|
+
|
|
769
|
+
Detection hints:
|
|
770
|
+
|
|
771
|
+
* Inspect `LOGGING` config; search for middleware that logs request headers/cookies.
|
|
772
|
+
* Grep for `print(settings` / `logging.info(request.META)` patterns.
|
|
773
|
+
|
|
774
|
+
Fix:
|
|
775
|
+
|
|
776
|
+
* Redact sensitive values; log IDs not secrets.
|
|
777
|
+
* Use structured logging and a safe error monitoring tool. ([Django Project][1])
|
|
778
|
+
|
|
779
|
+
---
|
|
780
|
+
|
|
781
|
+
### DJANGO-SUPPLY-001: Dependency and patch hygiene (Django + security-critical deps)
|
|
782
|
+
|
|
783
|
+
Severity: Medium (High if known vulnerable versions)
|
|
784
|
+
|
|
785
|
+
Required:
|
|
786
|
+
|
|
787
|
+
* SHOULD pin and regularly update Django and security-critical dependencies.
|
|
788
|
+
* MUST respond to Django security releases promptly.
|
|
789
|
+
|
|
790
|
+
Detection hints:
|
|
791
|
+
|
|
792
|
+
* Check `requirements.txt`, lockfiles, build images.
|
|
793
|
+
* Identify Django version; compare against latest supported release (Django’s download page publishes current stable and supported branches). ([Django Project][9])
|
|
794
|
+
|
|
795
|
+
Fix:
|
|
796
|
+
|
|
797
|
+
* Upgrade to patched versions; add regression tests for previously vulnerable classes.
|
|
798
|
+
|
|
799
|
+
---
|
|
800
|
+
|
|
801
|
+
## 5) Practical scanning heuristics (how to “hunt”)
|
|
802
|
+
|
|
803
|
+
When actively scanning, use these high-signal patterns:
|
|
804
|
+
|
|
805
|
+
* Deployment/dev server:
|
|
806
|
+
|
|
807
|
+
* `manage.py runserver`, `runserver 0.0.0.0`, `--insecure` ([Django Project][1])
|
|
808
|
+
* Debug / settings:
|
|
809
|
+
|
|
810
|
+
* `DEBUG = True` ([Django Project][1])
|
|
811
|
+
* `SECRET_KEY =`, `SECRET_KEY_FALLBACKS` ([Django Project][1])
|
|
812
|
+
* Host validation:
|
|
813
|
+
|
|
814
|
+
* `ALLOWED_HOSTS = ['*']` ([Django Project][3])
|
|
815
|
+
* HTTPS and proxy:
|
|
816
|
+
|
|
817
|
+
* `SECURE_SSL_REDIRECT`, `SECURE_HSTS_SECONDS`, `SECURE_PROXY_SSL_HEADER` ([Django Project][3])
|
|
818
|
+
* Cookies / sessions:
|
|
819
|
+
|
|
820
|
+
* `SESSION_COOKIE_SECURE`, `SESSION_COOKIE_HTTPONLY`, `SESSION_COOKIE_SAMESITE` ([Django Project][3])
|
|
821
|
+
* `CSRF_COOKIE_SECURE`, `CSRF_COOKIE_HTTPONLY`, `CSRF_COOKIE_SAMESITE` ([Django Project][3])
|
|
822
|
+
* CSRF bypasses:
|
|
823
|
+
|
|
824
|
+
* `csrf_exempt`, missing `CsrfViewMiddleware`, POST forms without `{% csrf_token %}` ([Django Project][4])
|
|
825
|
+
* XSS:
|
|
826
|
+
|
|
827
|
+
* `|safe`, `autoescape off`, `mark_safe(`, HTML string concatenation ([Django Project][5])
|
|
828
|
+
* SQL injection:
|
|
829
|
+
|
|
830
|
+
* `.raw(`, `.extra(`, `RawSQL(`, `cursor.execute(` with formatted SQL strings ([Django Project][7])
|
|
831
|
+
* User uploads / media:
|
|
832
|
+
|
|
833
|
+
* `request.FILES`, `MEDIA_ROOT`, `MEDIA_URL`, serving media inline; `MEDIA_ROOT == STATIC_ROOT` ([Django Project][1])
|
|
834
|
+
* Redirects:
|
|
835
|
+
|
|
836
|
+
* `redirect(request.GET.get("next"))` patterns; missing allowlist validation
|
|
837
|
+
* Security headers and CSP:
|
|
838
|
+
|
|
839
|
+
* Missing `SecurityMiddleware`, missing X-Frame-Options protection, missing `SECURE_CSP` adoption (where appropriate) ([Django Project][2])
|
|
840
|
+
|
|
841
|
+
Always try to confirm:
|
|
842
|
+
|
|
843
|
+
* data origin (untrusted vs trusted)
|
|
844
|
+
* sink type (template/SQL/subprocess/files/redirect/http)
|
|
845
|
+
* protective controls present (middleware, validation, allowlists, authz checks)
|
|
846
|
+
* whether security headers/controls are set in-app vs at the edge
|
|
847
|
+
|
|
848
|
+
---
|
|
849
|
+
|
|
850
|
+
## 6) Sources (accessed 2026-01-27)
|
|
851
|
+
|
|
852
|
+
Primary Django documentation:
|
|
853
|
+
|
|
854
|
+
```text
|
|
855
|
+
- Django Downloads (current stable & supported branches): https://www.djangoproject.com/download/
|
|
856
|
+
- Django 6.0 Release Notes: https://docs.djangoproject.com/en/6.0/releases/6.0/
|
|
857
|
+
- Django: Deployment checklist (incl. check --deploy, runserver warning, HTTPS/cookies guidance): https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/
|
|
858
|
+
- Django: Settings reference (SecurityMiddleware settings, cookies, SECRET_KEY_FALLBACKS, CSP settings): https://docs.djangoproject.com/en/6.0/ref/settings/
|
|
859
|
+
- Django: Security in Django (XSS/CSRF/SQLi/clickjacking/HTTPS/host header validation/uploads/CSP): https://docs.djangoproject.com/en/6.0/topics/security/
|
|
860
|
+
- Django: CSRF how-to (middleware, csrf_token usage, AJAX header patterns, csrf_exempt cautions): https://docs.djangoproject.com/en/6.0/howto/csrf/
|
|
861
|
+
- Django: Performing raw SQL queries (parameterization guidance): https://docs.djangoproject.com/en/6.0/topics/db/sql/
|
|
862
|
+
- Django: QuerySet API reference (extra() cautions; “do not quote placeholders” guidance): https://docs.djangoproject.com/en/6.0/ref/models/querysets/
|
|
863
|
+
- Django: Template built-ins (autoescape tag): https://docs.djangoproject.com/en/6.0/ref/templates/builtins/
|
|
864
|
+
- Django: Template language reference (turning off autoescape & risks): https://docs.djangoproject.com/en/6.0/ref/templates/language/
|
|
865
|
+
- Django: Utilities reference (e.g., format_html): https://docs.djangoproject.com/en/6.0/ref/utils/
|
|
866
|
+
```
|
|
867
|
+
|
|
868
|
+
OWASP:
|
|
869
|
+
|
|
870
|
+
```text
|
|
871
|
+
- OWASP Cheat Sheet Series: Django Security Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Django_Security_Cheat_Sheet.html
|
|
872
|
+
```
|
|
873
|
+
|
|
874
|
+
[1]: https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/ "https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/"
|
|
875
|
+
[2]: https://docs.djangoproject.com/en/6.0/topics/security/ "Security in Django | Django documentation | Django"
|
|
876
|
+
[3]: https://docs.djangoproject.com/en/6.0/ref/settings/ "Settings | Django documentation | Django"
|
|
877
|
+
[4]: https://docs.djangoproject.com/en/6.0/howto/csrf/ "How to use Django’s CSRF protection | Django documentation | Django"
|
|
878
|
+
[5]: https://docs.djangoproject.com/en/6.0/ref/templates/builtins/ "https://docs.djangoproject.com/en/6.0/ref/templates/builtins/"
|
|
879
|
+
[6]: https://docs.djangoproject.com/en/6.0/ref/utils/ "https://docs.djangoproject.com/en/6.0/ref/utils/"
|
|
880
|
+
[7]: https://docs.djangoproject.com/en/6.0/topics/db/sql/ "https://docs.djangoproject.com/en/6.0/topics/db/sql/"
|
|
881
|
+
[8]: https://docs.djangoproject.com/en/6.0/ref/models/querysets/ "https://docs.djangoproject.com/en/6.0/ref/models/querysets/"
|
|
882
|
+
[9]: https://www.djangoproject.com/download/ "Download Django | Django"
|