@elizaos/skills 2.0.0-alpha.10

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 (291) hide show
  1. package/README.md +126 -0
  2. package/dist/formatter.d.ts +44 -0
  3. package/dist/formatter.d.ts.map +1 -0
  4. package/dist/formatter.js +182 -0
  5. package/dist/frontmatter.d.ts +39 -0
  6. package/dist/frontmatter.d.ts.map +1 -0
  7. package/dist/frontmatter.js +105 -0
  8. package/dist/index.d.ts +29 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +31 -0
  11. package/dist/loader.d.ts +33 -0
  12. package/dist/loader.d.ts.map +1 -0
  13. package/dist/loader.js +362 -0
  14. package/dist/resolver.d.ts +18 -0
  15. package/dist/resolver.d.ts.map +1 -0
  16. package/dist/resolver.js +90 -0
  17. package/dist/types.d.ts +201 -0
  18. package/dist/types.d.ts.map +1 -0
  19. package/dist/types.js +1 -0
  20. package/package.json +57 -0
  21. package/skills/1password/SKILL.md +70 -0
  22. package/skills/1password/references/cli-examples.md +29 -0
  23. package/skills/1password/references/get-started.md +17 -0
  24. package/skills/apple-notes/SKILL.md +77 -0
  25. package/skills/apple-reminders/SKILL.md +96 -0
  26. package/skills/bear-notes/SKILL.md +107 -0
  27. package/skills/bird/SKILL.md +224 -0
  28. package/skills/blogwatcher/SKILL.md +69 -0
  29. package/skills/blucli/SKILL.md +47 -0
  30. package/skills/bluebubbles/SKILL.md +131 -0
  31. package/skills/camsnap/SKILL.md +45 -0
  32. package/skills/canvas/SKILL.md +203 -0
  33. package/skills/clawhub/SKILL.md +77 -0
  34. package/skills/coding-agent/SKILL.md +284 -0
  35. package/skills/discord/SKILL.md +578 -0
  36. package/skills/eightctl/SKILL.md +50 -0
  37. package/skills/food-order/SKILL.md +48 -0
  38. package/skills/gemini/SKILL.md +43 -0
  39. package/skills/gifgrep/SKILL.md +79 -0
  40. package/skills/github/SKILL.md +77 -0
  41. package/skills/gog/SKILL.md +116 -0
  42. package/skills/goplaces/SKILL.md +52 -0
  43. package/skills/healthcheck/SKILL.md +245 -0
  44. package/skills/himalaya/SKILL.md +257 -0
  45. package/skills/himalaya/references/configuration.md +184 -0
  46. package/skills/himalaya/references/message-composition.md +199 -0
  47. package/skills/imsg/SKILL.md +74 -0
  48. package/skills/local-places/SERVER_README.md +101 -0
  49. package/skills/local-places/SKILL.md +102 -0
  50. package/skills/local-places/pyproject.toml +21 -0
  51. package/skills/local-places/src/local_places/__init__.py +2 -0
  52. package/skills/local-places/src/local_places/google_places.py +314 -0
  53. package/skills/local-places/src/local_places/main.py +65 -0
  54. package/skills/local-places/src/local_places/schemas.py +107 -0
  55. package/skills/mcporter/SKILL.md +61 -0
  56. package/skills/model-usage/SKILL.md +69 -0
  57. package/skills/model-usage/references/codexbar-cli.md +33 -0
  58. package/skills/model-usage/scripts/model_usage.py +310 -0
  59. package/skills/nano-banana-pro/SKILL.md +58 -0
  60. package/skills/nano-banana-pro/scripts/generate_image.py +184 -0
  61. package/skills/nano-pdf/SKILL.md +38 -0
  62. package/skills/notion/SKILL.md +172 -0
  63. package/skills/obsidian/SKILL.md +81 -0
  64. package/skills/openai-image-gen/SKILL.md +89 -0
  65. package/skills/openai-image-gen/scripts/gen.py +240 -0
  66. package/skills/openai-whisper/SKILL.md +38 -0
  67. package/skills/openai-whisper-api/SKILL.md +52 -0
  68. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  69. package/skills/openhue/SKILL.md +51 -0
  70. package/skills/oracle/SKILL.md +125 -0
  71. package/skills/ordercli/SKILL.md +78 -0
  72. package/skills/peekaboo/SKILL.md +190 -0
  73. package/skills/sag/SKILL.md +87 -0
  74. package/skills/security-ask-questions-if-underspecified/.claude-plugin/plugin.json +10 -0
  75. package/skills/security-ask-questions-if-underspecified/README.md +24 -0
  76. package/skills/security-ask-questions-if-underspecified/SKILL.md +85 -0
  77. package/skills/security-ask-questions-if-underspecified/skills/ask-questions-if-underspecified/SKILL.md +85 -0
  78. package/skills/security-audit-context-building/.claude-plugin/plugin.json +10 -0
  79. package/skills/security-audit-context-building/README.md +58 -0
  80. package/skills/security-audit-context-building/SKILL.md +297 -0
  81. package/skills/security-audit-context-building/commands/audit-context.md +21 -0
  82. package/skills/security-audit-context-building/skills/audit-context-building/SKILL.md +297 -0
  83. package/skills/security-audit-context-building/skills/audit-context-building/resources/COMPLETENESS_CHECKLIST.md +47 -0
  84. package/skills/security-audit-context-building/skills/audit-context-building/resources/FUNCTION_MICRO_ANALYSIS_EXAMPLE.md +355 -0
  85. package/skills/security-audit-context-building/skills/audit-context-building/resources/OUTPUT_REQUIREMENTS.md +71 -0
  86. package/skills/security-building-secure-contracts/.claude-plugin/plugin.json +10 -0
  87. package/skills/security-building-secure-contracts/README.md +241 -0
  88. package/skills/security-building-secure-contracts/SKILL.md +67 -0
  89. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/SKILL.md +284 -0
  90. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +405 -0
  91. package/skills/security-building-secure-contracts/skills/audit-prep-assistant/SKILL.md +409 -0
  92. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/SKILL.md +329 -0
  93. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +722 -0
  94. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/SKILL.md +218 -0
  95. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/ASSESSMENT_CRITERIA.md +355 -0
  96. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/EXAMPLE_REPORT.md +248 -0
  97. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/REPORT_FORMAT.md +33 -0
  98. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/SKILL.md +334 -0
  99. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +740 -0
  100. package/skills/security-building-secure-contracts/skills/guidelines-advisor/SKILL.md +252 -0
  101. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/ASSESSMENT_AREAS.md +329 -0
  102. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/DELIVERABLES.md +118 -0
  103. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/EXAMPLE_REPORT.md +298 -0
  104. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/SKILL.md +161 -0
  105. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/EXAMPLE_REPORT.md +279 -0
  106. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/WORKFLOW_STEPS.md +132 -0
  107. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/SKILL.md +389 -0
  108. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +669 -0
  109. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/SKILL.md +298 -0
  110. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +791 -0
  111. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/SKILL.md +362 -0
  112. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/ASSESSMENT_CATEGORIES.md +571 -0
  113. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/REPORT_TEMPLATES.md +141 -0
  114. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/SKILL.md +388 -0
  115. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +595 -0
  116. package/skills/security-differential-review/.claude-plugin/plugin.json +10 -0
  117. package/skills/security-differential-review/README.md +109 -0
  118. package/skills/security-differential-review/SKILL.md +220 -0
  119. package/skills/security-differential-review/commands/diff-review.md +21 -0
  120. package/skills/security-differential-review/skills/differential-review/SKILL.md +220 -0
  121. package/skills/security-differential-review/skills/differential-review/adversarial.md +203 -0
  122. package/skills/security-differential-review/skills/differential-review/methodology.md +234 -0
  123. package/skills/security-differential-review/skills/differential-review/patterns.md +300 -0
  124. package/skills/security-differential-review/skills/differential-review/reporting.md +369 -0
  125. package/skills/security-entry-point-analyzer/.claude-plugin/plugin.json +10 -0
  126. package/skills/security-entry-point-analyzer/README.md +74 -0
  127. package/skills/security-entry-point-analyzer/SKILL.md +251 -0
  128. package/skills/security-entry-point-analyzer/commands/entry-points.md +18 -0
  129. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/SKILL.md +251 -0
  130. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/cosmwasm.md +182 -0
  131. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-aptos.md +107 -0
  132. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-sui.md +87 -0
  133. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solana.md +155 -0
  134. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solidity.md +135 -0
  135. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/ton.md +185 -0
  136. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/vyper.md +141 -0
  137. package/skills/security-fix-review/.claude-plugin/plugin.json +13 -0
  138. package/skills/security-fix-review/README.md +118 -0
  139. package/skills/security-fix-review/SKILL.md +264 -0
  140. package/skills/security-fix-review/commands/fix-review.md +24 -0
  141. package/skills/security-fix-review/skills/fix-review/SKILL.md +264 -0
  142. package/skills/security-fix-review/skills/fix-review/references/bug-detection.md +408 -0
  143. package/skills/security-fix-review/skills/fix-review/references/finding-matching.md +298 -0
  144. package/skills/security-fix-review/skills/fix-review/references/report-parsing.md +398 -0
  145. package/skills/security-insecure-defaults/.claude-plugin/plugin.json +10 -0
  146. package/skills/security-insecure-defaults/README.md +45 -0
  147. package/skills/security-insecure-defaults/SKILL.md +117 -0
  148. package/skills/security-insecure-defaults/skills/insecure-defaults/SKILL.md +117 -0
  149. package/skills/security-insecure-defaults/skills/insecure-defaults/references/examples.md +409 -0
  150. package/skills/security-modern-python/.claude-plugin/plugin.json +10 -0
  151. package/skills/security-modern-python/README.md +58 -0
  152. package/skills/security-modern-python/SKILL.md +333 -0
  153. package/skills/security-modern-python/hooks/hooks.json +16 -0
  154. package/skills/security-modern-python/hooks/intercept-legacy-python.bats +388 -0
  155. package/skills/security-modern-python/hooks/intercept-legacy-python.sh +109 -0
  156. package/skills/security-modern-python/hooks/test_helper.bash +75 -0
  157. package/skills/security-modern-python/skills/modern-python/SKILL.md +333 -0
  158. package/skills/security-modern-python/skills/modern-python/references/dependabot.md +43 -0
  159. package/skills/security-modern-python/skills/modern-python/references/migration-checklist.md +141 -0
  160. package/skills/security-modern-python/skills/modern-python/references/pep723-scripts.md +259 -0
  161. package/skills/security-modern-python/skills/modern-python/references/prek.md +211 -0
  162. package/skills/security-modern-python/skills/modern-python/references/pyproject.md +254 -0
  163. package/skills/security-modern-python/skills/modern-python/references/ruff-config.md +240 -0
  164. package/skills/security-modern-python/skills/modern-python/references/security-setup.md +255 -0
  165. package/skills/security-modern-python/skills/modern-python/references/testing.md +284 -0
  166. package/skills/security-modern-python/skills/modern-python/references/uv-commands.md +200 -0
  167. package/skills/security-modern-python/skills/modern-python/templates/dependabot.yml +36 -0
  168. package/skills/security-modern-python/skills/modern-python/templates/pre-commit-config.yaml +66 -0
  169. package/skills/security-property-based-testing/.claude-plugin/plugin.json +9 -0
  170. package/skills/security-property-based-testing/README.md +47 -0
  171. package/skills/security-property-based-testing/SKILL.md +109 -0
  172. package/skills/security-property-based-testing/skills/property-based-testing/README.md +88 -0
  173. package/skills/security-property-based-testing/skills/property-based-testing/SKILL.md +109 -0
  174. package/skills/security-property-based-testing/skills/property-based-testing/references/design.md +191 -0
  175. package/skills/security-property-based-testing/skills/property-based-testing/references/generating.md +200 -0
  176. package/skills/security-property-based-testing/skills/property-based-testing/references/libraries.md +130 -0
  177. package/skills/security-property-based-testing/skills/property-based-testing/references/refactoring.md +181 -0
  178. package/skills/security-property-based-testing/skills/property-based-testing/references/reviewing.md +209 -0
  179. package/skills/security-property-based-testing/skills/property-based-testing/references/strategies.md +124 -0
  180. package/skills/semgrep-rule-creator/.claude-plugin/plugin.json +8 -0
  181. package/skills/semgrep-rule-creator/README.md +43 -0
  182. package/skills/semgrep-rule-creator/SKILL.md +168 -0
  183. package/skills/semgrep-rule-creator/commands/semgrep-rule.md +26 -0
  184. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/SKILL.md +168 -0
  185. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/quick-reference.md +203 -0
  186. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/workflow.md +240 -0
  187. package/skills/session-logs/SKILL.md +115 -0
  188. package/skills/sharp-edges/.claude-plugin/plugin.json +10 -0
  189. package/skills/sharp-edges/README.md +48 -0
  190. package/skills/sharp-edges/SKILL.md +292 -0
  191. package/skills/sharp-edges/skills/sharp-edges/SKILL.md +292 -0
  192. package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +252 -0
  193. package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +274 -0
  194. package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +333 -0
  195. package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +190 -0
  196. package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +205 -0
  197. package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +285 -0
  198. package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +270 -0
  199. package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +263 -0
  200. package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +269 -0
  201. package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +265 -0
  202. package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +245 -0
  203. package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +274 -0
  204. package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +273 -0
  205. package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +272 -0
  206. package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +287 -0
  207. package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +588 -0
  208. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  209. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  210. package/skills/skill-creator/SKILL.md +370 -0
  211. package/skills/skill-creator/license.txt +202 -0
  212. package/skills/skill-creator/scripts/init_skill.py +378 -0
  213. package/skills/skill-creator/scripts/package_skill.py +111 -0
  214. package/skills/skill-creator/scripts/quick_validate.py +101 -0
  215. package/skills/slack/SKILL.md +144 -0
  216. package/skills/songsee/SKILL.md +49 -0
  217. package/skills/sonoscli/SKILL.md +46 -0
  218. package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +10 -0
  219. package/skills/spec-to-code-compliance/README.md +67 -0
  220. package/skills/spec-to-code-compliance/SKILL.md +349 -0
  221. package/skills/spec-to-code-compliance/commands/spec-compliance.md +22 -0
  222. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +349 -0
  223. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +69 -0
  224. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +417 -0
  225. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +105 -0
  226. package/skills/spotify-player/SKILL.md +64 -0
  227. package/skills/static-analysis/.claude-plugin/plugin.json +8 -0
  228. package/skills/static-analysis/README.md +59 -0
  229. package/skills/static-analysis/SKILL.md +91 -0
  230. package/skills/static-analysis/skills/codeql/SKILL.md +315 -0
  231. package/skills/static-analysis/skills/sarif-parsing/SKILL.md +479 -0
  232. package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +162 -0
  233. package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +331 -0
  234. package/skills/static-analysis/skills/semgrep/SKILL.md +337 -0
  235. package/skills/summarize/SKILL.md +87 -0
  236. package/skills/testing-handbook-skills/.claude-plugin/plugin.json +8 -0
  237. package/skills/testing-handbook-skills/README.md +241 -0
  238. package/skills/testing-handbook-skills/SKILL.md +104 -0
  239. package/skills/testing-handbook-skills/scripts/pyproject.toml +8 -0
  240. package/skills/testing-handbook-skills/scripts/validate-skills.py +657 -0
  241. package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +341 -0
  242. package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +640 -0
  243. package/skills/testing-handbook-skills/skills/atheris/SKILL.md +515 -0
  244. package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +454 -0
  245. package/skills/testing-handbook-skills/skills/codeql/SKILL.md +549 -0
  246. package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +507 -0
  247. package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +607 -0
  248. package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +297 -0
  249. package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +426 -0
  250. package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +614 -0
  251. package/skills/testing-handbook-skills/skills/libafl/SKILL.md +625 -0
  252. package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +795 -0
  253. package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +426 -0
  254. package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +443 -0
  255. package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +601 -0
  256. package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +372 -0
  257. package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +280 -0
  258. package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +452 -0
  259. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +504 -0
  260. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +454 -0
  261. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +527 -0
  262. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +366 -0
  263. package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +482 -0
  264. package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +533 -0
  265. package/skills/things-mac/SKILL.md +86 -0
  266. package/skills/tmux/SKILL.md +135 -0
  267. package/skills/tmux/scripts/find-sessions.sh +112 -0
  268. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  269. package/skills/trello/SKILL.md +95 -0
  270. package/skills/variant-analysis/.claude-plugin/plugin.json +8 -0
  271. package/skills/variant-analysis/README.md +41 -0
  272. package/skills/variant-analysis/SKILL.md +142 -0
  273. package/skills/variant-analysis/commands/variants.md +23 -0
  274. package/skills/variant-analysis/skills/variant-analysis/METHODOLOGY.md +327 -0
  275. package/skills/variant-analysis/skills/variant-analysis/SKILL.md +142 -0
  276. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/cpp.ql +119 -0
  277. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/go.ql +69 -0
  278. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/java.ql +71 -0
  279. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/javascript.ql +63 -0
  280. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/python.ql +80 -0
  281. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/cpp.yaml +98 -0
  282. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/go.yaml +63 -0
  283. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/java.yaml +61 -0
  284. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/javascript.yaml +60 -0
  285. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/python.yaml +72 -0
  286. package/skills/variant-analysis/skills/variant-analysis/resources/variant-report-template.md +75 -0
  287. package/skills/video-frames/SKILL.md +46 -0
  288. package/skills/video-frames/scripts/frame.sh +81 -0
  289. package/skills/voice-call/SKILL.md +45 -0
  290. package/skills/wacli/SKILL.md +72 -0
  291. package/skills/weather/SKILL.md +54 -0
@@ -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
+ ---