@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,274 @@
1
+ # Real-World Case Studies
2
+
3
+ Analysis of sharp edges in widely-used libraries. These aren't implementation bugs—they're design decisions that make secure usage difficult.
4
+
5
+ ## GNU Multiple Precision Arithmetic Library (GMP)
6
+
7
+ GMP is used extensively for cryptographic implementations (RSA, Paillier, ElGamal, etc.) despite being fundamentally unsuitable for cryptography.
8
+
9
+ ### Sharp Edge: Variable-Time Operations
10
+
11
+ **The Problem**: GMP operations are not constant-time. Timing varies based on input values.
12
+
13
+ ```c
14
+ // DANGEROUS: Timing leaks secret exponent bits
15
+ mpz_powm(result, base, secret_exponent, modulus);
16
+
17
+ // Each bit of secret_exponent affects timing differently
18
+ // Attacker can recover secret_exponent via timing analysis
19
+ ```
20
+
21
+ **Why This Matters**:
22
+ - Paillier encryption uses `mpz_powm` with secret keys
23
+ - RSA implementations using GMP leak private key bits
24
+ - Even "blinded" implementations often have residual timing leaks
25
+
26
+ **Detection Pattern**: Any use of GMP (`mpz_*` functions) with secret values:
27
+ - `mpz_powm`, `mpz_powm_sec` (the "sec" version is still not fully constant-time)
28
+ - `mpz_mul`, `mpz_mod` with secret operands
29
+ - `mpz_cmp` for secret comparison
30
+
31
+ **Real Vulnerabilities**:
32
+ - CVE-2018-16152: Timing attack on strongSwan IKEv2
33
+ - Numerous academic papers demonstrating key recovery from GMP-based crypto
34
+
35
+ ### Sharp Edge: Memory Not Securely Cleared
36
+
37
+ ```c
38
+ mpz_t secret_key;
39
+ mpz_init(secret_key);
40
+ // ... use secret_key ...
41
+ mpz_clear(secret_key); // Memory NOT securely wiped
42
+ // Secret data may persist in freed memory
43
+ ```
44
+
45
+ **The Problem**: `mpz_clear` doesn't zero memory before freeing. Secrets persist.
46
+
47
+ ### Sharp Edge: Confusing Import/Export API
48
+
49
+ ```c
50
+ // What does this do?
51
+ mpz_export(buf, &count, order, size, endian, nails, op);
52
+
53
+ // Parameters:
54
+ // - order: 1 = most significant word first, -1 = least significant
55
+ // - endian: 1 = big, -1 = little, 0 = native
56
+ // - nails: bits to skip at top of each word (?!)
57
+ ```
58
+
59
+ **The Problem**: Seven parameters, three of which control byte ordering in different ways. Easy to get wrong, hard to verify correctness.
60
+
61
+ ### Mitigation
62
+
63
+ For cryptographic use, prefer:
64
+ - **libsodium** for common operations
65
+ - **OpenSSL BIGNUM** (has constant-time variants)
66
+ - **libgmp with mpz_powm_sec** (partial mitigation, not complete)
67
+
68
+ ---
69
+
70
+ ## OpenSSL
71
+
72
+ The canonical example of a powerful but footgun-laden cryptographic library.
73
+
74
+ ### Sharp Edge: SSL_CTX_set_verify Callback
75
+
76
+ ```c
77
+ // DANGEROUS: Easy to write callback that always returns 1
78
+ SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, verify_callback);
79
+
80
+ int verify_callback(int preverify_ok, X509_STORE_CTX *ctx) {
81
+ // Developer thinks: "I'll add logging here"
82
+ log_certificate(ctx);
83
+ return 1; // OOPS: Always accepts, ignoring preverify_ok!
84
+ }
85
+ ```
86
+
87
+ **The Problem**: The callback's return value determines whether verification succeeds. Developers often:
88
+ - Return 1 (success) unconditionally while "just adding logging"
89
+ - Forget that returning non-zero bypasses all verification
90
+ - Copy-paste examples that return 1 for "debugging"
91
+
92
+ **Correct Pattern**:
93
+ ```c
94
+ int verify_callback(int preverify_ok, X509_STORE_CTX *ctx) {
95
+ if (!preverify_ok) {
96
+ // Log failure details
97
+ log_verification_failure(ctx);
98
+ }
99
+ return preverify_ok; // Preserve original decision
100
+ }
101
+ ```
102
+
103
+ ### Sharp Edge: Error Handling via ERR_get_error
104
+
105
+ ```c
106
+ // DANGEROUS: Error easily ignored
107
+ EVP_EncryptFinal_ex(ctx, outbuf, &outlen);
108
+ // Did it succeed? Who knows!
109
+
110
+ // Correct but verbose:
111
+ if (EVP_EncryptFinal_ex(ctx, outbuf, &outlen) != 1) {
112
+ unsigned long err = ERR_get_error();
113
+ char buf[256];
114
+ ERR_error_string_n(err, buf, sizeof(buf));
115
+ // Handle error...
116
+ }
117
+ ```
118
+
119
+ **The Problem**:
120
+ - Functions return 1 for success (not 0!)
121
+ - Errors accumulate in a thread-local queue
122
+ - Easy to forget to check, easy to check wrong way
123
+ - Error queue must be cleared or errors persist
124
+
125
+ ### Sharp Edge: RAND_bytes vs RAND_pseudo_bytes
126
+
127
+ ```c
128
+ // These look almost identical:
129
+ RAND_bytes(buf, len); // Cryptographically secure
130
+ RAND_pseudo_bytes(buf, len); // NOT guaranteed secure!
131
+
132
+ // Worse: RAND_pseudo_bytes returns 1 even when insecure
133
+ int rc = RAND_pseudo_bytes(buf, len);
134
+ // rc == 1 means "success", not "cryptographically random"
135
+ // rc == 0 means "success but not crypto-strength" (!!)
136
+ // rc == -1 means "not supported"
137
+ ```
138
+
139
+ **The Problem**: Function names differ by one word; return values are confusing; the insecure function is not clearly marked dangerous.
140
+
141
+ ### Sharp Edge: Memory Ownership Confusion
142
+
143
+ ```c
144
+ // Who frees this?
145
+ X509 *cert = SSL_get_peer_certificate(ssl);
146
+ // Answer: YOU do (it's a copy)
147
+
148
+ // Who frees this?
149
+ X509 *cert = SSL_get0_peer_certificate(ssl); // OpenSSL 3.0+
150
+ // Answer: NOBODY (it's a reference)
151
+
152
+ // The difference: "get" vs "get0"
153
+ // This convention is NOT obvious or consistently applied
154
+ ```
155
+
156
+ **The Problem**: Memory ownership indicated by subtle naming conventions that aren't documented together and aren't consistent across the API.
157
+
158
+ ### Sharp Edge: EVP_CIPHER_CTX Reuse
159
+
160
+ ```c
161
+ EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
162
+ EVP_EncryptInit_ex(ctx, EVP_aes_256_gcm(), NULL, key, iv);
163
+ EVP_EncryptUpdate(ctx, out, &outlen, in, inlen);
164
+ EVP_EncryptFinal_ex(ctx, out + outlen, &tmplen);
165
+
166
+ // DANGEROUS: Reusing ctx without reset
167
+ EVP_EncryptInit_ex(ctx, NULL, NULL, NULL, iv2); // New IV only
168
+ // Some state from previous encryption may persist!
169
+ ```
170
+
171
+ **The Problem**: Context reuse rules are complex and vary by cipher mode.
172
+
173
+ ---
174
+
175
+ ## Python's `pickle`
176
+
177
+ ### Sharp Edge: Arbitrary Code Execution by Design
178
+
179
+ ```python
180
+ import pickle
181
+
182
+ # DANGEROUS: Deserializes arbitrary Python objects
183
+ data = pickle.loads(untrusted_input)
184
+
185
+ # Attacker sends:
186
+ # b"cos\nsystem\n(S'rm -rf /'\ntR."
187
+ # Result: Executes shell command
188
+ ```
189
+
190
+ **The Problem**: `pickle` is not a data format—it's a code execution format. There is no safe way to unpickle untrusted data, but:
191
+ - The function looks like a data parser
192
+ - The name suggests food preservation, not danger
193
+ - Many developers don't realize the risk
194
+
195
+ **Mitigation**: Use `json` for data. If you need pickle, use `hmac` to authenticate before unpickling (but even then, prefer safer formats).
196
+
197
+ ---
198
+
199
+ ## YAML Libraries
200
+
201
+ ### Sharp Edge: Code Execution via Tags
202
+
203
+ ```python
204
+ import yaml
205
+
206
+ # DANGEROUS: yaml.load() executes arbitrary code
207
+ data = yaml.load(untrusted_input)
208
+
209
+ # Attacker sends:
210
+ # !!python/object/apply:os.system ['rm -rf /']
211
+ ```
212
+
213
+ **The Problem**: YAML's tag system allows arbitrary object instantiation. The "safe" loader is:
214
+ ```python
215
+ data = yaml.safe_load(untrusted_input) # Safe
216
+ data = yaml.load(untrusted_input, Loader=yaml.SafeLoader) # Also safe
217
+ ```
218
+
219
+ But the dangerous version is the obvious one (`yaml.load()`).
220
+
221
+ ---
222
+
223
+ ## PHP's `strcmp` for Password Comparison
224
+
225
+ ### Sharp Edge: Type Juggling Bypass
226
+
227
+ ```php
228
+ // DANGEROUS: Type juggling attack
229
+ if (strcmp($_POST['password'], $stored_password) == 0) {
230
+ authenticate();
231
+ }
232
+
233
+ // Attacker sends: password[]=anything
234
+ // strcmp(array, string) returns NULL
235
+ // NULL == 0 is TRUE in PHP!
236
+ ```
237
+
238
+ **The Problem**:
239
+ - `strcmp` returns `NULL` on type error, not `-1` or `1`
240
+ - PHP's `==` operator coerces `NULL` to `0`
241
+ - `NULL == 0` evaluates to `TRUE`
242
+ - Authentication bypassed
243
+
244
+ **Fix**:
245
+ ```php
246
+ if (hash_equals($stored_hash, hash('sha256', $_POST['password']))) {
247
+ // Use hash_equals for timing-safe comparison
248
+ // AND proper password hashing (not shown)
249
+ }
250
+ ```
251
+
252
+ ---
253
+
254
+ ## Analysis Template
255
+
256
+ When examining a library for sharp edges:
257
+
258
+ ### Input → Expected Output
259
+
260
+ | Input | Expected | Actual | Vulnerability |
261
+ |-------|----------|--------|---------------|
262
+ | `verify_ssl=false` | Clear warning | Silent acceptance | Config cliff |
263
+ | `password=""` | Rejection | Login success | Empty bypass |
264
+ | `algorithm="none"` | Error | Signature skipped | Downgrade |
265
+ | `timeout=-1` | Error | Infinite timeout | Magic value |
266
+
267
+ ### Library Comparison
268
+
269
+ | Feature | Dangerous Library | Safer Alternative |
270
+ |---------|------------------|-------------------|
271
+ | Bignum crypto | GMP | libsodium, OpenSSL BIGNUM |
272
+ | TLS | Raw OpenSSL | Higher-level wrappers |
273
+ | Serialization | pickle, YAML | JSON, protobuf |
274
+ | Password compare | strcmp | hash_equals, secrets.compare_digest |
@@ -0,0 +1,333 @@
1
+ # Configuration Security Patterns
2
+
3
+ Dangerous configuration patterns that enable security failures.
4
+
5
+ ## Zero/Empty/Null Semantics
6
+
7
+ ### The Lifetime Zero Problem
8
+
9
+ ```yaml
10
+ # What does 0 mean?
11
+ session_timeout: 0 # Infinite timeout? Immediate expiry? Disabled?
12
+ token_lifetime: 0 # Never expires? Already expired? Use default?
13
+ max_attempts: 0 # No attempts allowed? Unlimited attempts?
14
+ ```
15
+
16
+ **Real-world failures:**
17
+ - OTP libraries where `lifetime=0` means "accept any OTP regardless of age"
18
+ - Rate limiters where `max_attempts=0` disables rate limiting
19
+ - Session managers where `timeout=0` means "session never expires"
20
+
21
+ **Detection**: Any numeric security parameter that accepts 0.
22
+
23
+ **Fix**: Explicit constants, validation, or separate enable/disable flag.
24
+
25
+ ```python
26
+ # BAD
27
+ def verify_otp(code: str, lifetime: int = 300):
28
+ if lifetime <= 0:
29
+ return True # What??
30
+
31
+ # GOOD
32
+ def verify_otp(code: str, lifetime: int = 300):
33
+ if lifetime <= 0:
34
+ raise ValueError("lifetime must be positive")
35
+ ```
36
+
37
+ ### Empty String Bypass
38
+
39
+ ```python
40
+ # Passwords
41
+ if user_password == stored_hash: # What if stored_hash is ""?
42
+
43
+ # API keys
44
+ if api_key == config.api_key: # What if config is empty?
45
+ grant_access()
46
+
47
+ # The empty string equals the empty string
48
+ "" == "" # True - authentication bypassed
49
+ ```
50
+
51
+ **Detection**: String comparisons for authentication without empty checks.
52
+
53
+ ### Null as "Skip"
54
+
55
+ ```javascript
56
+ // DANGEROUS: null means "skip verification"
57
+ function verifySignature(data, signature, publicKey) {
58
+ if (!publicKey) return true; // No key = trust everything?
59
+ return crypto.verify(data, signature, publicKey);
60
+ }
61
+
62
+ // DANGEROUS: null means "any value"
63
+ function checkRole(user, requiredRole) {
64
+ if (!requiredRole) return true; // No requirement = allow all?
65
+ return user.roles.includes(requiredRole);
66
+ }
67
+ ```
68
+
69
+ ## Boolean Traps
70
+
71
+ ### Security-Disabling Flags
72
+
73
+ ```yaml
74
+ # Every one of these has caused real vulnerabilities
75
+ verify_ssl: false
76
+ validate_certificate: false
77
+ check_signature: false
78
+ require_auth: false
79
+ enable_csrf_protection: false
80
+ sanitize_input: false
81
+ ```
82
+
83
+ **Pattern**: Any boolean that disables a security control.
84
+
85
+ **The typo problem:**
86
+ ```yaml
87
+ verify_ssl: fasle # Typo - what does the parser do?
88
+ verify_ssl: "false" # String "false" - truthy in many languages!
89
+ verify_ssl: 0 # Integer 0 - falsy, but is it valid?
90
+ ```
91
+
92
+ ### Double Negatives
93
+
94
+ ```yaml
95
+ # Confusing
96
+ disable_auth: false # Auth enabled? Let me re-read...
97
+ skip_validation: false # Validation runs? Think carefully...
98
+
99
+ # Clear
100
+ auth_enabled: true
101
+ validate_input: true
102
+ ```
103
+
104
+ ## Magic Values
105
+
106
+ ### Sentinel Values in Security Parameters
107
+
108
+ ```yaml
109
+ # What do these mean?
110
+ max_retries: -1 # Infinite? Error? Use default?
111
+ cache_ttl: -1 # Never expire? Disabled?
112
+ timeout_seconds: -1 # Wait forever? Use system default?
113
+
114
+ # Real vulnerability: connection pool with max_connections: -1
115
+ # meant "unlimited" - enabled DoS via connection exhaustion
116
+ ```
117
+
118
+ ### Special String Values
119
+
120
+ ```yaml
121
+ # Dangerous patterns
122
+ allowed_origins: "*" # CORS wildcard
123
+ allowed_hosts: "any" # Bypass host validation
124
+ log_level: "none" # Disable security logging
125
+ password_policy: "disabled" # No password requirements
126
+ ```
127
+
128
+ **Detection**: String configs that accept wildcards or "disable" keywords.
129
+
130
+ ## Combination Hazards
131
+
132
+ ### Conflicting Settings
133
+
134
+ ```yaml
135
+ # Both true - which wins?
136
+ require_authentication: true
137
+ allow_anonymous_access: true
138
+
139
+ # Both specified - conflict
140
+ session_cookie_secure: true
141
+ force_http: true # HTTP can't use Secure cookies
142
+
143
+ # Mutually exclusive
144
+ encryption_key: "..."
145
+ encryption_disabled: true
146
+ ```
147
+
148
+ ### Precedence Confusion
149
+
150
+ ```yaml
151
+ # In config file
152
+ verify_ssl: true
153
+
154
+ # But overrideable by environment?
155
+ VERIFY_SSL=false # Which wins?
156
+
157
+ # And command line?
158
+ --no-verify-ssl # Now there are three sources
159
+ ```
160
+
161
+ **Fix**: Document precedence clearly; warn on conflicts; fail on contradictions.
162
+
163
+ ## Environment Variable Hazards
164
+
165
+ ### Sensitive Values in Environment
166
+
167
+ ```bash
168
+ # Common but problematic
169
+ export DATABASE_PASSWORD="secret"
170
+ export API_KEY="sk_live_xxx"
171
+
172
+ # Risks:
173
+ # - Visible in process listings (ps aux)
174
+ # - Inherited by child processes
175
+ # - Logged in error dumps
176
+ # - Visible in container inspection
177
+ ```
178
+
179
+ ### Override Attacks
180
+
181
+ ```python
182
+ # Application trusts environment
183
+ debug = os.environ.get("DEBUG", "false") == "true"
184
+
185
+ # Attacker with environment access:
186
+ export DEBUG=true # Enables verbose logging of secrets
187
+ ```
188
+
189
+ **Detection**: Security settings controllable via environment without validation.
190
+
191
+ ## Path Traversal via Config
192
+
193
+ ### Unrestricted Path Configuration
194
+
195
+ ```yaml
196
+ # User-controlled paths
197
+ log_file: "../../../etc/passwd"
198
+ upload_dir: "/etc/nginx/conf.d/"
199
+ template_dir: "../../../etc/shadow"
200
+
201
+ # Even "read-only" paths can leak secrets
202
+ config_include: "/etc/shadow"
203
+ certificate_file: "/proc/self/environ"
204
+ ```
205
+
206
+ **Fix**: Validate paths; restrict to allowed directories; resolve and check.
207
+
208
+ ## Unvalidated Constructor Parameters
209
+
210
+ Configuration/parameter classes that accept security-relevant values without validation create "time bombs" - the insecure value is accepted silently at construction, then explodes later during use.
211
+
212
+ ### Algorithm Selection Without Allowlist
213
+
214
+ ```php
215
+ // DANGEROUS: Accepts any string including weak algorithms
216
+ readonly class ServerConfig {
217
+ public function __construct(
218
+ public string $hashAlgo = 'sha256', // Accepts 'md5', 'crc32', 'adler32'
219
+ public string $cipher = 'aes-256-gcm', // Accepts 'des', 'rc4'
220
+ ) {}
221
+ }
222
+
223
+ // Caller can pass insecure values:
224
+ new ServerConfig(hashAlgo: 'md5'); // Silently accepted!
225
+ ```
226
+
227
+ **Detection**: Constructor parameters named `algo`, `algorithm`, `hash*`, `cipher`, `mode`, `*_type` that accept strings without validation.
228
+
229
+ **Fix**: Validate against an explicit allowlist at construction:
230
+
231
+ ```php
232
+ public function __construct(public string $hashAlgo = 'sha256') {
233
+ if (!in_array($hashAlgo, ['sha256', 'sha384', 'sha512'], true)) {
234
+ throw new InvalidArgumentException("Disallowed hash algorithm: $hashAlgo");
235
+ }
236
+ }
237
+ ```
238
+
239
+ ### Timing Parameters Without Bounds
240
+
241
+ ```php
242
+ // DANGEROUS: No minimum or maximum bounds
243
+ readonly class AuthConfig {
244
+ public function __construct(
245
+ public int $otpLifetime = 120, // Accepts 0 (immediate expiry? infinite?)
246
+ public int $sessionTimeout = 3600, // Accepts -1 (what does this mean?)
247
+ public int $maxRetries = 5, // Accepts 0 (no retries? unlimited?)
248
+ ) {}
249
+ }
250
+
251
+ // All of these are silently accepted:
252
+ new AuthConfig(otpLifetime: 0); // OTP always expired or never expires?
253
+ new AuthConfig(otpLifetime: 999999); // ~11 days - replay attacks!
254
+ new AuthConfig(maxRetries: -1); // Unlimited retries = brute force
255
+ ```
256
+
257
+ **Detection**: Numeric constructor parameters for `*lifetime`, `*timeout`, `*ttl`, `*duration`, `max_*`, `min_*`, `*_seconds`, `*_attempts` without range validation.
258
+
259
+ **Fix**: Enforce both minimum AND maximum bounds:
260
+
261
+ ```php
262
+ public function __construct(public int $otpLifetime = 120) {
263
+ if ($otpLifetime < 2) {
264
+ throw new InvalidArgumentException("OTP lifetime too short (min: 2 seconds)");
265
+ }
266
+ if ($otpLifetime > 300) {
267
+ throw new InvalidArgumentException("OTP lifetime too long (max: 300 seconds)");
268
+ }
269
+ }
270
+ ```
271
+
272
+ ### Hostname/URL Parameters Without Validation
273
+
274
+ ```php
275
+ // DANGEROUS: No format validation
276
+ readonly class NetworkConfig {
277
+ public function __construct(
278
+ public string $hostname = 'localhost', // Accepts anything
279
+ public string $callbackUrl = '', // Accepts malformed URLs
280
+ ) {}
281
+ }
282
+
283
+ // Silently accepted:
284
+ new NetworkConfig(hostname: '../../../etc/passwd');
285
+ new NetworkConfig(hostname: 'localhost; rm -rf /');
286
+ new NetworkConfig(callbackUrl: 'javascript:alert(1)');
287
+ ```
288
+
289
+ **Detection**: String constructor parameters named `host`, `hostname`, `domain`, `*_url`, `*_uri`, `endpoint`, `callback*` without validation.
290
+
291
+ **Fix**: Validate format at construction:
292
+
293
+ ```php
294
+ public function __construct(public string $hostname = 'localhost') {
295
+ if (!filter_var($hostname, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME)) {
296
+ throw new InvalidArgumentException("Invalid hostname: $hostname");
297
+ }
298
+ }
299
+ ```
300
+
301
+ ### The "Sensible Default" Trap
302
+
303
+ Having a secure default does NOT protect you - callers can override it:
304
+
305
+ ```php
306
+ // Default is secure...
307
+ public function __construct(
308
+ public string $hashAlgo = 'sha256' // Good default!
309
+ ) {}
310
+
311
+ // ...but callers can still shoot themselves
312
+ $config = new Config(hashAlgo: 'md5'); // Oops
313
+ ```
314
+
315
+ **The rule**: If a parameter affects security, validate it. Defaults only help developers who don't specify a value; validation protects everyone.
316
+
317
+ ## Configuration Validation Checklist
318
+
319
+ For configuration schemas, verify:
320
+
321
+ - [ ] **Zero/empty rejected**: Numeric security params require positive values
322
+ - [ ] **No empty passwords/keys**: Empty string authentication forbidden
323
+ - [ ] **No security-disabling booleans**: Or require confirmation/separate config
324
+ - [ ] **No magic values**: -1 and wildcards have defined, safe meanings
325
+ - [ ] **Conflict detection**: Contradictory settings produce errors
326
+ - [ ] **Precedence documented**: Clear order when multiple sources exist
327
+ - [ ] **Path validation**: User-provided paths restricted to safe directories
328
+ - [ ] **Type strictness**: "false" string not silently converted to boolean
329
+ - [ ] **Deprecation warnings**: Insecure legacy options warn loudly
330
+ - [ ] **Algorithm allowlist**: Crypto algorithm params validated against safe options
331
+ - [ ] **Timing bounds**: Lifetime/timeout params have both min AND max limits
332
+ - [ ] **Hostname/URL validation**: Network addresses validated at construction
333
+ - [ ] **Constructor validation**: All security params validated, not just defaulted