@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,473 @@
1
+ ---
2
+ name: enhance-web-ui
3
+ description: >
4
+ Polish an existing page's hierarchy, spacing, type, and visual personality.
5
+ Use when "make this page polished/premium", "less crowded", or "better
6
+ visual hierarchy". Readability → enhance-readability. Flow/IA →
7
+ enhance-web-ux.
8
+ license: MIT
9
+ ---
10
+
11
+ > Surface router: `/uiux`. You are here: `enhance-web-ui`. Native iOS/Android (SwiftUI / Compose, no web layer) is out of scope — use Apple HIG / Material directly.
12
+
13
+ # Enhance Page UI
14
+
15
+ **Degree of freedom: MIXED.** Composition and tier judgment `[HIGH freedom]`; live read, DOM rects, three-viewport verify `[LOW freedom — run exactly]`.
16
+
17
+ Turn an existing screen into a composed interface: calmer hierarchy, smarter
18
+ content placement, expressive but purposeful motion, and artful transitions that
19
+ support comprehension. This is not a "add more chips/cards/shadows" skill. It
20
+ rearranges, subtracts, and stages information before adding decoration.
21
+
22
+ > **Vague-but-visceral user feedback ("clunky", "atrocious", "wasted space",
23
+ > "incoherent height") almost always points to a `Hidden Failure Mode` from §X
24
+ > below — start there, not at the surface decoration the user named.**
25
+
26
+ > If browser automation is used, first follow the
27
+ > `protocol-browser-anti-stall` skill when present.
28
+
29
+ ## How to reason
30
+
31
+ 1. **Recon** — primitives, tokens, real data contracts
32
+ 2. **Rank** — primary / secondary / metadata / actions / ambient
33
+ 3. **Compose** — subtract → group → pin → stage before decorating
34
+ 4. **Verify** — 1440/1024/800 + two squints + rect uniformity
35
+
36
+ ## Worked example
37
+
38
+ > **Recon:** learning app (tier A); stat tiles share a Tooltip wrapper; "0/10 today" appears three times.
39
+ > **Rank:** primary is the next lesson CTA; the count is metadata, not a third headline.
40
+ > **Compose:** patch Tooltip to `block w-full`; drop two duplicate counts; no extra chips.
41
+ > **Verify:** tile widths match; category squint shows distinct hues; CTA still one brand-color target.
42
+
43
+ ## Self-critique before reporting
44
+
45
+ - **Compose first** — decoration was not the first edit
46
+ - **Real data** — no mocked status/count; primitive patched if the bug repeats
47
+ - **Three viewports** — no wrapped CTAs; dead slots collapse when empty
48
+ - **Right owner** — flow/IA → `enhance-web-ux`; breakpoints-only → `audit-responsive`
49
+
50
+ ---
51
+
52
+ ## Rules
53
+
54
+ > **Compose before decorating.** Fix hierarchy, grouping, alignment, and rhythm
55
+ > before adding gradients, motion, blur, masks, or shadows.
56
+
57
+ > **Replace clutter with structure.** Do not stack more badges, labels, cards,
58
+ > dividers, or helper text onto a crowded surface. Move secondary information
59
+ > to a quieter region, a footer band, a hover/focus reveal, a drawer, or a
60
+ > progressive disclosure layer.
61
+
62
+ > **Make hierarchy visible at a squint.** A user should know the focal element,
63
+ > supporting content, metadata, and actions before reading every word.
64
+
65
+ > **Motion must explain.** Animate only feedback, state change, spatial
66
+ > relationship, affordance, or attention. No looping sparkle unless it carries
67
+ > status or brand tone and respects reduced motion.
68
+
69
+ > **Use the local design system.** Reuse existing primitives, tokens, radius,
70
+ > spacing, typography, animation helpers, and dark/light surfaces. Extend a local
71
+ > primitive before inventing a one-off.
72
+
73
+ > **Never ship mock, dead, or rogue UI.** Enhancements must be wired to the
74
+ > product's real data contracts, backend/API state, database schema, or existing
75
+ > domain helpers. If the UI needs better visual feedback, first look for the real
76
+ > status, timestamp, count, owner, error, progress, permission, or lifecycle data
77
+ > that should drive it. If that data does not exist but is necessary for a solid
78
+ > user experience, propose or implement the smallest backend/schema/API extension
79
+ > instead of faking the state in the component.
80
+
81
+ > **Respect density by viewport.** Desktop can hold layered metadata. Tablet
82
+ > needs tighter grouping. Narrow screens need progressive disclosure and no
83
+ > wrapping CTAs.
84
+
85
+ > **Tune saturation to product domain.** A consumer learning, kids, fitness,
86
+ > or gamified app needs a *vibrant, semantic* palette where each colour
87
+ > carries meaning (Duolingo: green=correct, red=hearts, orange=streak). A
88
+ > B2B/SaaS/finance dashboard needs *restrained* colour reserved for status
89
+ > only (NN/g 60–30–10, Stripe-style). Faint `/5–/10` tints on a playful
90
+ > consumer surface read as monochromatic and dead. Pick a saturation tier
91
+ > for the product first, then apply it consistently — see *Domain Colour
92
+ > Tier* below.
93
+
94
+ > **Audit conditional slots for dead-state.** Any optional region — `media`,
95
+ > `aside`, `eyebrow`, `footerSlot`, `cover`, `illustration`, `secondaryCTA`
96
+ > — must be tested with sparse / zero-state content. A slot that reserves
97
+ > `min-h: 160px` for a rich illustration becomes a giant empty card when
98
+ > the only content is "0%". Make the slot *conditional on content* (drop
99
+ > the wrapper when empty) or *collapse the floor* (`min-h-0` on mobile),
100
+ > never reserve space for absent content.
101
+
102
+ > **Scan for information duplication within one viewport.** The same number,
103
+ > word, date, or status appearing twice in the same fold means one of them
104
+ > is wasted ink. Eyebrow shows "0/10 today" + inline pill shows "0/10
105
+ > today" + footer bar shows "0/10 today" → keep the most actionable copy
106
+ > and delete the rest. Duplicates fragment attention (NN/g #8) and signal
107
+ > that the content rank in step 2 was skipped.
108
+
109
+ > **Patch the primitive, not the site.** If a layout/colour/wrap bug
110
+ > repeats, fix it where the wrapper, helper, or token lives — not at the
111
+ > consumer. A single `Tooltip` defaulting to `inline-flex` will silently
112
+ > shrink every `w-full` child across the app; one prop fix beats N
113
+ > per-page band-aids. See *Primitive-First Patch Rule* below.
114
+
115
+ > **Calm chrome before you decorate content.** Wayfinding chrome (header,
116
+ > breadcrumb, tabs, dock, toolbar) should *recede*, not announce itself —
117
+ > Linear's 2025 refresh names this "structure should be felt, not seen". If
118
+ > chrome competes with content for visual weight, it has too much paint:
119
+ > strip backgrounds → borders → tints → fills, in that order, until the
120
+ > chrome reads as a tonal recess that frames the content. The squint test
121
+ > applies to chrome too: at 10 px blur, the page content should dominate;
122
+ > the chrome should look like a quiet frame, not a stack of buttons.
123
+
124
+ > **One brand-color element per visual zone.** A page should have ONE
125
+ > brand/accent-tinted element per zone (header strip, breadcrumb row, tab
126
+ > row, dock, page body). If breadcrumb chips, tab badges, AND the actual
127
+ > primary CTA all use the brand color, the actual CTA loses scent — every
128
+ > brand-tinted thing claims primacy and the user's eye can't pick a target.
129
+ > Audit the brand budget per zone: count brand-tinted surfaces in the
130
+ > screenshot; if > 1 per zone (excluding the count badge / underline / status
131
+ > chip that *carries* meaning), demote the chrome ones to neutral
132
+ > typography. The brand color is a finite resource — spend it on the action
133
+ > the user is here to take.
134
+
135
+ > **Active ≠ heavier layout — active = different cue.** When an element
136
+ > moves to active state, its **layout dimensions must not change** (no
137
+ > taller, no wider, no extra padding). The active *signal* should come from
138
+ > a micro-cue: text-color shift + font-weight bump (`font-medium` →
139
+ > `font-semibold`), an underline, an icon-wrapping pill (Material 3
140
+ > NavigationBar pattern: 32×16 `bg-secondaryContainer` rounded-full pill
141
+ > wrapping the icon, NOT the whole cell), or a count-badge tint swap. Full
142
+ > background washes on active tabs/buttons/cells inflate *perceived weight*
143
+ > 50%+ even when the bounding box is identical; the user reads the active
144
+ > sibling as "weirdly big and clunky". Linear, Stripe Apps, Vercel, M3 all
145
+ > obey this — copy them.
146
+
147
+ > **Named defaults to avoid when restyling.** Without direction the model
148
+ > reaches for the same few styles: Inter / Roboto, pill-shaped buttons on
149
+ > every control, monospace or "01 / 02 / 03" section labels, a cream /
150
+ > off-white canvas, purple gradients, three equal cards, an italic accent
151
+ > word in headlines. Use the repo's own type, radius, and palette tokens
152
+ > instead; if a first pass lands on one of these, name it in the write-up
153
+ > and replace it.
154
+
155
+ ---
156
+
157
+ ## Workflow Checklist
158
+
159
+ Copy and track:
160
+
161
+ ```
162
+ UI ENHANCE /<route-or-component>
163
+ - [ ] 0. DOMAIN: product class -> colour-tier + density-tier (see Domain Colour Tier)
164
+ - [ ] 1. RECON: route, component tree, data fields, tokens, primitives, wrappers
165
+ - [ ] 2. CONTENT RANK: primary, secondary, metadata, actions, ambient
166
+ - [ ] 3. LIVE READ: 1440 / 1024 / 800 screenshots + DOM rect measurements
167
+ - [ ] 4. PAIN MAP: crowding, dead space, weak hierarchy, dup info, wrapper collapse,
168
+ conditional-slot zero-state, monochromatic surfaces, hard cuts, bland motion
169
+ - [ ] 5. COMPOSITION PLAN: move, group, pin, crop, reveal, fade, animate
170
+ - [ ] 6. IMPLEMENT: primitive-level fixes first, smallest site-level diffs after
171
+ - [ ] 7. VERIFY: three viewports + DOM uniformity + squint-for-colour-distinction
172
+ + reduced motion + dark/light if supported
173
+ - [ ] 8. WRITE-UP: before pain -> design principle -> after behavior
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Step 1 - Recon: Learn the Existing Visual System [HIGH freedom]
179
+
180
+ Read the route/component in full. Then inspect:
181
+
182
+ - Layout primitives: `Card`, `Section`, `Drawer`, `Tabs`, `Badge`, `Button`,
183
+ `Tooltip`, grid/list helpers.
184
+ - Styling system: Tailwind config, CSS variables, design tokens, theme context,
185
+ animation utilities, existing radii/shadows.
186
+ - Data shape: all fields available, especially metadata currently shoved into
187
+ titles or hidden in modals.
188
+ - Data source: API endpoints, loaders/actions, database schema, cache keys,
189
+ backend status enums, validation errors, permissions, and lifecycle events that
190
+ can make the UI's feedback real instead of decorative.
191
+ - Existing comments: search for "DO NOT", "avoid", "deprecated", "design",
192
+ "layout", "spacing", "motion", "overflow".
193
+
194
+ Output a tiny component map:
195
+
196
+ ```
197
+ <Page>
198
+ |-- Header - title, context, primary action
199
+ |-- Body/Grid/List - main content
200
+ |-- Detail/Drawer - progressive disclosure
201
+ `-- Footer/Chrome - metadata, controls, scroll status
202
+ ```
203
+
204
+ Also list every **wrapper / layout primitive** in the chain from grid cell
205
+ down to the rendered child: `Tooltip`, `Trigger`, `Popover`, `Slot`,
206
+ `AnimatedDiv`, `Tippy`, `motion.div`, etc. Note the default `display`,
207
+ `width`, and `flex-shrink` of each. This is where wrapper-collapse bugs
208
+ hide and where the *primitive-first patch* in step 6 is decided.
209
+
210
+ ---
211
+
212
+ ## Step 1.5 - Domain Colour & Density Tier [HIGH freedom]
213
+
214
+ Before touching any colour, name the product class. The same `/8` tint
215
+ that reads "premium and restrained" on a finance dashboard reads
216
+ "monochromatic and dead" on a learning app. Pick a tier, then apply it
217
+ consistently — never blend tiers in one product.
218
+
219
+ | Tier | Examples | Surface bg tint | Accent fill | Categorical hue use | Source |
220
+ |------|----------|-----------------|-------------|---------------------|--------|
221
+ | **A — Vibrant / Gamified** | Duolingo, Drops, Habitica, Strava, kids/learning, fitness, casual gaming | `/15–/25` gradient + ring `/30–/40` | solid token (`bg-success`, `bg-cta`), white-on-solid text | every meaningful category gets a distinct hue (success/error/streak/xp/info/premium) — colour *is* the gamification | Duolingo design system; Figma 2026 trend report |
222
+ | **B — Expressive Consumer** | Spotify, Notion playful surfaces, Robinhood onboarding, content/lifestyle apps | `/10–/18` gradient + ring `/20–/28` | semi-solid (`bg-cta/85`) | 3–5 semantic hues, decorative palette restrained | Spotify, Notion |
223
+ | **C — Productive / Pro Tools** | Linear, GitHub, Vercel, Figma chrome, design tools | `/6–/12` tint + ring `/15` | one accent + 4 semantic states | accent reserved for primary action; semantic states only for status | Linear, Radix |
224
+ | **D — Restrained / Data-Dense** | Stripe dashboard, AWS console, observability/finance/admin/healthcare | mostly neutral surfaces; `/4–/8` only on status pills | one accent for CTA; semantic states 4-slot (success/warn/error/info) | colour reserved for *data signal*; chrome stays achromatic — NN/g 60-30-10 | Stripe, ColorArchive SaaS dashboards |
225
+
226
+ **How to detect tier (do this before designing):**
227
+
228
+ 1. Read the product's marketing copy, README, or onboarding — words like
229
+ *play, streak, level, fun, journey, daily, habit, master* → tier A or B;
230
+ *workspace, dashboard, report, audit, query, pipeline* → tier C or D.
231
+ 2. Look at the existing primary CTA: solid saturated colour with chunky
232
+ shadow → A; solid muted → B/C; outline or ghost dominates → D.
233
+ 3. Look at semantic state tokens (`success`, `warning`, `error`,
234
+ `info`, plus app-specific `xp`, `streak`, `premium`, `ai`, `tone-1..6`).
235
+ More than 5 semantic hues with brand meaning → tier A. Just the basic 4
236
+ → tier C/D.
237
+
238
+ **Tier mismatch is the top hidden cause of "monochromatic" feedback on
239
+ consumer apps.** A tier-A product with tier-D `/8` tints will look
240
+ washed-out and AI-generated even though every token is technically
241
+ "correct".
242
+
243
+ ---
244
+
245
+ ## Step 2 - Content Rank Before Layout [HIGH freedom]
246
+
247
+ Classify every visible element:
248
+
249
+ | Rank | Meaning | Default Treatment |
250
+ |------|---------|-------------------|
251
+ | Primary | What the page is about | largest scale, strongest contrast, best space |
252
+ | Secondary | Helps interpret primary | near primary, smaller, grouped |
253
+ | Metadata | Dates, counts, stats, status | pinned footer/rail/table column, not title stack |
254
+ | Actions | What user can do | close to target, stable hit area, no wrap |
255
+ | Ambient | Brand, mood, decorative signal | background, mask, low contrast, removable |
256
+
257
+ Rules:
258
+
259
+ - If everything is primary, nothing is primary.
260
+ - If metadata crowds the headline, move it to a bottom band, side rail, table
261
+ column, tooltip, or detail drawer.
262
+ - If an action wraps, abbreviate progressively or icon+tooltip it.
263
+ - If a grid has dead space, adjust span, dense placement, aspect ratio, or
264
+ content anchoring before adding more content.
265
+
266
+ ---
267
+
268
+ ## Step 3 - Live Read [LOW freedom — run exactly]
269
+
270
+ Inspect the page at:
271
+
272
+ ```
273
+ 1440 x 900 desktop composition
274
+ 1024 x 700 tablet / split-screen stress
275
+ 800 x 700 narrow desktop / large mobile stress
276
+ ```
277
+
278
+ For each viewport, note:
279
+
280
+ - First focal point.
281
+ - What feels crowded.
282
+ - What feels empty or unbalanced.
283
+ - Which labels wrap or truncate.
284
+ - Whether scroll edges are hard cuts or softly communicated.
285
+ - Whether hover/focus states explain interactivity.
286
+ - Console/runtime errors.
287
+
288
+ Use the squint test: mentally blur the screenshot. The page should still reveal
289
+ its main regions through scale, contrast, grouping, and whitespace.
290
+
291
+ ### 3a - Two squint passes, not one
292
+
293
+ Run the squint test twice — both passes are necessary, and the second is
294
+ the one most enhancers skip:
295
+
296
+ | Pass | Question | Failure looks like |
297
+ |------|----------|--------------------|
298
+ | **Hierarchy squint** | "Where is my eye pulled first?" | Several elements equally loud → primary not chosen |
299
+ | **Category squint** | "Can I tell related items apart by colour/shape alone, without reading?" | All tiles same neutral grey → user must read every label = NN/g #6 violation |
300
+
301
+ For a Tier A/B product (see *Domain Colour Tier*), a 2-up or 3-up of
302
+ metric tiles that all read the same hue when blurred is a bug — colour is
303
+ your category signal. For a Tier D product, the same blur should show
304
+ *near-uniform* tiles with colour reserved only for the alert row.
305
+
306
+ ### 3b - DOM uniformity gate (catches silent wrapper collapse)
307
+
308
+ Screenshots are necessary but not sufficient. When a page has *repeated
309
+ elements that should be the same width / height* — grid tiles, segmented
310
+ control segments, table columns, sidebar nav rows, form fields — measure
311
+ them. Many "weird-looking" layouts come from a wrapper higher in the tree
312
+ silently collapsing children to content width.
313
+
314
+ For each repeated group, query rendered rects and assert uniformity:
315
+
316
+ ```js
317
+ // playwright-cli / Playwright / DevTools console — generic, framework-free
318
+ const rects = [...document.querySelectorAll('<your-tile-selector>')]
319
+ .map(el => el.getBoundingClientRect());
320
+ const widths = rects.map(r => Math.round(r.width));
321
+ const heights = rects.map(r => Math.round(r.height));
322
+ const span = Math.max(...widths) - Math.min(...widths);
323
+ console.table({ widths, heights, widthSpan: span });
324
+ // span > 1px on tiles that share a `grid-cols-N` parent === wrapper-collapse bug
325
+ ```
326
+
327
+ Common wrapper-collapse causes (generic, language/framework agnostic):
328
+
329
+ - Tooltip / Popover / Trigger primitive defaults to `display: inline-flex`
330
+ or `inline-block` → child `width: 100%` collapses to content width.
331
+ - Grid template uses `1fr` (which is `minmax(auto, 1fr)`) and a child has
332
+ intrinsic content wider than expected → cell expands beyond `1fr`. Fix:
333
+ `repeat(N, minmax(0, 1fr))`.
334
+ - Flex child without `min-width: 0` or `flex: 1 1 0` → content size
335
+ dictates layout instead of the flex track.
336
+ - Animation libraries (Framer Motion `m.div`, Reanimated, GSAP wrappers)
337
+ that inject inline `display: inline-block` for transform performance.
338
+ - Slot patterns (`<Slot>`, `asChild`, `cloneElement`) where the consumer
339
+ drops `w-full` because the inner component doesn't forward `className`.
340
+
341
+ Fix at the wrapper, not the leaf: see *Primitive-First Patch Rule*.
342
+
343
+ ### 3c - Conditional-slot zero-state pass
344
+
345
+ For every conditional region (`media`, `aside`, `cover`, `eyebrow`,
346
+ `secondaryCTA`, `illustration`, `footerSlot`), inspect its **sparse
347
+ state** — render the page with the slot's smallest realistic content
348
+ (empty, "0%", a single icon, one short word). If the slot still reserves
349
+ its `min-h` / `aspect-ratio` / `min-w` floor, you have a dead-conditional
350
+ slot. Move to *Composition Move 4 (Stage)* and either:
351
+
352
+ 1. Drop the wrapper when the slot is empty (`{slot && <Region>{slot}</Region>}`).
353
+ 2. Collapse the floor on narrow viewports (`min-h-0 lg:min-h-[160px]`).
354
+ 3. Inline the data into the body (chip / pill next to the action).
355
+
356
+ ### 3d - Information-duplication scan
357
+
358
+ Within every fold (one viewport-height slice top-to-bottom), search for
359
+ the same number, word, date, or status appearing more than once. List
360
+ duplicates explicitly:
361
+
362
+ ```
363
+ Fold 1 of /home @ 390×844:
364
+ - "0/10 words today" ×3 (eyebrow metric, action pill, footer strip)
365
+ - "0%" ×2 (action pill, Today metric tile)
366
+ - streak count ×2 (eyebrow metric, Streak tile)
367
+ ```
368
+
369
+ The duplication itself is the diagnosis — pick *one* canonical home for
370
+ each datum (usually the most actionable one) and delete the others. Each
371
+ delete is a hierarchy upgrade for whatever stays.
372
+
373
+ ---
374
+
375
+ ## Step 4 - Composition Moves [HIGH freedom]
376
+
377
+ Prefer these moves, in order:
378
+
379
+ 1. **Subtract**: remove repeated hints, duplicate labels, low-value icons, noisy
380
+ chrome, and "just in case" metadata.
381
+ 2. **Group**: use proximity and common region to make related pieces read as one
382
+ unit. Increase spacing between groups; decrease spacing inside groups.
383
+ 3. **Pin**: move stats, code metadata, timestamps, or progress to a card footer,
384
+ side rail, bottom band, sticky summary, or column.
385
+ 4. **Stage**: reveal secondary content through hover, focus, tabs, accordions,
386
+ drawers, details panels, or "show more" only when it helps.
387
+ 5. **Rebalance**: change card spans, grid density, aspect ratio, order, or
388
+ alignment so important items get room and empty space feels intentional.
389
+ 6. **Soften**: replace hard clipping with fades, masks, scroll shadows, curtains,
390
+ sticky gradients, or viewport-aware edge treatments.
391
+ 7. **Animate**: add microinteractions only after the static composition works.
392
+
393
+ ---
394
+
395
+ ## Hidden Failure Modes (the difficult-to-spot ones)
396
+
397
+ These are the "user said it but you missed it on first pass" patterns. When
398
+ feedback is vague-but-visceral ("clunky", "atrocious", "wasted space",
399
+ "incoherent height", "feels AI-generated"), walk this list before you touch
400
+ decoration. Each entry has a **detection probe** (what to look for) and a
401
+ **fix shape** (the smallest move that resolves it). Generic across stacks.
402
+
403
+ ### H1. Active-state mass mismatch
404
+
405
+ **Symptom:** "Tab/button/dock cell looks weirdly big and clunky", "highlight
406
+ area is huge", "heights are incoherent".
407
+
408
+ **Detection:** Take a screenshot. Compare bounding boxes of active vs inactive
409
+ siblings (DevTools → element rect, or just eyeball). If layout dimensions
410
+ match but the active one *feels* 1.5× heavier, the active state is using a
411
+ full-cell background fill. Grep your active state for `bg-*` on the
412
+ container element. If found AND the inactive sibling has `bg-transparent`,
413
+ that's the bug.
414
+
415
+ **Fix shape:** Move the active signal to a **micro-indicator** wrapped *inside*
416
+ the cell, not painted *over* it:
417
+ - Tab → underline + text-color + count-badge swap (Stripe / Vercel pattern).
418
+ - Bottom dock → 32×16 `rounded-full` pill wrapping the **icon only**, not
419
+ the whole button (Material 3 `SecondaryContainer` pattern).
420
+ - Sidebar item → leading 2px brand rail + bg-muted hover only.
421
+ - Button → solid fill is fine for primary CTAs (they SHOULD be heavy);
422
+ forbidden for navigation siblings (they should NOT compete).
423
+
424
+ ### H2. Chrome tautology on root / index routes
425
+
426
+ **Symptom:** "Breadcrumb is atrocious", "header is too much", "why is 'Home'
427
+ shown 3 times".
428
+
429
+ **Detection:** On the root route (`/`, `/dashboard`, `/home`), count how many
430
+ chrome zones display the page name or home affordance: company-as-home link,
431
+ breadcrumb chip, page title H1, dock active-item label, tab name. If ≥ 2
432
+ zones say the same word for the *current* page, you have tautology.
433
+
434
+ **Fix shape:** On root routes, **suppress** redundant chrome — pass
435
+ `showContextRow={false}` (or your equivalent) to the page-layout wrapper, or
436
+ gate the breadcrumb on `pathname !== "/"`. The dock indicator + page H1 +
437
+ greeting copy already answer "where am I?". The breadcrumb's job is "how do
438
+ I go back?" — at the root, there is no back, so the row is dead weight.
439
+
440
+ ### H3. Card-on-card chrome
441
+
442
+ **Symptom:** Active page chip "feels heavy", "looks like a button stuck on
443
+ another button", a chip on a tonally-recessed row reads as one elevation too
444
+ many.
445
+
446
+ **Detection:** Inspect the row's background (e.g. `bg-muted`, `bg-chrome-subtle`,
447
+ or any tonal recess). Then inspect the chip inside that row (e.g. `bg-card
448
+ border`). Two distinct elevations within ~6 px of each other = card-on-card.
449
+
450
+ **Fix shape:** The chip must adopt the row's elevation, not introduce its own.
451
+ Either drop the chip's `bg-*` + `border` and let typography (`font-semibold`
452
+ + `text-foreground`) carry the active signal, OR drop the row's tonal recess
453
+ and let the chip be the only painted surface. Pick one elevation per row.
454
+
455
+ ### H4. Brand-color competition
456
+
457
+ **Symptom:** "Page feels noisy even though it's clean", "I can't tell which
458
+ button is the primary action", "everything looks important".
459
+
460
+ **Detection:** Take a desktop screenshot. Count surfaces tinted in the brand
461
+ color (border, fill, ring, text) within one visual zone. Subtract: the
462
+ single intended primary CTA + status chips that *carry* meaning. Anything
463
+ left over (a brand-tinted breadcrumb chip, a brand-tinted tab background, a
464
+ brand-tinted home icon border) is competition.
465
+
466
+ **Fix shape:** Demote the chrome surfaces to neutral (`text-muted-foreground`,
467
+ `bg-transparent`, `border-border/40`). Reserve the brand color for: the
468
+ single primary CTA per fold, real status indicators (success / progress /
469
+ new), and the active-item *micro-indicator* (not the cell background).
470
+
471
+ ## Further reading
472
+
473
+ - [H5. Library-injected inline width beats your CSS rule and more](references/details.md)