@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,252 @@
1
+ """
2
+ Vulnerable Python code sample for constant-time analysis testing.
3
+
4
+ This file demonstrates common timing side-channel vulnerabilities in Python:
5
+ - Variable-time division operations
6
+ - Timing-unsafe string comparisons
7
+ - Variable-latency math operations
8
+ - Predictable randomness
9
+ - Table lookups indexed by secrets
10
+ - Variable-length encoding functions
11
+ - Bit shift operations
12
+
13
+ DO NOT USE THIS CODE IN PRODUCTION - it is intentionally vulnerable.
14
+ """
15
+
16
+ import base64
17
+ import json
18
+ import math
19
+ import random
20
+ import struct
21
+
22
+
23
+ def vulnerable_mod_reduce(value: int, modulus: int) -> int:
24
+ """
25
+ Vulnerable modular reduction using division.
26
+ Division has data-dependent timing on most platforms.
27
+ """
28
+ # VULNERABLE: Division has variable-time execution
29
+ quotient = value // modulus
30
+ # VULNERABLE: Modulo has variable-time execution
31
+ remainder = value % modulus
32
+
33
+ # Use quotient to prevent dead code elimination
34
+ if quotient < 0:
35
+ raise ValueError("Unexpected negative quotient")
36
+
37
+ return remainder
38
+
39
+
40
+ def vulnerable_token_compare(provided: str, expected: str) -> bool:
41
+ """
42
+ Vulnerable token comparison using early-exit equality.
43
+ This leaks timing information about how many characters match.
44
+ """
45
+ # VULNERABLE: == on strings may early-exit
46
+ return provided == expected
47
+
48
+
49
+ def vulnerable_string_search(haystack: str, needle: str) -> bool:
50
+ """
51
+ Vulnerable string search using find.
52
+ find() has early-terminating behavior.
53
+ """
54
+ # VULNERABLE: find has early-terminating behavior
55
+ return haystack.find(needle) != -1
56
+
57
+
58
+ def vulnerable_string_startswith(text: str, prefix: str) -> bool:
59
+ """
60
+ Vulnerable string prefix check using startswith.
61
+ startswith() has early-terminating behavior.
62
+ """
63
+ # VULNERABLE: startswith has early-terminating behavior
64
+ return text.startswith(prefix)
65
+
66
+
67
+ def vulnerable_sqrt(value: float) -> float:
68
+ """
69
+ Vulnerable square root calculation.
70
+ math.sqrt() has variable latency based on operand values.
71
+ """
72
+ # VULNERABLE: math.sqrt has variable latency
73
+ return math.sqrt(value)
74
+
75
+
76
+ def vulnerable_pow(base: float, exponent: float) -> float:
77
+ """
78
+ Vulnerable power calculation.
79
+ math.pow() has variable latency based on operand values.
80
+ """
81
+ # VULNERABLE: math.pow has variable latency
82
+ return math.pow(base, exponent)
83
+
84
+
85
+ def vulnerable_random_token(length: int) -> str:
86
+ """
87
+ Vulnerable random number generation.
88
+ random module is predictable and not cryptographically secure.
89
+ """
90
+ chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
91
+ token = ""
92
+
93
+ for _ in range(length):
94
+ # VULNERABLE: random.choice is predictable
95
+ token += random.choice(chars)
96
+
97
+ return token
98
+
99
+
100
+ def vulnerable_random_int(min_val: int, max_val: int) -> int:
101
+ """
102
+ Vulnerable random integer generation.
103
+ random.randint() is predictable.
104
+ """
105
+ # VULNERABLE: random.randint is predictable
106
+ return random.randint(min_val, max_val)
107
+
108
+
109
+ def vulnerable_decompose(r: int, gamma2: int) -> tuple[int, int]:
110
+ """
111
+ Vulnerable ML-DSA-like decompose function with division.
112
+ Demonstrates the KyberSlash-style vulnerability.
113
+ """
114
+ # VULNERABLE: Division has variable-time execution
115
+ r1 = (r + 127) // (2 * gamma2)
116
+
117
+ # VULNERABLE: Modulo has variable-time execution
118
+ r0 = r % (2 * gamma2)
119
+
120
+ # Centering
121
+ if r0 > gamma2:
122
+ r0 -= 2 * gamma2
123
+ r1 += 1
124
+
125
+ return r1, r0
126
+
127
+
128
+ def vulnerable_table_lookup(secret_index: int, table: list) -> int:
129
+ """
130
+ Vulnerable table lookup using secret as index.
131
+ This leaks timing through cache behavior.
132
+ """
133
+ # VULNERABLE: Array access indexed by secret leaks cache timing
134
+ return table[secret_index]
135
+
136
+
137
+ def vulnerable_sbox_lookup(secret_byte: int) -> int:
138
+ """
139
+ Vulnerable S-box lookup (common in AES implementations).
140
+ Cache timing varies based on which cache line is accessed.
141
+ """
142
+ # Standard AES S-box (first 16 values as example)
143
+ sbox = [
144
+ 0x63,
145
+ 0x7C,
146
+ 0x77,
147
+ 0x7B,
148
+ 0xF2,
149
+ 0x6B,
150
+ 0x6F,
151
+ 0xC5,
152
+ 0x30,
153
+ 0x01,
154
+ 0x67,
155
+ 0x2B,
156
+ 0xFE,
157
+ 0xD7,
158
+ 0xAB,
159
+ 0x76,
160
+ ]
161
+ # VULNERABLE: Table lookup indexed by secret byte
162
+ return sbox[secret_byte % len(sbox)]
163
+
164
+
165
+ def vulnerable_bit_shift(secret: int, shift_amount: int) -> int:
166
+ """
167
+ Vulnerable bit shift where shift amount depends on secret.
168
+ """
169
+ # VULNERABLE: Left shift amount derived from secret
170
+ result = 1 << shift_amount
171
+ # VULNERABLE: Right shift
172
+ result2 = secret >> (shift_amount % 8)
173
+ return result + result2
174
+
175
+
176
+ def vulnerable_encode_secret(secret: bytes) -> str:
177
+ """
178
+ Vulnerable encoding of secret data.
179
+ Variable-length output leaks information about input.
180
+ """
181
+ # VULNERABLE: Base64 output length depends on input
182
+ encoded = base64.b64encode(secret).decode()
183
+ return encoded
184
+
185
+
186
+ def vulnerable_json_encode(secret_data: dict) -> str:
187
+ """
188
+ Vulnerable JSON encoding of secret data.
189
+ Output length and encoding time varies with input.
190
+ """
191
+ # VULNERABLE: JSON encoding produces variable-length output
192
+ return json.dumps(secret_data)
193
+
194
+
195
+ def vulnerable_struct_pack(secret_value: int) -> bytes:
196
+ """
197
+ Vulnerable struct packing.
198
+ """
199
+ # VULNERABLE: struct.pack timing may vary
200
+ return struct.pack(">I", secret_value)
201
+
202
+
203
+ def vulnerable_int_to_bytes(secret: int) -> bytes:
204
+ """
205
+ Vulnerable integer to bytes conversion.
206
+ Output length reveals information about the integer size.
207
+ """
208
+ # VULNERABLE: to_bytes output length may leak integer magnitude
209
+ byte_length = (secret.bit_length() + 7) // 8 or 1
210
+ return secret.to_bytes(byte_length, "big")
211
+
212
+
213
+ def run_tests() -> None:
214
+ """Test harness to prevent dead code elimination."""
215
+ print("Running vulnerable operations for testing...")
216
+
217
+ result1 = vulnerable_mod_reduce(12345, 97)
218
+ print(f"Mod reduce: {result1}")
219
+
220
+ result2 = vulnerable_token_compare("secret123", "secret123")
221
+ print(f"Token compare: {result2}")
222
+
223
+ result3 = vulnerable_sqrt(144)
224
+ print(f"Sqrt: {result3}")
225
+
226
+ result4 = vulnerable_pow(2, 10)
227
+ print(f"Pow: {result4}")
228
+
229
+ result5 = vulnerable_random_token(16)
230
+ print(f"Token: {result5}")
231
+
232
+ result6 = vulnerable_decompose(1000, 261888)
233
+ print(f"Decompose: r1={result6[0]}, r0={result6[1]}")
234
+
235
+ result7 = vulnerable_table_lookup(5, [1, 2, 3, 4, 5, 6, 7, 8])
236
+ print(f"Table lookup: {result7}")
237
+
238
+ result8 = vulnerable_sbox_lookup(10)
239
+ print(f"S-box lookup: {result8}")
240
+
241
+ result9 = vulnerable_bit_shift(0xDEADBEEF, 4)
242
+ print(f"Bit shift: {result9}")
243
+
244
+ result10 = vulnerable_encode_secret(b"secret")
245
+ print(f"Encoded: {result10}")
246
+
247
+ result11 = vulnerable_json_encode({"key": "value"})
248
+ print(f"JSON: {result11}")
249
+
250
+
251
+ if __name__ == "__main__":
252
+ run_tests()
@@ -0,0 +1,188 @@
1
+ # Vulnerable Ruby code sample for constant-time analysis testing.
2
+ #
3
+ # This file demonstrates common timing side-channel vulnerabilities in Ruby:
4
+ # - Variable-time division operations
5
+ # - Timing-unsafe string comparisons
6
+ # - Variable-latency math operations
7
+ # - Predictable randomness
8
+ # - Table lookups indexed by secrets
9
+ # - Variable-length encoding functions
10
+ # - Bit shift operations
11
+ #
12
+ # DO NOT USE THIS CODE IN PRODUCTION - it is intentionally vulnerable.
13
+
14
+ require 'json'
15
+ require 'base64'
16
+
17
+ # Vulnerable modular reduction using division.
18
+ # Division has data-dependent timing on most platforms.
19
+ def vulnerable_mod_reduce(value, modulus)
20
+ # VULNERABLE: Division has variable-time execution
21
+ quotient = value / modulus
22
+ # VULNERABLE: Modulo has variable-time execution
23
+ remainder = value % modulus
24
+
25
+ # Use quotient to prevent dead code elimination
26
+ raise "Unexpected negative quotient" if quotient < 0
27
+
28
+ remainder
29
+ end
30
+
31
+ # Vulnerable token comparison using early-exit equality.
32
+ # This leaks timing information about how many characters match.
33
+ def vulnerable_token_compare(provided, expected)
34
+ # VULNERABLE: == on strings may early-exit
35
+ provided == expected
36
+ end
37
+
38
+ # Vulnerable string search using include?.
39
+ # include?() has early-terminating behavior.
40
+ def vulnerable_string_search(haystack, needle)
41
+ # VULNERABLE: include? has early-terminating behavior
42
+ haystack.include?(needle)
43
+ end
44
+
45
+ # Vulnerable string prefix check using start_with?.
46
+ # start_with?() has early-terminating behavior.
47
+ def vulnerable_string_startswith(text, prefix)
48
+ # VULNERABLE: start_with? has early-terminating behavior
49
+ text.start_with?(prefix)
50
+ end
51
+
52
+ # Vulnerable square root calculation.
53
+ # Math.sqrt() has variable latency based on operand values.
54
+ def vulnerable_sqrt(value)
55
+ # VULNERABLE: Math.sqrt has variable latency
56
+ Math.sqrt(value)
57
+ end
58
+
59
+ # Vulnerable random number generation.
60
+ # rand() is predictable and not cryptographically secure.
61
+ def vulnerable_random_token(length)
62
+ chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
63
+ token = ""
64
+
65
+ length.times do
66
+ # VULNERABLE: rand is predictable
67
+ token += chars[rand(chars.length)]
68
+ end
69
+
70
+ token
71
+ end
72
+
73
+ # Vulnerable random integer generation.
74
+ # rand() is predictable.
75
+ def vulnerable_random_int(min_val, max_val)
76
+ # VULNERABLE: rand is predictable
77
+ rand(min_val..max_val)
78
+ end
79
+
80
+ # Vulnerable ML-DSA-like decompose function with division.
81
+ # Demonstrates the KyberSlash-style vulnerability.
82
+ def vulnerable_decompose(r, gamma2)
83
+ # VULNERABLE: Division has variable-time execution
84
+ r1 = (r + 127) / (2 * gamma2)
85
+
86
+ # VULNERABLE: Modulo has variable-time execution
87
+ r0 = r % (2 * gamma2)
88
+
89
+ # Centering
90
+ if r0 > gamma2
91
+ r0 -= 2 * gamma2
92
+ r1 += 1
93
+ end
94
+
95
+ [r1, r0]
96
+ end
97
+
98
+ # Vulnerable regex matching.
99
+ # =~ has variable-time execution.
100
+ def vulnerable_regex_match(text, pattern)
101
+ # VULNERABLE: =~ has variable-time execution
102
+ text =~ pattern
103
+ end
104
+
105
+ # Vulnerable table lookup using secret as index.
106
+ # This leaks timing through cache behavior.
107
+ def vulnerable_table_lookup(secret_index, table)
108
+ # VULNERABLE: Array access indexed by secret leaks cache timing
109
+ table[secret_index]
110
+ end
111
+
112
+ # Vulnerable S-box lookup (common in AES implementations).
113
+ # Cache timing varies based on which cache line is accessed.
114
+ def vulnerable_sbox_lookup(secret_byte)
115
+ # Standard AES S-box (first 16 values as example)
116
+ sbox = [
117
+ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5,
118
+ 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
119
+ ]
120
+ # VULNERABLE: Table lookup indexed by secret byte
121
+ sbox[secret_byte % sbox.length]
122
+ end
123
+
124
+ # Vulnerable bit shift where shift amount depends on secret.
125
+ def vulnerable_bit_shift(secret, shift_amount)
126
+ # VULNERABLE: Left shift amount derived from secret
127
+ result = 1 << shift_amount
128
+ # VULNERABLE: Right shift
129
+ result2 = secret >> (shift_amount % 8)
130
+ result + result2
131
+ end
132
+
133
+ # Vulnerable encoding of secret data.
134
+ # Variable-length output leaks information about input.
135
+ def vulnerable_encode_secret(secret)
136
+ # VULNERABLE: Base64 output length depends on input
137
+ Base64.encode64(secret)
138
+ end
139
+
140
+ # Vulnerable JSON encoding of secret data.
141
+ # Output length and encoding time varies with input.
142
+ def vulnerable_json_encode(secret_data)
143
+ # VULNERABLE: JSON encoding produces variable-length output
144
+ secret_data.to_json
145
+ end
146
+
147
+ # Vulnerable pack operation.
148
+ def vulnerable_pack_secret(values)
149
+ # VULNERABLE: pack may leak data length via timing
150
+ values.pack("C*")
151
+ end
152
+
153
+ # Test harness to prevent dead code elimination
154
+ def run_tests
155
+ puts "Running vulnerable operations for testing..."
156
+
157
+ result1 = vulnerable_mod_reduce(12345, 97)
158
+ puts "Mod reduce: #{result1}"
159
+
160
+ result2 = vulnerable_token_compare("secret123", "secret123")
161
+ puts "Token compare: #{result2}"
162
+
163
+ result3 = vulnerable_sqrt(144)
164
+ puts "Sqrt: #{result3}"
165
+
166
+ result5 = vulnerable_random_token(16)
167
+ puts "Token: #{result5}"
168
+
169
+ result6 = vulnerable_decompose(1000, 261888)
170
+ puts "Decompose: r1=#{result6[0]}, r0=#{result6[1]}"
171
+
172
+ result7 = vulnerable_table_lookup(5, [1, 2, 3, 4, 5, 6, 7, 8])
173
+ puts "Table lookup: #{result7}"
174
+
175
+ result8 = vulnerable_sbox_lookup(10)
176
+ puts "S-box lookup: #{result8}"
177
+
178
+ result9 = vulnerable_bit_shift(0xDEADBEEF, 4)
179
+ puts "Bit shift: #{result9}"
180
+
181
+ result10 = vulnerable_encode_secret("secret")
182
+ puts "Encoded: #{result10}"
183
+
184
+ result11 = vulnerable_json_encode({ "key" => "value" })
185
+ puts "JSON: #{result11}"
186
+ end
187
+
188
+ run_tests if __FILE__ == $PROGRAM_NAME
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Vulnerable Swift code sample for constant-time analysis testing.
3
+ *
4
+ * This file demonstrates common timing side-channel vulnerabilities in Swift:
5
+ * - Variable-time division operations
6
+ * - Timing-unsafe comparisons
7
+ * - Variable-latency math operations
8
+ * - Branching on secret values
9
+ *
10
+ * DO NOT USE THIS CODE IN PRODUCTION - it is intentionally vulnerable.
11
+ */
12
+
13
+ import Foundation
14
+
15
+ /**
16
+ * Vulnerable modular reduction using division.
17
+ * Division has data-dependent timing on most platforms.
18
+ */
19
+ func vulnerableModReduce(value: Int32, modulus: Int32) -> Int32 {
20
+ // VULNERABLE: Division has variable-time execution (SDIV on ARM64, IDIV on x86)
21
+ let quotient = value / modulus
22
+ // VULNERABLE: Modulo has variable-time execution
23
+ let remainder = value % modulus
24
+
25
+ // Use quotient to prevent dead code elimination
26
+ precondition(quotient >= 0, "Unexpected negative quotient")
27
+
28
+ return remainder
29
+ }
30
+
31
+ /**
32
+ * Vulnerable unsigned division.
33
+ */
34
+ func vulnerableUnsignedDivide(value: UInt32, divisor: UInt32) -> UInt32 {
35
+ // VULNERABLE: Unsigned division has variable-time execution (UDIV on ARM64)
36
+ return value / divisor
37
+ }
38
+
39
+ /**
40
+ * Vulnerable 64-bit division.
41
+ */
42
+ func vulnerableLongDivide(value: Int64, divisor: Int64) -> Int64 {
43
+ // VULNERABLE: 64-bit division has variable-time execution
44
+ return value / divisor
45
+ }
46
+
47
+ /**
48
+ * Vulnerable floating-point division.
49
+ */
50
+ func vulnerableFloatDivide(a: Double, b: Double) -> Double {
51
+ // VULNERABLE: Float division has variable latency (FDIV on ARM64)
52
+ return a / b
53
+ }
54
+
55
+ /**
56
+ * Vulnerable token comparison using == operator.
57
+ * This may early-exit on mismatch.
58
+ */
59
+ func vulnerableTokenCompare(provided: [UInt8], expected: [UInt8]) -> Bool {
60
+ // VULNERABLE: Array == comparison may early-exit
61
+ return provided == expected
62
+ }
63
+
64
+ /**
65
+ * Vulnerable string comparison.
66
+ */
67
+ func vulnerableStringCompare(provided: String, expected: String) -> Bool {
68
+ // VULNERABLE: String == comparison has variable timing
69
+ return provided == expected
70
+ }
71
+
72
+ /**
73
+ * Vulnerable square root calculation.
74
+ * sqrt() has variable latency based on operand values.
75
+ */
76
+ func vulnerableSqrt(value: Double) -> Double {
77
+ // VULNERABLE: sqrt has variable latency (FSQRT on ARM64)
78
+ return sqrt(value)
79
+ }
80
+
81
+ /**
82
+ * Vulnerable power calculation.
83
+ */
84
+ func vulnerablePow(base: Double, exponent: Double) -> Double {
85
+ // VULNERABLE: pow has variable latency
86
+ return pow(base, exponent)
87
+ }
88
+
89
+ /**
90
+ * Vulnerable decompose function similar to ML-DSA.
91
+ * Demonstrates the KyberSlash-style vulnerability.
92
+ */
93
+ func vulnerableDecompose(r: Int32, gamma2: Int32) -> (Int32, Int32) {
94
+ // VULNERABLE: Division has variable-time execution
95
+ var r1 = (r + 127) / (2 * gamma2)
96
+
97
+ // VULNERABLE: Modulo has variable-time execution
98
+ var r0 = r % (2 * gamma2)
99
+
100
+ // VULNERABLE: Branch based on computed value
101
+ if r0 > gamma2 {
102
+ r0 -= 2 * gamma2
103
+ r1 += 1
104
+ }
105
+
106
+ return (r1, r0)
107
+ }
108
+
109
+ /**
110
+ * Vulnerable table lookup using secret as index.
111
+ * This leaks timing through cache behavior.
112
+ */
113
+ func vulnerableTableLookup(secretIndex: Int, table: [Int]) -> Int {
114
+ // VULNERABLE: Array access indexed by secret leaks cache timing
115
+ return table[secretIndex]
116
+ }
117
+
118
+ /**
119
+ * Vulnerable conditional selection.
120
+ * Ternary operator compiles to conditional branch.
121
+ */
122
+ func vulnerableConditionalSelect(secret: Int32, a: Int32, b: Int32) -> Int32 {
123
+ // VULNERABLE: Ternary compiles to conditional branch
124
+ return secret != 0 ? a : b
125
+ }
126
+
127
+ /**
128
+ * Vulnerable switch on secret value.
129
+ */
130
+ func vulnerableSwitch(secretValue: Int) -> String {
131
+ // VULNERABLE: Switch compiles to conditional branches or jump table
132
+ switch secretValue {
133
+ case 0:
134
+ return "zero"
135
+ case 1:
136
+ return "one"
137
+ case 2:
138
+ return "two"
139
+ default:
140
+ return "other"
141
+ }
142
+ }
143
+
144
+ /**
145
+ * Vulnerable optional unwrapping.
146
+ */
147
+ func vulnerableOptionalUnwrap(maybeSecret: Int?) -> Int {
148
+ // VULNERABLE: Optional unwrapping introduces branches
149
+ if let secret = maybeSecret {
150
+ return secret * 2
151
+ }
152
+ return 0
153
+ }
154
+
155
+ /**
156
+ * Test harness to prevent dead code elimination.
157
+ */
158
+ func runTests() {
159
+ print("Running vulnerable operations for testing...")
160
+
161
+ let result1 = vulnerableModReduce(value: 12345, modulus: 97)
162
+ print("Mod reduce: \(result1)")
163
+
164
+ let result2 = vulnerableUnsignedDivide(value: 12345, divisor: 97)
165
+ print("Unsigned divide: \(result2)")
166
+
167
+ let result3 = vulnerableLongDivide(value: 1234567890, divisor: 12345)
168
+ print("Long divide: \(result3)")
169
+
170
+ let result4 = vulnerableFloatDivide(a: 10.0, b: 3.0)
171
+ print("Float divide: \(result4)")
172
+
173
+ let a: [UInt8] = [1, 2, 3]
174
+ let b: [UInt8] = [1, 2, 3]
175
+ let result5 = vulnerableTokenCompare(provided: a, expected: b)
176
+ print("Token compare: \(result5)")
177
+
178
+ let result6 = vulnerableSqrt(value: 144.0)
179
+ print("Sqrt: \(result6)")
180
+
181
+ let result7 = vulnerablePow(base: 2.0, exponent: 10.0)
182
+ print("Pow: \(result7)")
183
+
184
+ let (r1, r0) = vulnerableDecompose(r: 1000, gamma2: 261888)
185
+ print("Decompose: r1=\(r1), r0=\(r0)")
186
+
187
+ let table = [1, 2, 3, 4, 5, 6, 7, 8]
188
+ let result8 = vulnerableTableLookup(secretIndex: 5, table: table)
189
+ print("Table lookup: \(result8)")
190
+
191
+ let result9 = vulnerableConditionalSelect(secret: 1, a: 100, b: 200)
192
+ print("Conditional select: \(result9)")
193
+
194
+ let result10 = vulnerableSwitch(secretValue: 1)
195
+ print("Switch result: \(result10)")
196
+ }
197
+
198
+ // Run the tests
199
+ runTests()