@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,248 @@
1
+ # Heuristics & Laws of UX — Quick Reference
2
+
3
+ The canonical references the agent maps every pain point against. Source-of-truth links are
4
+ at the bottom. Keep this lean — the goal is fast lookup, not a textbook.
5
+
6
+ ---
7
+
8
+ ## NN/g 10 Usability Heuristics (Nielsen, 1994; updated 2024)
9
+
10
+ ### #1 Visibility of System Status
11
+
12
+ The system always tells the user what is happening, via appropriate feedback in reasonable
13
+ time.
14
+
15
+ **On screen:** loading spinners, progress bars, "saved" toasts, inline status chips
16
+ ("AI解析済", "連携済", "未処理"), breadcrumbs showing where you are, badges that count
17
+ unread items, real-time validation under form fields.
18
+
19
+ **Common violations:** async work runs invisibly (AI extraction, autosave, sync); state
20
+ that affects routing decisions (linked vs. unlinked) is hidden one click deep; nav doesn't
21
+ show selection.
22
+
23
+ ---
24
+
25
+ ### #2 Match Between System and Real World
26
+
27
+ Speak the user's language. Use words, phrases, concepts familiar to them. Follow real-world
28
+ conventions, natural ordering.
29
+
30
+ **On screen:** "Empty trash" not "Purge resource"; receipt icon for receipts, plane icon
31
+ for travel; date in the user's locale; sort orders that match how the domain actually
32
+ thinks (newest first for messages, alphabetical for files, status-grouped for tasks).
33
+
34
+ **Common violations:** engineering jargon in user-facing labels (`fileStatus=unlinked`),
35
+ generic icons for domain-specific entities, unfamiliar mental models forced on users.
36
+
37
+ ---
38
+
39
+ ### #3 User Control & Freedom
40
+
41
+ Users make mistakes — provide a clearly marked emergency exit. Support undo and redo.
42
+
43
+ **On screen:** Cancel buttons on every modal, Undo toasts after destructive actions,
44
+ breadcrumb to step out, browser-back honoured, multi-step forms remember progress on back.
45
+
46
+ **Common violations:** modals with only "OK"; bulk delete with no undo; form abandonment
47
+ loses all input; no way to back out of an irreversible workflow step.
48
+
49
+ ---
50
+
51
+ ### #4 Consistency & Standards
52
+
53
+ Same things look the same, different things look different. Follow platform conventions
54
+ (Jakob's Law: users spend most of their time on OTHER products).
55
+
56
+ **On screen:** primary-action button looks the same on every page; destructive actions
57
+ are red everywhere; date format consistent; same icon = same meaning across views;
58
+ keyboard shortcuts (`Cmd+K`, `Esc`, `?`) match platform norms.
59
+
60
+ **Common violations:** two different "Submit" buttons styled differently; the same status
61
+ shown as "✓", "OK", and "完了" in three places; clickable items that don't look clickable.
62
+
63
+ ---
64
+
65
+ ### #5 Error Prevention
66
+
67
+ Better than a good error message: a design that prevents the error.
68
+
69
+ **On screen:** disabled state on submit until the form is valid; date pickers (not free
70
+ text); type-safe enums (not free strings); confirmation step on irreversible bulk
71
+ operations; auto-save on long forms.
72
+
73
+ **Common violations:** free-text fields that should be enums; destructive actions a single
74
+ mis-click away; forms that submit on Enter inside textarea; copy-paste of formatted text
75
+ silently mangling input.
76
+
77
+ ---
78
+
79
+ ### #6 Recognition Rather Than Recall
80
+
81
+ Make options visible. Don't make users remember information from one screen to use it on
82
+ another.
83
+
84
+ **On screen:** breadcrumbs showing the path; recent searches autocompleted; field labels
85
+ always visible (not just placeholder); icon + text labels; keyboard shortcuts listed in
86
+ menus next to actions; "you saw this 5 mins ago" markers.
87
+
88
+ **Common violations:** placeholder-only labels that disappear on focus; cryptic icon-only
89
+ toolbars; forms across multiple steps that don't summarise prior input; "remember which
90
+ tab you were on" expected of the user.
91
+
92
+ ---
93
+
94
+ ### #7 Flexibility & Efficiency of Use
95
+
96
+ Shortcuts speed up expert use. Allow users to tailor frequent actions.
97
+
98
+ **On screen:** keyboard shortcuts; bulk actions; saved filters / views; multi-select with
99
+ shift-click; right-click menus; quick command palette (`Cmd+K`); customisable columns;
100
+ power-user features hidden behind a `Show advanced` toggle.
101
+
102
+ **Common violations:** every action is N clicks deep; no keyboard alternative; no way to
103
+ batch a repeated action; expert workflow forces novice flow.
104
+
105
+ ---
106
+
107
+ ### #8 Aesthetic & Minimalist Design
108
+
109
+ Interfaces should not contain information that is irrelevant or rarely needed. Every extra
110
+ unit of information competes with the relevant ones.
111
+
112
+ **On screen:** empty cells removed (not just left blank); progressive disclosure (`Show
113
+ more`); collapsing sections; default-collapsed advanced settings; no decorative noise.
114
+
115
+ **Common violations:** empty `Amount` and `Size` columns for folder rows; "Tip:" boxes
116
+ that never go away; instruction rows above every list; logo + nav + breadcrumb + tab bar
117
+ + section header all stacked.
118
+
119
+ ---
120
+
121
+ ### #9 Help Users Recognize, Diagnose, and Recover from Errors
122
+
123
+ Plain language, precise problem, constructive solution.
124
+
125
+ **On screen:** "Email is required" under the field, not "Validation failed"; "File too
126
+ large (12 MB) — max 10 MB. Compress or split it." with a Compress button; 404 pages
127
+ with search; failure toasts that include a Retry button.
128
+
129
+ **Common violations:** error codes without explanation; "Something went wrong"; errors
130
+ that vanish before reading; field-level errors floating in a global toast.
131
+
132
+ ---
133
+
134
+ ### #10 Help and Documentation
135
+
136
+ Best is no docs needed; if needed, easy to search, focused on the user's task, listing
137
+ concrete steps.
138
+
139
+ **On screen:** in-context tooltips on icon-only buttons; a `?` link near complex fields;
140
+ empty states that explain what the section will contain and how to populate it; first-run
141
+ checklists.
142
+
143
+ **Common violations:** docs in a separate site requiring auth; tooltips that explain the
144
+ icon's name not its action; no empty state at all.
145
+
146
+ ---
147
+
148
+ ## Laws of UX (supporting principles)
149
+
150
+ ### Jakob's Law
151
+
152
+ > Users spend most of their time on OTHER sites. They expect yours to work the same way.
153
+
154
+ **Implication:** copy patterns from category leaders. A file explorer should look like
155
+ Drive / Dropbox / Mega. A code editor should look like VS Code / IntelliJ. Don't reinvent
156
+ where convention exists.
157
+
158
+ ### Hick's Law
159
+
160
+ > Time to make a decision = log₂(N+1) of options.
161
+
162
+ **Implication:** group related actions; collapse rarely-used options under "More"; never
163
+ show all 12 filters at once if 3 cover 90% of use. Applies only when options must be
164
+ weighed; looking up a known item in an ordered list (a country, a prefecture) is search,
165
+ so give it typeahead instead of trimming it.
166
+
167
+ ### Fitts's Law
168
+
169
+ > Time to acquire a target ∝ distance / size.
170
+
171
+ **Implication:** primary actions should be large and stable; toolbar buttons must not
172
+ shrink to 24px on hover; click targets at least 44×44 px on touch; destructive actions
173
+ NOT immediately adjacent to common ones.
174
+
175
+ ### Miller's Law
176
+
177
+ > The average person can hold ~7 ± 2 items in working memory; later work puts it nearer 4
178
+ > (Cowan, 2001).
179
+
180
+ **Implication:** it is about what the user must *hold in mind*, not how many items a screen
181
+ shows. A visible menu is read, not memorised, so this law sets no cap on menu length. Do:
182
+ keep labels visible while fields are filled, show earlier choices instead of making users
183
+ remember them, group long codes in 3–4s with Copy, split long forms into labelled groups of
184
+ 3–5 fields, show running totals. For a measured pass on one flow, use `enhance-ux-laws`.
185
+
186
+ ### Tesler's Law (Law of Conservation of Complexity)
187
+
188
+ > Every system has irreducible complexity. The question is who absorbs it — designer,
189
+ > developer, or user.
190
+
191
+ **Implication:** if the user keeps asking "which folder had AI done?", the complexity is
192
+ currently absorbed by the user. Move it to the system: show an inline AI chip. Cost the
193
+ designer / dev time, save every user every time forever.
194
+
195
+ ### Doherty Threshold
196
+
197
+ > Productivity skyrockets when the system responds in <400 ms.
198
+
199
+ **Implication:** optimistic UI updates; skeleton loaders; pre-fetch on hover; never let
200
+ the user wait without feedback (see #1).
201
+
202
+ ### Postel's Law
203
+
204
+ > Be liberal in what you accept, conservative in what you produce.
205
+
206
+ **Implication:** accept dates in many formats, normalise on display; trim whitespace;
207
+ parse "1,234.56" and "1234.56" the same; case-insensitive search.
208
+
209
+ ### Aesthetic-Usability Effect
210
+
211
+ > Users perceive aesthetically pleasing design as easier to use.
212
+
213
+ **Implication:** spacing, typography, and visual rhythm are not "polish" — they are
214
+ usability. Don't ship raw functionality without applying the design system.
215
+
216
+ ### Peak-End Rule
217
+
218
+ > People judge an experience by its peak (best/worst moment) and its end.
219
+
220
+ **Implication:** make sure the success-state of any flow (form submitted, payment done,
221
+ file uploaded) feels good — confetti, micro-celebration, summary, clear next step. Don't
222
+ just dump them back to the list view with no acknowledgement.
223
+
224
+ ---
225
+
226
+ ## Mapping Heuristics to Common UI Symptoms
227
+
228
+ | Symptom | First check | Second check |
229
+ |---------|-------------|--------------|
230
+ | User asks "which one is X?" | #6 Recognition | #2 Match Real World |
231
+ | User asks "did it work?" | #1 Visibility | Doherty Threshold |
232
+ | User asks "how do I undo?" | #3 Control & Freedom | #5 Error Prevention |
233
+ | Two screens look subtly different | #4 Consistency | Jakob's Law |
234
+ | Page feels crowded / heavy | #8 Minimalist | Hick's Law, Miller's Law |
235
+ | Buttons too small / wrap / overflow | Fitts's Law | #4 Consistency |
236
+ | Async result hidden / discoverable | #1 Visibility | Tesler's Law |
237
+ | Power user complains it's slow to use | #7 Flexibility | Hick's Law |
238
+ | Error looks like a system stack trace | #9 Recover from Errors | #2 Match Real World |
239
+ | Empty page with no explanation | #10 Help & Docs | Peak-End Rule |
240
+
241
+ ---
242
+
243
+ ## Sources
244
+
245
+ - [NN/g — 10 Usability Heuristics for User Interface Design](https://www.nngroup.com/articles/ten-usability-heuristics/)
246
+ - [NN/g — 10 Usability Heuristics Applied to Complex Applications](https://www.nngroup.com/articles/usability-heuristics-complex-applications/)
247
+ - [Laws of UX](https://lawsofux.com/)
248
+ - [Tognazzini — First Principles of Interaction Design](https://asktog.com/atc/principles-of-interaction-design/)
@@ -0,0 +1,375 @@
1
+ # Anti-Pattern → Replacement Library
2
+
3
+ A living catalogue of "smells" found on real pages and the design-system-respecting
4
+ replacements. Each entry links the smell to its NN/g heuristic and gives a concrete code
5
+ shape for the fix. Add entries every time the agent runs an enhancement and discovers a new
6
+ pattern worth remembering.
7
+
8
+ ---
9
+
10
+ ## 1. Generic Icon for Every Item Type
11
+
12
+ **Smell:** every folder / row / card uses the same `<Folder>` icon. The user must read
13
+ the title to discriminate type.
14
+
15
+ **Heuristic:** #6 Recognition over Recall, #2 Match Real World, Miller's Law
16
+
17
+ **Replacement:** introduce a small pure-function helper that maps an item to a
18
+ `{ Icon, label, tone }` object. Icon comes from the icon library already in use.
19
+ Label is a short Japanese / English domain noun. Tone references existing semantic tokens
20
+ (`signal-warn`, `ai`, `brand`, `muted`).
21
+
22
+ ```tsx
23
+ // helpers/get-folder-category.tsx
24
+ export interface FolderCategory {
25
+ label: string
26
+ Icon: LucideIcon
27
+ iconColorClass: string // text-* token
28
+ iconBgClass: string // bg-*/n token
29
+ chipClass: string // border + bg + text token tuple
30
+ }
31
+
32
+ export const getFolderCategory = (item: TreeItem): FolderCategory => {
33
+ if (item.data?.isDocumentLinked) return { label: "連携", Icon: Link2, ... }
34
+ if (/notice|通知|e-gov/.test(haystack)) return { label: "通知書", Icon: BellRing, ... }
35
+ if (/template|雛形/.test(haystack)) return { label: "雛形", Icon: LayoutTemplate, ... }
36
+ // … one branch per domain category, default last
37
+ return { label: "フォルダ", Icon: Folder, ... }
38
+ }
39
+ ```
40
+
41
+ Then in the renderer:
42
+
43
+ ```tsx
44
+ const cat = getFolderCategory(item)
45
+ <span className={cn("h-7 w-7 rounded-sm flex items-center justify-center", cat.iconBgClass)}>
46
+ <cat.Icon size={14} className={cat.iconColorClass} />
47
+ </span>
48
+ <span className={cn("text-[11px] px-1.5 py-0.5 rounded-sm border whitespace-nowrap", cat.chipClass)}>
49
+ {cat.label}
50
+ </span>
51
+ ```
52
+
53
+ **Why it's better than ad-hoc inline icons:** new categories are one branch in one file;
54
+ icon + label + tone always travel together (no chance of an orange icon with a blue label);
55
+ unit-testable.
56
+
57
+ ---
58
+
59
+ ## 2. Empty Cells in a Data Grid
60
+
61
+ **Smell:** a folder row in a "Files" grid shows blank `Amount` and `Size` columns because
62
+ folders don't have those scalars. Whole columns are wasted whitespace for half the rows.
63
+
64
+ **Heuristic:** #8 Aesthetic & Minimalist Design
65
+
66
+ **Replacement:** EITHER (a) compute a meaningful aggregate (sum of contained file
67
+ amounts, sum of contained file sizes, count of contained files), OR (b) merge the column
68
+ with another for that row type.
69
+
70
+ ```tsx
71
+ // helpers/get-folder-aggregates.ts
72
+ export interface FolderAggregates {
73
+ fileCount: number
74
+ aiAnalyzedCount: number
75
+ unlinkedCount: number
76
+ totalAmount: number
77
+ totalSizeBytes: number
78
+ }
79
+ export const getFolderAggregates = (files: UploadedFile[], folderId: string): FolderAggregates => { ... }
80
+ ```
81
+
82
+ ```tsx
83
+ // renderer
84
+ { item.type === "folder" ? (
85
+ <>
86
+ <span className="text-right tabular-nums">{formatJpy(agg.totalAmount)}</span>
87
+ <span className="text-right tabular-nums">{formatBytesShort(agg.totalSizeBytes)}</span>
88
+ </>
89
+ ) : (
90
+ <>
91
+ <span className="text-right tabular-nums">{formatJpy(file.amount)}</span>
92
+ <span className="text-right tabular-nums">{formatBytesShort(file.size)}</span>
93
+ </>
94
+ )}
95
+ ```
96
+
97
+ **Bonus:** dim the cell to muted when the value is zero. Don't render `0` loud — render
98
+ `—` muted. Renders empty rows visually subordinate to populated ones.
99
+
100
+ ---
101
+
102
+ ## 3. Always-On Hint / Instruction Row
103
+
104
+ **Smell:** above every list there is a row that reads "☐ チェックで選択 / Shift+クリック /
105
+ Ctrl+A: すべて". It is repeated forever and consumes a row of vertical real estate that
106
+ never goes away.
107
+
108
+ **Heuristic:** #6 Recognition over Recall, #8 Aesthetic & Minimalist Design
109
+
110
+ **Replacement:** show the hint *only when the affordance is in use*. The rest of the time,
111
+ collapse to a discreet `?` with a tooltip.
112
+
113
+ ```tsx
114
+ {/* Tiny `?` glyph in column header */}
115
+ <div title="クリックで選択・Shift+クリックで範囲選択・Ctrl+Aですべて選択"
116
+ className="flex items-center justify-center text-muted-foreground/60 cursor-help">
117
+ <span className="text-[10px] leading-none">?</span>
118
+ </div>
119
+
120
+ {/* Live hint bar — only when N rows selected */}
121
+ {selected.size > 0 && (
122
+ <div className="px-3 py-1 bg-signal-in border-b border-signar-in text-xs">
123
+ <span className="font-medium whitespace-nowrap">{selected.size}件選択中</span>
124
+ <span className="whitespace-nowrap text-brand/60">Esc: 解除</span>
125
+ </div>
126
+ )}
127
+ ```
128
+
129
+ **Why:** affordances should be discoverable, not constantly recited. Once a user has
130
+ selected a row, the hint about HOW to select becomes useless and the hint about WHAT to do
131
+ NEXT becomes useful.
132
+
133
+ ---
134
+
135
+ ## 4. Toolbar Button Labels Wrap to 2 Lines
136
+
137
+ **Smell:** at certain widths a button label like `通知書ZIP` or `アップロード` wraps and
138
+ breaks the toolbar's visual rhythm. The button suddenly takes 2 lines of vertical space.
139
+
140
+ **Heuristic:** #4 Consistency, Fitts's Law
141
+
142
+ **Replacement:** combination of `whitespace-nowrap`, `flex-shrink-0`, and **progressive
143
+ label visibility** based on Tailwind breakpoints — show full label only when there is room
144
+ for it; collapse to icon-only otherwise. Always keep a tooltip with the full label.
145
+
146
+ ```tsx
147
+ <TooltipProvider>
148
+ <Tooltip>
149
+ <TooltipTrigger asChild>
150
+ <Button
151
+ size="sm"
152
+ className="h-9 flex-shrink-0 whitespace-nowrap px-2.5"
153
+ aria-label="通知書ZIPを取り込む"
154
+ >
155
+ <BellRing size={16} />
156
+ <span className="hidden lg:inline ml-1.5 whitespace-nowrap">通知書ZIP</span>
157
+ </Button>
158
+ </TooltipTrigger>
159
+ <TooltipContent>e-Gov・e-Tax・eLTAXの通知書ZIPを取り込む</TooltipContent>
160
+ </Tooltip>
161
+ </TooltipProvider>
162
+ ```
163
+
164
+ Conventional breakpoints for label visibility:
165
+
166
+ - `default → lg` (icon-only) for tertiary actions (`通知書ZIP`)
167
+ - `default → md` (icon-only) for secondary actions (`フォルダ`)
168
+ - `always` for primary CTAs (`アップロード`)
169
+
170
+ **NEVER** let a label wrap. If you can't fit it, hide the text and rely on the tooltip.
171
+
172
+ ---
173
+
174
+ ## 5. Status Badge Wraps Inside a Narrow Column
175
+
176
+ **Smell:** a 64px column shows a `Badge` with the label `未処理`. The badge wraps to render
177
+ `未処` on one line and `理` on the next.
178
+
179
+ **Heuristic:** #4 Consistency
180
+
181
+ **Replacement:** at the **primitive** level, add `whitespace-nowrap` to the Badge variants
182
+ so this never happens again anywhere. As a fallback (if you don't own the primitive), pass
183
+ `className="whitespace-nowrap"` at every call site AND widen the column to fit the natural
184
+ chip width.
185
+
186
+ If you have multiple chips for one row that don't fit horizontally (e.g. AI marker + status
187
+ badge), STACK THEM VERTICALLY (`flex-col gap-0.5`). Never let them try to fit horizontally
188
+ in a column that doesn't have the room.
189
+
190
+ ```tsx
191
+ {/* Status column — stacks vertically when both AI + status exist */}
192
+ <div className="flex flex-col items-center justify-center gap-0.5">
193
+ {file.aiData && <span className="… AI chip …">AI</span>}
194
+ {file.status === "unlinked" && (
195
+ <Badge variant="destructive" size="xs" className="whitespace-nowrap px-1.5">
196
+ <AlertTriangle size={9} /> 未処理
197
+ </Badge>
198
+ )}
199
+ </div>
200
+ ```
201
+
202
+ ---
203
+
204
+ ## 6. No Indicator for Async / Computed Results (AI, Link, Sync)
205
+
206
+ **Smell:** the system ran AI extraction or linked a file to a journal entry, but the row
207
+ gives no visual marker. The user has to click in to find out.
208
+
209
+ **Heuristic:** #1 Visibility of System Status, Tesler's Law
210
+
211
+ **Replacement:** an inline chip on the row, themed with a dedicated semantic token
212
+ (`bg-ai-soft text-ai`, `bg-signal-in text-signal-in`). For folder rows, count and show:
213
+ `AI×3` means "3 of the files in here have AI metadata". For file rows, just `AI`.
214
+
215
+ ```tsx
216
+ {file.aiData && (
217
+ <span
218
+ className="inline-flex items-center gap-0.5 whitespace-nowrap rounded-sm
219
+ border border-ai/40 bg-ai-soft px-1 py-0.5 text-[10px] font-medium
220
+ leading-none text-ai"
221
+ title="AIで内容が解析されています"
222
+ >
223
+ <Sparkles size={8} />
224
+ AI
225
+ </span>
226
+ )}
227
+ ```
228
+
229
+ **Why a chip and not a dot or an icon?** Recognition: a labelled chip needs no key.
230
+
231
+ ---
232
+
233
+ ## 7. Identical Visual Weight for Empty vs. Populated Rows
234
+
235
+ **Smell:** a folder with 0 files and a folder with 12 files look exactly the same.
236
+
237
+ **Heuristic:** #8 Minimalist (don't fight for attention), #6 Recognition
238
+
239
+ **Replacement:** apply `opacity-70` (or muted variant) to the empty row's container.
240
+ Don't hide it — the user still needs to see the count — but stop letting it compete.
241
+
242
+ ```tsx
243
+ const folderIsEmpty = item.type === "folder" && (folderData.fileCount ?? 0) === 0
244
+ <div className={cn("…", folderIsEmpty && "opacity-70")}>…</div>
245
+ ```
246
+
247
+ ---
248
+
249
+ ## 8. Generic 3-Column Card Grid Used as Default Layout
250
+
251
+ **Smell:** every "section" of a page is the same icon → title → 1-line description card,
252
+ laid out in a uniform 3-column grid. This is the most reliable AI-tell.
253
+
254
+ **Heuristic:** #4 Consistency (broken — it's the SAME consistency to a fault), Aesthetic-
255
+ Usability Effect
256
+
257
+ **Replacement:** vary layout by section purpose. Hero gets a generous full-bleed asymmetric
258
+ layout. Stats get a compact horizontal strip with tabular numbers. Long-form content gets
259
+ a max-width column. Action lists get a vertical stack with leading icons. The page should
260
+ have visual rhythm, not pattern repetition.
261
+
262
+ Concrete checklist:
263
+
264
+ - Different `py-*` per section type (hero generous, form tight, footer minimal)
265
+ - Different number of columns per section (1 / 2 / 3 / asymmetric)
266
+ - Different border-radius semantics (pill for tags, rounded for cards, sharp for tables)
267
+
268
+ ---
269
+
270
+ ## 9. Date Shown in Two Places on the Same Row
271
+
272
+ **Smell:** the row shows `2024/04/18` inline under the name AND in a dedicated `Date`
273
+ column, both saying the same thing.
274
+
275
+ **Heuristic:** #8 Minimalist
276
+
277
+ **Replacement:** delete one. Choose the one that aligns vertically with peers (the column
278
+ form), so the eye can scan dates top-to-bottom without re-fixating per row.
279
+
280
+ ---
281
+
282
+ ## 10. Mixed Icon Libraries in the Same View
283
+
284
+ **Smell:** the same view uses some icons from `lucide-react`, some from `@heroicons`, some
285
+ custom SVGs.
286
+
287
+ **Heuristic:** #4 Consistency
288
+
289
+ **Replacement:** pick one icon library per project. If you must use multiple, scope by
290
+ context: e.g. all *navigation* uses one library, all *content* icons use another, never
291
+ mixed within a single visual unit.
292
+
293
+ ---
294
+
295
+ ## 11. "Just an Empty State" — No Guidance, No Next Step
296
+
297
+ **Smell:** an empty list shows "No items" or worse, just nothing.
298
+
299
+ **Heuristic:** #10 Help & Documentation, Peak-End Rule (the first interaction is the empty
300
+ state)
301
+
302
+ **Replacement:** every empty state should answer three questions:
303
+
304
+ 1. **What goes here?** ("Upload your first invoice…")
305
+ 2. **Why doesn't it have anything yet?** ("Drop a PDF or…")
306
+ 3. **How do I add one?** With a CTA button matching the page's primary action.
307
+
308
+ Optional: a small illustration that matches the brand voice (NOT generic stock).
309
+
310
+ ---
311
+
312
+ ## 12. Destructive Action Adjacent to Common Action
313
+
314
+ **Smell:** `Save` and `Delete` are next to each other in the same toolbar, same size, same
315
+ colour family.
316
+
317
+ **Heuristic:** #5 Error Prevention, Fitts's Law
318
+
319
+ **Replacement:** physical separation (move destructive into an overflow menu), visual
320
+ separation (destructive uses `signal-out` colour), confirmation step (a typed
321
+ "DELETE" or a double-click for irreversibles).
322
+
323
+ ---
324
+
325
+ ## 13. Free-Text Field That Should Be an Enum / Picker
326
+
327
+ **Smell:** a date or category field is a free `<input>`, accepting anything the user types.
328
+
329
+ **Heuristic:** #5 Error Prevention, Postel's Law
330
+
331
+ **Replacement:** a `<DatePicker>` or `<Combobox>` that constrains values. If you must
332
+ accept free text (e.g. tags), normalize on blur and offer an autocomplete based on
333
+ existing values.
334
+
335
+ ---
336
+
337
+ ## 14. No Keyboard Shortcuts on a Power-User Surface
338
+
339
+ **Smell:** a list view that an operator uses 100 times a day requires mouse for everything.
340
+
341
+ **Heuristic:** #7 Flexibility & Efficiency, Hick's Law
342
+
343
+ **Replacement:** add at minimum:
344
+
345
+ - `j/k` or arrow keys to move selection
346
+ - `Enter` to open
347
+ - `Esc` to close / deselect
348
+ - `Cmd+A` to select all
349
+ - `Cmd+K` for command palette / search
350
+ - `?` to show a shortcut overlay
351
+
352
+ Document them in a `?` overlay (recognition over recall).
353
+
354
+ ---
355
+
356
+ ## 15. "Stacked" Status Indicators That Don't Compose
357
+
358
+ **Smell:** the row has icons / dots / chips for AI, link, error, processing — and they're
359
+ all rendered inline, fighting for the same horizontal slot, no clear semantic ordering.
360
+
361
+ **Heuristic:** #8 Minimalist, #4 Consistency
362
+
363
+ **Replacement:** define a status priority and render *one primary chip per row* (the most
364
+ urgent state) plus a small cluster of *micro-chips* for orthogonal facts (AI marker, lock,
365
+ favourite). Group like with like; don't randomly intersperse.
366
+
367
+ ---
368
+
369
+ ## How to Use This File
370
+
371
+ 1. When the agent finds a smell on a page, search this file for the closest match.
372
+ 2. Apply the replacement pattern, adapting tokens to the project's design system.
373
+ 3. If the smell is *new* (no match), document it here as a new entry once the fix lands.
374
+ 4. Reference the entry number in the enhancement write-up so future readers can trace the
375
+ reasoning.