@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,355 @@
1
+ # Function Micro-Analysis Example
2
+
3
+ This example demonstrates a complete micro-analysis following the Per-Function Microstructure Checklist.
4
+
5
+ ---
6
+
7
+ ## Target: `swap(address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut, uint256 deadline)` in Router.sol
8
+
9
+ **Purpose:**
10
+ Enables users to swap one token for another through a liquidity pool. Core trading operation in a DEX that:
11
+ - Calculates output amount using constant product formula (x * y = k)
12
+ - Deducts 0.3% protocol fee from input amount
13
+ - Enforces user-specified slippage protection
14
+ - Updates pool reserves to maintain AMM invariant
15
+ - Prevents stale transactions via deadline check
16
+
17
+ This is a critical financial primitive affecting pool solvency, user fund safety, and protocol fee collection.
18
+
19
+ ---
20
+
21
+ **Inputs & Assumptions:**
22
+
23
+ *Parameters:*
24
+ - `tokenIn` (address): Source token to swap from. Assumed untrusted (could be malicious ERC20).
25
+ - `tokenOut` (address): Destination token to receive. Assumed untrusted.
26
+ - `amountIn` (uint256): Amount of tokenIn to swap. User-specified, untrusted input.
27
+ - `minAmountOut` (uint256): Minimum acceptable output. User-specified slippage tolerance.
28
+ - `deadline` (uint256): Unix timestamp. Transaction must execute before this or revert.
29
+
30
+ *Implicit Inputs:*
31
+ - `msg.sender`: Transaction initiator. Assumed to have approved Router to spend amountIn of tokenIn.
32
+ - `pairs[tokenIn][tokenOut]`: Storage mapping to pool address. Assumed populated during pool creation.
33
+ - `reserves[pair]`: Pool's current token reserves. Assumed synchronized with actual pool balances.
34
+ - `block.timestamp`: Current block time. Assumed honest (no validator manipulation considered here).
35
+
36
+ *Preconditions:*
37
+ - Pool exists for tokenIn/tokenOut pair (pairs[tokenIn][tokenOut] != address(0))
38
+ - msg.sender has approved Router for at least amountIn of tokenIn
39
+ - msg.sender balance of tokenIn >= amountIn
40
+ - Pool has sufficient liquidity to output at least minAmountOut
41
+ - block.timestamp <= deadline
42
+
43
+ *Trust Assumptions:*
44
+ - Pool contract correctly maintains reserves
45
+ - ERC20 tokens follow standard behavior (return true on success, revert on failure)
46
+ - No reentrancy from tokenIn/tokenOut during transfers (or handled by nonReentrant modifier)
47
+
48
+ ---
49
+
50
+ **Outputs & Effects:**
51
+
52
+ *Returns:*
53
+ - Implicit: amountOut (not returned, but emitted in event)
54
+
55
+ *State Writes:*
56
+ - `reserves[pair].reserve0` and `reserves[pair].reserve1`: Updated to reflect post-swap balances
57
+ - Pool token balances: Physical token transfers change actual balances
58
+
59
+ *External Interactions:*
60
+ - `IERC20(tokenIn).transferFrom(msg.sender, pair, amountIn)`: Pulls tokenIn from user to pool
61
+ - `IERC20(tokenOut).transfer(msg.sender, amountOut)`: Sends tokenOut from pool to user
62
+
63
+ *Events Emitted:*
64
+ - `Swap(msg.sender, tokenIn, tokenOut, amountIn, amountOut, block.timestamp)`
65
+
66
+ *Postconditions:*
67
+ - `amountOut >= minAmountOut` (slippage protection enforced)
68
+ - Pool reserves updated: `reserve0 * reserve1 >= k_before` (constant product maintained with fee)
69
+ - User received exactly amountOut of tokenOut
70
+ - Pool received exactly amountIn of tokenIn
71
+ - Fee collected: `amountIn * 0.003` remains in pool as liquidity
72
+
73
+ ---
74
+
75
+ **Block-by-Block Analysis:**
76
+
77
+ ```solidity
78
+ // L90: Deadline validation (modifier: ensure(deadline))
79
+ modifier ensure(uint256 deadline) {
80
+ require(block.timestamp <= deadline, "Expired");
81
+ _;
82
+ }
83
+ ```
84
+ - **What:** Checks transaction hasn't expired based on user-provided deadline
85
+ - **Why here:** First line of defense; fail fast before any state reads or computation
86
+ - **Assumption:** `block.timestamp` is sufficiently honest (no 900-second manipulation considered)
87
+ - **Depends on:** User setting reasonable deadline (e.g., block.timestamp + 300 seconds)
88
+ - **First Principles:** Time-sensitive operations need expiration to prevent stale execution at unexpected prices
89
+ - **5 Whys:**
90
+ - Why check deadline? → Prevent stale transactions
91
+ - Why are stale transactions bad? → Price may have moved significantly
92
+ - Why not just use slippage protection? → Slippage doesn't prevent execution hours later
93
+ - Why does timing matter? → Market conditions change, user intent expires
94
+ - Why user-provided vs fixed? → User decides their time tolerance based on urgency
95
+
96
+ ---
97
+
98
+ ```solidity
99
+ // L92-94: Input validation
100
+ require(amountIn > 0, "Invalid input amount");
101
+ require(minAmountOut > 0, "Invalid minimum output");
102
+ require(tokenIn != tokenOut, "Identical tokens");
103
+ ```
104
+ - **What:** Validates basic input sanity (non-zero amounts, different tokens)
105
+ - **Why here:** Second line of defense; cheap checks before expensive operations
106
+ - **Assumption:** Zero amounts indicate user error, not intentional probe
107
+ - **Invariant established:** `amountIn > 0 && minAmountOut > 0 && tokenIn != tokenOut`
108
+ - **First Principles:** Fail fast on invalid input before consuming gas on computation/storage
109
+ - **5 Hows:**
110
+ - How to ensure valid swap? → Check inputs meet minimum requirements
111
+ - How to check minimum requirements? → Test amounts > 0 and tokens differ
112
+ - How to handle violations? → Revert with descriptive error
113
+ - How to order checks? → Cheapest first (inequality checks before storage reads)
114
+ - How to communicate failure? → Require statements with clear messages
115
+
116
+ ---
117
+
118
+ ```solidity
119
+ // L98-99: Pool resolution
120
+ address pair = pairs[tokenIn][tokenOut];
121
+ require(pair != address(0), "Pool does not exist");
122
+ ```
123
+ - **What:** Looks up liquidity pool address for token pair, validates existence
124
+ - **Why here:** Must identify pool before reading reserves or executing transfers
125
+ - **Assumption:** `pairs` mapping is correctly populated during pool creation; no race conditions
126
+ - **Depends on:** Factory having called createPair(tokenIn, tokenOut) previously
127
+ - **Invariant established:** `pair != 0x0` (valid pool address exists)
128
+ - **Risk:** If pairs mapping is corrupted or pool address is incorrect, funds could be sent to wrong address
129
+
130
+ ---
131
+
132
+ ```solidity
133
+ // L102-103: Reserve reads
134
+ (uint112 reserveIn, uint112 reserveOut) = getReserves(pair, tokenIn, tokenOut);
135
+ require(reserveIn > 0 && reserveOut > 0, "Insufficient liquidity");
136
+ ```
137
+ - **What:** Reads current pool reserves for tokenIn and tokenOut, validates pool has liquidity
138
+ - **Why here:** Need current reserves to calculate output amount; must confirm pool is operational
139
+ - **Assumption:** `reserves[pair]` storage is synchronized with actual pool token balances
140
+ - **Invariant established:** `reserveIn > 0 && reserveOut > 0` (pool is liquid)
141
+ - **Depends on:** Sync mechanism keeping reserves accurate (called after transfers/swaps)
142
+ - **5 Whys:**
143
+ - Why read reserves? → Need current pool state for price calculation
144
+ - Why must reserves be > 0? → Division by zero in formula if empty
145
+ - Why check liquidity here? → Cheaper to fail now than after transferFrom
146
+ - Why not just try the swap? → Better UX with specific error message
147
+ - Why trust reserves storage? → Alternative is querying balances (expensive)
148
+
149
+ ---
150
+
151
+ ```solidity
152
+ // L108-109: Fee application
153
+ uint256 amountInWithFee = amountIn * 997;
154
+ uint256 numerator = amountInWithFee * reserveOut;
155
+ ```
156
+ - **What:** Applies 0.3% protocol fee by multiplying amountIn by 997 (instead of deducting 3)
157
+ - **Why here:** Fee must be applied before price calculation to affect output amount
158
+ - **Assumption:** 997/1000 = 0.997 = (1 - 0.003) represents 0.3% fee deduction
159
+ - **Invariant maintained:** `amountInWithFee = amountIn * 0.997` (3/1000 fee taken)
160
+ - **First Principles:** Fees modify effective input, reducing output proportionally
161
+ - **5 Whys:**
162
+ - Why multiply by 997? → Gas optimization: avoids separate subtraction step
163
+ - Why not amountIn * 0.997? → Solidity doesn't support floating point
164
+ - Why 0.3% fee? → Protocol parameter (Uniswap V2 standard, commonly copied)
165
+ - Why apply before calculation? → Fee reduces input amount, must affect price
166
+ - Why not apply after? → Would incorrectly calculate output at full amountIn
167
+
168
+ ---
169
+
170
+ ```solidity
171
+ // L110-111: Output calculation (constant product formula)
172
+ uint256 denominator = (reserveIn * 1000) + amountInWithFee;
173
+ uint256 amountOut = numerator / denominator;
174
+ ```
175
+ - **What:** Calculates output amount using AMM constant product formula: `Δy = (x * Δx_fee) / (y + Δx_fee)`
176
+ - **Why here:** After fee application; core pricing logic of the AMM
177
+ - **Assumption:** `k = reserveIn * reserveOut` is the invariant to maintain (with fee adding to k)
178
+ - **Invariant formula:** `(reserveIn + amountIn) * (reserveOut - amountOut) >= reserveIn * reserveOut`
179
+ - **First Principles:** Constant product AMM maintains `x * y = k` (with fee slightly increasing k)
180
+ - **5 Whys:**
181
+ - Why this formula? → Constant product market maker (x * y = k)
182
+ - Why not linear pricing? → Would drain pool at constant price (exploitable)
183
+ - Why multiply reserveIn by 1000? → Match denominator scale with numerator (997 * 1000)
184
+ - Why divide? → Solving for Δy in: (x + Δx_fee) * (y - Δy) = k
185
+ - Why this maintains k? → New product = (reserveIn + amountIn*0.997) * (reserveOut - amountOut) ≈ k * 1.003
186
+ - **Mathematical verification:**
187
+ - Given: `k = reserveIn * reserveOut`
188
+ - New reserves: `reserveIn' = reserveIn + amountIn`, `reserveOut' = reserveOut - amountOut`
189
+ - With fee: `amountInWithFee = amountIn * 0.997`
190
+ - Solving `(reserveIn + amountIn) * (reserveOut - amountOut) = k`:
191
+ - `reserveOut - amountOut = k / (reserveIn + amountIn)`
192
+ - `amountOut = reserveOut - k / (reserveIn + amountIn)`
193
+ - Substituting and simplifying yields the formula above
194
+
195
+ ---
196
+
197
+ ```solidity
198
+ // L115: Slippage protection enforcement
199
+ require(amountOut >= minAmountOut, "Slippage exceeded");
200
+ ```
201
+ - **What:** Validates calculated output meets user's minimum acceptable amount
202
+ - **Why here:** After calculation, before any state changes or transfers (fail fast if insufficient)
203
+ - **Assumption:** User calculated minAmountOut correctly based on acceptable slippage tolerance
204
+ - **Invariant enforced:** `amountOut >= minAmountOut` (user-defined slippage limit)
205
+ - **First Principles:** User must explicitly consent to price via slippage tolerance; prevents sandwich attacks
206
+ - **5 Whys:**
207
+ - Why check minAmountOut? → Protect user from excessive slippage
208
+ - Why is slippage protection critical? → Prevents sandwich attacks and MEV extraction
209
+ - Why user-specified? → Different users have different risk tolerances
210
+ - Why fail here vs warn? → Financial safety: user should not receive less than intended
211
+ - Why before transfers? → Cheaper to revert now than after expensive external calls
212
+ - **Attack scenario prevented:**
213
+ - Attacker front-runs with large buy → price increases
214
+ - Victim's swap would execute at worse price
215
+ - This check causes victim's transaction to revert instead
216
+ - Attacker cannot profit from sandwich
217
+
218
+ ---
219
+
220
+ ```solidity
221
+ // L118: Input token transfer (pull pattern)
222
+ IERC20(tokenIn).transferFrom(msg.sender, pair, amountIn);
223
+ ```
224
+ - **What:** Pulls tokenIn from user to liquidity pool
225
+ - **Why here:** After all validations pass; begins state-changing operations (point of no return)
226
+ - **Assumption:** User has approved Router for at least amountIn; tokenIn is standard ERC20
227
+ - **Depends on:** Prior approval: `tokenIn.approve(router, amountIn)` called by user
228
+ - **Risk considerations:**
229
+ - If tokenIn is malicious: could revert (DoS), consume excessive gas, or attempt reentrancy
230
+ - If tokenIn has transfer fee: actual amount received < amountIn (breaks invariant)
231
+ - If tokenIn is pausable: could revert if paused
232
+ - Reentrancy: If tokenIn has callback, attacker could call Router again (mitigated by nonReentrant modifier)
233
+ - **First Principles:** Pull pattern (transferFrom) is safer than users sending first (push) - Router controls timing
234
+ - **5 Hows:**
235
+ - How to get tokenIn? → Pull from user via transferFrom
236
+ - How to ensure Router can pull? → User must have approved Router
237
+ - How to specify destination? → Send directly to pair (gas optimization: no router intermediate storage)
238
+ - How to handle failures? → transferFrom reverts on failure (ERC20 standard)
239
+ - How to prevent reentrancy? → nonReentrant modifier (assumed present)
240
+
241
+ ---
242
+
243
+ ```solidity
244
+ // L122: Output token transfer (push pattern)
245
+ IERC20(tokenOut).transfer(msg.sender, amountOut);
246
+ ```
247
+ - **What:** Sends calculated amountOut of tokenOut from pool to user
248
+ - **Why here:** After input transfer succeeds; completes the swap atomically
249
+ - **Assumption:** Pool has at least amountOut of tokenOut; tokenOut is standard ERC20
250
+ - **Invariant maintained:** User receives exact amountOut (no more, no less)
251
+ - **Risk considerations:**
252
+ - If tokenOut is malicious: could revert (DoS), but user selected this token pair
253
+ - If tokenOut has transfer hook: could attempt reentrancy (mitigated by nonReentrant)
254
+ - If transfer fails: entire transaction reverts (atomic swap)
255
+ - **CEI pattern:** Not strictly followed (Check-Effects-Interactions) - both transfers are interactions
256
+ - Typically Effects (reserve update) should precede Interactions (transfers)
257
+ - Here, transfers happen before reserve update (see next block)
258
+ - Justification: nonReentrant modifier prevents exploitation
259
+ - **5 Whys:**
260
+ - Why transfer to msg.sender? → User initiated swap, they receive output
261
+ - Why not to an arbitrary recipient? → Simplicity; extensions can add recipient parameter
262
+ - Why this amount exactly? → amountOut calculated from constant product formula
263
+ - Why after input transfer? → Ensures atomicity: both succeed or both fail
264
+ - Why trust pool has balance? → Pool's job to maintain reserves; if insufficient, transfer reverts
265
+
266
+ ---
267
+
268
+ ```solidity
269
+ // L125-126: Reserve synchronization
270
+ reserves[pair].reserve0 = uint112(reserveIn + amountIn);
271
+ reserves[pair].reserve1 = uint112(reserveOut - amountOut);
272
+ ```
273
+ - **What:** Updates stored reserves to reflect post-swap balances
274
+ - **Why here:** After transfers complete; brings storage in sync with actual balances
275
+ - **Assumption:** No other operations have modified pool balances since reserves were read
276
+ - **Invariant maintained:** `reserve0 * reserve1 >= k_before * 1.003` (constant product + fee)
277
+ - **Casting risk:** `uint112` casting could truncate if reserves exceed 2^112 - 1 (≈ 5.2e33)
278
+ - For most tokens with 18 decimals: limit is ~5.2e15 tokens
279
+ - Overflow protection: require reserves fit in uint112, else revert
280
+ - **5 Whys:**
281
+ - Why update reserves? → Storage must match actual balances for next swap
282
+ - Why after transfers? → Need to know final state before recording
283
+ - Why not query balances? → Gas optimization: storage update cheaper than CALL + BALANCE
284
+ - Why uint112? → Pack two reserves in one storage slot (256 bits = 2 * 112 + 32 for timestamp)
285
+ - Why this formula? → reserveIn increased by amountIn, reserveOut decreased by amountOut
286
+ - **Invariant verification:**
287
+ - Before: `k_before = reserveIn * reserveOut`
288
+ - After: `k_after = (reserveIn + amountIn) * (reserveOut - amountOut)`
289
+ - With 0.3% fee: `k_after ≈ k_before * 1.003` (fee adds permanent liquidity)
290
+
291
+ ---
292
+
293
+ ```solidity
294
+ // L130: Event emission
295
+ emit Swap(msg.sender, tokenIn, tokenOut, amountIn, amountOut, block.timestamp);
296
+ ```
297
+ - **What:** Emits event logging swap details for off-chain indexing
298
+ - **Why here:** After all state changes finalized; last operation before return
299
+ - **Assumption:** Event watchers (subgraphs, dex aggregators) rely on this for tracking trades
300
+ - **Data included:**
301
+ - `msg.sender`: Who initiated swap (for user trade history)
302
+ - `tokenIn/tokenOut`: Which pair was traded
303
+ - `amountIn/amountOut`: Exact amounts for price tracking
304
+ - `block.timestamp`: When trade occurred (for TWAP calculations, analytics)
305
+ - **First Principles:** Events are write-only log for off-chain systems; don't affect on-chain state
306
+ - **5 Hows:**
307
+ - How to notify off-chain? → Emit event (logs are cheaper than storage)
308
+ - How to structure event? → Include all relevant swap parameters
309
+ - How do indexers use this? → Build trade history, calculate volume, track prices
310
+ - How to ensure consistency? → Emit after state finalized (can't be front-run)
311
+ - How to query later? → Blockchain logs filtered by event signature + contract address
312
+
313
+ ---
314
+
315
+ **Cross-Function Dependencies:**
316
+
317
+ *Internal Calls:*
318
+ - `getReserves(pair, tokenIn, tokenOut)`: Helper to read and order reserves based on token addresses
319
+ - Depends on: `reserves[pair]` storage being synchronized
320
+ - Returns: (reserveIn, reserveOut) in correct order for tokenIn/tokenOut
321
+
322
+ *External Calls (Outbound):*
323
+ - `IERC20(tokenIn).transferFrom(msg.sender, pair, amountIn)`: ERC20 standard call
324
+ - Assumes: tokenIn implements ERC20, user has approved Router
325
+ - Reentrancy risk: If tokenIn is malicious, could callback
326
+ - Failure: Reverts entire transaction
327
+ - `IERC20(tokenOut).transfer(msg.sender, amountOut)`: ERC20 standard call
328
+ - Assumes: Pool has sufficient tokenOut balance
329
+ - Reentrancy risk: If tokenOut has hooks
330
+ - Failure: Reverts entire transaction
331
+
332
+ *Called By:*
333
+ - Users directly (external call)
334
+ - Aggregators/routers (external call)
335
+ - Multi-hop swap functions (internal call from same contract)
336
+
337
+ *Shares State With:*
338
+ - `addLiquidity()`: Modifies same reserves[pair], must maintain k invariant
339
+ - `removeLiquidity()`: Modifies same reserves[pair]
340
+ - `sync()`: Emergency function to force reserves sync with balances
341
+ - `skim()`: Removes excess tokens beyond reserves
342
+
343
+ *Invariant Coupling:*
344
+ - **Global invariant:** `sum(all reserves[pair].reserve0 for all pairs) <= sum(all token balances in pools)`
345
+ - **Per-pool invariant:** `reserves[pair].reserve0 * reserves[pair].reserve1 >= k_initial * (1.003^n)` where n = number of swaps
346
+ - Each swap increases k by 0.3% due to fee
347
+ - **Reentrancy protection:** `nonReentrant` modifier ensures no cross-function reentrancy
348
+ - swap() cannot be re-entered while executing
349
+ - addLiquidity/removeLiquidity also cannot execute during swap
350
+
351
+ *Assumptions Propagated to Callers:*
352
+ - Caller must have approved Router to spend amountIn of tokenIn
353
+ - Caller must set reasonable deadline (e.g., block.timestamp + 300 seconds)
354
+ - Caller must calculate minAmountOut based on acceptable slippage (e.g., expectedOutput * 0.99 for 1%)
355
+ - Caller assumes pair exists (or will handle "Pool does not exist" revert)
@@ -0,0 +1,71 @@
1
+ # Output Requirements
2
+
3
+ When performing ultra-granular analysis, Claude MUST structure output following the Per-Function Microstructure Checklist format demonstrated in [FUNCTION_MICRO_ANALYSIS_EXAMPLE.md](FUNCTION_MICRO_ANALYSIS_EXAMPLE.md).
4
+
5
+ ---
6
+
7
+ ## Required Structure
8
+
9
+ For EACH analyzed function, output MUST include:
10
+
11
+ **1. Purpose** (mandatory)
12
+ - Clear statement of function's role in the system
13
+ - Impact on system state, security, or economics
14
+ - Minimum 2-3 sentences
15
+
16
+ **2. Inputs & Assumptions** (mandatory)
17
+ - All parameters (explicit and implicit)
18
+ - All preconditions
19
+ - All trust assumptions
20
+ - Each input must identify: type, source, trust level
21
+ - Minimum 3 assumptions documented
22
+
23
+ **3. Outputs & Effects** (mandatory)
24
+ - Return values (or "void" if none)
25
+ - All state writes
26
+ - All external interactions
27
+ - All events emitted
28
+ - All postconditions
29
+ - Minimum 3 effects documented
30
+
31
+ **4. Block-by-Block Analysis** (mandatory)
32
+ For EACH logical code block, document:
33
+ - **What:** What the block does (1 sentence)
34
+ - **Why here:** Why this ordering/placement (1 sentence)
35
+ - **Assumptions:** What must be true (1+ items)
36
+ - **Depends on:** What prior state/logic this relies on
37
+ - **First Principles / 5 Whys / 5 Hows:** Apply at least ONE per block
38
+
39
+ Minimum standards:
40
+ - Analyze at minimum: ALL conditional branches, ALL external calls, ALL state modifications
41
+ - For complex blocks (>5 lines): Apply First Principles AND 5 Whys or 5 Hows
42
+ - For simple blocks (<5 lines): Minimum What + Why here + 1 Assumption
43
+
44
+ **5. Cross-Function Dependencies** (mandatory)
45
+ - Internal calls made (list all)
46
+ - External calls made (list all with risk analysis)
47
+ - Functions that call this function
48
+ - Shared state with other functions
49
+ - Invariant couplings (how this function's invariants interact with others)
50
+ - Minimum 3 dependency relationships documented
51
+
52
+ ---
53
+
54
+ ## Quality Thresholds
55
+
56
+ A complete micro-analysis MUST identify:
57
+ - Minimum 3 invariants (per function)
58
+ - Minimum 5 assumptions (across all sections)
59
+ - Minimum 3 risk considerations (especially for external interactions)
60
+ - At least 1 application of First Principles
61
+ - At least 3 applications of 5 Whys or 5 Hows (combined)
62
+
63
+ ---
64
+
65
+ ## Format Consistency
66
+
67
+ - Use markdown headers: `**Section Name:**` for major sections
68
+ - Use bullet points (`-`) for lists
69
+ - Use code blocks (` ```solidity `) for code snippets
70
+ - Reference line numbers: `L45`, `lines 98-102`
71
+ - Separate blocks with `---` horizontal rules for readability
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "building-secure-contracts",
3
+ "version": "1.0.1",
4
+ "description": "Comprehensive smart contract security toolkit based on Trail of Bits' Building Secure Contracts framework. Includes vulnerability scanners for 6 blockchains and 5 development guideline assistants.",
5
+ "author": {
6
+ "name": "Omar Inuwa",
7
+ "email": "opensource@trailofbits.com",
8
+ "url": "https://github.com/trailofbits"
9
+ }
10
+ }
@@ -0,0 +1,241 @@
1
+ # Building Secure Contracts
2
+
3
+ Comprehensive smart contract security toolkit based on Trail of Bits' [Building Secure Contracts](https://github.com/crytic/building-secure-contracts) framework.
4
+
5
+ **Author:** Omar Inuwa
6
+
7
+ ## Overview
8
+
9
+ This plugin provides 11 specialized skills for smart contract security across multiple blockchain platforms:
10
+
11
+ - **6 Vulnerability Scanners** for platform-specific attack patterns
12
+ - **5 Development Guidelines Assistants** for secure development practices
13
+
14
+ ## Installation
15
+
16
+ ```
17
+ /plugin install trailofbits/skills/plugins/building-secure-contracts
18
+ ```
19
+
20
+ ---
21
+
22
+ ## Vulnerability Scanners
23
+
24
+ Platform-specific vulnerability detection based on Trail of Bits' [Not So Smart Contracts](https://github.com/crytic/not-so-smart-contracts) repository.
25
+
26
+ ### Algorand Vulnerability Scanner
27
+ **Skill:** `/algorand-vulnerability-scanner`
28
+
29
+ Scans Algorand/TEAL codebases for 11 vulnerability patterns including:
30
+ - Rekeying vulnerabilities
31
+ - Unchecked transaction fees
32
+ - Asset closing issues
33
+ - Group size checks
34
+ - Time-based replay attacks
35
+ - And 6 more patterns
36
+
37
+ ### Cairo Vulnerability Scanner
38
+ **Skill:** `/cairo-vulnerability-scanner`
39
+
40
+ Analyzes StarkNet/Cairo smart contracts for 6 vulnerability patterns:
41
+ - Arithmetic overflow/underflow
42
+ - Reentrancy
43
+ - Uninitialized storage
44
+ - Authorization bypass
45
+ - And 2 more patterns
46
+
47
+ ### Cosmos Vulnerability Scanner
48
+ **Skill:** `/cosmos-vulnerability-scanner`
49
+
50
+ Detects security issues in Cosmos SDK modules for 9 patterns:
51
+ - Undelegation time validation
52
+ - Amount validation
53
+ - Unbonding validation
54
+ - Rounding issues
55
+ - And 5 more patterns
56
+
57
+ ### Solana Vulnerability Scanner
58
+ **Skill:** `/solana-vulnerability-scanner`
59
+
60
+ Scans Solana/Anchor programs for 6 critical vulnerabilities:
61
+ - Arbitrary CPI
62
+ - Improper PDA validation
63
+ - Missing ownership checks
64
+ - Signer authorization
65
+ - And 2 more patterns
66
+
67
+ ### Substrate Vulnerability Scanner
68
+ **Skill:** `/substrate-vulnerability-scanner`
69
+
70
+ Analyzes Substrate pallets for 7 security issues:
71
+ - BadOrigin handling
72
+ - Insufficient weight
73
+ - Panics on overflow
74
+ - Unsigned transaction validation
75
+ - And 3 more patterns
76
+
77
+ ### TON Vulnerability Scanner
78
+ **Skill:** `/ton-vulnerability-scanner`
79
+
80
+ Detects vulnerabilities in TON smart contracts for 3 patterns:
81
+ - Replay protection
82
+ - Unprotected receiver
83
+ - Sender validation issues
84
+
85
+ ---
86
+
87
+ ## Development Guidelines Assistants
88
+
89
+ Based on Trail of Bits' [Development Guidelines](https://github.com/crytic/building-secure-contracts/tree/master/development-guidelines).
90
+
91
+ ### Audit Prep Assistant
92
+ **Skill:** `/audit-prep-assistant`
93
+
94
+ Prepare your codebase for security reviews with a comprehensive checklist:
95
+ 1. **Set review goals** - Define objectives and concerns
96
+ 2. **Resolve easy issues** - Run static analysis (Slither, dylint, golangci-lint)
97
+ 3. **Ensure accessibility** - Build instructions, frozen commits, scope clarity
98
+ 4. **Generate documentation** - Flowcharts, user stories, glossaries
99
+
100
+ **Use this:** 1-2 weeks before your audit to maximize review effectiveness.
101
+
102
+ ### Code Maturity Assessor
103
+ **Skill:** `/code-maturity-assessor`
104
+
105
+ Systematic code maturity evaluation using Trail of Bits' 9-category framework:
106
+ - Arithmetic safety
107
+ - Auditing practices
108
+ - Authentication/Access controls
109
+ - Complexity management
110
+ - Decentralization
111
+ - Documentation quality
112
+ - Transaction ordering risks
113
+ - Low-level manipulation
114
+ - Testing and verification
115
+
116
+ **Output:** Professional maturity scorecard with evidence-based ratings and improvement roadmap.
117
+
118
+ ### Guidelines Advisor
119
+ **Skill:** `/guidelines-advisor`
120
+
121
+ Comprehensive development best practices advisor covering:
122
+ - **Documentation & Specifications** - Generate system descriptions and architectural diagrams
123
+ - **Architecture Analysis** - Optimize on-chain/off-chain distribution
124
+ - **Upgradeability Review** - Assess upgrade patterns and delegatecall proxies
125
+ - **Implementation Quality** - Review functions, inheritance, events
126
+ - **Common Pitfalls** - Identify security anti-patterns
127
+ - **Dependencies** - Evaluate library usage
128
+ - **Testing** - Suggest improvements
129
+
130
+ **Use this:** Throughout development for architectural and implementation guidance.
131
+
132
+ ### Secure Workflow Guide
133
+ **Skill:** `/secure-workflow-guide`
134
+
135
+ Interactive 5-step secure development workflow:
136
+ 1. **Known Security Issues** - Run Slither with 70+ detectors
137
+ 2. **Special Features** - Check upgradeability, ERC conformance, token integration
138
+ 3. **Visual Inspection** - Generate inheritance graphs, function summaries, authorization maps
139
+ 4. **Security Properties** - Document properties, set up Echidna/Manticore
140
+ 5. **Manual Review** - Analyze privacy, front-running, cryptography, DeFi risks
141
+
142
+ **Use this:** On every check-in or before deployment for continuous security validation.
143
+
144
+ ### Token Integration Analyzer
145
+ **Skill:** `/token-integration-analyzer`
146
+
147
+ Comprehensive token security analysis for both implementations and integrations:
148
+ - **ERC20/ERC721 Conformity** - Validate standard compliance
149
+ - **Contract Composition** - Assess complexity and SafeMath usage
150
+ - **Owner Privileges** - Review upgradeability, minting, pausability, blacklists
151
+ - **20+ Weird Token Patterns** - Check for non-standard behaviors (missing returns, fee-on-transfer, rebasing, etc.)
152
+ - **On-chain Analysis** - Query deployed contracts for scarcity and distribution
153
+ - **Integration Safety** - Verify defensive patterns and safe transfer usage
154
+
155
+ **Use this:** When building tokens or integrating with external tokens.
156
+
157
+ ---
158
+
159
+ ## Skill Organization
160
+
161
+ ```
162
+ building-secure-contracts/
163
+ └── skills/
164
+ ├── algorand-vulnerability-scanner/
165
+ ├── audit-prep-assistant/
166
+ ├── cairo-vulnerability-scanner/
167
+ ├── code-maturity-assessor/
168
+ ├── cosmos-vulnerability-scanner/
169
+ ├── guidelines-advisor/
170
+ ├── secure-workflow-guide/
171
+ ├── solana-vulnerability-scanner/
172
+ ├── substrate-vulnerability-scanner/
173
+ ├── token-integration-analyzer/
174
+ └── ton-vulnerability-scanner/
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Example Workflows
180
+
181
+ ### Pre-Audit Preparation
182
+ 1. Run `/secure-workflow-guide` to ensure clean Slither report
183
+ 2. Use `/code-maturity-assessor` to evaluate overall maturity
184
+ 3. Run `/audit-prep-assistant` to prepare documentation and checklist
185
+ 4. Share prepared package with auditors
186
+
187
+ ### Platform-Specific Security Review
188
+ 1. Run appropriate vulnerability scanner for your platform
189
+ 2. Use `/guidelines-advisor` for implementation best practices
190
+ 3. Run `/secure-workflow-guide` for comprehensive security checks
191
+ 4. Address findings and re-scan
192
+
193
+ ### Token Development/Integration
194
+ 1. Run `/token-integration-analyzer` for conformity and weird patterns
195
+ 2. Use `/guidelines-advisor` for token-specific best practices
196
+ 3. Run `/secure-workflow-guide` for complete validation
197
+ 4. Deploy with confidence
198
+
199
+ ### Continuous Security
200
+ 1. Run `/secure-workflow-guide` on every check-in
201
+ 2. Use platform scanner for vulnerability detection
202
+ 3. Monitor code maturity with `/code-maturity-assessor`
203
+ 4. Maintain documentation with `/guidelines-advisor`
204
+
205
+ ---
206
+
207
+ ## Tool Integration
208
+
209
+ Many skills leverage security tools when available:
210
+ - **Slither** - Static analysis for Solidity (70+ detectors, visual diagrams, upgradeability checks)
211
+ - **Echidna** - Property-based fuzzing
212
+ - **Manticore** - Symbolic execution
213
+ - **Tealer** - Static analyzer for TEAL/PyTeal
214
+ - **Web3/Ethers** - On-chain queries for deployed contracts
215
+
216
+ **Note:** Skills gracefully adapt when tools are unavailable, performing manual analysis instead.
217
+
218
+ ---
219
+
220
+ ## Source Material
221
+
222
+ This plugin is based on Trail of Bits' open-source security resources:
223
+ - [Building Secure Contracts](https://github.com/crytic/building-secure-contracts)
224
+ - [Not So Smart Contracts](https://github.com/crytic/not-so-smart-contracts)
225
+ - [Weird ERC20](https://github.com/d-xo/weird-erc20)
226
+
227
+ ---
228
+
229
+ ## Related Skills
230
+
231
+ - **audit-context-building** - Build deep architectural context before vulnerability hunting
232
+ - **issue-writer** - Transform findings into professional audit reports
233
+ - **solidity-poc-builder** - Build proof-of-concept exploits for Solidity vulnerabilities
234
+
235
+ ---
236
+
237
+ ## Support
238
+
239
+ For questions or issues:
240
+ - [Trail of Bits Office Hours](https://meetings.hubspot.com/trailofbits/office-hours) - Every Tuesday
241
+ - [Empire Hacking Slack](https://join.slack.com/t/empirehacking/shared_invite/zt-h97bbrj8-1jwuiU33nnzg67JcvIciUw) - #crytic and #ethereum channels