cli-jaw 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.ko.md +411 -0
- package/README.md +416 -0
- package/README.zh-CN.md +411 -0
- package/dist/bin/cli-jaw.js +108 -0
- package/dist/bin/cli-jaw.js.map +1 -0
- package/dist/bin/commands/browser.js +241 -0
- package/dist/bin/commands/browser.js.map +1 -0
- package/dist/bin/commands/chat.js +878 -0
- package/dist/bin/commands/chat.js.map +1 -0
- package/dist/bin/commands/doctor.js +152 -0
- package/dist/bin/commands/doctor.js.map +1 -0
- package/dist/bin/commands/employee.js +70 -0
- package/dist/bin/commands/employee.js.map +1 -0
- package/dist/bin/commands/init.js +110 -0
- package/dist/bin/commands/init.js.map +1 -0
- package/dist/bin/commands/mcp.js +219 -0
- package/dist/bin/commands/mcp.js.map +1 -0
- package/dist/bin/commands/memory.js +105 -0
- package/dist/bin/commands/memory.js.map +1 -0
- package/dist/bin/commands/reset.js +109 -0
- package/dist/bin/commands/reset.js.map +1 -0
- package/dist/bin/commands/serve.js +75 -0
- package/dist/bin/commands/serve.js.map +1 -0
- package/dist/bin/commands/skill.js +232 -0
- package/dist/bin/commands/skill.js.map +1 -0
- package/dist/bin/commands/status.js +51 -0
- package/dist/bin/commands/status.js.map +1 -0
- package/dist/bin/postinstall.js +218 -0
- package/dist/bin/postinstall.js.map +1 -0
- package/dist/lib/mcp-sync.js +639 -0
- package/dist/lib/mcp-sync.js.map +1 -0
- package/dist/lib/quota-copilot.js +62 -0
- package/dist/lib/quota-copilot.js.map +1 -0
- package/dist/lib/upload.js +72 -0
- package/dist/lib/upload.js.map +1 -0
- package/dist/server.js +832 -0
- package/dist/server.js.map +1 -0
- package/dist/src/agent/args.js +66 -0
- package/dist/src/agent/args.js.map +1 -0
- package/dist/src/agent/events.js +328 -0
- package/dist/src/agent/events.js.map +1 -0
- package/dist/src/agent/spawn.js +646 -0
- package/dist/src/agent/spawn.js.map +1 -0
- package/dist/src/browser/actions.js +168 -0
- package/dist/src/browser/actions.js.map +1 -0
- package/dist/src/browser/connection.js +79 -0
- package/dist/src/browser/connection.js.map +1 -0
- package/dist/src/browser/index.js +4 -0
- package/dist/src/browser/index.js.map +1 -0
- package/dist/src/browser/vision.js +128 -0
- package/dist/src/browser/vision.js.map +1 -0
- package/dist/src/cli/acp-client.js +298 -0
- package/dist/src/cli/acp-client.js.map +1 -0
- package/dist/src/cli/commands.js +267 -0
- package/dist/src/cli/commands.js.map +1 -0
- package/dist/src/cli/handlers.js +405 -0
- package/dist/src/cli/handlers.js.map +1 -0
- package/dist/src/cli/registry.js +87 -0
- package/dist/src/cli/registry.js.map +1 -0
- package/dist/src/command-contract/catalog.js +36 -0
- package/dist/src/command-contract/catalog.js.map +1 -0
- package/dist/src/command-contract/help-renderer.js +39 -0
- package/dist/src/command-contract/help-renderer.js.map +1 -0
- package/dist/src/command-contract/policy.js +34 -0
- package/dist/src/command-contract/policy.js.map +1 -0
- package/dist/src/core/bus.js +17 -0
- package/dist/src/core/bus.js.map +1 -0
- package/dist/src/core/config.js +198 -0
- package/dist/src/core/config.js.map +1 -0
- package/dist/src/core/db.js +97 -0
- package/dist/src/core/db.js.map +1 -0
- package/dist/src/core/i18n.js +86 -0
- package/dist/src/core/i18n.js.map +1 -0
- package/dist/src/core/logger.js +14 -0
- package/dist/src/core/logger.js.map +1 -0
- package/dist/src/core/settings-merge.js +40 -0
- package/dist/src/core/settings-merge.js.map +1 -0
- package/dist/src/http/async-handler.js +6 -0
- package/dist/src/http/async-handler.js.map +1 -0
- package/dist/src/http/error-middleware.js +24 -0
- package/dist/src/http/error-middleware.js.map +1 -0
- package/dist/src/http/response.js +16 -0
- package/dist/src/http/response.js.map +1 -0
- package/dist/src/memory/heartbeat.js +106 -0
- package/dist/src/memory/heartbeat.js.map +1 -0
- package/dist/src/memory/memory.js +119 -0
- package/dist/src/memory/memory.js.map +1 -0
- package/dist/src/memory/worklog.js +154 -0
- package/dist/src/memory/worklog.js.map +1 -0
- package/dist/src/orchestrator/distribute.js +310 -0
- package/dist/src/orchestrator/distribute.js.map +1 -0
- package/dist/src/orchestrator/parser.js +118 -0
- package/dist/src/orchestrator/parser.js.map +1 -0
- package/dist/src/orchestrator/pipeline.js +343 -0
- package/dist/src/orchestrator/pipeline.js.map +1 -0
- package/dist/src/prompt/builder.js +531 -0
- package/dist/src/prompt/builder.js.map +1 -0
- package/dist/src/routes/browser.js +126 -0
- package/dist/src/routes/browser.js.map +1 -0
- package/dist/src/routes/quota.js +94 -0
- package/dist/src/routes/quota.js.map +1 -0
- package/dist/src/security/decode.js +23 -0
- package/dist/src/security/decode.js.map +1 -0
- package/dist/src/security/path-guards.js +62 -0
- package/dist/src/security/path-guards.js.map +1 -0
- package/dist/src/telegram/bot.js +469 -0
- package/dist/src/telegram/bot.js.map +1 -0
- package/dist/src/telegram/forwarder.js +93 -0
- package/dist/src/telegram/forwarder.js.map +1 -0
- package/package.json +80 -0
- package/public/css/chat.css +571 -0
- package/public/css/layout.css +350 -0
- package/public/css/markdown.css +270 -0
- package/public/css/modals.css +172 -0
- package/public/css/sidebar.css +225 -0
- package/public/css/variables.css +142 -0
- package/public/index.html +470 -0
- package/public/js/api.js +55 -0
- package/public/js/constants.js +119 -0
- package/public/js/features/appname.js +43 -0
- package/public/js/features/chat.js +242 -0
- package/public/js/features/employees.js +120 -0
- package/public/js/features/heartbeat.js +80 -0
- package/public/js/features/i18n.js +125 -0
- package/public/js/features/memory.js +85 -0
- package/public/js/features/settings.js +512 -0
- package/public/js/features/sidebar.js +88 -0
- package/public/js/features/skills.js +68 -0
- package/public/js/features/slash-commands.js +231 -0
- package/public/js/features/theme.js +40 -0
- package/public/js/locale.js +23 -0
- package/public/js/main.js +281 -0
- package/public/js/render.js +294 -0
- package/public/js/state.js +16 -0
- package/public/js/ui.js +172 -0
- package/public/js/ws.js +76 -0
- package/public/locales/en.json +180 -0
- package/public/locales/ko.json +180 -0
- package/public/theme-test.html +545 -0
- package/skills_ref/1password/SKILL.md +70 -0
- package/skills_ref/agents-sdk/SKILL.md +155 -0
- package/skills_ref/agents-sdk/references/callable.md +92 -0
- package/skills_ref/agents-sdk/references/codemode.md +207 -0
- package/skills_ref/agents-sdk/references/email.md +146 -0
- package/skills_ref/agents-sdk/references/mcp.md +154 -0
- package/skills_ref/agents-sdk/references/state-scheduling.md +164 -0
- package/skills_ref/agents-sdk/references/streaming-chat.md +178 -0
- package/skills_ref/agents-sdk/references/workflows.md +132 -0
- package/skills_ref/algorithmic-art/LICENSE.txt +202 -0
- package/skills_ref/algorithmic-art/SKILL.md +405 -0
- package/skills_ref/algorithmic-art/templates/generator_template.js +223 -0
- package/skills_ref/algorithmic-art/templates/viewer.html +599 -0
- package/skills_ref/apple-notes/SKILL.md +77 -0
- package/skills_ref/apple-reminders/SKILL.md +118 -0
- package/skills_ref/atlas/SKILL.md +99 -0
- package/skills_ref/brainstorming/SKILL.md +96 -0
- package/skills_ref/browser/SKILL.md +179 -0
- package/skills_ref/canvas-design/LICENSE.txt +202 -0
- package/skills_ref/canvas-design/SKILL.md +130 -0
- package/skills_ref/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills_ref/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills_ref/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills_ref/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills_ref/changelog-generator/SKILL.md +104 -0
- package/skills_ref/cloudflare-deploy/SKILL.md +207 -0
- package/skills_ref/codebase-orientation/SKILL.md +29 -0
- package/skills_ref/config-file-explainer/SKILL.md +26 -0
- package/skills_ref/context-compression/SKILL.md +265 -0
- package/skills_ref/context-compression/references/evaluation-framework.md +213 -0
- package/skills_ref/context-compression/scripts/compression_evaluator.py +658 -0
- package/skills_ref/data-structure-chooser/SKILL.md +26 -0
- package/skills_ref/debugging-checklist/SKILL.md +26 -0
- package/skills_ref/debugging-helpers/CREATION-LOG.md +119 -0
- package/skills_ref/debugging-helpers/SKILL.md +296 -0
- package/skills_ref/debugging-helpers/condition-based-waiting-example.ts +158 -0
- package/skills_ref/debugging-helpers/condition-based-waiting.md +115 -0
- package/skills_ref/debugging-helpers/defense-in-depth.md +122 -0
- package/skills_ref/debugging-helpers/find-polluter.sh +63 -0
- package/skills_ref/debugging-helpers/root-cause-tracing.md +169 -0
- package/skills_ref/debugging-helpers/test-academic.md +14 -0
- package/skills_ref/debugging-helpers/test-pressure-1.md +58 -0
- package/skills_ref/debugging-helpers/test-pressure-2.md +68 -0
- package/skills_ref/debugging-helpers/test-pressure-3.md +69 -0
- package/skills_ref/deep-research/.env.example +7 -0
- package/skills_ref/deep-research/README.md +246 -0
- package/skills_ref/deep-research/SKILL.md +106 -0
- package/skills_ref/deep-research/requirements.txt +2 -0
- package/skills_ref/deep-research/scripts/research.py +692 -0
- package/skills_ref/dependency-install-helper/SKILL.md +26 -0
- package/skills_ref/dev/SKILL.md +65 -0
- package/skills_ref/dev-backend/SKILL.md +61 -0
- package/skills_ref/dev-data/SKILL.md +76 -0
- package/skills_ref/dev-frontend/LICENSE.txt +177 -0
- package/skills_ref/dev-frontend/SKILL.md +42 -0
- package/skills_ref/dev-testing/LICENSE.txt +202 -0
- package/skills_ref/dev-testing/SKILL.md +96 -0
- package/skills_ref/dev-testing/examples/console_logging.py +35 -0
- package/skills_ref/dev-testing/examples/element_discovery.py +40 -0
- package/skills_ref/dev-testing/examples/static_html_automation.py +33 -0
- package/skills_ref/dev-testing/scripts/with_server.py +106 -0
- package/skills_ref/develop-web-game/SKILL.md +149 -0
- package/skills_ref/differential-review/.claude-plugin/plugin.json +10 -0
- package/skills_ref/differential-review/README.md +109 -0
- package/skills_ref/differential-review/commands/diff-review.md +21 -0
- package/skills_ref/differential-review/skills/differential-review/SKILL.md +220 -0
- package/skills_ref/differential-review/skills/differential-review/adversarial.md +203 -0
- package/skills_ref/differential-review/skills/differential-review/methodology.md +234 -0
- package/skills_ref/differential-review/skills/differential-review/patterns.md +300 -0
- package/skills_ref/differential-review/skills/differential-review/reporting.md +369 -0
- package/skills_ref/dispatching-parallel-agents/SKILL.md +180 -0
- package/skills_ref/doc-coauthoring/SKILL.md +375 -0
- package/skills_ref/docx/LICENSE.txt +30 -0
- package/skills_ref/docx/SKILL.md +481 -0
- package/skills_ref/docx/scripts/__init__.py +1 -0
- package/skills_ref/docx/scripts/accept_changes.py +135 -0
- package/skills_ref/docx/scripts/comment.py +318 -0
- package/skills_ref/docx/scripts/office/helpers/__init__.py +0 -0
- package/skills_ref/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills_ref/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills_ref/docx/scripts/office/pack.py +159 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills_ref/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills_ref/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills_ref/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills_ref/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills_ref/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/skills_ref/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills_ref/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills_ref/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills_ref/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills_ref/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills_ref/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills_ref/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills_ref/docx/scripts/office/soffice.py +183 -0
- package/skills_ref/docx/scripts/office/unpack.py +132 -0
- package/skills_ref/docx/scripts/office/validate.py +111 -0
- package/skills_ref/docx/scripts/office/validators/__init__.py +15 -0
- package/skills_ref/docx/scripts/office/validators/base.py +847 -0
- package/skills_ref/docx/scripts/office/validators/docx.py +446 -0
- package/skills_ref/docx/scripts/office/validators/pptx.py +275 -0
- package/skills_ref/docx/scripts/office/validators/redlining.py +247 -0
- package/skills_ref/docx/scripts/templates/comments.xml +3 -0
- package/skills_ref/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills_ref/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills_ref/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills_ref/docx/scripts/templates/people.xml +3 -0
- package/skills_ref/durable-objects/SKILL.md +186 -0
- package/skills_ref/durable-objects/references/rules.md +286 -0
- package/skills_ref/durable-objects/references/testing.md +264 -0
- package/skills_ref/durable-objects/references/workers.md +346 -0
- package/skills_ref/email-draft-polish/SKILL.md +24 -0
- package/skills_ref/error-message-explainer/SKILL.md +27 -0
- package/skills_ref/fal-image-edit/SKILL.md +249 -0
- package/skills_ref/fal-image-edit/scripts/edit-image.sh +199 -0
- package/skills_ref/figma-implement-design/SKILL.md +264 -0
- package/skills_ref/git-worktrees/SKILL.md +218 -0
- package/skills_ref/github/SKILL.md +210 -0
- package/skills_ref/gog/SKILL.md +116 -0
- package/skills_ref/goplaces/SKILL.md +52 -0
- package/skills_ref/himalaya/SKILL.md +257 -0
- package/skills_ref/hugging-face-cli/SKILL.md +186 -0
- package/skills_ref/hugging-face-cli/references/commands.md +954 -0
- package/skills_ref/hugging-face-cli/references/examples.md +374 -0
- package/skills_ref/hugging-face-evaluation/SKILL.md +651 -0
- package/skills_ref/hugging-face-evaluation/examples/.env.example +7 -0
- package/skills_ref/hugging-face-evaluation/examples/USAGE_EXAMPLES.md +382 -0
- package/skills_ref/hugging-face-evaluation/examples/artificial_analysis_to_hub.py +141 -0
- package/skills_ref/hugging-face-evaluation/examples/example_readme_tables.md +135 -0
- package/skills_ref/hugging-face-evaluation/examples/metric_mapping.json +50 -0
- package/skills_ref/hugging-face-evaluation/requirements.txt +20 -0
- package/skills_ref/hugging-face-evaluation/scripts/evaluation_manager.py +1374 -0
- package/skills_ref/hugging-face-evaluation/scripts/inspect_eval_uv.py +104 -0
- package/skills_ref/hugging-face-evaluation/scripts/inspect_vllm_uv.py +317 -0
- package/skills_ref/hugging-face-evaluation/scripts/lighteval_vllm_uv.py +303 -0
- package/skills_ref/hugging-face-evaluation/scripts/run_eval_job.py +98 -0
- package/skills_ref/hugging-face-evaluation/scripts/run_vllm_eval_job.py +331 -0
- package/skills_ref/hugging-face-evaluation/scripts/test_extraction.py +206 -0
- package/skills_ref/hugging-face-model-trainer/SKILL.md +718 -0
- package/skills_ref/hugging-face-model-trainer/references/gguf_conversion.md +296 -0
- package/skills_ref/hugging-face-model-trainer/references/hardware_guide.md +283 -0
- package/skills_ref/hugging-face-model-trainer/references/hub_saving.md +364 -0
- package/skills_ref/hugging-face-model-trainer/references/reliability_principles.md +371 -0
- package/skills_ref/hugging-face-model-trainer/references/trackio_guide.md +189 -0
- package/skills_ref/hugging-face-model-trainer/references/training_methods.md +150 -0
- package/skills_ref/hugging-face-model-trainer/references/training_patterns.md +203 -0
- package/skills_ref/hugging-face-model-trainer/references/troubleshooting.md +282 -0
- package/skills_ref/hugging-face-model-trainer/references/unsloth.md +313 -0
- package/skills_ref/hugging-face-model-trainer/scripts/convert_to_gguf.py +424 -0
- package/skills_ref/hugging-face-model-trainer/scripts/dataset_inspector.py +417 -0
- package/skills_ref/hugging-face-model-trainer/scripts/estimate_cost.py +150 -0
- package/skills_ref/hugging-face-model-trainer/scripts/train_dpo_example.py +106 -0
- package/skills_ref/hugging-face-model-trainer/scripts/train_grpo_example.py +89 -0
- package/skills_ref/hugging-face-model-trainer/scripts/train_sft_example.py +122 -0
- package/skills_ref/hugging-face-model-trainer/scripts/unsloth_sft_example.py +512 -0
- package/skills_ref/imagegen/SKILL.md +174 -0
- package/skills_ref/insecure-defaults/.claude-plugin/plugin.json +10 -0
- package/skills_ref/insecure-defaults/README.md +45 -0
- package/skills_ref/insecure-defaults/skills/insecure-defaults/SKILL.md +117 -0
- package/skills_ref/insecure-defaults/skills/insecure-defaults/references/examples.md +409 -0
- package/skills_ref/jupyter-notebook/SKILL.md +107 -0
- package/skills_ref/linear/SKILL.md +87 -0
- package/skills_ref/linter-fix-guide/SKILL.md +27 -0
- package/skills_ref/log-summarizer/SKILL.md +27 -0
- package/skills_ref/mcp-builder/LICENSE.txt +202 -0
- package/skills_ref/mcp-builder/SKILL.md +236 -0
- package/skills_ref/mcp-builder/reference/evaluation.md +602 -0
- package/skills_ref/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills_ref/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills_ref/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills_ref/mcp-builder/scripts/connections.py +151 -0
- package/skills_ref/mcp-builder/scripts/evaluation.py +373 -0
- package/skills_ref/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills_ref/mcp-builder/scripts/requirements.txt +2 -0
- package/skills_ref/memory/SKILL.md +129 -0
- package/skills_ref/modern-python/.claude-plugin/plugin.json +10 -0
- package/skills_ref/modern-python/README.md +66 -0
- package/skills_ref/modern-python/hooks/hooks.json +16 -0
- package/skills_ref/modern-python/hooks/setup-shims.bats +70 -0
- package/skills_ref/modern-python/hooks/setup-shims.sh +24 -0
- package/skills_ref/modern-python/hooks/shims/pip +27 -0
- package/skills_ref/modern-python/hooks/shims/pip-shim.bats +45 -0
- package/skills_ref/modern-python/hooks/shims/pip3 +27 -0
- package/skills_ref/modern-python/hooks/shims/pipx +41 -0
- package/skills_ref/modern-python/hooks/shims/pipx-shim.bats +64 -0
- package/skills_ref/modern-python/hooks/shims/python +26 -0
- package/skills_ref/modern-python/hooks/shims/python-shim.bats +53 -0
- package/skills_ref/modern-python/hooks/shims/python3 +26 -0
- package/skills_ref/modern-python/hooks/shims/uv +27 -0
- package/skills_ref/modern-python/hooks/shims/uv-shim.bats +47 -0
- package/skills_ref/modern-python/skills/modern-python/SKILL.md +333 -0
- package/skills_ref/modern-python/skills/modern-python/references/dependabot.md +43 -0
- package/skills_ref/modern-python/skills/modern-python/references/migration-checklist.md +141 -0
- package/skills_ref/modern-python/skills/modern-python/references/pep723-scripts.md +259 -0
- package/skills_ref/modern-python/skills/modern-python/references/prek.md +211 -0
- package/skills_ref/modern-python/skills/modern-python/references/pyproject.md +254 -0
- package/skills_ref/modern-python/skills/modern-python/references/ruff-config.md +240 -0
- package/skills_ref/modern-python/skills/modern-python/references/security-setup.md +255 -0
- package/skills_ref/modern-python/skills/modern-python/references/testing.md +284 -0
- package/skills_ref/modern-python/skills/modern-python/references/uv-commands.md +200 -0
- package/skills_ref/modern-python/skills/modern-python/templates/dependabot.yml +36 -0
- package/skills_ref/modern-python/skills/modern-python/templates/pre-commit-config.yaml +66 -0
- package/skills_ref/nano-banana-pro/SKILL.md +58 -0
- package/skills_ref/netlify-deploy/SKILL.md +233 -0
- package/skills_ref/notion/SKILL.md +304 -0
- package/skills_ref/notion-knowledge-capture/SKILL.md +56 -0
- package/skills_ref/notion-meeting-intelligence/SKILL.md +60 -0
- package/skills_ref/notion-research-documentation/SKILL.md +59 -0
- package/skills_ref/notion-spec-to-implementation/SKILL.md +58 -0
- package/skills_ref/obsidian/SKILL.md +81 -0
- package/skills_ref/openai-docs/SKILL.md +56 -0
- package/skills_ref/openhue/SKILL.md +112 -0
- package/skills_ref/pdf/SKILL.md +69 -0
- package/skills_ref/postgres/README.md +77 -0
- package/skills_ref/postgres/SKILL.md +129 -0
- package/skills_ref/postgres/connections.example.json +34 -0
- package/skills_ref/postgres/requirements.txt +1 -0
- package/skills_ref/postgres/scripts/query.py +262 -0
- package/skills_ref/pptx/LICENSE.txt +30 -0
- package/skills_ref/pptx/SKILL.md +232 -0
- package/skills_ref/pptx/editing.md +205 -0
- package/skills_ref/pptx/pptxgenjs.md +420 -0
- package/skills_ref/pptx/scripts/__init__.py +0 -0
- package/skills_ref/pptx/scripts/add_slide.py +195 -0
- package/skills_ref/pptx/scripts/clean.py +286 -0
- package/skills_ref/pptx/scripts/office/helpers/__init__.py +0 -0
- package/skills_ref/pptx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills_ref/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills_ref/pptx/scripts/office/pack.py +159 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills_ref/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills_ref/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills_ref/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills_ref/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills_ref/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills_ref/pptx/scripts/office/soffice.py +183 -0
- package/skills_ref/pptx/scripts/office/unpack.py +132 -0
- package/skills_ref/pptx/scripts/office/validate.py +111 -0
- package/skills_ref/pptx/scripts/office/validators/__init__.py +15 -0
- package/skills_ref/pptx/scripts/office/validators/base.py +847 -0
- package/skills_ref/pptx/scripts/office/validators/docx.py +446 -0
- package/skills_ref/pptx/scripts/office/validators/pptx.py +275 -0
- package/skills_ref/pptx/scripts/office/validators/redlining.py +247 -0
- package/skills_ref/pptx/scripts/thumbnail.py +289 -0
- package/skills_ref/property-based-testing/.claude-plugin/plugin.json +9 -0
- package/skills_ref/property-based-testing/README.md +47 -0
- package/skills_ref/property-based-testing/skills/property-based-testing/README.md +88 -0
- package/skills_ref/property-based-testing/skills/property-based-testing/SKILL.md +123 -0
- package/skills_ref/property-based-testing/skills/property-based-testing/references/design.md +191 -0
- package/skills_ref/property-based-testing/skills/property-based-testing/references/generating.md +204 -0
- package/skills_ref/property-based-testing/skills/property-based-testing/references/interpreting-failures.md +239 -0
- package/skills_ref/property-based-testing/skills/property-based-testing/references/libraries.md +130 -0
- package/skills_ref/property-based-testing/skills/property-based-testing/references/refactoring.md +181 -0
- package/skills_ref/property-based-testing/skills/property-based-testing/references/reviewing.md +209 -0
- package/skills_ref/property-based-testing/skills/property-based-testing/references/strategies.md +124 -0
- package/skills_ref/react-best-practices/AGENTS.md +2934 -0
- package/skills_ref/react-best-practices/README.md +123 -0
- package/skills_ref/react-best-practices/SKILL.md +136 -0
- package/skills_ref/react-best-practices/metadata.json +15 -0
- package/skills_ref/react-best-practices/rules/_sections.md +46 -0
- package/skills_ref/react-best-practices/rules/_template.md +28 -0
- package/skills_ref/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills_ref/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills_ref/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills_ref/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills_ref/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills_ref/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills_ref/react-best-practices/rules/async-parallel.md +28 -0
- package/skills_ref/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills_ref/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills_ref/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills_ref/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills_ref/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills_ref/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills_ref/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills_ref/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills_ref/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills_ref/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills_ref/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills_ref/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills_ref/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills_ref/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills_ref/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills_ref/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills_ref/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills_ref/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills_ref/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills_ref/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills_ref/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills_ref/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills_ref/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills_ref/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills_ref/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills_ref/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills_ref/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills_ref/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills_ref/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills_ref/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills_ref/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills_ref/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills_ref/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills_ref/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills_ref/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills_ref/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills_ref/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills_ref/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills_ref/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills_ref/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills_ref/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills_ref/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills_ref/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills_ref/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills_ref/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills_ref/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills_ref/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills_ref/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills_ref/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills_ref/react-best-practices/rules/server-serialization.md +38 -0
- package/skills_ref/receiving-code-review/SKILL.md +213 -0
- package/skills_ref/registry.json +1493 -0
- package/skills_ref/render-deploy/SKILL.md +462 -0
- package/skills_ref/requesting-code-review/SKILL.md +105 -0
- package/skills_ref/requesting-code-review/code-reviewer.md +146 -0
- package/skills_ref/screen-capture/SKILL.md +162 -0
- package/skills_ref/security-best-practices/LICENSE.txt +201 -0
- package/skills_ref/security-best-practices/SKILL.md +86 -0
- package/skills_ref/security-best-practices/agents/openai.yaml +4 -0
- package/skills_ref/security-best-practices/references/golang-general-backend-security.md +826 -0
- package/skills_ref/security-best-practices/references/javascript-express-web-server-security.md +1158 -0
- package/skills_ref/security-best-practices/references/javascript-general-web-frontend-security.md +747 -0
- package/skills_ref/security-best-practices/references/javascript-jquery-web-frontend-security.md +678 -0
- package/skills_ref/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +1144 -0
- package/skills_ref/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +990 -0
- package/skills_ref/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +791 -0
- package/skills_ref/security-best-practices/references/python-django-web-server-security.md +882 -0
- package/skills_ref/security-best-practices/references/python-fastapi-web-server-security.md +1036 -0
- package/skills_ref/security-best-practices/references/python-flask-web-server-security.md +705 -0
- package/skills_ref/security-ownership-map/LICENSE.txt +201 -0
- package/skills_ref/security-ownership-map/SKILL.md +206 -0
- package/skills_ref/security-ownership-map/agents/openai.yaml +4 -0
- package/skills_ref/security-ownership-map/references/neo4j-import.md +60 -0
- package/skills_ref/security-ownership-map/scripts/build_ownership_map.py +956 -0
- package/skills_ref/security-ownership-map/scripts/community_maintainers.py +544 -0
- package/skills_ref/security-ownership-map/scripts/query_ownership.py +483 -0
- package/skills_ref/security-ownership-map/scripts/run_ownership_map.py +200 -0
- package/skills_ref/security-threat-model/LICENSE.txt +201 -0
- package/skills_ref/security-threat-model/SKILL.md +81 -0
- package/skills_ref/security-threat-model/agents/openai.yaml +4 -0
- package/skills_ref/security-threat-model/references/prompt-template.md +255 -0
- package/skills_ref/security-threat-model/references/security-controls-and-assets.md +32 -0
- package/skills_ref/sentry/SKILL.md +123 -0
- package/skills_ref/skill-creator/SKILL.md +372 -0
- package/skills_ref/sora/SKILL.md +153 -0
- package/skills_ref/speech/SKILL.md +144 -0
- package/skills_ref/spotify-player/SKILL.md +64 -0
- package/skills_ref/static-analysis/.claude-plugin/plugin.json +8 -0
- package/skills_ref/static-analysis/README.md +65 -0
- package/skills_ref/static-analysis/agents/semgrep-scanner.md +71 -0
- package/skills_ref/static-analysis/agents/semgrep-triager.md +107 -0
- package/skills_ref/static-analysis/skills/codeql/SKILL.md +119 -0
- package/skills_ref/static-analysis/skills/codeql/references/diagnostic-query-templates.md +339 -0
- package/skills_ref/static-analysis/skills/codeql/references/language-details.md +207 -0
- package/skills_ref/static-analysis/skills/codeql/references/performance-tuning.md +111 -0
- package/skills_ref/static-analysis/skills/codeql/references/ruleset-catalog.md +63 -0
- package/skills_ref/static-analysis/skills/codeql/references/threat-models.md +44 -0
- package/skills_ref/static-analysis/skills/codeql/workflows/build-database.md +669 -0
- package/skills_ref/static-analysis/skills/codeql/workflows/create-data-extensions.md +536 -0
- package/skills_ref/static-analysis/skills/codeql/workflows/run-analysis.md +436 -0
- package/skills_ref/static-analysis/skills/sarif-parsing/SKILL.md +479 -0
- package/skills_ref/static-analysis/skills/sarif-parsing/resources/jq-queries.md +162 -0
- package/skills_ref/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +331 -0
- package/skills_ref/static-analysis/skills/semgrep/SKILL.md +431 -0
- package/skills_ref/static-analysis/skills/semgrep/references/rulesets.md +162 -0
- package/skills_ref/static-analysis/skills/semgrep/references/scanner-task-prompt.md +102 -0
- package/skills_ref/static-analysis/skills/semgrep/references/triage-task-prompt.md +122 -0
- package/skills_ref/static-analysis/skills/semgrep/scripts/merge_triaged_sarif.py +252 -0
- package/skills_ref/summarize/SKILL.md +87 -0
- package/skills_ref/tdd/SKILL.md +371 -0
- package/skills_ref/tdd/testing-anti-patterns.md +299 -0
- package/skills_ref/telegram-send/SKILL.md +99 -0
- package/skills_ref/terraform/README.md +105 -0
- package/skills_ref/terraform/code-generation/.claude-plugin/plugin.json +30 -0
- package/skills_ref/terraform/code-generation/skills/azure-verified-modules/SKILL.md +613 -0
- package/skills_ref/terraform/code-generation/skills/terraform-style-guide/SKILL.md +353 -0
- package/skills_ref/terraform/code-generation/skills/terraform-test/SKILL.md +1669 -0
- package/skills_ref/terraform/module-generation/.claude-plugin/plugin.json +30 -0
- package/skills_ref/terraform/module-generation/skills/refactor-module/SKILL.md +538 -0
- package/skills_ref/terraform/module-generation/skills/terraform-stacks/SKILL.md +468 -0
- package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/api-monitoring.md +543 -0
- package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/component-blocks.md +476 -0
- package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/deployment-blocks.md +391 -0
- package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/examples.md +1529 -0
- package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/linked-stacks.md +187 -0
- package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/troubleshooting.md +671 -0
- package/skills_ref/terraform/provider-development/.claude-plugin/plugin.json +13 -0
- package/skills_ref/terraform/provider-development/skills/new-terraform-provider/SKILL.md +25 -0
- package/skills_ref/terraform/provider-development/skills/new-terraform-provider/assets/main.go +40 -0
- package/skills_ref/terraform/provider-development/skills/provider-actions/SKILL.md +478 -0
- package/skills_ref/terraform/provider-development/skills/provider-resources/SKILL.md +599 -0
- package/skills_ref/terraform/provider-development/skills/run-acceptance-tests/SKILL.md +41 -0
- package/skills_ref/theme-factory/LICENSE.txt +202 -0
- package/skills_ref/theme-factory/SKILL.md +59 -0
- package/skills_ref/theme-factory/theme-showcase.pdf +0 -0
- package/skills_ref/theme-factory/themes/arctic-frost.md +19 -0
- package/skills_ref/theme-factory/themes/botanical-garden.md +19 -0
- package/skills_ref/theme-factory/themes/desert-rose.md +19 -0
- package/skills_ref/theme-factory/themes/forest-canopy.md +19 -0
- package/skills_ref/theme-factory/themes/golden-hour.md +19 -0
- package/skills_ref/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills_ref/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills_ref/theme-factory/themes/ocean-depths.md +19 -0
- package/skills_ref/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills_ref/theme-factory/themes/tech-innovation.md +19 -0
- package/skills_ref/things-mac/SKILL.md +86 -0
- package/skills_ref/tmux/SKILL.md +153 -0
- package/skills_ref/transcribe/SKILL.md +81 -0
- package/skills_ref/trello/SKILL.md +95 -0
- package/skills_ref/tts/SKILL.md +99 -0
- package/skills_ref/vercel-deploy/SKILL.md +115 -0
- package/skills_ref/video-downloader/SKILL.md +99 -0
- package/skills_ref/video-downloader/scripts/download_video.py +145 -0
- package/skills_ref/video-frames/SKILL.md +46 -0
- package/skills_ref/vision-click/SKILL.md +128 -0
- package/skills_ref/weather/SKILL.md +112 -0
- package/skills_ref/web-artifacts-builder/LICENSE.txt +202 -0
- package/skills_ref/web-artifacts-builder/SKILL.md +74 -0
- package/skills_ref/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills_ref/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills_ref/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills_ref/web-perf/SKILL.md +193 -0
- package/skills_ref/web-routing/SKILL.md +26 -0
- package/skills_ref/whatsapp/SKILL.md +255 -0
- package/skills_ref/whatsapp/assets/agent-app-integration-example.json +35 -0
- package/skills_ref/whatsapp/assets/databases-example.json +11 -0
- package/skills_ref/whatsapp/assets/function-decide-route-interactive-buttons.json +6 -0
- package/skills_ref/whatsapp/assets/functions-example.json +5 -0
- package/skills_ref/whatsapp/assets/workflow-agent-simple.json +31 -0
- package/skills_ref/whatsapp/assets/workflow-api-template-wait-agent.json +59 -0
- package/skills_ref/whatsapp/assets/workflow-customer-support-intake-agent.json +56 -0
- package/skills_ref/whatsapp/assets/workflow-decision.json +83 -0
- package/skills_ref/whatsapp/assets/workflow-interactive-buttons-decide-ai.json +89 -0
- package/skills_ref/whatsapp/assets/workflow-interactive-buttons-decide-function.json +88 -0
- package/skills_ref/whatsapp/assets/workflow-linear.json +53 -0
- package/skills_ref/whatsapp/package.json +10 -0
- package/skills_ref/whatsapp/references/app-integrations.md +89 -0
- package/skills_ref/whatsapp/references/databases-reference.md +21 -0
- package/skills_ref/whatsapp/references/execution-context.md +42 -0
- package/skills_ref/whatsapp/references/function-contracts.md +55 -0
- package/skills_ref/whatsapp/references/functions-payloads.md +87 -0
- package/skills_ref/whatsapp/references/functions-reference.md +133 -0
- package/skills_ref/whatsapp/references/graph-contract.md +145 -0
- package/skills_ref/whatsapp/references/node-types.md +430 -0
- package/skills_ref/whatsapp/references/triggers.md +20 -0
- package/skills_ref/whatsapp/references/workflow-overview.md +22 -0
- package/skills_ref/whatsapp/references/workflow-reference.md +123 -0
- package/skills_ref/whatsapp/scripts/configure-prop.js +113 -0
- package/skills_ref/whatsapp/scripts/create-connect-token.js +38 -0
- package/skills_ref/whatsapp/scripts/create-function.js +64 -0
- package/skills_ref/whatsapp/scripts/create-integration.js +137 -0
- package/skills_ref/whatsapp/scripts/create-row.js +47 -0
- package/skills_ref/whatsapp/scripts/create-trigger.js +88 -0
- package/skills_ref/whatsapp/scripts/create-workflow.js +85 -0
- package/skills_ref/whatsapp/scripts/delete-integration.js +44 -0
- package/skills_ref/whatsapp/scripts/delete-row.js +49 -0
- package/skills_ref/whatsapp/scripts/delete-trigger.js +44 -0
- package/skills_ref/whatsapp/scripts/deploy-function.js +47 -0
- package/skills_ref/whatsapp/scripts/edit-graph.js +289 -0
- package/skills_ref/whatsapp/scripts/get-action-schema.js +44 -0
- package/skills_ref/whatsapp/scripts/get-context-value.js +80 -0
- package/skills_ref/whatsapp/scripts/get-execution-event.js +55 -0
- package/skills_ref/whatsapp/scripts/get-execution.js +44 -0
- package/skills_ref/whatsapp/scripts/get-function.js +43 -0
- package/skills_ref/whatsapp/scripts/get-graph.js +85 -0
- package/skills_ref/whatsapp/scripts/get-table.js +45 -0
- package/skills_ref/whatsapp/scripts/get-workflow.js +44 -0
- package/skills_ref/whatsapp/scripts/invoke-function.js +60 -0
- package/skills_ref/whatsapp/scripts/lib/databases/args.js +87 -0
- package/skills_ref/whatsapp/scripts/lib/databases/filters.js +30 -0
- package/skills_ref/whatsapp/scripts/lib/databases/kapso-api.js +70 -0
- package/skills_ref/whatsapp/scripts/lib/functions/args.js +55 -0
- package/skills_ref/whatsapp/scripts/lib/functions/kapso-api.js +70 -0
- package/skills_ref/whatsapp/scripts/lib/workflows/args.js +53 -0
- package/skills_ref/whatsapp/scripts/lib/workflows/kapso-api.js +123 -0
- package/skills_ref/whatsapp/scripts/lib/workflows/result.js +16 -0
- package/skills_ref/whatsapp/scripts/list-accounts.js +62 -0
- package/skills_ref/whatsapp/scripts/list-apps.js +42 -0
- package/skills_ref/whatsapp/scripts/list-execution-events.js +61 -0
- package/skills_ref/whatsapp/scripts/list-executions.js +53 -0
- package/skills_ref/whatsapp/scripts/list-function-invocations.js +53 -0
- package/skills_ref/whatsapp/scripts/list-functions.js +41 -0
- package/skills_ref/whatsapp/scripts/list-integrations.js +41 -0
- package/skills_ref/whatsapp/scripts/list-provider-models.js +48 -0
- package/skills_ref/whatsapp/scripts/list-tables.js +41 -0
- package/skills_ref/whatsapp/scripts/list-triggers.js +44 -0
- package/skills_ref/whatsapp/scripts/list-whatsapp-phone-numbers.js +56 -0
- package/skills_ref/whatsapp/scripts/list-workflows.js +44 -0
- package/skills_ref/whatsapp/scripts/openapi-explore.mjs +1273 -0
- package/skills_ref/whatsapp/scripts/query-rows.js +71 -0
- package/skills_ref/whatsapp/scripts/reload-props.js +110 -0
- package/skills_ref/whatsapp/scripts/resume-execution.js +75 -0
- package/skills_ref/whatsapp/scripts/search-actions.js +64 -0
- package/skills_ref/whatsapp/scripts/update-execution-status.js +51 -0
- package/skills_ref/whatsapp/scripts/update-function.js +65 -0
- package/skills_ref/whatsapp/scripts/update-graph.js +154 -0
- package/skills_ref/whatsapp/scripts/update-integration.js +82 -0
- package/skills_ref/whatsapp/scripts/update-row.js +51 -0
- package/skills_ref/whatsapp/scripts/update-trigger.js +60 -0
- package/skills_ref/whatsapp/scripts/update-workflow-settings.js +67 -0
- package/skills_ref/whatsapp/scripts/upsert-row.js +64 -0
- package/skills_ref/whatsapp/scripts/validate-graph.js +293 -0
- package/skills_ref/whatsapp/scripts/variables-delete.js +37 -0
- package/skills_ref/whatsapp/scripts/variables-list.js +55 -0
- package/skills_ref/whatsapp/scripts/variables-set.js +39 -0
- package/skills_ref/writing-plans/SKILL.md +116 -0
- package/skills_ref/xlsx/LICENSE.txt +30 -0
- package/skills_ref/xlsx/SKILL.md +292 -0
- package/skills_ref/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/skills_ref/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills_ref/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills_ref/xlsx/scripts/office/pack.py +159 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills_ref/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills_ref/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills_ref/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills_ref/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills_ref/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills_ref/xlsx/scripts/office/soffice.py +183 -0
- package/skills_ref/xlsx/scripts/office/unpack.py +132 -0
- package/skills_ref/xlsx/scripts/office/validate.py +111 -0
- package/skills_ref/xlsx/scripts/office/validators/__init__.py +15 -0
- package/skills_ref/xlsx/scripts/office/validators/base.py +847 -0
- package/skills_ref/xlsx/scripts/office/validators/docx.py +446 -0
- package/skills_ref/xlsx/scripts/office/validators/pptx.py +275 -0
- package/skills_ref/xlsx/scripts/office/validators/redlining.py +247 -0
- package/skills_ref/xlsx/scripts/recalc.py +184 -0
- package/skills_ref/xurl/SKILL.md +461 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: semgrep
|
|
3
|
+
description: Run Semgrep static analysis scan on a codebase using parallel subagents. Automatically
|
|
4
|
+
detects and uses Semgrep Pro for cross-file analysis when available. Use when asked to scan
|
|
5
|
+
code for vulnerabilities, run a security audit with Semgrep, find bugs, or perform
|
|
6
|
+
static analysis. Spawns parallel workers for multi-language codebases and triage.
|
|
7
|
+
allowed-tools:
|
|
8
|
+
- Bash
|
|
9
|
+
- Read
|
|
10
|
+
- Glob
|
|
11
|
+
- Grep
|
|
12
|
+
- Write
|
|
13
|
+
- Task
|
|
14
|
+
- AskUserQuestion
|
|
15
|
+
- TaskCreate
|
|
16
|
+
- TaskList
|
|
17
|
+
- TaskUpdate
|
|
18
|
+
- WebFetch
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Semgrep Security Scan
|
|
22
|
+
|
|
23
|
+
Run a complete Semgrep scan with automatic language detection, parallel execution via Task subagents, and parallel triage. Automatically uses Semgrep Pro for cross-file taint analysis when available.
|
|
24
|
+
|
|
25
|
+
## Prerequisites
|
|
26
|
+
|
|
27
|
+
**Required:** Semgrep CLI
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
semgrep --version
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If not installed, see [Semgrep installation docs](https://semgrep.dev/docs/getting-started/).
|
|
34
|
+
|
|
35
|
+
**Optional:** Semgrep Pro (for cross-file analysis and Pro languages)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Check if Semgrep Pro engine is installed
|
|
39
|
+
semgrep --pro --validate --config p/default 2>/dev/null && echo "Pro available" || echo "OSS only"
|
|
40
|
+
|
|
41
|
+
# If logged in, install/update Pro Engine
|
|
42
|
+
semgrep install-semgrep-pro
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Pro enables: cross-file taint tracking, inter-procedural analysis, and additional languages (Apex, C#, Elixir).
|
|
46
|
+
|
|
47
|
+
## When to Use
|
|
48
|
+
|
|
49
|
+
- Security audit of a codebase
|
|
50
|
+
- Finding vulnerabilities before code review
|
|
51
|
+
- Scanning for known bug patterns
|
|
52
|
+
- First-pass static analysis
|
|
53
|
+
|
|
54
|
+
## When NOT to Use
|
|
55
|
+
|
|
56
|
+
- Binary analysis → Use binary analysis tools
|
|
57
|
+
- Already have Semgrep CI configured → Use existing pipeline
|
|
58
|
+
- Need cross-file analysis but no Pro license → Consider CodeQL as alternative
|
|
59
|
+
- Creating custom Semgrep rules → Use `semgrep-rule-creator` skill
|
|
60
|
+
- Porting existing rules to other languages → Use `semgrep-rule-variant-creator` skill
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Orchestration Architecture
|
|
65
|
+
|
|
66
|
+
This skill uses **parallel Task subagents** for maximum efficiency:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
70
|
+
│ MAIN AGENT │
|
|
71
|
+
│ 1. Detect languages + check Pro availability │
|
|
72
|
+
│ 2. Select rulesets based on detection (ref: rulesets.md) │
|
|
73
|
+
│ 3. Present plan + rulesets, get approval [⛔ HARD GATE] │
|
|
74
|
+
│ 4. Spawn parallel scan Tasks (with approved rulesets) │
|
|
75
|
+
│ 5. Spawn parallel triage Tasks │
|
|
76
|
+
│ 6. Collect and report results │
|
|
77
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
78
|
+
│ Step 4 │ Step 5
|
|
79
|
+
▼ ▼
|
|
80
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
81
|
+
│ Scan Tasks │ │ Triage Tasks │
|
|
82
|
+
│ (parallel) │ │ (parallel) │
|
|
83
|
+
├─────────────────┤ ├─────────────────┤
|
|
84
|
+
│ Python scanner │ │ Python triager │
|
|
85
|
+
│ JS/TS scanner │ │ JS/TS triager │
|
|
86
|
+
│ Go scanner │ │ Go triager │
|
|
87
|
+
│ Docker scanner │ │ Docker triager │
|
|
88
|
+
└─────────────────┘ └─────────────────┘
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Workflow Enforcement via Task System
|
|
94
|
+
|
|
95
|
+
This skill uses the **Task system** to enforce workflow compliance. On invocation, create these tasks:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
TaskCreate: "Detect languages and Pro availability" (Step 1)
|
|
99
|
+
TaskCreate: "Select rulesets based on detection" (Step 2) - blockedBy: Step 1
|
|
100
|
+
TaskCreate: "Present plan with rulesets, get approval" (Step 3) - blockedBy: Step 2
|
|
101
|
+
TaskCreate: "Execute scans with approved rulesets" (Step 4) - blockedBy: Step 3
|
|
102
|
+
TaskCreate: "Triage findings" (Step 5) - blockedBy: Step 4
|
|
103
|
+
TaskCreate: "Report results" (Step 6) - blockedBy: Step 5
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Mandatory Gates
|
|
107
|
+
|
|
108
|
+
| Task | Gate Type | Cannot Proceed Until |
|
|
109
|
+
|------|-----------|---------------------|
|
|
110
|
+
| Step 3: Get approval | **HARD GATE** | User explicitly approves rulesets + plan |
|
|
111
|
+
| Step 5: Triage | **SOFT GATE** | All scan JSON files exist |
|
|
112
|
+
|
|
113
|
+
**Step 3 is a HARD GATE**: Mark as `completed` ONLY after user says "yes", "proceed", "approved", or equivalent.
|
|
114
|
+
|
|
115
|
+
### Task Flow Example
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
1. Create all 6 tasks with dependencies
|
|
119
|
+
2. TaskUpdate Step 1 → in_progress, execute detection
|
|
120
|
+
3. TaskUpdate Step 1 → completed
|
|
121
|
+
4. TaskUpdate Step 2 → in_progress, select rulesets
|
|
122
|
+
5. TaskUpdate Step 2 → completed
|
|
123
|
+
6. TaskUpdate Step 3 → in_progress, present plan with rulesets
|
|
124
|
+
7. STOP: Wait for user response (may modify rulesets)
|
|
125
|
+
8. User approves → TaskUpdate Step 3 → completed
|
|
126
|
+
9. TaskUpdate Step 4 → in_progress (now unblocked)
|
|
127
|
+
... continue workflow
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Workflow
|
|
133
|
+
|
|
134
|
+
### Step 1: Detect Languages and Pro Availability (Main Agent)
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Check if Semgrep Pro is available (non-destructive check)
|
|
138
|
+
SEMGREP_PRO=false
|
|
139
|
+
if semgrep --pro --validate --config p/default 2>/dev/null; then
|
|
140
|
+
SEMGREP_PRO=true
|
|
141
|
+
echo "Semgrep Pro: AVAILABLE (cross-file analysis enabled)"
|
|
142
|
+
else
|
|
143
|
+
echo "Semgrep Pro: NOT AVAILABLE (OSS mode, single-file analysis)"
|
|
144
|
+
fi
|
|
145
|
+
|
|
146
|
+
# Find languages by file extension
|
|
147
|
+
fd -t f -e py -e js -e ts -e jsx -e tsx -e go -e rb -e java -e php -e c -e cpp -e rs | \
|
|
148
|
+
sed 's/.*\.//' | sort | uniq -c | sort -rn
|
|
149
|
+
|
|
150
|
+
# Check for frameworks/technologies
|
|
151
|
+
ls -la package.json pyproject.toml Gemfile go.mod Cargo.toml pom.xml 2>/dev/null
|
|
152
|
+
fd -t f "Dockerfile" "docker-compose" ".tf" "*.yaml" "*.yml" | head -20
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Map findings to categories:
|
|
156
|
+
|
|
157
|
+
| Detection | Category |
|
|
158
|
+
|-----------|----------|
|
|
159
|
+
| `.py`, `pyproject.toml` | Python |
|
|
160
|
+
| `.js`, `.ts`, `package.json` | JavaScript/TypeScript |
|
|
161
|
+
| `.go`, `go.mod` | Go |
|
|
162
|
+
| `.rb`, `Gemfile` | Ruby |
|
|
163
|
+
| `.java`, `pom.xml` | Java |
|
|
164
|
+
| `.php` | PHP |
|
|
165
|
+
| `.c`, `.cpp` | C/C++ |
|
|
166
|
+
| `.rs`, `Cargo.toml` | Rust |
|
|
167
|
+
| `Dockerfile` | Docker |
|
|
168
|
+
| `.tf` | Terraform |
|
|
169
|
+
| k8s manifests | Kubernetes |
|
|
170
|
+
|
|
171
|
+
### Step 2: Select Rulesets Based on Detection
|
|
172
|
+
|
|
173
|
+
Using the detected languages and frameworks from Step 1, select rulesets by following the **Ruleset Selection Algorithm** in [rulesets.md]({baseDir}/references/rulesets.md).
|
|
174
|
+
|
|
175
|
+
The algorithm covers:
|
|
176
|
+
1. Security baseline (always included)
|
|
177
|
+
2. Language-specific rulesets
|
|
178
|
+
3. Framework rulesets (if detected)
|
|
179
|
+
4. Infrastructure rulesets
|
|
180
|
+
5. **Required** third-party rulesets (Trail of Bits, 0xdea, Decurity - NOT optional)
|
|
181
|
+
6. Registry verification
|
|
182
|
+
|
|
183
|
+
**Output:** Structured JSON passed to Step 3 for user review:
|
|
184
|
+
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"baseline": ["p/security-audit", "p/secrets"],
|
|
188
|
+
"python": ["p/python", "p/django"],
|
|
189
|
+
"javascript": ["p/javascript", "p/react", "p/nodejs"],
|
|
190
|
+
"docker": ["p/dockerfile"],
|
|
191
|
+
"third_party": ["https://github.com/trailofbits/semgrep-rules"]
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Step 3: CRITICAL GATE - Present Plan and Get Approval
|
|
196
|
+
|
|
197
|
+
> **⛔ MANDATORY CHECKPOINT - DO NOT SKIP**
|
|
198
|
+
>
|
|
199
|
+
> This step requires explicit user approval before proceeding.
|
|
200
|
+
> User may modify rulesets before approving.
|
|
201
|
+
|
|
202
|
+
Present plan to user with **explicit ruleset listing**:
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
## Semgrep Scan Plan
|
|
206
|
+
|
|
207
|
+
**Target:** /path/to/codebase
|
|
208
|
+
**Output directory:** ./semgrep-results-001/
|
|
209
|
+
**Engine:** Semgrep Pro (cross-file analysis) | Semgrep OSS (single-file)
|
|
210
|
+
|
|
211
|
+
### Detected Languages/Technologies:
|
|
212
|
+
- Python (1,234 files) - Django framework detected
|
|
213
|
+
- JavaScript (567 files) - React detected
|
|
214
|
+
- Dockerfile (3 files)
|
|
215
|
+
|
|
216
|
+
### Rulesets to Run:
|
|
217
|
+
|
|
218
|
+
**Security Baseline (always included):**
|
|
219
|
+
- [x] `p/security-audit` - Comprehensive security rules
|
|
220
|
+
- [x] `p/secrets` - Hardcoded credentials, API keys
|
|
221
|
+
|
|
222
|
+
**Python (1,234 files):**
|
|
223
|
+
- [x] `p/python` - Python security patterns
|
|
224
|
+
- [x] `p/django` - Django-specific vulnerabilities
|
|
225
|
+
|
|
226
|
+
**JavaScript (567 files):**
|
|
227
|
+
- [x] `p/javascript` - JavaScript security patterns
|
|
228
|
+
- [x] `p/react` - React-specific issues
|
|
229
|
+
- [x] `p/nodejs` - Node.js server-side patterns
|
|
230
|
+
|
|
231
|
+
**Docker (3 files):**
|
|
232
|
+
- [x] `p/dockerfile` - Dockerfile best practices
|
|
233
|
+
|
|
234
|
+
**Third-party (auto-included for detected languages):**
|
|
235
|
+
- [x] Trail of Bits rules - https://github.com/trailofbits/semgrep-rules
|
|
236
|
+
|
|
237
|
+
**Available but not selected:**
|
|
238
|
+
- [ ] `p/owasp-top-ten` - OWASP Top 10 (overlaps with security-audit)
|
|
239
|
+
|
|
240
|
+
### Execution Strategy:
|
|
241
|
+
- Spawn 3 parallel scan Tasks (Python, JavaScript, Docker)
|
|
242
|
+
- Total rulesets: 9
|
|
243
|
+
- [If Pro] Cross-file taint tracking enabled
|
|
244
|
+
- Scan agent: `static-analysis:semgrep-scanner`
|
|
245
|
+
- Triage agent: `static-analysis:semgrep-triager`
|
|
246
|
+
|
|
247
|
+
**Want to modify rulesets?** Tell me which to add or remove.
|
|
248
|
+
**Ready to scan?** Say "proceed" or "yes".
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**⛔ STOP: Await explicit user approval**
|
|
252
|
+
|
|
253
|
+
After presenting the plan:
|
|
254
|
+
|
|
255
|
+
1. **If user wants to modify rulesets:**
|
|
256
|
+
- Add requested rulesets to the appropriate category
|
|
257
|
+
- Remove requested rulesets
|
|
258
|
+
- Re-present the updated plan
|
|
259
|
+
- Return to waiting for approval
|
|
260
|
+
|
|
261
|
+
2. **Use AskUserQuestion** if user hasn't responded:
|
|
262
|
+
```
|
|
263
|
+
"I've prepared the scan plan with 9 rulesets (including Trail of Bits). Proceed with scanning?"
|
|
264
|
+
Options: ["Yes, run scan", "Modify rulesets first"]
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
3. **Valid approval responses:**
|
|
268
|
+
- "yes", "proceed", "approved", "go ahead", "looks good", "run it"
|
|
269
|
+
|
|
270
|
+
4. **Mark task completed** only after approval with final rulesets confirmed
|
|
271
|
+
|
|
272
|
+
5. **Do NOT treat as approval:**
|
|
273
|
+
- User's original request ("scan this codebase")
|
|
274
|
+
- Silence / no response
|
|
275
|
+
- Questions about the plan
|
|
276
|
+
|
|
277
|
+
### Pre-Scan Checklist
|
|
278
|
+
|
|
279
|
+
Before marking Step 3 complete, verify:
|
|
280
|
+
- [ ] Target directory shown to user
|
|
281
|
+
- [ ] Engine type (Pro/OSS) displayed
|
|
282
|
+
- [ ] Languages detected and listed
|
|
283
|
+
- [ ] **All rulesets explicitly listed with checkboxes**
|
|
284
|
+
- [ ] User given opportunity to modify rulesets
|
|
285
|
+
- [ ] User explicitly approved (quote their confirmation)
|
|
286
|
+
- [ ] **Final ruleset list captured for Step 4**
|
|
287
|
+
- [ ] Agent types listed: `static-analysis:semgrep-scanner` and `static-analysis:semgrep-triager`
|
|
288
|
+
|
|
289
|
+
### Step 4: Spawn Parallel Scan Tasks
|
|
290
|
+
|
|
291
|
+
Create output directory with run number to avoid collisions, then spawn Tasks with **approved rulesets from Step 3**:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# Find next available run number
|
|
295
|
+
LAST=$(ls -d semgrep-results-[0-9][0-9][0-9] 2>/dev/null | sort | tail -1 | grep -o '[0-9]*$' || true)
|
|
296
|
+
NEXT_NUM=$(printf "%03d" $(( ${LAST:-0} + 1 )))
|
|
297
|
+
OUTPUT_DIR="semgrep-results-${NEXT_NUM}"
|
|
298
|
+
mkdir -p "$OUTPUT_DIR"
|
|
299
|
+
echo "Output directory: $OUTPUT_DIR"
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
**Spawn N Tasks in a SINGLE message** (one per language category) using `subagent_type: static-analysis:semgrep-scanner`.
|
|
303
|
+
|
|
304
|
+
Use the scanner task prompt template from [scanner-task-prompt.md]({baseDir}/references/scanner-task-prompt.md).
|
|
305
|
+
|
|
306
|
+
**Example - 3 Language Scan (with approved rulesets):**
|
|
307
|
+
|
|
308
|
+
Spawn these 3 Tasks in a SINGLE message:
|
|
309
|
+
|
|
310
|
+
1. **Task: Python Scanner**
|
|
311
|
+
- Approved rulesets: p/python, p/django, p/security-audit, p/secrets, https://github.com/trailofbits/semgrep-rules
|
|
312
|
+
- Output: semgrep-results-001/python-*.json
|
|
313
|
+
|
|
314
|
+
2. **Task: JavaScript Scanner**
|
|
315
|
+
- Approved rulesets: p/javascript, p/react, p/nodejs, p/security-audit, p/secrets, https://github.com/trailofbits/semgrep-rules
|
|
316
|
+
- Output: semgrep-results-001/js-*.json
|
|
317
|
+
|
|
318
|
+
3. **Task: Docker Scanner**
|
|
319
|
+
- Approved rulesets: p/dockerfile
|
|
320
|
+
- Output: semgrep-results-001/docker-*.json
|
|
321
|
+
|
|
322
|
+
### Step 5: Spawn Parallel Triage Tasks
|
|
323
|
+
|
|
324
|
+
After scan Tasks complete, spawn triage Tasks using `subagent_type: static-analysis:semgrep-triager` (triage requires reading code context, not just running commands).
|
|
325
|
+
|
|
326
|
+
Use the triage task prompt template from [triage-task-prompt.md]({baseDir}/references/triage-task-prompt.md).
|
|
327
|
+
|
|
328
|
+
### Step 6: Collect Results (Main Agent)
|
|
329
|
+
|
|
330
|
+
After all Tasks complete, generate merged SARIF and report:
|
|
331
|
+
|
|
332
|
+
**Generate merged SARIF with only triaged true positives:**
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
uv run {baseDir}/scripts/merge_triaged_sarif.py [OUTPUT_DIR]
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
This script:
|
|
339
|
+
1. Attempts to use [SARIF Multitool](https://www.npmjs.com/package/@microsoft/sarif-multitool) for merging (if `npx` is available)
|
|
340
|
+
2. Falls back to pure Python merge if Multitool unavailable
|
|
341
|
+
3. Reads all `*-triage.json` files to extract true positive findings
|
|
342
|
+
4. Filters merged SARIF to include only triaged true positives
|
|
343
|
+
5. Writes output to `[OUTPUT_DIR]/findings-triaged.sarif`
|
|
344
|
+
|
|
345
|
+
**Optional: Install SARIF Multitool for better merge quality:**
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
npm install -g @microsoft/sarif-multitool
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**Report to user:**
|
|
352
|
+
|
|
353
|
+
```
|
|
354
|
+
## Semgrep Scan Complete
|
|
355
|
+
|
|
356
|
+
**Scanned:** 1,804 files
|
|
357
|
+
**Rulesets used:** 9 (including Trail of Bits)
|
|
358
|
+
**Total raw findings:** 156
|
|
359
|
+
**After triage:** 32 true positives
|
|
360
|
+
|
|
361
|
+
### By Severity:
|
|
362
|
+
- ERROR: 5
|
|
363
|
+
- WARNING: 18
|
|
364
|
+
- INFO: 9
|
|
365
|
+
|
|
366
|
+
### By Category:
|
|
367
|
+
- SQL Injection: 3
|
|
368
|
+
- XSS: 7
|
|
369
|
+
- Hardcoded secrets: 2
|
|
370
|
+
- Insecure configuration: 12
|
|
371
|
+
- Code quality: 8
|
|
372
|
+
|
|
373
|
+
Results written to:
|
|
374
|
+
- semgrep-results-001/findings-triaged.sarif (SARIF, true positives only)
|
|
375
|
+
- semgrep-results-001/*-triage.json (triage details per language)
|
|
376
|
+
- semgrep-results-001/*.json (raw scan results)
|
|
377
|
+
- semgrep-results-001/*.sarif (raw SARIF per ruleset)
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## Common Mistakes
|
|
383
|
+
|
|
384
|
+
| Mistake | Correct Approach |
|
|
385
|
+
|---------|------------------|
|
|
386
|
+
| Running without `--metrics=off` | Always use `--metrics=off` to prevent telemetry |
|
|
387
|
+
| Running rulesets sequentially | Run in parallel with `&` and `wait` |
|
|
388
|
+
| Not scoping rulesets to languages | Use `--include="*.py"` for language-specific rules |
|
|
389
|
+
| Reporting raw findings without triage | Always triage to remove false positives |
|
|
390
|
+
| Single-threaded for multi-lang | Spawn parallel Tasks per language |
|
|
391
|
+
| Sequential Tasks | Spawn all Tasks in SINGLE message for parallelism |
|
|
392
|
+
| Using OSS when Pro is available | Check login status; use `--pro` for deeper analysis |
|
|
393
|
+
| Assuming Pro is unavailable | Always check with login detection before scanning |
|
|
394
|
+
|
|
395
|
+
## Limitations
|
|
396
|
+
|
|
397
|
+
1. **OSS mode:** Cannot track data flow across files (login with `semgrep login` and run `semgrep install-semgrep-pro` to enable)
|
|
398
|
+
2. **Pro mode:** Cross-file analysis uses `-j 1` (single job) which is slower per ruleset, but parallel rulesets compensate
|
|
399
|
+
3. Triage requires reading code context - parallelized via Tasks
|
|
400
|
+
4. Some false positive patterns require human judgment
|
|
401
|
+
|
|
402
|
+
## Agents
|
|
403
|
+
|
|
404
|
+
This plugin provides two specialized agents for the scan and triage phases:
|
|
405
|
+
|
|
406
|
+
| Agent | Tools | Purpose |
|
|
407
|
+
|-------|-------|---------|
|
|
408
|
+
| `static-analysis:semgrep-scanner` | Bash | Executes parallel semgrep scans for a language category |
|
|
409
|
+
| `static-analysis:semgrep-triager` | Read, Grep, Glob, Write | Classifies findings as true/false positives by reading source context |
|
|
410
|
+
|
|
411
|
+
Use `subagent_type: static-analysis:semgrep-scanner` in Step 4 and `subagent_type: static-analysis:semgrep-triager` in Step 5 when spawning Task subagents.
|
|
412
|
+
|
|
413
|
+
## Rationalizations to Reject
|
|
414
|
+
|
|
415
|
+
| Shortcut | Why It's Wrong |
|
|
416
|
+
|----------|----------------|
|
|
417
|
+
| "User asked for scan, that's approval" | Original request ≠ plan approval; user must confirm specific parameters. Present plan, use AskUserQuestion, await explicit "yes" |
|
|
418
|
+
| "Step 3 task is blocking, just mark complete" | Lying about task status defeats enforcement. Only mark complete after real approval |
|
|
419
|
+
| "I already know what they want" | Assumptions cause scanning wrong directories/rulesets. Present plan with all parameters for verification |
|
|
420
|
+
| "Just use default rulesets" | User must see and approve exact rulesets before scan |
|
|
421
|
+
| "Add extra rulesets without asking" | Modifying approved list without consent breaks trust |
|
|
422
|
+
| "Skip showing ruleset list" | User can't make informed decision without seeing what will run |
|
|
423
|
+
| "Third-party rulesets are optional" | Trail of Bits, 0xdea, Decurity rules catch vulnerabilities not in official registry - they are REQUIRED when language matches |
|
|
424
|
+
| "Skip triage, report everything" | Floods user with noise; true issues get lost |
|
|
425
|
+
| "Run one ruleset at a time" | Wastes time; parallel execution is faster |
|
|
426
|
+
| "Use --config auto" | Sends metrics; less control over rulesets |
|
|
427
|
+
| "Triage later" | Findings without context are harder to evaluate |
|
|
428
|
+
| "One Task at a time" | Defeats parallelism; spawn all Tasks together |
|
|
429
|
+
| "Pro is too slow, skip --pro" | Cross-file analysis catches 250% more true positives; worth the time |
|
|
430
|
+
| "Don't bother checking for Pro" | Missing Pro = missing critical cross-file vulnerabilities |
|
|
431
|
+
| "OSS is good enough" | OSS misses inter-file taint flows; always prefer Pro when available |
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Semgrep Rulesets Reference
|
|
2
|
+
|
|
3
|
+
## Complete Ruleset Catalog
|
|
4
|
+
|
|
5
|
+
### Security-Focused Rulesets
|
|
6
|
+
|
|
7
|
+
| Ruleset | Description | Use Case |
|
|
8
|
+
|---------|-------------|----------|
|
|
9
|
+
| `p/security-audit` | Comprehensive vulnerability detection, higher false positives | Manual audits, security reviews |
|
|
10
|
+
| `p/secrets` | Hardcoded credentials, API keys, tokens | Always include |
|
|
11
|
+
| `p/owasp-top-ten` | OWASP Top 10 web application vulnerabilities | Web app security |
|
|
12
|
+
| `p/cwe-top-25` | CWE Top 25 most dangerous software weaknesses | General security |
|
|
13
|
+
| `p/sql-injection` | SQL injection patterns and tainted data flows | Database security |
|
|
14
|
+
| `p/insecure-transport` | Ensures code uses encrypted channels | Network security |
|
|
15
|
+
| `p/gitleaks` | Hard-coded credentials detection (gitleaks port) | Secrets scanning |
|
|
16
|
+
| `p/findsecbugs` | FindSecBugs rule pack for Java | Java security |
|
|
17
|
+
| `p/phpcs-security-audit` | PHP security audit rules | PHP security |
|
|
18
|
+
|
|
19
|
+
### CI/CD Rulesets
|
|
20
|
+
|
|
21
|
+
| Ruleset | Description | Use Case |
|
|
22
|
+
|---------|-------------|----------|
|
|
23
|
+
| `p/default` | Default ruleset, balanced coverage | First-time users |
|
|
24
|
+
| `p/ci` | High-confidence security + logic bugs, low FP | CI pipelines |
|
|
25
|
+
| `p/r2c-ci` | Low false positives, CI-safe | CI/CD blocking |
|
|
26
|
+
| `p/r2c` | Community favorite, curated by Semgrep (618k+ downloads) | General scanning |
|
|
27
|
+
| `p/auto` | Auto-selects rules based on detected languages/frameworks | Quick scans |
|
|
28
|
+
| `p/comment` | Comment-related rules | Code review |
|
|
29
|
+
|
|
30
|
+
### Third-Party Rulesets
|
|
31
|
+
|
|
32
|
+
| Ruleset | Description | Maintainer |
|
|
33
|
+
|---------|-------------|------------|
|
|
34
|
+
| `p/gitlab` | GitLab-maintained security rules | GitLab |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Ruleset Selection Algorithm
|
|
39
|
+
|
|
40
|
+
Follow this algorithm to select rulesets based on detected languages and frameworks.
|
|
41
|
+
|
|
42
|
+
### Step 1: Always Include Security Baseline
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"baseline": ["p/security-audit", "p/secrets"]
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
- `p/security-audit` - Comprehensive vulnerability detection (always include)
|
|
51
|
+
- `p/secrets` - Hardcoded credentials, API keys, tokens (always include)
|
|
52
|
+
|
|
53
|
+
### Step 2: Add Language-Specific Rulesets
|
|
54
|
+
|
|
55
|
+
For each detected language, add the primary ruleset. If a framework is detected, add its ruleset too.
|
|
56
|
+
|
|
57
|
+
**GA Languages (production-ready):**
|
|
58
|
+
|
|
59
|
+
| Detection | Primary Ruleset | Framework Rulesets | Pro Rule Count |
|
|
60
|
+
|-----------|-----------------|-------------------|----------------|
|
|
61
|
+
| `.py` | `p/python` | `p/django`, `p/flask`, `p/fastapi` | 710+ |
|
|
62
|
+
| `.js`, `.jsx` | `p/javascript` | `p/react`, `p/nodejs`, `p/express`, `p/nextjs`, `p/angular` | 250+ (JS), 70+ (JSX) |
|
|
63
|
+
| `.ts`, `.tsx` | `p/typescript` | `p/react`, `p/nodejs`, `p/express`, `p/nextjs`, `p/angular` | 230+ |
|
|
64
|
+
| `.go` | `p/golang` | `p/go` (alias) | 80+ |
|
|
65
|
+
| `.java` | `p/java` | `p/spring`, `p/findsecbugs` | 190+ |
|
|
66
|
+
| `.kt` | `p/kotlin` | `p/spring` | 60+ |
|
|
67
|
+
| `.rb` | `p/ruby` | `p/rails` | 40+ |
|
|
68
|
+
| `.php` | `p/php` | `p/symfony`, `p/laravel`, `p/phpcs-security-audit` | 50+ |
|
|
69
|
+
| `.c`, `.cpp`, `.h` | `p/c` | - | 150+ |
|
|
70
|
+
| `.rs` | `p/rust` | - | 40+ |
|
|
71
|
+
| `.cs` | `p/csharp` | - | 170+ |
|
|
72
|
+
| `.scala` | `p/scala` | - | Community |
|
|
73
|
+
| `.swift` | `p/swift` | - | 60+ |
|
|
74
|
+
|
|
75
|
+
**Beta Languages (Pro recommended):**
|
|
76
|
+
|
|
77
|
+
| Detection | Primary Ruleset | Notes |
|
|
78
|
+
|-----------|-----------------|-------|
|
|
79
|
+
| `.ex`, `.exs` | `p/elixir` | Requires Pro for best coverage |
|
|
80
|
+
| `.cls`, `.trigger` | `p/apex` | Salesforce; requires Pro |
|
|
81
|
+
|
|
82
|
+
**Experimental Languages:**
|
|
83
|
+
|
|
84
|
+
| Detection | Primary Ruleset | Notes |
|
|
85
|
+
|-----------|-----------------|-------|
|
|
86
|
+
| `.sol` | No official ruleset | Use Decurity third-party rules |
|
|
87
|
+
| `Dockerfile` | `p/dockerfile` | Limited rules |
|
|
88
|
+
| `.yaml`, `.yml` | `p/yaml` | K8s, GitHub Actions, docker-compose patterns |
|
|
89
|
+
| `.json` | `r/json.aws` | AWS IAM policies; use `r/json.*` for specific rules |
|
|
90
|
+
| Bash scripts | - | Community support |
|
|
91
|
+
| Cairo, Circom | - | Experimental, smart contracts |
|
|
92
|
+
|
|
93
|
+
**Framework detection hints:**
|
|
94
|
+
|
|
95
|
+
| Framework | Detection Signals | Ruleset |
|
|
96
|
+
|-----------|------------------|---------|
|
|
97
|
+
| Django | `settings.py`, `urls.py`, `django` in requirements | `p/django` |
|
|
98
|
+
| Flask | `flask` in requirements, `@app.route` | `p/flask` |
|
|
99
|
+
| FastAPI | `fastapi` in requirements, `@app.get/post` | `p/fastapi` |
|
|
100
|
+
| React | `package.json` with react dependency, `.jsx`/`.tsx` files | `p/react` |
|
|
101
|
+
| Next.js | `next.config.js`, `pages/` or `app/` directory | `p/nextjs` |
|
|
102
|
+
| Angular | `angular.json`, `@angular/` dependencies | `p/angular` |
|
|
103
|
+
| Express | `express` in package.json, `app.use()` patterns | `p/express` |
|
|
104
|
+
| NestJS | `@nestjs/` dependencies, `@Controller` decorators | `p/nodejs` |
|
|
105
|
+
| Spring | `pom.xml` with spring, `@SpringBootApplication` | `p/spring` |
|
|
106
|
+
| Rails | `Gemfile` with rails, `config/routes.rb` | `p/rails` |
|
|
107
|
+
| Laravel | `composer.json` with laravel, `artisan` | `p/laravel` |
|
|
108
|
+
| Symfony | `composer.json` with symfony, `config/packages/` | `p/symfony` |
|
|
109
|
+
|
|
110
|
+
### Step 3: Add Infrastructure Rulesets
|
|
111
|
+
|
|
112
|
+
| Detection | Ruleset | Description |
|
|
113
|
+
|-----------|---------|-------------|
|
|
114
|
+
| `Dockerfile` | `p/dockerfile` | Container security, best practices |
|
|
115
|
+
| `.tf`, `.hcl` | `p/terraform` | IaC misconfigurations, CIS benchmarks, AWS/Azure/GCP |
|
|
116
|
+
| k8s manifests | `p/kubernetes` | K8s security, RBAC issues |
|
|
117
|
+
| CloudFormation | `p/cloudformation` | AWS infrastructure security |
|
|
118
|
+
| GitHub Actions | `p/github-actions` | CI/CD security, secrets exposure |
|
|
119
|
+
| `.yaml`, `.yml` | `p/yaml` | Generic YAML patterns (K8s, docker-compose) |
|
|
120
|
+
| AWS IAM JSON | `r/json.aws` | IAM policy misconfigurations (use `--config r/json.aws`) |
|
|
121
|
+
|
|
122
|
+
### Step 4: Add Third-Party Rulesets
|
|
123
|
+
|
|
124
|
+
These are **NOT optional**. Include automatically when language matches:
|
|
125
|
+
|
|
126
|
+
| Languages | Source | Why Required |
|
|
127
|
+
|-----------|--------|--------------|
|
|
128
|
+
| Python, Go, Ruby, JS/TS, Terraform, HCL | [Trail of Bits](https://github.com/trailofbits/semgrep-rules) | Security audit patterns from real engagements (AGPLv3) |
|
|
129
|
+
| C, C++ | [0xdea](https://github.com/0xdea/semgrep-rules) | Memory safety, low-level vulnerabilities |
|
|
130
|
+
| Solidity, Cairo, Rust | [Decurity](https://github.com/Decurity/semgrep-smart-contracts) | Smart contract vulnerabilities, DeFi exploits |
|
|
131
|
+
| Go | [dgryski](https://github.com/dgryski/semgrep-go) | Additional Go-specific patterns |
|
|
132
|
+
| Android (Java/Kotlin) | [MindedSecurity](https://github.com/mindedsecurity/semgrep-rules-android-security) | OWASP MASTG-derived mobile security rules |
|
|
133
|
+
| Java, Go, JS/TS, C#, Python, PHP | [elttam](https://github.com/elttam/semgrep-rules) | Security consulting patterns |
|
|
134
|
+
| Dockerfile, PHP, Go, Java | [kondukto](https://github.com/kondukto-io/semgrep-rules) | Container and web app security |
|
|
135
|
+
| PHP, Kotlin, Java | [dotta](https://github.com/federicodotta/semgrep-rules) | Pentest-derived web/mobile app rules |
|
|
136
|
+
| Terraform, HCL | [HashiCorp](https://github.com/hashicorp-forge/semgrep-rules) | HashiCorp infrastructure patterns |
|
|
137
|
+
| Swift, Java, Cobol | [akabe1](https://github.com/akabe1/akabe1-semgrep-rules) | iOS and legacy system patterns |
|
|
138
|
+
| Java | [Atlassian Labs](https://github.com/atlassian-labs/atlassian-sast-ruleset) | Atlassian-maintained Java rules |
|
|
139
|
+
| Python, JS/TS, Java, Ruby, Go, PHP | [Apiiro](https://github.com/apiiro/malicious-code-ruleset) | Malicious code detection, supply chain |
|
|
140
|
+
|
|
141
|
+
### Step 5: Verify Rulesets
|
|
142
|
+
|
|
143
|
+
Before finalizing, verify official rulesets load:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Quick validation (exits 0 if valid)
|
|
147
|
+
semgrep --config p/python --validate --metrics=off 2>&1 | head -3
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Or browse the [Semgrep Registry](https://semgrep.dev/explore).
|
|
151
|
+
|
|
152
|
+
### Output Format
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"baseline": ["p/security-audit", "p/secrets"],
|
|
157
|
+
"python": ["p/python", "p/django"],
|
|
158
|
+
"javascript": ["p/javascript", "p/react", "p/nodejs"],
|
|
159
|
+
"docker": ["p/dockerfile"],
|
|
160
|
+
"third_party": ["https://github.com/trailofbits/semgrep-rules"]
|
|
161
|
+
}
|
|
162
|
+
```
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Scanner Subagent Task Prompt
|
|
2
|
+
|
|
3
|
+
Use this prompt template when spawning scanner Tasks in Step 4. Use `subagent_type: static-analysis:semgrep-scanner`.
|
|
4
|
+
|
|
5
|
+
## Template
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
You are a Semgrep scanner for [LANGUAGE_CATEGORY].
|
|
9
|
+
|
|
10
|
+
## Task
|
|
11
|
+
Run Semgrep scans for [LANGUAGE] files and save results to [OUTPUT_DIR].
|
|
12
|
+
|
|
13
|
+
## Pro Engine Status: [PRO_AVAILABLE: true/false]
|
|
14
|
+
|
|
15
|
+
## APPROVED RULESETS (from user-confirmed plan)
|
|
16
|
+
[LIST EXACT RULESETS USER APPROVED - DO NOT SUBSTITUTE]
|
|
17
|
+
|
|
18
|
+
Example:
|
|
19
|
+
- p/python
|
|
20
|
+
- p/django
|
|
21
|
+
- p/security-audit
|
|
22
|
+
- p/secrets
|
|
23
|
+
- https://github.com/trailofbits/semgrep-rules
|
|
24
|
+
|
|
25
|
+
## Commands to Run (in parallel)
|
|
26
|
+
|
|
27
|
+
### Generate commands for EACH approved ruleset:
|
|
28
|
+
```bash
|
|
29
|
+
semgrep [--pro if available] --metrics=off --config [RULESET] --json -o [OUTPUT_DIR]/[lang]-[ruleset].json --sarif-output=[OUTPUT_DIR]/[lang]-[ruleset].sarif [TARGET] &
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Wait for all to complete:
|
|
33
|
+
```bash
|
|
34
|
+
wait
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Critical Rules
|
|
38
|
+
- Use ONLY the rulesets listed above - do not add or remove any
|
|
39
|
+
- Always use --metrics=off (prevents sending telemetry to Semgrep servers)
|
|
40
|
+
- Use --pro when Pro is available (enables cross-file taint tracking)
|
|
41
|
+
- Run all rulesets in parallel with & and wait
|
|
42
|
+
- For GitHub URLs, clone the repo first if not cached locally
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
Report:
|
|
46
|
+
- Number of findings per ruleset
|
|
47
|
+
- Any scan errors
|
|
48
|
+
- File paths of JSON results
|
|
49
|
+
- [If Pro] Note any cross-file findings detected
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Variable Substitutions
|
|
53
|
+
|
|
54
|
+
| Variable | Description | Example |
|
|
55
|
+
|----------|-------------|---------|
|
|
56
|
+
| `[LANGUAGE_CATEGORY]` | Language group being scanned | Python, JavaScript, Docker |
|
|
57
|
+
| `[LANGUAGE]` | Specific language | Python, TypeScript, Go |
|
|
58
|
+
| `[OUTPUT_DIR]` | Results directory with run number | semgrep-results-001 |
|
|
59
|
+
| `[PRO_AVAILABLE]` | Whether Pro engine is available | true, false |
|
|
60
|
+
| `[RULESET]` | Semgrep ruleset identifier | p/python, https://github.com/... |
|
|
61
|
+
| `[TARGET]` | Directory to scan | . (current dir) |
|
|
62
|
+
|
|
63
|
+
## Example: Python Scanner Task
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
You are a Semgrep scanner for Python.
|
|
67
|
+
|
|
68
|
+
## Task
|
|
69
|
+
Run Semgrep scans for Python files and save results to semgrep-results-001.
|
|
70
|
+
|
|
71
|
+
## Pro Engine Status: true
|
|
72
|
+
|
|
73
|
+
## APPROVED RULESETS (from user-confirmed plan)
|
|
74
|
+
- p/python
|
|
75
|
+
- p/django
|
|
76
|
+
- p/security-audit
|
|
77
|
+
- p/secrets
|
|
78
|
+
- https://github.com/trailofbits/semgrep-rules
|
|
79
|
+
|
|
80
|
+
## Commands to Run (in parallel)
|
|
81
|
+
```bash
|
|
82
|
+
semgrep --pro --metrics=off --config p/python --json -o semgrep-results-001/python-python.json --sarif-output=semgrep-results-001/python-python.sarif . &
|
|
83
|
+
semgrep --pro --metrics=off --config p/django --json -o semgrep-results-001/python-django.json --sarif-output=semgrep-results-001/python-django.sarif . &
|
|
84
|
+
semgrep --pro --metrics=off --config p/security-audit --json -o semgrep-results-001/python-security-audit.json --sarif-output=semgrep-results-001/python-security-audit.sarif . &
|
|
85
|
+
semgrep --pro --metrics=off --config p/secrets --json -o semgrep-results-001/python-secrets.json --sarif-output=semgrep-results-001/python-secrets.sarif . &
|
|
86
|
+
semgrep --pro --metrics=off --config https://github.com/trailofbits/semgrep-rules --json -o semgrep-results-001/python-trailofbits.json --sarif-output=semgrep-results-001/python-trailofbits.sarif . &
|
|
87
|
+
wait
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Critical Rules
|
|
91
|
+
- Use ONLY the rulesets listed above - do not add or remove any
|
|
92
|
+
- Always use --metrics=off
|
|
93
|
+
- Use --pro when Pro is available
|
|
94
|
+
- Run all rulesets in parallel with & and wait
|
|
95
|
+
|
|
96
|
+
## Output
|
|
97
|
+
Report:
|
|
98
|
+
- Number of findings per ruleset
|
|
99
|
+
- Any scan errors
|
|
100
|
+
- File paths of JSON results
|
|
101
|
+
- Note any cross-file findings detected
|
|
102
|
+
```
|