@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,251 @@
1
+ ---
2
+ name: claude-in-chrome-troubleshooting
3
+ description: Diagnose and fix Claude in Chrome MCP extension connectivity issues. Use when mcp__claude-in-chrome__* tools fail, return "Browser extension is not connected", or behave erratically.
4
+ ---
5
+
6
+ # Claude in Chrome MCP Troubleshooting
7
+
8
+ Use this skill when Claude in Chrome MCP tools fail to connect or work unreliably.
9
+
10
+ ## When to Use
11
+
12
+ - `mcp__claude-in-chrome__*` tools fail with "Browser extension is not connected"
13
+ - Browser automation works erratically or times out
14
+ - After updating Claude Code or Claude.app
15
+ - When switching between Claude Code CLI and Claude.app (Cowork)
16
+ - Native host process is running but MCP tools still fail
17
+
18
+ ## When NOT to Use
19
+
20
+ - **Linux or Windows users** - This skill covers macOS-specific paths and tools (`~/Library/Application Support/`, `osascript`)
21
+ - General Chrome automation issues unrelated to the Claude extension
22
+ - Claude.app desktop issues (not browser-related)
23
+ - Network connectivity problems
24
+ - Chrome extension installation issues (use Chrome Web Store support)
25
+
26
+ ## The Claude.app vs Claude Code Conflict (Primary Issue)
27
+
28
+ **Background:** When Claude.app added Cowork support (browser automation from the desktop app), it introduced a competing native messaging host that conflicts with Claude Code CLI.
29
+
30
+ ### Two Native Hosts, Two Socket Formats
31
+
32
+ | Component | Native Host Binary | Socket Location |
33
+ |-----------|-------------------|-----------------|
34
+ | **Claude.app (Cowork)** | `/Applications/Claude.app/Contents/Helpers/chrome-native-host` | `/tmp/claude-mcp-browser-bridge-$USER/<PID>.sock` |
35
+ | **Claude Code CLI** | `~/.local/share/claude/versions/<version> --chrome-native-host` | `$TMPDIR/claude-mcp-browser-bridge-$USER` (single file) |
36
+
37
+ ### Why They Conflict
38
+
39
+ 1. Both register native messaging configs in Chrome:
40
+ - `com.anthropic.claude_browser_extension.json` → Claude.app helper
41
+ - `com.anthropic.claude_code_browser_extension.json` → Claude Code wrapper
42
+
43
+ 2. Chrome extension requests a native host by name
44
+ 3. If the wrong config is active, the wrong binary runs
45
+ 4. The wrong binary creates sockets in a format/location the MCP client doesn't expect
46
+ 5. Result: "Browser extension is not connected" even though everything appears to be running
47
+
48
+ ### The Fix: Disable Claude.app's Native Host
49
+
50
+ **If you use Claude Code CLI for browser automation (not Cowork):**
51
+
52
+ ```bash
53
+ # Disable the Claude.app native messaging config
54
+ mv ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json \
55
+ ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json.disabled
56
+
57
+ # Ensure the Claude Code config exists and points to the wrapper
58
+ cat ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json
59
+ ```
60
+
61
+ **If you use Cowork (Claude.app) for browser automation:**
62
+
63
+ ```bash
64
+ # Disable the Claude Code native messaging config
65
+ mv ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json \
66
+ ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json.disabled
67
+ ```
68
+
69
+ **You cannot use both simultaneously.** Pick one and disable the other.
70
+
71
+ ### Toggle Script
72
+
73
+ Add this to `~/.zshrc` or run directly:
74
+
75
+ ```bash
76
+ chrome-mcp-toggle() {
77
+ local CONFIG_DIR=~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts
78
+ local CLAUDE_APP="$CONFIG_DIR/com.anthropic.claude_browser_extension.json"
79
+ local CLAUDE_CODE="$CONFIG_DIR/com.anthropic.claude_code_browser_extension.json"
80
+
81
+ if [[ -f "$CLAUDE_APP" && ! -f "$CLAUDE_APP.disabled" ]]; then
82
+ # Currently using Claude.app, switch to Claude Code
83
+ mv "$CLAUDE_APP" "$CLAUDE_APP.disabled"
84
+ [[ -f "$CLAUDE_CODE.disabled" ]] && mv "$CLAUDE_CODE.disabled" "$CLAUDE_CODE"
85
+ echo "Switched to Claude Code CLI"
86
+ echo "Restart Chrome and Claude Code to apply"
87
+ elif [[ -f "$CLAUDE_CODE" && ! -f "$CLAUDE_CODE.disabled" ]]; then
88
+ # Currently using Claude Code, switch to Claude.app
89
+ mv "$CLAUDE_CODE" "$CLAUDE_CODE.disabled"
90
+ [[ -f "$CLAUDE_APP.disabled" ]] && mv "$CLAUDE_APP.disabled" "$CLAUDE_APP"
91
+ echo "Switched to Claude.app (Cowork)"
92
+ echo "Restart Chrome to apply"
93
+ else
94
+ echo "Current state unclear. Check configs:"
95
+ ls -la "$CONFIG_DIR"/com.anthropic*.json* 2>/dev/null
96
+ fi
97
+ }
98
+ ```
99
+
100
+ Usage: `chrome-mcp-toggle` then restart Chrome (and Claude Code if switching to CLI).
101
+
102
+ ## Quick Diagnosis
103
+
104
+ ```bash
105
+ # 1. Which native host binary is running?
106
+ ps aux | grep chrome-native-host | grep -v grep
107
+ # Claude.app: /Applications/Claude.app/Contents/Helpers/chrome-native-host
108
+ # Claude Code: ~/.local/share/claude/versions/X.X.X --chrome-native-host
109
+
110
+ # 2. Where is the socket?
111
+ # For Claude Code (single file in TMPDIR):
112
+ ls -la "$(getconf DARWIN_USER_TEMP_DIR)/claude-mcp-browser-bridge-$USER" 2>&1
113
+
114
+ # For Claude.app (directory with PID files):
115
+ ls -la /tmp/claude-mcp-browser-bridge-$USER/ 2>&1
116
+
117
+ # 3. What's the native host connected to?
118
+ lsof -U 2>&1 | grep claude-mcp-browser-bridge
119
+
120
+ # 4. Which configs are active?
121
+ ls ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic*.json
122
+ ```
123
+
124
+ ## Critical Insight
125
+
126
+ **MCP connects at startup.** If the browser bridge wasn't ready when Claude Code started, the connection will fail for the entire session. The fix is usually: ensure Chrome + extension are running with correct config, THEN restart Claude Code.
127
+
128
+ ## Full Reset Procedure (Claude Code CLI)
129
+
130
+ ```bash
131
+ # 1. Ensure correct config is active
132
+ mv ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json \
133
+ ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json.disabled 2>/dev/null
134
+
135
+ # 2. Update the wrapper to use latest Claude Code version
136
+ cat > ~/.claude/chrome/chrome-native-host << 'EOF'
137
+ #!/bin/bash
138
+ LATEST=$(ls -t ~/.local/share/claude/versions/ 2>/dev/null | head -1)
139
+ exec "$HOME/.local/share/claude/versions/$LATEST" --chrome-native-host
140
+ EOF
141
+ chmod +x ~/.claude/chrome/chrome-native-host
142
+
143
+ # 3. Kill existing native host and clean sockets
144
+ pkill -f chrome-native-host
145
+ rm -rf /tmp/claude-mcp-browser-bridge-$USER/
146
+ rm -f "$(getconf DARWIN_USER_TEMP_DIR)/claude-mcp-browser-bridge-$USER"
147
+
148
+ # 4. Restart Chrome
149
+ osascript -e 'quit app "Google Chrome"' && sleep 2 && open -a "Google Chrome"
150
+
151
+ # 5. Wait for Chrome, click Claude extension icon
152
+
153
+ # 6. Verify correct native host is running
154
+ ps aux | grep chrome-native-host | grep -v grep
155
+ # Should show: ~/.local/share/claude/versions/X.X.X --chrome-native-host
156
+
157
+ # 7. Verify socket exists
158
+ ls -la "$(getconf DARWIN_USER_TEMP_DIR)/claude-mcp-browser-bridge-$USER"
159
+
160
+ # 8. Restart Claude Code
161
+ ```
162
+
163
+ ## Other Common Causes
164
+
165
+ ### Multiple Chrome Profiles
166
+
167
+ If you have the Claude extension installed in multiple Chrome profiles, each spawns its own native host and socket. This can cause confusion.
168
+
169
+ **Fix:** Only enable the Claude extension in ONE Chrome profile.
170
+
171
+ ### Multiple Claude Code Sessions
172
+
173
+ Running multiple Claude Code instances can cause socket conflicts.
174
+
175
+ **Fix:** Only run one Claude Code session at a time, or use `/mcp` to reconnect after closing other sessions.
176
+
177
+ ### Hardcoded Version in Wrapper
178
+
179
+ The wrapper at `~/.claude/chrome/chrome-native-host` may have a hardcoded version that becomes stale after updates.
180
+
181
+ **Diagnosis:**
182
+ ```bash
183
+ cat ~/.claude/chrome/chrome-native-host
184
+ # Bad: exec "/Users/.../.local/share/claude/versions/2.0.76" --chrome-native-host
185
+ # Good: Uses $(ls -t ...) to find latest
186
+ ```
187
+
188
+ **Fix:** Use the dynamic version wrapper shown in the Full Reset Procedure above.
189
+
190
+ ### TMPDIR Not Set
191
+
192
+ Claude Code expects `TMPDIR` to be set to find the socket.
193
+
194
+ ```bash
195
+ # Check
196
+ echo $TMPDIR
197
+ # Should show: /var/folders/XX/.../T/
198
+
199
+ # Fix: Add to ~/.zshrc
200
+ export TMPDIR="${TMPDIR:-$(getconf DARWIN_USER_TEMP_DIR)}"
201
+ ```
202
+
203
+ ## Diagnostic Deep Dive
204
+
205
+ ```bash
206
+ echo "=== Native Host Binary ==="
207
+ ps aux | grep chrome-native-host | grep -v grep
208
+
209
+ echo -e "\n=== Socket (Claude Code location) ==="
210
+ ls -la "$(getconf DARWIN_USER_TEMP_DIR)/claude-mcp-browser-bridge-$USER" 2>&1
211
+
212
+ echo -e "\n=== Socket (Claude.app location) ==="
213
+ ls -la /tmp/claude-mcp-browser-bridge-$USER/ 2>&1
214
+
215
+ echo -e "\n=== Native Host Open Files ==="
216
+ pgrep -f chrome-native-host | xargs -I {} lsof -p {} 2>/dev/null | grep -E "(sock|claude-mcp)"
217
+
218
+ echo -e "\n=== Active Native Messaging Configs ==="
219
+ ls ~/Library/Application\ Support/Google/Chrome/NativeMessagingHosts/com.anthropic*.json 2>/dev/null
220
+
221
+ echo -e "\n=== Custom Wrapper Contents ==="
222
+ cat ~/.claude/chrome/chrome-native-host 2>/dev/null || echo "No custom wrapper"
223
+
224
+ echo -e "\n=== TMPDIR ==="
225
+ echo "TMPDIR=$TMPDIR"
226
+ echo "Expected: $(getconf DARWIN_USER_TEMP_DIR)"
227
+ ```
228
+
229
+ ## File Reference
230
+
231
+ | File | Purpose |
232
+ |------|---------|
233
+ | `~/.claude/chrome/chrome-native-host` | Custom wrapper script for Claude Code |
234
+ | `/Applications/Claude.app/Contents/Helpers/chrome-native-host` | Claude.app (Cowork) native host |
235
+ | `~/.local/share/claude/versions/<version>` | Claude Code binary (run with `--chrome-native-host`) |
236
+ | `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_browser_extension.json` | Config for Claude.app native host |
237
+ | `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.anthropic.claude_code_browser_extension.json` | Config for Claude Code native host |
238
+ | `$TMPDIR/claude-mcp-browser-bridge-$USER` | Socket file (Claude Code) |
239
+ | `/tmp/claude-mcp-browser-bridge-$USER/<PID>.sock` | Socket files (Claude.app) |
240
+
241
+ ## Summary
242
+
243
+ 1. **Primary issue:** Claude.app (Cowork) and Claude Code use different native hosts with incompatible socket formats
244
+ 2. **Fix:** Disable the native messaging config for whichever one you're NOT using
245
+ 3. **After any fix:** Must restart Chrome AND Claude Code (MCP connects at startup)
246
+ 4. **One profile:** Only have Claude extension in one Chrome profile
247
+ 5. **One session:** Only run one Claude Code instance
248
+
249
+ ---
250
+
251
+ *Original skill by [@jeffzwang](https://github.com/jeffzwang) from [@ExaAILabs](https://github.com/ExaAILabs). Enhanced and updated for current versions of Claude Desktop and Claude Code.*
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "constant-time-analysis",
3
+ "version": "0.1.0",
4
+ "description": "Detect compiler-induced timing side-channels in cryptographic code",
5
+ "author": {
6
+ "name": "Scott Arciszewski",
7
+ "url": "https://github.com/trailofbits"
8
+ }
9
+ }
@@ -0,0 +1,381 @@
1
+ # Constant-Time Analyzer (ct-analyzer)
2
+
3
+ A portable tool for detecting timing side-channel vulnerabilities in compiled cryptographic code. Analyzes assembly output from multiple compilers and architectures to detect instructions that could leak secret data through execution timing.
4
+
5
+ ## Background
6
+
7
+ Timing side-channel attacks exploit variations in execution time to extract secret information from cryptographic implementations. Common sources include:
8
+
9
+ - **Hardware division** (`DIV`, `IDIV`): Execution time varies based on operand values
10
+ - **Floating-point operations** (`FDIV`, `FSQRT`): Variable latency based on inputs
11
+ - **Conditional branches**: Different execution paths have different timing
12
+
13
+ The infamous [KyberSlash](https://kyberslash.cr.yp.to/) attack demonstrated how division instructions in post-quantum cryptographic implementations could be exploited to recover secret keys.
14
+
15
+ ## Features
16
+
17
+ - **Multi-language support**: C, C++, Go, Rust, PHP, JavaScript, TypeScript, Python, Ruby
18
+ - **Multi-architecture support**: x86_64, ARM64, ARM, RISC-V, PowerPC, s390x, i386
19
+ - **Multi-compiler support**: GCC, Clang, Go compiler, Rustc
20
+ - **Scripting language support**: PHP (VLD/opcache), JavaScript/TypeScript (V8 bytecode), Python (dis), Ruby (YARV)
21
+ - **Optimization-level testing**: Test across O0-O3, Os, Oz
22
+ - **Multiple output formats**: Text, JSON, GitHub Actions annotations
23
+ - **Cross-compilation**: Analyze code for different target architectures
24
+
25
+ ## Quick Start
26
+
27
+ ```bash
28
+ # Install
29
+ uv pip install -e .
30
+
31
+ # Analyze a C file
32
+ ct-analyzer crypto.c
33
+ ```
34
+
35
+ ## Usage
36
+
37
+ ### Basic Analysis
38
+
39
+ ```bash
40
+ ct-analyzer <source_file>
41
+ ```
42
+
43
+ ### Options
44
+
45
+ | Option | Description |
46
+ |--------|-------------|
47
+ | `--arch, -a` | Target architecture (x86_64, arm64, arm, riscv64, ppc64le, s390x, i386) |
48
+ | `--compiler, -c` | Compiler to use (gcc, clang, go, rustc) |
49
+ | `--opt-level, -O` | Optimization level (O0, O1, O2, O3, Os, Oz) - default: O2 |
50
+ | `--warnings, -w` | Include conditional branch warnings |
51
+ | `--func, -f` | Regex pattern to filter functions |
52
+ | `--json` | Output JSON format |
53
+ | `--github` | Output GitHub Actions annotations |
54
+ | `--list-arch` | List supported architectures |
55
+
56
+ ### Examples
57
+
58
+ ```bash
59
+ # Test with different optimization levels
60
+ ct-analyzer --opt-level O0 crypto.c
61
+ ct-analyzer --opt-level O3 crypto.c
62
+
63
+ # Cross-compile for ARM64
64
+ ct-analyzer --arch arm64 crypto.c
65
+
66
+ # Include conditional branch warnings
67
+ ct-analyzer --warnings crypto.c
68
+
69
+ # Analyze specific functions
70
+ ct-analyzer --func 'decompose|sign' crypto.c
71
+
72
+ # JSON output for CI
73
+ ct-analyzer --json crypto.c
74
+
75
+ # Analyze Go code
76
+ ct-analyzer crypto.go
77
+
78
+ # Analyze Rust code
79
+ ct-analyzer crypto.rs
80
+
81
+ # Analyze PHP code (requires PHP with VLD extension or opcache)
82
+ ct-analyzer crypto.php
83
+
84
+ # Analyze TypeScript (transpiles to JS first)
85
+ ct-analyzer crypto.ts
86
+
87
+ # Analyze JavaScript (uses V8 bytecode analysis)
88
+ ct-analyzer crypto.js
89
+
90
+ # Analyze Python (uses dis module for bytecode disassembly)
91
+ ct-analyzer crypto.py
92
+
93
+ # Analyze Ruby (uses YARV instruction dump)
94
+ ct-analyzer crypto.rb
95
+ ```
96
+
97
+ ## Detected Vulnerabilities
98
+
99
+ ### Error-Level (Must Fix)
100
+
101
+ | Category | x86_64 | ARM64 | RISC-V |
102
+ |----------|--------|-------|--------|
103
+ | Integer Division | DIV, IDIV, DIVQ, IDIVQ | UDIV, SDIV | DIV, DIVU, REM, REMU |
104
+ | FP Division | DIVSS, DIVSD, DIVPS, DIVPD | FDIV | FDIV.S, FDIV.D |
105
+ | Square Root | SQRTSS, SQRTSD, SQRTPS, SQRTPD | FSQRT | FSQRT.S, FSQRT.D |
106
+
107
+ ### Warning-Level (Review Needed)
108
+
109
+ Conditional branches that may leak timing if condition depends on secret data:
110
+
111
+ - x86: JE, JNE, JZ, JNZ, JA, JB, JG, JL, etc.
112
+ - ARM: BEQ, BNE, CBZ, CBNZ, TBZ, TBNZ
113
+ - RISC-V: BEQ, BNE, BLT, BGE
114
+
115
+ ## Scripting Language Support
116
+
117
+ ### PHP Analysis
118
+
119
+ PHP analysis uses either the VLD extension (recommended) or opcache debug output:
120
+
121
+ **Detected PHP Vulnerabilities:**
122
+
123
+ | Category | Pattern | Recommendation |
124
+ |----------|---------|----------------|
125
+ | Division | `ZEND_DIV`, `ZEND_MOD` | Use Barrett reduction |
126
+ | Cache timing | `chr()`, `ord()` | Use `pack('C', $int)` / `unpack('C', $char)[1]` |
127
+ | Table lookups | `bin2hex()`, `hex2bin()`, `base64_encode()` | Use constant-time alternatives |
128
+ | Array access | `FETCH_DIM_R` (secret index) | Use constant-time table lookup |
129
+ | Bit shifts | `ZEND_SL`, `ZEND_SR` (secret amount) | Mask shift amount |
130
+ | Variable encoding | `pack()`, `serialize()`, `json_encode()` | Use fixed-length output |
131
+ | Weak RNG | `rand()`, `mt_rand()`, `uniqid()` | Use `random_int()` / `random_bytes()` |
132
+ | String comparison | `strcmp()`, `===` on secrets | Use `hash_equals()` |
133
+
134
+ **Installation:**
135
+
136
+ ```bash
137
+ # Install VLD extension (recommended)
138
+ # Query latest version from PECL
139
+ VLD_VERSION=$(curl -s https://pecl.php.net/package/vld | grep -oP 'vld-\K[0-9.]+(?=\.tgz)' | head -1)
140
+ pecl install channel://pecl.php.net/vld-${VLD_VERSION}
141
+
142
+ # Or build from source (if PECL fails)
143
+ git clone https://github.com/derickr/vld.git && cd vld
144
+ phpize && ./configure && make && sudo make install
145
+
146
+ # Or use opcache (built-in, fallback)
147
+ # Enabled by default in PHP 7+
148
+ ```
149
+
150
+ ### JavaScript/TypeScript Analysis
151
+
152
+ JavaScript analysis uses V8 bytecode via Node.js `--print-bytecode`. TypeScript files are automatically transpiled first.
153
+
154
+ **Detected JS Vulnerabilities:**
155
+
156
+ | Category | Pattern | Recommendation |
157
+ |----------|---------|----------------|
158
+ | Division | `Div`, `Mod` bytecodes | Use constant-time multiply-shift |
159
+ | Array access | `LdaKeyedProperty` (secret index) | Use constant-time table lookup |
160
+ | Bit shifts | `ShiftLeft`, `ShiftRight` (secret amount) | Mask shift amount |
161
+ | Variable encoding | `TextEncoder`, `JSON.stringify()`, `btoa()` | Use fixed-length output |
162
+ | Weak RNG | `Math.random()` | Use `crypto.getRandomValues()` or `crypto.randomBytes()` |
163
+ | Variable latency | `Math.sqrt()`, `Math.pow()` | Avoid in crypto paths |
164
+ | String comparison | `===` on secrets | Use `crypto.timingSafeEqual()` (Node.js) |
165
+ | Early-exit search | `indexOf()`, `includes()` | Use constant-time comparison |
166
+
167
+ **Requirements:**
168
+ ```bash
169
+ # Node.js required
170
+ node --version
171
+
172
+ # TypeScript compiler (optional, for .ts files)
173
+ npm install -g typescript
174
+ ```
175
+
176
+ ### Python Analysis
177
+
178
+ Python analysis uses the built-in `dis` module to analyze CPython bytecode.
179
+
180
+ **Detected Python Vulnerabilities:**
181
+
182
+ | Category | Pattern | Recommendation |
183
+ |----------|---------|----------------|
184
+ | Division | `BINARY_OP 11 (/)`, `BINARY_OP 6 (%)` | Use Barrett reduction or constant-time alternatives |
185
+ | Array access | `BINARY_SUBSCR` (secret index) | Use constant-time table lookup |
186
+ | Bit shifts | `BINARY_LSHIFT`, `BINARY_RSHIFT` (secret amount) | Mask shift amount |
187
+ | Variable encoding | `int.to_bytes()`, `json.dumps()`, `base64.b64encode()` | Use fixed-length output |
188
+ | Weak RNG | `random.random()`, `random.randint()` | Use `secrets.token_bytes()` / `secrets.randbelow()` |
189
+ | Variable latency | `math.sqrt()`, `math.pow()` | Avoid in crypto paths |
190
+ | String comparison | `==` on secrets | Use `hmac.compare_digest()` |
191
+ | Early-exit search | `.find()`, `.startswith()` | Use constant-time comparison |
192
+
193
+ **Requirements:**
194
+ ```bash
195
+ # Python 3.x required (built-in dis module)
196
+ python3 --version
197
+ ```
198
+
199
+ ### Ruby Analysis
200
+
201
+ Ruby analysis uses YARV (Yet Another Ruby VM) bytecode via `ruby --dump=insns`.
202
+
203
+ **Detected Ruby Vulnerabilities:**
204
+
205
+ | Category | Pattern | Recommendation |
206
+ |----------|---------|----------------|
207
+ | Division | `opt_div`, `opt_mod` | Use constant-time alternatives |
208
+ | Array access | `opt_aref` (secret index) | Use constant-time table lookup |
209
+ | Bit shifts | `opt_lshift`, `opt_rshift` (secret amount) | Mask shift amount |
210
+ | Variable encoding | `pack()`, `to_json()`, `Base64.encode64()` | Use fixed-length output |
211
+ | Weak RNG | `rand()`, `Random.new` | Use `SecureRandom.random_bytes()` |
212
+ | Variable latency | `Math.sqrt()` | Avoid in crypto paths |
213
+ | String comparison | `==` on secrets | Use `Rack::Utils.secure_compare()` or OpenSSL |
214
+ | Early-exit search | `.include?()`, `.start_with?()` | Use constant-time comparison |
215
+
216
+ **Requirements:**
217
+ ```bash
218
+ # Ruby required (YARV is standard since Ruby 1.9)
219
+ ruby --version
220
+ ```
221
+
222
+ ## Example Output
223
+
224
+ ```text
225
+ ============================================================
226
+ Constant-Time Analysis Report
227
+ ============================================================
228
+ Source: decompose.c
229
+ Architecture: arm64
230
+ Compiler: clang
231
+ Optimization: O2
232
+ Functions analyzed: 4
233
+ Instructions analyzed: 88
234
+
235
+ VIOLATIONS FOUND:
236
+ ----------------------------------------
237
+ [ERROR] SDIV
238
+ Function: decompose_vulnerable
239
+ Reason: SDIV has early termination optimization; execution time depends on operand values
240
+
241
+ [ERROR] SDIV
242
+ Function: use_hint_vulnerable
243
+ Reason: SDIV has early termination optimization; execution time depends on operand values
244
+
245
+ ----------------------------------------
246
+ Result: FAILED
247
+ Errors: 2, Warnings: 0
248
+ ```
249
+
250
+ ## Fixing Violations
251
+
252
+ ### Replace Division with Barrett Reduction
253
+
254
+ ```c
255
+ // VULNERABLE
256
+ int32_t q = a / divisor;
257
+
258
+ // SAFE: Barrett reduction
259
+ // Precompute: mu = ceil(2^32 / divisor)
260
+ uint32_t q = (uint32_t)(((uint64_t)a * mu) >> 32);
261
+ ```
262
+
263
+ ### Replace Branches with Constant-Time Selection
264
+
265
+ ```c
266
+ // VULNERABLE
267
+ if (secret) {
268
+ result = a;
269
+ } else {
270
+ result = b;
271
+ }
272
+
273
+ // SAFE: Constant-time selection
274
+ uint32_t mask = -(uint32_t)(secret != 0);
275
+ result = (a & mask) | (b & ~mask);
276
+ ```
277
+
278
+ ### Replace Comparisons
279
+
280
+ ```c
281
+ // VULNERABLE
282
+ if (memcmp(a, b, len) == 0) { ... }
283
+
284
+ // SAFE: Use crypto/subtle or equivalent
285
+ if (subtle.ConstantTimeCompare(a, b) == 1) { ... }
286
+ ```
287
+
288
+ ## Test Samples
289
+
290
+ The repository includes test samples demonstrating vulnerable and secure implementations:
291
+
292
+ - `ct_analyzer/tests/test_samples/decompose_vulnerable.c` - Vulnerable C implementation
293
+ - `ct_analyzer/tests/test_samples/decompose_constant_time.c` - Constant-time C implementation
294
+ - `ct_analyzer/tests/test_samples/decompose_vulnerable.go` - Vulnerable Go implementation
295
+ - `ct_analyzer/tests/test_samples/decompose_vulnerable.rs` - Vulnerable Rust implementation
296
+ - `ct_analyzer/tests/test_samples/vulnerable.php` - Vulnerable PHP implementation
297
+ - `ct_analyzer/tests/test_samples/vulnerable.ts` - Vulnerable TypeScript implementation
298
+ - `ct_analyzer/tests/test_samples/vulnerable.py` - Vulnerable Python implementation
299
+ - `ct_analyzer/tests/test_samples/vulnerable.rb` - Vulnerable Ruby implementation
300
+
301
+ These implement the Decompose and UseHint algorithms from ML-DSA (FIPS-204) as test cases.
302
+
303
+ ## CI Integration
304
+
305
+ ### GitHub Actions
306
+
307
+ ```yaml
308
+ name: Constant-Time Check
309
+
310
+ on: [push, pull_request]
311
+
312
+ jobs:
313
+ ct-check:
314
+ runs-on: ubuntu-latest
315
+ steps:
316
+ - uses: actions/checkout@v4
317
+
318
+ - name: Set up Python
319
+ uses: actions/setup-python@v5
320
+ with:
321
+ python-version: '3.11'
322
+
323
+ - name: Install dependencies
324
+ run: |
325
+ uv pip install -e .
326
+
327
+ - name: Check constant-time properties
328
+ run: |
329
+ ct-analyzer --github src/crypto/*.c
330
+ ```
331
+
332
+ ### GitLab CI
333
+
334
+ ```yaml
335
+ ct-check:
336
+ stage: test
337
+ script:
338
+ - uv pip install -e .
339
+ - ct-analyzer --json src/crypto/*.c > ct-report.json
340
+ artifacts:
341
+ reports:
342
+ codequality: ct-report.json
343
+ ```
344
+
345
+ ## Limitations
346
+
347
+ 1. **Compiler Output Analysis**: Analyzes what the compiler produces, not runtime behavior. Cannot detect:
348
+ - Cache timing attacks from memory access patterns
349
+ - Microarchitectural side-channels (Spectre, etc.)
350
+ - Processor-specific optimizations
351
+
352
+ 2. **No Data Flow Analysis**: Flags all dangerous instructions regardless of whether they operate on secret data. Manual review is needed to determine if flagged code handles secrets. **This means false positives are expected** - for example, division used in loop bounds with public constants will be flagged even though it's not a vulnerability.
353
+
354
+ 3. **False Positive Verification**: For each flagged violation, verify the operands:
355
+ - If operands are compile-time constants or public parameters → likely false positive
356
+ - If operands are derived from keys, plaintext, or secrets → true positive
357
+ - See the SKILL.md documentation for detailed triage guidance
358
+
359
+ 4. **Compiler Variations**: Different compilers/versions may produce different assembly. Test with:
360
+ - Multiple optimization levels
361
+ - Multiple compilers
362
+ - Target production architectures
363
+
364
+ 5. **Scripting Languages**: PHP, JavaScript/TypeScript, Python, and Ruby are supported via bytecode analysis.
365
+
366
+ ## Running Tests
367
+
368
+ ```bash
369
+ python3 ct_analyzer/tests/test_analyzer.py
370
+ ```
371
+
372
+ ## References
373
+
374
+ - [Cryptocoding Guidelines](https://github.com/veorq/cryptocoding)
375
+ - [KyberSlash Attack](https://kyberslash.cr.yp.to/)
376
+ - [NIST FIPS 204: ML-DSA](https://csrc.nist.gov/pubs/fips/204/final)
377
+ - [Trail of Bits ML-DSA Implementation](https://github.com/trailofbits/ml-dsa)
378
+
379
+ ## Acknowledgments
380
+
381
+ Based on the [test_ct utility](https://github.com/trailofbits/ml-dsa/pull/16) created for ML-DSA.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: trailofbits:ct-check
3
+ description: Detects timing side-channels in cryptographic code
4
+ argument-hint: "<source-file> [--warnings] [--json] [--arch <arch>]"
5
+ allowed-tools:
6
+ - Bash
7
+ - Read
8
+ - Grep
9
+ - Glob
10
+ ---
11
+
12
+ # Check Constant-Time Properties
13
+
14
+ **Arguments:** $ARGUMENTS
15
+
16
+ Parse arguments:
17
+ 1. **Source file** (required): Path to source file to analyze
18
+ 2. **Flags** (optional): `--warnings`, `--json`, `--arch <arch>`, `--opt-level <level>`, `--func <pattern>`
19
+
20
+ Invoke the `constant-time-analysis` skill with these arguments for the full workflow.