gsd-pi 2.28.0 → 2.29.0-dev.23d50d0

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 (1321) hide show
  1. package/README.md +34 -4
  2. package/dist/cli.js +20 -21
  3. package/dist/extension-discovery.d.ts +16 -0
  4. package/dist/extension-discovery.js +66 -0
  5. package/dist/headless-answers.d.ts +51 -0
  6. package/dist/headless-answers.js +224 -0
  7. package/dist/headless-context.d.ts +18 -0
  8. package/dist/headless-context.js +44 -0
  9. package/dist/headless-events.d.ts +28 -0
  10. package/dist/headless-events.js +59 -0
  11. package/dist/headless-query.d.ts +4 -0
  12. package/dist/headless-query.js +22 -4
  13. package/dist/headless-ui.d.ts +23 -0
  14. package/dist/headless-ui.js +103 -0
  15. package/dist/headless.d.ts +2 -0
  16. package/dist/headless.js +65 -183
  17. package/dist/help-text.js +4 -0
  18. package/dist/loader.js +18 -59
  19. package/dist/onboarding.js +8 -7
  20. package/dist/remote-questions-config.js +8 -3
  21. package/dist/resource-loader.d.ts +1 -6
  22. package/dist/resource-loader.js +125 -96
  23. package/dist/resources/extensions/ask-user-questions.ts +3 -2
  24. package/dist/resources/extensions/bg-shell/bg-shell-command.ts +219 -0
  25. package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.ts +400 -0
  26. package/dist/resources/extensions/bg-shell/bg-shell-tool.ts +985 -0
  27. package/dist/resources/extensions/bg-shell/index.ts +17 -1561
  28. package/dist/resources/extensions/bg-shell/overlay.ts +4 -0
  29. package/dist/resources/extensions/bg-shell/process-manager.ts +13 -0
  30. package/dist/resources/extensions/bg-shell/utilities.ts +4 -16
  31. package/dist/resources/extensions/browser-tools/capture.ts +34 -2
  32. package/dist/resources/extensions/browser-tools/lifecycle.ts +5 -5
  33. package/dist/resources/extensions/browser-tools/settle.ts +1 -1
  34. package/dist/resources/extensions/browser-tools/state.ts +5 -5
  35. package/dist/resources/extensions/browser-tools/tests/browser-tools-integration.test.mjs +1 -1
  36. package/dist/resources/extensions/browser-tools/tests/browser-tools-unit.test.cjs +3 -3
  37. package/dist/resources/extensions/browser-tools/tools/assertions.ts +1 -1
  38. package/dist/resources/extensions/browser-tools/tools/device.ts +1 -1
  39. package/dist/resources/extensions/browser-tools/tools/extract.ts +1 -1
  40. package/dist/resources/extensions/browser-tools/tools/navigation.ts +6 -6
  41. package/dist/resources/extensions/browser-tools/tools/network-mock.ts +1 -1
  42. package/dist/resources/extensions/browser-tools/tools/pages.ts +1 -1
  43. package/dist/resources/extensions/browser-tools/tools/screenshot.ts +28 -10
  44. package/dist/resources/extensions/browser-tools/tools/state-persistence.ts +1 -1
  45. package/dist/resources/extensions/browser-tools/tools/visual-diff.ts +1 -1
  46. package/dist/resources/extensions/browser-tools/utils.ts +5 -5
  47. package/dist/resources/extensions/get-secrets-from-user.ts +1 -1
  48. package/dist/resources/extensions/google-search/index.ts +21 -8
  49. package/dist/resources/extensions/gsd/activity-log.ts +2 -1
  50. package/dist/resources/extensions/gsd/atomic-write.ts +35 -0
  51. package/dist/resources/extensions/gsd/auto/session.ts +12 -0
  52. package/dist/resources/extensions/gsd/auto-dashboard.ts +295 -62
  53. package/dist/resources/extensions/gsd/auto-dispatch.ts +2 -2
  54. package/dist/resources/extensions/gsd/auto-idempotency.ts +150 -0
  55. package/dist/resources/extensions/gsd/auto-post-unit.ts +633 -0
  56. package/dist/resources/extensions/gsd/auto-prompts.ts +139 -32
  57. package/dist/resources/extensions/gsd/auto-recovery.ts +36 -31
  58. package/dist/resources/extensions/gsd/auto-start.ts +500 -0
  59. package/dist/resources/extensions/gsd/auto-stuck-detection.ts +220 -0
  60. package/dist/resources/extensions/gsd/auto-timers.ts +223 -0
  61. package/dist/resources/extensions/gsd/auto-unit-closeout.ts +3 -1
  62. package/dist/resources/extensions/gsd/auto-verification.ts +229 -0
  63. package/dist/resources/extensions/gsd/auto-worktree-sync.ts +29 -37
  64. package/dist/resources/extensions/gsd/auto-worktree.ts +92 -67
  65. package/dist/resources/extensions/gsd/auto.ts +375 -1890
  66. package/dist/resources/extensions/gsd/commands-config.ts +102 -0
  67. package/dist/resources/extensions/gsd/commands-handlers.ts +394 -0
  68. package/dist/resources/extensions/gsd/commands-inspect.ts +90 -0
  69. package/dist/resources/extensions/gsd/commands-logs.ts +536 -0
  70. package/dist/resources/extensions/gsd/commands-maintenance.ts +206 -0
  71. package/dist/resources/extensions/gsd/commands-prefs-wizard.ts +790 -0
  72. package/dist/resources/extensions/gsd/commands-workflow-templates.ts +544 -0
  73. package/dist/resources/extensions/gsd/commands.ts +417 -1495
  74. package/dist/resources/extensions/gsd/constants.ts +21 -0
  75. package/dist/resources/extensions/gsd/context-budget.ts +25 -2
  76. package/dist/resources/extensions/gsd/crash-recovery.ts +3 -4
  77. package/dist/resources/extensions/gsd/dashboard-overlay.ts +15 -5
  78. package/dist/resources/extensions/gsd/db-writer.ts +21 -2
  79. package/dist/resources/extensions/gsd/detection.ts +469 -0
  80. package/dist/resources/extensions/gsd/diff-context.ts +2 -1
  81. package/dist/resources/extensions/gsd/dispatch-guard.ts +4 -0
  82. package/dist/resources/extensions/gsd/doctor-checks.ts +564 -0
  83. package/dist/resources/extensions/gsd/doctor-format.ts +78 -0
  84. package/dist/resources/extensions/gsd/doctor-types.ts +72 -0
  85. package/dist/resources/extensions/gsd/doctor.ts +64 -701
  86. package/dist/resources/extensions/gsd/errors.ts +0 -2
  87. package/dist/resources/extensions/gsd/export-html.ts +367 -11
  88. package/dist/resources/extensions/gsd/export.ts +31 -5
  89. package/dist/resources/extensions/gsd/files.ts +8 -126
  90. package/dist/resources/extensions/gsd/forensics.ts +2 -12
  91. package/dist/resources/extensions/gsd/git-constants.ts +11 -0
  92. package/dist/resources/extensions/gsd/git-service.ts +13 -9
  93. package/dist/resources/extensions/gsd/gsd-db.ts +26 -6
  94. package/dist/resources/extensions/gsd/guided-flow-queue.ts +451 -0
  95. package/dist/resources/extensions/gsd/guided-flow.ts +231 -514
  96. package/dist/resources/extensions/gsd/history.ts +2 -20
  97. package/dist/resources/extensions/gsd/index.ts +208 -46
  98. package/dist/resources/extensions/gsd/init-wizard.ts +615 -0
  99. package/dist/resources/extensions/gsd/json-persistence.ts +67 -0
  100. package/dist/resources/extensions/gsd/jsonl-utils.ts +21 -0
  101. package/dist/resources/extensions/gsd/key-manager.ts +995 -0
  102. package/dist/resources/extensions/gsd/mechanical-completion.ts +430 -0
  103. package/dist/resources/extensions/gsd/metrics.ts +49 -36
  104. package/dist/resources/extensions/gsd/migrate/command.ts +1 -1
  105. package/dist/resources/extensions/gsd/migrate/parsers.ts +10 -95
  106. package/dist/resources/extensions/gsd/milestone-actions.ts +126 -0
  107. package/dist/resources/extensions/gsd/milestone-ids.ts +95 -0
  108. package/dist/resources/extensions/gsd/native-git-bridge.ts +5 -10
  109. package/dist/resources/extensions/gsd/parallel-eligibility.ts +3 -3
  110. package/dist/resources/extensions/gsd/paths.ts +18 -11
  111. package/dist/resources/extensions/gsd/plugin-importer.ts +3 -2
  112. package/dist/resources/extensions/gsd/preferences-models.ts +329 -0
  113. package/dist/resources/extensions/gsd/preferences-skills.ts +169 -0
  114. package/dist/resources/extensions/gsd/preferences-types.ts +223 -0
  115. package/dist/resources/extensions/gsd/preferences-validation.ts +598 -0
  116. package/dist/resources/extensions/gsd/preferences.ts +219 -1305
  117. package/dist/resources/extensions/gsd/prompt-cache-optimizer.ts +213 -0
  118. package/dist/resources/extensions/gsd/prompt-compressor.ts +508 -0
  119. package/dist/resources/extensions/gsd/prompt-loader.ts +4 -2
  120. package/dist/resources/extensions/gsd/prompt-ordering.ts +200 -0
  121. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +2 -2
  122. package/dist/resources/extensions/gsd/prompts/complete-slice.md +4 -4
  123. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +6 -6
  124. package/dist/resources/extensions/gsd/prompts/discuss.md +13 -5
  125. package/dist/resources/extensions/gsd/prompts/execute-task.md +0 -1
  126. package/dist/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -1
  127. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  128. package/dist/resources/extensions/gsd/prompts/guided-plan-milestone.md +0 -1
  129. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +26 -3
  130. package/dist/resources/extensions/gsd/prompts/plan-slice.md +15 -2
  131. package/dist/resources/extensions/gsd/prompts/queue.md +30 -0
  132. package/dist/resources/extensions/gsd/prompts/quick-task.md +0 -6
  133. package/dist/resources/extensions/gsd/prompts/replan-slice.md +0 -1
  134. package/dist/resources/extensions/gsd/prompts/rewrite-docs.md +0 -1
  135. package/dist/resources/extensions/gsd/prompts/system.md +1 -1
  136. package/dist/resources/extensions/gsd/prompts/workflow-start.md +28 -0
  137. package/dist/resources/extensions/gsd/provider-error-pause.ts +59 -10
  138. package/dist/resources/extensions/gsd/queue-order.ts +11 -12
  139. package/dist/resources/extensions/gsd/queue-reorder-ui.ts +15 -2
  140. package/dist/resources/extensions/gsd/quick.ts +18 -15
  141. package/dist/resources/extensions/gsd/reports.ts +1 -7
  142. package/dist/resources/extensions/gsd/routing-history.ts +13 -17
  143. package/dist/resources/extensions/gsd/safe-fs.ts +47 -0
  144. package/dist/resources/extensions/gsd/semantic-chunker.ts +336 -0
  145. package/dist/resources/extensions/gsd/session-forensics.ts +8 -23
  146. package/dist/resources/extensions/gsd/session-lock.ts +284 -0
  147. package/dist/resources/extensions/gsd/session-status-io.ts +23 -41
  148. package/dist/resources/extensions/gsd/skills/gsd-headless/SKILL.md +38 -1
  149. package/dist/resources/extensions/gsd/skills/gsd-headless/references/answer-injection.md +35 -6
  150. package/dist/resources/extensions/gsd/state.ts +54 -2
  151. package/dist/resources/extensions/gsd/structured-data-formatter.ts +144 -0
  152. package/dist/resources/extensions/gsd/summary-distiller.ts +258 -0
  153. package/dist/resources/extensions/gsd/tests/activity-log.test.ts +213 -0
  154. package/dist/resources/extensions/gsd/tests/agent-end-retry.test.ts +107 -0
  155. package/dist/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +197 -0
  156. package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +1 -1
  157. package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +33 -39
  158. package/dist/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +108 -2
  159. package/dist/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +257 -0
  160. package/dist/resources/extensions/gsd/tests/auto-skip-loop.test.ts +1 -1
  161. package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +3 -0
  162. package/dist/resources/extensions/gsd/tests/commands-logs.test.ts +241 -0
  163. package/dist/resources/extensions/gsd/tests/context-budget.test.ts +69 -0
  164. package/dist/resources/extensions/gsd/tests/detection.test.ts +398 -0
  165. package/dist/resources/extensions/gsd/tests/discuss-prompt.test.ts +12 -24
  166. package/dist/resources/extensions/gsd/tests/dispatch-guard.test.ts +118 -94
  167. package/dist/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +126 -0
  168. package/dist/resources/extensions/gsd/tests/dist-redirect.mjs +7 -3
  169. package/dist/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +75 -0
  170. package/dist/resources/extensions/gsd/tests/doctor-git.test.ts +17 -55
  171. package/dist/resources/extensions/gsd/tests/export-html-enhancements.test.ts +375 -0
  172. package/dist/resources/extensions/gsd/tests/extension-selector-separator.test.ts +144 -0
  173. package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +3 -0
  174. package/dist/resources/extensions/gsd/tests/gsd-inspect.test.ts +1 -1
  175. package/dist/resources/extensions/gsd/tests/headless-answers.test.ts +340 -0
  176. package/dist/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +24 -82
  177. package/dist/resources/extensions/gsd/tests/init-wizard.test.ts +197 -0
  178. package/dist/resources/extensions/gsd/tests/key-manager.test.ts +414 -0
  179. package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +356 -0
  180. package/dist/resources/extensions/gsd/tests/metrics.test.ts +173 -305
  181. package/dist/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +3 -0
  182. package/dist/resources/extensions/gsd/tests/model-isolation.test.ts +59 -1
  183. package/dist/resources/extensions/gsd/tests/next-milestone-id.test.ts +18 -61
  184. package/dist/resources/extensions/gsd/tests/none-mode-gates.test.ts +17 -8
  185. package/dist/resources/extensions/gsd/tests/parallel-merge.test.ts +3 -0
  186. package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +1 -1
  187. package/dist/resources/extensions/gsd/tests/park-edge-cases.test.ts +276 -0
  188. package/dist/resources/extensions/gsd/tests/park-milestone.test.ts +401 -0
  189. package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +24 -47
  190. package/dist/resources/extensions/gsd/tests/preferences.test.ts +284 -0
  191. package/dist/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +314 -0
  192. package/dist/resources/extensions/gsd/tests/prompt-compressor.test.ts +529 -0
  193. package/dist/resources/extensions/gsd/tests/prompt-ordering.test.ts +296 -0
  194. package/dist/resources/extensions/gsd/tests/provider-errors.test.ts +338 -0
  195. package/dist/resources/extensions/gsd/tests/reassess-detection.test.ts +154 -0
  196. package/dist/resources/extensions/gsd/tests/remote-questions.test.ts +1 -1
  197. package/dist/resources/extensions/gsd/tests/remote-status.test.ts +2 -2
  198. package/dist/resources/extensions/gsd/tests/roadmap-slices.test.ts +43 -60
  199. package/dist/resources/extensions/gsd/tests/semantic-chunker.test.ts +426 -0
  200. package/dist/resources/extensions/gsd/tests/session-lock.test.ts +315 -0
  201. package/dist/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +3 -0
  202. package/dist/resources/extensions/gsd/tests/stop-auto-remote.test.ts +8 -5
  203. package/dist/resources/extensions/gsd/tests/structured-data-formatter.test.ts +365 -0
  204. package/dist/resources/extensions/gsd/tests/summary-distiller.test.ts +323 -0
  205. package/dist/resources/extensions/gsd/tests/token-counter.test.ts +129 -0
  206. package/dist/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +1272 -0
  207. package/dist/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +164 -0
  208. package/dist/resources/extensions/gsd/tests/token-profile.test.ts +22 -17
  209. package/dist/resources/extensions/gsd/tests/triage-dispatch.test.ts +69 -73
  210. package/dist/resources/extensions/gsd/tests/validate-directory.test.ts +222 -0
  211. package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +55 -0
  212. package/dist/resources/extensions/gsd/tests/verification-evidence.test.ts +26 -24
  213. package/dist/resources/extensions/gsd/tests/verification-gate.test.ts +251 -8
  214. package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +2 -2
  215. package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +2 -1
  216. package/dist/resources/extensions/gsd/tests/workflow-templates.test.ts +173 -0
  217. package/dist/resources/extensions/gsd/tests/workspace-index.test.ts +24 -61
  218. package/dist/resources/extensions/gsd/tests/worktree-e2e.test.ts +5 -2
  219. package/dist/resources/extensions/gsd/tests/write-gate.test.ts +132 -43
  220. package/dist/resources/extensions/gsd/token-counter.ts +20 -0
  221. package/dist/resources/extensions/gsd/triage-ui.ts +1 -1
  222. package/dist/resources/extensions/gsd/types.ts +7 -1
  223. package/dist/resources/extensions/gsd/unit-runtime.ts +16 -13
  224. package/dist/resources/extensions/gsd/validate-directory.ts +164 -0
  225. package/dist/resources/extensions/gsd/verification-evidence.ts +9 -4
  226. package/dist/resources/extensions/gsd/verification-gate.ts +83 -7
  227. package/dist/resources/extensions/gsd/visualizer-data.ts +1 -1
  228. package/dist/resources/extensions/gsd/visualizer-overlay.ts +5 -2
  229. package/dist/resources/extensions/gsd/visualizer-views.ts +2 -3
  230. package/dist/resources/extensions/gsd/workflow-templates/bugfix.md +87 -0
  231. package/dist/resources/extensions/gsd/workflow-templates/dep-upgrade.md +74 -0
  232. package/dist/resources/extensions/gsd/workflow-templates/full-project.md +41 -0
  233. package/dist/resources/extensions/gsd/workflow-templates/hotfix.md +45 -0
  234. package/dist/resources/extensions/gsd/workflow-templates/refactor.md +83 -0
  235. package/dist/resources/extensions/gsd/workflow-templates/registry.json +85 -0
  236. package/dist/resources/extensions/gsd/workflow-templates/security-audit.md +73 -0
  237. package/dist/resources/extensions/gsd/workflow-templates/small-feature.md +81 -0
  238. package/dist/resources/extensions/gsd/workflow-templates/spike.md +69 -0
  239. package/dist/resources/extensions/gsd/workflow-templates.ts +241 -0
  240. package/dist/resources/extensions/gsd/worktree-command.ts +4 -51
  241. package/dist/resources/extensions/gsd/worktree-manager.ts +7 -9
  242. package/dist/resources/extensions/gsd/worktree.ts +41 -1
  243. package/dist/resources/extensions/mcp-client/index.ts +459 -0
  244. package/dist/resources/extensions/remote-questions/discord-adapter.ts +9 -20
  245. package/dist/resources/extensions/remote-questions/http-client.ts +76 -0
  246. package/dist/resources/extensions/remote-questions/manager.ts +6 -24
  247. package/dist/resources/extensions/remote-questions/mod.ts +16 -0
  248. package/dist/resources/extensions/remote-questions/notify.ts +90 -0
  249. package/dist/resources/extensions/remote-questions/remote-command.ts +1 -1
  250. package/dist/resources/extensions/remote-questions/slack-adapter.ts +11 -18
  251. package/dist/resources/extensions/remote-questions/store.ts +5 -1
  252. package/dist/resources/extensions/remote-questions/telegram-adapter.ts +8 -20
  253. package/dist/resources/extensions/remote-questions/types.ts +29 -3
  254. package/dist/resources/extensions/search-the-web/native-search.ts +7 -0
  255. package/dist/resources/extensions/search-the-web/provider.ts +15 -3
  256. package/dist/resources/extensions/search-the-web/tool-llm-context.ts +1 -13
  257. package/dist/resources/extensions/search-the-web/tool-search.ts +1 -13
  258. package/dist/resources/extensions/shared/format-utils.ts +53 -0
  259. package/dist/resources/extensions/shared/frontmatter.ts +117 -0
  260. package/dist/resources/extensions/shared/mod.ts +33 -0
  261. package/dist/resources/extensions/shared/sanitize.ts +19 -0
  262. package/dist/resources/extensions/slash-commands/create-extension.ts +1 -1
  263. package/dist/resources/extensions/slash-commands/create-slash-command.ts +1 -1
  264. package/dist/resources/extensions/subagent/index.ts +1 -2
  265. package/dist/resources/extensions/ttsr/index.ts +5 -0
  266. package/dist/resources/extensions/ttsr/rule-loader.ts +4 -51
  267. package/dist/resources/extensions/universal-config/discovery.ts +37 -15
  268. package/dist/resources/extensions/voice/index.ts +1 -1
  269. package/dist/resources/skills/accessibility/SKILL.md +522 -0
  270. package/dist/resources/skills/accessibility/references/WCAG.md +162 -0
  271. package/dist/resources/skills/agent-browser/SKILL.md +517 -0
  272. package/dist/resources/skills/agent-browser/references/authentication.md +202 -0
  273. package/dist/resources/skills/agent-browser/references/commands.md +263 -0
  274. package/dist/resources/skills/agent-browser/references/profiling.md +120 -0
  275. package/dist/resources/skills/agent-browser/references/proxy-support.md +194 -0
  276. package/dist/resources/skills/agent-browser/references/session-management.md +193 -0
  277. package/dist/resources/skills/agent-browser/references/snapshot-refs.md +194 -0
  278. package/dist/resources/skills/agent-browser/references/video-recording.md +173 -0
  279. package/dist/resources/skills/agent-browser/templates/authenticated-session.sh +105 -0
  280. package/dist/resources/skills/agent-browser/templates/capture-workflow.sh +69 -0
  281. package/dist/resources/skills/agent-browser/templates/form-automation.sh +62 -0
  282. package/dist/resources/skills/best-practices/SKILL.md +583 -0
  283. package/dist/resources/skills/code-optimizer/SKILL.md +160 -0
  284. package/dist/resources/skills/code-optimizer/references/algorithmic-complexity.md +66 -0
  285. package/dist/resources/skills/code-optimizer/references/build-compilation.md +90 -0
  286. package/dist/resources/skills/code-optimizer/references/bundle-dependencies.md +82 -0
  287. package/dist/resources/skills/code-optimizer/references/caching-memoization.md +76 -0
  288. package/dist/resources/skills/code-optimizer/references/concurrency-async.md +80 -0
  289. package/dist/resources/skills/code-optimizer/references/config-infra.md +71 -0
  290. package/dist/resources/skills/code-optimizer/references/data-structures.md +80 -0
  291. package/dist/resources/skills/code-optimizer/references/database-queries.md +76 -0
  292. package/dist/resources/skills/code-optimizer/references/dead-code-redundancy.md +84 -0
  293. package/dist/resources/skills/code-optimizer/references/error-resilience.md +80 -0
  294. package/dist/resources/skills/code-optimizer/references/io-network.md +89 -0
  295. package/dist/resources/skills/code-optimizer/references/logging-observability.md +64 -0
  296. package/dist/resources/skills/code-optimizer/references/memory-resources.md +66 -0
  297. package/dist/resources/skills/code-optimizer/references/rendering-ui.md +90 -0
  298. package/dist/resources/skills/code-optimizer/references/security-performance.md +68 -0
  299. package/dist/resources/skills/core-web-vitals/SKILL.md +441 -0
  300. package/dist/resources/skills/core-web-vitals/references/LCP.md +208 -0
  301. package/dist/resources/skills/create-gsd-extension/SKILL.md +87 -0
  302. package/dist/resources/skills/create-gsd-extension/references/compaction-session-control.md +77 -0
  303. package/dist/resources/skills/create-gsd-extension/references/custom-commands.md +139 -0
  304. package/dist/resources/skills/create-gsd-extension/references/custom-rendering.md +108 -0
  305. package/dist/resources/skills/create-gsd-extension/references/custom-tools.md +183 -0
  306. package/dist/resources/skills/create-gsd-extension/references/custom-ui.md +490 -0
  307. package/dist/resources/skills/create-gsd-extension/references/events-reference.md +126 -0
  308. package/dist/resources/skills/create-gsd-extension/references/extension-lifecycle.md +64 -0
  309. package/dist/resources/skills/create-gsd-extension/references/extensionapi-reference.md +75 -0
  310. package/dist/resources/skills/create-gsd-extension/references/extensioncontext-reference.md +53 -0
  311. package/dist/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +36 -0
  312. package/dist/resources/skills/create-gsd-extension/references/mode-behavior.md +32 -0
  313. package/dist/resources/skills/create-gsd-extension/references/model-provider-management.md +89 -0
  314. package/dist/resources/skills/create-gsd-extension/references/packaging-distribution.md +55 -0
  315. package/dist/resources/skills/create-gsd-extension/references/remote-execution-overrides.md +90 -0
  316. package/dist/resources/skills/create-gsd-extension/references/state-management.md +70 -0
  317. package/dist/resources/skills/create-gsd-extension/references/system-prompt-modification.md +52 -0
  318. package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +51 -0
  319. package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +143 -0
  320. package/dist/resources/skills/create-gsd-extension/workflows/add-capability.md +57 -0
  321. package/dist/resources/skills/create-gsd-extension/workflows/create-extension.md +156 -0
  322. package/dist/resources/skills/create-gsd-extension/workflows/debug-extension.md +74 -0
  323. package/dist/resources/skills/create-skill/SKILL.md +184 -0
  324. package/dist/resources/skills/create-skill/references/api-security.md +226 -0
  325. package/dist/resources/skills/create-skill/references/be-clear-and-direct.md +531 -0
  326. package/dist/resources/skills/create-skill/references/common-patterns.md +595 -0
  327. package/dist/resources/skills/create-skill/references/core-principles.md +437 -0
  328. package/dist/resources/skills/create-skill/references/executable-code.md +175 -0
  329. package/dist/resources/skills/create-skill/references/gsd-skill-ecosystem.md +68 -0
  330. package/dist/resources/skills/create-skill/references/iteration-and-testing.md +474 -0
  331. package/dist/resources/skills/create-skill/references/recommended-structure.md +168 -0
  332. package/dist/resources/skills/create-skill/references/skill-structure.md +372 -0
  333. package/dist/resources/skills/create-skill/references/use-xml-tags.md +466 -0
  334. package/dist/resources/skills/create-skill/references/using-scripts.md +113 -0
  335. package/dist/resources/skills/create-skill/references/using-templates.md +112 -0
  336. package/dist/resources/skills/create-skill/references/workflows-and-validation.md +510 -0
  337. package/dist/resources/skills/create-skill/templates/router-skill.md +73 -0
  338. package/dist/resources/skills/create-skill/templates/simple-skill.md +33 -0
  339. package/dist/resources/skills/create-skill/workflows/add-reference.md +96 -0
  340. package/dist/resources/skills/create-skill/workflows/add-script.md +93 -0
  341. package/dist/resources/skills/create-skill/workflows/add-template.md +74 -0
  342. package/dist/resources/skills/create-skill/workflows/add-workflow.md +120 -0
  343. package/dist/resources/skills/create-skill/workflows/audit-skill.md +148 -0
  344. package/dist/resources/skills/create-skill/workflows/create-new-skill.md +196 -0
  345. package/dist/resources/skills/create-skill/workflows/get-guidance.md +121 -0
  346. package/dist/resources/skills/create-skill/workflows/upgrade-to-router.md +161 -0
  347. package/dist/resources/skills/create-skill/workflows/verify-skill.md +204 -0
  348. package/dist/resources/skills/make-interfaces-feel-better/SKILL.md +122 -0
  349. package/dist/resources/skills/make-interfaces-feel-better/animations.md +379 -0
  350. package/dist/resources/skills/make-interfaces-feel-better/performance.md +88 -0
  351. package/dist/resources/skills/make-interfaces-feel-better/surfaces.md +247 -0
  352. package/dist/resources/skills/make-interfaces-feel-better/typography.md +123 -0
  353. package/dist/resources/skills/react-best-practices/README.md +123 -0
  354. package/dist/resources/skills/react-best-practices/SKILL.md +136 -0
  355. package/dist/resources/skills/react-best-practices/metadata.json +15 -0
  356. package/dist/resources/skills/react-best-practices/rules/_sections.md +46 -0
  357. package/dist/resources/skills/react-best-practices/rules/_template.md +28 -0
  358. package/dist/resources/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  359. package/dist/resources/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  360. package/dist/resources/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  361. package/dist/resources/skills/react-best-practices/rules/async-api-routes.md +38 -0
  362. package/dist/resources/skills/react-best-practices/rules/async-defer-await.md +80 -0
  363. package/dist/resources/skills/react-best-practices/rules/async-dependencies.md +51 -0
  364. package/dist/resources/skills/react-best-practices/rules/async-parallel.md +28 -0
  365. package/dist/resources/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  366. package/dist/resources/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  367. package/dist/resources/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  368. package/dist/resources/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  369. package/dist/resources/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  370. package/dist/resources/skills/react-best-practices/rules/bundle-preload.md +50 -0
  371. package/dist/resources/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  372. package/dist/resources/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  373. package/dist/resources/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  374. package/dist/resources/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  375. package/dist/resources/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
  376. package/dist/resources/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  377. package/dist/resources/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  378. package/dist/resources/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  379. package/dist/resources/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  380. package/dist/resources/skills/react-best-practices/rules/js-early-exit.md +50 -0
  381. package/dist/resources/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  382. package/dist/resources/skills/react-best-practices/rules/js-index-maps.md +37 -0
  383. package/dist/resources/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  384. package/dist/resources/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  385. package/dist/resources/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  386. package/dist/resources/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  387. package/dist/resources/skills/react-best-practices/rules/rendering-activity.md +26 -0
  388. package/dist/resources/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  389. package/dist/resources/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  390. package/dist/resources/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  391. package/dist/resources/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  392. package/dist/resources/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  393. package/dist/resources/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  394. package/dist/resources/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  395. package/dist/resources/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  396. package/dist/resources/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  397. package/dist/resources/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  398. package/dist/resources/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  399. package/dist/resources/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  400. package/dist/resources/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  401. package/dist/resources/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  402. package/dist/resources/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  403. package/dist/resources/skills/react-best-practices/rules/rerender-memo.md +44 -0
  404. package/dist/resources/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  405. package/dist/resources/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  406. package/dist/resources/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  407. package/dist/resources/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  408. package/dist/resources/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  409. package/dist/resources/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  410. package/dist/resources/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  411. package/dist/resources/skills/react-best-practices/rules/server-cache-react.md +76 -0
  412. package/dist/resources/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  413. package/dist/resources/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  414. package/dist/resources/skills/react-best-practices/rules/server-serialization.md +38 -0
  415. package/dist/resources/skills/userinterface-wiki/SKILL.md +253 -0
  416. package/dist/resources/skills/userinterface-wiki/rules/_sections.md +66 -0
  417. package/dist/resources/skills/userinterface-wiki/rules/_template.md +24 -0
  418. package/dist/resources/skills/userinterface-wiki/rules/a11y-reduced-motion-check.md +30 -0
  419. package/dist/resources/skills/userinterface-wiki/rules/a11y-toggle-setting.md +30 -0
  420. package/dist/resources/skills/userinterface-wiki/rules/a11y-visual-equivalent.md +36 -0
  421. package/dist/resources/skills/userinterface-wiki/rules/a11y-volume-control.md +28 -0
  422. package/dist/resources/skills/userinterface-wiki/rules/appropriate-confirmations-only.md +19 -0
  423. package/dist/resources/skills/userinterface-wiki/rules/appropriate-errors-warnings.md +18 -0
  424. package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-decorative.md +21 -0
  425. package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-high-frequency.md +28 -0
  426. package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-punishing.md +27 -0
  427. package/dist/resources/skills/userinterface-wiki/rules/container-callback-ref.md +31 -0
  428. package/dist/resources/skills/userinterface-wiki/rules/container-guard-initial-zero.md +25 -0
  429. package/dist/resources/skills/userinterface-wiki/rules/container-no-excessive-use.md +13 -0
  430. package/dist/resources/skills/userinterface-wiki/rules/container-overflow-hidden.md +25 -0
  431. package/dist/resources/skills/userinterface-wiki/rules/container-transition-delay.md +21 -0
  432. package/dist/resources/skills/userinterface-wiki/rules/container-two-div-pattern.md +35 -0
  433. package/dist/resources/skills/userinterface-wiki/rules/container-use-resize-observer.md +48 -0
  434. package/dist/resources/skills/userinterface-wiki/rules/context-cleanup-nodes.md +25 -0
  435. package/dist/resources/skills/userinterface-wiki/rules/context-resume-suspended.md +28 -0
  436. package/dist/resources/skills/userinterface-wiki/rules/context-reuse-single.md +30 -0
  437. package/dist/resources/skills/userinterface-wiki/rules/design-filter-for-character.md +25 -0
  438. package/dist/resources/skills/userinterface-wiki/rules/design-noise-for-percussion.md +26 -0
  439. package/dist/resources/skills/userinterface-wiki/rules/design-oscillator-for-tonal.md +22 -0
  440. package/dist/resources/skills/userinterface-wiki/rules/duration-max-300ms.md +21 -0
  441. package/dist/resources/skills/userinterface-wiki/rules/duration-press-hover.md +21 -0
  442. package/dist/resources/skills/userinterface-wiki/rules/duration-shorten-before-curve.md +21 -0
  443. package/dist/resources/skills/userinterface-wiki/rules/duration-small-state.md +15 -0
  444. package/dist/resources/skills/userinterface-wiki/rules/easing-entrance-ease-out.md +21 -0
  445. package/dist/resources/skills/userinterface-wiki/rules/easing-exit-ease-in.md +21 -0
  446. package/dist/resources/skills/userinterface-wiki/rules/easing-for-state-change.md +27 -0
  447. package/dist/resources/skills/userinterface-wiki/rules/easing-linear-only-progress.md +21 -0
  448. package/dist/resources/skills/userinterface-wiki/rules/easing-natural-decay.md +22 -0
  449. package/dist/resources/skills/userinterface-wiki/rules/easing-no-linear-motion.md +22 -0
  450. package/dist/resources/skills/userinterface-wiki/rules/easing-transition-ease-in-out.md +15 -0
  451. package/dist/resources/skills/userinterface-wiki/rules/envelope-exponential-decay.md +21 -0
  452. package/dist/resources/skills/userinterface-wiki/rules/envelope-no-zero-target.md +21 -0
  453. package/dist/resources/skills/userinterface-wiki/rules/envelope-set-initial-value.md +22 -0
  454. package/dist/resources/skills/userinterface-wiki/rules/exit-key-required.md +29 -0
  455. package/dist/resources/skills/userinterface-wiki/rules/exit-matches-initial.md +29 -0
  456. package/dist/resources/skills/userinterface-wiki/rules/exit-prop-required.md +33 -0
  457. package/dist/resources/skills/userinterface-wiki/rules/exit-requires-wrapper.md +27 -0
  458. package/dist/resources/skills/userinterface-wiki/rules/impl-default-subtle.md +21 -0
  459. package/dist/resources/skills/userinterface-wiki/rules/impl-preload-audio.md +34 -0
  460. package/dist/resources/skills/userinterface-wiki/rules/impl-reset-current-time.md +26 -0
  461. package/dist/resources/skills/userinterface-wiki/rules/mode-pop-layout-for-lists.md +25 -0
  462. package/dist/resources/skills/userinterface-wiki/rules/mode-sync-layout-conflict.md +29 -0
  463. package/dist/resources/skills/userinterface-wiki/rules/mode-wait-doubles-duration.md +25 -0
  464. package/dist/resources/skills/userinterface-wiki/rules/morphing-aria-hidden.md +21 -0
  465. package/dist/resources/skills/userinterface-wiki/rules/morphing-consistent-viewbox.md +23 -0
  466. package/dist/resources/skills/userinterface-wiki/rules/morphing-group-variants.md +33 -0
  467. package/dist/resources/skills/userinterface-wiki/rules/morphing-jump-non-grouped.md +29 -0
  468. package/dist/resources/skills/userinterface-wiki/rules/morphing-reduced-motion.md +28 -0
  469. package/dist/resources/skills/userinterface-wiki/rules/morphing-spring-rotation.md +23 -0
  470. package/dist/resources/skills/userinterface-wiki/rules/morphing-strokelinecap-round.md +21 -0
  471. package/dist/resources/skills/userinterface-wiki/rules/morphing-three-lines.md +32 -0
  472. package/dist/resources/skills/userinterface-wiki/rules/morphing-use-collapsed.md +33 -0
  473. package/dist/resources/skills/userinterface-wiki/rules/native-backdrop-styling.md +27 -0
  474. package/dist/resources/skills/userinterface-wiki/rules/native-placeholder-styling.md +27 -0
  475. package/dist/resources/skills/userinterface-wiki/rules/native-selection-styling.md +18 -0
  476. package/dist/resources/skills/userinterface-wiki/rules/nested-consistent-timing.md +25 -0
  477. package/dist/resources/skills/userinterface-wiki/rules/nested-propagate-required.md +41 -0
  478. package/dist/resources/skills/userinterface-wiki/rules/none-context-menu-entrance.md +25 -0
  479. package/dist/resources/skills/userinterface-wiki/rules/none-high-frequency.md +29 -0
  480. package/dist/resources/skills/userinterface-wiki/rules/none-keyboard-navigation.md +32 -0
  481. package/dist/resources/skills/userinterface-wiki/rules/param-click-duration.md +21 -0
  482. package/dist/resources/skills/userinterface-wiki/rules/param-filter-frequency-range.md +21 -0
  483. package/dist/resources/skills/userinterface-wiki/rules/param-q-value-range.md +21 -0
  484. package/dist/resources/skills/userinterface-wiki/rules/param-reasonable-gain.md +21 -0
  485. package/dist/resources/skills/userinterface-wiki/rules/physics-active-state.md +23 -0
  486. package/dist/resources/skills/userinterface-wiki/rules/physics-no-excessive-stagger.md +22 -0
  487. package/dist/resources/skills/userinterface-wiki/rules/physics-spring-for-overshoot.md +23 -0
  488. package/dist/resources/skills/userinterface-wiki/rules/physics-subtle-deformation.md +22 -0
  489. package/dist/resources/skills/userinterface-wiki/rules/prefetch-hit-slop.md +27 -0
  490. package/dist/resources/skills/userinterface-wiki/rules/prefetch-keyboard-tab.md +19 -0
  491. package/dist/resources/skills/userinterface-wiki/rules/prefetch-not-everything.md +22 -0
  492. package/dist/resources/skills/userinterface-wiki/rules/prefetch-touch-fallback.md +34 -0
  493. package/dist/resources/skills/userinterface-wiki/rules/prefetch-trajectory-over-hover.md +32 -0
  494. package/dist/resources/skills/userinterface-wiki/rules/prefetch-use-selectively.md +13 -0
  495. package/dist/resources/skills/userinterface-wiki/rules/presence-disable-interactions.md +31 -0
  496. package/dist/resources/skills/userinterface-wiki/rules/presence-hook-in-child.md +31 -0
  497. package/dist/resources/skills/userinterface-wiki/rules/presence-safe-to-remove.md +37 -0
  498. package/dist/resources/skills/userinterface-wiki/rules/pseudo-content-required.md +28 -0
  499. package/dist/resources/skills/userinterface-wiki/rules/pseudo-first-line-styling.md +27 -0
  500. package/dist/resources/skills/userinterface-wiki/rules/pseudo-hit-target-expansion.md +31 -0
  501. package/dist/resources/skills/userinterface-wiki/rules/pseudo-marker-styling.md +28 -0
  502. package/dist/resources/skills/userinterface-wiki/rules/pseudo-over-dom-node.md +32 -0
  503. package/dist/resources/skills/userinterface-wiki/rules/pseudo-position-relative-parent.md +33 -0
  504. package/dist/resources/skills/userinterface-wiki/rules/pseudo-z-index-layering.md +37 -0
  505. package/dist/resources/skills/userinterface-wiki/rules/spring-for-gestures.md +27 -0
  506. package/dist/resources/skills/userinterface-wiki/rules/spring-for-interruptible.md +27 -0
  507. package/dist/resources/skills/userinterface-wiki/rules/spring-params-balanced.md +29 -0
  508. package/dist/resources/skills/userinterface-wiki/rules/spring-preserves-velocity.md +28 -0
  509. package/dist/resources/skills/userinterface-wiki/rules/staging-dim-background.md +22 -0
  510. package/dist/resources/skills/userinterface-wiki/rules/staging-one-focal-point.md +24 -0
  511. package/dist/resources/skills/userinterface-wiki/rules/staging-z-index-hierarchy.md +22 -0
  512. package/dist/resources/skills/userinterface-wiki/rules/timing-consistent.md +24 -0
  513. package/dist/resources/skills/userinterface-wiki/rules/timing-no-entrance-context-menu.md +22 -0
  514. package/dist/resources/skills/userinterface-wiki/rules/timing-under-300ms.md +22 -0
  515. package/dist/resources/skills/userinterface-wiki/rules/transition-name-cleanup.md +28 -0
  516. package/dist/resources/skills/userinterface-wiki/rules/transition-name-required.md +27 -0
  517. package/dist/resources/skills/userinterface-wiki/rules/transition-name-unique.md +24 -0
  518. package/dist/resources/skills/userinterface-wiki/rules/transition-over-js-library.md +32 -0
  519. package/dist/resources/skills/userinterface-wiki/rules/transition-style-pseudo-elements.md +24 -0
  520. package/dist/resources/skills/userinterface-wiki/rules/type-antialiased-on-retina.md +18 -0
  521. package/dist/resources/skills/userinterface-wiki/rules/type-disambiguation-stylistic-set.md +15 -0
  522. package/dist/resources/skills/userinterface-wiki/rules/type-font-display-swap.md +28 -0
  523. package/dist/resources/skills/userinterface-wiki/rules/type-justify-with-hyphens.md +24 -0
  524. package/dist/resources/skills/userinterface-wiki/rules/type-letter-spacing-uppercase.md +28 -0
  525. package/dist/resources/skills/userinterface-wiki/rules/type-no-font-synthesis.md +18 -0
  526. package/dist/resources/skills/userinterface-wiki/rules/type-oldstyle-nums-for-prose.md +21 -0
  527. package/dist/resources/skills/userinterface-wiki/rules/type-opentype-contextual-alternates.md +15 -0
  528. package/dist/resources/skills/userinterface-wiki/rules/type-optical-sizing-auto.md +25 -0
  529. package/dist/resources/skills/userinterface-wiki/rules/type-proper-fractions.md +15 -0
  530. package/dist/resources/skills/userinterface-wiki/rules/type-slashed-zero.md +17 -0
  531. package/dist/resources/skills/userinterface-wiki/rules/type-tabular-nums-for-data.md +21 -0
  532. package/dist/resources/skills/userinterface-wiki/rules/type-text-wrap-balance-headings.md +21 -0
  533. package/dist/resources/skills/userinterface-wiki/rules/type-text-wrap-pretty.md +16 -0
  534. package/dist/resources/skills/userinterface-wiki/rules/type-underline-offset.md +25 -0
  535. package/dist/resources/skills/userinterface-wiki/rules/type-variable-weight-continuous.md +23 -0
  536. package/dist/resources/skills/userinterface-wiki/rules/ux-aesthetic-usability.md +32 -0
  537. package/dist/resources/skills/userinterface-wiki/rules/ux-cognitive-load-reduce.md +49 -0
  538. package/dist/resources/skills/userinterface-wiki/rules/ux-common-region-boundaries.md +50 -0
  539. package/dist/resources/skills/userinterface-wiki/rules/ux-doherty-perceived-speed.md +29 -0
  540. package/dist/resources/skills/userinterface-wiki/rules/ux-doherty-under-400ms.md +30 -0
  541. package/dist/resources/skills/userinterface-wiki/rules/ux-fitts-hit-area.md +32 -0
  542. package/dist/resources/skills/userinterface-wiki/rules/ux-fitts-target-size.md +31 -0
  543. package/dist/resources/skills/userinterface-wiki/rules/ux-goal-gradient-progress.md +33 -0
  544. package/dist/resources/skills/userinterface-wiki/rules/ux-hicks-minimize-choices.md +45 -0
  545. package/dist/resources/skills/userinterface-wiki/rules/ux-jakobs-familiar-patterns.md +37 -0
  546. package/dist/resources/skills/userinterface-wiki/rules/ux-millers-chunking.md +23 -0
  547. package/dist/resources/skills/userinterface-wiki/rules/ux-pareto-prioritize-features.md +36 -0
  548. package/dist/resources/skills/userinterface-wiki/rules/ux-peak-end-finish-strong.md +35 -0
  549. package/dist/resources/skills/userinterface-wiki/rules/ux-postels-accept-messy-input.md +45 -0
  550. package/dist/resources/skills/userinterface-wiki/rules/ux-pragnanz-simplify.md +33 -0
  551. package/dist/resources/skills/userinterface-wiki/rules/ux-progressive-disclosure.md +41 -0
  552. package/dist/resources/skills/userinterface-wiki/rules/ux-proximity-grouping.md +38 -0
  553. package/dist/resources/skills/userinterface-wiki/rules/ux-serial-position.md +31 -0
  554. package/dist/resources/skills/userinterface-wiki/rules/ux-similarity-consistency.md +35 -0
  555. package/dist/resources/skills/userinterface-wiki/rules/ux-teslers-complexity.md +28 -0
  556. package/dist/resources/skills/userinterface-wiki/rules/ux-uniform-connectedness.md +43 -0
  557. package/dist/resources/skills/userinterface-wiki/rules/ux-von-restorff-emphasis.md +29 -0
  558. package/dist/resources/skills/userinterface-wiki/rules/ux-zeigarnik-show-incomplete.md +36 -0
  559. package/dist/resources/skills/userinterface-wiki/rules/visual-animate-shadow-pseudo.md +49 -0
  560. package/dist/resources/skills/userinterface-wiki/rules/visual-border-alpha-colors.md +25 -0
  561. package/dist/resources/skills/userinterface-wiki/rules/visual-button-shadow-anatomy.md +49 -0
  562. package/dist/resources/skills/userinterface-wiki/rules/visual-concentric-radius.md +40 -0
  563. package/dist/resources/skills/userinterface-wiki/rules/visual-consistent-spacing-scale.md +35 -0
  564. package/dist/resources/skills/userinterface-wiki/rules/visual-layered-shadows.md +30 -0
  565. package/dist/resources/skills/userinterface-wiki/rules/visual-no-pure-black-shadow.md +25 -0
  566. package/dist/resources/skills/userinterface-wiki/rules/visual-shadow-direction.md +25 -0
  567. package/dist/resources/skills/userinterface-wiki/rules/visual-shadow-matches-elevation.md +23 -0
  568. package/dist/resources/skills/userinterface-wiki/rules/weight-duration-matches-action.md +29 -0
  569. package/dist/resources/skills/userinterface-wiki/rules/weight-match-action.md +32 -0
  570. package/dist/resources/skills/web-design-guidelines/SKILL.md +39 -0
  571. package/dist/resources/skills/web-quality-audit/SKILL.md +170 -0
  572. package/dist/resources/skills/web-quality-audit/scripts/analyze.sh +91 -0
  573. package/package.json +22 -8
  574. package/packages/native/dist/native.d.ts +2 -0
  575. package/packages/native/dist/native.js +19 -5
  576. package/packages/native/package.json +28 -0
  577. package/packages/native/src/native.ts +23 -9
  578. package/packages/pi-agent-core/package.json +6 -0
  579. package/packages/pi-ai/dist/models.generated.d.ts +43 -11
  580. package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
  581. package/packages/pi-ai/dist/models.generated.js +34 -26
  582. package/packages/pi-ai/dist/models.generated.js.map +1 -1
  583. package/packages/pi-ai/dist/providers/anthropic.js +3 -2
  584. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  585. package/packages/pi-ai/dist/providers/openai-codex-responses.js +14 -4
  586. package/packages/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  587. package/packages/pi-ai/oauth.d.ts +1 -0
  588. package/packages/pi-ai/oauth.js +1 -0
  589. package/packages/pi-ai/package.json +2 -2
  590. package/packages/pi-ai/src/models.generated.ts +42 -34
  591. package/packages/pi-ai/src/providers/anthropic.ts +3 -2
  592. package/packages/pi-ai/src/providers/openai-codex-responses.ts +15 -4
  593. package/packages/pi-coding-agent/dist/core/agent-session.js +1 -1
  594. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  595. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  596. package/packages/pi-coding-agent/dist/core/auth-storage.js +2 -1
  597. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  598. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  599. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js +2 -1
  600. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  601. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  602. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +3 -2
  603. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  604. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
  605. package/packages/pi-coding-agent/dist/core/compaction/utils.js +2 -2
  606. package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  607. package/packages/pi-coding-agent/dist/core/constants.d.ts +29 -0
  608. package/packages/pi-coding-agent/dist/core/constants.d.ts.map +1 -0
  609. package/packages/pi-coding-agent/dist/core/constants.js +44 -0
  610. package/packages/pi-coding-agent/dist/core/constants.js.map +1 -0
  611. package/packages/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  612. package/packages/pi-coding-agent/dist/core/extensions/loader.js +14 -1
  613. package/packages/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  614. package/packages/pi-coding-agent/dist/core/lsp/client.d.ts.map +1 -1
  615. package/packages/pi-coding-agent/dist/core/lsp/client.js +3 -0
  616. package/packages/pi-coding-agent/dist/core/lsp/client.js.map +1 -1
  617. package/packages/pi-coding-agent/dist/core/lsp/index.d.ts.map +1 -1
  618. package/packages/pi-coding-agent/dist/core/lsp/index.js +30 -4
  619. package/packages/pi-coding-agent/dist/core/lsp/index.js.map +1 -1
  620. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
  621. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +13 -5
  622. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
  623. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  624. package/packages/pi-coding-agent/dist/core/model-resolver.js +14 -0
  625. package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  626. package/packages/pi-coding-agent/dist/core/resolve-config-value.d.ts.map +1 -1
  627. package/packages/pi-coding-agent/dist/core/resolve-config-value.js +12 -4
  628. package/packages/pi-coding-agent/dist/core/resolve-config-value.js.map +1 -1
  629. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js +49 -0
  630. package/packages/pi-coding-agent/dist/core/resolve-config-value.test.js.map +1 -1
  631. package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  632. package/packages/pi-coding-agent/dist/core/session-manager.js +25 -2
  633. package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  634. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +6 -0
  635. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  636. package/packages/pi-coding-agent/dist/core/settings-manager.js +22 -5
  637. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  638. package/packages/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
  639. package/packages/pi-coding-agent/dist/core/system-prompt.js +10 -0
  640. package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  641. package/packages/pi-coding-agent/dist/core/tools/edit-diff.js +2 -2
  642. package/packages/pi-coding-agent/dist/core/tools/edit-diff.js.map +1 -1
  643. package/packages/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  644. package/packages/pi-coding-agent/dist/core/tools/find.js +2 -1
  645. package/packages/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  646. package/packages/pi-coding-agent/dist/core/tools/hashline-edit.js +4 -4
  647. package/packages/pi-coding-agent/dist/core/tools/hashline-edit.js.map +1 -1
  648. package/packages/pi-coding-agent/dist/core/tools/hashline.d.ts +1 -1
  649. package/packages/pi-coding-agent/dist/core/tools/hashline.js +1 -1
  650. package/packages/pi-coding-agent/dist/core/tools/hashline.js.map +1 -1
  651. package/packages/pi-coding-agent/dist/core/tools/hashline.test.js +8 -8
  652. package/packages/pi-coding-agent/dist/core/tools/hashline.test.js.map +1 -1
  653. package/packages/pi-coding-agent/dist/core/tools/index.d.ts +1 -1
  654. package/packages/pi-coding-agent/dist/core/tools/index.js +1 -1
  655. package/packages/pi-coding-agent/dist/core/tools/index.js.map +1 -1
  656. package/packages/pi-coding-agent/dist/core/tools/path-utils.d.ts +1 -0
  657. package/packages/pi-coding-agent/dist/core/tools/path-utils.d.ts.map +1 -1
  658. package/packages/pi-coding-agent/dist/core/tools/path-utils.js +1 -1
  659. package/packages/pi-coding-agent/dist/core/tools/path-utils.js.map +1 -1
  660. package/packages/pi-coding-agent/dist/core/tools/truncate.d.ts.map +1 -1
  661. package/packages/pi-coding-agent/dist/core/tools/truncate.js +2 -1
  662. package/packages/pi-coding-agent/dist/core/tools/truncate.js.map +1 -1
  663. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.d.ts +9 -0
  664. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  665. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.js +47 -5
  666. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-selector.js.map +1 -1
  667. package/packages/pi-coding-agent/dist/modes/interactive/components/index.d.ts +1 -1
  668. package/packages/pi-coding-agent/dist/modes/interactive/components/index.d.ts.map +1 -1
  669. package/packages/pi-coding-agent/dist/modes/interactive/components/index.js +1 -1
  670. package/packages/pi-coding-agent/dist/modes/interactive/components/index.js.map +1 -1
  671. package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +4 -4
  672. package/packages/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -1
  673. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  674. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  675. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +12 -0
  676. package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  677. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  678. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +25 -1
  679. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  680. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  681. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js +12 -2
  682. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  683. package/packages/pi-coding-agent/dist/resources/extensions/memory/pipeline.d.ts.map +1 -1
  684. package/packages/pi-coding-agent/dist/resources/extensions/memory/pipeline.js +25 -3
  685. package/packages/pi-coding-agent/dist/resources/extensions/memory/pipeline.js.map +1 -1
  686. package/packages/pi-coding-agent/package.json +1 -5
  687. package/packages/pi-coding-agent/scripts/copy-assets.cjs +39 -8
  688. package/packages/pi-coding-agent/src/core/agent-session.ts +1 -1
  689. package/packages/pi-coding-agent/src/core/auth-storage.ts +2 -1
  690. package/packages/pi-coding-agent/src/core/compaction/branch-summarization.ts +2 -1
  691. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +3 -2
  692. package/packages/pi-coding-agent/src/core/compaction/utils.ts +2 -2
  693. package/packages/pi-coding-agent/src/core/constants.ts +59 -0
  694. package/packages/pi-coding-agent/src/core/extensions/loader.ts +14 -1
  695. package/packages/pi-coding-agent/src/core/lsp/client.ts +3 -0
  696. package/packages/pi-coding-agent/src/core/lsp/index.ts +31 -5
  697. package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +13 -5
  698. package/packages/pi-coding-agent/src/core/model-resolver.ts +14 -0
  699. package/packages/pi-coding-agent/src/core/resolve-config-value.test.ts +58 -0
  700. package/packages/pi-coding-agent/src/core/resolve-config-value.ts +14 -4
  701. package/packages/pi-coding-agent/src/core/session-manager.ts +29 -6
  702. package/packages/pi-coding-agent/src/core/settings-manager.ts +33 -5
  703. package/packages/pi-coding-agent/src/core/system-prompt.ts +11 -0
  704. package/packages/pi-coding-agent/src/core/tools/edit-diff.ts +2 -2
  705. package/packages/pi-coding-agent/src/core/tools/find.ts +2 -1
  706. package/packages/pi-coding-agent/src/core/tools/hashline-edit.ts +4 -4
  707. package/packages/pi-coding-agent/src/core/tools/hashline.test.ts +8 -8
  708. package/packages/pi-coding-agent/src/core/tools/hashline.ts +1 -1
  709. package/packages/pi-coding-agent/src/core/tools/index.ts +1 -1
  710. package/packages/pi-coding-agent/src/core/tools/path-utils.ts +1 -1
  711. package/packages/pi-coding-agent/src/core/tools/truncate.ts +3 -1
  712. package/packages/pi-coding-agent/src/modes/interactive/components/extension-selector.ts +49 -5
  713. package/packages/pi-coding-agent/src/modes/interactive/components/index.ts +1 -1
  714. package/packages/pi-coding-agent/src/modes/interactive/components/login-dialog.ts +4 -4
  715. package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +15 -0
  716. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +26 -0
  717. package/packages/pi-coding-agent/src/modes/rpc/rpc-mode.ts +11 -2
  718. package/packages/pi-coding-agent/src/resources/extensions/memory/pipeline.ts +23 -3
  719. package/packages/pi-tui/dist/__tests__/autocomplete.test.d.ts +2 -0
  720. package/packages/pi-tui/dist/__tests__/autocomplete.test.d.ts.map +1 -0
  721. package/packages/pi-tui/dist/__tests__/autocomplete.test.js +149 -0
  722. package/packages/pi-tui/dist/__tests__/autocomplete.test.js.map +1 -0
  723. package/packages/pi-tui/dist/__tests__/fuzzy.test.d.ts +2 -0
  724. package/packages/pi-tui/dist/__tests__/fuzzy.test.d.ts.map +1 -0
  725. package/packages/pi-tui/dist/__tests__/fuzzy.test.js +94 -0
  726. package/packages/pi-tui/dist/__tests__/fuzzy.test.js.map +1 -0
  727. package/packages/pi-tui/dist/autocomplete.d.ts +8 -1
  728. package/packages/pi-tui/dist/autocomplete.d.ts.map +1 -1
  729. package/packages/pi-tui/dist/autocomplete.js +20 -2
  730. package/packages/pi-tui/dist/autocomplete.js.map +1 -1
  731. package/packages/pi-tui/package.json +8 -2
  732. package/packages/pi-tui/src/__tests__/autocomplete.test.ts +186 -0
  733. package/packages/pi-tui/src/__tests__/fuzzy.test.ts +112 -0
  734. package/packages/pi-tui/src/autocomplete.ts +26 -1
  735. package/pkg/package.json +1 -1
  736. package/src/resources/extensions/ask-user-questions.ts +3 -2
  737. package/src/resources/extensions/bg-shell/bg-shell-command.ts +219 -0
  738. package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +400 -0
  739. package/src/resources/extensions/bg-shell/bg-shell-tool.ts +985 -0
  740. package/src/resources/extensions/bg-shell/index.ts +17 -1561
  741. package/src/resources/extensions/bg-shell/overlay.ts +4 -0
  742. package/src/resources/extensions/bg-shell/process-manager.ts +13 -0
  743. package/src/resources/extensions/bg-shell/utilities.ts +4 -16
  744. package/src/resources/extensions/browser-tools/capture.ts +34 -2
  745. package/src/resources/extensions/browser-tools/lifecycle.ts +5 -5
  746. package/src/resources/extensions/browser-tools/settle.ts +1 -1
  747. package/src/resources/extensions/browser-tools/state.ts +5 -5
  748. package/src/resources/extensions/browser-tools/tests/browser-tools-integration.test.mjs +1 -1
  749. package/src/resources/extensions/browser-tools/tests/browser-tools-unit.test.cjs +3 -3
  750. package/src/resources/extensions/browser-tools/tools/assertions.ts +1 -1
  751. package/src/resources/extensions/browser-tools/tools/device.ts +1 -1
  752. package/src/resources/extensions/browser-tools/tools/extract.ts +1 -1
  753. package/src/resources/extensions/browser-tools/tools/navigation.ts +6 -6
  754. package/src/resources/extensions/browser-tools/tools/network-mock.ts +1 -1
  755. package/src/resources/extensions/browser-tools/tools/pages.ts +1 -1
  756. package/src/resources/extensions/browser-tools/tools/screenshot.ts +28 -10
  757. package/src/resources/extensions/browser-tools/tools/state-persistence.ts +1 -1
  758. package/src/resources/extensions/browser-tools/tools/visual-diff.ts +1 -1
  759. package/src/resources/extensions/browser-tools/utils.ts +5 -5
  760. package/src/resources/extensions/get-secrets-from-user.ts +1 -1
  761. package/src/resources/extensions/google-search/index.ts +21 -8
  762. package/src/resources/extensions/gsd/activity-log.ts +2 -1
  763. package/src/resources/extensions/gsd/atomic-write.ts +35 -0
  764. package/src/resources/extensions/gsd/auto/session.ts +12 -0
  765. package/src/resources/extensions/gsd/auto-dashboard.ts +295 -62
  766. package/src/resources/extensions/gsd/auto-dispatch.ts +2 -2
  767. package/src/resources/extensions/gsd/auto-idempotency.ts +150 -0
  768. package/src/resources/extensions/gsd/auto-post-unit.ts +633 -0
  769. package/src/resources/extensions/gsd/auto-prompts.ts +139 -32
  770. package/src/resources/extensions/gsd/auto-recovery.ts +36 -31
  771. package/src/resources/extensions/gsd/auto-start.ts +500 -0
  772. package/src/resources/extensions/gsd/auto-stuck-detection.ts +220 -0
  773. package/src/resources/extensions/gsd/auto-timers.ts +223 -0
  774. package/src/resources/extensions/gsd/auto-unit-closeout.ts +3 -1
  775. package/src/resources/extensions/gsd/auto-verification.ts +229 -0
  776. package/src/resources/extensions/gsd/auto-worktree-sync.ts +29 -37
  777. package/src/resources/extensions/gsd/auto-worktree.ts +92 -67
  778. package/src/resources/extensions/gsd/auto.ts +375 -1890
  779. package/src/resources/extensions/gsd/commands-config.ts +102 -0
  780. package/src/resources/extensions/gsd/commands-handlers.ts +394 -0
  781. package/src/resources/extensions/gsd/commands-inspect.ts +90 -0
  782. package/src/resources/extensions/gsd/commands-logs.ts +536 -0
  783. package/src/resources/extensions/gsd/commands-maintenance.ts +206 -0
  784. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +790 -0
  785. package/src/resources/extensions/gsd/commands-workflow-templates.ts +544 -0
  786. package/src/resources/extensions/gsd/commands.ts +417 -1495
  787. package/src/resources/extensions/gsd/constants.ts +21 -0
  788. package/src/resources/extensions/gsd/context-budget.ts +25 -2
  789. package/src/resources/extensions/gsd/crash-recovery.ts +3 -4
  790. package/src/resources/extensions/gsd/dashboard-overlay.ts +15 -5
  791. package/src/resources/extensions/gsd/db-writer.ts +21 -2
  792. package/src/resources/extensions/gsd/detection.ts +469 -0
  793. package/src/resources/extensions/gsd/diff-context.ts +2 -1
  794. package/src/resources/extensions/gsd/dispatch-guard.ts +4 -0
  795. package/src/resources/extensions/gsd/doctor-checks.ts +564 -0
  796. package/src/resources/extensions/gsd/doctor-format.ts +78 -0
  797. package/src/resources/extensions/gsd/doctor-types.ts +72 -0
  798. package/src/resources/extensions/gsd/doctor.ts +64 -701
  799. package/src/resources/extensions/gsd/errors.ts +0 -2
  800. package/src/resources/extensions/gsd/export-html.ts +367 -11
  801. package/src/resources/extensions/gsd/export.ts +31 -5
  802. package/src/resources/extensions/gsd/files.ts +8 -126
  803. package/src/resources/extensions/gsd/forensics.ts +2 -12
  804. package/src/resources/extensions/gsd/git-constants.ts +11 -0
  805. package/src/resources/extensions/gsd/git-service.ts +13 -9
  806. package/src/resources/extensions/gsd/gsd-db.ts +26 -6
  807. package/src/resources/extensions/gsd/guided-flow-queue.ts +451 -0
  808. package/src/resources/extensions/gsd/guided-flow.ts +231 -514
  809. package/src/resources/extensions/gsd/history.ts +2 -20
  810. package/src/resources/extensions/gsd/index.ts +208 -46
  811. package/src/resources/extensions/gsd/init-wizard.ts +615 -0
  812. package/src/resources/extensions/gsd/json-persistence.ts +67 -0
  813. package/src/resources/extensions/gsd/jsonl-utils.ts +21 -0
  814. package/src/resources/extensions/gsd/key-manager.ts +995 -0
  815. package/src/resources/extensions/gsd/mechanical-completion.ts +430 -0
  816. package/src/resources/extensions/gsd/metrics.ts +49 -36
  817. package/src/resources/extensions/gsd/migrate/command.ts +1 -1
  818. package/src/resources/extensions/gsd/migrate/parsers.ts +10 -95
  819. package/src/resources/extensions/gsd/milestone-actions.ts +126 -0
  820. package/src/resources/extensions/gsd/milestone-ids.ts +95 -0
  821. package/src/resources/extensions/gsd/native-git-bridge.ts +5 -10
  822. package/src/resources/extensions/gsd/parallel-eligibility.ts +3 -3
  823. package/src/resources/extensions/gsd/paths.ts +18 -11
  824. package/src/resources/extensions/gsd/plugin-importer.ts +3 -2
  825. package/src/resources/extensions/gsd/preferences-models.ts +329 -0
  826. package/src/resources/extensions/gsd/preferences-skills.ts +169 -0
  827. package/src/resources/extensions/gsd/preferences-types.ts +223 -0
  828. package/src/resources/extensions/gsd/preferences-validation.ts +598 -0
  829. package/src/resources/extensions/gsd/preferences.ts +219 -1305
  830. package/src/resources/extensions/gsd/prompt-cache-optimizer.ts +213 -0
  831. package/src/resources/extensions/gsd/prompt-compressor.ts +508 -0
  832. package/src/resources/extensions/gsd/prompt-loader.ts +4 -2
  833. package/src/resources/extensions/gsd/prompt-ordering.ts +200 -0
  834. package/src/resources/extensions/gsd/prompts/complete-milestone.md +2 -2
  835. package/src/resources/extensions/gsd/prompts/complete-slice.md +4 -4
  836. package/src/resources/extensions/gsd/prompts/discuss-headless.md +6 -6
  837. package/src/resources/extensions/gsd/prompts/discuss.md +13 -5
  838. package/src/resources/extensions/gsd/prompts/execute-task.md +0 -1
  839. package/src/resources/extensions/gsd/prompts/guided-complete-slice.md +1 -1
  840. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  841. package/src/resources/extensions/gsd/prompts/guided-plan-milestone.md +0 -1
  842. package/src/resources/extensions/gsd/prompts/plan-milestone.md +26 -3
  843. package/src/resources/extensions/gsd/prompts/plan-slice.md +15 -2
  844. package/src/resources/extensions/gsd/prompts/queue.md +30 -0
  845. package/src/resources/extensions/gsd/prompts/quick-task.md +0 -6
  846. package/src/resources/extensions/gsd/prompts/replan-slice.md +0 -1
  847. package/src/resources/extensions/gsd/prompts/rewrite-docs.md +0 -1
  848. package/src/resources/extensions/gsd/prompts/system.md +1 -1
  849. package/src/resources/extensions/gsd/prompts/workflow-start.md +28 -0
  850. package/src/resources/extensions/gsd/provider-error-pause.ts +59 -10
  851. package/src/resources/extensions/gsd/queue-order.ts +11 -12
  852. package/src/resources/extensions/gsd/queue-reorder-ui.ts +15 -2
  853. package/src/resources/extensions/gsd/quick.ts +18 -15
  854. package/src/resources/extensions/gsd/reports.ts +1 -7
  855. package/src/resources/extensions/gsd/routing-history.ts +13 -17
  856. package/src/resources/extensions/gsd/safe-fs.ts +47 -0
  857. package/src/resources/extensions/gsd/semantic-chunker.ts +336 -0
  858. package/src/resources/extensions/gsd/session-forensics.ts +8 -23
  859. package/src/resources/extensions/gsd/session-lock.ts +284 -0
  860. package/src/resources/extensions/gsd/session-status-io.ts +23 -41
  861. package/src/resources/extensions/gsd/skills/gsd-headless/SKILL.md +38 -1
  862. package/src/resources/extensions/gsd/skills/gsd-headless/references/answer-injection.md +35 -6
  863. package/src/resources/extensions/gsd/state.ts +54 -2
  864. package/src/resources/extensions/gsd/structured-data-formatter.ts +144 -0
  865. package/src/resources/extensions/gsd/summary-distiller.ts +258 -0
  866. package/src/resources/extensions/gsd/tests/activity-log.test.ts +213 -0
  867. package/src/resources/extensions/gsd/tests/agent-end-retry.test.ts +107 -0
  868. package/src/resources/extensions/gsd/tests/all-milestones-complete-merge.test.ts +197 -0
  869. package/src/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +1 -1
  870. package/src/resources/extensions/gsd/tests/auto-preflight.test.ts +33 -39
  871. package/src/resources/extensions/gsd/tests/auto-secrets-gate.test.ts +108 -2
  872. package/src/resources/extensions/gsd/tests/auto-session-encapsulation.test.ts +257 -0
  873. package/src/resources/extensions/gsd/tests/auto-skip-loop.test.ts +1 -1
  874. package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +3 -0
  875. package/src/resources/extensions/gsd/tests/commands-logs.test.ts +241 -0
  876. package/src/resources/extensions/gsd/tests/context-budget.test.ts +69 -0
  877. package/src/resources/extensions/gsd/tests/detection.test.ts +398 -0
  878. package/src/resources/extensions/gsd/tests/discuss-prompt.test.ts +12 -24
  879. package/src/resources/extensions/gsd/tests/dispatch-guard.test.ts +118 -94
  880. package/src/resources/extensions/gsd/tests/dispatch-stall-guard.test.ts +126 -0
  881. package/src/resources/extensions/gsd/tests/dist-redirect.mjs +7 -3
  882. package/src/resources/extensions/gsd/tests/doctor-fixlevel.test.ts +75 -0
  883. package/src/resources/extensions/gsd/tests/doctor-git.test.ts +17 -55
  884. package/src/resources/extensions/gsd/tests/export-html-enhancements.test.ts +375 -0
  885. package/src/resources/extensions/gsd/tests/extension-selector-separator.test.ts +144 -0
  886. package/src/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +3 -0
  887. package/src/resources/extensions/gsd/tests/gsd-inspect.test.ts +1 -1
  888. package/src/resources/extensions/gsd/tests/headless-answers.test.ts +340 -0
  889. package/src/resources/extensions/gsd/tests/in-flight-tool-tracking.test.ts +24 -82
  890. package/src/resources/extensions/gsd/tests/init-wizard.test.ts +197 -0
  891. package/src/resources/extensions/gsd/tests/key-manager.test.ts +414 -0
  892. package/src/resources/extensions/gsd/tests/mechanical-completion.test.ts +356 -0
  893. package/src/resources/extensions/gsd/tests/metrics.test.ts +173 -305
  894. package/src/resources/extensions/gsd/tests/milestone-transition-worktree.test.ts +3 -0
  895. package/src/resources/extensions/gsd/tests/model-isolation.test.ts +59 -1
  896. package/src/resources/extensions/gsd/tests/next-milestone-id.test.ts +18 -61
  897. package/src/resources/extensions/gsd/tests/none-mode-gates.test.ts +17 -8
  898. package/src/resources/extensions/gsd/tests/parallel-merge.test.ts +3 -0
  899. package/src/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +1 -1
  900. package/src/resources/extensions/gsd/tests/park-edge-cases.test.ts +276 -0
  901. package/src/resources/extensions/gsd/tests/park-milestone.test.ts +401 -0
  902. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +24 -47
  903. package/src/resources/extensions/gsd/tests/preferences.test.ts +284 -0
  904. package/src/resources/extensions/gsd/tests/prompt-cache-optimizer.test.ts +314 -0
  905. package/src/resources/extensions/gsd/tests/prompt-compressor.test.ts +529 -0
  906. package/src/resources/extensions/gsd/tests/prompt-ordering.test.ts +296 -0
  907. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +338 -0
  908. package/src/resources/extensions/gsd/tests/reassess-detection.test.ts +154 -0
  909. package/src/resources/extensions/gsd/tests/remote-questions.test.ts +1 -1
  910. package/src/resources/extensions/gsd/tests/remote-status.test.ts +2 -2
  911. package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +43 -60
  912. package/src/resources/extensions/gsd/tests/semantic-chunker.test.ts +426 -0
  913. package/src/resources/extensions/gsd/tests/session-lock.test.ts +315 -0
  914. package/src/resources/extensions/gsd/tests/stale-worktree-cwd.test.ts +3 -0
  915. package/src/resources/extensions/gsd/tests/stop-auto-remote.test.ts +8 -5
  916. package/src/resources/extensions/gsd/tests/structured-data-formatter.test.ts +365 -0
  917. package/src/resources/extensions/gsd/tests/summary-distiller.test.ts +323 -0
  918. package/src/resources/extensions/gsd/tests/token-counter.test.ts +129 -0
  919. package/src/resources/extensions/gsd/tests/token-optimization-benchmark.test.ts +1272 -0
  920. package/src/resources/extensions/gsd/tests/token-optimization-prefs.test.ts +164 -0
  921. package/src/resources/extensions/gsd/tests/token-profile.test.ts +22 -17
  922. package/src/resources/extensions/gsd/tests/triage-dispatch.test.ts +69 -73
  923. package/src/resources/extensions/gsd/tests/validate-directory.test.ts +222 -0
  924. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +55 -0
  925. package/src/resources/extensions/gsd/tests/verification-evidence.test.ts +26 -24
  926. package/src/resources/extensions/gsd/tests/verification-gate.test.ts +251 -8
  927. package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +2 -2
  928. package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +2 -1
  929. package/src/resources/extensions/gsd/tests/workflow-templates.test.ts +173 -0
  930. package/src/resources/extensions/gsd/tests/workspace-index.test.ts +24 -61
  931. package/src/resources/extensions/gsd/tests/worktree-e2e.test.ts +5 -2
  932. package/src/resources/extensions/gsd/tests/write-gate.test.ts +132 -43
  933. package/src/resources/extensions/gsd/token-counter.ts +20 -0
  934. package/src/resources/extensions/gsd/triage-ui.ts +1 -1
  935. package/src/resources/extensions/gsd/types.ts +7 -1
  936. package/src/resources/extensions/gsd/unit-runtime.ts +16 -13
  937. package/src/resources/extensions/gsd/validate-directory.ts +164 -0
  938. package/src/resources/extensions/gsd/verification-evidence.ts +9 -4
  939. package/src/resources/extensions/gsd/verification-gate.ts +83 -7
  940. package/src/resources/extensions/gsd/visualizer-data.ts +1 -1
  941. package/src/resources/extensions/gsd/visualizer-overlay.ts +5 -2
  942. package/src/resources/extensions/gsd/visualizer-views.ts +2 -3
  943. package/src/resources/extensions/gsd/workflow-templates/bugfix.md +87 -0
  944. package/src/resources/extensions/gsd/workflow-templates/dep-upgrade.md +74 -0
  945. package/src/resources/extensions/gsd/workflow-templates/full-project.md +41 -0
  946. package/src/resources/extensions/gsd/workflow-templates/hotfix.md +45 -0
  947. package/src/resources/extensions/gsd/workflow-templates/refactor.md +83 -0
  948. package/src/resources/extensions/gsd/workflow-templates/registry.json +85 -0
  949. package/src/resources/extensions/gsd/workflow-templates/security-audit.md +73 -0
  950. package/src/resources/extensions/gsd/workflow-templates/small-feature.md +81 -0
  951. package/src/resources/extensions/gsd/workflow-templates/spike.md +69 -0
  952. package/src/resources/extensions/gsd/workflow-templates.ts +241 -0
  953. package/src/resources/extensions/gsd/worktree-command.ts +4 -51
  954. package/src/resources/extensions/gsd/worktree-manager.ts +7 -9
  955. package/src/resources/extensions/gsd/worktree.ts +41 -1
  956. package/src/resources/extensions/mcp-client/index.ts +459 -0
  957. package/src/resources/extensions/remote-questions/discord-adapter.ts +9 -20
  958. package/src/resources/extensions/remote-questions/http-client.ts +76 -0
  959. package/src/resources/extensions/remote-questions/manager.ts +6 -24
  960. package/src/resources/extensions/remote-questions/mod.ts +16 -0
  961. package/src/resources/extensions/remote-questions/notify.ts +90 -0
  962. package/src/resources/extensions/remote-questions/remote-command.ts +1 -1
  963. package/src/resources/extensions/remote-questions/slack-adapter.ts +11 -18
  964. package/src/resources/extensions/remote-questions/store.ts +5 -1
  965. package/src/resources/extensions/remote-questions/telegram-adapter.ts +8 -20
  966. package/src/resources/extensions/remote-questions/types.ts +29 -3
  967. package/src/resources/extensions/search-the-web/native-search.ts +7 -0
  968. package/src/resources/extensions/search-the-web/provider.ts +15 -3
  969. package/src/resources/extensions/search-the-web/tool-llm-context.ts +1 -13
  970. package/src/resources/extensions/search-the-web/tool-search.ts +1 -13
  971. package/src/resources/extensions/shared/format-utils.ts +53 -0
  972. package/src/resources/extensions/shared/frontmatter.ts +117 -0
  973. package/src/resources/extensions/shared/mod.ts +33 -0
  974. package/src/resources/extensions/shared/sanitize.ts +19 -0
  975. package/src/resources/extensions/slash-commands/create-extension.ts +1 -1
  976. package/src/resources/extensions/slash-commands/create-slash-command.ts +1 -1
  977. package/src/resources/extensions/subagent/index.ts +1 -2
  978. package/src/resources/extensions/ttsr/index.ts +5 -0
  979. package/src/resources/extensions/ttsr/rule-loader.ts +4 -51
  980. package/src/resources/extensions/universal-config/discovery.ts +37 -15
  981. package/src/resources/extensions/voice/index.ts +1 -1
  982. package/src/resources/skills/accessibility/SKILL.md +522 -0
  983. package/src/resources/skills/accessibility/references/WCAG.md +162 -0
  984. package/src/resources/skills/agent-browser/SKILL.md +517 -0
  985. package/src/resources/skills/agent-browser/references/authentication.md +202 -0
  986. package/src/resources/skills/agent-browser/references/commands.md +263 -0
  987. package/src/resources/skills/agent-browser/references/profiling.md +120 -0
  988. package/src/resources/skills/agent-browser/references/proxy-support.md +194 -0
  989. package/src/resources/skills/agent-browser/references/session-management.md +193 -0
  990. package/src/resources/skills/agent-browser/references/snapshot-refs.md +194 -0
  991. package/src/resources/skills/agent-browser/references/video-recording.md +173 -0
  992. package/src/resources/skills/agent-browser/templates/authenticated-session.sh +105 -0
  993. package/src/resources/skills/agent-browser/templates/capture-workflow.sh +69 -0
  994. package/src/resources/skills/agent-browser/templates/form-automation.sh +62 -0
  995. package/src/resources/skills/best-practices/SKILL.md +583 -0
  996. package/src/resources/skills/code-optimizer/SKILL.md +160 -0
  997. package/src/resources/skills/code-optimizer/references/algorithmic-complexity.md +66 -0
  998. package/src/resources/skills/code-optimizer/references/build-compilation.md +90 -0
  999. package/src/resources/skills/code-optimizer/references/bundle-dependencies.md +82 -0
  1000. package/src/resources/skills/code-optimizer/references/caching-memoization.md +76 -0
  1001. package/src/resources/skills/code-optimizer/references/concurrency-async.md +80 -0
  1002. package/src/resources/skills/code-optimizer/references/config-infra.md +71 -0
  1003. package/src/resources/skills/code-optimizer/references/data-structures.md +80 -0
  1004. package/src/resources/skills/code-optimizer/references/database-queries.md +76 -0
  1005. package/src/resources/skills/code-optimizer/references/dead-code-redundancy.md +84 -0
  1006. package/src/resources/skills/code-optimizer/references/error-resilience.md +80 -0
  1007. package/src/resources/skills/code-optimizer/references/io-network.md +89 -0
  1008. package/src/resources/skills/code-optimizer/references/logging-observability.md +64 -0
  1009. package/src/resources/skills/code-optimizer/references/memory-resources.md +66 -0
  1010. package/src/resources/skills/code-optimizer/references/rendering-ui.md +90 -0
  1011. package/src/resources/skills/code-optimizer/references/security-performance.md +68 -0
  1012. package/src/resources/skills/core-web-vitals/SKILL.md +441 -0
  1013. package/src/resources/skills/core-web-vitals/references/LCP.md +208 -0
  1014. package/src/resources/skills/create-gsd-extension/SKILL.md +87 -0
  1015. package/src/resources/skills/create-gsd-extension/references/compaction-session-control.md +77 -0
  1016. package/src/resources/skills/create-gsd-extension/references/custom-commands.md +139 -0
  1017. package/src/resources/skills/create-gsd-extension/references/custom-rendering.md +108 -0
  1018. package/src/resources/skills/create-gsd-extension/references/custom-tools.md +183 -0
  1019. package/src/resources/skills/create-gsd-extension/references/custom-ui.md +490 -0
  1020. package/src/resources/skills/create-gsd-extension/references/events-reference.md +126 -0
  1021. package/src/resources/skills/create-gsd-extension/references/extension-lifecycle.md +64 -0
  1022. package/src/resources/skills/create-gsd-extension/references/extensionapi-reference.md +75 -0
  1023. package/src/resources/skills/create-gsd-extension/references/extensioncontext-reference.md +53 -0
  1024. package/src/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +36 -0
  1025. package/src/resources/skills/create-gsd-extension/references/mode-behavior.md +32 -0
  1026. package/src/resources/skills/create-gsd-extension/references/model-provider-management.md +89 -0
  1027. package/src/resources/skills/create-gsd-extension/references/packaging-distribution.md +55 -0
  1028. package/src/resources/skills/create-gsd-extension/references/remote-execution-overrides.md +90 -0
  1029. package/src/resources/skills/create-gsd-extension/references/state-management.md +70 -0
  1030. package/src/resources/skills/create-gsd-extension/references/system-prompt-modification.md +52 -0
  1031. package/src/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +51 -0
  1032. package/src/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +143 -0
  1033. package/src/resources/skills/create-gsd-extension/workflows/add-capability.md +57 -0
  1034. package/src/resources/skills/create-gsd-extension/workflows/create-extension.md +156 -0
  1035. package/src/resources/skills/create-gsd-extension/workflows/debug-extension.md +74 -0
  1036. package/src/resources/skills/create-skill/SKILL.md +184 -0
  1037. package/src/resources/skills/create-skill/references/api-security.md +226 -0
  1038. package/src/resources/skills/create-skill/references/be-clear-and-direct.md +531 -0
  1039. package/src/resources/skills/create-skill/references/common-patterns.md +595 -0
  1040. package/src/resources/skills/create-skill/references/core-principles.md +437 -0
  1041. package/src/resources/skills/create-skill/references/executable-code.md +175 -0
  1042. package/src/resources/skills/create-skill/references/gsd-skill-ecosystem.md +68 -0
  1043. package/src/resources/skills/create-skill/references/iteration-and-testing.md +474 -0
  1044. package/src/resources/skills/create-skill/references/recommended-structure.md +168 -0
  1045. package/src/resources/skills/create-skill/references/skill-structure.md +372 -0
  1046. package/src/resources/skills/create-skill/references/use-xml-tags.md +466 -0
  1047. package/src/resources/skills/create-skill/references/using-scripts.md +113 -0
  1048. package/src/resources/skills/create-skill/references/using-templates.md +112 -0
  1049. package/src/resources/skills/create-skill/references/workflows-and-validation.md +510 -0
  1050. package/src/resources/skills/create-skill/templates/router-skill.md +73 -0
  1051. package/src/resources/skills/create-skill/templates/simple-skill.md +33 -0
  1052. package/src/resources/skills/create-skill/workflows/add-reference.md +96 -0
  1053. package/src/resources/skills/create-skill/workflows/add-script.md +93 -0
  1054. package/src/resources/skills/create-skill/workflows/add-template.md +74 -0
  1055. package/src/resources/skills/create-skill/workflows/add-workflow.md +120 -0
  1056. package/src/resources/skills/create-skill/workflows/audit-skill.md +148 -0
  1057. package/src/resources/skills/create-skill/workflows/create-new-skill.md +196 -0
  1058. package/src/resources/skills/create-skill/workflows/get-guidance.md +121 -0
  1059. package/src/resources/skills/create-skill/workflows/upgrade-to-router.md +161 -0
  1060. package/src/resources/skills/create-skill/workflows/verify-skill.md +204 -0
  1061. package/src/resources/skills/make-interfaces-feel-better/SKILL.md +122 -0
  1062. package/src/resources/skills/make-interfaces-feel-better/animations.md +379 -0
  1063. package/src/resources/skills/make-interfaces-feel-better/performance.md +88 -0
  1064. package/src/resources/skills/make-interfaces-feel-better/surfaces.md +247 -0
  1065. package/src/resources/skills/make-interfaces-feel-better/typography.md +123 -0
  1066. package/src/resources/skills/react-best-practices/README.md +123 -0
  1067. package/src/resources/skills/react-best-practices/SKILL.md +136 -0
  1068. package/src/resources/skills/react-best-practices/metadata.json +15 -0
  1069. package/src/resources/skills/react-best-practices/rules/_sections.md +46 -0
  1070. package/src/resources/skills/react-best-practices/rules/_template.md +28 -0
  1071. package/src/resources/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  1072. package/src/resources/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  1073. package/src/resources/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  1074. package/src/resources/skills/react-best-practices/rules/async-api-routes.md +38 -0
  1075. package/src/resources/skills/react-best-practices/rules/async-defer-await.md +80 -0
  1076. package/src/resources/skills/react-best-practices/rules/async-dependencies.md +51 -0
  1077. package/src/resources/skills/react-best-practices/rules/async-parallel.md +28 -0
  1078. package/src/resources/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  1079. package/src/resources/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  1080. package/src/resources/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  1081. package/src/resources/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  1082. package/src/resources/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  1083. package/src/resources/skills/react-best-practices/rules/bundle-preload.md +50 -0
  1084. package/src/resources/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  1085. package/src/resources/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  1086. package/src/resources/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  1087. package/src/resources/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  1088. package/src/resources/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
  1089. package/src/resources/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  1090. package/src/resources/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  1091. package/src/resources/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  1092. package/src/resources/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  1093. package/src/resources/skills/react-best-practices/rules/js-early-exit.md +50 -0
  1094. package/src/resources/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  1095. package/src/resources/skills/react-best-practices/rules/js-index-maps.md +37 -0
  1096. package/src/resources/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  1097. package/src/resources/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  1098. package/src/resources/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  1099. package/src/resources/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  1100. package/src/resources/skills/react-best-practices/rules/rendering-activity.md +26 -0
  1101. package/src/resources/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  1102. package/src/resources/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  1103. package/src/resources/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  1104. package/src/resources/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  1105. package/src/resources/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  1106. package/src/resources/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  1107. package/src/resources/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  1108. package/src/resources/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  1109. package/src/resources/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  1110. package/src/resources/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  1111. package/src/resources/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  1112. package/src/resources/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  1113. package/src/resources/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  1114. package/src/resources/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  1115. package/src/resources/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  1116. package/src/resources/skills/react-best-practices/rules/rerender-memo.md +44 -0
  1117. package/src/resources/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  1118. package/src/resources/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  1119. package/src/resources/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  1120. package/src/resources/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  1121. package/src/resources/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  1122. package/src/resources/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  1123. package/src/resources/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  1124. package/src/resources/skills/react-best-practices/rules/server-cache-react.md +76 -0
  1125. package/src/resources/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  1126. package/src/resources/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  1127. package/src/resources/skills/react-best-practices/rules/server-serialization.md +38 -0
  1128. package/src/resources/skills/userinterface-wiki/SKILL.md +253 -0
  1129. package/src/resources/skills/userinterface-wiki/rules/_sections.md +66 -0
  1130. package/src/resources/skills/userinterface-wiki/rules/_template.md +24 -0
  1131. package/src/resources/skills/userinterface-wiki/rules/a11y-reduced-motion-check.md +30 -0
  1132. package/src/resources/skills/userinterface-wiki/rules/a11y-toggle-setting.md +30 -0
  1133. package/src/resources/skills/userinterface-wiki/rules/a11y-visual-equivalent.md +36 -0
  1134. package/src/resources/skills/userinterface-wiki/rules/a11y-volume-control.md +28 -0
  1135. package/src/resources/skills/userinterface-wiki/rules/appropriate-confirmations-only.md +19 -0
  1136. package/src/resources/skills/userinterface-wiki/rules/appropriate-errors-warnings.md +18 -0
  1137. package/src/resources/skills/userinterface-wiki/rules/appropriate-no-decorative.md +21 -0
  1138. package/src/resources/skills/userinterface-wiki/rules/appropriate-no-high-frequency.md +28 -0
  1139. package/src/resources/skills/userinterface-wiki/rules/appropriate-no-punishing.md +27 -0
  1140. package/src/resources/skills/userinterface-wiki/rules/container-callback-ref.md +31 -0
  1141. package/src/resources/skills/userinterface-wiki/rules/container-guard-initial-zero.md +25 -0
  1142. package/src/resources/skills/userinterface-wiki/rules/container-no-excessive-use.md +13 -0
  1143. package/src/resources/skills/userinterface-wiki/rules/container-overflow-hidden.md +25 -0
  1144. package/src/resources/skills/userinterface-wiki/rules/container-transition-delay.md +21 -0
  1145. package/src/resources/skills/userinterface-wiki/rules/container-two-div-pattern.md +35 -0
  1146. package/src/resources/skills/userinterface-wiki/rules/container-use-resize-observer.md +48 -0
  1147. package/src/resources/skills/userinterface-wiki/rules/context-cleanup-nodes.md +25 -0
  1148. package/src/resources/skills/userinterface-wiki/rules/context-resume-suspended.md +28 -0
  1149. package/src/resources/skills/userinterface-wiki/rules/context-reuse-single.md +30 -0
  1150. package/src/resources/skills/userinterface-wiki/rules/design-filter-for-character.md +25 -0
  1151. package/src/resources/skills/userinterface-wiki/rules/design-noise-for-percussion.md +26 -0
  1152. package/src/resources/skills/userinterface-wiki/rules/design-oscillator-for-tonal.md +22 -0
  1153. package/src/resources/skills/userinterface-wiki/rules/duration-max-300ms.md +21 -0
  1154. package/src/resources/skills/userinterface-wiki/rules/duration-press-hover.md +21 -0
  1155. package/src/resources/skills/userinterface-wiki/rules/duration-shorten-before-curve.md +21 -0
  1156. package/src/resources/skills/userinterface-wiki/rules/duration-small-state.md +15 -0
  1157. package/src/resources/skills/userinterface-wiki/rules/easing-entrance-ease-out.md +21 -0
  1158. package/src/resources/skills/userinterface-wiki/rules/easing-exit-ease-in.md +21 -0
  1159. package/src/resources/skills/userinterface-wiki/rules/easing-for-state-change.md +27 -0
  1160. package/src/resources/skills/userinterface-wiki/rules/easing-linear-only-progress.md +21 -0
  1161. package/src/resources/skills/userinterface-wiki/rules/easing-natural-decay.md +22 -0
  1162. package/src/resources/skills/userinterface-wiki/rules/easing-no-linear-motion.md +22 -0
  1163. package/src/resources/skills/userinterface-wiki/rules/easing-transition-ease-in-out.md +15 -0
  1164. package/src/resources/skills/userinterface-wiki/rules/envelope-exponential-decay.md +21 -0
  1165. package/src/resources/skills/userinterface-wiki/rules/envelope-no-zero-target.md +21 -0
  1166. package/src/resources/skills/userinterface-wiki/rules/envelope-set-initial-value.md +22 -0
  1167. package/src/resources/skills/userinterface-wiki/rules/exit-key-required.md +29 -0
  1168. package/src/resources/skills/userinterface-wiki/rules/exit-matches-initial.md +29 -0
  1169. package/src/resources/skills/userinterface-wiki/rules/exit-prop-required.md +33 -0
  1170. package/src/resources/skills/userinterface-wiki/rules/exit-requires-wrapper.md +27 -0
  1171. package/src/resources/skills/userinterface-wiki/rules/impl-default-subtle.md +21 -0
  1172. package/src/resources/skills/userinterface-wiki/rules/impl-preload-audio.md +34 -0
  1173. package/src/resources/skills/userinterface-wiki/rules/impl-reset-current-time.md +26 -0
  1174. package/src/resources/skills/userinterface-wiki/rules/mode-pop-layout-for-lists.md +25 -0
  1175. package/src/resources/skills/userinterface-wiki/rules/mode-sync-layout-conflict.md +29 -0
  1176. package/src/resources/skills/userinterface-wiki/rules/mode-wait-doubles-duration.md +25 -0
  1177. package/src/resources/skills/userinterface-wiki/rules/morphing-aria-hidden.md +21 -0
  1178. package/src/resources/skills/userinterface-wiki/rules/morphing-consistent-viewbox.md +23 -0
  1179. package/src/resources/skills/userinterface-wiki/rules/morphing-group-variants.md +33 -0
  1180. package/src/resources/skills/userinterface-wiki/rules/morphing-jump-non-grouped.md +29 -0
  1181. package/src/resources/skills/userinterface-wiki/rules/morphing-reduced-motion.md +28 -0
  1182. package/src/resources/skills/userinterface-wiki/rules/morphing-spring-rotation.md +23 -0
  1183. package/src/resources/skills/userinterface-wiki/rules/morphing-strokelinecap-round.md +21 -0
  1184. package/src/resources/skills/userinterface-wiki/rules/morphing-three-lines.md +32 -0
  1185. package/src/resources/skills/userinterface-wiki/rules/morphing-use-collapsed.md +33 -0
  1186. package/src/resources/skills/userinterface-wiki/rules/native-backdrop-styling.md +27 -0
  1187. package/src/resources/skills/userinterface-wiki/rules/native-placeholder-styling.md +27 -0
  1188. package/src/resources/skills/userinterface-wiki/rules/native-selection-styling.md +18 -0
  1189. package/src/resources/skills/userinterface-wiki/rules/nested-consistent-timing.md +25 -0
  1190. package/src/resources/skills/userinterface-wiki/rules/nested-propagate-required.md +41 -0
  1191. package/src/resources/skills/userinterface-wiki/rules/none-context-menu-entrance.md +25 -0
  1192. package/src/resources/skills/userinterface-wiki/rules/none-high-frequency.md +29 -0
  1193. package/src/resources/skills/userinterface-wiki/rules/none-keyboard-navigation.md +32 -0
  1194. package/src/resources/skills/userinterface-wiki/rules/param-click-duration.md +21 -0
  1195. package/src/resources/skills/userinterface-wiki/rules/param-filter-frequency-range.md +21 -0
  1196. package/src/resources/skills/userinterface-wiki/rules/param-q-value-range.md +21 -0
  1197. package/src/resources/skills/userinterface-wiki/rules/param-reasonable-gain.md +21 -0
  1198. package/src/resources/skills/userinterface-wiki/rules/physics-active-state.md +23 -0
  1199. package/src/resources/skills/userinterface-wiki/rules/physics-no-excessive-stagger.md +22 -0
  1200. package/src/resources/skills/userinterface-wiki/rules/physics-spring-for-overshoot.md +23 -0
  1201. package/src/resources/skills/userinterface-wiki/rules/physics-subtle-deformation.md +22 -0
  1202. package/src/resources/skills/userinterface-wiki/rules/prefetch-hit-slop.md +27 -0
  1203. package/src/resources/skills/userinterface-wiki/rules/prefetch-keyboard-tab.md +19 -0
  1204. package/src/resources/skills/userinterface-wiki/rules/prefetch-not-everything.md +22 -0
  1205. package/src/resources/skills/userinterface-wiki/rules/prefetch-touch-fallback.md +34 -0
  1206. package/src/resources/skills/userinterface-wiki/rules/prefetch-trajectory-over-hover.md +32 -0
  1207. package/src/resources/skills/userinterface-wiki/rules/prefetch-use-selectively.md +13 -0
  1208. package/src/resources/skills/userinterface-wiki/rules/presence-disable-interactions.md +31 -0
  1209. package/src/resources/skills/userinterface-wiki/rules/presence-hook-in-child.md +31 -0
  1210. package/src/resources/skills/userinterface-wiki/rules/presence-safe-to-remove.md +37 -0
  1211. package/src/resources/skills/userinterface-wiki/rules/pseudo-content-required.md +28 -0
  1212. package/src/resources/skills/userinterface-wiki/rules/pseudo-first-line-styling.md +27 -0
  1213. package/src/resources/skills/userinterface-wiki/rules/pseudo-hit-target-expansion.md +31 -0
  1214. package/src/resources/skills/userinterface-wiki/rules/pseudo-marker-styling.md +28 -0
  1215. package/src/resources/skills/userinterface-wiki/rules/pseudo-over-dom-node.md +32 -0
  1216. package/src/resources/skills/userinterface-wiki/rules/pseudo-position-relative-parent.md +33 -0
  1217. package/src/resources/skills/userinterface-wiki/rules/pseudo-z-index-layering.md +37 -0
  1218. package/src/resources/skills/userinterface-wiki/rules/spring-for-gestures.md +27 -0
  1219. package/src/resources/skills/userinterface-wiki/rules/spring-for-interruptible.md +27 -0
  1220. package/src/resources/skills/userinterface-wiki/rules/spring-params-balanced.md +29 -0
  1221. package/src/resources/skills/userinterface-wiki/rules/spring-preserves-velocity.md +28 -0
  1222. package/src/resources/skills/userinterface-wiki/rules/staging-dim-background.md +22 -0
  1223. package/src/resources/skills/userinterface-wiki/rules/staging-one-focal-point.md +24 -0
  1224. package/src/resources/skills/userinterface-wiki/rules/staging-z-index-hierarchy.md +22 -0
  1225. package/src/resources/skills/userinterface-wiki/rules/timing-consistent.md +24 -0
  1226. package/src/resources/skills/userinterface-wiki/rules/timing-no-entrance-context-menu.md +22 -0
  1227. package/src/resources/skills/userinterface-wiki/rules/timing-under-300ms.md +22 -0
  1228. package/src/resources/skills/userinterface-wiki/rules/transition-name-cleanup.md +28 -0
  1229. package/src/resources/skills/userinterface-wiki/rules/transition-name-required.md +27 -0
  1230. package/src/resources/skills/userinterface-wiki/rules/transition-name-unique.md +24 -0
  1231. package/src/resources/skills/userinterface-wiki/rules/transition-over-js-library.md +32 -0
  1232. package/src/resources/skills/userinterface-wiki/rules/transition-style-pseudo-elements.md +24 -0
  1233. package/src/resources/skills/userinterface-wiki/rules/type-antialiased-on-retina.md +18 -0
  1234. package/src/resources/skills/userinterface-wiki/rules/type-disambiguation-stylistic-set.md +15 -0
  1235. package/src/resources/skills/userinterface-wiki/rules/type-font-display-swap.md +28 -0
  1236. package/src/resources/skills/userinterface-wiki/rules/type-justify-with-hyphens.md +24 -0
  1237. package/src/resources/skills/userinterface-wiki/rules/type-letter-spacing-uppercase.md +28 -0
  1238. package/src/resources/skills/userinterface-wiki/rules/type-no-font-synthesis.md +18 -0
  1239. package/src/resources/skills/userinterface-wiki/rules/type-oldstyle-nums-for-prose.md +21 -0
  1240. package/src/resources/skills/userinterface-wiki/rules/type-opentype-contextual-alternates.md +15 -0
  1241. package/src/resources/skills/userinterface-wiki/rules/type-optical-sizing-auto.md +25 -0
  1242. package/src/resources/skills/userinterface-wiki/rules/type-proper-fractions.md +15 -0
  1243. package/src/resources/skills/userinterface-wiki/rules/type-slashed-zero.md +17 -0
  1244. package/src/resources/skills/userinterface-wiki/rules/type-tabular-nums-for-data.md +21 -0
  1245. package/src/resources/skills/userinterface-wiki/rules/type-text-wrap-balance-headings.md +21 -0
  1246. package/src/resources/skills/userinterface-wiki/rules/type-text-wrap-pretty.md +16 -0
  1247. package/src/resources/skills/userinterface-wiki/rules/type-underline-offset.md +25 -0
  1248. package/src/resources/skills/userinterface-wiki/rules/type-variable-weight-continuous.md +23 -0
  1249. package/src/resources/skills/userinterface-wiki/rules/ux-aesthetic-usability.md +32 -0
  1250. package/src/resources/skills/userinterface-wiki/rules/ux-cognitive-load-reduce.md +49 -0
  1251. package/src/resources/skills/userinterface-wiki/rules/ux-common-region-boundaries.md +50 -0
  1252. package/src/resources/skills/userinterface-wiki/rules/ux-doherty-perceived-speed.md +29 -0
  1253. package/src/resources/skills/userinterface-wiki/rules/ux-doherty-under-400ms.md +30 -0
  1254. package/src/resources/skills/userinterface-wiki/rules/ux-fitts-hit-area.md +32 -0
  1255. package/src/resources/skills/userinterface-wiki/rules/ux-fitts-target-size.md +31 -0
  1256. package/src/resources/skills/userinterface-wiki/rules/ux-goal-gradient-progress.md +33 -0
  1257. package/src/resources/skills/userinterface-wiki/rules/ux-hicks-minimize-choices.md +45 -0
  1258. package/src/resources/skills/userinterface-wiki/rules/ux-jakobs-familiar-patterns.md +37 -0
  1259. package/src/resources/skills/userinterface-wiki/rules/ux-millers-chunking.md +23 -0
  1260. package/src/resources/skills/userinterface-wiki/rules/ux-pareto-prioritize-features.md +36 -0
  1261. package/src/resources/skills/userinterface-wiki/rules/ux-peak-end-finish-strong.md +35 -0
  1262. package/src/resources/skills/userinterface-wiki/rules/ux-postels-accept-messy-input.md +45 -0
  1263. package/src/resources/skills/userinterface-wiki/rules/ux-pragnanz-simplify.md +33 -0
  1264. package/src/resources/skills/userinterface-wiki/rules/ux-progressive-disclosure.md +41 -0
  1265. package/src/resources/skills/userinterface-wiki/rules/ux-proximity-grouping.md +38 -0
  1266. package/src/resources/skills/userinterface-wiki/rules/ux-serial-position.md +31 -0
  1267. package/src/resources/skills/userinterface-wiki/rules/ux-similarity-consistency.md +35 -0
  1268. package/src/resources/skills/userinterface-wiki/rules/ux-teslers-complexity.md +28 -0
  1269. package/src/resources/skills/userinterface-wiki/rules/ux-uniform-connectedness.md +43 -0
  1270. package/src/resources/skills/userinterface-wiki/rules/ux-von-restorff-emphasis.md +29 -0
  1271. package/src/resources/skills/userinterface-wiki/rules/ux-zeigarnik-show-incomplete.md +36 -0
  1272. package/src/resources/skills/userinterface-wiki/rules/visual-animate-shadow-pseudo.md +49 -0
  1273. package/src/resources/skills/userinterface-wiki/rules/visual-border-alpha-colors.md +25 -0
  1274. package/src/resources/skills/userinterface-wiki/rules/visual-button-shadow-anatomy.md +49 -0
  1275. package/src/resources/skills/userinterface-wiki/rules/visual-concentric-radius.md +40 -0
  1276. package/src/resources/skills/userinterface-wiki/rules/visual-consistent-spacing-scale.md +35 -0
  1277. package/src/resources/skills/userinterface-wiki/rules/visual-layered-shadows.md +30 -0
  1278. package/src/resources/skills/userinterface-wiki/rules/visual-no-pure-black-shadow.md +25 -0
  1279. package/src/resources/skills/userinterface-wiki/rules/visual-shadow-direction.md +25 -0
  1280. package/src/resources/skills/userinterface-wiki/rules/visual-shadow-matches-elevation.md +23 -0
  1281. package/src/resources/skills/userinterface-wiki/rules/weight-duration-matches-action.md +29 -0
  1282. package/src/resources/skills/userinterface-wiki/rules/weight-match-action.md +32 -0
  1283. package/src/resources/skills/web-design-guidelines/SKILL.md +39 -0
  1284. package/src/resources/skills/web-quality-audit/SKILL.md +170 -0
  1285. package/src/resources/skills/web-quality-audit/scripts/analyze.sh +91 -0
  1286. package/dist/resources/extensions/gsd/complexity.ts +0 -237
  1287. package/dist/resources/extensions/gsd/github-client.ts +0 -235
  1288. package/dist/resources/extensions/gsd/tests/activity-log-prune.test.ts +0 -297
  1289. package/dist/resources/extensions/gsd/tests/activity-log-save.test.ts +0 -127
  1290. package/dist/resources/extensions/gsd/tests/agent-end-provider-error.test.ts +0 -110
  1291. package/dist/resources/extensions/gsd/tests/auto-draft-pause.test.ts +0 -115
  1292. package/dist/resources/extensions/gsd/tests/complexity-routing.test.ts +0 -294
  1293. package/dist/resources/extensions/gsd/tests/metrics-io.test.ts +0 -176
  1294. package/dist/resources/extensions/gsd/tests/network-error-fallback.test.ts +0 -104
  1295. package/dist/resources/extensions/gsd/tests/preferences-git.test.ts +0 -120
  1296. package/dist/resources/extensions/gsd/tests/preferences-hooks.test.ts +0 -226
  1297. package/dist/resources/extensions/gsd/tests/preferences-mode.test.ts +0 -110
  1298. package/dist/resources/extensions/gsd/tests/preferences-models.test.ts +0 -207
  1299. package/dist/resources/extensions/gsd/tests/preferences-schema-validation.test.ts +0 -183
  1300. package/dist/resources/extensions/gsd/tests/preferences-wizard-fields.test.ts +0 -168
  1301. package/dist/resources/extensions/mcporter/index.ts +0 -512
  1302. package/dist/resources/extensions/shared/progress-widget.ts +0 -282
  1303. package/dist/resources/extensions/shared/thinking-widget.ts +0 -107
  1304. package/src/resources/extensions/gsd/complexity.ts +0 -237
  1305. package/src/resources/extensions/gsd/github-client.ts +0 -235
  1306. package/src/resources/extensions/gsd/tests/activity-log-prune.test.ts +0 -297
  1307. package/src/resources/extensions/gsd/tests/activity-log-save.test.ts +0 -127
  1308. package/src/resources/extensions/gsd/tests/agent-end-provider-error.test.ts +0 -110
  1309. package/src/resources/extensions/gsd/tests/auto-draft-pause.test.ts +0 -115
  1310. package/src/resources/extensions/gsd/tests/complexity-routing.test.ts +0 -294
  1311. package/src/resources/extensions/gsd/tests/metrics-io.test.ts +0 -176
  1312. package/src/resources/extensions/gsd/tests/network-error-fallback.test.ts +0 -104
  1313. package/src/resources/extensions/gsd/tests/preferences-git.test.ts +0 -120
  1314. package/src/resources/extensions/gsd/tests/preferences-hooks.test.ts +0 -226
  1315. package/src/resources/extensions/gsd/tests/preferences-mode.test.ts +0 -110
  1316. package/src/resources/extensions/gsd/tests/preferences-models.test.ts +0 -207
  1317. package/src/resources/extensions/gsd/tests/preferences-schema-validation.test.ts +0 -183
  1318. package/src/resources/extensions/gsd/tests/preferences-wizard-fields.test.ts +0 -168
  1319. package/src/resources/extensions/mcporter/index.ts +0 -512
  1320. package/src/resources/extensions/shared/progress-widget.ts +0 -282
  1321. package/src/resources/extensions/shared/thinking-widget.ts +0 -107
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: Per-Request Deduplication with React.cache()
3
+ impact: MEDIUM
4
+ impactDescription: deduplicates within request
5
+ tags: server, cache, react-cache, deduplication
6
+ ---
7
+
8
+ ## Per-Request Deduplication with React.cache()
9
+
10
+ Use `React.cache()` for server-side request deduplication. Authentication and database queries benefit most.
11
+
12
+ **Usage:**
13
+
14
+ ```typescript
15
+ import { cache } from 'react'
16
+
17
+ export const getCurrentUser = cache(async () => {
18
+ const session = await auth()
19
+ if (!session?.user?.id) return null
20
+ return await db.user.findUnique({
21
+ where: { id: session.user.id }
22
+ })
23
+ })
24
+ ```
25
+
26
+ Within a single request, multiple calls to `getCurrentUser()` execute the query only once.
27
+
28
+ **Avoid inline objects as arguments:**
29
+
30
+ `React.cache()` uses shallow equality (`Object.is`) to determine cache hits. Inline objects create new references each call, preventing cache hits.
31
+
32
+ **Incorrect (always cache miss):**
33
+
34
+ ```typescript
35
+ const getUser = cache(async (params: { uid: number }) => {
36
+ return await db.user.findUnique({ where: { id: params.uid } })
37
+ })
38
+
39
+ // Each call creates new object, never hits cache
40
+ getUser({ uid: 1 })
41
+ getUser({ uid: 1 }) // Cache miss, runs query again
42
+ ```
43
+
44
+ **Correct (cache hit):**
45
+
46
+ ```typescript
47
+ const getUser = cache(async (uid: number) => {
48
+ return await db.user.findUnique({ where: { id: uid } })
49
+ })
50
+
51
+ // Primitive args use value equality
52
+ getUser(1)
53
+ getUser(1) // Cache hit, returns cached result
54
+ ```
55
+
56
+ If you must pass objects, pass the same reference:
57
+
58
+ ```typescript
59
+ const params = { uid: 1 }
60
+ getUser(params) // Query runs
61
+ getUser(params) // Cache hit (same reference)
62
+ ```
63
+
64
+ **Next.js-Specific Note:**
65
+
66
+ In Next.js, the `fetch` API is automatically extended with request memoization. Requests with the same URL and options are automatically deduplicated within a single request, so you don't need `React.cache()` for `fetch` calls. However, `React.cache()` is still essential for other async tasks:
67
+
68
+ - Database queries (Prisma, Drizzle, etc.)
69
+ - Heavy computations
70
+ - Authentication checks
71
+ - File system operations
72
+ - Any non-fetch async work
73
+
74
+ Use `React.cache()` to deduplicate these operations across your component tree.
75
+
76
+ Reference: [React.cache documentation](https://react.dev/reference/react/cache)
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: Avoid Duplicate Serialization in RSC Props
3
+ impact: LOW
4
+ impactDescription: reduces network payload by avoiding duplicate serialization
5
+ tags: server, rsc, serialization, props, client-components
6
+ ---
7
+
8
+ ## Avoid Duplicate Serialization in RSC Props
9
+
10
+ **Impact: LOW (reduces network payload by avoiding duplicate serialization)**
11
+
12
+ RSC→client serialization deduplicates by object reference, not value. Same reference = serialized once; new reference = serialized again. Do transformations (`.toSorted()`, `.filter()`, `.map()`) in client, not server.
13
+
14
+ **Incorrect (duplicates array):**
15
+
16
+ ```tsx
17
+ // RSC: sends 6 strings (2 arrays × 3 items)
18
+ <ClientList usernames={usernames} usernamesOrdered={usernames.toSorted()} />
19
+ ```
20
+
21
+ **Correct (sends 3 strings):**
22
+
23
+ ```tsx
24
+ // RSC: send once
25
+ <ClientList usernames={usernames} />
26
+
27
+ // Client: transform there
28
+ 'use client'
29
+ const sorted = useMemo(() => [...usernames].sort(), [usernames])
30
+ ```
31
+
32
+ **Nested deduplication behavior:**
33
+
34
+ Deduplication works recursively. Impact varies by data type:
35
+
36
+ - `string[]`, `number[]`, `boolean[]`: **HIGH impact** - array + all primitives fully duplicated
37
+ - `object[]`: **LOW impact** - array duplicated, but nested objects deduplicated by reference
38
+
39
+ ```tsx
40
+ // string[] - duplicates everything
41
+ usernames={['a','b']} sorted={usernames.toSorted()} // sends 4 strings
42
+
43
+ // object[] - duplicates array structure only
44
+ users={[{id:1},{id:2}]} sorted={users.toSorted()} // sends 2 arrays + 2 unique objects (not 4)
45
+ ```
46
+
47
+ **Operations breaking deduplication (create new references):**
48
+
49
+ - Arrays: `.toSorted()`, `.filter()`, `.map()`, `.slice()`, `[...arr]`
50
+ - Objects: `{...obj}`, `Object.assign()`, `structuredClone()`, `JSON.parse(JSON.stringify())`
51
+
52
+ **More examples:**
53
+
54
+ ```tsx
55
+ // ❌ Bad
56
+ <C users={users} active={users.filter(u => u.active)} />
57
+ <C product={product} productName={product.name} />
58
+
59
+ // ✅ Good
60
+ <C users={users} />
61
+ <C product={product} />
62
+ // Do filtering/destructuring in client
63
+ ```
64
+
65
+ **Exception:** Pass derived data when transformation is expensive or client doesn't need original.
@@ -0,0 +1,83 @@
1
+ ---
2
+ title: Parallel Data Fetching with Component Composition
3
+ impact: CRITICAL
4
+ impactDescription: eliminates server-side waterfalls
5
+ tags: server, rsc, parallel-fetching, composition
6
+ ---
7
+
8
+ ## Parallel Data Fetching with Component Composition
9
+
10
+ React Server Components execute sequentially within a tree. Restructure with composition to parallelize data fetching.
11
+
12
+ **Incorrect (Sidebar waits for Page's fetch to complete):**
13
+
14
+ ```tsx
15
+ export default async function Page() {
16
+ const header = await fetchHeader()
17
+ return (
18
+ <div>
19
+ <div>{header}</div>
20
+ <Sidebar />
21
+ </div>
22
+ )
23
+ }
24
+
25
+ async function Sidebar() {
26
+ const items = await fetchSidebarItems()
27
+ return <nav>{items.map(renderItem)}</nav>
28
+ }
29
+ ```
30
+
31
+ **Correct (both fetch simultaneously):**
32
+
33
+ ```tsx
34
+ async function Header() {
35
+ const data = await fetchHeader()
36
+ return <div>{data}</div>
37
+ }
38
+
39
+ async function Sidebar() {
40
+ const items = await fetchSidebarItems()
41
+ return <nav>{items.map(renderItem)}</nav>
42
+ }
43
+
44
+ export default function Page() {
45
+ return (
46
+ <div>
47
+ <Header />
48
+ <Sidebar />
49
+ </div>
50
+ )
51
+ }
52
+ ```
53
+
54
+ **Alternative with children prop:**
55
+
56
+ ```tsx
57
+ async function Header() {
58
+ const data = await fetchHeader()
59
+ return <div>{data}</div>
60
+ }
61
+
62
+ async function Sidebar() {
63
+ const items = await fetchSidebarItems()
64
+ return <nav>{items.map(renderItem)}</nav>
65
+ }
66
+
67
+ function Layout({ children }: { children: ReactNode }) {
68
+ return (
69
+ <div>
70
+ <Header />
71
+ {children}
72
+ </div>
73
+ )
74
+ }
75
+
76
+ export default function Page() {
77
+ return (
78
+ <Layout>
79
+ <Sidebar />
80
+ </Layout>
81
+ )
82
+ }
83
+ ```
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: Minimize Serialization at RSC Boundaries
3
+ impact: HIGH
4
+ impactDescription: reduces data transfer size
5
+ tags: server, rsc, serialization, props
6
+ ---
7
+
8
+ ## Minimize Serialization at RSC Boundaries
9
+
10
+ The React Server/Client boundary serializes all object properties into strings and embeds them in the HTML response and subsequent RSC requests. This serialized data directly impacts page weight and load time, so **size matters a lot**. Only pass fields that the client actually uses.
11
+
12
+ **Incorrect (serializes all 50 fields):**
13
+
14
+ ```tsx
15
+ async function Page() {
16
+ const user = await fetchUser() // 50 fields
17
+ return <Profile user={user} />
18
+ }
19
+
20
+ 'use client'
21
+ function Profile({ user }: { user: User }) {
22
+ return <div>{user.name}</div> // uses 1 field
23
+ }
24
+ ```
25
+
26
+ **Correct (serializes only 1 field):**
27
+
28
+ ```tsx
29
+ async function Page() {
30
+ const user = await fetchUser()
31
+ return <Profile name={user.name} />
32
+ }
33
+
34
+ 'use client'
35
+ function Profile({ name }: { name: string }) {
36
+ return <div>{name}</div>
37
+ }
38
+ ```
@@ -0,0 +1,253 @@
1
+ ---
2
+ name: userinterface-wiki
3
+ description: UI/UX best practices for web interfaces. Use when reviewing animations, CSS, audio, typography, UX patterns, prefetching, or icon implementations. Covers 11 categories from animation principles to typography. Outputs file:line findings.
4
+ license: MIT
5
+ metadata:
6
+ author: raphael-salaja
7
+ version: "3.0.0"
8
+ ---
9
+
10
+ # User Interface Wiki
11
+
12
+ Comprehensive UI/UX best practices guide for web interfaces. Contains 152 rules across 12 categories, prioritized by impact to guide automated code review and generation.
13
+
14
+ ## When to Apply
15
+
16
+ Reference these guidelines when:
17
+ - Implementing or reviewing animations (CSS transitions, Motion/Framer Motion)
18
+ - Choosing between springs, easing curves, or no animation
19
+ - Working with AnimatePresence and exit animations
20
+ - Writing CSS with pseudo-elements or View Transitions API
21
+ - Adding audio feedback or procedural sound to UI
22
+ - Building morphing icon components
23
+ - Animating container width/height with dynamic content
24
+ - Designing UI that respects cognitive psychology (Fitts's, Hick's, Miller's laws)
25
+ - Implementing predictive prefetching for perceived performance
26
+ - Setting up typography, OpenType features, or numeric formatting
27
+
28
+ ## Rule Categories by Priority
29
+
30
+ | Priority | Category | Impact | Prefixes |
31
+ |----------|----------|--------|----------|
32
+ | 1 | Animation Principles | CRITICAL | `timing-`, `physics-`, `staging-` |
33
+ | 2 | Timing Functions | HIGH | `spring-`, `easing-`, `duration-`, `none-` |
34
+ | 3 | Exit Animations | HIGH | `exit-`, `presence-`, `mode-`, `nested-` |
35
+ | 4 | CSS Pseudo Elements | MEDIUM | `pseudo-`, `transition-`, `native-` |
36
+ | 5 | Audio Feedback | MEDIUM | `a11y-`, `appropriate-`, `impl-`, `weight-` |
37
+ | 6 | Sound Synthesis | MEDIUM | `context-`, `envelope-`, `design-`, `param-` |
38
+ | 7 | Morphing Icons | LOW | `morphing-` |
39
+ | 8 | Container Animation | MEDIUM | `container-` |
40
+ | 9 | Laws of UX | HIGH | `ux-` |
41
+ | 10 | Predictive Prefetching | MEDIUM | `prefetch-` |
42
+ | 11 | Typography | MEDIUM | `type-` |
43
+ | 12 | Visual Design | HIGH | `visual-` |
44
+
45
+ ## Quick Reference
46
+
47
+ ### 1. Animation Principles (CRITICAL)
48
+
49
+ - `timing-under-300ms` - User animations must complete within 300ms
50
+ - `timing-consistent` - Similar elements use identical timing values
51
+ - `timing-no-entrance-context-menu` - Context menus: no entrance animation, exit only
52
+ - `easing-natural-decay` - Use exponential ramps for natural decay, not linear
53
+ - `easing-no-linear-motion` - Linear easing only for progress indicators
54
+ - `physics-active-state` - Interactive elements need :active scale transform
55
+ - `physics-subtle-deformation` - Squash/stretch in 0.95-1.05 range
56
+ - `physics-spring-for-overshoot` - Springs for overshoot-and-settle, not easing
57
+ - `physics-no-excessive-stagger` - Stagger delays under 50ms per item
58
+ - `staging-one-focal-point` - One prominent animation at a time
59
+ - `staging-dim-background` - Dim modal/dialog backgrounds
60
+ - `staging-z-index-hierarchy` - Animated elements respect z-index layers
61
+
62
+ ### 2. Timing Functions (HIGH)
63
+
64
+ - `spring-for-gestures` - Gesture-driven motion (drag, flick) must use springs
65
+ - `spring-for-interruptible` - Interruptible motion must use springs
66
+ - `spring-preserves-velocity` - Springs preserve input energy on release
67
+ - `spring-params-balanced` - Avoid excessive oscillation in spring params
68
+ - `easing-for-state-change` - System state changes use easing curves
69
+ - `easing-entrance-ease-out` - Entrances use ease-out
70
+ - `easing-exit-ease-in` - Exits use ease-in
71
+ - `easing-transition-ease-in-out` - View transitions use ease-in-out
72
+ - `easing-linear-only-progress` - Linear only for progress/time representation
73
+ - `duration-press-hover` - Press/hover: 120-180ms
74
+ - `duration-small-state` - Small state changes: 180-260ms
75
+ - `duration-max-300ms` - User-initiated max 300ms
76
+ - `duration-shorten-before-curve` - Fix slow feel with shorter duration, not curve
77
+ - `none-high-frequency` - No animation for high-frequency interactions
78
+ - `none-keyboard-navigation` - Keyboard navigation instant, no animation
79
+ - `none-context-menu-entrance` - Context menus: no entrance, exit only
80
+
81
+ ### 3. Exit Animations (HIGH)
82
+
83
+ - `exit-requires-wrapper` - Conditional motion elements need AnimatePresence wrapper
84
+ - `exit-prop-required` - Elements in AnimatePresence need exit prop
85
+ - `exit-key-required` - Dynamic lists need unique keys, not index
86
+ - `exit-matches-initial` - Exit mirrors initial for symmetry
87
+ - `presence-hook-in-child` - useIsPresent in child, not parent
88
+ - `presence-safe-to-remove` - Call safeToRemove after async cleanup
89
+ - `presence-disable-interactions` - Disable interactions on exiting elements
90
+ - `mode-wait-doubles-duration` - Mode "wait" doubles duration; halve timing
91
+ - `mode-sync-layout-conflict` - Mode "sync" causes layout conflicts
92
+ - `mode-pop-layout-for-lists` - Use popLayout for list reordering
93
+ - `nested-propagate-required` - Nested AnimatePresence needs propagate prop
94
+ - `nested-consistent-timing` - Coordinate parent-child exit durations
95
+
96
+ ### 4. CSS Pseudo Elements (MEDIUM)
97
+
98
+ - `pseudo-content-required` - ::before/::after need content property
99
+ - `pseudo-over-dom-node` - Pseudo-elements over extra DOM nodes for decoration
100
+ - `pseudo-position-relative-parent` - Parent needs position: relative
101
+ - `pseudo-z-index-layering` - Z-index for correct pseudo-element layering
102
+ - `pseudo-hit-target-expansion` - Negative inset for larger hit targets
103
+ - `pseudo-marker-styling` - Use ::marker for custom list bullet styles
104
+ - `pseudo-first-line-styling` - Use ::first-line for typographic treatments
105
+ - `transition-name-required` - View transitions need view-transition-name
106
+ - `transition-name-unique` - Each transition name unique during transition
107
+ - `transition-name-cleanup` - Remove transition name after completion
108
+ - `transition-over-js-library` - Prefer View Transitions API over JS libraries
109
+ - `transition-style-pseudo-elements` - Style ::view-transition-group for custom animations
110
+ - `native-backdrop-styling` - Use ::backdrop for dialog backgrounds
111
+ - `native-placeholder-styling` - Use ::placeholder for input styling
112
+ - `native-selection-styling` - Use ::selection for text selection styling
113
+
114
+ ### 5. Audio Feedback (MEDIUM)
115
+
116
+ - `a11y-visual-equivalent` - Every sound must have a visual equivalent
117
+ - `a11y-toggle-setting` - Provide toggle to disable sounds
118
+ - `a11y-reduced-motion-check` - Respect prefers-reduced-motion for sound
119
+ - `a11y-volume-control` - Allow independent volume adjustment
120
+ - `appropriate-no-high-frequency` - No sound on typing or keyboard nav
121
+ - `appropriate-confirmations-only` - Sound for payments, uploads, submissions
122
+ - `appropriate-errors-warnings` - Sound for errors that can't be overlooked
123
+ - `appropriate-no-decorative` - No sound on hover or decorative moments
124
+ - `appropriate-no-punishing` - Inform, don't punish with harsh sounds
125
+ - `impl-preload-audio` - Preload audio files to avoid delay
126
+ - `impl-default-subtle` - Default volume subtle (0.3), not loud
127
+ - `impl-reset-current-time` - Reset currentTime before replay
128
+ - `weight-match-action` - Sound weight matches action importance
129
+ - `weight-duration-matches-action` - Sound duration matches action duration
130
+
131
+ ### 6. Sound Synthesis (MEDIUM)
132
+
133
+ - `context-reuse-single` - Reuse single AudioContext, don't create per sound
134
+ - `context-resume-suspended` - Resume suspended AudioContext before playing
135
+ - `context-cleanup-nodes` - Disconnect audio nodes after playback
136
+ - `envelope-exponential-decay` - Exponential ramps for natural decay
137
+ - `envelope-no-zero-target` - Exponential ramps target 0.001, not 0
138
+ - `envelope-set-initial-value` - Set initial value before ramping
139
+ - `design-noise-for-percussion` - Filtered noise for clicks/taps
140
+ - `design-oscillator-for-tonal` - Oscillators with pitch sweep for tonal sounds
141
+ - `design-filter-for-character` - Bandpass filter to shape percussive sounds
142
+ - `param-click-duration` - Click sounds: 5-15ms duration
143
+ - `param-filter-frequency-range` - Click filter: 3000-6000Hz
144
+ - `param-reasonable-gain` - Gain under 1.0 to prevent clipping
145
+ - `param-q-value-range` - Filter Q: 2-5 for focused but natural
146
+
147
+ ### 7. Morphing Icons (LOW)
148
+
149
+ - `morphing-three-lines` - Every icon uses exactly 3 SVG lines
150
+ - `morphing-use-collapsed` - Unused lines use collapsed constant
151
+ - `morphing-consistent-viewbox` - All icons share same viewBox (14x14)
152
+ - `morphing-group-variants` - Rotational variants share group and base lines
153
+ - `morphing-spring-rotation` - Spring physics for grouped icon rotation
154
+ - `morphing-reduced-motion` - Respect prefers-reduced-motion
155
+ - `morphing-jump-non-grouped` - Instant rotation jump between non-grouped icons
156
+ - `morphing-strokelinecap-round` - Round stroke line caps
157
+ - `morphing-aria-hidden` - Icon SVGs are aria-hidden
158
+
159
+ ### 8. Container Animation (MEDIUM)
160
+
161
+ - `container-two-div-pattern` - Outer animated div, inner measured div; never same element
162
+ - `container-guard-initial-zero` - Guard bounds === 0 on initial render, fall back to "auto"
163
+ - `container-use-resize-observer` - Use ResizeObserver for measurement, not getBoundingClientRect
164
+ - `container-overflow-hidden` - Set overflow: hidden on animated container during transitions
165
+ - `container-no-excessive-use` - Use sparingly: buttons, accordions, interactive elements
166
+ - `container-callback-ref` - Use callback ref (not useRef) for measurement hooks
167
+ - `container-transition-delay` - Add small delay for natural catching-up feel
168
+
169
+ ### 9. Laws of UX (HIGH)
170
+
171
+ - `ux-fitts-target-size` - Size interactive targets for easy clicking (min 32px)
172
+ - `ux-fitts-hit-area` - Expand hit areas with invisible padding or pseudo-elements
173
+ - `ux-hicks-minimize-choices` - Minimize choices to reduce decision time
174
+ - `ux-millers-chunking` - Chunk data into groups of 5-9 for scannability
175
+ - `ux-doherty-under-400ms` - Respond within 400ms to feel instant
176
+ - `ux-doherty-perceived-speed` - Fake speed with skeletons, optimistic UI, progress indicators
177
+ - `ux-postels-accept-messy-input` - Accept messy input, output clean data
178
+ - `ux-progressive-disclosure` - Show what matters now, reveal complexity later
179
+ - `ux-jakobs-familiar-patterns` - Use familiar UI patterns users know from other sites
180
+ - `ux-aesthetic-usability` - Visual polish increases perceived usability
181
+ - `ux-proximity-grouping` - Group related elements spatially with tighter spacing
182
+ - `ux-similarity-consistency` - Similar elements should look alike
183
+ - `ux-common-region-boundaries` - Use boundaries to group related content
184
+ - `ux-von-restorff-emphasis` - Make important elements visually distinct
185
+ - `ux-serial-position` - Place key items first or last in sequences
186
+ - `ux-peak-end-finish-strong` - End experiences with clear success states
187
+ - `ux-teslers-complexity` - Move complexity to the system, not the user
188
+ - `ux-goal-gradient-progress` - Show progress toward completion
189
+ - `ux-zeigarnik-show-incomplete` - Show incomplete state to drive completion
190
+ - `ux-pragnanz-simplify` - Simplify complex visuals into clear forms
191
+ - `ux-pareto-prioritize-features` - Prioritize the critical 20% of features
192
+ - `ux-cognitive-load-reduce` - Minimize extraneous cognitive load
193
+ - `ux-uniform-connectedness` - Visually connect related elements with lines or frames
194
+
195
+ ### 10. Predictive Prefetching (MEDIUM)
196
+
197
+ - `prefetch-trajectory-over-hover` - Trajectory prediction over hover; reclaims 100-200ms
198
+ - `prefetch-not-everything` - Prefetch by intent, not viewport; avoid wasted bandwidth
199
+ - `prefetch-hit-slop` - Use hitSlop to trigger predictions earlier
200
+ - `prefetch-touch-fallback` - Fall back gracefully on touch devices (no cursor)
201
+ - `prefetch-keyboard-tab` - Prefetch on keyboard navigation when focus approaches
202
+ - `prefetch-use-selectively` - Use predictive prefetching where latency is noticeable
203
+
204
+ ### 11. Typography (MEDIUM)
205
+
206
+ - `type-tabular-nums-for-data` - Tabular numbers for columns, dashboards, pricing
207
+ - `type-oldstyle-nums-for-prose` - Oldstyle numbers blend into body text
208
+ - `type-slashed-zero` - Slashed zero in code-adjacent UIs
209
+ - `type-opentype-contextual-alternates` - Keep calt enabled for contextual glyph adjustment
210
+ - `type-disambiguation-stylistic-set` - Enable ss02 to distinguish I/l/1 and 0/O
211
+ - `type-optical-sizing-auto` - Leave font-optical-sizing auto for size-adaptive glyphs
212
+ - `type-antialiased-on-retina` - Antialiased font smoothing on retina displays
213
+ - `type-text-wrap-balance-headings` - text-wrap: balance on headings for even lines
214
+ - `type-underline-offset` - Offset underlines below descenders
215
+ - `type-no-font-synthesis` - Disable font-synthesis to prevent faux bold/italic
216
+ - `type-font-display-swap` - Use font-display: swap to avoid invisible text during load
217
+ - `type-variable-weight-continuous` - Use continuous weight values (100-900) with variable fonts
218
+ - `type-text-wrap-pretty` - text-wrap: pretty for body text to reduce orphans
219
+ - `type-justify-with-hyphens` - Pair text-align: justify with hyphens: auto
220
+ - `type-letter-spacing-uppercase` - Add letter-spacing to uppercase and small-caps text
221
+ - `type-proper-fractions` - Use diagonal-fractions for proper typographic fractions
222
+
223
+ ### 12. Visual Design (HIGH)
224
+
225
+ - `visual-concentric-radius` - Inner radius = outer radius minus padding for nested elements
226
+ - `visual-layered-shadows` - Layer multiple shadows for realistic depth
227
+ - `visual-shadow-direction` - All shadows share same offset direction (single light source)
228
+ - `visual-no-pure-black-shadow` - Use neutral colors, not pure black, for shadows
229
+ - `visual-shadow-matches-elevation` - Shadow size indicates elevation in consistent scale
230
+ - `visual-animate-shadow-pseudo` - Animate shadow via pseudo-element opacity for performance
231
+ - `visual-consistent-spacing-scale` - Use a consistent spacing scale, not arbitrary values
232
+ - `visual-border-alpha-colors` - Semi-transparent borders adapt to any background
233
+ - `visual-button-shadow-anatomy` - Six-layer shadow anatomy for polished buttons
234
+
235
+ ## How to Use
236
+
237
+ Read individual rule files for detailed explanations and code examples:
238
+
239
+ ```
240
+ rules/timing-under-300ms.md
241
+ rules/spring-for-gestures.md
242
+ rules/ux-doherty-under-400ms.md
243
+ rules/type-tabular-nums-for-data.md
244
+ ```
245
+
246
+ Each rule file contains:
247
+ - Brief explanation of why it matters
248
+ - Incorrect code example with explanation
249
+ - Correct code example with explanation
250
+
251
+ ## Full Compiled Document
252
+
253
+ For the complete guide with all rules expanded: `AGENTS.md`
@@ -0,0 +1,66 @@
1
+ # Sections
2
+
3
+ This file defines all sections, their ordering, impact levels, and descriptions.
4
+ The section ID (in parentheses) is the filename prefix used to group rules.
5
+
6
+ ---
7
+
8
+ ## 1. Animation Principles (timing, physics, staging)
9
+
10
+ **Impact:** CRITICAL
11
+ **Description:** Disney's 12 principles adapted for web. Timing, physics, and staging rules ensure animations feel natural and purposeful. Violations here produce the most noticeable quality issues.
12
+
13
+ ## 2. Timing Functions (spring, easing, duration, none)
14
+
15
+ **Impact:** HIGH
16
+ **Description:** Choosing the right timing function—spring, easing curve, or no animation—based on whether motion is user-driven, system-driven, or high-frequency.
17
+
18
+ ## 3. Exit Animations (exit, presence, mode, nested)
19
+
20
+ **Impact:** HIGH
21
+ **Description:** AnimatePresence and exit animation patterns in Motion/Framer Motion. Correct usage prevents layout shifts, stale interactions, and orphaned elements.
22
+
23
+ ## 4. CSS Pseudo Elements (pseudo, transition, native)
24
+
25
+ **Impact:** MEDIUM
26
+ **Description:** Leveraging ::before, ::after, View Transitions API, and native pseudo-elements (::backdrop, ::placeholder, ::selection) to reduce DOM nodes and improve transitions.
27
+
28
+ ## 5. Audio Feedback (a11y, appropriate, impl, weight)
29
+
30
+ **Impact:** MEDIUM
31
+ **Description:** When and how to use sound in UI. Covers accessibility, appropriateness heuristics, implementation patterns, and matching sound weight to action importance.
32
+
33
+ ## 6. Sound Synthesis (context, envelope, design, param)
34
+
35
+ **Impact:** MEDIUM
36
+ **Description:** Web Audio API best practices for procedural sound generation. Covers AudioContext management, envelope shaping, sound design patterns, and parameter ranges.
37
+
38
+ ## 7. Morphing Icons (morphing)
39
+
40
+ **Impact:** LOW
41
+ **Description:** Building icon components that morph between any two icons through SVG line transformation. All icons share a 3-line structure enabling seamless transitions.
42
+
43
+ ## 8. Container Animation (container)
44
+
45
+ **Impact:** MEDIUM
46
+ **Description:** Animating container width and height using a measure-and-animate pattern with ResizeObserver and Motion. The two-div pattern separates measurement from animation to avoid feedback loops.
47
+
48
+ ## 9. Laws of UX (ux)
49
+
50
+ **Impact:** HIGH
51
+ **Description:** Psychological principles behind interfaces that feel right. Covers Fitts's Law (target sizing), Hick's Law (choice reduction), Miller's Law (chunking), Doherty Threshold (response time), and Postel's Law (input tolerance).
52
+
53
+ ## 10. Predictive Prefetching (prefetch)
54
+
55
+ **Impact:** MEDIUM
56
+ **Description:** Loading content before the user clicks by analyzing cursor trajectory, reducing perceived latency by 100-200ms. Covers trajectory vs hover vs click strategies and device-aware fallbacks.
57
+
58
+ ## 11. Typography (type)
59
+
60
+ **Impact:** MEDIUM
61
+ **Description:** CSS font and text properties most developers overlook. OpenType features, numeric variants, variable font axes, text rendering, wrapping, and decoration controls that make typography feel considered.
62
+
63
+ ## 12. Visual Design (visual)
64
+
65
+ **Impact:** HIGH
66
+ **Description:** CSS design fundamentals that compound into visual polish. Concentric border radius, layered shadows, consistent spacing scales, and alpha borders. Small details that separate considered interfaces from default ones.
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: Rule Title Here
3
+ impact: MEDIUM
4
+ impactDescription: Optional description of impact
5
+ tags: tag1, tag2
6
+ ---
7
+
8
+ ## Rule Title Here
9
+
10
+ Brief explanation of the rule and why it matters.
11
+
12
+ **Incorrect (description of what's wrong):**
13
+
14
+ ```tsx
15
+ // Bad code example here
16
+ ```
17
+
18
+ **Correct (description of what's right):**
19
+
20
+ ```tsx
21
+ // Good code example here
22
+ ```
23
+
24
+ Reference: [Link to documentation or resource](https://example.com)
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: Respect prefers-reduced-motion for Sound
3
+ impact: HIGH
4
+ tags: a11y, reduced-motion, sound
5
+ ---
6
+
7
+ ## Respect prefers-reduced-motion for Sound
8
+
9
+ Respect prefers-reduced-motion as proxy for sound sensitivity.
10
+
11
+ **Incorrect (ignores preference):**
12
+
13
+ ```tsx
14
+ function playSound(name: string) {
15
+ audio.play();
16
+ }
17
+ ```
18
+
19
+ **Correct (checks preference):**
20
+
21
+ ```tsx
22
+ function playSound(name: string) {
23
+ const prefersReducedMotion = window.matchMedia(
24
+ "(prefers-reduced-motion: reduce)"
25
+ ).matches;
26
+
27
+ if (prefersReducedMotion) return;
28
+ audio.play();
29
+ }
30
+ ```
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: Toggle Setting to Disable Sounds
3
+ impact: HIGH
4
+ tags: a11y, settings, toggle
5
+ ---
6
+
7
+ ## Toggle Setting to Disable Sounds
8
+
9
+ Provide explicit toggle to disable sounds in settings.
10
+
11
+ **Incorrect (no way to disable):**
12
+
13
+ ```tsx
14
+ function App() {
15
+ return <SoundProvider>{children}</SoundProvider>;
16
+ }
17
+ ```
18
+
19
+ **Correct (toggle available):**
20
+
21
+ ```tsx
22
+ function App() {
23
+ const { soundEnabled } = usePreferences();
24
+ return (
25
+ <SoundProvider enabled={soundEnabled}>
26
+ {children}
27
+ </SoundProvider>
28
+ );
29
+ }
30
+ ```