@kensaurus/skills 0.0.0-stage → 2.1.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 (425) 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 +1790 -0
  6. package/LICENSE +21 -0
  7. package/LICENSE-APACHE +62 -0
  8. package/NOTICE +13 -0
  9. package/README.md +821 -2
  10. package/SECURITY.md +55 -0
  11. package/agents/code-reviewer.md +60 -0
  12. package/agents/completion-judge.md +89 -0
  13. package/agents/db-migrator.md +125 -0
  14. package/agents/debugger.md +47 -0
  15. package/agents/deploy-checker.md +100 -0
  16. package/agents/perf-monitor.md +74 -0
  17. package/assets/favicon.png +0 -0
  18. package/assets/logo-light.png +0 -0
  19. package/assets/logo.png +0 -0
  20. package/assets/logo.svg +6 -0
  21. package/assets/og.png +0 -0
  22. package/bin/install.mjs +1127 -0
  23. package/bin/kenji.js +2 -0
  24. package/commands/adr.md +17 -0
  25. package/commands/aeo-plan.md +18 -0
  26. package/commands/arch-boundaries.md +17 -0
  27. package/commands/aso-plan.md +18 -0
  28. package/commands/auth-flows.md +19 -0
  29. package/commands/backup-plan.md +17 -0
  30. package/commands/burndown-full.md +25 -0
  31. package/commands/capacitor-plan.md +18 -0
  32. package/commands/codemod-safety.md +22 -0
  33. package/commands/commit.md +18 -0
  34. package/commands/complete-everything.md +40 -0
  35. package/commands/cost-plan.md +19 -0
  36. package/commands/deadcode-plan.md +26 -0
  37. package/commands/deadcode.md +32 -0
  38. package/commands/debug-issue.md +17 -0
  39. package/commands/deps-plan.md +18 -0
  40. package/commands/docs-plan.md +17 -0
  41. package/commands/doctrine.md +19 -0
  42. package/commands/error-plan.md +19 -0
  43. package/commands/feedback-to-closure.md +36 -0
  44. package/commands/fix-issue.md +76 -0
  45. package/commands/gate-logic.md +26 -0
  46. package/commands/green-repo.md +36 -0
  47. package/commands/grill-me.md +19 -0
  48. package/commands/gtm-plan.md +21 -0
  49. package/commands/gtm-weekly.md +17 -0
  50. package/commands/gtm.md +22 -0
  51. package/commands/handoff.md +15 -0
  52. package/commands/housekeep-backlog.md +18 -0
  53. package/commands/housekeep-files.md +22 -0
  54. package/commands/housekeep-gates.md +18 -0
  55. package/commands/instant-nav.md +11 -0
  56. package/commands/integrity-plan.md +19 -0
  57. package/commands/launch-kit.md +16 -0
  58. package/commands/mcp-guide.md +40 -0
  59. package/commands/mobile-plan.md +19 -0
  60. package/commands/native-rn-monorepo/README.md +78 -0
  61. package/commands/native-rn-monorepo/android-build.md +26 -0
  62. package/commands/native-rn-monorepo/android-install.md +32 -0
  63. package/commands/native-rn-monorepo/android-logcat.md +37 -0
  64. package/commands/native-rn-monorepo/ios-ci-logs.md +56 -0
  65. package/commands/native-rn-monorepo/ios-ci-status.md +52 -0
  66. package/commands/native-rn-monorepo/ios-ci-trigger.md +59 -0
  67. package/commands/native-rn-monorepo/rn-reset.md +50 -0
  68. package/commands/native-rn-monorepo/rn-ship-ios.md +67 -0
  69. package/commands/native-rn-monorepo/rn-verify.md +53 -0
  70. package/commands/perf-plan.md +18 -0
  71. package/commands/plan-mode.md +74 -0
  72. package/commands/pr.md +16 -0
  73. package/commands/pricing-plan.md +20 -0
  74. package/commands/privacy-plan.md +18 -0
  75. package/commands/readability.md +12 -0
  76. package/commands/readme.md +15 -0
  77. package/commands/refactor.md +15 -0
  78. package/commands/release-prep.md +17 -0
  79. package/commands/research.md +25 -0
  80. package/commands/responsive-audit.md +21 -0
  81. package/commands/review-code.md +18 -0
  82. package/commands/rls-plan.md +18 -0
  83. package/commands/secrets-plan.md +18 -0
  84. package/commands/security-plan.md +19 -0
  85. package/commands/ship-and-observe.md +36 -0
  86. package/commands/skill-conflicts.md +19 -0
  87. package/commands/slop-plan.md +18 -0
  88. package/commands/stub-plan.md +18 -0
  89. package/commands/test-mutation.md +16 -0
  90. package/commands/test-plan.md +17 -0
  91. package/commands/test.md +29 -0
  92. package/commands/thirdparty-web-interface-guidelines.md +185 -0
  93. package/commands/uiux-plan.md +18 -0
  94. package/commands/uiux.md +45 -0
  95. package/commands/update-deps.md +21 -0
  96. package/commands/validation-plan.md +19 -0
  97. package/commands-portable/fix-issue.md +72 -0
  98. package/commands-portable/plan-mode.md +92 -0
  99. package/commands-portable/research.md +91 -0
  100. package/docs/screenshots/README.md +5 -0
  101. package/docs/screenshots/audit-dark.png +0 -0
  102. package/docs/screenshots/build-dark.png +0 -0
  103. package/docs/screenshots/grill-dark.png +0 -0
  104. package/docs/screenshots/hero-dark.png +0 -0
  105. package/docs/screenshots/hero-light.png +0 -0
  106. package/docs/screenshots/ship-dark.png +0 -0
  107. package/docs/screenshots/src/showcase.html +320 -0
  108. package/hooks/completion-gate.mjs +258 -0
  109. package/hooks/cursor-hooks.json +13 -0
  110. package/hooks/hooks.json +15 -0
  111. package/install.sh +21 -0
  112. package/llms.txt +40 -0
  113. package/mcp/README.md +266 -0
  114. package/mcp/VERSIONS.md +41 -0
  115. package/mcp/mcp-full.json.template +124 -0
  116. package/mcp/mcp.json.template +29 -0
  117. package/mcp/pinned-versions.json +27 -0
  118. package/package.json +94 -4
  119. package/rules/approved-plan-execution.mdc +65 -0
  120. package/rules/full-stack-ship-discipline.mdc +37 -0
  121. package/rules/native-rn-monorepo/README.md +63 -0
  122. package/rules/native-rn-monorepo/_project.mdc +69 -0
  123. package/rules/native-rn-monorepo/native-android.mdc +72 -0
  124. package/rules/native-rn-monorepo/native-ios.mdc +61 -0
  125. package/rules/native-rn-monorepo/react-native-js.mdc +78 -0
  126. package/rules/native-rn-monorepo/web.mdc +60 -0
  127. package/rules/project-starter/components.mdc +54 -0
  128. package/rules/project-starter/data-fetching.mdc +77 -0
  129. package/rules/project-starter/git.mdc +41 -0
  130. package/rules/project-starter/supabase.mdc +37 -0
  131. package/rules/project-starter/tailwind.mdc +48 -0
  132. package/rules/project-starter/typescript.mdc +36 -0
  133. package/rules/project-starter/web-performance.mdc +42 -0
  134. package/rules/senior-engineer.mdc +30 -0
  135. package/rules/shell-first-search.mdc +19 -0
  136. package/rules/skill-workflows.mdc +35 -0
  137. package/rules/verification-before-completion.mdc +57 -0
  138. package/skills/audit-accessibility/SKILL.md +441 -0
  139. package/skills/audit-agent-speed/SKILL.md +181 -0
  140. package/skills/audit-agent-speed/scripts/stop-typecheck.mjs +151 -0
  141. package/skills/audit-analytics/SKILL.md +138 -0
  142. package/skills/audit-auth-flows/SKILL.md +267 -0
  143. package/skills/audit-backend-architecture/SKILL.md +266 -0
  144. package/skills/audit-backend-architecture/references/patterns.md +386 -0
  145. package/skills/audit-bundle-size/SKILL.md +295 -0
  146. package/skills/audit-cicd/SKILL.md +218 -0
  147. package/skills/audit-code-quality/SKILL.md +314 -0
  148. package/skills/audit-code-review/SKILL.md +289 -0
  149. package/skills/audit-codemod-safety/SKILL.md +159 -0
  150. package/skills/audit-db-schema/SKILL.md +465 -0
  151. package/skills/audit-db-schema/references/details.md +110 -0
  152. package/skills/audit-doctrine/SKILL.md +189 -0
  153. package/skills/audit-env-parity/SKILL.md +133 -0
  154. package/skills/audit-fe-api/SKILL.md +458 -0
  155. package/skills/audit-gate-logic/SKILL.md +219 -0
  156. package/skills/audit-i18n/SKILL.md +339 -0
  157. package/skills/audit-infra-cost/SKILL.md +142 -0
  158. package/skills/audit-langfuse-llm/SKILL.md +468 -0
  159. package/skills/audit-langfuse-llm/references/details.md +226 -0
  160. package/skills/audit-llm-security/SKILL.md +147 -0
  161. package/skills/audit-monetization-iap/SKILL.md +137 -0
  162. package/skills/audit-payment-system/SKILL.md +268 -0
  163. package/skills/audit-payment-system/references/checklist.md +283 -0
  164. package/skills/audit-performance/SKILL.md +383 -0
  165. package/skills/audit-performance/references/loading-priority-2026.md +81 -0
  166. package/skills/audit-realworld/SKILL.md +287 -0
  167. package/skills/audit-registry-listing/SKILL.md +122 -0
  168. package/skills/audit-resilience/SKILL.md +153 -0
  169. package/skills/audit-responsive/SKILL.md +221 -0
  170. package/skills/audit-responsive/references/checklist.md +166 -0
  171. package/skills/audit-security/SKILL.md +289 -0
  172. package/skills/audit-skill-conflicts/SKILL.md +178 -0
  173. package/skills/audit-ui-states/SKILL.md +146 -0
  174. package/skills/audit-uiux-design-system/SKILL.md +475 -0
  175. package/skills/audit-uiux-design-system/references/details.md +71 -0
  176. package/skills/audit-ux/SKILL.md +381 -0
  177. package/skills/audit-ux/references/details.md +245 -0
  178. package/skills/audit-ux-journeys/SKILL.md +215 -0
  179. package/skills/audit-ux-journeys/references/checklist.md +179 -0
  180. package/skills/backend-db-performance/SKILL.md +441 -0
  181. package/skills/backend-error-handling/SKILL.md +489 -0
  182. package/skills/backend-error-handling/references/details.md +58 -0
  183. package/skills/backend-observability/SKILL.md +88 -0
  184. package/skills/backend-patterns/SKILL.md +499 -0
  185. package/skills/backend-patterns/references/architecture-patterns.md +298 -0
  186. package/skills/backend-realtime/SKILL.md +403 -0
  187. package/skills/backend-realtime/references/patterns.md +74 -0
  188. package/skills/burndown-full/SKILL.md +174 -0
  189. package/skills/complete-everything/SKILL.md +295 -0
  190. package/skills/data-pipeline/SKILL.md +109 -0
  191. package/skills/data-visualization/SKILL.md +488 -0
  192. package/skills/debug-error/SKILL.md +322 -0
  193. package/skills/debug-fe-be-integration/SKILL.md +459 -0
  194. package/skills/debug-sentry-monitor/SKILL.md +497 -0
  195. package/skills/debug-sentry-monitor/references/details.md +165 -0
  196. package/skills/deploy-npm/SKILL.md +394 -0
  197. package/skills/deploy-npm/references/example-mushi-mushi.md +52 -0
  198. package/skills/deploy-verify/SKILL.md +489 -0
  199. package/skills/design-api/SKILL.md +379 -0
  200. package/skills/design-canvas/SKILL.md +155 -0
  201. package/skills/design-email/SKILL.md +370 -0
  202. package/skills/design-frontend/SKILL.md +143 -0
  203. package/skills/design-generative-art/SKILL.md +474 -0
  204. package/skills/design-mobile-first/SKILL.md +506 -0
  205. package/skills/design-motion/SKILL.md +333 -0
  206. package/skills/design-motion/references/delight-interactions.md +191 -0
  207. package/skills/design-prd/SKILL.md +443 -0
  208. package/skills/design-system/SKILL.md +457 -0
  209. package/skills/design-theme/SKILL.md +226 -0
  210. package/skills/design-theme/themes/tsumagoi-ranch.md +150 -0
  211. package/skills/docs-adr/SKILL.md +168 -0
  212. package/skills/docs-coauthor/SKILL.md +368 -0
  213. package/skills/docs-comparison-pages/SKILL.md +117 -0
  214. package/skills/docs-domain-modeling/SKILL.md +97 -0
  215. package/skills/docs-launch-kit/SKILL.md +139 -0
  216. package/skills/docs-writer/SKILL.md +469 -0
  217. package/skills/enhance-agent-guardrails/SKILL.md +164 -0
  218. package/skills/enhance-arch-boundaries/SKILL.md +154 -0
  219. package/skills/enhance-capacitor-ui/SKILL.md +463 -0
  220. package/skills/enhance-capacitor-ui/references/details.md +750 -0
  221. package/skills/enhance-email-deliverability/SKILL.md +143 -0
  222. package/skills/enhance-growth-loops/SKILL.md +122 -0
  223. package/skills/enhance-lifecycle-email/SKILL.md +130 -0
  224. package/skills/enhance-motion/SKILL.md +193 -0
  225. package/skills/enhance-onboarding/SKILL.md +148 -0
  226. package/skills/enhance-pwa/SKILL.md +303 -0
  227. package/skills/enhance-readability/SKILL.md +146 -0
  228. package/skills/enhance-readme/SKILL.md +496 -0
  229. package/skills/enhance-readme/package-lock.json +187 -0
  230. package/skills/enhance-readme/package.json +17 -0
  231. package/skills/enhance-readme/scripts/generate-readme-blocks.mjs +199 -0
  232. package/skills/enhance-readme/scripts/record-readme-tour.mjs +442 -0
  233. package/skills/enhance-skill-prompts/SKILL.md +167 -0
  234. package/skills/enhance-skill-prompts/references/exemplar-audit-auth-flows.md +311 -0
  235. package/skills/enhance-ux-laws/SKILL.md +409 -0
  236. package/skills/enhance-web-conversion/SKILL.md +155 -0
  237. package/skills/enhance-web-forms/SKILL.md +154 -0
  238. package/skills/enhance-web-instant-nav/SKILL.md +138 -0
  239. package/skills/enhance-web-instant-nav/references/bfcache-blockers.md +23 -0
  240. package/skills/enhance-web-instant-nav/references/early-hints.md +33 -0
  241. package/skills/enhance-web-instant-nav/references/speculation-rules.md +44 -0
  242. package/skills/enhance-web-landing/SKILL.md +459 -0
  243. package/skills/enhance-web-landing/references/details.md +773 -0
  244. package/skills/enhance-web-redesign/SKILL.md +228 -0
  245. package/skills/enhance-web-seo/SKILL.md +276 -0
  246. package/skills/enhance-web-ui/SKILL.md +473 -0
  247. package/skills/enhance-web-ui/references/details.md +674 -0
  248. package/skills/enhance-web-ux/HEURISTICS.md +248 -0
  249. package/skills/enhance-web-ux/PATTERNS.md +375 -0
  250. package/skills/enhance-web-ux/SKILL.md +464 -0
  251. package/skills/enhance-web-ux/examples.md +222 -0
  252. package/skills/enhance-web-ux/references/details.md +406 -0
  253. package/skills/enhance-web-web3d/SKILL.md +397 -0
  254. package/skills/enhance-web-web3d/references/css-canvas-effects.md +180 -0
  255. package/skills/handoff/SKILL.md +66 -0
  256. package/skills/housekeep-backlog/SKILL.md +149 -0
  257. package/skills/housekeep-dead-code/SKILL.md +387 -0
  258. package/skills/housekeep-dead-code/references/ratchet-ci.md +205 -0
  259. package/skills/housekeep-dead-code/references/supabase-hygiene.md +152 -0
  260. package/skills/housekeep-design/SKILL.md +207 -0
  261. package/skills/housekeep-files/SKILL.md +220 -0
  262. package/skills/housekeep-files/references/naming-and-catalog.md +86 -0
  263. package/skills/housekeep-files/scripts/housekeep-files.ps1 +360 -0
  264. package/skills/housekeep-files/scripts/housekeep-files.sh +238 -0
  265. package/skills/housekeep-gates/SKILL.md +174 -0
  266. package/skills/iterate-agent-harness/SKILL.md +137 -0
  267. package/skills/iterate-gtm-weekly/SKILL.md +103 -0
  268. package/skills/iterate-post-launch/SKILL.md +292 -0
  269. package/skills/meta-mcp-builder/SKILL.md +313 -0
  270. package/skills/meta-skill-creator/SKILL.md +304 -0
  271. package/skills/mobile-capacitor-platform/SKILL.md +103 -0
  272. package/skills/mobile-emulator-start/SKILL.md +296 -0
  273. package/skills/mobile-emulator-test/SKILL.md +491 -0
  274. package/skills/mobile-emulator-test/references/details.md +478 -0
  275. package/skills/mobile-rn-performance/SKILL.md +107 -0
  276. package/skills/mobile-rn-screen/SKILL.md +476 -0
  277. package/skills/mobile-rn-screen/references/details.md +785 -0
  278. package/skills/mushi-health/SKILL.md +206 -0
  279. package/skills/mushi-integration/SKILL.md +257 -0
  280. package/skills/plan-aeo-readiness/SKILL.md +166 -0
  281. package/skills/plan-antislop/SKILL.md +281 -0
  282. package/skills/plan-aso/SKILL.md +149 -0
  283. package/skills/plan-backup-dr/SKILL.md +131 -0
  284. package/skills/plan-capacitor-hardening/SKILL.md +217 -0
  285. package/skills/plan-data-integrity/SKILL.md +187 -0
  286. package/skills/plan-dead-code/SKILL.md +386 -0
  287. package/skills/plan-dead-code/references/knip-config.md +214 -0
  288. package/skills/plan-dead-code/references/output-templates.md +133 -0
  289. package/skills/plan-dead-code/references/preservation-contract.md +50 -0
  290. package/skills/plan-dead-code/references/residue-greps.md +84 -0
  291. package/skills/plan-dependency-provenance/SKILL.md +200 -0
  292. package/skills/plan-docs-sync/SKILL.md +143 -0
  293. package/skills/plan-docs-sync/references/drift-taxonomy.md +43 -0
  294. package/skills/plan-docs-sync/references/output-templates.md +33 -0
  295. package/skills/plan-docs-sync/references/preservation-contract.md +17 -0
  296. package/skills/plan-error-handling/SKILL.md +205 -0
  297. package/skills/plan-gtm/SKILL.md +276 -0
  298. package/skills/plan-gtm/references/benchmarks-2026.md +183 -0
  299. package/skills/plan-input-validation/SKILL.md +179 -0
  300. package/skills/plan-llm-cost-guardrails/SKILL.md +176 -0
  301. package/skills/plan-mobile-readiness/SKILL.md +171 -0
  302. package/skills/plan-perf-audit/SKILL.md +145 -0
  303. package/skills/plan-perf-audit/references/audit-scope.md +51 -0
  304. package/skills/plan-perf-audit/references/output-templates.md +33 -0
  305. package/skills/plan-perf-audit/references/preservation-contract.md +13 -0
  306. package/skills/plan-pricing/SKILL.md +173 -0
  307. package/skills/plan-privacy-compliance/SKILL.md +148 -0
  308. package/skills/plan-rls-audit/SKILL.md +231 -0
  309. package/skills/plan-secrets-audit/SKILL.md +181 -0
  310. package/skills/plan-security-audit/SKILL.md +168 -0
  311. package/skills/plan-security-audit/references/output-templates.md +36 -0
  312. package/skills/plan-security-audit/references/owasp-supabase-scope.md +55 -0
  313. package/skills/plan-security-audit/references/preservation-contract.md +18 -0
  314. package/skills/plan-stub-checker/SKILL.md +216 -0
  315. package/skills/plan-stub-checker/references/detection-methodology.md +75 -0
  316. package/skills/plan-stub-checker/references/detection-taxonomy.md +34 -0
  317. package/skills/plan-stub-checker/references/output-templates.md +63 -0
  318. package/skills/plan-stub-checker/references/preservation-contract.md +24 -0
  319. package/skills/plan-test-coverage/SKILL.md +170 -0
  320. package/skills/plan-test-coverage/references/methodology.md +54 -0
  321. package/skills/plan-test-coverage/references/output-templates.md +34 -0
  322. package/skills/plan-test-coverage/references/preservation-contract.md +15 -0
  323. package/skills/plan-uiux-unification/SKILL.md +230 -0
  324. package/skills/plan-uiux-unification/references/output-templates.md +67 -0
  325. package/skills/plan-uiux-unification/references/phase-workbook.md +85 -0
  326. package/skills/plan-uiux-unification/references/preservation-contract.md +24 -0
  327. package/skills/protocol-browser-anti-stall/SKILL.md +211 -0
  328. package/skills/protocol-browser-anti-stall/references/mcp-to-cli-map.md +113 -0
  329. package/skills/protocol-browser-anti-stall/references/playwright-session-coordination.md +170 -0
  330. package/skills/research/SKILL.md +422 -0
  331. package/skills/test-exploratory/SKILL.md +165 -0
  332. package/skills/test-exploratory/references/charter-template.md +29 -0
  333. package/skills/test-load/SKILL.md +126 -0
  334. package/skills/test-mutation/SKILL.md +160 -0
  335. package/skills/test-playwright/SKILL.md +354 -0
  336. package/skills/test-qa/SKILL.md +364 -0
  337. package/skills/test-qa/references/details.md +268 -0
  338. package/skills/test-red-team/SKILL.md +386 -0
  339. package/skills/test-red-team/references/owasp-attack-checklist.md +193 -0
  340. package/skills/test-unit/SKILL.md +259 -0
  341. package/skills/test-unit/references/details.md +267 -0
  342. package/skills/test-visual-regression/SKILL.md +132 -0
  343. package/skills/thirdparty-emil-design-eng/ATTRIBUTION.md +20 -0
  344. package/skills/thirdparty-emil-design-eng/SKILL.md +21 -0
  345. package/skills/thirdparty-emil-design-eng/references/emil-design-eng.md +676 -0
  346. package/skills/thirdparty-ui-ux-pro-max/ATTRIBUTION.md +22 -0
  347. package/skills/thirdparty-ui-ux-pro-max/SKILL.md +304 -0
  348. package/skills/thirdparty-ui-ux-pro-max/data/charts.csv +26 -0
  349. package/skills/thirdparty-ui-ux-pro-max/data/colors.csv +97 -0
  350. package/skills/thirdparty-ui-ux-pro-max/data/icons.csv +101 -0
  351. package/skills/thirdparty-ui-ux-pro-max/data/landing.csv +31 -0
  352. package/skills/thirdparty-ui-ux-pro-max/data/products.csv +97 -0
  353. package/skills/thirdparty-ui-ux-pro-max/data/react-performance.csv +45 -0
  354. package/skills/thirdparty-ui-ux-pro-max/data/stacks/astro.csv +54 -0
  355. package/skills/thirdparty-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  356. package/skills/thirdparty-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  357. package/skills/thirdparty-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  358. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  359. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  360. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  361. package/skills/thirdparty-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  362. package/skills/thirdparty-ui-ux-pro-max/data/stacks/react.csv +54 -0
  363. package/skills/thirdparty-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  364. package/skills/thirdparty-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  365. package/skills/thirdparty-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  366. package/skills/thirdparty-ui-ux-pro-max/data/stacks/vue.csv +50 -0
  367. package/skills/thirdparty-ui-ux-pro-max/data/styles.csv +68 -0
  368. package/skills/thirdparty-ui-ux-pro-max/data/typography.csv +58 -0
  369. package/skills/thirdparty-ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  370. package/skills/thirdparty-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  371. package/skills/thirdparty-ui-ux-pro-max/data/web-interface.csv +31 -0
  372. package/skills/thirdparty-ui-ux-pro-max/scripts/core.py +253 -0
  373. package/skills/thirdparty-ui-ux-pro-max/scripts/design_system.py +1067 -0
  374. package/skills/thirdparty-ui-ux-pro-max/scripts/search.py +114 -0
  375. package/skills/thirdparty-web-interface-guidelines/ATTRIBUTION.md +23 -0
  376. package/skills/thirdparty-web-interface-guidelines/SKILL.md +190 -0
  377. package/skills/workflow-build-feature/SKILL.md +118 -0
  378. package/skills/workflow-coding-discipline/SKILL.md +140 -0
  379. package/skills/workflow-environment-ready/SKILL.md +128 -0
  380. package/skills/workflow-feature-flag/SKILL.md +262 -0
  381. package/skills/workflow-feedback-to-closure/SKILL.md +165 -0
  382. package/skills/workflow-fix-and-ship/SKILL.md +136 -0
  383. package/skills/workflow-git-commit/SKILL.md +200 -0
  384. package/skills/workflow-green-repo/SKILL.md +166 -0
  385. package/skills/workflow-grilling/SKILL.md +73 -0
  386. package/skills/workflow-gtm/SKILL.md +153 -0
  387. package/skills/workflow-housekeep/SKILL.md +453 -0
  388. package/skills/workflow-housekeep/references/templates.md +109 -0
  389. package/skills/workflow-launch-ready/SKILL.md +145 -0
  390. package/skills/workflow-merge-conflicts/SKILL.md +62 -0
  391. package/skills/workflow-onboard/SKILL.md +99 -0
  392. package/skills/workflow-parallel-agents/SKILL.md +164 -0
  393. package/skills/workflow-pr/SKILL.md +197 -0
  394. package/skills/workflow-quality-gate/SKILL.md +147 -0
  395. package/skills/workflow-refactor/SKILL.md +274 -0
  396. package/skills/workflow-release-prep/SKILL.md +207 -0
  397. package/skills/workflow-ship-and-observe/SKILL.md +164 -0
  398. package/skills/workflow-spec-tdd/SKILL.md +141 -0
  399. package/skills/workflow-spec-tdd/references/spec-template.md +126 -0
  400. package/skills/workflow-spec-tdd/references/tdd-patterns.md +167 -0
  401. package/skills-cursor/babysit/SKILL.md +17 -0
  402. package/skills-cursor/canvas/SKILL.md +142 -0
  403. package/skills-cursor/canvas/sdk/canvas-tokens.d.ts +235 -0
  404. package/skills-cursor/canvas/sdk/chart-primitives.d.ts +200 -0
  405. package/skills-cursor/canvas/sdk/dag-layout.d.ts +102 -0
  406. package/skills-cursor/canvas/sdk/diff-view.d.ts +130 -0
  407. package/skills-cursor/canvas/sdk/form-primitives.d.ts +194 -0
  408. package/skills-cursor/canvas/sdk/hooks.d.ts +117 -0
  409. package/skills-cursor/canvas/sdk/index.d.ts +47 -0
  410. package/skills-cursor/canvas/sdk/theme.d.ts +61 -0
  411. package/skills-cursor/canvas/sdk/todo-list.d.ts +49 -0
  412. package/skills-cursor/canvas/sdk/ui-primitives.d.ts +549 -0
  413. package/skills-cursor/canvas/sdk/ui-primitives.test.d.ts +2 -0
  414. package/skills-cursor/create-hook/SKILL.md +238 -0
  415. package/skills-cursor/create-rule/SKILL.md +185 -0
  416. package/skills-cursor/create-skill/SKILL.md +269 -0
  417. package/skills-cursor/create-skill/references/authoring-guide.md +182 -0
  418. package/skills-cursor/create-subagent/SKILL.md +228 -0
  419. package/skills-cursor/migrate-to-skills/SKILL.md +121 -0
  420. package/skills-cursor/shell/SKILL.md +22 -0
  421. package/skills-cursor/split-to-prs/SKILL.md +47 -0
  422. package/skills-cursor/statusline/SKILL.md +193 -0
  423. package/skills-cursor/update-cli-config/SKILL.md +85 -0
  424. package/skills-cursor/update-cursor-settings/SKILL.md +137 -0
  425. package/skills.sh.json +297 -0
@@ -0,0 +1,221 @@
1
+ ---
2
+ name: audit-responsive
3
+ description: >
4
+ Audit and fix layouts at every breakpoint — desktop is not a wide phone. Use
5
+ when "responsive audit", desktop looks stacked or stretched, there is no
6
+ max-width, or 1440 looks like a phone. Touch-first build →
7
+ design-mobile-first.
8
+ license: MIT
9
+ effort: high
10
+ ---
11
+
12
+ # audit-responsive — Layout & breakpoint IA
13
+
14
+ **Degree of freedom: MIXED** — Phases 0–3 `[HIGH freedom]`; viewport
15
+ screenshot loop `[LOW freedom — run exactly]`; Phase 4 implement only after
16
+ the report (wait if scope is large).
17
+
18
+ > **Audit-and-fix exception.** Report first; then implement. Not present-then-stop.
19
+
20
+ **Desktop is not a wide phone.** Responsive means groups reflow, controls size to
21
+ function, and reading columns cap. A 1440px screenshot that looks like a stretched
22
+ phone fails this skill.
23
+
24
+ **Before ANY browser interaction, read `protocol-browser-anti-stall`.**
25
+
26
+ > **Report-first.** Findings + token sheet + ASCII wireframes first. If the scope
27
+ > is large, wait for approval before Phase 4. Then implement in reviewable chunks.
28
+ > Optional path scope: `$ARGUMENTS` or a path the user named
29
+ > (e.g. `src/pages/dashboard`).
30
+
31
+ ## This skill vs neighbors
32
+
33
+ | Skill | Owns |
34
+ |---|---|
35
+ | **audit-responsive** (this) | Layout reflow + page-level IA at 375 / 768 / 1440 |
36
+ | `design-mobile-first` | Touch, safe areas, gestures — mobile-up, not "unstack desktop" |
37
+ | `audit-ux-journeys` | Cross-page stories, nav findability |
38
+ | `audit-ux` | Per-page heuristics and microcopy |
39
+ | `audit-uiux-design-system` | Tokens, components, visual drift |
40
+ | `plan-uiux-unification` | Full DS unification plan — no code |
41
+ | `enhance-web-ui` / `enhance-web-ux` | Polish after the layout contract exists |
42
+
43
+ ## How to reason
44
+
45
+ 1. **Observe** — quote the container/grid and the 375 / 768 / 1440 screenshots
46
+ 2. **Interpret** — did groups reflow, or is 1440 a stretched phone?
47
+ 3. **Classify** — anti-pattern # (1–10) / present-and-correct
48
+ 4. **Severity** — stretched-phone 1440 = blocker for that page
49
+
50
+ ## Worked example
51
+
52
+ > **Observe:** Dashboard at 1440: single column, full-width buttons, no
53
+ > `max-w-*`. Screenshot matches the 375 stack scaled up.
54
+ > **Interpret:** desktop is a wide phone — groups that compare (stats, list+detail)
55
+ > never sit side-by-side.
56
+ > **Classify:** anti-patterns 1, 2, 3 — blocker.
57
+ > **Finding:** `app/dashboard/page.tsx` | #1+#2+#3 | blocker | add page
58
+ > max-width; 12-col stats + list+detail at ≥1024
59
+
60
+ ---
61
+
62
+ ## Phase 0 — Detect the stack (do not assume) [HIGH freedom]
63
+
64
+ Inspect the scoped UI and record:
65
+
66
+ - **Framework:** React / Next / Vue / Nuxt / Svelte / Angular / HTML / server templates
67
+ - **Styling:** Tailwind / CSS Modules / styled-components / SCSS / vanilla / UI library
68
+ - **Tokens already in repo:** breakpoints, spacing, type, colors, container widths, icon set
69
+ - **Underused system:** a design system or component library installed but ignored
70
+
71
+ All fixes use the repo's conventions. Never add a styling system unless none exists —
72
+ then propose the lightest fit and ask before adding a dependency.
73
+
74
+ ```bash
75
+ # Framework + styling signals
76
+ rg -l '"next"|"react"|"vue"|"svelte"|"@angular"' package.json
77
+ rg -l 'tailwindcss|styled-components|@emotion|@mui/material|@chakra-ui|@radix-ui' package.json
78
+ # Tokens / containers / breakpoints
79
+ rg -n "screens|breakpoints|max-w-|container|@theme|--spacing" -g '*.{css,ts,js,mjs}' -g '!node_modules' | head -40
80
+ # Icon set already in use
81
+ rg -n "from 'lucide-react'|from '@heroicons'|from 'react-icons'|phosphor" -g '*.{tsx,jsx,vue,svelte}' | head -20
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Phase 1 — Audit the 10 anti-patterns [HIGH freedom; screenshot loop = LOW]
87
+
88
+ Scan scoped pages, views, screens, and major layout components. Full signals and
89
+ pass/fail cues: [references/checklist.md](references/checklist.md).
90
+
91
+ | # | Anti-pattern | Fail when |
92
+ |---|---|---|
93
+ | 1 | **No max-width container** | Content or text edge-to-edge at desktop. Cap layouts ~1140–1280px; reading ~640–720px / 65–75ch |
94
+ | 2 | **Single-column everything** | Vertical stack at ≥1024px when groups belong side-by-side (form+summary, list+detail, comparable stats, media+text) |
95
+ | 3 | **Stretched interactive elements** | Full-width buttons, inputs, or cards at desktop. Full-width is a mobile pattern |
96
+ | 4 | **No visual hierarchy** | Headings, body, labels, captions near-identical size/weight; everything left-aligned by default, not by decision |
97
+ | 5 | **No spacing system** | Arbitrary 13/22/37px gaps instead of the repo's 4/8 scale |
98
+ | 6 | **No grouping / IA** | Related data unclustered; unrelated data merged; flat lists where table/grid/master-detail fits |
99
+ | 7 | **Missing or mixed icons** | Text-only nav/status/actions, or mixed icon libraries/styles |
100
+ | 8 | **Breakpoint gaps** | Styles for one width only; abandoned at 768 (tablet) or 1440 (desktop) |
101
+ | 9 | **Typography defaults** | Browser font stack/size, no type scale, line length >~80ch, cramped body line-height |
102
+ | 10 | **Table/data misuse** | Tabular data as stacked cards on desktop, or wide tables with no mobile strategy |
103
+
104
+ Each finding: `file:line` · anti-pattern # · one-line description · severity
105
+ (`blocker` / `major` / `minor`).
106
+
107
+ Live evidence — resize **before** `goto` (viewport persists across navigation):
108
+
109
+ ```bash
110
+ PW="npx --yes @playwright/cli@latest"; S="-s=responsive-audit"
111
+ $PW $S open --headed "<app-url>"
112
+ for wh in "375 812" "768 1024" "1440 900"; do
113
+ $PW $S resize $wh
114
+ $PW $S goto "<route>"
115
+ sleep 2 && $PW $S snapshot
116
+ $PW $S screenshot --filename ".playwright-mcp/responsive-<route>-${wh// /x}.png"
117
+ done
118
+ ```
119
+
120
+ If the 1440 screenshot is a stretched phone, that is a **blocker** for the page.
121
+
122
+ ---
123
+
124
+ ## Phase 2 — Extract or propose the token sheet [HIGH freedom]
125
+
126
+ Before fixing, produce a sheet. If the repo already has tokens, **use them
127
+ verbatim** and flag violations — do not invent a second scale.
128
+
129
+ | Token | Default if the repo has none (mark as *proposed*) |
130
+ |---|---|
131
+ | Breakpoints | mobile <640 · tablet 640–1023 · desktop ≥1024 |
132
+ | Containers | page max-width · content max-width · reading max-width |
133
+ | Grid | 12-column mental model; how each group maps at each breakpoint |
134
+ | Spacing | 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 |
135
+ | Type | 12 / 14 / 16 / 20 / 24 / 32 + weight + use (caption / label / body / h3 / h2 / h1) |
136
+ | Icons | one library; 16 inline · 20 controls · 24 nav |
137
+
138
+ ---
139
+
140
+ ## Phase 3 — Information architecture before pixels [HIGH freedom]
141
+
142
+ For each flagged page/screen:
143
+
144
+ 1. List content blocks. Classify each: **primary** (why the page exists),
145
+ **secondary** (supporting), **metadata** (timestamps, IDs, status).
146
+ 2. Group related blocks; name each group.
147
+ 3. Sketch ASCII wireframes at **375 / 768 / 1440** showing how groups reflow
148
+ (sidebar → tabs; 3-up stats → 1-col; master-detail → list → push).
149
+ Templates: [references/checklist.md](references/checklist.md#wireframes).
150
+ 4. Only then write code. The wireframe is the contract; CSS implements it.
151
+
152
+ Use **real content** from the codebase — never invented examples.
153
+
154
+ ---
155
+
156
+ ## Phase 4 — Implement [LOW freedom — after the report; repo tokens only]
157
+
158
+ - Native responsive primitives: CSS grid/flex + media or container queries;
159
+ Tailwind prefixes; framework grid components.
160
+ - Prefer **container queries** when a component is reused across contexts and
161
+ the stack supports them.
162
+ - Mobile-first CSS: base = mobile, enhance upward.
163
+ - Preserve semantics and a11y: heading levels match visual hierarchy, visible
164
+ focus, touch targets ≥44px on mobile, `prefers-reduced-motion` respected.
165
+ - Diff scope: layout / hierarchy / spacing / type only. Do not restyle brand
166
+ colors or rewrite copy unless copy blocks hierarchy.
167
+
168
+ Chunk by severity into reviewable PRs. After each chunk, re-run the 375 / 768 /
169
+ 1440 screenshot loop on touched routes.
170
+
171
+ Hand off leftover polish (motion, microcopy, token drift) — do not absorb it.
172
+
173
+ ---
174
+
175
+ ## Definition of Done — verify at 375 / 768 / 1440
176
+
177
+ - [ ] 1440: no content or control spans the full viewport; page has a max-width container
178
+ - [ ] Related information is grouped; groups sit side-by-side where comparison or context helps
179
+ - [ ] **5-second glance:** primary content, page purpose, and next action are obvious without reading
180
+ - [ ] Spacing values come from the scale; font sizes come from the type scale
181
+ - [ ] Icons from one set, used to aid scanning (status, nav, actions)
182
+ - [ ] Body line length ≤ ~75ch; paragraph line-height ≥ 1.5
183
+ - [ ] No horizontal overflow at 375; touch targets ≥44px; tables have a defined mobile strategy
184
+ - [ ] Layout **meaningfully differs** between 375 and 1440 — a stretched-phone 1440 fails
185
+
186
+ ## Self-critique before reporting [LOW freedom — do not skip]
187
+
188
+ 1. **Three viewports** — no "done" from code inspection alone
189
+ 2. **Repo tokens first** — do not invent a second scale
190
+ 3. **Wireframe before CSS** — Phase 3 is the contract
191
+ 4. **Right owner** — touch/gestures → `design-mobile-first`; empty states → `audit-ui-states`
192
+
193
+ ---
194
+
195
+ ## Output format
196
+
197
+ 1. **Findings table** — `file:line` | anti-pattern | severity | one-line fix
198
+ 2. **Token sheet** — extracted or proposed (mark which)
199
+ 3. **Per-screen wireframes** — 375 / 768 / 1440, ASCII
200
+ 4. **Fix plan** — severity order, PR-sized chunks
201
+ 5. Then implement chunk by chunk (or wait if the user is reviewing 1–4)
202
+
203
+ **Forbidden:** inventing a new design system when one exists; stacking a
204
+ desktop skin on a single-column DOM; claiming done from code inspection
205
+ without the three viewport screenshots; routing a linearized-desktop complaint
206
+ to `design-mobile-first`.
207
+
208
+ ---
209
+
210
+ ## Related
211
+
212
+ - `design-mobile-first` — touch / safe-area / gesture; the mobile-up counterpart
213
+ - `plan-uiux-unification` — whole-repo DS + IA plan when the system itself is the problem
214
+ - `audit-uiux-design-system` — token/component compliance after layout is fixed
215
+ - `audit-ux` / `audit-ux-journeys` — heuristics and cross-page IA (not breakpoint layout)
216
+ - `enhance-web-ui` / `enhance-web-ux` — polish once the wireframe is implemented
217
+ - `housekeep-design` — competing token/component SSOTs
218
+ - `audit-accessibility` — WCAG after reflow (focus order, target size)
219
+ - `audit-ui-states` — empty/error/offline matrix (not breakpoint layout)
220
+ - `test-visual-regression` — lock the 375 / 768 / 1440 baselines
221
+ - `test-playwright` — regression coverage for the new layouts
@@ -0,0 +1,166 @@
1
+ # audit-responsive — anti-pattern signals & wireframe templates
2
+
3
+ Loaded from `audit-responsive` Phase 1 and Phase 3. Do not invent a second
4
+ scale — if the repo already defines tokens, substitute those numbers below.
5
+
6
+ ---
7
+
8
+ ## Anti-pattern signals
9
+
10
+ Search the scoped UI. Cite `file:line`. Severity: **blocker** (1440 is a
11
+ stretched phone, or primary task unusable) · **major** (hierarchy/IA broken at
12
+ one breakpoint) · **minor** (inconsistent scale, mixed icons).
13
+
14
+ ### 1. No max-width container
15
+
16
+ ```bash
17
+ rg -n "w-full|w-screen|max-w-none|width:\s*100%" -g '*.{tsx,jsx,vue,svelte,css}'
18
+ rg -n "max-w-(sm|md|lg|xl|2xl|3xl|4xl|5xl|6xl|7xl|prose)|max-w-\[" -g '*.{tsx,jsx,vue,svelte}'
19
+ ```
20
+
21
+ **Fail:** a page root or reading column has no `max-width` / `max-w-*` and
22
+ stretches with the viewport past ~1280px. **Pass:** layout shell caps
23
+ ~1140–1280px (or the repo token); body copy caps ~65–75ch.
24
+
25
+ ### 2. Single-column everything
26
+
27
+ ```bash
28
+ rg -n "flex-col|grid-cols-1|space-y-|stack" -g '*.{tsx,jsx,vue,svelte}'
29
+ rg -n "md:grid-cols|lg:grid-cols|md:flex-row|lg:flex-row|sm:grid-cols" -g '*.{tsx,jsx,vue,svelte}'
30
+ ```
31
+
32
+ **Fail:** at ≥1024px the page is still one column when it contains groups that
33
+ invite comparison or context (form + summary, list + detail, 3+ stat cards,
34
+ media + text). **Pass:** those groups sit side-by-side at desktop; they stack
35
+ only below the tablet breakpoint.
36
+
37
+ ### 3. Stretched interactive elements
38
+
39
+ ```bash
40
+ rg -n "w-full.*(Button|button|input|Input)|className=.*w-full" -g '*.{tsx,jsx,vue,svelte}'
41
+ ```
42
+
43
+ **Fail:** primary buttons, text inputs, or cards are `w-full` with no
44
+ `sm:`/`md:` constraint, so they span the desktop column. **Pass:** mobile may
45
+ be full-bleed; desktop controls size to content or a defined field width
46
+ (often `max-w-sm` / `max-w-md` for inputs).
47
+
48
+ ### 4. No visual hierarchy
49
+
50
+ Look at the 1440 screenshot for 5 seconds. If you cannot name the page purpose
51
+ and the next action, this fails.
52
+
53
+ ```bash
54
+ rg -n "text-(xs|sm|base|lg|xl|2xl|3xl)|font-(normal|medium|semibold|bold)" -g '*.{tsx,jsx,vue,svelte}' | head -40
55
+ ```
56
+
57
+ **Fail:** heading / body / label / caption rendered at near-identical size and
58
+ weight; everything left-aligned because that was the default, not a decision.
59
+ **Pass:** a readable primary → secondary → metadata scale; alignment is chosen
60
+ (start / center / end / grid) per group.
61
+
62
+ ### 5. No spacing system
63
+
64
+ ```bash
65
+ rg -n "\\b(p|m|gap|space-[xy])-\\[" -g '*.{tsx,jsx,vue,svelte,css}'
66
+ rg -n "padding:\\s*[0-9]+px|margin:\\s*[0-9]+px" -g '*.{tsx,jsx,vue,svelte,css}'
67
+ ```
68
+
69
+ **Fail:** one-off values (13px, 22px, 37px, `p-[13px]`) next to equivalent
70
+ elements that use a different gap. **Pass:** all spacing from the repo scale
71
+ (or the Phase 2 proposed 4/8 scale).
72
+
73
+ ### 6. No grouping / information architecture
74
+
75
+ Walk the page's DOM sections and the 1440 screenshot. Name each visual group.
76
+ If you cannot, or if unrelated fields share a card while related ones sit
77
+ pages apart, this fails.
78
+
79
+ **Fail:** long flat lists where a table, 2–3 column grid, or master-detail
80
+ fits; no fieldsets/sections; status + title + timestamp not clustered.
81
+ **Pass:** named groups; related data shares a region; layout matches the
82
+ Phase 3 wireframe.
83
+
84
+ ### 7. Missing or mixed iconography
85
+
86
+ ```bash
87
+ rg -n "from 'lucide-react'|from '@heroicons'|from 'react-icons'|from '@phosphor-icons'|material-symbols" -g '*.{tsx,jsx,vue,svelte}'
88
+ ```
89
+
90
+ **Fail:** two or more icon libraries; or nav/status/actions are text-only
91
+ where a consistent set would aid scanning. **Pass:** one library, one size
92
+ grammar (16 inline / 20 controls / 24 nav, or the repo's).
93
+
94
+ ### 8. Breakpoint gaps
95
+
96
+ ```bash
97
+ rg -n "sm:|md:|lg:|xl:|2xl:|@media|@container" -g '*.{tsx,jsx,vue,svelte,css}' | head -40
98
+ ```
99
+
100
+ **Fail:** only a mobile base, or only a desktop layout, with no tablet
101
+ treatment; 768px screenshot looks abandoned (overflow, crushed columns, or
102
+ still a phone stack). **Pass:** 375, 768, and 1440 each have an intentional
103
+ layout — not leftover.
104
+
105
+ ### 9. Typography defaults
106
+
107
+ ```bash
108
+ rg -n "font-sans|font-serif|font-mono|--font-|fontFamily|line-height|leading-" -g '*.{tsx,jsx,vue,svelte,css}' | head -30
109
+ ```
110
+
111
+ **Fail:** no type scale (browser defaults), body measure >~80ch, paragraph
112
+ `line-height` < 1.5. **Pass:** sizes from the sheet; reading column ≤75ch;
113
+ body leading ≥ 1.5.
114
+
115
+ ### 10. Table / data misuse
116
+
117
+ ```bash
118
+ rg -n "<table|role=\"table\"|overflow-x-auto|md:hidden|hidden md:table" -g '*.{tsx,jsx,vue,svelte}'
119
+ ```
120
+
121
+ **Fail:** tabular data rendered only as stacked cards at 1440; or a wide
122
+ `<table>` with no mobile strategy (horizontal scroll, column priority, or
123
+ card collapse). **Pass:** desktop uses a table or dense grid; 375 has an
124
+ explicit strategy.
125
+
126
+ ---
127
+
128
+ ## Wireframes
129
+
130
+ For each flagged screen, copy this block and fill it with **real** groups from
131
+ the page (names from Phase 3). Do not invent content.
132
+
133
+ ```
134
+ PAGE: <route> — primary: <why this page exists>
135
+
136
+ 375
137
+ ┌─────────────────────┐
138
+ │ [nav / title] │
139
+ │ ┌─────────────────┐ │
140
+ │ │ PRIMARY │ │
141
+ │ └─────────────────┘ │
142
+ │ ┌─────────────────┐ │
143
+ │ │ SECONDARY │ │
144
+ │ └─────────────────┘ │
145
+ │ [metadata] │
146
+ └─────────────────────┘
147
+
148
+ 768
149
+ ┌──────────────┬──────────────┐
150
+ │ PRIMARY │ SECONDARY │
151
+ │ │ metadata │
152
+ └──────────────┴──────────────┘
153
+
154
+ 1440
155
+ ┌──────┬────────────────┬──────────┐
156
+ │ nav │ PRIMARY │ SECONDARY│
157
+ │ │ │ metadata │
158
+ └──────┴────────────────┴──────────┘
159
+ ```
160
+
161
+ Reflow examples (pick what the content actually needs):
162
+
163
+ - Sidebar → top tabs at 375
164
+ - 3-up stat cards → 1-col stack at 375, 2-col at 768, 3-col at 1440
165
+ - Master-detail → list, then push view at 375; split pane at 1440
166
+ - Form + summary → stacked at 375; 2/3 + 1/3 at 1440
@@ -0,0 +1,289 @@
1
+ ---
2
+ name: audit-security
3
+ description: >
4
+ Audit and fix app code against OWASP (injection, headers, dependencies). Use
5
+ when "review security" or "check vulnerabilities". Auth gates →
6
+ audit-auth-flows. Plan-only → plan-security-audit. RLS → plan-rls-audit. LLM
7
+ → audit-llm-security.
8
+ license: MIT
9
+ effort: high
10
+ ---
11
+
12
+ # Security Audit Skill
13
+
14
+ **Degree of freedom: MIXED** — Steps 0–4 judgment `[HIGH freedom]`;
15
+ dependency and secret scans `[LOW freedom — run exactly]`. Never write
16
+ exploit PoCs.
17
+
18
+ > **Audit-and-fix exception.** May fix inline. Plan-only burndown → `plan-security-audit`.
19
+ > When fixing inline: patch the evidenced sink only, in place; unrelated weaknesses you notice go in the report as findings, not fixes. Add a test only where the repo already keeps security tests or the task asks. Auth behavior, RLS, secrets rotation, payments, and migrations stay STOP-and-confirm.
20
+
21
+ OWASP static review (injection, headers, deps). Session / route×gate /
22
+ `getSession()` → `audit-auth-flows`. Next.js 16: grep `middleware.ts` **and**
23
+ `proxy.ts` — a route gate can live in either file, and the proxy layer has its own bypass class.
24
+
25
+ ## How to reason
26
+
27
+ 1. **Observe** — quote the sink or missing check (`file:line`)
28
+ 2. **Interpret** — can untrusted input reach a query, HTML, or object-id?
29
+ 3. **Classify** — injection / IDOR / secret / header / dep-CVE / hand-off
30
+ 4. **Severity** — exploitable data access or hardcoded secret = Critical
31
+
32
+ ## Worked example
33
+
34
+ > **Observe:** `GET /documents/:id` loads by id only (`api/docs/route.ts:18`).
35
+ > **Interpret:** any caller who can hit the route reads another user's doc.
36
+ > **Classify:** IDOR.
37
+ > **Severity:** Critical.
38
+ > **Finding:** IDOR | `/documents/:id` | add `userId` predicate.
39
+ > Matcher / `getSession()` on that route → `audit-auth-flows`, not this checklist.
40
+
41
+ ## Step 0: Understand the Project [HIGH freedom]
42
+
43
+ Before auditing, discover the tech stack and attack surface:
44
+
45
+ 1. Read `package.json` / `requirements.txt` / `go.mod` to identify:
46
+ - Auth library (next-auth, passport, supabase-auth, django-auth, etc.)
47
+ - Database ORM (Prisma, Sequelize, SQLAlchemy, etc.)
48
+ - HTTP framework (Express, Fastify, Django, Flask, etc.)
49
+ - Any security-specific packages (helmet, cors, csurf, rate-limit, etc.)
50
+
51
+ 2. Identify the auth pattern:
52
+ - Session-based vs JWT vs OAuth
53
+ - Where tokens are stored (cookies, localStorage, headers)
54
+ - How permissions/roles are enforced
55
+
56
+ 3. Identify the data flow:
57
+ - Where user input enters the system
58
+ - How data is validated and sanitized
59
+ - How data reaches the database
60
+
61
+ ---
62
+
63
+ ## Step 1: Research Current Threats [HIGH freedom]
64
+
65
+ Fetch current OWASP and security best practices for the detected stack:
66
+
67
+ ```json
68
+ firecrawl:firecrawl_search
69
+ {
70
+ "query": "<framework> security best practices OWASP <current year>",
71
+ "limit": 5,
72
+ "sources": [{ "type": "web" }]
73
+ }
74
+ ```
75
+
76
+ Scrape the OWASP Top 10 for the relevant platform:
77
+
78
+ ```json
79
+ firecrawl:firecrawl_scrape
80
+ {
81
+ "url": "https://owasp.org/Top10/",
82
+ "formats": ["markdown"],
83
+ "onlyMainContent": true
84
+ }
85
+ ```
86
+
87
+ Also check for known CVEs in dependencies:
88
+
89
+ ```json
90
+ firecrawl:firecrawl_search
91
+ {
92
+ "query": "<package-name> CVE vulnerability <current year>",
93
+ "limit": 5,
94
+ "sources": [{ "type": "web" }]
95
+ }
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Step 2: Check Production Security Errors (Sentry) [HIGH freedom]
101
+
102
+ If Sentry is configured, check for security-related production errors:
103
+
104
+ ```json
105
+ sentry:search_issues
106
+ {
107
+ "organizationSlug": "<ORG_SLUG>",
108
+ "query": "401 unauthorized OR 403 forbidden OR CORS OR CSP violation in last 30 days",
109
+ "projectSlugOrId": "<PROJECT_SLUG>",
110
+ "regionUrl": "<REGION_URL>",
111
+ "limit": 20
112
+ }
113
+ ```
114
+
115
+ Patterns that indicate security findings:
116
+ - Frequent 401/403 errors → possible auth bypass attempts
117
+ - CORS errors from unexpected origins → misconfigured CORS
118
+ - CSP violations → potential XSS vectors
119
+ - Rate limit errors → possible brute force
120
+
121
+ ---
122
+
123
+ ## Step 3: Automated Code Scan [HIGH freedom]
124
+
125
+ ### Authentication Audit
126
+
127
+ - [ ] Passwords hashed with bcrypt/argon2/scrypt (not MD5/SHA1/SHA256 for passwords)
128
+ - [ ] Session tokens are cryptographically random
129
+ - [ ] Sessions expire appropriately (idle timeout + absolute timeout)
130
+ - [ ] Password reset tokens are single-use and expire quickly
131
+ - [ ] MFA available for sensitive accounts
132
+ - [ ] Login rate limiting implemented
133
+ - [ ] Account lockout after repeated failed attempts
134
+ - [ ] OAuth state parameter validated (CSRF protection for OAuth flows)
135
+ - [ ] JWT secret is strong and stored in env vars (not hardcoded)
136
+ - [ ] JWT expiry is reasonable (access: 15min, refresh: 7d)
137
+
138
+ ### Authorization Audit
139
+
140
+ - [ ] Every API endpoint checks permissions (not just authentication)
141
+ - [ ] No direct object references without ownership/permission check (IDOR)
142
+ - [ ] Role-based access properly enforced at the API layer (not just UI)
143
+ - [ ] Principle of least privilege followed
144
+ - [ ] Admin functions require elevated auth
145
+ - [ ] Row-Level Security (RLS) enabled for multi-tenant databases
146
+ - [ ] API keys scoped to minimum required permissions
147
+
148
+ ### Input Validation Audit
149
+
150
+ - [ ] All user input validated server-side (client validation is UX only)
151
+ - [ ] Input sanitized before use in queries, HTML, commands
152
+ - [ ] File uploads validated: type (MIME + magic bytes), size, filename
153
+ - [ ] JSON/XML parsing has depth/size limits
154
+ - [ ] URL parameters decoded and validated
155
+ - [ ] No raw SQL concatenation (parameterized queries only)
156
+ - [ ] No `eval()`, `Function()`, `innerHTML` with user input
157
+ - [ ] No `dangerouslySetInnerHTML` without DOMPurify
158
+
159
+ ### Data Protection Audit
160
+
161
+ - [ ] Sensitive data encrypted at rest
162
+ - [ ] TLS/HTTPS enforced (no HTTP fallback)
163
+ - [ ] Secrets not in code, git history, or logs
164
+ - [ ] PII handled according to applicable regulations (GDPR, CCPA)
165
+ - [ ] Database connections encrypted (SSL)
166
+ - [ ] API responses don't leak internal data (stack traces, SQL errors, file paths)
167
+ - [ ] Password fields use `type="password"` and `autocomplete="new-password"`
168
+
169
+ ### Security Headers Audit
170
+
171
+ - [ ] `Strict-Transport-Security` (HSTS) with long max-age
172
+ - [ ] `Content-Security-Policy` (CSP) configured (not just `default-src *`)
173
+ - [ ] `X-Content-Type-Options: nosniff`
174
+ - [ ] `X-Frame-Options: DENY` or `SAMEORIGIN`
175
+ - [ ] `Referrer-Policy: strict-origin-when-cross-origin` or stricter
176
+ - [ ] `Permissions-Policy` restricting unnecessary browser features
177
+ - [ ] CORS `Access-Control-Allow-Origin` is NOT `*` for authenticated endpoints
178
+ - [ ] Cookies: `HttpOnly`, `Secure`, `SameSite=Strict` (or `Lax`)
179
+
180
+ ### Dependency Audit [LOW freedom — run exactly]
181
+
182
+ ```bash
183
+ npm audit # Node.js
184
+ pip-audit # Python
185
+ cargo audit # Rust
186
+ govulncheck ./... # Go
187
+ bundle audit # Ruby
188
+ ```
189
+
190
+ - [ ] No known high/critical CVEs
191
+ - [ ] Dependencies reasonably up to date
192
+ - [ ] Lock file committed (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`)
193
+ - [ ] No unnecessary dependencies (smaller surface area)
194
+
195
+ ---
196
+
197
+ ## Step 4: Common Vulnerability Patterns [HIGH freedom]
198
+
199
+ Grep for the sinks, then read each hit in context:
200
+
201
+ - **SQL injection** — string interpolation into a query (`` `SELECT … ${ ``, `+ userId +`); parameterized or ORM calls pass
202
+ - **XSS** — `dangerouslySetInnerHTML` / `innerHTML` fed user input without `DOMPurify.sanitize`
203
+ - **IDOR** — a load by `req.params.id` with no owner predicate (`userId: req.user.id`) on the query
204
+ - **Sensitive data exposure** — `res.json(user)`-style whole-record responses instead of an explicit field pick
205
+
206
+ ---
207
+
208
+ ## Step 5: Environment and Secrets [LOW freedom — names/prefixes only]
209
+
210
+ ### Scan for Hardcoded Secrets
211
+
212
+ Search the codebase for potential leaked secrets. Patterns to look for:
213
+
214
+ - Generic secret names: `api_key`, `apiKey`, `secret`, `password`, `token`, `credentials`, `private_key`
215
+ - Key prefixes: `sk-`, `pk-`, `ghp_`, `gho_`, `xox[bpsa]-`, `AKIA`
216
+ - Private key headers: `-----BEGIN (RSA|EC|OPENSSH) PRIVATE KEY-----`
217
+
218
+ ### Verify .gitignore
219
+
220
+ ```
221
+ .env, .env.local, .env.production
222
+ *.pem, *.key, *.p12
223
+ credentials.json, service-account.json
224
+ .sentryclirc (if it contains auth tokens)
225
+ ```
226
+
227
+ ### Validate Environment Variables
228
+
229
+ ```typescript
230
+ import { z } from 'zod';
231
+
232
+ const envSchema = z.object({
233
+ DATABASE_URL: z.string().url(),
234
+ API_KEY: z.string().min(1),
235
+ JWT_SECRET: z.string().min(32),
236
+ SENTRY_DSN: z.string().url().optional(),
237
+ });
238
+
239
+ const env = envSchema.parse(process.env);
240
+ ```
241
+
242
+ ---
243
+
244
+ ## Self-critique before applying fixes [LOW freedom — do not skip]
245
+
246
+ 1. **Evidenced** — `file:line` or audit output, not "this might be injectable"
247
+ 2. **Reproducible** — same sink still present; no exploit PoC written
248
+ 3. **Severity justified** — Critical = demonstrated data access or leaked secret
249
+ 4. **Right owner** — session/route×gate/`getSession` → `audit-auth-flows`; RLS → `plan-rls-audit`; LLM → `audit-llm-security`
250
+ 5. **No-false-safety** — headers or middleware alone ≠ authorization
251
+
252
+ ## Output: Security Audit Report
253
+
254
+ ```markdown
255
+ ## Security Audit: [Project Name]
256
+
257
+ ### Tech Stack
258
+ - Framework: [name + version]
259
+ - Auth: [library + pattern]
260
+ - Database: [ORM + provider]
261
+ - Security packages: [list]
262
+
263
+ ### Critical Issues (must fix)
264
+ | # | Category | Finding | File | Recommendation |
265
+ |---|----------|---------|------|----------------|
266
+ | 1 | Auth | JWT secret hardcoded | config.ts:12 | Move to env var |
267
+
268
+ ### High Risk (should fix soon)
269
+ | # | Category | Finding | File | Recommendation |
270
+ |---|----------|---------|------|----------------|
271
+
272
+ ### Medium Risk (improve when possible)
273
+ | # | Category | Finding | File | Recommendation |
274
+ |---|----------|---------|------|----------------|
275
+
276
+ ### Passed Checks
277
+ - [list of security areas that are properly implemented]
278
+
279
+ ### Dependencies
280
+ - Critical CVEs: [count] — [details]
281
+ - High CVEs: [count]
282
+ - Outdated packages: [count]
283
+
284
+ ### Research Sources
285
+ - [URL] — [what it confirmed or revealed]
286
+ ```
287
+
288
+ Session / route×gate / `getSession()` findings belong on `audit-auth-flows`,
289
+ not in this OWASP checklist.