@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,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dwarf-expert
|
|
3
|
+
description: Provides expertise for analyzing DWARF debug files and understanding the DWARF debug format/standard (v3-v5). Triggers when understanding DWARF information, interacting with DWARF files, answering DWARF-related questions, or working with code that parses DWARF data.
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Grep
|
|
8
|
+
- Glob
|
|
9
|
+
- WebSearch
|
|
10
|
+
---
|
|
11
|
+
# Overview
|
|
12
|
+
This skill provides technical knowledge and expertise about the DWARF standard and how to interact with DWARF files. Tasks include answering questions about the DWARF standard, providing examples of various DWARF features, parsing and/or creating DWARF files, and writing/modifying/analyzing code that interacts with DWARF data.
|
|
13
|
+
|
|
14
|
+
## When to Use This Skill
|
|
15
|
+
- Understanding or parsing DWARF debug information from compiled binaries
|
|
16
|
+
- Answering questions about the DWARF standard (v3, v4, v5)
|
|
17
|
+
- Writing or reviewing code that interacts with DWARF data
|
|
18
|
+
- Using `dwarfdump` or `readelf` to extract debug information
|
|
19
|
+
- Verifying DWARF data integrity with `llvm-dwarfdump --verify`
|
|
20
|
+
- Working with DWARF parsing libraries (libdwarf, pyelftools, gimli, etc.)
|
|
21
|
+
|
|
22
|
+
## When NOT to Use This Skill
|
|
23
|
+
- **DWARF v1/v2 Analysis**: Expertise limited to versions 3, 4, and 5.
|
|
24
|
+
- **General ELF Parsing**: Use standard ELF tools if DWARF data isn't needed.
|
|
25
|
+
- **Executable Debugging**: Use dedicated debugging tools (gdb, lldb, etc) for debugging executable code/runtime behavior.
|
|
26
|
+
- **Binary Reverse Engineering**: Use dedicated RE tools (Ghidra, IDA) unless specifically analyzing DWARF sections.
|
|
27
|
+
- **Compiler Debugging**: DWARF generation issues are compiler-specific, not covered here.
|
|
28
|
+
|
|
29
|
+
# Authoritative Sources
|
|
30
|
+
When specific DWARF standard information is needed, use these authoritative sources:
|
|
31
|
+
|
|
32
|
+
1. **Official DWARF Standards (dwarfstd.org)**: Use web search to find specific sections of the official DWARF specification at dwarfstd.org. Search queries like "DWARF5 DW_TAG_subprogram attributes site:dwarfstd.org" are effective.
|
|
33
|
+
|
|
34
|
+
2. **LLVM DWARF Implementation**: The LLVM project's DWARF handling code at `llvm/lib/DebugInfo/DWARF/` serves as a reliable reference implementation. Key files include:
|
|
35
|
+
- `DWARFDie.cpp` - DIE handling and attribute access
|
|
36
|
+
- `DWARFUnit.cpp` - Compilation unit parsing
|
|
37
|
+
- `DWARFDebugLine.cpp` - Line number information
|
|
38
|
+
- `DWARFVerifier.cpp` - Validation logic
|
|
39
|
+
|
|
40
|
+
3. **libdwarf**: The reference C implementation at github.com/davea42/libdwarf-code provides detailed handling of DWARF data structures.
|
|
41
|
+
|
|
42
|
+
# Verification Workflows
|
|
43
|
+
Use `llvm-dwarfdump` verification options to validate DWARF data integrity:
|
|
44
|
+
|
|
45
|
+
## Structural Validation
|
|
46
|
+
```bash
|
|
47
|
+
# Verify DWARF structure (compile units, DIE relationships, address ranges)
|
|
48
|
+
llvm-dwarfdump --verify <binary>
|
|
49
|
+
|
|
50
|
+
# Detailed error output with summary
|
|
51
|
+
llvm-dwarfdump --verify --error-display=full <binary>
|
|
52
|
+
|
|
53
|
+
# Machine-readable JSON error summary
|
|
54
|
+
llvm-dwarfdump --verify --verify-json=errors.json <binary>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Quality Metrics
|
|
58
|
+
```bash
|
|
59
|
+
# Output debug info quality metrics as JSON
|
|
60
|
+
llvm-dwarfdump --statistics <binary>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The `--statistics` output helps compare debug info quality across compiler versions and optimization levels.
|
|
64
|
+
|
|
65
|
+
## Common Verification Patterns
|
|
66
|
+
- **After compilation**: Verify binaries have valid DWARF before distribution
|
|
67
|
+
- **Comparing builds**: Use `--statistics` to detect debug info quality regressions
|
|
68
|
+
- **Debugging debuggers**: Identify malformed DWARF causing debugger issues
|
|
69
|
+
- **DWARF tool development**: Validate parser output against known-good binaries
|
|
70
|
+
|
|
71
|
+
# Parsing DWARF Debug Information
|
|
72
|
+
## readelf
|
|
73
|
+
ELF files can be parsed via the `readelf` command ({baseDir}/reference/readelf.md). Use this for general ELF information, but prefer `dwarfdump` for DWARF-specific parsing.
|
|
74
|
+
|
|
75
|
+
## dwarfdump
|
|
76
|
+
DWARF files can be parsed via the `dwarfdump` command, which is more effective at parsing and displaying complex DWARF information than `readelf` and should be used for most DWARF parsing tasks ({baseDir}/reference/dwarfdump.md).
|
|
77
|
+
|
|
78
|
+
# Working With Code
|
|
79
|
+
This skill supports writing, modifying, and reviewing code that interacts with DWARF data. This may involve code that parses DWARF debug data from scratch or code that leverages libraries to parse and interact with DWARF data ({baseDir}/reference/coding.md).
|
|
80
|
+
|
|
81
|
+
# Choosing Your Approach
|
|
82
|
+
```
|
|
83
|
+
┌─ Need to verify DWARF data integrity?
|
|
84
|
+
│ └─ Use `llvm-dwarfdump --verify` (see Verification Workflows above)
|
|
85
|
+
├─ Need to answer questions about the DWARF standard?
|
|
86
|
+
│ └─ Search dwarfstd.org or reference LLVM/libdwarf source
|
|
87
|
+
├─ Need simple section dump or general ELF info?
|
|
88
|
+
│ └─ Use `readelf` ({baseDir}/reference/readelf.md)
|
|
89
|
+
├─ Need to parse, search, and/or dump DWARF DIE nodes?
|
|
90
|
+
│ └─ Use `dwarfdump` ({baseDir}/reference/dwarfdump.md)
|
|
91
|
+
└─ Need to write, modify, or review code that interacts with DWARF data?
|
|
92
|
+
└─ Refer to the coding reference ({baseDir}/reference/coding.md)
|
|
93
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Writing, Modifying, or Reviewing Code That Interacts With DWARF Data.
|
|
2
|
+
You may be tasked with writing, modifying, or reviewing code that handles, parses, or otherwise interacts with DWARF data.
|
|
3
|
+
|
|
4
|
+
## General Guidelines
|
|
5
|
+
- **Rely on Authoritative Sources**: For ground-truth information about DWARF sections, DIE nodes, and attributes, use web search for dwarfstd.org specifications or reference LLVM/libdwarf source code implementations.
|
|
6
|
+
- **Using DWARF Expertise**: Use your DWARF-specific expertise to work with code that interacts with DWARF data, but do NOT use it when working with unrelated code.
|
|
7
|
+
|
|
8
|
+
## Writing Code
|
|
9
|
+
- **Prefer Python for Scripting**: Prefer to use Python for simpler DWARF code (such as scripts that filter for specific DIE nodes) unless another language is specified.
|
|
10
|
+
- **Leverage Existing Libraries**: Prefer to use existing libraries to parse/handle DWARF data if they exist for the selected language (see `Common DWARF Libraries`).
|
|
11
|
+
- **Refer to Library Documentation**: If using a library, refer to it's documentation as needed (both in-code and online references if available).
|
|
12
|
+
|
|
13
|
+
## Modifying Code
|
|
14
|
+
- **Follow Existing Styles**: Adhere to existing code styles, formatting, naming conventions, etc wherever possible.
|
|
15
|
+
- **Group Changes**: Perform logically related changes together and separate out unrelated groups of changes into individual steps.
|
|
16
|
+
- **Describe Changes**: Clearly describe the purpose of each group of changes and what each individual change achieves to the user.
|
|
17
|
+
- **Advise on Complex Changes**: Suggest especially large or complex changes to the user before making them. For example, if a significant amount of code needs to be added or modified to handle a particular type of DIE node or attribute.
|
|
18
|
+
|
|
19
|
+
## Reviewing Code
|
|
20
|
+
- **Only Suggest Changes**: Suggest changes or advise on refactors but do NOT modify the code.
|
|
21
|
+
- **Consider Edge Cases**: Consider edge cases that may be unhandled, such as special DIE node types, abstract base DIE nodes, specification DIE nodes, optional attributes, etc.
|
|
22
|
+
|
|
23
|
+
# Common DWARF Libraries
|
|
24
|
+
There are a number of libraries that can be leveraged to parse and interact with DWARF data. Prefer to use these when writing new code (if the chosen language has a compatible library).
|
|
25
|
+
| Library | Language | URL | Notes |
|
|
26
|
+
|---------|----------|-----|-------|
|
|
27
|
+
| `libdwarf` | C/C++ | https://github.com/davea42/libdwarf-code | Offers a simpler, lower-level interface. Used to implement `dwarfdump`. |
|
|
28
|
+
| `pyelftools` | Python | https://github.com/eliben/pyelftools | Also supports parsing of ELF files in general. |
|
|
29
|
+
| `gimli` | Rust | https://github.com/gimli-rs/gimli | Designed for performant access to DWARF data. May require other dependencies (such as `object`) to open and parse entire DWARF files. |
|
|
30
|
+
| `debug/dwarf` | Go | https://github.com/golang/go/tree/master/src/debug/dwarf | Standard library built-in. |
|
|
31
|
+
| `LibObjectFile` | .NET | https://github.com/xoofx/LibObjectFile | Also supports interfacing with object files (ELF, PE/COFF, etc) in general. |
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Parsing DWARF Files With dwarfdump
|
|
2
|
+
`dwarfdump` is a utility used to parse and dump DWARF information from DWARF files. It can be used to dump individual DWARF sections, display DIE node trees (both parents and children), search for DIE nodes by name or address, and verify that DWARF files are well-formed.
|
|
3
|
+
|
|
4
|
+
## dwarfdump vs llvm-dwarfdump
|
|
5
|
+
Two slightly different flavors of the `dwarfdump` utility exist:
|
|
6
|
+
- libdwarf's implementation, typically called `dwarfdump`
|
|
7
|
+
- LLVM's implementation, typically called `llvm-dwarfdump`
|
|
8
|
+
|
|
9
|
+
Both can be used interchangeably, albeit with slightly different command-line options. Both accept options to modify the dumped output and the path to the object file containing the DWARF information to dump. The actual `dwarfdump` command my refer to either of the utilities depending on the system; Use `dwarfdump --version` to determine which implementation is used.
|
|
10
|
+
|
|
11
|
+
## Commonly Used Options for LLVM dwarfdump
|
|
12
|
+
These options are specific to LLVM's implementation of `dwarfdump`.
|
|
13
|
+
- `dwarfdump --version`: Display version information. Use to determine whether the system uses libdwarf's or LLVM's implementation.
|
|
14
|
+
- `dwarfdump --help`: Display available options.
|
|
15
|
+
- `dwarfdump --all`: Dump all DWARF sections.
|
|
16
|
+
- `dwarfdump --<debug_section>`: Dump a particular DWARF section (e.g. `--debug-addr`, `--debug-names`, etc). Can be specified multiple times to dump multiple sections.
|
|
17
|
+
- `dwarfdump --show-children [--recurse-depth=<n>]`: Show a debug info entry's children when selectively printing entries. Optionally, provide `--recurse-depth` to limit the depth of children to diplay. Use in cases where information about parent DIE nodes is especially relevant or requested. Commonly used when displaying DIE nodes for functions and data types as child DIE nodes contain info about parameters, local variables, structure members, etc.
|
|
18
|
+
- `dwarfdump --show-parents [--parent-recurse-depth=<n>]`: Show a debug info entry's parents when selectively printing entries. Optionally provide `--parent-recurse-depth` to limit the depth of parents to display. Use in cases where information about parent DIE nodes is especially relevant or requested.
|
|
19
|
+
- `dwarfdump --show-form`: Show DWARF form types after the DWARF attribute types. Use to display more verbose DWARF information about the type of DWARF attributes.
|
|
20
|
+
- `dwarfdump --find=<pattern>`: Search for an exact match of the given name in the accelerator tables. This will not perform an exhaustive search over all DIE node. Use as an initial lookup for DIE nodes with specific names, but fall back to using `--name <pattern>` to perform an exhaustive search if `find` does not find any DIE nodes with the given name.
|
|
21
|
+
- `dwarfdump --name <pattern> [--ignore-case] [--regex]`: Search for any DIE nodes whose name matches the given pattern. Optionally use `--ignore-case` to perform a case-insensitive search and/or `--regex` to interpret the pattern as a regex for more complex searches. Performs an exhaustive search over all DIE nodes. Use to perform exhaustive lookup for exact name matches where `--find=<pattern>` fails or to search for more complex name via regex.
|
|
22
|
+
- `dwarfdump --lookup=<address>`: Find the DIE node at a specific address. Use to search for specific DIE nodes when their address is known, such as when gathering information about a DIE node referenced by some previously dumped DIE node.
|
|
23
|
+
- `dwarfdump --verify`: Verify a DWARF file. Use to check whether a DWARF file is well-formed.
|
|
24
|
+
- `dwarfdump --verbose`: Print more low-level encoding details. Use in cases where extra information is helpful for debugging.
|
|
25
|
+
|
|
26
|
+
## Verification Options (llvm-dwarfdump)
|
|
27
|
+
These options are useful for validating DWARF data integrity:
|
|
28
|
+
- `llvm-dwarfdump --verify <binary>`: Verify DWARF structure including compile unit chains, DIE relationships, and address ranges.
|
|
29
|
+
- `llvm-dwarfdump --verify --error-display=<mode>`: Control verification output detail. Modes: `quiet` (errors only), `summary`, `details`, `full` (errors with summary).
|
|
30
|
+
- `llvm-dwarfdump --verify --verify-json=<path>`: Output JSON-formatted error summary to file. Useful for CI integration.
|
|
31
|
+
- `llvm-dwarfdump --statistics <binary>`: Output debug info quality metrics as single-line JSON. Useful for comparing builds.
|
|
32
|
+
- `llvm-dwarfdump --verify --quiet`: Run verification without output to stdout (exit code indicates success/failure).
|
|
33
|
+
|
|
34
|
+
## Searching DIE Nodes
|
|
35
|
+
In many cases it is necessary to search for specific DIE nodes (and their children and/or parents).
|
|
36
|
+
|
|
37
|
+
### Simple Search
|
|
38
|
+
For simple cases such as name matches or exact address matches, prefer using `dwarfdump` with `--lookup`, `--find`, or `--name`.
|
|
39
|
+
|
|
40
|
+
### Complex Search
|
|
41
|
+
In more complex cases cases, it may be necessary to perform custom searching over the output. For example, finding all DWARF parameter DIE nodes that have a particular type necessitates manually searching the `dwarfdump` output. In cases such a these, follow these steps:
|
|
42
|
+
| Step | Description | Example |
|
|
43
|
+
|------|-------------|---------|
|
|
44
|
+
| Initial Filtering | Dump the entire DWARF file and use filtering tools, such as `grep`, to perform more complex filtering of the data. | `dwarfdump <file> \| grep "float \*"` to search for the `float *` type. |
|
|
45
|
+
| Get DIE Address | Get the address of any DIE node that match the search. This may require refinining the previous command to print more than just the matching line, such as using the `grep -B <n>` option to print `n` lines before the matching one to get the line with the address. | `dwarfdump <file> \| grep -B 5 "float \*"` to print 5 preceding lines for each match. This will print the line with the DIE node type and address. |
|
|
46
|
+
| Refine Filtering | Additional filtering may be required to narrow the search to DIE nodes of the desired type. In this case, additional filtering tools can be used to narrow the search further. | `dwarfdump <file> \| grep -B 5 "float \*" \| grep "DW_TAG_formal_parameter` to search only for parameter DIE nodes. |
|
|
47
|
+
| Print Complete DWARF Info | Use `dwarfdump --lookup=<address>` (potentially with `--show-children` and/or `--show-parents`) for each matching DIE node's address to print information about them in a uniform format. |
|
|
48
|
+
|
|
49
|
+
### Scripted Search
|
|
50
|
+
Sometimes, searching with filtering tools is too complex or produces inconsistent or incomplete results. In highly complex cases, such as searching for DIE nodes with multiple exact attribute values. In these cases, it is easiest to write a Python script leveraging the `pyelftools` package to parse and search DWARF files. Resort to this only if the filtering approach fails or becomes to complex.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Parsing ELF Files With readelf
|
|
2
|
+
`readelf` is a utility used to parse and dump ELF information from ELF files. It can be used to dump various ELF sections including DWARF sections.
|
|
3
|
+
|
|
4
|
+
## Commonly Used Options
|
|
5
|
+
- `readelf --help`: Display available options.
|
|
6
|
+
- `readelf --debug-dump [debug_section]`: Dump a particular DWARF section (e.g. `addr`, `pubnames`, etc). Can be specified multiple times to dump multiple sections.
|
|
7
|
+
- `readelf --dwarf-depth=N`: Do not display DIEs at depth N or greater.
|
|
8
|
+
- `readelf --dwarf-start=N`: Display DIE nodes starting at offset N.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "entry-point-analyzer",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Analyzes smart contract codebases to identify state-changing entry points for security auditing. Detects externally callable functions that modify state, categorizes them by access level, and generates structured audit reports.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Nicolas Donboly",
|
|
7
|
+
"email": "opensource@trailofbits.com",
|
|
8
|
+
"url": "https://github.com/trailofbits"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Entry Point Analyzer
|
|
2
|
+
|
|
3
|
+
A Claude skill for systematically identifying **state-changing** entry points in smart contract codebases to guide security audits.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
When auditing smart contracts, examining each file or function individually is inefficient. What auditors need is to start from **entry points**—the externally callable functions that represent the attack surface. This skill automates the identification and classification of state-changing entry points, excluding view/pure/read-only functions that cannot directly cause loss of funds or state corruption.
|
|
8
|
+
|
|
9
|
+
## Supported Languages
|
|
10
|
+
|
|
11
|
+
| Language | File Extensions | Framework Support |
|
|
12
|
+
|----------|-----------------|-------------------|
|
|
13
|
+
| Solidity | `.sol` | OpenZeppelin, custom modifiers |
|
|
14
|
+
| Vyper | `.vy` | Native patterns |
|
|
15
|
+
| Solana | `.rs` | Anchor, Native |
|
|
16
|
+
| Move | `.move` | Aptos, Sui |
|
|
17
|
+
| TON | `.fc`, `.func`, `.tact` | FunC, Tact |
|
|
18
|
+
| CosmWasm | `.rs` | cw-ownable, cw-controllers |
|
|
19
|
+
|
|
20
|
+
## Access Classifications
|
|
21
|
+
|
|
22
|
+
The skill categorizes entry points into four levels:
|
|
23
|
+
|
|
24
|
+
1. **Public (Unrestricted)** — Callable by anyone; highest audit priority
|
|
25
|
+
2. **Role-Restricted** — Limited to specific roles (admin, governance, guardian, etc.)
|
|
26
|
+
3. **Review Required** — Ambiguous access patterns needing manual verification
|
|
27
|
+
4. **Contract-Only** — Internal integration points (callbacks, hooks)
|
|
28
|
+
|
|
29
|
+
## Output
|
|
30
|
+
|
|
31
|
+
Generates a structured markdown report with:
|
|
32
|
+
- Summary table of entry point counts by category
|
|
33
|
+
- Detailed tables for each access level
|
|
34
|
+
- Function signatures with file:line references
|
|
35
|
+
- Restriction patterns and role assignments
|
|
36
|
+
- List of analyzed files
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
Trigger the skill with requests like:
|
|
41
|
+
- "Analyze the entry points in this codebase"
|
|
42
|
+
- "Find all external functions and access levels"
|
|
43
|
+
- "List audit flows for src/core/"
|
|
44
|
+
- "What privileged operations exist in this project?"
|
|
45
|
+
|
|
46
|
+
## Directory Filtering
|
|
47
|
+
|
|
48
|
+
Specify a subdirectory to limit scope:
|
|
49
|
+
- "Analyze only `src/core/`"
|
|
50
|
+
- "Find entry points in `contracts/protocol/`"
|
|
51
|
+
|
|
52
|
+
## Role Detection
|
|
53
|
+
|
|
54
|
+
The skill infers roles from common patterns:
|
|
55
|
+
|
|
56
|
+
| Pattern | Detected Role |
|
|
57
|
+
|---------|---------------|
|
|
58
|
+
| `onlyOwner`, `msg.sender == owner` | Owner |
|
|
59
|
+
| `onlyAdmin`, `ADMIN_ROLE` | Admin |
|
|
60
|
+
| `onlyGovernance`, `governance` | Governance |
|
|
61
|
+
| `onlyGuardian`, `onlyPauser` | Guardian |
|
|
62
|
+
| `onlyKeeper`, `onlyRelayer` | Keeper/Relayer |
|
|
63
|
+
| `onlyStrategy`, `strategist` | Strategist |
|
|
64
|
+
| Dynamic checks (`authorized[msg.sender]`) | Review Required |
|
|
65
|
+
|
|
66
|
+
## Installation
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
/plugin install trailofbits/skills/plugins/entry-point-analyzer
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## License
|
|
73
|
+
|
|
74
|
+
See LICENSE.txt for terms.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trailofbits:entry-points
|
|
3
|
+
description: Identifies state-changing entry points in smart contracts
|
|
4
|
+
argument-hint: "[directory-path]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Grep
|
|
8
|
+
- Glob
|
|
9
|
+
- Bash
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Analyze Smart Contract Entry Points
|
|
13
|
+
|
|
14
|
+
**Arguments:** $ARGUMENTS
|
|
15
|
+
|
|
16
|
+
Parse the directory path from arguments. If empty, use current directory.
|
|
17
|
+
|
|
18
|
+
Invoke the `entry-point-analyzer` skill with the directory path for the full workflow.
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: entry-point-analyzer
|
|
3
|
+
description: Analyzes smart contract codebases to identify state-changing entry points for security auditing. Detects externally callable functions that modify state, categorizes them by access level (public, admin, role-restricted, contract-only), and generates structured audit reports. Excludes view/pure/read-only functions. Use when auditing smart contracts (Solidity, Vyper, Solana/Rust, Move, TON, CosmWasm) or when asked to find entry points, audit flows, external functions, access control patterns, or privileged operations.
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Grep
|
|
7
|
+
- Glob
|
|
8
|
+
- Bash
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Entry Point Analyzer
|
|
12
|
+
|
|
13
|
+
Systematically identify all **state-changing** entry points in a smart contract codebase to guide security audits.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
Use this skill when:
|
|
18
|
+
- Starting a smart contract security audit to map the attack surface
|
|
19
|
+
- Asked to find entry points, external functions, or audit flows
|
|
20
|
+
- Analyzing access control patterns across a codebase
|
|
21
|
+
- Identifying privileged operations and role-restricted functions
|
|
22
|
+
- Building an understanding of which functions can modify contract state
|
|
23
|
+
|
|
24
|
+
## When NOT to Use
|
|
25
|
+
|
|
26
|
+
Do NOT use this skill for:
|
|
27
|
+
- Vulnerability detection (use audit-context-building or domain-specific-audits)
|
|
28
|
+
- Writing exploit POCs (use solidity-poc-builder)
|
|
29
|
+
- Code quality or gas optimization analysis
|
|
30
|
+
- Non-smart-contract codebases
|
|
31
|
+
- Analyzing read-only functions (this skill excludes them)
|
|
32
|
+
|
|
33
|
+
## Scope: State-Changing Functions Only
|
|
34
|
+
|
|
35
|
+
This skill focuses exclusively on functions that can modify state. **Excluded:**
|
|
36
|
+
|
|
37
|
+
| Language | Excluded Patterns |
|
|
38
|
+
|----------|-------------------|
|
|
39
|
+
| Solidity | `view`, `pure` functions |
|
|
40
|
+
| Vyper | `@view`, `@pure` functions |
|
|
41
|
+
| Solana | Functions without `mut` account references |
|
|
42
|
+
| Move | Non-entry `public fun` (module-callable only) |
|
|
43
|
+
| TON | `get` methods (FunC), read-only receivers (Tact) |
|
|
44
|
+
| CosmWasm | `query` entry point and its handlers |
|
|
45
|
+
|
|
46
|
+
**Why exclude read-only functions?** They cannot directly cause loss of funds or state corruption. While they may leak information, the primary audit focus is on functions that can change state.
|
|
47
|
+
|
|
48
|
+
## Workflow
|
|
49
|
+
|
|
50
|
+
1. **Detect Language** - Identify contract language(s) from file extensions and syntax
|
|
51
|
+
2. **Use Tooling (if available)** - For Solidity, check if Slither is available and use it
|
|
52
|
+
3. **Locate Contracts** - Find all contract/module files (apply directory filter if specified)
|
|
53
|
+
4. **Extract Entry Points** - Parse each file for externally callable, state-changing functions
|
|
54
|
+
5. **Classify Access** - Categorize each function by access level
|
|
55
|
+
6. **Generate Report** - Output structured markdown report
|
|
56
|
+
|
|
57
|
+
## Slither Integration (Solidity)
|
|
58
|
+
|
|
59
|
+
For Solidity codebases, Slither can automatically extract entry points. Before manual analysis:
|
|
60
|
+
|
|
61
|
+
### 1. Check if Slither is Available
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
which slither
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 2. If Slither is Detected, Run Entry Points Printer
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
slither . --print entry-points
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
This outputs a table of all state-changing entry points with:
|
|
74
|
+
- Contract name
|
|
75
|
+
- Function name
|
|
76
|
+
- Visibility
|
|
77
|
+
- Modifiers applied
|
|
78
|
+
|
|
79
|
+
### 3. Use Slither Output as Foundation
|
|
80
|
+
|
|
81
|
+
- Parse the Slither output table to populate your analysis
|
|
82
|
+
- Cross-reference with manual inspection for access control classification
|
|
83
|
+
- Slither may miss some patterns (callbacks, dynamic access control)—supplement with manual review
|
|
84
|
+
- If Slither fails (compilation errors, unsupported features), fall back to manual analysis
|
|
85
|
+
|
|
86
|
+
### 4. When Slither is NOT Available
|
|
87
|
+
|
|
88
|
+
If `which slither` returns nothing, proceed with manual analysis using the language-specific reference files.
|
|
89
|
+
|
|
90
|
+
## Language Detection
|
|
91
|
+
|
|
92
|
+
| Extension | Language | Reference |
|
|
93
|
+
|-----------|----------|-----------|
|
|
94
|
+
| `.sol` | Solidity | [{baseDir}/references/solidity.md]({baseDir}/references/solidity.md) |
|
|
95
|
+
| `.vy` | Vyper | [{baseDir}/references/vyper.md]({baseDir}/references/vyper.md) |
|
|
96
|
+
| `.rs` + `Cargo.toml` with `solana-program` | Solana (Rust) | [{baseDir}/references/solana.md]({baseDir}/references/solana.md) |
|
|
97
|
+
| `.move` + `Move.toml` with `edition` | [{baseDir}/references/move-sui.md]({baseDir}/references/move-sui.md) |
|
|
98
|
+
| `.move` + `Move.toml` with `Aptos` | [{baseDir}/references/move-aptos.md]({baseDir}/references/move-aptos.md) |
|
|
99
|
+
| `.fc`, `.func`, `.tact` | TON (FunC/Tact) | [{baseDir}/references/ton.md]({baseDir}/references/ton.md) |
|
|
100
|
+
| `.rs` + `Cargo.toml` with `cosmwasm-std` | CosmWasm | [{baseDir}/references/cosmwasm.md]({baseDir}/references/cosmwasm.md) |
|
|
101
|
+
|
|
102
|
+
Load the appropriate reference file(s) based on detected language before analysis.
|
|
103
|
+
|
|
104
|
+
## Access Classification
|
|
105
|
+
|
|
106
|
+
Classify each state-changing entry point into one of these categories:
|
|
107
|
+
|
|
108
|
+
### 1. Public (Unrestricted)
|
|
109
|
+
Functions callable by anyone without restrictions.
|
|
110
|
+
|
|
111
|
+
### 2. Role-Restricted
|
|
112
|
+
Functions limited to specific roles. Common patterns to detect:
|
|
113
|
+
- Explicit role names: `admin`, `owner`, `governance`, `guardian`, `operator`, `manager`, `minter`, `pauser`, `keeper`, `relayer`, `lender`, `borrower`
|
|
114
|
+
- Role-checking patterns: `onlyRole`, `hasRole`, `require(msg.sender == X)`, `assert_owner`, `#[access_control]`
|
|
115
|
+
- When role is ambiguous, flag as **"Restricted (review required)"** with the restriction pattern noted
|
|
116
|
+
|
|
117
|
+
### 3. Contract-Only (Internal Integration Points)
|
|
118
|
+
Functions callable only by other contracts, not by EOAs. Indicators:
|
|
119
|
+
- Callbacks: `onERC721Received`, `uniswapV3SwapCallback`, `flashLoanCallback`
|
|
120
|
+
- Interface implementations with contract-caller checks
|
|
121
|
+
- Functions that revert if `tx.origin == msg.sender`
|
|
122
|
+
- Cross-contract hooks
|
|
123
|
+
|
|
124
|
+
## Output Format
|
|
125
|
+
|
|
126
|
+
Generate a markdown report with this structure:
|
|
127
|
+
|
|
128
|
+
```markdown
|
|
129
|
+
# Entry Point Analysis: [Project Name]
|
|
130
|
+
|
|
131
|
+
**Analyzed**: [timestamp]
|
|
132
|
+
**Scope**: [directories analyzed or "full codebase"]
|
|
133
|
+
**Languages**: [detected languages]
|
|
134
|
+
**Focus**: State-changing functions only (view/pure excluded)
|
|
135
|
+
|
|
136
|
+
## Summary
|
|
137
|
+
|
|
138
|
+
| Category | Count |
|
|
139
|
+
|----------|-------|
|
|
140
|
+
| Public (Unrestricted) | X |
|
|
141
|
+
| Role-Restricted | X |
|
|
142
|
+
| Restricted (Review Required) | X |
|
|
143
|
+
| Contract-Only | X |
|
|
144
|
+
| **Total** | **X** |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Public Entry Points (Unrestricted)
|
|
149
|
+
|
|
150
|
+
State-changing functions callable by anyone—prioritize for attack surface analysis.
|
|
151
|
+
|
|
152
|
+
| Function | File | Notes |
|
|
153
|
+
|----------|------|-------|
|
|
154
|
+
| `functionName(params)` | `path/to/file.sol:L42` | Brief note if relevant |
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Role-Restricted Entry Points
|
|
159
|
+
|
|
160
|
+
### Admin / Owner
|
|
161
|
+
| Function | File | Restriction |
|
|
162
|
+
|----------|------|-------------|
|
|
163
|
+
| `setFee(uint256)` | `Config.sol:L15` | `onlyOwner` |
|
|
164
|
+
|
|
165
|
+
### Governance
|
|
166
|
+
| Function | File | Restriction |
|
|
167
|
+
|----------|------|-------------|
|
|
168
|
+
|
|
169
|
+
### Guardian / Pauser
|
|
170
|
+
| Function | File | Restriction |
|
|
171
|
+
|----------|------|-------------|
|
|
172
|
+
|
|
173
|
+
### Other Roles
|
|
174
|
+
| Function | File | Restriction | Role |
|
|
175
|
+
|----------|------|-------------|------|
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Restricted (Review Required)
|
|
180
|
+
|
|
181
|
+
Functions with access control patterns that need manual verification.
|
|
182
|
+
|
|
183
|
+
| Function | File | Pattern | Why Review |
|
|
184
|
+
|----------|------|---------|------------|
|
|
185
|
+
| `execute(bytes)` | `Executor.sol:L88` | `require(trusted[msg.sender])` | Dynamic trust list |
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Contract-Only (Internal Integration Points)
|
|
190
|
+
|
|
191
|
+
Functions only callable by other contracts—useful for understanding trust boundaries.
|
|
192
|
+
|
|
193
|
+
| Function | File | Expected Caller |
|
|
194
|
+
|----------|------|-----------------|
|
|
195
|
+
| `onFlashLoan(...)` | `Vault.sol:L200` | Flash loan provider |
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Files Analyzed
|
|
200
|
+
|
|
201
|
+
- `path/to/file1.sol` (X state-changing entry points)
|
|
202
|
+
- `path/to/file2.sol` (X state-changing entry points)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Filtering
|
|
206
|
+
|
|
207
|
+
When user specifies a directory filter:
|
|
208
|
+
- Only analyze files within that path
|
|
209
|
+
- Note the filter in the report header
|
|
210
|
+
- Example: "Analyze only `src/core/`" → scope = `src/core/`
|
|
211
|
+
|
|
212
|
+
## Analysis Guidelines
|
|
213
|
+
|
|
214
|
+
1. **Be thorough**: Don't skip files. Every state-changing externally callable function matters.
|
|
215
|
+
2. **Be conservative**: When uncertain about access level, flag for review rather than miscategorize.
|
|
216
|
+
3. **Skip read-only**: Exclude `view`, `pure`, and equivalent read-only functions.
|
|
217
|
+
4. **Note inheritance**: If a function's access control comes from a parent contract, note this.
|
|
218
|
+
5. **Track modifiers**: List all access-related modifiers/decorators applied to each function.
|
|
219
|
+
6. **Identify patterns**: Look for common patterns like:
|
|
220
|
+
- Initializer functions (often unrestricted on first call)
|
|
221
|
+
- Upgrade functions (high-privilege)
|
|
222
|
+
- Emergency/pause functions (guardian-level)
|
|
223
|
+
- Fee/parameter setters (admin-level)
|
|
224
|
+
- Token transfers and approvals (often public)
|
|
225
|
+
|
|
226
|
+
## Common Role Patterns by Protocol Type
|
|
227
|
+
|
|
228
|
+
| Protocol Type | Common Roles |
|
|
229
|
+
|---------------|--------------|
|
|
230
|
+
| DEX | `owner`, `feeManager`, `pairCreator` |
|
|
231
|
+
| Lending | `admin`, `guardian`, `liquidator`, `oracle` |
|
|
232
|
+
| Governance | `proposer`, `executor`, `canceller`, `timelock` |
|
|
233
|
+
| NFT | `minter`, `admin`, `royaltyReceiver` |
|
|
234
|
+
| Bridge | `relayer`, `guardian`, `validator`, `operator` |
|
|
235
|
+
| Vault/Yield | `strategist`, `keeper`, `harvester`, `manager` |
|
|
236
|
+
|
|
237
|
+
## Rationalizations to Reject
|
|
238
|
+
|
|
239
|
+
When analyzing entry points, reject these shortcuts:
|
|
240
|
+
- "This function looks standard" → Still classify it; standard functions can have non-standard access control
|
|
241
|
+
- "The modifier name is clear" → Verify the modifier's actual implementation
|
|
242
|
+
- "This is obviously admin-only" → Trace the actual restriction; "obvious" assumptions miss subtle bypasses
|
|
243
|
+
- "I'll skip the callbacks" → Callbacks define trust boundaries; always include them
|
|
244
|
+
- "It doesn't modify much state" → Any state change can be exploited; include all non-view functions
|
|
245
|
+
|
|
246
|
+
## Error Handling
|
|
247
|
+
|
|
248
|
+
If a file cannot be parsed:
|
|
249
|
+
1. Note it in the report under "Analysis Warnings"
|
|
250
|
+
2. Continue with remaining files
|
|
251
|
+
3. Suggest manual review for unparsable files
|