@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,71 @@
1
+ /**
2
+ * @name [VARIANT_NAME]
3
+ * @description Find variants of [ORIGINAL_BUG_ID]
4
+ * @kind path-problem
5
+ * @problem.severity error
6
+ * @tags security variant-analysis
7
+ */
8
+
9
+ import java
10
+ import semmle.code.java.dataflow.TaintTracking
11
+ import semmle.code.java.dataflow.FlowSources
12
+ import DataFlow::PathGraph
13
+
14
+ module VariantConfig implements DataFlow::ConfigSig {
15
+ predicate isSource(DataFlow::Node source) {
16
+ // HttpServletRequest.getParameter/getHeader
17
+ exists(MethodAccess ma |
18
+ ma.getMethod().getName() in ["getParameter", "getHeader", "getCookies", "getQueryString"] and
19
+ ma.getMethod().getDeclaringType().getASupertype*().hasQualifiedName("javax.servlet", "ServletRequest") and
20
+ source.asExpr() = ma
21
+ )
22
+ or
23
+ // Spring @RequestParam, @PathVariable
24
+ exists(Parameter p |
25
+ p.getAnAnnotation().getType().hasQualifiedName("org.springframework.web.bind.annotation", ["RequestParam", "PathVariable", "RequestBody"]) and
26
+ source.asParameter() = p
27
+ )
28
+ }
29
+
30
+ predicate isSink(DataFlow::Node sink) {
31
+ // Command injection
32
+ exists(MethodAccess ma |
33
+ ma.getMethod().hasQualifiedName("java.lang", "Runtime", "exec") and
34
+ sink.asExpr() = ma.getArgument(0)
35
+ )
36
+ or
37
+ exists(ClassInstanceExpr cie |
38
+ cie.getConstructedType().hasQualifiedName("java.lang", "ProcessBuilder") and
39
+ sink.asExpr() = cie.getArgument(0)
40
+ )
41
+ or
42
+ // SQL injection
43
+ exists(MethodAccess ma |
44
+ ma.getMethod().getName() in ["executeQuery", "executeUpdate", "execute"] and
45
+ ma.getMethod().getDeclaringType().getASupertype*().hasQualifiedName("java.sql", "Statement") and
46
+ sink.asExpr() = ma.getArgument(0)
47
+ )
48
+ or
49
+ // Path traversal
50
+ exists(ClassInstanceExpr cie |
51
+ cie.getConstructedType().hasQualifiedName("java.io", "File") and
52
+ sink.asExpr() = cie.getArgument(0)
53
+ )
54
+ }
55
+
56
+ predicate isBarrier(DataFlow::Node node) {
57
+ exists(MethodAccess ma |
58
+ ma.getMethod().getName() in ["escape", "sanitize", "parseInt", "valueOf"] and
59
+ node.asExpr() = ma
60
+ )
61
+ }
62
+ }
63
+
64
+ module VariantFlow = TaintTracking::Global<VariantConfig>;
65
+ import VariantFlow::PathGraph
66
+
67
+ from VariantFlow::PathNode source, VariantFlow::PathNode sink
68
+ where VariantFlow::flowPath(source, sink)
69
+ select sink.getNode(), source, sink,
70
+ "Tainted data from $@ flows to dangerous sink.",
71
+ source.getNode(), "user input"
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @name [VARIANT_NAME]
3
+ * @description Find variants of [ORIGINAL_BUG_ID]
4
+ * @kind path-problem
5
+ * @problem.severity error
6
+ * @tags security variant-analysis
7
+ */
8
+
9
+ import javascript
10
+ import semmle.javascript.security.dataflow.CommandInjectionQuery
11
+ import DataFlow::PathGraph
12
+
13
+ module VariantConfig implements DataFlow::ConfigSig {
14
+ predicate isSource(DataFlow::Node source) {
15
+ // Express request params
16
+ exists(PropAccess pa |
17
+ pa.getPropertyName() in ["query", "body", "params", "cookies"] and
18
+ source.asExpr() = pa
19
+ )
20
+ or
21
+ // URL/location
22
+ exists(PropAccess pa |
23
+ pa.getBase().toString() in ["window", "document", "location"] and
24
+ source.asExpr() = pa
25
+ )
26
+ }
27
+
28
+ predicate isSink(DataFlow::Node sink) {
29
+ // Command injection
30
+ exists(CallExpr c |
31
+ c.getCalleeName() in ["exec", "execSync", "spawn", "spawnSync"] and
32
+ sink.asExpr() = c.getArgument(0)
33
+ )
34
+ or
35
+ // eval/Function
36
+ exists(CallExpr c |
37
+ c.getCalleeName() in ["eval", "Function"] and
38
+ sink.asExpr() = c.getArgument(0)
39
+ )
40
+ or
41
+ // SQL queries
42
+ exists(CallExpr c |
43
+ c.getCalleeName() in ["query", "raw", "execute"] and
44
+ sink.asExpr() = c.getArgument(0)
45
+ )
46
+ }
47
+
48
+ predicate isBarrier(DataFlow::Node node) {
49
+ exists(CallExpr c |
50
+ c.getCalleeName() in ["escape", "sanitize", "parseInt", "encodeURIComponent"] and
51
+ node.asExpr() = c
52
+ )
53
+ }
54
+ }
55
+
56
+ module VariantFlow = TaintTracking::Global<VariantConfig>;
57
+ import VariantFlow::PathGraph
58
+
59
+ from VariantFlow::PathNode source, VariantFlow::PathNode sink
60
+ where VariantFlow::flowPath(source, sink)
61
+ select sink.getNode(), source, sink,
62
+ "Tainted data from $@ flows to dangerous sink.",
63
+ source.getNode(), "user input"
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @name [VARIANT_NAME]
3
+ * @description Find variants of [ORIGINAL_BUG_ID]
4
+ * @kind path-problem
5
+ * @problem.severity error
6
+ * @precision high
7
+ * @tags security
8
+ * variant-analysis
9
+ */
10
+
11
+ import python
12
+ import semmle.python.dataflow.new.DataFlow
13
+ import semmle.python.dataflow.new.TaintTracking
14
+ import semmle.python.ApiGraphs
15
+
16
+ module VariantConfig implements DataFlow::ConfigSig {
17
+ // Sources: where untrusted data originates
18
+ predicate isSource(DataFlow::Node source) {
19
+ // Flask request parameters
20
+ source = API::moduleImport("flask").getMember("request")
21
+ .getMember(["args", "form", "json", "data"])
22
+ .getAUse()
23
+ or
24
+ // Environment variables
25
+ exists(Call c |
26
+ c.getFunc().(Attribute).getObject().(Name).getId() = "os" and
27
+ c.getFunc().(Attribute).getName() in ["getenv", "environ"] and
28
+ source.asExpr() = c
29
+ )
30
+ }
31
+
32
+ // Sinks: where tainted data becomes dangerous
33
+ predicate isSink(DataFlow::Node sink) {
34
+ // os.system()
35
+ exists(Call c |
36
+ c.getFunc().(Attribute).getObject().(Name).getId() = "os" and
37
+ c.getFunc().(Attribute).getName() = "system" and
38
+ sink.asExpr() = c.getArg(0)
39
+ )
40
+ or
41
+ // subprocess with shell=True
42
+ exists(Call c |
43
+ c.getFunc().(Attribute).getName() in ["call", "run", "Popen"] and
44
+ c.getArgByName("shell").(NameConstant).getValue() = true and
45
+ sink.asExpr() = c.getArg(0)
46
+ )
47
+ }
48
+
49
+ // Barriers: sanitization functions
50
+ predicate isBarrier(DataFlow::Node node) {
51
+ exists(Call c |
52
+ c.getFunc().(Attribute).getObject().(Name).getId() = "shlex" and
53
+ c.getFunc().(Attribute).getName() = "quote" and
54
+ node.asExpr() = c
55
+ )
56
+ or
57
+ exists(Call c |
58
+ c.getFunc().(Name).getId() in ["sanitize", "escape", "validate"] and
59
+ node.asExpr() = c
60
+ )
61
+ }
62
+
63
+ // Custom flow steps (optional)
64
+ predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) {
65
+ exists(Call c |
66
+ c.getFunc().(Attribute).getName() = "format" and
67
+ pred.asExpr() = c.getFunc().(Attribute).getObject() and
68
+ succ.asExpr() = c
69
+ )
70
+ }
71
+ }
72
+
73
+ module VariantFlow = TaintTracking::Global<VariantConfig>;
74
+ import VariantFlow::PathGraph
75
+
76
+ from VariantFlow::PathNode source, VariantFlow::PathNode sink
77
+ where VariantFlow::flowPath(source, sink)
78
+ select sink.getNode(), source, sink,
79
+ "Potential variant: tainted data from $@ flows to dangerous sink.",
80
+ source.getNode(), "user-controlled input"
@@ -0,0 +1,98 @@
1
+ rules:
2
+ - id: variant-taint-cpp
3
+ message: "Potential variant: user input flows to dangerous sink"
4
+ severity: ERROR
5
+ languages: [c, cpp]
6
+ mode: taint
7
+
8
+ pattern-sources:
9
+ # Command line
10
+ - pattern: argv[$IDX]
11
+ # Standard input
12
+ - pattern: gets(...)
13
+ - pattern: fgets($BUF, $SIZE, stdin)
14
+ - pattern: scanf(...)
15
+ - pattern: fscanf(...)
16
+ - pattern: getenv(...)
17
+ # Network
18
+ - pattern: recv($SOCK, $BUF, ...)
19
+ - pattern: recvfrom(...)
20
+ - pattern: read($FD, $BUF, ...)
21
+
22
+ pattern-sinks:
23
+ # Command injection
24
+ - pattern: system($SINK)
25
+ - pattern: popen($SINK, ...)
26
+ - pattern: execl($SINK, ...)
27
+ - pattern: execlp($SINK, ...)
28
+ - pattern: execv($SINK, ...)
29
+ - pattern: execvp($SINK, ...)
30
+ # Buffer overflow
31
+ - pattern: strcpy($DST, $SINK)
32
+ - pattern: strcat($DST, $SINK)
33
+ - pattern: sprintf($DST, $FMT, ..., $SINK, ...)
34
+ - pattern: gets($SINK)
35
+ # Format string
36
+ - pattern: printf($SINK)
37
+ - pattern: fprintf($FILE, $SINK)
38
+ - pattern: sprintf($BUF, $SINK)
39
+ - pattern: syslog($PRI, $SINK)
40
+ # Memory
41
+ - pattern: malloc($SINK)
42
+ - pattern: calloc($SINK, ...)
43
+ - pattern: realloc($PTR, $SINK)
44
+ - pattern: alloca($SINK)
45
+ # File operations
46
+ - pattern: fopen($SINK, ...)
47
+ - pattern: open($SINK, ...)
48
+
49
+ pattern-sanitizers:
50
+ - pattern: strncpy($DST, $SRC, $N)
51
+ - pattern: strncat($DST, $SRC, $N)
52
+ - pattern: snprintf($BUF, $SIZE, ...)
53
+ - pattern: strlcpy(...)
54
+ - pattern: strlcat(...)
55
+
56
+ paths:
57
+ exclude:
58
+ - "**/test/**"
59
+ - "**/*_test.c"
60
+ - "**/*_test.cpp"
61
+
62
+ - id: unsafe-functions-cpp
63
+ message: "Use of unsafe function - consider bounded alternative"
64
+ severity: WARNING
65
+ languages: [c, cpp]
66
+ pattern-either:
67
+ - pattern: gets(...)
68
+ - pattern: strcpy(...)
69
+ - pattern: strcat(...)
70
+ - pattern: sprintf(...)
71
+ - pattern: vsprintf(...)
72
+
73
+ - id: format-string-cpp
74
+ message: "Potential format string vulnerability"
75
+ severity: ERROR
76
+ languages: [c, cpp]
77
+ patterns:
78
+ - pattern-either:
79
+ - pattern: printf($VAR)
80
+ - pattern: fprintf($F, $VAR)
81
+ - pattern: sprintf($B, $VAR)
82
+ - pattern: snprintf($B, $S, $VAR)
83
+ - pattern-not: printf("...")
84
+ - pattern-not: fprintf($F, "...")
85
+ - pattern-not: sprintf($B, "...")
86
+ - pattern-not: snprintf($B, $S, "...")
87
+
88
+ - id: integer-overflow-cpp
89
+ message: "Potential integer overflow before memory allocation"
90
+ severity: WARNING
91
+ languages: [c, cpp]
92
+ patterns:
93
+ - pattern: |
94
+ $SIZE = $X * $Y;
95
+ ...
96
+ malloc($SIZE)
97
+ - pattern: malloc($X * $Y)
98
+ - pattern: calloc($X * $Y, ...)
@@ -0,0 +1,63 @@
1
+ rules:
2
+ - id: variant-taint-go
3
+ message: "Potential variant: user input flows to dangerous sink"
4
+ severity: ERROR
5
+ languages: [go]
6
+ mode: taint
7
+
8
+ pattern-sources:
9
+ # net/http
10
+ - pattern: $REQ.URL.Query().Get(...)
11
+ - pattern: $REQ.FormValue(...)
12
+ - pattern: $REQ.PostFormValue(...)
13
+ - pattern: $REQ.Header.Get(...)
14
+ # Gin
15
+ - pattern: $CTX.Query(...)
16
+ - pattern: $CTX.Param(...)
17
+ - pattern: $CTX.PostForm(...)
18
+ - pattern: $CTX.GetHeader(...)
19
+ # Echo
20
+ - pattern: $CTX.QueryParam(...)
21
+ - pattern: $CTX.FormValue(...)
22
+ # os.Args
23
+ - pattern: os.Args[$IDX]
24
+ - pattern: os.Getenv(...)
25
+
26
+ pattern-sinks:
27
+ # Command injection
28
+ - pattern: exec.Command($SINK, ...)
29
+ - pattern: exec.CommandContext($CTX, $SINK, ...)
30
+ # SQL injection
31
+ - pattern: $DB.Query($SINK, ...)
32
+ - pattern: $DB.QueryRow($SINK, ...)
33
+ - pattern: $DB.Exec($SINK, ...)
34
+ # Path traversal
35
+ - pattern: os.Open($SINK)
36
+ - pattern: os.OpenFile($SINK, ...)
37
+ - pattern: os.ReadFile($SINK)
38
+ - pattern: ioutil.ReadFile($SINK)
39
+ # Template injection
40
+ - pattern: template.HTML($SINK)
41
+
42
+ pattern-sanitizers:
43
+ - pattern: strconv.Atoi($X)
44
+ - pattern: strconv.ParseInt($X, ...)
45
+ - pattern: filepath.Clean($X)
46
+ - pattern: filepath.Base($X)
47
+ - pattern: html.EscapeString($X)
48
+
49
+ paths:
50
+ exclude:
51
+ - "**/*_test.go"
52
+ - "**/test/**"
53
+ - "**/vendor/**"
54
+
55
+ - id: variant-pattern-go
56
+ message: "Suspicious pattern matching known vulnerability"
57
+ severity: WARNING
58
+ languages: [go]
59
+ patterns:
60
+ - pattern-either:
61
+ - pattern: exec.Command(...)
62
+ - pattern: $DB.Query($Q, ...)
63
+ - pattern-not: exec.Command("...")
@@ -0,0 +1,61 @@
1
+ rules:
2
+ - id: variant-taint-java
3
+ message: "Potential variant: user input flows to dangerous sink"
4
+ severity: ERROR
5
+ languages: [java]
6
+ mode: taint
7
+
8
+ pattern-sources:
9
+ # Servlet
10
+ - pattern: (HttpServletRequest $REQ).getParameter(...)
11
+ - pattern: (HttpServletRequest $REQ).getHeader(...)
12
+ - pattern: (HttpServletRequest $REQ).getCookies()
13
+ - pattern: (HttpServletRequest $REQ).getQueryString()
14
+ - pattern: (HttpServletRequest $REQ).getInputStream()
15
+ # Spring
16
+ - pattern: "@RequestParam $TYPE $VAR"
17
+ - pattern: "@PathVariable $TYPE $VAR"
18
+ - pattern: "@RequestBody $TYPE $VAR"
19
+
20
+ pattern-sinks:
21
+ # Command injection
22
+ - pattern: Runtime.getRuntime().exec($SINK, ...)
23
+ - pattern: new ProcessBuilder($SINK, ...)
24
+ # SQL injection
25
+ - pattern: (Statement $S).executeQuery($SINK)
26
+ - pattern: (Statement $S).executeUpdate($SINK)
27
+ - pattern: (Statement $S).execute($SINK)
28
+ - pattern: (Connection $C).prepareStatement($SINK)
29
+ # Path traversal
30
+ - pattern: new File($SINK)
31
+ - pattern: new FileInputStream($SINK)
32
+ - pattern: new FileOutputStream($SINK)
33
+ - pattern: Paths.get($SINK, ...)
34
+ # XXE
35
+ - pattern: (DocumentBuilder $DB).parse($SINK)
36
+ # Deserialization
37
+ - pattern: (ObjectInputStream $OIS).readObject()
38
+
39
+ pattern-sanitizers:
40
+ - pattern: Integer.parseInt($X)
41
+ - pattern: Integer.valueOf($X)
42
+ - pattern: StringEscapeUtils.escapeHtml4($X)
43
+ - pattern: ESAPI.encoder().encodeForSQL(...)
44
+
45
+ paths:
46
+ exclude:
47
+ - "**/test/**"
48
+ - "**/*Test.java"
49
+
50
+ - id: variant-pattern-java
51
+ message: "Suspicious pattern matching known vulnerability"
52
+ severity: WARNING
53
+ languages: [java]
54
+ patterns:
55
+ - pattern-either:
56
+ - pattern: Runtime.getRuntime().exec(...)
57
+ - pattern: new ProcessBuilder(...)
58
+ - pattern-inside: |
59
+ $RET $METHOD(..., HttpServletRequest $REQ, ...) {
60
+ ...
61
+ }
@@ -0,0 +1,60 @@
1
+ rules:
2
+ - id: variant-taint-js
3
+ message: "Potential variant: user input flows to dangerous sink"
4
+ severity: ERROR
5
+ languages: [javascript, typescript]
6
+ mode: taint
7
+
8
+ pattern-sources:
9
+ # Express
10
+ - pattern: req.query.$PARAM
11
+ - pattern: req.body.$PARAM
12
+ - pattern: req.params.$PARAM
13
+ - pattern: req.cookies.$PARAM
14
+ # URL/Location
15
+ - pattern: window.location.$PROP
16
+ - pattern: document.location.$PROP
17
+ - pattern: location.search
18
+ - pattern: location.hash
19
+
20
+ pattern-sinks:
21
+ # Command injection
22
+ - pattern: child_process.exec($SINK, ...)
23
+ - pattern: child_process.execSync($SINK, ...)
24
+ - pattern: child_process.spawn($SINK, ...)
25
+ # Code execution
26
+ - pattern: eval($SINK)
27
+ - pattern: Function($SINK)
28
+ - pattern: setTimeout($SINK, ...)
29
+ - pattern: setInterval($SINK, ...)
30
+ # SQL
31
+ - pattern: $DB.query($SINK, ...)
32
+ - pattern: $DB.raw($SINK)
33
+ # XSS
34
+ - pattern: $EL.innerHTML = $SINK
35
+ - pattern: document.write($SINK)
36
+
37
+ pattern-sanitizers:
38
+ - pattern: parseInt($X, ...)
39
+ - pattern: encodeURIComponent($X)
40
+ - pattern: escape($X)
41
+ - pattern: $DB.escape($X)
42
+
43
+ paths:
44
+ exclude:
45
+ - "**/*.test.js"
46
+ - "**/*.spec.js"
47
+ - "**/test/**"
48
+ - "**/node_modules/**"
49
+
50
+ - id: variant-pattern-js
51
+ message: "Suspicious pattern matching known vulnerability"
52
+ severity: WARNING
53
+ languages: [javascript, typescript]
54
+ patterns:
55
+ - pattern-either:
56
+ - pattern: eval(...)
57
+ - pattern: Function(...)
58
+ - pattern: child_process.exec(...)
59
+ - pattern-not: eval("...")
60
+ - pattern-not: Function("...")
@@ -0,0 +1,72 @@
1
+ rules:
2
+ - id: variant-taint-analysis
3
+ message: >-
4
+ Potential variant: user-controlled data flows to dangerous sink.
5
+ Original bug: [DESCRIBE_ORIGINAL_BUG]
6
+ severity: ERROR
7
+ languages: [python]
8
+ mode: taint
9
+
10
+ pattern-sources:
11
+ # Flask
12
+ - pattern: request.args.get(...)
13
+ - pattern: request.args[...]
14
+ - pattern: request.form.get(...)
15
+ - pattern: request.form[...]
16
+ - pattern: request.json
17
+ - pattern: request.data
18
+ # Django (uncomment if needed)
19
+ # - pattern: request.GET.get(...)
20
+ # - pattern: request.POST.get(...)
21
+ # General
22
+ - pattern: os.environ.get(...)
23
+ - pattern: input(...)
24
+
25
+ pattern-sinks:
26
+ # Command injection
27
+ - pattern: os.system($SINK)
28
+ - pattern: os.popen($SINK)
29
+ - pattern: subprocess.call($SINK, ...)
30
+ - pattern: subprocess.run($SINK, ...)
31
+ - pattern: subprocess.Popen($SINK, ...)
32
+ # Code execution
33
+ - pattern: eval($SINK)
34
+ - pattern: exec($SINK)
35
+ # SQL (uncomment if needed)
36
+ # - pattern: $CURSOR.execute($SINK)
37
+ # Path traversal (uncomment if needed)
38
+ # - pattern: open($SINK, ...)
39
+
40
+ pattern-sanitizers:
41
+ - pattern: shlex.quote(...)
42
+ - pattern: os.path.basename(...)
43
+ - pattern: int(...)
44
+ - pattern: sanitize(...)
45
+ - pattern: escape(...)
46
+ - pattern: validate(...)
47
+
48
+ paths:
49
+ exclude:
50
+ - "*_test.py"
51
+ - "test_*.py"
52
+ - "tests/"
53
+ - "**/test/**"
54
+
55
+ metadata:
56
+ category: security
57
+ confidence: HIGH
58
+
59
+ # Simple pattern matching variant (non-taint)
60
+ - id: variant-pattern-match
61
+ message: "Suspicious pattern matching known vulnerability signature"
62
+ severity: WARNING
63
+ languages: [python]
64
+ patterns:
65
+ - pattern-either:
66
+ - pattern: dangerous_func($USER_DATA)
67
+ - pattern: risky_operation(..., $USER_DATA, ...)
68
+ - pattern-not: dangerous_func("...")
69
+ paths:
70
+ exclude:
71
+ - "tests/"
72
+ - "*_test.py"
@@ -0,0 +1,75 @@
1
+ # Variant Analysis Report
2
+
3
+ ## Summary
4
+
5
+ | Field | Value |
6
+ |-------|-------|
7
+ | **Original Bug** | [BUG_ID / CVE] |
8
+ | **Analysis Date** | [DATE] |
9
+ | **Codebase** | [REPO/PROJECT] |
10
+ | **Variants Found** | [COUNT] |
11
+
12
+ ## Original Vulnerability
13
+
14
+ **Root Cause:** [e.g., "User input reaches SQL query without parameterization"]
15
+
16
+ **Location:** `[path/to/file.py:LINE]` in `function_name()`
17
+
18
+ ```python
19
+ # Vulnerable code
20
+ ```
21
+
22
+ ## Search Methodology
23
+
24
+ | Version | Pattern | Tool | Matches | TP | FP |
25
+ |---------|---------|------|---------|----|----|
26
+ | v1 | [exact] | ripgrep | 1 | 1 | 0 |
27
+ | v2 | [abstract] | semgrep | N | N | N |
28
+
29
+ **Final Pattern:**
30
+ ```yaml
31
+ # Pattern used
32
+ ```
33
+
34
+ ## Findings
35
+
36
+ ### Variant #1: [BRIEF_TITLE]
37
+
38
+ | Severity | Confidence | Status |
39
+ |----------|------------|--------|
40
+ | High | High | Confirmed |
41
+
42
+ **Location:** `[path/to/file.py:LINE]`
43
+
44
+ ```python
45
+ # Vulnerable code
46
+ ```
47
+
48
+ **Analysis:** [Why this is a true/false positive]
49
+
50
+ **Exploitability:**
51
+ - [ ] Reachable from external input
52
+ - [ ] User-controlled data
53
+ - [ ] No sanitization
54
+
55
+ ---
56
+
57
+ <!-- Copy variant template above for additional findings -->
58
+
59
+ ## False Positive Patterns
60
+
61
+ | Pattern | Count | Reason |
62
+ |---------|-------|--------|
63
+ | [pattern] | N | [why safe] |
64
+
65
+ ## Recommendations
66
+
67
+ ### Immediate
68
+ 1. Fix variant in [location]
69
+
70
+ ### Preventive
71
+ 1. Add Semgrep rule to CI
72
+
73
+ ```yaml
74
+ # CI-ready rule
75
+ ```
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: video-frames
3
+ description: Extract frames or short clips from videos using ffmpeg.
4
+ homepage: https://ffmpeg.org
5
+ metadata:
6
+ {
7
+ "otto":
8
+ {
9
+ "emoji": "🎞️",
10
+ "requires": { "bins": ["ffmpeg"] },
11
+ "install":
12
+ [
13
+ {
14
+ "id": "brew",
15
+ "kind": "brew",
16
+ "formula": "ffmpeg",
17
+ "bins": ["ffmpeg"],
18
+ "label": "Install ffmpeg (brew)",
19
+ },
20
+ ],
21
+ },
22
+ }
23
+ ---
24
+
25
+ # Video Frames (ffmpeg)
26
+
27
+ Extract a single frame from a video, or create quick thumbnails for inspection.
28
+
29
+ ## Quick start
30
+
31
+ First frame:
32
+
33
+ ```bash
34
+ {baseDir}/scripts/frame.sh /path/to/video.mp4 --out /tmp/frame.jpg
35
+ ```
36
+
37
+ At a timestamp:
38
+
39
+ ```bash
40
+ {baseDir}/scripts/frame.sh /path/to/video.mp4 --time 00:00:10 --out /tmp/frame-10s.jpg
41
+ ```
42
+
43
+ ## Notes
44
+
45
+ - Prefer `--time` for “what is happening around here?”.
46
+ - Use a `.jpg` for quick share; use `.png` for crisp UI frames.