@hegemonart/get-design-done 1.41.5 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +1120 -1029
  4. package/README.md +158 -154
  5. package/SKILL.md +42 -42
  6. package/agents/README.md +53 -53
  7. package/agents/a11y-mapper.md +3 -3
  8. package/agents/component-benchmark-harvester.md +8 -8
  9. package/agents/component-benchmark-synthesizer.md +11 -11
  10. package/agents/component-taxonomy-mapper.md +5 -5
  11. package/agents/compose-executor.md +25 -25
  12. package/agents/conflict-resolver.md +8 -8
  13. package/agents/cost-forecaster.md +12 -12
  14. package/agents/decision-journal-exporter.md +5 -5
  15. package/agents/design-advisor.md +19 -19
  16. package/agents/design-assumptions-analyzer.md +16 -16
  17. package/agents/design-auditor.md +39 -39
  18. package/agents/design-authority-watcher.md +28 -28
  19. package/agents/design-component-generator.md +27 -27
  20. package/agents/design-context-builder.md +66 -66
  21. package/agents/design-context-checker-gate.md +5 -5
  22. package/agents/design-context-checker.md +20 -20
  23. package/agents/design-discussant.md +23 -23
  24. package/agents/design-doc-writer.md +12 -12
  25. package/agents/design-executor.md +38 -38
  26. package/agents/design-figma-writer.md +31 -31
  27. package/agents/design-fixer.md +27 -27
  28. package/agents/design-integration-checker-gate.md +5 -5
  29. package/agents/design-integration-checker.md +29 -29
  30. package/agents/design-paper-writer.md +14 -14
  31. package/agents/design-pattern-mapper.md +9 -9
  32. package/agents/design-pencil-writer.md +12 -12
  33. package/agents/design-phase-researcher.md +14 -14
  34. package/agents/design-plan-checker.md +13 -13
  35. package/agents/design-planner.md +24 -24
  36. package/agents/design-reflector.md +48 -48
  37. package/agents/design-research-synthesizer.md +21 -21
  38. package/agents/design-start-writer.md +7 -7
  39. package/agents/design-update-checker.md +8 -8
  40. package/agents/design-verifier-gate.md +5 -5
  41. package/agents/design-verifier.md +80 -80
  42. package/agents/ds-generator.md +14 -14
  43. package/agents/ds-migration-planner.md +12 -12
  44. package/agents/email-executor.md +26 -26
  45. package/agents/experiment-result-ingester.md +10 -10
  46. package/agents/flutter-executor.md +28 -28
  47. package/agents/gdd-graph-refresh.md +10 -10
  48. package/agents/gdd-intel-updater.md +11 -11
  49. package/agents/gdd-learnings-extractor.md +2 -2
  50. package/agents/motion-mapper.md +8 -8
  51. package/agents/motion-verifier.md +16 -16
  52. package/agents/pdf-executor.md +27 -27
  53. package/agents/perf-analyzer.md +20 -20
  54. package/agents/pr-commenter.md +24 -24
  55. package/agents/prototype-gate.md +29 -29
  56. package/agents/quality-gate-runner.md +21 -21
  57. package/agents/rollout-coordinator.md +8 -8
  58. package/agents/swift-executor.md +41 -41
  59. package/agents/ticket-sync-agent.md +19 -19
  60. package/agents/token-mapper.md +6 -6
  61. package/agents/user-research-synthesizer.md +13 -13
  62. package/agents/visual-hierarchy-mapper.md +2 -2
  63. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +48 -0
  64. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +95 -0
  65. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +92 -0
  66. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +170 -0
  67. package/dist/claude-code/.claude/skills/audit/SKILL.md +79 -0
  68. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +94 -0
  69. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +65 -0
  70. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +43 -0
  71. package/dist/claude-code/.claude/skills/brief/SKILL.md +128 -0
  72. package/dist/claude-code/.claude/skills/budget/SKILL.md +45 -0
  73. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +66 -0
  74. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +126 -0
  75. package/dist/claude-code/.claude/skills/check-update/SKILL.md +98 -0
  76. package/dist/claude-code/.claude/skills/compare/SKILL.md +82 -0
  77. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +171 -0
  78. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +81 -0
  79. package/dist/claude-code/.claude/skills/connections/SKILL.md +71 -0
  80. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +608 -0
  81. package/dist/claude-code/.claude/skills/continue/SKILL.md +24 -0
  82. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +76 -0
  83. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +258 -0
  84. package/dist/claude-code/.claude/skills/debug/SKILL.md +41 -0
  85. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +119 -0
  86. package/dist/claude-code/.claude/skills/design/SKILL.md +99 -0
  87. package/dist/claude-code/.claude/skills/design/design-procedure.md +304 -0
  88. package/dist/claude-code/.claude/skills/discover/SKILL.md +72 -0
  89. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +222 -0
  90. package/dist/claude-code/.claude/skills/discuss/SKILL.md +96 -0
  91. package/dist/claude-code/.claude/skills/do/SKILL.md +45 -0
  92. package/dist/claude-code/.claude/skills/explore/SKILL.md +105 -0
  93. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +267 -0
  94. package/dist/claude-code/.claude/skills/export/SKILL.md +30 -0
  95. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +98 -0
  96. package/dist/claude-code/.claude/skills/fast/SKILL.md +91 -0
  97. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +64 -0
  98. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +39 -0
  99. package/dist/claude-code/.claude/skills/graphify/SKILL.md +49 -0
  100. package/dist/claude-code/.claude/skills/health/SKILL.md +99 -0
  101. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +44 -0
  102. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +69 -0
  103. package/dist/claude-code/.claude/skills/help/SKILL.md +87 -0
  104. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +61 -0
  105. package/dist/claude-code/.claude/skills/locale/SKILL.md +51 -0
  106. package/dist/claude-code/.claude/skills/map/SKILL.md +89 -0
  107. package/dist/claude-code/.claude/skills/migrate/SKILL.md +70 -0
  108. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +37 -0
  109. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +87 -0
  110. package/dist/claude-code/.claude/skills/new-project/SKILL.md +53 -0
  111. package/dist/claude-code/.claude/skills/next/SKILL.md +68 -0
  112. package/dist/claude-code/.claude/skills/note/SKILL.md +48 -0
  113. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +86 -0
  114. package/dist/claude-code/.claude/skills/optimize/SKILL.md +97 -0
  115. package/dist/claude-code/.claude/skills/pause/SKILL.md +77 -0
  116. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +88 -0
  117. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +161 -0
  118. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +90 -0
  119. package/dist/claude-code/.claude/skills/peers/SKILL.md +96 -0
  120. package/dist/claude-code/.claude/skills/plan/SKILL.md +105 -0
  121. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +278 -0
  122. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +48 -0
  123. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +32 -0
  124. package/dist/claude-code/.claude/skills/progress/SKILL.md +95 -0
  125. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +90 -0
  126. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +101 -0
  127. package/dist/claude-code/.claude/skills/quick/SKILL.md +44 -0
  128. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +32 -0
  129. package/dist/claude-code/.claude/skills/recall/SKILL.md +75 -0
  130. package/dist/claude-code/.claude/skills/reflect/SKILL.md +85 -0
  131. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +120 -0
  132. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +53 -0
  133. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +120 -0
  134. package/dist/claude-code/.claude/skills/resume/SKILL.md +93 -0
  135. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +46 -0
  136. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +42 -0
  137. package/dist/claude-code/.claude/skills/roi/SKILL.md +54 -0
  138. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +35 -0
  139. package/dist/claude-code/.claude/skills/router/SKILL.md +89 -0
  140. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +65 -0
  141. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +78 -0
  142. package/dist/claude-code/.claude/skills/router/router-rules.md +84 -0
  143. package/dist/claude-code/.claude/skills/scan/SKILL.md +92 -0
  144. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +732 -0
  145. package/dist/claude-code/.claude/skills/settings/SKILL.md +87 -0
  146. package/dist/claude-code/.claude/skills/ship/SKILL.md +48 -0
  147. package/dist/claude-code/.claude/skills/sketch/SKILL.md +78 -0
  148. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +92 -0
  149. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +79 -0
  150. package/dist/claude-code/.claude/skills/spike/SKILL.md +67 -0
  151. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +86 -0
  152. package/dist/claude-code/.claude/skills/start/SKILL.md +67 -0
  153. package/dist/claude-code/.claude/skills/start/start-procedure.md +115 -0
  154. package/dist/claude-code/.claude/skills/stats/SKILL.md +51 -0
  155. package/dist/claude-code/.claude/skills/style/SKILL.md +71 -0
  156. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +150 -0
  157. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +94 -0
  158. package/dist/claude-code/.claude/skills/timeline/SKILL.md +66 -0
  159. package/dist/claude-code/.claude/skills/todo/SKILL.md +64 -0
  160. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +95 -0
  161. package/dist/claude-code/.claude/skills/undo/SKILL.md +31 -0
  162. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +54 -0
  163. package/dist/claude-code/.claude/skills/update/SKILL.md +56 -0
  164. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +78 -0
  165. package/dist/claude-code/.claude/skills/verify/SKILL.md +113 -0
  166. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +512 -0
  167. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +81 -0
  168. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +82 -0
  169. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +26 -0
  170. package/package.json +8 -2
  171. package/reference/DEPRECATIONS.md +21 -7
  172. package/reference/STATE-TEMPLATE.md +26 -26
  173. package/reference/accessibility.md +13 -13
  174. package/reference/adr-format.md +13 -13
  175. package/reference/ai-native-tool-interface.md +5 -5
  176. package/reference/anti-patterns.md +9 -9
  177. package/reference/architecture-vocabulary.md +31 -31
  178. package/reference/audit-scoring.md +13 -13
  179. package/reference/authority-feeds.md +36 -36
  180. package/reference/bandit-integration.md +25 -25
  181. package/reference/brand-voice.md +36 -36
  182. package/reference/capability-gap-stage-gate.md +20 -20
  183. package/reference/checklists.md +26 -26
  184. package/reference/cli-localization.md +13 -13
  185. package/reference/codex-tools.md +2 -2
  186. package/reference/color-theory.md +28 -28
  187. package/reference/component-authoring.md +4 -4
  188. package/reference/components/README.md +13 -13
  189. package/reference/components/TEMPLATE.md +13 -13
  190. package/reference/components/accordion.md +15 -15
  191. package/reference/components/alert.md +25 -25
  192. package/reference/components/badge.md +18 -18
  193. package/reference/components/breadcrumbs.md +24 -24
  194. package/reference/components/button.md +21 -21
  195. package/reference/components/card.md +13 -13
  196. package/reference/components/checkbox.md +20 -20
  197. package/reference/components/chip.md +20 -20
  198. package/reference/components/command-palette.md +15 -15
  199. package/reference/components/date-picker.md +22 -22
  200. package/reference/components/drawer.md +13 -13
  201. package/reference/components/file-upload.md +22 -22
  202. package/reference/components/input.md +18 -18
  203. package/reference/components/label.md +25 -25
  204. package/reference/components/link.md +19 -19
  205. package/reference/components/list.md +17 -17
  206. package/reference/components/menu.md +19 -19
  207. package/reference/components/modal-dialog.md +16 -16
  208. package/reference/components/navbar.md +19 -19
  209. package/reference/components/pagination.md +18 -18
  210. package/reference/components/popover.md +12 -12
  211. package/reference/components/progress.md +18 -18
  212. package/reference/components/radio.md +17 -17
  213. package/reference/components/rich-text-editor.md +24 -24
  214. package/reference/components/select-combobox.md +16 -16
  215. package/reference/components/sidebar.md +15 -15
  216. package/reference/components/skeleton.md +20 -20
  217. package/reference/components/slider.md +20 -20
  218. package/reference/components/stepper.md +24 -24
  219. package/reference/components/switch.md +19 -19
  220. package/reference/components/table.md +21 -21
  221. package/reference/components/tabs.md +11 -11
  222. package/reference/components/toast.md +19 -19
  223. package/reference/components/tooltip.md +19 -19
  224. package/reference/components/tree.md +17 -17
  225. package/reference/composition.md +38 -38
  226. package/reference/config-schema.md +37 -37
  227. package/reference/context-md-format.md +9 -9
  228. package/reference/contrast-advanced.md +29 -29
  229. package/reference/conversational-ui.md +17 -17
  230. package/reference/cost-governance.md +14 -14
  231. package/reference/css-grid-layout.md +8 -8
  232. package/reference/cycle-handoff-preamble.md +3 -3
  233. package/reference/data-visualization.md +67 -67
  234. package/reference/debugger-philosophy.md +5 -5
  235. package/reference/design-system-guidance.md +21 -21
  236. package/reference/design-systems-catalog.md +20 -20
  237. package/reference/design-variants.md +11 -11
  238. package/reference/domains/civic-patterns.md +10 -10
  239. package/reference/domains/finance-patterns.md +9 -9
  240. package/reference/domains/gaming-patterns.md +9 -9
  241. package/reference/domains/healthcare-patterns.md +11 -11
  242. package/reference/ds-bootstrap-rubric.md +13 -13
  243. package/reference/email-design.md +22 -22
  244. package/reference/emotional-design.md +10 -10
  245. package/reference/error-recovery.md +11 -11
  246. package/reference/export-formats.md +7 -7
  247. package/reference/figma-sandbox.md +6 -6
  248. package/reference/first-principles.md +10 -10
  249. package/reference/form-patterns.md +26 -26
  250. package/reference/framer-motion-patterns.md +49 -49
  251. package/reference/gdd-runtime-audit.md +17 -17
  252. package/reference/gdd-threat-model.md +44 -44
  253. package/reference/gemini-tools.md +3 -3
  254. package/reference/gestalt.md +24 -24
  255. package/reference/heuristics.md +32 -32
  256. package/reference/i18n.md +44 -44
  257. package/reference/iconography.md +24 -24
  258. package/reference/image-optimization.md +14 -14
  259. package/reference/information-architecture.md +47 -47
  260. package/reference/intel-schema.md +1 -1
  261. package/reference/known-failure-modes.md +37 -37
  262. package/reference/meta-rules.md +5 -5
  263. package/reference/migrations/material-3-to-4.md +17 -17
  264. package/reference/migrations/mui-v6.md +16 -16
  265. package/reference/migrations/shadcn-v2.md +25 -25
  266. package/reference/migrations/tailwind-v4.md +21 -21
  267. package/reference/model-prices.md +3 -3
  268. package/reference/model-tiers.md +40 -40
  269. package/reference/motion-advanced.md +21 -21
  270. package/reference/motion-easings.md +29 -29
  271. package/reference/motion-interpolate.md +1 -1
  272. package/reference/motion-spring.md +13 -13
  273. package/reference/motion-transition-taxonomy.md +34 -34
  274. package/reference/motion.md +31 -31
  275. package/reference/multi-author-model.md +13 -13
  276. package/reference/native-platforms.md +28 -28
  277. package/reference/notification-routing.md +6 -6
  278. package/reference/onboarding-progressive-disclosure.md +32 -32
  279. package/reference/openrouter-tier-mapping.md +8 -8
  280. package/reference/palette-catalog.md +37 -37
  281. package/reference/parallelism-rules.md +20 -20
  282. package/reference/peer-cli-capabilities.md +14 -14
  283. package/reference/peer-protocols.md +21 -21
  284. package/reference/perf-budget.md +21 -21
  285. package/reference/performance.md +22 -22
  286. package/reference/platforms.md +51 -51
  287. package/reference/pr-review-integration.md +7 -7
  288. package/reference/prices/antigravity.md +3 -3
  289. package/reference/prices/augment.md +3 -3
  290. package/reference/prices/claude.md +2 -2
  291. package/reference/prices/cline.md +4 -4
  292. package/reference/prices/codebuddy.md +3 -3
  293. package/reference/prices/codex.md +2 -2
  294. package/reference/prices/copilot.md +3 -3
  295. package/reference/prices/cursor.md +3 -3
  296. package/reference/prices/gemini.md +2 -2
  297. package/reference/prices/kilo.md +3 -3
  298. package/reference/prices/opencode.md +4 -4
  299. package/reference/prices/qwen.md +2 -2
  300. package/reference/prices/trae.md +3 -3
  301. package/reference/prices/windsurf.md +3 -3
  302. package/reference/prices.openrouter.md +5 -5
  303. package/reference/print-design.md +36 -36
  304. package/reference/priority-matrix.md +2 -2
  305. package/reference/project-skills-guide.md +3 -3
  306. package/reference/proportion-systems.md +23 -23
  307. package/reference/pseudonymization-rules.md +30 -30
  308. package/reference/registry.json +7 -0
  309. package/reference/retrieval-contract.md +14 -14
  310. package/reference/review-format.md +7 -7
  311. package/reference/rollout-coordination.md +10 -10
  312. package/reference/rtl-cjk-cultural.md +39 -39
  313. package/reference/runtime-models.md +28 -28
  314. package/reference/shared-preamble.md +26 -26
  315. package/reference/skill-authoring-contract.md +16 -16
  316. package/reference/skill-placeholders.md +71 -0
  317. package/reference/start-interview.md +10 -10
  318. package/reference/style-vocabulary.md +25 -25
  319. package/reference/surfaces.md +4 -4
  320. package/reference/ticket-sync.md +9 -9
  321. package/reference/typography.md +64 -64
  322. package/reference/user-research.md +54 -54
  323. package/reference/variable-fonts-loading.md +15 -15
  324. package/reference/visual-hierarchy-layout.md +41 -41
  325. package/scripts/lib/build/factory.cjs +62 -0
  326. package/scripts/lib/build/harness-configs.cjs +64 -0
  327. package/scripts/lib/manifest/prose-denylist.json +1 -1
  328. package/sdk/cli/commands/build.ts +106 -0
  329. package/sdk/cli/index.js +84 -2
  330. package/sdk/cli/index.ts +7 -0
  331. package/skills/add-backlog/SKILL.md +3 -3
  332. package/skills/analyze-dependencies/SKILL.md +10 -10
  333. package/skills/apply-reflections/SKILL.md +13 -13
  334. package/skills/apply-reflections/apply-reflections-procedure.md +20 -20
  335. package/skills/audit/SKILL.md +7 -7
  336. package/skills/bandit-status/SKILL.md +7 -7
  337. package/skills/benchmark/SKILL.md +7 -7
  338. package/skills/bootstrap-ds/SKILL.md +10 -10
  339. package/skills/brief/SKILL.md +20 -20
  340. package/skills/budget/SKILL.md +4 -4
  341. package/skills/cache-manager/SKILL.md +6 -6
  342. package/skills/cache-manager/cache-policy.md +5 -5
  343. package/skills/check-update/SKILL.md +5 -5
  344. package/skills/compare/SKILL.md +15 -15
  345. package/skills/compare/compare-rubric.md +17 -17
  346. package/skills/complete-cycle/SKILL.md +5 -5
  347. package/skills/connections/SKILL.md +11 -11
  348. package/skills/connections/connections-onboarding.md +76 -76
  349. package/skills/continue/SKILL.md +2 -2
  350. package/skills/darkmode/SKILL.md +17 -17
  351. package/skills/darkmode/darkmode-audit-procedure.md +7 -7
  352. package/skills/debug/SKILL.md +3 -3
  353. package/skills/debug/debug-feedback-loops.md +12 -12
  354. package/skills/design/SKILL.md +12 -12
  355. package/skills/design/design-procedure.md +23 -23
  356. package/skills/discover/SKILL.md +7 -7
  357. package/skills/discover/discover-procedure.md +18 -18
  358. package/skills/discuss/SKILL.md +12 -12
  359. package/skills/do/SKILL.md +1 -1
  360. package/skills/explore/SKILL.md +21 -21
  361. package/skills/explore/explore-procedure.md +48 -48
  362. package/skills/export/SKILL.md +9 -9
  363. package/skills/extract-learnings/SKILL.md +5 -5
  364. package/skills/fast/SKILL.md +7 -7
  365. package/skills/figma-extract/SKILL.md +11 -11
  366. package/skills/figma-write/SKILL.md +6 -6
  367. package/skills/graphify/SKILL.md +4 -4
  368. package/skills/health/SKILL.md +16 -16
  369. package/skills/health/health-mcp-detection.md +3 -3
  370. package/skills/health/health-skill-length-report.md +6 -6
  371. package/skills/help/SKILL.md +1 -1
  372. package/skills/list-assumptions/SKILL.md +4 -4
  373. package/skills/map/SKILL.md +12 -12
  374. package/skills/migrate/SKILL.md +5 -5
  375. package/skills/new-cycle/SKILL.md +2 -2
  376. package/skills/new-cycle/milestone-completeness-rubric.md +16 -16
  377. package/skills/new-project/SKILL.md +1 -1
  378. package/skills/next/SKILL.md +5 -5
  379. package/skills/note/SKILL.md +1 -1
  380. package/skills/openrouter-status/SKILL.md +4 -4
  381. package/skills/optimize/SKILL.md +15 -15
  382. package/skills/pause/SKILL.md +5 -5
  383. package/skills/peer-cli-add/SKILL.md +11 -11
  384. package/skills/peer-cli-add/peer-cli-protocol.md +39 -39
  385. package/skills/peer-cli-customize/SKILL.md +14 -14
  386. package/skills/peers/SKILL.md +4 -4
  387. package/skills/plan/SKILL.md +13 -13
  388. package/skills/plan/plan-procedure.md +24 -24
  389. package/skills/plant-seed/SKILL.md +4 -4
  390. package/skills/pr-branch/SKILL.md +2 -2
  391. package/skills/progress/SKILL.md +15 -15
  392. package/skills/quality-gate/SKILL.md +22 -22
  393. package/skills/quality-gate/threat-modeling.md +19 -19
  394. package/skills/quick/SKILL.md +5 -5
  395. package/skills/reapply-patches/SKILL.md +7 -7
  396. package/skills/reflect/SKILL.md +3 -3
  397. package/skills/reflect/procedures/capability-gap-scan.md +11 -11
  398. package/skills/report-issue/SKILL.md +5 -5
  399. package/skills/report-issue/report-issue-procedure.md +27 -27
  400. package/skills/resume/SKILL.md +9 -9
  401. package/skills/review-backlog/SKILL.md +3 -3
  402. package/skills/review-decisions/SKILL.md +3 -3
  403. package/skills/roi/SKILL.md +5 -5
  404. package/skills/rollout-status/SKILL.md +4 -4
  405. package/skills/router/SKILL.md +11 -11
  406. package/skills/router/capability-gap-emitter.md +6 -6
  407. package/skills/router/router-pick-emitter.md +9 -9
  408. package/skills/router/router-rules.md +7 -7
  409. package/skills/scan/SKILL.md +16 -16
  410. package/skills/scan/scan-procedure.md +42 -42
  411. package/skills/settings/SKILL.md +2 -2
  412. package/skills/ship/SKILL.md +7 -7
  413. package/skills/sketch/SKILL.md +10 -10
  414. package/skills/sketch-wrap-up/SKILL.md +12 -12
  415. package/skills/skill-manifest/SKILL.md +5 -5
  416. package/skills/spike/SKILL.md +7 -7
  417. package/skills/spike-wrap-up/SKILL.md +13 -13
  418. package/skills/start/SKILL.md +8 -8
  419. package/skills/start/start-procedure.md +9 -9
  420. package/skills/stats/SKILL.md +5 -5
  421. package/skills/style/SKILL.md +12 -12
  422. package/skills/style/style-doc-procedure.md +12 -12
  423. package/skills/synthesize/SKILL.md +10 -10
  424. package/skills/timeline/SKILL.md +4 -4
  425. package/skills/todo/SKILL.md +3 -3
  426. package/skills/turn-closeout/SKILL.md +10 -10
  427. package/skills/unlock-decision/SKILL.md +3 -3
  428. package/skills/update/SKILL.md +9 -9
  429. package/skills/using-gdd/SKILL.md +17 -17
  430. package/skills/verify/SKILL.md +13 -13
  431. package/skills/verify/verify-procedure.md +34 -34
  432. package/skills/warm-cache/SKILL.md +8 -8
  433. package/skills/watch-authorities/SKILL.md +9 -9
  434. package/skills/zoom-out/SKILL.md +4 -4
@@ -1,10 +1,10 @@
1
- # Peer-CLI Protocols ACP + ASP Cheat Sheet
1
+ # Peer-CLI Protocols - ACP + ASP Cheat Sheet
2
2
 
3
3
  **Phase 27 (v1.27.0).** This file is the protocol-level reference for gdd's peer-CLI delegation layer. If you're authoring a new peer adapter or debugging a protocol-level issue, start here.
4
4
 
5
5
  For ops-level guidance (when delegation fires, how to enable/disable, fallback diagnostics), see `docs/PEER-DELEGATION.md`.
6
6
 
7
- Protocol shapes are adapted from [`greenpolo/cc-multi-cli-plugin`](https://github.com/greenpolo/cc-multi-cli-plugin) under Apache 2.0 see `NOTICE` for full attribution.
7
+ Protocol shapes are adapted from [`greenpolo/cc-multi-cli-plugin`](https://github.com/greenpolo/cc-multi-cli-plugin) under Apache 2.0 - see `NOTICE` for full attribution.
8
8
 
9
9
  ---
10
10
 
@@ -21,7 +21,7 @@ Line-buffer overflow guard: 16 MiB per line (both clients reject lines longer th
21
21
 
22
22
  ---
23
23
 
24
- ## ACP Agent Client Protocol
24
+ ## ACP - Agent Client Protocol
25
25
 
26
26
  ### Initialize handshake
27
27
 
@@ -99,7 +99,7 @@ Verify via the `peer-cli-add` skill's verification ladder (Step 1) before adding
99
99
 
100
100
  ---
101
101
 
102
- ## ASP App Server Protocol (Codex)
102
+ ## ASP - App Server Protocol (Codex)
103
103
 
104
104
  ### Service identification
105
105
 
@@ -144,7 +144,7 @@ Server → client:
144
144
 
145
145
  #### threadResume
146
146
 
147
- Useful for cross-cycle conversation continuity (out of scope for v1.27.0 gdd always creates fresh threads per delegated call but the API surface exists):
147
+ Useful for cross-cycle conversation continuity (out of scope for v1.27.0 - gdd always creates fresh threads per delegated call - but the API surface exists):
148
148
 
149
149
  ```json
150
150
  {
@@ -191,7 +191,7 @@ Server streams turn-progress notifications, ends with a structured result:
191
191
  }
192
192
  ```
193
193
 
194
- **Error path** (does NOT throw on the client side resolves with the error structure):
194
+ **Error path** (does NOT throw on the client side - resolves with the error structure):
195
195
 
196
196
  ```json
197
197
  {
@@ -209,7 +209,7 @@ Server streams turn-progress notifications, ends with a structured result:
209
209
  }
210
210
  ```
211
211
 
212
- The caller decides retry vs fallback per session-runner contract gdd's session-runner falls back to local Anthropic on `status: "error"` per D-07.
212
+ The caller decides retry vs fallback per session-runner contract - gdd's session-runner falls back to local Anthropic on `status: "error"` per D-07.
213
213
 
214
214
  ### Codex ASP entry point
215
215
 
@@ -230,12 +230,12 @@ The caller decides retry vs fallback per session-runner contract — gdd's sessi
230
230
 
231
231
  - Requests carry `id` (monotonic integer per session).
232
232
  - Responses carry the same `id` in `result` or `error`.
233
- - Notifications have no `id` and no `result` they are routed to the active request's `onNotification` callback (each protocol allows only one "active" request at a time per session half-duplex).
233
+ - Notifications have no `id` and no `result` - they are routed to the active request's `onNotification` callback (each protocol allows only one "active" request at a time per session - half-duplex).
234
234
 
235
235
  ### Process lifecycle
236
236
 
237
237
  - The peer process is spawned via `scripts/lib/peer-cli/spawn-cmd.cjs` (handles Windows `.cmd` EINVAL workaround per D-04).
238
- - The client connects directly OR through gdd's broker (`broker-lifecycle.cjs`) both surfaces present the same `{initialize, prompt, close}` (ACP) or `{threadStart, threadResume, turn, close}` (ASP) API.
238
+ - The client connects directly OR through gdd's broker (`broker-lifecycle.cjs`) - both surfaces present the same `{initialize, prompt, close}` (ACP) or `{threadStart, threadResume, turn, close}` (ASP) API.
239
239
  - On process death mid-request, the client rejects the in-flight promise with a structured `{error_class: "process_exited"}` event for telemetry.
240
240
 
241
241
  ---
@@ -245,8 +245,8 @@ The caller decides retry vs fallback per session-runner contract — gdd's sessi
245
245
  gdd v1.27.0 ships only ACP and ASP. If a new peer speaks neither (e.g., a future REST-only or HTTP/2-streaming protocol), the path forward is:
246
246
 
247
247
  1. Document the gap in `.design/RESEARCH.md` for a future phase to scope a new protocol layer.
248
- 2. Do **not** stretch ACP/ASP to fit they're documented contracts, not generalist multiplexers.
249
- 3. The `peer-cli-add` skill (Step 1's verification ladder) refuses to scaffold a peer that doesn't speak ACP or ASP by design.
248
+ 2. Do **not** stretch ACP/ASP to fit - they're documented contracts, not generalist multiplexers.
249
+ 3. The `peer-cli-add` skill (Step 1's verification ladder) refuses to scaffold a peer that doesn't speak ACP or ASP - by design.
250
250
 
251
251
  A future phase may add a new `scripts/lib/peer-cli/<protocol>-client.cjs` mirror following the same shape (line-buffer + JSON-RPC framing if applicable, or whatever the new protocol natively uses).
252
252
 
@@ -254,13 +254,13 @@ A future phase may add a new `scripts/lib/peer-cli/<protocol>-client.cjs` mirror
254
254
 
255
255
  ## Cross-references
256
256
 
257
- - `scripts/lib/peer-cli/acp-client.cjs` ACP client implementation.
258
- - `scripts/lib/peer-cli/asp-client.cjs` ASP client implementation.
259
- - `scripts/lib/peer-cli/spawn-cmd.cjs` Windows `.cmd` EINVAL workaround.
260
- - `scripts/lib/peer-cli/broker-lifecycle.cjs` long-lived broker.
261
- - `scripts/lib/peer-cli/adapters/*.cjs` per-peer thin wrappers.
262
- - `scripts/lib/peer-cli/registry.cjs` central dispatch.
263
- - `tests/peer-cli-{acp,asp,spawn,registry,adapters}.test.cjs` protocol-level tests.
264
- - `docs/PEER-DELEGATION.md` ops guide.
265
- - `NOTICE` Apache 2.0 attribution for cc-multi-cli.
266
- - `.planning/phases/27-peer-cli-delegation/CONTEXT.md` decision lineage (D-01, D-02, D-03, D-04).
257
+ - `scripts/lib/peer-cli/acp-client.cjs` - ACP client implementation.
258
+ - `scripts/lib/peer-cli/asp-client.cjs` - ASP client implementation.
259
+ - `scripts/lib/peer-cli/spawn-cmd.cjs` - Windows `.cmd` EINVAL workaround.
260
+ - `scripts/lib/peer-cli/broker-lifecycle.cjs` - long-lived broker.
261
+ - `scripts/lib/peer-cli/adapters/*.cjs` - per-peer thin wrappers.
262
+ - `scripts/lib/peer-cli/registry.cjs` - central dispatch.
263
+ - `tests/peer-cli-{acp,asp,spawn,registry,adapters}.test.cjs` - protocol-level tests.
264
+ - `docs/PEER-DELEGATION.md` - ops guide.
265
+ - `NOTICE` - Apache 2.0 attribution for cc-multi-cli.
266
+ - `.planning/phases/27-peer-cli-delegation/CONTEXT.md` - decision lineage (D-01, D-02, D-03, D-04).
@@ -6,12 +6,12 @@ type: meta-rules
6
6
  description: Per-agent token-cost budget reference and CI regression-gate documentation. Budgets sourced from current p50 + 25% buffer (Phase 27.6 D-05); CI gate fails on >25% regression vs baseline across 3 cycles (D-01); thresholds configurable via .design/budget.json.
7
7
  ---
8
8
 
9
- # Per-Agent Performance Budgets Phase 27.6
9
+ # Per-Agent Performance Budgets - Phase 27.6
10
10
 
11
11
  This reference documents the token-cost budgets that the pipeline measures itself against. Two surfaces consume this document:
12
12
 
13
- 1. `tests/perf-budget.test.cjs` CI regression gate. Fails the build when any agent's p50 USD-cost has regressed > 25% vs baseline across the last 3 cycles.
14
- 2. `agents/perf-analyzer.md` cross-cycle reflector. Reads the same budget + telemetry; surfaces top-3 regressions as `[REGRESSION]` proposals.
13
+ 1. `tests/perf-budget.test.cjs` - CI regression gate. Fails the build when any agent's p50 USD-cost has regressed > 25% vs baseline across the last 3 cycles.
14
+ 2. `agents/perf-analyzer.md` - cross-cycle reflector. Reads the same budget + telemetry; surfaces top-3 regressions as `[REGRESSION]` proposals.
15
15
 
16
16
  Phase 27.5 (v1.27.5, shipped 2026-05-17) made production telemetry real by wiring the bandit into routing. Phase 27.6 reads what 27.5 writes.
17
17
 
@@ -29,7 +29,7 @@ chore(27.6): recalibrate perf-budget against measured cycles
29
29
 
30
30
  Per **D-01**, the regression-gate threshold is **25%**, configurable via `.design/budget.json#perf_regression_threshold`. A minimum of **3 distinct cycles** must be observed per agent before that agent is evaluated for regression. Agents with fewer than 3 cycles are silently skipped (cold-start tolerance).
31
31
 
32
- This conservative-then-tighten discipline matches Phase 23.5 `PRIOR_STRENGTH` calibration start wide to avoid noise, tighten once enough samples accumulate to compute realistic p95 bounds.
32
+ This conservative-then-tighten discipline matches Phase 23.5 `PRIOR_STRENGTH` calibration - start wide to avoid noise, tighten once enough samples accumulate to compute realistic p95 bounds.
33
33
 
34
34
  ---
35
35
 
@@ -47,7 +47,7 @@ This conservative-then-tighten discipline matches Phase 23.5 `PRIOR_STRENGTH` ca
47
47
 
48
48
  These values are **seed numbers**, re-calibrated after 1-2 real production cycles. The authoritative numbers live in `test-fixture/baselines/phase-27-6/perf-baseline.json` (created at Phase 27.6 closeout in Plan 27.6-06). The CI gate reads that file at runtime, not this table.
49
49
 
50
- When the baseline JSON is **absent** (first run after this plan lands but before 27.6-06), the gate passes silently with a stderr notice it does NOT block Wave A from shipping.
50
+ When the baseline JSON is **absent** (first run after this plan lands but before 27.6-06), the gate passes silently with a stderr notice - it does NOT block Wave A from shipping.
51
51
 
52
52
  ---
53
53
 
@@ -55,10 +55,10 @@ When the baseline JSON is **absent** (first run after this plan lands but before
55
55
 
56
56
  File: `tests/perf-budget.test.cjs`
57
57
 
58
- Algorithm (single source of truth re-uses `detectCostRegressions` from `scripts/lib/perf-analyzer/cost-regression.cjs`):
58
+ Algorithm (single source of truth - re-uses `detectCostRegressions` from `scripts/lib/perf-analyzer/cost-regression.cjs`):
59
59
 
60
- 1. Load `test-fixture/baselines/phase-27-6/perf-baseline.json`. If absent, exit early gate passes with stderr notice. (Phase 27.6-06 creates this file at closeout.)
61
- 2. Load `.design/telemetry/costs.jsonl` via `loadCosts`. If absent or empty, exit early no data to regress against.
60
+ 1. Load `test-fixture/baselines/phase-27-6/perf-baseline.json`. If absent, exit early - gate passes with stderr notice. (Phase 27.6-06 creates this file at closeout.)
61
+ 2. Load `.design/telemetry/costs.jsonl` via `loadCosts`. If absent or empty, exit early - no data to regress against.
62
62
  3. Read `perf_regression_threshold` from `.design/budget.json` (default 25 per D-01).
63
63
  4. Call `detectCostRegressions({rows, baseline: parsedBaseline.agents, thresholdPct, cyclesRequired: 3})`.
64
64
  5. If `result.regressions.length === 0`, gate passes.
@@ -67,10 +67,10 @@ Algorithm (single source of truth — re-uses `detectCostRegressions` from `scri
67
67
  The gate is intentionally **low-noise**:
68
68
 
69
69
  - Skips agents with fewer than 3 distinct cycles of data (avoids false positives during cold-start).
70
- - Only fires on the **regression rule** NOT on cache-hit-rate drops or p95 latency spikes; those surface as `agents/perf-analyzer.md` proposals only.
71
- - Top-3 cap on the regressions list a "noisy day" can flag at most three agents, never the entire roster.
70
+ - Only fires on the **regression rule** - NOT on cache-hit-rate drops or p95 latency spikes; those surface as `agents/perf-analyzer.md` proposals only.
71
+ - Top-3 cap on the regressions list - a "noisy day" can flag at most three agents, never the entire roster.
72
72
 
73
- The gate runs as a regular `node --test` entry under the `tests/**/*.test.cjs` glob no special CI wiring required. If you can run `npm test`, you run the gate.
73
+ The gate runs as a regular `node --test` entry under the `tests/**/*.test.cjs` glob - no special CI wiring required. If you can run `npm test`, you run the gate.
74
74
 
75
75
  ---
76
76
 
@@ -97,7 +97,7 @@ Override the cache-warming false-positive tolerance (used by Phase 27.6-03):
97
97
  - `perf_regression_threshold: 25`
98
98
  - `cache_warming_falsepositive_threshold: 20`
99
99
 
100
- After 5 measured cycles accumulate, re-tune based on observed natural variance. The 25%-default is conservative likely too loose once real telemetry stabilizes. The first tightening pass belongs to a measurement-gated follow-up, not v1.27.6 itself.
100
+ After 5 measured cycles accumulate, re-tune based on observed natural variance. The 25%-default is conservative - likely too loose once real telemetry stabilizes. The first tightening pass belongs to a measurement-gated follow-up, not v1.27.6 itself.
101
101
 
102
102
  ---
103
103
 
@@ -116,19 +116,19 @@ That commit:
116
116
  3. Bumps the budget numbers in this document to match.
117
117
  4. Optionally tightens `perf_regression_threshold` from 25 toward 15-20 if measured variance permits.
118
118
 
119
- The synthetic baseline is **not a hack** it's the documented v1 path per spec Success Criterion #7. Real-cycle data simply doesn't exist yet at v1.27.6 cut, because Phase 27.5 only shipped 2026-05-17.
119
+ The synthetic baseline is **not a hack** - it's the documented v1 path per spec Success Criterion #7. Real-cycle data simply doesn't exist yet at v1.27.6 cut, because Phase 27.5 only shipped 2026-05-17.
120
120
 
121
121
  ---
122
122
 
123
123
  ## Cross-references
124
124
 
125
- - `agents/perf-analyzer.md` cross-cycle reflector that reads the same baseline. Surfaces top-3 cost regressions, hit-rate deltas, and p95 spikes as `[REGRESSION]` proposals per `/gdd:reflect`.
126
- - `scripts/lib/perf-analyzer/cost-regression.cjs` **single source of truth** for the regression rule. The CI gate re-uses `detectCostRegressions` from this module; it does NOT re-implement the rule.
127
- - `scripts/lib/perf-analyzer/index.cjs` telemetry loader (`loadCosts`, `loadTrajectories`). JSONL-tolerant; blank lines silently ignored, malformed lines counted in `skipped_count`.
128
- - `tests/perf-budget.test.cjs` the CI gate itself. Always-green when no baseline + no data; fails on >25% regression vs baseline once both exist.
129
- - `reference/bandit-integration.md` Phase 27.5 routing reference (precursor; the bandit picks tier **within** the budget the gate evaluates whether the picked tier behaved within budget).
130
- - `.design/budget.json` operator-tunable thresholds. Optional file; absent file means defaults (`perf_regression_threshold: 25`, `cache_warming_falsepositive_threshold: 20`).
131
- - `test-fixture/baselines/phase-27-6/perf-baseline.json` authoritative per-agent p50 / hit_rate / p95_ms values. Created in Plan 27.6-06 closeout.
125
+ - `agents/perf-analyzer.md` - cross-cycle reflector that reads the same baseline. Surfaces top-3 cost regressions, hit-rate deltas, and p95 spikes as `[REGRESSION]` proposals per `/gdd:reflect`.
126
+ - `scripts/lib/perf-analyzer/cost-regression.cjs` - **single source of truth** for the regression rule. The CI gate re-uses `detectCostRegressions` from this module; it does NOT re-implement the rule.
127
+ - `scripts/lib/perf-analyzer/index.cjs` - telemetry loader (`loadCosts`, `loadTrajectories`). JSONL-tolerant; blank lines silently ignored, malformed lines counted in `skipped_count`.
128
+ - `tests/perf-budget.test.cjs` - the CI gate itself. Always-green when no baseline + no data; fails on >25% regression vs baseline once both exist.
129
+ - `reference/bandit-integration.md` - Phase 27.5 routing reference (precursor; the bandit picks tier **within** the budget - the gate evaluates whether the picked tier behaved within budget).
130
+ - `.design/budget.json` - operator-tunable thresholds. Optional file; absent file means defaults (`perf_regression_threshold: 25`, `cache_warming_falsepositive_threshold: 20`).
131
+ - `test-fixture/baselines/phase-27-6/perf-baseline.json` - authoritative per-agent p50 / hit_rate / p95_ms values. Created in Plan 27.6-06 closeout.
132
132
 
133
133
  ---
134
134
 
@@ -139,4 +139,4 @@ The synthetic baseline is **not a hack** — it's the documented v1 path per spe
139
139
  - **base = 0 + current = 0** → NOT a regression (both `delta_pct = 0`).
140
140
  - **Missing baseline entry** → agent silently skipped (no false positive on new agents that haven't been calibrated yet).
141
141
 
142
- The gate's "fail loud, false-positive rare" character comes from these boundary choices plus the 3-cycle minimum together they make the gate safe to wire into CI without flaking on first-run noise.
142
+ The gate's "fail loud, false-positive rare" character comes from these boundary choices plus the 3-cycle minimum - together they make the gate safe to wire into CI without flaking on first-run noise.
@@ -1,4 +1,4 @@
1
- # Performance Reference Guide
1
+ # Performance - Reference Guide
2
2
 
3
3
  Performance is a design constraint, not an engineering afterthought. Every millisecond of delay in LCP is a measurable reduction in conversion rate; every layout shift during page load erodes user trust. This reference establishes authoritative performance budgets, measurement targets, and implementation rules for all project types handled by the get-design-done framework.
4
4
 
@@ -19,17 +19,17 @@ Google's Core Web Vitals are the industry-standard performance metrics for user
19
19
 
20
20
  ### SaaS / Dashboard Applications
21
21
 
22
- Authenticated dashboard applications carry more JavaScript, more real-time data subscriptions, and more complex component trees than public pages. LCP tolerance is relaxed to ≤3.0s because users have a high motivation to wait (they are trying to accomplish a work task) and the LCP element is often a data-heavy chart or table that legitimately takes time to render. However, INP must be held to ≤200ms strictly dashboards involve dense interaction patterns (filter, sort, paginate, drill down) and a sluggish response loop destroys the power-user experience.
22
+ Authenticated dashboard applications carry more JavaScript, more real-time data subscriptions, and more complex component trees than public pages. LCP tolerance is relaxed to ≤3.0s because users have a high motivation to wait (they are trying to accomplish a work task) and the LCP element is often a data-heavy chart or table that legitimately takes time to render. However, INP must be held to ≤200ms strictly - dashboards involve dense interaction patterns (filter, sort, paginate, drill down) and a sluggish response loop destroys the power-user experience.
23
23
 
24
24
  ### Marketing / Landing Pages
25
25
 
26
- Conversion-critical pages have zero tolerance for perceived slowness. LCP must reach ≤2.0s because first impressions determine bounce rate, and bounce rate directly impacts conversion. CLS must be ≤0.05 (half the general threshold) because layout pop during hero section rendering caused by web font loading, lazy image dimensions, or server-side-rendered content shifting destroys the premium impression marketing pages are designed to create. Every 100ms of LCP improvement correlates with measurable conversion lift in e-commerce and SaaS trials.
26
+ Conversion-critical pages have zero tolerance for perceived slowness. LCP must reach ≤2.0s because first impressions determine bounce rate, and bounce rate directly impacts conversion. CLS must be ≤0.05 (half the general threshold) because layout pop during hero section rendering - caused by web font loading, lazy image dimensions, or server-side-rendered content shifting - destroys the premium impression marketing pages are designed to create. Every 100ms of LCP improvement correlates with measurable conversion lift in e-commerce and SaaS trials.
27
27
 
28
28
  ### E-Commerce
29
29
 
30
30
  | Metric | Target | Rationale |
31
31
  |--------|--------|-----------|
32
- | LCP | ≤2.5s | Product images are the LCP element optimize aggressively |
32
+ | LCP | ≤2.5s | Product images are the LCP element - optimize aggressively |
33
33
  | CLS | ≤0.1 | Price and "Add to Cart" button must not jump as images load |
34
34
  | INP | ≤200ms | Cart interactions, quantity updates, and variant selection must feel instant |
35
35
 
@@ -41,7 +41,7 @@ Cart and checkout flows are revenue-critical paths where a 500ms interaction del
41
41
  |--------|--------|-----------|
42
42
  | LCP | ≤3.0s | Docs users are high-intent; tolerate slightly longer loads |
43
43
  | CLS | ≤0.1 | Code blocks and long-form content must not reflow after load |
44
- | TTFB | ≤600ms | Docs are often statically generated TTFB should approach CDN speed |
44
+ | TTFB | ≤600ms | Docs are often statically generated - TTFB should approach CDN speed |
45
45
 
46
46
  Documentation sites benefit from aggressive static generation and CDN distribution. TTFB at ≤600ms is achievable with proper static export (Next.js, Astro, Docusaurus) and CDN edge caching.
47
47
 
@@ -51,7 +51,7 @@ Documentation sites benefit from aggressive static generation and CDN distributi
51
51
 
52
52
  The browser must parse and execute CSS before it can paint pixels. CSS that blocks rendering is the most impactful optimization target after eliminating render-blocking JavaScript. The goal is to get the above-the-fold experience to paint within the first TCP round trip (≤14KB compressed).
53
53
 
54
- **Inline above-the-fold styles:** Identify the CSS rules that affect visible content within the initial viewport typically layout grid, hero component, navigation bar, and typography declarations. Inline these rules in a `<style>` block in the `<head>`. Keep this block under 14KB compressed, which corresponds to approximately 40–60KB uncompressed depending on your gzip ratio.
54
+ **Inline above-the-fold styles:** Identify the CSS rules that affect visible content within the initial viewport - typically layout grid, hero component, navigation bar, and typography declarations. Inline these rules in a `<style>` block in the `<head>`. Keep this block under 14KB compressed, which corresponds to approximately 40–60KB uncompressed depending on your gzip ratio.
55
55
 
56
56
  **Defer non-critical CSS with preload:** Load the full stylesheet asynchronously to prevent it from blocking rendering:
57
57
 
@@ -68,11 +68,11 @@ This pattern preloads the stylesheet at high priority (ensuring it is fetched be
68
68
 
69
69
  ## 3. Image Budgets
70
70
 
71
- Images are typically the single largest contributor to LCP and total page weight. Every image decision format, dimensions, lazy-loading strategy, and priority directly affects Core Web Vitals.
71
+ Images are typically the single largest contributor to LCP and total page weight. Every image decision - format, dimensions, lazy-loading strategy, and priority - directly affects Core Web Vitals.
72
72
 
73
73
  **Format requirements:**
74
74
  - **Photos and complex rasters:** WebP as primary format, AVIF as progressive enhancement where browser support allows. Never ship JPEG or PNG for photos in new projects. AVIF achieves 20–50% smaller file sizes than WebP at equivalent visual quality; use it where CMS and CDN pipelines support it.
75
- - **Icons and logos:** SVG only. Never rasterize icons for web delivery SVGs are resolution-independent, style-inheriting, and typically smaller than equivalent PNG at display sizes.
75
+ - **Icons and logos:** SVG only. Never rasterize icons for web delivery - SVGs are resolution-independent, style-inheriting, and typically smaller than equivalent PNG at display sizes.
76
76
  - **Illustrations:** SVG if illustration complexity allows; WebP for complex multi-color illustrations that would produce large SVG files.
77
77
 
78
78
  **Responsive images with `srcset`:**
@@ -92,7 +92,7 @@ Always specify `width` and `height` attributes. These allow the browser to reser
92
92
 
93
93
  **Lazy loading below-the-fold images:** Apply `loading="lazy"` to all images that are not visible in the initial viewport. This defers their network requests until the user scrolls toward them, reducing initial page weight significantly on image-heavy pages.
94
94
 
95
- **The LCP image must never be lazy-loaded.** The LCP image typically the hero image or first product image must load as fast as possible. Apply `fetchpriority="high"` to signal the browser to deprioritize other resources in favor of this image:
95
+ **The LCP image must never be lazy-loaded.** The LCP image - typically the hero image or first product image - must load as fast as possible. Apply `fetchpriority="high"` to signal the browser to deprioritize other resources in favor of this image:
96
96
 
97
97
  ```html
98
98
  <img
@@ -121,7 +121,7 @@ Smooth animation requires a consistent 60 frames per second, which means each fr
121
121
 
122
122
  **Never animate layout-triggering properties.** Properties like `width`, `height`, `margin`, `padding`, `top`, `left`, `right`, `bottom`, `border-width`, and `font-size` force the browser to recalculate layout for the entire affected subtree on every animation frame. This is guaranteed to exceed the 10ms JS budget on all but the simplest pages.
123
123
 
124
- **Only animate `transform` and `opacity`.** These two properties are composited by the GPU independently of the browser's main thread layout system. An animation that only changes `transform` and `opacity` does not trigger layout or paint it executes entirely on the compositor thread, achieving smooth 60fps even when the main thread is busy:
124
+ **Only animate `transform` and `opacity`.** These two properties are composited by the GPU independently of the browser's main thread layout system. An animation that only changes `transform` and `opacity` does not trigger layout or paint - it executes entirely on the compositor thread, achieving smooth 60fps even when the main thread is busy:
125
125
 
126
126
  ```css
127
127
  /* DO: GPU-composited, no layout cost */
@@ -140,7 +140,7 @@ Smooth animation requires a consistent 60 frames per second, which means each fr
140
140
  }
141
141
  ```
142
142
 
143
- Use `will-change: transform, opacity` on elements that will be animated to promote them to their own compositor layer before the animation begins. Use this property sparingly each compositor layer consumes GPU memory, and overuse causes memory pressure on mobile devices.
143
+ Use `will-change: transform, opacity` on elements that will be animated to promote them to their own compositor layer before the animation begins. Use this property sparingly - each compositor layer consumes GPU memory, and overuse causes memory pressure on mobile devices.
144
144
 
145
145
  ---
146
146
 
@@ -148,7 +148,7 @@ Use `will-change: transform, opacity` on elements that will be animated to promo
148
148
 
149
149
  Bundle size is a proxy for parse time and execution time, both of which block interactivity. Every kilobyte of JavaScript must be justified against its user-visible value.
150
150
 
151
- **Initial load budget:** The JavaScript required to render the first meaningful page interaction must be ≤170KB gzipped. This budget includes the framework runtime, routing, and any above-the-fold component logic. At average mobile connection speeds (≈1.5 Mbps download), 170KB gzipped represents approximately 900ms of transfer time already a significant portion of a 2.5s LCP budget before parse and execution time is counted.
151
+ **Initial load budget:** The JavaScript required to render the first meaningful page interaction must be ≤170KB gzipped. This budget includes the framework runtime, routing, and any above-the-fold component logic. At average mobile connection speeds (≈1.5 Mbps download), 170KB gzipped represents approximately 900ms of transfer time - already a significant portion of a 2.5s LCP budget before parse and execution time is counted.
152
152
 
153
153
  **Code splitting strategy:**
154
154
  - **Route-level splitting:** Each page/route is a separate async chunk. Users only download code for the pages they visit.
@@ -177,9 +177,9 @@ function Dashboard() {
177
177
 
178
178
  Web fonts are blocking resources in the critical rendering path. Every additional font family, weight, and style file adds to the payload that must load before text can be rendered.
179
179
 
180
- **Maximum two font families per product.** One for headings/display, one for body and UI. This constraint is both a performance budget and a typographic discipline every additional font family increases visual complexity and requires justification against a clear aesthetic goal.
180
+ **Maximum two font families per product.** One for headings/display, one for body and UI. This constraint is both a performance budget and a typographic discipline - every additional font family increases visual complexity and requires justification against a clear aesthetic goal.
181
181
 
182
- **`font-display: swap` is required.** This CSS property instructs the browser to use a system fallback font immediately and swap in the web font when it loads. Without `swap`, text is invisible during font loading (FOIT Flash of Invisible Text), which directly hurts LCP and user experience:
182
+ **`font-display: swap` is required.** This CSS property instructs the browser to use a system fallback font immediately and swap in the web font when it loads. Without `swap`, text is invisible during font loading (FOIT - Flash of Invisible Text), which directly hurts LCP and user experience:
183
183
 
184
184
  ```css
185
185
  @font-face {
@@ -215,7 +215,7 @@ Web fonts are blocking resources in the critical rendering path. Every additiona
215
215
 
216
216
  ## 7. Lighthouse CI Integration
217
217
 
218
- Automated performance regression testing prevents gradual budget creep small performance regressions accumulate unnoticed through routine development until the product is significantly slower than its target.
218
+ Automated performance regression testing prevents gradual budget creep - small performance regressions accumulate unnoticed through routine development until the product is significantly slower than its target.
219
219
 
220
220
  **GitHub Actions workflow:** Create `.github/workflows/lighthouse.yml` to run Lighthouse CI on every pull request against a staging deployment:
221
221
 
@@ -265,35 +265,35 @@ jobs:
265
265
 
266
266
  ## 8. React Runtime Performance
267
267
 
268
- React's rendering model is optimized by default, but naive usage patterns particularly around object identity, memoization, and context can introduce significant re-render cascades that degrade INP and animation smoothness.
268
+ React's rendering model is optimized by default, but naive usage patterns - particularly around object identity, memoization, and context - can introduce significant re-render cascades that degrade INP and animation smoothness.
269
269
 
270
270
  **Source: nextlevelbuilder/ui-ux-pro-max-skill (MIT)**
271
271
 
272
272
  ### `React.memo()`
273
273
 
274
- Use `React.memo()` only when the React DevTools Profiler demonstrates that a component re-renders with identical props and the render takes ≥50ms. `React.memo()` adds overhead a shallow prop comparison on every parent render that only pays for itself when the avoided render cost exceeds the comparison cost. Never memoize components that receive primitive values (strings, numbers, booleans) as props; React's reconciler handles these efficiently without memoization.
274
+ Use `React.memo()` only when the React DevTools Profiler demonstrates that a component re-renders with identical props and the render takes ≥50ms. `React.memo()` adds overhead - a shallow prop comparison on every parent render - that only pays for itself when the avoided render cost exceeds the comparison cost. Never memoize components that receive primitive values (strings, numbers, booleans) as props; React's reconciler handles these efficiently without memoization.
275
275
 
276
276
  ### `useMemo()`
277
277
 
278
- Use `useMemo()` for computationally expensive derivations sorting or filtering large arrays, running statistical calculations, or building complex objects from raw data where the computation takes more than 1ms and the dependencies are stable across most renders. Do not use `useMemo()` to memoize simple object creation for the purpose of maintaining reference identity; instead, move the object outside the component or into a `useRef` if it is genuinely static.
278
+ Use `useMemo()` for computationally expensive derivations - sorting or filtering large arrays, running statistical calculations, or building complex objects from raw data - where the computation takes more than 1ms and the dependencies are stable across most renders. Do not use `useMemo()` to memoize simple object creation for the purpose of maintaining reference identity; instead, move the object outside the component or into a `useRef` if it is genuinely static.
279
279
 
280
280
  ### `useCallback()`
281
281
 
282
- Use `useCallback()` when a function is passed as a prop to a memoized child component and the function's creation would invalidate the child's memo on every parent render. `useCallback()` is not needed for event handlers attached directly to DOM elements (`onClick`, `onChange`) the DOM does not compare function references. The cost of useCallback (closure creation + dependency comparison) is only justified when it prevents a measurable re-render cascade.
282
+ Use `useCallback()` when a function is passed as a prop to a memoized child component and the function's creation would invalidate the child's memo on every parent render. `useCallback()` is not needed for event handlers attached directly to DOM elements (`onClick`, `onChange`) - the DOM does not compare function references. The cost of useCallback (closure creation + dependency comparison) is only justified when it prevents a measurable re-render cascade.
283
283
 
284
284
  ### Re-render Root Causes
285
285
 
286
- The two most common causes of unnecessary re-renders are (1) new object and array references created inline in JSX, and (2) Context value changes propagating to all consumers. Avoid `value={{ key: value }}` inline in Context providers this creates a new object reference on every parent render, re-rendering all consumers. Memoize the context value with `useMemo()` or split contexts so consumers only subscribe to the slice of state they need.
286
+ The two most common causes of unnecessary re-renders are (1) new object and array references created inline in JSX, and (2) Context value changes propagating to all consumers. Avoid `value={{ key: value }}` inline in Context providers - this creates a new object reference on every parent render, re-rendering all consumers. Memoize the context value with `useMemo()` or split contexts so consumers only subscribe to the slice of state they need.
287
287
 
288
288
  Avoid anonymous arrow functions as props to performance-critical components: `<List onItemClick={() => handleClick(id)} />` creates a new function reference on every render of the parent.
289
289
 
290
290
  ### Suspense Boundaries
291
291
 
292
- Place Suspense boundaries at two levels: route-level (wrapping each page's lazy-loaded component tree) and per-expensive-async-boundary (wrapping individual data-fetching components that have independent loading states). The fallback UI must match the approximate layout dimensions of the loaded content a fallback that occupies significantly different space than the loaded component will cause CLS when the content arrives.
292
+ Place Suspense boundaries at two levels: route-level (wrapping each page's lazy-loaded component tree) and per-expensive-async-boundary (wrapping individual data-fetching components that have independent loading states). The fallback UI must match the approximate layout dimensions of the loaded content - a fallback that occupies significantly different space than the loaded component will cause CLS when the content arrives.
293
293
 
294
294
  ### React Server Components vs. Client Components
295
295
 
296
- Use RSC (React Server Components) for data fetching, static markup generation, and components that do not require browser APIs or user interaction. RSC output is streamed as HTML it adds zero JavaScript to the client bundle. Use client components (`'use client'`) only when browser APIs (localStorage, geolocation, IntersectionObserver) or event handlers (onClick, onChange) are required. Co-locate client components as deep in the component tree as possible so that only the interactive leaf nodes are included in the client bundle, not their entire parent subtrees.
296
+ Use RSC (React Server Components) for data fetching, static markup generation, and components that do not require browser APIs or user interaction. RSC output is streamed as HTML - it adds zero JavaScript to the client bundle. Use client components (`'use client'`) only when browser APIs (localStorage, geolocation, IntersectionObserver) or event handlers (onClick, onChange) are required. Co-locate client components as deep in the component tree as possible so that only the interactive leaf nodes are included in the client bundle, not their entire parent subtrees.
297
297
 
298
298
  ### Virtualization
299
299