@kensaurus/skills 0.0.0-stage → 2.0.0

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 (423) hide show
  1. package/.claude-plugin/marketplace.json +53 -0
  2. package/.claude-plugin/plugin.json +40 -0
  3. package/.cursor-plugin/plugin.json +38 -0
  4. package/.mcp.json +28 -0
  5. package/CHANGELOG.md +1761 -0
  6. package/LICENSE +21 -0
  7. package/NOTICE +13 -0
  8. package/README.md +820 -2
  9. package/SECURITY.md +55 -0
  10. package/agents/code-reviewer.md +60 -0
  11. package/agents/completion-judge.md +89 -0
  12. package/agents/db-migrator.md +125 -0
  13. package/agents/debugger.md +47 -0
  14. package/agents/deploy-checker.md +100 -0
  15. package/agents/perf-monitor.md +74 -0
  16. package/assets/favicon.png +0 -0
  17. package/assets/logo-light.png +0 -0
  18. package/assets/logo.png +0 -0
  19. package/assets/logo.svg +6 -0
  20. package/assets/og.png +0 -0
  21. package/bin/install.mjs +1127 -0
  22. package/bin/kenji.js +2 -0
  23. package/commands/adr.md +17 -0
  24. package/commands/aeo-plan.md +18 -0
  25. package/commands/arch-boundaries.md +17 -0
  26. package/commands/aso-plan.md +18 -0
  27. package/commands/auth-flows.md +19 -0
  28. package/commands/backup-plan.md +17 -0
  29. package/commands/burndown-full.md +25 -0
  30. package/commands/capacitor-plan.md +18 -0
  31. package/commands/codemod-safety.md +22 -0
  32. package/commands/commit.md +18 -0
  33. package/commands/complete-everything.md +40 -0
  34. package/commands/cost-plan.md +19 -0
  35. package/commands/deadcode-plan.md +26 -0
  36. package/commands/deadcode.md +32 -0
  37. package/commands/debug-issue.md +17 -0
  38. package/commands/deps-plan.md +18 -0
  39. package/commands/docs-plan.md +17 -0
  40. package/commands/doctrine.md +19 -0
  41. package/commands/error-plan.md +19 -0
  42. package/commands/feedback-to-closure.md +36 -0
  43. package/commands/fix-issue.md +76 -0
  44. package/commands/gate-logic.md +26 -0
  45. package/commands/green-repo.md +36 -0
  46. package/commands/grill-me.md +19 -0
  47. package/commands/gtm-plan.md +21 -0
  48. package/commands/gtm-weekly.md +17 -0
  49. package/commands/gtm.md +22 -0
  50. package/commands/handoff.md +15 -0
  51. package/commands/housekeep-backlog.md +18 -0
  52. package/commands/housekeep-files.md +22 -0
  53. package/commands/housekeep-gates.md +18 -0
  54. package/commands/instant-nav.md +11 -0
  55. package/commands/integrity-plan.md +19 -0
  56. package/commands/launch-kit.md +16 -0
  57. package/commands/mcp-guide.md +40 -0
  58. package/commands/mobile-plan.md +19 -0
  59. package/commands/native-rn-monorepo/README.md +78 -0
  60. package/commands/native-rn-monorepo/android-build.md +26 -0
  61. package/commands/native-rn-monorepo/android-install.md +32 -0
  62. package/commands/native-rn-monorepo/android-logcat.md +37 -0
  63. package/commands/native-rn-monorepo/ios-ci-logs.md +56 -0
  64. package/commands/native-rn-monorepo/ios-ci-status.md +52 -0
  65. package/commands/native-rn-monorepo/ios-ci-trigger.md +59 -0
  66. package/commands/native-rn-monorepo/rn-reset.md +50 -0
  67. package/commands/native-rn-monorepo/rn-ship-ios.md +67 -0
  68. package/commands/native-rn-monorepo/rn-verify.md +53 -0
  69. package/commands/perf-plan.md +18 -0
  70. package/commands/plan-mode.md +74 -0
  71. package/commands/pr.md +16 -0
  72. package/commands/pricing-plan.md +20 -0
  73. package/commands/privacy-plan.md +18 -0
  74. package/commands/readability.md +12 -0
  75. package/commands/readme.md +15 -0
  76. package/commands/refactor.md +15 -0
  77. package/commands/release-prep.md +17 -0
  78. package/commands/research.md +25 -0
  79. package/commands/responsive-audit.md +21 -0
  80. package/commands/review-code.md +18 -0
  81. package/commands/rls-plan.md +18 -0
  82. package/commands/secrets-plan.md +18 -0
  83. package/commands/security-plan.md +19 -0
  84. package/commands/ship-and-observe.md +36 -0
  85. package/commands/skill-conflicts.md +19 -0
  86. package/commands/slop-plan.md +18 -0
  87. package/commands/stub-plan.md +18 -0
  88. package/commands/test-mutation.md +16 -0
  89. package/commands/test-plan.md +17 -0
  90. package/commands/test.md +29 -0
  91. package/commands/thirdparty-web-interface-guidelines.md +185 -0
  92. package/commands/uiux-plan.md +18 -0
  93. package/commands/uiux.md +45 -0
  94. package/commands/update-deps.md +21 -0
  95. package/commands/validation-plan.md +19 -0
  96. package/commands-portable/fix-issue.md +72 -0
  97. package/commands-portable/plan-mode.md +92 -0
  98. package/commands-portable/research.md +91 -0
  99. package/docs/screenshots/README.md +5 -0
  100. package/docs/screenshots/audit-dark.png +0 -0
  101. package/docs/screenshots/build-dark.png +0 -0
  102. package/docs/screenshots/grill-dark.png +0 -0
  103. package/docs/screenshots/hero-dark.png +0 -0
  104. package/docs/screenshots/hero-light.png +0 -0
  105. package/docs/screenshots/ship-dark.png +0 -0
  106. package/docs/screenshots/src/showcase.html +320 -0
  107. package/hooks/completion-gate.mjs +258 -0
  108. package/hooks/cursor-hooks.json +13 -0
  109. package/hooks/hooks.json +15 -0
  110. package/install.sh +21 -0
  111. package/llms.txt +40 -0
  112. package/mcp/README.md +266 -0
  113. package/mcp/VERSIONS.md +41 -0
  114. package/mcp/mcp-full.json.template +124 -0
  115. package/mcp/mcp.json.template +29 -0
  116. package/mcp/pinned-versions.json +27 -0
  117. package/package.json +93 -4
  118. package/rules/approved-plan-execution.mdc +65 -0
  119. package/rules/full-stack-ship-discipline.mdc +37 -0
  120. package/rules/native-rn-monorepo/README.md +63 -0
  121. package/rules/native-rn-monorepo/_project.mdc +69 -0
  122. package/rules/native-rn-monorepo/native-android.mdc +72 -0
  123. package/rules/native-rn-monorepo/native-ios.mdc +61 -0
  124. package/rules/native-rn-monorepo/react-native-js.mdc +78 -0
  125. package/rules/native-rn-monorepo/web.mdc +60 -0
  126. package/rules/project-starter/components.mdc +54 -0
  127. package/rules/project-starter/data-fetching.mdc +77 -0
  128. package/rules/project-starter/git.mdc +41 -0
  129. package/rules/project-starter/supabase.mdc +37 -0
  130. package/rules/project-starter/tailwind.mdc +48 -0
  131. package/rules/project-starter/typescript.mdc +36 -0
  132. package/rules/project-starter/web-performance.mdc +42 -0
  133. package/rules/senior-engineer.mdc +30 -0
  134. package/rules/shell-first-search.mdc +19 -0
  135. package/rules/skill-workflows.mdc +35 -0
  136. package/rules/verification-before-completion.mdc +57 -0
  137. package/skills/audit-accessibility/SKILL.md +441 -0
  138. package/skills/audit-agent-speed/SKILL.md +181 -0
  139. package/skills/audit-agent-speed/scripts/stop-typecheck.mjs +151 -0
  140. package/skills/audit-analytics/SKILL.md +138 -0
  141. package/skills/audit-auth-flows/SKILL.md +267 -0
  142. package/skills/audit-backend-architecture/SKILL.md +266 -0
  143. package/skills/audit-backend-architecture/references/patterns.md +386 -0
  144. package/skills/audit-bundle-size/SKILL.md +296 -0
  145. package/skills/audit-cicd/SKILL.md +218 -0
  146. package/skills/audit-code-quality/SKILL.md +314 -0
  147. package/skills/audit-code-review/SKILL.md +289 -0
  148. package/skills/audit-codemod-safety/SKILL.md +159 -0
  149. package/skills/audit-db-schema/SKILL.md +465 -0
  150. package/skills/audit-db-schema/references/details.md +110 -0
  151. package/skills/audit-doctrine/SKILL.md +189 -0
  152. package/skills/audit-env-parity/SKILL.md +133 -0
  153. package/skills/audit-fe-api/SKILL.md +458 -0
  154. package/skills/audit-gate-logic/SKILL.md +219 -0
  155. package/skills/audit-i18n/SKILL.md +339 -0
  156. package/skills/audit-infra-cost/SKILL.md +142 -0
  157. package/skills/audit-langfuse-llm/SKILL.md +468 -0
  158. package/skills/audit-langfuse-llm/references/details.md +226 -0
  159. package/skills/audit-llm-security/SKILL.md +147 -0
  160. package/skills/audit-monetization-iap/SKILL.md +137 -0
  161. package/skills/audit-payment-system/SKILL.md +268 -0
  162. package/skills/audit-payment-system/references/checklist.md +283 -0
  163. package/skills/audit-performance/SKILL.md +383 -0
  164. package/skills/audit-performance/references/loading-priority-2026.md +81 -0
  165. package/skills/audit-realworld/SKILL.md +287 -0
  166. package/skills/audit-registry-listing/SKILL.md +122 -0
  167. package/skills/audit-resilience/SKILL.md +154 -0
  168. package/skills/audit-responsive/SKILL.md +221 -0
  169. package/skills/audit-responsive/references/checklist.md +166 -0
  170. package/skills/audit-security/SKILL.md +289 -0
  171. package/skills/audit-skill-conflicts/SKILL.md +178 -0
  172. package/skills/audit-ui-states/SKILL.md +146 -0
  173. package/skills/audit-uiux-design-system/SKILL.md +475 -0
  174. package/skills/audit-uiux-design-system/references/details.md +71 -0
  175. package/skills/audit-ux/SKILL.md +379 -0
  176. package/skills/audit-ux/references/details.md +245 -0
  177. package/skills/audit-ux-journeys/SKILL.md +215 -0
  178. package/skills/audit-ux-journeys/references/checklist.md +179 -0
  179. package/skills/backend-db-performance/SKILL.md +441 -0
  180. package/skills/backend-error-handling/SKILL.md +489 -0
  181. package/skills/backend-error-handling/references/details.md +58 -0
  182. package/skills/backend-observability/SKILL.md +88 -0
  183. package/skills/backend-patterns/SKILL.md +499 -0
  184. package/skills/backend-patterns/references/architecture-patterns.md +298 -0
  185. package/skills/backend-realtime/SKILL.md +403 -0
  186. package/skills/backend-realtime/references/patterns.md +74 -0
  187. package/skills/burndown-full/SKILL.md +174 -0
  188. package/skills/complete-everything/SKILL.md +295 -0
  189. package/skills/data-pipeline/SKILL.md +109 -0
  190. package/skills/data-visualization/SKILL.md +488 -0
  191. package/skills/debug-error/SKILL.md +322 -0
  192. package/skills/debug-fe-be-integration/SKILL.md +459 -0
  193. package/skills/debug-sentry-monitor/SKILL.md +497 -0
  194. package/skills/debug-sentry-monitor/references/details.md +165 -0
  195. package/skills/deploy-npm/SKILL.md +394 -0
  196. package/skills/deploy-npm/references/example-mushi-mushi.md +52 -0
  197. package/skills/deploy-verify/SKILL.md +489 -0
  198. package/skills/design-api/SKILL.md +379 -0
  199. package/skills/design-canvas/SKILL.md +155 -0
  200. package/skills/design-email/SKILL.md +370 -0
  201. package/skills/design-frontend/SKILL.md +143 -0
  202. package/skills/design-generative-art/SKILL.md +474 -0
  203. package/skills/design-mobile-first/SKILL.md +506 -0
  204. package/skills/design-motion/SKILL.md +333 -0
  205. package/skills/design-motion/references/delight-interactions.md +191 -0
  206. package/skills/design-prd/SKILL.md +443 -0
  207. package/skills/design-system/SKILL.md +457 -0
  208. package/skills/design-theme/SKILL.md +226 -0
  209. package/skills/design-theme/themes/tsumagoi-ranch.md +150 -0
  210. package/skills/docs-adr/SKILL.md +168 -0
  211. package/skills/docs-coauthor/SKILL.md +368 -0
  212. package/skills/docs-comparison-pages/SKILL.md +117 -0
  213. package/skills/docs-domain-modeling/SKILL.md +97 -0
  214. package/skills/docs-launch-kit/SKILL.md +139 -0
  215. package/skills/docs-writer/SKILL.md +469 -0
  216. package/skills/enhance-agent-guardrails/SKILL.md +164 -0
  217. package/skills/enhance-arch-boundaries/SKILL.md +154 -0
  218. package/skills/enhance-capacitor-ui/SKILL.md +463 -0
  219. package/skills/enhance-capacitor-ui/references/details.md +750 -0
  220. package/skills/enhance-email-deliverability/SKILL.md +143 -0
  221. package/skills/enhance-growth-loops/SKILL.md +122 -0
  222. package/skills/enhance-lifecycle-email/SKILL.md +130 -0
  223. package/skills/enhance-motion/SKILL.md +193 -0
  224. package/skills/enhance-onboarding/SKILL.md +148 -0
  225. package/skills/enhance-pwa/SKILL.md +304 -0
  226. package/skills/enhance-readability/SKILL.md +146 -0
  227. package/skills/enhance-readme/SKILL.md +496 -0
  228. package/skills/enhance-readme/package-lock.json +187 -0
  229. package/skills/enhance-readme/package.json +17 -0
  230. package/skills/enhance-readme/scripts/generate-readme-blocks.mjs +199 -0
  231. package/skills/enhance-readme/scripts/record-readme-tour.mjs +442 -0
  232. package/skills/enhance-skill-prompts/SKILL.md +167 -0
  233. package/skills/enhance-skill-prompts/references/exemplar-audit-auth-flows.md +311 -0
  234. package/skills/enhance-web-conversion/SKILL.md +155 -0
  235. package/skills/enhance-web-forms/SKILL.md +154 -0
  236. package/skills/enhance-web-instant-nav/SKILL.md +138 -0
  237. package/skills/enhance-web-instant-nav/references/bfcache-blockers.md +23 -0
  238. package/skills/enhance-web-instant-nav/references/early-hints.md +33 -0
  239. package/skills/enhance-web-instant-nav/references/speculation-rules.md +44 -0
  240. package/skills/enhance-web-landing/SKILL.md +459 -0
  241. package/skills/enhance-web-landing/references/details.md +773 -0
  242. package/skills/enhance-web-redesign/SKILL.md +228 -0
  243. package/skills/enhance-web-seo/SKILL.md +276 -0
  244. package/skills/enhance-web-ui/SKILL.md +473 -0
  245. package/skills/enhance-web-ui/references/details.md +674 -0
  246. package/skills/enhance-web-ux/HEURISTICS.md +242 -0
  247. package/skills/enhance-web-ux/PATTERNS.md +375 -0
  248. package/skills/enhance-web-ux/SKILL.md +464 -0
  249. package/skills/enhance-web-ux/examples.md +222 -0
  250. package/skills/enhance-web-ux/references/details.md +406 -0
  251. package/skills/enhance-web-web3d/SKILL.md +397 -0
  252. package/skills/enhance-web-web3d/references/css-canvas-effects.md +180 -0
  253. package/skills/handoff/SKILL.md +66 -0
  254. package/skills/housekeep-backlog/SKILL.md +149 -0
  255. package/skills/housekeep-dead-code/SKILL.md +387 -0
  256. package/skills/housekeep-dead-code/references/ratchet-ci.md +205 -0
  257. package/skills/housekeep-dead-code/references/supabase-hygiene.md +152 -0
  258. package/skills/housekeep-design/SKILL.md +207 -0
  259. package/skills/housekeep-files/SKILL.md +220 -0
  260. package/skills/housekeep-files/references/naming-and-catalog.md +86 -0
  261. package/skills/housekeep-files/scripts/housekeep-files.ps1 +360 -0
  262. package/skills/housekeep-files/scripts/housekeep-files.sh +238 -0
  263. package/skills/housekeep-gates/SKILL.md +174 -0
  264. package/skills/iterate-agent-harness/SKILL.md +137 -0
  265. package/skills/iterate-gtm-weekly/SKILL.md +103 -0
  266. package/skills/iterate-post-launch/SKILL.md +292 -0
  267. package/skills/meta-mcp-builder/SKILL.md +313 -0
  268. package/skills/meta-skill-creator/SKILL.md +304 -0
  269. package/skills/mobile-capacitor-platform/SKILL.md +104 -0
  270. package/skills/mobile-emulator-start/SKILL.md +296 -0
  271. package/skills/mobile-emulator-test/SKILL.md +491 -0
  272. package/skills/mobile-emulator-test/references/details.md +478 -0
  273. package/skills/mobile-rn-performance/SKILL.md +107 -0
  274. package/skills/mobile-rn-screen/SKILL.md +476 -0
  275. package/skills/mobile-rn-screen/references/details.md +785 -0
  276. package/skills/mushi-health/SKILL.md +206 -0
  277. package/skills/mushi-integration/SKILL.md +257 -0
  278. package/skills/plan-aeo-readiness/SKILL.md +166 -0
  279. package/skills/plan-antislop/SKILL.md +281 -0
  280. package/skills/plan-aso/SKILL.md +149 -0
  281. package/skills/plan-backup-dr/SKILL.md +131 -0
  282. package/skills/plan-capacitor-hardening/SKILL.md +217 -0
  283. package/skills/plan-data-integrity/SKILL.md +187 -0
  284. package/skills/plan-dead-code/SKILL.md +386 -0
  285. package/skills/plan-dead-code/references/knip-config.md +214 -0
  286. package/skills/plan-dead-code/references/output-templates.md +133 -0
  287. package/skills/plan-dead-code/references/preservation-contract.md +50 -0
  288. package/skills/plan-dead-code/references/residue-greps.md +84 -0
  289. package/skills/plan-dependency-provenance/SKILL.md +200 -0
  290. package/skills/plan-docs-sync/SKILL.md +143 -0
  291. package/skills/plan-docs-sync/references/drift-taxonomy.md +43 -0
  292. package/skills/plan-docs-sync/references/output-templates.md +33 -0
  293. package/skills/plan-docs-sync/references/preservation-contract.md +17 -0
  294. package/skills/plan-error-handling/SKILL.md +205 -0
  295. package/skills/plan-gtm/SKILL.md +276 -0
  296. package/skills/plan-gtm/references/benchmarks-2026.md +183 -0
  297. package/skills/plan-input-validation/SKILL.md +179 -0
  298. package/skills/plan-llm-cost-guardrails/SKILL.md +176 -0
  299. package/skills/plan-mobile-readiness/SKILL.md +171 -0
  300. package/skills/plan-perf-audit/SKILL.md +145 -0
  301. package/skills/plan-perf-audit/references/audit-scope.md +51 -0
  302. package/skills/plan-perf-audit/references/output-templates.md +33 -0
  303. package/skills/plan-perf-audit/references/preservation-contract.md +13 -0
  304. package/skills/plan-pricing/SKILL.md +173 -0
  305. package/skills/plan-privacy-compliance/SKILL.md +148 -0
  306. package/skills/plan-rls-audit/SKILL.md +231 -0
  307. package/skills/plan-secrets-audit/SKILL.md +181 -0
  308. package/skills/plan-security-audit/SKILL.md +168 -0
  309. package/skills/plan-security-audit/references/output-templates.md +36 -0
  310. package/skills/plan-security-audit/references/owasp-supabase-scope.md +55 -0
  311. package/skills/plan-security-audit/references/preservation-contract.md +18 -0
  312. package/skills/plan-stub-checker/SKILL.md +216 -0
  313. package/skills/plan-stub-checker/references/detection-methodology.md +75 -0
  314. package/skills/plan-stub-checker/references/detection-taxonomy.md +34 -0
  315. package/skills/plan-stub-checker/references/output-templates.md +63 -0
  316. package/skills/plan-stub-checker/references/preservation-contract.md +24 -0
  317. package/skills/plan-test-coverage/SKILL.md +170 -0
  318. package/skills/plan-test-coverage/references/methodology.md +54 -0
  319. package/skills/plan-test-coverage/references/output-templates.md +34 -0
  320. package/skills/plan-test-coverage/references/preservation-contract.md +15 -0
  321. package/skills/plan-uiux-unification/SKILL.md +230 -0
  322. package/skills/plan-uiux-unification/references/output-templates.md +67 -0
  323. package/skills/plan-uiux-unification/references/phase-workbook.md +85 -0
  324. package/skills/plan-uiux-unification/references/preservation-contract.md +24 -0
  325. package/skills/protocol-browser-anti-stall/SKILL.md +211 -0
  326. package/skills/protocol-browser-anti-stall/references/mcp-to-cli-map.md +113 -0
  327. package/skills/protocol-browser-anti-stall/references/playwright-session-coordination.md +170 -0
  328. package/skills/research/SKILL.md +422 -0
  329. package/skills/test-exploratory/SKILL.md +165 -0
  330. package/skills/test-exploratory/references/charter-template.md +29 -0
  331. package/skills/test-load/SKILL.md +126 -0
  332. package/skills/test-mutation/SKILL.md +160 -0
  333. package/skills/test-playwright/SKILL.md +354 -0
  334. package/skills/test-qa/SKILL.md +364 -0
  335. package/skills/test-qa/references/details.md +268 -0
  336. package/skills/test-red-team/SKILL.md +387 -0
  337. package/skills/test-red-team/references/owasp-attack-checklist.md +193 -0
  338. package/skills/test-unit/SKILL.md +259 -0
  339. package/skills/test-unit/references/details.md +267 -0
  340. package/skills/test-visual-regression/SKILL.md +132 -0
  341. package/skills/thirdparty-emil-design-eng/ATTRIBUTION.md +20 -0
  342. package/skills/thirdparty-emil-design-eng/SKILL.md +21 -0
  343. package/skills/thirdparty-emil-design-eng/references/emil-design-eng.md +676 -0
  344. package/skills/thirdparty-ui-ux-pro-max/ATTRIBUTION.md +22 -0
  345. package/skills/thirdparty-ui-ux-pro-max/SKILL.md +304 -0
  346. package/skills/thirdparty-ui-ux-pro-max/data/charts.csv +26 -0
  347. package/skills/thirdparty-ui-ux-pro-max/data/colors.csv +97 -0
  348. package/skills/thirdparty-ui-ux-pro-max/data/icons.csv +101 -0
  349. package/skills/thirdparty-ui-ux-pro-max/data/landing.csv +31 -0
  350. package/skills/thirdparty-ui-ux-pro-max/data/products.csv +97 -0
  351. package/skills/thirdparty-ui-ux-pro-max/data/react-performance.csv +45 -0
  352. package/skills/thirdparty-ui-ux-pro-max/data/stacks/astro.csv +54 -0
  353. package/skills/thirdparty-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  354. package/skills/thirdparty-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  355. package/skills/thirdparty-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  356. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  357. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  358. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  359. package/skills/thirdparty-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  360. package/skills/thirdparty-ui-ux-pro-max/data/stacks/react.csv +54 -0
  361. package/skills/thirdparty-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  362. package/skills/thirdparty-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  363. package/skills/thirdparty-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  364. package/skills/thirdparty-ui-ux-pro-max/data/stacks/vue.csv +50 -0
  365. package/skills/thirdparty-ui-ux-pro-max/data/styles.csv +68 -0
  366. package/skills/thirdparty-ui-ux-pro-max/data/typography.csv +58 -0
  367. package/skills/thirdparty-ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  368. package/skills/thirdparty-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  369. package/skills/thirdparty-ui-ux-pro-max/data/web-interface.csv +31 -0
  370. package/skills/thirdparty-ui-ux-pro-max/scripts/core.py +253 -0
  371. package/skills/thirdparty-ui-ux-pro-max/scripts/design_system.py +1067 -0
  372. package/skills/thirdparty-ui-ux-pro-max/scripts/search.py +114 -0
  373. package/skills/thirdparty-web-interface-guidelines/ATTRIBUTION.md +23 -0
  374. package/skills/thirdparty-web-interface-guidelines/SKILL.md +190 -0
  375. package/skills/workflow-build-feature/SKILL.md +118 -0
  376. package/skills/workflow-coding-discipline/SKILL.md +140 -0
  377. package/skills/workflow-environment-ready/SKILL.md +128 -0
  378. package/skills/workflow-feature-flag/SKILL.md +262 -0
  379. package/skills/workflow-feedback-to-closure/SKILL.md +165 -0
  380. package/skills/workflow-fix-and-ship/SKILL.md +136 -0
  381. package/skills/workflow-git-commit/SKILL.md +200 -0
  382. package/skills/workflow-green-repo/SKILL.md +166 -0
  383. package/skills/workflow-grilling/SKILL.md +73 -0
  384. package/skills/workflow-gtm/SKILL.md +153 -0
  385. package/skills/workflow-housekeep/SKILL.md +453 -0
  386. package/skills/workflow-housekeep/references/templates.md +109 -0
  387. package/skills/workflow-launch-ready/SKILL.md +145 -0
  388. package/skills/workflow-merge-conflicts/SKILL.md +62 -0
  389. package/skills/workflow-onboard/SKILL.md +99 -0
  390. package/skills/workflow-parallel-agents/SKILL.md +164 -0
  391. package/skills/workflow-pr/SKILL.md +197 -0
  392. package/skills/workflow-quality-gate/SKILL.md +147 -0
  393. package/skills/workflow-refactor/SKILL.md +274 -0
  394. package/skills/workflow-release-prep/SKILL.md +207 -0
  395. package/skills/workflow-ship-and-observe/SKILL.md +164 -0
  396. package/skills/workflow-spec-tdd/SKILL.md +141 -0
  397. package/skills/workflow-spec-tdd/references/spec-template.md +126 -0
  398. package/skills/workflow-spec-tdd/references/tdd-patterns.md +167 -0
  399. package/skills-cursor/babysit/SKILL.md +17 -0
  400. package/skills-cursor/canvas/SKILL.md +142 -0
  401. package/skills-cursor/canvas/sdk/canvas-tokens.d.ts +235 -0
  402. package/skills-cursor/canvas/sdk/chart-primitives.d.ts +200 -0
  403. package/skills-cursor/canvas/sdk/dag-layout.d.ts +102 -0
  404. package/skills-cursor/canvas/sdk/diff-view.d.ts +130 -0
  405. package/skills-cursor/canvas/sdk/form-primitives.d.ts +194 -0
  406. package/skills-cursor/canvas/sdk/hooks.d.ts +117 -0
  407. package/skills-cursor/canvas/sdk/index.d.ts +47 -0
  408. package/skills-cursor/canvas/sdk/theme.d.ts +61 -0
  409. package/skills-cursor/canvas/sdk/todo-list.d.ts +49 -0
  410. package/skills-cursor/canvas/sdk/ui-primitives.d.ts +549 -0
  411. package/skills-cursor/canvas/sdk/ui-primitives.test.d.ts +2 -0
  412. package/skills-cursor/create-hook/SKILL.md +238 -0
  413. package/skills-cursor/create-rule/SKILL.md +185 -0
  414. package/skills-cursor/create-skill/SKILL.md +269 -0
  415. package/skills-cursor/create-skill/references/authoring-guide.md +182 -0
  416. package/skills-cursor/create-subagent/SKILL.md +228 -0
  417. package/skills-cursor/migrate-to-skills/SKILL.md +121 -0
  418. package/skills-cursor/shell/SKILL.md +22 -0
  419. package/skills-cursor/split-to-prs/SKILL.md +47 -0
  420. package/skills-cursor/statusline/SKILL.md +193 -0
  421. package/skills-cursor/update-cli-config/SKILL.md +85 -0
  422. package/skills-cursor/update-cursor-settings/SKILL.md +137 -0
  423. package/skills.sh.json +296 -0
@@ -0,0 +1,387 @@
1
+ ---
2
+ name: test-red-team
3
+ description: >
4
+ Red-team a running web, React Native, or Capacitor app. Use when "red team
5
+ this app", "attack my app", "break it", "find all the defects", "adversarial
6
+ test", "pentest the app", "pre-launch hardening", or "full app QA". Monkey
7
+ test → test-exploratory.
8
+ license: MIT
9
+ effort: high
10
+ ---
11
+
12
+ # test-red-team — Adversarial Full-App Defect Sweep
13
+
14
+ **Degree of freedom: MIXED** — matrix and severity `[HIGH freedom]`; ROE,
15
+ harness, and benign-payload confirmation `[LOW freedom — run exactly]`.
16
+ Web driver is **playwright-cli**. Do not write exploit PoCs into the repo.
17
+
18
+ A hostile, skeptical pass across UI/UX, data pipeline, security, and
19
+ performance. Default output is a **severity-ranked defect list**, not inline
20
+ fixes (`test-playwright` is the fix-as-you-go PDCA). Offer to fix after the
21
+ report; ask which defects to prioritize.
22
+ Your turn ends with the Phase 7 report and a matrix with no blank cells — each cell PASS, DEFECT, or N-A with a reason — not with the matrix printed and the sweep still owed.
23
+
24
+ Read `protocol-browser-anti-stall` before any browser action (Rule 0: manual
25
+ & headed) and `references/playwright-session-coordination.md`.
26
+
27
+ > **Attack through the visible UI, by hand.** One real action at a time.
28
+ > `eval` / CDP / WebView attach may **set a condition** (throttle, kill a
29
+ > request, emulate) or **inspect** — never perform the click/type/submit
30
+ > under test. The defect must be reachable the way a real attacker reaches it.
31
+
32
+ ## This skill vs neighbors
33
+
34
+ | Skill | Owns |
35
+ |:------|:-----|
36
+ | **test-red-team** (this) | Adversarial feature×dimension matrix; report first |
37
+ | `test-exploratory` | Naive **guest vs authed** wander (do not reclaim) |
38
+ | `test-qa` | Story/CRUD smoke — not a hostile matrix |
39
+ | `test-playwright` | This-diff PDCA + **fixes** |
40
+ | `audit-llm-security` | Product LLM / prompt-injection depth |
41
+ | `test-load` | Concurrency breaking point (not headed UI) |
42
+ | `audit-security` | Static OWASP checklist |
43
+
44
+ ## How to reason (every cell / finding)
45
+
46
+ 1. **Observe** — screenshot + console + network + DB (for mutations)
47
+ 2. **Interpret** — reachable defect vs expected deny vs untested (N-A)
48
+ 3. **Classify** — PASS / DEFECT / N-A; chain if two cells combine
49
+ 4. **Severity** — Critical/High/Medium/Low/Info by impact × likelihood
50
+
51
+ ## Worked example
52
+
53
+ > **Observe:** User B `GET /api/docs/A-id` → 200 + A's body. `SET ROLE
54
+ > authenticated` + `user_id != auth.uid()` also returns the row.
55
+ > **Interpret:** IDOR; handler has no ownership check.
56
+ > **Classify:** DEFECT (Security / A01). Chain with weak session = takeover.
57
+ > **Severity:** Critical — cross-user data leak.
58
+ > **Evidence:** screenshot + network + SQL. Payload was a read, not a dump/DROP.
59
+
60
+ ---
61
+
62
+ ## Coverage model
63
+
64
+ This is not a blind DOM crawl (`test-qa`) or an unscripted guest-vs-logged-in wander (`test-exploratory`). Traverse a **coverage matrix**:
65
+
66
+ ```
67
+ feature/capability
68
+ → surfaces (routes, sub-pages, API endpoints, RPCs, tables)
69
+ → components + states (forms, tables, modals, empty/error/loading, roles)
70
+ → 4 attack dimensions: UI/UX · data pipeline · security · performance
71
+ ```
72
+
73
+ Each cell (`feature × surface × component-state × dimension`) is **PASS /
74
+ DEFECT / N-A**. The matrix is the plan and the audit trail.
75
+
76
+ **Graceful fallback:** no discernible features (pure marketing) → route →
77
+ component structural traversal.
78
+
79
+ ---
80
+
81
+ ## Phase 0: Scope & rules of engagement [LOW freedom — ROE exact]
82
+
83
+ ### 0a. Detect the stack
84
+
85
+ `package.json` → framework, auth, ORM, RN/Expo, port.
86
+ `capacitor.config.ts/.json` → Capacitor hybrid.
87
+ `app.json` / `app.config.*` → Expo / RN. `android/` → native Android.
88
+
89
+ Record: target type (web / RN/Expo / Capacitor / mixed); dev URL/port;
90
+ auth pattern; test credentials (`.env.local`, `.env.test`, README);
91
+ backend MCPs (Supabase, Sentry, Firecrawl).
92
+
93
+ ### 0b. Pick the automation driver
94
+
95
+ | Target | Driver |
96
+ |--------|--------|
97
+ | Web / PWA / Next.js / SvelteKit / Remix | playwright-cli (`npx --yes @playwright/cli@latest`) |
98
+ | Capacitor WebView on Android emulator | Playwright `_android` WebView attach over ADB (Phase 0c) |
99
+ | Native chrome: system dialogs, sheets, permissions | `adb shell input tap` (`mobile-emulator-test`) |
100
+ | Pure-native iOS/Android (Swift/Kotlin UI) | **Out of scope** — Appium; document as limitation |
101
+
102
+ ### 0c. Capacitor WebView attach (when target includes Capacitor)
103
+
104
+ **Exception to Rule 0:** a native WebView can't be driven by snapshot-ref
105
+ tools, so attaching is the only option. Once attached, still interact like
106
+ a user — don't script the flow end-to-end.
107
+
108
+ ```javascript
109
+ const { _android } = require('playwright');
110
+ const [device] = await _android.devices();
111
+ // ADB online, Chrome ≥ 87, WebView debuggable
112
+ const webview = await device.webView({ pkg: 'com.your.app.id' });
113
+ const page = await webview.page();
114
+ // standard Playwright Page API — not playwright-cli verbs
115
+ ```
116
+
117
+ Native chrome outside the WebView: `adb shell input tap` with coordinates
118
+ from `adb shell uiautomator dump`.
119
+
120
+ ### 0d. Rules of engagement
121
+
122
+ - Test data prefixed `RT-TEST-` for cleanup
123
+ - Do NOT mutate production data; ask before any non-reversible operation
124
+ - Confirm with **benign** evidence; no destructive PoCs against real rows;
125
+ **do not write exploit PoCs into the repo**
126
+ - Secrets by name only — never printed
127
+
128
+ ### 0e. Browser session (before Phases 2–5)
129
+
130
+ 1. Own session — never share or claim another agent's:
131
+
132
+ ```bash
133
+ PW="npx --yes @playwright/cli@latest"
134
+ $PW -s=rt-<app> open --headed --persistent \
135
+ --profile "$HOME/.playwright-cli-profiles/<app>" "<app-url>"
136
+ ```
137
+
138
+ 2. Reuse the signed-in session (`--profile`, or `state-save` /
139
+ `state-load .playwright-mcp/auth/<host>.json`). Google needs the one-time
140
+ real-Chrome login in the coordination reference.
141
+ 3. Never `close-all` / `kill-all`; close only `-s=rt-<app>` when done.
142
+ 4. Do not log out between attack phases unless testing logout/fixation.
143
+
144
+ ---
145
+
146
+ ## Phase 1: Recon & build the coverage matrix [HIGH freedom]
147
+
148
+ Build the matrix from source **before** opening the browser.
149
+
150
+ ### 1a. Enumerate features / capabilities
151
+
152
+ | Source | What to extract |
153
+ |--------|----------------|
154
+ | `src/app/**/page.tsx` (Next.js App Router) | Routes → feature groupings |
155
+ | `src/routes/**/*.tsx` (Remix / RN Router) | Route tree |
156
+ | `features/*/`, `modules/*/`, `src/*/` | Feature boundary names |
157
+ | `supabase/migrations/*.sql`, `prisma/schema.prisma` | Entities + relationships |
158
+ | `src/app/api/**`, `supabase/functions/**` | API endpoints + RPCs |
159
+ | README / feature docs | Business capability names |
160
+ | Nav / sidebar / tab bar | User-visible feature map |
161
+
162
+ ### 1b. For each feature, decompose
163
+
164
+ ```
165
+ Feature: [name]
166
+ Surfaces: routes/pages, deep links, API/RPCs, DB tables
167
+ Components + states: default/empty/loading/error/role-A/role-B; forms;
168
+ modals; file uploads
169
+ Roles / tenants: anon, user, admin, org-member, …
170
+ Input surfaces: fields, URL params, query strings, headers, file content
171
+ ```
172
+
173
+ ### 1c. Output the matrix
174
+
175
+ Print before Phases 2–5. Fill ✅ PASS / ❌ DEFECT(#N) / — N-A as you go.
176
+
177
+ ```
178
+ COVERAGE MATRIX
179
+ | Feature | Surface/Component+State | UI/UX | Pipeline | Security | Perf |
180
+ |-----------|--------------------------------|-------|----------|----------|------|
181
+ | Auth | Login form / empty | | | | |
182
+ | Auth | Login form / error | | | | |
183
+ | Documents | List / empty · 100+ · create · share/other-user | | | | |
184
+ ```
185
+
186
+ ---
187
+
188
+ ## Phase 2: UI/UX red team (per matrix cell) [HIGH freedom]
189
+
190
+ **Driver:** playwright-cli — `goto`, `snapshot`, `screenshot`, `click`,
191
+ `type`, `fill`, `console`, `requests`, `resize`.
192
+
193
+ | Attack | What to do |
194
+ |--------|-----------|
195
+ | 3-second clarity | Cold navigate. Purpose obvious in 3 s? |
196
+ | Primary action | CTA obvious, above the fold, 1 tap? |
197
+ | Empty / loading / error | Fresh account; throttle (`eval`/CDP); kill API. Human-readable states? |
198
+ | Dead buttons | Every button/link produces a visible response |
199
+ | Form labels | Every `<input>` has a visible label or `aria-label` |
200
+ | Responsive | `resize` 1280×800, 768×1024, 375×812 — no break |
201
+ | Dark mode | Toggle if supported. No white flash / invisible text |
202
+ | Role variant | Same surface as each role — different data/controls |
203
+ | Overflow | 200-char strings, fat numbers — no clip without ellipsis |
204
+
205
+ `screenshot` every DEFECT. Note the component path if identifiable.
206
+
207
+ ---
208
+
209
+ ## Phase 3: Data pipeline red team (per matrix cell) [LOW freedom — 3-layer verify]
210
+
211
+ Every mutation surface (create / update / delete / upload). Verify at
212
+ **(1) UI (2) network (3) DB**. Look up Supabase schemas first, then:
213
+
214
+ ```json
215
+ supabase:execute_sql
216
+ {
217
+ "query": "SELECT * FROM <table> WHERE <col> LIKE 'RT-TEST-%' ORDER BY created_at DESC LIMIT 10"
218
+ }
219
+ ```
220
+
221
+ RLS (what the client can actually read/write):
222
+
223
+ ```json
224
+ supabase:execute_sql
225
+ {
226
+ "query": "SET ROLE authenticated; SELECT * FROM <table> WHERE user_id != auth.uid() LIMIT 5"
227
+ }
228
+ ```
229
+
230
+ Also `list_tables`, `query_logs` (`source = 'edge_logs'` or
231
+ `'postgres_logs'`), `get_advisors`.
232
+ Unexpected 5xx, unhandled exceptions, RLS denies, and new ERROR advisors
233
+ are pipeline defects.
234
+
235
+ | Attack | How |
236
+ |--------|-----|
237
+ | Double-submit dupe | Click submit twice. Duplicate row? |
238
+ | Optimistic-update lie | Submit → immediately check DB. Row landed? |
239
+ | Stale cache | Mutate in one tab, reload the other |
240
+ | Ghost delete | Delete, reload. Reappears? |
241
+ | Race / partial write | Two conflicting mutations; kill network mid-request (`eval` `fetch` override). Consistent? |
242
+ | Idempotency | Replay the same request. Safe? |
243
+ | Relationship integrity | Delete parent. Orphans cleaned or guarded? |
244
+ | Pagination consistency | Create while on page 2. Right position? |
245
+
246
+ ---
247
+
248
+ ## Phase 4: Security red team (per matrix cell, OWASP-mapped) [HIGH freedom; payloads = LOW]
249
+
250
+ Full payload tables: `references/owasp-attack-checklist.md`. Confirm with
251
+ **benign** payloads (`document.title='XSS'`, `SELECT 1`) — never `DROP TABLE`,
252
+ never real exfil, **never commit an exploit PoC**.
253
+
254
+ Priority (highest real-world impact first):
255
+
256
+ | # | Class (OWASP) | Key test |
257
+ |---|---------------|----------|
258
+ | 1 | Authorization / IDOR (A01) | User B reads/mutates User A's resource by ID; verify at DB with `SET ROLE authenticated` |
259
+ | 2 | Authentication (A07) | Reset-token reuse, session fixation, JWT tampering, missing lockout |
260
+ | 3 | Injection (A03) | XSS / SQLi / path traversal in every input — benign confirm only |
261
+ | 4 | Sensitive data (A02) | API leaks `password`/`token`/PII? Tokens in `localStorage`? Env in bundle? |
262
+ | 5 | Security headers | Missing CSP, HSTS, `X-Content-Type-Options`, `X-Frame-Options`, `Referrer-Policy` |
263
+ | 6 | Capacitor MASVS | `allowUniversalAccessFromFileURLs`? Unvalidated bridge? XSS → native plugin? |
264
+
265
+ Correlate with Sentry (401/403/CSP, last 30 days) and current OWASP via Firecrawl.
266
+
267
+ ---
268
+
269
+ ## Phase 5: Performance red team (per matrix cell) [HIGH freedom; throttle setup = LOW]
270
+
271
+ Condition-setup only — then drive load/scroll/submit by hand.
272
+
273
+ ```javascript
274
+ const client = await page.context().newCDPSession(page);
275
+ await client.send('Network.emulateNetworkConditions', {
276
+ offline: false, downloadThroughput: 50 * 1024 / 8,
277
+ uploadThroughput: 20 * 1024 / 8, latency: 300
278
+ });
279
+ ```
280
+
281
+ Capacitor/Android: `adb shell tc qdisc add dev wlan0 root netem delay 300ms`.
282
+
283
+ | Attack | What to look for |
284
+ |--------|-----------------|
285
+ | Cold load (hard refresh) | TTI > 3 s on simulated 3G? Layout shift? |
286
+ | Large list (50+) | Scroll jank? Virtualize or render all nodes? |
287
+ | Pagination / infinite scroll | Dupes or missing items at the boundary? |
288
+ | Payload size | `requests` → list response > 500 KB? |
289
+ | Memory growth | Large list, scroll bottom↔top × 5. Unbounded heap? |
290
+ | Simultaneous requests | Rapid nav. Loading-state races? |
291
+ | Supabase N+1 | `query_logs` on `source = 'postgres_logs'` after the feature. Repeated identical queries? |
292
+
293
+ Same `get_advisors` as Phase 3: missing indexes, seq scans, bloated RLS =
294
+ Medium–High perf defects.
295
+
296
+ ---
297
+
298
+ ## Phase 6: Finding-chaining & triage [HIGH freedom]
299
+
300
+ Scan DEFECT cells for chains before the report:
301
+
302
+ - Two Mediums often combine into High/Critical (reflected input + missing
303
+ CSP = stored XSS).
304
+ - Auth weakness + IDOR = account takeover.
305
+ - Stale cache + no optimistic revert = silent corruption.
306
+
307
+ | Field | Options |
308
+ |-------|---------|
309
+ | Severity | Critical / High / Medium / Low / Info |
310
+ | Likelihood | High (trivial) / Medium (needs access) / Low (theoretical) |
311
+ | Impact | Data loss / takeover / PII leak / UX degradation / perf SLA |
312
+ | Affected component | `src/components/Foo.tsx`, `supabase/functions/bar`, … |
313
+ | Remediation | File/function-level fix, not vague advice |
314
+
315
+ ---
316
+
317
+ ## Phase 7: Defect report (the deliverable) [LOW freedom — this shape]
318
+
319
+ ```markdown
320
+ ## Red-Team Defect Report — [App / Repo] — [Date]
321
+
322
+ ### Scope
323
+ - Target type: [web | RN | Capacitor | mixed]
324
+ - Dev URL: [...] Auth: [...]
325
+ - Features red-teamed: [list]
326
+ - Coverage matrix: [link or inline]
327
+
328
+ ### Critical Defects (fix before any release)
329
+ | # | Feature | Surface / Component+State | Finding | Evidence | File | Remediation |
330
+ |---|---------|--------------------------|---------|----------|------|-------------|
331
+ | 1 | Auth | Login / error | IDOR: B reads A via GET /api/docs/:id | Screenshot+network | src/app/api/docs/[id]/route.ts | `WHERE user_id = auth.uid()` |
332
+
333
+ ### High / Medium / Low / Info
334
+ Same columns. Group by severity.
335
+
336
+ ### Attack chains identified
337
+ 1. [Finding #N] + [Finding #M] → [combined impact and path]
338
+
339
+ ### Coverage matrix (final)
340
+ | Feature | Surface/Component+State | UI/UX | Pipeline | Security | Perf |
341
+ |---------|------------------------|-------|----------|----------|------|
342
+
343
+ ### Backend truth-check
344
+ - Sentry: [new/related — count + highest severity]
345
+ - Supabase: [advisors, logs, RLS results]
346
+
347
+ ### Launch-readiness verdict
348
+ **Ready / Ready after Critical fixes / Not ready** — [2-sentence justification]
349
+
350
+ ### Test data cleanup
351
+ - RT-TEST-* rows deleted: [Y/N / N-A]
352
+ ```
353
+
354
+ ## Self-critique before reporting [LOW freedom — do not skip]
355
+
356
+ 1. **No exploit PoC** — benign confirm only; nothing committed to the repo
357
+ 2. **Every DEFECT evidenced** — screenshot + console + network (+ DB for mutations)
358
+ 3. **Untested ≠ PASS** — untested cells are N-A with why
359
+ 4. **Right owner** — guest wander → `test-exploratory`; LLM inject →
360
+ `audit-llm-security`; load → `test-load`
361
+ 5. **Report first** — fix only after the user picks Critical/High
362
+
363
+ ---
364
+
365
+ ## Guardrails
366
+
367
+ 1. **Manual & headed, never scripted** — attack through the visible UI;
368
+ code execution is condition-setup/inspection only; no `*.spec.ts`, no
369
+ `npx playwright test`.
370
+ 2. **Anti-stall always** — never block >3 s; max 4 attempts; `[TIMEOUT]` and move on.
371
+ 3. **Evidence for every DEFECT** — screenshot + console + network + DB.
372
+ "It looked broken" is not a defect.
373
+ 4. **No destructive PoCs** — benign payloads only; never `DROP TABLE` or
374
+ real exfil; do not write exploit PoCs into the repo.
375
+ 5. **Ask before mutating production rows** — requested DDL may ship;
376
+ `DELETE`/`UPDATE`/`TRUNCATE` on real prod data asks first.
377
+ 6. **Secrets by name only.**
378
+ 7. **Honest verdict** — untested cells are N-A, not PASS.
379
+ 8. **Offer to fix after the report** — then `test-playwright` PDCA.
380
+ 9. **MCP schemas first** — read the server's tool schema before any MCP call.
381
+ 10. **Pure-native iOS/Android out of scope** — say so in the report.
382
+
383
+ ## Related
384
+
385
+ - `audit-llm-security` — product LLM / prompt-injection depth
386
+ - `test-load` — concurrency breaking point (not a headed UI attack)
387
+ - `test-playwright` / `test-qa` / `audit-security` / `iterate-post-launch`
@@ -0,0 +1,193 @@
1
+ # OWASP Attack Checklist & Payload Library
2
+
3
+ Reference for Phase 4 (Security red team) of `test-red-team`. Load this file
4
+ when you need exhaustive payloads or the full OWASP mapping table.
5
+
6
+ ---
7
+
8
+ ## OWASP Top 10:2021 — Red-team mapping
9
+
10
+ IDs follow the 2021 edition; check https://owasp.org/www-project-top-ten/ for
11
+ the current edition before citing an ID.
12
+
13
+ | ID | Name | Red-team action |
14
+ |----|------|----------------|
15
+ | A01 | Broken Access Control | IDOR, tenant-boundary, privilege escalation, RLS bypass |
16
+ | A02 | Cryptographic Failures | PII in responses/localStorage, HTTP vs HTTPS, weak token entropy |
17
+ | A03 | Injection | XSS, SQLi, template injection, path traversal, SSRF |
18
+ | A04 | Insecure Design | Business-logic abuse, workflow skip, missing rate limits |
19
+ | A05 | Security Misconfiguration | Security headers, CORS, error messages leaking stack traces |
20
+ | A06 | Vulnerable Components | `npm audit`, outdated deps with known CVEs |
21
+ | A07 | Auth Failures | Brute force, session fixation, JWT tampering, account takeover |
22
+ | A08 | Software & Data Integrity | Supply-chain, unverified file uploads, unsafe deserialization |
23
+ | A09 | Logging Failures | Sentry blind spots, missing audit logs for sensitive actions |
24
+ | A10 | SSRF | URLs in user input used for backend fetch |
25
+
26
+ ---
27
+
28
+ ## XSS payloads (confirm with benign effect only)
29
+
30
+ ```
31
+ <script>document.title='XSS-CONFIRM'</script>
32
+ <img src=x onerror="document.title='XSS-CONFIRM'">
33
+ <svg onload="document.title='XSS-CONFIRM'">
34
+ javascript:document.title='XSS-CONFIRM'
35
+ "><script>document.title='XSS-CONFIRM'</script>
36
+ ' onmouseover='document.title="XSS-CONFIRM"
37
+ {{constructor.constructor('document.title="XSS-CONFIRM"')()}}
38
+ ${7*7} (template literal check — expect 49)
39
+ <%= 7*7 %> (ERB / EJS check)
40
+ #{7*7} (Ruby ERB)
41
+ ```
42
+
43
+ A hit is confirmed when: the injected string appears un-escaped in the DOM,
44
+ `document.title` changes, or the expression is evaluated server-side (49 appears).
45
+ Never use `alert()` — use `document.title` to avoid browser popups.
46
+
47
+ ---
48
+
49
+ ## SQL injection probes (safe read-only)
50
+
51
+ ```
52
+ ' (single quote — triggers syntax error)
53
+ ' OR '1'='1 (classic always-true)
54
+ ' OR 1=1-- (comment-out rest of query)
55
+ '; SELECT pg_sleep(2)-- (time-based blind — expect 2s delay)
56
+ ' UNION SELECT null,null-- (column count probe)
57
+ " OR ""=" (double-quote variant)
58
+ \x00 (null byte)
59
+ 1; DROP TABLE users-- (never actually run — shows intent, blocked by parameterized queries)
60
+ ```
61
+
62
+ Confirm by: syntax error in response, unusual delay (blind SQLi), unexpected
63
+ data in response. A parameterized-query app will return a normal 400/422.
64
+
65
+ ---
66
+
67
+ ## Path traversal probes
68
+
69
+ ```
70
+ ../../etc/passwd
71
+ ..%2F..%2Fetc%2Fpasswd
72
+ ....//....//etc/passwd
73
+ %2e%2e%2f%2e%2e%2fetc%2fpasswd
74
+ /etc/passwd%00.jpg (null byte truncation for file ext bypass)
75
+ ```
76
+
77
+ ---
78
+
79
+ ## SSRF probes (for URL-accepting inputs)
80
+
81
+ ```
82
+ http://localhost/
83
+ http://127.0.0.1/
84
+ http://169.254.169.254/latest/meta-data/ (AWS metadata)
85
+ http://metadata.google.internal/
86
+ http://[::1]/
87
+ file:///etc/passwd
88
+ ```
89
+
90
+ ---
91
+
92
+ ## Authentication attack checklist
93
+
94
+ - [ ] Password reset token entropy: generate 2 reset tokens, are they sequential/guessable?
95
+ - [ ] Password reset token reuse: use the same token twice — second use must be rejected.
96
+ - [ ] Password reset token expiry: wait >15 min, use old token — must be expired.
97
+ - [ ] Login brute force: 10 rapid attempts with wrong password — rate limit or lockout?
98
+ - [ ] JWT `alg: none` bypass: send JWT with `"alg":"none"` and no signature.
99
+ - [ ] JWT secret: try weak secrets (`secret`, `password`, `changeme`) via jwt.io debugger.
100
+ - [ ] JWT payload tampering: decode, change `role` to `admin` or `user_id` to another user.
101
+ - [ ] Session cookie flags: `HttpOnly`, `Secure`, `SameSite=Strict`/`Lax` required.
102
+ - [ ] Token storage: tokens must NOT be in `localStorage` (XSS-accessible); use HttpOnly cookies.
103
+ - [ ] OAuth state: state param present, validated server-side (CSRF protection for OAuth).
104
+
105
+ ---
106
+
107
+ ## IDOR test procedure (per resource type)
108
+
109
+ 1. Create resource as **User A** (get its ID from the response or URL).
110
+ 2. Log in as **User B** (different account, same or lower role).
111
+ 3. Access the resource directly:
112
+ - `GET /api/resource/<id>`
113
+ - `PUT /api/resource/<id>` with modified payload
114
+ - `DELETE /api/resource/<id>`
115
+ 4. Expected: 404 or 403. **DEFECT** if: data returned, mutation succeeds, or
116
+ error leaks the resource exists (200 with "not found" message = info leak).
117
+ 5. Verify at DB: `SELECT * FROM resource WHERE id = '<id>'` — should be User A's row.
118
+
119
+ ---
120
+
121
+ ## Tenant-boundary test procedure (multi-tenant apps)
122
+
123
+ 1. Create records in **Org A** context.
124
+ 2. Switch to **Org B** context (URL param, header, or UI switcher).
125
+ 3. Navigate to the same feature. **DEFECT** if Org A's data is visible.
126
+ 4. Directly call the API with Org A's resource IDs while authenticated as Org B user.
127
+ 5. Verify RLS via Supabase MCP: `SET ROLE authenticated; SET LOCAL request.jwt.claims = '{"sub":"<org_b_user_id>","role":"authenticated"}'; SELECT * FROM org_resources WHERE org_id = '<org_a_id>'` — must return 0 rows.
128
+
129
+ ---
130
+
131
+ ## File upload attack checklist
132
+
133
+ - [ ] Upload a file with a `.php`, `.js`, `.py`, `.sh` extension. Expect rejection.
134
+ - [ ] Upload an SVG with embedded `<script>`. If served back, XSS vector.
135
+ - [ ] Upload a file with MIME type `text/html` but `.jpg` extension (MIME sniffing).
136
+ - [ ] Upload a 100 MB file. Expect file-size rejection, not server crash.
137
+ - [ ] Upload a ZIP bomb (if archive uploads accepted).
138
+ - [ ] Upload a file with a path-traversal filename: `../../evil.sh`.
139
+ - [ ] Upload a valid image with embedded EXIF data containing XSS payload.
140
+
141
+ ---
142
+
143
+ ## Security headers checklist
144
+
145
+ | Header | Required value | Defect if missing/wrong |
146
+ |--------|---------------|------------------------|
147
+ | `Strict-Transport-Security` | `max-age=31536000; includeSubDomains` | High |
148
+ | `Content-Security-Policy` | Specific directives, not `default-src *` | High |
149
+ | `X-Content-Type-Options` | `nosniff` | Medium |
150
+ | `X-Frame-Options` | `DENY` or `SAMEORIGIN` | Medium |
151
+ | `Referrer-Policy` | `strict-origin-when-cross-origin` or stricter | Low |
152
+ | `Permissions-Policy` | Restrict unnecessary browser features | Low |
153
+ | `CORS Access-Control-Allow-Origin` | Must NOT be `*` for authenticated endpoints | High |
154
+
155
+ ---
156
+
157
+ ## MASVS-PLATFORM checks (Capacitor / hybrid apps)
158
+
159
+ | Control | MASVS ID | What to check |
160
+ |---------|----------|--------------|
161
+ | WebView allows all file access | MASVS-PLATFORM-2 | `allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs` in `AndroidManifest.xml` / `MainViewController.swift` — must be false |
162
+ | JavaScript enabled on untrusted content | MASVS-PLATFORM-2 | WebView that loads remote URLs must not also bridge to native file system |
163
+ | JS-to-native bridge exposed | MASVS-PLATFORM-2 | All Capacitor plugins must validate input before calling native APIs |
164
+ | Deep-link scheme abuse | MASVS-PLATFORM-1 | Can an external app trigger a deep link with crafted params? Validate all deep-link params. |
165
+ | Exported activities | MASVS-PLATFORM-1 | `android:exported="true"` activities must not expose sensitive functionality |
166
+ | Screenshot prevention | MASVS-PLATFORM-3 | `FLAG_SECURE` set for screens showing PII? |
167
+ | Keyboard cache | MASVS-PLATFORM-3 | Password fields use `inputType=textPassword` (disables autocorrect cache) |
168
+ | Clipboard leakage | MASVS-PLATFORM-3 | Sensitive fields should not be copyable |
169
+
170
+ ---
171
+
172
+ ## Performance benchmark thresholds
173
+
174
+ | Metric | Target | DEFECT threshold |
175
+ |--------|--------|-----------------|
176
+ | Time to First Byte (TTFB) | < 200 ms | > 600 ms = High |
177
+ | Largest Contentful Paint (LCP) | < 2.5 s | > 4 s = High |
178
+ | Cumulative Layout Shift (CLS) | < 0.1 | > 0.25 = Medium |
179
+ | Total Blocking Time (TBT) | < 200 ms | > 600 ms = High |
180
+ | API response (list endpoint) | < 300 ms | > 1000 ms = Medium |
181
+ | API response (single item) | < 100 ms | > 500 ms = Medium |
182
+ | JS bundle (initial) | < 200 KB gzip | > 500 KB = Medium |
183
+ | Largest single network payload | < 500 KB | > 1 MB = Medium |
184
+
185
+ Measure LCP/CLS with:
186
+ ```javascript
187
+ // eval
188
+ const entries = performance.getEntriesByType('paint');
189
+ const lcp = await new Promise(resolve => {
190
+ new PerformanceObserver(list => resolve(list.getEntries().at(-1)?.startTime))
191
+ .observe({ type: 'largest-contentful-paint', buffered: true });
192
+ });
193
+ ```