@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,259 @@
|
|
|
1
|
+
# PEP 723: Inline Script Metadata
|
|
2
|
+
|
|
3
|
+
PEP 723 allows embedding dependency metadata directly in Python scripts, eliminating the need for separate `requirements.txt` or `pyproject.toml` files for simple scripts.
|
|
4
|
+
|
|
5
|
+
## When to Use PEP 723
|
|
6
|
+
|
|
7
|
+
**Use for:**
|
|
8
|
+
- Single-file scripts with external dependencies
|
|
9
|
+
- Quick automation scripts
|
|
10
|
+
- Utility scripts shared between projects
|
|
11
|
+
- Scripts that need to be self-contained
|
|
12
|
+
|
|
13
|
+
**Don't use for:**
|
|
14
|
+
- Multi-file projects (use `pyproject.toml`)
|
|
15
|
+
- Reusable packages/libraries
|
|
16
|
+
- Projects requiring complex configuration
|
|
17
|
+
|
|
18
|
+
## Basic Syntax
|
|
19
|
+
|
|
20
|
+
The metadata block uses TOML format embedded in a special comment:
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
#!/usr/bin/env -S uv run --script
|
|
24
|
+
# /// script
|
|
25
|
+
# requires-python = ">=3.11"
|
|
26
|
+
# dependencies = [
|
|
27
|
+
# "requests",
|
|
28
|
+
# "rich",
|
|
29
|
+
# ]
|
|
30
|
+
# ///
|
|
31
|
+
|
|
32
|
+
import requests
|
|
33
|
+
from rich import print
|
|
34
|
+
|
|
35
|
+
response = requests.get("https://api.example.com/data")
|
|
36
|
+
print(response.json())
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Running Scripts
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# With uv (recommended)
|
|
43
|
+
uv run script.py
|
|
44
|
+
|
|
45
|
+
# Script handles its own dependencies automatically
|
|
46
|
+
./script.py # If shebang is set
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Metadata Fields
|
|
50
|
+
|
|
51
|
+
### Required Python Version
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
# /// script
|
|
55
|
+
# requires-python = ">=3.11"
|
|
56
|
+
# ///
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Dependencies
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
# /// script
|
|
63
|
+
# dependencies = [
|
|
64
|
+
# "requests",
|
|
65
|
+
# "click",
|
|
66
|
+
# "rich",
|
|
67
|
+
# ]
|
|
68
|
+
# ///
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Private Package Index
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
# /// script
|
|
75
|
+
# dependencies = ["httpx"]
|
|
76
|
+
#
|
|
77
|
+
# [tool.uv]
|
|
78
|
+
# extra-index-url = ["https://pypi.company.com/simple/"]
|
|
79
|
+
# ///
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Complete Example
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
#!/usr/bin/env -S uv run --script
|
|
86
|
+
# /// script
|
|
87
|
+
# requires-python = ">=3.11"
|
|
88
|
+
# dependencies = [
|
|
89
|
+
# "httpx",
|
|
90
|
+
# "rich",
|
|
91
|
+
# "typer",
|
|
92
|
+
# ]
|
|
93
|
+
# ///
|
|
94
|
+
|
|
95
|
+
"""Fetch and display API data with nice formatting."""
|
|
96
|
+
|
|
97
|
+
import httpx
|
|
98
|
+
import typer
|
|
99
|
+
from rich.console import Console
|
|
100
|
+
from rich.table import Table
|
|
101
|
+
|
|
102
|
+
console = Console()
|
|
103
|
+
app = typer.Typer()
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@app.command()
|
|
107
|
+
def fetch(url: str, format: str = "table"):
|
|
108
|
+
"""Fetch data from URL and display it."""
|
|
109
|
+
with httpx.Client() as client:
|
|
110
|
+
response = client.get(url)
|
|
111
|
+
response.raise_for_status()
|
|
112
|
+
data = response.json()
|
|
113
|
+
|
|
114
|
+
if format == "table" and isinstance(data, list):
|
|
115
|
+
table = Table()
|
|
116
|
+
if data:
|
|
117
|
+
for key in data[0].keys():
|
|
118
|
+
table.add_column(key)
|
|
119
|
+
for item in data:
|
|
120
|
+
table.add_row(*[str(v) for v in item.values()])
|
|
121
|
+
console.print(table)
|
|
122
|
+
else:
|
|
123
|
+
console.print_json(data=data)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
if __name__ == "__main__":
|
|
127
|
+
app()
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Creating Scripts with uv
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# Create new script with metadata
|
|
134
|
+
uv init --script myscript.py
|
|
135
|
+
|
|
136
|
+
# Add dependency to existing script
|
|
137
|
+
uv add --script myscript.py requests
|
|
138
|
+
|
|
139
|
+
# Remove dependency from script
|
|
140
|
+
uv remove --script myscript.py requests
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Shebang Options
|
|
144
|
+
|
|
145
|
+
### Basic (requires uv in PATH)
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
#!/usr/bin/env -S uv run --script
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### With specific Python version
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
#!/usr/bin/env -S uv run --python 3.12 --script
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Quiet mode (suppress uv output)
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
#!/usr/bin/env -S uv run --quiet --script
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Examples by Use Case
|
|
164
|
+
|
|
165
|
+
### Data Processing Script
|
|
166
|
+
|
|
167
|
+
```python
|
|
168
|
+
#!/usr/bin/env -S uv run --script
|
|
169
|
+
# /// script
|
|
170
|
+
# requires-python = ">=3.11"
|
|
171
|
+
# dependencies = ["pandas", "openpyxl"]
|
|
172
|
+
# ///
|
|
173
|
+
|
|
174
|
+
import pandas as pd
|
|
175
|
+
import sys
|
|
176
|
+
|
|
177
|
+
df = pd.read_excel(sys.argv[1])
|
|
178
|
+
print(df.describe())
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Web Scraping Script
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
#!/usr/bin/env -S uv run --script
|
|
185
|
+
# /// script
|
|
186
|
+
# requires-python = ">=3.11"
|
|
187
|
+
# dependencies = ["httpx", "beautifulsoup4", "lxml"]
|
|
188
|
+
# ///
|
|
189
|
+
|
|
190
|
+
import httpx
|
|
191
|
+
from bs4 import BeautifulSoup
|
|
192
|
+
|
|
193
|
+
response = httpx.get("https://example.com")
|
|
194
|
+
soup = BeautifulSoup(response.text, "lxml")
|
|
195
|
+
print(soup.title.string)
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### CLI Tool Script
|
|
199
|
+
|
|
200
|
+
```python
|
|
201
|
+
#!/usr/bin/env -S uv run --script
|
|
202
|
+
# /// script
|
|
203
|
+
# requires-python = ">=3.11"
|
|
204
|
+
# dependencies = ["typer", "rich"]
|
|
205
|
+
# ///
|
|
206
|
+
|
|
207
|
+
import typer
|
|
208
|
+
from rich import print
|
|
209
|
+
|
|
210
|
+
app = typer.Typer()
|
|
211
|
+
|
|
212
|
+
@app.command()
|
|
213
|
+
def greet(name: str):
|
|
214
|
+
print(f"[green]Hello, {name}![/green]")
|
|
215
|
+
|
|
216
|
+
if __name__ == "__main__":
|
|
217
|
+
app()
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Async Script
|
|
221
|
+
|
|
222
|
+
```python
|
|
223
|
+
#!/usr/bin/env -S uv run --script
|
|
224
|
+
# /// script
|
|
225
|
+
# requires-python = ">=3.11"
|
|
226
|
+
# dependencies = ["httpx"]
|
|
227
|
+
# ///
|
|
228
|
+
|
|
229
|
+
import asyncio
|
|
230
|
+
import httpx
|
|
231
|
+
|
|
232
|
+
async def main():
|
|
233
|
+
async with httpx.AsyncClient() as client:
|
|
234
|
+
urls = ["https://api1.example.com", "https://api2.example.com"]
|
|
235
|
+
tasks = [client.get(url) for url in urls]
|
|
236
|
+
responses = await asyncio.gather(*tasks)
|
|
237
|
+
for r in responses:
|
|
238
|
+
print(r.status_code)
|
|
239
|
+
|
|
240
|
+
asyncio.run(main())
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Best Practices
|
|
244
|
+
|
|
245
|
+
1. **Always specify `requires-python`** - Ensures compatibility
|
|
246
|
+
2. **Pin major versions for Python** - Use `>=3.11` not `==3.11`
|
|
247
|
+
3. **Omit version constraints for dependencies** - Use `uv add --script` to add dependencies; let uv select versions
|
|
248
|
+
4. **Keep scripts focused** - One script, one purpose
|
|
249
|
+
5. **Add docstring** - Document what the script does
|
|
250
|
+
6. **Use type hints** - Improves readability and catches errors
|
|
251
|
+
|
|
252
|
+
## Limitations
|
|
253
|
+
|
|
254
|
+
- No support for dependency groups
|
|
255
|
+
- No support for editable installs
|
|
256
|
+
- No support for local dependencies (use relative imports)
|
|
257
|
+
- No lockfile (versions may vary between runs)
|
|
258
|
+
|
|
259
|
+
For projects needing these features, use a full `pyproject.toml` setup instead.
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# prek: Fast Pre-commit Hooks
|
|
2
|
+
|
|
3
|
+
[prek](https://github.com/j178/prek) is a fast, Rust-native drop-in replacement for pre-commit. It uses the same `.pre-commit-config.yaml` format and is fully compatible with existing configurations.
|
|
4
|
+
|
|
5
|
+
## Why prek over pre-commit?
|
|
6
|
+
|
|
7
|
+
| Feature | prek | pre-commit |
|
|
8
|
+
|---------|------|------------|
|
|
9
|
+
| Speed | ~7x faster hook installation | Slower |
|
|
10
|
+
| Dependencies | Single binary, no runtime needed | Requires Python |
|
|
11
|
+
| Disk usage | Shared toolchains between hooks | Isolated environments |
|
|
12
|
+
| Parallelism | Parallel repo cloning and hook execution | Sequential |
|
|
13
|
+
| Python management | Uses uv automatically | Manual Python setup |
|
|
14
|
+
| Monorepo support | Built-in workspace mode | Not supported |
|
|
15
|
+
|
|
16
|
+
**Already using prek:** CPython, Apache Airflow, FastAPI, Ruff, Home Assistant, and [many more](https://github.com/j178/prek#who-is-using-prek).
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
See [security-setup.md](./security-setup.md#tool-installation) for installation options.
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
### For Existing pre-commit Users
|
|
25
|
+
|
|
26
|
+
prek is fully compatible with `.pre-commit-config.yaml`. Just replace commands:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Instead of: pre-commit install
|
|
30
|
+
prek install
|
|
31
|
+
|
|
32
|
+
# Instead of: pre-commit run --all-files
|
|
33
|
+
prek run --all-files
|
|
34
|
+
|
|
35
|
+
# Instead of: pre-commit autoupdate
|
|
36
|
+
prek auto-update
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### New Setup
|
|
40
|
+
|
|
41
|
+
1. Create `.pre-commit-config.yaml`:
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
repos:
|
|
45
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
46
|
+
rev: <latest> # https://github.com/astral-sh/ruff-pre-commit/releases
|
|
47
|
+
hooks:
|
|
48
|
+
- id: ruff
|
|
49
|
+
args: [--fix]
|
|
50
|
+
- id: ruff-format
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
2. Install and run:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Install git hooks
|
|
57
|
+
prek install
|
|
58
|
+
|
|
59
|
+
# Run manually on all files
|
|
60
|
+
prek run --all-files
|
|
61
|
+
|
|
62
|
+
# Run specific hook
|
|
63
|
+
prek run ruff
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Configuration
|
|
67
|
+
|
|
68
|
+
For a complete, copy-paste-ready configuration, see [templates/pre-commit-config.yaml](../templates/pre-commit-config.yaml).
|
|
69
|
+
|
|
70
|
+
### Recommended `.pre-commit-config.yaml`
|
|
71
|
+
|
|
72
|
+
> **Note:** Versions shown as `<latest>` are placeholders. Always check the linked releases for current stable versions before use.
|
|
73
|
+
|
|
74
|
+
```yaml
|
|
75
|
+
# See https://pre-commit.com for more information
|
|
76
|
+
default_language_version:
|
|
77
|
+
python: python3.12
|
|
78
|
+
|
|
79
|
+
repos:
|
|
80
|
+
# Ruff - linting and formatting
|
|
81
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
82
|
+
rev: <latest> # https://github.com/astral-sh/ruff-pre-commit/releases
|
|
83
|
+
hooks:
|
|
84
|
+
- id: ruff
|
|
85
|
+
args: [--fix]
|
|
86
|
+
- id: ruff-format
|
|
87
|
+
|
|
88
|
+
# General file checks (prek builtin - faster, no external deps)
|
|
89
|
+
- repo: builtin
|
|
90
|
+
hooks:
|
|
91
|
+
- id: trailing-whitespace
|
|
92
|
+
- id: end-of-file-fixer
|
|
93
|
+
- id: check-yaml
|
|
94
|
+
- id: check-merge-conflict
|
|
95
|
+
|
|
96
|
+
# Security hooks - see security-setup.md for detailed guidance
|
|
97
|
+
# Shell script linting
|
|
98
|
+
- repo: https://github.com/koalaman/shellcheck-precommit
|
|
99
|
+
rev: <latest> # https://github.com/koalaman/shellcheck-precommit/tags
|
|
100
|
+
hooks:
|
|
101
|
+
- id: shellcheck
|
|
102
|
+
args: [--severity=error]
|
|
103
|
+
|
|
104
|
+
# Secret detection
|
|
105
|
+
- repo: https://github.com/Yelp/detect-secrets
|
|
106
|
+
rev: <latest> # https://github.com/Yelp/detect-secrets/releases
|
|
107
|
+
hooks:
|
|
108
|
+
- id: detect-secrets
|
|
109
|
+
args: [--baseline, .secrets.baseline]
|
|
110
|
+
|
|
111
|
+
# GitHub Actions linting
|
|
112
|
+
- repo: https://github.com/rhysd/actionlint
|
|
113
|
+
rev: <latest> # https://github.com/rhysd/actionlint/releases
|
|
114
|
+
hooks:
|
|
115
|
+
- id: actionlint
|
|
116
|
+
|
|
117
|
+
# GitHub Actions security audit
|
|
118
|
+
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
119
|
+
rev: <latest> # https://github.com/zizmorcore/zizmor-pre-commit/releases
|
|
120
|
+
hooks:
|
|
121
|
+
- id: zizmor
|
|
122
|
+
args: [--persona=regular, --min-severity=medium, --min-confidence=medium]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
See [security-setup.md](./security-setup.md) for detailed guidance on each security hook.
|
|
126
|
+
|
|
127
|
+
### Using Built-in Hooks
|
|
128
|
+
|
|
129
|
+
prek includes Rust-native implementations of common hooks for extra speed:
|
|
130
|
+
|
|
131
|
+
```yaml
|
|
132
|
+
repos:
|
|
133
|
+
- repo: builtin
|
|
134
|
+
hooks:
|
|
135
|
+
- id: trailing-whitespace
|
|
136
|
+
- id: end-of-file-fixer
|
|
137
|
+
- id: check-yaml
|
|
138
|
+
- id: check-json
|
|
139
|
+
- id: check-toml
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Commands
|
|
143
|
+
|
|
144
|
+
| Command | Description |
|
|
145
|
+
|---------|-------------|
|
|
146
|
+
| `prek install` | Install git hooks |
|
|
147
|
+
| `prek uninstall` | Remove git hooks |
|
|
148
|
+
| `prek run` | Run hooks on staged files |
|
|
149
|
+
| `prek run --all-files` | Run on all files |
|
|
150
|
+
| `prek run --last-commit` | Run on last commit's files |
|
|
151
|
+
| `prek run HOOK [HOOK...]` | Run specific hook(s) |
|
|
152
|
+
| `prek run -d src/` | Run on files in directory |
|
|
153
|
+
| `prek auto-update` | Update hook versions |
|
|
154
|
+
| `prek list` | List configured hooks |
|
|
155
|
+
| `prek clean` | Remove cached environments |
|
|
156
|
+
|
|
157
|
+
## CI Configuration
|
|
158
|
+
|
|
159
|
+
### GitHub Actions
|
|
160
|
+
|
|
161
|
+
```yaml
|
|
162
|
+
name: Pre-commit
|
|
163
|
+
on: [push, pull_request]
|
|
164
|
+
|
|
165
|
+
jobs:
|
|
166
|
+
prek:
|
|
167
|
+
runs-on: ubuntu-latest
|
|
168
|
+
steps:
|
|
169
|
+
- uses: actions/checkout@<sha> # <latest> https://github.com/actions/checkout/releases
|
|
170
|
+
- uses: j178/prek-action@<sha> # <latest> https://github.com/j178/prek-action/releases
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Or manually:
|
|
174
|
+
|
|
175
|
+
```yaml
|
|
176
|
+
- name: Install prek
|
|
177
|
+
run: uv tool install prek
|
|
178
|
+
|
|
179
|
+
- name: Run hooks
|
|
180
|
+
run: prek run --all-files
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Makefile Integration
|
|
184
|
+
|
|
185
|
+
```makefile
|
|
186
|
+
.PHONY: hooks hooks-install
|
|
187
|
+
|
|
188
|
+
hooks:
|
|
189
|
+
prek run --all-files
|
|
190
|
+
|
|
191
|
+
hooks-install:
|
|
192
|
+
prek install
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Migration from pre-commit
|
|
196
|
+
|
|
197
|
+
1. Install prek: `uv tool install prek`
|
|
198
|
+
2. Remove pre-commit: `pip uninstall pre-commit` or `uv tool uninstall pre-commit`
|
|
199
|
+
3. Re-install hooks: `prek install`
|
|
200
|
+
4. (Optional) Clean old environments: `rm -rf ~/.cache/pre-commit`
|
|
201
|
+
|
|
202
|
+
Your existing `.pre-commit-config.yaml` works unchanged.
|
|
203
|
+
|
|
204
|
+
## Best Practices
|
|
205
|
+
|
|
206
|
+
1. **Use `prek run --all-files` in CI** - Ensures all files are checked, not just changed ones
|
|
207
|
+
2. **Pin hook versions** - Use specific `rev` values, not branches
|
|
208
|
+
3. **Use `--cooldown-days` for auto-update** - Mitigates supply chain attacks: `prek auto-update --cooldown-days 7`
|
|
209
|
+
4. **Prefer built-in hooks** - Use `repo: builtin` for common checks (faster, offline)
|
|
210
|
+
5. **Run hooks before commit** - `prek install` sets this up automatically
|
|
211
|
+
6. **Initialize detect-secrets baseline** - Run `detect-secrets scan > .secrets.baseline` before first commit
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# pyproject.toml Configuration Reference
|
|
2
|
+
|
|
3
|
+
Complete reference for configuring `pyproject.toml` for modern Python projects.
|
|
4
|
+
|
|
5
|
+
**Important**: Always use `uv add` and `uv remove` to manage dependencies. Do not edit the `dependencies` or `dependency-groups` sections directly.
|
|
6
|
+
|
|
7
|
+
## Complete Example
|
|
8
|
+
|
|
9
|
+
```toml
|
|
10
|
+
[project]
|
|
11
|
+
name = "myproject"
|
|
12
|
+
version = "0.1.0"
|
|
13
|
+
description = "A modern Python project"
|
|
14
|
+
readme = "README.md"
|
|
15
|
+
license = "MIT"
|
|
16
|
+
requires-python = ">=3.11"
|
|
17
|
+
authors = [
|
|
18
|
+
{ name = "Your Name", email = "you@example.com" }
|
|
19
|
+
]
|
|
20
|
+
classifiers = [
|
|
21
|
+
"Development Status :: 4 - Beta",
|
|
22
|
+
"Programming Language :: Python :: 3",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Programming Language :: Python :: 3.13",
|
|
26
|
+
]
|
|
27
|
+
dependencies = [
|
|
28
|
+
"requests",
|
|
29
|
+
"rich",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[project.optional-dependencies]
|
|
33
|
+
# Use for optional features users can install
|
|
34
|
+
cli = ["typer"]
|
|
35
|
+
|
|
36
|
+
[project.scripts]
|
|
37
|
+
myproject = "myproject.cli:main"
|
|
38
|
+
|
|
39
|
+
[project.urls]
|
|
40
|
+
Homepage = "https://github.com/org/myproject"
|
|
41
|
+
Documentation = "https://myproject.readthedocs.io"
|
|
42
|
+
Repository = "https://github.com/org/myproject"
|
|
43
|
+
|
|
44
|
+
[build-system]
|
|
45
|
+
requires = ["uv_build>=0.9,<1"] # Use latest 0.x; check https://pypi.org/project/uv-build/
|
|
46
|
+
build-backend = "uv_build"
|
|
47
|
+
|
|
48
|
+
[dependency-groups]
|
|
49
|
+
dev = ["ruff", "ty"]
|
|
50
|
+
test = ["pytest", "pytest-cov", "hypothesis"]
|
|
51
|
+
docs = ["sphinx", "myst-parser"]
|
|
52
|
+
|
|
53
|
+
[tool.uv]
|
|
54
|
+
default-groups = ["dev", "test"]
|
|
55
|
+
|
|
56
|
+
[tool.ruff]
|
|
57
|
+
line-length = 100
|
|
58
|
+
target-version = "py311"
|
|
59
|
+
src = ["src"]
|
|
60
|
+
|
|
61
|
+
[tool.ruff.lint]
|
|
62
|
+
select = ["ALL"]
|
|
63
|
+
ignore = [
|
|
64
|
+
"D", # pydocstyle (enable selectively)
|
|
65
|
+
"COM812", # trailing comma (conflicts with formatter)
|
|
66
|
+
"ISC001", # implicit string concat (conflicts with formatter)
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
[tool.ruff.lint.per-file-ignores]
|
|
70
|
+
"tests/**/*.py" = [
|
|
71
|
+
"S101", # assert allowed in tests
|
|
72
|
+
"PLR2004", # magic values allowed in tests
|
|
73
|
+
"ANN", # annotations optional in tests
|
|
74
|
+
]
|
|
75
|
+
|
|
76
|
+
[tool.ruff.format]
|
|
77
|
+
quote-style = "double"
|
|
78
|
+
indent-style = "space"
|
|
79
|
+
docstring-code-format = true
|
|
80
|
+
|
|
81
|
+
[tool.pytest]
|
|
82
|
+
testpaths = ["tests"]
|
|
83
|
+
pythonpath = ["src"]
|
|
84
|
+
addopts = [
|
|
85
|
+
"--cov=myproject",
|
|
86
|
+
"--cov-report=term-missing",
|
|
87
|
+
"--cov-fail-under=80",
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
[tool.coverage.run]
|
|
91
|
+
branch = true
|
|
92
|
+
source = ["src/myproject"]
|
|
93
|
+
|
|
94
|
+
[tool.coverage.report]
|
|
95
|
+
exclude_lines = [
|
|
96
|
+
"pragma: no cover",
|
|
97
|
+
"if TYPE_CHECKING:",
|
|
98
|
+
"if __name__ == .__main__.:",
|
|
99
|
+
]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Section Reference
|
|
103
|
+
|
|
104
|
+
### [project]
|
|
105
|
+
|
|
106
|
+
Core project metadata following PEP 621.
|
|
107
|
+
|
|
108
|
+
| Field | Required | Description |
|
|
109
|
+
|-------|----------|-------------|
|
|
110
|
+
| `name` | Yes | Package name (lowercase, hyphens) |
|
|
111
|
+
| `version` | Yes | Semantic version |
|
|
112
|
+
| `description` | No | One-line description |
|
|
113
|
+
| `readme` | No | Path to README file |
|
|
114
|
+
| `license` | No | SPDX license identifier |
|
|
115
|
+
| `requires-python` | Recommended | Python version constraint |
|
|
116
|
+
| `authors` | No | List of author dicts |
|
|
117
|
+
| `dependencies` | No | Runtime dependencies |
|
|
118
|
+
|
|
119
|
+
### [project.optional-dependencies]
|
|
120
|
+
|
|
121
|
+
**Rarely needed.** Only use for optional *runtime* features that end users install:
|
|
122
|
+
|
|
123
|
+
```toml
|
|
124
|
+
[project.optional-dependencies]
|
|
125
|
+
# User installs with: uv add myproject[postgres]
|
|
126
|
+
postgres = ["psycopg2"]
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Do NOT use for dev tools**—use `[dependency-groups]` instead.
|
|
130
|
+
|
|
131
|
+
### [project.scripts]
|
|
132
|
+
|
|
133
|
+
Console entry points:
|
|
134
|
+
|
|
135
|
+
```toml
|
|
136
|
+
[project.scripts]
|
|
137
|
+
myproject = "myproject.cli:main"
|
|
138
|
+
myproject-serve = "myproject.server:run"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### [build-system]
|
|
142
|
+
|
|
143
|
+
Build backend configuration. Use `uv_build` for most projects:
|
|
144
|
+
|
|
145
|
+
```toml
|
|
146
|
+
[build-system]
|
|
147
|
+
requires = ["uv_build>=0.9,<1"] # Use latest 0.x; check https://pypi.org/project/uv-build/
|
|
148
|
+
build-backend = "uv_build"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
`uv_build` is simpler and sufficient for most use cases. Use static versioning in `[project] version` rather than VCS-aware dynamic versioning.
|
|
152
|
+
|
|
153
|
+
For flat layout (no `src/` directory), configure the module root:
|
|
154
|
+
|
|
155
|
+
```toml
|
|
156
|
+
[tool.uv.build-backend]
|
|
157
|
+
module-root = ""
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
> **Note:** These tools evolve rapidly. Prefer `>=X.Y,<X+1` constraints to automatically get newer releases within the same major version.
|
|
161
|
+
|
|
162
|
+
### [dependency-groups]
|
|
163
|
+
|
|
164
|
+
Development dependencies (PEP 735). Unlike optional-dependencies, these are NOT installed by users:
|
|
165
|
+
|
|
166
|
+
```toml
|
|
167
|
+
[dependency-groups]
|
|
168
|
+
dev = [{include-group = "lint"}, {include-group = "test"}, {include-group = "audit"}]
|
|
169
|
+
lint = ["ruff", "ty"]
|
|
170
|
+
test = ["pytest", "pytest-cov"]
|
|
171
|
+
audit = ["pip-audit"]
|
|
172
|
+
docs = ["sphinx", "myst-parser"]
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Install with: `uv sync --group dev --group test`
|
|
176
|
+
|
|
177
|
+
### [tool.uv]
|
|
178
|
+
|
|
179
|
+
uv-specific configuration:
|
|
180
|
+
|
|
181
|
+
```toml
|
|
182
|
+
[tool.uv]
|
|
183
|
+
# Default groups to install with `uv sync`
|
|
184
|
+
default-groups = ["dev", "test"]
|
|
185
|
+
|
|
186
|
+
# Python version management
|
|
187
|
+
python-preference = "managed"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Version Specifiers
|
|
191
|
+
|
|
192
|
+
| Specifier | Meaning |
|
|
193
|
+
|-----------|---------|
|
|
194
|
+
| `>=1.0` | At least version 1.0 |
|
|
195
|
+
| `>=1.0,<2.0` | Version 1.x only |
|
|
196
|
+
| `~=1.4` | Compatible release (>=1.4, <2.0) |
|
|
197
|
+
| `==1.4.*` | Any 1.4.x version |
|
|
198
|
+
|
|
199
|
+
## uv.lock Handling
|
|
200
|
+
|
|
201
|
+
| Project Type | uv.lock in Git? | Why |
|
|
202
|
+
|--------------|-----------------|-----|
|
|
203
|
+
| Application | ✅ Commit | Reproducible deploys |
|
|
204
|
+
| Library | ❌ .gitignore | Users resolve their own deps |
|
|
205
|
+
|
|
206
|
+
## Common Patterns
|
|
207
|
+
|
|
208
|
+
### Library Package
|
|
209
|
+
|
|
210
|
+
```toml
|
|
211
|
+
[project]
|
|
212
|
+
dependencies = [] # Minimal runtime deps
|
|
213
|
+
|
|
214
|
+
[project.optional-dependencies]
|
|
215
|
+
# Optional runtime features (user installs with mylib[async])
|
|
216
|
+
async = ["httpx"]
|
|
217
|
+
|
|
218
|
+
[dependency-groups]
|
|
219
|
+
dev = ["ruff", "ty"]
|
|
220
|
+
test = ["pytest", "pytest-cov"]
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Application Package
|
|
224
|
+
|
|
225
|
+
```toml
|
|
226
|
+
[project]
|
|
227
|
+
dependencies = [
|
|
228
|
+
"fastapi",
|
|
229
|
+
"uvicorn",
|
|
230
|
+
"sqlalchemy",
|
|
231
|
+
]
|
|
232
|
+
|
|
233
|
+
[project.scripts]
|
|
234
|
+
myapp = "myapp.main:run"
|
|
235
|
+
|
|
236
|
+
[dependency-groups]
|
|
237
|
+
dev = ["ruff", "ty", "pytest"]
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### CLI Tool
|
|
241
|
+
|
|
242
|
+
```toml
|
|
243
|
+
[project]
|
|
244
|
+
dependencies = [
|
|
245
|
+
"typer",
|
|
246
|
+
"rich",
|
|
247
|
+
]
|
|
248
|
+
|
|
249
|
+
[project.scripts]
|
|
250
|
+
mytool = "mytool.cli:app"
|
|
251
|
+
|
|
252
|
+
[dependency-groups]
|
|
253
|
+
dev = ["ruff", "ty", "pytest"]
|
|
254
|
+
```
|