@kensaurus/skills 0.0.0-stage → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/.claude-plugin/marketplace.json +53 -0
  2. package/.claude-plugin/plugin.json +40 -0
  3. package/.cursor-plugin/plugin.json +38 -0
  4. package/.mcp.json +28 -0
  5. package/CHANGELOG.md +1790 -0
  6. package/LICENSE +21 -0
  7. package/LICENSE-APACHE +62 -0
  8. package/NOTICE +13 -0
  9. package/README.md +821 -2
  10. package/SECURITY.md +55 -0
  11. package/agents/code-reviewer.md +60 -0
  12. package/agents/completion-judge.md +89 -0
  13. package/agents/db-migrator.md +125 -0
  14. package/agents/debugger.md +47 -0
  15. package/agents/deploy-checker.md +100 -0
  16. package/agents/perf-monitor.md +74 -0
  17. package/assets/favicon.png +0 -0
  18. package/assets/logo-light.png +0 -0
  19. package/assets/logo.png +0 -0
  20. package/assets/logo.svg +6 -0
  21. package/assets/og.png +0 -0
  22. package/bin/install.mjs +1127 -0
  23. package/bin/kenji.js +2 -0
  24. package/commands/adr.md +17 -0
  25. package/commands/aeo-plan.md +18 -0
  26. package/commands/arch-boundaries.md +17 -0
  27. package/commands/aso-plan.md +18 -0
  28. package/commands/auth-flows.md +19 -0
  29. package/commands/backup-plan.md +17 -0
  30. package/commands/burndown-full.md +25 -0
  31. package/commands/capacitor-plan.md +18 -0
  32. package/commands/codemod-safety.md +22 -0
  33. package/commands/commit.md +18 -0
  34. package/commands/complete-everything.md +40 -0
  35. package/commands/cost-plan.md +19 -0
  36. package/commands/deadcode-plan.md +26 -0
  37. package/commands/deadcode.md +32 -0
  38. package/commands/debug-issue.md +17 -0
  39. package/commands/deps-plan.md +18 -0
  40. package/commands/docs-plan.md +17 -0
  41. package/commands/doctrine.md +19 -0
  42. package/commands/error-plan.md +19 -0
  43. package/commands/feedback-to-closure.md +36 -0
  44. package/commands/fix-issue.md +76 -0
  45. package/commands/gate-logic.md +26 -0
  46. package/commands/green-repo.md +36 -0
  47. package/commands/grill-me.md +19 -0
  48. package/commands/gtm-plan.md +21 -0
  49. package/commands/gtm-weekly.md +17 -0
  50. package/commands/gtm.md +22 -0
  51. package/commands/handoff.md +15 -0
  52. package/commands/housekeep-backlog.md +18 -0
  53. package/commands/housekeep-files.md +22 -0
  54. package/commands/housekeep-gates.md +18 -0
  55. package/commands/instant-nav.md +11 -0
  56. package/commands/integrity-plan.md +19 -0
  57. package/commands/launch-kit.md +16 -0
  58. package/commands/mcp-guide.md +40 -0
  59. package/commands/mobile-plan.md +19 -0
  60. package/commands/native-rn-monorepo/README.md +78 -0
  61. package/commands/native-rn-monorepo/android-build.md +26 -0
  62. package/commands/native-rn-monorepo/android-install.md +32 -0
  63. package/commands/native-rn-monorepo/android-logcat.md +37 -0
  64. package/commands/native-rn-monorepo/ios-ci-logs.md +56 -0
  65. package/commands/native-rn-monorepo/ios-ci-status.md +52 -0
  66. package/commands/native-rn-monorepo/ios-ci-trigger.md +59 -0
  67. package/commands/native-rn-monorepo/rn-reset.md +50 -0
  68. package/commands/native-rn-monorepo/rn-ship-ios.md +67 -0
  69. package/commands/native-rn-monorepo/rn-verify.md +53 -0
  70. package/commands/perf-plan.md +18 -0
  71. package/commands/plan-mode.md +74 -0
  72. package/commands/pr.md +16 -0
  73. package/commands/pricing-plan.md +20 -0
  74. package/commands/privacy-plan.md +18 -0
  75. package/commands/readability.md +12 -0
  76. package/commands/readme.md +15 -0
  77. package/commands/refactor.md +15 -0
  78. package/commands/release-prep.md +17 -0
  79. package/commands/research.md +25 -0
  80. package/commands/responsive-audit.md +21 -0
  81. package/commands/review-code.md +18 -0
  82. package/commands/rls-plan.md +18 -0
  83. package/commands/secrets-plan.md +18 -0
  84. package/commands/security-plan.md +19 -0
  85. package/commands/ship-and-observe.md +36 -0
  86. package/commands/skill-conflicts.md +19 -0
  87. package/commands/slop-plan.md +18 -0
  88. package/commands/stub-plan.md +18 -0
  89. package/commands/test-mutation.md +16 -0
  90. package/commands/test-plan.md +17 -0
  91. package/commands/test.md +29 -0
  92. package/commands/thirdparty-web-interface-guidelines.md +185 -0
  93. package/commands/uiux-plan.md +18 -0
  94. package/commands/uiux.md +45 -0
  95. package/commands/update-deps.md +21 -0
  96. package/commands/validation-plan.md +19 -0
  97. package/commands-portable/fix-issue.md +72 -0
  98. package/commands-portable/plan-mode.md +92 -0
  99. package/commands-portable/research.md +91 -0
  100. package/docs/screenshots/README.md +5 -0
  101. package/docs/screenshots/audit-dark.png +0 -0
  102. package/docs/screenshots/build-dark.png +0 -0
  103. package/docs/screenshots/grill-dark.png +0 -0
  104. package/docs/screenshots/hero-dark.png +0 -0
  105. package/docs/screenshots/hero-light.png +0 -0
  106. package/docs/screenshots/ship-dark.png +0 -0
  107. package/docs/screenshots/src/showcase.html +320 -0
  108. package/hooks/completion-gate.mjs +258 -0
  109. package/hooks/cursor-hooks.json +13 -0
  110. package/hooks/hooks.json +15 -0
  111. package/install.sh +21 -0
  112. package/llms.txt +40 -0
  113. package/mcp/README.md +266 -0
  114. package/mcp/VERSIONS.md +41 -0
  115. package/mcp/mcp-full.json.template +124 -0
  116. package/mcp/mcp.json.template +29 -0
  117. package/mcp/pinned-versions.json +27 -0
  118. package/package.json +94 -4
  119. package/rules/approved-plan-execution.mdc +65 -0
  120. package/rules/full-stack-ship-discipline.mdc +37 -0
  121. package/rules/native-rn-monorepo/README.md +63 -0
  122. package/rules/native-rn-monorepo/_project.mdc +69 -0
  123. package/rules/native-rn-monorepo/native-android.mdc +72 -0
  124. package/rules/native-rn-monorepo/native-ios.mdc +61 -0
  125. package/rules/native-rn-monorepo/react-native-js.mdc +78 -0
  126. package/rules/native-rn-monorepo/web.mdc +60 -0
  127. package/rules/project-starter/components.mdc +54 -0
  128. package/rules/project-starter/data-fetching.mdc +77 -0
  129. package/rules/project-starter/git.mdc +41 -0
  130. package/rules/project-starter/supabase.mdc +37 -0
  131. package/rules/project-starter/tailwind.mdc +48 -0
  132. package/rules/project-starter/typescript.mdc +36 -0
  133. package/rules/project-starter/web-performance.mdc +42 -0
  134. package/rules/senior-engineer.mdc +30 -0
  135. package/rules/shell-first-search.mdc +19 -0
  136. package/rules/skill-workflows.mdc +35 -0
  137. package/rules/verification-before-completion.mdc +57 -0
  138. package/skills/audit-accessibility/SKILL.md +441 -0
  139. package/skills/audit-agent-speed/SKILL.md +181 -0
  140. package/skills/audit-agent-speed/scripts/stop-typecheck.mjs +151 -0
  141. package/skills/audit-analytics/SKILL.md +138 -0
  142. package/skills/audit-auth-flows/SKILL.md +267 -0
  143. package/skills/audit-backend-architecture/SKILL.md +266 -0
  144. package/skills/audit-backend-architecture/references/patterns.md +386 -0
  145. package/skills/audit-bundle-size/SKILL.md +295 -0
  146. package/skills/audit-cicd/SKILL.md +218 -0
  147. package/skills/audit-code-quality/SKILL.md +314 -0
  148. package/skills/audit-code-review/SKILL.md +289 -0
  149. package/skills/audit-codemod-safety/SKILL.md +159 -0
  150. package/skills/audit-db-schema/SKILL.md +465 -0
  151. package/skills/audit-db-schema/references/details.md +110 -0
  152. package/skills/audit-doctrine/SKILL.md +189 -0
  153. package/skills/audit-env-parity/SKILL.md +133 -0
  154. package/skills/audit-fe-api/SKILL.md +458 -0
  155. package/skills/audit-gate-logic/SKILL.md +219 -0
  156. package/skills/audit-i18n/SKILL.md +339 -0
  157. package/skills/audit-infra-cost/SKILL.md +142 -0
  158. package/skills/audit-langfuse-llm/SKILL.md +468 -0
  159. package/skills/audit-langfuse-llm/references/details.md +226 -0
  160. package/skills/audit-llm-security/SKILL.md +147 -0
  161. package/skills/audit-monetization-iap/SKILL.md +137 -0
  162. package/skills/audit-payment-system/SKILL.md +268 -0
  163. package/skills/audit-payment-system/references/checklist.md +283 -0
  164. package/skills/audit-performance/SKILL.md +383 -0
  165. package/skills/audit-performance/references/loading-priority-2026.md +81 -0
  166. package/skills/audit-realworld/SKILL.md +287 -0
  167. package/skills/audit-registry-listing/SKILL.md +122 -0
  168. package/skills/audit-resilience/SKILL.md +153 -0
  169. package/skills/audit-responsive/SKILL.md +221 -0
  170. package/skills/audit-responsive/references/checklist.md +166 -0
  171. package/skills/audit-security/SKILL.md +289 -0
  172. package/skills/audit-skill-conflicts/SKILL.md +178 -0
  173. package/skills/audit-ui-states/SKILL.md +146 -0
  174. package/skills/audit-uiux-design-system/SKILL.md +475 -0
  175. package/skills/audit-uiux-design-system/references/details.md +71 -0
  176. package/skills/audit-ux/SKILL.md +381 -0
  177. package/skills/audit-ux/references/details.md +245 -0
  178. package/skills/audit-ux-journeys/SKILL.md +215 -0
  179. package/skills/audit-ux-journeys/references/checklist.md +179 -0
  180. package/skills/backend-db-performance/SKILL.md +441 -0
  181. package/skills/backend-error-handling/SKILL.md +489 -0
  182. package/skills/backend-error-handling/references/details.md +58 -0
  183. package/skills/backend-observability/SKILL.md +88 -0
  184. package/skills/backend-patterns/SKILL.md +499 -0
  185. package/skills/backend-patterns/references/architecture-patterns.md +298 -0
  186. package/skills/backend-realtime/SKILL.md +403 -0
  187. package/skills/backend-realtime/references/patterns.md +74 -0
  188. package/skills/burndown-full/SKILL.md +174 -0
  189. package/skills/complete-everything/SKILL.md +295 -0
  190. package/skills/data-pipeline/SKILL.md +109 -0
  191. package/skills/data-visualization/SKILL.md +488 -0
  192. package/skills/debug-error/SKILL.md +322 -0
  193. package/skills/debug-fe-be-integration/SKILL.md +459 -0
  194. package/skills/debug-sentry-monitor/SKILL.md +497 -0
  195. package/skills/debug-sentry-monitor/references/details.md +165 -0
  196. package/skills/deploy-npm/SKILL.md +394 -0
  197. package/skills/deploy-npm/references/example-mushi-mushi.md +52 -0
  198. package/skills/deploy-verify/SKILL.md +489 -0
  199. package/skills/design-api/SKILL.md +379 -0
  200. package/skills/design-canvas/SKILL.md +155 -0
  201. package/skills/design-email/SKILL.md +370 -0
  202. package/skills/design-frontend/SKILL.md +143 -0
  203. package/skills/design-generative-art/SKILL.md +474 -0
  204. package/skills/design-mobile-first/SKILL.md +506 -0
  205. package/skills/design-motion/SKILL.md +333 -0
  206. package/skills/design-motion/references/delight-interactions.md +191 -0
  207. package/skills/design-prd/SKILL.md +443 -0
  208. package/skills/design-system/SKILL.md +457 -0
  209. package/skills/design-theme/SKILL.md +226 -0
  210. package/skills/design-theme/themes/tsumagoi-ranch.md +150 -0
  211. package/skills/docs-adr/SKILL.md +168 -0
  212. package/skills/docs-coauthor/SKILL.md +368 -0
  213. package/skills/docs-comparison-pages/SKILL.md +117 -0
  214. package/skills/docs-domain-modeling/SKILL.md +97 -0
  215. package/skills/docs-launch-kit/SKILL.md +139 -0
  216. package/skills/docs-writer/SKILL.md +469 -0
  217. package/skills/enhance-agent-guardrails/SKILL.md +164 -0
  218. package/skills/enhance-arch-boundaries/SKILL.md +154 -0
  219. package/skills/enhance-capacitor-ui/SKILL.md +463 -0
  220. package/skills/enhance-capacitor-ui/references/details.md +750 -0
  221. package/skills/enhance-email-deliverability/SKILL.md +143 -0
  222. package/skills/enhance-growth-loops/SKILL.md +122 -0
  223. package/skills/enhance-lifecycle-email/SKILL.md +130 -0
  224. package/skills/enhance-motion/SKILL.md +193 -0
  225. package/skills/enhance-onboarding/SKILL.md +148 -0
  226. package/skills/enhance-pwa/SKILL.md +303 -0
  227. package/skills/enhance-readability/SKILL.md +146 -0
  228. package/skills/enhance-readme/SKILL.md +496 -0
  229. package/skills/enhance-readme/package-lock.json +187 -0
  230. package/skills/enhance-readme/package.json +17 -0
  231. package/skills/enhance-readme/scripts/generate-readme-blocks.mjs +199 -0
  232. package/skills/enhance-readme/scripts/record-readme-tour.mjs +442 -0
  233. package/skills/enhance-skill-prompts/SKILL.md +167 -0
  234. package/skills/enhance-skill-prompts/references/exemplar-audit-auth-flows.md +311 -0
  235. package/skills/enhance-ux-laws/SKILL.md +409 -0
  236. package/skills/enhance-web-conversion/SKILL.md +155 -0
  237. package/skills/enhance-web-forms/SKILL.md +154 -0
  238. package/skills/enhance-web-instant-nav/SKILL.md +138 -0
  239. package/skills/enhance-web-instant-nav/references/bfcache-blockers.md +23 -0
  240. package/skills/enhance-web-instant-nav/references/early-hints.md +33 -0
  241. package/skills/enhance-web-instant-nav/references/speculation-rules.md +44 -0
  242. package/skills/enhance-web-landing/SKILL.md +459 -0
  243. package/skills/enhance-web-landing/references/details.md +773 -0
  244. package/skills/enhance-web-redesign/SKILL.md +228 -0
  245. package/skills/enhance-web-seo/SKILL.md +276 -0
  246. package/skills/enhance-web-ui/SKILL.md +473 -0
  247. package/skills/enhance-web-ui/references/details.md +674 -0
  248. package/skills/enhance-web-ux/HEURISTICS.md +248 -0
  249. package/skills/enhance-web-ux/PATTERNS.md +375 -0
  250. package/skills/enhance-web-ux/SKILL.md +464 -0
  251. package/skills/enhance-web-ux/examples.md +222 -0
  252. package/skills/enhance-web-ux/references/details.md +406 -0
  253. package/skills/enhance-web-web3d/SKILL.md +397 -0
  254. package/skills/enhance-web-web3d/references/css-canvas-effects.md +180 -0
  255. package/skills/handoff/SKILL.md +66 -0
  256. package/skills/housekeep-backlog/SKILL.md +149 -0
  257. package/skills/housekeep-dead-code/SKILL.md +387 -0
  258. package/skills/housekeep-dead-code/references/ratchet-ci.md +205 -0
  259. package/skills/housekeep-dead-code/references/supabase-hygiene.md +152 -0
  260. package/skills/housekeep-design/SKILL.md +207 -0
  261. package/skills/housekeep-files/SKILL.md +220 -0
  262. package/skills/housekeep-files/references/naming-and-catalog.md +86 -0
  263. package/skills/housekeep-files/scripts/housekeep-files.ps1 +360 -0
  264. package/skills/housekeep-files/scripts/housekeep-files.sh +238 -0
  265. package/skills/housekeep-gates/SKILL.md +174 -0
  266. package/skills/iterate-agent-harness/SKILL.md +137 -0
  267. package/skills/iterate-gtm-weekly/SKILL.md +103 -0
  268. package/skills/iterate-post-launch/SKILL.md +292 -0
  269. package/skills/meta-mcp-builder/SKILL.md +313 -0
  270. package/skills/meta-skill-creator/SKILL.md +304 -0
  271. package/skills/mobile-capacitor-platform/SKILL.md +103 -0
  272. package/skills/mobile-emulator-start/SKILL.md +296 -0
  273. package/skills/mobile-emulator-test/SKILL.md +491 -0
  274. package/skills/mobile-emulator-test/references/details.md +478 -0
  275. package/skills/mobile-rn-performance/SKILL.md +107 -0
  276. package/skills/mobile-rn-screen/SKILL.md +476 -0
  277. package/skills/mobile-rn-screen/references/details.md +785 -0
  278. package/skills/mushi-health/SKILL.md +206 -0
  279. package/skills/mushi-integration/SKILL.md +257 -0
  280. package/skills/plan-aeo-readiness/SKILL.md +166 -0
  281. package/skills/plan-antislop/SKILL.md +281 -0
  282. package/skills/plan-aso/SKILL.md +149 -0
  283. package/skills/plan-backup-dr/SKILL.md +131 -0
  284. package/skills/plan-capacitor-hardening/SKILL.md +217 -0
  285. package/skills/plan-data-integrity/SKILL.md +187 -0
  286. package/skills/plan-dead-code/SKILL.md +386 -0
  287. package/skills/plan-dead-code/references/knip-config.md +214 -0
  288. package/skills/plan-dead-code/references/output-templates.md +133 -0
  289. package/skills/plan-dead-code/references/preservation-contract.md +50 -0
  290. package/skills/plan-dead-code/references/residue-greps.md +84 -0
  291. package/skills/plan-dependency-provenance/SKILL.md +200 -0
  292. package/skills/plan-docs-sync/SKILL.md +143 -0
  293. package/skills/plan-docs-sync/references/drift-taxonomy.md +43 -0
  294. package/skills/plan-docs-sync/references/output-templates.md +33 -0
  295. package/skills/plan-docs-sync/references/preservation-contract.md +17 -0
  296. package/skills/plan-error-handling/SKILL.md +205 -0
  297. package/skills/plan-gtm/SKILL.md +276 -0
  298. package/skills/plan-gtm/references/benchmarks-2026.md +183 -0
  299. package/skills/plan-input-validation/SKILL.md +179 -0
  300. package/skills/plan-llm-cost-guardrails/SKILL.md +176 -0
  301. package/skills/plan-mobile-readiness/SKILL.md +171 -0
  302. package/skills/plan-perf-audit/SKILL.md +145 -0
  303. package/skills/plan-perf-audit/references/audit-scope.md +51 -0
  304. package/skills/plan-perf-audit/references/output-templates.md +33 -0
  305. package/skills/plan-perf-audit/references/preservation-contract.md +13 -0
  306. package/skills/plan-pricing/SKILL.md +173 -0
  307. package/skills/plan-privacy-compliance/SKILL.md +148 -0
  308. package/skills/plan-rls-audit/SKILL.md +231 -0
  309. package/skills/plan-secrets-audit/SKILL.md +181 -0
  310. package/skills/plan-security-audit/SKILL.md +168 -0
  311. package/skills/plan-security-audit/references/output-templates.md +36 -0
  312. package/skills/plan-security-audit/references/owasp-supabase-scope.md +55 -0
  313. package/skills/plan-security-audit/references/preservation-contract.md +18 -0
  314. package/skills/plan-stub-checker/SKILL.md +216 -0
  315. package/skills/plan-stub-checker/references/detection-methodology.md +75 -0
  316. package/skills/plan-stub-checker/references/detection-taxonomy.md +34 -0
  317. package/skills/plan-stub-checker/references/output-templates.md +63 -0
  318. package/skills/plan-stub-checker/references/preservation-contract.md +24 -0
  319. package/skills/plan-test-coverage/SKILL.md +170 -0
  320. package/skills/plan-test-coverage/references/methodology.md +54 -0
  321. package/skills/plan-test-coverage/references/output-templates.md +34 -0
  322. package/skills/plan-test-coverage/references/preservation-contract.md +15 -0
  323. package/skills/plan-uiux-unification/SKILL.md +230 -0
  324. package/skills/plan-uiux-unification/references/output-templates.md +67 -0
  325. package/skills/plan-uiux-unification/references/phase-workbook.md +85 -0
  326. package/skills/plan-uiux-unification/references/preservation-contract.md +24 -0
  327. package/skills/protocol-browser-anti-stall/SKILL.md +211 -0
  328. package/skills/protocol-browser-anti-stall/references/mcp-to-cli-map.md +113 -0
  329. package/skills/protocol-browser-anti-stall/references/playwright-session-coordination.md +170 -0
  330. package/skills/research/SKILL.md +422 -0
  331. package/skills/test-exploratory/SKILL.md +165 -0
  332. package/skills/test-exploratory/references/charter-template.md +29 -0
  333. package/skills/test-load/SKILL.md +126 -0
  334. package/skills/test-mutation/SKILL.md +160 -0
  335. package/skills/test-playwright/SKILL.md +354 -0
  336. package/skills/test-qa/SKILL.md +364 -0
  337. package/skills/test-qa/references/details.md +268 -0
  338. package/skills/test-red-team/SKILL.md +386 -0
  339. package/skills/test-red-team/references/owasp-attack-checklist.md +193 -0
  340. package/skills/test-unit/SKILL.md +259 -0
  341. package/skills/test-unit/references/details.md +267 -0
  342. package/skills/test-visual-regression/SKILL.md +132 -0
  343. package/skills/thirdparty-emil-design-eng/ATTRIBUTION.md +20 -0
  344. package/skills/thirdparty-emil-design-eng/SKILL.md +21 -0
  345. package/skills/thirdparty-emil-design-eng/references/emil-design-eng.md +676 -0
  346. package/skills/thirdparty-ui-ux-pro-max/ATTRIBUTION.md +22 -0
  347. package/skills/thirdparty-ui-ux-pro-max/SKILL.md +304 -0
  348. package/skills/thirdparty-ui-ux-pro-max/data/charts.csv +26 -0
  349. package/skills/thirdparty-ui-ux-pro-max/data/colors.csv +97 -0
  350. package/skills/thirdparty-ui-ux-pro-max/data/icons.csv +101 -0
  351. package/skills/thirdparty-ui-ux-pro-max/data/landing.csv +31 -0
  352. package/skills/thirdparty-ui-ux-pro-max/data/products.csv +97 -0
  353. package/skills/thirdparty-ui-ux-pro-max/data/react-performance.csv +45 -0
  354. package/skills/thirdparty-ui-ux-pro-max/data/stacks/astro.csv +54 -0
  355. package/skills/thirdparty-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  356. package/skills/thirdparty-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  357. package/skills/thirdparty-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  358. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  359. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  360. package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  361. package/skills/thirdparty-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  362. package/skills/thirdparty-ui-ux-pro-max/data/stacks/react.csv +54 -0
  363. package/skills/thirdparty-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  364. package/skills/thirdparty-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  365. package/skills/thirdparty-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  366. package/skills/thirdparty-ui-ux-pro-max/data/stacks/vue.csv +50 -0
  367. package/skills/thirdparty-ui-ux-pro-max/data/styles.csv +68 -0
  368. package/skills/thirdparty-ui-ux-pro-max/data/typography.csv +58 -0
  369. package/skills/thirdparty-ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  370. package/skills/thirdparty-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  371. package/skills/thirdparty-ui-ux-pro-max/data/web-interface.csv +31 -0
  372. package/skills/thirdparty-ui-ux-pro-max/scripts/core.py +253 -0
  373. package/skills/thirdparty-ui-ux-pro-max/scripts/design_system.py +1067 -0
  374. package/skills/thirdparty-ui-ux-pro-max/scripts/search.py +114 -0
  375. package/skills/thirdparty-web-interface-guidelines/ATTRIBUTION.md +23 -0
  376. package/skills/thirdparty-web-interface-guidelines/SKILL.md +190 -0
  377. package/skills/workflow-build-feature/SKILL.md +118 -0
  378. package/skills/workflow-coding-discipline/SKILL.md +140 -0
  379. package/skills/workflow-environment-ready/SKILL.md +128 -0
  380. package/skills/workflow-feature-flag/SKILL.md +262 -0
  381. package/skills/workflow-feedback-to-closure/SKILL.md +165 -0
  382. package/skills/workflow-fix-and-ship/SKILL.md +136 -0
  383. package/skills/workflow-git-commit/SKILL.md +200 -0
  384. package/skills/workflow-green-repo/SKILL.md +166 -0
  385. package/skills/workflow-grilling/SKILL.md +73 -0
  386. package/skills/workflow-gtm/SKILL.md +153 -0
  387. package/skills/workflow-housekeep/SKILL.md +453 -0
  388. package/skills/workflow-housekeep/references/templates.md +109 -0
  389. package/skills/workflow-launch-ready/SKILL.md +145 -0
  390. package/skills/workflow-merge-conflicts/SKILL.md +62 -0
  391. package/skills/workflow-onboard/SKILL.md +99 -0
  392. package/skills/workflow-parallel-agents/SKILL.md +164 -0
  393. package/skills/workflow-pr/SKILL.md +197 -0
  394. package/skills/workflow-quality-gate/SKILL.md +147 -0
  395. package/skills/workflow-refactor/SKILL.md +274 -0
  396. package/skills/workflow-release-prep/SKILL.md +207 -0
  397. package/skills/workflow-ship-and-observe/SKILL.md +164 -0
  398. package/skills/workflow-spec-tdd/SKILL.md +141 -0
  399. package/skills/workflow-spec-tdd/references/spec-template.md +126 -0
  400. package/skills/workflow-spec-tdd/references/tdd-patterns.md +167 -0
  401. package/skills-cursor/babysit/SKILL.md +17 -0
  402. package/skills-cursor/canvas/SKILL.md +142 -0
  403. package/skills-cursor/canvas/sdk/canvas-tokens.d.ts +235 -0
  404. package/skills-cursor/canvas/sdk/chart-primitives.d.ts +200 -0
  405. package/skills-cursor/canvas/sdk/dag-layout.d.ts +102 -0
  406. package/skills-cursor/canvas/sdk/diff-view.d.ts +130 -0
  407. package/skills-cursor/canvas/sdk/form-primitives.d.ts +194 -0
  408. package/skills-cursor/canvas/sdk/hooks.d.ts +117 -0
  409. package/skills-cursor/canvas/sdk/index.d.ts +47 -0
  410. package/skills-cursor/canvas/sdk/theme.d.ts +61 -0
  411. package/skills-cursor/canvas/sdk/todo-list.d.ts +49 -0
  412. package/skills-cursor/canvas/sdk/ui-primitives.d.ts +549 -0
  413. package/skills-cursor/canvas/sdk/ui-primitives.test.d.ts +2 -0
  414. package/skills-cursor/create-hook/SKILL.md +238 -0
  415. package/skills-cursor/create-rule/SKILL.md +185 -0
  416. package/skills-cursor/create-skill/SKILL.md +269 -0
  417. package/skills-cursor/create-skill/references/authoring-guide.md +182 -0
  418. package/skills-cursor/create-subagent/SKILL.md +228 -0
  419. package/skills-cursor/migrate-to-skills/SKILL.md +121 -0
  420. package/skills-cursor/shell/SKILL.md +22 -0
  421. package/skills-cursor/split-to-prs/SKILL.md +47 -0
  422. package/skills-cursor/statusline/SKILL.md +193 -0
  423. package/skills-cursor/update-cli-config/SKILL.md +85 -0
  424. package/skills-cursor/update-cursor-settings/SKILL.md +137 -0
  425. package/skills.sh.json +297 -0
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: workflow-spec-tdd
3
+ description: >
4
+ A spec → plan → TDD loop before writing a line. Use when "spec first",
5
+ "TDD", "do it properly", or LLM output keeps being wrong. Feature through PR
6
+ → workflow-build-feature. One bug → workflow-fix-and-ship.
7
+ license: MIT
8
+ ---
9
+
10
+ # Spec → Plan → TDD Workflow
11
+
12
+ **Degree of freedom: MIXED.** Approach choice and spec content `[HIGH freedom]`;
13
+ phase order, RED-before-GREEN, and Phase 5 checklist `[LOW freedom — run exactly]`.
14
+
15
+ > The antidote to vibe-coding. LLMs fail not because they can't write code, but because they skip the thinking: they guess requirements, write code before tests, and declare victory without verification. This skill forces the discipline. Stack-agnostic — works for web, React Native, and Capacitor.
16
+ >
17
+ > Adapted from [obra/superpowers](https://github.com/obra/superpowers) (MIT) and the Karpathy LLM-coding guardrails.
18
+
19
+ ## How to reason
20
+
21
+ 1. **Restate** — one-sentence ask + surface
22
+ 2. **Contract** — behavior, edges, out-of-scope, verifiable Done when
23
+ 3. **RED** — failing test at an agreed seam, watched fail
24
+ 4. **Verify** — Phase 5 checklist; no unverified "should work"
25
+
26
+ ## Worked example
27
+
28
+ > **Restate:** add coupon codes on checkout (web), not a new promotions engine.
29
+ > **Contract:** one optional code; invalid → inline error; valid → discounted total; out of scope: stacking, expiry admin UI.
30
+ > **RED:** test `applyCoupon('SAVE10')` on a $40 cart expects $36 — fails because helper is missing.
31
+ > **Verify:** GREEN is the helper only; Playwright later lives in `workflow-build-feature`, not here.
32
+
33
+ ## Self-critique before reporting
34
+
35
+ - **RED was watched** — the test failed before implementation
36
+ - **Seam agreed** — tests hit the named public boundary, not internals
37
+ - **YAGNI** — no extra flags or layers beyond the spec
38
+ - **Right owner** — full feature through PR → `workflow-build-feature`; one production bug → `workflow-fix-and-ship`
39
+
40
+ ## When this fires
41
+
42
+ Use for: a new feature, a multi-file refactor, a recurring bug, anything ambiguous, or any task where "looks done" has burned you before.
43
+
44
+ Skip for: one-line edits, pure formatting, a single obvious fix. Don't ceremony-tax trivial work.
45
+
46
+ ## The loop (do not skip phases) [LOW freedom — run exactly]
47
+
48
+ ```
49
+ 0. Read the room → understand repo + exact ask
50
+ 1. Brainstorm → surface assumptions, explore alternatives
51
+ 2. Spec → write the contract: behavior, inputs, outputs, edge cases
52
+ 3. Plan → ordered, file-mapped steps with a verification per step
53
+ 4. TDD → RED (failing test) → GREEN (minimal code) → REFACTOR, per step
54
+ 5. Self-review → spec coverage + quality gate before "done"
55
+ ```
56
+
57
+ ### Phase 0 — Read the room (always first) [HIGH freedom]
58
+ - Read the dependency manifest for exact versions; read the files you'll touch in full.
59
+ - Restate the ask in one sentence and name the surface (web / RN / Capacitor). If the surface has a domain skill (`mobile-capacitor-platform`, `mobile-rn-performance`, `enhance-*`), note it.
60
+ - If the request is genuinely ambiguous, ask **exactly one** clarifying question. Otherwise state your reading and proceed.
61
+
62
+ ### Phase 1 — Brainstorm (before any code) [HIGH freedom]
63
+ - List the **hidden assumptions** the naive implementation would make. Each is a future bug.
64
+ - Consider more than one approach before committing; pick one and say why. Prefer the existing repo pattern over a new abstraction.
65
+ - Apply **YAGNI**: build only what the spec needs. No speculative config, flags, or layers.
66
+
67
+ ### Phase 2 — Spec (the contract) [HIGH freedom]
68
+ Write a short spec before coding. Template:
69
+
70
+ ```markdown
71
+ ## Spec: [feature]
72
+ - Behavior: [what it does, observable]
73
+ - Inputs: [shape, types, sources]
74
+ - Outputs / side effects: [returns, DB writes, navigation, events]
75
+ - Edge cases: [empty, error, offline, large, concurrent, unauthorized]
76
+ - Out of scope: [what this explicitly does NOT do]
77
+ - Done when: [the concrete, checkable success criteria]
78
+ ```
79
+
80
+ "Done when" must be **verifiable**, not "it works". Weak criteria produce weak code.
81
+
82
+ ### Phase 3 — Plan (file-mapped, ordered) [HIGH freedom]
83
+ ```markdown
84
+ ## Plan
85
+ 1. [file] — [change] — verify: [test/command]
86
+ 2. [file] — [change] — verify: [test/command]
87
+ ...
88
+ - New deps (if any): [pkg@version — why]
89
+ - Migrations / schema / RLS / edge fns touched: [list — deploy in same turn per full-stack-ship-discipline]
90
+ - Risk: [low/med/high per step]
91
+ ```
92
+ When steps depend on each other, order them so each leaves the tree green and note the intermediate state and side effects a later step relies on.
93
+
94
+ ### Phase 4 — TDD (RED → GREEN → REFACTOR) [LOW freedom — run exactly]
95
+ For each plan step:
96
+ 1. **RED** — write the failing test first. Run it. **Watch it fail** (proves the test tests something).
97
+ 2. **GREEN** — write the *minimal* code to pass. No extra. Run it. Watch it pass.
98
+ 3. **REFACTOR** — clean up with tests green. Commit the step.
99
+
100
+ Rules:
101
+ - The first implementation task is always "write the failing test."
102
+ - Never write code with no test path unless the repo has zero test setup — then add the smallest harness first, or explicitly flag that you're skipping TDD and why.
103
+ - One concern per test. Test behavior, not implementation details.
104
+ - **Test only at pre-agreed seams.** A seam is the public boundary you test at — the interface where behavior is observable without reaching inside. Name the seams in the plan (Phase 3) and confirm them with the user; prefer existing seams, at the highest level possible. Agreed seams put test effort on critical paths instead of every internal.
105
+ - **Vertical slices, not horizontal.** One test → one implementation → repeat, each test a tracer bullet informed by the last cycle. Writing all tests up front verifies imagined behavior and locks in test structure before the implementation teaches you anything.
106
+ - **No tautological tests.** Expected values come from an independent source of truth (a known-good literal, a worked example, the spec) — never recomputed the same way the code computes them, or the test passes by construction.
107
+ - **The refactor-breaks-test tell.** If a test breaks when you refactor but behavior hasn't changed, it was implementation-coupled — fix the test's seam, don't patch the assertion.
108
+ - Surface-specific runners: web → vitest/jest/playwright; RN → jest + RNTL, `mobile-emulator-test` for device; Capacitor → vitest + `mobile-capacitor-platform` E2E.
109
+ - A pre-existing bug you hit while implementing goes into the spec's "Out of scope" list as a follow-up, not into this loop. Scratch scripts used to explore stay out of the repo; edit files surgically rather than rewriting them.
110
+
111
+ ### Phase 5 — Self-review (gate before "done") [LOW freedom — do not skip]
112
+ Run this checklist. If any box fails, you are not done:
113
+
114
+ ```
115
+ - [ ] Every "Done when" criterion is met and verified (not assumed)
116
+ - [ ] Every spec edge case is handled or explicitly deferred in the spec
117
+ - [ ] Tests fail without the change and pass with it (RED was real)
118
+ - [ ] No placeholder / TODO / dead code / stubbed return left behind
119
+ - [ ] No unrequested scope crept in (YAGNI held)
120
+ - [ ] Backend deps deployed + verified on the remote, not just on disk
121
+ - [ ] Error path actually exercises the new code (logs/network confirm, not a stale 404)
122
+ - [ ] Narrowest verification command for the surface was run and is green
123
+ ```
124
+
125
+ ## Anti-patterns this kills
126
+ - "Here's the implementation" with no test and no spec → **vibe code**.
127
+ - Plausible code that compiles but mishandles empty/error/offline → **missing edge cases**.
128
+ - "It should work now" with nothing run → **unverified claim**.
129
+ - Drive-by refactors of unrelated code → **scope creep**.
130
+ - A migration file written but never deployed → see `full-stack-ship-discipline`.
131
+
132
+ ## References
133
+
134
+ - [TDD patterns & test examples by type](references/tdd-patterns.md)
135
+ - [Spec template & writing principles](references/spec-template.md)
136
+
137
+ ## Composes with
138
+ - `workflow-coding-discipline` — behavioral guardrails (this skill operationalizes them).
139
+ - `full-stack-ship-discipline` — Phase 5 backend-deploy gate.
140
+ - `mobile-capacitor-platform` / `mobile-rn-performance` / `enhance-*` — surface domain knowledge for the plan.
141
+ - `test-playwright` / `mobile-emulator-test` / `test-unit` — the verification runners for Phase 4–5.
@@ -0,0 +1,126 @@
1
+ # Spec Writing Reference
2
+
3
+ ## Why specs matter
4
+
5
+ Vague prompts produce vague code. A good spec gives the agent:
6
+ - **What** to build (requirements, not solutions)
7
+ - **Why** it exists (constraints, context, trade-offs)
8
+ - **How to verify** it's correct (acceptance criteria)
9
+ - **What not to do** (explicit constraints)
10
+
11
+ One well-written spec is worth 10 follow-up corrections.
12
+
13
+ ---
14
+
15
+ ## Spec template
16
+
17
+ ```markdown
18
+ ## Goal
19
+ One sentence: what should exist after this is done that doesn't exist now?
20
+
21
+ ## Background & context
22
+ - Why is this needed?
23
+ - What problem does it solve?
24
+ - Any prior art or existing code to build on?
25
+ - Constraints (time, performance, backwards compatibility)?
26
+
27
+ ## Requirements
28
+
29
+ ### Must have
30
+ - [ ] Requirement 1 (user-visible behaviour)
31
+ - [ ] Requirement 2
32
+
33
+ ### Should have
34
+ - [ ] Nice-to-have 1
35
+
36
+ ### Must NOT do
37
+ - Do not change X (existing users depend on it)
38
+ - Do not add a new DB table (use existing Y)
39
+
40
+ ## Acceptance criteria
41
+ How will we know it's done?
42
+ - [ ] User can do X and sees Y
43
+ - [ ] Error case Z shows message W
44
+ - [ ] Performance: page loads in <200ms
45
+ - [ ] Tests pass, no console errors
46
+
47
+ ## Technical notes
48
+ - Use existing `useAuth` hook for auth checks
49
+ - Matches pattern in `features/billing/`
50
+ - Schema change: add `status` column to `orders` table
51
+ - New Zod schema needed for form validation
52
+
53
+ ## Out of scope
54
+ - Feature X (future iteration)
55
+ - Mobile optimisation (separate ticket)
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Writing principles
61
+
62
+ ### Behaviour, not implementation
63
+ ```markdown
64
+ # Good — describes observable behaviour
65
+ "When the user submits an invalid email, show an inline error below the field."
66
+
67
+ # Bad — prescribes implementation
68
+ "Add a useState for emailError and set it in the onChange handler."
69
+ ```
70
+
71
+ ### Explicit constraints
72
+ ```markdown
73
+ # Be explicit about what NOT to do
74
+ - Must work without JavaScript (no client-only state)
75
+ - Must not break existing /api/users endpoint
76
+ - Must use existing Button from @/components/ui
77
+ ```
78
+
79
+ ### Include examples
80
+ ```markdown
81
+ ## Example inputs/outputs
82
+
83
+ Input: User uploads a 2MB JPEG
84
+ Expected: Image compressed to <500KB, stored in Supabase storage, URL returned
85
+
86
+ Input: User uploads a 10MB PDF
87
+ Expected: Error toast "File too large. Maximum 5MB."
88
+ ```
89
+
90
+ ### Define edge cases
91
+ ```markdown
92
+ ## Edge cases
93
+ - What if the user is not authenticated?
94
+ - What if the network request times out?
95
+ - What if two users submit simultaneously?
96
+ - What if the data is empty/null?
97
+ - What happens on mobile vs desktop?
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Spec sizes
103
+
104
+ ### Micro (1-2 files, <1 hour)
105
+ Just a few bullets:
106
+ ```
107
+ Add a "Copy link" button to the share modal.
108
+ - Uses navigator.clipboard.writeText()
109
+ - Shows "Copied!" toast for 2s on success
110
+ - Falls back to prompt() if clipboard API unavailable
111
+ ```
112
+
113
+ ### Standard (1 feature, 1 day)
114
+ Use the full template above.
115
+
116
+ ### Large (multi-feature, multi-day)
117
+ Break into multiple micro/standard specs. Each should be independently implementable.
118
+
119
+ ---
120
+
121
+ ## Red flags in specs
122
+ - "Make it better" → Specify what "better" means
123
+ - "Add AI to it" → Specify what the AI should do and when
124
+ - "Like X app" → Describe the specific behaviour you want
125
+ - No acceptance criteria → Can't know when it's done
126
+ - Acceptance criteria that test implementation → Test behaviour instead
@@ -0,0 +1,167 @@
1
+ # TDD Patterns Reference
2
+
3
+ ## The RED → GREEN → REFACTOR cycle
4
+
5
+ ### Phase RED — write a failing test first
6
+
7
+ ```typescript
8
+ // RED: tests written from the input/output pairs; no implementation exists yet.
9
+
10
+ describe('calculateDiscount', () => {
11
+ it('applies 10% for orders over £100', () => {
12
+ expect(calculateDiscount(120, 'standard')).toBe(108)
13
+ })
14
+ it('returns full price for orders under £100', () => {
15
+ expect(calculateDiscount(80, 'standard')).toBe(80)
16
+ })
17
+ it('applies 20% for premium customers', () => {
18
+ expect(calculateDiscount(120, 'premium')).toBe(96)
19
+ })
20
+ it('throws for negative amounts', () => {
21
+ expect(() => calculateDiscount(-10, 'standard')).toThrow()
22
+ })
23
+ })
24
+ ```
25
+
26
+ Run and confirm failure before writing implementation:
27
+ ```bash
28
+ npx vitest run src/utils/discount.test.ts
29
+ # Expected: all tests fail (function doesn't exist yet)
30
+ ```
31
+
32
+ ### Phase GREEN — minimal code to pass
33
+
34
+ Write the minimal code that makes these tests pass without modifying the tests.
35
+
36
+ ```bash
37
+ npx vitest run --watch src/utils/discount.test.ts
38
+ ```
39
+
40
+ Commit when all tests pass with minimal implementation.
41
+
42
+ ### Phase REFACTOR — clean with tests green
43
+
44
+ With tests as a safety net, refactor confidently:
45
+ - Extract repeated logic
46
+ - Improve naming
47
+ - Add types / docs
48
+ - Optimise hot paths
49
+
50
+ Run tests after every change. They must stay green.
51
+
52
+ ---
53
+
54
+ ## Test patterns by type
55
+
56
+ ### Unit test (Vitest)
57
+ ```typescript
58
+ import { describe, it, expect, vi, beforeEach } from 'vitest'
59
+
60
+ describe('UserService', () => {
61
+ beforeEach(() => { vi.clearAllMocks() })
62
+
63
+ it('creates user with hashed password', async () => {
64
+ const mockDb = { user: { create: vi.fn().mockResolvedValue({ id: '1', email: 'a@b.com' }) } }
65
+ const service = new UserService(mockDb as any)
66
+ const result = await service.createUser({ email: 'a@b.com', password: 'plain' })
67
+ expect(mockDb.user.create).toHaveBeenCalledWith(
68
+ expect.objectContaining({ data: expect.objectContaining({ email: 'a@b.com' }) })
69
+ )
70
+ expect(result.id).toBe('1')
71
+ })
72
+ })
73
+ ```
74
+
75
+ ### Server Action (with validation)
76
+ ```typescript
77
+ it('rejects invalid email', async () => {
78
+ const result = await createUserAction({ email: 'not-an-email', name: 'Test' })
79
+ expect(result.success).toBe(false)
80
+ expect(result.fieldErrors?.email).toBeDefined()
81
+ })
82
+ ```
83
+
84
+ ### React component (Testing Library)
85
+ ```typescript
86
+ import { render, screen, fireEvent, waitFor } from '@testing-library/react'
87
+
88
+ it('shows error on invalid submit', async () => {
89
+ render(<LoginForm />)
90
+ fireEvent.click(screen.getByRole('button', { name: /sign in/i }))
91
+ await waitFor(() => {
92
+ expect(screen.getByText(/email is required/i)).toBeInTheDocument()
93
+ })
94
+ })
95
+ ```
96
+
97
+ ### API route
98
+ ```typescript
99
+ it('returns 401 without auth', async () => {
100
+ const req = new Request('http://localhost/api/users', { method: 'GET' })
101
+ const res = await GET(req)
102
+ expect(res.status).toBe(401)
103
+ })
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Writing good tests
109
+
110
+ ### Name tests behaviourally
111
+ ```typescript
112
+ // Good — observable behaviour
113
+ it('redirects to login when session expires')
114
+ it('shows toast on network error')
115
+ it('disables submit while loading')
116
+
117
+ // Bad — describes implementation
118
+ it('sets isLoading to true')
119
+ it('calls setError with message')
120
+ ```
121
+
122
+ ### Arrange-Act-Assert
123
+ ```typescript
124
+ it('filters active users', () => {
125
+ // Arrange
126
+ const users = [
127
+ { id: '1', active: true, name: 'Alice' },
128
+ { id: '2', active: false, name: 'Bob' },
129
+ ]
130
+ // Act
131
+ const result = filterActiveUsers(users)
132
+ // Assert
133
+ expect(result).toHaveLength(1)
134
+ expect(result[0].name).toBe('Alice')
135
+ })
136
+ ```
137
+
138
+ ### Mock at boundaries only
139
+ ```typescript
140
+ // Mock external dependencies (DB, APIs, third-party services)
141
+ vi.mock('@/lib/db', () => ({ prisma: mockPrisma }))
142
+ vi.mock('resend', () => ({ Resend: vi.fn(() => ({ emails: { send: vi.fn() } })) }))
143
+
144
+ // Don't mock your own pure functions — test them directly
145
+ ```
146
+
147
+ ---
148
+
149
+ ## Runner commands
150
+ ```bash
151
+ npx vitest run # All tests once
152
+ npx vitest run --changed # Only changed files
153
+ npx vitest run src/features/auth # Specific folder
154
+ npx vitest --coverage # Coverage report
155
+ npx vitest watch # Watch mode
156
+ ```
157
+
158
+ ## Coverage targets
159
+ | Type | Target |
160
+ |------|--------|
161
+ | Statements | > 80% |
162
+ | Branches | > 75% |
163
+ | Functions | > 80% |
164
+ | Lines | > 80% |
165
+
166
+ Focus coverage on: business logic, server actions, validation, auth flows.
167
+ Test behaviour, not implementation details.
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: babysit
3
+ description: >
4
+ Keep an already-open PR merge-ready: triage comments, resolve clear
5
+ conflicts, fix CI. Do not merge. Dirty tree → merge-ready PR →
6
+ workflow-release-prep. Create/merge PR lifecycle → workflow-pr.
7
+ ---
8
+ # Babysit PR
9
+ Your job is to get this PR to a merge-ready state.
10
+
11
+ Check PR status, comments, and latest CI and resolve any issues until the PR is ready to merge.
12
+
13
+ 1. Comments: Review every comment (including Bugbot) before acting. Fix only comments you agree with; explain when you disagree or are unsure.
14
+ 2. Merge conflicts: When there are conflicts, sync with base branch. Resolve merge conflicts only when intent is clearly the same, otherwise stop and ask for clarification.
15
+ 3. CI: Fix CI issues that come up with small scoped fixes. Push them and re-watch CI until mergeable + green + comments triaged.
16
+
17
+ Your turn ends when the PR is mergeable, CI is green, and every comment is triaged — or at a conflict whose intent is unclear or a comment you disagree with, where you stop and say so. "Pushed a fix, CI is running" is not an end state: watch the run to completion. Close with a recap: what you changed, what you pushed, what stays open.
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: canvas
3
+ description: >
4
+ Create a live React canvas beside chat for standalone analytical
5
+ artifacts that benefit from visual layout: quantitative/security/
6
+ architecture analyses, data-heavy timelines/charts/tables, interactive
7
+ explorations, or repeatable tools. Do not use for simple prose or code
8
+ changes.
9
+ metadata:
10
+ surfaces:
11
+ - ide
12
+ disable-model-invocation: true
13
+ user-invocable: false
14
+ ---
15
+ A canvas is a single `.canvas.tsx` file the IDE compiles so the user can open it beside the chat. Follow the workflow below in order.
16
+
17
+ ## Workflow
18
+
19
+ ### 1. Decide whether to use a canvas
20
+
21
+ The trigger is **user intent**, not response shape. Ask: would the user benefit from viewing this output as its **own standalone artifact**, separate from the chat? If the output is a means to an end (a drafted message, a code fix, a dashboard in another tool), skip the canvas.
22
+
23
+ **Use a canvas when the agent produces new standalone analytical output:**
24
+ - Quantitative analyses and metrics breakdowns (e.g. "send 500 requests and tell me how many fail")
25
+ - Billing or account investigations that surface structured findings from database queries
26
+ - Security audits or architecture reviews with categorized findings
27
+ - Cross-system data analyses and overlap reports
28
+ - Structured data from MCP tools (Databricks, Datadog, etc.) where the data IS the deliverable
29
+ - Financial analyses, margin decompositions, usage trend reports
30
+ - Tables with more than a handful of rows that the user asked to see
31
+
32
+ **Do NOT use a canvas when:**
33
+ - The user asks for work in a **specific tool** — "create a Datadog dashboard" means give them a Datadog dashboard, not a canvas
34
+ - The user has a **specific deliverable** — "draft a support response", "fix this code", "make this PR"
35
+ - The user is **working within an existing artifact** — improving an HTML dashboard, editing an existing file
36
+ - The user is doing **targeted debugging** or active development, even if structured findings emerge along the way
37
+ - Short factual answers, one-off file edits, or quick clarifying questions
38
+ - MCP tools are queried as an **intermediate step** for a different deliverable (e.g. querying Stripe to draft a support reply)
39
+
40
+ ### 2. Write the canvas
41
+
42
+ **Location.** Canvases live at `~/.cursor/projects/<workspace>/canvases/<name>.canvas.tsx`. The IDE only detects canvases written directly inside that exact directory — subfolders, alternate extensions, and other locations are not picked up. For a new canvas, always use the write file tool to create the `.canvas.tsx` file at that exact path; do not stop after telling the user the path or showing code in chat. Treat that managed `canvases/` directory as pre-provisioned by Cursor itself: write the canvas file directly there and do **not** spend turns creating the directory with `mkdir` or checking whether it exists before writing. Listing its contents for other purposes (e.g. checking for existing canvases) is fine. If you can't determine the workspace directory from absolute paths already in your environment (terminals, transcripts, recently-viewed files), list `~/.cursor/projects/` rather than guessing. Use a descriptive kebab-case filename ending in `.canvas.tsx`; preserve acronym capitalization and lowercase the rest.
43
+
44
+ **File rules:**
45
+ - Exactly one `.canvas.tsx` file per canvas. Never create helper files, style files, or supporting modules.
46
+ - Import **only** from `cursor/canvas`. No relative imports, no npm packages, no Node built-ins.
47
+ - Default-export the top-level component.
48
+ - Embed all data inline. **No `fetch()`, no network calls.**
49
+
50
+ **Component discovery:** prefer built-in `cursor/canvas` components over hand-rolled markup. The full public surface (components, hooks, prop types, tokens) is declared in `~/.cursor/skills-cursor/canvas/sdk/index.d.ts` and its sibling `.d.ts` files — read them when you need exact exports, prop shapes, or hook signatures rather than guessing. Referencing an export that does not exist is the most common runtime error.
51
+
52
+ Apply the design guidance below as you write, and complete its pre-delivery self-check before returning the canvas.
53
+
54
+ ## Design guidance
55
+
56
+ Be creative. The SDK gives you expressive building blocks — use them in whatever combination best serves the content. But avoid slop: no gradients, no emojis, no box-shadows, no rainbow coloring. Cursor canvases are flat, minimal, and purposeful.
57
+
58
+ ### Visual hierarchy
59
+
60
+ Not everything deserves equal treatment. Primary content gets more space, larger headings, and accent color. Supporting content stays compact. Squint test: blur your eyes — can you tell what matters?
61
+
62
+ **Color.** All colors from `useHostTheme()` tokens — read its JSDoc in the SDK declarations for the return shape and usage pattern. No hardcoded hex. Use accent color deliberately, not on everything.
63
+
64
+ ### Slop patterns — forbidden
65
+
66
+ These specific patterns produce low-quality output. If 2+ are present, redesign.
67
+
68
+ - **Gradients** — no `linear-gradient`, `radial-gradient`, `background-clip: text`.
69
+ - **Emojis** — no emoji as icons, status indicators, bullets, or section markers.
70
+ - **Box shadows** — no `box-shadow`. Flat surfaces only.
71
+ - **Wall of identical cards** — every section wrapped in the same card style with no variation. Mix open sections with cards.
72
+ - **Rainbow coloring** — a different color on every element. Most elements are neutral; color is used sparingly with purpose.
73
+ - **Giant text** — font sizes above H1 (24px), or bold text stuffed in CardHeader.
74
+ - **Decorative borders** — colored borders on every element. Borders are structural (subtle stroke tokens), not decorative.
75
+ - **Borrowed defaults** — italic accent words in headings, "01/02/03" numbered section labels, monospace for non-code labels, pill-shaped buttons or chips. Stock patterns, not choices.
76
+
77
+ ### Pre-delivery self-check
78
+
79
+ Before returning canvas code, verify:
80
+ 1. Does the layout have visual hierarchy? One thing should stand out.
81
+ 2. Is there variety in the composition? Not just a single column of uniform blocks.
82
+ 3. Slop check: scan for the forbidden patterns above.
83
+
84
+ ## Introducing the canvas
85
+
86
+ When you create a canvas, add a short note in your chat response telling the user you created a canvas they can open beside the chat:
87
+
88
+ - **First canvas** — if no other `.canvas.tsx` files exist in the workspace's `canvases/` directory, include one sentence explaining what a canvas is.
89
+ - **Unsolicited canvas** — if the user didn't ask for a canvas, include one sentence explaining why you chose it over plain text.
90
+
91
+ Both can apply at once; one or two sentences total is enough. Skip the intro for subsequent canvases.
92
+
93
+ ## Troubleshooting
94
+
95
+ If a canvas appears blank or missing, the most common cause is that it was not written under `~/.cursor/projects/<workspace>/canvases/` exactly — re-save it to that path. Do not debug this by trying to create the managed directory manually; focus on correcting the file path instead. Users can click the canvas file path in the response to open it, just like any other file path in Cursor. When present, the canvas server writes a `<name>.canvas.status.json` sidecar after each build with `status`, `diagnostics`, or `error` fields you can read; the file is best-effort and may not exist, so don't block on it.
96
+
97
+ ## Good example
98
+
99
+ ```tsx
100
+ import { Divider, Grid, H1, H2, Stack, Stat, Table, Text } from 'cursor/canvas';
101
+
102
+ export default function ServiceOverview() {
103
+ return (
104
+ <Stack gap={20}>
105
+ <H1>Service Overview</H1>
106
+ <Grid columns={3} gap={16}>
107
+ <Stat value="6" label="Total Services" />
108
+ <Stat value="5" label="Healthy" tone="success" />
109
+ <Stat value="1" label="Degraded" tone="warning" />
110
+ </Grid>
111
+ <Divider />
112
+ <H2>Service Status</H2>
113
+ <Table
114
+ headers={["Service", "Status", "Uptime", "Latency"]}
115
+ rows={[
116
+ ["api-gateway", "Operational", "99.99%", "12ms"],
117
+ ["auth-service", "Degraded", "99.2%", "340ms"],
118
+ ["billing", "Operational", "99.8%", "45ms"],
119
+ ]}
120
+ rowTone={[undefined, "warning", undefined]}
121
+ />
122
+ <Divider />
123
+ <H2>Recent Changes</H2>
124
+ <Text>Auth service latency increased after the 14:30 deploy.</Text>
125
+ <Text tone="secondary" size="small">Last checked: Apr 7, 2026 14:52 UTC</Text>
126
+ </Stack>
127
+ );
128
+ }
129
+ ```
130
+
131
+ Stats in a Grid, Table directly under H2, text sections without cards.
132
+
133
+ ## Bad example — do not imitate
134
+
135
+ ```tsx
136
+ // BAD — every section wrapped in Card, no hierarchy, Table unnecessarily boxed
137
+ <Stack gap={12}>
138
+ <Card><CardHeader>Summary</CardHeader><CardBody><Text>6 services.</Text></CardBody></Card>
139
+ <Card><CardHeader>Status</CardHeader><CardBody><Table headers={[...]} rows={[...]} /></CardBody></Card>
140
+ <Card><CardHeader>Changes</CardHeader><CardBody><Text>Latency increased.</Text></CardBody></Card>
141
+ </Stack>
142
+ ```