@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,515 @@
1
+ ---
2
+ name: atheris
3
+ type: fuzzer
4
+ description: >
5
+ Atheris is a coverage-guided Python fuzzer based on libFuzzer.
6
+ Use for fuzzing pure Python code and Python C extensions.
7
+ ---
8
+
9
+ # Atheris
10
+
11
+ Atheris is a coverage-guided Python fuzzer built on libFuzzer. It enables fuzzing of both pure Python code and Python C extensions with integrated AddressSanitizer support for detecting memory corruption issues.
12
+
13
+ ## When to Use
14
+
15
+ | Fuzzer | Best For | Complexity |
16
+ |--------|----------|------------|
17
+ | Atheris | Python code and C extensions | Low-Medium |
18
+ | Hypothesis | Property-based testing | Low |
19
+ | python-afl | AFL-style fuzzing | Medium |
20
+
21
+ **Choose Atheris when:**
22
+ - Fuzzing pure Python code with coverage guidance
23
+ - Testing Python C extensions for memory corruption
24
+ - Integration with libFuzzer ecosystem is desired
25
+ - AddressSanitizer support is needed
26
+
27
+ ## Quick Start
28
+
29
+ ```python
30
+ import sys
31
+ import atheris
32
+
33
+ @atheris.instrument_func
34
+ def test_one_input(data: bytes):
35
+ if len(data) == 4:
36
+ if data[0] == 0x46: # "F"
37
+ if data[1] == 0x55: # "U"
38
+ if data[2] == 0x5A: # "Z"
39
+ if data[3] == 0x5A: # "Z"
40
+ raise RuntimeError("You caught me")
41
+
42
+ def main():
43
+ atheris.Setup(sys.argv, test_one_input)
44
+ atheris.Fuzz()
45
+
46
+ if __name__ == "__main__":
47
+ main()
48
+ ```
49
+
50
+ Run:
51
+ ```bash
52
+ python fuzz.py
53
+ ```
54
+
55
+ ## Installation
56
+
57
+ Atheris supports 32-bit and 64-bit Linux, and macOS. We recommend fuzzing on Linux because it's simpler to manage and often faster.
58
+
59
+ ### Prerequisites
60
+
61
+ - Python 3.7 or later
62
+ - Recent version of clang (preferably [latest release](https://github.com/llvm/llvm-project/releases))
63
+ - For Docker users: [Docker Desktop](https://www.docker.com/products/docker-desktop/)
64
+
65
+ ### Linux/macOS
66
+
67
+ ```bash
68
+ uv pip install atheris
69
+ ```
70
+
71
+ ### Docker Environment (Recommended)
72
+
73
+ For a fully operational Linux environment with all dependencies configured:
74
+
75
+ ```dockerfile
76
+ # https://hub.docker.com/_/python
77
+ ARG PYTHON_VERSION=3.11
78
+
79
+ FROM python:$PYTHON_VERSION-slim-bookworm
80
+
81
+ RUN python --version
82
+
83
+ RUN apt update && apt install -y \
84
+ ca-certificates \
85
+ wget \
86
+ && rm -rf /var/lib/apt/lists/*
87
+
88
+ # LLVM builds version 15-19 for Debian 12 (Bookworm)
89
+ # https://apt.llvm.org/bookworm/dists/
90
+ ARG LLVM_VERSION=19
91
+
92
+ RUN echo "deb http://apt.llvm.org/bookworm/ llvm-toolchain-bookworm-$LLVM_VERSION main" > /etc/apt/sources.list.d/llvm.list
93
+ RUN echo "deb-src http://apt.llvm.org/bookworm/ llvm-toolchain-bookworm-$LLVM_VERSION main" >> /etc/apt/sources.list.d/llvm.list
94
+ RUN wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key > /etc/apt/trusted.gpg.d/apt.llvm.org.asc
95
+
96
+ RUN apt update && apt install -y \
97
+ build-essential \
98
+ clang-$LLVM_VERSION \
99
+ && rm -rf /var/lib/apt/lists/*
100
+
101
+ ENV APP_DIR "/app"
102
+ RUN mkdir $APP_DIR
103
+ WORKDIR $APP_DIR
104
+
105
+ ENV VIRTUAL_ENV "/opt/venv"
106
+ RUN python -m venv $VIRTUAL_ENV
107
+ ENV PATH "$VIRTUAL_ENV/bin:$PATH"
108
+
109
+ # https://github.com/google/atheris/blob/master/native_extension_fuzzing.md#step-1-compiling-your-extension
110
+ ENV CC="clang-$LLVM_VERSION"
111
+ ENV CFLAGS "-fsanitize=address,fuzzer-no-link"
112
+ ENV CXX="clang++-$LLVM_VERSION"
113
+ ENV CXXFLAGS "-fsanitize=address,fuzzer-no-link"
114
+ ENV LDSHARED="clang-$LLVM_VERSION -shared"
115
+ ENV LDSHAREDXX="clang++-$LLVM_VERSION -shared"
116
+ ENV ASAN_SYMBOLIZER_PATH="/usr/bin/llvm-symbolizer-$LLVM_VERSION"
117
+
118
+ # Allow Atheris to find fuzzer sanitizer shared libs
119
+ # https://github.com/google/atheris#building-from-source
120
+ RUN LIBFUZZER_LIB=$($CC -print-file-name=libclang_rt.fuzzer_no_main-$(uname -m).a) \
121
+ python -m pip install --no-binary atheris atheris
122
+
123
+ # https://github.com/google/atheris/blob/master/native_extension_fuzzing.md#option-a-sanitizerlibfuzzer-preloads
124
+ ENV LD_PRELOAD "$VIRTUAL_ENV/lib/python3.11/site-packages/asan_with_fuzzer.so"
125
+
126
+ # 1. Skip memory allocation failures for now, they are common, and low impact (DoS)
127
+ # 2. https://github.com/google/atheris/blob/master/native_extension_fuzzing.md#leak-detection
128
+ ENV ASAN_OPTIONS "allocator_may_return_null=1,detect_leaks=0"
129
+
130
+ CMD ["/bin/bash"]
131
+ ```
132
+
133
+ Build and run:
134
+ ```bash
135
+ docker build -t atheris .
136
+ docker run -it atheris
137
+ ```
138
+
139
+ ### Verification
140
+
141
+ ```bash
142
+ python -c "import atheris; print(atheris.__version__)"
143
+ ```
144
+
145
+ ## Writing a Harness
146
+
147
+ ### Harness Structure for Pure Python
148
+
149
+ ```python
150
+ import sys
151
+ import atheris
152
+
153
+ @atheris.instrument_func
154
+ def test_one_input(data: bytes):
155
+ """
156
+ Fuzzing entry point. Called with random byte sequences.
157
+
158
+ Args:
159
+ data: Random bytes generated by the fuzzer
160
+ """
161
+ # Add input validation if needed
162
+ if len(data) < 1:
163
+ return
164
+
165
+ # Call your target function
166
+ try:
167
+ your_target_function(data)
168
+ except ValueError:
169
+ # Expected exceptions should be caught
170
+ pass
171
+ # Let unexpected exceptions crash (that's what we're looking for!)
172
+
173
+ def main():
174
+ atheris.Setup(sys.argv, test_one_input)
175
+ atheris.Fuzz()
176
+
177
+ if __name__ == "__main__":
178
+ main()
179
+ ```
180
+
181
+ ### Harness Rules
182
+
183
+ | Do | Don't |
184
+ |----|-------|
185
+ | Use `@atheris.instrument_func` for coverage | Forget to instrument target code |
186
+ | Catch expected exceptions | Catch all exceptions indiscriminately |
187
+ | Use `atheris.instrument_imports()` for libraries | Import modules after `atheris.Setup()` |
188
+ | Keep harness deterministic | Use randomness or time-based behavior |
189
+
190
+ > **See Also:** For detailed harness writing techniques, patterns for handling complex inputs,
191
+ > and advanced strategies, see the **fuzz-harness-writing** technique skill.
192
+
193
+ ## Fuzzing Pure Python Code
194
+
195
+ For fuzzing broader parts of an application or library, use instrumentation functions:
196
+
197
+ ```python
198
+ import atheris
199
+ with atheris.instrument_imports():
200
+ import your_module
201
+ from another_module import target_function
202
+
203
+ def test_one_input(data: bytes):
204
+ target_function(data)
205
+
206
+ atheris.Setup(sys.argv, test_one_input)
207
+ atheris.Fuzz()
208
+ ```
209
+
210
+ **Instrumentation Options:**
211
+ - `atheris.instrument_func` - Decorator for single function instrumentation
212
+ - `atheris.instrument_imports()` - Context manager for instrumenting all imported modules
213
+ - `atheris.instrument_all()` - Instrument all Python code system-wide
214
+
215
+ ## Fuzzing Python C Extensions
216
+
217
+ Python C extensions require compilation with specific flags for instrumentation and sanitizer support.
218
+
219
+ ### Environment Configuration
220
+
221
+ If using the provided Dockerfile, these are already configured. For local setup:
222
+
223
+ ```bash
224
+ export CC="clang"
225
+ export CFLAGS="-fsanitize=address,fuzzer-no-link"
226
+ export CXX="clang++"
227
+ export CXXFLAGS="-fsanitize=address,fuzzer-no-link"
228
+ export LDSHARED="clang -shared"
229
+ ```
230
+
231
+ ### Example: Fuzzing cbor2
232
+
233
+ Install the extension from source:
234
+ ```bash
235
+ CBOR2_BUILD_C_EXTENSION=1 python -m pip install --no-binary cbor2 cbor2==5.6.4
236
+ ```
237
+
238
+ The `--no-binary` flag ensures the C extension is compiled locally with instrumentation.
239
+
240
+ Create `cbor2-fuzz.py`:
241
+ ```python
242
+ import sys
243
+ import atheris
244
+
245
+ # _cbor2 ensures the C library is imported
246
+ from _cbor2 import loads
247
+
248
+ def test_one_input(data: bytes):
249
+ try:
250
+ loads(data)
251
+ except Exception:
252
+ # We're searching for memory corruption, not Python exceptions
253
+ pass
254
+
255
+ def main():
256
+ atheris.Setup(sys.argv, test_one_input)
257
+ atheris.Fuzz()
258
+
259
+ if __name__ == "__main__":
260
+ main()
261
+ ```
262
+
263
+ Run:
264
+ ```bash
265
+ python cbor2-fuzz.py
266
+ ```
267
+
268
+ > **Important:** When running locally (not in Docker), you must [set `LD_PRELOAD` manually](https://github.com/google/atheris/blob/master/native_extension_fuzzing.md#option-a-sanitizerlibfuzzer-preloads).
269
+
270
+ ## Corpus Management
271
+
272
+ ### Creating Initial Corpus
273
+
274
+ ```bash
275
+ mkdir corpus
276
+ # Add seed inputs
277
+ echo "test data" > corpus/seed1
278
+ echo '{"key": "value"}' > corpus/seed2
279
+ ```
280
+
281
+ Run with corpus:
282
+ ```bash
283
+ python fuzz.py corpus/
284
+ ```
285
+
286
+ ### Corpus Minimization
287
+
288
+ Atheris inherits corpus minimization from libFuzzer:
289
+ ```bash
290
+ python fuzz.py -merge=1 new_corpus/ old_corpus/
291
+ ```
292
+
293
+ > **See Also:** For corpus creation strategies, dictionaries, and seed selection,
294
+ > see the **fuzzing-corpus** technique skill.
295
+
296
+ ## Running Campaigns
297
+
298
+ ### Basic Run
299
+
300
+ ```bash
301
+ python fuzz.py
302
+ ```
303
+
304
+ ### With Corpus Directory
305
+
306
+ ```bash
307
+ python fuzz.py corpus/
308
+ ```
309
+
310
+ ### Common Options
311
+
312
+ ```bash
313
+ # Run for 10 minutes
314
+ python fuzz.py -max_total_time=600
315
+
316
+ # Limit input size
317
+ python fuzz.py -max_len=1024
318
+
319
+ # Run with multiple workers
320
+ python fuzz.py -workers=4 -jobs=4
321
+ ```
322
+
323
+ ### Interpreting Output
324
+
325
+ | Output | Meaning |
326
+ |--------|---------|
327
+ | `NEW cov: X` | Found new coverage, corpus expanded |
328
+ | `pulse cov: X` | Periodic status update |
329
+ | `exec/s: X` | Executions per second (throughput) |
330
+ | `corp: X/Yb` | Corpus size: X inputs, Y bytes total |
331
+ | `ERROR: libFuzzer` | Crash detected |
332
+
333
+ ## Sanitizer Integration
334
+
335
+ ### AddressSanitizer (ASan)
336
+
337
+ AddressSanitizer is automatically integrated when using the provided Docker environment or when compiling with appropriate flags.
338
+
339
+ For local setup:
340
+ ```bash
341
+ export CFLAGS="-fsanitize=address,fuzzer-no-link"
342
+ export CXXFLAGS="-fsanitize=address,fuzzer-no-link"
343
+ ```
344
+
345
+ Configure ASan behavior:
346
+ ```bash
347
+ export ASAN_OPTIONS="allocator_may_return_null=1,detect_leaks=0"
348
+ ```
349
+
350
+ ### LD_PRELOAD Configuration
351
+
352
+ For native extension fuzzing:
353
+ ```bash
354
+ export LD_PRELOAD="$(python -c 'import atheris; import os; print(os.path.join(os.path.dirname(atheris.__file__), "asan_with_fuzzer.so"))')"
355
+ ```
356
+
357
+ > **See Also:** For detailed sanitizer configuration, common issues, and advanced flags,
358
+ > see the **address-sanitizer** and **undefined-behavior-sanitizer** technique skills.
359
+
360
+ ### Common Sanitizer Issues
361
+
362
+ | Issue | Solution |
363
+ |-------|----------|
364
+ | `LD_PRELOAD` not set | Export `LD_PRELOAD` to point to `asan_with_fuzzer.so` |
365
+ | Memory allocation failures | Set `ASAN_OPTIONS=allocator_may_return_null=1` |
366
+ | Leak detection noise | Set `ASAN_OPTIONS=detect_leaks=0` |
367
+ | Missing symbolizer | Set `ASAN_SYMBOLIZER_PATH` to `llvm-symbolizer` |
368
+
369
+ ## Advanced Usage
370
+
371
+ ### Tips and Tricks
372
+
373
+ | Tip | Why It Helps |
374
+ |-----|--------------|
375
+ | Use `atheris.instrument_imports()` early | Ensures all imports are instrumented for coverage |
376
+ | Start with small `max_len` | Faster initial fuzzing, gradually increase |
377
+ | Use dictionaries for structured formats | Helps fuzzer understand format tokens |
378
+ | Run multiple parallel instances | Better coverage exploration |
379
+
380
+ ### Custom Instrumentation
381
+
382
+ Fine-tune what gets instrumented:
383
+ ```python
384
+ import atheris
385
+
386
+ # Instrument only specific modules
387
+ with atheris.instrument_imports():
388
+ import target_module
389
+ # Don't instrument test harness code
390
+
391
+ def test_one_input(data: bytes):
392
+ target_module.parse(data)
393
+ ```
394
+
395
+ ### Performance Tuning
396
+
397
+ | Setting | Impact |
398
+ |---------|--------|
399
+ | `-max_len=N` | Smaller values = faster execution |
400
+ | `-workers=N -jobs=N` | Parallel fuzzing for faster coverage |
401
+ | `ASAN_OPTIONS=fast_unwind_on_malloc=0` | Better stack traces, slower execution |
402
+
403
+ ### UndefinedBehaviorSanitizer (UBSan)
404
+
405
+ Add UBSan to catch additional bugs:
406
+ ```bash
407
+ export CFLAGS="-fsanitize=address,undefined,fuzzer-no-link"
408
+ export CXXFLAGS="-fsanitize=address,undefined,fuzzer-no-link"
409
+ ```
410
+
411
+ Note: Modify flags in Dockerfile if using containerized setup.
412
+
413
+ ## Real-World Examples
414
+
415
+ ### Example: Pure Python Parser
416
+
417
+ ```python
418
+ import sys
419
+ import atheris
420
+ import json
421
+
422
+ @atheris.instrument_func
423
+ def test_one_input(data: bytes):
424
+ try:
425
+ # Fuzz Python's JSON parser
426
+ json.loads(data.decode('utf-8', errors='ignore'))
427
+ except (ValueError, UnicodeDecodeError):
428
+ pass
429
+
430
+ def main():
431
+ atheris.Setup(sys.argv, test_one_input)
432
+ atheris.Fuzz()
433
+
434
+ if __name__ == "__main__":
435
+ main()
436
+ ```
437
+
438
+ ### Example: HTTP Request Parsing
439
+
440
+ ```python
441
+ import sys
442
+ import atheris
443
+
444
+ with atheris.instrument_imports():
445
+ from urllib3 import HTTPResponse
446
+ from io import BytesIO
447
+
448
+ def test_one_input(data: bytes):
449
+ try:
450
+ # Fuzz HTTP response parsing
451
+ fake_response = HTTPResponse(
452
+ body=BytesIO(data),
453
+ headers={},
454
+ preload_content=False
455
+ )
456
+ fake_response.read()
457
+ except Exception:
458
+ pass
459
+
460
+ def main():
461
+ atheris.Setup(sys.argv, test_one_input)
462
+ atheris.Fuzz()
463
+
464
+ if __name__ == "__main__":
465
+ main()
466
+ ```
467
+
468
+ ## Troubleshooting
469
+
470
+ | Problem | Cause | Solution |
471
+ |---------|-------|----------|
472
+ | No coverage increase | Poor seed corpus or target not instrumented | Add better seeds, verify `instrument_imports()` |
473
+ | Slow execution | ASan overhead or large inputs | Reduce `max_len`, use `ASAN_OPTIONS=fast_unwind_on_malloc=1` |
474
+ | Import errors | Modules imported before instrumentation | Move imports inside `instrument_imports()` context |
475
+ | Segfault without ASan output | Missing `LD_PRELOAD` | Set `LD_PRELOAD` to `asan_with_fuzzer.so` path |
476
+ | Build failures | Wrong compiler or missing flags | Verify `CC`, `CFLAGS`, and clang version |
477
+
478
+ ## Related Skills
479
+
480
+ ### Technique Skills
481
+
482
+ | Skill | Use Case |
483
+ |-------|----------|
484
+ | **fuzz-harness-writing** | Detailed guidance on writing effective harnesses |
485
+ | **address-sanitizer** | Memory error detection during fuzzing |
486
+ | **undefined-behavior-sanitizer** | Catching undefined behavior in C extensions |
487
+ | **coverage-analysis** | Measuring and improving code coverage |
488
+ | **fuzzing-corpus** | Building and managing seed corpora |
489
+
490
+ ### Related Fuzzers
491
+
492
+ | Skill | When to Consider |
493
+ |-------|------------------|
494
+ | **hypothesis** | Property-based testing with type-aware generation |
495
+ | **python-afl** | AFL-style fuzzing for Python when Atheris isn't available |
496
+
497
+ ## Resources
498
+
499
+ ### Key External Resources
500
+
501
+ **[Atheris GitHub Repository](https://github.com/google/atheris)**
502
+ Official repository with installation instructions, examples, and documentation for fuzzing both pure Python and native extensions.
503
+
504
+ **[Native Extension Fuzzing Guide](https://github.com/google/atheris/blob/master/native_extension_fuzzing.md)**
505
+ Comprehensive guide covering compilation flags, LD_PRELOAD setup, sanitizer configuration, and troubleshooting for Python C extensions.
506
+
507
+ **[Continuously Fuzzing Python C Extensions](https://blog.trailofbits.com/2024/02/23/continuously-fuzzing-python-c-extensions/)**
508
+ Trail of Bits blog post covering CI/CD integration, ClusterFuzzLite setup, and real-world examples of fuzzing Python C extensions in continuous integration pipelines.
509
+
510
+ **[ClusterFuzzLite Python Integration](https://google.github.io/clusterfuzzlite/build-integration/python-lang/)**
511
+ Guide for integrating Atheris fuzzing into CI/CD pipelines using ClusterFuzzLite for automated continuous fuzzing.
512
+
513
+ ### Video Resources
514
+
515
+ Videos and tutorials are available in the main Atheris documentation and libFuzzer resources.