@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,333 @@
1
+ # Configuration Security Patterns
2
+
3
+ Dangerous configuration patterns that enable security failures.
4
+
5
+ ## Zero/Empty/Null Semantics
6
+
7
+ ### The Lifetime Zero Problem
8
+
9
+ ```yaml
10
+ # What does 0 mean?
11
+ session_timeout: 0 # Infinite timeout? Immediate expiry? Disabled?
12
+ token_lifetime: 0 # Never expires? Already expired? Use default?
13
+ max_attempts: 0 # No attempts allowed? Unlimited attempts?
14
+ ```
15
+
16
+ **Real-world failures:**
17
+ - OTP libraries where `lifetime=0` means "accept any OTP regardless of age"
18
+ - Rate limiters where `max_attempts=0` disables rate limiting
19
+ - Session managers where `timeout=0` means "session never expires"
20
+
21
+ **Detection**: Any numeric security parameter that accepts 0.
22
+
23
+ **Fix**: Explicit constants, validation, or separate enable/disable flag.
24
+
25
+ ```python
26
+ # BAD
27
+ def verify_otp(code: str, lifetime: int = 300):
28
+ if lifetime <= 0:
29
+ return True # What??
30
+
31
+ # GOOD
32
+ def verify_otp(code: str, lifetime: int = 300):
33
+ if lifetime <= 0:
34
+ raise ValueError("lifetime must be positive")
35
+ ```
36
+
37
+ ### Empty String Bypass
38
+
39
+ ```python
40
+ # Passwords
41
+ if user_password == stored_hash: # What if stored_hash is ""?
42
+
43
+ # API keys
44
+ if api_key == config.api_key: # What if config is empty?
45
+ grant_access()
46
+
47
+ # The empty string equals the empty string
48
+ "" == "" # True - authentication bypassed
49
+ ```
50
+
51
+ **Detection**: String comparisons for authentication without empty checks.
52
+
53
+ ### Null as "Skip"
54
+
55
+ ```javascript
56
+ // DANGEROUS: null means "skip verification"
57
+ function verifySignature(data, signature, publicKey) {
58
+ if (!publicKey) return true; // No key = trust everything?
59
+ return crypto.verify(data, signature, publicKey);
60
+ }
61
+
62
+ // DANGEROUS: null means "any value"
63
+ function checkRole(user, requiredRole) {
64
+ if (!requiredRole) return true; // No requirement = allow all?
65
+ return user.roles.includes(requiredRole);
66
+ }
67
+ ```
68
+
69
+ ## Boolean Traps
70
+
71
+ ### Security-Disabling Flags
72
+
73
+ ```yaml
74
+ # Every one of these has caused real vulnerabilities
75
+ verify_ssl: false
76
+ validate_certificate: false
77
+ check_signature: false
78
+ require_auth: false
79
+ enable_csrf_protection: false
80
+ sanitize_input: false
81
+ ```
82
+
83
+ **Pattern**: Any boolean that disables a security control.
84
+
85
+ **The typo problem:**
86
+ ```yaml
87
+ verify_ssl: fasle # Typo - what does the parser do?
88
+ verify_ssl: "false" # String "false" - truthy in many languages!
89
+ verify_ssl: 0 # Integer 0 - falsy, but is it valid?
90
+ ```
91
+
92
+ ### Double Negatives
93
+
94
+ ```yaml
95
+ # Confusing
96
+ disable_auth: false # Auth enabled? Let me re-read...
97
+ skip_validation: false # Validation runs? Think carefully...
98
+
99
+ # Clear
100
+ auth_enabled: true
101
+ validate_input: true
102
+ ```
103
+
104
+ ## Magic Values
105
+
106
+ ### Sentinel Values in Security Parameters
107
+
108
+ ```yaml
109
+ # What do these mean?
110
+ max_retries: -1 # Infinite? Error? Use default?
111
+ cache_ttl: -1 # Never expire? Disabled?
112
+ timeout_seconds: -1 # Wait forever? Use system default?
113
+
114
+ # Real vulnerability: connection pool with max_connections: -1
115
+ # meant "unlimited" - enabled DoS via connection exhaustion
116
+ ```
117
+
118
+ ### Special String Values
119
+
120
+ ```yaml
121
+ # Dangerous patterns
122
+ allowed_origins: "*" # CORS wildcard
123
+ allowed_hosts: "any" # Bypass host validation
124
+ log_level: "none" # Disable security logging
125
+ password_policy: "disabled" # No password requirements
126
+ ```
127
+
128
+ **Detection**: String configs that accept wildcards or "disable" keywords.
129
+
130
+ ## Combination Hazards
131
+
132
+ ### Conflicting Settings
133
+
134
+ ```yaml
135
+ # Both true - which wins?
136
+ require_authentication: true
137
+ allow_anonymous_access: true
138
+
139
+ # Both specified - conflict
140
+ session_cookie_secure: true
141
+ force_http: true # HTTP can't use Secure cookies
142
+
143
+ # Mutually exclusive
144
+ encryption_key: "..."
145
+ encryption_disabled: true
146
+ ```
147
+
148
+ ### Precedence Confusion
149
+
150
+ ```yaml
151
+ # In config file
152
+ verify_ssl: true
153
+
154
+ # But overrideable by environment?
155
+ VERIFY_SSL=false # Which wins?
156
+
157
+ # And command line?
158
+ --no-verify-ssl # Now there are three sources
159
+ ```
160
+
161
+ **Fix**: Document precedence clearly; warn on conflicts; fail on contradictions.
162
+
163
+ ## Environment Variable Hazards
164
+
165
+ ### Sensitive Values in Environment
166
+
167
+ ```bash
168
+ # Common but problematic
169
+ export DATABASE_PASSWORD="secret"
170
+ export API_KEY="sk_live_xxx"
171
+
172
+ # Risks:
173
+ # - Visible in process listings (ps aux)
174
+ # - Inherited by child processes
175
+ # - Logged in error dumps
176
+ # - Visible in container inspection
177
+ ```
178
+
179
+ ### Override Attacks
180
+
181
+ ```python
182
+ # Application trusts environment
183
+ debug = os.environ.get("DEBUG", "false") == "true"
184
+
185
+ # Attacker with environment access:
186
+ export DEBUG=true # Enables verbose logging of secrets
187
+ ```
188
+
189
+ **Detection**: Security settings controllable via environment without validation.
190
+
191
+ ## Path Traversal via Config
192
+
193
+ ### Unrestricted Path Configuration
194
+
195
+ ```yaml
196
+ # User-controlled paths
197
+ log_file: "../../../etc/passwd"
198
+ upload_dir: "/etc/nginx/conf.d/"
199
+ template_dir: "../../../etc/shadow"
200
+
201
+ # Even "read-only" paths can leak secrets
202
+ config_include: "/etc/shadow"
203
+ certificate_file: "/proc/self/environ"
204
+ ```
205
+
206
+ **Fix**: Validate paths; restrict to allowed directories; resolve and check.
207
+
208
+ ## Unvalidated Constructor Parameters
209
+
210
+ Configuration/parameter classes that accept security-relevant values without validation create "time bombs" - the insecure value is accepted silently at construction, then explodes later during use.
211
+
212
+ ### Algorithm Selection Without Allowlist
213
+
214
+ ```php
215
+ // DANGEROUS: Accepts any string including weak algorithms
216
+ readonly class ServerConfig {
217
+ public function __construct(
218
+ public string $hashAlgo = 'sha256', // Accepts 'md5', 'crc32', 'adler32'
219
+ public string $cipher = 'aes-256-gcm', // Accepts 'des', 'rc4'
220
+ ) {}
221
+ }
222
+
223
+ // Caller can pass insecure values:
224
+ new ServerConfig(hashAlgo: 'md5'); // Silently accepted!
225
+ ```
226
+
227
+ **Detection**: Constructor parameters named `algo`, `algorithm`, `hash*`, `cipher`, `mode`, `*_type` that accept strings without validation.
228
+
229
+ **Fix**: Validate against an explicit allowlist at construction:
230
+
231
+ ```php
232
+ public function __construct(public string $hashAlgo = 'sha256') {
233
+ if (!in_array($hashAlgo, ['sha256', 'sha384', 'sha512'], true)) {
234
+ throw new InvalidArgumentException("Disallowed hash algorithm: $hashAlgo");
235
+ }
236
+ }
237
+ ```
238
+
239
+ ### Timing Parameters Without Bounds
240
+
241
+ ```php
242
+ // DANGEROUS: No minimum or maximum bounds
243
+ readonly class AuthConfig {
244
+ public function __construct(
245
+ public int $otpLifetime = 120, // Accepts 0 (immediate expiry? infinite?)
246
+ public int $sessionTimeout = 3600, // Accepts -1 (what does this mean?)
247
+ public int $maxRetries = 5, // Accepts 0 (no retries? unlimited?)
248
+ ) {}
249
+ }
250
+
251
+ // All of these are silently accepted:
252
+ new AuthConfig(otpLifetime: 0); // OTP always expired or never expires?
253
+ new AuthConfig(otpLifetime: 999999); // ~11 days - replay attacks!
254
+ new AuthConfig(maxRetries: -1); // Unlimited retries = brute force
255
+ ```
256
+
257
+ **Detection**: Numeric constructor parameters for `*lifetime`, `*timeout`, `*ttl`, `*duration`, `max_*`, `min_*`, `*_seconds`, `*_attempts` without range validation.
258
+
259
+ **Fix**: Enforce both minimum AND maximum bounds:
260
+
261
+ ```php
262
+ public function __construct(public int $otpLifetime = 120) {
263
+ if ($otpLifetime < 2) {
264
+ throw new InvalidArgumentException("OTP lifetime too short (min: 2 seconds)");
265
+ }
266
+ if ($otpLifetime > 300) {
267
+ throw new InvalidArgumentException("OTP lifetime too long (max: 300 seconds)");
268
+ }
269
+ }
270
+ ```
271
+
272
+ ### Hostname/URL Parameters Without Validation
273
+
274
+ ```php
275
+ // DANGEROUS: No format validation
276
+ readonly class NetworkConfig {
277
+ public function __construct(
278
+ public string $hostname = 'localhost', // Accepts anything
279
+ public string $callbackUrl = '', // Accepts malformed URLs
280
+ ) {}
281
+ }
282
+
283
+ // Silently accepted:
284
+ new NetworkConfig(hostname: '../../../etc/passwd');
285
+ new NetworkConfig(hostname: 'localhost; rm -rf /');
286
+ new NetworkConfig(callbackUrl: 'javascript:alert(1)');
287
+ ```
288
+
289
+ **Detection**: String constructor parameters named `host`, `hostname`, `domain`, `*_url`, `*_uri`, `endpoint`, `callback*` without validation.
290
+
291
+ **Fix**: Validate format at construction:
292
+
293
+ ```php
294
+ public function __construct(public string $hostname = 'localhost') {
295
+ if (!filter_var($hostname, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME)) {
296
+ throw new InvalidArgumentException("Invalid hostname: $hostname");
297
+ }
298
+ }
299
+ ```
300
+
301
+ ### The "Sensible Default" Trap
302
+
303
+ Having a secure default does NOT protect you - callers can override it:
304
+
305
+ ```php
306
+ // Default is secure...
307
+ public function __construct(
308
+ public string $hashAlgo = 'sha256' // Good default!
309
+ ) {}
310
+
311
+ // ...but callers can still shoot themselves
312
+ $config = new Config(hashAlgo: 'md5'); // Oops
313
+ ```
314
+
315
+ **The rule**: If a parameter affects security, validate it. Defaults only help developers who don't specify a value; validation protects everyone.
316
+
317
+ ## Configuration Validation Checklist
318
+
319
+ For configuration schemas, verify:
320
+
321
+ - [ ] **Zero/empty rejected**: Numeric security params require positive values
322
+ - [ ] **No empty passwords/keys**: Empty string authentication forbidden
323
+ - [ ] **No security-disabling booleans**: Or require confirmation/separate config
324
+ - [ ] **No magic values**: -1 and wildcards have defined, safe meanings
325
+ - [ ] **Conflict detection**: Contradictory settings produce errors
326
+ - [ ] **Precedence documented**: Clear order when multiple sources exist
327
+ - [ ] **Path validation**: User-provided paths restricted to safe directories
328
+ - [ ] **Type strictness**: "false" string not silently converted to boolean
329
+ - [ ] **Deprecation warnings**: Insecure legacy options warn loudly
330
+ - [ ] **Algorithm allowlist**: Crypto algorithm params validated against safe options
331
+ - [ ] **Timing bounds**: Lifetime/timeout params have both min AND max limits
332
+ - [ ] **Hostname/URL validation**: Network addresses validated at construction
333
+ - [ ] **Constructor validation**: All security params validated, not just defaulted
@@ -0,0 +1,190 @@
1
+ # Cryptographic API Footguns
2
+
3
+ Detailed patterns for identifying misuse-prone cryptographic interfaces.
4
+
5
+ ## Algorithm Selection Anti-Patterns
6
+
7
+ ### The "alg" Header Attack (JWT)
8
+
9
+ The JSON Web Token standard allows the token itself to specify which algorithm to use for verification. This is catastrophically wrong.
10
+
11
+ **Attack 1: "none" algorithm**
12
+ ```json
13
+ {"alg": "none", "typ": "JWT"}
14
+ ```
15
+ Many libraries accept this and skip signature verification entirely.
16
+
17
+ **Attack 2: Algorithm confusion (RS256 → HS256)**
18
+ - Server expects RSA signature, uses public key for verification
19
+ - Attacker changes algorithm to HMAC, uses *public key* as HMAC secret
20
+ - Public key is public, so attacker can forge valid signatures
21
+
22
+ **Root cause**: Trusting untrusted input to select security mechanisms.
23
+
24
+ **Fix**: Never let data dictate algorithm. Use one algorithm, hardcoded.
25
+
26
+ ### Cipher Mode Parameters
27
+
28
+ ```python
29
+ # DANGEROUS: mode is selectable
30
+ def encrypt(plaintext, key, mode="ECB"): # ECB is never correct
31
+ ...
32
+
33
+ # BAD: accepts any OpenSSL cipher string
34
+ cipher = OpenSSL::Cipher.new(user_selected_cipher)
35
+
36
+ # GOOD: no parameters
37
+ def encrypt(plaintext, key): # internally uses AES-256-GCM
38
+ ...
39
+ ```
40
+
41
+ **Detection**: Parameters named `mode`, `cipher`, `algorithm`, `hash_type`
42
+
43
+ ### Hash Algorithm Downgrade
44
+
45
+ ```php
46
+ // PHP's hash() accepts ANY algorithm
47
+ hash("crc32", $password); // Valid call, terrible security
48
+ hash("md5", $password); // Valid call, broken security
49
+ hash("sha256", $password); // Valid call, still wrong for passwords
50
+
51
+ // Password functions limit choices
52
+ password_hash($password, PASSWORD_ARGON2ID); // Better
53
+ ```
54
+
55
+ **Pattern**: APIs that accept algorithm as string instead of restricting to safe subset.
56
+
57
+ ## Key/Nonce/IV Confusion
58
+
59
+ ### Indistinguishable Byte Arrays
60
+
61
+ ```go
62
+ // All three are just []byte - easy to swap
63
+ func Encrypt(plaintext, key, nonce []byte) []byte
64
+
65
+ // Easy mistakes:
66
+ Encrypt(plaintext, nonce, key) // Swapped - compiles fine
67
+ Encrypt(plaintext, key, key) // Reused key as nonce - compiles fine
68
+ ```
69
+
70
+ **Fix**: Distinct types
71
+
72
+ ```go
73
+ type EncryptionKey [32]byte
74
+ type Nonce [24]byte
75
+
76
+ func Encrypt(plaintext []byte, key EncryptionKey, nonce Nonce) []byte
77
+ // Now type system catches swaps
78
+ ```
79
+
80
+ ### Nonce Reuse
81
+
82
+ ```python
83
+ # DANGEROUS: nonce parameter with no guidance
84
+ def encrypt(plaintext, key, nonce):
85
+ ...
86
+
87
+ # Developer "simplifies" by reusing:
88
+ nonce = b'\x00' * 12
89
+ encrypt(msg1, key, nonce)
90
+ encrypt(msg2, key, nonce) # Catastrophic with GCM/ChaCha
91
+ ```
92
+
93
+ **Fix**: Generate nonces internally, return them with ciphertext.
94
+
95
+ ## Comparison Footguns
96
+
97
+ ### Timing-Safe vs. Regular Comparison
98
+
99
+ ```python
100
+ # These look identical but have different security properties
101
+ if computed_mac == expected_mac: # VULNERABLE: timing attack
102
+ if hmac.compare_digest(computed_mac, expected_mac): # Safe
103
+ ```
104
+
105
+ **The problem**: Developers don't know to use special comparison. Default string equality is vulnerable.
106
+
107
+ **Detection**: Direct equality checks on MACs, signatures, hashes, tokens.
108
+
109
+ ### Boolean Confusion
110
+
111
+ ```python
112
+ # Signature verification APIs
113
+ result = verify(signature, message, key)
114
+
115
+ # Some return True/False
116
+ if verify(...): # Must check return value
117
+
118
+ # Some raise exceptions
119
+ verify(...) # Failure = exception, no return to check
120
+
121
+ # Developers mixing these up = vulnerabilities
122
+ ```
123
+
124
+ ## Padding Oracle Enablers
125
+
126
+ ### Raw Decryption APIs
127
+
128
+ ```python
129
+ # DANGEROUS: returns plaintext even if padding invalid
130
+ def decrypt(ciphertext, key):
131
+ # ... decrypt ...
132
+ return unpad(plaintext) # Throws on bad padding
133
+
134
+ # Attacker can distinguish:
135
+ # - Valid padding → success
136
+ # - Invalid padding → exception
137
+
138
+ # This distinction enables padding oracle attacks
139
+ ```
140
+
141
+ **Fix**: Decrypt-then-MAC (or authenticated encryption). Never expose padding validity.
142
+
143
+ ### Error Message Differentiation
144
+
145
+ ```
146
+ # DANGEROUS error messages
147
+ "Invalid padding" # Padding oracle signal
148
+ "MAC verification failed" # Different error = oracle
149
+ "Decryption failed" # Good: single error for all failures
150
+ ```
151
+
152
+ ## Key Derivation Footguns
153
+
154
+ ### Using Hashes Instead of KDFs
155
+
156
+ ```python
157
+ # DANGEROUS: hash is not a KDF
158
+ key = hashlib.sha256(password.encode()).digest()
159
+
160
+ # Developer reasoning: "SHA-256 is secure"
161
+ # Reality: Fast hash enables brute force
162
+
163
+ # CORRECT: use actual KDF
164
+ key = hashlib.scrypt(password.encode(), salt=salt, n=2**14, r=8, p=1)
165
+ ```
166
+
167
+ ### Password Storage Misuse
168
+
169
+ ```python
170
+ # DANGEROUS: encryption is not password storage
171
+ encrypted_password = encrypt(password, master_key)
172
+ # Compromise of master_key = all passwords exposed
173
+
174
+ # CORRECT: one-way hash with salt
175
+ hashed_password = argon2.hash(password)
176
+ # No key to steal; each password salted differently
177
+ ```
178
+
179
+ ## Safe API Design Checklist
180
+
181
+ For cryptographic APIs, verify:
182
+
183
+ - [ ] **No algorithm selection**: One safe algorithm, hardcoded
184
+ - [ ] **No mode selection**: GCM/ChaCha20-Poly1305 only, no ECB/CBC
185
+ - [ ] **Distinct types**: Keys, nonces, ciphertexts are different types
186
+ - [ ] **Internal nonce generation**: Don't require developer to provide
187
+ - [ ] **Authenticated encryption**: Encrypt-then-MAC or AEAD built in
188
+ - [ ] **Constant-time comparison**: Default or only comparison method
189
+ - [ ] **Uniform errors**: Same error for all decryption failures
190
+ - [ ] **KDF for passwords**: Argon2/scrypt/bcrypt, not raw hashes