@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,426 @@
1
+ ---
2
+ name: fuzzing-obstacles
3
+ type: technique
4
+ description: >
5
+ Techniques for patching code to overcome fuzzing obstacles.
6
+ Use when checksums, global state, or other barriers block fuzzer progress.
7
+ ---
8
+
9
+ # Overcoming Fuzzing Obstacles
10
+
11
+ Codebases often contain anti-fuzzing patterns that prevent effective coverage. Checksums, global state (like time-seeded PRNGs), and validation checks can block the fuzzer from exploring deeper code paths. This technique shows how to patch your System Under Test (SUT) to bypass these obstacles during fuzzing while preserving production behavior.
12
+
13
+ ## Overview
14
+
15
+ Many real-world programs were not designed with fuzzing in mind. They may:
16
+ - Verify checksums or cryptographic hashes before processing input
17
+ - Rely on global state (e.g., system time, environment variables)
18
+ - Use non-deterministic random number generators
19
+ - Perform complex validation that makes it difficult for the fuzzer to generate valid inputs
20
+
21
+ These patterns make fuzzing difficult because:
22
+ 1. **Checksums:** The fuzzer must guess correct hash values (astronomically unlikely)
23
+ 2. **Global state:** Same input produces different behavior across runs (breaks determinism)
24
+ 3. **Complex validation:** The fuzzer spends effort hitting validation failures instead of exploring deeper code
25
+
26
+ The solution is conditional compilation: modify code behavior during fuzzing builds while keeping production code unchanged.
27
+
28
+ ### Key Concepts
29
+
30
+ | Concept | Description |
31
+ |---------|-------------|
32
+ | SUT Patching | Modifying System Under Test to be fuzzing-friendly |
33
+ | Conditional Compilation | Code that behaves differently based on compile-time flags |
34
+ | Fuzzing Build Mode | Special build configuration that enables fuzzing-specific patches |
35
+ | False Positives | Crashes found during fuzzing that cannot occur in production |
36
+ | Determinism | Same input always produces same behavior (critical for fuzzing) |
37
+
38
+ ## When to Apply
39
+
40
+ **Apply this technique when:**
41
+ - The fuzzer gets stuck at checksum or hash verification
42
+ - Coverage reports show large blocks of unreachable code behind validation
43
+ - Code uses time-based seeds or other non-deterministic global state
44
+ - Complex validation makes it nearly impossible to generate valid inputs
45
+ - You see the fuzzer repeatedly hitting the same validation failures
46
+
47
+ **Skip this technique when:**
48
+ - The obstacle can be overcome with a good seed corpus or dictionary
49
+ - The validation is simple enough for the fuzzer to learn (e.g., magic bytes)
50
+ - You're doing grammar-based or structure-aware fuzzing that handles validation
51
+ - Skipping the check would introduce too many false positives
52
+ - The code is already fuzzing-friendly
53
+
54
+ ## Quick Reference
55
+
56
+ | Task | C/C++ | Rust |
57
+ |------|-------|------|
58
+ | Check if fuzzing build | `#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION` | `cfg!(fuzzing)` |
59
+ | Skip check during fuzzing | `#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION return -1; #endif` | `if !cfg!(fuzzing) { return Err(...) }` |
60
+ | Common obstacles | Checksums, PRNGs, time-based logic | Checksums, PRNGs, time-based logic |
61
+ | Supported fuzzers | libFuzzer, AFL++, LibAFL, honggfuzz | cargo-fuzz, libFuzzer |
62
+
63
+ ## Step-by-Step
64
+
65
+ ### Step 1: Identify the Obstacle
66
+
67
+ Run the fuzzer and analyze coverage to find code that's unreachable. Common patterns:
68
+
69
+ 1. Look for checksum/hash verification before deeper processing
70
+ 2. Check for calls to `rand()`, `time()`, or `srand()` with system seeds
71
+ 3. Find validation functions that reject most inputs
72
+ 4. Identify global state initialization that differs across runs
73
+
74
+ **Tools to help:**
75
+ - Coverage reports (see coverage-analysis technique)
76
+ - Profiling with `-fprofile-instr-generate`
77
+ - Manual code inspection of entry points
78
+
79
+ ### Step 2: Add Conditional Compilation
80
+
81
+ Modify the obstacle to bypass it during fuzzing builds.
82
+
83
+ **C/C++ Example:**
84
+
85
+ ```c++
86
+ // Before: Hard obstacle
87
+ if (checksum != expected_hash) {
88
+ return -1; // Fuzzer never gets past here
89
+ }
90
+
91
+ // After: Conditional bypass
92
+ if (checksum != expected_hash) {
93
+ #ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
94
+ return -1; // Only enforced in production
95
+ #endif
96
+ }
97
+ // Fuzzer can now explore code beyond this check
98
+ ```
99
+
100
+ **Rust Example:**
101
+
102
+ ```rust
103
+ // Before: Hard obstacle
104
+ if checksum != expected_hash {
105
+ return Err(MyError::Hash); // Fuzzer never gets past here
106
+ }
107
+
108
+ // After: Conditional bypass
109
+ if checksum != expected_hash {
110
+ if !cfg!(fuzzing) {
111
+ return Err(MyError::Hash); // Only enforced in production
112
+ }
113
+ }
114
+ // Fuzzer can now explore code beyond this check
115
+ ```
116
+
117
+ ### Step 3: Verify Coverage Improvement
118
+
119
+ After patching:
120
+
121
+ 1. Rebuild with fuzzing instrumentation
122
+ 2. Run the fuzzer for a short time
123
+ 3. Compare coverage to the unpatched version
124
+ 4. Confirm new code paths are being explored
125
+
126
+ ### Step 4: Assess False Positive Risk
127
+
128
+ Consider whether skipping the check introduces impossible program states:
129
+
130
+ - Does code after the check assume validated properties?
131
+ - Could skipping validation cause crashes that cannot occur in production?
132
+ - Is there implicit state dependency?
133
+
134
+ If false positives are likely, consider a more targeted patch (see Common Patterns below).
135
+
136
+ ## Common Patterns
137
+
138
+ ### Pattern: Bypass Checksum Validation
139
+
140
+ **Use Case:** Hash/checksum blocks all fuzzer progress
141
+
142
+ **Before:**
143
+ ```c++
144
+ uint32_t computed = hash_function(data, size);
145
+ if (computed != expected_checksum) {
146
+ return ERROR_INVALID_HASH;
147
+ }
148
+ process_data(data, size);
149
+ ```
150
+
151
+ **After:**
152
+ ```c++
153
+ uint32_t computed = hash_function(data, size);
154
+ if (computed != expected_checksum) {
155
+ #ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
156
+ return ERROR_INVALID_HASH;
157
+ #endif
158
+ }
159
+ process_data(data, size);
160
+ ```
161
+
162
+ **False positive risk:** LOW - If data processing doesn't depend on checksum correctness
163
+
164
+ ### Pattern: Deterministic PRNG Seeding
165
+
166
+ **Use Case:** Non-deterministic random state prevents reproducibility
167
+
168
+ **Before:**
169
+ ```c++
170
+ void initialize() {
171
+ srand(time(NULL)); // Different seed each run
172
+ }
173
+ ```
174
+
175
+ **After:**
176
+ ```c++
177
+ void initialize() {
178
+ #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
179
+ srand(12345); // Fixed seed for fuzzing
180
+ #else
181
+ srand(time(NULL));
182
+ #endif
183
+ }
184
+ ```
185
+
186
+ **False positive risk:** LOW - Fuzzer can explore all code paths with fixed seed
187
+
188
+ ### Pattern: Careful Validation Skip
189
+
190
+ **Use Case:** Validation must be skipped but downstream code has assumptions
191
+
192
+ **Before (Dangerous):**
193
+ ```c++
194
+ #ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
195
+ if (!validate_config(&config)) {
196
+ return -1; // Ensures config.x != 0
197
+ }
198
+ #endif
199
+
200
+ int32_t result = 100 / config.x; // CRASH: Division by zero in fuzzing!
201
+ ```
202
+
203
+ **After (Safe):**
204
+ ```c++
205
+ #ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
206
+ if (!validate_config(&config)) {
207
+ return -1;
208
+ }
209
+ #else
210
+ // During fuzzing, use safe defaults for failed validation
211
+ if (!validate_config(&config)) {
212
+ config.x = 1; // Prevent division by zero
213
+ config.y = 1;
214
+ }
215
+ #endif
216
+
217
+ int32_t result = 100 / config.x; // Safe in both builds
218
+ ```
219
+
220
+ **False positive risk:** MITIGATED - Provides safe defaults instead of skipping
221
+
222
+ ### Pattern: Bypass Complex Format Validation
223
+
224
+ **Use Case:** Multi-step validation makes valid input generation nearly impossible
225
+
226
+ **Rust Example:**
227
+
228
+ ```rust
229
+ // Before: Multiple validation stages
230
+ pub fn parse_message(data: &[u8]) -> Result<Message, Error> {
231
+ validate_magic_bytes(data)?;
232
+ validate_structure(data)?;
233
+ validate_checksums(data)?;
234
+ validate_crypto_signature(data)?;
235
+
236
+ deserialize_message(data)
237
+ }
238
+
239
+ // After: Skip expensive validation during fuzzing
240
+ pub fn parse_message(data: &[u8]) -> Result<Message, Error> {
241
+ validate_magic_bytes(data)?; // Keep cheap checks
242
+
243
+ if !cfg!(fuzzing) {
244
+ validate_structure(data)?;
245
+ validate_checksums(data)?;
246
+ validate_crypto_signature(data)?;
247
+ }
248
+
249
+ deserialize_message(data)
250
+ }
251
+ ```
252
+
253
+ **False positive risk:** MEDIUM - Deserialization must handle malformed data gracefully
254
+
255
+ ## Advanced Usage
256
+
257
+ ### Tips and Tricks
258
+
259
+ | Tip | Why It Helps |
260
+ |-----|--------------|
261
+ | Keep cheap validation | Magic bytes and size checks guide fuzzer without much cost |
262
+ | Use fixed seeds for PRNGs | Makes behavior deterministic while exploring all code paths |
263
+ | Patch incrementally | Skip one obstacle at a time and measure coverage impact |
264
+ | Add defensive defaults | When skipping validation, provide safe fallback values |
265
+ | Document all patches | Future maintainers need to understand fuzzing vs. production differences |
266
+
267
+ ### Real-World Examples
268
+
269
+ **OpenSSL:** Uses `FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION` to modify cryptographic algorithm behavior. For example, in [crypto/cmp/cmp_vfy.c](https://github.com/openssl/openssl/blob/afb19f07aecc84998eeea56c4d65f5e0499abb5a/crypto/cmp/cmp_vfy.c#L665-L678), certain signature checks are relaxed during fuzzing to allow deeper exploration of certificate validation logic.
270
+
271
+ **ogg crate (Rust):** Uses `cfg!(fuzzing)` to [skip checksum verification](https://github.com/RustAudio/ogg/blob/5ee8316e6e907c24f6d7ec4b3a0ed6a6ce854cc1/src/reading.rs#L298-L300) during fuzzing. This allows the fuzzer to explore audio processing code without spending effort guessing correct checksums.
272
+
273
+ ### Measuring Patch Effectiveness
274
+
275
+ After applying patches, quantify the improvement:
276
+
277
+ 1. **Line coverage:** Use `llvm-cov` or `cargo-cov` to see new reachable lines
278
+ 2. **Basic block coverage:** More fine-grained than line coverage
279
+ 3. **Function coverage:** How many more functions are now reachable?
280
+ 4. **Corpus size:** Does the fuzzer generate more diverse inputs?
281
+
282
+ Effective patches typically increase coverage by 10-50% or more.
283
+
284
+ ### Combining with Other Techniques
285
+
286
+ Obstacle patching works well with:
287
+ - **Corpus seeding:** Provide valid inputs that get past initial parsing
288
+ - **Dictionaries:** Help fuzzer learn magic bytes and common values
289
+ - **Structure-aware fuzzing:** Use protobuf or grammar definitions for complex formats
290
+ - **Harness improvements:** Better harness can sometimes avoid obstacles entirely
291
+
292
+ ## Anti-Patterns
293
+
294
+ | Anti-Pattern | Problem | Correct Approach |
295
+ |--------------|---------|------------------|
296
+ | Skip all validation wholesale | Creates false positives and unstable fuzzing | Skip only specific obstacles that block coverage |
297
+ | No risk assessment | False positives waste time and hide real bugs | Analyze downstream code for assumptions |
298
+ | Forget to document patches | Future maintainers don't understand the differences | Add comments explaining why patch is safe |
299
+ | Patch without measuring | Don't know if it helped | Compare coverage before and after |
300
+ | Over-patching | Makes fuzzing build diverge too much from production | Minimize differences between builds |
301
+
302
+ ## Tool-Specific Guidance
303
+
304
+ ### libFuzzer
305
+
306
+ libFuzzer automatically defines `FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION` during compilation.
307
+
308
+ ```bash
309
+ # C++ compilation
310
+ clang++ -g -fsanitize=fuzzer,address -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION \
311
+ harness.cc target.cc -o fuzzer
312
+
313
+ # The macro is usually defined automatically by -fsanitize=fuzzer
314
+ clang++ -g -fsanitize=fuzzer,address harness.cc target.cc -o fuzzer
315
+ ```
316
+
317
+ **Integration tips:**
318
+ - The macro is defined automatically; manual definition is usually unnecessary
319
+ - Use `#ifdef` to check for the macro
320
+ - Combine with sanitizers to detect bugs in newly reachable code
321
+
322
+ ### AFL++
323
+
324
+ AFL++ also defines `FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION` when using its compiler wrappers.
325
+
326
+ ```bash
327
+ # Compilation with AFL++ wrappers
328
+ afl-clang-fast++ -g -fsanitize=address target.cc harness.cc -o fuzzer
329
+
330
+ # The macro is defined automatically by afl-clang-fast
331
+ ```
332
+
333
+ **Integration tips:**
334
+ - Use `afl-clang-fast` or `afl-clang-lto` for automatic macro definition
335
+ - Persistent mode harnesses benefit most from obstacle patching
336
+ - Consider using `AFL_LLVM_LAF_ALL` for additional input-to-state transformations
337
+
338
+ ### honggfuzz
339
+
340
+ honggfuzz also supports the macro when building targets.
341
+
342
+ ```bash
343
+ # Compilation
344
+ hfuzz-clang++ -g -fsanitize=address target.cc harness.cc -o fuzzer
345
+ ```
346
+
347
+ **Integration tips:**
348
+ - Use `hfuzz-clang` or `hfuzz-clang++` wrappers
349
+ - The macro is available for conditional compilation
350
+ - Combine with honggfuzz's feedback-driven fuzzing
351
+
352
+ ### cargo-fuzz (Rust)
353
+
354
+ cargo-fuzz automatically sets the `fuzzing` cfg option during builds.
355
+
356
+ ```bash
357
+ # Build fuzz target (cfg!(fuzzing) is automatically set)
358
+ cargo fuzz build fuzz_target_name
359
+
360
+ # Run fuzz target
361
+ cargo fuzz run fuzz_target_name
362
+ ```
363
+
364
+ **Integration tips:**
365
+ - Use `cfg!(fuzzing)` for runtime checks in production builds
366
+ - Use `#[cfg(fuzzing)]` for compile-time conditional compilation
367
+ - The fuzzing cfg is only set during `cargo fuzz` builds, not regular `cargo build`
368
+ - Can be manually enabled with `RUSTFLAGS="--cfg fuzzing"` for testing
369
+
370
+ ### LibAFL
371
+
372
+ LibAFL supports the C/C++ macro for targets written in C/C++.
373
+
374
+ ```bash
375
+ # Compilation
376
+ clang++ -g -fsanitize=address -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION \
377
+ target.cc -c -o target.o
378
+ ```
379
+
380
+ **Integration tips:**
381
+ - Define the macro manually or use compiler flags
382
+ - Works the same as with libFuzzer
383
+ - Useful when building custom LibAFL-based fuzzers
384
+
385
+ ## Troubleshooting
386
+
387
+ | Issue | Cause | Solution |
388
+ |-------|-------|----------|
389
+ | Coverage doesn't improve after patching | Wrong obstacle identified | Profile execution to find actual bottleneck |
390
+ | Many false positive crashes | Downstream code has assumptions | Add defensive defaults or partial validation |
391
+ | Code compiles differently | Macro not defined in all build configs | Verify macro in all source files and dependencies |
392
+ | Fuzzer finds bugs in patched code | Patch introduced invalid states | Review patch for state invariants; consider safer approach |
393
+ | Can't reproduce production bugs | Build differences too large | Minimize patches; keep validation for state-critical checks |
394
+
395
+ ## Related Skills
396
+
397
+ ### Tools That Use This Technique
398
+
399
+ | Skill | How It Applies |
400
+ |-------|----------------|
401
+ | **libfuzzer** | Defines `FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION` automatically |
402
+ | **aflpp** | Supports the macro via compiler wrappers |
403
+ | **honggfuzz** | Uses the macro for conditional compilation |
404
+ | **cargo-fuzz** | Sets `cfg!(fuzzing)` for Rust conditional compilation |
405
+
406
+ ### Related Techniques
407
+
408
+ | Skill | Relationship |
409
+ |-------|--------------|
410
+ | **fuzz-harness-writing** | Better harnesses may avoid obstacles; patching enables deeper exploration |
411
+ | **coverage-analysis** | Use coverage to identify obstacles and measure patch effectiveness |
412
+ | **corpus-seeding** | Seed corpus can help overcome obstacles without patching |
413
+ | **dictionary-generation** | Dictionaries help with magic bytes but not checksums or complex validation |
414
+
415
+ ## Resources
416
+
417
+ ### Key External Resources
418
+
419
+ **[OpenSSL Fuzzing Documentation](https://github.com/openssl/openssl/tree/master/fuzz)**
420
+ OpenSSL's fuzzing infrastructure demonstrates large-scale use of `FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION`. The project uses this macro to modify cryptographic validation, certificate parsing, and other security-critical code paths to enable deeper fuzzing while maintaining production correctness.
421
+
422
+ **[LibFuzzer Documentation on Flags](https://llvm.org/docs/LibFuzzer.html)**
423
+ Official LLVM documentation for libFuzzer, including how the fuzzer defines compiler macros and how to use them effectively. Covers integration with sanitizers and coverage instrumentation.
424
+
425
+ **[Rust cfg Attribute Reference](https://doc.rust-lang.org/reference/conditional-compilation.html)**
426
+ Complete reference for Rust conditional compilation, including `cfg!(fuzzing)` and `cfg!(test)`. Explains compile-time vs. runtime conditional compilation and best practices.