@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,284 @@
1
+ ---
2
+ name: algorand-vulnerability-scanner
3
+ description: Scans Algorand smart contracts for 11 common vulnerabilities including rekeying attacks, unchecked transaction fees, missing field validations, and access control issues. Use when auditing Algorand projects (TEAL/PyTeal).
4
+ ---
5
+
6
+ # Algorand Vulnerability Scanner
7
+
8
+ ## 1. Purpose
9
+
10
+ Systematically scan Algorand smart contracts (TEAL and PyTeal) for platform-specific security vulnerabilities documented in Trail of Bits' "Not So Smart Contracts" database. This skill encodes 11 critical vulnerability patterns unique to Algorand's transaction model.
11
+
12
+ ## 2. When to Use This Skill
13
+
14
+ - Auditing Algorand smart contracts (stateful applications or smart signatures)
15
+ - Reviewing TEAL assembly or PyTeal code
16
+ - Pre-audit security assessment of Algorand projects
17
+ - Validating fixes for reported Algorand vulnerabilities
18
+ - Training team on Algorand-specific security patterns
19
+
20
+ ## 3. Platform Detection
21
+
22
+ ### File Extensions & Indicators
23
+ - **TEAL files**: `.teal`
24
+ - **PyTeal files**: `.py` with PyTeal imports
25
+
26
+ ### Language/Framework Markers
27
+ ```python
28
+ # PyTeal indicators
29
+ from pyteal import *
30
+ from algosdk import *
31
+
32
+ # Common patterns
33
+ Txn, Gtxn, Global, InnerTxnBuilder
34
+ OnComplete, ApplicationCall, TxnType
35
+ @router.method, @Subroutine
36
+ ```
37
+
38
+ ### Project Structure
39
+ - `approval_program.py` / `clear_program.py`
40
+ - `contract.teal` / `signature.teal`
41
+ - References to Algorand SDK or Beaker framework
42
+
43
+ ### Tool Support
44
+ - **Tealer**: Trail of Bits static analyzer for Algorand
45
+ - Installation: `pip3 install tealer`
46
+ - Usage: `tealer contract.teal --detect all`
47
+
48
+ ---
49
+
50
+ ## 4. How This Skill Works
51
+
52
+ When invoked, I will:
53
+
54
+ 1. **Search your codebase** for TEAL/PyTeal files
55
+ 2. **Analyze each file** for the 11 vulnerability patterns
56
+ 3. **Report findings** with file references and severity
57
+ 4. **Provide fixes** for each identified issue
58
+ 5. **Run Tealer** (if installed) for automated detection
59
+
60
+ ---
61
+
62
+ ## 5. Example Output
63
+
64
+ When vulnerabilities are found, you'll get a report like this:
65
+
66
+ ```
67
+ === ALGORAND VULNERABILITY SCAN RESULTS ===
68
+
69
+ Project: my-algorand-dapp
70
+ Files Scanned: 3 (.teal, .py)
71
+ Vulnerabilities Found: 2
72
+
73
+ ---
74
+
75
+ [CRITICAL] Rekeying Attack
76
+ File: contracts/approval.py:45
77
+ Pattern: Missing RekeyTo validation
78
+
79
+ Code:
80
+ If(Txn.type_enum() == TxnType.Payment,
81
+ Seq([
82
+ # Missing: Assert(Txn.rekey_to() == Global.zero_address())
83
+ App.globalPut(Bytes("balance"), balance + Txn.amount()),
84
+ Approve()
85
+ ])
86
+ )
87
+
88
+ Issue: The contract doesn't validate the RekeyTo field, allowing attackers
89
+ to change account authorization and bypass restrictions.
90
+
91
+
92
+ ---
93
+
94
+ ## 5. Vulnerability Patterns (11 Patterns)
95
+
96
+ I check for 11 critical vulnerability patterns unique to Algorand. For detailed detection patterns, code examples, mitigations, and testing strategies, see [VULNERABILITY_PATTERNS.md](resources/VULNERABILITY_PATTERNS.md).
97
+
98
+ ### Pattern Summary:
99
+
100
+ 1. **Rekeying Vulnerability** ⚠️ CRITICAL - Unchecked RekeyTo field
101
+ 2. **Missing Transaction Verification** ⚠️ CRITICAL - No GroupSize/GroupIndex checks
102
+ 3. **Group Transaction Manipulation** ⚠️ HIGH - Unsafe group transaction handling
103
+ 4. **Asset Clawback Risk** ⚠️ HIGH - Missing clawback address checks
104
+ 5. **Application State Manipulation** ⚠️ MEDIUM - Unsafe global/local state updates
105
+ 6. **Asset Opt-In Missing** ⚠️ HIGH - No asset opt-in validation
106
+ 7. **Minimum Balance Violation** ⚠️ MEDIUM - Account below minimum balance
107
+ 8. **Close Remainder To Check** ⚠️ HIGH - Unchecked CloseRemainderTo field
108
+ 9. **Application Clear State** ⚠️ MEDIUM - Unsafe clear state program
109
+ 10. **Atomic Transaction Ordering** ⚠️ HIGH - Assuming transaction order
110
+ 11. **Logic Signature Reuse** ⚠️ HIGH - Logic sigs without uniqueness constraints
111
+
112
+ For complete vulnerability patterns with code examples, see [VULNERABILITY_PATTERNS.md](resources/VULNERABILITY_PATTERNS.md).
113
+ ## 5. Scanning Workflow
114
+
115
+ ### Step 1: Platform Identification
116
+ 1. Confirm file extensions (`.teal`, `.py`)
117
+ 2. Identify framework (PyTeal, Beaker, pure TEAL)
118
+ 3. Determine contract type (stateful application vs smart signature)
119
+ 4. Locate approval and clear state programs
120
+
121
+ ### Step 2: Static Analysis with Tealer
122
+ ```bash
123
+ # Run Tealer on contract
124
+ tealer contract.teal --detect all
125
+
126
+ # Or specific detectors
127
+ tealer contract.teal --detect unprotected-rekey,group-size-check,update-application-check
128
+ ```
129
+
130
+ ### Step 3: Manual Vulnerability Sweep
131
+ For each of the 11 vulnerabilities above:
132
+ 1. Search for relevant transaction field usage
133
+ 2. Verify validation logic exists
134
+ 3. Check for bypass conditions
135
+ 4. Validate inner transaction handling
136
+
137
+ ### Step 4: Transaction Field Validation Matrix
138
+ Create checklist for all transaction types used:
139
+
140
+ **Payment Transactions**:
141
+ - [ ] RekeyTo validated
142
+ - [ ] CloseRemainderTo validated
143
+ - [ ] Fee validated (if smart signature)
144
+
145
+ **Asset Transfers**:
146
+ - [ ] Asset ID validated
147
+ - [ ] AssetCloseTo validated
148
+ - [ ] RekeyTo validated
149
+
150
+ **Application Calls**:
151
+ - [ ] OnComplete validated
152
+ - [ ] Access controls enforced
153
+ - [ ] Group size validated
154
+
155
+ **Inner Transactions**:
156
+ - [ ] Fee explicitly set to 0
157
+ - [ ] RekeyTo not user-controlled (Teal v6+)
158
+ - [ ] All fields validated
159
+
160
+ ### Step 5: Group Transaction Analysis
161
+ For atomic transaction groups:
162
+ 1. Validate `Global.group_size()` checks
163
+ 2. Review absolute vs relative indexing
164
+ 3. Check for replay protection (Lease field)
165
+ 4. Verify OnComplete fields for ApplicationCalls in group
166
+
167
+ ### Step 6: Access Control Review
168
+ - [ ] Creator/admin privileges properly enforced
169
+ - [ ] Update/delete operations protected
170
+ - [ ] Sensitive functions have authorization checks
171
+
172
+ ---
173
+
174
+ ## 6. Reporting Format
175
+
176
+ ### Finding Template
177
+ ```markdown
178
+ ## [SEVERITY] Vulnerability Name (e.g., Missing RekeyTo Validation)
179
+
180
+ **Location**: `contract.teal:45-50` or `approval_program.py:withdraw()`
181
+
182
+ **Description**:
183
+ The contract approves payment transactions without validating the RekeyTo field, allowing an attacker to rekey the account and bypass future authorization checks.
184
+
185
+ **Vulnerable Code**:
186
+ ```python
187
+ # approval_program.py, line 45
188
+ If(Txn.type_enum() == TxnType.Payment,
189
+ Approve() # Missing RekeyTo check
190
+ )
191
+ ```
192
+
193
+ **Attack Scenario**:
194
+ 1. Attacker submits payment transaction with RekeyTo set to attacker's address
195
+ 2. Contract approves transaction without checking RekeyTo
196
+ 3. Account authorization is rekeyed to attacker
197
+ 4. Attacker gains full control of account
198
+
199
+ **Recommendation**:
200
+ Add explicit validation of the RekeyTo field:
201
+ ```python
202
+ If(And(
203
+ Txn.type_enum() == TxnType.Payment,
204
+ Txn.rekey_to() == Global.zero_address()
205
+ ), Approve(), Reject())
206
+ ```
207
+
208
+ **References**:
209
+ - building-secure-contracts/not-so-smart-contracts/algorand/rekeying
210
+ - Tealer detector: `unprotected-rekey`
211
+ ```
212
+
213
+ ---
214
+
215
+ ## 7. Priority Guidelines
216
+
217
+ ### Critical (Immediate Fix Required)
218
+ - Rekeying attacks
219
+ - CloseRemainderTo / AssetCloseTo issues
220
+ - Access control bypasses
221
+
222
+ ### High (Fix Before Deployment)
223
+ - Unchecked transaction fees
224
+ - Asset ID validation issues
225
+ - Group size validation
226
+ - Clear state transaction checks
227
+
228
+ ### Medium (Address in Audit)
229
+ - Inner transaction fee issues
230
+ - Time-based replay attacks
231
+ - DoS via asset opt-in
232
+
233
+ ---
234
+
235
+ ## 8. Testing Recommendations
236
+
237
+ ### Unit Tests Required
238
+ - Test each vulnerability scenario with PoC exploit
239
+ - Verify fixes prevent exploitation
240
+ - Test edge cases (group size = 0, empty addresses, etc.)
241
+
242
+ ### Tealer Integration
243
+ ```bash
244
+ # Add to CI/CD pipeline
245
+ tealer approval.teal --detect all --json > tealer-report.json
246
+
247
+ # Fail build on critical findings
248
+ tealer approval.teal --detect all --fail-on critical,high
249
+ ```
250
+
251
+ ### Scenario Testing
252
+ - Submit transactions with all critical fields manipulated
253
+ - Test atomic groups with unexpected sizes
254
+ - Attempt access control bypasses
255
+ - Verify inner transaction fee handling
256
+
257
+ ---
258
+
259
+ ## 9. Additional Resources
260
+
261
+ - **Building Secure Contracts**: `building-secure-contracts/not-so-smart-contracts/algorand/`
262
+ - **Tealer Documentation**: https://github.com/crytic/tealer
263
+ - **Algorand Developer Docs**: https://developer.algorand.org/docs/
264
+ - **PyTeal Documentation**: https://pyteal.readthedocs.io/
265
+
266
+ ---
267
+
268
+ ## 10. Quick Reference Checklist
269
+
270
+ Before completing Algorand audit, verify ALL items checked:
271
+
272
+ - [ ] RekeyTo validated in all transaction types
273
+ - [ ] CloseRemainderTo validated in payment transactions
274
+ - [ ] AssetCloseTo validated in asset transfers
275
+ - [ ] Transaction fees validated (smart signatures)
276
+ - [ ] Group size validated for atomic transactions
277
+ - [ ] Lease field used for replay protection (where applicable)
278
+ - [ ] Access controls on Update/Delete operations
279
+ - [ ] Asset ID validated in all asset operations
280
+ - [ ] Asset transfers use pull pattern to avoid DoS
281
+ - [ ] Inner transaction fees explicitly set to 0
282
+ - [ ] OnComplete field validated for ApplicationCall transactions
283
+ - [ ] Tealer scan completed with no critical/high findings
284
+ - [ ] Unit tests cover all vulnerability scenarios
@@ -0,0 +1,405 @@
1
+ ## 6. Vulnerability Checklist (11 Patterns)
2
+
3
+ ### 6.1 REKEYING ATTACK ⚠️ CRITICAL
4
+
5
+ **Description**: Missing validation of the `RekeyTo` transaction field allows attackers to change account authorization and bypass contract restrictions.
6
+
7
+ **Detection Patterns**:
8
+ ```python
9
+ # VULNERABLE: No RekeyTo check
10
+ If(Txn.type_enum() == TxnType.Payment)
11
+ # Missing: Assert(Txn.rekey_to() == Global.zero_address())
12
+
13
+ # VULNERABLE: Inner transactions with user-controlled RekeyTo
14
+ InnerTxnBuilder.SetField(TxnField.rekey_to, Txn.accounts[1]) # User controlled
15
+ ```
16
+
17
+ **What to Check**:
18
+ - [ ] All transaction approval logic validates `Txn.rekey_to() == Global.zero_address()`
19
+ - [ ] Inner transactions in Teal v6+ do not use user-controlled RekeyTo
20
+ - [ ] Group transactions verify RekeyTo for all relevant txns
21
+
22
+ **Mitigation**:
23
+ ```python
24
+ # SECURE: Validate RekeyTo field
25
+ Assert(Txn.rekey_to() == Global.zero_address())
26
+
27
+ # OR: Explicitly allow specific rekey target
28
+ Assert(Txn.rekey_to() == intended_address)
29
+ ```
30
+
31
+ **Tool Detection**: Tealer detector `unprotected-rekey` available
32
+
33
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/rekeying
34
+
35
+ ---
36
+
37
+ ### 4.2 UNCHECKED TRANSACTION FEE ⚠️ HIGH
38
+
39
+ **Description**: Smart signatures without fee validation allow users to set excessive fees, draining the sender's account balance.
40
+
41
+ **Detection Patterns**:
42
+ ```python
43
+ # VULNERABLE: No fee check in smart signature
44
+ def approval_program():
45
+ return If(Txn.type_enum() == TxnType.Payment, Int(1), Int(0))
46
+ # Missing fee validation
47
+
48
+ # VULNERABLE: Unbounded fee
49
+ If(Txn.fee() <= some_large_value) # Still vulnerable
50
+ ```
51
+
52
+ **What to Check**:
53
+ - [ ] Smart signatures enforce `Txn.fee() == Global.min_txn_fee()`
54
+ - [ ] OR fee is explicitly set to 0 with fee pooling enabled
55
+ - [ ] No user control over transaction fee amounts
56
+
57
+ **Mitigation**:
58
+ ```python
59
+ # SECURE: Force fee to zero (with fee pooling)
60
+ Assert(Txn.fee() == Int(0))
61
+
62
+ # OR: Enforce minimum fee only
63
+ Assert(Txn.fee() == Global.min_txn_fee())
64
+ ```
65
+
66
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/unchecked_transaction_fee
67
+
68
+ ---
69
+
70
+ ### 4.3 CLOSING ACCOUNT (CloseRemainderTo) ⚠️ CRITICAL
71
+
72
+ **Description**: Missing validation of `CloseRemainderTo` field allows attackers to drain entire account balance to arbitrary address.
73
+
74
+ **Detection Patterns**:
75
+ ```python
76
+ # VULNERABLE: Payment without CloseRemainderTo check
77
+ If(Txn.type_enum() == TxnType.Payment)
78
+ # Missing: Assert(Txn.close_remainder_to() == Global.zero_address())
79
+
80
+ # VULNERABLE: Inner transaction with close field
81
+ InnerTxnBuilder.SetFields({
82
+ TxnField.type_enum: TxnType.Payment,
83
+ # Missing CloseRemainderTo validation
84
+ })
85
+ ```
86
+
87
+ **What to Check**:
88
+ - [ ] All payment transactions validate `Txn.close_remainder_to() == Global.zero_address()`
89
+ - [ ] OR explicitly allow specific close address
90
+ - [ ] Inner transactions do not set CloseRemainderTo unless intended
91
+
92
+ **Mitigation**:
93
+ ```python
94
+ # SECURE: Validate CloseRemainderTo
95
+ Assert(Txn.close_remainder_to() == Global.zero_address())
96
+
97
+ # OR: Allow specific close target
98
+ Assert(Txn.close_remainder_to() == authorized_address)
99
+ ```
100
+
101
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/closing_account
102
+
103
+ ---
104
+
105
+ ### 4.4 CLOSING ASSET (AssetCloseTo) ⚠️ CRITICAL
106
+
107
+ **Description**: Missing validation of `AssetCloseTo` field enables transferring entire asset balance to arbitrary address.
108
+
109
+ **Detection Patterns**:
110
+ ```python
111
+ # VULNERABLE: Asset transfer without AssetCloseTo check
112
+ If(Txn.type_enum() == TxnType.AssetTransfer)
113
+ # Missing: Assert(Txn.asset_close_to() == Global.zero_address())
114
+ ```
115
+
116
+ **What to Check**:
117
+ - [ ] All asset transfer transactions validate `Txn.asset_close_to() == Global.zero_address()`
118
+ - [ ] OR explicitly specify allowed close target
119
+ - [ ] Inner asset transfers validate AssetCloseTo field
120
+
121
+ **Mitigation**:
122
+ ```python
123
+ # SECURE: Validate AssetCloseTo
124
+ Assert(Txn.asset_close_to() == Global.zero_address())
125
+ ```
126
+
127
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/closing_asset
128
+
129
+ ---
130
+
131
+ ### 4.5 GROUP SIZE CHECK ⚠️ HIGH
132
+
133
+ **Description**: Missing validation of `Global.group_size()` allows attackers to include multiple application calls in atomic group, executing operations multiple times.
134
+
135
+ **Detection Patterns**:
136
+ ```python
137
+ # VULNERABLE: No group size validation
138
+ # Attacker can repeat call 10 times in single group
139
+ If(Gtxn[0].type_enum() == TxnType.Payment)
140
+
141
+ # VULNERABLE: Absolute indices without size check
142
+ Assert(Gtxn[2].sender() == Gtxn[0].sender()) # No group size validation
143
+ ```
144
+
145
+ **What to Check**:
146
+ - [ ] Atomic transaction logic validates `Global.group_size()` matches expected size
147
+ - [ ] Using absolute indices is paired with group size verification
148
+ - [ ] OR use relative indexing with ABI methods (Teal v6+)
149
+
150
+ **Mitigation**:
151
+ ```python
152
+ # SECURE: Validate group size
153
+ Assert(Global.group_size() == Int(3)) # Exact size
154
+ # OR
155
+ Assert(Global.group_size() <= Int(3)) # Maximum size
156
+
157
+ # BETTER: Use ABI with relative indexing (Teal v6+)
158
+ @router.method
159
+ def method():
160
+ # Automatically handles group indexing
161
+ ```
162
+
163
+ **Tool Detection**: Tealer detector `group-size-check` available
164
+
165
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/group_size_check
166
+
167
+ ---
168
+
169
+ ### 4.6 TIME-BASED REPLAY ATTACK ⚠️ MEDIUM
170
+
171
+ **Description**: Transactions with same `FirstValid`/`LastValid` but different hashes can be submitted multiple times without `Lease` field protection.
172
+
173
+ **Detection Patterns**:
174
+ ```python
175
+ # VULNERABLE: Periodic payments without lease
176
+ def recurring_payment():
177
+ return Seq([
178
+ Assert(Global.latest_timestamp() >= next_payment_time),
179
+ # Missing Lease validation for replay protection
180
+ InnerTxnBuilder.Submit()
181
+ ])
182
+ ```
183
+
184
+ **What to Check**:
185
+ - [ ] Recurring/periodic transactions validate `Txn.lease()` field
186
+ - [ ] Lease field set to unique value per logical transaction
187
+ - [ ] Time-dependent operations have replay protection
188
+
189
+ **Mitigation**:
190
+ ```python
191
+ # SECURE: Validate Lease field
192
+ Assert(Txn.lease() == expected_lease_value)
193
+
194
+ # OR: Use Lease for mutual exclusion
195
+ lease = Sha256(Concat(Bytes("prefix"), Txn.sender(), Itob(counter)))
196
+ Assert(Txn.lease() == lease)
197
+ ```
198
+
199
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/time_based_replay_attack
200
+
201
+ ---
202
+
203
+ ### 4.7 ACCESS CONTROLS ⚠️ CRITICAL
204
+
205
+ **Description**: Missing access control checks on `UpdateApplication` and `DeleteApplication` operations allow unauthorized contract modifications.
206
+
207
+ **Detection Patterns**:
208
+ ```python
209
+ # VULNERABLE: No access control on updates
210
+ program = Cond(
211
+ [Txn.application_id() == Int(0), on_creation],
212
+ [Txn.on_completion() == OnComplete.UpdateApplication, Int(1)], # Anyone can update!
213
+ [Txn.on_completion() == OnComplete.DeleteApplication, Int(1)], # Anyone can delete!
214
+ )
215
+
216
+ # VULNERABLE: Weak access control
217
+ If(Txn.on_completion() == OnComplete.UpdateApplication,
218
+ Int(1)) # Missing sender validation
219
+ ```
220
+
221
+ **What to Check**:
222
+ - [ ] `UpdateApplication` checks `Txn.sender() == creator/admin`
223
+ - [ ] `DeleteApplication` checks `Txn.sender() == creator/admin`
224
+ - [ ] OR explicitly disable updates/deletes: `Return(Int(0))`
225
+ - [ ] OnComplete field validated for all application calls
226
+
227
+ **Mitigation**:
228
+ ```python
229
+ # SECURE: Proper access control
230
+ is_creator = Txn.sender() == Global.creator_address()
231
+
232
+ program = Cond(
233
+ [Txn.application_id() == Int(0), on_creation],
234
+ [Txn.on_completion() == OnComplete.UpdateApplication, is_creator],
235
+ [Txn.on_completion() == OnComplete.DeleteApplication, is_creator],
236
+ )
237
+
238
+ # OR: Disable updates entirely
239
+ [Txn.on_completion() == OnComplete.UpdateApplication, Return(Int(0))],
240
+ ```
241
+
242
+ **Tool Detection**: Tealer detector `update-application-check` available
243
+
244
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/access_controls
245
+
246
+ ---
247
+
248
+ ### 4.8 ASSET ID VERIFICATION ⚠️ HIGH
249
+
250
+ **Description**: Missing validation of `Txn.xfer_asset()` allows attackers to transfer wrong/worthless assets instead of expected tokens.
251
+
252
+ **Detection Patterns**:
253
+ ```python
254
+ # VULNERABLE: No asset ID check
255
+ If(And(
256
+ Txn.type_enum() == TxnType.AssetTransfer,
257
+ Txn.asset_amount() >= required_amount,
258
+ # Missing: Txn.xfer_asset() == expected_asset_id
259
+ ))
260
+
261
+ # VULNERABLE: User-provided asset ID
262
+ def swap(asset_id): # User controlled!
263
+ return If(Txn.xfer_asset() == asset_id, ...) # No validation
264
+ ```
265
+
266
+ **What to Check**:
267
+ - [ ] All asset transfer validations include `Txn.xfer_asset() == expected_asset_id`
268
+ - [ ] Asset IDs stored in global state or hardcoded
269
+ - [ ] No user control over which asset ID is considered valid
270
+
271
+ **Mitigation**:
272
+ ```python
273
+ # SECURE: Validate asset ID
274
+ expected_asset_id = Int(12345678) # Or from global state
275
+ Assert(And(
276
+ Txn.type_enum() == TxnType.AssetTransfer,
277
+ Txn.xfer_asset() == expected_asset_id,
278
+ Txn.asset_amount() >= required_amount
279
+ ))
280
+ ```
281
+
282
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/asset_id_verification
283
+
284
+ ---
285
+
286
+ ### 4.9 DENIAL OF SERVICE (Asset Opt-In) ⚠️ MEDIUM
287
+
288
+ **Description**: Transferring assets to non-opted-in accounts causes transaction failure, enabling DoS attacks when using push pattern.
289
+
290
+ **Detection Patterns**:
291
+ ```python
292
+ # VULNERABLE: Push pattern for asset distribution
293
+ For(i IN users).Do(
294
+ InnerTxnBuilder.SetFields({
295
+ TxnField.type_enum: TxnType.AssetTransfer,
296
+ TxnField.receiver: users[i],
297
+ TxnField.asset_amount: rewards[i]
298
+ })
299
+ ) # Fails if any user not opted-in, DoS all users
300
+
301
+ # VULNERABLE: Batch operations with asset transfers
302
+ # Single failure blocks entire batch
303
+ ```
304
+
305
+ **What to Check**:
306
+ - [ ] Asset distributions use pull pattern (users claim) instead of push
307
+ - [ ] OR batch operations handle opt-in failures gracefully
308
+ - [ ] Critical operations not blocked by asset transfer failures
309
+
310
+ **Mitigation**:
311
+ ```python
312
+ # SECURE: Pull pattern
313
+ @router.method
314
+ def claim_reward():
315
+ # User initiates, must be opted-in
316
+ amount = App.localGet(Txn.sender(), Bytes("reward"))
317
+ Assert(amount > Int(0))
318
+ # Transfer asset to opted-in user
319
+
320
+ # BETTER: Users trigger their own transfers
321
+ ```
322
+
323
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/dos
324
+
325
+ ---
326
+
327
+ ### 4.10 INNER TRANSACTION FEE ⚠️ MEDIUM
328
+
329
+ **Description**: Inner transactions with unset or non-zero fees drain application balance when fee pooling is used.
330
+
331
+ **Detection Patterns**:
332
+ ```python
333
+ # VULNERABLE: Missing fee field in inner transaction
334
+ InnerTxnBuilder.Begin()
335
+ InnerTxnBuilder.SetFields({
336
+ TxnField.type_enum: TxnType.Payment,
337
+ TxnField.receiver: receiver,
338
+ # Missing: TxnField.fee: Int(0)
339
+ })
340
+ InnerTxnBuilder.Submit() # Drains app balance for fees!
341
+
342
+ # VULNERABLE: Non-zero inner transaction fee
343
+ InnerTxnBuilder.SetField(TxnField.fee, Int(1000)) # Drains balance
344
+ ```
345
+
346
+ **What to Check**:
347
+ - [ ] All inner transactions explicitly set `TxnField.fee: Int(0)`
348
+ - [ ] Fee pooling strategy documented and validated
349
+ - [ ] Internal bookkeeping accounts for any non-zero fees
350
+
351
+ **Mitigation**:
352
+ ```python
353
+ # SECURE: Explicitly set fee to zero
354
+ InnerTxnBuilder.Begin()
355
+ InnerTxnBuilder.SetFields({
356
+ TxnField.type_enum: TxnType.Payment,
357
+ TxnField.receiver: receiver,
358
+ TxnField.amount: amount,
359
+ TxnField.fee: Int(0), # Explicit zero fee
360
+ })
361
+ InnerTxnBuilder.Submit()
362
+ ```
363
+
364
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/inner_transaction_fee
365
+
366
+ ---
367
+
368
+ ### 4.11 CLEAR STATE TRANSACTION ⚠️ HIGH
369
+
370
+ **Description**: Missing `OnComplete` field validation allows attackers to invoke clear state program instead of approval program, bypassing logic.
371
+
372
+ **Detection Patterns**:
373
+ ```python
374
+ # VULNERABLE: Only checks transaction type, not OnComplete
375
+ def validate_group():
376
+ return And(
377
+ Gtxn[0].type_enum() == TxnType.Payment,
378
+ Gtxn[1].type_enum() == TxnType.ApplicationCall, # Could be ClearState!
379
+ # Missing: Gtxn[1].on_completion() == OnComplete.NoOp
380
+ )
381
+
382
+ # VULNERABLE: Assumes ApplicationCall is approval
383
+ If(Gtxn[i].type_enum() == TxnType.ApplicationCall,
384
+ validate_app_call()) # May be ClearStateProgram
385
+ ```
386
+
387
+ **What to Check**:
388
+ - [ ] Group transaction validation checks `Gtxn[i].on_completion() == OnComplete.NoOp`
389
+ - [ ] OR explicitly allows specific OnComplete values
390
+ - [ ] Not just checking `TxnType.ApplicationCall` without OnComplete validation
391
+
392
+ **Mitigation**:
393
+ ```python
394
+ # SECURE: Validate OnComplete field
395
+ def validate_group():
396
+ return And(
397
+ Gtxn[0].type_enum() == TxnType.Payment,
398
+ Gtxn[1].type_enum() == TxnType.ApplicationCall,
399
+ Gtxn[1].on_completion() == OnComplete.NoOp, # Explicit check
400
+ )
401
+ ```
402
+
403
+ **References**: building-secure-contracts/not-so-smart-contracts/algorand/clear_state_transaction
404
+
405
+ ---