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,44 @@
|
|
|
1
|
+
# Threat Models Reference
|
|
2
|
+
|
|
3
|
+
Control which source categories are active during CodeQL analysis. By default, only `remote` sources are tracked.
|
|
4
|
+
|
|
5
|
+
## Available Models
|
|
6
|
+
|
|
7
|
+
| Model | Sources Included | When to Enable | False Positive Impact |
|
|
8
|
+
|-------|------------------|----------------|----------------------|
|
|
9
|
+
| `remote` | HTTP requests, network input | Always (default). Covers web services, APIs, network-facing code. | Low — these are the most common attack vectors. |
|
|
10
|
+
| `local` | Command line args, local files | CLI tools, batch processors, desktop apps where local users are untrusted. | Medium — generates noise for web-only services where CLI args are developer-controlled. |
|
|
11
|
+
| `environment` | Environment variables | Apps that read config from env vars at runtime (12-factor apps, containers). Skip for apps that only read env at startup into validated config objects. | Medium — many env reads are startup-only config, not runtime-tainted data. |
|
|
12
|
+
| `database` | Database query results | Second-order injection scenarios: stored XSS, data from shared databases where other writers are untrusted. | High — most apps trust their own database. Only enable when auditing for stored/second-order attacks. |
|
|
13
|
+
| `file` | File contents | File upload processors, log parsers, config file readers that accept user-provided files. | Medium — triggers on all file reads including trusted config files. |
|
|
14
|
+
|
|
15
|
+
## Default Behavior
|
|
16
|
+
|
|
17
|
+
With no `--threat-models` flag, CodeQL uses `remote` only. This is correct for most web applications and APIs. Expanding beyond `remote` is useful when the application's trust boundary extends to local inputs.
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
Enable additional threat models with the `--threat-models` flag:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Web service (default — remote only)
|
|
25
|
+
codeql database analyze codeql.db \
|
|
26
|
+
-- codeql/python-queries
|
|
27
|
+
|
|
28
|
+
# CLI tool — local users can provide malicious input
|
|
29
|
+
codeql database analyze codeql.db \
|
|
30
|
+
--threat-models=remote,local \
|
|
31
|
+
-- codeql/python-queries
|
|
32
|
+
|
|
33
|
+
# Container app reading env vars from untrusted orchestrator
|
|
34
|
+
codeql database analyze codeql.db \
|
|
35
|
+
--threat-models=remote,environment \
|
|
36
|
+
-- codeql/python-queries
|
|
37
|
+
|
|
38
|
+
# Full coverage — audit mode for all input vectors
|
|
39
|
+
codeql database analyze codeql.db \
|
|
40
|
+
--threat-models=remote,local,environment,database,file \
|
|
41
|
+
-- codeql/python-queries
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Multiple models can be combined. Each additional model expands the set of sources CodeQL considers tainted, increasing coverage but potentially increasing false positives. Start with the narrowest set that matches the application's actual threat model, then expand if needed.
|
|
@@ -0,0 +1,669 @@
|
|
|
1
|
+
# Build Database Workflow
|
|
2
|
+
|
|
3
|
+
Create high-quality CodeQL databases by trying build methods in sequence until one produces good results.
|
|
4
|
+
|
|
5
|
+
## Task System
|
|
6
|
+
|
|
7
|
+
Create these tasks on workflow start:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
TaskCreate: "Detect language and configure" (Step 1)
|
|
11
|
+
TaskCreate: "Build database" (Step 2) - blockedBy: Step 1
|
|
12
|
+
TaskCreate: "Apply fixes if needed" (Step 3) - blockedBy: Step 2
|
|
13
|
+
TaskCreate: "Assess quality" (Step 4) - blockedBy: Step 3
|
|
14
|
+
TaskCreate: "Improve quality if needed" (Step 5) - blockedBy: Step 4
|
|
15
|
+
TaskCreate: "Generate final report" (Step 6) - blockedBy: Step 5
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Overview
|
|
21
|
+
|
|
22
|
+
Database creation differs by language type:
|
|
23
|
+
|
|
24
|
+
### Interpreted Languages (Python, JavaScript, Go, Ruby)
|
|
25
|
+
- **No build required** - CodeQL extracts source directly
|
|
26
|
+
- **Exclusion config supported** - Use `--codescanning-config` to skip irrelevant files
|
|
27
|
+
|
|
28
|
+
### Compiled Languages (C/C++, Java, C#, Rust, Swift)
|
|
29
|
+
- **Build required** - CodeQL must trace the compilation
|
|
30
|
+
- **Exclusion config NOT supported** - All compiled code must be traced
|
|
31
|
+
- Try build methods in order until one succeeds:
|
|
32
|
+
1. **Autobuild** - CodeQL auto-detects and runs the build
|
|
33
|
+
2. **Custom Command** - Explicit build command for the detected build system
|
|
34
|
+
3. **Multi-step** - Fine-grained control with init → trace-command → finalize
|
|
35
|
+
4. **No-build fallback** - `--build-mode=none` (partial analysis, last resort)
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Database Naming
|
|
40
|
+
|
|
41
|
+
Generate a unique sequential database name to avoid overwriting previous databases:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Find next available database number
|
|
45
|
+
get_next_db_name() {
|
|
46
|
+
local prefix="${1:-codeql}"
|
|
47
|
+
local max=0
|
|
48
|
+
for db in ${prefix}_*.db; do
|
|
49
|
+
if [[ -d "$db" ]]; then
|
|
50
|
+
num="${db#${prefix}_}"
|
|
51
|
+
num="${num%.db}"
|
|
52
|
+
if [[ "$num" =~ ^[0-9]+$ ]] && (( num > max )); then
|
|
53
|
+
max=$num
|
|
54
|
+
fi
|
|
55
|
+
fi
|
|
56
|
+
done
|
|
57
|
+
echo "${prefix}_$((max + 1)).db"
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
DB_NAME=$(get_next_db_name)
|
|
61
|
+
echo "Database name: $DB_NAME"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Use `$DB_NAME` in all commands below.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Build Log
|
|
69
|
+
|
|
70
|
+
Maintain a detailed log file throughout the workflow. Log every significant action.
|
|
71
|
+
|
|
72
|
+
**Initialize at start:**
|
|
73
|
+
```bash
|
|
74
|
+
LOG_FILE="${DB_NAME%.db}-build.log"
|
|
75
|
+
echo "=== CodeQL Database Build Log ===" > "$LOG_FILE"
|
|
76
|
+
echo "Started: $(date -Iseconds)" >> "$LOG_FILE"
|
|
77
|
+
echo "Working directory: $(pwd)" >> "$LOG_FILE"
|
|
78
|
+
echo "Database: $DB_NAME" >> "$LOG_FILE"
|
|
79
|
+
echo "" >> "$LOG_FILE"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Log helper function:**
|
|
83
|
+
```bash
|
|
84
|
+
log_step() {
|
|
85
|
+
echo "[$(date -Iseconds)] $1" >> "$LOG_FILE"
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
log_cmd() {
|
|
89
|
+
echo "[$(date -Iseconds)] COMMAND: $1" >> "$LOG_FILE"
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
log_result() {
|
|
93
|
+
echo "[$(date -Iseconds)] RESULT: $1" >> "$LOG_FILE"
|
|
94
|
+
echo "" >> "$LOG_FILE"
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**What to log:**
|
|
99
|
+
- Detected language and build system
|
|
100
|
+
- Each build attempt with exact command
|
|
101
|
+
- Fix attempts and their outcomes:
|
|
102
|
+
- Cache/artifacts cleaned
|
|
103
|
+
- Dependencies installed (package names, versions)
|
|
104
|
+
- Downloaded JARs, npm packages, Python wheels
|
|
105
|
+
- Registry authentication configured
|
|
106
|
+
- Quality improvements applied:
|
|
107
|
+
- Source root adjustments
|
|
108
|
+
- Extractor options set
|
|
109
|
+
- Type stubs installed
|
|
110
|
+
- Quality assessment results (file counts, errors)
|
|
111
|
+
- Final successful command with all environment variables
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Step 1: Detect Language and Configure
|
|
116
|
+
|
|
117
|
+
### 1a. Detect Language
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Detect primary language by file count
|
|
121
|
+
fd -t f -e py -e js -e ts -e go -e rb -e java -e c -e cpp -e h -e hpp -e rs -e cs | \
|
|
122
|
+
sed 's/.*\.//' | sort | uniq -c | sort -rn | head -5
|
|
123
|
+
|
|
124
|
+
# Check for build files (compiled languages)
|
|
125
|
+
ls -la Makefile CMakeLists.txt build.gradle pom.xml Cargo.toml *.sln 2>/dev/null || true
|
|
126
|
+
|
|
127
|
+
# Check for existing CodeQL database
|
|
128
|
+
ls -la "$DB_NAME" 2>/dev/null && echo "WARNING: existing database found"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
| Language | `--language=` | Type |
|
|
132
|
+
|----------|---------------|------|
|
|
133
|
+
| Python | `python` | Interpreted |
|
|
134
|
+
| JavaScript/TypeScript | `javascript` | Interpreted |
|
|
135
|
+
| Go | `go` | Interpreted |
|
|
136
|
+
| Ruby | `ruby` | Interpreted |
|
|
137
|
+
| Java/Kotlin | `java` | Compiled |
|
|
138
|
+
| C/C++ | `cpp` | Compiled |
|
|
139
|
+
| C# | `csharp` | Compiled |
|
|
140
|
+
| Rust | `rust` | Compiled |
|
|
141
|
+
| Swift | `swift` | Compiled (macOS) |
|
|
142
|
+
|
|
143
|
+
### 1b. Create Exclusion Config (Interpreted Languages Only)
|
|
144
|
+
|
|
145
|
+
> **Skip this substep for compiled languages** - exclusion config is not supported when build tracing is required.
|
|
146
|
+
|
|
147
|
+
Scan for irrelevant files and create `codeql-config.yml`:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Find common excludable directories
|
|
151
|
+
ls -d node_modules vendor third_party external deps 2>/dev/null || true
|
|
152
|
+
|
|
153
|
+
# Find test directories
|
|
154
|
+
fd -t d -E node_modules "test|tests|spec|__tests__|fixtures" .
|
|
155
|
+
|
|
156
|
+
# Find generated/minified files
|
|
157
|
+
fd -t f -E node_modules "\.min\.js$|\.bundle\.js$|\.generated\." . | head -20
|
|
158
|
+
|
|
159
|
+
# Estimate file counts
|
|
160
|
+
echo "Total source files:"
|
|
161
|
+
fd -t f -e py -e js -e ts -e go -e rb | wc -l
|
|
162
|
+
echo "In node_modules:"
|
|
163
|
+
fd -t f -e js -e ts node_modules 2>/dev/null | wc -l
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Create exclusion config:**
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
# codeql-config.yml
|
|
170
|
+
paths-ignore:
|
|
171
|
+
# Package managers
|
|
172
|
+
- node_modules
|
|
173
|
+
- vendor
|
|
174
|
+
- venv
|
|
175
|
+
- .venv
|
|
176
|
+
# Third-party code
|
|
177
|
+
- third_party
|
|
178
|
+
- external
|
|
179
|
+
- deps
|
|
180
|
+
# Generated/minified
|
|
181
|
+
- "**/*.min.js"
|
|
182
|
+
- "**/*.bundle.js"
|
|
183
|
+
- "**/generated/**"
|
|
184
|
+
- "**/dist/**"
|
|
185
|
+
# Tests (optional)
|
|
186
|
+
# - "**/test/**"
|
|
187
|
+
# - "**/tests/**"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
log_step "Created codeql-config.yml"
|
|
192
|
+
log_result "Exclusions: $(grep -c '^ -' codeql-config.yml) patterns"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Step 2: Build Database
|
|
198
|
+
|
|
199
|
+
### For Interpreted Languages (Python, JavaScript, Go, Ruby)
|
|
200
|
+
|
|
201
|
+
Single command, no build required:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
log_step "Building database for interpreted language: <LANG>"
|
|
205
|
+
CMD="codeql database create $DB_NAME --language=<LANG> --source-root=. --codescanning-config=codeql-config.yml --overwrite"
|
|
206
|
+
log_cmd "$CMD"
|
|
207
|
+
|
|
208
|
+
$CMD 2>&1 | tee -a "$LOG_FILE"
|
|
209
|
+
|
|
210
|
+
if codeql resolve database -- "$DB_NAME" >/dev/null 2>&1; then
|
|
211
|
+
log_result "SUCCESS"
|
|
212
|
+
else
|
|
213
|
+
log_result "FAILED"
|
|
214
|
+
fi
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Skip to Step 4 (Assess Quality) after success.**
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
### For Compiled Languages (Java, C/C++, C#, Rust, Swift)
|
|
222
|
+
|
|
223
|
+
Try build methods in sequence until one succeeds:
|
|
224
|
+
|
|
225
|
+
#### Method 1: Autobuild
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
log_step "METHOD 1: Autobuild"
|
|
229
|
+
CMD="codeql database create $DB_NAME --language=<LANG> --source-root=. --overwrite"
|
|
230
|
+
log_cmd "$CMD"
|
|
231
|
+
|
|
232
|
+
$CMD 2>&1 | tee -a "$LOG_FILE"
|
|
233
|
+
|
|
234
|
+
if codeql resolve database -- "$DB_NAME" >/dev/null 2>&1; then
|
|
235
|
+
log_result "SUCCESS"
|
|
236
|
+
else
|
|
237
|
+
log_result "FAILED"
|
|
238
|
+
fi
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
#### Method 2: Custom Command
|
|
242
|
+
|
|
243
|
+
Detect build system and use explicit command:
|
|
244
|
+
|
|
245
|
+
| Build System | Detection | Command |
|
|
246
|
+
|--------------|-----------|---------|
|
|
247
|
+
| Make | `Makefile` | `make clean && make -j$(nproc)` |
|
|
248
|
+
| CMake | `CMakeLists.txt` | `cmake -B build && cmake --build build` |
|
|
249
|
+
| Gradle | `build.gradle` | `./gradlew clean build -x test` |
|
|
250
|
+
| Maven | `pom.xml` | `mvn clean compile -DskipTests` |
|
|
251
|
+
| Cargo | `Cargo.toml` | `cargo clean && cargo build` |
|
|
252
|
+
| .NET | `*.sln` | `dotnet clean && dotnet build` |
|
|
253
|
+
| Meson | `meson.build` | `meson setup build && ninja -C build` |
|
|
254
|
+
| Bazel | `BUILD`/`WORKSPACE` | `bazel build //...` |
|
|
255
|
+
|
|
256
|
+
**Find project-specific build scripts:**
|
|
257
|
+
```bash
|
|
258
|
+
# Look for custom build scripts
|
|
259
|
+
fd -t f -e sh -e bash -e py "build|compile|make|setup" .
|
|
260
|
+
ls -la build.sh compile.sh Makefile.custom configure 2>/dev/null || true
|
|
261
|
+
|
|
262
|
+
# Check README for build instructions
|
|
263
|
+
grep -i -A5 "build\|compile\|install" README* 2>/dev/null | head -20
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Projects may have custom scripts (`build.sh`, `compile.sh`) or non-standard build steps documented in README. Use these instead of generic commands when found.
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
log_step "METHOD 2: Custom command"
|
|
270
|
+
log_step "Detected build system: <BUILD_SYSTEM>"
|
|
271
|
+
BUILD_CMD="<BUILD_CMD>"
|
|
272
|
+
CMD="codeql database create $DB_NAME --language=<LANG> --source-root=. --command='$BUILD_CMD' --overwrite"
|
|
273
|
+
log_cmd "$CMD"
|
|
274
|
+
|
|
275
|
+
$CMD 2>&1 | tee -a "$LOG_FILE"
|
|
276
|
+
|
|
277
|
+
if codeql resolve database -- "$DB_NAME" >/dev/null 2>&1; then
|
|
278
|
+
log_result "SUCCESS"
|
|
279
|
+
else
|
|
280
|
+
log_result "FAILED"
|
|
281
|
+
fi
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
#### Method 3: Multi-step Build
|
|
285
|
+
|
|
286
|
+
For complex builds needing fine-grained control:
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
log_step "METHOD 3: Multi-step build"
|
|
290
|
+
|
|
291
|
+
# 1. Initialize
|
|
292
|
+
log_cmd "codeql database init $DB_NAME --language=<LANG> --source-root=. --overwrite"
|
|
293
|
+
codeql database init $DB_NAME --language=<LANG> --source-root=. --overwrite
|
|
294
|
+
|
|
295
|
+
# 2. Trace each build step
|
|
296
|
+
log_cmd "codeql database trace-command $DB_NAME -- <build step 1>"
|
|
297
|
+
codeql database trace-command $DB_NAME -- <build step 1>
|
|
298
|
+
|
|
299
|
+
log_cmd "codeql database trace-command $DB_NAME -- <build step 2>"
|
|
300
|
+
codeql database trace-command $DB_NAME -- <build step 2>
|
|
301
|
+
# ... more steps as needed
|
|
302
|
+
|
|
303
|
+
# 3. Finalize
|
|
304
|
+
log_cmd "codeql database finalize $DB_NAME"
|
|
305
|
+
codeql database finalize $DB_NAME
|
|
306
|
+
|
|
307
|
+
if codeql resolve database -- "$DB_NAME" >/dev/null 2>&1; then
|
|
308
|
+
log_result "SUCCESS"
|
|
309
|
+
else
|
|
310
|
+
log_result "FAILED"
|
|
311
|
+
fi
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
#### Method 4: No-Build Fallback (Last Resort)
|
|
315
|
+
|
|
316
|
+
When all build methods fail, use `--build-mode=none` for partial analysis:
|
|
317
|
+
|
|
318
|
+
> **⚠️ WARNING:** This creates a database without build tracing. Analysis will be incomplete - only source-level patterns detected, no data flow through compiled code.
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
log_step "METHOD 4: No-build fallback (partial analysis)"
|
|
322
|
+
CMD="codeql database create $DB_NAME --language=<LANG> --source-root=. --build-mode=none --overwrite"
|
|
323
|
+
log_cmd "$CMD"
|
|
324
|
+
|
|
325
|
+
$CMD 2>&1 | tee -a "$LOG_FILE"
|
|
326
|
+
|
|
327
|
+
if codeql resolve database -- "$DB_NAME" >/dev/null 2>&1; then
|
|
328
|
+
log_result "SUCCESS (partial - no build tracing)"
|
|
329
|
+
else
|
|
330
|
+
log_result "FAILED"
|
|
331
|
+
fi
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Step 3: Apply Fixes (if build failed)
|
|
337
|
+
|
|
338
|
+
Try these in order, then retry current build method. **Log each fix attempt:**
|
|
339
|
+
|
|
340
|
+
### 1. Clean existing state
|
|
341
|
+
```bash
|
|
342
|
+
log_step "Applying fix: clean existing state"
|
|
343
|
+
rm -rf "$DB_NAME"
|
|
344
|
+
log_result "Removed $DB_NAME"
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### 2. Clean build cache
|
|
348
|
+
```bash
|
|
349
|
+
log_step "Applying fix: clean build cache"
|
|
350
|
+
CLEANED=""
|
|
351
|
+
make clean 2>/dev/null && CLEANED="$CLEANED make"
|
|
352
|
+
rm -rf build CMakeCache.txt CMakeFiles 2>/dev/null && CLEANED="$CLEANED cmake-artifacts"
|
|
353
|
+
./gradlew clean 2>/dev/null && CLEANED="$CLEANED gradle"
|
|
354
|
+
mvn clean 2>/dev/null && CLEANED="$CLEANED maven"
|
|
355
|
+
cargo clean 2>/dev/null && CLEANED="$CLEANED cargo"
|
|
356
|
+
log_result "Cleaned: $CLEANED"
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### 3. Install missing dependencies
|
|
360
|
+
|
|
361
|
+
> **Note:** The commands below install the *target project's* dependencies so CodeQL can trace the build. Use whatever package manager the target project expects (`pip`, `npm`, `go mod`, etc.) — these are not the skill's own tooling preferences.
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
log_step "Applying fix: install dependencies"
|
|
365
|
+
|
|
366
|
+
# Python — use target project's package manager (pip/uv/poetry)
|
|
367
|
+
if [ -f requirements.txt ]; then
|
|
368
|
+
log_cmd "pip install -r requirements.txt"
|
|
369
|
+
pip install -r requirements.txt 2>&1 | tee -a "$LOG_FILE"
|
|
370
|
+
fi
|
|
371
|
+
if [ -f setup.py ] || [ -f pyproject.toml ]; then
|
|
372
|
+
log_cmd "pip install -e ."
|
|
373
|
+
pip install -e . 2>&1 | tee -a "$LOG_FILE"
|
|
374
|
+
fi
|
|
375
|
+
|
|
376
|
+
# Node - log installed packages
|
|
377
|
+
if [ -f package.json ]; then
|
|
378
|
+
log_cmd "npm install"
|
|
379
|
+
npm install 2>&1 | tee -a "$LOG_FILE"
|
|
380
|
+
fi
|
|
381
|
+
|
|
382
|
+
# Go
|
|
383
|
+
if [ -f go.mod ]; then
|
|
384
|
+
log_cmd "go mod download"
|
|
385
|
+
go mod download 2>&1 | tee -a "$LOG_FILE"
|
|
386
|
+
fi
|
|
387
|
+
|
|
388
|
+
# Java - log downloaded dependencies
|
|
389
|
+
if [ -f build.gradle ] || [ -f build.gradle.kts ]; then
|
|
390
|
+
log_cmd "./gradlew dependencies --refresh-dependencies"
|
|
391
|
+
./gradlew dependencies --refresh-dependencies 2>&1 | tee -a "$LOG_FILE"
|
|
392
|
+
fi
|
|
393
|
+
if [ -f pom.xml ]; then
|
|
394
|
+
log_cmd "mvn dependency:resolve"
|
|
395
|
+
mvn dependency:resolve 2>&1 | tee -a "$LOG_FILE"
|
|
396
|
+
fi
|
|
397
|
+
|
|
398
|
+
# Rust
|
|
399
|
+
if [ -f Cargo.toml ]; then
|
|
400
|
+
log_cmd "cargo fetch"
|
|
401
|
+
cargo fetch 2>&1 | tee -a "$LOG_FILE"
|
|
402
|
+
fi
|
|
403
|
+
|
|
404
|
+
log_result "Dependencies installed - see above for details"
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### 4. Handle private registries
|
|
408
|
+
|
|
409
|
+
If dependencies require authentication, ask user:
|
|
410
|
+
```
|
|
411
|
+
AskUserQuestion: "Build requires private registry access. Options:"
|
|
412
|
+
1. "I'll configure auth and retry"
|
|
413
|
+
2. "Skip these dependencies"
|
|
414
|
+
3. "Show me what's needed"
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
```bash
|
|
418
|
+
# Log authentication setup if performed
|
|
419
|
+
log_step "Private registry authentication configured"
|
|
420
|
+
log_result "Registry: <REGISTRY_URL>, Method: <AUTH_METHOD>"
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
**After fixes:** Retry current build method. If still fails, move to next method.
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## Step 4: Assess Quality
|
|
428
|
+
|
|
429
|
+
Run all quality checks and compare against the project's expected source files.
|
|
430
|
+
|
|
431
|
+
### 4a. Collect Metrics
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
log_step "Assessing database quality"
|
|
435
|
+
|
|
436
|
+
# 1. Baseline lines of code and file list (most reliable metric)
|
|
437
|
+
codeql database print-baseline -- "$DB_NAME"
|
|
438
|
+
BASELINE_LOC=$(python3 -c "
|
|
439
|
+
import json
|
|
440
|
+
with open('$DB_NAME/baseline-info.json') as f:
|
|
441
|
+
d = json.load(f)
|
|
442
|
+
for lang, info in d['languages'].items():
|
|
443
|
+
print(f'{lang}: {info[\"linesOfCode\"]} LoC, {len(info[\"files\"])} files')
|
|
444
|
+
")
|
|
445
|
+
echo "$BASELINE_LOC"
|
|
446
|
+
log_result "Baseline: $BASELINE_LOC"
|
|
447
|
+
|
|
448
|
+
# 2. Source archive file count
|
|
449
|
+
SRC_FILE_COUNT=$(unzip -Z1 "$DB_NAME/src.zip" 2>/dev/null | wc -l)
|
|
450
|
+
echo "Files in source archive: $SRC_FILE_COUNT"
|
|
451
|
+
|
|
452
|
+
# 3. Extraction errors from extractor diagnostics
|
|
453
|
+
EXTRACTOR_ERRORS=$(find "$DB_NAME/diagnostic/extractors" -name '*.jsonl' \
|
|
454
|
+
-exec cat {} + 2>/dev/null | grep -c '^{' 2>/dev/null || true)
|
|
455
|
+
EXTRACTOR_ERRORS=${EXTRACTOR_ERRORS:-0}
|
|
456
|
+
echo "Extractor errors: $EXTRACTOR_ERRORS"
|
|
457
|
+
|
|
458
|
+
# 4. Export diagnostics summary (experimental but useful)
|
|
459
|
+
DIAG_TEXT=$(codeql database export-diagnostics --format=text -- "$DB_NAME" 2>/dev/null || true)
|
|
460
|
+
if [ -n "$DIAG_TEXT" ]; then
|
|
461
|
+
echo "Diagnostics: $DIAG_TEXT"
|
|
462
|
+
fi
|
|
463
|
+
|
|
464
|
+
# 5. Check database is finalized
|
|
465
|
+
FINALIZED=$(grep '^finalised:' "$DB_NAME/codeql-database.yml" 2>/dev/null \
|
|
466
|
+
| awk '{print $2}')
|
|
467
|
+
echo "Finalized: $FINALIZED"
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### 4b. Compare Against Expected Source
|
|
471
|
+
|
|
472
|
+
Estimate the expected source file count from the working directory and compare:
|
|
473
|
+
|
|
474
|
+
```bash
|
|
475
|
+
# Count source files in the project (adjust extensions per language)
|
|
476
|
+
EXPECTED=$(fd -t f -e java -e kt --exclude 'codeql_*.db' \
|
|
477
|
+
--exclude node_modules --exclude vendor --exclude .git . | wc -l)
|
|
478
|
+
echo "Expected source files: $EXPECTED"
|
|
479
|
+
echo "Extracted source files: $SRC_FILE_COUNT"
|
|
480
|
+
|
|
481
|
+
# Baseline LOC from database metadata
|
|
482
|
+
DB_LOC=$(grep '^baselineLinesOfCode:' "$DB_NAME/codeql-database.yml" \
|
|
483
|
+
| awk '{print $2}')
|
|
484
|
+
echo "Baseline LoC: $DB_LOC"
|
|
485
|
+
|
|
486
|
+
# Error ratio
|
|
487
|
+
if [ "$SRC_FILE_COUNT" -gt 0 ]; then
|
|
488
|
+
ERROR_RATIO=$(python3 -c "print(f'{$EXTRACTOR_ERRORS/$SRC_FILE_COUNT*100:.1f}%')")
|
|
489
|
+
else
|
|
490
|
+
ERROR_RATIO="N/A (no files)"
|
|
491
|
+
fi
|
|
492
|
+
echo "Error ratio: $ERROR_RATIO ($EXTRACTOR_ERRORS errors / $SRC_FILE_COUNT files)"
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### 4c. Log Assessment
|
|
496
|
+
|
|
497
|
+
```bash
|
|
498
|
+
log_step "Quality assessment results"
|
|
499
|
+
log_result "Baseline LoC: $DB_LOC"
|
|
500
|
+
log_result "Source archive files: $SRC_FILE_COUNT (expected: ~$EXPECTED)"
|
|
501
|
+
log_result "Extractor errors: $EXTRACTOR_ERRORS (ratio: $ERROR_RATIO)"
|
|
502
|
+
log_result "Finalized: $FINALIZED"
|
|
503
|
+
|
|
504
|
+
# Sample extracted files
|
|
505
|
+
unzip -Z1 "$DB_NAME/src.zip" 2>/dev/null | head -20 >> "$LOG_FILE"
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Quality Criteria
|
|
509
|
+
|
|
510
|
+
| Metric | Source | Good | Poor |
|
|
511
|
+
|--------|--------|------|------|
|
|
512
|
+
| Baseline LoC | `print-baseline` / `baseline-info.json` | > 0, proportional to project size | 0 or far below expected |
|
|
513
|
+
| Source archive files | `src.zip` | Close to expected source file count | 0 or < 50% of expected |
|
|
514
|
+
| Extractor errors | `diagnostic/extractors/*.jsonl` | 0 or < 5% of files | > 5% of files |
|
|
515
|
+
| Finalized | `codeql-database.yml` | `true` | `false` (incomplete build) |
|
|
516
|
+
| Key directories | `src.zip` listing | Application code directories present | Missing `src/main`, `lib/`, `app/` etc. |
|
|
517
|
+
| "No source code seen" | build log | Absent | Present (cached build — compiled languages) |
|
|
518
|
+
|
|
519
|
+
**Interpreting baseline LoC:** A small number of extractor errors is normal and does not significantly impact analysis. However, if `baselineLinesOfCode` is 0 or the source archive contains no files, the database is empty — likely a cached build (compiled languages) or wrong `--source-root`.
|
|
520
|
+
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
## Step 5: Improve Quality (if poor)
|
|
524
|
+
|
|
525
|
+
Try these improvements, re-assess after each. **Log all improvements:**
|
|
526
|
+
|
|
527
|
+
### 1. Adjust source root
|
|
528
|
+
```bash
|
|
529
|
+
log_step "Quality improvement: adjust source root"
|
|
530
|
+
NEW_ROOT="./src" # or detected subdirectory
|
|
531
|
+
# For interpreted: add --codescanning-config=codeql-config.yml
|
|
532
|
+
# For compiled: omit config flag
|
|
533
|
+
log_cmd "codeql database create $DB_NAME --language=<LANG> --source-root=$NEW_ROOT --overwrite"
|
|
534
|
+
codeql database create $DB_NAME --language=<LANG> --source-root=$NEW_ROOT --overwrite
|
|
535
|
+
log_result "Changed source-root to: $NEW_ROOT"
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
### 2. Fix "no source code seen" (cached build - compiled languages only)
|
|
539
|
+
```bash
|
|
540
|
+
log_step "Quality improvement: force rebuild (cached build detected)"
|
|
541
|
+
log_cmd "make clean && rebuild"
|
|
542
|
+
make clean && codeql database create $DB_NAME --language=<LANG> --overwrite
|
|
543
|
+
log_result "Forced clean rebuild"
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
### 3. Install type stubs / dependencies
|
|
547
|
+
|
|
548
|
+
> **Note:** These install into the *target project's* environment to improve CodeQL extraction quality.
|
|
549
|
+
|
|
550
|
+
```bash
|
|
551
|
+
log_step "Quality improvement: install type stubs/additional deps"
|
|
552
|
+
|
|
553
|
+
# Python type stubs — install into target project's environment
|
|
554
|
+
STUBS_INSTALLED=""
|
|
555
|
+
for stub in types-requests types-PyYAML types-redis; do
|
|
556
|
+
if pip install "$stub" 2>/dev/null; then
|
|
557
|
+
STUBS_INSTALLED="$STUBS_INSTALLED $stub"
|
|
558
|
+
fi
|
|
559
|
+
done
|
|
560
|
+
log_result "Installed type stubs:$STUBS_INSTALLED"
|
|
561
|
+
|
|
562
|
+
# Additional project dependencies
|
|
563
|
+
log_cmd "pip install -e ."
|
|
564
|
+
pip install -e . 2>&1 | tee -a "$LOG_FILE"
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
### 4. Adjust extractor options
|
|
568
|
+
```bash
|
|
569
|
+
log_step "Quality improvement: adjust extractor options"
|
|
570
|
+
|
|
571
|
+
# C/C++: Include headers
|
|
572
|
+
export CODEQL_EXTRACTOR_CPP_OPTION_TRAP_HEADERS=true
|
|
573
|
+
log_result "Set CODEQL_EXTRACTOR_CPP_OPTION_TRAP_HEADERS=true"
|
|
574
|
+
|
|
575
|
+
# Java: Specific JDK version
|
|
576
|
+
export CODEQL_EXTRACTOR_JAVA_OPTION_JDK_VERSION=17
|
|
577
|
+
log_result "Set CODEQL_EXTRACTOR_JAVA_OPTION_JDK_VERSION=17"
|
|
578
|
+
|
|
579
|
+
# Then rebuild with current method
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
**After each improvement:** Re-assess quality. If no improvement possible, move to next build method.
|
|
583
|
+
|
|
584
|
+
---
|
|
585
|
+
|
|
586
|
+
## Exit Conditions
|
|
587
|
+
|
|
588
|
+
**Success:**
|
|
589
|
+
- Quality assessment shows GOOD
|
|
590
|
+
- User accepts current database state
|
|
591
|
+
|
|
592
|
+
**Failure (all methods exhausted):**
|
|
593
|
+
```
|
|
594
|
+
AskUserQuestion: "All build methods failed. Options:"
|
|
595
|
+
1. "Accept current state" (if any database exists)
|
|
596
|
+
2. "I'll fix the build manually and retry"
|
|
597
|
+
3. "Abort"
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
---
|
|
601
|
+
|
|
602
|
+
## Final Report
|
|
603
|
+
|
|
604
|
+
**Finalize the log file:**
|
|
605
|
+
```bash
|
|
606
|
+
echo "=== Build Complete ===" >> "$LOG_FILE"
|
|
607
|
+
echo "Finished: $(date -Iseconds)" >> "$LOG_FILE"
|
|
608
|
+
echo "Final database: $DB_NAME" >> "$LOG_FILE"
|
|
609
|
+
echo "Successful method: <METHOD>" >> "$LOG_FILE"
|
|
610
|
+
echo "Final command: <EXACT_COMMAND>" >> "$LOG_FILE"
|
|
611
|
+
codeql resolve database -- "$DB_NAME" >> "$LOG_FILE" 2>&1
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
**Report to user:**
|
|
615
|
+
```
|
|
616
|
+
## Database Build Complete
|
|
617
|
+
|
|
618
|
+
**Database:** $DB_NAME
|
|
619
|
+
**Language:** <LANG>
|
|
620
|
+
**Build method:** autobuild | custom | multi-step
|
|
621
|
+
**Files extracted:** <COUNT>
|
|
622
|
+
|
|
623
|
+
### Quality:
|
|
624
|
+
- Errors: <N>
|
|
625
|
+
- Coverage: <good/partial/poor>
|
|
626
|
+
|
|
627
|
+
### Build Log:
|
|
628
|
+
See `$LOG_FILE` for complete details including:
|
|
629
|
+
- All attempted commands
|
|
630
|
+
- Fixes applied
|
|
631
|
+
- Quality assessments
|
|
632
|
+
|
|
633
|
+
**Final command used:**
|
|
634
|
+
<EXACT_COMMAND>
|
|
635
|
+
|
|
636
|
+
**Ready for analysis.**
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
---
|
|
640
|
+
|
|
641
|
+
## Performance: Parallel Extraction
|
|
642
|
+
|
|
643
|
+
Use `--threads` to parallelize database creation:
|
|
644
|
+
|
|
645
|
+
```bash
|
|
646
|
+
# Compiled language (no exclusion config)
|
|
647
|
+
codeql database create $DB_NAME --language=cpp --threads=0 --command='make -j$(nproc)'
|
|
648
|
+
|
|
649
|
+
# Interpreted language (with exclusion config)
|
|
650
|
+
codeql database create $DB_NAME --language=python --threads=0 \
|
|
651
|
+
--codescanning-config=codeql-config.yml
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
**Note:** `--threads=0` auto-detects available cores. For shared machines, use explicit count.
|
|
655
|
+
|
|
656
|
+
---
|
|
657
|
+
|
|
658
|
+
## Quick Reference
|
|
659
|
+
|
|
660
|
+
| Language | Build System | Custom Command |
|
|
661
|
+
|----------|--------------|----------------|
|
|
662
|
+
| C/C++ | Make | `make clean && make -j$(nproc)` |
|
|
663
|
+
| C/C++ | CMake | `cmake -B build && cmake --build build` |
|
|
664
|
+
| Java | Gradle | `./gradlew clean build -x test` |
|
|
665
|
+
| Java | Maven | `mvn clean compile -DskipTests` |
|
|
666
|
+
| Rust | Cargo | `cargo clean && cargo build` |
|
|
667
|
+
| C# | .NET | `dotnet clean && dotnet build` |
|
|
668
|
+
|
|
669
|
+
See [language-details.md](../references/language-details.md) for more.
|