@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,640 @@
1
+ ---
2
+ name: aflpp
3
+ type: fuzzer
4
+ description: >
5
+ AFL++ is a fork of AFL with better fuzzing performance and advanced features.
6
+ Use for multi-core fuzzing of C/C++ projects.
7
+ ---
8
+
9
+ # AFL++
10
+
11
+ AFL++ is a fork of the original AFL fuzzer that offers better fuzzing performance and more advanced features while maintaining stability. A major benefit over libFuzzer is that AFL++ has stable support for running fuzzing campaigns on multiple cores, making it ideal for large-scale fuzzing efforts.
12
+
13
+ ## When to Use
14
+
15
+ | Fuzzer | Best For | Complexity |
16
+ |--------|----------|------------|
17
+ | AFL++ | Multi-core fuzzing, diverse mutations, mature projects | Medium |
18
+ | libFuzzer | Quick setup, single-threaded, simple harnesses | Low |
19
+ | LibAFL | Custom fuzzers, research, advanced use cases | High |
20
+
21
+ **Choose AFL++ when:**
22
+ - You need multi-core fuzzing to maximize throughput
23
+ - Your project can be compiled with Clang or GCC
24
+ - You want diverse mutation strategies and mature tooling
25
+ - libFuzzer has plateaued and you need more coverage
26
+ - You're fuzzing production codebases that benefit from parallel execution
27
+
28
+ ## Quick Start
29
+
30
+ ```c++
31
+ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
32
+ // Call your code with fuzzer-provided data
33
+ check_buf((char*)data, size);
34
+ return 0;
35
+ }
36
+ ```
37
+
38
+ Compile and run:
39
+ ```bash
40
+ # Setup AFL++ wrapper script first (see Installation)
41
+ ./afl++ docker afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
42
+ mkdir seeds && echo "aaaa" > seeds/minimal_seed
43
+ ./afl++ docker afl-fuzz -i seeds -o out -- ./fuzz
44
+ ```
45
+
46
+ ## Installation
47
+
48
+ AFL++ has many dependencies including LLVM, Python, and Rust. We recommend using a current Debian or Ubuntu distribution for fuzzing with AFL++.
49
+
50
+ | Method | When to Use | Supported Compilers |
51
+ |--------|-------------|---------------------|
52
+ | Ubuntu/Debian repos | Recent Ubuntu, basic features only | Ubuntu 23.10: Clang 14 & GCC 13<br>Debian 12: Clang 14 & GCC 12 |
53
+ | Docker (from Docker Hub) | Specific AFL++ version, Apple Silicon support | As of 4.35c: Clang 19 & GCC 11 |
54
+ | Docker (from source) | Test unreleased features, apply patches | Configurable in Dockerfile |
55
+ | From source | Avoid Docker, need specific patches | Adjustable via `LLVM_CONFIG` env var |
56
+
57
+ ### Ubuntu/Debian
58
+
59
+ Prior to installing afl++, check the clang version dependency of the packge with `apt-cache show afl++`, and install the matching `lld` version (e.g., `lld-17`).
60
+
61
+
62
+ ```bash
63
+ apt install afl++ lld-17
64
+ ```
65
+
66
+
67
+ ### Docker (from Docker Hub)
68
+
69
+ ```bash
70
+ docker pull aflplusplus/aflplusplus:stable
71
+ ```
72
+
73
+ ### Docker (from source)
74
+
75
+ ```bash
76
+ git clone --depth 1 --branch stable https://github.com/AFLplusplus/AFLplusplus
77
+ cd AFLplusplus
78
+ docker build -t aflplusplus .
79
+ ```
80
+
81
+ ### From source
82
+
83
+ Refer to the [Dockerfile](https://github.com/AFLplusplus/AFLplusplus/blob/stable/Dockerfile) for Ubuntu version requirements and dependencies. Set `LLVM_CONFIG` to specify Clang version (e.g., `llvm-config-18`).
84
+
85
+ ### Wrapper Script Setup
86
+
87
+ Create a wrapper script to run AFL++ on host or Docker:
88
+
89
+ ```bash
90
+ cat <<'EOF' > ./afl++
91
+ #!/bin/sh
92
+ AFL_VERSION="${AFL_VERSION:-"stable"}"
93
+ case "$1" in
94
+ host)
95
+ shift
96
+ bash -c "$*"
97
+ ;;
98
+ docker)
99
+ shift
100
+ /usr/bin/env docker run -ti \
101
+ --privileged \
102
+ -v ./:/src \
103
+ --rm \
104
+ --name afl_fuzzing \
105
+ "aflplusplus/aflplusplus:$AFL_VERSION" \
106
+ bash -c "cd /src && bash -c \"$*\""
107
+ ;;
108
+ *)
109
+ echo "Usage: $0 {host|docker}"
110
+ exit 1
111
+ ;;
112
+ esac
113
+ EOF
114
+ chmod +x ./afl++
115
+ ```
116
+
117
+ **Security Warning:** The `afl-system-config` and `afl-persistent-config` scripts require root privileges and disable OS security features. Do not fuzz on production systems or your development environment. Use a dedicated VM instead.
118
+
119
+ ### System Configuration
120
+
121
+ Run after each reboot for up to 15% more executions per second:
122
+
123
+ ```bash
124
+ ./afl++ <host/docker> afl-system-config
125
+ ```
126
+
127
+ For maximum performance, disable kernel security mitigations (requires grub bootloader, not supported in Docker):
128
+
129
+ ```bash
130
+ ./afl++ host afl-persistent-config
131
+ update-grub
132
+ reboot
133
+ ./afl++ <host/docker> afl-system-config
134
+ ```
135
+
136
+ Verify with `cat /proc/cmdline` - output should include `mitigations=off`.
137
+
138
+ ## Writing a Harness
139
+
140
+ ### Harness Structure
141
+
142
+ AFL++ supports libFuzzer-style harnesses:
143
+
144
+ ```c++
145
+ #include <stdint.h>
146
+ #include <stddef.h>
147
+
148
+ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
149
+ // 1. Validate input size if needed
150
+ if (size < MIN_SIZE || size > MAX_SIZE) return 0;
151
+
152
+ // 2. Call target function with fuzz data
153
+ target_function(data, size);
154
+
155
+ // 3. Return 0 (non-zero reserved for future use)
156
+ return 0;
157
+ }
158
+ ```
159
+
160
+ ### Harness Rules
161
+
162
+ | Do | Don't |
163
+ |----|-------|
164
+ | Reset global state between runs | Rely on state from previous runs |
165
+ | Handle edge cases gracefully | Exit on invalid input |
166
+ | Keep harness deterministic | Use random number generators |
167
+ | Free allocated memory | Create memory leaks |
168
+ | Validate input sizes | Process unbounded input |
169
+
170
+ > **See Also:** For detailed harness writing techniques, patterns for handling complex inputs,
171
+ > and advanced strategies, see the **fuzz-harness-writing** technique skill.
172
+
173
+ ## Compilation
174
+
175
+ AFL++ offers multiple compilation modes with different trade-offs.
176
+
177
+ ### Compilation Mode Decision Tree
178
+
179
+ Choose your compilation mode:
180
+ - **LTO mode** (`afl-clang-lto`): Best performance and instrumentation. Try this first.
181
+ - **LLVM mode** (`afl-clang-fast`): Fall back if LTO fails to compile.
182
+ - **GCC plugin** (`afl-gcc-fast`): For projects requiring GCC.
183
+
184
+ ### Basic Compilation (LLVM mode)
185
+
186
+ ```bash
187
+ ./afl++ <host/docker> afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
188
+ ```
189
+
190
+ ### GCC Compilation
191
+
192
+ ```bash
193
+ ./afl++ <host/docker> afl-g++-fast -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
194
+ ```
195
+
196
+ **Important:** GCC version must match the version used to compile the AFL++ GCC plugin.
197
+
198
+ ### With Sanitizers
199
+
200
+ ```bash
201
+ ./afl++ <host/docker> AFL_USE_ASAN=1 afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
202
+ ```
203
+
204
+ > **See Also:** For detailed sanitizer configuration, common issues, and advanced flags,
205
+ > see the **address-sanitizer** and **undefined-behavior-sanitizer** technique skills.
206
+
207
+ ### Build Flags
208
+
209
+ Note that `-g` is not necessary, it is added by default by the AFL++ compilers.
210
+
211
+ | Flag | Purpose |
212
+ |------|---------|
213
+ | `-DNO_MAIN=1` | Skip main function when using libFuzzer harness |
214
+ | `-O2` | Production optimization level (recommended for fuzzing) |
215
+ | `-fsanitize=fuzzer` | Enable libFuzzer compatibility mode and adds the fuzzer runtime when linking executable |
216
+ | `-fsanitize=fuzzer-no-link` | Instrument without linking fuzzer runtime (for static libraries and object files) |
217
+
218
+ ## Corpus Management
219
+
220
+ ### Creating Initial Corpus
221
+
222
+ AFL++ requires at least one non-empty seed file:
223
+
224
+ ```bash
225
+ mkdir seeds
226
+ echo "aaaa" > seeds/minimal_seed
227
+ ```
228
+
229
+ For real projects, gather representative inputs:
230
+ - Download example files for the format you're fuzzing
231
+ - Extract test cases from the project's test suite
232
+ - Use minimal valid inputs for your file format
233
+
234
+ ### Corpus Minimization
235
+
236
+ After a campaign, minimize the corpus to keep only unique coverage:
237
+
238
+ ```bash
239
+ ./afl++ <host/docker> afl-cmin -i out/default/queue -o minimized_corpus -- ./fuzz
240
+ ```
241
+
242
+ > **See Also:** For corpus creation strategies, dictionaries, and seed selection,
243
+ > see the **fuzzing-corpus** technique skill.
244
+
245
+ ## Running Campaigns
246
+
247
+ ### Basic Run
248
+
249
+ ```bash
250
+ ./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz
251
+ ```
252
+
253
+ ### Setting Environment Variables
254
+
255
+ ```bash
256
+ ./afl++ <host/docker> AFL_FAST_CAL=1 afl-fuzz -i seeds -o out -- ./fuzz
257
+ ```
258
+
259
+ ### Interpreting Output
260
+
261
+ The AFL++ UI shows real-time fuzzing statistics:
262
+
263
+ | Output | Meaning |
264
+ |--------|---------|
265
+ | **execs/sec** | Execution speed - higher is better |
266
+ | **cycles done** | Number of queue passes completed |
267
+ | **corpus count** | Number of unique test cases in queue |
268
+ | **saved crashes** | Number of unique crashes found |
269
+ | **stability** | % of stable edges (should be near 100%) |
270
+
271
+ ### Output Directory Structure
272
+
273
+ ```text
274
+ out/default/
275
+ ├── cmdline # How was the SUT invoked?
276
+ ├── crashes/ # Inputs that crash the SUT
277
+ │ └── id:000000,sig:06,src:000002,time:286,execs:13105,op:havoc,rep:4
278
+ ├── hangs/ # Inputs that hang the SUT
279
+ ├── queue/ # Test cases reproducing final fuzzer state
280
+ │ ├── id:000000,time:0,execs:0,orig:minimal_seed
281
+ │ └── id:000001,src:000000,time:0,execs:8,op:havoc,rep:6,+cov
282
+ ├── fuzzer_stats # Campaign statistics
283
+ └── plot_data # Data for plotting
284
+ ```
285
+
286
+ ### Analyzing Results
287
+
288
+ View live campaign statistics:
289
+
290
+ ```bash
291
+ ./afl++ <host/docker> afl-whatsup out
292
+ ```
293
+
294
+ Create coverage plots:
295
+
296
+ ```bash
297
+ apt install gnuplot
298
+ ./afl++ <host/docker> afl-plot out/default out_graph/
299
+ ```
300
+
301
+ ### Re-executing Test Cases
302
+
303
+ ```bash
304
+ ./afl++ <host/docker> ./fuzz out/default/crashes/<test_case>
305
+ ```
306
+
307
+ ### Fuzzer Options
308
+
309
+ | Option | Purpose |
310
+ |--------|---------|
311
+ | `-G 4000` | Maximum test input length (default: 1048576 bytes) |
312
+ | `-t 1000` | Timeout in milliseconds for each test case (default: 1000ms) |
313
+ | `-m 1000` | Memory limit in megabytes (default: 0 = unlimited) |
314
+ | `-x ./dict.dict` | Use dictionary file to guide mutations |
315
+
316
+ ## Multi-Core Fuzzing
317
+
318
+ AFL++ excels at multi-core fuzzing with two major advantages:
319
+ 1. More executions per second (scales linearly with physical cores)
320
+ 2. Asymmetrical fuzzing (e.g., one ASan job, rest without sanitizers)
321
+
322
+ ### Starting a Campaign
323
+
324
+ Start the primary fuzzer (in background):
325
+
326
+ ```bash
327
+ ./afl++ <host/docker> afl-fuzz -M primary -i seeds -o state -- ./fuzz 1>primary.log 2>primary.error &
328
+ ```
329
+
330
+ Start secondary fuzzers (as many as you have cores):
331
+
332
+ ```bash
333
+ ./afl++ <host/docker> afl-fuzz -S secondary01 -i seeds -o state -- ./fuzz 1>secondary01.log 2>secondary01.error &
334
+ ./afl++ <host/docker> afl-fuzz -S secondary02 -i seeds -o state -- ./fuzz 1>secondary02.log 2>secondary02.error &
335
+ ```
336
+
337
+ ### Monitoring Multi-Core Campaigns
338
+
339
+ List all running jobs:
340
+
341
+ ```bash
342
+ jobs
343
+ ```
344
+
345
+ View live statistics (updates every second):
346
+
347
+ ```bash
348
+ ./afl++ <host/docker> watch -n1 --color afl-whatsup state/
349
+ ```
350
+
351
+ ### Stopping All Fuzzers
352
+
353
+ ```bash
354
+ kill $(jobs -p)
355
+ ```
356
+
357
+ ## Coverage Analysis
358
+
359
+ AFL++ automatically tracks coverage through edge instrumentation. Coverage information is stored in `fuzzer_stats` and `plot_data`.
360
+
361
+ ### Measuring Coverage
362
+
363
+ Use `afl-plot` to visualize coverage over time:
364
+
365
+ ```bash
366
+ ./afl++ <host/docker> afl-plot out/default out_graph/
367
+ ```
368
+
369
+ ### Improving Coverage
370
+
371
+ - Use dictionaries for format-aware fuzzing
372
+ - Run longer campaigns (cycles_wo_finds indicates plateau)
373
+ - Try different mutation strategies with multi-core fuzzing
374
+ - Analyze coverage gaps and add targeted seed inputs
375
+
376
+ > **See Also:** For detailed coverage analysis techniques, identifying coverage gaps,
377
+ > and systematic coverage improvement, see the **coverage-analysis** technique skill.
378
+
379
+ ## CMPLOG
380
+
381
+ CMPLOG/RedQueen is the best path constraint solving mechanism available in any fuzzer.
382
+ To enable it, the fuzz target needs to be instrumented for it.
383
+ Before building the fuzzing target set the environment variable:
384
+
385
+ ```bash
386
+ ./afl++ <host/docker> AFL_LLVM_CMPLOG=1 make
387
+ ```
388
+
389
+ No special action is needed for compiling and linking the harness.
390
+
391
+ To run a fuzzer instance with a CMPLOG instrumented fuzzing target, add `-c0` to the command like arguments:
392
+
393
+ ```bash
394
+ ./afl++ <host/docker> afl-fuzz -c0 -S cmplog -i seeds -o state -- ./fuzz 1>secondary02.log 2>secondary02.error &
395
+ ```
396
+
397
+ ## Sanitizer Integration
398
+
399
+ Sanitizers are essential for finding memory corruption bugs that don't cause immediate crashes.
400
+
401
+ ### AddressSanitizer (ASan)
402
+
403
+ ```bash
404
+ ./afl++ <host/docker> AFL_USE_ASAN=1 afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer harness.cc main.cc -o fuzz
405
+ ```
406
+
407
+ **Note:** Memory limit (`-m`) is not supported with ASan due to 20TB virtual memory reservation.
408
+
409
+ ### UndefinedBehaviorSanitizer (UBSan)
410
+
411
+ ```bash
412
+ ./afl++ <host/docker> AFL_USE_UBSAN=1 afl-clang-fast++ -DNO_MAIN=1 -O2 -fsanitize=fuzzer,undefined harness.cc main.cc -o fuzz
413
+ ```
414
+
415
+ ### Common Sanitizer Issues
416
+
417
+ | Issue | Solution |
418
+ |-------|----------|
419
+ | ASan slows fuzzing | Use only 1 ASan job in multi-core setup |
420
+ | Stack exhaustion | Increase stack with `ASAN_OPTIONS=stack_size=...` |
421
+ | GCC version mismatch | Ensure system GCC matches AFL++ plugin version |
422
+
423
+ > **See Also:** For comprehensive sanitizer configuration and troubleshooting,
424
+ > see the **address-sanitizer** technique skill.
425
+
426
+ ## Advanced Usage
427
+
428
+ ### Tips and Tricks
429
+
430
+ | Tip | Why It Helps |
431
+ |-----|--------------|
432
+ | Use LLVMFuzzerTestOneInput harnesses where possible | If a fuzzing campaign has at least 85% stability then this is the most efficient fuzzing style. If not then try standard input or file input fuzzing |
433
+ | Use dictionaries | Helps fuzzer discover format-specific keywords and magic bytes |
434
+ | Set realistic timeouts | Prevents false positives from system load |
435
+ | Limit input size | Larger inputs don't necessarily explore more space |
436
+ | Monitor stability | Low stability indicates non-deterministic behavior |
437
+
438
+ ### Standard Input Fuzzing
439
+
440
+ AFL++ can fuzz programs reading from stdin without a libFuzzer harness:
441
+
442
+ ```bash
443
+ ./afl++ <host/docker> afl-clang-fast++ -O2 main_stdin.c -o fuzz_stdin
444
+ ./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz_stdin
445
+ ```
446
+
447
+ This is slower than persistent mode but requires no harness code.
448
+
449
+ ### File Input Fuzzing
450
+
451
+ For programs that read files, use `@@` placeholder:
452
+
453
+ ```bash
454
+ ./afl++ <host/docker> afl-clang-fast++ -O2 main_file.c -o fuzz_file
455
+ ./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz_file @@
456
+ ```
457
+
458
+ For better performance, use `fmemopen` to create file descriptors from memory.
459
+
460
+ ### Argument Fuzzing
461
+
462
+ Fuzz command-line arguments using `argv-fuzz-inl.h`:
463
+
464
+ ```c++
465
+ #include <stdio.h>
466
+ #include <stdlib.h>
467
+ #include <string.h>
468
+
469
+ #ifdef __AFL_COMPILER
470
+ #include "argv-fuzz-inl.h"
471
+ #endif
472
+
473
+ void check_buf(char *buf, size_t buf_len) {
474
+ if(buf_len > 0 && buf[0] == 'a') {
475
+ if(buf_len > 1 && buf[1] == 'b') {
476
+ if(buf_len > 2 && buf[2] == 'c') {
477
+ abort();
478
+ }
479
+ }
480
+ }
481
+ }
482
+
483
+ int main(int argc, char *argv[]) {
484
+ #ifdef __AFL_COMPILER
485
+ AFL_INIT_ARGV();
486
+ #endif
487
+
488
+ if (argc < 2) {
489
+ fprintf(stderr, "Usage: %s <input_string>\n", argv[0]);
490
+ return 1;
491
+ }
492
+
493
+ char *input_buf = argv[1];
494
+ size_t len = strlen(input_buf);
495
+ check_buf(input_buf, len);
496
+ return 0;
497
+ }
498
+ ```
499
+
500
+ Download the header:
501
+
502
+ ```bash
503
+ curl -O https://raw.githubusercontent.com/AFLplusplus/AFLplusplus/stable/utils/argv_fuzzing/argv-fuzz-inl.h
504
+ ```
505
+
506
+ Compile and run:
507
+
508
+ ```bash
509
+ ./afl++ <host/docker> afl-clang-fast++ -O2 main_arg.c -o fuzz_arg
510
+ ./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz_arg
511
+ ```
512
+
513
+ ### Performance Tuning
514
+
515
+ | Setting | Impact |
516
+ |---------|--------|
517
+ | CPU core count | Linear scaling with physical cores |
518
+ | Persistent mode | 10-20x faster than fork server |
519
+ | `-G` input size limit | Smaller = faster, but may miss bugs |
520
+ | ASan ratio | 1 ASan job per 4-8 non-ASan jobs |
521
+
522
+ ## Real-World Examples
523
+
524
+ ### Example: libpng
525
+
526
+ Fuzzing libpng demonstrates fuzzing a C project with static libraries:
527
+
528
+ ```bash
529
+ # Get source
530
+ curl -L -O https://downloads.sourceforge.net/project/libpng/libpng16/1.6.37/libpng-1.6.37.tar.xz
531
+ tar xf libpng-1.6.37.tar.xz
532
+ cd libpng-1.6.37/
533
+
534
+ # Install dependencies
535
+ apt install zlib1g-dev
536
+
537
+ # Configure and build static library
538
+ export CC=afl-clang-fast CFLAGS=-fsanitize=fuzzer-no-link
539
+ export CXX=afl-clang-fast++ CXXFLAGS="$CFLAGS"
540
+ ./configure --enable-shared=no
541
+ export AFL_LLVM_CMPLOG=1
542
+ export AFL_USE_ASAN=1
543
+ make
544
+
545
+ # Download harness
546
+ curl -O https://raw.githubusercontent.com/glennrp/libpng/f8e5fa92b0e37ab597616f554bee254157998227/contrib/oss-fuzz/libpng_read_fuzzer.cc
547
+
548
+ # Link fuzzer
549
+ export AFL_USE_ASAN=1
550
+ $CXX -fsanitize=fuzzer libpng_read_fuzzer.cc .libs/libpng16.a -lz -o fuzz
551
+
552
+ # Prepare seeds and dictionary
553
+ mkdir seeds/
554
+ curl -o seeds/input.png https://raw.githubusercontent.com/glennrp/libpng/acfd50ae0ba3198ad734e5d4dec2b05341e50924/contrib/pngsuite/iftp1n3p08.png
555
+ curl -O https://raw.githubusercontent.com/glennrp/libpng/2fff013a6935967960a5ae626fc21432807933dd/contrib/oss-fuzz/png.dict
556
+
557
+ # Start fuzzing
558
+ ./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz
559
+ ```
560
+
561
+ ### Example: CMake-based Project
562
+
563
+ ```cmake
564
+ project(BuggyProgram)
565
+ cmake_minimum_required(VERSION 3.0)
566
+
567
+ add_executable(buggy_program main.cc)
568
+
569
+ add_executable(fuzz main.cc harness.cc)
570
+ target_compile_definitions(fuzz PRIVATE NO_MAIN=1)
571
+ target_compile_options(fuzz PRIVATE -O2 -fsanitize=fuzzer-no-link)
572
+ target_link_libraries(fuzz -fsanitize=fuzzer)
573
+ ```
574
+
575
+ Build and fuzz:
576
+
577
+ ```bash
578
+ # Build non-instrumented binary
579
+ ./afl++ <host/docker> cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .
580
+ ./afl++ <host/docker> cmake --build . --target buggy_program
581
+
582
+ # Build fuzzer
583
+ ./afl++ <host/docker> cmake -DCMAKE_C_COMPILER=afl-clang-fast -DCMAKE_CXX_COMPILER=afl-clang-fast++ .
584
+ ./afl++ <host/docker> cmake --build . --target fuzz
585
+
586
+ # Fuzz
587
+ ./afl++ <host/docker> afl-fuzz -i seeds -o out -- ./fuzz
588
+ ```
589
+
590
+ ## Troubleshooting
591
+
592
+ | Problem | Cause | Solution |
593
+ |---------|-------|----------|
594
+ | Low exec/sec (<1k) | Not using persistent mode | Create a LLVMFuzzerTestOneInput style harness |
595
+ | Low stability (<85%) | Non-deterministic code | Fuzz a program via stdin or file inputs, or create such a harness |
596
+ | GCC plugin error | GCC version mismatch | Ensure system GCC matches AFL++ build and install gcc-$GCC_VERSION-plugin-dev |
597
+ | No crashes found | Need sanitizers | Recompile with `AFL_USE_ASAN=1` |
598
+ | Memory limit exceeded | ASan uses 20TB virtual | Remove `-m` flag when using ASan |
599
+ | Docker performance loss | Virtualization overhead | Use bare metal or VM for production fuzzing |
600
+
601
+ ## Related Skills
602
+
603
+ ### Technique Skills
604
+
605
+ | Skill | Use Case |
606
+ |-------|----------|
607
+ | **fuzz-harness-writing** | Detailed guidance on writing effective harnesses |
608
+ | **address-sanitizer** | Memory error detection during fuzzing |
609
+ | **undefined-behavior-sanitizer** | Detect undefined behavior bugs |
610
+ | **fuzzing-corpus** | Building and managing seed corpora |
611
+ | **fuzzing-dictionaries** | Creating dictionaries for format-aware fuzzing |
612
+
613
+ ### Related Fuzzers
614
+
615
+ | Skill | When to Consider |
616
+ |-------|------------------|
617
+ | **libfuzzer** | Quick prototyping, single-threaded fuzzing is sufficient |
618
+ | **libafl** | Need custom mutators or research-grade features |
619
+
620
+ ## Resources
621
+
622
+ ### Key External Resources
623
+
624
+ **[AFL++ GitHub Repository](https://github.com/AFLplusplus/AFLplusplus)**
625
+ Official repository with comprehensive documentation, examples, and issue tracker.
626
+
627
+ **[Fuzzing in Depth](https://aflplus.plus/docs/fuzzing_in_depth.md)**
628
+ Advanced documentation by the AFL++ team covering instrumentation modes, optimization techniques, and advanced use cases.
629
+
630
+ **[AFL++ Under The Hood](https://blog.ritsec.club/posts/afl-under-hood/)**
631
+ Technical deep-dive into AFL++ internals, mutation strategies, and coverage tracking mechanisms.
632
+
633
+ **[AFL++: Combining Incremental Steps of Fuzzing Research](https://www.usenix.org/system/files/woot20-paper-fioraldi.pdf)**
634
+ Research paper describing AFL++ architecture and performance improvements over original AFL.
635
+
636
+ ### Video Resources
637
+
638
+ - [Fuzzing cURL](https://blog.trailofbits.com/2023/02/14/curl-audit-fuzzing-libcurl-command-line-interface/) - Trail of Bits blog post on using AFL++ argument fuzzing for cURL
639
+ - [Sudo Vulnerability Walkthrough](https://www.youtube.com/playlist?list=PLhixgUqwRTjy0gMuT4C3bmjeZjuNQyqdx) - LiveOverflow series on rediscovering CVE-2021-3156
640
+ - [Rediscovery of libpng bug](https://www.youtube.com/watch?v=PJLWlmp8CDM) - LiveOverflow video on finding CVE-2023-4863