skilldrop-cli 0.16.35 → 0.16.37

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 (298) hide show
  1. package/README.md +1 -0
  2. package/agents/README.md +4 -1
  3. package/agents/docs-reviewer.md +47 -0
  4. package/agents/finding-adjudicator.md +49 -0
  5. package/agents/test-reviewer.md +52 -0
  6. package/catalogue.json +19 -7
  7. package/model-routing.json +48 -0
  8. package/package.json +1 -1
  9. package/packs/ai-engineering/skills/agent-config-review/SKILL.md +116 -0
  10. package/packs/ai-engineering/skills/agent-config-review/evals/eval_queries.json +12 -0
  11. package/packs/ai-engineering/skills/agent-config-review/evals/evals.json +75 -0
  12. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.claude/agents/db-migrator.md +8 -0
  13. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.claude/agents/reviewer.md +9 -0
  14. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.claude/settings.json +48 -0
  15. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.claude/settings.local.json +5 -0
  16. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/.mcp.json +22 -0
  17. package/packs/ai-engineering/skills/agent-config-review/evals/files/1/package.json +12 -0
  18. package/packs/ai-engineering/skills/agent-config-review/evals/files/2/.cursor/mcp.json +17 -0
  19. package/packs/ai-engineering/skills/agent-config-review/evals/files/2/config.toml +21 -0
  20. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/my-user-settings.json +11 -0
  21. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/quillstack/.claude/agents/release-notes.md +13 -0
  22. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/quillstack/.claude/settings.json +39 -0
  23. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/quillstack/.mcp.json +18 -0
  24. package/packs/ai-engineering/skills/agent-config-review/evals/files/4/quillstack/package.json +14 -0
  25. package/packs/ai-engineering/skills/agent-config-review/evals/files/5/.github/workflows/codex-triage.yml +29 -0
  26. package/packs/ai-engineering/skills/agent-config-review/evals/files/5/AGENTS.md +16 -0
  27. package/packs/ai-engineering/skills/agent-config-review/evals/files/5/codex/config.toml +34 -0
  28. package/packs/ai-engineering/skills/agent-config-review/examples/inputs/tidewater-ingest/.claude/settings.json +22 -0
  29. package/packs/ai-engineering/skills/agent-config-review/examples/inputs/tidewater-ingest/.mcp.json +9 -0
  30. package/packs/ai-engineering/skills/agent-config-review/examples/python-repo-tighten.md +81 -0
  31. package/packs/ai-engineering/skills/agent-config-review/manifest.json +60 -0
  32. package/packs/ai-engineering/skills/agent-config-review/reference.md +205 -0
  33. package/packs/ai-engineering/skills/agent-config-review/scripts/agent_config_scan.py +989 -0
  34. package/packs/ai-engineering/skills/agent-incident-response/SKILL.md +175 -0
  35. package/packs/ai-engineering/skills/agent-incident-response/evals/eval_queries.json +14 -0
  36. package/packs/ai-engineering/skills/agent-incident-response/evals/evals.json +107 -0
  37. package/packs/ai-engineering/skills/agent-incident-response/evals/files/1/agent-session-excerpt.txt +11 -0
  38. package/packs/ai-engineering/skills/agent-incident-response/evals/files/1/ci-build-log.txt +24 -0
  39. package/packs/ai-engineering/skills/agent-incident-response/evals/files/1/incident-notes.md +19 -0
  40. package/packs/ai-engineering/skills/agent-incident-response/evals/files/2/mcp-config.json +20 -0
  41. package/packs/ai-engineering/skills/agent-incident-response/evals/files/2/session-transcript.txt +8 -0
  42. package/packs/ai-engineering/skills/agent-incident-response/evals/files/4/agent-session.log +70 -0
  43. package/packs/ai-engineering/skills/agent-incident-response/evals/files/4/infra/staging-db.tf +25 -0
  44. package/packs/ai-engineering/skills/agent-incident-response/evals/files/5/jobs/nightly-triage/job.yaml +19 -0
  45. package/packs/ai-engineering/skills/agent-incident-response/evals/files/5/jobs/nightly-triage/run.log +13 -0
  46. package/packs/ai-engineering/skills/agent-incident-response/evals/files/5/usage-export-2026-10-20.csv +13 -0
  47. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/.mcp.json +20 -0
  48. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/git-log.txt +12 -0
  49. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/notesync-excerpt.txt +30 -0
  50. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/notesync.log +15 -0
  51. package/packs/ai-engineering/skills/agent-incident-response/evals/files/6/ssh-config.txt +16 -0
  52. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/.github/workflows/ci.yml +28 -0
  53. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/SECURITY.md +8 -0
  54. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/issue-479.md +35 -0
  55. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/package.json +15 -0
  56. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/pr-482.diff +20 -0
  57. package/packs/ai-engineering/skills/agent-incident-response/evals/files/7/run-log.txt +30 -0
  58. package/packs/ai-engineering/skills/agent-incident-response/examples/injected-issue-comment.md +57 -0
  59. package/packs/ai-engineering/skills/agent-incident-response/manifest.json +55 -0
  60. package/packs/ai-engineering/skills/agent-incident-response/reference.md +152 -0
  61. package/packs/ai-engineering/skills/agent-incident-response/scripts/find_secret_exposure.py +239 -0
  62. package/packs/ai-engineering/skills/agent-incident-response/scripts/usage_split.py +194 -0
  63. package/packs/ai-engineering/skills/judge-audit/SKILL.md +157 -0
  64. package/packs/ai-engineering/skills/judge-audit/evals/eval_queries.json +11 -0
  65. package/packs/ai-engineering/skills/judge-audit/evals/evals.json +136 -0
  66. package/packs/ai-engineering/skills/judge-audit/evals/files/1/judgements.csv +321 -0
  67. package/packs/ai-engineering/skills/judge-audit/evals/files/1/notes.md +28 -0
  68. package/packs/ai-engineering/skills/judge-audit/evals/files/2/pairwise.csv +101 -0
  69. package/packs/ai-engineering/skills/judge-audit/evals/files/2/run-notes.md +16 -0
  70. package/packs/ai-engineering/skills/judge-audit/evals/files/4/grades.csv +97 -0
  71. package/packs/ai-engineering/skills/judge-audit/evals/files/5/pairwise_judgements.jsonl +120 -0
  72. package/packs/ai-engineering/skills/judge-audit/evals/files/6/rag-judge/README.md +36 -0
  73. package/packs/ai-engineering/skills/judge-audit/evals/files/6/rag-judge/judgments.csv +301 -0
  74. package/packs/ai-engineering/skills/judge-audit/evals/files/7/moderation/gold_labels.csv +101 -0
  75. package/packs/ai-engineering/skills/judge-audit/evals/files/7/moderation/run_1.jsonl +100 -0
  76. package/packs/ai-engineering/skills/judge-audit/evals/files/7/moderation/run_2.jsonl +100 -0
  77. package/packs/ai-engineering/skills/judge-audit/evals/files/8/patches.csv +241 -0
  78. package/packs/ai-engineering/skills/judge-audit/evals/files/9/adequacy_ratings.csv +151 -0
  79. package/packs/ai-engineering/skills/judge-audit/examples/summary-panel.md +70 -0
  80. package/packs/ai-engineering/skills/judge-audit/manifest.json +44 -0
  81. package/packs/ai-engineering/skills/judge-audit/reference.md +176 -0
  82. package/packs/ai-engineering/skills/judge-audit/scripts/judge_stats.py +1735 -0
  83. package/packs/converters/skills/file-to-markdown/SKILL.md +2 -1
  84. package/packs/converters/skills/file-to-markdown/evals/eval_queries.json +4 -0
  85. package/packs/converters/skills/file-to-markdown/manifest.json +2 -2
  86. package/packs/converters/skills/file-to-markdown/scripts/to_markdown.py +253 -3
  87. package/packs/converters/skills/md-to-confluence/SKILL.md +139 -0
  88. package/packs/converters/skills/md-to-confluence/evals/eval_queries.json +42 -0
  89. package/packs/converters/skills/md-to-confluence/evals/evals.json +89 -0
  90. package/packs/converters/skills/md-to-confluence/evals/files/1/img/latency-dashboard.png +0 -0
  91. package/packs/converters/skills/md-to-confluence/evals/files/1/payments-runbook.md +60 -0
  92. package/packs/converters/skills/md-to-confluence/evals/files/2/deploy-checklist.md +33 -0
  93. package/packs/converters/skills/md-to-confluence/evals/files/3/img/after/screen.png +0 -0
  94. package/packs/converters/skills/md-to-confluence/evals/files/3/img/before/screen.png +0 -0
  95. package/packs/converters/skills/md-to-confluence/evals/files/3/release-notes-4.2.md +49 -0
  96. package/packs/converters/skills/md-to-confluence/evals/files/4/docs/img/topology.png +0 -0
  97. package/packs/converters/skills/md-to-confluence/evals/files/4/docs/ingest-pipeline-design.md +65 -0
  98. package/packs/converters/skills/md-to-confluence/evals/files/5/support/troubleshooting-sso.md +57 -0
  99. package/packs/converters/skills/md-to-confluence/examples/inputs/img/queue-depth.png +0 -0
  100. package/packs/converters/skills/md-to-confluence/examples/inputs/queue-runbook.fixed.md +21 -0
  101. package/packs/converters/skills/md-to-confluence/examples/inputs/queue-runbook.md +21 -0
  102. package/packs/converters/skills/md-to-confluence/examples/queue-runbook.md +57 -0
  103. package/packs/converters/skills/md-to-confluence/manifest.json +52 -0
  104. package/packs/converters/skills/md-to-confluence/reference.md +92 -0
  105. package/packs/converters/skills/md-to-confluence/scripts/md_to_confluence.py +821 -0
  106. package/packs/converters/skills/md-to-pptx/SKILL.md +131 -0
  107. package/packs/converters/skills/md-to-pptx/evals/eval_queries.json +12 -0
  108. package/packs/converters/skills/md-to-pptx/evals/evals.json +84 -0
  109. package/packs/converters/skills/md-to-pptx/evals/files/1/img/defect-burndown.png +0 -0
  110. package/packs/converters/skills/md-to-pptx/evals/files/1/status-report.md +75 -0
  111. package/packs/converters/skills/md-to-pptx/evals/files/3/brand.json +12 -0
  112. package/packs/converters/skills/md-to-pptx/evals/files/3/night-shift-induction.md +53 -0
  113. package/packs/converters/skills/md-to-pptx/evals/files/4/charts/ontime.png +0 -0
  114. package/packs/converters/skills/md-to-pptx/evals/files/4/qbr-q3.md +85 -0
  115. package/packs/converters/skills/md-to-pptx/evals/files/5/vendor-sync-notes.md +28 -0
  116. package/packs/converters/skills/md-to-pptx/examples/support-weekly-input.md +48 -0
  117. package/packs/converters/skills/md-to-pptx/examples/support-weekly.md +75 -0
  118. package/packs/converters/skills/md-to-pptx/examples/tickets-by-week.png +0 -0
  119. package/packs/converters/skills/md-to-pptx/manifest.json +49 -0
  120. package/packs/converters/skills/md-to-pptx/reference.md +139 -0
  121. package/packs/converters/skills/md-to-pptx/scripts/md_to_pptx.py +1841 -0
  122. package/packs/dev-team/loops/modernize/LOOP.md +124 -0
  123. package/packs/dev-team/loops/modernize/evals/eval_queries.json +9 -0
  124. package/packs/dev-team/loops/modernize/evals/evals.json +27 -0
  125. package/packs/dev-team/loops/modernize/loop.json +60 -0
  126. package/packs/dev-team/skills/behaviour-equivalence/SKILL.md +155 -0
  127. package/packs/dev-team/skills/behaviour-equivalence/evals/eval_queries.json +11 -0
  128. package/packs/dev-team/skills/behaviour-equivalence/evals/evals.json +76 -0
  129. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/cases.jsonl +12 -0
  130. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/new.jsonl +12 -0
  131. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/notes.md +15 -0
  132. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/old.jsonl +12 -0
  133. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/old_rerun.jsonl +12 -0
  134. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/pricing_v1.py +45 -0
  135. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/pricing_v2.py +65 -0
  136. package/packs/dev-team/skills/behaviour-equivalence/evals/files/1/rules.json +10 -0
  137. package/packs/dev-team/skills/behaviour-equivalence/evals/files/3/diff-summary.txt +16 -0
  138. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/diff.txt +13 -0
  139. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/fee_calc_py2.py +16 -0
  140. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/fee_calc_py3.py +24 -0
  141. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/input.csv +13 -0
  142. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/new_output.csv +13 -0
  143. package/packs/dev-team/skills/behaviour-equivalence/evals/files/4/old_output.csv +13 -0
  144. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/TEAM_NOTES.md +19 -0
  145. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/normalisation.yaml +12 -0
  146. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/recordings/new_run.jsonl +8 -0
  147. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/recordings/old_run1.jsonl +8 -0
  148. package/packs/dev-team/skills/behaviour-equivalence/evals/files/5/recordings/old_run2.jsonl +8 -0
  149. package/packs/dev-team/skills/behaviour-equivalence/examples/delivery-date.md +78 -0
  150. package/packs/dev-team/skills/behaviour-equivalence/manifest.json +33 -0
  151. package/packs/dev-team/skills/behaviour-equivalence/reference.md +97 -0
  152. package/packs/dev-team/skills/behaviour-equivalence/scripts/golden_diff.py +524 -0
  153. package/packs/dev-team/skills/behaviour-equivalence/templates/accepted.json +10 -0
  154. package/packs/dev-team/skills/behaviour-equivalence/templates/rules.json +7 -0
  155. package/packs/frontend/pack.json +61 -0
  156. package/packs/frontend/skills/bundle-size-review/SKILL.md +114 -0
  157. package/packs/frontend/skills/bundle-size-review/evals/eval_queries.json +12 -0
  158. package/packs/frontend/skills/bundle-size-review/evals/evals.json +108 -0
  159. package/packs/frontend/skills/bundle-size-review/evals/files/1/package.json +28 -0
  160. package/packs/frontend/skills/bundle-size-review/evals/files/1/src/utils/format.js +26 -0
  161. package/packs/frontend/skills/bundle-size-review/evals/files/1/stats.json +1334 -0
  162. package/packs/frontend/skills/bundle-size-review/evals/files/2/PR.md +21 -0
  163. package/packs/frontend/skills/bundle-size-review/evals/files/2/meta-after.json +440 -0
  164. package/packs/frontend/skills/bundle-size-review/evals/files/2/meta-before.json +360 -0
  165. package/packs/frontend/skills/bundle-size-review/evals/files/3/package.json +29 -0
  166. package/packs/frontend/skills/bundle-size-review/evals/files/3/stats.json +1583 -0
  167. package/packs/frontend/skills/bundle-size-review/evals/files/4/src/components/CommentBox.jsx +24 -0
  168. package/packs/frontend/skills/bundle-size-review/evals/files/4/stats/after.json +299 -0
  169. package/packs/frontend/skills/bundle-size-review/evals/files/4/stats/before.json +275 -0
  170. package/packs/frontend/skills/bundle-size-review/evals/files/5/.browserslistrc +3 -0
  171. package/packs/frontend/skills/bundle-size-review/evals/files/5/build/meta.json +371 -0
  172. package/packs/frontend/skills/bundle-size-review/evals/files/5/build.mjs +18 -0
  173. package/packs/frontend/skills/bundle-size-review/evals/files/5/package-lock.json +39 -0
  174. package/packs/frontend/skills/bundle-size-review/evals/files/5/package.json +22 -0
  175. package/packs/frontend/skills/bundle-size-review/evals/files/5/src/components/Icon.jsx +8 -0
  176. package/packs/frontend/skills/bundle-size-review/evals/files/5/src/polyfills.js +7 -0
  177. package/packs/frontend/skills/bundle-size-review/evals/files/5/src/utils/groupRows.js +4 -0
  178. package/packs/frontend/skills/bundle-size-review/evals/files/6/.browserslistrc +3 -0
  179. package/packs/frontend/skills/bundle-size-review/evals/files/6/package.json +25 -0
  180. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/App.tsx +8 -0
  181. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/chartLocales.ts +16 -0
  182. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/index.ts +8 -0
  183. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/messages/de.ts +5 -0
  184. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/messages/en.ts +5 -0
  185. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/i18n/useLocale.ts +14 -0
  186. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/main.tsx +10 -0
  187. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/pages/Home.tsx +14 -0
  188. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/pages/Reports.tsx +31 -0
  189. package/packs/frontend/skills/bundle-size-review/evals/files/6/src/routes.tsx +17 -0
  190. package/packs/frontend/skills/bundle-size-review/evals/files/6/stats.json +1869 -0
  191. package/packs/frontend/skills/bundle-size-review/evals/files/6/vite.config.ts +13 -0
  192. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/package.json +26 -0
  193. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/src/App.tsx +27 -0
  194. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/src/pages/Analytics.tsx +10 -0
  195. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/src/pages/Users.tsx +13 -0
  196. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/stats.json +1421 -0
  197. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/backoffice/webpack.config.js +25 -0
  198. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/package.json +27 -0
  199. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/src/App.tsx +18 -0
  200. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/src/index.tsx +4 -0
  201. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/src/pages/Home.tsx +10 -0
  202. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/src/pages/Product.tsx +13 -0
  203. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/stats.json +1496 -0
  204. package/packs/frontend/skills/bundle-size-review/evals/files/7/apps/storefront/webpack.config.js +26 -0
  205. package/packs/frontend/skills/bundle-size-review/evals/files/7/package.json +9 -0
  206. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/dist/Button.css +3 -0
  207. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/dist/Button.js +14 -0
  208. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/dist/Chart.js +21 -0
  209. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/dist/index.js +22 -0
  210. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/package.json +20 -0
  211. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/src/Button.css +3 -0
  212. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/src/Button.tsx +9 -0
  213. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/src/Chart.tsx +14 -0
  214. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/src/index.ts +6 -0
  215. package/packs/frontend/skills/bundle-size-review/evals/files/7/packages/ui/tsconfig.json +14 -0
  216. package/packs/frontend/skills/bundle-size-review/examples/inputs/stats-after.json +1358 -0
  217. package/packs/frontend/skills/bundle-size-review/examples/inputs/stats-before.json +1334 -0
  218. package/packs/frontend/skills/bundle-size-review/examples/larkspur-sparkline.md +52 -0
  219. package/packs/frontend/skills/bundle-size-review/manifest.json +52 -0
  220. package/packs/frontend/skills/bundle-size-review/reference.md +147 -0
  221. package/packs/frontend/skills/bundle-size-review/scripts/bundle_stats.py +1633 -0
  222. package/packs/frontend/skills/rendering-strategy/SKILL.md +149 -0
  223. package/packs/frontend/skills/rendering-strategy/evals/eval_queries.json +38 -0
  224. package/packs/frontend/skills/rendering-strategy/evals/evals.json +77 -0
  225. package/packs/frontend/skills/rendering-strategy/evals/files/1/fernhill-app.md +40 -0
  226. package/packs/frontend/skills/rendering-strategy/evals/files/3/routes.md +33 -0
  227. package/packs/frontend/skills/rendering-strategy/evals/files/4/build-notes.txt +5 -0
  228. package/packs/frontend/skills/rendering-strategy/evals/files/4/nuxt.config.ts +19 -0
  229. package/packs/frontend/skills/rendering-strategy/evals/files/4/pages/recipes/[slug].vue +37 -0
  230. package/packs/frontend/skills/rendering-strategy/evals/files/4/routes.md +15 -0
  231. package/packs/frontend/skills/rendering-strategy/evals/files/5/routes.txt +18 -0
  232. package/packs/frontend/skills/rendering-strategy/evals/files/5/src/hooks.server.ts +14 -0
  233. package/packs/frontend/skills/rendering-strategy/evals/files/5/src/routes/(marketing)/pricing/+page.server.ts +10 -0
  234. package/packs/frontend/skills/rendering-strategy/evals/files/5/src/routes/+layout.server.ts +10 -0
  235. package/packs/frontend/skills/rendering-strategy/evals/files/5/svelte.config.js +10 -0
  236. package/packs/frontend/skills/rendering-strategy/evals/files/5/traffic.md +18 -0
  237. package/packs/frontend/skills/rendering-strategy/examples/saas-site.md +42 -0
  238. package/packs/frontend/skills/rendering-strategy/manifest.json +50 -0
  239. package/packs/frontend/skills/rendering-strategy/reference.md +116 -0
  240. package/packs/frontend/skills/rendering-strategy/scripts/render_load.py +181 -0
  241. package/packs/frontend/skills/web-performance-review/SKILL.md +106 -0
  242. package/packs/frontend/skills/web-performance-review/evals/eval_queries.json +38 -0
  243. package/packs/frontend/skills/web-performance-review/evals/evals.json +76 -0
  244. package/packs/frontend/skills/web-performance-review/evals/files/1/psi.json +1065 -0
  245. package/packs/frontend/skills/web-performance-review/evals/files/2/after.json +359 -0
  246. package/packs/frontend/skills/web-performance-review/evals/files/2/before.json +375 -0
  247. package/packs/frontend/skills/web-performance-review/evals/files/4/psi-pdp-mobile-2026-10-19.json +171 -0
  248. package/packs/frontend/skills/web-performance-review/evals/files/4/rum-inp-attribution-oct14-19.csv +6 -0
  249. package/packs/frontend/skills/web-performance-review/evals/files/4/rum-inp-daily.csv +15 -0
  250. package/packs/frontend/skills/web-performance-review/evals/files/5/crux-home-phone.json +35 -0
  251. package/packs/frontend/skills/web-performance-review/evals/files/5/lighthouse-home-mobile.json +173 -0
  252. package/packs/frontend/skills/web-performance-review/examples/quayside-article-lhr.json +480 -0
  253. package/packs/frontend/skills/web-performance-review/examples/quayside-article.md +103 -0
  254. package/packs/frontend/skills/web-performance-review/manifest.json +49 -0
  255. package/packs/frontend/skills/web-performance-review/reference.md +105 -0
  256. package/packs/frontend/skills/web-performance-review/scripts/lh_summary.py +743 -0
  257. package/packs/product-manager/skills/lean-canvas/SKILL.md +162 -0
  258. package/packs/product-manager/skills/lean-canvas/evals/eval_queries.json +42 -0
  259. package/packs/product-manager/skills/lean-canvas/evals/evals.json +82 -0
  260. package/packs/product-manager/skills/lean-canvas/evals/files/1/pawpass-notes.md +54 -0
  261. package/packs/product-manager/skills/lean-canvas/evals/files/3/lunchloop-pitch.md +30 -0
  262. package/packs/product-manager/skills/lean-canvas/evals/files/4/clubkit-notes.md +44 -0
  263. package/packs/product-manager/skills/lean-canvas/evals/files/5/cost-model.csv +5 -0
  264. package/packs/product-manager/skills/lean-canvas/evals/files/5/proposal.md +40 -0
  265. package/packs/product-manager/skills/lean-canvas/evals/files/5/stakeholder-emails.txt +18 -0
  266. package/packs/product-manager/skills/lean-canvas/examples/bike-repair.md +72 -0
  267. package/packs/product-manager/skills/lean-canvas/manifest.json +34 -0
  268. package/packs/product-manager/skills/lean-canvas/reference.md +102 -0
  269. package/packs/product-manager/skills/lean-canvas/scripts/unit_economics.py +211 -0
  270. package/packs/solution-architect/skills/api-contract-draft/SKILL.md +2 -2
  271. package/packs/solution-architect/skills/api-contract-draft/manifest.json +28 -6
  272. package/packs/solution-architect/skills/event-contract-draft/SKILL.md +167 -0
  273. package/packs/solution-architect/skills/event-contract-draft/evals/eval_queries.json +38 -0
  274. package/packs/solution-architect/skills/event-contract-draft/evals/evals.json +76 -0
  275. package/packs/solution-architect/skills/event-contract-draft/evals/files/1/order-events-brief.md +45 -0
  276. package/packs/solution-architect/skills/event-contract-draft/evals/files/4/NOTES.md +23 -0
  277. package/packs/solution-architect/skills/event-contract-draft/evals/files/4/schemas/shipment-update.json +40 -0
  278. package/packs/solution-architect/skills/event-contract-draft/evals/files/5/invoice.example.json +25 -0
  279. package/packs/solution-architect/skills/event-contract-draft/examples/order-service.asyncapi.json +246 -0
  280. package/packs/solution-architect/skills/event-contract-draft/examples/order-service.md +92 -0
  281. package/packs/solution-architect/skills/event-contract-draft/manifest.json +25 -0
  282. package/packs/solution-architect/skills/event-contract-draft/reference.md +113 -0
  283. package/packs/solution-architect/skills/event-contract-draft/scripts/check_asyncapi.py +502 -0
  284. package/packs/solution-architect/skills/event-contract-draft/templates/asyncapi-skeleton.json +144 -0
  285. package/packs/sre-oncall/skills/slo-spec/SKILL.md +161 -0
  286. package/packs/sre-oncall/skills/slo-spec/evals/eval_queries.json +38 -0
  287. package/packs/sre-oncall/skills/slo-spec/evals/evals.json +75 -0
  288. package/packs/sre-oncall/skills/slo-spec/evals/files/1/order-service.md +51 -0
  289. package/packs/sre-oncall/skills/slo-spec/evals/files/3/search-slo-status.md +30 -0
  290. package/packs/sre-oncall/skills/slo-spec/evals/files/4/alerts/payments-api.rules.yaml +16 -0
  291. package/packs/sre-oncall/skills/slo-spec/evals/files/4/docs/dependencies.md +8 -0
  292. package/packs/sre-oncall/skills/slo-spec/evals/files/4/metrics/summary-90d.md +51 -0
  293. package/packs/sre-oncall/skills/slo-spec/evals/files/5/ops-notes.md +34 -0
  294. package/packs/sre-oncall/skills/slo-spec/examples/ticket-booking.md +88 -0
  295. package/packs/sre-oncall/skills/slo-spec/manifest.json +34 -0
  296. package/packs/sre-oncall/skills/slo-spec/reference.md +113 -0
  297. package/packs/sre-oncall/skills/slo-spec/scripts/slo_math.py +449 -0
  298. package/packs/sre-oncall/skills/slo-spec/templates/slo-spec.md +35 -0
@@ -0,0 +1,1065 @@
1
+ {
2
+ "captchaResult": "CAPTCHA_NOT_NEEDED",
3
+ "kind": "pagespeedonline#result",
4
+ "id": "https://www.harbourlane.example/collections/raincoats",
5
+ "loadingExperience": {
6
+ "id": "https://www.harbourlane.example/collections/raincoats",
7
+ "initial_url": "https://www.harbourlane.example/collections/raincoats",
8
+ "overall_category": "SLOW",
9
+ "metrics": {
10
+ "LARGEST_CONTENTFUL_PAINT_MS": {
11
+ "percentile": 4300,
12
+ "distributions": [
13
+ {
14
+ "min": 0,
15
+ "max": 2500,
16
+ "proportion": 0.48
17
+ },
18
+ {
19
+ "min": 2500,
20
+ "max": 4000,
21
+ "proportion": 0.24
22
+ },
23
+ {
24
+ "min": 4000,
25
+ "proportion": 0.28
26
+ }
27
+ ],
28
+ "category": "SLOW"
29
+ },
30
+ "INTERACTION_TO_NEXT_PAINT": {
31
+ "percentile": 168,
32
+ "distributions": [
33
+ {
34
+ "min": 0,
35
+ "max": 200,
36
+ "proportion": 0.81
37
+ },
38
+ {
39
+ "min": 200,
40
+ "max": 500,
41
+ "proportion": 0.15
42
+ },
43
+ {
44
+ "min": 500,
45
+ "proportion": 0.04
46
+ }
47
+ ],
48
+ "category": "FAST"
49
+ },
50
+ "CUMULATIVE_LAYOUT_SHIFT_SCORE": {
51
+ "percentile": 14,
52
+ "distributions": [
53
+ {
54
+ "min": 0,
55
+ "max": 10,
56
+ "proportion": 0.69
57
+ },
58
+ {
59
+ "min": 10,
60
+ "max": 25,
61
+ "proportion": 0.22
62
+ },
63
+ {
64
+ "min": 25,
65
+ "proportion": 0.09
66
+ }
67
+ ],
68
+ "category": "AVERAGE"
69
+ },
70
+ "FIRST_CONTENTFUL_PAINT_MS": {
71
+ "percentile": 2100,
72
+ "distributions": [
73
+ {
74
+ "min": 0,
75
+ "max": 1800,
76
+ "proportion": 0.66
77
+ },
78
+ {
79
+ "min": 1800,
80
+ "max": 3000,
81
+ "proportion": 0.23
82
+ },
83
+ {
84
+ "min": 3000,
85
+ "proportion": 0.11
86
+ }
87
+ ],
88
+ "category": "AVERAGE"
89
+ },
90
+ "EXPERIMENTAL_TIME_TO_FIRST_BYTE": {
91
+ "percentile": 1250,
92
+ "distributions": [
93
+ {
94
+ "min": 0,
95
+ "max": 800,
96
+ "proportion": 0.52
97
+ },
98
+ {
99
+ "min": 800,
100
+ "max": 1800,
101
+ "proportion": 0.33
102
+ },
103
+ {
104
+ "min": 1800,
105
+ "proportion": 0.15
106
+ }
107
+ ],
108
+ "category": "AVERAGE"
109
+ }
110
+ }
111
+ },
112
+ "originLoadingExperience": {
113
+ "id": "https://www.harbourlane.example",
114
+ "overall_category": "AVERAGE",
115
+ "metrics": {
116
+ "LARGEST_CONTENTFUL_PAINT_MS": {
117
+ "percentile": 3100,
118
+ "distributions": [
119
+ {
120
+ "min": 0,
121
+ "max": 2500,
122
+ "proportion": 0.64
123
+ },
124
+ {
125
+ "min": 2500,
126
+ "max": 4000,
127
+ "proportion": 0.22
128
+ },
129
+ {
130
+ "min": 4000,
131
+ "proportion": 0.14
132
+ }
133
+ ],
134
+ "category": "AVERAGE"
135
+ },
136
+ "INTERACTION_TO_NEXT_PAINT": {
137
+ "percentile": 190,
138
+ "distributions": [
139
+ {
140
+ "min": 0,
141
+ "max": 200,
142
+ "proportion": 0.77
143
+ },
144
+ {
145
+ "min": 200,
146
+ "max": 500,
147
+ "proportion": 0.18
148
+ },
149
+ {
150
+ "min": 500,
151
+ "proportion": 0.05
152
+ }
153
+ ],
154
+ "category": "FAST"
155
+ },
156
+ "CUMULATIVE_LAYOUT_SHIFT_SCORE": {
157
+ "percentile": 9,
158
+ "distributions": [
159
+ {
160
+ "min": 0,
161
+ "max": 10,
162
+ "proportion": 0.76
163
+ },
164
+ {
165
+ "min": 10,
166
+ "max": 25,
167
+ "proportion": 0.17
168
+ },
169
+ {
170
+ "min": 25,
171
+ "proportion": 0.07
172
+ }
173
+ ],
174
+ "category": "FAST"
175
+ }
176
+ }
177
+ },
178
+ "lighthouseResult": {
179
+ "lighthouseVersion": "12.6.1",
180
+ "requestedUrl": "https://www.harbourlane.example/collections/raincoats",
181
+ "mainDocumentUrl": "https://www.harbourlane.example/collections/raincoats",
182
+ "finalDisplayedUrl": "https://www.harbourlane.example/collections/raincoats",
183
+ "finalUrl": "https://www.harbourlane.example/collections/raincoats",
184
+ "fetchTime": "2026-10-12T08:14:03.512Z",
185
+ "gatherMode": "navigation",
186
+ "runWarnings": [],
187
+ "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.0.0 Safari/537.36",
188
+ "environment": {
189
+ "networkUserAgent": "Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36 Chrome-Lighthouse",
190
+ "hostUserAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.0.0 Safari/537.36",
191
+ "benchmarkIndex": 1462.5
192
+ },
193
+ "configSettings": {
194
+ "output": [
195
+ "json"
196
+ ],
197
+ "maxWaitForFcp": 30000,
198
+ "maxWaitForLoad": 45000,
199
+ "pauseAfterFcpMs": 1000,
200
+ "pauseAfterLoadMs": 1000,
201
+ "networkQuietThresholdMs": 1000,
202
+ "cpuQuietThresholdMs": 1000,
203
+ "formFactor": "mobile",
204
+ "throttling": {
205
+ "rttMs": 150,
206
+ "throughputKbps": 1638.4,
207
+ "requestLatencyMs": 562.5,
208
+ "downloadThroughputKbps": 1474.5600000000002,
209
+ "uploadThroughputKbps": 675,
210
+ "cpuSlowdownMultiplier": 4
211
+ },
212
+ "throttlingMethod": "simulate",
213
+ "screenEmulation": {
214
+ "mobile": true,
215
+ "width": 412,
216
+ "height": 823,
217
+ "deviceScaleFactor": 1.75,
218
+ "disabled": false
219
+ },
220
+ "emulatedUserAgent": "Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Mobile Safari/537.36",
221
+ "onlyCategories": [
222
+ "performance"
223
+ ],
224
+ "channel": "lr"
225
+ },
226
+ "categories": {
227
+ "performance": {
228
+ "id": "performance",
229
+ "title": "Performance",
230
+ "score": 0.92,
231
+ "auditRefs": [
232
+ {
233
+ "id": "first-contentful-paint",
234
+ "weight": 10,
235
+ "group": "metrics",
236
+ "acronym": "FCP"
237
+ },
238
+ {
239
+ "id": "largest-contentful-paint",
240
+ "weight": 25,
241
+ "group": "metrics",
242
+ "acronym": "LCP"
243
+ },
244
+ {
245
+ "id": "total-blocking-time",
246
+ "weight": 30,
247
+ "group": "metrics",
248
+ "acronym": "TBT"
249
+ },
250
+ {
251
+ "id": "cumulative-layout-shift",
252
+ "weight": 25,
253
+ "group": "metrics",
254
+ "acronym": "CLS"
255
+ },
256
+ {
257
+ "id": "speed-index",
258
+ "weight": 10,
259
+ "group": "metrics",
260
+ "acronym": "SI"
261
+ }
262
+ ]
263
+ }
264
+ },
265
+ "audits": {
266
+ "first-contentful-paint": {
267
+ "id": "first-contentful-paint",
268
+ "title": "First Contentful Paint",
269
+ "score": 0.98,
270
+ "scoreDisplayMode": "numeric",
271
+ "numericValue": 1180.4,
272
+ "numericUnit": "millisecond",
273
+ "displayValue": "1.2 s"
274
+ },
275
+ "largest-contentful-paint": {
276
+ "id": "largest-contentful-paint",
277
+ "title": "Largest Contentful Paint",
278
+ "score": 0.92,
279
+ "scoreDisplayMode": "numeric",
280
+ "numericValue": 2380.2,
281
+ "numericUnit": "millisecond",
282
+ "displayValue": "2.4 s"
283
+ },
284
+ "total-blocking-time": {
285
+ "id": "total-blocking-time",
286
+ "title": "Total Blocking Time",
287
+ "score": 0.81,
288
+ "scoreDisplayMode": "numeric",
289
+ "numericValue": 260,
290
+ "numericUnit": "millisecond",
291
+ "displayValue": "260 ms"
292
+ },
293
+ "cumulative-layout-shift": {
294
+ "id": "cumulative-layout-shift",
295
+ "title": "Cumulative Layout Shift",
296
+ "score": 0.99,
297
+ "scoreDisplayMode": "numeric",
298
+ "numericValue": 0.0402,
299
+ "numericUnit": "unitless",
300
+ "displayValue": "0.04"
301
+ },
302
+ "speed-index": {
303
+ "id": "speed-index",
304
+ "title": "Speed Index",
305
+ "score": 0.99,
306
+ "scoreDisplayMode": "numeric",
307
+ "numericValue": 2051.7,
308
+ "numericUnit": "millisecond",
309
+ "displayValue": "2.1 s"
310
+ },
311
+ "interactive": {
312
+ "id": "interactive",
313
+ "title": "Time to Interactive",
314
+ "score": 0.86,
315
+ "scoreDisplayMode": "numeric",
316
+ "numericValue": 3912.0,
317
+ "numericUnit": "millisecond",
318
+ "displayValue": "3.9 s"
319
+ },
320
+ "server-response-time": {
321
+ "id": "server-response-time",
322
+ "title": "Initial server response time was short",
323
+ "score": 1,
324
+ "scoreDisplayMode": "metricSavings",
325
+ "numericValue": 182.3,
326
+ "numericUnit": "millisecond",
327
+ "displayValue": "Root document took 180 ms",
328
+ "metricSavings": {
329
+ "FCP": 0,
330
+ "LCP": 0
331
+ }
332
+ },
333
+ "largest-contentful-paint-element": {
334
+ "id": "largest-contentful-paint-element",
335
+ "title": "Largest Contentful Paint element",
336
+ "score": 0,
337
+ "scoreDisplayMode": "metricSavings",
338
+ "displayValue": "2,380 ms",
339
+ "metricSavings": {
340
+ "LCP": 0
341
+ },
342
+ "details": {
343
+ "type": "list",
344
+ "items": [
345
+ {
346
+ "type": "table",
347
+ "headings": [
348
+ {
349
+ "key": "node",
350
+ "valueType": "node",
351
+ "label": "Element"
352
+ }
353
+ ],
354
+ "items": [
355
+ {
356
+ "node": {
357
+ "type": "node",
358
+ "lhId": "1-14-IMG",
359
+ "path": "1,HTML,1,BODY,3,MAIN,0,SECTION,0,PICTURE,1,IMG",
360
+ "selector": "main > section.collection-hero > picture > img.collection-hero__image",
361
+ "nodeLabel": "Two walkers in yellow raincoats on a harbour wall",
362
+ "snippet": "<img class=\"collection-hero__image\" src=\"/cdn/shop/files/raincoats-hero-2400w.avif\" loading=\"lazy\" alt=\"Two walkers in yellow raincoats on a harbour wall\" width=\"2400\" height=\"1350\">"
363
+ }
364
+ }
365
+ ]
366
+ },
367
+ {
368
+ "type": "table",
369
+ "headings": [
370
+ {
371
+ "key": "phase",
372
+ "valueType": "text",
373
+ "label": "Phase"
374
+ },
375
+ {
376
+ "key": "percent",
377
+ "valueType": "text",
378
+ "label": "% of LCP"
379
+ },
380
+ {
381
+ "key": "timing",
382
+ "valueType": "ms",
383
+ "label": "Timing"
384
+ }
385
+ ],
386
+ "items": [
387
+ {
388
+ "phase": "TTFB",
389
+ "timing": 410,
390
+ "percent": "17%"
391
+ },
392
+ {
393
+ "phase": "Load Delay",
394
+ "timing": 1190,
395
+ "percent": "50%"
396
+ },
397
+ {
398
+ "phase": "Load Time",
399
+ "timing": 540,
400
+ "percent": "23%"
401
+ },
402
+ {
403
+ "phase": "Render Delay",
404
+ "timing": 240,
405
+ "percent": "10%"
406
+ }
407
+ ]
408
+ }
409
+ ]
410
+ }
411
+ },
412
+ "lcp-lazy-loaded": {
413
+ "id": "lcp-lazy-loaded",
414
+ "title": "Largest Contentful Paint image was lazily loaded",
415
+ "score": 0,
416
+ "scoreDisplayMode": "metricSavings",
417
+ "metricSavings": {
418
+ "LCP": 0
419
+ },
420
+ "details": {
421
+ "type": "table",
422
+ "headings": [
423
+ {
424
+ "key": "node",
425
+ "valueType": "node"
426
+ }
427
+ ],
428
+ "items": [
429
+ {
430
+ "node": {
431
+ "type": "node",
432
+ "lhId": "1-14-IMG",
433
+ "path": "1,HTML,1,BODY,3,MAIN,0,SECTION,0,PICTURE,1,IMG",
434
+ "selector": "main > section.collection-hero > picture > img.collection-hero__image",
435
+ "nodeLabel": "Two walkers in yellow raincoats on a harbour wall",
436
+ "snippet": "<img class=\"collection-hero__image\" src=\"/cdn/shop/files/raincoats-hero-2400w.avif\" loading=\"lazy\" alt=\"Two walkers in yellow raincoats on a harbour wall\" width=\"2400\" height=\"1350\">"
437
+ }
438
+ }
439
+ ]
440
+ }
441
+ },
442
+ "prioritize-lcp-image": {
443
+ "id": "prioritize-lcp-image",
444
+ "title": "Preload Largest Contentful Paint image",
445
+ "score": 0,
446
+ "scoreDisplayMode": "metricSavings",
447
+ "displayValue": "Est savings of 980 ms",
448
+ "metricSavings": {
449
+ "LCP": 980
450
+ },
451
+ "details": {
452
+ "type": "opportunity",
453
+ "headings": [
454
+ {
455
+ "key": "node",
456
+ "valueType": "node"
457
+ },
458
+ {
459
+ "key": "url",
460
+ "valueType": "url"
461
+ },
462
+ {
463
+ "key": "wastedMs",
464
+ "valueType": "timespanMs"
465
+ }
466
+ ],
467
+ "items": [
468
+ {
469
+ "node": {
470
+ "type": "node",
471
+ "lhId": "1-14-IMG",
472
+ "path": "1,HTML,1,BODY,3,MAIN,0,SECTION,0,PICTURE,1,IMG",
473
+ "selector": "main > section.collection-hero > picture > img.collection-hero__image",
474
+ "nodeLabel": "Two walkers in yellow raincoats on a harbour wall",
475
+ "snippet": "<img class=\"collection-hero__image\" src=\"/cdn/shop/files/raincoats-hero-2400w.avif\" loading=\"lazy\" alt=\"Two walkers in yellow raincoats on a harbour wall\" width=\"2400\" height=\"1350\">"
476
+ },
477
+ "url": "https://www.harbourlane.example/cdn/shop/files/raincoats-hero-2400w.avif",
478
+ "wastedMs": 980
479
+ }
480
+ ],
481
+ "overallSavingsMs": 980,
482
+ "overallSavingsBytes": 0
483
+ }
484
+ },
485
+ "modern-image-formats": {
486
+ "id": "modern-image-formats",
487
+ "title": "Serve images in next-gen formats",
488
+ "score": 0,
489
+ "scoreDisplayMode": "metricSavings",
490
+ "displayValue": "Est savings of 1,240 KiB",
491
+ "metricSavings": {
492
+ "FCP": 0,
493
+ "LCP": 0
494
+ },
495
+ "details": {
496
+ "type": "opportunity",
497
+ "headings": [
498
+ {
499
+ "key": "url",
500
+ "valueType": "url"
501
+ },
502
+ {
503
+ "key": "totalBytes",
504
+ "valueType": "bytes"
505
+ },
506
+ {
507
+ "key": "wastedBytes",
508
+ "valueType": "bytes"
509
+ }
510
+ ],
511
+ "items": [
512
+ {
513
+ "url": "https://www.harbourlane.example/cdn/shop/products/mac-classic-yellow.jpg",
514
+ "totalBytes": 399000,
515
+ "wastedBytes": 248000
516
+ },
517
+ {
518
+ "url": "https://www.harbourlane.example/cdn/shop/products/mac-classic-navy.jpg",
519
+ "totalBytes": 382000,
520
+ "wastedBytes": 231000
521
+ },
522
+ {
523
+ "url": "https://www.harbourlane.example/cdn/shop/products/storm-parka-olive.jpg",
524
+ "totalBytes": 370000,
525
+ "wastedBytes": 219000
526
+ },
527
+ {
528
+ "url": "https://www.harbourlane.example/cdn/shop/products/storm-parka-black.jpg",
529
+ "totalBytes": 365000,
530
+ "wastedBytes": 214000
531
+ },
532
+ {
533
+ "url": "https://www.harbourlane.example/cdn/shop/products/drift-cagoule-red.jpg",
534
+ "totalBytes": 337000,
535
+ "wastedBytes": 186000
536
+ },
537
+ {
538
+ "url": "https://www.harbourlane.example/cdn/shop/products/drift-cagoule-sand.jpg",
539
+ "totalBytes": 323000,
540
+ "wastedBytes": 172000
541
+ }
542
+ ],
543
+ "overallSavingsMs": 2850,
544
+ "overallSavingsBytes": 1270000
545
+ }
546
+ },
547
+ "uses-responsive-images": {
548
+ "id": "uses-responsive-images",
549
+ "title": "Properly size images",
550
+ "score": 0,
551
+ "scoreDisplayMode": "metricSavings",
552
+ "displayValue": "Est savings of 686 KiB",
553
+ "metricSavings": {
554
+ "FCP": 0,
555
+ "LCP": 300
556
+ },
557
+ "details": {
558
+ "type": "opportunity",
559
+ "headings": [
560
+ {
561
+ "key": "url",
562
+ "valueType": "url"
563
+ },
564
+ {
565
+ "key": "totalBytes",
566
+ "valueType": "bytes"
567
+ },
568
+ {
569
+ "key": "wastedBytes",
570
+ "valueType": "bytes"
571
+ }
572
+ ],
573
+ "items": [
574
+ {
575
+ "url": "https://www.harbourlane.example/cdn/shop/files/raincoats-hero-2400w.avif",
576
+ "totalBytes": 412000,
577
+ "wastedBytes": 318000
578
+ },
579
+ {
580
+ "url": "https://www.harbourlane.example/cdn/shop/products/mac-classic-yellow.jpg",
581
+ "totalBytes": 399000,
582
+ "wastedBytes": 96000
583
+ },
584
+ {
585
+ "url": "https://www.harbourlane.example/cdn/shop/products/mac-classic-navy.jpg",
586
+ "totalBytes": 382000,
587
+ "wastedBytes": 96000
588
+ },
589
+ {
590
+ "url": "https://www.harbourlane.example/cdn/shop/products/storm-parka-olive.jpg",
591
+ "totalBytes": 370000,
592
+ "wastedBytes": 96000
593
+ },
594
+ {
595
+ "url": "https://www.harbourlane.example/cdn/shop/products/storm-parka-black.jpg",
596
+ "totalBytes": 365000,
597
+ "wastedBytes": 96000
598
+ }
599
+ ],
600
+ "overallSavingsMs": 1650,
601
+ "overallSavingsBytes": 702000
602
+ }
603
+ },
604
+ "render-blocking-resources": {
605
+ "id": "render-blocking-resources",
606
+ "title": "Eliminate render-blocking resources",
607
+ "score": 0,
608
+ "scoreDisplayMode": "metricSavings",
609
+ "displayValue": "Est savings of 450 ms",
610
+ "metricSavings": {
611
+ "FCP": 450,
612
+ "LCP": 220
613
+ },
614
+ "details": {
615
+ "type": "opportunity",
616
+ "headings": [
617
+ {
618
+ "key": "url",
619
+ "valueType": "url"
620
+ },
621
+ {
622
+ "key": "totalBytes",
623
+ "valueType": "bytes"
624
+ },
625
+ {
626
+ "key": "wastedMs",
627
+ "valueType": "timespanMs"
628
+ }
629
+ ],
630
+ "items": [
631
+ {
632
+ "url": "https://www.harbourlane.example/cdn/shop/t/12/assets/theme.css",
633
+ "totalBytes": 61440,
634
+ "wastedMs": 300
635
+ },
636
+ {
637
+ "url": "https://cdn.consentkit.example/v3/banner.css",
638
+ "totalBytes": 18432,
639
+ "wastedMs": 150
640
+ }
641
+ ],
642
+ "overallSavingsMs": 450,
643
+ "overallSavingsBytes": 0
644
+ }
645
+ },
646
+ "unused-javascript": {
647
+ "id": "unused-javascript",
648
+ "title": "Reduce unused JavaScript",
649
+ "score": 0.5,
650
+ "scoreDisplayMode": "metricSavings",
651
+ "displayValue": "Est savings of 175 KiB",
652
+ "metricSavings": {
653
+ "FCP": 0,
654
+ "LCP": 0
655
+ },
656
+ "details": {
657
+ "type": "opportunity",
658
+ "headings": [
659
+ {
660
+ "key": "url",
661
+ "valueType": "url"
662
+ },
663
+ {
664
+ "key": "totalBytes",
665
+ "valueType": "bytes"
666
+ },
667
+ {
668
+ "key": "wastedBytes",
669
+ "valueType": "bytes"
670
+ }
671
+ ],
672
+ "items": [
673
+ {
674
+ "url": "https://widget.chatterbox.example/v2/loader.js",
675
+ "totalBytes": 201000,
676
+ "wastedBytes": 118000,
677
+ "wastedPercent": 58.7
678
+ },
679
+ {
680
+ "url": "https://www.harbourlane.example/cdn/shop/t/12/assets/theme.js",
681
+ "totalBytes": 142000,
682
+ "wastedBytes": 61000,
683
+ "wastedPercent": 43.0
684
+ }
685
+ ],
686
+ "overallSavingsMs": 600,
687
+ "overallSavingsBytes": 179000
688
+ }
689
+ },
690
+ "layout-shifts": {
691
+ "id": "layout-shifts",
692
+ "title": "Avoid large layout shifts",
693
+ "score": 0.5,
694
+ "scoreDisplayMode": "metricSavings",
695
+ "metricSavings": {
696
+ "CLS": 0.04
697
+ },
698
+ "displayValue": "2 layout shifts found",
699
+ "details": {
700
+ "type": "table",
701
+ "headings": [
702
+ {
703
+ "key": "node",
704
+ "valueType": "node"
705
+ },
706
+ {
707
+ "key": "score",
708
+ "valueType": "numeric"
709
+ }
710
+ ],
711
+ "items": [
712
+ {
713
+ "node": {
714
+ "type": "node",
715
+ "lhId": "1-31-IMG",
716
+ "path": "1,HTML,1,BODY,3,MAIN,2,UL,0,LI,0,A,0,IMG",
717
+ "selector": "ul.product-grid > li:nth-child(1) > a > img.product-card__image",
718
+ "nodeLabel": "Classic mac, yellow",
719
+ "snippet": "<img class=\"product-card__image\" src=\"/cdn/shop/products/mac-classic-yellow.jpg\" alt=\"Classic mac, yellow\">"
720
+ },
721
+ "score": 0.0261,
722
+ "subItems": {
723
+ "type": "subitems",
724
+ "items": [
725
+ {
726
+ "extra": {
727
+ "type": "url",
728
+ "value": "https://www.harbourlane.example/cdn/shop/products/mac-classic-yellow.jpg"
729
+ },
730
+ "cause": "Unsized image element"
731
+ }
732
+ ]
733
+ }
734
+ },
735
+ {
736
+ "node": {
737
+ "type": "node",
738
+ "lhId": "1-12-H1",
739
+ "path": "1,HTML,1,BODY,3,MAIN,0,SECTION,1,H1",
740
+ "selector": "main > section.collection-hero > h1.collection-hero__title",
741
+ "nodeLabel": "Raincoats",
742
+ "snippet": "<h1 class=\"collection-hero__title\">"
743
+ },
744
+ "score": 0.0141,
745
+ "subItems": {
746
+ "type": "subitems",
747
+ "items": [
748
+ {
749
+ "extra": {
750
+ "type": "url",
751
+ "value": "https://www.harbourlane.example/cdn/shop/t/12/assets/harbour-sans.woff2"
752
+ },
753
+ "cause": "Web font loaded"
754
+ }
755
+ ]
756
+ }
757
+ }
758
+ ]
759
+ }
760
+ },
761
+ "unsized-images": {
762
+ "id": "unsized-images",
763
+ "title": "Image elements do not have explicit width and height",
764
+ "score": 0,
765
+ "scoreDisplayMode": "metricSavings",
766
+ "metricSavings": {
767
+ "CLS": 0
768
+ },
769
+ "details": {
770
+ "type": "table",
771
+ "headings": [
772
+ {
773
+ "key": "node",
774
+ "valueType": "node"
775
+ },
776
+ {
777
+ "key": "url",
778
+ "valueType": "url"
779
+ }
780
+ ],
781
+ "items": [
782
+ {
783
+ "node": {
784
+ "type": "node",
785
+ "lhId": "1-31-IMG",
786
+ "path": "1,HTML,1,BODY,3,MAIN,2,UL,0,LI,0,A,0,IMG",
787
+ "selector": "ul.product-grid > li:nth-child(1) > a > img.product-card__image",
788
+ "nodeLabel": "Classic mac, yellow",
789
+ "snippet": "<img class=\"product-card__image\" src=\"/cdn/shop/products/mac-classic-yellow.jpg\" alt=\"Classic mac, yellow\">"
790
+ },
791
+ "url": "https://www.harbourlane.example/cdn/shop/products/mac-classic-yellow.jpg"
792
+ },
793
+ {
794
+ "node": {
795
+ "type": "node",
796
+ "lhId": "1-32-IMG",
797
+ "path": "1,HTML,1,BODY,3,MAIN,2,UL,1,LI,0,A,0,IMG",
798
+ "selector": "ul.product-grid > li:nth-child(2) > a > img.product-card__image",
799
+ "nodeLabel": "Classic mac, navy",
800
+ "snippet": "<img class=\"product-card__image\" src=\"/cdn/shop/products/mac-classic-navy.jpg\" alt=\"Classic mac, navy\">"
801
+ },
802
+ "url": "https://www.harbourlane.example/cdn/shop/products/mac-classic-navy.jpg"
803
+ }
804
+ ]
805
+ }
806
+ },
807
+ "font-display": {
808
+ "id": "font-display",
809
+ "title": "Ensure text remains visible during webfont load",
810
+ "score": 0,
811
+ "scoreDisplayMode": "metricSavings",
812
+ "displayValue": "Est savings of 220 ms",
813
+ "metricSavings": {
814
+ "FCP": 0,
815
+ "LCP": 0
816
+ },
817
+ "details": {
818
+ "type": "table",
819
+ "headings": [
820
+ {
821
+ "key": "url",
822
+ "valueType": "url"
823
+ },
824
+ {
825
+ "key": "wastedMs",
826
+ "valueType": "ms"
827
+ }
828
+ ],
829
+ "items": [
830
+ {
831
+ "url": "https://www.harbourlane.example/cdn/shop/t/12/assets/harbour-sans.woff2",
832
+ "wastedMs": 220
833
+ }
834
+ ]
835
+ }
836
+ },
837
+ "long-tasks": {
838
+ "id": "long-tasks",
839
+ "title": "Avoid long main-thread tasks",
840
+ "score": 1,
841
+ "scoreDisplayMode": "informative",
842
+ "displayValue": "4 long tasks found",
843
+ "details": {
844
+ "type": "table",
845
+ "headings": [
846
+ {
847
+ "key": "url",
848
+ "valueType": "url"
849
+ },
850
+ {
851
+ "key": "startTime",
852
+ "valueType": "ms"
853
+ },
854
+ {
855
+ "key": "duration",
856
+ "valueType": "ms"
857
+ }
858
+ ],
859
+ "items": [
860
+ {
861
+ "url": "https://widget.chatterbox.example/v2/loader.js",
862
+ "duration": 170,
863
+ "startTime": 3120
864
+ },
865
+ {
866
+ "url": "https://www.harbourlane.example/cdn/shop/t/12/assets/theme.js",
867
+ "duration": 128,
868
+ "startTime": 1610
869
+ },
870
+ {
871
+ "url": "https://www.tagpilot.example/tp.js?id=TP-000000",
872
+ "duration": 101,
873
+ "startTime": 2480
874
+ },
875
+ {
876
+ "url": "https://cdn.consentkit.example/v3/consent.js",
877
+ "duration": 61,
878
+ "startTime": 1290
879
+ }
880
+ ]
881
+ }
882
+ },
883
+ "third-party-summary": {
884
+ "id": "third-party-summary",
885
+ "title": "Reduce the impact of third-party code",
886
+ "score": 0,
887
+ "scoreDisplayMode": "metricSavings",
888
+ "displayValue": "Third-party code blocked the main thread for 180 ms",
889
+ "metricSavings": {
890
+ "TBT": 182
891
+ },
892
+ "details": {
893
+ "type": "table",
894
+ "headings": [
895
+ {
896
+ "key": "entity",
897
+ "valueType": "text"
898
+ },
899
+ {
900
+ "key": "transferSize",
901
+ "valueType": "bytes"
902
+ },
903
+ {
904
+ "key": "mainThreadTime",
905
+ "valueType": "ms"
906
+ },
907
+ {
908
+ "key": "blockingTime",
909
+ "valueType": "ms"
910
+ }
911
+ ],
912
+ "items": [
913
+ {
914
+ "entity": "ChatterBox",
915
+ "mainThreadTime": 412,
916
+ "blockingTime": 120,
917
+ "transferSize": 214000
918
+ },
919
+ {
920
+ "entity": "TagPilot",
921
+ "mainThreadTime": 233,
922
+ "blockingTime": 51,
923
+ "transferSize": 98000
924
+ },
925
+ {
926
+ "entity": "ConsentKit",
927
+ "mainThreadTime": 118,
928
+ "blockingTime": 11,
929
+ "transferSize": 41000
930
+ }
931
+ ]
932
+ }
933
+ },
934
+ "bootup-time": {
935
+ "id": "bootup-time",
936
+ "title": "JavaScript execution time",
937
+ "score": 1,
938
+ "scoreDisplayMode": "metricSavings",
939
+ "displayValue": "1.1 s",
940
+ "metricSavings": {
941
+ "TBT": 0
942
+ },
943
+ "numericValue": 1128,
944
+ "numericUnit": "millisecond",
945
+ "details": {
946
+ "type": "table",
947
+ "headings": [
948
+ {
949
+ "key": "url",
950
+ "valueType": "url"
951
+ },
952
+ {
953
+ "key": "total",
954
+ "valueType": "ms"
955
+ },
956
+ {
957
+ "key": "scripting",
958
+ "valueType": "ms"
959
+ }
960
+ ],
961
+ "items": [
962
+ {
963
+ "url": "https://widget.chatterbox.example/v2/loader.js",
964
+ "total": 412,
965
+ "scripting": 371,
966
+ "scriptParseCompile": 22
967
+ },
968
+ {
969
+ "url": "https://www.harbourlane.example/cdn/shop/t/12/assets/theme.js",
970
+ "total": 365,
971
+ "scripting": 298,
972
+ "scriptParseCompile": 31
973
+ },
974
+ {
975
+ "url": "https://www.tagpilot.example/tp.js?id=TP-000000",
976
+ "total": 233,
977
+ "scripting": 201,
978
+ "scriptParseCompile": 12
979
+ },
980
+ {
981
+ "url": "https://cdn.consentkit.example/v3/consent.js",
982
+ "total": 118,
983
+ "scripting": 96,
984
+ "scriptParseCompile": 8
985
+ }
986
+ ]
987
+ }
988
+ },
989
+ "mainthread-work-breakdown": {
990
+ "id": "mainthread-work-breakdown",
991
+ "title": "Minimize main-thread work",
992
+ "score": 1,
993
+ "scoreDisplayMode": "metricSavings",
994
+ "displayValue": "2.6 s",
995
+ "metricSavings": {
996
+ "TBT": 0
997
+ },
998
+ "numericValue": 2640,
999
+ "numericUnit": "millisecond",
1000
+ "details": {
1001
+ "type": "table",
1002
+ "headings": [
1003
+ {
1004
+ "key": "groupLabel",
1005
+ "valueType": "text"
1006
+ },
1007
+ {
1008
+ "key": "duration",
1009
+ "valueType": "ms"
1010
+ }
1011
+ ],
1012
+ "items": [
1013
+ {
1014
+ "group": "scriptEvaluation",
1015
+ "groupLabel": "Script Evaluation",
1016
+ "duration": 1310
1017
+ },
1018
+ {
1019
+ "group": "styleLayout",
1020
+ "groupLabel": "Style & Layout",
1021
+ "duration": 610
1022
+ },
1023
+ {
1024
+ "group": "other",
1025
+ "groupLabel": "Other",
1026
+ "duration": 720
1027
+ }
1028
+ ]
1029
+ }
1030
+ }
1031
+ },
1032
+ "entities": [
1033
+ {
1034
+ "name": "harbourlane.example",
1035
+ "origins": [
1036
+ "https://www.harbourlane.example"
1037
+ ],
1038
+ "isFirstParty": true,
1039
+ "isUnrecognized": true
1040
+ },
1041
+ {
1042
+ "name": "ChatterBox",
1043
+ "origins": [
1044
+ "https://widget.chatterbox.example"
1045
+ ],
1046
+ "isFirstParty": false
1047
+ },
1048
+ {
1049
+ "name": "TagPilot",
1050
+ "origins": [
1051
+ "https://www.tagpilot.example"
1052
+ ],
1053
+ "isFirstParty": false
1054
+ },
1055
+ {
1056
+ "name": "ConsentKit",
1057
+ "origins": [
1058
+ "https://cdn.consentkit.example"
1059
+ ],
1060
+ "isFirstParty": false
1061
+ }
1062
+ ]
1063
+ },
1064
+ "analysisUTCTimestamp": "2026-10-12T08:14:09.882Z"
1065
+ }