@wazir-dev/cli 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 (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,636 @@
1
+ # Image & Media Optimization
2
+
3
+ > **Expertise Module** | Performance Engineering | Web Platform
4
+ > Last updated: 2026-03-08
5
+
6
+ ---
7
+
8
+ ## 1. Why This Matters: The Weight of Media on the Web
9
+
10
+ Images and media are the single largest contributor to page weight. Per the HTTP Archive Web Almanac 2024:
11
+
12
+ - The median desktop page loads **1,054 KB of images**; mobile loads **900 KB**.
13
+ - The median desktop page contains **18 images**; mobile contains **16 images**.
14
+ - Images account for **~50% of total page weight** on median pages, up to **63%** at the 90th percentile.
15
+ - YoY (Oct 2023-2024), desktop image weight grew **8.6%** (+210 KB); mobile grew **6.4%** (+140 KB).
16
+
17
+ Sources: [HTTP Archive 2024 - Page Weight](https://almanac.httparchive.org/en/2024/page-weight), [HTTP Archive 2024 - Media](https://almanac.httparchive.org/en/2024/media)
18
+
19
+ Unoptimized media directly degrades Core Web Vitals:
20
+
21
+ | Metric | How Media Impacts It |
22
+ |--------|---------------------|
23
+ | **LCP** | Hero images are the LCP element on ~80% of pages. Uncompressed/unpreloaded images delay LCP by seconds. |
24
+ | **CLS** | Images without explicit width/height cause layout shifts as they load. |
25
+ | **INP** | Heavy image decoding on the main thread blocks interaction responsiveness. |
26
+
27
+ **Business impact**: Vodafone improved LCP by 31% and saw an 8% increase in sales. Source: [web.dev - Optimize LCP](https://web.dev/articles/optimize-lcp)
28
+
29
+ ---
30
+
31
+ ## 2. Modern Image Formats: AVIF, WebP, and JPEG
32
+
33
+ ### 2.1 Format Comparison Benchmarks
34
+
35
+ Real-world test on a 2000x2000 pixel product photo:
36
+
37
+ | Format | Quality Setting | File Size | Savings vs JPEG |
38
+ |--------|----------------|-----------|-----------------|
39
+ | JPEG | Quality 80 | ~540 KB | baseline |
40
+ | WebP | Lossy Q85 | ~350 KB | **35% smaller** |
41
+ | AVIF | CQ 28 | ~210 KB | **61% smaller** |
42
+
43
+ 90th percentile file sizes (HTTP Archive 2024):
44
+
45
+ | Format | P90 Size |
46
+ |--------|----------|
47
+ | JPEG | 274 KB |
48
+ | PNG | 196 KB |
49
+ | WebP | 116 KB |
50
+ | AVIF | 45 KB |
51
+
52
+ Sources: [SpeedVitals](https://speedvitals.com/blog/webp-vs-avif/), [ImageRobo](https://imagerobo.com/blogs/image-formats-comparison-jpeg-webp-avif)
53
+
54
+ ### 2.2 Compression Efficiency Summary
55
+
56
+ - **WebP**: 25-34% smaller than JPEG at equivalent visual quality.
57
+ - **AVIF**: ~50% smaller than JPEG, 20-30% smaller than WebP.
58
+ - **AVIF** has a ~10% quality advantage over WebP at equal file sizes for photographic content.
59
+
60
+ ### 2.3 Browser Support (September 2025)
61
+
62
+ | Format | Global Support | Notable Gaps |
63
+ |--------|---------------|--------------|
64
+ | JPEG | 100% | None |
65
+ | WebP | **95.29%** | Older IE (irrelevant) |
66
+ | AVIF | **93.8%** | Older Safari, some older Android WebViews |
67
+
68
+ ### 2.4 Encoding/Decoding Performance
69
+
70
+ - **WebP** encodes and decodes faster than AVIF -- relevant for on-the-fly server-side generation.
71
+ - **AVIF** encoding is 5-10x slower than WebP, but 2024-2025 algorithm improvements significantly reduced decoding overhead.
72
+ - The smaller file sizes of AVIF compensate for slightly slower decoding (network transfer time dominates).
73
+
74
+ ### 2.5 Adoption Rates (HTTP Archive 2024)
75
+
76
+ | Format | Share of All Images | YoY Change |
77
+ |--------|-------------------|------------|
78
+ | JPEG | 32.4% | -7.6pp from 2022 |
79
+ | PNG | 28.4% | stable |
80
+ | GIF | 16.8% | declining |
81
+ | WebP | 12.0% | +3pp (+34% relative) |
82
+ | SVG | 6.4% | +2pp (+36% relative) |
83
+ | AVIF | ~1.0% | +0.75pp (+386% relative) |
84
+
85
+ Source: [HTTP Archive 2024 - Media](https://almanac.httparchive.org/en/2024/media)
86
+
87
+ ---
88
+
89
+ ## 3. Decision Tree: Which Image Format Should I Use?
90
+
91
+ ```
92
+ START: What type of image?
93
+ |
94
+ +-- Photograph / complex image with gradients?
95
+ | +-- Need transparency? YES --> AVIF (lossy + alpha) with WebP fallback
96
+ | +-- Need transparency? NO --> AVIF with WebP fallback, JPEG final fallback
97
+ | +-- Encoding speed critical? YES --> WebP (5-10x faster encode than AVIF)
98
+ | +-- Encoding speed critical? NO --> AVIF (pre-encode at build time)
99
+ |
100
+ +-- Simple graphic / logo / icon with few colors?
101
+ | +-- Needs to scale? YES --> SVG (vector, ~2-5 KB typical)
102
+ | +-- Needs to scale? NO --> WebP lossless or PNG
103
+ | +-- UI icon set? YES --> SVG sprite or icon font
104
+ |
105
+ +-- Animation?
106
+ | +-- Short loop (< 5s)? --> Animated WebP (75% smaller than GIF) or AVIF animated
107
+ | +-- Longer / needs controls? --> <video> with MP4/WebM (90%+ smaller than GIF)
108
+ |
109
+ +-- Screenshot / text-heavy image?
110
+ +-- WebP lossless or PNG (AVIF lossless viable but less tooling support)
111
+ ```
112
+
113
+ ### Implementation with `<picture>` Element
114
+
115
+ ```html
116
+ <picture>
117
+ <source srcset="hero.avif" type="image/avif">
118
+ <source srcset="hero.webp" type="image/webp">
119
+ <img src="hero.jpg" alt="Product hero image" width="1200" height="800"
120
+ loading="eager" fetchpriority="high" decoding="async">
121
+ </picture>
122
+ ```
123
+
124
+ ---
125
+
126
+ ## 4. Responsive Images with srcset and sizes
127
+
128
+ ### 4.1 The Problem
129
+
130
+ Serving a single 2400px image to a 375px mobile screen wastes **~85% of transferred bytes**. A 2400px JPEG at quality 80 is ~540 KB; the same at 400px is ~30 KB.
131
+
132
+ ### 4.2 Resolution Switching (Width Descriptors)
133
+
134
+ ```html
135
+ <img srcset="product-400w.webp 400w, product-800w.webp 800w,
136
+ product-1200w.webp 1200w, product-1600w.webp 1600w,
137
+ product-2400w.webp 2400w"
138
+ sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw"
139
+ src="product-800w.webp" alt="Product photograph"
140
+ width="1200" height="800" loading="lazy" decoding="async">
141
+ ```
142
+
143
+ ### 4.3 Pixel Density Switching (Fixed-Size Images)
144
+
145
+ ```html
146
+ <img srcset="logo-1x.webp 1x, logo-2x.webp 2x, logo-3x.webp 3x"
147
+ src="logo-1x.webp" alt="Company logo" width="200" height="60">
148
+ ```
149
+
150
+ ### 4.4 Best Practices
151
+
152
+ 1. **Use 3-5 breakpoints**, not dozens. More breakpoints reduce CDN cache hit ratios.
153
+ 2. **Use 800px as the fallback** `src` -- a middle-ground for non-srcset browsers.
154
+ 3. **Maximum useful size is 2560px** (covers 2x on 1280px laptop displays).
155
+ 4. **Always include `width` and `height`** to prevent CLS (browser computes aspect ratio before load).
156
+ 5. **Match `sizes` to your CSS layout**. If CSS says 50% width on tablets, `sizes` should say `50vw`.
157
+
158
+ ### 4.5 Art Direction with `<picture>`
159
+
160
+ Use `<picture>` when you need different crops at different viewport sizes (not just different resolutions):
161
+
162
+ ```html
163
+ <picture>
164
+ <source media="(max-width: 640px)"
165
+ srcset="hero-mobile-400.avif 400w, hero-mobile-800.avif 800w"
166
+ sizes="100vw" type="image/avif">
167
+ <source media="(max-width: 1024px)"
168
+ srcset="hero-tablet-800.avif 800w, hero-tablet-1200.avif 1200w"
169
+ sizes="100vw" type="image/avif">
170
+ <source srcset="hero-desktop-1600.avif 1600w, hero-desktop-2400.avif 2400w"
171
+ sizes="100vw" type="image/avif">
172
+ <img src="hero-desktop-1200.jpg" alt="Hero banner" width="2400" height="800">
173
+ </picture>
174
+ ```
175
+
176
+ ---
177
+
178
+ ## 5. Lazy Loading Strategies
179
+
180
+ ### 5.1 Native Lazy Loading (`loading="lazy"`)
181
+
182
+ ```html
183
+ <img src="photo.webp" loading="lazy" alt="Below-fold photo"
184
+ width="600" height="400" decoding="async">
185
+ ```
186
+
187
+ The browser defers fetching until images are near the viewport (Chrome: ~1250px on fast connections, ~2500px on slow). Implementations show bandwidth savings of up to **200%** and initial payload reductions of **~740 KB** on image-heavy pages.
188
+
189
+ **Advantages**: Zero JS, browser-engine efficiency, **95%+** browser support.
190
+ **Limitations**: No control over distance threshold, no CSS background images, no visibility callbacks.
191
+
192
+ ### 5.2 Intersection Observer API
193
+
194
+ ```javascript
195
+ const observer = new IntersectionObserver((entries) => {
196
+ entries.forEach(entry => {
197
+ if (entry.isIntersecting) {
198
+ const img = entry.target;
199
+ img.src = img.dataset.src;
200
+ img.srcset = img.dataset.srcset || '';
201
+ observer.unobserve(img);
202
+ }
203
+ });
204
+ }, { rootMargin: '200px 0px', threshold: 0.01 });
205
+ document.querySelectorAll('img[data-src]').forEach(img => observer.observe(img));
206
+ ```
207
+
208
+ **When to use each**:
209
+
210
+ | Scenario | Recommended Approach |
211
+ |----------|---------------------|
212
+ | Standard below-fold images | Native `loading="lazy"` |
213
+ | CSS background images | Intersection Observer |
214
+ | Custom load distance / animation callbacks | Intersection Observer |
215
+
216
+ ### 5.3 Critical Rule: Never Lazy-Load Above-the-Fold Images
217
+
218
+ ```html
219
+ <!-- WRONG --> <img src="hero.webp" loading="lazy" alt="Hero">
220
+ <!-- RIGHT --> <img src="hero.webp" loading="eager" fetchpriority="high" alt="Hero"
221
+ decoding="async" width="1200" height="600">
222
+ ```
223
+
224
+ Lazy loading above-fold images **delays LCP by 200-500ms** because the browser must lay out the page, determine visibility, then begin fetching -- instead of fetching immediately during HTML parsing.
225
+
226
+ ---
227
+
228
+ ## 6. Preloading and Priority Hints for LCP
229
+
230
+ ### 6.1 fetchpriority="high"
231
+
232
+ **Measured improvements**:
233
+ - Google internal tests: LCP improved from **2.6s to 1.9s** (27% reduction).
234
+ - Etsy: LCP improved by **4%**.
235
+ - Typical: **5-10%** LCP reduction; up to **20-30%** in some cases.
236
+
237
+ Source: [Addy Osmani](https://addyosmani.com/blog/fetch-priority/), [web.dev](https://web.dev/articles/fetch-priority)
238
+
239
+ **Rule**: Only apply `fetchpriority="high"` to **1 image per page** (the LCP element). Multiple uses cause bandwidth competition that dilutes the benefit.
240
+
241
+ ### 6.2 Preloading LCP Images Not in HTML
242
+
243
+ When the LCP image is set via CSS or JS (not discoverable in HTML):
244
+
245
+ ```html
246
+ <link rel="preload" as="image" href="hero.avif" type="image/avif"
247
+ imagesrcset="hero-400.avif 400w, hero-800.avif 800w, hero-1200.avif 1200w"
248
+ imagesizes="100vw" fetchpriority="high">
249
+ ```
250
+
251
+ Browsers ignore preloads for unsupported types, so AVIF and WebP preloads can coexist safely.
252
+
253
+ ---
254
+
255
+ ## 7. Image CDNs for On-the-Fly Optimization
256
+
257
+ ### 7.1 Major Providers Comparison
258
+
259
+ | Feature | Cloudinary | imgix | Cloudflare Images | ImageKit |
260
+ |---------|-----------|-------|-------------------|----------|
261
+ | **Architecture** | Upload + store + CDN | Connect existing storage (S3, GCS) | Integrated with CF CDN (310+ PoPs) | Upload or URL-based |
262
+ | **Auto format** | Yes (f_auto) | Yes (auto=format) | Yes | Yes |
263
+ | **Auto quality** | Yes (q_auto) | Yes | Limited | Yes |
264
+ | **AVIF support** | Yes | Yes | Yes | Yes |
265
+ | **Video support** | Full | Limited | No | Yes |
266
+ | **Pricing (med site)** | $89+/mo | $79+/mo | Free <1,500 images | $49+/mo |
267
+
268
+ Source: [VisionFly](https://www.visionfly.ai/blog/best-image-cdn-comparison), [Scaleflex](https://blog.scaleflex.com/top-10-image-cdns/)
269
+
270
+ ### 7.2 Key CDN Features
271
+
272
+ **Auto-format negotiation**: CDN detects the browser `Accept` header and serves AVIF/WebP/JPEG automatically -- no `<picture>` element needed.
273
+
274
+ ```html
275
+ <!-- Cloudinary --> <img src="https://res.cloudinary.com/demo/image/upload/f_auto,q_auto/hero.jpg">
276
+ <!-- imgix --> <img src="https://example.imgix.net/hero.jpg?auto=format,compress">
277
+ ```
278
+
279
+ ### 7.3 When to Use an Image CDN
280
+
281
+ - **Always** if you have >50 images or user-generated content.
282
+ - Auto-format alone reduces image payload by **30-50%** without markup changes.
283
+ - Edge delivery reduces TTFB by **100-300ms** vs origin servers.
284
+
285
+ ---
286
+
287
+ ## 8. Video Optimization
288
+
289
+ ### 8.1 Codec Selection Guide
290
+
291
+ | Codec | Compression vs H.264 | Browser Support | Best For |
292
+ |-------|----------------------|-----------------|----------|
293
+ | **H.264/AVC** | Baseline | ~98% | Universal compatibility |
294
+ | **H.265/HEVC** | **50% smaller** | ~75% (Safari, some Chrome) | iOS/Safari, live streaming |
295
+ | **VP9** | **~45% smaller** | ~93% (Chrome, Firefox, Edge) | YouTube-style platforms |
296
+ | **AV1** | **50-70% smaller** | ~88% (Chrome, Firefox, Edge) | Pre-encoded VOD |
297
+
298
+ **1080p bitrate comparison** (equivalent quality):
299
+ H.264: 5,000 kbps | H.265: 2,500 kbps | AV1: 2,000 kbps
300
+
301
+ Source: [FastPix](https://www.fastpix.io/blog/av1-vs-h-264-vs-h-265-best-codec-for-video-streaming), [Netflix Tech Blog](https://netflixtechblog.com/av1-now-powering-30-of-netflix-streaming-02f592242d80)
302
+
303
+ ### 8.2 Adaptive Bitrate Streaming
304
+
305
+ Recommended VOD encoding ladder:
306
+
307
+ | Resolution | H.264 Bitrate | AV1 Bitrate |
308
+ |-----------|---------------|-------------|
309
+ | 360p | 800 kbps | 400 kbps |
310
+ | 720p | 2,800 kbps | 1,400 kbps |
311
+ | 1080p | 5,000 kbps | 2,000 kbps |
312
+ | 4K | 16,000 kbps | 6,000 kbps |
313
+
314
+ ### 8.3 Poster Images and Preloading
315
+
316
+ ```html
317
+ <link rel="preload" as="image" href="poster.avif" type="image/avif">
318
+ <video poster="poster.avif" preload="none" playsinline>
319
+ <source src="video.mp4" type="video/mp4">
320
+ </video>
321
+ ```
322
+
323
+ Using `preload="none"` on below-fold videos saves **2-10 MB** per video element.
324
+
325
+ ### 8.4 Replace GIFs with Video
326
+
327
+ | Asset | File Size | Quality |
328
+ |-------|-----------|---------|
329
+ | Animated GIF (10s, 480p) | ~12 MB | 256 colors, dithered |
330
+ | MP4 H.264 equivalent | ~800 KB | Full color, sharp |
331
+ | WebM VP9 equivalent | ~500 KB | Full color, sharp |
332
+
333
+ **95% file size reduction**:
334
+
335
+ ```html
336
+ <video autoplay muted loop playsinline width="480" height="270">
337
+ <source src="animation.webm" type="video/webm">
338
+ <source src="animation.mp4" type="video/mp4">
339
+ </video>
340
+ ```
341
+
342
+ ---
343
+
344
+ ## 9. Font Optimization
345
+
346
+ ### 9.1 Format: Use WOFF2
347
+
348
+ WOFF2 provides **~30% better compression** than WOFF, supported by **97%+** of browsers. Real-world: switching TTF to WOFF2 with subsetting reduced font payload from **399 KB to 54 KB** (86.4% reduction). Source: [web.dev](https://web.dev/learn/performance/optimize-web-fonts)
349
+
350
+ ### 9.2 font-display Strategies
351
+
352
+ ```css
353
+ @font-face {
354
+ font-family: 'CustomFont';
355
+ src: url('/fonts/custom.woff2') format('woff2');
356
+ font-display: swap;
357
+ unicode-range: U+0000-00FF;
358
+ }
359
+ ```
360
+
361
+ | Value | Behavior | Best For |
362
+ |-------|----------|----------|
363
+ | `swap` | Shows fallback immediately, swaps when loaded | Body text |
364
+ | `optional` | Uses font only if cached; otherwise fallback | Non-critical/decorative fonts |
365
+ | `fallback` | Brief invisible (100ms), then fallback | Balance of flash vs invisibility |
366
+ | `block` | Invisible text up to 3s | Icon fonts only |
367
+
368
+ ### 9.3 Font Subsetting
369
+
370
+ ```bash
371
+ pyftsubset CustomFont.ttf --output-file=CustomFont-latin.woff2 \
372
+ --flavor=woff2 --layout-features='kern,liga' \
373
+ --unicodes="U+0000-00FF,U+2000-206F,U+2074,U+20AC"
374
+ ```
375
+
376
+ Typical savings: Full Noto Sans **~450 KB** (WOFF2) vs Latin subset **~15 KB** -- **97% reduction**.
377
+
378
+ ### 9.4 Variable Fonts
379
+
380
+ | Approach | Files | Total Size |
381
+ |----------|-------|------------|
382
+ | 4 separate weights | 4 requests | ~120 KB |
383
+ | 1 variable font | 1 request | ~80 KB |
384
+
385
+ **~33% size reduction + 3 fewer HTTP requests**.
386
+
387
+ ```css
388
+ @font-face {
389
+ font-family: 'Inter';
390
+ src: url('/fonts/Inter-Variable.woff2') format('woff2-variations');
391
+ font-weight: 100 900;
392
+ font-display: swap;
393
+ }
394
+ ```
395
+
396
+ ### 9.5 Preloading Critical Fonts
397
+
398
+ ```html
399
+ <link rel="preload" href="/fonts/Inter-Variable.woff2" as="font" type="font/woff2" crossorigin>
400
+ ```
401
+
402
+ Reduces LCP by **100-200ms** by eliminating font discovery delay. Only preload **1-2 critical fonts**.
403
+
404
+ ---
405
+
406
+ ## 10. Common Bottlenecks and Solutions
407
+
408
+ | Bottleneck | Detection | Impact | Fix |
409
+ |-----------|-----------|--------|-----|
410
+ | Unoptimized images | Lighthouse "Efficiently encode images" | +500 KB to +5 MB | Compress quality 75-85, use WebP/AVIF |
411
+ | Wrong format (PNG for photos) | Audit file types | 2-5x larger | Use JPEG/WebP/AVIF for photographs |
412
+ | No responsive images | Missing srcset/sizes | Mobile downloads 4x excess | Add srcset with 3-5 breakpoints |
413
+ | Above-fold lazy loading | Lighthouse LCP audit | +200-500ms LCP | `loading="eager"` + `fetchpriority="high"` |
414
+ | Missing width/height | Lighthouse CLS audit | CLS > 0.1 | Always set width and height |
415
+ | No image CDN | Manual inspection | No auto-format/edge cache | Implement Cloudinary/imgix/CF Images |
416
+ | Render-blocking fonts | Lighthouse audit | +300-1000ms LCP | font-display: swap + preload |
417
+ | Animated GIFs | File size audit | 10-20x larger than video | Replace with `<video autoplay muted loop>` |
418
+
419
+ ### The 80/20 Quick Wins
420
+
421
+ These five changes eliminate **60-80%** of media performance problems:
422
+
423
+ 1. **Convert to WebP/AVIF** with `<picture>` fallback -- 30-50% payload reduction
424
+ 2. **Add `fetchpriority="high"`** to LCP image -- 5-30% LCP improvement
425
+ 3. **Add `loading="lazy"`** to below-fold images -- 20-40% initial payload reduction
426
+ 4. **Add `width` and `height`** to all images -- CLS drops to near 0
427
+ 5. **Compress to quality 75-85** -- 40-60% per-image reduction
428
+
429
+ ---
430
+
431
+ ## 11. Anti-Patterns to Avoid
432
+
433
+ ### 11.1 Base64 Inlining Large Images
434
+
435
+ Base64 encoding increases file size by **~33%** (4/3 overhead). A 100 KB image becomes ~133 KB embedded in HTML/CSS. Additional penalties: blocks critical rendering path, cannot be cached independently, cannot be lazy-loaded, cannot benefit from HTTP/2 multiplexing.
436
+
437
+ **Rule**: Only base64-encode images **under 1-2 KB**. Everything else should be a separate file.
438
+
439
+ Source: [Bunny.net](https://bunny.net/blog/why-optimizing-your-images-with-base64-is-almost-always-a-bad-idea/), [PerfPlanet](https://calendar.perfplanet.com/2018/performance-anti-patterns-base64-encoding/)
440
+
441
+ ### 11.2 CSS Sprites in 2025
442
+
443
+ With HTTP/2 multiplexing (unlimited concurrent streams over 1 connection), sprites are an anti-pattern: they prevent individual caching, responsive serving, lazy loading, and add CSS complexity.
444
+
445
+ **Modern alternative**: Individual SVG icons via HTTP/2, or SVG sprite using `<symbol>` + `<use>`:
446
+
447
+ ```html
448
+ <svg style="display:none">
449
+ <symbol id="icon-search" viewBox="0 0 24 24"><path d="M15.5 14h-.79l-.28-.27..."/></symbol>
450
+ </svg>
451
+ <svg width="24" height="24"><use href="#icon-search"/></svg>
452
+ ```
453
+
454
+ ### 11.3 Loading All Images Eagerly
455
+
456
+ On a product listing page with 40 images:
457
+
458
+ | Strategy | Initial Payload | Time to Interactive (3G) |
459
+ |----------|----------------|--------------------------|
460
+ | All eager (default) | ~8 MB | ~6.2s |
461
+ | Above-fold eager + rest lazy | ~1.2 MB | ~2.1s |
462
+
463
+ **85% payload reduction, 66% load time improvement**.
464
+
465
+ ### 11.4 Using `decoding="sync"` Unnecessarily
466
+
467
+ Forces synchronous decoding on the main thread, blocking interactions for large images. Use `decoding="async"` for all images -- the browser still decodes synchronously when safe.
468
+
469
+ ### 11.5 Serving Images Without a CDN
470
+
471
+ Origin servers have single-location latency, no auto-format negotiation, no on-the-fly resizing, no edge caching. A CDN adds **100-300ms TTFB improvement** and automatic optimization.
472
+
473
+ ---
474
+
475
+ ## 12. Before & After: Real-World Optimization Results
476
+
477
+ ### 12.1 E-Commerce Product Page
478
+
479
+ **Before** (unoptimized):
480
+ - Page weight: 4.8 MB | Image payload: 3.6 MB (75%) | 42 image requests
481
+ - LCP: 4.2s (mobile 4G) | CLS: 0.18 | Format: 100% JPEG (uncompressed)
482
+
483
+ **Optimizations**: AVIF+WebP+JPEG fallback, responsive images (4 breakpoints), lazy loading (38 below-fold), fetchpriority on hero, width/height on all, GIFs replaced with video, font subsetting, Cloudinary f_auto/q_auto.
484
+
485
+ **After** (optimized):
486
+
487
+ | Metric | Before | After | Improvement |
488
+ |--------|--------|-------|-------------|
489
+ | Page weight | 4.8 MB | 1.1 MB | **-77%** |
490
+ | Image payload | 3.6 MB | 620 KB | **-83%** |
491
+ | Initial requests | 42 | 8 | **-81%** |
492
+ | LCP (mobile 4G) | 4.2s | 1.8s | **-57%** |
493
+ | CLS | 0.18 | 0.02 | **-89%** |
494
+
495
+ ### 12.2 Content Blog
496
+
497
+ **Before**: 3.2 MB page (2.1 MB images -- 12 full-res PNGs).
498
+ **After** (format conversion + responsive + lazy): Image payload **420 KB** (-80%), LCP **1.6s** (-58%), page load (3G) **3.5s** (-71%).
499
+
500
+ ### 12.3 SaaS Dashboard
501
+
502
+ **Before**: 48 PNG icons + 6 chart screenshots = 1.8 MB.
503
+ **After**: SVG sprite (24 KB) + WebP charts with lazy loading = 180 KB. **90% reduction**.
504
+
505
+ ---
506
+
507
+ ## 13. Implementation Checklist
508
+
509
+ ### Build Pipeline
510
+
511
+ ```javascript
512
+ // vite.config.js
513
+ import viteImagemin from 'vite-plugin-imagemin';
514
+ export default defineConfig({
515
+ plugins: [viteImagemin({
516
+ mozjpeg: { quality: 80 }, pngquant: { quality: [0.7, 0.85] },
517
+ webp: { quality: 80 }, avif: { quality: 50, speed: 5 },
518
+ })],
519
+ });
520
+ ```
521
+
522
+ ### Server Configuration (Nginx)
523
+
524
+ ```nginx
525
+ map $http_accept $img_suffix {
526
+ default "";
527
+ "~*avif" ".avif";
528
+ "~*webp" ".webp";
529
+ }
530
+ location ~* \.(jpg|jpeg|png)$ {
531
+ try_files $uri$img_suffix $uri =404;
532
+ add_header Vary Accept;
533
+ add_header Cache-Control "public, max-age=31536000, immutable";
534
+ }
535
+ ```
536
+
537
+ ### Performance Budget
538
+
539
+ | Asset Type | Budget (Mobile) | Budget (Desktop) |
540
+ |-----------|----------------|-----------------|
541
+ | Total images | < 500 KB | < 1,000 KB |
542
+ | Hero/LCP image | < 100 KB | < 200 KB |
543
+ | Product image | < 50 KB | < 80 KB |
544
+ | Thumbnails | < 15 KB | < 20 KB |
545
+ | Icons (SVG) | < 3 KB each | < 3 KB each |
546
+
547
+ ```javascript
548
+ // lighthouserc.js
549
+ module.exports = { ci: { assert: { assertions: {
550
+ 'resource-summary:image:size': ['error', { maxNumericValue: 500000 }],
551
+ 'largest-contentful-paint': ['error', { maxNumericValue: 2500 }],
552
+ 'cumulative-layout-shift': ['error', { maxNumericValue: 0.1 }],
553
+ }}}};
554
+ ```
555
+
556
+ ---
557
+
558
+ ## 14. Monitoring and Measurement
559
+
560
+ | Metric | Tool | Target |
561
+ |--------|------|--------|
562
+ | LCP | CrUX, Lighthouse, WebPageTest | < 2.5s (p75) |
563
+ | CLS | CrUX, Lighthouse | < 0.1 (p75) |
564
+ | Total image weight | WebPageTest, DevTools | < 500 KB (mobile) |
565
+ | Image requests (initial) | DevTools Network | < 10 (above-fold) |
566
+ | Format adoption | HTTP Archive queries | > 80% modern formats |
567
+ | Cache hit ratio | CDN analytics | > 90% |
568
+
569
+ **RUM snippet for LCP tracking**:
570
+
571
+ ```javascript
572
+ new PerformanceObserver((list) => {
573
+ const entry = list.getEntries().at(-1);
574
+ analytics.track('lcp', {
575
+ time: entry.startTime, element: entry.element?.tagName, url: entry.url,
576
+ });
577
+ }).observe({ type: 'largest-contentful-paint', buffered: true });
578
+ ```
579
+
580
+ **Field data** (CrUX July 2025): 62.3% mobile / 74.4% desktop visits score "good" LCP.
581
+ Source: [HTTP Archive 2025 - Performance](https://almanac.httparchive.org/en/2025/performance)
582
+
583
+ ---
584
+
585
+ ## 15. Quick Reference Cheat Sheet
586
+
587
+ ```
588
+ ABOVE THE FOLD (LCP candidates)
589
+ loading="eager" | fetchpriority="high" (1 per page) | decoding="async"
590
+ <link rel="preload"> if not in HTML | Always set width + height
591
+ Use AVIF > WebP > JPEG with <picture>
592
+
593
+ BELOW THE FOLD
594
+ loading="lazy" | decoding="async" | Always set width + height
595
+ Use AVIF > WebP > JPEG with <picture>
596
+
597
+ FORMAT SELECTION
598
+ Photos/complex --> AVIF (WebP fallback)
599
+ Graphics/logos --> SVG
600
+ Screenshots --> WebP lossless or PNG
601
+ Animations --> <video> (never GIF for >3s or >256px)
602
+ Icons --> SVG (inline or sprite)
603
+
604
+ QUALITY SETTINGS
605
+ JPEG: 75-85 | WebP: 75-85 | AVIF: 50-65 (equiv to JPEG 80)
606
+
607
+ RESPONSIVE
608
+ 3-5 srcset breakpoints: 400, 800, 1200, 1600, 2400
609
+ sizes must match CSS layout | Fallback src at 800px | Max useful: 2560px
610
+ ```
611
+
612
+ ---
613
+
614
+ ## References
615
+
616
+ - [HTTP Archive Web Almanac 2024 - Page Weight](https://almanac.httparchive.org/en/2024/page-weight)
617
+ - [HTTP Archive Web Almanac 2024 - Media](https://almanac.httparchive.org/en/2024/media)
618
+ - [HTTP Archive Web Almanac 2025 - Performance](https://almanac.httparchive.org/en/2025/performance)
619
+ - [web.dev - Optimize LCP](https://web.dev/articles/optimize-lcp)
620
+ - [web.dev - Optimize Web Fonts](https://web.dev/learn/performance/optimize-web-fonts)
621
+ - [web.dev - Fetch Priority API](https://web.dev/articles/fetch-priority)
622
+ - [MDN - Responsive Images](https://developer.mozilla.org/en-US/docs/Web/HTML/Guides/Responsive_images)
623
+ - [MDN - Fix Image LCP](https://developer.mozilla.org/en-US/blog/fix-image-lcp/)
624
+ - [MDN - Lazy Loading](https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/Lazy_loading)
625
+ - [SpeedVitals - WebP vs AVIF](https://speedvitals.com/blog/webp-vs-avif/)
626
+ - [ImageRobo - Format Comparison](https://imagerobo.com/blogs/image-formats-comparison-jpeg-webp-avif)
627
+ - [Netflix Tech Blog - AV1 Powering 30% of Streaming](https://netflixtechblog.com/av1-now-powering-30-of-netflix-streaming-02f592242d80)
628
+ - [FastPix - AV1 vs H.264 vs H.265](https://www.fastpix.io/blog/av1-vs-h-264-vs-h-265-best-codec-for-video-streaming)
629
+ - [Addy Osmani - Fetch Priority](https://addyosmani.com/blog/fetch-priority/)
630
+ - [Bunny.net - Why Base64 is Almost Always Bad](https://bunny.net/blog/why-optimizing-your-images-with-base64-is-almost-always-a-bad-idea/)
631
+ - [PerfPlanet - Anti-Patterns: Base64](https://calendar.perfplanet.com/2018/performance-anti-patterns-base64-encoding/)
632
+ - [VisionFly - Best Image CDN](https://www.visionfly.ai/blog/best-image-cdn-comparison)
633
+ - [Scaleflex - Top 10 Image CDNs](https://blog.scaleflex.com/top-10-image-cdns/)
634
+ - [DebugBear - Responsive Images](https://www.debugbear.com/blog/responsive-images)
635
+ - [NitroPack - Font Loading Optimization](https://nitropack.io/blog/post/font-loading-optimization)
636
+ - [Cloudinary - Advanced Image Formats](https://cloudinary.com/blog/advanced-image-formats-and-when-to-use-them)
@@ -0,0 +1,24 @@
1
+ # Directory Purpose
2
+
3
+ The `web` performance directory covers techniques for delivering fast, responsive browser experiences over HTTP.
4
+
5
+ # Key Concepts
6
+
7
+ - Minimizing asset delivery time
8
+ - Optimizing browser parsing and rendering
9
+ - Passing Google Core Web Vitals
10
+
11
+ # File Map
12
+
13
+ - `bundle-optimization.md` — tree shaking, code splitting, and dynamic imports
14
+ - `image-and-media.md` — lazy loading, WebP/AVIF, and responsive images
15
+ - `network-optimization.md` — HTTP/2, preloading, prefetching, and compression
16
+ - `rendering-performance.md` — critical rendering path, layout thrashing, CSS containment
17
+ - `ssr-and-hydration.md` — Server-Side Rendering, Static Site Generation, and island architecture
18
+ - `web-vitals.md` — LCP, CLS, INP, and real-user monitoring (RUM)
19
+
20
+ # Reading Guide
21
+
22
+ If JS files are too large → read `bundle-optimization.md`
23
+ If images are slowing down the page → read `image-and-media.md`
24
+ If improving SEO and Web Vitals → read `web-vitals.md`