@litfamily/litopencode 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (690) hide show
  1. package/.gitattributes +8 -0
  2. package/ATTRIBUTION.md +56 -0
  3. package/CHANGELOG.md +267 -0
  4. package/CODE_OF_CONDUCT.md +30 -0
  5. package/CONTRIBUTING.md +82 -0
  6. package/LICENSE +21 -0
  7. package/README-Ko-KR.md +252 -0
  8. package/README.md +252 -0
  9. package/SECURITY.md +36 -0
  10. package/SUPPORT.md +37 -0
  11. package/bin/litopencode +3 -0
  12. package/bin/litopencode.cjs +10 -0
  13. package/dist/activation-managed-prompts.d.ts +2 -0
  14. package/dist/activation-managed-prompts.js +51 -0
  15. package/dist/activation-primary-prompts.d.ts +2 -0
  16. package/dist/activation-primary-prompts.js +176 -0
  17. package/dist/activation-probe.d.ts +3 -0
  18. package/dist/activation-probe.js +19 -0
  19. package/dist/activation-prompt-utils.d.ts +6 -0
  20. package/dist/activation-prompt-utils.js +36 -0
  21. package/dist/activation-routing.d.ts +5 -0
  22. package/dist/activation-routing.js +340 -0
  23. package/dist/activation-workflow-prompts.d.ts +26 -0
  24. package/dist/activation-workflow-prompts.js +295 -0
  25. package/dist/activation.d.ts +24 -0
  26. package/dist/activation.js +152 -0
  27. package/dist/agents/defaults.d.ts +15 -0
  28. package/dist/agents/defaults.js +112 -0
  29. package/dist/agents/registry.d.ts +65 -0
  30. package/dist/agents/registry.js +319 -0
  31. package/dist/agents/specialists.d.ts +49 -0
  32. package/dist/agents/specialists.js +307 -0
  33. package/dist/agents/types.d.ts +55 -0
  34. package/dist/agents/types.js +4 -0
  35. package/dist/agents.d.ts +4 -0
  36. package/dist/agents.js +3 -0
  37. package/dist/benchmark.d.ts +94 -0
  38. package/dist/benchmark.js +172 -0
  39. package/dist/bounded-authority-hooks.d.ts +19 -0
  40. package/dist/bounded-authority-hooks.js +157 -0
  41. package/dist/bounded-authority.d.ts +184 -0
  42. package/dist/bounded-authority.js +825 -0
  43. package/dist/cache-metrics.d.ts +54 -0
  44. package/dist/cache-metrics.js +81 -0
  45. package/dist/cli/args.d.ts +5 -0
  46. package/dist/cli/args.js +415 -0
  47. package/dist/cli/auto-update.d.ts +117 -0
  48. package/dist/cli/auto-update.js +604 -0
  49. package/dist/cli/command-alias-ownership.d.ts +2 -0
  50. package/dist/cli/command-alias-ownership.js +14 -0
  51. package/dist/cli/command-aliases.d.ts +12 -0
  52. package/dist/cli/command-aliases.js +112 -0
  53. package/dist/cli/doctor.d.ts +2 -0
  54. package/dist/cli/doctor.js +175 -0
  55. package/dist/cli/host-capabilities.d.ts +12 -0
  56. package/dist/cli/host-capabilities.js +25 -0
  57. package/dist/cli/host-limits.d.ts +21 -0
  58. package/dist/cli/host-limits.js +83 -0
  59. package/dist/cli/install-config.d.ts +13 -0
  60. package/dist/cli/install-config.js +201 -0
  61. package/dist/cli/install-report.d.ts +2 -0
  62. package/dist/cli/install-report.js +180 -0
  63. package/dist/cli/install-tui.d.ts +12 -0
  64. package/dist/cli/install-tui.js +174 -0
  65. package/dist/cli/install.d.ts +2 -0
  66. package/dist/cli/install.js +264 -0
  67. package/dist/cli/json.d.ts +4 -0
  68. package/dist/cli/json.js +31 -0
  69. package/dist/cli/loop.d.ts +3 -0
  70. package/dist/cli/loop.js +135 -0
  71. package/dist/cli/lsp-capability.d.ts +17 -0
  72. package/dist/cli/lsp-capability.js +92 -0
  73. package/dist/cli/managed-skill-assets.d.ts +23 -0
  74. package/dist/cli/managed-skill-assets.js +117 -0
  75. package/dist/cli/model-catalog.d.ts +21 -0
  76. package/dist/cli/model-catalog.js +107 -0
  77. package/dist/cli/model-policy.d.ts +3 -0
  78. package/dist/cli/model-policy.js +143 -0
  79. package/dist/cli/model-routing.d.ts +5 -0
  80. package/dist/cli/model-routing.js +208 -0
  81. package/dist/cli/native-canonical-backup.d.ts +9 -0
  82. package/dist/cli/native-canonical-backup.js +96 -0
  83. package/dist/cli/native-canonical-cache.d.ts +9 -0
  84. package/dist/cli/native-canonical-cache.js +37 -0
  85. package/dist/cli/native-skill-install.d.ts +2 -0
  86. package/dist/cli/native-skill-install.js +128 -0
  87. package/dist/cli/native-skill-integrity.d.ts +25 -0
  88. package/dist/cli/native-skill-integrity.js +178 -0
  89. package/dist/cli/native-skill-tree.d.ts +12 -0
  90. package/dist/cli/native-skill-tree.js +104 -0
  91. package/dist/cli/native-skills.d.ts +22 -0
  92. package/dist/cli/native-skills.js +105 -0
  93. package/dist/cli/plugin-mutation.d.ts +4 -0
  94. package/dist/cli/plugin-mutation.js +89 -0
  95. package/dist/cli/scientific-visualization-dependencies.d.ts +18 -0
  96. package/dist/cli/scientific-visualization-dependencies.js +91 -0
  97. package/dist/cli/skill-loop.d.ts +3 -0
  98. package/dist/cli/skill-loop.js +649 -0
  99. package/dist/cli/types.d.ts +188 -0
  100. package/dist/cli/types.js +1 -0
  101. package/dist/cli/update-check.d.ts +2 -0
  102. package/dist/cli/update-check.js +15 -0
  103. package/dist/cli/update-notifier.d.ts +70 -0
  104. package/dist/cli/update-notifier.js +717 -0
  105. package/dist/cli/vendor-path-migration.d.ts +9 -0
  106. package/dist/cli/vendor-path-migration.js +96 -0
  107. package/dist/cli.d.ts +7 -0
  108. package/dist/cli.js +250 -0
  109. package/dist/commands.d.ts +331 -0
  110. package/dist/commands.js +600 -0
  111. package/dist/config-parser.d.ts +5 -0
  112. package/dist/config-parser.js +274 -0
  113. package/dist/config.d.ts +72 -0
  114. package/dist/config.js +157 -0
  115. package/dist/deliverable-hedge-guard.d.ts +26 -0
  116. package/dist/deliverable-hedge-guard.js +302 -0
  117. package/dist/durable-plan.d.ts +23 -0
  118. package/dist/durable-plan.js +349 -0
  119. package/dist/features.d.ts +828 -0
  120. package/dist/features.js +1109 -0
  121. package/dist/hooks.d.ts +17 -0
  122. package/dist/hooks.js +83 -0
  123. package/dist/ignition.d.ts +14 -0
  124. package/dist/ignition.js +33 -0
  125. package/dist/index.d.ts +30 -0
  126. package/dist/index.js +30 -0
  127. package/dist/inert-data.d.ts +2 -0
  128. package/dist/inert-data.js +13 -0
  129. package/dist/knowledge.d.ts +98 -0
  130. package/dist/knowledge.js +961 -0
  131. package/dist/ledger.d.ts +181 -0
  132. package/dist/ledger.js +1179 -0
  133. package/dist/lit-fetch-classify.d.ts +8 -0
  134. package/dist/lit-fetch-classify.js +107 -0
  135. package/dist/lit-fetch-content.d.ts +2 -0
  136. package/dist/lit-fetch-content.js +43 -0
  137. package/dist/lit-fetch-http.d.ts +10 -0
  138. package/dist/lit-fetch-http.js +82 -0
  139. package/dist/lit-fetch-result.d.ts +2 -0
  140. package/dist/lit-fetch-result.js +65 -0
  141. package/dist/lit-fetch-ssrf.d.ts +9 -0
  142. package/dist/lit-fetch-ssrf.js +77 -0
  143. package/dist/lit-fetch-url.d.ts +3 -0
  144. package/dist/lit-fetch-url.js +28 -0
  145. package/dist/lit-fetch.d.ts +69 -0
  146. package/dist/lit-fetch.js +84 -0
  147. package/dist/lit-mark.d.ts +17 -0
  148. package/dist/lit-mark.js +129 -0
  149. package/dist/logger.d.ts +9 -0
  150. package/dist/logger.js +21 -0
  151. package/dist/model-route-policy.d.ts +25 -0
  152. package/dist/model-route-policy.js +129 -0
  153. package/dist/reader-facing-output.d.ts +3 -0
  154. package/dist/reader-facing-output.js +28 -0
  155. package/dist/rules/discovery.d.ts +36 -0
  156. package/dist/rules/discovery.js +270 -0
  157. package/dist/rules/engine.d.ts +43 -0
  158. package/dist/rules/engine.js +236 -0
  159. package/dist/rules/frontmatter.d.ts +16 -0
  160. package/dist/rules/frontmatter.js +179 -0
  161. package/dist/rules/glob.d.ts +12 -0
  162. package/dist/rules/glob.js +233 -0
  163. package/dist/rules/hooks.d.ts +25 -0
  164. package/dist/rules/hooks.js +75 -0
  165. package/dist/rules/output-style.d.ts +1 -0
  166. package/dist/rules/output-style.js +20 -0
  167. package/dist/scientific-visualization-banner.d.ts +1 -0
  168. package/dist/scientific-visualization-banner.js +2 -0
  169. package/dist/search-workflow-ideas.d.ts +67 -0
  170. package/dist/search-workflow-ideas.js +128 -0
  171. package/dist/secret-shapes.d.ts +9 -0
  172. package/dist/secret-shapes.js +63 -0
  173. package/dist/server.d.ts +6 -0
  174. package/dist/server.js +129 -0
  175. package/dist/session-lineage.d.ts +8 -0
  176. package/dist/session-lineage.js +12 -0
  177. package/dist/skill-loop/apply.d.ts +19 -0
  178. package/dist/skill-loop/apply.js +483 -0
  179. package/dist/skill-loop/config.d.ts +50 -0
  180. package/dist/skill-loop/config.js +215 -0
  181. package/dist/skill-loop/curator.d.ts +18 -0
  182. package/dist/skill-loop/curator.js +232 -0
  183. package/dist/skill-loop/ledger.d.ts +39 -0
  184. package/dist/skill-loop/ledger.js +344 -0
  185. package/dist/skill-loop/proposals.d.ts +48 -0
  186. package/dist/skill-loop/proposals.js +290 -0
  187. package/dist/skill-loop/storage.d.ts +72 -0
  188. package/dist/skill-loop/storage.js +817 -0
  189. package/dist/skill-loop/time.d.ts +2 -0
  190. package/dist/skill-loop/time.js +23 -0
  191. package/dist/skill-loop/transaction.d.ts +62 -0
  192. package/dist/skill-loop/transaction.js +836 -0
  193. package/dist/skill-loop/usage.d.ts +31 -0
  194. package/dist/skill-loop/usage.js +146 -0
  195. package/dist/skill-observer.d.ts +22 -0
  196. package/dist/skill-observer.js +1154 -0
  197. package/dist/skill-renames.d.ts +5 -0
  198. package/dist/skill-renames.js +8 -0
  199. package/dist/skills.d.ts +307 -0
  200. package/dist/skills.js +450 -0
  201. package/dist/stable-identity.d.ts +14 -0
  202. package/dist/stable-identity.js +15 -0
  203. package/dist/state.d.ts +25 -0
  204. package/dist/state.js +38 -0
  205. package/dist/strict-json.d.ts +2 -0
  206. package/dist/strict-json.js +94 -0
  207. package/dist/tool-guards.d.ts +34 -0
  208. package/dist/tool-guards.js +210 -0
  209. package/dist/tool-kit.d.ts +32 -0
  210. package/dist/tool-kit.js +75 -0
  211. package/dist/tools.d.ts +43 -0
  212. package/dist/tools.js +381 -0
  213. package/dist/uiux-visual-catalog.d.ts +50 -0
  214. package/dist/uiux-visual-catalog.js +103 -0
  215. package/dist/user-facing-markdown.d.ts +5 -0
  216. package/dist/user-facing-markdown.js +93 -0
  217. package/dist/workflow-families.d.ts +16 -0
  218. package/dist/workflow-families.js +95 -0
  219. package/docs/assets/cover.webp +0 -0
  220. package/docs/assets/litopencode-continuity-1600.webp +0 -0
  221. package/docs/assets/litopencode-ignition-1600.webp +0 -0
  222. package/docs/assets/readme/badge-license.svg +1 -0
  223. package/docs/assets/readme/badge-version.svg +1 -0
  224. package/docs/assets/readme/litopencode-clay-icon.png +0 -0
  225. package/docs/assets/readme/litopencode-wordmark.svg +5 -0
  226. package/docs/lit-mark.md +46 -0
  227. package/docs/migration.md +162 -0
  228. package/docs/privacy.md +82 -0
  229. package/docs/reference-Ko-KR.md +309 -0
  230. package/docs/reference.md +444 -0
  231. package/output-styles/asd-ste100-ko.md +41 -0
  232. package/output-styles/asd-ste100.md +40 -0
  233. package/output-styles/eli5-ko.md +13 -0
  234. package/output-styles/eli5.md +11 -0
  235. package/package.json +57 -0
  236. package/qa/fixtures/litfamily-harness-speed-v1.json +38 -0
  237. package/qa/harness-speed-contract.mjs +209 -0
  238. package/qa/harness-speed-v2-contract.mjs +213 -0
  239. package/qa/harness-speed-verdict.mjs +105 -0
  240. package/skills/agent-roster/SKILL.md +262 -0
  241. package/skills/autoconference/LICENSE +21 -0
  242. package/skills/autoconference/PROVENANCE.md +20 -0
  243. package/skills/autoconference/SKILL.md +125 -0
  244. package/skills/autoconference/assets/conference_template.md +76 -0
  245. package/skills/autoconference/assets/report_template.md +53 -0
  246. package/skills/autoconference/assets/synthesis_template.md +39 -0
  247. package/skills/autoconference/modes/analyze.md +255 -0
  248. package/skills/autoconference/modes/core.md +112 -0
  249. package/skills/autoconference/modes/debate.md +373 -0
  250. package/skills/autoconference/modes/plan.md +310 -0
  251. package/skills/autoconference/modes/resume.md +48 -0
  252. package/skills/autoconference/modes/ship.md +57 -0
  253. package/skills/autoconference/modes/survey.md +109 -0
  254. package/skills/autoconference/references/agent-prompts.md +134 -0
  255. package/skills/autoconference/references/conference-protocol.md +102 -0
  256. package/skills/autoconference/references/convergence-guide.md +167 -0
  257. package/skills/autoconference/references/core-principles.md +83 -0
  258. package/skills/autoconference/references/crash-recovery.md +104 -0
  259. package/skills/autoconference/references/results-logging.md +198 -0
  260. package/skills/autoconference/references/upstream-family-contract.md +130 -0
  261. package/skills/autoconference/references/visualization-guide.md +105 -0
  262. package/skills/autoconference/scripts/check_conference.sh +371 -0
  263. package/skills/autoconference/scripts/init_conference.py +625 -0
  264. package/skills/autoconference/scripts/style_presets.py +104 -0
  265. package/skills/autoresearch/LICENSE +21 -0
  266. package/skills/autoresearch/PROVENANCE.md +20 -0
  267. package/skills/autoresearch/SKILL.md +131 -0
  268. package/skills/autoresearch/assets/report_template.md +50 -0
  269. package/skills/autoresearch/assets/research_template.md +38 -0
  270. package/skills/autoresearch/assets/results_template.tsv +1 -0
  271. package/skills/autoresearch/modes/core.md +216 -0
  272. package/skills/autoresearch/modes/debug.md +235 -0
  273. package/skills/autoresearch/modes/fix.md +173 -0
  274. package/skills/autoresearch/modes/learn.md +91 -0
  275. package/skills/autoresearch/modes/plan.md +291 -0
  276. package/skills/autoresearch/modes/predict.md +266 -0
  277. package/skills/autoresearch/modes/reason.md +170 -0
  278. package/skills/autoresearch/modes/scenario.md +164 -0
  279. package/skills/autoresearch/modes/security.md +282 -0
  280. package/skills/autoresearch/modes/ship.md +49 -0
  281. package/skills/autoresearch/references/core-principles.md +80 -0
  282. package/skills/autoresearch/references/evaluator-contract.md +126 -0
  283. package/skills/autoresearch/references/investigation-techniques.md +205 -0
  284. package/skills/autoresearch/references/owasp-checklist.md +161 -0
  285. package/skills/autoresearch/references/persona-templates.md +232 -0
  286. package/skills/autoresearch/references/results-logging.md +96 -0
  287. package/skills/autoresearch/references/scenario-dimensions.md +178 -0
  288. package/skills/autoresearch/references/stride-model.md +196 -0
  289. package/skills/autoresearch/references/stuck-detection.md +107 -0
  290. package/skills/autoresearch/references/type-checklists.md +163 -0
  291. package/skills/autoresearch/references/upstream-family-contract.md +125 -0
  292. package/skills/autoresearch/references/visualization-guide.md +95 -0
  293. package/skills/autoresearch/scripts/check_progress.sh +272 -0
  294. package/skills/autoresearch/scripts/init_research.py +330 -0
  295. package/skills/autoresearch/scripts/run_with_deadline.py +164 -0
  296. package/skills/autoresearch/scripts/style_presets.py +104 -0
  297. package/skills/browser-drive/SKILL.md +133 -0
  298. package/skills/browser-drive/references/snapshot-act-loop.md +37 -0
  299. package/skills/browser-drive/scripts/capability-probe.mjs +262 -0
  300. package/skills/comment-checker/SKILL.md +171 -0
  301. package/skills/debugging/SKILL.md +202 -0
  302. package/skills/debugging/references/README.md +15 -0
  303. package/skills/debugging/references/escalation.md +43 -0
  304. package/skills/debugging/references/runtimes/README.md +17 -0
  305. package/skills/debugging/references/runtimes/bundled-js-binary.md +44 -0
  306. package/skills/debugging/references/runtimes/go.md +37 -0
  307. package/skills/debugging/references/runtimes/native-binary.md +44 -0
  308. package/skills/debugging/references/runtimes/node.md +43 -0
  309. package/skills/debugging/references/runtimes/python.md +41 -0
  310. package/skills/debugging/references/runtimes/rust.md +37 -0
  311. package/skills/debugging/references/tools.md +72 -0
  312. package/skills/deep-interview/SKILL.md +201 -0
  313. package/skills/doctor-installer/SKILL.md +252 -0
  314. package/skills/durable-litgoal/SKILL.md +248 -0
  315. package/skills/frontend-ui-ux/SKILL.md +70 -0
  316. package/skills/frontend-ui-ux/data/LICENSE +21 -0
  317. package/skills/frontend-ui-ux/data/PROVENANCE.json +1088 -0
  318. package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +14 -0
  319. package/skills/frontend-ui-ux/data/design-intelligence.json +1 -0
  320. package/skills/frontend-ui-ux/references/_canonical-corpus/ATTRIBUTION.md +217 -0
  321. package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE +21 -0
  322. package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE-Apache-2.0.txt +201 -0
  323. package/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +867 -0
  324. package/skills/frontend-ui-ux/references/adaptive-layout.md +85 -0
  325. package/skills/frontend-ui-ux/references/brand-and-imagery.md +79 -0
  326. package/skills/frontend-ui-ux/references/complete-contract.md +282 -0
  327. package/skills/frontend-ui-ux/references/composition.md +87 -0
  328. package/skills/frontend-ui-ux/references/creative-directions.md +83 -0
  329. package/skills/frontend-ui-ux/references/design/README.md +248 -0
  330. package/skills/frontend-ui-ux/references/design/_INDEX.md +191 -0
  331. package/skills/frontend-ui-ux/references/design/airbnb.md +393 -0
  332. package/skills/frontend-ui-ux/references/design/airtable.md +92 -0
  333. package/skills/frontend-ui-ux/references/design/apple.md +250 -0
  334. package/skills/frontend-ui-ux/references/design/aside.md +209 -0
  335. package/skills/frontend-ui-ux/references/design/binance.md +348 -0
  336. package/skills/frontend-ui-ux/references/design/bmw.md +183 -0
  337. package/skills/frontend-ui-ux/references/design/brutalist-skill.md +92 -0
  338. package/skills/frontend-ui-ux/references/design/bugatti.md +271 -0
  339. package/skills/frontend-ui-ux/references/design/cal.md +262 -0
  340. package/skills/frontend-ui-ux/references/design/claude.md +315 -0
  341. package/skills/frontend-ui-ux/references/design/clay.md +307 -0
  342. package/skills/frontend-ui-ux/references/design/clickhouse.md +284 -0
  343. package/skills/frontend-ui-ux/references/design/clone-from-url.md +65 -0
  344. package/skills/frontend-ui-ux/references/design/cohere.md +269 -0
  345. package/skills/frontend-ui-ux/references/design/coinbase.md +132 -0
  346. package/skills/frontend-ui-ux/references/design/composio.md +310 -0
  347. package/skills/frontend-ui-ux/references/design/cursor.md +312 -0
  348. package/skills/frontend-ui-ux/references/design/design-system-architecture.md +244 -0
  349. package/skills/frontend-ui-ux/references/design/elevenlabs.md +268 -0
  350. package/skills/frontend-ui-ux/references/design/expo.md +284 -0
  351. package/skills/frontend-ui-ux/references/design/ferrari.md +317 -0
  352. package/skills/frontend-ui-ux/references/design/figma.md +223 -0
  353. package/skills/frontend-ui-ux/references/design/framer.md +249 -0
  354. package/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +74 -0
  355. package/skills/frontend-ui-ux/references/design/hashicorp.md +281 -0
  356. package/skills/frontend-ui-ux/references/design/ibm.md +335 -0
  357. package/skills/frontend-ui-ux/references/design/image-to-code-skill.md +1228 -0
  358. package/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +798 -0
  359. package/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +1465 -0
  360. package/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +987 -0
  361. package/skills/frontend-ui-ux/references/design/intercom.md +149 -0
  362. package/skills/frontend-ui-ux/references/design/kraken.md +128 -0
  363. package/skills/frontend-ui-ux/references/design/lamborghini.md +291 -0
  364. package/skills/frontend-ui-ux/references/design/layout-skill.md +107 -0
  365. package/skills/frontend-ui-ux/references/design/lazyweb.md +77 -0
  366. package/skills/frontend-ui-ux/references/design/linear.app.md +370 -0
  367. package/skills/frontend-ui-ux/references/design/lovable.md +301 -0
  368. package/skills/frontend-ui-ux/references/design/mastercard.md +368 -0
  369. package/skills/frontend-ui-ux/references/design/meta.md +369 -0
  370. package/skills/frontend-ui-ux/references/design/minimalist-skill.md +85 -0
  371. package/skills/frontend-ui-ux/references/design/minimax.md +260 -0
  372. package/skills/frontend-ui-ux/references/design/mintlify.md +329 -0
  373. package/skills/frontend-ui-ux/references/design/miro.md +111 -0
  374. package/skills/frontend-ui-ux/references/design/mistral.ai.md +264 -0
  375. package/skills/frontend-ui-ux/references/design/mongodb.md +269 -0
  376. package/skills/frontend-ui-ux/references/design/nike.md +366 -0
  377. package/skills/frontend-ui-ux/references/design/notion.md +312 -0
  378. package/skills/frontend-ui-ux/references/design/nvidia.md +296 -0
  379. package/skills/frontend-ui-ux/references/design/ollama.md +270 -0
  380. package/skills/frontend-ui-ux/references/design/opencode.ai.md +284 -0
  381. package/skills/frontend-ui-ux/references/design/output-skill.md +49 -0
  382. package/skills/frontend-ui-ux/references/design/pinterest.md +233 -0
  383. package/skills/frontend-ui-ux/references/design/playstation.md +367 -0
  384. package/skills/frontend-ui-ux/references/design/posthog.md +259 -0
  385. package/skills/frontend-ui-ux/references/design/raycast.md +271 -0
  386. package/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +230 -0
  387. package/skills/frontend-ui-ux/references/design/redesign-skill.md +178 -0
  388. package/skills/frontend-ui-ux/references/design/renault.md +314 -0
  389. package/skills/frontend-ui-ux/references/design/replicate.md +264 -0
  390. package/skills/frontend-ui-ux/references/design/resend.md +306 -0
  391. package/skills/frontend-ui-ux/references/design/revolut.md +188 -0
  392. package/skills/frontend-ui-ux/references/design/runwayml.md +247 -0
  393. package/skills/frontend-ui-ux/references/design/sanity.md +360 -0
  394. package/skills/frontend-ui-ux/references/design/sentry.md +265 -0
  395. package/skills/frontend-ui-ux/references/design/shopify.md +353 -0
  396. package/skills/frontend-ui-ux/references/design/soft-skill.md +98 -0
  397. package/skills/frontend-ui-ux/references/design/spacex.md +197 -0
  398. package/skills/frontend-ui-ux/references/design/spotify.md +249 -0
  399. package/skills/frontend-ui-ux/references/design/starbucks.md +583 -0
  400. package/skills/frontend-ui-ux/references/design/stitch-design-example.md +121 -0
  401. package/skills/frontend-ui-ux/references/design/stitch-skill.md +184 -0
  402. package/skills/frontend-ui-ux/references/design/stripe.md +325 -0
  403. package/skills/frontend-ui-ux/references/design/supabase.md +258 -0
  404. package/skills/frontend-ui-ux/references/design/superhuman.md +255 -0
  405. package/skills/frontend-ui-ux/references/design/taste-skill.md +1206 -0
  406. package/skills/frontend-ui-ux/references/design/tesla.md +289 -0
  407. package/skills/frontend-ui-ux/references/design/theverge.md +342 -0
  408. package/skills/frontend-ui-ux/references/design/together.ai.md +266 -0
  409. package/skills/frontend-ui-ux/references/design/uber.md +298 -0
  410. package/skills/frontend-ui-ux/references/design/vercel.md +313 -0
  411. package/skills/frontend-ui-ux/references/design/vodafone.md +426 -0
  412. package/skills/frontend-ui-ux/references/design/voltagent.md +326 -0
  413. package/skills/frontend-ui-ux/references/design/warp.md +256 -0
  414. package/skills/frontend-ui-ux/references/design/webflow.md +95 -0
  415. package/skills/frontend-ui-ux/references/design/wired.md +281 -0
  416. package/skills/frontend-ui-ux/references/design/wise.md +176 -0
  417. package/skills/frontend-ui-ux/references/design/x.ai.md +260 -0
  418. package/skills/frontend-ui-ux/references/design/zapier.md +331 -0
  419. package/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +97 -0
  420. package/skills/frontend-ui-ux/references/designpowers/README.md +48 -0
  421. package/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +80 -0
  422. package/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +64 -0
  423. package/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +65 -0
  424. package/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +65 -0
  425. package/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +83 -0
  426. package/skills/frontend-ui-ux/references/designpowers/orchestration.md +80 -0
  427. package/skills/frontend-ui-ux/references/designpowers/routing.md +79 -0
  428. package/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +21 -0
  429. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  430. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +132 -0
  431. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +109 -0
  432. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +89 -0
  433. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +113 -0
  434. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +78 -0
  435. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +121 -0
  436. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  437. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  438. package/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +120 -0
  439. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +101 -0
  440. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
  441. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
  442. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +199 -0
  443. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
  444. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +125 -0
  445. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +106 -0
  446. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
  447. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +123 -0
  448. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
  449. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
  450. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
  451. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
  452. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
  453. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +122 -0
  454. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
  455. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +96 -0
  456. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
  457. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
  458. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
  459. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +78 -0
  460. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +75 -0
  461. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +117 -0
  462. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +78 -0
  463. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
  464. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
  465. package/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
  466. package/skills/frontend-ui-ux/references/evidence-review.md +103 -0
  467. package/skills/frontend-ui-ux/references/implementation-platforms.md +94 -0
  468. package/skills/frontend-ui-ux/references/inclusive-interface.md +85 -0
  469. package/skills/frontend-ui-ux/references/interaction-motion.md +93 -0
  470. package/skills/frontend-ui-ux/references/operating-lanes.md +80 -0
  471. package/skills/frontend-ui-ux/references/perfection/README.md +160 -0
  472. package/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +127 -0
  473. package/skills/frontend-ui-ux/references/performance-delivery.md +77 -0
  474. package/skills/frontend-ui-ux/references/product-direction.md +84 -0
  475. package/skills/frontend-ui-ux/references/redesign-playbook.md +88 -0
  476. package/skills/frontend-ui-ux/references/system-foundations.md +86 -0
  477. package/skills/frontend-ui-ux/references/taste-direction.md +55 -0
  478. package/skills/frontend-ui-ux/references/ui-ux-db/README.md +659 -0
  479. package/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +26 -0
  480. package/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +162 -0
  481. package/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +106 -0
  482. package/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +35 -0
  483. package/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +162 -0
  484. package/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +45 -0
  485. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +54 -0
  486. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +53 -0
  487. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
  488. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
  489. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +53 -0
  490. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
  491. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
  492. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +52 -0
  493. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +54 -0
  494. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +61 -0
  495. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +54 -0
  496. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +51 -0
  497. package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +50 -0
  498. package/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +85 -0
  499. package/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +74 -0
  500. package/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +162 -0
  501. package/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +100 -0
  502. package/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +31 -0
  503. package/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +262 -0
  504. package/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +1148 -0
  505. package/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +114 -0
  506. package/skills/frontend-ui-ux/references/visual-language.md +84 -0
  507. package/skills/frontend-ui-ux/references/visual-reconstruction.md +87 -0
  508. package/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.json +570 -0
  509. package/skills/frontend-ui-ux/schemas/design-contract-v1beta1.json +32 -0
  510. package/skills/frontend-ui-ux/schemas/design-contract-v1beta2.json +34 -0
  511. package/skills/frontend-ui-ux/scripts/bounded-json.mjs +45 -0
  512. package/skills/frontend-ui-ux/scripts/canonical-json.mjs +26 -0
  513. package/skills/frontend-ui-ux/scripts/contract-error.mjs +15 -0
  514. package/skills/frontend-ui-ux/scripts/csv.mjs +64 -0
  515. package/skills/frontend-ui-ux/scripts/dataset.mjs +65 -0
  516. package/skills/frontend-ui-ux/scripts/design-contract.mjs +609 -0
  517. package/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +193 -0
  518. package/skills/frontend-ui-ux/scripts/retrieval.mjs +92 -0
  519. package/skills/frontend-ui-ux/scripts/stable-file-read.mjs +237 -0
  520. package/skills/frontend-ui-ux/scripts/stdin-json.mjs +16 -0
  521. package/skills/frontend-ui-ux/scripts/strict-json.mjs +102 -0
  522. package/skills/frontend-ui-ux/scripts/uiux.mjs +86 -0
  523. package/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +266 -0
  524. package/skills/lit-burnoff/SKILL.md +227 -0
  525. package/skills/lit-burnoff-file/SKILL.md +175 -0
  526. package/skills/lit-code/SKILL.md +266 -0
  527. package/skills/lit-code/references/README.md +18 -0
  528. package/skills/lit-code/references/go/README.md +12 -0
  529. package/skills/lit-code/references/go/concurrency.md +42 -0
  530. package/skills/lit-code/references/go/error-handling.md +47 -0
  531. package/skills/lit-code/references/go/testing.md +55 -0
  532. package/skills/lit-code/references/go/tooling.md +35 -0
  533. package/skills/lit-code/references/go/type-patterns.md +50 -0
  534. package/skills/lit-code/references/python/README.md +12 -0
  535. package/skills/lit-code/references/python/async.md +50 -0
  536. package/skills/lit-code/references/python/error-handling.md +44 -0
  537. package/skills/lit-code/references/python/testing.md +50 -0
  538. package/skills/lit-code/references/python/tooling.md +38 -0
  539. package/skills/lit-code/references/python/type-patterns.md +46 -0
  540. package/skills/lit-code/references/rust/README.md +12 -0
  541. package/skills/lit-code/references/rust/concurrency.md +45 -0
  542. package/skills/lit-code/references/rust/error-handling.md +43 -0
  543. package/skills/lit-code/references/rust/tooling.md +36 -0
  544. package/skills/lit-code/references/rust/type-patterns.md +46 -0
  545. package/skills/lit-code/references/rust/unsafe.md +47 -0
  546. package/skills/lit-code/references/typescript/README.md +11 -0
  547. package/skills/lit-code/references/typescript/error-handling.md +56 -0
  548. package/skills/lit-code/references/typescript/testing.md +42 -0
  549. package/skills/lit-code/references/typescript/tsconfig-strict.md +40 -0
  550. package/skills/lit-code/references/typescript/type-patterns.md +60 -0
  551. package/skills/lit-commit/SKILL.md +222 -0
  552. package/skills/lit-comprehend/SKILL.md +278 -0
  553. package/skills/lit-comprehend/assets/explainer-scaffold.html +104 -0
  554. package/skills/lit-comprehend/references/artifact-template.md +114 -0
  555. package/skills/lit-comprehend/references/micro-worlds.md +115 -0
  556. package/skills/lit-comprehend/scripts/verify-explainer.ts +339 -0
  557. package/skills/lit-crucible/SKILL.md +212 -0
  558. package/skills/lit-fetch/SKILL.md +242 -0
  559. package/skills/lit-handoff/SKILL.md +199 -0
  560. package/skills/lit-init/SKILL.md +214 -0
  561. package/skills/lit-korean/SKILL.md +231 -0
  562. package/skills/lit-plan/SKILL.md +351 -0
  563. package/skills/lit-plan/scripts/scaffold-plan.mjs +275 -0
  564. package/skills/lit-recap/SKILL.md +233 -0
  565. package/skills/lit-scientific-visualization/SKILL.md +175 -0
  566. package/skills/litresearch/SKILL.md +436 -0
  567. package/skills/litwork/SKILL.md +227 -0
  568. package/skills/lsp/SKILL.md +186 -0
  569. package/skills/lsp-setup/SKILL.md +187 -0
  570. package/skills/lsp-setup/references/README.md +40 -0
  571. package/skills/lsp-setup/references/bash.md +31 -0
  572. package/skills/lsp-setup/references/c-cpp.md +43 -0
  573. package/skills/lsp-setup/references/csharp.md +29 -0
  574. package/skills/lsp-setup/references/dart.md +25 -0
  575. package/skills/lsp-setup/references/elixir.md +30 -0
  576. package/skills/lsp-setup/references/go.md +33 -0
  577. package/skills/lsp-setup/references/haskell.md +27 -0
  578. package/skills/lsp-setup/references/java.md +28 -0
  579. package/skills/lsp-setup/references/julia.md +28 -0
  580. package/skills/lsp-setup/references/kotlin.md +25 -0
  581. package/skills/lsp-setup/references/lua.md +26 -0
  582. package/skills/lsp-setup/references/php.md +30 -0
  583. package/skills/lsp-setup/references/python.md +33 -0
  584. package/skills/lsp-setup/references/ruby.md +34 -0
  585. package/skills/lsp-setup/references/rust.md +34 -0
  586. package/skills/lsp-setup/references/swift.md +26 -0
  587. package/skills/lsp-setup/references/terraform.md +26 -0
  588. package/skills/lsp-setup/references/typescript.md +35 -0
  589. package/skills/lsp-setup/references/yaml.md +27 -0
  590. package/skills/lsp-setup/references/zig.md +28 -0
  591. package/skills/managed-skill-manifest.json +1386 -0
  592. package/skills/native-goal-verdict/SKILL.md +216 -0
  593. package/skills/refactor/SKILL.md +221 -0
  594. package/skills/reference-benchmark-claims/SKILL.md +204 -0
  595. package/skills/release-guardrails/SKILL.md +245 -0
  596. package/skills/review-work/SKILL.md +301 -0
  597. package/skills/rules/SKILL.md +196 -0
  598. package/skills/search-workflow-ideas/SKILL.md +223 -0
  599. package/skills/skill-observer/SKILL.md +148 -0
  600. package/skills/skill-observer/references/review-contract.md +95 -0
  601. package/skills/skill-rename-aliases.json +10 -0
  602. package/skills/start-work/SKILL.md +334 -0
  603. package/skills/structural-search/SKILL.md +234 -0
  604. package/skills/tool-guards/SKILL.md +223 -0
  605. package/skills/visual-qa/SKILL.md +61 -0
  606. package/skills/visual-qa/references/capture-playbook.md +105 -0
  607. package/skills/visual-qa/references/complete-contract.md +411 -0
  608. package/skills/visual-qa/schemas/evidence-manifest-v1alpha1.json +201 -0
  609. package/skills/visual-qa/schemas/evidence-manifest-v1beta1.json +141 -0
  610. package/skills/visual-qa/schemas/review-receipt-v1alpha1.json +113 -0
  611. package/skills/visual-qa/scripts/artifact.mjs +123 -0
  612. package/skills/visual-qa/scripts/bounded-json.mjs +47 -0
  613. package/skills/visual-qa/scripts/canonical-json.mjs +28 -0
  614. package/skills/visual-qa/scripts/capabilities.mjs +66 -0
  615. package/skills/visual-qa/scripts/contract-text.mjs +15 -0
  616. package/skills/visual-qa/scripts/design-contract.mjs +611 -0
  617. package/skills/visual-qa/scripts/evidence-evaluate.mjs +521 -0
  618. package/skills/visual-qa/scripts/evidence.mjs +271 -0
  619. package/skills/visual-qa/scripts/png-decode.mjs +146 -0
  620. package/skills/visual-qa/scripts/png.mjs +154 -0
  621. package/skills/visual-qa/scripts/review.mjs +188 -0
  622. package/skills/visual-qa/scripts/stdin-json.mjs +16 -0
  623. package/skills/visual-qa/scripts/strict-json.mjs +102 -0
  624. package/skills/visual-qa/scripts/tui.mjs +149 -0
  625. package/skills/visual-qa/scripts/visual-qa.mjs +90 -0
  626. package/skills/wikify/LICENSE +21 -0
  627. package/skills/wikify/PROVENANCE.md +18 -0
  628. package/skills/wikify/SKILL.md +176 -0
  629. package/skills/wikify/assets/home-template.md +44 -0
  630. package/skills/wikify/assets/maintenance-report-template.md +46 -0
  631. package/skills/wikify/assets/paper-source-note-template.md +137 -0
  632. package/skills/wikify/assets/source-note-template.md +45 -0
  633. package/skills/wikify/assets/wiki-rules-template.md +117 -0
  634. package/skills/wikify/modes/ingest.md +57 -0
  635. package/skills/wikify/modes/init.md +44 -0
  636. package/skills/wikify/modes/lint.md +60 -0
  637. package/skills/wikify/modes/query.md +38 -0
  638. package/skills/wikify/modes/save.md +45 -0
  639. package/skills/wikify/references-upstream-contract.md +758 -0
  640. package/skills/workflow-loop/SKILL.md +387 -0
  641. package/tools/check-pack-payload.mjs +410 -0
  642. package/tools/check-payload-substance.mjs +738 -0
  643. package/tools/check-version-lockstep.mjs +238 -0
  644. package/tools/gen-canonical-frontend-manifest.mjs +66 -0
  645. package/tools/gen-managed-skill-manifest.mjs +135 -0
  646. package/tools/harness-speed-local.mjs +261 -0
  647. package/tools/payload-reference-exemptions.json +49 -0
  648. package/tools/payload-substance-allowlist.json +46 -0
  649. package/tools/payload-substance-parity.json +571 -0
  650. package/tools/qa-real-surface-fixtures.mjs +428 -0
  651. package/tools/qa-real-surface-harness.mjs +173 -0
  652. package/tools/run-behavior-replacement-probes.mjs +296 -0
  653. package/tools/run-build.mjs +101 -0
  654. package/tools/run-harness-speed-local.mjs +52 -0
  655. package/tools/run-harness-speed-v2.mjs +36 -0
  656. package/tools/run-installed-resource-tamper-probe.mjs +62 -0
  657. package/tools/run-negative-gate-matrix.mjs +516 -0
  658. package/tools/run-rules-glob-differential.mjs +232 -0
  659. package/tools/run-typecheck.mjs +25 -0
  660. package/tools/run-uiux-visual-qa-scenarios.mjs +234 -0
  661. package/tools/run-wikify-surface-probe.mjs +170 -0
  662. package/tools/scan-legacy-tokens.mjs +431 -0
  663. package/tools/version-manifests.json +60 -0
  664. package/tsconfig.build.json +12 -0
  665. package/tsconfig.json +13 -0
  666. package/vendor/NOTICE.md +21 -0
  667. package/vendor/handoff/SKILL.md +199 -0
  668. package/vendor/handoff/evals/evals.json +154 -0
  669. package/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
  670. package/vendor/handoff/templates/HANDOFF.md +121 -0
  671. package/vendor/licenses/022_handoff-MIT.txt +21 -0
  672. package/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
  673. package/vendor/provenance/022_handoff.md +19 -0
  674. package/vendor/provenance/045_scientific-visualization.md +36 -0
  675. package/vendor/scientific-visualization/SKILL.md +283 -0
  676. package/vendor/scientific-visualization/assets/color_palettes.py +197 -0
  677. package/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
  678. package/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
  679. package/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
  680. package/vendor/scientific-visualization/evals/evals.json +158 -0
  681. package/vendor/scientific-visualization/references/color_palettes.md +380 -0
  682. package/vendor/scientific-visualization/references/journal_requirements.md +359 -0
  683. package/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
  684. package/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
  685. package/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
  686. package/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
  687. package/vendor/scientific-visualization/scripts/figure_export.py +238 -0
  688. package/vendor/scientific-visualization/scripts/style_presets.py +467 -0
  689. package/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
  690. package/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
@@ -0,0 +1,93 @@
1
+ An interaction is specified when its states, latency band, and focus moves are written under an id. Hand those ids to the independent review pass through the design contract hash.
2
+
3
+ ## State inventory
4
+
5
+ Enumerate the applicable states for each surface before styling any of them.
6
+
7
+ - `default`, `hover`, `focus-visible`, `active`, `selected`, `disabled`, `read-only`.
8
+ - `loading`, `empty`, `partial`, `error`, `success`, `offline`, `permission-denied`.
9
+ - `destructive-confirm` wherever the action cannot be undone.
10
+ - Every state needs a visual and programmatic expression; `disabled` needs a stated reason.
11
+
12
+ ## Feedback matched to consequence
13
+
14
+ Size feedback to the cost of the action, not to implementation convenience.
15
+
16
+ - Under 100 ms: change in place. No spinner, no toast.
17
+ - 100 ms to 1 s: inline skeleton or progress in the affected region only.
18
+ - Over 1 s: determinate progress plus a cancel control.
19
+ - Irreversible: a confirmation naming the object and effect; typed confirmation for bulk deletion.
20
+ - Failure: a persistent inline message with retry; a vanishing toast is not a report.
21
+
22
+ ## Input and validation timing
23
+
24
+ Validate when the user finishes a thought, never mid-thought.
25
+
26
+ - Format checks on blur, cross-field checks on submit, nothing on every keystroke.
27
+ - Live feedback only to confirm a constraint being met, announced politely.
28
+ - Never clear entered values on error; keep them and mark the field.
29
+ - Debounce search 200-300 ms, cancel superseded requests, keep the last valid result.
30
+
31
+ ## Focus management
32
+
33
+ Focus is state. Decide origin, destination, and return for every transition.
34
+
35
+ - On open, move focus into the new region: the dialog or its first control, never `body`.
36
+ - Trap focus in modal dialogs only; non-modal panels stay escapable by Tab.
37
+ - On dismissal, return focus to the exact trigger; if it is gone, focus its surviving container and announce it.
38
+ - After deleting a row, focus the next sibling, not the top of the list.
39
+ - On route change, focus the new heading and announce the title.
40
+
41
+ ## Gestures and keyboard equivalents
42
+
43
+ Treat every gesture as an accelerator for something reachable another way.
44
+
45
+ - Swipe-to-delete needs a visible delete control; drag reorder needs modifier-plus-arrow.
46
+ - Pinch needs zoom controls; long-press needs a context-menu key path.
47
+ - Any multipoint or path-dependent gesture needs a single-pointer alternative.
48
+ - Announce the result ("moved to row 3 of 12"); offer undo for 5 s after a deletion.
49
+
50
+ ## Motion justification test
51
+
52
+ Keep motion only when it answers yes to one of these; otherwise delete it.
53
+
54
+ - Does it show where an element came from or went?
55
+ - Does it hold continuity across a layout or route change?
56
+ - Does it expose a state change that would otherwise be invisible?
57
+
58
+ ## Choreography
59
+
60
+ Give every animated property an explicit duration and curve.
61
+
62
+ - 100-150 ms micro-feedback, 200-300 ms enter and exit, up to 400 ms for a full-screen change.
63
+ - Decelerate on enter, accelerate on exit; no bounce or overshoot on data.
64
+ - Stagger 30-50 ms per item, capped at 5; the rest arrive together.
65
+ - One moving focal region per view. Two competing animations read as a defect.
66
+
67
+ ## Reduced motion
68
+
69
+ Remove the travel, keep the message.
70
+
71
+ - Substitute an instant change or a cross-fade of 100 ms or less.
72
+ - Keep progress, direction cues, and status changes in static form.
73
+ - Stop autoplay, loops, and parallax; expose a play control.
74
+
75
+ ## Per-interaction record
76
+
77
+ Hand review one record per interaction, keyed by id, coupled through the contract hash.
78
+
79
+ - Trigger, target, precondition, and permitted inputs.
80
+ - Applicable states with visual and programmatic expression for each.
81
+ - Latency band with its feedback; focus origin, destination, and return target.
82
+ - Animated property, duration, easing, and the reduced-motion substitute.
83
+ - Failure path, undo window, and announcement text.
84
+
85
+ ## Failure patterns
86
+
87
+ Reject:
88
+
89
+ - A hover style presented as the interaction specification.
90
+ - Focus landing on `body` after dismissal, or scrolling out of view on open.
91
+ - Spinners for sub-100 ms work, or skeletons sized unlike the arriving content.
92
+ - Gesture-only affordances with no button or keyboard path.
93
+ - Reduced motion implemented as slower motion.
@@ -0,0 +1,80 @@
1
+ Every request sits in exactly one build situation, and the lane fixes which evidence is mandatory before anything is touched. Record the lane id in the contract; the independent review pass enforces that lane's exit condition.
2
+
3
+ ## Choosing the lane
4
+
5
+ Select from observed repository facts, not request wording. Record the lane id with the two facts that chose it.
6
+
7
+ - No app, tokens, or routes exist yet: new-build.
8
+ - Working product, request adds or repairs a bounded surface: brownfield.
9
+ - Working product, request restyles the system across existing surfaces: redesign.
10
+ - A supplied image, page, or prose is declared a fidelity target: reference-fidelity.
11
+ - The deliverable is tokens or primitives other surfaces consume: design-system.
12
+
13
+ ## New-build lane
14
+
15
+ Choose the smallest system that expresses the whole inventory.
16
+
17
+ - Gather: platform, stack, locales, minimum viewport, auth model, complete route list.
18
+ - May change: anything inside the new application boundary.
19
+ - Preserve: host repository conventions, lint rules, build configuration.
20
+ - Failure mode: inventing a component library and forty tokens to serve three screens.
21
+ - Exit: a hashed valid contract whose inventory the chosen primitives fully express.
22
+
23
+ ## Brownfield lane
24
+
25
+ Make the new surface indistinguishable in system terms from what already shipped.
26
+
27
+ - Gather: current tokens and primitives, states of components you touch, dirty-worktree status, consumers of what you would modify.
28
+ - May change: the requested surface, plus additive tokens following existing naming.
29
+ - Preserve: token semantics, public props, keyboard order, route URLs, untouched copy.
30
+ - Failure mode: a second parallel design system diverging one commit at a time.
31
+ - Exit: nothing outside the requested scope renders differently.
32
+
33
+ ## Redesign lane
34
+
35
+ Change how the product looks without changing what it does.
36
+
37
+ - Gather: baseline capture per affected route and state, a debt map by category, the owner of each behavior.
38
+ - May change: visual system, layout, hierarchy, density, spacing, motion.
39
+ - Preserve: every flow, permission, data contract, URL, and shortcut not listed for removal.
40
+ - Failure mode: reworking behavior under a visual change so regressions read as intent.
41
+ - Exit: the parity list holds and each intentional difference carries an exception id.
42
+
43
+ ## Reference-fidelity lane
44
+
45
+ Rebuild the system the reference implies, not its pixels.
46
+
47
+ - Gather: reference hash, classification, per-trait comparison scope, traits it cannot show.
48
+ - May change: implementation matching observed structure, type scale, spacing, color roles.
49
+ - Preserve: real text as text, semantics, accessibility, your content, undepicted states.
50
+ - Failure mode: matching the image while shipping raster text and a short state inventory.
51
+ - Exit: paired comparison per declared trait, plus a fidelity report of inferred and unknown calls.
52
+
53
+ ## Design-system lane
54
+
55
+ Treat the token and primitive surface as a published API.
56
+
57
+ - Gather: every consumer, the publication path, the states each primitive must express.
58
+ - May change: token values and primitive internals behind a stable name; new tokens.
59
+ - Preserve: token names and public props; deprecate with a migration note, never rename in place.
60
+ - Failure mode: shipping a breaking rename inside a release labeled polish.
61
+ - Exit: consumers render unchanged, or every intended break carries its migration step.
62
+
63
+ ## When a request spans two lanes
64
+
65
+ Split it. A blended lane forfeits both sets of guarantees.
66
+
67
+ - Sequence design-system work first, then the lane that consumes it.
68
+ - Give each lane its own contract hash, inventory, and exit check.
69
+ - If only one can ship now, record the other as an omission id with its deferred scope.
70
+ - If the split is impossible, return blocked and name the decision the user owes you.
71
+
72
+ ## Failure patterns
73
+
74
+ Reject:
75
+
76
+ - A contract carrying no lane id, or a lane id with no selecting facts.
77
+ - A greenfield rebuild inside a working product with no redesign evidence.
78
+ - Reference fidelity claimed while the state inventory stays open-ended.
79
+ - Additive tokens duplicating an existing semantic under a new name.
80
+ - A lane switched after implementation started, to excuse a deviation.
@@ -0,0 +1,160 @@
1
+
2
+ # Frontend Perfectionist
3
+
4
+ You are a senior frontend engineer with one binding standard: **every page hits 100 in EVERY Lighthouse category, measured on a REAL browser, without sacrificing a single drop of UX quality.**
5
+
6
+ ## TENETS. NON-NEGOTIABLE.
7
+
8
+ ### 1. AUDIT THROUGH A REAL BROWSER. NEVER THROUGH THE CLI.
9
+
10
+ The `lighthouse` CLI runs `chrome-headless-shell` with default settings. That is **NOT** what your users see, and the number it produces will lie to you. **REJECT** any report based on the CLI, even if the CI shows green.
11
+
12
+ The correct path:
13
+
14
+ 1. Build the app in production mode (`next build && next start`, `vite build && vite preview`, `astro build && astro preview`, `bun run build && bun run start`). **NEVER** measure a dev server.
15
+ 2. Launch Playwright with `channel: "chrome"` (real Chrome stable, not the headless-shell binary).
16
+ 3. Run Lighthouse against the Playwright-controlled page via `playwright-lighthouse` OR via `chrome-launcher` + the `lighthouse` Node API, attaching to the Playwright CDP endpoint so cookies, auth state, and warmed caches mirror what a real returning user sees.
17
+ 4. Use the **mobile** preset (4x CPU throttle, Fast 3G) for the primary number, AND the **desktop** preset for the secondary number. Report both.
18
+
19
+ If the `playwright` skill is not loaded in this session, load it now via the `skill` tool.
20
+
21
+ ### 2. 100 IN EVERY CATEGORY IS THE FLOOR.
22
+
23
+ A 99 is a regression. A 95 is a fire. You do NOT report "performance 93, accessibility 100, SEO 100, best-practices 100" as a pass. You diagnose what cost the 7 points, fix the root cause, re-run, and only report when all four panels show 100. On mobile AND desktop.
24
+
25
+ ### 3. WIN THE SCORE IN THE ARCHITECTURE.
26
+
27
+ Performance is decided at architecture and code-quality level. Bundle size, render path, hydration strategy, asset pipeline, image format and dimensions, font loading, third-party scripts, critical CSS, deferred JS, route-level code splitting. These are the LEVERS that move the score. Slapping `loading="lazy"` on a hero image is not optimization. It is panic.
28
+
29
+ For EVERY failing audit, trace it back to a SPECIFIC line of code or a SPECIFIC build-config choice. Fix it at the source. No band-aids.
30
+
31
+ ### 4. NEVER WEAKEN UX TO BUY POINTS.
32
+
33
+ If your fix removes a hover state, drops a CSS transition, replaces an animated mount with an abrupt one, swaps a smooth scroll-into-view for an instant jump, degrades a 60fps interaction to 30fps, or hides content you would normally render, **REJECT THE FIX**. The animation language, motion design, and tactile feel of the product are load-bearing.
34
+
35
+ Find another way:
36
+
37
+ - Split the bundle further (route-level, then component-level, then feature-flag-level).
38
+ - Defer non-critical paint work to `requestIdleCallback`.
39
+ - Move expensive work off the main thread via Web Workers (use Comlink for ergonomics).
40
+ - Use the `View Transitions API` for cross-route transitions.
41
+ - Use `content-visibility: auto` plus `contain-intrinsic-size` for offscreen sections.
42
+ - Use `will-change` precisely, ONLY on the property actually animating, ONLY for the duration of the animation.
43
+ - Preload the LCP image: `<link rel="preload" as="image" fetchpriority="high" imagesrcset="...">`.
44
+ - HTTP/2 server-push or `<link rel="modulepreload">` for the critical chunk.
45
+ - GPU-composited animations only (`transform`, `opacity`, `filter`). NEVER animate `width`, `height`, `top`, `left`, `margin`, `padding`.
46
+
47
+ ### 5. LOAD THE DESIGN RULESET IN LOCKSTEP.
48
+
49
+ You **MUST** read the design ruleset (`../design/README.md`) alongside this one for any visual or layout work. That skill carries the brand-grade taste references (Apple, Stripe, Linear, Vercel, Claude, Notion, Airbnb, Figma, etc.) and the anti-AI-SaaS-slop posture.
50
+
51
+ A page that scores 100 but looks like AI SaaS slop has failed. Speed serves design; design rides on speed. **Both win or neither does.**
52
+
53
+ Use the design ruleset:
54
+
55
+ - BEFORE writing JSX/CSS: pull a relevant brand reference to ground the visual direction.
56
+ - DURING implementation: cross-check against the anti-slop guardrails.
57
+ - BEFORE declaring done: verify the page passes the design taste bar, not just the Lighthouse bar.
58
+
59
+ ### 6. DESIGN SYSTEM COMPLIANCE IS NOT OPTIONAL.
60
+
61
+ The design ruleset (`../design/README.md`) enforces a **Phase 0 Design System Gate** — every project must have a `DESIGN.md` before any UI work begins. This skill enforces the other side: **every audit must verify compliance.**
62
+
63
+ During the audit loop, after Lighthouse scores pass, run a Design System Compliance check:
64
+
65
+ - **Colors**: grep the codebase for raw hex/rgb values not declared in `DESIGN.md`. Each is a violation.
66
+ - **Typography**: every font-size in CSS/Tailwind must map to the type scale in `DESIGN.md`. No arbitrary sizes.
67
+ - **Spacing**: every margin/padding/gap value must be a multiple of the base unit (4px) and ideally use a declared token.
68
+ - **Components**: any component used 2+ times must be documented in `DESIGN.md` Section 5. If it isn't, add it.
69
+ - **Depth**: if `DESIGN.md` says "borders-only", there must be zero `box-shadow` declarations. If "tonal-shift", zero borders for surface separation.
70
+
71
+ A page that scores Lighthouse 100 but uses 14 undeclared hex codes and 8 magic spacing values is **NOT DONE**. The design system is the architecture — Lighthouse measures the performance of that architecture.
72
+
73
+ ### 7. REACT-SPECIFIC PERF TOOLING IS PART OF THE AUDIT.
74
+
75
+ If the project ships React, Lighthouse alone does NOT see render-layer issues by component. You MUST also run:
76
+
77
+ - **`react-doctor`** (static): cheapest. `npx react-doctor@latest --json` before any browser audit. Treat perf-category findings as audit failures.
78
+ - **`react-scan/lite`** (runtime, headless): injected via `page.addInitScript` in the Playwright run. Drain its `onEvent` stream and fail the audit if any commit is classified `unnecessary`.
79
+
80
+ The full recipe — including the Playwright + `playwright-lighthouse` + `react-scan/lite` integration, the per-route render budget assertion, and the React-specific root-cause checklist that EXTENDS the one below — lives in **[react-perf-tooling.md](react-perf-tooling.md)**. Read it before any React audit.
81
+
82
+ Lighthouse 100 with `react-scan` reporting 30+ unnecessary renders per route is **NOT DONE**. Both gates must clear: synthetic score AND render quality. The synthetic score lies under real load if the React layer is thrashing.
83
+
84
+ For initial install of react-scan + react-doctor (and react-grab) in a fresh React project, the canonical install snippets live in `../design/react-dev-tooling-skill.md`. Use them if the project doesn't yet have the tools wired.
85
+
86
+ ## AUDIT WORKFLOW
87
+
88
+ Quick audit via the cross-platform Python CLI (macOS, Linux, Windows):
89
+
90
+ ```bash
91
+ uv run $SKILL_DIR/scripts/perfection/lighthouse-audit.py https://localhost:3000
92
+ uv run $SKILL_DIR/scripts/perfection/lighthouse-audit.py https://localhost:3000 --threshold 95
93
+ uv run $SKILL_DIR/scripts/perfection/lighthouse-audit.py https://localhost:3000 --desktop-only
94
+ ```
95
+
96
+ Or use the TypeScript approach directly in your test suite:
97
+
98
+ ```ts
99
+ // scripts/audit.ts
100
+ import { chromium } from "playwright";
101
+ import { playAudit } from "playwright-lighthouse";
102
+
103
+ const browser = await chromium.launch({ channel: "chrome" });
104
+ const context = await browser.newContext();
105
+ const page = await context.newPage();
106
+ await page.goto("http://localhost:3000/<route>");
107
+
108
+ await playAudit({
109
+ page,
110
+ port: 9222,
111
+ thresholds: { performance: 100, accessibility: 100, "best-practices": 100, seo: 100 },
112
+ reports: { formats: { html: true, json: true }, name: "lighthouse-<route>" },
113
+ config: { extends: "lighthouse:default", settings: { formFactor: "mobile" } },
114
+ });
115
+
116
+ await browser.close();
117
+ ```
118
+
119
+ Run twice per route: once `formFactor: "mobile"`, once `formFactor: "desktop"`. Both must hit 100/100/100/100.
120
+
121
+ **Diagnose from the JSON report, not the HTML.** Parse `audits[*].score < 1` programmatically to find the offenders. Do not eyeball the HTML report.
122
+
123
+ **Run 3-5 times and take the median.** A single audit can be noisy. CI must enforce the threshold on every PR.
124
+
125
+ ## ROOT-CAUSE CHECKLIST (HIT THESE FIRST, ALMOST ALWAYS THE CULPRIT)
126
+
127
+ - **Render-blocking JS/CSS in the critical path.** Defer, code-split by route, inline critical CSS only.
128
+ - **Unsized media.** Every `<img>`, `<video>`, `<iframe>` MUST have explicit `width`/`height` or an aspect-ratio container. Unsized media causes CLS.
129
+ - **Wrong image format or dimensions.** Serve AVIF first, WebP fallback, JPEG last. Generate ALL responsive sizes in the build. NEVER ship an image larger than the rendered box. Use `fetchpriority="high"` on the LCP image.
130
+ - **Fonts.** `font-display: swap` minimum, `optional` for non-critical fonts, preload the one critical font, subset to only the characters actually used.
131
+ - **Third-party scripts in `<head>` synchronously.** Defer, lazy-load on first interaction, OR proxy through your own origin to remove a third-party DNS + TLS handshake from the critical path.
132
+ - **Hydration on routes that do not need it.** React Server Components, islands, `client:load`, ONLY where the interactivity is real. Static routes ship zero JS.
133
+ - **Missing semantic HTML.** `<button>` for buttons, `<a href>` for links, `<nav>` / `<main>` / `<header>` / `<footer>` landmarks, label every form input, alt-text every meaningful image, unique `<title>` per route.
134
+ - **Tab order, focus rings, contrast ratios, prefers-reduced-motion, ARIA correctness.** Accessibility 100 means a screen-reader user can drive the page end-to-end without help.
135
+ - **Meta tags.** `<title>`, `<meta name="description">`, OpenGraph, Twitter cards, structured data (JSON-LD), `lang` on `<html>`, `viewport`, canonical URL.
136
+
137
+ ## ANTI-PATTERNS. REJECT ON SIGHT.
138
+
139
+ - Reporting a CLI Lighthouse score. **REJECT.** Tenet 1.
140
+ - Removing an animation to fix INP. **REJECT.** Switch to a CSS-only transform/opacity animation. Debounce listeners. Move heavy work off the main thread.
141
+ - Replacing a hero image with a placeholder to "fix" LCP. **REJECT.** Properly sized AVIF + `fetchpriority="high"` + preconnect to the image CDN is the actual fix.
142
+ - Disabling JS for a route to "score 100". **REJECT.** Score 100 ON the JS-enabled production build, on a real user device profile.
143
+ - Setting `display: none` on offscreen content to dodge audits. **REJECT.** Use `content-visibility: auto` plus proper lazy mounting. Never lie about the page.
144
+ - Declaring victory after a single audit run. **REJECT.** Run 3-5 times, take the median. CI must enforce the threshold.
145
+ - Scoring 100 on `localhost` and shipping without re-measuring against the deployed URL. **REJECT.** The CDN, real DNS, and real TLS handshake matter.
146
+
147
+ ## RESPONSE FORMAT (what to return when the user asks for a frontend audit or build)
148
+
149
+ 1. **Scores before / after**, mobile AND desktop, all four categories.
150
+ 2. **Design system compliance**: orphan tokens found / fixed, components documented.
151
+ 3. **Each fix** in one line, traceable to the audit it cleared.
152
+ 4. **What you intentionally did NOT do**, and why. Especially every tempting "easy point" you rejected to preserve UX.
153
+ 5. **Browser-based Design QA result**: breakpoints tested, visual bugs found/fixed, states verified.
154
+ 6. **The next audit you would run** if you had another iteration.
155
+
156
+ If the run did not hit 100 in every category, you are NOT done. State so explicitly. Continue iterating.
157
+
158
+ ## MANTRA
159
+
160
+ > **100 on every Lighthouse category, on a real browser, with full features and full animations intact. Or it is not done.**
@@ -0,0 +1,127 @@
1
+ # React Perf Tooling for Lighthouse 100
2
+
3
+ You are auditing or optimizing a React app for Lighthouse 100. Two tools belong in this workflow alongside Playwright + lighthouse — they catch the React-specific perf issues that Lighthouse counts but doesn't diagnose by component:
4
+
5
+ | Tool | Surface | What it gives you |
6
+ |---|---|---|
7
+ | **react-scan** (`react-scan/lite`) | Runtime instrumentation, headless | Per-fiber `commit` events with `changeDescription` — "this component re-rendered because <prop / state / context / parent / hook> changed". Correlates with `long-animation-frame` to attribute LoAF to specific components. |
8
+ | **react-doctor** | Static scan, CI-friendly | Deterministic findings across state/effects, perf (memoization, list keys, expensive children), architecture, security, a11y. One-shot `npx react-doctor@latest` produces a JSON report. From the Million.dev team. |
9
+
10
+ Use both. They are complementary: `react-scan` tells you *what's slow right now*; `react-doctor` tells you *what's structurally wrong*. Both are dev-only and free.
11
+
12
+ If the project does not yet have react-scan and react-doctor wired into its dev environment, read `../design/react-dev-tooling-skill.md` first and install them — they should be on by default for every React project this skill audits.
13
+
14
+ ## Lighthouse run + react-scan/lite
15
+
16
+ `playwright-lighthouse` already drives a real Chrome. Inject `react-scan/lite` BEFORE React mounts via `page.addInitScript`. Then drain its `onEvent` stream during the run and assert on render budgets at the end.
17
+
18
+ ```ts
19
+ // scripts/audit-with-react-scan.ts
20
+ import { chromium } from "playwright";
21
+ import { playAudit } from "playwright-lighthouse";
22
+
23
+ const browser = await chromium.launch({ channel: "chrome" });
24
+ const context = await browser.newContext();
25
+
26
+ // Inject react-scan/lite BEFORE the app boots
27
+ await context.addInitScript(() => {
28
+ // @ts-ignore — pulled from the project's node_modules or a self-hosted bundle
29
+ import("react-scan/lite").then(({ instrument }) => {
30
+ (window as any).__renderEvents = [];
31
+ instrument({
32
+ onEvent: (event: any) => {
33
+ if (event.kind === "commit") (window as any).__renderEvents.push(event);
34
+ },
35
+ recordChangeDescriptions: true,
36
+ includeFiberSource: true,
37
+ includeFiberIdentity: true,
38
+ });
39
+ });
40
+ });
41
+
42
+ const page = await context.newPage();
43
+ await page.goto("http://localhost:3000/<route>");
44
+
45
+ await playAudit({
46
+ page,
47
+ port: 9222,
48
+ thresholds: { performance: 100, accessibility: 100, "best-practices": 100, seo: 100 },
49
+ reports: { formats: { html: true, json: true }, name: "lighthouse-<route>" },
50
+ config: { extends: "lighthouse:default", settings: { formFactor: "mobile" } },
51
+ });
52
+
53
+ // Pull render events and assert on render quality
54
+ const events = await page.evaluate(() => (window as any).__renderEvents);
55
+ const unnecessary = events.filter((e: any) =>
56
+ e.tree?.some((node: any) => node.changeDescription?.kind === "unnecessary"),
57
+ );
58
+
59
+ if (unnecessary.length > 0) {
60
+ console.error(`FAIL: ${unnecessary.length} unnecessary renders detected during audit`);
61
+ for (const e of unnecessary.slice(0, 10)) console.error(" -", JSON.stringify(e, null, 2));
62
+ process.exit(1);
63
+ }
64
+
65
+ await browser.close();
66
+ ```
67
+
68
+ This is the canonical integration. Run twice per route (mobile + desktop), same as the base Lighthouse workflow. Both must hit 100/100/100/100 AND zero unnecessary renders.
69
+
70
+ ## react-doctor — static perf gate
71
+
72
+ Before the Playwright run, fail fast on structural issues. The scan is fast and doesn't need a browser, so put it earlier in the pipeline.
73
+
74
+ ```bash
75
+ npx react-doctor@latest --json > .react-doctor-report.json
76
+ ```
77
+
78
+ Parse `.react-doctor-report.json` for perf-category findings. Treat any perf finding as a blocker for the same reason you treat a Lighthouse score < 100 as a blocker — these are deterministic issues that *will* show up in Lighthouse eventually under throttling.
79
+
80
+ Wire it into CI as a separate job (cheap, fast, no browser needed):
81
+
82
+ ```yaml
83
+ - name: React Doctor static perf scan
84
+ uses: millionco/react-doctor@main
85
+ ```
86
+
87
+ Or run inline with a fail filter:
88
+
89
+ ```yaml
90
+ - name: React Doctor static perf scan
91
+ run: npx react-doctor@latest --json --fail-on perf
92
+ ```
93
+
94
+ ## When to load which during an audit
95
+
96
+ Run them in this order, stop at the first failure:
97
+
98
+ 1. **`react-doctor`** — cheapest. Catches missing memoization, broken list keys, unstable callback refs, expensive children that re-render unnecessarily. Fix everything it reports BEFORE running Lighthouse — half the perf score wins live here.
99
+ 2. **`react-scan` interactive in dev** — load the page in real Chrome with `npx react-scan@latest init` already wired (see the dev-tooling reference). Walk the LCP route, the most-clicked CTA, and any animation-heavy view. The toolbar shows render counts; the overlay highlights unnecessary renders in gray. Fix until clean.
100
+ 3. **`react-scan/lite` in the Lighthouse run** — once interactive is clean, run the Playwright audit above. This catches anything that only shows under throttling or only on first paint.
101
+ 4. **Playwright + Lighthouse** — standard run from `README.md` audit workflow. Score 100 + zero unnecessary renders from step 3 = done.
102
+
103
+ ## React-specific perf root causes (extends `README.md` ROOT-CAUSE CHECKLIST)
104
+
105
+ These are the failures `react-scan` and `react-doctor` surface that base Lighthouse won't directly name:
106
+
107
+ - **Context value identity churn.** A provider value `useMemo` was forgotten; every consumer re-renders on every render of the provider's parent. → `useMemo` the value, or split contexts so high-churn fields don't sit next to stable ones.
108
+ - **Inline object/array/callback props on memoized children.** `<Child config={{ a: 1 }} />` breaks `React.memo` every render. → Hoist, `useMemo`, or `useCallback`.
109
+ - **List keys = array index.** Reordering shreds the reconciler. → Use a stable id from the data.
110
+ - **Expensive components rendered unconditionally above the fold.** → `lazy()` + `Suspense`, or move below the LCP, or pre-render server-side.
111
+ - **Effects that fire on every render.** Missing dependency arrays or unstable deps. → Stabilize deps, or split state, or extract to `useEvent`-style ref.
112
+ - **Spreading the entire context value into props.** Couples every consumer to every field. → Destructure only the fields used.
113
+ - **Hydration mismatches.** SSR markup doesn't equal client first-render. → react-doctor flags structurally; fix the source of the divergence (Date.now, locale, randomness, browser-only APIs).
114
+
115
+ `react-doctor` finds these statically. `react-scan` confirms the symptom in the running app. Both must come clean before Lighthouse 100 is meaningful.
116
+
117
+ ## Anti-patterns specific to this workflow
118
+
119
+ - **Forgetting `page.addInitScript` (using `page.evaluate` instead).** `evaluate` runs AFTER React mounts; you'll miss every initial-render event. Use `addInitScript`.
120
+ - **`react-scan` non-lite during a Lighthouse run.** The full UI (toolbar, canvas overlay) adds overhead and skews the score. Use `react-scan/lite` ONLY for measurement; the full version is for interactive dev.
121
+ - **Reporting Lighthouse 100 with `react-scan` showing 30+ unnecessary renders per route.** The score is meaningless if the React layer is thrashing — INP and CLS will degrade under real load even if the synthetic run passed. Both gates must clear.
122
+ - **Treating `trackUnnecessaryRenders` as free.** It has measurable overhead; in a Lighthouse run it can drag the perf score by 2-3 points. Use it for interactive diagnosis, not for the audit run.
123
+ - **Skipping react-doctor because "it's just a linter".** It's not. It detects React-specific defects (missing keys, broken memo, unstable refs, hydration mismatches) that ESLint plugins miss because they require fiber-level reasoning.
124
+
125
+ ## Mantra
126
+
127
+ > **Lighthouse 100 + react-doctor clean + zero unnecessary renders from react-scan. All three or it is not done.**
@@ -0,0 +1,77 @@
1
+ Performance is a Design Contract term settled before implementation, not cleanup afterwards. Fix these numbers so the independent review pass can falsify them against the contract hash.
2
+
3
+ ## Budget dimensions
4
+
5
+ Give every dimension a number, an owner id, and a breach action. A number without its measurement profile cannot be disputed.
6
+
7
+ - Profile: 4x CPU slowdown, 1.6 Mbps down, 150 ms RTT, cold cache, longest shipped locale.
8
+ - LCP <= 2.5 s; interaction latency <= 200 ms; layout shift <= 0.10 with none after first input.
9
+ - No main-thread task over 50 ms during load; in-app route change <= 300 ms to first update.
10
+ - Compressed first-load script <= 180 KB per route; route transfer <= 1.0 MB; images <= 400 KB per view.
11
+ - Web fonts: at most 2 families, 4 faces, 100 KB total, subset to the shipped scripts.
12
+ - Breach action is exactly one of: block the change, record an exception id, renegotiate the budget.
13
+
14
+ ## Critical-path diagnosis
15
+
16
+ Trace the request to first usable pixels and name the blocking resource before writing a fix. Recurring root causes:
17
+
18
+ - a stylesheet or synchronous script in the head gating first paint;
19
+ - data requested after the client bundle boots, not during the document response;
20
+ - serial fetch chains where a child starts only once its parent settles;
21
+ - media, banners, or embeds with no reserved box, forcing relayout;
22
+ - a font swap controlled by client script, holding text invisible.
23
+
24
+ ## Asset delivery
25
+
26
+ Ship the smallest asset that survives the widest box it renders into.
27
+
28
+ - Declare intrinsic width and height or aspect-ratio everywhere; unsized media is a shift defect.
29
+ - Serve width-appropriate candidates, cap the hero at 2x its container, content-hash long-lived files.
30
+ - Load the LCP image eagerly, never lazily; lazy-load everything below the fold.
31
+
32
+ ## Script delivery and hydration cost
33
+
34
+ Charge every kilobyte to a named interaction; content with no interaction ships no client script.
35
+
36
+ - Split by route first, then at interaction boundaries, never below a separately reachable unit.
37
+ - Keep islands at the leaf: hydrating a shell to power one control pays for the whole subtree.
38
+ - Hold analytics, chat, consent, and flag scripts until after LCP paints.
39
+ - Mark each route static, streamed, or client-stateful, and measure hydration in main-thread ms, not bytes.
40
+
41
+ ## Virtualizing long lists
42
+
43
+ Virtualize on measured evidence only, above roughly 200 rendered rows or 2,000 DOM nodes. Exercise 1 row, the threshold, and 10x the threshold.
44
+
45
+ - Disqualifying caveats: find-in-page, deep links into a row, screen-reader row counts, sticky headers, variable row height, focus after scroll, printing.
46
+ - Reserve row height so the scroll thumb stays stable; keep the announced count equal to total items, not rendered items.
47
+
48
+ ## Perceived versus measured
49
+
50
+ Treat these as two obligations; satisfying one never settles the other.
51
+
52
+ - Hold a skeleton back until 200 ms of waiting, sized like the loaded content.
53
+ - Acknowledge input inside 100 ms even when the result is slower; prefer optimistic state with a named rollback to a blocking spinner.
54
+ - When only perception changed, report the measured number unchanged and label the gain advisory.
55
+
56
+ ## Audit protocol
57
+
58
+ Run in order. Stop at the first step that produces a decision.
59
+
60
+ 1. Restate the budget table and the measurement profile.
61
+ 2. Capture one cold and one warm run per route; discard a single outlier.
62
+ 3. Rank blocking resources by time held on the critical path.
63
+ 4. Attribute each blocker to exactly one root cause above.
64
+ 5. Estimate recoverable milliseconds per fix before editing code.
65
+ 6. Apply the highest-yield fix alone, then re-measure on the same profile.
66
+ 7. Decide: within budget, exception id recorded, or blocked with the missing decision named.
67
+
68
+ ## Failure patterns
69
+
70
+ Reject:
71
+
72
+ - "Feels faster" with no re-measured number on the same profile.
73
+ - A composite tool score reported as a mechanical pass.
74
+ - A budget written as light, fast, or small instead of a number.
75
+ - Lazy-loading the LCP element to win a byte count.
76
+ - Virtualizing a 40-row table and losing find-in-page.
77
+ - Cutting accessibility work and calling it a performance decision.
@@ -0,0 +1,84 @@
1
+ Direction work settles who the interface serves, which task must never fail, and what would prove the answer wrong. Hand the facts, journeys, and open questions to the Design Contract.
2
+
3
+ ## Audience of record
4
+
5
+ Write one primary user and at most two secondaries. A wider audience is an open question, not a decision.
6
+
7
+ - Role, the decision this person owns, and return frequency: hourly, daily, monthly, once.
8
+ - Conditions: device class, network floor, interruptions, shared or private screen.
9
+ - Assistive setup as a real profile: magnifier, screen reader, switch input, no pointer.
10
+ - Locales in scope with a fallback, and the non-audience kept as a non-goal.
11
+
12
+ ## The critical task and its stages
13
+
14
+ Name the one task whose failure makes the interface worthless, then give each stage an exit condition.
15
+
16
+ - Start state, end state, and the artifact proving completion.
17
+ - Step ceiling and elapsed-time ceiling for the intended path.
18
+ - Entry and orient: how the user arrives, and the fact proving the right place.
19
+ - Act and confirm: the smallest saveable unit of progress, and the evidence returned.
20
+ - Recover: where the path is abandoned today, the undo window, what is never retyped.
21
+
22
+ ## Success signals with thresholds
23
+
24
+ Fix numbers while no direction is preferred. A signal without a number cannot fail.
25
+
26
+ - Completion rate for the primary user with a floor; median and p95 time to confirm.
27
+ - Errors per submission, and repeat attempts in one session.
28
+ - Keyboard-only completion at 100%; no exception id is available here.
29
+ - One counter-signal whose appearance retires the direction.
30
+
31
+ ## Knowledge-gap register
32
+
33
+ Register the unknown instead of designing over it. Each gap gets an id and a route out.
34
+
35
+ - Fields: `gap-NNN`, question, blocked decision, method, owner, deadline, fallback default.
36
+ - Methods are actions: read the route, count real records, ask one closed question.
37
+ - A gap with no method becomes a recorded assumption plus its cost if wrong.
38
+ - A gap blocking a system decision forces `blocked` mode, never a plausible invention.
39
+
40
+ ## Scenarios the default design forgets
41
+
42
+ One scenario per condition, naming the breakage and the required behavior.
43
+
44
+ - Low vision: text at 200%, reflow at 320 CSS px, no horizontal scroll, no text baked into imagery.
45
+ - Keyboard only: Tab, Shift-Tab, Enter, Escape reach every action; focus at 3:1; no trap.
46
+ - Screen reader: heading outline stands alone, controls named, errors bound to their fields.
47
+ - Low bandwidth: usable at 400 kbps and 300 ms latency; useful paint before fonts resolve.
48
+ - Unfamiliar language: icon with label, no idiom, 40% string growth, wide characters as two cells.
49
+
50
+ ## Bounded direction alternatives
51
+
52
+ Carry two or three candidates. One inevitable answer means nothing was examined.
53
+
54
+ - Per candidate: favored user, task accelerated, task slowed, cost.
55
+ - Candidates differ on structure, sequence, or density, not on color.
56
+ - Invariants: accessibility floors, state inventory, locale and performance budgets.
57
+ - One line per candidate naming the observation that kills it.
58
+
59
+ ## Decision checkpoints
60
+
61
+ Pass these in order. Practitioner confidence is not a checkpoint.
62
+
63
+ 1. Audience and critical task confirmed by the user, or `blocked`.
64
+ 2. Thresholds agreed; every blocking gap closed or defaulted with its risk written down.
65
+ 3. One direction selected against the invariants; losers kept with reject reasons.
66
+ 4. Contract validates as evidence-eligible `litfamily.design-contract/v1beta2` and its hash is recorded; valid `litfamily.design-contract/v1beta1` documents remain accepted and evidence-eligible; alpha is diagnostic-only.
67
+
68
+ ## Research output package
69
+
70
+ Hand exactly this forward. Anything outside it is not research output.
71
+
72
+ - Users, non-audience, critical task with both ceilings and stages.
73
+ - Thresholds, counter-signal, gap-register status, inclusive scenarios.
74
+ - Candidate directions, reject reasons, and the selected direction.
75
+ - Assumptions, omission ids, exception ids, and the contract hash the independent review pass reads.
76
+
77
+ ## Failure patterns
78
+
79
+ Reject:
80
+
81
+ - An audience written as demographics rather than task and environment.
82
+ - Success stated as adjectives: intuitive, clean, modern, delightful.
83
+ - Accessibility postponed instead of written as required scenario behavior.
84
+ - One direction presented as inevitable, alternatives invented to justify it.