@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,433 @@
1
+ # YARA-X String Selection
2
+
3
+ Choosing the right strings is the most critical decision in YARA rule writing.
4
+
5
+ > **YARA-X Note:** YARA-X enforces stricter validation on strings. Base64 modifier requires 3+ character strings, and regex patterns must have properly escaped metacharacters.
6
+
7
+ ## String Quality Judgment
8
+
9
+ Before using any string, run through this mental checklist:
10
+
11
+ ```
12
+ Is this string good enough?
13
+ ├─ At least 4 bytes? (minimum for useful atoms)
14
+ ├─ Contains 4 consecutive unique bytes? (not 0000, 9090, FFFF)
15
+ ├─ NOT an API name? (VirtualAlloc, CreateRemoteThread = reject)
16
+ ├─ NOT a common path? (C:\Windows\, cmd.exe = reject)
17
+ ├─ NOT a format string? (%s, %d, Error: %s = reject)
18
+ ├─ Would match in Windows system files? (if yes = reject)
19
+ ├─ Specific to this malware family? (if yes = use it)
20
+ └─ Found in other malware too? (combine with unique marker)
21
+ ```
22
+
23
+ ## High-Value String Sources
24
+
25
+ **Gold tier** — Almost always unique:
26
+ - Mutex names: `"Global\\MyMalwareMutex"`
27
+ - Stack strings (decoded at runtime)
28
+ - PDB paths: `"C:\\Users\\dev\\malware.pdb"`
29
+
30
+ **Silver tier** — Usually unique:
31
+ - C2 paths: `"/api/beacon/check"`
32
+ - Configuration markers: `"CONFIG_START"`
33
+ - Custom protocol headers: `"BEACON_1.0"`
34
+
35
+ **Bronze tier** — Unique with context:
36
+ - Unique error messages: `"Failed to inject into explorer"`
37
+ - Campaign IDs: `"OPERATION_X"`
38
+
39
+ ## String Types
40
+
41
+ ### Text Strings
42
+
43
+ ```yara
44
+ $text = "Hello World" // Basic ASCII
45
+ $text_wide = "Hello" wide // UTF-16LE (Windows Unicode)
46
+ $text_both = "Hello" ascii wide // Match either encoding
47
+ $text_nocase = "hello" nocase // Case-insensitive (performance cost)
48
+ $text_full = "hello" fullword // Word boundaries only
49
+ ```
50
+
51
+ ### Hex Strings
52
+
53
+ ```yara
54
+ $hex = { 4D 5A 90 00 } // Exact bytes
55
+ $wild = { 4D 5A ?? ?? } // Single-byte wildcards
56
+ $jump = { 4D 5A [2-4] 50 45 } // Variable-length jump (bounded!)
57
+ $alt = { 4D 5A ( 90 00 | 00 00 ) } // Alternatives
58
+ ```
59
+
60
+ ### Regular Expressions
61
+
62
+ ```yara
63
+ // ALWAYS bound your regex
64
+ $url = /https?:\/\/[a-z0-9]{5,50}\.onion/ // Good: bounded
65
+ $bad = /https?:\/\/.*/ // BAD: unbounded
66
+ ```
67
+
68
+ **YARA-X regex requirements:**
69
+ - Literal `{` must be escaped as `\{` (YARA-X strict mode)
70
+ - Invalid escape sequences error instead of becoming literals
71
+ - Use `yr check` to validate regex patterns before deployment
72
+
73
+ ```yara
74
+ // BAD: Fails in YARA-X
75
+ $pattern = /config{key}/
76
+
77
+ // GOOD: Escape the brace
78
+ $pattern = /config\{key\}/
79
+ ```
80
+
81
+ ## Modifiers and Their Costs
82
+
83
+ | Modifier | Performance Impact | When to Use |
84
+ |----------|-------------------|-------------|
85
+ | `ascii` | None | Default, always included |
86
+ | `wide` | Minimal | Windows Unicode strings |
87
+ | `nocase` | **Doubles atoms** | Only when necessary |
88
+ | `fullword` | Minimal | Prevent substring matches |
89
+ | `xor` | **High (255x patterns)** | Only with specific range |
90
+ | `base64` | Moderate (3x patterns) | Encoded payloads (**3+ chars required in YARA-X**) |
91
+ | `private` | None | Hide pattern from scan output (YARA-X 1.3.0+) |
92
+
93
+ **Modifier judgment:**
94
+ - `nocase` — Only use for user-facing strings that might vary in case
95
+ - `xor(0x00-0xFF)` — Almost always too broad; find the actual key
96
+ - `xor(0x41)` — Specific key is acceptable
97
+ - `base64` — YARA-X requires strings of 3+ characters (won't match on shorter strings)
98
+
99
+ ### Private Patterns (YARA-X 1.3.0+)
100
+
101
+ Mark helper patterns as private to exclude them from scan output:
102
+
103
+ ```yara
104
+ strings:
105
+ $public = "malware_marker"
106
+ private $helper = "internal_pattern" // Matches but not in output
107
+
108
+ condition:
109
+ $public and $helper
110
+ ```
111
+
112
+ ## Bad String Sources (Always Reject)
113
+
114
+ ### API Names
115
+
116
+ Every Windows program uses these:
117
+
118
+ ```yara
119
+ // REJECT: Found in all executables
120
+ $bad = "VirtualAlloc"
121
+ $bad = "CreateRemoteThread"
122
+ $bad = "WriteProcessMemory"
123
+ $bad = "NtCreateThreadEx"
124
+ ```
125
+
126
+ **Expert response:** Use hex pattern of the call site, not the import name.
127
+
128
+ ### Common Paths
129
+
130
+ ```yara
131
+ // REJECT: Found everywhere
132
+ $bad = "C:\\Windows\\System32"
133
+ $bad = "cmd.exe"
134
+ $bad = "powershell.exe"
135
+ $bad = "\\AppData\\Local"
136
+ ```
137
+
138
+ **Expert response:** Find malware-specific full paths.
139
+
140
+ ### Format Strings
141
+
142
+ ```yara
143
+ // REJECT: Every C program
144
+ $bad = "%s"
145
+ $bad = "%d"
146
+ $bad = "Error: %s"
147
+ ```
148
+
149
+ **Expert response:** Find unique format strings: `"Beacon initialized: %s:%d with key %08X"`
150
+
151
+ ### Common Libraries
152
+
153
+ ```yara
154
+ // REJECT: Every Windows program
155
+ $bad = "KERNEL32.dll"
156
+ $bad = "ntdll.dll"
157
+ $bad = "USER32.dll"
158
+ ```
159
+
160
+ ### JavaScript Framework Patterns
161
+
162
+ ```yara
163
+ // REJECT: Every Node.js application
164
+ $bad = "require("
165
+ $bad = "fs.readFile"
166
+ $bad = "child_process"
167
+ $bad = "process.env"
168
+ $bad = "fetch("
169
+ $bad = "axios"
170
+ ```
171
+
172
+ **Expert response:** Combine with suspicious context:
173
+
174
+ ```yara
175
+ // child_process alone = every CLI tool
176
+ // child_process + base64 decode + network fetch = suspicious
177
+ strings:
178
+ $exec = /child_process['"]\s*\)\.exec/
179
+ $decode = /atob\s*\(|Buffer\.from\s*\([^)]+,\s*['"]base64/
180
+ $exfil = /discord\.com\/api|telegram\.org\/bot/
181
+
182
+ condition:
183
+ $exec and $decode and $exfil
184
+ ```
185
+
186
+ ## Stack Strings Pattern
187
+
188
+ Malware often builds strings on the stack to evade static analysis. These are almost always unique:
189
+
190
+ ```yara
191
+ // Looking for stack-built "cmd.exe"
192
+ $stack_cmd = {
193
+ C6 45 ?? 63 // mov byte ptr [ebp+?], 'c'
194
+ C6 45 ?? 6D // mov byte ptr [ebp+?], 'm'
195
+ C6 45 ?? 64 // mov byte ptr [ebp+?], 'd'
196
+ C6 45 ?? 2E // mov byte ptr [ebp+?], '.'
197
+ C6 45 ?? 65 // mov byte ptr [ebp+?], 'e'
198
+ C6 45 ?? 78 // mov byte ptr [ebp+?], 'x'
199
+ C6 45 ?? 65 // mov byte ptr [ebp+?], 'e'
200
+ }
201
+ ```
202
+
203
+ **Expert heuristic:** If yarGen returns only API names, look for stack strings — the sample likely decodes sensitive strings at runtime.
204
+
205
+ ## Hex String Best Practices
206
+
207
+ ### Wildcards
208
+
209
+ ```yara
210
+ // Single byte wildcard
211
+ { 4D 5A ?? 00 }
212
+
213
+ // Nibble wildcard (half byte)
214
+ { 4D 5? } // Matches 4D 50 through 4D 5F
215
+
216
+ // BOUNDED jumps only
217
+ { 4D 5A [2-4] 50 45 } // 2-4 bytes between MZ and PE
218
+
219
+ // NEVER unbounded
220
+ { 4D 5A [-] 50 45 } // REJECT: unlimited = slow
221
+ ```
222
+
223
+ ### Leading Bytes Matter
224
+
225
+ ```yara
226
+ // BAD: No stable atom at start
227
+ { ?? ?? 4D 5A 90 00 }
228
+
229
+ // GOOD: Stable bytes first
230
+ { 4D 5A 90 00 ?? ?? }
231
+ ```
232
+
233
+ The first 4 bytes determine atom quality. Put your unique bytes there.
234
+
235
+ ## Combining Strings Effectively
236
+
237
+ ### Group by Purpose
238
+
239
+ ```yara
240
+ strings:
241
+ // Core identification (all required)
242
+ $mutex = "Global\\MyMutex"
243
+ $config = { 43 4F 4E 46 49 47 }
244
+
245
+ // C2 indicators (any one)
246
+ $c2_1 = "/api/beacon"
247
+ $c2_2 = "/check_in"
248
+
249
+ condition:
250
+ all of ($mutex, $config) and
251
+ any of ($c2_*)
252
+ ```
253
+
254
+ ### False Positive Exclusions
255
+
256
+ ```yara
257
+ strings:
258
+ $malware = "SuspiciousString"
259
+ $fp_legitimate = "Legitimate Vendor Inc"
260
+
261
+ condition:
262
+ $malware and not $fp_legitimate
263
+ ```
264
+
265
+ ## Using yarGen Effectively
266
+
267
+ yarGen extracts candidate strings, but you must validate:
268
+
269
+ ```bash
270
+ python yarGen.py -m /path/to/samples --excludegood
271
+ ```
272
+
273
+ **Expert heuristic:** yarGen output needs 80% filtering. Most suggestions are:
274
+ - API names (reject)
275
+ - Common library strings (reject)
276
+ - Format strings (reject)
277
+ - Paths to common Windows directories (reject)
278
+
279
+ Keep only the unique mutex names, C2 paths, and configuration markers.
280
+
281
+ ## JavaScript-Specific Patterns
282
+
283
+ For JavaScript/TypeScript malware (npm packages, VS Code extensions, browser extensions):
284
+
285
+ ### Obfuscator Signatures
286
+
287
+ ```yara
288
+ // javascript-obfuscator tool signature (hex variable names)
289
+ $hex_var = /_0x[a-fA-F0-9]{4,}/
290
+
291
+ // String.fromCharCode chains (hiding strings)
292
+ $fromcharcode = /String\.fromCharCode\s*\(\s*\d+(\s*,\s*\d+){5,}\)/
293
+
294
+ // Bracket notation chains (property access obfuscation)
295
+ $bracket_chain = /\[['"][a-zA-Z]+['"]\]\s*\[['"][a-zA-Z]+['"]\]\s*\[['"][a-zA-Z]+['"]\]/
296
+
297
+ // atob/btoa with concatenation (base64 evasion)
298
+ $atob_concat = /atob\s*\(\s*['"][^'"]+['"]\s*\+/
299
+ ```
300
+
301
+ ### Expert Patterns from Production Rules
302
+
303
+ These patterns come from Neo23x0 signature-base and Burp-Yara-Rules — battle-tested in production.
304
+
305
+ **javascript-obfuscator tool signature (Neo23x0):**
306
+
307
+ ```yara
308
+ // Initialization pattern at file start
309
+ $init = "var a0_0x" at 0
310
+
311
+ // Infinite loop (self-defending code)
312
+ $loop = "while(!![])"
313
+
314
+ // Global scope access hack
315
+ $scope_hack = "{}.constructor(\"return this\")"
316
+
317
+ condition:
318
+ $init at 0 or
319
+ (filesize < 1MB and 3 of ($loop, $scope_hack, ...))
320
+ ```
321
+
322
+ **Expert insight:** The `filesize < 1MB` constraint plus threshold (`3 of`) significantly reduces FPs.
323
+
324
+ **eval + decode combo (most common obfuscation):**
325
+
326
+ ```yara
327
+ // nocase handles case variations in minified/obfuscated code
328
+ $eval_decode = /eval\s*\(\s*(unescape|atob)\s*\(/ nocase
329
+ $func_decode = /Function\s*\(\s*atob\s*\(/ nocase
330
+ ```
331
+
332
+ **Hex-encoded string array:**
333
+
334
+ ```yara
335
+ // Matches: var _0x1234 = ["\x48\x65\x6c\x6c\x6f", ...]
336
+ $hex_array = /var\s+\w+\s*=\s*\[\s*["']\\x[0-9a-fA-F]+/
337
+ ```
338
+
339
+ ### Invisible Unicode (Stealth)
340
+
341
+ Two Unicode ranges are commonly abused: standard Variation Selectors (U+FE00-FE0F) and Variation Selectors Supplement (U+E0100-E01EF). Detect both.
342
+
343
+ **Standard Variation Selectors (VS1-16):**
344
+
345
+ ```yara
346
+ // UTF-8 variation selectors U+FE00-FE0F (invisible characters hiding code)
347
+ $vs_utf8 = { EF B8 (80|81|82|83|84|85|86|87|88|89|8A|8B|8C|8D|8E|8F) }
348
+
349
+ // Zero-width characters
350
+ $zwc = { E2 80 (8B|8C|8D|8E|8F|AA|AB|AC|AD|AE|AF) }
351
+
352
+ condition:
353
+ #vs_utf8 > 5 and any of ($eval, $function) // 5+ is suspicious per Veracode research
354
+ ```
355
+
356
+ **Expert heuristic:** Legitimate i18n uses few variation selectors. 10+ in a JS file is suspicious.
357
+
358
+ ### Unicode Steganography (Variation Selectors Supplement)
359
+
360
+ **Variation Selectors Supplement (U+E0100-E01EF):**
361
+
362
+ The `os-info-checker-es6` attack (2025) used this range — invisible nonspacing marks appended to visible characters with data encoded in the low byte.
363
+
364
+ **Byte pattern for detection:**
365
+
366
+ ```yara
367
+ rule SUSP_JS_Unicode_Steganography
368
+ {
369
+ strings:
370
+ // UTF-8 encoding of Variation Selectors Supplement
371
+ // U+E0100-E01EF encodes as: F3 A0 84 80 to F3 A0 87 AF
372
+ $var_selectors = { F3 A0 (84|85|86|87) }
373
+ $eval_decode = /eval\s*\(\s*atob\s*\(/
374
+
375
+ condition:
376
+ // 5+ variation selectors + eval/atob = highly suspicious
377
+ // Legitimate i18n rarely uses these; 5+ is almost never accidental
378
+ #var_selectors > 5 and $eval_decode
379
+ }
380
+ ```
381
+
382
+ **Why this works:** Variation Selectors Supplement exists for specialized typography (CJK ideograph variants). JavaScript source code has no legitimate use for them. Any significant count combined with eval is malicious.
383
+
384
+ ### Modern Exfiltration Channels
385
+
386
+ **Good indicators (specific, suspicious):**
387
+
388
+ ```yara
389
+ $discord_webhook = /discord\.com\/api\/webhooks\/\d+\//
390
+ $telegram_bot = /api\.telegram\.org\/bot[0-9]+:[A-Za-z0-9_-]+/
391
+ $pastebin_raw = /pastebin\.com\/raw\//
392
+ $free_hosting = /(vercel\.app|netlify\.app|railway\.app|render\.com)\/api/
393
+ ```
394
+
395
+ **Bad indicators (too common alone):**
396
+
397
+ ```yara
398
+ // REJECT without additional context
399
+ $bad = "fetch(" // Every web app
400
+ $bad = "axios.post" // Every API client
401
+ $bad = /https?:\/\// // Every URL
402
+ ```
403
+
404
+ **Combine for specificity:**
405
+
406
+ ```yara
407
+ strings:
408
+ $cred_path = /\.(npmrc|env|ssh\/id_rsa|aws\/credentials)/
409
+ $read_file = /fs\.readFile|readFileSync/
410
+ $discord = /discord\.com\/api\/webhooks/
411
+
412
+ condition:
413
+ $cred_path and $read_file and $discord
414
+ ```
415
+
416
+ ### Credential Theft Patterns
417
+
418
+ ```yara
419
+ // Browser credential databases
420
+ $chrome_login = "Login Data"
421
+ $firefox_logins = "logins.json"
422
+
423
+ // Config file paths
424
+ $npmrc = ".npmrc"
425
+ $ssh_key = /\.ssh\/(id_rsa|id_ed25519)/
426
+ $aws_creds = ".aws/credentials"
427
+ $env_file = /\.env(\.local)?/
428
+
429
+ // Combined with file read = suspicious
430
+ condition:
431
+ any of ($chrome_*, $firefox_*, $npmrc, $ssh_*, $aws_*, $env_*) and
432
+ any of ($read_file_*)
433
+ ```
@@ -0,0 +1,257 @@
1
+ # YARA Naming and Metadata
2
+
3
+ Consistent naming for maintainable rule sets.
4
+
5
+ ## Naming Convention
6
+
7
+ ```
8
+ {CATEGORY}_{PLATFORM}_{FAMILY}_{VARIANT}_{DATE}
9
+ ```
10
+
11
+ | Component | Description | Examples |
12
+ |-----------|-------------|----------|
13
+ | CATEGORY | Threat classification | MAL, HKTL, WEBSHELL, EXPL, SUSP |
14
+ | PLATFORM | Target OS/environment | Win, Lnx, Mac, Android, Multi |
15
+ | FAMILY | Malware family name | Emotet, CobaltStrike, LockBit |
16
+ | VARIANT | Specific variant/component | Loader, Beacon, Config |
17
+ | DATE | Creation date (MonthYear format) | Jan25, May23 |
18
+
19
+ ### Category Prefixes
20
+
21
+ | Prefix | Meaning | Use When |
22
+ |--------|---------|----------|
23
+ | `MAL_` | Confirmed malware | Verified malicious code |
24
+ | `HKTL_` | Hacking tool | Dual-use tools (Mimikatz, Cobalt Strike) |
25
+ | `WEBSHELL_` | Web shell | PHP/ASP/JSP backdoors |
26
+ | `EXPL_` | Exploit | Exploit code or shellcode |
27
+ | `VULN_` | Vulnerable | Vulnerable software patterns |
28
+ | `SUSP_` | Suspicious | Lower confidence, may FP |
29
+ | `PUA_` | Potentially unwanted | Adware, bundleware |
30
+ | `GEN_` | Generic | Broad detection category |
31
+
32
+ ### Additional Classifiers
33
+
34
+ Append when relevant:
35
+
36
+ | Classifier | Meaning |
37
+ |------------|---------|
38
+ | `APT_` | APT-associated |
39
+ | `CRIME_` | Cybercrime operation |
40
+ | `RANSOM_` | Ransomware |
41
+ | `RAT_` | Remote access trojan |
42
+ | `MINER_` | Cryptominer |
43
+ | `STEALER_` | Information stealer |
44
+ | `LOADER_` | Loader/dropper |
45
+ | `C2_` | Command and control |
46
+
47
+ ### Platform Indicators
48
+
49
+ | Indicator | Platform |
50
+ |-----------|----------|
51
+ | `Win_` | Windows |
52
+ | `Lnx_` | Linux |
53
+ | `Mac_` | macOS |
54
+ | `Android_` | Android |
55
+ | `iOS_` | iOS |
56
+ | `Multi_` | Cross-platform |
57
+ | `PE_` | PE file format |
58
+ | `ELF_` | ELF file format |
59
+ | `PS_` | PowerShell |
60
+ | `DOC_` | Office documents |
61
+ | `PDF_` | PDF files |
62
+ | `JAR_` | Java archives |
63
+
64
+ ### Examples
65
+
66
+ ```yara
67
+ // Good names (all include date suffix)
68
+ MAL_Win_Emotet_Loader_Jan25
69
+ HKTL_Win_CobaltStrike_Beacon_Jan25
70
+ WEBSHELL_PHP_Generic_Eval_Jan25
71
+ APT_Win_Lazarus_AppleJeus_Config_Jan25
72
+ RANSOM_Win_LockBit3_Decryptor_Jan25
73
+ SUSP_PE_Packed_UPX_Anomaly_Jan25
74
+
75
+ // Bad names
76
+ malware_detector // Too vague
77
+ rule1 // Meaningless
78
+ detect_bad_stuff // Unprofessional
79
+ EMOTET_RULE // Missing category/platform/date
80
+ CobaltStrike_Beacon // Missing category/date
81
+ ```
82
+
83
+ ## Metadata Requirements
84
+
85
+ ### Required Fields
86
+
87
+ Every rule MUST have:
88
+
89
+ ```yara
90
+ meta:
91
+ description = "Detects X malware via Y unique feature"
92
+ author = "Your Name <email@example.com>" // OR "@twitter_handle"
93
+ reference = "https://analysis-report-url.com"
94
+ date = "2025-01-29"
95
+ ```
96
+
97
+ ### Description Guidelines
98
+
99
+ - **Start with "Detects"** — Consistent, scannable format
100
+ - **Length: 60-400 characters** — Brief but informative
101
+ - **Explain WHAT and HOW** — What it catches and the distinguishing feature
102
+
103
+ ```yara
104
+ // Good descriptions
105
+ description = "Detects Emotet loader via unique XOR decryption routine and mutex pattern"
106
+ description = "Detects CobaltStrike beacon by watermark bytes in PE overlay"
107
+ description = "Detects generic PHP webshell using eval with base64_decode pattern"
108
+
109
+ // Bad descriptions
110
+ description = "Malware" // Too short
111
+ description = "This rule detects..." // Redundant
112
+ description = "Catches bad stuff" // Unprofessional
113
+ description = "Might be malware" // Low confidence = use SUSP_ prefix
114
+ ```
115
+
116
+ ### Optional Fields
117
+
118
+ ```yara
119
+ meta:
120
+ // Sample identification (hash field can repeat)
121
+ hash = "abc123def456..." // SHA256 of reference sample
122
+ hash = "789xyz..." // Additional samples (repeat field)
123
+
124
+ // Confidence scoring
125
+ score = 75 // 0-100, use thresholds
126
+
127
+ // Versioning
128
+ modified = "2025-01-30" // Last update date
129
+ version = "1.2" // Rule version
130
+ old_rule_name = "Previous_Rule_Name" // For renamed rules (searchability)
131
+
132
+ // Classification
133
+ tags = "apt, lazarus, loader" // Comma-separated
134
+ tlp = "WHITE" // Traffic Light Protocol
135
+
136
+ // MITRE ATT&CK
137
+ mitre_attack = "T1055" // Technique ID
138
+ ```
139
+
140
+ ### Score Thresholds
141
+
142
+ | Score | Meaning | Action |
143
+ |-------|---------|--------|
144
+ | 0-25 | Low confidence | Hunting only, expect FPs |
145
+ | 26-50 | Medium | Investigate, don't auto-quarantine |
146
+ | 51-75 | High | Alert SOC, likely malicious |
147
+ | 76-100 | Critical | Auto-quarantine appropriate |
148
+
149
+ ## Common Naming Mistakes
150
+
151
+ | Bad Name | Problem | Corrected |
152
+ |----------|---------|-----------|
153
+ | `Emotet_Detector` | Missing category, platform, date | `MAL_Win_Emotet_Loader_Jan25` |
154
+ | `MAL_Suspicious_File` | "Suspicious" is vague | `MAL_Win_Lazarus_Downloader_Jan25` |
155
+ | `rule1` | No semantic meaning | `HKTL_Multi_Mimikatz_CredDump_Jan25` |
156
+ | `MALWARE_windows_trojan` | Wrong case, wrong order | `MAL_Win_Trojan_Generic_Jan25` |
157
+ | `emotet_loader` | All lowercase | `MAL_Win_Emotet_Loader_Jan25` |
158
+ | `EmoteTLoader` | CamelCase | `MAL_Win_Emotet_Loader_Jan25` |
159
+ | `MAL Win Emotet` | Spaces | `MAL_Win_Emotet_Loader_Jan25` |
160
+ | `CobaltStrike_Beacon` | Missing category and date | `HKTL_Win_CobaltStrike_Beacon_Jan25` |
161
+
162
+ ## Linter Error Codes
163
+
164
+ The `yara_lint.py` script produces these codes:
165
+
166
+ | Code | Severity | Issue | Fix |
167
+ |------|----------|-------|-----|
168
+ | E001 | Error | Missing required metadata | Add description, author, date, reference |
169
+ | E002 | Error | Invalid rule name format | Use CATEGORY_PLATFORM_FAMILY_DATE |
170
+ | E003 | Error | String under 4 bytes | Use longer strings or hex patterns |
171
+ | W001 | Warning | Name doesn't follow convention | Use standard prefix or justify custom |
172
+ | W002 | Warning | Description doesn't start with "Detects" | Rewrite description |
173
+ | W003 | Warning | Unbounded regex pattern | Add length bounds: `.{0,100}` not `.*` |
174
+ | W004 | Warning | Condition doesn't start with cheap check | Add `filesize <` or magic bytes first |
175
+ | I001 | Info | Unrecognized category prefix | Use standard prefix or document custom |
176
+ | I002 | Info | `nocase` modifier used | Consider if case variation is needed |
177
+
178
+ ## PR Review Checklist
179
+
180
+ When reviewing YARA rules in PRs:
181
+
182
+ ### Naming & Metadata
183
+ - [ ] Name matches `{CATEGORY}_{PLATFORM}_{FAMILY}_{DATE}` format
184
+ - [ ] Category prefix is from approved list (or justified)
185
+ - [ ] Description starts with "Detects" and is 60-400 chars
186
+ - [ ] Author includes contact (email or @handle)
187
+ - [ ] Reference URL is provided and accessible
188
+ - [ ] Date matches rule creation/modification date
189
+ - [ ] Hash field contains valid SHA256 of primary sample
190
+
191
+ ### String Quality
192
+ - [ ] All strings ≥4 bytes
193
+ - [ ] No API names used as indicators
194
+ - [ ] No common paths or executables
195
+ - [ ] Regex patterns are bounded
196
+ - [ ] Base64 modifier only on 3+ char strings
197
+
198
+ ### Condition Quality
199
+ - [ ] Starts with `filesize <` check
200
+ - [ ] Has magic bytes check before module use
201
+ - [ ] Uses `and` instead of implicit conjunction
202
+ - [ ] Expensive operations come last
203
+
204
+ ### Testing Evidence
205
+ - [ ] Matches all target samples (list sample hashes)
206
+ - [ ] Zero matches on goodware corpus (state corpus tested)
207
+ - [ ] `yr check` passes
208
+ - [ ] `yr fmt --check` passes
209
+ - [ ] Linter passes
210
+
211
+ ## Enforcing Style in CI
212
+
213
+ ### Pre-commit Hook
214
+
215
+ Add to `.pre-commit-config.yaml`:
216
+
217
+ ```yaml
218
+ repos:
219
+ - repo: local
220
+ hooks:
221
+ - id: yara-lint
222
+ name: YARA Lint
223
+ entry: uv run yara_lint.py --strict
224
+ language: system
225
+ files: \.yar$
226
+ types: [file]
227
+ ```
228
+
229
+ ### GitHub Actions
230
+
231
+ ```yaml
232
+ - name: Lint YARA rules
233
+ run: |
234
+ uv run yara_lint.py --strict rules/
235
+ yr check rules/
236
+ yr fmt --check rules/
237
+ ```
238
+
239
+ Block PRs that fail linting. No exceptions for "quick fixes."
240
+
241
+ ## Anti-Patterns
242
+
243
+ ### Naming
244
+
245
+ - All lowercase: `emotet_loader`
246
+ - CamelCase: `EmoteTLoader`
247
+ - No category: `Emotet_Jan25`
248
+ - Spaces or special chars: `MAL Win Emotet`
249
+ - Reserved words: `rule`, `strings`, `condition`
250
+
251
+ ### Metadata
252
+
253
+ - Missing description
254
+ - Description doesn't start with "Detects"
255
+ - No author attribution
256
+ - No reference URL
257
+ - Outdated date (not updated when rule modified)