@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,298 @@
|
|
|
1
|
+
## Example Output
|
|
2
|
+
|
|
3
|
+
When the analysis is complete, you'll receive comprehensive guidance like this:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
=== DEVELOPMENT GUIDELINES ANALYSIS ===
|
|
7
|
+
|
|
8
|
+
Project: NFT Marketplace
|
|
9
|
+
Platform: Solidity (Ethereum)
|
|
10
|
+
Analysis Date: March 15, 2024
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. DOCUMENTATION & SPECIFICATIONS
|
|
15
|
+
|
|
16
|
+
### Generated System Description
|
|
17
|
+
|
|
18
|
+
**Plain English Overview:**
|
|
19
|
+
The NFT Marketplace allows users to list, buy, and auction ERC721 tokens.
|
|
20
|
+
The system uses a decentralized orderbook where sellers create listings with
|
|
21
|
+
price and duration. Buyers can purchase instantly or place bids for auctions.
|
|
22
|
+
A 2.5% platform fee is collected on each sale.
|
|
23
|
+
|
|
24
|
+
**Key Assumptions:**
|
|
25
|
+
- All NFTs follow ERC721 standard
|
|
26
|
+
- Prices denominated in ETH only
|
|
27
|
+
- No token whitelisting (any ERC721 accepted)
|
|
28
|
+
- Platform fee immutable after deployment
|
|
29
|
+
|
|
30
|
+
### Architectural Diagrams Generated
|
|
31
|
+
|
|
32
|
+
✓ contract-interactions.png - Shows Marketplace, OrderBook, FeeCollector flow
|
|
33
|
+
✓ state-machine.png - Listing states (Created → Active → Sold/Cancelled/Expired)
|
|
34
|
+
✓ auction-flow.png - Bid placement and finalization sequence
|
|
35
|
+
|
|
36
|
+
### Documentation Gaps Identified
|
|
37
|
+
|
|
38
|
+
⚠ Missing NatSpec:
|
|
39
|
+
- OrderBook.cancelOrder() - No @notice or @param
|
|
40
|
+
- FeeCollector.withdrawFees() - Missing @dev implementation notes
|
|
41
|
+
|
|
42
|
+
⚠ Undocumented Assumptions:
|
|
43
|
+
- What happens if NFT transfer fails during purchase?
|
|
44
|
+
- Are listings automatically cleaned up after expiration?
|
|
45
|
+
- Fee distribution mechanism not explained
|
|
46
|
+
|
|
47
|
+
**Recommendation:** Add comprehensive NatSpec to all public functions
|
|
48
|
+
and document error handling for external calls.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 2. ARCHITECTURE ANALYSIS
|
|
53
|
+
|
|
54
|
+
### On-Chain vs Off-Chain Components
|
|
55
|
+
|
|
56
|
+
**Current Distribution:**
|
|
57
|
+
- On-Chain: Listing creation, order execution, fee collection
|
|
58
|
+
- Off-Chain: Order discovery, price indexing, user notifications
|
|
59
|
+
|
|
60
|
+
**Optimization Opportunities:**
|
|
61
|
+
✓ Order matching is efficient (on-chain orderbook)
|
|
62
|
+
✗ Listing enumeration is gas-intensive
|
|
63
|
+
|
|
64
|
+
**Recommendation:**
|
|
65
|
+
Consider moving listing discovery off-chain using event indexing.
|
|
66
|
+
Keep core execution on-chain. Estimated gas savings: 40% for browse operations.
|
|
67
|
+
|
|
68
|
+
### Upgradeability Review
|
|
69
|
+
|
|
70
|
+
**Current Pattern:** TransparentUpgradeableProxy (OpenZeppelin)
|
|
71
|
+
|
|
72
|
+
**Assessment:**
|
|
73
|
+
✓ Proxy and implementation use shared storage base
|
|
74
|
+
✓ Initialization properly handled
|
|
75
|
+
✓ No function shadowing detected
|
|
76
|
+
✗ No timelock on upgrades (admin can upgrade immediately)
|
|
77
|
+
|
|
78
|
+
**Critical Issue:**
|
|
79
|
+
File: contracts/Marketplace.sol
|
|
80
|
+
The marketplace uses delegatecall proxy but admin is EOA without timelock.
|
|
81
|
+
|
|
82
|
+
**Recommendation:**
|
|
83
|
+
- Deploy TimelockController (48-hour delay)
|
|
84
|
+
- Transfer proxy admin to timelock
|
|
85
|
+
- Add emergency pause for critical bugs
|
|
86
|
+
|
|
87
|
+
### Proxy Pattern Security
|
|
88
|
+
|
|
89
|
+
**Findings:**
|
|
90
|
+
✓ Storage layout consistent (inherits MarketplaceStorage)
|
|
91
|
+
✓ No constructors in implementation
|
|
92
|
+
✓ Initialize function has initializer modifier
|
|
93
|
+
⚠ Immutable variables in proxy (PLATFORM_FEE)
|
|
94
|
+
|
|
95
|
+
**Issue:** PLATFORM_FEE defined as immutable in proxy will not update
|
|
96
|
+
if implementation changes this value.
|
|
97
|
+
|
|
98
|
+
**Fix:** Move PLATFORM_FEE to storage or accept it's immutable forever.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 3. IMPLEMENTATION REVIEW
|
|
103
|
+
|
|
104
|
+
### Function Composition
|
|
105
|
+
|
|
106
|
+
**Complex Functions Identified:**
|
|
107
|
+
⚠ executePurchase() - 45 lines, cyclomatic complexity: 12
|
|
108
|
+
- Handles payment, NFT transfer, fee calc, event emission
|
|
109
|
+
- Recommendation: Extract _validatePurchase(), _processPayment(), _transferNFT()
|
|
110
|
+
|
|
111
|
+
⚠ finalizeAuction() - 38 lines, cyclomatic complexity: 10
|
|
112
|
+
- Multiple nested conditionals for winner determination
|
|
113
|
+
- Recommendation: Extract _determineWinner(), _refundLosers()
|
|
114
|
+
|
|
115
|
+
✓ Other functions well-scoped (average 15 lines)
|
|
116
|
+
|
|
117
|
+
### Inheritance
|
|
118
|
+
|
|
119
|
+
**Hierarchy Analysis:**
|
|
120
|
+
```
|
|
121
|
+
Marketplace
|
|
122
|
+
├─ Ownable
|
|
123
|
+
├─ ReentrancyGuard
|
|
124
|
+
├─ Pausable
|
|
125
|
+
└─ MarketplaceStorage
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
✓ Shallow inheritance (depth: 2)
|
|
129
|
+
✓ No diamond problem
|
|
130
|
+
✓ Clear separation of concerns
|
|
131
|
+
|
|
132
|
+
**Slither Inheritance Graph:** contracts/inheritance.png (generated)
|
|
133
|
+
|
|
134
|
+
### Events
|
|
135
|
+
|
|
136
|
+
**Event Coverage:**
|
|
137
|
+
✓ 12 events defined
|
|
138
|
+
✓ All state changes emit events
|
|
139
|
+
✓ Consistent naming (ListingCreated, OrderFulfilled, BidPlaced)
|
|
140
|
+
✓ Indexed parameters for filtering (tokenId, seller, buyer)
|
|
141
|
+
|
|
142
|
+
⚠ Missing Events:
|
|
143
|
+
- Platform fee updates (if ever made variable)
|
|
144
|
+
- Pause/unpause operations
|
|
145
|
+
|
|
146
|
+
**Recommendation:** Add PlatformPaused/Unpaused events for monitoring.
|
|
147
|
+
|
|
148
|
+
### Common Pitfalls
|
|
149
|
+
|
|
150
|
+
**Issues Found:**
|
|
151
|
+
|
|
152
|
+
❌ CRITICAL: Reentrancy in executePurchase()
|
|
153
|
+
File: contracts/Marketplace.sol:234
|
|
154
|
+
```solidity
|
|
155
|
+
function executePurchase(uint256 listingId) external payable {
|
|
156
|
+
Listing memory listing = listings[listingId];
|
|
157
|
+
IERC721(listing.nftContract).transferFrom(listing.seller, msg.sender, listing.tokenId);
|
|
158
|
+
// State update AFTER external call!
|
|
159
|
+
listing.status = Status.Sold;
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
**Fix:** Follow checks-effects-interactions. Update state before external calls.
|
|
163
|
+
|
|
164
|
+
⚠ HIGH: Unvalidated external call return
|
|
165
|
+
File: contracts/Marketplace.sol:245
|
|
166
|
+
```solidity
|
|
167
|
+
payable(seller).transfer(amount); // Can fail silently
|
|
168
|
+
```
|
|
169
|
+
**Fix:** Use call{value}() and check return value or use Address.sendValue().
|
|
170
|
+
|
|
171
|
+
✓ No timestamp dependence
|
|
172
|
+
✓ No tx.origin usage
|
|
173
|
+
✓ Integer overflow protected (Solidity 0.8+)
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 4. DEPENDENCIES
|
|
178
|
+
|
|
179
|
+
**Current Dependencies:**
|
|
180
|
+
✓ @openzeppelin/contracts@4.9.0 - Well-tested, good choice
|
|
181
|
+
✗ Custom ERC721 implementation (contracts/CustomERC721.sol)
|
|
182
|
+
|
|
183
|
+
**Issues:**
|
|
184
|
+
⚠ CustomERC721 reinvents OpenZeppelin's ERC721
|
|
185
|
+
- 234 lines of duplicate code
|
|
186
|
+
- No added functionality
|
|
187
|
+
- Increases audit surface
|
|
188
|
+
|
|
189
|
+
**Recommendation:**
|
|
190
|
+
Replace CustomERC721 with OpenZeppelin's implementation.
|
|
191
|
+
Saves 234 lines, reduces risk, improves maintainability.
|
|
192
|
+
|
|
193
|
+
**Dependency Management:**
|
|
194
|
+
✓ Using npm for dependencies
|
|
195
|
+
✓ Package versions pinned
|
|
196
|
+
⚠ Dependencies not updated in 8 months
|
|
197
|
+
|
|
198
|
+
**Action:** Update @openzeppelin/contracts to latest 5.x (breaking changes, test thoroughly)
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 5. TESTING EVALUATION
|
|
203
|
+
|
|
204
|
+
**Current Test Suite:**
|
|
205
|
+
- 45 unit tests (forge test)
|
|
206
|
+
- 12 integration tests
|
|
207
|
+
- Coverage: 78%
|
|
208
|
+
|
|
209
|
+
**Gaps Identified:**
|
|
210
|
+
✗ No fuzzing (Echidna/Foundry)
|
|
211
|
+
✗ No formal verification
|
|
212
|
+
✗ Edge cases not covered:
|
|
213
|
+
- Auction with zero bids
|
|
214
|
+
- Listing with expired timestamp
|
|
215
|
+
- Purchase during contract pause
|
|
216
|
+
|
|
217
|
+
**Recommendations:**
|
|
218
|
+
1. Add Foundry invariant tests:
|
|
219
|
+
- Total fees collected == sum of individual sales * 0.025
|
|
220
|
+
- Active listings count matches actual active listings
|
|
221
|
+
- No NFT can be in multiple active listings
|
|
222
|
+
|
|
223
|
+
2. Increase coverage to 95%+ by testing:
|
|
224
|
+
- Pausable functions during pause state
|
|
225
|
+
- Reentrancy attack scenarios
|
|
226
|
+
- Failed NFT transfers
|
|
227
|
+
|
|
228
|
+
3. Add integration tests:
|
|
229
|
+
- End-to-end auction flow with multiple bidders
|
|
230
|
+
- Platform fee collection and withdrawal
|
|
231
|
+
- Upgrade and data migration
|
|
232
|
+
|
|
233
|
+
**Estimated Effort:** 1-2 weeks to reach 95% coverage with invariant testing
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## PRIORITIZED RECOMMENDATIONS
|
|
238
|
+
|
|
239
|
+
### CRITICAL (Fix Immediately)
|
|
240
|
+
1. **Fix reentrancy in executePurchase()** [HIGH IMPACT]
|
|
241
|
+
- Risk: Funds can be drained
|
|
242
|
+
- Effort: 1 day
|
|
243
|
+
- File: contracts/Marketplace.sol:234
|
|
244
|
+
|
|
245
|
+
2. **Validate external call returns** [HIGH IMPACT]
|
|
246
|
+
- Risk: Failed transfers not detected
|
|
247
|
+
- Effort: 1 day
|
|
248
|
+
- Files: Multiple payment operations
|
|
249
|
+
|
|
250
|
+
3. **Add timelock to upgrades** [HIGH IMPACT]
|
|
251
|
+
- Risk: Instant malicious upgrade
|
|
252
|
+
- Effort: 2 days
|
|
253
|
+
|
|
254
|
+
### HIGH (Before Mainnet)
|
|
255
|
+
4. **Remove CustomERC721, use OpenZeppelin** [MEDIUM IMPACT]
|
|
256
|
+
- Benefit: Reduce code, increase security
|
|
257
|
+
- Effort: 3 days
|
|
258
|
+
|
|
259
|
+
5. **Increase test coverage to 95%** [MEDIUM IMPACT]
|
|
260
|
+
- Benefit: Catch edge case bugs
|
|
261
|
+
- Effort: 1-2 weeks
|
|
262
|
+
|
|
263
|
+
6. **Add comprehensive NatSpec** [LOW IMPACT]
|
|
264
|
+
- Benefit: Better documentation
|
|
265
|
+
- Effort: 2-3 days
|
|
266
|
+
|
|
267
|
+
### MEDIUM (Post-Launch V2)
|
|
268
|
+
7. **Optimize listing enumeration** [MEDIUM IMPACT]
|
|
269
|
+
- Benefit: 40% gas savings on reads
|
|
270
|
+
- Effort: 1 week
|
|
271
|
+
|
|
272
|
+
8. **Add invariant fuzzing** [HIGH IMPACT]
|
|
273
|
+
- Benefit: Discover hidden bugs
|
|
274
|
+
- Effort: 1 week
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## SUMMARY
|
|
279
|
+
|
|
280
|
+
**Overall Assessment:** MODERATE MATURITY
|
|
281
|
+
|
|
282
|
+
The codebase follows many best practices with good use of OpenZeppelin
|
|
283
|
+
libraries and clear architecture. Critical issues are reentrancy vulnerability
|
|
284
|
+
and lack of upgrade timelock. Testing needs improvement.
|
|
285
|
+
|
|
286
|
+
**Path to Production:**
|
|
287
|
+
1. Fix CRITICAL items (reentrancy, timelock) - Week 1
|
|
288
|
+
2. Address HIGH items (dependencies, testing) - Week 2-3
|
|
289
|
+
3. External audit - Week 4-5
|
|
290
|
+
4. Mainnet deployment with documented limitations
|
|
291
|
+
5. MEDIUM items in V2 - Month 2-3
|
|
292
|
+
|
|
293
|
+
**Estimated Timeline:** 3-4 weeks to production-ready state.
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
Analysis completed using Trail of Bits Development Guidelines
|
|
298
|
+
```
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: secure-workflow-guide
|
|
3
|
+
description: Guides through Trail of Bits' 5-step secure development workflow. Runs Slither scans, checks special features (upgradeability/ERC conformance/token integration), generates visual security diagrams, helps document security properties for fuzzing/verification, and reviews manual security areas.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Secure Workflow Guide
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Guides through Trail of Bits' secure development workflow - a 5-step process to enhance smart contract security throughout development.
|
|
11
|
+
|
|
12
|
+
**Use this**: On every check-in, before deployment, or when you want a security review
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## The 5-Step Workflow
|
|
17
|
+
|
|
18
|
+
Covers a security workflow including:
|
|
19
|
+
|
|
20
|
+
### Step 1: Check for Known Security Issues
|
|
21
|
+
Run Slither with 70+ built-in detectors to find common vulnerabilities:
|
|
22
|
+
- Parse findings by severity
|
|
23
|
+
- Explain each issue with file references
|
|
24
|
+
- Recommend fixes
|
|
25
|
+
- Help triage false positives
|
|
26
|
+
|
|
27
|
+
**Goal**: Clean Slither report or documented triages
|
|
28
|
+
|
|
29
|
+
### Step 2: Check Special Features
|
|
30
|
+
Detect and validate applicable features:
|
|
31
|
+
- **Upgradeability**: slither-check-upgradeability (17 upgrade risks)
|
|
32
|
+
- **ERC conformance**: slither-check-erc (6 common specs)
|
|
33
|
+
- **Token integration**: Recommend token-integration-analyzer skill
|
|
34
|
+
- **Security properties**: slither-prop for ERC20
|
|
35
|
+
|
|
36
|
+
**Note**: Only runs checks that apply to your codebase
|
|
37
|
+
|
|
38
|
+
### Step 3: Visual Security Inspection
|
|
39
|
+
Generate 3 security diagrams:
|
|
40
|
+
- **Inheritance graph**: Identify shadowing and C3 linearization issues
|
|
41
|
+
- **Function summary**: Show visibility and access controls
|
|
42
|
+
- **Variables and authorization**: Map who can write to state variables
|
|
43
|
+
|
|
44
|
+
Review each diagram for security concerns
|
|
45
|
+
|
|
46
|
+
### Step 4: Document Security Properties
|
|
47
|
+
Help document critical security properties:
|
|
48
|
+
- State machine transitions and invariants
|
|
49
|
+
- Access control requirements
|
|
50
|
+
- Arithmetic constraints and precision
|
|
51
|
+
- External interaction safety
|
|
52
|
+
- Standards conformance
|
|
53
|
+
|
|
54
|
+
Then set up testing:
|
|
55
|
+
- **Echidna**: Property-based fuzzing with invariants
|
|
56
|
+
- **Manticore**: Formal verification with symbolic execution
|
|
57
|
+
- **Custom Slither checks**: Project-specific business logic
|
|
58
|
+
|
|
59
|
+
**Note**: Most important activity for security
|
|
60
|
+
|
|
61
|
+
### Step 5: Manual Review Areas
|
|
62
|
+
Analyze areas automated tools miss:
|
|
63
|
+
- **Privacy**: On-chain secrets, commit-reveal needs
|
|
64
|
+
- **Front-running**: Slippage protection, ordering risks, MEV
|
|
65
|
+
- **Cryptography**: Weak randomness, signature issues, hash collisions
|
|
66
|
+
- **DeFi interactions**: Oracle manipulation, flash loans, protocol assumptions
|
|
67
|
+
|
|
68
|
+
Search codebase for these patterns and flag risks
|
|
69
|
+
|
|
70
|
+
For detailed instructions, commands, and explanations for each step, see [WORKFLOW_STEPS.md](resources/WORKFLOW_STEPS.md).
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## How I Work
|
|
75
|
+
|
|
76
|
+
When invoked, I will:
|
|
77
|
+
|
|
78
|
+
1. **Explore your codebase** to understand structure
|
|
79
|
+
2. **Run Step 1**: Slither security scan
|
|
80
|
+
3. **Detect and run Step 2**: Special feature checks (only what applies)
|
|
81
|
+
4. **Generate Step 3**: Visual security diagrams
|
|
82
|
+
5. **Guide Step 4**: Security property documentation
|
|
83
|
+
6. **Analyze Step 5**: Manual review areas
|
|
84
|
+
7. **Provide action plan**: Prioritized fixes and next steps
|
|
85
|
+
|
|
86
|
+
Adapts based on:
|
|
87
|
+
- What tools you have installed
|
|
88
|
+
- What's applicable to your project
|
|
89
|
+
- Where you are in development
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Rationalizations (Do Not Skip)
|
|
94
|
+
|
|
95
|
+
| Rationalization | Why It's Wrong | Required Action |
|
|
96
|
+
|-----------------|----------------|-----------------|
|
|
97
|
+
| "Slither not available, I'll check manually" | Manual checking misses 70+ detector patterns | Install and run Slither, or document why it's blocked |
|
|
98
|
+
| "Can't generate diagrams, I'll describe the architecture" | Descriptions aren't visual - diagrams reveal patterns text misses | Execute slither --print commands, generate actual visual outputs |
|
|
99
|
+
| "No upgrades detected, skip upgradeability checks" | Proxies and upgrades are often implicit or planned | Verify with codebase search before skipping Step 2 checks |
|
|
100
|
+
| "Not a token, skip ERC checks" | Tokens can be integrated without obvious ERC inheritance | Check for token interactions, transfers, balances before skipping |
|
|
101
|
+
| "Can't set up Echidna now, suggesting it for later" | Property-based testing is Step 4, not optional | Document properties now, set up fuzzing infrastructure |
|
|
102
|
+
| "No DeFi interactions, skip oracle/flash loan checks" | DeFi patterns appear in unexpected places (price feeds, external calls) | Complete Step 5 manual review, search codebase for patterns |
|
|
103
|
+
| "This step doesn't apply to my project" | "Not applicable" without verification = missed vulnerabilities | Verify with explicit codebase search before declaring N/A |
|
|
104
|
+
| "I'll provide generic security advice instead of running workflow" | Generic advice isn't actionable, workflow finds specific issues | Execute all 5 steps, generate project-specific findings with file:line references |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Example Output
|
|
109
|
+
|
|
110
|
+
When I complete the workflow, you'll get a comprehensive security report covering:
|
|
111
|
+
|
|
112
|
+
- **Step 1**: Slither findings with severity, file references, and fix recommendations
|
|
113
|
+
- **Step 2**: Special feature validation results (upgradeability, ERC conformance, etc.)
|
|
114
|
+
- **Step 3**: Visual diagrams analyzing inheritance, functions, and state variable authorization
|
|
115
|
+
- **Step 4**: Documented security properties and testing setup (Echidna/Manticore)
|
|
116
|
+
- **Step 5**: Manual review findings (privacy, front-running, cryptography, DeFi risks)
|
|
117
|
+
- **Action plan**: Critical/high/medium priority tasks with effort estimates
|
|
118
|
+
- **Workflow checklist**: Progress on all 5 steps
|
|
119
|
+
|
|
120
|
+
For a complete example workflow report, see [EXAMPLE_REPORT.md](resources/EXAMPLE_REPORT.md).
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## What You'll Get
|
|
125
|
+
|
|
126
|
+
**Security Report**:
|
|
127
|
+
- Slither findings with severity and fixes
|
|
128
|
+
- Special feature validation results
|
|
129
|
+
- Visual diagrams (PNG/PDF)
|
|
130
|
+
- Manual review findings
|
|
131
|
+
|
|
132
|
+
**Action Plan**:
|
|
133
|
+
- [ ] Critical issues to fix immediately
|
|
134
|
+
- [ ] Security properties to document
|
|
135
|
+
- [ ] Testing to set up (Echidna/Manticore)
|
|
136
|
+
- [ ] Manual areas to review
|
|
137
|
+
|
|
138
|
+
**Workflow Checklist**:
|
|
139
|
+
- [ ] Clean Slither report
|
|
140
|
+
- [ ] Special features validated
|
|
141
|
+
- [ ] Visual inspection complete
|
|
142
|
+
- [ ] Properties documented
|
|
143
|
+
- [ ] Manual review done
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Getting Help
|
|
148
|
+
|
|
149
|
+
**Trail of Bits Resources**:
|
|
150
|
+
- Office Hours: Every Tuesday ([schedule](https://meetings.hubspot.com/trailofbits/office-hours))
|
|
151
|
+
- Empire Hacking Slack: #crytic and #ethereum channels
|
|
152
|
+
|
|
153
|
+
**Other Security**:
|
|
154
|
+
- Remember: Security is about more than smart contracts
|
|
155
|
+
- Off-chain security (owner keys, infrastructure) equally critical
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Ready to Start
|
|
160
|
+
|
|
161
|
+
Let me know when you're ready and I'll run through the workflow with your codebase!
|