@elizaos/skills 2.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -0
- package/package.json +53 -0
- package/skills/1password/SKILL.md +70 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/apple-notes/SKILL.md +77 -0
- package/skills/apple-reminders/SKILL.md +96 -0
- package/skills/bear-notes/SKILL.md +107 -0
- package/skills/bird/SKILL.md +224 -0
- package/skills/blogwatcher/SKILL.md +69 -0
- package/skills/blucli/SKILL.md +47 -0
- package/skills/bluebubbles/SKILL.md +131 -0
- package/skills/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +203 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +284 -0
- package/skills/discord/SKILL.md +578 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/food-order/SKILL.md +48 -0
- package/skills/gemini/SKILL.md +43 -0
- package/skills/gifgrep/SKILL.md +79 -0
- package/skills/github/SKILL.md +77 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +245 -0
- package/skills/himalaya/SKILL.md +257 -0
- package/skills/himalaya/references/configuration.md +184 -0
- package/skills/himalaya/references/message-composition.md +199 -0
- package/skills/imsg/SKILL.md +74 -0
- package/skills/local-places/SERVER_README.md +101 -0
- package/skills/local-places/SKILL.md +102 -0
- package/skills/local-places/pyproject.toml +21 -0
- package/skills/local-places/src/local_places/__init__.py +2 -0
- package/skills/local-places/src/local_places/google_places.py +314 -0
- package/skills/local-places/src/local_places/main.py +65 -0
- package/skills/local-places/src/local_places/schemas.py +107 -0
- package/skills/mcporter/SKILL.md +61 -0
- package/skills/model-usage/SKILL.md +69 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +310 -0
- package/skills/nano-banana-pro/SKILL.md +58 -0
- package/skills/nano-banana-pro/scripts/generate_image.py +184 -0
- package/skills/nano-pdf/SKILL.md +38 -0
- package/skills/notion/SKILL.md +172 -0
- package/skills/obsidian/SKILL.md +81 -0
- package/skills/openai-image-gen/SKILL.md +89 -0
- package/skills/openai-image-gen/scripts/gen.py +240 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +52 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
- package/skills/openhue/SKILL.md +51 -0
- package/skills/oracle/SKILL.md +125 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +190 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/security-ask-questions-if-underspecified/.claude-plugin/plugin.json +10 -0
- package/skills/security-ask-questions-if-underspecified/README.md +24 -0
- package/skills/security-ask-questions-if-underspecified/skills/ask-questions-if-underspecified/SKILL.md +85 -0
- package/skills/security-audit-context-building/.claude-plugin/plugin.json +10 -0
- package/skills/security-audit-context-building/README.md +58 -0
- package/skills/security-audit-context-building/commands/audit-context.md +21 -0
- package/skills/security-audit-context-building/skills/audit-context-building/SKILL.md +297 -0
- package/skills/security-audit-context-building/skills/audit-context-building/resources/COMPLETENESS_CHECKLIST.md +47 -0
- package/skills/security-audit-context-building/skills/audit-context-building/resources/FUNCTION_MICRO_ANALYSIS_EXAMPLE.md +355 -0
- package/skills/security-audit-context-building/skills/audit-context-building/resources/OUTPUT_REQUIREMENTS.md +71 -0
- package/skills/security-building-secure-contracts/.claude-plugin/plugin.json +10 -0
- package/skills/security-building-secure-contracts/README.md +241 -0
- package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/SKILL.md +284 -0
- package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +405 -0
- package/skills/security-building-secure-contracts/skills/audit-prep-assistant/SKILL.md +409 -0
- package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/SKILL.md +329 -0
- package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +722 -0
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/SKILL.md +218 -0
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/ASSESSMENT_CRITERIA.md +355 -0
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/EXAMPLE_REPORT.md +248 -0
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/REPORT_FORMAT.md +33 -0
- package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/SKILL.md +334 -0
- package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +740 -0
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/SKILL.md +252 -0
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/ASSESSMENT_AREAS.md +329 -0
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/DELIVERABLES.md +118 -0
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/EXAMPLE_REPORT.md +298 -0
- package/skills/security-building-secure-contracts/skills/secure-workflow-guide/SKILL.md +161 -0
- package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/EXAMPLE_REPORT.md +279 -0
- package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/WORKFLOW_STEPS.md +132 -0
- package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/SKILL.md +389 -0
- package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +669 -0
- package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/SKILL.md +298 -0
- package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +791 -0
- package/skills/security-building-secure-contracts/skills/token-integration-analyzer/SKILL.md +362 -0
- package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/ASSESSMENT_CATEGORIES.md +571 -0
- package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/REPORT_TEMPLATES.md +141 -0
- package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/SKILL.md +388 -0
- package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +595 -0
- package/skills/security-burpsuite-project-parser/.claude-plugin/plugin.json +10 -0
- package/skills/security-burpsuite-project-parser/README.md +103 -0
- package/skills/security-burpsuite-project-parser/commands/burp-search.md +18 -0
- package/skills/security-burpsuite-project-parser/skills/SKILL.md +358 -0
- package/skills/security-burpsuite-project-parser/skills/scripts/burp-search.sh +99 -0
- package/skills/security-claude-in-chrome-troubleshooting/.claude-plugin/plugin.json +8 -0
- package/skills/security-claude-in-chrome-troubleshooting/README.md +31 -0
- package/skills/security-claude-in-chrome-troubleshooting/skills/claude-in-chrome-troubleshooting/SKILL.md +251 -0
- package/skills/security-constant-time-analysis/.claude-plugin/plugin.json +9 -0
- package/skills/security-constant-time-analysis/README.md +381 -0
- package/skills/security-constant-time-analysis/commands/ct-check.md +20 -0
- package/skills/security-constant-time-analysis/ct_analyzer/__init__.py +49 -0
- package/skills/security-constant-time-analysis/ct_analyzer/analyzer.py +1284 -0
- package/skills/security-constant-time-analysis/ct_analyzer/script_analyzers.py +3081 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/__init__.py +1 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_analyzer.py +1397 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/bn_excerpt.js +205 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_constant_time.c +181 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.c +74 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.go +78 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.rs +92 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.cs +174 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.java +161 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.kt +181 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.php +140 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.py +252 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.rb +188 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.swift +199 -0
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.ts +154 -0
- package/skills/security-constant-time-analysis/pyproject.toml +52 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/README.md +90 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/SKILL.md +219 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/compiled.md +129 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/javascript.md +136 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/kotlin.md +252 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/php.md +172 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/python.md +179 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/ruby.md +198 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/swift.md +288 -0
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/vm-compiled.md +354 -0
- package/skills/security-constant-time-analysis/uv.lock +8 -0
- package/skills/security-culture-index/.claude-plugin/plugin.json +8 -0
- package/skills/security-culture-index/README.md +79 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/SKILL.md +293 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/anti-patterns.md +255 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/conversation-starters.md +408 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/interview-trait-signals.md +253 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/motivators.md +158 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/patterns-archetypes.md +147 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/primary-traits.md +307 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/secondary-traits.md +228 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/references/team-composition.md +148 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/check_deps.py +108 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/__init__.py +20 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/constants.py +122 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/extract.py +187 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/models.py +16 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/opencv_extractor.py +520 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/extract_pdf.py +237 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/pyproject.toml +18 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/burnout-report.md +113 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/comparison-report.md +103 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/hiring-profile.md +127 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/individual-report.md +85 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/predicted-profile.md +165 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/team-report.md +109 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/analyze-team.md +188 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/coach-manager.md +267 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/compare-profiles.md +188 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/define-hiring-profile.md +220 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/detect-burnout.md +206 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/extract-from-pdf.md +121 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interpret-individual.md +183 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interview-debrief.md +234 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/mediate-conflict.md +306 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/plan-onboarding.md +322 -0
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/predict-from-interview.md +250 -0
- package/skills/security-differential-review/.claude-plugin/plugin.json +10 -0
- package/skills/security-differential-review/README.md +109 -0
- package/skills/security-differential-review/commands/diff-review.md +21 -0
- package/skills/security-differential-review/skills/differential-review/SKILL.md +220 -0
- package/skills/security-differential-review/skills/differential-review/adversarial.md +203 -0
- package/skills/security-differential-review/skills/differential-review/methodology.md +234 -0
- package/skills/security-differential-review/skills/differential-review/patterns.md +300 -0
- package/skills/security-differential-review/skills/differential-review/reporting.md +369 -0
- package/skills/security-dwarf-expert/.claude-plugin/plugin.json +10 -0
- package/skills/security-dwarf-expert/README.md +38 -0
- package/skills/security-dwarf-expert/skills/dwarf-expert/SKILL.md +93 -0
- package/skills/security-dwarf-expert/skills/dwarf-expert/reference/coding.md +31 -0
- package/skills/security-dwarf-expert/skills/dwarf-expert/reference/dwarfdump.md +50 -0
- package/skills/security-dwarf-expert/skills/dwarf-expert/reference/readelf.md +8 -0
- package/skills/security-entry-point-analyzer/.claude-plugin/plugin.json +10 -0
- package/skills/security-entry-point-analyzer/README.md +74 -0
- package/skills/security-entry-point-analyzer/commands/entry-points.md +18 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/SKILL.md +251 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/cosmwasm.md +182 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-aptos.md +107 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-sui.md +87 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solana.md +155 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solidity.md +135 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/ton.md +185 -0
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/vyper.md +141 -0
- package/skills/security-firebase-apk-scanner/.claude-plugin/plugin.json +10 -0
- package/skills/security-firebase-apk-scanner/README.md +85 -0
- package/skills/security-firebase-apk-scanner/commands/scan-apk.md +18 -0
- package/skills/security-firebase-apk-scanner/scanner.sh +1408 -0
- package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/SKILL.md +197 -0
- package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/references/vulnerabilities.md +803 -0
- package/skills/security-fix-review/.claude-plugin/plugin.json +13 -0
- package/skills/security-fix-review/README.md +118 -0
- package/skills/security-fix-review/commands/fix-review.md +24 -0
- package/skills/security-fix-review/skills/fix-review/SKILL.md +264 -0
- package/skills/security-fix-review/skills/fix-review/references/bug-detection.md +408 -0
- package/skills/security-fix-review/skills/fix-review/references/finding-matching.md +298 -0
- package/skills/security-fix-review/skills/fix-review/references/report-parsing.md +398 -0
- package/skills/security-insecure-defaults/.claude-plugin/plugin.json +10 -0
- package/skills/security-insecure-defaults/README.md +45 -0
- package/skills/security-insecure-defaults/skills/insecure-defaults/SKILL.md +117 -0
- package/skills/security-insecure-defaults/skills/insecure-defaults/references/examples.md +409 -0
- package/skills/security-modern-python/.claude-plugin/plugin.json +10 -0
- package/skills/security-modern-python/README.md +58 -0
- package/skills/security-modern-python/hooks/hooks.json +16 -0
- package/skills/security-modern-python/hooks/intercept-legacy-python.bats +388 -0
- package/skills/security-modern-python/hooks/intercept-legacy-python.sh +109 -0
- package/skills/security-modern-python/hooks/test_helper.bash +75 -0
- package/skills/security-modern-python/skills/modern-python/SKILL.md +333 -0
- package/skills/security-modern-python/skills/modern-python/references/dependabot.md +43 -0
- package/skills/security-modern-python/skills/modern-python/references/migration-checklist.md +141 -0
- package/skills/security-modern-python/skills/modern-python/references/pep723-scripts.md +259 -0
- package/skills/security-modern-python/skills/modern-python/references/prek.md +211 -0
- package/skills/security-modern-python/skills/modern-python/references/pyproject.md +254 -0
- package/skills/security-modern-python/skills/modern-python/references/ruff-config.md +240 -0
- package/skills/security-modern-python/skills/modern-python/references/security-setup.md +255 -0
- package/skills/security-modern-python/skills/modern-python/references/testing.md +284 -0
- package/skills/security-modern-python/skills/modern-python/references/uv-commands.md +200 -0
- package/skills/security-modern-python/skills/modern-python/templates/dependabot.yml +36 -0
- package/skills/security-modern-python/skills/modern-python/templates/pre-commit-config.yaml +66 -0
- package/skills/security-property-based-testing/.claude-plugin/plugin.json +9 -0
- package/skills/security-property-based-testing/README.md +47 -0
- package/skills/security-property-based-testing/skills/property-based-testing/README.md +88 -0
- package/skills/security-property-based-testing/skills/property-based-testing/SKILL.md +109 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/design.md +191 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/generating.md +200 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/libraries.md +130 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/refactoring.md +181 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/reviewing.md +209 -0
- package/skills/security-property-based-testing/skills/property-based-testing/references/strategies.md +124 -0
- package/skills/semgrep-rule-creator/.claude-plugin/plugin.json +8 -0
- package/skills/semgrep-rule-creator/README.md +43 -0
- package/skills/semgrep-rule-creator/commands/semgrep-rule.md +26 -0
- package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/SKILL.md +168 -0
- package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/quick-reference.md +203 -0
- package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/workflow.md +240 -0
- package/skills/semgrep-rule-variant-creator/.claude-plugin/plugin.json +9 -0
- package/skills/semgrep-rule-variant-creator/README.md +86 -0
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/SKILL.md +205 -0
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/applicability-analysis.md +250 -0
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/language-syntax-guide.md +324 -0
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/workflow.md +518 -0
- package/skills/session-logs/SKILL.md +115 -0
- package/skills/sharp-edges/.claude-plugin/plugin.json +10 -0
- package/skills/sharp-edges/README.md +48 -0
- package/skills/sharp-edges/skills/sharp-edges/SKILL.md +292 -0
- package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +252 -0
- package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +274 -0
- package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +333 -0
- package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +190 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +205 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +285 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +270 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +263 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +269 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +265 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +245 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +274 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +273 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +272 -0
- package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +287 -0
- package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +588 -0
- package/skills/sherpa-onnx-tts/SKILL.md +103 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +370 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/scripts/init_skill.py +378 -0
- package/skills/skill-creator/scripts/package_skill.py +111 -0
- package/skills/skill-creator/scripts/quick_validate.py +101 -0
- package/skills/slack/SKILL.md +144 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +46 -0
- package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +10 -0
- package/skills/spec-to-code-compliance/README.md +67 -0
- package/skills/spec-to-code-compliance/commands/spec-compliance.md +22 -0
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +349 -0
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +69 -0
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +417 -0
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +105 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/static-analysis/.claude-plugin/plugin.json +8 -0
- package/skills/static-analysis/README.md +59 -0
- package/skills/static-analysis/skills/codeql/SKILL.md +315 -0
- package/skills/static-analysis/skills/sarif-parsing/SKILL.md +479 -0
- package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +162 -0
- package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +331 -0
- package/skills/static-analysis/skills/semgrep/SKILL.md +337 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/testing-handbook-skills/.claude-plugin/plugin.json +8 -0
- package/skills/testing-handbook-skills/README.md +241 -0
- package/skills/testing-handbook-skills/scripts/pyproject.toml +8 -0
- package/skills/testing-handbook-skills/scripts/validate-skills.py +657 -0
- package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +341 -0
- package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +640 -0
- package/skills/testing-handbook-skills/skills/atheris/SKILL.md +515 -0
- package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +454 -0
- package/skills/testing-handbook-skills/skills/codeql/SKILL.md +549 -0
- package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +507 -0
- package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +607 -0
- package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +297 -0
- package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +426 -0
- package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +614 -0
- package/skills/testing-handbook-skills/skills/libafl/SKILL.md +625 -0
- package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +795 -0
- package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +426 -0
- package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +443 -0
- package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +601 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +372 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +280 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +452 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +504 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +454 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +527 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +366 -0
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +482 -0
- package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +533 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +135 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +95 -0
- package/skills/variant-analysis/.claude-plugin/plugin.json +8 -0
- package/skills/variant-analysis/README.md +41 -0
- package/skills/variant-analysis/commands/variants.md +23 -0
- package/skills/variant-analysis/skills/variant-analysis/METHODOLOGY.md +327 -0
- package/skills/variant-analysis/skills/variant-analysis/SKILL.md +142 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/cpp.ql +119 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/go.ql +69 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/java.ql +71 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/javascript.ql +63 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/python.ql +80 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/cpp.yaml +98 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/go.yaml +63 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/java.yaml +61 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/javascript.yaml +60 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/python.yaml +72 -0
- package/skills/variant-analysis/skills/variant-analysis/resources/variant-report-template.md +75 -0
- package/skills/video-frames/SKILL.md +46 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/voice-call/SKILL.md +45 -0
- package/skills/wacli/SKILL.md +72 -0
- package/skills/weather/SKILL.md +54 -0
- package/skills/yara-authoring/.claude-plugin/plugin.json +9 -0
- package/skills/yara-authoring/README.md +131 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/SKILL.md +645 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Mac_ProtonRAT_Jan25.yar +99 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_NPM_SupplyChain_Jan25.yar +170 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Win_Remcos_Jan25.yar +103 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_CRX_SuspiciousPermissions.yar +134 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_JS_Obfuscation_Jan25.yar +185 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/crx-module.md +214 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/dex-module.md +383 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/performance.md +333 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/strings.md +433 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/style-guide.md +257 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/references/testing.md +399 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/scripts/atom_analyzer.py +526 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/scripts/pyproject.toml +25 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/scripts/yara_lint.py +631 -0
- package/skills/yara-authoring/skills/yara-rule-authoring/workflows/rule-development.md +493 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# Ruff Configuration Reference
|
|
2
|
+
|
|
3
|
+
Ruff is an extremely fast Python linter and formatter written in Rust. It replaces flake8, black, isort, pyupgrade, pydocstyle, and many other tools.
|
|
4
|
+
|
|
5
|
+
## Basic Setup
|
|
6
|
+
|
|
7
|
+
Add to `pyproject.toml`:
|
|
8
|
+
|
|
9
|
+
```toml
|
|
10
|
+
[tool.ruff]
|
|
11
|
+
line-length = 100
|
|
12
|
+
target-version = "py311"
|
|
13
|
+
src = ["src"]
|
|
14
|
+
|
|
15
|
+
[tool.ruff.lint]
|
|
16
|
+
select = ["ALL"]
|
|
17
|
+
ignore = [
|
|
18
|
+
"D", # pydocstyle
|
|
19
|
+
"COM812", # trailing comma (formatter conflict)
|
|
20
|
+
"ISC001", # string concat (formatter conflict)
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
[tool.ruff.format]
|
|
24
|
+
quote-style = "double"
|
|
25
|
+
indent-style = "space"
|
|
26
|
+
docstring-code-format = true
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Running Ruff
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Lint
|
|
33
|
+
uv run ruff check .
|
|
34
|
+
uv run ruff check --fix . # Auto-fix
|
|
35
|
+
uv run ruff check --fix --unsafe-fixes . # Including unsafe fixes
|
|
36
|
+
|
|
37
|
+
# Format
|
|
38
|
+
uv run ruff format .
|
|
39
|
+
uv run ruff format --check . # Check only
|
|
40
|
+
uv run ruff format --diff . # Show diff
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Rule Categories
|
|
44
|
+
|
|
45
|
+
Using `select = ["ALL"]` enables all rules. Common categories:
|
|
46
|
+
|
|
47
|
+
| Code | Category | Description |
|
|
48
|
+
|------|----------|-------------|
|
|
49
|
+
| `E`, `W` | pycodestyle | Style errors and warnings |
|
|
50
|
+
| `F` | Pyflakes | Logical errors |
|
|
51
|
+
| `I` | isort | Import sorting |
|
|
52
|
+
| `N` | pep8-naming | Naming conventions |
|
|
53
|
+
| `D` | pydocstyle | Docstring conventions |
|
|
54
|
+
| `UP` | pyupgrade | Python upgrade suggestions |
|
|
55
|
+
| `B` | flake8-bugbear | Bug detection |
|
|
56
|
+
| `S` | flake8-bandit | Security issues |
|
|
57
|
+
| `A` | flake8-builtins | Built-in shadowing |
|
|
58
|
+
| `C4` | flake8-comprehensions | Comprehension improvements |
|
|
59
|
+
| `DTZ` | flake8-datetimez | Timezone-aware datetime |
|
|
60
|
+
| `T10` | flake8-debugger | Debugger statements |
|
|
61
|
+
| `T20` | flake8-print | Print statements |
|
|
62
|
+
| `PT` | flake8-pytest-style | Pytest style |
|
|
63
|
+
| `Q` | flake8-quotes | Quote consistency |
|
|
64
|
+
| `SIM` | flake8-simplify | Simplification suggestions |
|
|
65
|
+
| `TID` | flake8-tidy-imports | Import hygiene |
|
|
66
|
+
| `ARG` | flake8-unused-arguments | Unused arguments |
|
|
67
|
+
| `ERA` | eradicate | Commented-out code |
|
|
68
|
+
| `PL` | Pylint | Pylint rules |
|
|
69
|
+
| `RUF` | Ruff-specific | Ruff's own rules |
|
|
70
|
+
| `ANN` | flake8-annotations | Type annotation checks |
|
|
71
|
+
|
|
72
|
+
## Recommended Ignores
|
|
73
|
+
|
|
74
|
+
### Always Ignore (Formatter Conflicts)
|
|
75
|
+
|
|
76
|
+
```toml
|
|
77
|
+
ignore = [
|
|
78
|
+
"COM812", # missing-trailing-comma
|
|
79
|
+
"ISC001", # single-line-implicit-string-concatenation
|
|
80
|
+
]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Common Ignores
|
|
84
|
+
|
|
85
|
+
```toml
|
|
86
|
+
ignore = [
|
|
87
|
+
"D", # Docstrings (enable selectively)
|
|
88
|
+
"ANN401", # Dynamically typed Any
|
|
89
|
+
"TD002", # Missing TODO author
|
|
90
|
+
"TD003", # Missing TODO link
|
|
91
|
+
"FIX002", # Line contains TODO
|
|
92
|
+
]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Per-File Ignores
|
|
96
|
+
|
|
97
|
+
```toml
|
|
98
|
+
[tool.ruff.lint.per-file-ignores]
|
|
99
|
+
# Tests
|
|
100
|
+
"tests/**/*.py" = [
|
|
101
|
+
"S101", # assert usage
|
|
102
|
+
"PLR2004", # magic values
|
|
103
|
+
"ANN", # type annotations
|
|
104
|
+
"D", # docstrings
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
# Scripts
|
|
108
|
+
"scripts/**/*.py" = [
|
|
109
|
+
"T20", # print statements
|
|
110
|
+
"INP001", # implicit namespace package
|
|
111
|
+
]
|
|
112
|
+
|
|
113
|
+
# __init__.py
|
|
114
|
+
"__init__.py" = [
|
|
115
|
+
"F401", # unused imports (re-exports)
|
|
116
|
+
]
|
|
117
|
+
|
|
118
|
+
# Migrations
|
|
119
|
+
"**/migrations/*.py" = [
|
|
120
|
+
"ALL", # ignore all
|
|
121
|
+
]
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Import Sorting (isort)
|
|
125
|
+
|
|
126
|
+
```toml
|
|
127
|
+
[tool.ruff.lint.isort]
|
|
128
|
+
force-single-line = false
|
|
129
|
+
known-first-party = ["myproject"]
|
|
130
|
+
required-imports = ["from __future__ import annotations"]
|
|
131
|
+
section-order = [
|
|
132
|
+
"future",
|
|
133
|
+
"standard-library",
|
|
134
|
+
"third-party",
|
|
135
|
+
"first-party",
|
|
136
|
+
"local-folder",
|
|
137
|
+
]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Docstring Style (pydocstyle)
|
|
141
|
+
|
|
142
|
+
If enabling docstring checks:
|
|
143
|
+
|
|
144
|
+
```toml
|
|
145
|
+
[tool.ruff.lint]
|
|
146
|
+
select = ["D"]
|
|
147
|
+
ignore = [
|
|
148
|
+
"D100", # Missing module docstring
|
|
149
|
+
"D104", # Missing public package docstring
|
|
150
|
+
"D203", # 1 blank line before class docstring (conflicts D211)
|
|
151
|
+
"D213", # Multi-line summary second line (conflicts D212)
|
|
152
|
+
]
|
|
153
|
+
|
|
154
|
+
[tool.ruff.lint.pydocstyle]
|
|
155
|
+
convention = "google" # or "numpy", "pep257"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Formatter Configuration
|
|
159
|
+
|
|
160
|
+
```toml
|
|
161
|
+
[tool.ruff.format]
|
|
162
|
+
quote-style = "double" # or "single"
|
|
163
|
+
indent-style = "space" # or "tab"
|
|
164
|
+
skip-magic-trailing-comma = false
|
|
165
|
+
line-ending = "auto" # or "lf", "crlf"
|
|
166
|
+
docstring-code-format = true
|
|
167
|
+
docstring-code-line-length = 80
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Type Checking
|
|
171
|
+
|
|
172
|
+
Ruff does NOT do type checking. Use **ty** (from Astral, the same team behind ruff and uv):
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# Add ty to dev dependencies
|
|
176
|
+
uv add --group dev ty
|
|
177
|
+
|
|
178
|
+
# Run type checking
|
|
179
|
+
uv run ty check src/
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
ty is significantly faster than mypy or pyright and integrates well with the modern Python toolchain.
|
|
183
|
+
|
|
184
|
+
## CI Configuration
|
|
185
|
+
|
|
186
|
+
```yaml
|
|
187
|
+
# GitHub Actions
|
|
188
|
+
- name: Lint
|
|
189
|
+
run: uv run ruff check --output-format=github .
|
|
190
|
+
|
|
191
|
+
- name: Format check
|
|
192
|
+
run: uv run ruff format --check .
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Migration from Other Tools
|
|
196
|
+
|
|
197
|
+
### From flake8
|
|
198
|
+
|
|
199
|
+
Ruff covers most flake8 plugins. Remove:
|
|
200
|
+
- flake8
|
|
201
|
+
- flake8-* plugins
|
|
202
|
+
- .flake8 config file
|
|
203
|
+
|
|
204
|
+
### From black
|
|
205
|
+
|
|
206
|
+
Remove black and use `ruff format`. Remove:
|
|
207
|
+
- black
|
|
208
|
+
- [tool.black] config
|
|
209
|
+
|
|
210
|
+
### From isort
|
|
211
|
+
|
|
212
|
+
Ruff includes isort. Remove:
|
|
213
|
+
- isort
|
|
214
|
+
- [tool.isort] config
|
|
215
|
+
|
|
216
|
+
Use `[tool.ruff.lint.isort]` for isort settings.
|
|
217
|
+
|
|
218
|
+
## Code Modernization
|
|
219
|
+
|
|
220
|
+
Run pyupgrade rules to modernize syntax to your target Python version:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
uv run ruff check --select=UP --fix . # Auto-fix upgrades
|
|
224
|
+
uv run ruff check --select=UP . # Preview only
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Common modernizations include:
|
|
228
|
+
- `typing.Optional[X]` → `X | None`
|
|
229
|
+
- `typing.List[X]` → `list[X]`
|
|
230
|
+
- `super(ClassName, self)` → `super()`
|
|
231
|
+
- Format strings and other syntax upgrades
|
|
232
|
+
|
|
233
|
+
## Line Length Migration
|
|
234
|
+
|
|
235
|
+
If migrating from 120 to 100 char lines, expect manual fixes.
|
|
236
|
+
For less churn during initial migration, keep existing:
|
|
237
|
+
|
|
238
|
+
```toml
|
|
239
|
+
line-length = 120 # Match existing; tighten later
|
|
240
|
+
```
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Security Setup
|
|
2
|
+
|
|
3
|
+
Security tooling for Python projects: pre-commit hooks, CI auditing, and dependency scanning.
|
|
4
|
+
|
|
5
|
+
## Tool Installation
|
|
6
|
+
|
|
7
|
+
Install these tools before running the quick setup commands below.
|
|
8
|
+
|
|
9
|
+
### prek (pre-commit runner)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Homebrew (recommended)
|
|
13
|
+
brew install prek
|
|
14
|
+
|
|
15
|
+
# Cargo
|
|
16
|
+
cargo install prek
|
|
17
|
+
|
|
18
|
+
# Standalone installer
|
|
19
|
+
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/latest/download/prek-installer.sh | sh
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Security tools
|
|
23
|
+
|
|
24
|
+
Pre-commit hooks auto-install tools when run via prek. For manual CLI usage:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Homebrew (macOS/Linux)
|
|
28
|
+
brew install actionlint shellcheck
|
|
29
|
+
|
|
30
|
+
# Python tools via uv
|
|
31
|
+
uv tool install detect-secrets
|
|
32
|
+
uv tool install zizmor
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Alternative installation methods:
|
|
36
|
+
|
|
37
|
+
- **actionlint**: `go install github.com/rhysd/actionlint/cmd/actionlint@latest`
|
|
38
|
+
- **zizmor**: `cargo install zizmor`
|
|
39
|
+
- **detect-secrets**: `pipx install detect-secrets`
|
|
40
|
+
|
|
41
|
+
## Quick Setup
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# 1. Install security hooks
|
|
45
|
+
prek install
|
|
46
|
+
|
|
47
|
+
# 2. Initialize secrets baseline
|
|
48
|
+
detect-secrets scan > .secrets.baseline
|
|
49
|
+
|
|
50
|
+
# 3. Audit existing workflows
|
|
51
|
+
actionlint .github/workflows/
|
|
52
|
+
zizmor .github/workflows/
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
See [templates/pre-commit-config.yaml](../templates/pre-commit-config.yaml) for a complete hook configuration.
|
|
56
|
+
|
|
57
|
+
## Tool Matrix
|
|
58
|
+
|
|
59
|
+
| Tool | Runs | Catches |
|
|
60
|
+
|------|------|---------|
|
|
61
|
+
| **shellcheck** | pre-commit | Shell script bugs, quoting issues |
|
|
62
|
+
| **detect-secrets** | pre-commit | Leaked API keys, passwords, tokens |
|
|
63
|
+
| **actionlint** | pre-commit, CI | Workflow syntax errors, invalid refs |
|
|
64
|
+
| **zizmor** | pre-commit, CI | Workflow security issues, excessive permissions |
|
|
65
|
+
| **pip-audit** | CI, manual | Known CVEs in dependencies |
|
|
66
|
+
| **Dependabot** | scheduled | Outdated dependencies with vulnerabilities |
|
|
67
|
+
|
|
68
|
+
## Pre-commit Hooks
|
|
69
|
+
|
|
70
|
+
These run locally before each commit via prek.
|
|
71
|
+
|
|
72
|
+
### shellcheck - Shell Script Linting
|
|
73
|
+
|
|
74
|
+
Catches common shell scripting errors: unquoted variables, undefined variables, deprecated syntax.
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
# In .pre-commit-config.yaml
|
|
78
|
+
- repo: https://github.com/koalaman/shellcheck-precommit
|
|
79
|
+
rev: <latest> # https://github.com/koalaman/shellcheck-precommit/tags
|
|
80
|
+
hooks:
|
|
81
|
+
- id: shellcheck
|
|
82
|
+
args: [--severity=error] # Start strict, adjust if needed
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Common findings:
|
|
86
|
+
- `SC2086`: Unquoted variable expansion (word splitting risk)
|
|
87
|
+
- `SC2046`: Unquoted command substitution
|
|
88
|
+
- `SC2155`: Declare and assign separately to avoid masking return values
|
|
89
|
+
|
|
90
|
+
### detect-secrets - Secret Detection
|
|
91
|
+
|
|
92
|
+
Prevents accidentally committing API keys, passwords, and tokens.
|
|
93
|
+
|
|
94
|
+
```yaml
|
|
95
|
+
- repo: https://github.com/Yelp/detect-secrets
|
|
96
|
+
rev: <latest> # https://github.com/Yelp/detect-secrets/releases
|
|
97
|
+
hooks:
|
|
98
|
+
- id: detect-secrets
|
|
99
|
+
args: [--baseline, .secrets.baseline]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**First-time setup:**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Generate baseline of existing "secrets" (false positives to ignore)
|
|
106
|
+
detect-secrets scan > .secrets.baseline
|
|
107
|
+
|
|
108
|
+
# Review the baseline - ensure no real secrets
|
|
109
|
+
cat .secrets.baseline
|
|
110
|
+
|
|
111
|
+
# Commit the baseline
|
|
112
|
+
git add .secrets.baseline
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**When hook fails:**
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# View the finding (non-interactive)
|
|
119
|
+
detect-secrets audit --report .secrets.baseline
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
If false positive: update baseline with `detect-secrets scan --update .secrets.baseline`
|
|
123
|
+
If real secret: remove from code and rotate the credential.
|
|
124
|
+
|
|
125
|
+
## CI Security
|
|
126
|
+
|
|
127
|
+
These run in GitHub Actions on every push/PR.
|
|
128
|
+
|
|
129
|
+
### actionlint - Workflow Syntax Validation
|
|
130
|
+
|
|
131
|
+
Catches syntax errors, invalid action references, and type mismatches before they fail in CI.
|
|
132
|
+
|
|
133
|
+
```yaml
|
|
134
|
+
- repo: https://github.com/rhysd/actionlint
|
|
135
|
+
rev: <latest> # https://github.com/rhysd/actionlint/releases
|
|
136
|
+
hooks:
|
|
137
|
+
- id: actionlint
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Run manually:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
actionlint .github/workflows/
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Common findings:
|
|
147
|
+
- Invalid event triggers
|
|
148
|
+
- Undefined workflow inputs
|
|
149
|
+
- Shell syntax errors in `run:` blocks
|
|
150
|
+
- Invalid action version references
|
|
151
|
+
|
|
152
|
+
### zizmor - Workflow Security Audit
|
|
153
|
+
|
|
154
|
+
Finds security issues in GitHub Actions workflows: excessive permissions, injection risks, untrusted inputs.
|
|
155
|
+
|
|
156
|
+
```yaml
|
|
157
|
+
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
158
|
+
rev: <latest> # https://github.com/zizmorcore/zizmor-pre-commit/releases
|
|
159
|
+
hooks:
|
|
160
|
+
- id: zizmor
|
|
161
|
+
args: [--persona=regular, --min-severity=medium, --min-confidence=medium]
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Run manually:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
zizmor .github/workflows/
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Fixing `excessive-permissions`:**
|
|
171
|
+
|
|
172
|
+
By default, workflows get `write` access to everything. Lock down with explicit permissions:
|
|
173
|
+
|
|
174
|
+
```yaml
|
|
175
|
+
# Read-only workflows (lint, test, audit)
|
|
176
|
+
permissions:
|
|
177
|
+
contents: read
|
|
178
|
+
|
|
179
|
+
# Workflows that push or create releases
|
|
180
|
+
permissions:
|
|
181
|
+
contents: write
|
|
182
|
+
|
|
183
|
+
# Workflows that comment on PRs
|
|
184
|
+
permissions:
|
|
185
|
+
contents: read
|
|
186
|
+
pull-requests: write
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Common findings:
|
|
190
|
+
- `excessive-permissions`: No `permissions:` block
|
|
191
|
+
- `template-injection`: Using `${{ github.event.* }}` unsafely
|
|
192
|
+
- `unpinned-action`: Actions not pinned to SHA
|
|
193
|
+
- `dangerous-triggers`: `pull_request_target` with checkout
|
|
194
|
+
|
|
195
|
+
## Dependency Security
|
|
196
|
+
|
|
197
|
+
### pip-audit - Vulnerability Scanning
|
|
198
|
+
|
|
199
|
+
Checks installed packages against the Python Advisory Database (PyPA) for known CVEs.
|
|
200
|
+
|
|
201
|
+
**Setup:**
|
|
202
|
+
|
|
203
|
+
```toml
|
|
204
|
+
# pyproject.toml
|
|
205
|
+
[dependency-groups]
|
|
206
|
+
audit = ["pip-audit"]
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Usage:**
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# Audit current environment
|
|
213
|
+
uv run pip-audit
|
|
214
|
+
|
|
215
|
+
# Audit without installing (faster for CI)
|
|
216
|
+
uv run pip-audit .
|
|
217
|
+
|
|
218
|
+
# Fix automatically (upgrades vulnerable packages)
|
|
219
|
+
uv run pip-audit --fix
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**In CI:**
|
|
223
|
+
|
|
224
|
+
```yaml
|
|
225
|
+
- name: Security audit
|
|
226
|
+
run: uv run pip-audit .
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**When vulnerabilities found:**
|
|
230
|
+
|
|
231
|
+
1. Check if the CVE affects your usage (many are in unused code paths)
|
|
232
|
+
2. Update the package: `uv add <package>@latest`
|
|
233
|
+
3. If no fix available: evaluate risk, consider alternatives, or add to ignore list
|
|
234
|
+
|
|
235
|
+
### Dependabot - Automated Updates
|
|
236
|
+
|
|
237
|
+
Automatically creates PRs for outdated dependencies.
|
|
238
|
+
|
|
239
|
+
Copy [templates/dependabot.yml](../templates/dependabot.yml) to `.github/dependabot.yml`.
|
|
240
|
+
|
|
241
|
+
**How pip-audit and Dependabot work together:**
|
|
242
|
+
|
|
243
|
+
| Tool | Trigger | Scope |
|
|
244
|
+
|------|---------|-------|
|
|
245
|
+
| pip-audit | Every CI run | Known CVEs in current deps |
|
|
246
|
+
| Dependabot | Weekly schedule | All outdated deps, security + non-security |
|
|
247
|
+
|
|
248
|
+
- **pip-audit** catches: "You have a vulnerable version right now"
|
|
249
|
+
- **Dependabot** prevents: "You'll fall behind and accumulate vulnerabilities"
|
|
250
|
+
|
|
251
|
+
The 7-day cooldown protects against attackers publishing malicious updates and hoping for quick adoption before detection.
|
|
252
|
+
|
|
253
|
+
See [dependabot.md](./dependabot.md) for advanced configuration.
|
|
254
|
+
|
|
255
|
+
See [prek.md](./prek.md) for complete pre-commit hook configuration including security hooks.
|