@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,240 @@
1
+ # Semgrep Rule Creation Workflow
2
+
3
+ Detailed workflow for creating production-quality Semgrep rules.
4
+
5
+ ## Step 1: Analyze the Problem
6
+
7
+ Before writing any code:
8
+
9
+ 1. **Fetch external documentation**: See [Documentation](../SKILL.md#documentation) for required reading
10
+ 2. **Understand the exact bug pattern and explain the bug for a junior developer**: What vulnerability, issue or pattern should be detected?
11
+ 3. **Identify the target language**: What is specific about the bug and that language?
12
+ 4. **Determine the approach**:
13
+ - **Pattern matching**: Syntactic patterns without data flow
14
+ - **Taint mode**: Data flows from untrusted source to dangerous sink
15
+
16
+ ### When to Use Taint Mode
17
+
18
+ Taint mode is a powerful feature in Semgrep that can track the flow of data from one location to another. By using taint mode, you can:
19
+
20
+ - **Track data flow across multiple variables**: Trace how data moves across different variables, functions, components, and identify insecure flow paths (e.g., situations where a specific sanitizer is not used).
21
+ - **Find injection vulnerabilities**: Identify injection vulnerabilities such as SQL injection, command injection, and XSS attacks.
22
+ - **Write simple and resilient Semgrep rules**: Simplify rules that are resilient to code patterns nested in if statements, loops, and other structures.
23
+
24
+ ## Step 2: Write Tests First
25
+
26
+ **Why test-first?** Writing tests before the rule forces you to think about both vulnerable AND safe cases. Rules written without tests often have hidden false positives (matching safe cases) or false negatives (missing vulnerable variants). Tests make these visible immediately.
27
+
28
+ Create directory and test file with annotations (`# ruleid:`, `# ok:` only). See [quick-reference.md]({baseDir}/references/quick-reference.md#test-file-annotations) for full syntax.
29
+
30
+ ### Directory Structure
31
+
32
+ ```
33
+ <rule-id>/
34
+ ├── <rule-id>.yaml # Semgrep rule
35
+ └── <rule-id>.<ext> # Test file with ruleid/ok annotations
36
+ ```
37
+
38
+ **CRITICAL**:
39
+ 1. The comment (`# ruleid:` or `# ok:` ) must be on the line IMMEDIATELY BEFORE the code. Semgrep reports findings on the line after the annotation.
40
+ 2. The comment must contain ONLY the comment marker and annotation (e.g., `# ruleid: my-rule`). No other text, comments, or code on the same line.
41
+
42
+ ### Test Case Design
43
+
44
+ You must include test cases for:
45
+ - Clear vulnerable cases (must match)
46
+ - Clear safe cases (must not match)
47
+ - Edge cases and variations
48
+ - Different coding styles
49
+ - Sanitized/validated input (must not match)
50
+ - Unrelated code (must not match) - normal code with no relation to the rule's target pattern
51
+ - Nested structures (e.g., inside if statements, loops, try/catch blocks, callbacks)
52
+
53
+ ## Step 3: Analyze AST Structure
54
+
55
+ **Why analyze AST?** Semgrep matches against the AST, not raw text. Code that looks similar may parse differently (e.g., `foo.bar()` vs `foo().bar`). The AST dump shows exactly what Semgrep sees, preventing patterns that fail due to unexpected tree structure. Understanding how exactly Semgrep parses code is crucial for writing precise patterns.
56
+
57
+ ```bash
58
+ semgrep --dump-ast -l <language> <rule-id>.<ext>
59
+ ```
60
+
61
+ Example output helps understand:
62
+ - How function calls are represented
63
+ - How variables are bound
64
+ - How control flow is structured
65
+
66
+ ## Step 4: Write the Rule
67
+
68
+ Choose the appropriate pattern operators and write the rule.
69
+
70
+ For pattern operator syntax (basic matching, scope operators, metavariable filters, focus), see [quick-reference.md](quick-reference.md).
71
+
72
+ ### Validate and Test
73
+
74
+ #### Validate YAML Syntax
75
+
76
+ ```bash
77
+ semgrep --validate --config <rule-id>.yaml
78
+ ```
79
+
80
+ #### Run Tests
81
+
82
+ ```bash
83
+ cd <rule-directory>
84
+ semgrep --test --config <rule-id>.yaml <rule-id>.<ext>
85
+ ```
86
+
87
+ #### Expected Output
88
+
89
+ ```
90
+ 1/1: ✓ All tests passed
91
+ ```
92
+
93
+ #### Debug Failures
94
+
95
+ If tests fail, check:
96
+ 1. **Missed lines**: Rule didn't match when it should
97
+ - Pattern too specific
98
+ - Missing pattern variant
99
+ 2. **Incorrect lines**: Rule matched when it shouldn't
100
+ - Pattern too broad
101
+ - Need `pattern-not` exclusion
102
+
103
+ #### Debug Taint Mode Rules
104
+
105
+ ```bash
106
+ semgrep --dataflow-traces -f <rule-id>.yaml <rule-id>.<ext>
107
+ ```
108
+
109
+ Shows:
110
+ - Source locations
111
+ - Sink locations
112
+ - Data flow path
113
+ - Why taint didn't propagate (if applicable)
114
+
115
+ ## Step 5: Iterate Until Tests Pass
116
+ Work on writing Semgrep rule (patterns) iteratively to ensure the Semgrep rule works correctly.
117
+
118
+ Each time when you introduce any changes, test Semgrep rule:
119
+
120
+ ```bash
121
+ semgrep --test --config <rule-id>.yaml <rule-id>.<ext>
122
+ ```
123
+
124
+ For debugging taint mode rules:
125
+ ```bash
126
+ semgrep --dataflow-traces -f <rule-id>.yaml <rule-id>.<ext>
127
+ ```
128
+
129
+ **Verification checkpoint**: Output MUST show "All tests passed". **Only proceed when validation passes**.
130
+
131
+
132
+ **Verification checkpoint**: Proceed to Step 6: Optimize the Rule when:
133
+ - "All tests passed"
134
+ - No "missed lines" (false negatives)
135
+ - No "incorrect lines" (false positives)
136
+
137
+ ### Common Fixes
138
+
139
+ | Problem | Solution |
140
+ |---------|----------|
141
+ | Too many matches | Add `pattern-not` exclusions |
142
+ | Missing matches | Add `pattern-either` variants |
143
+ | Wrong line matched | Adjust `focus-metavariable` |
144
+ | Taint not flowing | Check sanitizers aren't too broad |
145
+ | Taint false positive | Add sanitizer pattern |
146
+
147
+ ## Step 6: Optimize the Rule
148
+
149
+ After all tests pass, remove redundant patterns (quote variants, ellipsis subsets, redundant patterns).
150
+
151
+ ### Semgrep Pattern Equivalences
152
+
153
+ Semgrep treats certain patterns as equivalent:
154
+
155
+ | Written | Also Matches | Reason |
156
+ |---------|--------------|--------|
157
+ | `"string"` | `'string'` | Quote style normalized (in languages where both are equivalent) |
158
+ | `func(...)` | `func()`, `func(a)`, `func(a,b)` | Ellipsis matches zero or more |
159
+ | `func($X, ...)` | `func($X)`, `func($X, a, b)` | Trailing ellipsis is optional |
160
+
161
+ ### Common Redundancies to Remove
162
+
163
+ **1. Quote Variants** (depends on the language)
164
+
165
+ Before:
166
+ ```yaml
167
+ pattern-either:
168
+ - pattern: hashlib.new("md5", ...)
169
+ - pattern: hashlib.new('md5', ...)
170
+ ```
171
+
172
+ After:
173
+ ```yaml
174
+ pattern-either:
175
+ - pattern: hashlib.new("md5", ...)
176
+ ```
177
+
178
+ **2. Ellipsis Subsets**
179
+
180
+ Before:
181
+ ```yaml
182
+ pattern-either:
183
+ - pattern: dangerous($X, ...)
184
+ - pattern: dangerous($X)
185
+ - pattern: dangerous($X, $Y)
186
+ ```
187
+
188
+ After:
189
+ ```yaml
190
+ pattern: dangerous($X, ...)
191
+ ```
192
+
193
+ **3. Consolidate with Metavariables**
194
+
195
+ Before:
196
+ ```yaml
197
+ pattern-either:
198
+ - pattern: md5($X)
199
+ - pattern: sha1($X)
200
+ - pattern: sha256($X)
201
+ ```
202
+
203
+ After:
204
+ ```yaml
205
+ patterns:
206
+ - pattern: $FUNC($X)
207
+ - metavariable-regex:
208
+ metavariable: $FUNC
209
+ regex: ^(md5|sha1|sha256)$
210
+ ```
211
+
212
+ ### Optimization Checklist
213
+
214
+ 1. Remove patterns differing only in quote style
215
+ 2. Remove patterns that are subsets of `...` patterns
216
+ 3. Consolidate similar patterns using metavariable-regex
217
+ 4. Remove duplicate patterns in pattern-either
218
+ 5. Simplify nested pattern-either when possible
219
+ 6. Replace complex regex patterns with metavariable-comparison
220
+ 7. **Re-run tests after each optimization**
221
+
222
+ ### Verify After Optimization
223
+
224
+ ```bash
225
+ semgrep --test --config <rule-id>.yaml <rule-id>.<ext>
226
+ ```
227
+
228
+ **CRITICAL**: Always re-run tests after optimization. Some "redundant" patterns may actually be necessary due to AST structure differences. If any test fails, revert the optimization that caused it.
229
+
230
+ **Task complete ONLY when**: All tests pass after optimization.
231
+
232
+
233
+ ## Step 7: Final Run
234
+ Run the Semgrep rule you created using: `semgrep --config <rule-id>.yaml <rule-id>.<ext>`.
235
+
236
+ Ensure that message:
237
+ 1. Contains a short and concise explanation of the matched pattern
238
+ 2. Has no uninterpolated metavariables (e.g., $OP, $VAR). All metavariables referenced in the message must be captured by the pattern so they interpolate to actual code.
239
+
240
+ Fix any message issues and re-run that Semgrep rule after each fix.
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: session-logs
3
+ description: Search and analyze your own session logs (older/parent conversations) using jq.
4
+ metadata: { "otto": { "emoji": "📜", "requires": { "bins": ["jq", "rg"] } } }
5
+ ---
6
+
7
+ # session-logs
8
+
9
+ Search your complete conversation history stored in session JSONL files. Use this when a user references older/parent conversations or asks what was said before.
10
+
11
+ ## Trigger
12
+
13
+ Use this skill when the user asks about prior chats, parent conversations, or historical context that isn't in memory files.
14
+
15
+ ## Location
16
+
17
+ Session logs live at: `~/.otto/agents/<agentId>/sessions/` (use the `agent=<id>` value from the system prompt Runtime line).
18
+
19
+ - **`sessions.json`** - Index mapping session keys to session IDs
20
+ - **`<session-id>.jsonl`** - Full conversation transcript per session
21
+
22
+ ## Structure
23
+
24
+ Each `.jsonl` file contains messages with:
25
+
26
+ - `type`: "session" (metadata) or "message"
27
+ - `timestamp`: ISO timestamp
28
+ - `message.role`: "user", "assistant", or "toolResult"
29
+ - `message.content[]`: Text, thinking, or tool calls (filter `type=="text"` for human-readable content)
30
+ - `message.usage.cost.total`: Cost per response
31
+
32
+ ## Common Queries
33
+
34
+ ### List all sessions by date and size
35
+
36
+ ```bash
37
+ for f in ~/.otto/agents/<agentId>/sessions/*.jsonl; do
38
+ date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1)
39
+ size=$(ls -lh "$f" | awk '{print $5}')
40
+ echo "$date $size $(basename $f)"
41
+ done | sort -r
42
+ ```
43
+
44
+ ### Find sessions from a specific day
45
+
46
+ ```bash
47
+ for f in ~/.otto/agents/<agentId>/sessions/*.jsonl; do
48
+ head -1 "$f" | jq -r '.timestamp' | grep -q "2026-01-06" && echo "$f"
49
+ done
50
+ ```
51
+
52
+ ### Extract user messages from a session
53
+
54
+ ```bash
55
+ jq -r 'select(.message.role == "user") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl
56
+ ```
57
+
58
+ ### Search for keyword in assistant responses
59
+
60
+ ```bash
61
+ jq -r 'select(.message.role == "assistant") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl | rg -i "keyword"
62
+ ```
63
+
64
+ ### Get total cost for a session
65
+
66
+ ```bash
67
+ jq -s '[.[] | .message.usage.cost.total // 0] | add' <session>.jsonl
68
+ ```
69
+
70
+ ### Daily cost summary
71
+
72
+ ```bash
73
+ for f in ~/.otto/agents/<agentId>/sessions/*.jsonl; do
74
+ date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1)
75
+ cost=$(jq -s '[.[] | .message.usage.cost.total // 0] | add' "$f")
76
+ echo "$date $cost"
77
+ done | awk '{a[$1]+=$2} END {for(d in a) print d, "$"a[d]}' | sort -r
78
+ ```
79
+
80
+ ### Count messages and tokens in a session
81
+
82
+ ```bash
83
+ jq -s '{
84
+ messages: length,
85
+ user: [.[] | select(.message.role == "user")] | length,
86
+ assistant: [.[] | select(.message.role == "assistant")] | length,
87
+ first: .[0].timestamp,
88
+ last: .[-1].timestamp
89
+ }' <session>.jsonl
90
+ ```
91
+
92
+ ### Tool usage breakdown
93
+
94
+ ```bash
95
+ jq -r '.message.content[]? | select(.type == "toolCall") | .name' <session>.jsonl | sort | uniq -c | sort -rn
96
+ ```
97
+
98
+ ### Search across ALL sessions for a phrase
99
+
100
+ ```bash
101
+ rg -l "phrase" ~/.otto/agents/<agentId>/sessions/*.jsonl
102
+ ```
103
+
104
+ ## Tips
105
+
106
+ - Sessions are append-only JSONL (one JSON object per line)
107
+ - Large sessions can be several MB - use `head`/`tail` for sampling
108
+ - The `sessions.json` index maps chat providers (discord, whatsapp, etc.) to session IDs
109
+ - Deleted sessions have `.deleted.<timestamp>` suffix
110
+
111
+ ## Fast text-only hint (low noise)
112
+
113
+ ```bash
114
+ jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.otto/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword'
115
+ ```
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "sharp-edges",
3
+ "version": "1.0.0",
4
+ "description": "Identify error-prone APIs, dangerous configurations, and footgun designs that enable security mistakes",
5
+ "author": {
6
+ "name": "Trail of Bits",
7
+ "email": "opensource@trailofbits.com",
8
+ "url": "https://github.com/trailofbits"
9
+ }
10
+ }
@@ -0,0 +1,48 @@
1
+ # Sharp Edges
2
+
3
+ Identifies error-prone APIs, dangerous configurations, and footgun designs that enable security mistakes through developer confusion, laziness, or malice.
4
+
5
+ ## When to Use
6
+
7
+ - Reviewing API designs for security-relevant interfaces
8
+ - Auditing configuration schemas that expose security choices
9
+ - Evaluating cryptographic library ergonomics
10
+ - Assessing authentication/authorization APIs
11
+ - Any code review where developers make security-critical decisions
12
+
13
+ ## What It Does
14
+
15
+ Analyzes code and designs through the lens of three adversaries:
16
+
17
+ 1. **The Scoundrel**: Can a malicious developer or attacker disable security via configuration?
18
+ 2. **The Lazy Developer**: Will copy-pasting the first example lead to insecure code?
19
+ 3. **The Confused Developer**: Can parameters be swapped without type errors?
20
+
21
+ ## Core Principle
22
+
23
+ **The pit of success**: Secure usage should be the path of least resistance. If developers must read documentation carefully or remember special rules to avoid vulnerabilities, the API has failed.
24
+
25
+ ## Installation
26
+
27
+ ```
28
+ /plugin install trailofbits/skills/plugins/sharp-edges
29
+ ```
30
+
31
+ ## Sharp Edge Categories
32
+
33
+ The skill identifies six categories of misuse-prone designs:
34
+
35
+ | Category | Example |
36
+ |----------|---------|
37
+ | Algorithm Selection | JWT `alg: none` attack; PHP `hash("crc32", $password)` |
38
+ | Dangerous Defaults | `session_timeout: 0` meaning infinite; empty password accepted |
39
+ | Primitive vs. Semantic APIs | `encrypt(msg, bytes, bytes)` where key/nonce can be swapped |
40
+ | Configuration Cliffs | `verify_ssl: false` disables all certificate validation |
41
+ | Silent Failures | Verification returns `False` instead of throwing; ignored return values |
42
+ | Stringly-Typed Security | Permissions as comma-separated strings; SQL from concatenation |
43
+
44
+ ## Related Skills
45
+
46
+ - [constant-time-analysis](../constant-time-analysis) - Detect timing side-channels in cryptographic code
47
+ - [differential-review](../differential-review) - Security-focused code change review
48
+ - [audit-context-building](../audit-context-building) - Deep architectural analysis before auditing