@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,284 @@
|
|
|
1
|
+
# Testing with pytest
|
|
2
|
+
|
|
3
|
+
Configuration and best practices for pytest with coverage enforcement.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
Add test dependencies:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
uv add --group test pytest pytest-cov hypothesis
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## pyproject.toml Configuration
|
|
14
|
+
|
|
15
|
+
```toml
|
|
16
|
+
[tool.pytest]
|
|
17
|
+
testpaths = ["tests"]
|
|
18
|
+
pythonpath = ["src"]
|
|
19
|
+
addopts = [
|
|
20
|
+
"-ra", # Show summary of all test outcomes
|
|
21
|
+
"--strict-markers", # Error on unknown markers
|
|
22
|
+
"--strict-config", # Error on config issues
|
|
23
|
+
"--cov=myproject", # Coverage for package
|
|
24
|
+
"--cov-report=term-missing", # Show missing lines
|
|
25
|
+
"--cov-fail-under=80", # Minimum coverage
|
|
26
|
+
]
|
|
27
|
+
markers = [
|
|
28
|
+
"slow: marks tests as slow",
|
|
29
|
+
"integration: marks integration tests",
|
|
30
|
+
]
|
|
31
|
+
filterwarnings = [
|
|
32
|
+
"error", # Treat warnings as errors
|
|
33
|
+
"ignore::DeprecationWarning:third_party.*",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
[tool.coverage.run]
|
|
37
|
+
branch = true
|
|
38
|
+
source = ["src/myproject"]
|
|
39
|
+
omit = [
|
|
40
|
+
"*/__main__.py",
|
|
41
|
+
"*/conftest.py",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
[tool.coverage.report]
|
|
45
|
+
exclude_lines = [
|
|
46
|
+
"pragma: no cover",
|
|
47
|
+
"if TYPE_CHECKING:",
|
|
48
|
+
"if __name__ == .__main__.:",
|
|
49
|
+
"raise NotImplementedError",
|
|
50
|
+
"@abstractmethod",
|
|
51
|
+
]
|
|
52
|
+
fail_under = 80
|
|
53
|
+
show_missing = true
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Project Structure
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
myproject/
|
|
60
|
+
├── src/
|
|
61
|
+
│ └── myproject/
|
|
62
|
+
│ ├── __init__.py
|
|
63
|
+
│ └── core.py
|
|
64
|
+
├── tests/
|
|
65
|
+
│ ├── __init__.py
|
|
66
|
+
│ ├── conftest.py # Shared fixtures
|
|
67
|
+
│ ├── test_core.py
|
|
68
|
+
│ └── integration/
|
|
69
|
+
│ └── test_api.py
|
|
70
|
+
└── pyproject.toml
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Running Tests
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Run all tests
|
|
77
|
+
uv run pytest
|
|
78
|
+
|
|
79
|
+
# Run with verbose output
|
|
80
|
+
uv run pytest -v
|
|
81
|
+
|
|
82
|
+
# Run specific file
|
|
83
|
+
uv run pytest tests/test_core.py
|
|
84
|
+
|
|
85
|
+
# Run specific test
|
|
86
|
+
uv run pytest tests/test_core.py::test_function_name
|
|
87
|
+
|
|
88
|
+
# Run tests matching pattern
|
|
89
|
+
uv run pytest -k "test_parse"
|
|
90
|
+
|
|
91
|
+
# Run marked tests
|
|
92
|
+
uv run pytest -m "not slow"
|
|
93
|
+
|
|
94
|
+
# Stop on first failure
|
|
95
|
+
uv run pytest -x
|
|
96
|
+
|
|
97
|
+
# Run last failed
|
|
98
|
+
uv run pytest --lf
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Coverage Commands
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Run with coverage
|
|
105
|
+
uv run pytest --cov=myproject
|
|
106
|
+
|
|
107
|
+
# Generate HTML report
|
|
108
|
+
uv run pytest --cov=myproject --cov-report=html
|
|
109
|
+
open htmlcov/index.html
|
|
110
|
+
|
|
111
|
+
# Coverage without running tests (use existing data)
|
|
112
|
+
uv run coverage report
|
|
113
|
+
uv run coverage html
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Writing Tests
|
|
117
|
+
|
|
118
|
+
### Basic Test
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
# tests/test_core.py
|
|
122
|
+
from myproject.core import add_numbers
|
|
123
|
+
|
|
124
|
+
def test_add_numbers():
|
|
125
|
+
assert add_numbers(2, 3) == 5
|
|
126
|
+
|
|
127
|
+
def test_add_negative():
|
|
128
|
+
assert add_numbers(-1, 1) == 0
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Using Fixtures
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
# tests/conftest.py
|
|
135
|
+
import pytest
|
|
136
|
+
from myproject.db import Database
|
|
137
|
+
|
|
138
|
+
@pytest.fixture
|
|
139
|
+
def db():
|
|
140
|
+
"""Provide a test database."""
|
|
141
|
+
database = Database(":memory:")
|
|
142
|
+
database.init()
|
|
143
|
+
yield database
|
|
144
|
+
database.close()
|
|
145
|
+
|
|
146
|
+
@pytest.fixture
|
|
147
|
+
def sample_data(db):
|
|
148
|
+
"""Populate database with sample data."""
|
|
149
|
+
db.insert({"name": "test"})
|
|
150
|
+
return db
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
# tests/test_db.py
|
|
155
|
+
def test_query(sample_data):
|
|
156
|
+
result = sample_data.query("test")
|
|
157
|
+
assert result is not None
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Parametrized Tests
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
import pytest
|
|
164
|
+
|
|
165
|
+
@pytest.mark.parametrize("input,expected", [
|
|
166
|
+
("hello", 5),
|
|
167
|
+
("", 0),
|
|
168
|
+
("test", 4),
|
|
169
|
+
])
|
|
170
|
+
def test_string_length(input, expected):
|
|
171
|
+
assert len(input) == expected
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Testing Exceptions
|
|
175
|
+
|
|
176
|
+
```python
|
|
177
|
+
import pytest
|
|
178
|
+
from myproject.core import divide
|
|
179
|
+
|
|
180
|
+
def test_divide_by_zero():
|
|
181
|
+
with pytest.raises(ZeroDivisionError):
|
|
182
|
+
divide(1, 0)
|
|
183
|
+
|
|
184
|
+
def test_divide_by_zero_message():
|
|
185
|
+
with pytest.raises(ZeroDivisionError, match="division by zero"):
|
|
186
|
+
divide(1, 0)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Async Tests
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
uv add --group test pytest-asyncio
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
```python
|
|
196
|
+
import pytest
|
|
197
|
+
|
|
198
|
+
@pytest.mark.asyncio
|
|
199
|
+
async def test_async_function():
|
|
200
|
+
result = await fetch_data()
|
|
201
|
+
assert result is not None
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Property-Based Testing with Hypothesis
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
uv add --group test hypothesis
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
```python
|
|
211
|
+
from hypothesis import given, strategies as st
|
|
212
|
+
from myproject.core import reverse_string
|
|
213
|
+
|
|
214
|
+
@given(st.text())
|
|
215
|
+
def test_reverse_is_reversible(s):
|
|
216
|
+
assert reverse_string(reverse_string(s)) == s
|
|
217
|
+
|
|
218
|
+
@given(st.integers(), st.integers())
|
|
219
|
+
def test_add_commutative(a, b):
|
|
220
|
+
assert add(a, b) == add(b, a)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Markers
|
|
224
|
+
|
|
225
|
+
```python
|
|
226
|
+
import pytest
|
|
227
|
+
|
|
228
|
+
@pytest.mark.slow
|
|
229
|
+
def test_slow_operation():
|
|
230
|
+
# Long running test
|
|
231
|
+
pass
|
|
232
|
+
|
|
233
|
+
@pytest.mark.integration
|
|
234
|
+
def test_api_call():
|
|
235
|
+
# Requires external service
|
|
236
|
+
pass
|
|
237
|
+
|
|
238
|
+
@pytest.mark.skip(reason="Not implemented yet")
|
|
239
|
+
def test_future_feature():
|
|
240
|
+
pass
|
|
241
|
+
|
|
242
|
+
@pytest.mark.skipif(sys.platform == "win32", reason="Unix only")
|
|
243
|
+
def test_unix_feature():
|
|
244
|
+
pass
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## CI Configuration
|
|
248
|
+
|
|
249
|
+
```yaml
|
|
250
|
+
# GitHub Actions
|
|
251
|
+
- name: Checkout
|
|
252
|
+
uses: actions/checkout@<sha> # <latest> https://github.com/actions/checkout/releases
|
|
253
|
+
|
|
254
|
+
- name: Run tests
|
|
255
|
+
run: |
|
|
256
|
+
uv sync --group test
|
|
257
|
+
uv run pytest --cov-report=xml
|
|
258
|
+
|
|
259
|
+
- name: Security audit
|
|
260
|
+
run: |
|
|
261
|
+
uv sync --group audit
|
|
262
|
+
uv run pip-audit
|
|
263
|
+
|
|
264
|
+
- name: Upload coverage
|
|
265
|
+
uses: codecov/codecov-action@<sha> # <latest> https://github.com/codecov/codecov-action/releases
|
|
266
|
+
with:
|
|
267
|
+
files: ./coverage.xml
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
## Makefile Target
|
|
271
|
+
|
|
272
|
+
```makefile
|
|
273
|
+
.PHONY: test
|
|
274
|
+
|
|
275
|
+
test:
|
|
276
|
+
uv run pytest
|
|
277
|
+
|
|
278
|
+
test-cov:
|
|
279
|
+
uv run pytest --cov-report=html
|
|
280
|
+
open htmlcov/index.html
|
|
281
|
+
|
|
282
|
+
test-fast:
|
|
283
|
+
uv run pytest -x -q --no-cov
|
|
284
|
+
```
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# uv Command Reference
|
|
2
|
+
|
|
3
|
+
`uv` is an extremely fast Python package and project manager written in Rust. It replaces pip, virtualenv, pip-tools, pipx, and pyenv.
|
|
4
|
+
|
|
5
|
+
**Key principle:** Always use `uv run` to execute commands. Never manually activate virtual environments.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# macOS/Linux
|
|
11
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
12
|
+
|
|
13
|
+
# Windows
|
|
14
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
15
|
+
|
|
16
|
+
# Homebrew
|
|
17
|
+
brew install uv
|
|
18
|
+
|
|
19
|
+
# pipx
|
|
20
|
+
pipx install uv
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Project Commands
|
|
24
|
+
|
|
25
|
+
### Initialize Projects
|
|
26
|
+
|
|
27
|
+
| Command | Description |
|
|
28
|
+
|---------|-------------|
|
|
29
|
+
| `uv init` | Create new project (application) |
|
|
30
|
+
| `uv init --package` | Create distributable package with src/ layout |
|
|
31
|
+
| `uv init --lib` | Create library package |
|
|
32
|
+
| `uv init --script file.py` | Create script with PEP 723 metadata |
|
|
33
|
+
|
|
34
|
+
### Dependency Management
|
|
35
|
+
|
|
36
|
+
| Command | Description |
|
|
37
|
+
|---------|-------------|
|
|
38
|
+
| `uv add <pkg>` | Add dependency to project |
|
|
39
|
+
| `uv add <pkg> --group dev` | Add to dependency group |
|
|
40
|
+
| `uv add <pkg> --optional feature` | Add to optional dependency |
|
|
41
|
+
| `uv remove <pkg>` | Remove dependency |
|
|
42
|
+
| `uv lock` | Update lock file without installing |
|
|
43
|
+
|
|
44
|
+
### Environment Management
|
|
45
|
+
|
|
46
|
+
uv manages virtual environments automatically. Do not manually create or activate venvs.
|
|
47
|
+
|
|
48
|
+
| Command | Description |
|
|
49
|
+
|---------|-------------|
|
|
50
|
+
| `uv sync` | Install dependencies (creates venv if needed) |
|
|
51
|
+
| `uv sync --all-groups` | Install all dependency groups |
|
|
52
|
+
| `uv sync --group dev` | Install specific group |
|
|
53
|
+
| `uv sync --frozen` | Install from lock file exactly |
|
|
54
|
+
|
|
55
|
+
### Running Code
|
|
56
|
+
|
|
57
|
+
| Command | Description |
|
|
58
|
+
|---------|-------------|
|
|
59
|
+
| `uv run <cmd>` | Run command in project venv |
|
|
60
|
+
| `uv run python script.py` | Run Python script |
|
|
61
|
+
| `uv run pytest` | Run pytest |
|
|
62
|
+
| `uv run --with pkg cmd` | Run with temporary dependency |
|
|
63
|
+
|
|
64
|
+
### Building & Publishing
|
|
65
|
+
|
|
66
|
+
| Command | Description |
|
|
67
|
+
|---------|-------------|
|
|
68
|
+
| `uv build` | Build wheel and sdist |
|
|
69
|
+
| `uv build --wheel` | Build wheel only |
|
|
70
|
+
| `uv build --sdist` | Build sdist only |
|
|
71
|
+
| `uv publish` | Publish to PyPI |
|
|
72
|
+
| `uv publish --token $TOKEN` | Publish with API token |
|
|
73
|
+
|
|
74
|
+
## Tool Commands
|
|
75
|
+
|
|
76
|
+
Run Python tools without installing globally:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Run any tool
|
|
80
|
+
uv tool run ruff check .
|
|
81
|
+
uvx ruff check . # shorthand
|
|
82
|
+
|
|
83
|
+
# Install tool globally
|
|
84
|
+
uv tool install ruff
|
|
85
|
+
|
|
86
|
+
# List installed tools
|
|
87
|
+
uv tool list
|
|
88
|
+
|
|
89
|
+
# Upgrade tool
|
|
90
|
+
uv tool upgrade ruff
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Python Version Management
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Install Python version
|
|
97
|
+
uv python install 3.12
|
|
98
|
+
|
|
99
|
+
# List available versions
|
|
100
|
+
uv python list
|
|
101
|
+
|
|
102
|
+
# Pin project to Python version
|
|
103
|
+
uv python pin 3.12
|
|
104
|
+
|
|
105
|
+
# Use specific version
|
|
106
|
+
uv run --python 3.11 pytest
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Script Commands (PEP 723)
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Create script with inline metadata
|
|
113
|
+
uv init --script myscript.py
|
|
114
|
+
|
|
115
|
+
# Add dependency to script
|
|
116
|
+
uv add --script myscript.py requests
|
|
117
|
+
|
|
118
|
+
# Run script (auto-installs deps)
|
|
119
|
+
uv run myscript.py
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Common Workflows
|
|
123
|
+
|
|
124
|
+
### New Application Project
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
uv init myapp
|
|
128
|
+
cd myapp
|
|
129
|
+
uv add fastapi uvicorn
|
|
130
|
+
uv add --group dev ruff pytest
|
|
131
|
+
uv sync --all-groups
|
|
132
|
+
uv run uvicorn myapp:app
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### New Library Package
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
uv init --package mylib
|
|
139
|
+
cd mylib
|
|
140
|
+
uv add --group dev ruff pytest pytest-cov
|
|
141
|
+
uv add --group docs sphinx
|
|
142
|
+
uv sync --all-groups
|
|
143
|
+
uv run pytest
|
|
144
|
+
uv build
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Add Tool to Existing Project
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
cd existing-project
|
|
151
|
+
uv add --group dev ruff
|
|
152
|
+
uv run ruff check .
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### One-off Script Execution
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# Run script with dependencies (no project needed)
|
|
159
|
+
uv run --with requests --with rich script.py
|
|
160
|
+
|
|
161
|
+
# Or use PEP 723 inline metadata
|
|
162
|
+
uv run script_with_metadata.py
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Environment Variables
|
|
166
|
+
|
|
167
|
+
| Variable | Description |
|
|
168
|
+
|----------|-------------|
|
|
169
|
+
| `UV_CACHE_DIR` | Cache directory location |
|
|
170
|
+
| `UV_NO_CACHE` | Disable caching |
|
|
171
|
+
| `UV_PYTHON` | Default Python version |
|
|
172
|
+
| `UV_PROJECT` | Project directory path |
|
|
173
|
+
| `UV_PROJECT_ENVIRONMENT` | Custom venv directory (e.g., `.venv-dev`) |
|
|
174
|
+
| `UV_SYSTEM_PYTHON` | Use system Python |
|
|
175
|
+
|
|
176
|
+
## Container/Host Development
|
|
177
|
+
|
|
178
|
+
When developing on a host machine while also running in containers, you can use separate venvs to avoid rebuilding on each context switch:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# On host machine (add to shell profile or .envrc)
|
|
182
|
+
export UV_PROJECT_ENVIRONMENT=.venv-dev
|
|
183
|
+
|
|
184
|
+
# Now host uses .venv-dev, containers use default .venv
|
|
185
|
+
uv sync # creates .venv-dev on host
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Add both to `.gitignore`:
|
|
189
|
+
```
|
|
190
|
+
.venv/
|
|
191
|
+
.venv-dev/
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
This avoids rebuilding the venv when switching between host and container (different OS, Python versions, or native dependencies).
|
|
195
|
+
|
|
196
|
+
## Performance Tips
|
|
197
|
+
|
|
198
|
+
- uv caches aggressively; first install may be slower
|
|
199
|
+
- Use `uv sync --frozen` in CI for reproducible builds
|
|
200
|
+
- Use `uv cache clean` if cache grows too large
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Dependabot configuration for Python projects
|
|
2
|
+
# Copy to .github/dependabot.yml
|
|
3
|
+
#
|
|
4
|
+
# See references/dependabot.md for advanced configuration.
|
|
5
|
+
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
# Python dependencies (pyproject.toml, requirements.txt)
|
|
9
|
+
- package-ecosystem: pip
|
|
10
|
+
directory: /
|
|
11
|
+
schedule:
|
|
12
|
+
interval: weekly
|
|
13
|
+
# 7-day cooldown: don't update packages published < 7 days ago
|
|
14
|
+
# Mitigates supply chain attacks via malicious updates
|
|
15
|
+
cooldown:
|
|
16
|
+
default-days: 7
|
|
17
|
+
# Group minor/patch updates to reduce PR noise
|
|
18
|
+
groups:
|
|
19
|
+
dev-dependencies:
|
|
20
|
+
dependency-type: development
|
|
21
|
+
update-types: [minor, patch]
|
|
22
|
+
production-dependencies:
|
|
23
|
+
dependency-type: production
|
|
24
|
+
update-types: [patch]
|
|
25
|
+
|
|
26
|
+
# GitHub Actions
|
|
27
|
+
- package-ecosystem: github-actions
|
|
28
|
+
directory: /
|
|
29
|
+
schedule:
|
|
30
|
+
interval: weekly
|
|
31
|
+
cooldown:
|
|
32
|
+
default-days: 7
|
|
33
|
+
groups:
|
|
34
|
+
actions:
|
|
35
|
+
patterns: ["*"]
|
|
36
|
+
update-types: [minor, patch]
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Pre-commit configuration for Python projects
|
|
2
|
+
# Copy to your repo root as .pre-commit-config.yaml
|
|
3
|
+
#
|
|
4
|
+
# IMPORTANT: Replace all <latest> placeholders with actual versions.
|
|
5
|
+
# Check each linked releases page for current stable versions.
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# prek install # Install git hooks
|
|
9
|
+
# prek run --all-files # Run on all files
|
|
10
|
+
#
|
|
11
|
+
# See references/prek.md for more commands.
|
|
12
|
+
|
|
13
|
+
default_language_version:
|
|
14
|
+
python: python3.12
|
|
15
|
+
|
|
16
|
+
repos:
|
|
17
|
+
# === Code Quality ===
|
|
18
|
+
|
|
19
|
+
# Ruff - linting and formatting (replaces black, isort, flake8, pylint)
|
|
20
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
21
|
+
rev: <latest> # https://github.com/astral-sh/ruff-pre-commit/releases
|
|
22
|
+
hooks:
|
|
23
|
+
- id: ruff
|
|
24
|
+
args: [--fix]
|
|
25
|
+
- id: ruff-format
|
|
26
|
+
|
|
27
|
+
# === General File Checks ===
|
|
28
|
+
# prek builtin hooks - faster, no external deps
|
|
29
|
+
- repo: builtin
|
|
30
|
+
hooks:
|
|
31
|
+
- id: trailing-whitespace
|
|
32
|
+
- id: end-of-file-fixer
|
|
33
|
+
- id: check-yaml
|
|
34
|
+
- id: check-toml
|
|
35
|
+
- id: check-merge-conflict
|
|
36
|
+
|
|
37
|
+
# === Security Hooks ===
|
|
38
|
+
# See references/security-setup.md for detailed guidance on each hook.
|
|
39
|
+
|
|
40
|
+
# Shell script linting - catches unquoted vars, undefined vars, deprecated syntax
|
|
41
|
+
- repo: https://github.com/koalaman/shellcheck-precommit
|
|
42
|
+
rev: <latest> # https://github.com/koalaman/shellcheck-precommit/tags
|
|
43
|
+
hooks:
|
|
44
|
+
- id: shellcheck
|
|
45
|
+
args: [--severity=error]
|
|
46
|
+
|
|
47
|
+
# Secret detection - prevents committing API keys, passwords, tokens
|
|
48
|
+
# Run `detect-secrets scan > .secrets.baseline` before first commit
|
|
49
|
+
- repo: https://github.com/Yelp/detect-secrets
|
|
50
|
+
rev: <latest> # https://github.com/Yelp/detect-secrets/releases
|
|
51
|
+
hooks:
|
|
52
|
+
- id: detect-secrets
|
|
53
|
+
args: [--baseline, .secrets.baseline]
|
|
54
|
+
|
|
55
|
+
# GitHub Actions linting - catches syntax errors, invalid refs
|
|
56
|
+
- repo: https://github.com/rhysd/actionlint
|
|
57
|
+
rev: <latest> # https://github.com/rhysd/actionlint/releases
|
|
58
|
+
hooks:
|
|
59
|
+
- id: actionlint
|
|
60
|
+
|
|
61
|
+
# GitHub Actions security audit - excessive permissions, injection risks
|
|
62
|
+
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
63
|
+
rev: <latest> # https://github.com/zizmorcore/zizmor-pre-commit/releases
|
|
64
|
+
hooks:
|
|
65
|
+
- id: zizmor
|
|
66
|
+
args: [--persona=regular, --min-severity=medium, --min-confidence=medium]
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Property-Based Testing
|
|
2
|
+
|
|
3
|
+
Property-based testing guidance for multiple languages and smart contracts.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
This plugin is part of the Trail of Bits Skills marketplace.
|
|
8
|
+
|
|
9
|
+
### Via Marketplace (Recommended)
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
/plugin marketplace add trailofbits/skills
|
|
13
|
+
/plugin menu
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Then select the `property-based-testing` plugin to install.
|
|
17
|
+
|
|
18
|
+
### Manual Installation
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
/plugin install trailofbits/skills/plugins/property-based-testing
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## What's Included
|
|
25
|
+
|
|
26
|
+
This plugin provides a skill that helps Claude Code proactively suggest and write property-based tests when it detects suitable patterns in your code:
|
|
27
|
+
|
|
28
|
+
- **Serialization pairs**: encode/decode, serialize/deserialize, toJSON/fromJSON
|
|
29
|
+
- **Parsers**: URL parsing, config parsing, protocol parsing
|
|
30
|
+
- **Normalization**: normalize, sanitize, clean, canonicalize
|
|
31
|
+
- **Validators**: is_valid, validate, check_*
|
|
32
|
+
- **Data structures**: Custom collections with add/remove/get operations
|
|
33
|
+
- **Mathematical/algorithmic**: Pure functions, sorting, ordering
|
|
34
|
+
- **Smart contracts**: Solidity/Vyper contracts, token operations, state invariants
|
|
35
|
+
|
|
36
|
+
## Supported Languages
|
|
37
|
+
|
|
38
|
+
- Python (Hypothesis)
|
|
39
|
+
- JavaScript/TypeScript (fast-check)
|
|
40
|
+
- Rust (proptest, quickcheck)
|
|
41
|
+
- Go (rapid, gopter)
|
|
42
|
+
- Java (jqwik)
|
|
43
|
+
- Scala (ScalaCheck)
|
|
44
|
+
- Solidity/Vyper (Echidna, Medusa)
|
|
45
|
+
- And many more...
|
|
46
|
+
|
|
47
|
+
See `skills/property-based-testing/references/libraries.md` for the complete list.
|