@elizaos/skills 2.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/README.md +126 -0
  2. package/package.json +53 -0
  3. package/skills/1password/SKILL.md +70 -0
  4. package/skills/1password/references/cli-examples.md +29 -0
  5. package/skills/1password/references/get-started.md +17 -0
  6. package/skills/apple-notes/SKILL.md +77 -0
  7. package/skills/apple-reminders/SKILL.md +96 -0
  8. package/skills/bear-notes/SKILL.md +107 -0
  9. package/skills/bird/SKILL.md +224 -0
  10. package/skills/blogwatcher/SKILL.md +69 -0
  11. package/skills/blucli/SKILL.md +47 -0
  12. package/skills/bluebubbles/SKILL.md +131 -0
  13. package/skills/camsnap/SKILL.md +45 -0
  14. package/skills/canvas/SKILL.md +203 -0
  15. package/skills/clawhub/SKILL.md +77 -0
  16. package/skills/coding-agent/SKILL.md +284 -0
  17. package/skills/discord/SKILL.md +578 -0
  18. package/skills/eightctl/SKILL.md +50 -0
  19. package/skills/food-order/SKILL.md +48 -0
  20. package/skills/gemini/SKILL.md +43 -0
  21. package/skills/gifgrep/SKILL.md +79 -0
  22. package/skills/github/SKILL.md +77 -0
  23. package/skills/gog/SKILL.md +116 -0
  24. package/skills/goplaces/SKILL.md +52 -0
  25. package/skills/healthcheck/SKILL.md +245 -0
  26. package/skills/himalaya/SKILL.md +257 -0
  27. package/skills/himalaya/references/configuration.md +184 -0
  28. package/skills/himalaya/references/message-composition.md +199 -0
  29. package/skills/imsg/SKILL.md +74 -0
  30. package/skills/local-places/SERVER_README.md +101 -0
  31. package/skills/local-places/SKILL.md +102 -0
  32. package/skills/local-places/pyproject.toml +21 -0
  33. package/skills/local-places/src/local_places/__init__.py +2 -0
  34. package/skills/local-places/src/local_places/google_places.py +314 -0
  35. package/skills/local-places/src/local_places/main.py +65 -0
  36. package/skills/local-places/src/local_places/schemas.py +107 -0
  37. package/skills/mcporter/SKILL.md +61 -0
  38. package/skills/model-usage/SKILL.md +69 -0
  39. package/skills/model-usage/references/codexbar-cli.md +33 -0
  40. package/skills/model-usage/scripts/model_usage.py +310 -0
  41. package/skills/nano-banana-pro/SKILL.md +58 -0
  42. package/skills/nano-banana-pro/scripts/generate_image.py +184 -0
  43. package/skills/nano-pdf/SKILL.md +38 -0
  44. package/skills/notion/SKILL.md +172 -0
  45. package/skills/obsidian/SKILL.md +81 -0
  46. package/skills/openai-image-gen/SKILL.md +89 -0
  47. package/skills/openai-image-gen/scripts/gen.py +240 -0
  48. package/skills/openai-whisper/SKILL.md +38 -0
  49. package/skills/openai-whisper-api/SKILL.md +52 -0
  50. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  51. package/skills/openhue/SKILL.md +51 -0
  52. package/skills/oracle/SKILL.md +125 -0
  53. package/skills/ordercli/SKILL.md +78 -0
  54. package/skills/peekaboo/SKILL.md +190 -0
  55. package/skills/sag/SKILL.md +87 -0
  56. package/skills/security-ask-questions-if-underspecified/.claude-plugin/plugin.json +10 -0
  57. package/skills/security-ask-questions-if-underspecified/README.md +24 -0
  58. package/skills/security-ask-questions-if-underspecified/skills/ask-questions-if-underspecified/SKILL.md +85 -0
  59. package/skills/security-audit-context-building/.claude-plugin/plugin.json +10 -0
  60. package/skills/security-audit-context-building/README.md +58 -0
  61. package/skills/security-audit-context-building/commands/audit-context.md +21 -0
  62. package/skills/security-audit-context-building/skills/audit-context-building/SKILL.md +297 -0
  63. package/skills/security-audit-context-building/skills/audit-context-building/resources/COMPLETENESS_CHECKLIST.md +47 -0
  64. package/skills/security-audit-context-building/skills/audit-context-building/resources/FUNCTION_MICRO_ANALYSIS_EXAMPLE.md +355 -0
  65. package/skills/security-audit-context-building/skills/audit-context-building/resources/OUTPUT_REQUIREMENTS.md +71 -0
  66. package/skills/security-building-secure-contracts/.claude-plugin/plugin.json +10 -0
  67. package/skills/security-building-secure-contracts/README.md +241 -0
  68. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/SKILL.md +284 -0
  69. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +405 -0
  70. package/skills/security-building-secure-contracts/skills/audit-prep-assistant/SKILL.md +409 -0
  71. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/SKILL.md +329 -0
  72. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +722 -0
  73. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/SKILL.md +218 -0
  74. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/ASSESSMENT_CRITERIA.md +355 -0
  75. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/EXAMPLE_REPORT.md +248 -0
  76. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/REPORT_FORMAT.md +33 -0
  77. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/SKILL.md +334 -0
  78. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +740 -0
  79. package/skills/security-building-secure-contracts/skills/guidelines-advisor/SKILL.md +252 -0
  80. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/ASSESSMENT_AREAS.md +329 -0
  81. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/DELIVERABLES.md +118 -0
  82. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/EXAMPLE_REPORT.md +298 -0
  83. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/SKILL.md +161 -0
  84. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/EXAMPLE_REPORT.md +279 -0
  85. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/WORKFLOW_STEPS.md +132 -0
  86. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/SKILL.md +389 -0
  87. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +669 -0
  88. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/SKILL.md +298 -0
  89. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +791 -0
  90. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/SKILL.md +362 -0
  91. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/ASSESSMENT_CATEGORIES.md +571 -0
  92. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/REPORT_TEMPLATES.md +141 -0
  93. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/SKILL.md +388 -0
  94. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +595 -0
  95. package/skills/security-burpsuite-project-parser/.claude-plugin/plugin.json +10 -0
  96. package/skills/security-burpsuite-project-parser/README.md +103 -0
  97. package/skills/security-burpsuite-project-parser/commands/burp-search.md +18 -0
  98. package/skills/security-burpsuite-project-parser/skills/SKILL.md +358 -0
  99. package/skills/security-burpsuite-project-parser/skills/scripts/burp-search.sh +99 -0
  100. package/skills/security-claude-in-chrome-troubleshooting/.claude-plugin/plugin.json +8 -0
  101. package/skills/security-claude-in-chrome-troubleshooting/README.md +31 -0
  102. package/skills/security-claude-in-chrome-troubleshooting/skills/claude-in-chrome-troubleshooting/SKILL.md +251 -0
  103. package/skills/security-constant-time-analysis/.claude-plugin/plugin.json +9 -0
  104. package/skills/security-constant-time-analysis/README.md +381 -0
  105. package/skills/security-constant-time-analysis/commands/ct-check.md +20 -0
  106. package/skills/security-constant-time-analysis/ct_analyzer/__init__.py +49 -0
  107. package/skills/security-constant-time-analysis/ct_analyzer/analyzer.py +1284 -0
  108. package/skills/security-constant-time-analysis/ct_analyzer/script_analyzers.py +3081 -0
  109. package/skills/security-constant-time-analysis/ct_analyzer/tests/__init__.py +1 -0
  110. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_analyzer.py +1397 -0
  111. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/bn_excerpt.js +205 -0
  112. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_constant_time.c +181 -0
  113. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.c +74 -0
  114. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.go +78 -0
  115. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.rs +92 -0
  116. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.cs +174 -0
  117. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.java +161 -0
  118. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.kt +181 -0
  119. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.php +140 -0
  120. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.py +252 -0
  121. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.rb +188 -0
  122. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.swift +199 -0
  123. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.ts +154 -0
  124. package/skills/security-constant-time-analysis/pyproject.toml +52 -0
  125. package/skills/security-constant-time-analysis/skills/constant-time-analysis/README.md +90 -0
  126. package/skills/security-constant-time-analysis/skills/constant-time-analysis/SKILL.md +219 -0
  127. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/compiled.md +129 -0
  128. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/javascript.md +136 -0
  129. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/kotlin.md +252 -0
  130. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/php.md +172 -0
  131. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/python.md +179 -0
  132. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/ruby.md +198 -0
  133. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/swift.md +288 -0
  134. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/vm-compiled.md +354 -0
  135. package/skills/security-constant-time-analysis/uv.lock +8 -0
  136. package/skills/security-culture-index/.claude-plugin/plugin.json +8 -0
  137. package/skills/security-culture-index/README.md +79 -0
  138. package/skills/security-culture-index/skills/interpreting-culture-index/SKILL.md +293 -0
  139. package/skills/security-culture-index/skills/interpreting-culture-index/references/anti-patterns.md +255 -0
  140. package/skills/security-culture-index/skills/interpreting-culture-index/references/conversation-starters.md +408 -0
  141. package/skills/security-culture-index/skills/interpreting-culture-index/references/interview-trait-signals.md +253 -0
  142. package/skills/security-culture-index/skills/interpreting-culture-index/references/motivators.md +158 -0
  143. package/skills/security-culture-index/skills/interpreting-culture-index/references/patterns-archetypes.md +147 -0
  144. package/skills/security-culture-index/skills/interpreting-culture-index/references/primary-traits.md +307 -0
  145. package/skills/security-culture-index/skills/interpreting-culture-index/references/secondary-traits.md +228 -0
  146. package/skills/security-culture-index/skills/interpreting-culture-index/references/team-composition.md +148 -0
  147. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/check_deps.py +108 -0
  148. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/__init__.py +20 -0
  149. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/constants.py +122 -0
  150. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/extract.py +187 -0
  151. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/models.py +16 -0
  152. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/opencv_extractor.py +520 -0
  153. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/extract_pdf.py +237 -0
  154. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/pyproject.toml +18 -0
  155. package/skills/security-culture-index/skills/interpreting-culture-index/templates/burnout-report.md +113 -0
  156. package/skills/security-culture-index/skills/interpreting-culture-index/templates/comparison-report.md +103 -0
  157. package/skills/security-culture-index/skills/interpreting-culture-index/templates/hiring-profile.md +127 -0
  158. package/skills/security-culture-index/skills/interpreting-culture-index/templates/individual-report.md +85 -0
  159. package/skills/security-culture-index/skills/interpreting-culture-index/templates/predicted-profile.md +165 -0
  160. package/skills/security-culture-index/skills/interpreting-culture-index/templates/team-report.md +109 -0
  161. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/analyze-team.md +188 -0
  162. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/coach-manager.md +267 -0
  163. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/compare-profiles.md +188 -0
  164. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/define-hiring-profile.md +220 -0
  165. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/detect-burnout.md +206 -0
  166. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/extract-from-pdf.md +121 -0
  167. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interpret-individual.md +183 -0
  168. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interview-debrief.md +234 -0
  169. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/mediate-conflict.md +306 -0
  170. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/plan-onboarding.md +322 -0
  171. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/predict-from-interview.md +250 -0
  172. package/skills/security-differential-review/.claude-plugin/plugin.json +10 -0
  173. package/skills/security-differential-review/README.md +109 -0
  174. package/skills/security-differential-review/commands/diff-review.md +21 -0
  175. package/skills/security-differential-review/skills/differential-review/SKILL.md +220 -0
  176. package/skills/security-differential-review/skills/differential-review/adversarial.md +203 -0
  177. package/skills/security-differential-review/skills/differential-review/methodology.md +234 -0
  178. package/skills/security-differential-review/skills/differential-review/patterns.md +300 -0
  179. package/skills/security-differential-review/skills/differential-review/reporting.md +369 -0
  180. package/skills/security-dwarf-expert/.claude-plugin/plugin.json +10 -0
  181. package/skills/security-dwarf-expert/README.md +38 -0
  182. package/skills/security-dwarf-expert/skills/dwarf-expert/SKILL.md +93 -0
  183. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/coding.md +31 -0
  184. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/dwarfdump.md +50 -0
  185. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/readelf.md +8 -0
  186. package/skills/security-entry-point-analyzer/.claude-plugin/plugin.json +10 -0
  187. package/skills/security-entry-point-analyzer/README.md +74 -0
  188. package/skills/security-entry-point-analyzer/commands/entry-points.md +18 -0
  189. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/SKILL.md +251 -0
  190. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/cosmwasm.md +182 -0
  191. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-aptos.md +107 -0
  192. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-sui.md +87 -0
  193. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solana.md +155 -0
  194. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solidity.md +135 -0
  195. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/ton.md +185 -0
  196. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/vyper.md +141 -0
  197. package/skills/security-firebase-apk-scanner/.claude-plugin/plugin.json +10 -0
  198. package/skills/security-firebase-apk-scanner/README.md +85 -0
  199. package/skills/security-firebase-apk-scanner/commands/scan-apk.md +18 -0
  200. package/skills/security-firebase-apk-scanner/scanner.sh +1408 -0
  201. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/SKILL.md +197 -0
  202. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/references/vulnerabilities.md +803 -0
  203. package/skills/security-fix-review/.claude-plugin/plugin.json +13 -0
  204. package/skills/security-fix-review/README.md +118 -0
  205. package/skills/security-fix-review/commands/fix-review.md +24 -0
  206. package/skills/security-fix-review/skills/fix-review/SKILL.md +264 -0
  207. package/skills/security-fix-review/skills/fix-review/references/bug-detection.md +408 -0
  208. package/skills/security-fix-review/skills/fix-review/references/finding-matching.md +298 -0
  209. package/skills/security-fix-review/skills/fix-review/references/report-parsing.md +398 -0
  210. package/skills/security-insecure-defaults/.claude-plugin/plugin.json +10 -0
  211. package/skills/security-insecure-defaults/README.md +45 -0
  212. package/skills/security-insecure-defaults/skills/insecure-defaults/SKILL.md +117 -0
  213. package/skills/security-insecure-defaults/skills/insecure-defaults/references/examples.md +409 -0
  214. package/skills/security-modern-python/.claude-plugin/plugin.json +10 -0
  215. package/skills/security-modern-python/README.md +58 -0
  216. package/skills/security-modern-python/hooks/hooks.json +16 -0
  217. package/skills/security-modern-python/hooks/intercept-legacy-python.bats +388 -0
  218. package/skills/security-modern-python/hooks/intercept-legacy-python.sh +109 -0
  219. package/skills/security-modern-python/hooks/test_helper.bash +75 -0
  220. package/skills/security-modern-python/skills/modern-python/SKILL.md +333 -0
  221. package/skills/security-modern-python/skills/modern-python/references/dependabot.md +43 -0
  222. package/skills/security-modern-python/skills/modern-python/references/migration-checklist.md +141 -0
  223. package/skills/security-modern-python/skills/modern-python/references/pep723-scripts.md +259 -0
  224. package/skills/security-modern-python/skills/modern-python/references/prek.md +211 -0
  225. package/skills/security-modern-python/skills/modern-python/references/pyproject.md +254 -0
  226. package/skills/security-modern-python/skills/modern-python/references/ruff-config.md +240 -0
  227. package/skills/security-modern-python/skills/modern-python/references/security-setup.md +255 -0
  228. package/skills/security-modern-python/skills/modern-python/references/testing.md +284 -0
  229. package/skills/security-modern-python/skills/modern-python/references/uv-commands.md +200 -0
  230. package/skills/security-modern-python/skills/modern-python/templates/dependabot.yml +36 -0
  231. package/skills/security-modern-python/skills/modern-python/templates/pre-commit-config.yaml +66 -0
  232. package/skills/security-property-based-testing/.claude-plugin/plugin.json +9 -0
  233. package/skills/security-property-based-testing/README.md +47 -0
  234. package/skills/security-property-based-testing/skills/property-based-testing/README.md +88 -0
  235. package/skills/security-property-based-testing/skills/property-based-testing/SKILL.md +109 -0
  236. package/skills/security-property-based-testing/skills/property-based-testing/references/design.md +191 -0
  237. package/skills/security-property-based-testing/skills/property-based-testing/references/generating.md +200 -0
  238. package/skills/security-property-based-testing/skills/property-based-testing/references/libraries.md +130 -0
  239. package/skills/security-property-based-testing/skills/property-based-testing/references/refactoring.md +181 -0
  240. package/skills/security-property-based-testing/skills/property-based-testing/references/reviewing.md +209 -0
  241. package/skills/security-property-based-testing/skills/property-based-testing/references/strategies.md +124 -0
  242. package/skills/semgrep-rule-creator/.claude-plugin/plugin.json +8 -0
  243. package/skills/semgrep-rule-creator/README.md +43 -0
  244. package/skills/semgrep-rule-creator/commands/semgrep-rule.md +26 -0
  245. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/SKILL.md +168 -0
  246. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/quick-reference.md +203 -0
  247. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/workflow.md +240 -0
  248. package/skills/semgrep-rule-variant-creator/.claude-plugin/plugin.json +9 -0
  249. package/skills/semgrep-rule-variant-creator/README.md +86 -0
  250. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/SKILL.md +205 -0
  251. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/applicability-analysis.md +250 -0
  252. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/language-syntax-guide.md +324 -0
  253. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/workflow.md +518 -0
  254. package/skills/session-logs/SKILL.md +115 -0
  255. package/skills/sharp-edges/.claude-plugin/plugin.json +10 -0
  256. package/skills/sharp-edges/README.md +48 -0
  257. package/skills/sharp-edges/skills/sharp-edges/SKILL.md +292 -0
  258. package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +252 -0
  259. package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +274 -0
  260. package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +333 -0
  261. package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +190 -0
  262. package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +205 -0
  263. package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +285 -0
  264. package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +270 -0
  265. package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +263 -0
  266. package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +269 -0
  267. package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +265 -0
  268. package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +245 -0
  269. package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +274 -0
  270. package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +273 -0
  271. package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +272 -0
  272. package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +287 -0
  273. package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +588 -0
  274. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  275. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  276. package/skills/skill-creator/SKILL.md +370 -0
  277. package/skills/skill-creator/license.txt +202 -0
  278. package/skills/skill-creator/scripts/init_skill.py +378 -0
  279. package/skills/skill-creator/scripts/package_skill.py +111 -0
  280. package/skills/skill-creator/scripts/quick_validate.py +101 -0
  281. package/skills/slack/SKILL.md +144 -0
  282. package/skills/songsee/SKILL.md +49 -0
  283. package/skills/sonoscli/SKILL.md +46 -0
  284. package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +10 -0
  285. package/skills/spec-to-code-compliance/README.md +67 -0
  286. package/skills/spec-to-code-compliance/commands/spec-compliance.md +22 -0
  287. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +349 -0
  288. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +69 -0
  289. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +417 -0
  290. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +105 -0
  291. package/skills/spotify-player/SKILL.md +64 -0
  292. package/skills/static-analysis/.claude-plugin/plugin.json +8 -0
  293. package/skills/static-analysis/README.md +59 -0
  294. package/skills/static-analysis/skills/codeql/SKILL.md +315 -0
  295. package/skills/static-analysis/skills/sarif-parsing/SKILL.md +479 -0
  296. package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +162 -0
  297. package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +331 -0
  298. package/skills/static-analysis/skills/semgrep/SKILL.md +337 -0
  299. package/skills/summarize/SKILL.md +87 -0
  300. package/skills/testing-handbook-skills/.claude-plugin/plugin.json +8 -0
  301. package/skills/testing-handbook-skills/README.md +241 -0
  302. package/skills/testing-handbook-skills/scripts/pyproject.toml +8 -0
  303. package/skills/testing-handbook-skills/scripts/validate-skills.py +657 -0
  304. package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +341 -0
  305. package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +640 -0
  306. package/skills/testing-handbook-skills/skills/atheris/SKILL.md +515 -0
  307. package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +454 -0
  308. package/skills/testing-handbook-skills/skills/codeql/SKILL.md +549 -0
  309. package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +507 -0
  310. package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +607 -0
  311. package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +297 -0
  312. package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +426 -0
  313. package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +614 -0
  314. package/skills/testing-handbook-skills/skills/libafl/SKILL.md +625 -0
  315. package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +795 -0
  316. package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +426 -0
  317. package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +443 -0
  318. package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +601 -0
  319. package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +372 -0
  320. package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +280 -0
  321. package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +452 -0
  322. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +504 -0
  323. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +454 -0
  324. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +527 -0
  325. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +366 -0
  326. package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +482 -0
  327. package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +533 -0
  328. package/skills/things-mac/SKILL.md +86 -0
  329. package/skills/tmux/SKILL.md +135 -0
  330. package/skills/tmux/scripts/find-sessions.sh +112 -0
  331. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  332. package/skills/trello/SKILL.md +95 -0
  333. package/skills/variant-analysis/.claude-plugin/plugin.json +8 -0
  334. package/skills/variant-analysis/README.md +41 -0
  335. package/skills/variant-analysis/commands/variants.md +23 -0
  336. package/skills/variant-analysis/skills/variant-analysis/METHODOLOGY.md +327 -0
  337. package/skills/variant-analysis/skills/variant-analysis/SKILL.md +142 -0
  338. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/cpp.ql +119 -0
  339. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/go.ql +69 -0
  340. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/java.ql +71 -0
  341. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/javascript.ql +63 -0
  342. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/python.ql +80 -0
  343. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/cpp.yaml +98 -0
  344. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/go.yaml +63 -0
  345. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/java.yaml +61 -0
  346. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/javascript.yaml +60 -0
  347. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/python.yaml +72 -0
  348. package/skills/variant-analysis/skills/variant-analysis/resources/variant-report-template.md +75 -0
  349. package/skills/video-frames/SKILL.md +46 -0
  350. package/skills/video-frames/scripts/frame.sh +81 -0
  351. package/skills/voice-call/SKILL.md +45 -0
  352. package/skills/wacli/SKILL.md +72 -0
  353. package/skills/weather/SKILL.md +54 -0
  354. package/skills/yara-authoring/.claude-plugin/plugin.json +9 -0
  355. package/skills/yara-authoring/README.md +131 -0
  356. package/skills/yara-authoring/skills/yara-rule-authoring/SKILL.md +645 -0
  357. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Mac_ProtonRAT_Jan25.yar +99 -0
  358. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_NPM_SupplyChain_Jan25.yar +170 -0
  359. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Win_Remcos_Jan25.yar +103 -0
  360. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_CRX_SuspiciousPermissions.yar +134 -0
  361. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_JS_Obfuscation_Jan25.yar +185 -0
  362. package/skills/yara-authoring/skills/yara-rule-authoring/references/crx-module.md +214 -0
  363. package/skills/yara-authoring/skills/yara-rule-authoring/references/dex-module.md +383 -0
  364. package/skills/yara-authoring/skills/yara-rule-authoring/references/performance.md +333 -0
  365. package/skills/yara-authoring/skills/yara-rule-authoring/references/strings.md +433 -0
  366. package/skills/yara-authoring/skills/yara-rule-authoring/references/style-guide.md +257 -0
  367. package/skills/yara-authoring/skills/yara-rule-authoring/references/testing.md +399 -0
  368. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/atom_analyzer.py +526 -0
  369. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/pyproject.toml +25 -0
  370. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/yara_lint.py +631 -0
  371. package/skills/yara-authoring/skills/yara-rule-authoring/workflows/rule-development.md +493 -0
@@ -0,0 +1,269 @@
1
+ # JavaScript / TypeScript Sharp Edges
2
+
3
+ ## Loose Equality Coercion
4
+
5
+ ```javascript
6
+ // DANGEROUS: == coerces types unpredictably
7
+ "0" == false // true
8
+ "" == false // true
9
+ "" == 0 // true
10
+ [] == false // true
11
+ [] == ![] // true (wat)
12
+ null == undefined // true
13
+
14
+ // Security implications:
15
+ if (userRole == "admin") { // What if userRole is 0?
16
+ grantAdmin();
17
+ }
18
+ 0 == "admin" // false, but...
19
+ 0 == "" // true
20
+ ```
21
+
22
+ **Fix**: Always use `===` for strict equality.
23
+
24
+ ## Prototype Pollution
25
+
26
+ ```javascript
27
+ // DANGEROUS: Merging untrusted objects
28
+ function merge(target, source) {
29
+ for (let key in source) {
30
+ target[key] = source[key]; // Includes __proto__!
31
+ }
32
+ }
33
+
34
+ // Attacker sends: {"__proto__": {"isAdmin": true}}
35
+ merge({}, JSON.parse(userInput));
36
+
37
+ // Now ALL objects have isAdmin
38
+ ({}).isAdmin // true
39
+ const user = {};
40
+ user.isAdmin // true - authentication bypassed!
41
+
42
+ // Also via constructor.prototype
43
+ // {"constructor": {"prototype": {"isAdmin": true}}}
44
+ ```
45
+
46
+ **Fix**:
47
+ ```javascript
48
+ // Check for dangerous keys
49
+ const dangerous = ['__proto__', 'constructor', 'prototype'];
50
+ if (dangerous.includes(key)) continue;
51
+
52
+ // Or use Object.create(null) for dictionary objects
53
+ const dict = Object.create(null); // No prototype chain
54
+
55
+ // Or use Map instead of objects
56
+ const map = new Map();
57
+ ```
58
+
59
+ ## Regular Expression DoS (ReDoS)
60
+
61
+ ```javascript
62
+ // DANGEROUS: Catastrophic backtracking
63
+ const regex = /^(a+)+$/;
64
+ regex.test("aaaaaaaaaaaaaaaaaaaaaaaaaaaa!");
65
+ // Exponential time - freezes the event loop
66
+
67
+ // Dangerous patterns:
68
+ // - Nested quantifiers: (a+)+, (a*)*
69
+ // - Overlapping alternatives: (a|a)+
70
+ // - Greedy quantifiers with overlap: .*.*
71
+
72
+ // Real example from ua-parser-js CVE:
73
+ /\s*(;|\s)\s*/ // Fine
74
+ /(a|aa)+/ // ReDoS!
75
+ ```
76
+
77
+ **Detection**: Look for nested quantifiers or overlapping alternatives in regex.
78
+
79
+ ## parseInt Without Radix
80
+
81
+ ```javascript
82
+ // DANGEROUS: Behavior varies
83
+ parseInt("08"); // 8 (modern JS), was 0 in ES3 (octal)
84
+ parseInt("0x10"); // 16 - hex prefix always recognized
85
+ parseInt("10", 0); // 10 or error depending on engine
86
+ parseInt("10", 1); // NaN - radix 1 invalid
87
+
88
+ // DANGEROUS: Unexpected results
89
+ parseInt("123abc"); // 123 - stops at first non-digit
90
+ parseInt("abc123"); // NaN - starts with non-digit
91
+ ```
92
+
93
+ **Fix**: Always specify radix: `parseInt("08", 10)`
94
+
95
+ ## This Binding
96
+
97
+ ```javascript
98
+ // DANGEROUS: 'this' depends on how function is called
99
+ const obj = {
100
+ value: 42,
101
+ getValue: function() { return this.value; }
102
+ };
103
+
104
+ obj.getValue(); // 42
105
+ const fn = obj.getValue;
106
+ fn(); // undefined - 'this' is global/undefined
107
+
108
+ // DANGEROUS: In callbacks
109
+ setTimeout(obj.getValue, 100); // 'this' is global/undefined
110
+
111
+ // DANGEROUS: In event handlers
112
+ button.addEventListener('click', obj.getValue); // 'this' is button
113
+ ```
114
+
115
+ **Fix**: Use arrow functions or `.bind()`.
116
+
117
+ ## Array Methods That Mutate
118
+
119
+ ```javascript
120
+ // These MUTATE the original array:
121
+ arr.push(x); // Adds to end
122
+ arr.pop(); // Removes from end
123
+ arr.shift(); // Removes from start
124
+ arr.unshift(x); // Adds to start
125
+ arr.splice(i, n); // Removes/inserts
126
+ arr.sort(); // Sorts IN PLACE
127
+ arr.reverse(); // Reverses IN PLACE
128
+ arr.fill(x); // Fills IN PLACE
129
+
130
+ // These return NEW arrays:
131
+ arr.slice();
132
+ arr.concat();
133
+ arr.map();
134
+ arr.filter();
135
+
136
+ // DANGEROUS: Sorting numbers
137
+ [1, 10, 2].sort(); // [1, 10, 2] - string comparison!
138
+ // Fix: [1, 10, 2].sort((a, b) => a - b); // [1, 2, 10]
139
+ ```
140
+
141
+ ## Type Coercion in Operations
142
+
143
+ ```javascript
144
+ // DANGEROUS: + is overloaded for concatenation
145
+ "5" + 3 // "53" (string)
146
+ 5 + "3" // "53" (string)
147
+ 5 - "3" // 2 (number)
148
+ "5" - 3 // 2 (number)
149
+
150
+ // DANGEROUS: Comparison with type coercion
151
+ "10" > "9" // false (string comparison: "1" < "9")
152
+ "10" > 9 // true (numeric comparison)
153
+ ```
154
+
155
+ ## eval and Dynamic Code
156
+
157
+ ```javascript
158
+ // DANGEROUS: eval executes arbitrary code
159
+ eval(userInput);
160
+
161
+ // DANGEROUS: Function constructor
162
+ new Function(userInput)();
163
+
164
+ // DANGEROUS: setTimeout/setInterval with string
165
+ setTimeout(userInput, 1000); // Executes as code!
166
+
167
+ // DANGEROUS: Template injection
168
+ const template = userInput; // "${process.exit()}"
169
+ eval(`\`${template}\``);
170
+ ```
171
+
172
+ ## Object Property Access
173
+
174
+ ```javascript
175
+ // DANGEROUS: Bracket notation with user input
176
+ const obj = { admin: false };
177
+ const key = userInput; // Could be "__proto__", "constructor", etc.
178
+ obj[key] = true; // Prototype pollution!
179
+
180
+ // DANGEROUS: in operator checks prototype chain
181
+ "toString" in {} // true - inherited from Object.prototype
182
+
183
+ // Fix: Use hasOwnProperty
184
+ ({}).hasOwnProperty("toString") // false
185
+ Object.hasOwn({}, "toString") // false (ES2022)
186
+ ```
187
+
188
+ ## Async/Await Pitfalls
189
+
190
+ ```javascript
191
+ // DANGEROUS: Unhandled promise rejection
192
+ async function riskyOperation() {
193
+ throw new Error("oops");
194
+ }
195
+ riskyOperation(); // Unhandled rejection - may crash Node.js
196
+
197
+ // DANGEROUS: Missing await
198
+ async function process() {
199
+ validateInput(); // Forgot await - validation not complete!
200
+ doSensitiveOperation();
201
+ }
202
+
203
+ // DANGEROUS: Sequential when parallel is possible
204
+ async function slow() {
205
+ const a = await fetchA(); // Waits
206
+ const b = await fetchB(); // Then waits
207
+ return a + b;
208
+ }
209
+
210
+ // Better: parallel
211
+ async function fast() {
212
+ const [a, b] = await Promise.all([fetchA(), fetchB()]);
213
+ return a + b;
214
+ }
215
+ ```
216
+
217
+ ## JSON Parse Issues
218
+
219
+ ```javascript
220
+ // DANGEROUS: __proto__ in JSON
221
+ JSON.parse('{"__proto__": {"isAdmin": true}}');
222
+ // Creates object with __proto__ key, but doesn't pollute
223
+
224
+ // However, if merged into another object:
225
+ Object.assign({}, JSON.parse(userInput));
226
+ // Can pollute if userInput has __proto__
227
+
228
+ // DANGEROUS: Large numbers lose precision
229
+ JSON.parse('{"id": 9007199254740993}');
230
+ // id becomes 9007199254740992 (precision loss)
231
+ ```
232
+
233
+ ## TypeScript-Specific
234
+
235
+ ```typescript
236
+ // DANGEROUS: Type assertions bypass checking
237
+ const user = userData as Admin; // No runtime check!
238
+ user.adminMethod(); // Runtime error if not actually Admin
239
+
240
+ // DANGEROUS: any escapes type system
241
+ function process(data: any) {
242
+ data.whatever(); // No type checking
243
+ }
244
+
245
+ // DANGEROUS: Non-null assertion
246
+ function greet(name: string | null) {
247
+ console.log(name!.toUpperCase()); // Crash if null!
248
+ }
249
+
250
+ // DANGEROUS: Type guards can lie
251
+ function isAdmin(user: User): user is Admin {
252
+ return true; // Wrong! TypeScript trusts this
253
+ }
254
+ ```
255
+
256
+ ## Detection Patterns
257
+
258
+ | Pattern | Risk |
259
+ |---------|------|
260
+ | `==` instead of `===` | Type coercion bugs |
261
+ | `obj[userInput]` | Prototype pollution |
262
+ | `/__proto__|constructor|prototype/` in merge | Pollution vectors |
263
+ | `(a+)+`, `(.*)+` in regex | ReDoS |
264
+ | `parseInt(x)` without radix | Parsing inconsistency |
265
+ | `eval(`, `Function(`, `setTimeout(string` | Code execution |
266
+ | `.sort()` on numbers without comparator | String sort |
267
+ | `as Type` assertions | Runtime type mismatch |
268
+ | `!` non-null assertion | Null pointer crash |
269
+ | Missing `await` before async call | Race condition |
@@ -0,0 +1,265 @@
1
+ # Kotlin Sharp Edges
2
+
3
+ ## Platform Types from Java
4
+
5
+ ```kotlin
6
+ // DANGEROUS: Java interop returns "platform types" (Type!)
7
+ val result = javaLibrary.getValue() // Type: String! (platform type)
8
+ result.length // NPE if Java returned null!
9
+
10
+ // Kotlin doesn't know if Java code can return null
11
+ // Platform types bypass null safety
12
+
13
+ // Even "safe" Java annotations may not be recognized:
14
+ // @NotNull in Java doesn't guarantee Kotlin sees it correctly
15
+ ```
16
+
17
+ **Fix**: Explicitly declare nullability when calling Java:
18
+ ```kotlin
19
+ val result: String? = javaLibrary.getValue() // Treat as nullable
20
+ val result: String = javaLibrary.getValue() // Throws if null
21
+ ```
22
+
23
+ ## Not-Null Assertion (!!)
24
+
25
+ ```kotlin
26
+ // DANGEROUS: !! throws on null
27
+ val value = nullableValue!! // KotlinNullPointerException
28
+
29
+ // Common antipattern:
30
+ val user = findUser(id)!! // "I know it's not null"
31
+ // Famous last words
32
+
33
+ // DANGEROUS: Chained assertions
34
+ val name = user!!.profile!!.name!! // Triple jeopardy
35
+ ```
36
+
37
+ **Fix**: Use safe calls and elvis operator:
38
+ ```kotlin
39
+ val value = nullableValue ?: return
40
+ val value = nullableValue ?: throw IllegalStateException("...")
41
+ val name = user?.profile?.name ?: "default"
42
+ ```
43
+
44
+ ## Lateinit
45
+
46
+ ```kotlin
47
+ // DANGEROUS: Accessing before initialization
48
+ class MyClass {
49
+ lateinit var config: Config
50
+
51
+ fun process() {
52
+ config.value // UninitializedPropertyAccessException if not set
53
+ }
54
+ }
55
+
56
+ // Can check with ::property.isInitialized but often forgotten
57
+ if (::config.isInitialized) {
58
+ config.value
59
+ }
60
+ ```
61
+
62
+ **Better alternatives**:
63
+ ```kotlin
64
+ // Lazy initialization
65
+ val config: Config by lazy { loadConfig() }
66
+
67
+ // Nullable with check
68
+ var config: Config? = null
69
+ fun process() {
70
+ val c = config ?: throw IllegalStateException("Not configured")
71
+ }
72
+ ```
73
+
74
+ ## Data Class Copy Pitfalls
75
+
76
+ ```kotlin
77
+ data class User(val name: String, val role: Role)
78
+
79
+ // DANGEROUS: copy() can bypass immutability intentions
80
+ val admin = User("Alice", Role.ADMIN)
81
+ val notAdmin = admin.copy(role = Role.USER) // Fine
82
+
83
+ // But if User validates in constructor:
84
+ data class User(val name: String, val role: Role) {
85
+ init {
86
+ require(name.isNotBlank()) { "Name required" }
87
+ }
88
+ }
89
+
90
+ // copy() BYPASSES the init block in some scenarios
91
+ // Validation may not run on copy
92
+ ```
93
+
94
+ ## Companion Object Initialization
95
+
96
+ ```kotlin
97
+ // DANGEROUS: Companion objects initialize lazily on first access
98
+ class MyClass {
99
+ companion object {
100
+ val config = loadConfig() // When does this run?
101
+ }
102
+ }
103
+
104
+ // First access triggers initialization
105
+ // Can cause unexpected delays or errors at runtime
106
+ // Order of initialization across classes is complex
107
+ ```
108
+
109
+ ## Coroutine Cancellation
110
+
111
+ ```kotlin
112
+ // DANGEROUS: Not checking for cancellation
113
+ suspend fun longOperation() {
114
+ while (true) {
115
+ heavyComputation() // Doesn't check cancellation
116
+ }
117
+ }
118
+
119
+ // Cancel won't stop this coroutine!
120
+ val job = launch { longOperation() }
121
+ job.cancel() // Coroutine keeps running
122
+
123
+ // DANGEROUS: Swallowing CancellationException
124
+ suspend fun wrapped() {
125
+ try {
126
+ suspendingFunction()
127
+ } catch (e: Exception) {
128
+ // CancellationException caught! Breaks cancellation
129
+ }
130
+ }
131
+ ```
132
+
133
+ **Fix**: Check for cancellation and rethrow CancellationException:
134
+ ```kotlin
135
+ suspend fun longOperation() {
136
+ while (true) {
137
+ ensureActive() // or yield()
138
+ heavyComputation()
139
+ }
140
+ }
141
+
142
+ catch (e: Exception) {
143
+ if (e is CancellationException) throw e
144
+ // handle other exceptions
145
+ }
146
+ ```
147
+
148
+ ## Inline Class Boxing
149
+
150
+ ```kotlin
151
+ @JvmInline
152
+ value class UserId(val id: Int)
153
+
154
+ // DANGEROUS: Boxing occurs in certain contexts
155
+ fun process(id: UserId?) { } // Nullable = boxed
156
+ fun process(id: Any) { } // Any = boxed
157
+ val list: List<UserId> // Generic = boxed
158
+
159
+ // Performance benefit lost, but worse:
160
+ // Two "equal" values may not be identical
161
+ ```
162
+
163
+ ## Scope Functions Confusion
164
+
165
+ ```kotlin
166
+ // DANGEROUS: Wrong scope function leads to bugs
167
+ val user = User()
168
+ user.also {
169
+ it.name = "Alice"
170
+ }.let {
171
+ return it.name // 'it' is the user, 'this' is outer scope
172
+ }
173
+
174
+ // Easy to confuse:
175
+ // let: it = receiver, returns lambda result
176
+ // also: it = receiver, returns receiver
177
+ // apply: this = receiver, returns receiver
178
+ // run: this = receiver, returns lambda result
179
+ // with: this = receiver, returns lambda result
180
+ ```
181
+
182
+ ## Delegation Pitfalls
183
+
184
+ ```kotlin
185
+ // DANGEROUS: Property delegation evaluated lazily
186
+ class Config {
187
+ val setting by lazy { loadExpensiveSetting() }
188
+ }
189
+
190
+ // Thread safety depends on lazy mode:
191
+ by lazy { } // Synchronized (safe but slow)
192
+ by lazy(LazyThreadSafetyMode.NONE) { } // Not safe!
193
+ by lazy(LazyThreadSafetyMode.PUBLICATION) { } // Safe but may compute multiple times
194
+ ```
195
+
196
+ ## Reified Type Erasure
197
+
198
+ ```kotlin
199
+ // DANGEROUS: Inline + reified still has limits
200
+ inline fun <reified T> parse(json: String): T {
201
+ return gson.fromJson(json, T::class.java)
202
+ }
203
+
204
+ // Works for simple types, but:
205
+ parse<List<String>>(json) // T::class.java is just List, not List<String>
206
+ // Generic type arguments still erased
207
+ ```
208
+
209
+ ## Sequence vs Iterable
210
+
211
+ ```kotlin
212
+ // DANGEROUS: Sequences are lazy, Iterables are eager
213
+ val list = listOf(1, 2, 3)
214
+
215
+ // Eager - filter runs on all elements immediately
216
+ list.filter { println("filter $it"); it > 1 }
217
+ .map { println("map $it"); it * 2 }
218
+ .first()
219
+ // Prints: filter 1, filter 2, filter 3, map 2, map 3
220
+
221
+ // Lazy - only processes needed elements
222
+ list.asSequence()
223
+ .filter { println("filter $it"); it > 1 }
224
+ .map { println("map $it"); it * 2 }
225
+ .first()
226
+ // Prints: filter 1, filter 2, map 2
227
+ ```
228
+
229
+ But sequences can also surprise:
230
+ ```kotlin
231
+ // DANGEROUS: Sequence operations return new sequences, not results
232
+ val seq = listOf(1, 2, 3).asSequence()
233
+ .filter { it > 1 }
234
+ .map { it * 2 }
235
+ // Nothing executed yet! Must terminate with toList(), first(), etc.
236
+ ```
237
+
238
+ ## Extension Function Shadowing
239
+
240
+ ```kotlin
241
+ // DANGEROUS: Extension functions can shadow members
242
+ class MyClass {
243
+ fun process() = "member"
244
+ }
245
+
246
+ fun MyClass.process() = "extension" // Never called!
247
+
248
+ val obj = MyClass()
249
+ obj.process() // "member" - members always win
250
+ ```
251
+
252
+ ## Detection Patterns
253
+
254
+ | Pattern | Risk |
255
+ |---------|------|
256
+ | Java interop without explicit nullability | Platform type NPE |
257
+ | `!!` assertion | Null pointer exception |
258
+ | `lateinit` without isInitialized check | Uninitialized access |
259
+ | `data class` with validation in init | copy() bypasses validation |
260
+ | `suspend fun` without ensureActive/yield | Can't cancel |
261
+ | `catch (e: Exception)` in coroutines | Swallows cancellation |
262
+ | `@JvmInline` with nullable/generic | Unexpected boxing |
263
+ | `by lazy(LazyThreadSafetyMode.NONE)` | Thread safety |
264
+ | `asSequence()` without terminal op | Nothing executes |
265
+ | Extension function same name as member | Extension never called |