@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,496 @@
1
+ ---
2
+ name: enhance-readme
3
+ description: >
4
+ Enhance an existing README: theme-aware hero, feature tour, screenshots or
5
+ GIF, accurate badges, synced content. Use when "enhance README", "make
6
+ README prettier", "add screenshots", or "showcase the app". Prose only →
7
+ docs-writer.
8
+ license: MIT
9
+ ---
10
+
11
+ > Surface router: `/uiux`. You are here: `enhance-readme`. Native iOS/Android (SwiftUI / Compose, no web layer) is out of scope — use Apple HIG / Material directly.
12
+
13
+ # Enhance README
14
+
15
+ **Degree of freedom: MIXED.** Caption and tour selection `[HIGH freedom]`; capture, generator, gitignore, Camo-safe names `[LOW freedom — run exactly]`.
16
+
17
+ Add a theme-aware hero image and a tour grid to a project's README so the repo advertises itself visually instead of being a wall of text.
18
+
19
+ ## How to reason
20
+
21
+ 1. **Detect** — live URL vs local, theme toggle, login
22
+ 2. **Capture** — dark and light at 1600×1000; promote to `docs/screenshots/`
23
+ 3. **Weave** — name + tagline + `<picture>` hero + tour under badges
24
+ 4. **Sync** — badges match `package.json`; first screen answers what/why/who
25
+
26
+ ## Worked example
27
+
28
+ > **Detect:** live Vercel URL; `.dark` class; README is badges + install only.
29
+ > **Capture:** dashboard + three feature pages, both themes; files < 5 MB.
30
+ > **Weave:** theme-aware hero; 4-cell tour with concrete captions; skip GIF.
31
+ > **Sync:** React/Vite badges match lockfile; `.playwright-mcp/` gitignored.
32
+
33
+ ## Self-critique before reporting
34
+
35
+ - **Both themes** — GitHub dark and light both readable
36
+ - **Camo-safe** — overwritten images were renamed, not just replaced
37
+ - **Artifact hygiene** — keepers in `docs/screenshots/`; scratch never committed
38
+ - **Right owner** — content-only docs → `docs-writer`; drift plan → `plan-docs-sync`
39
+
40
+ ## The words matter as much as the pixels
41
+
42
+ A gorgeous hero on top of a jargon wall still loses the reader. This skill owns the **visual** layer; for the **copy**, follow `docs-writer`'s core principle — *write for the reader's mental model first* (answer **what / why / who / how** in plain language before reference detail). Don't ship a beautiful README whose first paragraph a newcomer can't parse.
43
+
44
+ The finished top of the README should read, in this order:
45
+
46
+ 1. **Name + one plain-English tagline** — what it does, no jargon
47
+ 2. **Visual hero** (`<picture>`, theme-aware) — the screenshot or GIF
48
+ 3. **Why it exists / who it's for** — one line each, so a wrong-fit visitor leaves early
49
+ 4. **Shortest path to a first win** — install → one command → result
50
+ 5. Reference depth (features, config, API) below the fold
51
+
52
+ If the project is novel or leans on 3+ domain terms, add `docs-writer`'s plain-language **building-blocks glossary** just under the hero — it's the decoder ring for everything below.
53
+
54
+ ## Rules
55
+
56
+ > **Use the live production URL when one exists.** It shows real data, no dev banners, and matches what visitors will see if they click through.
57
+
58
+ > **Always capture both dark AND light mode** for any image that goes in the hero. GitHub renders the README in both themes; broken contrast on one of them looks worse than no image at all.
59
+
60
+ > **Save to `docs/screenshots/` at the repo root.** Never commit `.playwright-mcp/` artifacts (yml snapshots, console logs) — add it to `.gitignore`.
61
+
62
+ > **Hard limit: 10 MB per image, 25 MB per file in markdown.** Soft target: under 5 MB per image. PNGs at 1600x1000 viewport land around 200–500 KB each.
63
+
64
+ > **Use `<picture>` with `prefers-color-scheme` media queries** for theme-aware swap — github.com renders the `<source>` that matches the viewer's theme.
65
+
66
+ ---
67
+
68
+ ## Workflow Checklist
69
+
70
+ Copy and track:
71
+
72
+ ```
73
+ - [ ] Step 1: Detect demo URL, login flow, theme toggle mechanism
74
+ - [ ] Step 2: Capture screenshots (playwright-cli, 1600x1000 viewport)
75
+ - [ ] Step 3: Generate hero + tour markdown (run scripts/generate-readme-blocks.mjs)
76
+ - [ ] Step 4: Refine captions and weave into README
77
+ - [ ] Step 5: Update tech badges + Tech Stack table to current versions
78
+ - [ ] Step 6: Add .playwright-mcp/ to .gitignore and commit (push only when asked)
79
+ - [ ] Step 7 (optional): Record guided-tour GIF (run scripts/record-readme-tour.mjs)
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Step 1: Detect Demo URL and Theme Mechanism [HIGH freedom]
85
+
86
+ Read the existing README for a "Demo" or "Live demo" link. Fall back to `package.json` `homepage` field, then `vercel.json` / `.github/workflows/deploy.yml` for hosting hints.
87
+
88
+ If no live URL exists, start the local dev server (`npm run dev` / `npm start` / equivalent) and use that. Note the port and base path.
89
+
90
+ Look for theme switching:
91
+
92
+ - Check `tailwind.config.*` and CSS files for `.dark` class usage → toggle with `document.documentElement.classList.toggle('dark')`
93
+ - Check for `[data-theme="dark"]` → toggle with `document.documentElement.dataset.theme = 'light'`
94
+ - Check `localStorage` keys: `theme`, `color-mode`, `prefers-color-scheme`
95
+
96
+ Confirm credentials if the app has auth. Most demos use `admin/demo`, `test/test`, or there's a hint on the login page.
97
+
98
+ ---
99
+
100
+ ## Step 2: Capture Screenshots [LOW freedom — run exactly]
101
+
102
+ Use playwright-cli. **Always read the `protocol-browser-anti-stall` skill first** if the user has it — never block the browser for more than 3 seconds at a time.
103
+
104
+ ### 2a. Open the browser at hero quality
105
+
106
+ ```bash
107
+ PW="npx --yes @playwright/cli@latest"
108
+ $PW -s=readme open --headed "<demo-url>"
109
+ $PW -s=readme resize 1600 1000
110
+ ```
111
+
112
+ ### 2b. Log in, then capture each page in dark mode
113
+
114
+ ```bash
115
+ sleep 2
116
+ $PW -s=readme snapshot # find login refs
117
+ $PW -s=readme fill <username-ref> "<user>"
118
+ $PW -s=readme fill <password-ref> "<pass>"
119
+ $PW -s=readme click <login-button-ref>
120
+ sleep 2
121
+ $PW -s=readme goto "<demo-url>/<page>"
122
+ $PW -s=readme screenshot --filename ".playwright-mcp/<page>-dark.png"
123
+ ```
124
+
125
+ Repeat for each feature page you want in the tour (analytics, settings, list views, etc.). Aim for **1 hero page + 3 tour pages = 4 cells**.
126
+
127
+ ### 2c. Toggle to light mode via direct DOM manipulation (faster than UI hunting)
128
+
129
+ ```bash
130
+ $PW -s=readme eval '() => { document.documentElement.classList.remove("dark"); document.documentElement.classList.add("light"); localStorage.setItem("theme", "light"); return "ok"; }'
131
+ sleep 2
132
+ $PW -s=readme screenshot --filename ".playwright-mcp/<page>-light.png"
133
+ ```
134
+
135
+ Adjust the JS if the app uses `data-theme` or a different localStorage key (detected in Step 1).
136
+
137
+ ### 2d. Move screenshots to `docs/screenshots/`
138
+
139
+ Screenshots land in `.playwright-mcp/` (gitignored scratch). Promote the keepers:
140
+
141
+ ```bash
142
+ mkdir -p docs/screenshots
143
+ mv .playwright-mcp/*-dark.png .playwright-mcp/*-light.png docs/screenshots/
144
+ ```
145
+
146
+ ### 2e. Naming convention
147
+
148
+ Use kebab-case with a `-dark` / `-light` suffix:
149
+
150
+ ```
151
+ docs/screenshots/
152
+ dashboard-dark.png # hero (auto-detected by name)
153
+ dashboard-light.png
154
+ analytics-dark.png
155
+ analytics-light.png # optional: only needed if used in hero
156
+ projects-dark.png
157
+ ai-palette-dark.png # tour-only cells need just the dark variant
158
+ ```
159
+
160
+ The generator script picks the hero by looking for these keywords (in order): `hero`, `dashboard`, `home`, `landing`, `overview`, `main`. Override with `--hero=<basename>` if needed.
161
+
162
+ ---
163
+
164
+ ## Step 3: Generate Hero + Tour Markdown [LOW freedom — run exactly]
165
+
166
+ Run from the repo root:
167
+
168
+ ```bash
169
+ node <skill-dir>/scripts/generate-readme-blocks.mjs --demo-url=https://your-live-demo.example.com/
170
+ ```
171
+
172
+ `<skill-dir>` is the folder this SKILL.md was installed to (`~/.cursor/skills/enhance-readme` in Cursor, `~/.claude/skills/enhance-readme` or the plugin's skills folder in Claude Code).
173
+
174
+ Optional flags:
175
+
176
+ - `--dir=docs/screenshots` (default)
177
+ - `--hero=dashboard` (force a specific basename as hero, no `-dark` suffix)
178
+
179
+ The script:
180
+
181
+ 1. Lists all PNG/JPEG/WebP/GIF in `docs/screenshots/`
182
+ 2. Pairs each `*-dark` with its `*-light` sibling
183
+ 3. Picks the hero by keyword priority
184
+ 4. Validates file sizes (hard fail at 10 MB, warns at 5 MB)
185
+ 5. Prints two ready-to-paste blocks: HERO + TOUR
186
+ 6. Reports orphans, half-pairs, and a size summary
187
+
188
+ If any file exceeds 10 MB the script exits non-zero — compress with `oxipng -o4 docs/screenshots/*.png` (lossless) or re-capture at lower quality.
189
+
190
+ ---
191
+
192
+ ## Step 4: Weave Blocks Into README [HIGH freedom]
193
+
194
+ ### 4a. Hero placement
195
+
196
+ Paste the HERO block **directly under the badges**, replacing any existing tagline:
197
+
198
+ ```markdown
199
+ <div align="center">
200
+
201
+ # ProjectName
202
+
203
+ ![badges...]
204
+
205
+ **A one-line tagline that nails what this is — in plain English, no jargon.**
206
+ A second-line elaboration with the most distinctive features (3–5 keywords).
207
+
208
+ [HERO BLOCK FROM SCRIPT GOES HERE]
209
+
210
+ <!-- Under the hero, add one line each (see docs-writer): -->
211
+ <!-- **Why it exists** — the problem it solves. **Who it's for** — audience + stack. -->
212
+
213
+ </div>
214
+
215
+ ---
216
+ ```
217
+
218
+ ### 4b. Tour placement
219
+
220
+ Paste the TOUR block **right after the hero**, before the existing Demo / Features / Getting Started sections:
221
+
222
+ ```markdown
223
+ [TOUR BLOCK FROM SCRIPT GOES HERE]
224
+
225
+ ---
226
+
227
+ ## Demo
228
+ ...
229
+ ```
230
+
231
+ ### 4c. Refine the captions
232
+
233
+ The script generates `<b>Page Name</b> · TODO short caption`. Replace each TODO with a one-line technical description that mentions a specific library or pattern visible in the screenshot. Keep the tone natural and slightly playful — no marketing fluff.
234
+
235
+ Good caption pattern:
236
+
237
+ ```
238
+ <b>Analytics</b> · Recharts v3 with an 8-color OKLCH palette, split-scale YoY
239
+ (revenue vs counts), donut hover with center value
240
+ ```
241
+
242
+ Bad caption pattern:
243
+
244
+ ```
245
+ <b>Analytics</b> · insights to drive your business forward!
246
+ ```
247
+
248
+ ---
249
+
250
+ ## Step 5: Update Tech Badges + Tech Stack [LOW freedom — match package.json]
251
+
252
+ While editing the README, sync the badges and Tech Stack table to actual `package.json` versions. Common drift:
253
+
254
+ - badges still showing the major the project started on (React, TypeScript, Vite, the Node prerequisite) — read the current majors from `package.json` and the lockfile, never from memory
255
+
256
+ Use shields.io URLs:
257
+
258
+ ```markdown
259
+ ![React](https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=white)
260
+ ![TypeScript](https://img.shields.io/badge/TypeScript-6-3178C6?logo=typescript&logoColor=white)
261
+ ![Vite](https://img.shields.io/badge/Vite-8-646CFF?logo=vite&logoColor=white)
262
+ ```
263
+
264
+ ---
265
+
266
+ ## Step 6: Gitignore + Commit [LOW freedom — run exactly]
267
+
268
+ Add to `.gitignore` (create if missing):
269
+
270
+ ```
271
+ # playwright-cli browser session artifacts
272
+ .playwright-mcp/
273
+ .playwright-cli/
274
+ ```
275
+
276
+ Commit with a conventional-commits message:
277
+
278
+ ```
279
+ docs(readme): hero showcase + tour grid with theme-aware screenshots
280
+
281
+ - Add `<picture>` hero auto-swapping between dark/light, linked to live demo
282
+ - Add N-cell Tour grid with one-line captions
283
+ - Save M screenshots to docs/screenshots/ (~X MB total)
284
+ - Update tech badges to current versions
285
+ - Ignore .playwright-mcp/ session artifacts
286
+ ```
287
+
288
+ The README change does not require a redeploy of the app (it's repo-only). Nothing to verify beyond the GitHub render.
289
+
290
+ ---
291
+
292
+ ## Step 7 (Optional): Record an Animated Guided-Tour GIF [HIGH freedom]
293
+
294
+ A short autoplaying GIF placed above the static screenshots gives a clearer feel for the app than any single frame. GitHub renders inline GIFs up to 10 MB on every README, no `<video>` workarounds needed.
295
+
296
+ The companion script handles everything: launches a headless Chromium, dismisses onboarding overlays, optionally logs in, runs an editorial 4-stop scroll tour, and converts the recording to a palette-dithered GIF.
297
+
298
+ ### 7a. Run the recorder
299
+
300
+ ```bash
301
+ node <skill-dir>/scripts/record-readme-tour.mjs \
302
+ --url=https://your-live-demo.example.com/ \
303
+ --out=docs/screenshots/tour.gif
304
+ ```
305
+
306
+ Optional flags:
307
+
308
+ - `--width=1280` (default) — final GIF width in pixels
309
+ - `--height=800` (default) — recording viewport height
310
+ - `--duration=9000` (default) — milliseconds of usable tour after dismiss/login is trimmed
311
+ - `--fps=15` (default) — frame rate; lower = smaller file
312
+ - `--user=admin --pass=demo` — fills any visible email/text + password input and submits
313
+ - `--routes=.,reports,fixes,judge` — walk through a sequence of pages instead of scrolling one. Comma-separated paths, resolved against `--url`. The script clicks an in-page link if one matches the target path (smooth SPA transition, no white flash) and falls back to `page.goto()` only when no link exists. Time is split equally across stops.
314
+ - `--storage='{"app:tour-completed":"true","app:mode":"advanced"}'` — JSON object of localStorage entries seeded BEFORE first paint via Playwright's `addInitScript`. Use to skip first-run tours, force a specific theme/density/admin-mode, or hide "what's new" popovers — anything the app gates on a localStorage key. Way more reliable than trying to click-dismiss a coach-mark mid-recording.
315
+ - `--keep-webm` — also writes `tour.webm` next to `tour.gif` (useful if you also want a `<video>`-quality copy to attach to a PR)
316
+
317
+ > **Authenticated, multi-page tours**: combine `--user`/`--pass` with `--routes` and `--storage` for a "logged in, walking through the app" tour. Pre-seed `localStorage` with whatever flags the app uses to skip onboarding (`tour-completed`, `welcomed`, etc.) so the GIF doesn't open with a coach-mark covering everything. Use **relative paths** in `--routes` (`reports` not `/reports`) when the app has a base path (e.g. GitHub Pages projects served at `/repo-name/`) — absolute paths bypass the base and 404.
318
+
319
+ ### 7b. Recommended size budget
320
+
321
+ | Output target | Width | FPS | Typical size for 9s | Use when |
322
+ |---------------|-------|-----|---------------------|----------|
323
+ | README inline (default) | 800 | 15 | 4–7 MB | Most projects — fits under GitHub's 10 MB inline cap with headroom |
324
+ | Hero showcase | 1280 | 15 | 7–10 MB | Visually rich apps where detail matters more than file size |
325
+ | Mobile / docs site embed | 600 | 12 | 2–4 MB | When the GIF will be embedded in a docs site that loads it on every page |
326
+
327
+ A 9 s 1280×800 raw `.webm` is ~150 KB; the same as an unoptimised GIF would be ~30 MB. The two-pass `palettegen` + `paletteuse=dither=bayer:bayer_scale=5` recipe in the script is what makes the GIF land in the single-digit MB range without obvious banding. If the script fails the 10 MB hard cap, lower `--width` first (it has the strongest effect), then `--fps`.
328
+
329
+ ### 7c. Embed the GIF in the README
330
+
331
+ Paste the GIF block **directly under the static hero `<picture>` block** so the page reads:
332
+
333
+ 1. Tagline
334
+ 2. Animated tour (the new GIF)
335
+ 3. Static dark/light hero (still good for instant load on slow connections)
336
+ 4. Tour grid
337
+
338
+ See the "Tour GIF" template in the Output Templates section below.
339
+
340
+ ### 7d. Commit the GIF separately
341
+
342
+ GIFs are large binary blobs — commit them in their own commit so reviewers don't have to load 5 MB to look at a one-line code change later:
343
+
344
+ ```
345
+ docs(readme): animated guided-tour GIF (~5 MB, 9s @ 800px)
346
+
347
+ - Add docs/screenshots/tour.gif: 4-stop scroll tour of the live demo
348
+ - Embed under the static hero so first-paint stays fast on slow connections
349
+ - Recorded via ~/.cursor/skills/enhance-readme/scripts/record-readme-tour.mjs
350
+ ```
351
+
352
+ ---
353
+
354
+ ## GitHub README Rendering Reference
355
+
356
+ What works inside markdown on github.com:
357
+
358
+ | Element | Status | Notes |
359
+ |---------|--------|-------|
360
+ | `<picture>` + `<source media="(prefers-color-scheme: dark)">` | Yes | Auto-swaps with viewer's GitHub theme |
361
+ | `<table>`, `<tr>`, `<td width="50%" align="center">` | Yes | Use for grid layouts |
362
+ | `<sub>`, `<sup>`, `<details>`, `<summary>` | Yes | For captions and collapsibles |
363
+ | `<a href>` wrapping `<img>` | Yes | Click image → open URL |
364
+ | `<div align="center">` | Yes | The only reliable centering method |
365
+ | `<style>`, `style=""` attributes | **No** | Stripped by GitHub's sanitizer |
366
+ | `class=""` for custom CSS | **No** | Stripped |
367
+ | GIF up to 10 MB | Yes | Autoplays on loop, no pause control. Best for guided tours. |
368
+ | `<img src="docs/screenshots/tour.gif">` | Yes | Same as `<img>` for any image — relative path resolves fine |
369
+ | `<video src="...">` from a relative repo path | **No** | GitHub's sanitizer strips `<video>` from rendered markdown |
370
+ | MP4/WebM uploaded to issues/PRs | Yes (linked) | The upload returns a `user-images.githubusercontent.com` URL that DOES render — paste that URL inside `<video>` or `<img>`. Workaround for >10 MB tours. |
371
+ | Relative image paths (`docs/screenshots/...`) | Yes | Resolved against the README's location |
372
+
373
+ GitHub content width is ~870 px for desktop. Images at `width="100%"` look good from ~1024 px source up to 1600 px.
374
+
375
+ ---
376
+
377
+ ## Common Gotchas
378
+
379
+ 1. **SPA deep links 404 on CloudFront** — if `/dashboard` returns 404 on direct navigation, go to root first, then click the in-app navigation. CloudFront serves the SPA's `index.html` only for the configured paths.
380
+
381
+ 2. **First navigation may show empty charts** — Recharts and similar libs render after data fetches resolve. Wait 2–3 seconds after navigation, then take the screenshot. Re-shoot if the snapshot shows a chart placeholder instead of bars/lines.
382
+
383
+ 3. **Theme toggle button is hidden in a settings panel** — skip the UI hunt. `eval` with `document.documentElement.classList.toggle('dark')` is one tool call versus four.
384
+
385
+ 4. **Screenshot filename collisions** — Playwright overwrites silently. After each capture, immediately move the file to `docs/screenshots/` with the final name.
386
+
387
+ 5. **Forward slashes in markdown image paths** — even on Windows, `<img src="docs/screenshots/foo.png">` not `docs\screenshots\foo.png`. The generator script handles this.
388
+
389
+ 6. **Local file:// previews can't load adjacent images** due to cross-origin restrictions. To preview the hero locally, run `vite preview` / `npx serve` and visit via `http://localhost:...`.
390
+
391
+ 7. **First-time login may persist a session** — if Playwright shows the dashboard already on `goto` to the login page, the session was preserved from a prior run. Use it; no need to re-log-in.
392
+
393
+ 8. **GitHub Camo caches images by URL hash, not by content** — `camo.githubusercontent.com` (the proxy that serves every README image) keys its cache off the source URL. **Overwriting an existing file with new bytes will NOT update the rendered image on github.com** — Camo will keep serving the cached pre-overwrite version for hours, sometimes days. If you re-record `tour.gif` and the github.com README still shows the old one, **rename the file** (e.g. `tour.gif` → `tour-v2.gif` or something self-documenting like `tour-pdca-loop.gif`) and update the `<img src>` — the new URL hashes fresh and Camo refetches immediately. This applies to ALL images in the README, not just GIFs. The raw.githubusercontent.com endpoint is NOT cached this way, so always verify file contents there before assuming the file is wrong.
394
+
395
+ ---
396
+
397
+ ## Output Templates (Inline Backups)
398
+
399
+ If the script is unavailable, here are the raw templates.
400
+
401
+ ### Hero block
402
+
403
+ ```markdown
404
+ <div align="center">
405
+
406
+ # ProjectName
407
+
408
+ ![badges...]
409
+
410
+ **Tagline.**
411
+ Subtitle line.
412
+
413
+ <a href="LIVE_URL" title="Open the live demo">
414
+ <picture>
415
+ <source media="(prefers-color-scheme: dark)" srcset="docs/screenshots/HERO-dark.png">
416
+ <source media="(prefers-color-scheme: light)" srcset="docs/screenshots/HERO-light.png">
417
+ <img alt="Project hero — what it shows" src="docs/screenshots/HERO-dark.png" width="100%">
418
+ </picture>
419
+ </a>
420
+
421
+ <sub>↑ click to open the live demo · the image swaps with your system theme</sub>
422
+
423
+ </div>
424
+ ```
425
+
426
+ ### Tour GIF (animated, autoplays inline on github.com)
427
+
428
+ ```markdown
429
+ <div align="center">
430
+
431
+ <a href="LIVE_URL" title="Open the live demo">
432
+ <img alt="Animated guided tour of the app" src="docs/screenshots/tour.gif" width="100%">
433
+ </a>
434
+
435
+ <sub>↑ a 9-second guided tour · click to open the live demo</sub>
436
+
437
+ </div>
438
+ ```
439
+
440
+ ### Tour grid (2x2)
441
+
442
+ ```markdown
443
+ ## Tour
444
+
445
+ A quick look at the rooms inside. Click any panel to land on it in the live demo.
446
+
447
+ <table>
448
+ <tr>
449
+ <td width="50%" align="center">
450
+ <a href="LIVE_URL/page-1">
451
+ <img alt="Page 1 alt" src="docs/screenshots/page-1-dark.png" width="100%">
452
+ </a>
453
+ <br>
454
+ <sub><b>Page 1</b> · concrete technical detail with library name</sub>
455
+ </td>
456
+ <td width="50%" align="center">
457
+ <a href="LIVE_URL/page-2">
458
+ <img alt="Page 2 alt" src="docs/screenshots/page-2-dark.png" width="100%">
459
+ </a>
460
+ <br>
461
+ <sub><b>Page 2</b> · concrete technical detail with library name</sub>
462
+ </td>
463
+ </tr>
464
+ <tr>
465
+ <td width="50%" align="center">
466
+ <a href="LIVE_URL/page-3">
467
+ <img alt="Page 3 alt" src="docs/screenshots/page-3-dark.png" width="100%">
468
+ </a>
469
+ <br>
470
+ <sub><b>Page 3</b> · concrete technical detail with library name</sub>
471
+ </td>
472
+ <td width="50%" align="center">
473
+ <a href="LIVE_URL">
474
+ <img alt="Light mode showcase" src="docs/screenshots/HERO-light.png" width="100%">
475
+ </a>
476
+ <br>
477
+ <sub><b>Light mode</b> · how the app looks in daytime</sub>
478
+ </td>
479
+ </tr>
480
+ </table>
481
+ ```
482
+
483
+ ---
484
+
485
+ ## When to Stop
486
+
487
+ The skill is done when:
488
+
489
+ - The README's first screen answers **what / why / who** in plain language — not just a pretty picture (see `docs-writer`)
490
+ - A theme-aware hero renders at the top of the README on github.com in both dark and light viewer themes
491
+ - The Tour grid has at least 2 cells (ideally 4) with concrete captions
492
+ - All screenshots are committed under `docs/screenshots/`, total < 10 MB
493
+ - `.playwright-mcp/` is in `.gitignore`
494
+ - Tech badges + Tech Stack table reflect actual `package.json` versions
495
+ - One conventional-commits commit ships the README, screenshots, and badge sync; the optional GIF goes in its own commit (7d)
496
+ - **Optional**: an animated `tour.gif` lives at `docs/screenshots/tour.gif`, autoplays under the static hero, and weighs less than 8 MB
@@ -0,0 +1,187 @@
1
+ {
2
+ "name": "enhance-readme",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "enhance-readme",
9
+ "version": "1.0.0",
10
+ "license": "ISC",
11
+ "dependencies": {
12
+ "@ffmpeg-installer/ffmpeg": "^1.1.0",
13
+ "playwright": "^1.59.1"
14
+ }
15
+ },
16
+ "node_modules/@ffmpeg-installer/darwin-arm64": {
17
+ "version": "4.1.5",
18
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/darwin-arm64/-/darwin-arm64-4.1.5.tgz",
19
+ "integrity": "sha512-hYqTiP63mXz7wSQfuqfFwfLOfwwFChUedeCVKkBtl/cliaTM7/ePI9bVzfZ2c+dWu3TqCwLDRWNSJ5pqZl8otA==",
20
+ "cpu": [
21
+ "arm64"
22
+ ],
23
+ "hasInstallScript": true,
24
+ "license": "https://git.ffmpeg.org/gitweb/ffmpeg.git/blob_plain/HEAD:/LICENSE.md",
25
+ "optional": true,
26
+ "os": [
27
+ "darwin"
28
+ ]
29
+ },
30
+ "node_modules/@ffmpeg-installer/darwin-x64": {
31
+ "version": "4.1.0",
32
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/darwin-x64/-/darwin-x64-4.1.0.tgz",
33
+ "integrity": "sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw==",
34
+ "cpu": [
35
+ "x64"
36
+ ],
37
+ "hasInstallScript": true,
38
+ "license": "LGPL-2.1",
39
+ "optional": true,
40
+ "os": [
41
+ "darwin"
42
+ ]
43
+ },
44
+ "node_modules/@ffmpeg-installer/ffmpeg": {
45
+ "version": "1.1.0",
46
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/ffmpeg/-/ffmpeg-1.1.0.tgz",
47
+ "integrity": "sha512-Uq4rmwkdGxIa9A6Bd/VqqYbT7zqh1GrT5/rFwCwKM70b42W5gIjWeVETq6SdcL0zXqDtY081Ws/iJWhr1+xvQg==",
48
+ "license": "LGPL-2.1",
49
+ "optionalDependencies": {
50
+ "@ffmpeg-installer/darwin-arm64": "4.1.5",
51
+ "@ffmpeg-installer/darwin-x64": "4.1.0",
52
+ "@ffmpeg-installer/linux-arm": "4.1.3",
53
+ "@ffmpeg-installer/linux-arm64": "4.1.4",
54
+ "@ffmpeg-installer/linux-ia32": "4.1.0",
55
+ "@ffmpeg-installer/linux-x64": "4.1.0",
56
+ "@ffmpeg-installer/win32-ia32": "4.1.0",
57
+ "@ffmpeg-installer/win32-x64": "4.1.0"
58
+ }
59
+ },
60
+ "node_modules/@ffmpeg-installer/linux-arm": {
61
+ "version": "4.1.3",
62
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/linux-arm/-/linux-arm-4.1.3.tgz",
63
+ "integrity": "sha512-NDf5V6l8AfzZ8WzUGZ5mV8O/xMzRag2ETR6+TlGIsMHp81agx51cqpPItXPib/nAZYmo55Bl2L6/WOMI3A5YRg==",
64
+ "cpu": [
65
+ "arm"
66
+ ],
67
+ "hasInstallScript": true,
68
+ "license": "GPLv3",
69
+ "optional": true,
70
+ "os": [
71
+ "linux"
72
+ ]
73
+ },
74
+ "node_modules/@ffmpeg-installer/linux-arm64": {
75
+ "version": "4.1.4",
76
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/linux-arm64/-/linux-arm64-4.1.4.tgz",
77
+ "integrity": "sha512-dljEqAOD0oIM6O6DxBW9US/FkvqvQwgJ2lGHOwHDDwu/pX8+V0YsDL1xqHbj1DMX/+nP9rxw7G7gcUvGspSoKg==",
78
+ "cpu": [
79
+ "arm64"
80
+ ],
81
+ "hasInstallScript": true,
82
+ "license": "GPLv3",
83
+ "optional": true,
84
+ "os": [
85
+ "linux"
86
+ ]
87
+ },
88
+ "node_modules/@ffmpeg-installer/linux-ia32": {
89
+ "version": "4.1.0",
90
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/linux-ia32/-/linux-ia32-4.1.0.tgz",
91
+ "integrity": "sha512-0LWyFQnPf+Ij9GQGD034hS6A90URNu9HCtQ5cTqo5MxOEc7Rd8gLXrJvn++UmxhU0J5RyRE9KRYstdCVUjkNOQ==",
92
+ "cpu": [
93
+ "ia32"
94
+ ],
95
+ "hasInstallScript": true,
96
+ "license": "GPLv3",
97
+ "optional": true,
98
+ "os": [
99
+ "linux"
100
+ ]
101
+ },
102
+ "node_modules/@ffmpeg-installer/linux-x64": {
103
+ "version": "4.1.0",
104
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/linux-x64/-/linux-x64-4.1.0.tgz",
105
+ "integrity": "sha512-Y5BWhGLU/WpQjOArNIgXD3z5mxxdV8c41C+U15nsE5yF8tVcdCGet5zPs5Zy3Ta6bU7haGpIzryutqCGQA/W8A==",
106
+ "cpu": [
107
+ "x64"
108
+ ],
109
+ "hasInstallScript": true,
110
+ "license": "GPLv3",
111
+ "optional": true,
112
+ "os": [
113
+ "linux"
114
+ ]
115
+ },
116
+ "node_modules/@ffmpeg-installer/win32-ia32": {
117
+ "version": "4.1.0",
118
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/win32-ia32/-/win32-ia32-4.1.0.tgz",
119
+ "integrity": "sha512-FV2D7RlaZv/lrtdhaQ4oETwoFUsUjlUiasiZLDxhEUPdNDWcH1OU9K1xTvqz+OXLdsmYelUDuBS/zkMOTtlUAw==",
120
+ "cpu": [
121
+ "ia32"
122
+ ],
123
+ "license": "GPLv3",
124
+ "optional": true,
125
+ "os": [
126
+ "win32"
127
+ ]
128
+ },
129
+ "node_modules/@ffmpeg-installer/win32-x64": {
130
+ "version": "4.1.0",
131
+ "resolved": "https://registry.npmjs.org/@ffmpeg-installer/win32-x64/-/win32-x64-4.1.0.tgz",
132
+ "integrity": "sha512-Drt5u2vzDnIONf4ZEkKtFlbvwj6rI3kxw1Ck9fpudmtgaZIHD4ucsWB2lCZBXRxJgXR+2IMSti+4rtM4C4rXgg==",
133
+ "cpu": [
134
+ "x64"
135
+ ],
136
+ "license": "GPLv3",
137
+ "optional": true,
138
+ "os": [
139
+ "win32"
140
+ ]
141
+ },
142
+ "node_modules/fsevents": {
143
+ "version": "2.3.2",
144
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
145
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
146
+ "hasInstallScript": true,
147
+ "license": "MIT",
148
+ "optional": true,
149
+ "os": [
150
+ "darwin"
151
+ ],
152
+ "engines": {
153
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
154
+ }
155
+ },
156
+ "node_modules/playwright": {
157
+ "version": "1.59.1",
158
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz",
159
+ "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==",
160
+ "license": "Apache-2.0",
161
+ "dependencies": {
162
+ "playwright-core": "1.59.1"
163
+ },
164
+ "bin": {
165
+ "playwright": "cli.js"
166
+ },
167
+ "engines": {
168
+ "node": ">=18"
169
+ },
170
+ "optionalDependencies": {
171
+ "fsevents": "2.3.2"
172
+ }
173
+ },
174
+ "node_modules/playwright-core": {
175
+ "version": "1.59.1",
176
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz",
177
+ "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==",
178
+ "license": "Apache-2.0",
179
+ "bin": {
180
+ "playwright-core": "cli.js"
181
+ },
182
+ "engines": {
183
+ "node": ">=18"
184
+ }
185
+ }
186
+ }
187
+ }