@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.
Files changed (371) hide show
  1. package/README.md +126 -0
  2. package/package.json +53 -0
  3. package/skills/1password/SKILL.md +70 -0
  4. package/skills/1password/references/cli-examples.md +29 -0
  5. package/skills/1password/references/get-started.md +17 -0
  6. package/skills/apple-notes/SKILL.md +77 -0
  7. package/skills/apple-reminders/SKILL.md +96 -0
  8. package/skills/bear-notes/SKILL.md +107 -0
  9. package/skills/bird/SKILL.md +224 -0
  10. package/skills/blogwatcher/SKILL.md +69 -0
  11. package/skills/blucli/SKILL.md +47 -0
  12. package/skills/bluebubbles/SKILL.md +131 -0
  13. package/skills/camsnap/SKILL.md +45 -0
  14. package/skills/canvas/SKILL.md +203 -0
  15. package/skills/clawhub/SKILL.md +77 -0
  16. package/skills/coding-agent/SKILL.md +284 -0
  17. package/skills/discord/SKILL.md +578 -0
  18. package/skills/eightctl/SKILL.md +50 -0
  19. package/skills/food-order/SKILL.md +48 -0
  20. package/skills/gemini/SKILL.md +43 -0
  21. package/skills/gifgrep/SKILL.md +79 -0
  22. package/skills/github/SKILL.md +77 -0
  23. package/skills/gog/SKILL.md +116 -0
  24. package/skills/goplaces/SKILL.md +52 -0
  25. package/skills/healthcheck/SKILL.md +245 -0
  26. package/skills/himalaya/SKILL.md +257 -0
  27. package/skills/himalaya/references/configuration.md +184 -0
  28. package/skills/himalaya/references/message-composition.md +199 -0
  29. package/skills/imsg/SKILL.md +74 -0
  30. package/skills/local-places/SERVER_README.md +101 -0
  31. package/skills/local-places/SKILL.md +102 -0
  32. package/skills/local-places/pyproject.toml +21 -0
  33. package/skills/local-places/src/local_places/__init__.py +2 -0
  34. package/skills/local-places/src/local_places/google_places.py +314 -0
  35. package/skills/local-places/src/local_places/main.py +65 -0
  36. package/skills/local-places/src/local_places/schemas.py +107 -0
  37. package/skills/mcporter/SKILL.md +61 -0
  38. package/skills/model-usage/SKILL.md +69 -0
  39. package/skills/model-usage/references/codexbar-cli.md +33 -0
  40. package/skills/model-usage/scripts/model_usage.py +310 -0
  41. package/skills/nano-banana-pro/SKILL.md +58 -0
  42. package/skills/nano-banana-pro/scripts/generate_image.py +184 -0
  43. package/skills/nano-pdf/SKILL.md +38 -0
  44. package/skills/notion/SKILL.md +172 -0
  45. package/skills/obsidian/SKILL.md +81 -0
  46. package/skills/openai-image-gen/SKILL.md +89 -0
  47. package/skills/openai-image-gen/scripts/gen.py +240 -0
  48. package/skills/openai-whisper/SKILL.md +38 -0
  49. package/skills/openai-whisper-api/SKILL.md +52 -0
  50. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  51. package/skills/openhue/SKILL.md +51 -0
  52. package/skills/oracle/SKILL.md +125 -0
  53. package/skills/ordercli/SKILL.md +78 -0
  54. package/skills/peekaboo/SKILL.md +190 -0
  55. package/skills/sag/SKILL.md +87 -0
  56. package/skills/security-ask-questions-if-underspecified/.claude-plugin/plugin.json +10 -0
  57. package/skills/security-ask-questions-if-underspecified/README.md +24 -0
  58. package/skills/security-ask-questions-if-underspecified/skills/ask-questions-if-underspecified/SKILL.md +85 -0
  59. package/skills/security-audit-context-building/.claude-plugin/plugin.json +10 -0
  60. package/skills/security-audit-context-building/README.md +58 -0
  61. package/skills/security-audit-context-building/commands/audit-context.md +21 -0
  62. package/skills/security-audit-context-building/skills/audit-context-building/SKILL.md +297 -0
  63. package/skills/security-audit-context-building/skills/audit-context-building/resources/COMPLETENESS_CHECKLIST.md +47 -0
  64. package/skills/security-audit-context-building/skills/audit-context-building/resources/FUNCTION_MICRO_ANALYSIS_EXAMPLE.md +355 -0
  65. package/skills/security-audit-context-building/skills/audit-context-building/resources/OUTPUT_REQUIREMENTS.md +71 -0
  66. package/skills/security-building-secure-contracts/.claude-plugin/plugin.json +10 -0
  67. package/skills/security-building-secure-contracts/README.md +241 -0
  68. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/SKILL.md +284 -0
  69. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +405 -0
  70. package/skills/security-building-secure-contracts/skills/audit-prep-assistant/SKILL.md +409 -0
  71. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/SKILL.md +329 -0
  72. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +722 -0
  73. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/SKILL.md +218 -0
  74. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/ASSESSMENT_CRITERIA.md +355 -0
  75. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/EXAMPLE_REPORT.md +248 -0
  76. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/REPORT_FORMAT.md +33 -0
  77. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/SKILL.md +334 -0
  78. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +740 -0
  79. package/skills/security-building-secure-contracts/skills/guidelines-advisor/SKILL.md +252 -0
  80. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/ASSESSMENT_AREAS.md +329 -0
  81. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/DELIVERABLES.md +118 -0
  82. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/EXAMPLE_REPORT.md +298 -0
  83. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/SKILL.md +161 -0
  84. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/EXAMPLE_REPORT.md +279 -0
  85. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/WORKFLOW_STEPS.md +132 -0
  86. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/SKILL.md +389 -0
  87. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +669 -0
  88. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/SKILL.md +298 -0
  89. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +791 -0
  90. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/SKILL.md +362 -0
  91. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/ASSESSMENT_CATEGORIES.md +571 -0
  92. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/REPORT_TEMPLATES.md +141 -0
  93. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/SKILL.md +388 -0
  94. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +595 -0
  95. package/skills/security-burpsuite-project-parser/.claude-plugin/plugin.json +10 -0
  96. package/skills/security-burpsuite-project-parser/README.md +103 -0
  97. package/skills/security-burpsuite-project-parser/commands/burp-search.md +18 -0
  98. package/skills/security-burpsuite-project-parser/skills/SKILL.md +358 -0
  99. package/skills/security-burpsuite-project-parser/skills/scripts/burp-search.sh +99 -0
  100. package/skills/security-claude-in-chrome-troubleshooting/.claude-plugin/plugin.json +8 -0
  101. package/skills/security-claude-in-chrome-troubleshooting/README.md +31 -0
  102. package/skills/security-claude-in-chrome-troubleshooting/skills/claude-in-chrome-troubleshooting/SKILL.md +251 -0
  103. package/skills/security-constant-time-analysis/.claude-plugin/plugin.json +9 -0
  104. package/skills/security-constant-time-analysis/README.md +381 -0
  105. package/skills/security-constant-time-analysis/commands/ct-check.md +20 -0
  106. package/skills/security-constant-time-analysis/ct_analyzer/__init__.py +49 -0
  107. package/skills/security-constant-time-analysis/ct_analyzer/analyzer.py +1284 -0
  108. package/skills/security-constant-time-analysis/ct_analyzer/script_analyzers.py +3081 -0
  109. package/skills/security-constant-time-analysis/ct_analyzer/tests/__init__.py +1 -0
  110. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_analyzer.py +1397 -0
  111. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/bn_excerpt.js +205 -0
  112. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_constant_time.c +181 -0
  113. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.c +74 -0
  114. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.go +78 -0
  115. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.rs +92 -0
  116. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.cs +174 -0
  117. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.java +161 -0
  118. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.kt +181 -0
  119. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.php +140 -0
  120. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.py +252 -0
  121. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.rb +188 -0
  122. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.swift +199 -0
  123. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.ts +154 -0
  124. package/skills/security-constant-time-analysis/pyproject.toml +52 -0
  125. package/skills/security-constant-time-analysis/skills/constant-time-analysis/README.md +90 -0
  126. package/skills/security-constant-time-analysis/skills/constant-time-analysis/SKILL.md +219 -0
  127. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/compiled.md +129 -0
  128. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/javascript.md +136 -0
  129. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/kotlin.md +252 -0
  130. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/php.md +172 -0
  131. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/python.md +179 -0
  132. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/ruby.md +198 -0
  133. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/swift.md +288 -0
  134. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/vm-compiled.md +354 -0
  135. package/skills/security-constant-time-analysis/uv.lock +8 -0
  136. package/skills/security-culture-index/.claude-plugin/plugin.json +8 -0
  137. package/skills/security-culture-index/README.md +79 -0
  138. package/skills/security-culture-index/skills/interpreting-culture-index/SKILL.md +293 -0
  139. package/skills/security-culture-index/skills/interpreting-culture-index/references/anti-patterns.md +255 -0
  140. package/skills/security-culture-index/skills/interpreting-culture-index/references/conversation-starters.md +408 -0
  141. package/skills/security-culture-index/skills/interpreting-culture-index/references/interview-trait-signals.md +253 -0
  142. package/skills/security-culture-index/skills/interpreting-culture-index/references/motivators.md +158 -0
  143. package/skills/security-culture-index/skills/interpreting-culture-index/references/patterns-archetypes.md +147 -0
  144. package/skills/security-culture-index/skills/interpreting-culture-index/references/primary-traits.md +307 -0
  145. package/skills/security-culture-index/skills/interpreting-culture-index/references/secondary-traits.md +228 -0
  146. package/skills/security-culture-index/skills/interpreting-culture-index/references/team-composition.md +148 -0
  147. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/check_deps.py +108 -0
  148. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/__init__.py +20 -0
  149. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/constants.py +122 -0
  150. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/extract.py +187 -0
  151. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/models.py +16 -0
  152. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/opencv_extractor.py +520 -0
  153. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/extract_pdf.py +237 -0
  154. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/pyproject.toml +18 -0
  155. package/skills/security-culture-index/skills/interpreting-culture-index/templates/burnout-report.md +113 -0
  156. package/skills/security-culture-index/skills/interpreting-culture-index/templates/comparison-report.md +103 -0
  157. package/skills/security-culture-index/skills/interpreting-culture-index/templates/hiring-profile.md +127 -0
  158. package/skills/security-culture-index/skills/interpreting-culture-index/templates/individual-report.md +85 -0
  159. package/skills/security-culture-index/skills/interpreting-culture-index/templates/predicted-profile.md +165 -0
  160. package/skills/security-culture-index/skills/interpreting-culture-index/templates/team-report.md +109 -0
  161. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/analyze-team.md +188 -0
  162. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/coach-manager.md +267 -0
  163. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/compare-profiles.md +188 -0
  164. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/define-hiring-profile.md +220 -0
  165. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/detect-burnout.md +206 -0
  166. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/extract-from-pdf.md +121 -0
  167. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interpret-individual.md +183 -0
  168. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interview-debrief.md +234 -0
  169. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/mediate-conflict.md +306 -0
  170. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/plan-onboarding.md +322 -0
  171. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/predict-from-interview.md +250 -0
  172. package/skills/security-differential-review/.claude-plugin/plugin.json +10 -0
  173. package/skills/security-differential-review/README.md +109 -0
  174. package/skills/security-differential-review/commands/diff-review.md +21 -0
  175. package/skills/security-differential-review/skills/differential-review/SKILL.md +220 -0
  176. package/skills/security-differential-review/skills/differential-review/adversarial.md +203 -0
  177. package/skills/security-differential-review/skills/differential-review/methodology.md +234 -0
  178. package/skills/security-differential-review/skills/differential-review/patterns.md +300 -0
  179. package/skills/security-differential-review/skills/differential-review/reporting.md +369 -0
  180. package/skills/security-dwarf-expert/.claude-plugin/plugin.json +10 -0
  181. package/skills/security-dwarf-expert/README.md +38 -0
  182. package/skills/security-dwarf-expert/skills/dwarf-expert/SKILL.md +93 -0
  183. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/coding.md +31 -0
  184. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/dwarfdump.md +50 -0
  185. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/readelf.md +8 -0
  186. package/skills/security-entry-point-analyzer/.claude-plugin/plugin.json +10 -0
  187. package/skills/security-entry-point-analyzer/README.md +74 -0
  188. package/skills/security-entry-point-analyzer/commands/entry-points.md +18 -0
  189. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/SKILL.md +251 -0
  190. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/cosmwasm.md +182 -0
  191. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-aptos.md +107 -0
  192. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-sui.md +87 -0
  193. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solana.md +155 -0
  194. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solidity.md +135 -0
  195. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/ton.md +185 -0
  196. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/vyper.md +141 -0
  197. package/skills/security-firebase-apk-scanner/.claude-plugin/plugin.json +10 -0
  198. package/skills/security-firebase-apk-scanner/README.md +85 -0
  199. package/skills/security-firebase-apk-scanner/commands/scan-apk.md +18 -0
  200. package/skills/security-firebase-apk-scanner/scanner.sh +1408 -0
  201. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/SKILL.md +197 -0
  202. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/references/vulnerabilities.md +803 -0
  203. package/skills/security-fix-review/.claude-plugin/plugin.json +13 -0
  204. package/skills/security-fix-review/README.md +118 -0
  205. package/skills/security-fix-review/commands/fix-review.md +24 -0
  206. package/skills/security-fix-review/skills/fix-review/SKILL.md +264 -0
  207. package/skills/security-fix-review/skills/fix-review/references/bug-detection.md +408 -0
  208. package/skills/security-fix-review/skills/fix-review/references/finding-matching.md +298 -0
  209. package/skills/security-fix-review/skills/fix-review/references/report-parsing.md +398 -0
  210. package/skills/security-insecure-defaults/.claude-plugin/plugin.json +10 -0
  211. package/skills/security-insecure-defaults/README.md +45 -0
  212. package/skills/security-insecure-defaults/skills/insecure-defaults/SKILL.md +117 -0
  213. package/skills/security-insecure-defaults/skills/insecure-defaults/references/examples.md +409 -0
  214. package/skills/security-modern-python/.claude-plugin/plugin.json +10 -0
  215. package/skills/security-modern-python/README.md +58 -0
  216. package/skills/security-modern-python/hooks/hooks.json +16 -0
  217. package/skills/security-modern-python/hooks/intercept-legacy-python.bats +388 -0
  218. package/skills/security-modern-python/hooks/intercept-legacy-python.sh +109 -0
  219. package/skills/security-modern-python/hooks/test_helper.bash +75 -0
  220. package/skills/security-modern-python/skills/modern-python/SKILL.md +333 -0
  221. package/skills/security-modern-python/skills/modern-python/references/dependabot.md +43 -0
  222. package/skills/security-modern-python/skills/modern-python/references/migration-checklist.md +141 -0
  223. package/skills/security-modern-python/skills/modern-python/references/pep723-scripts.md +259 -0
  224. package/skills/security-modern-python/skills/modern-python/references/prek.md +211 -0
  225. package/skills/security-modern-python/skills/modern-python/references/pyproject.md +254 -0
  226. package/skills/security-modern-python/skills/modern-python/references/ruff-config.md +240 -0
  227. package/skills/security-modern-python/skills/modern-python/references/security-setup.md +255 -0
  228. package/skills/security-modern-python/skills/modern-python/references/testing.md +284 -0
  229. package/skills/security-modern-python/skills/modern-python/references/uv-commands.md +200 -0
  230. package/skills/security-modern-python/skills/modern-python/templates/dependabot.yml +36 -0
  231. package/skills/security-modern-python/skills/modern-python/templates/pre-commit-config.yaml +66 -0
  232. package/skills/security-property-based-testing/.claude-plugin/plugin.json +9 -0
  233. package/skills/security-property-based-testing/README.md +47 -0
  234. package/skills/security-property-based-testing/skills/property-based-testing/README.md +88 -0
  235. package/skills/security-property-based-testing/skills/property-based-testing/SKILL.md +109 -0
  236. package/skills/security-property-based-testing/skills/property-based-testing/references/design.md +191 -0
  237. package/skills/security-property-based-testing/skills/property-based-testing/references/generating.md +200 -0
  238. package/skills/security-property-based-testing/skills/property-based-testing/references/libraries.md +130 -0
  239. package/skills/security-property-based-testing/skills/property-based-testing/references/refactoring.md +181 -0
  240. package/skills/security-property-based-testing/skills/property-based-testing/references/reviewing.md +209 -0
  241. package/skills/security-property-based-testing/skills/property-based-testing/references/strategies.md +124 -0
  242. package/skills/semgrep-rule-creator/.claude-plugin/plugin.json +8 -0
  243. package/skills/semgrep-rule-creator/README.md +43 -0
  244. package/skills/semgrep-rule-creator/commands/semgrep-rule.md +26 -0
  245. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/SKILL.md +168 -0
  246. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/quick-reference.md +203 -0
  247. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/workflow.md +240 -0
  248. package/skills/semgrep-rule-variant-creator/.claude-plugin/plugin.json +9 -0
  249. package/skills/semgrep-rule-variant-creator/README.md +86 -0
  250. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/SKILL.md +205 -0
  251. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/applicability-analysis.md +250 -0
  252. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/language-syntax-guide.md +324 -0
  253. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/workflow.md +518 -0
  254. package/skills/session-logs/SKILL.md +115 -0
  255. package/skills/sharp-edges/.claude-plugin/plugin.json +10 -0
  256. package/skills/sharp-edges/README.md +48 -0
  257. package/skills/sharp-edges/skills/sharp-edges/SKILL.md +292 -0
  258. package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +252 -0
  259. package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +274 -0
  260. package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +333 -0
  261. package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +190 -0
  262. package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +205 -0
  263. package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +285 -0
  264. package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +270 -0
  265. package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +263 -0
  266. package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +269 -0
  267. package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +265 -0
  268. package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +245 -0
  269. package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +274 -0
  270. package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +273 -0
  271. package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +272 -0
  272. package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +287 -0
  273. package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +588 -0
  274. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  275. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  276. package/skills/skill-creator/SKILL.md +370 -0
  277. package/skills/skill-creator/license.txt +202 -0
  278. package/skills/skill-creator/scripts/init_skill.py +378 -0
  279. package/skills/skill-creator/scripts/package_skill.py +111 -0
  280. package/skills/skill-creator/scripts/quick_validate.py +101 -0
  281. package/skills/slack/SKILL.md +144 -0
  282. package/skills/songsee/SKILL.md +49 -0
  283. package/skills/sonoscli/SKILL.md +46 -0
  284. package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +10 -0
  285. package/skills/spec-to-code-compliance/README.md +67 -0
  286. package/skills/spec-to-code-compliance/commands/spec-compliance.md +22 -0
  287. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +349 -0
  288. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +69 -0
  289. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +417 -0
  290. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +105 -0
  291. package/skills/spotify-player/SKILL.md +64 -0
  292. package/skills/static-analysis/.claude-plugin/plugin.json +8 -0
  293. package/skills/static-analysis/README.md +59 -0
  294. package/skills/static-analysis/skills/codeql/SKILL.md +315 -0
  295. package/skills/static-analysis/skills/sarif-parsing/SKILL.md +479 -0
  296. package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +162 -0
  297. package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +331 -0
  298. package/skills/static-analysis/skills/semgrep/SKILL.md +337 -0
  299. package/skills/summarize/SKILL.md +87 -0
  300. package/skills/testing-handbook-skills/.claude-plugin/plugin.json +8 -0
  301. package/skills/testing-handbook-skills/README.md +241 -0
  302. package/skills/testing-handbook-skills/scripts/pyproject.toml +8 -0
  303. package/skills/testing-handbook-skills/scripts/validate-skills.py +657 -0
  304. package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +341 -0
  305. package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +640 -0
  306. package/skills/testing-handbook-skills/skills/atheris/SKILL.md +515 -0
  307. package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +454 -0
  308. package/skills/testing-handbook-skills/skills/codeql/SKILL.md +549 -0
  309. package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +507 -0
  310. package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +607 -0
  311. package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +297 -0
  312. package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +426 -0
  313. package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +614 -0
  314. package/skills/testing-handbook-skills/skills/libafl/SKILL.md +625 -0
  315. package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +795 -0
  316. package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +426 -0
  317. package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +443 -0
  318. package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +601 -0
  319. package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +372 -0
  320. package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +280 -0
  321. package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +452 -0
  322. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +504 -0
  323. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +454 -0
  324. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +527 -0
  325. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +366 -0
  326. package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +482 -0
  327. package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +533 -0
  328. package/skills/things-mac/SKILL.md +86 -0
  329. package/skills/tmux/SKILL.md +135 -0
  330. package/skills/tmux/scripts/find-sessions.sh +112 -0
  331. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  332. package/skills/trello/SKILL.md +95 -0
  333. package/skills/variant-analysis/.claude-plugin/plugin.json +8 -0
  334. package/skills/variant-analysis/README.md +41 -0
  335. package/skills/variant-analysis/commands/variants.md +23 -0
  336. package/skills/variant-analysis/skills/variant-analysis/METHODOLOGY.md +327 -0
  337. package/skills/variant-analysis/skills/variant-analysis/SKILL.md +142 -0
  338. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/cpp.ql +119 -0
  339. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/go.ql +69 -0
  340. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/java.ql +71 -0
  341. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/javascript.ql +63 -0
  342. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/python.ql +80 -0
  343. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/cpp.yaml +98 -0
  344. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/go.yaml +63 -0
  345. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/java.yaml +61 -0
  346. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/javascript.yaml +60 -0
  347. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/python.yaml +72 -0
  348. package/skills/variant-analysis/skills/variant-analysis/resources/variant-report-template.md +75 -0
  349. package/skills/video-frames/SKILL.md +46 -0
  350. package/skills/video-frames/scripts/frame.sh +81 -0
  351. package/skills/voice-call/SKILL.md +45 -0
  352. package/skills/wacli/SKILL.md +72 -0
  353. package/skills/weather/SKILL.md +54 -0
  354. package/skills/yara-authoring/.claude-plugin/plugin.json +9 -0
  355. package/skills/yara-authoring/README.md +131 -0
  356. package/skills/yara-authoring/skills/yara-rule-authoring/SKILL.md +645 -0
  357. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Mac_ProtonRAT_Jan25.yar +99 -0
  358. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_NPM_SupplyChain_Jan25.yar +170 -0
  359. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Win_Remcos_Jan25.yar +103 -0
  360. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_CRX_SuspiciousPermissions.yar +134 -0
  361. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_JS_Obfuscation_Jan25.yar +185 -0
  362. package/skills/yara-authoring/skills/yara-rule-authoring/references/crx-module.md +214 -0
  363. package/skills/yara-authoring/skills/yara-rule-authoring/references/dex-module.md +383 -0
  364. package/skills/yara-authoring/skills/yara-rule-authoring/references/performance.md +333 -0
  365. package/skills/yara-authoring/skills/yara-rule-authoring/references/strings.md +433 -0
  366. package/skills/yara-authoring/skills/yara-rule-authoring/references/style-guide.md +257 -0
  367. package/skills/yara-authoring/skills/yara-rule-authoring/references/testing.md +399 -0
  368. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/atom_analyzer.py +526 -0
  369. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/pyproject.toml +25 -0
  370. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/yara_lint.py +631 -0
  371. 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