@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,588 @@
1
+ # Language-Specific Sharp Edges
2
+
3
+ General programming footguns by language—not limited to cryptography.
4
+
5
+ ## C / C++
6
+
7
+ ### Integer Overflow is Undefined Behavior
8
+
9
+ ```c
10
+ // DANGEROUS: Signed overflow is UB, compiler can optimize away checks
11
+ int x = INT_MAX;
12
+ if (x + 1 > x) { // Compiler may assume always true (UB)
13
+ // Overflow check optimized away!
14
+ }
15
+
16
+ // DANGEROUS: Size calculations
17
+ size_t size = user_count * sizeof(struct User);
18
+ // If user_count * sizeof overflows, allocates tiny buffer
19
+ void *buf = malloc(size);
20
+ ```
21
+
22
+ **The Problem**: Signed integer overflow is undefined behavior. Compilers assume it never happens and optimize accordingly—including removing overflow checks.
23
+
24
+ ### Buffer Handling
25
+
26
+ ```c
27
+ // DANGEROUS: No bounds checking
28
+ char buf[64];
29
+ strcpy(buf, user_input); // Classic overflow
30
+ sprintf(buf, "Hello %s", name); // Format + overflow
31
+ gets(buf); // Never use, removed in C11
32
+
33
+ // DANGEROUS: Off-by-one
34
+ char buf[64];
35
+ strncpy(buf, src, 64); // NOT null-terminated if src >= 64!
36
+ buf[63] = '\0'; // Must do manually
37
+ ```
38
+
39
+ ### Format Strings
40
+
41
+ ```c
42
+ // DANGEROUS: User controls format
43
+ printf(user_input); // Format string attack
44
+ syslog(LOG_INFO, user_input); // Same problem
45
+
46
+ // SAFE: Format as literal
47
+ printf("%s", user_input);
48
+ ```
49
+
50
+ ### Memory Cleanup
51
+
52
+ ```c
53
+ // DANGEROUS: Secrets persist
54
+ char password[64];
55
+ // ... use password ...
56
+ memset(password, 0, sizeof(password)); // May be optimized away!
57
+
58
+ // SAFER: Use explicit_bzero or volatile
59
+ explicit_bzero(password, sizeof(password)); // Won't be optimized
60
+ ```
61
+
62
+ ---
63
+
64
+ ## Go
65
+
66
+ ### Silent Integer Overflow
67
+
68
+ ```go
69
+ // DANGEROUS: Overflow wraps silently (no panic!)
70
+ var x int32 = math.MaxInt32
71
+ x = x + 1 // Wraps to -2147483648, no error
72
+
73
+ // This enables vulnerabilities in:
74
+ // - Size calculations for allocations
75
+ // - Loop bounds
76
+ // - Financial calculations
77
+ ```
78
+
79
+ **The Problem**: Unlike Rust (debug panics), Go silently wraps. Fuzzing may never find overflow bugs because they don't crash.
80
+
81
+ ### Slice Aliasing
82
+
83
+ ```go
84
+ // DANGEROUS: Slices share backing array
85
+ original := []int{1, 2, 3, 4, 5}
86
+ slice1 := original[1:3] // {2, 3}
87
+ slice2 := original[2:4] // {3, 4}
88
+
89
+ slice1[1] = 999 // Modifies original AND slice2!
90
+ // slice2 is now {999, 4}
91
+ ```
92
+
93
+ ### Interface Nil Confusion
94
+
95
+ ```go
96
+ // DANGEROUS: Typed nil vs untyped nil
97
+ var p *MyStruct = nil
98
+ var i interface{} = p
99
+
100
+ if i == nil {
101
+ // This is FALSE! i holds (type=*MyStruct, value=nil)
102
+ // An interface is only nil if both type and value are nil
103
+ }
104
+
105
+ // Common in error handling:
106
+ func getError() error {
107
+ var err *MyError = nil
108
+ return err // Returns non-nil error interface!
109
+ }
110
+ ```
111
+
112
+ ### JSON Field Matching
113
+
114
+ ```go
115
+ // DANGEROUS: Go's JSON decoder is case-insensitive
116
+ type User struct {
117
+ Admin bool `json:"admin"`
118
+ }
119
+
120
+ // Attacker sends: {"ADMIN": true} or {"Admin": true}
121
+ // Both match the "admin" field!
122
+
123
+ // Also: duplicate keys - last one wins
124
+ // {"admin": false, "admin": true} → Admin = true
125
+ ```
126
+
127
+ **Fix**: Use `DisallowUnknownFields()` and consider exact-match libraries.
128
+
129
+ ### Defer in Loops
130
+
131
+ ```go
132
+ // DANGEROUS: All defers execute at function end, not loop iteration
133
+ for _, file := range files {
134
+ f, _ := os.Open(file)
135
+ defer f.Close() // Files stay open until function returns!
136
+ }
137
+ // Can exhaust file descriptors on large loops
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Rust
143
+
144
+ ### Integer Overflow Behavior Changes
145
+
146
+ ```rust
147
+ // In debug builds: panics
148
+ // In release builds: wraps silently!
149
+ let x: u8 = 255;
150
+ let y = x + 1; // Debug: panic! Release: y = 0
151
+ ```
152
+
153
+ **The Problem**: Behavior differs between debug and release. Bugs may only manifest in production.
154
+
155
+ **Fix**: Use `wrapping_*`, `checked_*`, or `saturating_*` explicitly.
156
+
157
+ ### Unsafe Blocks
158
+
159
+ ```rust
160
+ // DANGEROUS: Unsafe disables Rust's safety guarantees
161
+ unsafe {
162
+ // Can create data races
163
+ // Can dereference raw pointers
164
+ // Can call unsafe functions
165
+ // Can access mutable statics
166
+ }
167
+
168
+ // Common in FFI—audit all unsafe blocks carefully
169
+ ```
170
+
171
+ ### Mem::forget Skips Destructors
172
+
173
+ ```rust
174
+ // DANGEROUS: Resources never cleaned up
175
+ let guard = Mutex::lock().unwrap();
176
+ std::mem::forget(guard); // Lock never released = deadlock
177
+
178
+ // Also problematic for:
179
+ // - File handles
180
+ // - Memory mappings
181
+ // - Cryptographic key cleanup
182
+ ```
183
+
184
+ ### Unwrap Panics
185
+
186
+ ```rust
187
+ // DANGEROUS: Panics on None/Err
188
+ let value = some_option.unwrap(); // Panics if None
189
+ let result = fallible_fn().unwrap(); // Panics if Err
190
+
191
+ // In libraries: propagate errors with ?
192
+ // In binaries: use expect() with message, or handle properly
193
+ ```
194
+
195
+ ---
196
+
197
+ ## Swift
198
+
199
+ ### Force Unwrapping
200
+
201
+ ```swift
202
+ // DANGEROUS: Crashes on nil
203
+ let value = optionalValue! // Runtime crash if nil
204
+
205
+ // DANGEROUS: Implicitly unwrapped optionals
206
+ var name: String! // IUO - crashes if accessed while nil
207
+ ```
208
+
209
+ ### Bridge Type Surprises
210
+
211
+ ```swift
212
+ // DANGEROUS: NSString/String bridging
213
+ let nsString: NSString = "hello"
214
+ let range = nsString.range(of: "é") // UTF-16 range
215
+ let swiftString = nsString as String
216
+ // Range semantics differ between NSString (UTF-16) and String (grapheme clusters)
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Java
222
+
223
+ ### Equality Confusion
224
+
225
+ ```java
226
+ // DANGEROUS: Reference equality, not value equality
227
+ String a = new String("hello");
228
+ String b = new String("hello");
229
+ if (a == b) { // FALSE - different objects
230
+ }
231
+
232
+ Integer x = 128;
233
+ Integer y = 128;
234
+ if (x == y) { // FALSE - outside cached range [-128, 127]
235
+ }
236
+
237
+ Integer p = 127;
238
+ Integer q = 127;
239
+ if (p == q) { // TRUE - cached, but misleading
240
+ }
241
+ ```
242
+
243
+ ### Type Erasure
244
+
245
+ ```java
246
+ // DANGEROUS: Generic types erased at runtime
247
+ List<String> strings = new ArrayList<>();
248
+ List<Integer> ints = new ArrayList<>();
249
+
250
+ // At runtime, both are just "List" - no type checking
251
+ // Can cast incorrectly and get ClassCastException later
252
+
253
+ // Also: can't do runtime checks
254
+ if (obj instanceof List<String>) { // Compile error
255
+ }
256
+ ```
257
+
258
+ ### Serialization
259
+
260
+ ```java
261
+ // DANGEROUS: Like pickle, arbitrary code execution
262
+ ObjectInputStream ois = new ObjectInputStream(untrustedInput);
263
+ Object obj = ois.readObject(); // Executes readObject() on malicious classes
264
+
265
+ // "Gadget chains" in libraries enable RCE
266
+ // Even without executing readObject(), deserialization triggers code
267
+ ```
268
+
269
+ ### Swallowed Exceptions
270
+
271
+ ```java
272
+ // DANGEROUS: Empty catch blocks
273
+ try {
274
+ sensitiveOperation();
275
+ } catch (Exception e) {
276
+ // Silently swallowed - security failure masked
277
+ }
278
+ ```
279
+
280
+ ---
281
+
282
+ ## Kotlin
283
+
284
+ ### Platform Types from Java
285
+
286
+ ```kotlin
287
+ // DANGEROUS: Java returns can be null, but Kotlin doesn't know
288
+ val result = javaLibrary.getValue() // Platform type: String!
289
+ result.length // NPE if Java returned null!
290
+
291
+ // Kotlin trusts Java's lack of nullability annotations
292
+ ```
293
+
294
+ ### Not-Null Assertion
295
+
296
+ ```kotlin
297
+ // DANGEROUS: Throws NPE
298
+ val value = nullableValue!! // KotlinNullPointerException if null
299
+ ```
300
+
301
+ ### Lateinit Pitfalls
302
+
303
+ ```kotlin
304
+ // DANGEROUS: Accessing before initialization throws
305
+ lateinit var config: Config
306
+
307
+ fun process() {
308
+ config.value // UninitializedPropertyAccessException
309
+ }
310
+ ```
311
+
312
+ ---
313
+
314
+ ## C#
315
+
316
+ ### Nullable Reference Types Opt-In
317
+
318
+ ```csharp
319
+ // DANGEROUS: NRT is opt-in, not enforced by default
320
+ // Project must enable: <Nullable>enable</Nullable>
321
+
322
+ // Even when enabled, it's warnings only by default
323
+ string? nullable = null;
324
+ string nonNull = nullable; // Warning, not error
325
+ nonNull.Length; // NullReferenceException at runtime
326
+ ```
327
+
328
+ ### Default Struct Values
329
+
330
+ ```csharp
331
+ // DANGEROUS: Structs have default values that may be invalid
332
+ struct Connection {
333
+ public string Host; // Default: null
334
+ public int Port; // Default: 0
335
+ }
336
+
337
+ var conn = default(Connection);
338
+ // conn.Host is null, conn.Port is 0 - probably invalid
339
+ ```
340
+
341
+ ### IDisposable Leaks
342
+
343
+ ```csharp
344
+ // DANGEROUS: Resources not disposed
345
+ var conn = new SqlConnection(connectionString);
346
+ conn.Open();
347
+ // Exception here = connection never closed
348
+
349
+ // SAFE: using statement
350
+ using var conn = new SqlConnection(connectionString);
351
+ conn.Open();
352
+ // Disposed even on exception
353
+ ```
354
+
355
+ ---
356
+
357
+ ## PHP
358
+
359
+ ### Type Juggling
360
+
361
+ ```php
362
+ // DANGEROUS: Loose comparison (==) does type coercion
363
+ "0e123" == "0e456" // TRUE - both are 0 in scientific notation
364
+ "0" == false // TRUE
365
+ "" == false // TRUE
366
+ [] == false // TRUE
367
+ null == false // TRUE
368
+
369
+ // Magic hash comparison
370
+ "0e462097431906509019562988736854" == "0" // TRUE
371
+ // MD5("240610708") starts with 0e... = compares as 0
372
+
373
+ // SAFE: Strict comparison (===)
374
+ "0e123" === "0e456" // FALSE
375
+ ```
376
+
377
+ ### Variable Variables and Extract
378
+
379
+ ```php
380
+ // DANGEROUS: User controls variable names
381
+ $name = $_GET['name'];
382
+ $$name = $_GET['value']; // Variable variable - arbitrary assignment
383
+
384
+ // DANGEROUS: Extract creates variables from array
385
+ extract($_POST); // Every POST param becomes a variable
386
+ // Attacker sends: POST isAdmin=true → $isAdmin = true
387
+ ```
388
+
389
+ ### Unserialize
390
+
391
+ ```php
392
+ // DANGEROUS: Like pickle, arbitrary object instantiation
393
+ $obj = unserialize($user_input);
394
+
395
+ // Triggers __wakeup(), __destruct() on crafted objects
396
+ // Can chain to RCE via "POP gadgets" in libraries
397
+ ```
398
+
399
+ ---
400
+
401
+ ## JavaScript / TypeScript
402
+
403
+ ### Coercion Madness
404
+
405
+ ```javascript
406
+ // DANGEROUS: == coerces types unpredictably
407
+ "0" == false // true
408
+ "" == false // true
409
+ [] == false // true
410
+ [] == ![] // true (wat)
411
+
412
+ // SAFE: === for strict equality
413
+ "0" === false // false
414
+ ```
415
+
416
+ ### Prototype Pollution
417
+
418
+ ```javascript
419
+ // DANGEROUS: Merging untrusted objects
420
+ function merge(target, source) {
421
+ for (let key in source) {
422
+ target[key] = source[key]; // Includes __proto__!
423
+ }
424
+ }
425
+
426
+ // Attacker sends: {"__proto__": {"isAdmin": true}}
427
+ merge({}, userInput);
428
+ // Now ALL objects have isAdmin === true
429
+ ({}).isAdmin // true
430
+ ```
431
+
432
+ **Fix**: Check `hasOwnProperty`, use `Object.create(null)`, or safe merge libraries.
433
+
434
+ ### Regex DoS (ReDoS)
435
+
436
+ ```javascript
437
+ // DANGEROUS: Catastrophic backtracking
438
+ const regex = /^(a+)+$/;
439
+ regex.test("aaaaaaaaaaaaaaaaaaaaaaaaaaaa!");
440
+ // Exponential time - freezes the event loop
441
+
442
+ // Patterns to avoid: nested quantifiers (a+)+, (a*)*
443
+ // Overlapping alternatives: (a|a)+
444
+ ```
445
+
446
+ ### ParseInt Radix
447
+
448
+ ```javascript
449
+ // DANGEROUS: Radix not specified
450
+ parseInt("08"); // 8 in modern JS, was 0 in old (octal)
451
+ parseInt("0x10"); // 16 - hex prefix recognized
452
+
453
+ // SAFE: Always specify radix
454
+ parseInt("08", 10); // 8
455
+ ```
456
+
457
+ ---
458
+
459
+ ## Python
460
+
461
+ ### Mutable Default Arguments
462
+
463
+ ```python
464
+ # DANGEROUS: Default is shared across calls
465
+ def append_to(item, target=[]):
466
+ target.append(item)
467
+ return target
468
+
469
+ append_to(1) # [1]
470
+ append_to(2) # [1, 2] - same list!
471
+
472
+ # SAFE: Use None sentinel
473
+ def append_to(item, target=None):
474
+ if target is None:
475
+ target = []
476
+ target.append(item)
477
+ return target
478
+ ```
479
+
480
+ ### Eval and Friends
481
+
482
+ ```python
483
+ # DANGEROUS: Arbitrary code execution
484
+ eval(user_input) # Executes Python expression
485
+ exec(user_input) # Executes Python statements
486
+ compile(user_input, '', 'exec') # Compiles for later exec
487
+
488
+ # Also via:
489
+ input() # In Python 2, equivalent to eval(raw_input())
490
+ ```
491
+
492
+ ### Late Binding Closures
493
+
494
+ ```python
495
+ # DANGEROUS: Closures capture variable by reference
496
+ funcs = []
497
+ for i in range(3):
498
+ funcs.append(lambda: i)
499
+
500
+ [f() for f in funcs] # [2, 2, 2] - all see final i
501
+
502
+ # SAFE: Capture by value with default argument
503
+ funcs = []
504
+ for i in range(3):
505
+ funcs.append(lambda i=i: i)
506
+
507
+ [f() for f in funcs] # [0, 1, 2]
508
+ ```
509
+
510
+ ### Is vs ==
511
+
512
+ ```python
513
+ # DANGEROUS: 'is' checks identity, not equality
514
+ a = 256
515
+ b = 256
516
+ a is b # True - cached small integers
517
+
518
+ a = 257
519
+ b = 257
520
+ a is b # False - different objects!
521
+
522
+ # Same string issue:
523
+ s1 = "hello"
524
+ s2 = "hello"
525
+ s1 is s2 # True - interned
526
+
527
+ s1 = "hello world"
528
+ s2 = "hello world"
529
+ s1 is s2 # Maybe - depends on interpreter
530
+ ```
531
+
532
+ ---
533
+
534
+ ## Ruby
535
+
536
+ ### Dynamic Execution
537
+
538
+ ```ruby
539
+ # DANGEROUS: Arbitrary code execution
540
+ eval(user_input) # Executes Ruby code
541
+ send(user_input, *args) # Calls arbitrary method
542
+ constantize(user_input) # Gets arbitrary constant/class
543
+ public_send(user_input) # Calls public method by name
544
+
545
+ # Rails-specific:
546
+ params[:controller].constantize # Class injection
547
+ ```
548
+
549
+ ### YAML.load
550
+
551
+ ```ruby
552
+ # DANGEROUS: Arbitrary object instantiation (like pickle)
553
+ YAML.load(user_input)
554
+
555
+ # Attacker sends YAML that instantiates arbitrary objects
556
+ # Can chain to RCE via "gadget" classes
557
+
558
+ # SAFE: Use safe_load
559
+ YAML.safe_load(user_input)
560
+ ```
561
+
562
+ ### Mass Assignment
563
+
564
+ ```ruby
565
+ # DANGEROUS: All params assigned to model
566
+ User.new(params[:user]) # If params includes {admin: true}...
567
+
568
+ # Rails 4+ requires strong parameters:
569
+ params.require(:user).permit(:name, :email) # Explicitly allowlist
570
+ ```
571
+
572
+ ---
573
+
574
+ ## Quick Reference Table
575
+
576
+ | Language | Primary Sharp Edges |
577
+ |----------|-------------------|
578
+ | C/C++ | Integer overflow UB, buffer overflows, format strings, memory cleanup |
579
+ | Go | Silent int overflow, slice aliasing, interface nil, JSON case-insensitive |
580
+ | Rust | Debug/release overflow difference, unsafe blocks, mem::forget |
581
+ | Swift | Force unwrap, implicitly unwrapped optionals |
582
+ | Java | == vs equals, type erasure, serialization, swallowed exceptions |
583
+ | Kotlin | Platform types, !!, lateinit |
584
+ | C# | NRT opt-in, default struct values, IDisposable leaks |
585
+ | PHP | Type juggling (==), extract(), unserialize() |
586
+ | JS/TS | == coercion, prototype pollution, ReDoS, parseInt radix |
587
+ | Python | Mutable defaults, eval/exec/pickle, late binding, is vs == |
588
+ | Ruby | eval/send/constantize, YAML.load, mass assignment |
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: sherpa-onnx-tts
3
+ description: Local text-to-speech via sherpa-onnx (offline, no cloud)
4
+ metadata:
5
+ {
6
+ "otto":
7
+ {
8
+ "emoji": "🗣️",
9
+ "os": ["darwin", "linux", "win32"],
10
+ "requires": { "env": ["SHERPA_ONNX_RUNTIME_DIR", "SHERPA_ONNX_MODEL_DIR"] },
11
+ "install":
12
+ [
13
+ {
14
+ "id": "download-runtime-macos",
15
+ "kind": "download",
16
+ "os": ["darwin"],
17
+ "url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-osx-universal2-shared.tar.bz2",
18
+ "archive": "tar.bz2",
19
+ "extract": true,
20
+ "stripComponents": 1,
21
+ "targetDir": "~/.otto/tools/sherpa-onnx-tts/runtime",
22
+ "label": "Download sherpa-onnx runtime (macOS)",
23
+ },
24
+ {
25
+ "id": "download-runtime-linux-x64",
26
+ "kind": "download",
27
+ "os": ["linux"],
28
+ "url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-linux-x64-shared.tar.bz2",
29
+ "archive": "tar.bz2",
30
+ "extract": true,
31
+ "stripComponents": 1,
32
+ "targetDir": "~/.otto/tools/sherpa-onnx-tts/runtime",
33
+ "label": "Download sherpa-onnx runtime (Linux x64)",
34
+ },
35
+ {
36
+ "id": "download-runtime-win-x64",
37
+ "kind": "download",
38
+ "os": ["win32"],
39
+ "url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-win-x64-shared.tar.bz2",
40
+ "archive": "tar.bz2",
41
+ "extract": true,
42
+ "stripComponents": 1,
43
+ "targetDir": "~/.otto/tools/sherpa-onnx-tts/runtime",
44
+ "label": "Download sherpa-onnx runtime (Windows x64)",
45
+ },
46
+ {
47
+ "id": "download-model-lessac",
48
+ "kind": "download",
49
+ "url": "https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-piper-en_US-lessac-high.tar.bz2",
50
+ "archive": "tar.bz2",
51
+ "extract": true,
52
+ "targetDir": "~/.otto/tools/sherpa-onnx-tts/models",
53
+ "label": "Download Piper en_US lessac (high)",
54
+ },
55
+ ],
56
+ },
57
+ }
58
+ ---
59
+
60
+ # sherpa-onnx-tts
61
+
62
+ Local TTS using the sherpa-onnx offline CLI.
63
+
64
+ ## Install
65
+
66
+ 1. Download the runtime for your OS (extracts into `~/.otto/tools/sherpa-onnx-tts/runtime`)
67
+ 2. Download a voice model (extracts into `~/.otto/tools/sherpa-onnx-tts/models`)
68
+
69
+ Update `~/.otto/otto.json`:
70
+
71
+ ```json5
72
+ {
73
+ skills: {
74
+ entries: {
75
+ "sherpa-onnx-tts": {
76
+ env: {
77
+ SHERPA_ONNX_RUNTIME_DIR: "~/.otto/tools/sherpa-onnx-tts/runtime",
78
+ SHERPA_ONNX_MODEL_DIR: "~/.otto/tools/sherpa-onnx-tts/models/vits-piper-en_US-lessac-high",
79
+ },
80
+ },
81
+ },
82
+ },
83
+ }
84
+ ```
85
+
86
+ The wrapper lives in this skill folder. Run it directly, or add the wrapper to PATH:
87
+
88
+ ```bash
89
+ export PATH="{baseDir}/bin:$PATH"
90
+ ```
91
+
92
+ ## Usage
93
+
94
+ ```bash
95
+ {baseDir}/bin/sherpa-onnx-tts -o ./tts.wav "Hello from local TTS."
96
+ ```
97
+
98
+ Notes:
99
+
100
+ - Pick a different model from the sherpa-onnx `tts-models` release if you want another voice.
101
+ - If the model dir has multiple `.onnx` files, set `SHERPA_ONNX_MODEL_FILE` or pass `--model-file`.
102
+ - You can also pass `--tokens-file` or `--data-dir` to override the defaults.
103
+ - Windows: run `node {baseDir}\\bin\\sherpa-onnx-tts -o tts.wav "Hello from local TTS."`