agent-skill-kit 3.9.135

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 (615) hide show
  1. package/.agent/global.d.ts +80 -0
  2. package/.agent/rules/GEMINI.md +210 -0
  3. package/.agent/rules/autopilot.md +287 -0
  4. package/.agent/rules/code-rules.md +227 -0
  5. package/.agent/scripts/audit_workflows.ts +23 -0
  6. package/.agent/scripts/auto_preview.ts +170 -0
  7. package/.agent/scripts/checklist.ts +180 -0
  8. package/.agent/scripts/compile-agents.ts +237 -0
  9. package/.agent/scripts/fix_skills.ts +49 -0
  10. package/.agent/scripts/session_manager.ts +222 -0
  11. package/.agent/scripts/skill-audit.ts +255 -0
  12. package/.agent/scripts/sync_workflows.ts +54 -0
  13. package/.agent/scripts/utils/colors.ts +58 -0
  14. package/.agent/scripts/utils/process-manager.ts +131 -0
  15. package/.agent/scripts/utils/reporter.ts +192 -0
  16. package/.agent/scripts/utils/runner.ts +128 -0
  17. package/.agent/scripts/verify_all.ts +243 -0
  18. package/.agent/scripts/version-sync.ts +256 -0
  19. package/.agent/skills/SKILL_INDEX.md +129 -0
  20. package/.agent/skills/agent-browser/AGENTS.md +728 -0
  21. package/.agent/skills/agent-browser/SKILL.md +193 -0
  22. package/.agent/skills/agent-browser/rules/_sections.md +15 -0
  23. package/.agent/skills/agent-browser/rules/_template.md +32 -0
  24. package/.agent/skills/agent-browser/rules/engineering-spec.md +528 -0
  25. package/.agent/skills/agent-browser/scripts/browser_cli.ts +52 -0
  26. package/.agent/skills/agent-browser/scripts/session_manager.ts +166 -0
  27. package/.agent/skills/ai-artist/AGENTS.md +1082 -0
  28. package/.agent/skills/ai-artist/SKILL.md +186 -0
  29. package/.agent/skills/ai-artist/rules/_sections.md +30 -0
  30. package/.agent/skills/ai-artist/rules/_template.md +32 -0
  31. package/.agent/skills/ai-artist/rules/domain-code.md +118 -0
  32. package/.agent/skills/ai-artist/rules/domain-marketing.md +105 -0
  33. package/.agent/skills/ai-artist/rules/engineering-spec.md +519 -0
  34. package/.agent/skills/ai-artist/rules/image-prompts.md +195 -0
  35. package/.agent/skills/ai-artist/rules/model-syntax.md +115 -0
  36. package/.agent/skills/ai-artist/scripts/prompt_compiler.ts +72 -0
  37. package/.agent/skills/ai-artist/templates/image-core.txt +1 -0
  38. package/.agent/skills/ai-artist/templates/llm-core.txt +6 -0
  39. package/.agent/skills/api-architect/AGENTS.md +1896 -0
  40. package/.agent/skills/api-architect/SKILL.md +173 -0
  41. package/.agent/skills/api-architect/rules/_sections.md +35 -0
  42. package/.agent/skills/api-architect/rules/_template.md +32 -0
  43. package/.agent/skills/api-architect/rules/api-style.md +115 -0
  44. package/.agent/skills/api-architect/rules/auth.md +134 -0
  45. package/.agent/skills/api-architect/rules/documentation.md +131 -0
  46. package/.agent/skills/api-architect/rules/engineering-spec.md +505 -0
  47. package/.agent/skills/api-architect/rules/graphql.md +154 -0
  48. package/.agent/skills/api-architect/rules/rate-limiting.md +76 -0
  49. package/.agent/skills/api-architect/rules/response.md +138 -0
  50. package/.agent/skills/api-architect/rules/rest.md +113 -0
  51. package/.agent/skills/api-architect/rules/security-testing.md +146 -0
  52. package/.agent/skills/api-architect/rules/trpc.md +129 -0
  53. package/.agent/skills/api-architect/rules/versioning.md +100 -0
  54. package/.agent/skills/api-architect/scripts/api_validator.ts +413 -0
  55. package/.agent/skills/auth-patterns/AGENTS.md +1830 -0
  56. package/.agent/skills/auth-patterns/SKILL.md +163 -0
  57. package/.agent/skills/auth-patterns/rules/_sections.md +30 -0
  58. package/.agent/skills/auth-patterns/rules/_template.md +32 -0
  59. package/.agent/skills/auth-patterns/rules/engineering-spec.md +515 -0
  60. package/.agent/skills/auth-patterns/rules/jwt-deep.md +196 -0
  61. package/.agent/skills/auth-patterns/rules/mfa.md +174 -0
  62. package/.agent/skills/auth-patterns/rules/oauth2.md +134 -0
  63. package/.agent/skills/auth-patterns/rules/passkey.md +243 -0
  64. package/.agent/skills/auth-patterns/rules/rbac-abac.md +206 -0
  65. package/.agent/skills/auth-patterns/rules/session.md +183 -0
  66. package/.agent/skills/auth-patterns/scripts/auth_validator.ts +121 -0
  67. package/.agent/skills/chrome-devtools/AGENTS.md +952 -0
  68. package/.agent/skills/chrome-devtools/SKILL.md +160 -0
  69. package/.agent/skills/chrome-devtools/rules/_sections.md +25 -0
  70. package/.agent/skills/chrome-devtools/rules/_template.md +32 -0
  71. package/.agent/skills/chrome-devtools/rules/aria-snapshot.md +95 -0
  72. package/.agent/skills/chrome-devtools/rules/engineering-spec.md +510 -0
  73. package/.agent/skills/chrome-devtools/rules/scripts-guide.md +174 -0
  74. package/.agent/skills/chrome-devtools/scripts/aria-snapshot.ts +3 -0
  75. package/.agent/skills/chrome-devtools/scripts/click.ts +3 -0
  76. package/.agent/skills/chrome-devtools/scripts/console.ts +3 -0
  77. package/.agent/skills/chrome-devtools/scripts/core_cli.ts +79 -0
  78. package/.agent/skills/chrome-devtools/scripts/evaluate.ts +3 -0
  79. package/.agent/skills/chrome-devtools/scripts/fill.ts +3 -0
  80. package/.agent/skills/chrome-devtools/scripts/navigate.ts +3 -0
  81. package/.agent/skills/chrome-devtools/scripts/network.ts +3 -0
  82. package/.agent/skills/chrome-devtools/scripts/performance.ts +3 -0
  83. package/.agent/skills/chrome-devtools/scripts/screenshot.ts +3 -0
  84. package/.agent/skills/chrome-devtools/scripts/select-ref.ts +3 -0
  85. package/.agent/skills/cicd-pipeline/AGENTS.md +809 -0
  86. package/.agent/skills/cicd-pipeline/SKILL.md +164 -0
  87. package/.agent/skills/cicd-pipeline/rules/_sections.md +15 -0
  88. package/.agent/skills/cicd-pipeline/rules/_template.md +32 -0
  89. package/.agent/skills/cicd-pipeline/rules/engineering-spec.md +477 -0
  90. package/.agent/skills/cicd-pipeline/scripts/flag-manager.ts +253 -0
  91. package/.agent/skills/cicd-pipeline/scripts/pipeline_validator.ts +133 -0
  92. package/.agent/skills/code-constitution/AGENTS.md +597 -0
  93. package/.agent/skills/code-constitution/CHANGELOG.md +216 -0
  94. package/.agent/skills/code-constitution/SKILL.md +191 -0
  95. package/.agent/skills/code-constitution/VERSION +3 -0
  96. package/.agent/skills/code-constitution/examples/violation-backend-mutation/after.tsx +59 -0
  97. package/.agent/skills/code-constitution/examples/violation-backend-mutation/before.tsx +42 -0
  98. package/.agent/skills/code-constitution/examples/violation-backend-mutation/explanation.md +91 -0
  99. package/.agent/skills/code-constitution/examples/violation-chart-injection/after.tsx +99 -0
  100. package/.agent/skills/code-constitution/examples/violation-chart-injection/before.tsx +57 -0
  101. package/.agent/skills/code-constitution/examples/violation-chart-injection/explanation.md +120 -0
  102. package/.agent/skills/code-constitution/knowledge/lessons-learned.yaml +3 -0
  103. package/.agent/skills/code-constitution/metadata/precedence.yaml +117 -0
  104. package/.agent/skills/code-constitution/metadata/scope-map.yaml +156 -0
  105. package/.agent/skills/code-constitution/proposals/v1.1-change-proposal-template.md +201 -0
  106. package/.agent/skills/code-constitution/resources/AUTHORITY_MODEL.md +115 -0
  107. package/.agent/skills/code-constitution/resources/ENFORCEMENT_GUIDE.md +246 -0
  108. package/.agent/skills/code-constitution/resources/LOAD_ORDER.md +86 -0
  109. package/.agent/skills/code-constitution/rules/_sections.md +15 -0
  110. package/.agent/skills/code-constitution/rules/_template.md +32 -0
  111. package/.agent/skills/code-constitution/rules/constitution/master-constitution.md +210 -0
  112. package/.agent/skills/code-constitution/rules/doctrines/architecture/architecture-doctrine.md +188 -0
  113. package/.agent/skills/code-constitution/rules/doctrines/backend/backend-data-engine-doctrine.md +218 -0
  114. package/.agent/skills/code-constitution/rules/doctrines/commercial/commercial-guardrails-doctrine.md +196 -0
  115. package/.agent/skills/code-constitution/rules/doctrines/data/data-integrity-doctrine.md +202 -0
  116. package/.agent/skills/code-constitution/rules/doctrines/frontend/frontend-mobile-doctrine.md +169 -0
  117. package/.agent/skills/code-constitution/rules/doctrines/frontend/interaction-patterns-doctrine.md +176 -0
  118. package/.agent/skills/code-constitution/rules/doctrines/learning/learning-engine-doctrine.md +192 -0
  119. package/.agent/skills/code-constitution/rules/doctrines/performance/performance-doctrine.md +180 -0
  120. package/.agent/skills/code-constitution/rules/doctrines/review/code-review-doctrine.md +174 -0
  121. package/.agent/skills/code-constitution/rules/enforcement/agents/agent-enforcement-protocol.md +218 -0
  122. package/.agent/skills/code-constitution/rules/enforcement/agents/agent-system-prompt.md +196 -0
  123. package/.agent/skills/code-constitution/rules/enforcement/checklists/backend-api-review-checklist.md +131 -0
  124. package/.agent/skills/code-constitution/rules/enforcement/checklists/chart-component-review-checklist.md +147 -0
  125. package/.agent/skills/code-constitution/rules/enforcement/checklists/frontend-review-checklist.md +194 -0
  126. package/.agent/skills/code-constitution/rules/enforcement/playbooks/doctrine-violation-playbook.md +236 -0
  127. package/.agent/skills/code-constitution/rules/engineering-spec.md +561 -0
  128. package/.agent/skills/code-constitution/scripts/audit_pr.ts +219 -0
  129. package/.agent/skills/code-constitution/scripts/check_boundaries.ts +134 -0
  130. package/.agent/skills/code-constitution/scripts/learn.ts +202 -0
  131. package/.agent/skills/code-constitution/scripts/validate_doctrine.ts +287 -0
  132. package/.agent/skills/code-craft/AGENTS.md +803 -0
  133. package/.agent/skills/code-craft/SKILL.md +170 -0
  134. package/.agent/skills/code-craft/rules/_sections.md +20 -0
  135. package/.agent/skills/code-craft/rules/_template.md +32 -0
  136. package/.agent/skills/code-craft/rules/engineering-spec.md +447 -0
  137. package/.agent/skills/code-craft/rules/verification-scripts.md +83 -0
  138. package/.agent/skills/code-craft/scripts/code_quality_checker.ts +193 -0
  139. package/.agent/skills/code-review/AGENTS.md +1664 -0
  140. package/.agent/skills/code-review/SKILL.md +152 -0
  141. package/.agent/skills/code-review/rules/_sections.md +15 -0
  142. package/.agent/skills/code-review/rules/_template.md +32 -0
  143. package/.agent/skills/code-review/rules/engineering-spec.md +466 -0
  144. package/.agent/skills/code-review/scripts/lint_runner.ts +213 -0
  145. package/.agent/skills/code-review/scripts/type_coverage.ts +118 -0
  146. package/.agent/skills/context-engineering/AGENTS.md +499 -0
  147. package/.agent/skills/context-engineering/SKILL.md +147 -0
  148. package/.agent/skills/context-engineering/rules/_sections.md +15 -0
  149. package/.agent/skills/context-engineering/rules/_template.md +32 -0
  150. package/.agent/skills/context-engineering/rules/engineering-spec.md +463 -0
  151. package/.agent/skills/context-engineering/scripts/context_analyzer.ts +127 -0
  152. package/.agent/skills/copywriting/AGENTS.md +501 -0
  153. package/.agent/skills/copywriting/SKILL.md +188 -0
  154. package/.agent/skills/copywriting/rules/_sections.md +15 -0
  155. package/.agent/skills/copywriting/rules/_template.md +32 -0
  156. package/.agent/skills/copywriting/rules/engineering-spec.md +465 -0
  157. package/.agent/skills/copywriting/scripts/copy_validator.ts +185 -0
  158. package/.agent/skills/data-modeler/AGENTS.md +814 -0
  159. package/.agent/skills/data-modeler/SKILL.md +195 -0
  160. package/.agent/skills/data-modeler/rules/_sections.md +15 -0
  161. package/.agent/skills/data-modeler/rules/_template.md +32 -0
  162. package/.agent/skills/data-modeler/rules/database-selection.md +124 -0
  163. package/.agent/skills/data-modeler/rules/engineering-spec.md +479 -0
  164. package/.agent/skills/data-modeler/rules/indexing.md +166 -0
  165. package/.agent/skills/data-modeler/rules/migrations.md +176 -0
  166. package/.agent/skills/data-modeler/rules/optimization.md +161 -0
  167. package/.agent/skills/data-modeler/rules/orm-selection.md +155 -0
  168. package/.agent/skills/data-modeler/rules/schema-design.md +162 -0
  169. package/.agent/skills/data-modeler/scripts/schema_validator.ts +357 -0
  170. package/.agent/skills/debug-pro/AGENTS.md +798 -0
  171. package/.agent/skills/debug-pro/SKILL.md +193 -0
  172. package/.agent/skills/debug-pro/defense-in-depth/SKILL.md +148 -0
  173. package/.agent/skills/debug-pro/root-cause-tracing/SKILL.md +196 -0
  174. package/.agent/skills/debug-pro/root-cause-tracing/find-polluter.sh +63 -0
  175. package/.agent/skills/debug-pro/rules/_sections.md +15 -0
  176. package/.agent/skills/debug-pro/rules/_template.md +32 -0
  177. package/.agent/skills/debug-pro/rules/engineering-spec.md +491 -0
  178. package/.agent/skills/debug-pro/scripts/debug_verifier.ts +148 -0
  179. package/.agent/skills/debug-pro/verification-before-completion/SKILL.md +160 -0
  180. package/.agent/skills/design-system/AGENTS.md +4216 -0
  181. package/.agent/skills/design-system/SKILL.md +186 -0
  182. package/.agent/skills/design-system/rules/_sections.md +65 -0
  183. package/.agent/skills/design-system/rules/_template.md +32 -0
  184. package/.agent/skills/design-system/rules/animation-guide.md +355 -0
  185. package/.agent/skills/design-system/rules/color-system.md +335 -0
  186. package/.agent/skills/design-system/rules/color-systems.md +133 -0
  187. package/.agent/skills/design-system/rules/decision-trees.md +442 -0
  188. package/.agent/skills/design-system/rules/design-extraction.md +152 -0
  189. package/.agent/skills/design-system/rules/engineering-spec.md +484 -0
  190. package/.agent/skills/design-system/rules/motion-design.md +161 -0
  191. package/.agent/skills/design-system/rules/motion-graphics.md +330 -0
  192. package/.agent/skills/design-system/rules/spatial-composition.md +184 -0
  193. package/.agent/skills/design-system/rules/typography-system.md +369 -0
  194. package/.agent/skills/design-system/rules/typography.md +124 -0
  195. package/.agent/skills/design-system/rules/ux-psychology.md +565 -0
  196. package/.agent/skills/design-system/rules/visual-effects.md +407 -0
  197. package/.agent/skills/design-system/scripts/accessibility_checker.ts +292 -0
  198. package/.agent/skills/design-system/scripts/ux_audit.ts +356 -0
  199. package/.agent/skills/doc-templates/AGENTS.md +820 -0
  200. package/.agent/skills/doc-templates/SKILL.md +260 -0
  201. package/.agent/skills/doc-templates/rules/_sections.md +20 -0
  202. package/.agent/skills/doc-templates/rules/_template.md +32 -0
  203. package/.agent/skills/doc-templates/rules/doc.md +355 -0
  204. package/.agent/skills/doc-templates/rules/engineering-spec.md +422 -0
  205. package/.agent/skills/doc-templates/scripts/editor-server.ts +162 -0
  206. package/.agent/skills/doc-templates/scripts/inject_otel.ts +22 -0
  207. package/.agent/skills/doc-templates/scripts/kanban-server.ts +171 -0
  208. package/.agent/skills/doc-templates/scripts/markdown-server.ts +185 -0
  209. package/.agent/skills/e2e-automation/AGENTS.md +882 -0
  210. package/.agent/skills/e2e-automation/SKILL.md +175 -0
  211. package/.agent/skills/e2e-automation/rules/_sections.md +20 -0
  212. package/.agent/skills/e2e-automation/rules/_template.md +32 -0
  213. package/.agent/skills/e2e-automation/rules/aria-snapshot.md +185 -0
  214. package/.agent/skills/e2e-automation/rules/engineering-spec.md +501 -0
  215. package/.agent/skills/e2e-automation/scripts/playwright_runner.ts +208 -0
  216. package/.agent/skills/execution-reporter/AGENTS.md +419 -0
  217. package/.agent/skills/execution-reporter/SKILL.md +152 -0
  218. package/.agent/skills/execution-reporter/rules/_sections.md +15 -0
  219. package/.agent/skills/execution-reporter/rules/_template.md +32 -0
  220. package/.agent/skills/execution-reporter/rules/engineering-spec.md +389 -0
  221. package/.agent/skills/game-development/2d-games/SKILL.md +140 -0
  222. package/.agent/skills/game-development/3d-games/SKILL.md +156 -0
  223. package/.agent/skills/game-development/AGENTS.md +783 -0
  224. package/.agent/skills/game-development/SKILL.md +178 -0
  225. package/.agent/skills/game-development/game-art/SKILL.md +207 -0
  226. package/.agent/skills/game-development/game-audio/SKILL.md +211 -0
  227. package/.agent/skills/game-development/game-design/SKILL.md +151 -0
  228. package/.agent/skills/game-development/mobile-games/SKILL.md +130 -0
  229. package/.agent/skills/game-development/multiplayer/SKILL.md +154 -0
  230. package/.agent/skills/game-development/pc-games/SKILL.md +167 -0
  231. package/.agent/skills/game-development/rules/_sections.md +15 -0
  232. package/.agent/skills/game-development/rules/_template.md +32 -0
  233. package/.agent/skills/game-development/rules/engineering-spec.md +480 -0
  234. package/.agent/skills/game-development/vr-ar/SKILL.md +144 -0
  235. package/.agent/skills/game-development/web-games/SKILL.md +173 -0
  236. package/.agent/skills/git-workflow/AGENTS.md +554 -0
  237. package/.agent/skills/git-workflow/SKILL.md +181 -0
  238. package/.agent/skills/git-workflow/rules/_sections.md +15 -0
  239. package/.agent/skills/git-workflow/rules/_template.md +32 -0
  240. package/.agent/skills/git-workflow/rules/engineering-spec.md +518 -0
  241. package/.agent/skills/gitops/AGENTS.md +921 -0
  242. package/.agent/skills/gitops/SKILL.md +163 -0
  243. package/.agent/skills/gitops/rules/_sections.md +25 -0
  244. package/.agent/skills/gitops/rules/_template.md +32 -0
  245. package/.agent/skills/gitops/rules/argocd-setup.md +148 -0
  246. package/.agent/skills/gitops/rules/engineering-spec.md +450 -0
  247. package/.agent/skills/gitops/rules/sync-policies.md +145 -0
  248. package/.agent/skills/google-adk-python/AGENTS.md +1054 -0
  249. package/.agent/skills/google-adk-python/SKILL.md +168 -0
  250. package/.agent/skills/google-adk-python/rules/_sections.md +25 -0
  251. package/.agent/skills/google-adk-python/rules/_template.md +32 -0
  252. package/.agent/skills/google-adk-python/rules/deployment.md +138 -0
  253. package/.agent/skills/google-adk-python/rules/engineering-spec.md +451 -0
  254. package/.agent/skills/google-adk-python/rules/multi-agent.md +146 -0
  255. package/.agent/skills/google-adk-python/rules/tools.md +131 -0
  256. package/.agent/skills/idea-storm/AGENTS.md +995 -0
  257. package/.agent/skills/idea-storm/SKILL.md +160 -0
  258. package/.agent/skills/idea-storm/rules/_sections.md +25 -0
  259. package/.agent/skills/idea-storm/rules/_template.md +32 -0
  260. package/.agent/skills/idea-storm/rules/architecture-debate.md +122 -0
  261. package/.agent/skills/idea-storm/rules/dynamic-questioning.md +374 -0
  262. package/.agent/skills/idea-storm/rules/engineering-spec.md +466 -0
  263. package/.agent/skills/knowledge-compiler/SKILL.md +320 -0
  264. package/.agent/skills/knowledge-graph/AGENTS.md +762 -0
  265. package/.agent/skills/knowledge-graph/SKILL.md +157 -0
  266. package/.agent/skills/knowledge-graph/rules/_sections.md +15 -0
  267. package/.agent/skills/knowledge-graph/rules/_template.md +32 -0
  268. package/.agent/skills/knowledge-graph/rules/engineering-spec.md +439 -0
  269. package/.agent/skills/knowledge-linter/SKILL.md +217 -0
  270. package/.agent/skills/lifecycle-orchestrator/AGENTS.md +989 -0
  271. package/.agent/skills/lifecycle-orchestrator/SKILL.md +169 -0
  272. package/.agent/skills/lifecycle-orchestrator/rules/_sections.md +15 -0
  273. package/.agent/skills/lifecycle-orchestrator/rules/_template.md +32 -0
  274. package/.agent/skills/lifecycle-orchestrator/rules/engineering-spec.md +525 -0
  275. package/.agent/skills/lifecycle-orchestrator/scripts/state_manager.ts +189 -0
  276. package/.agent/skills/mcp-builder/AGENTS.md +1653 -0
  277. package/.agent/skills/mcp-builder/SKILL.md +166 -0
  278. package/.agent/skills/mcp-builder/rules/_sections.md +40 -0
  279. package/.agent/skills/mcp-builder/rules/_template.md +32 -0
  280. package/.agent/skills/mcp-builder/rules/best-practices.md +157 -0
  281. package/.agent/skills/mcp-builder/rules/design-principles.md +105 -0
  282. package/.agent/skills/mcp-builder/rules/engineering-spec.md +473 -0
  283. package/.agent/skills/mcp-builder/rules/evaluation.md +103 -0
  284. package/.agent/skills/mcp-builder/rules/python-implementation.md +249 -0
  285. package/.agent/skills/mcp-builder/rules/quickstart.md +111 -0
  286. package/.agent/skills/mcp-builder/rules/typescript-implementation.md +280 -0
  287. package/.agent/skills/mcp-management/AGENTS.md +837 -0
  288. package/.agent/skills/mcp-management/SKILL.md +164 -0
  289. package/.agent/skills/mcp-management/rules/_sections.md +25 -0
  290. package/.agent/skills/mcp-management/rules/_template.md +32 -0
  291. package/.agent/skills/mcp-management/rules/cli-usage.md +146 -0
  292. package/.agent/skills/mcp-management/rules/engineering-spec.md +501 -0
  293. package/.agent/skills/mcp-management/rules/protocol.md +159 -0
  294. package/.agent/skills/media-processing/AGENTS.md +479 -0
  295. package/.agent/skills/media-processing/SKILL.md +176 -0
  296. package/.agent/skills/media-processing/rules/_sections.md +15 -0
  297. package/.agent/skills/media-processing/rules/_template.md +32 -0
  298. package/.agent/skills/media-processing/rules/engineering-spec.md +452 -0
  299. package/.agent/skills/media-processing/scripts/convert-video.ts +155 -0
  300. package/.agent/skills/media-processing/scripts/optimize-image.ts +127 -0
  301. package/.agent/skills/mobile-design/AGENTS.md +6531 -0
  302. package/.agent/skills/mobile-design/SKILL.md +165 -0
  303. package/.agent/skills/mobile-design/rules/_sections.md +45 -0
  304. package/.agent/skills/mobile-design/rules/_template.md +32 -0
  305. package/.agent/skills/mobile-design/rules/decision-trees.md +540 -0
  306. package/.agent/skills/mobile-design/rules/engineering-spec.md +467 -0
  307. package/.agent/skills/mobile-design/rules/mobile-backend.md +516 -0
  308. package/.agent/skills/mobile-design/rules/mobile-color-system.md +436 -0
  309. package/.agent/skills/mobile-design/rules/mobile-debugging.md +146 -0
  310. package/.agent/skills/mobile-design/rules/mobile-design-thinking.md +381 -0
  311. package/.agent/skills/mobile-design/rules/mobile-navigation.md +474 -0
  312. package/.agent/skills/mobile-design/rules/mobile-performance.md +783 -0
  313. package/.agent/skills/mobile-design/rules/mobile-testing.md +380 -0
  314. package/.agent/skills/mobile-design/rules/mobile-typography.md +449 -0
  315. package/.agent/skills/mobile-design/rules/platform-android.md +682 -0
  316. package/.agent/skills/mobile-design/rules/platform-ios.md +577 -0
  317. package/.agent/skills/mobile-design/rules/touch-psychology.md +553 -0
  318. package/.agent/skills/mobile-design/scripts/mobile_audit.ts +309 -0
  319. package/.agent/skills/mobile-developer/AGENTS.md +904 -0
  320. package/.agent/skills/mobile-developer/SKILL.md +194 -0
  321. package/.agent/skills/mobile-developer/rules/_sections.md +75 -0
  322. package/.agent/skills/mobile-developer/rules/_template.md +32 -0
  323. package/.agent/skills/mobile-developer/rules/anti-patterns.md +70 -0
  324. package/.agent/skills/mobile-developer/rules/app-store-optimization.md +319 -0
  325. package/.agent/skills/mobile-developer/rules/decision-trees.md +545 -0
  326. package/.agent/skills/mobile-developer/rules/deep-linking.md +441 -0
  327. package/.agent/skills/mobile-developer/rules/engineering-spec.md +477 -0
  328. package/.agent/skills/mobile-developer/rules/flutter.md +475 -0
  329. package/.agent/skills/mobile-developer/rules/mobile-backend.md +516 -0
  330. package/.agent/skills/mobile-developer/rules/mobile-color-system.md +444 -0
  331. package/.agent/skills/mobile-developer/rules/mobile-debugging.md +428 -0
  332. package/.agent/skills/mobile-developer/rules/mobile-design-thinking.md +367 -0
  333. package/.agent/skills/mobile-developer/rules/mobile-navigation.md +483 -0
  334. package/.agent/skills/mobile-developer/rules/mobile-performance.md +778 -0
  335. package/.agent/skills/mobile-developer/rules/mobile-testing.md +382 -0
  336. package/.agent/skills/mobile-developer/rules/mobile-typography.md +457 -0
  337. package/.agent/skills/mobile-developer/rules/native.md +572 -0
  338. package/.agent/skills/mobile-developer/rules/platform-android.md +676 -0
  339. package/.agent/skills/mobile-developer/rules/platform-ios.md +571 -0
  340. package/.agent/skills/mobile-developer/rules/push-notifications.md +599 -0
  341. package/.agent/skills/mobile-developer/rules/react-native.md +422 -0
  342. package/.agent/skills/mobile-developer/rules/touch-psychology.md +547 -0
  343. package/.agent/skills/mobile-developer/scripts/mobile_audit.ts +701 -0
  344. package/.agent/skills/nextjs-pro/AGENTS.md +3932 -0
  345. package/.agent/skills/nextjs-pro/SKILL.md +171 -0
  346. package/.agent/skills/nextjs-pro/rules/_sections.md +50 -0
  347. package/.agent/skills/nextjs-pro/rules/_template.md +32 -0
  348. package/.agent/skills/nextjs-pro/rules/advanced-event-handler-refs.md +59 -0
  349. package/.agent/skills/nextjs-pro/rules/advanced-init-once.md +46 -0
  350. package/.agent/skills/nextjs-pro/rules/advanced-use-latest.md +43 -0
  351. package/.agent/skills/nextjs-pro/rules/async-api-routes.md +42 -0
  352. package/.agent/skills/nextjs-pro/rules/async-defer-await.md +84 -0
  353. package/.agent/skills/nextjs-pro/rules/async-dependencies.md +55 -0
  354. package/.agent/skills/nextjs-pro/rules/async-parallel.md +32 -0
  355. package/.agent/skills/nextjs-pro/rules/async-suspense-boundaries.md +103 -0
  356. package/.agent/skills/nextjs-pro/rules/bundle-barrel-imports.md +63 -0
  357. package/.agent/skills/nextjs-pro/rules/bundle-conditional.md +35 -0
  358. package/.agent/skills/nextjs-pro/rules/bundle-defer-third-party.md +53 -0
  359. package/.agent/skills/nextjs-pro/rules/bundle-dynamic-imports.md +39 -0
  360. package/.agent/skills/nextjs-pro/rules/bundle-preload.md +54 -0
  361. package/.agent/skills/nextjs-pro/rules/client-event-listeners.md +78 -0
  362. package/.agent/skills/nextjs-pro/rules/client-localstorage-schema.md +75 -0
  363. package/.agent/skills/nextjs-pro/rules/client-passive-event-listeners.md +52 -0
  364. package/.agent/skills/nextjs-pro/rules/client-swr-dedup.md +60 -0
  365. package/.agent/skills/nextjs-pro/rules/engineering-spec.md +440 -0
  366. package/.agent/skills/nextjs-pro/rules/js-batch-dom-css.md +111 -0
  367. package/.agent/skills/nextjs-pro/rules/js-cache-function-results.md +84 -0
  368. package/.agent/skills/nextjs-pro/rules/js-cache-property-access.md +32 -0
  369. package/.agent/skills/nextjs-pro/rules/js-cache-storage.md +74 -0
  370. package/.agent/skills/nextjs-pro/rules/js-combine-iterations.md +36 -0
  371. package/.agent/skills/nextjs-pro/rules/js-early-exit.md +54 -0
  372. package/.agent/skills/nextjs-pro/rules/js-hoist-regexp.md +49 -0
  373. package/.agent/skills/nextjs-pro/rules/js-index-maps.md +41 -0
  374. package/.agent/skills/nextjs-pro/rules/js-length-check-first.md +53 -0
  375. package/.agent/skills/nextjs-pro/rules/js-min-max-loop.md +86 -0
  376. package/.agent/skills/nextjs-pro/rules/js-set-map-lookups.md +28 -0
  377. package/.agent/skills/nextjs-pro/rules/js-tosorted-immutable.md +61 -0
  378. package/.agent/skills/nextjs-pro/rules/rendering-activity.md +30 -0
  379. package/.agent/skills/nextjs-pro/rules/rendering-animate-svg-wrapper.md +51 -0
  380. package/.agent/skills/nextjs-pro/rules/rendering-conditional-render.md +44 -0
  381. package/.agent/skills/nextjs-pro/rules/rendering-content-visibility.md +42 -0
  382. package/.agent/skills/nextjs-pro/rules/rendering-hoist-jsx.md +50 -0
  383. package/.agent/skills/nextjs-pro/rules/rendering-hydration-no-flicker.md +86 -0
  384. package/.agent/skills/nextjs-pro/rules/rendering-hydration-suppress-warning.md +34 -0
  385. package/.agent/skills/nextjs-pro/rules/rendering-svg-precision.md +32 -0
  386. package/.agent/skills/nextjs-pro/rules/rendering-usetransition-loading.md +79 -0
  387. package/.agent/skills/nextjs-pro/rules/rerender-defer-reads.md +43 -0
  388. package/.agent/skills/nextjs-pro/rules/rerender-dependencies.md +49 -0
  389. package/.agent/skills/nextjs-pro/rules/rerender-derived-state-no-effect.md +44 -0
  390. package/.agent/skills/nextjs-pro/rules/rerender-derived-state.md +33 -0
  391. package/.agent/skills/nextjs-pro/rules/rerender-functional-setstate.md +78 -0
  392. package/.agent/skills/nextjs-pro/rules/rerender-lazy-state-init.md +62 -0
  393. package/.agent/skills/nextjs-pro/rules/rerender-memo-with-default-value.md +42 -0
  394. package/.agent/skills/nextjs-pro/rules/rerender-memo.md +48 -0
  395. package/.agent/skills/nextjs-pro/rules/rerender-move-effect-to-event.md +49 -0
  396. package/.agent/skills/nextjs-pro/rules/rerender-simple-expression-in-memo.md +39 -0
  397. package/.agent/skills/nextjs-pro/rules/rerender-transitions.md +44 -0
  398. package/.agent/skills/nextjs-pro/rules/rerender-use-ref-transient-values.md +77 -0
  399. package/.agent/skills/nextjs-pro/rules/schema.json +34 -0
  400. package/.agent/skills/nextjs-pro/rules/server-after-nonblocking.md +77 -0
  401. package/.agent/skills/nextjs-pro/rules/server-auth-actions.md +100 -0
  402. package/.agent/skills/nextjs-pro/rules/server-cache-lru.md +45 -0
  403. package/.agent/skills/nextjs-pro/rules/server-cache-react.md +80 -0
  404. package/.agent/skills/nextjs-pro/rules/server-dedup-props.md +69 -0
  405. package/.agent/skills/nextjs-pro/rules/server-parallel-fetching.md +87 -0
  406. package/.agent/skills/nextjs-pro/rules/server-serialization.md +42 -0
  407. package/.agent/skills/nodejs-pro/AGENTS.md +866 -0
  408. package/.agent/skills/nodejs-pro/SKILL.md +172 -0
  409. package/.agent/skills/nodejs-pro/rules/_sections.md +50 -0
  410. package/.agent/skills/nodejs-pro/rules/_template.md +32 -0
  411. package/.agent/skills/nodejs-pro/rules/architecture-patterns.md +229 -0
  412. package/.agent/skills/nodejs-pro/rules/async-patterns.md +246 -0
  413. package/.agent/skills/nodejs-pro/rules/engineering-spec.md +438 -0
  414. package/.agent/skills/nodejs-pro/rules/error-handling.md +257 -0
  415. package/.agent/skills/nodejs-pro/rules/framework-selection.md +220 -0
  416. package/.agent/skills/nodejs-pro/rules/runtime-modules.md +176 -0
  417. package/.agent/skills/nodejs-pro/rules/testing-strategy.md +266 -0
  418. package/.agent/skills/nodejs-pro/rules/validation-security.md +205 -0
  419. package/.agent/skills/observability/AGENTS.md +607 -0
  420. package/.agent/skills/observability/SKILL.md +178 -0
  421. package/.agent/skills/observability/rules/_sections.md +15 -0
  422. package/.agent/skills/observability/rules/_template.md +32 -0
  423. package/.agent/skills/observability/rules/engineering-spec.md +440 -0
  424. package/.agent/skills/offensive-sec/AGENTS.md +849 -0
  425. package/.agent/skills/offensive-sec/SKILL.md +191 -0
  426. package/.agent/skills/offensive-sec/rules/_sections.md +15 -0
  427. package/.agent/skills/offensive-sec/rules/_template.md +32 -0
  428. package/.agent/skills/offensive-sec/rules/engineering-spec.md +470 -0
  429. package/.agent/skills/perf-optimizer/AGENTS.md +870 -0
  430. package/.agent/skills/perf-optimizer/SKILL.md +189 -0
  431. package/.agent/skills/perf-optimizer/rules/_sections.md +15 -0
  432. package/.agent/skills/perf-optimizer/rules/_template.md +32 -0
  433. package/.agent/skills/perf-optimizer/rules/backend-patterns.md +312 -0
  434. package/.agent/skills/perf-optimizer/rules/engineering-spec.md +428 -0
  435. package/.agent/skills/perf-optimizer/scripts/lighthouse_audit.ts +201 -0
  436. package/.agent/skills/problem-checker/AGENTS.md +519 -0
  437. package/.agent/skills/problem-checker/SKILL.md +189 -0
  438. package/.agent/skills/problem-checker/rules/_sections.md +15 -0
  439. package/.agent/skills/problem-checker/rules/_template.md +32 -0
  440. package/.agent/skills/problem-checker/rules/engineering-spec.md +483 -0
  441. package/.agent/skills/problem-checker/scripts/check_problems.ts +396 -0
  442. package/.agent/skills/project-planner/AGENTS.md +2698 -0
  443. package/.agent/skills/project-planner/SKILL.md +166 -0
  444. package/.agent/skills/project-planner/rules/_sections.md +15 -0
  445. package/.agent/skills/project-planner/rules/_template.md +32 -0
  446. package/.agent/skills/project-planner/rules/engineering-spec.md +420 -0
  447. package/.agent/skills/python-pro/AGENTS.md +1871 -0
  448. package/.agent/skills/python-pro/SKILL.md +182 -0
  449. package/.agent/skills/python-pro/rules/_sections.md +50 -0
  450. package/.agent/skills/python-pro/rules/_template.md +32 -0
  451. package/.agent/skills/python-pro/rules/async-patterns.md +168 -0
  452. package/.agent/skills/python-pro/rules/django-patterns.md +194 -0
  453. package/.agent/skills/python-pro/rules/engineering-spec.md +442 -0
  454. package/.agent/skills/python-pro/rules/fastapi-patterns.md +179 -0
  455. package/.agent/skills/python-pro/rules/framework-selection.md +167 -0
  456. package/.agent/skills/python-pro/rules/project-structure.md +181 -0
  457. package/.agent/skills/python-pro/rules/testing-patterns.md +212 -0
  458. package/.agent/skills/python-pro/rules/type-hints.md +159 -0
  459. package/.agent/skills/react-pro/AGENTS.md +963 -0
  460. package/.agent/skills/react-pro/SKILL.md +232 -0
  461. package/.agent/skills/react-pro/rules/_sections.md +40 -0
  462. package/.agent/skills/react-pro/rules/_template.md +32 -0
  463. package/.agent/skills/react-pro/rules/component-patterns.md +145 -0
  464. package/.agent/skills/react-pro/rules/composition-compound.md +82 -0
  465. package/.agent/skills/react-pro/rules/data-fetching.md +133 -0
  466. package/.agent/skills/react-pro/rules/engineering-spec.md +453 -0
  467. package/.agent/skills/react-pro/rules/error-boundary.md +61 -0
  468. package/.agent/skills/react-pro/rules/file-organization.md +158 -0
  469. package/.agent/skills/react-pro/rules/hooks-custom.md +61 -0
  470. package/.agent/skills/react-pro/rules/mui-styling.md +138 -0
  471. package/.agent/skills/react-pro/rules/patterns.md +24 -0
  472. package/.agent/skills/react-pro/rules/performance-optimization.md +65 -0
  473. package/.agent/skills/react-pro/rules/performance.md +137 -0
  474. package/.agent/skills/react-pro/rules/react19-hooks.md +85 -0
  475. package/.agent/skills/react-pro/rules/state-management.md +90 -0
  476. package/.agent/skills/react-pro/rules/testing-patterns.md +52 -0
  477. package/.agent/skills/registry.json +1251 -0
  478. package/.agent/skills/security-scanner/AGENTS.md +851 -0
  479. package/.agent/skills/security-scanner/SKILL.md +182 -0
  480. package/.agent/skills/security-scanner/rules/_sections.md +15 -0
  481. package/.agent/skills/security-scanner/rules/_template.md +32 -0
  482. package/.agent/skills/security-scanner/rules/auth-patterns.md +281 -0
  483. package/.agent/skills/security-scanner/rules/checklists.md +186 -0
  484. package/.agent/skills/security-scanner/rules/engineering-spec.md +440 -0
  485. package/.agent/skills/security-scanner/scripts/security_scan.ts +513 -0
  486. package/.agent/skills/seo-optimizer/AGENTS.md +839 -0
  487. package/.agent/skills/seo-optimizer/SKILL.md +180 -0
  488. package/.agent/skills/seo-optimizer/rules/_sections.md +15 -0
  489. package/.agent/skills/seo-optimizer/rules/_template.md +32 -0
  490. package/.agent/skills/seo-optimizer/rules/engineering-spec.md +433 -0
  491. package/.agent/skills/seo-optimizer/scripts/geo_checker.ts +109 -0
  492. package/.agent/skills/seo-optimizer/scripts/seo_checker.ts +308 -0
  493. package/.agent/skills/server-ops/AGENTS.md +643 -0
  494. package/.agent/skills/server-ops/SKILL.md +194 -0
  495. package/.agent/skills/server-ops/rules/_sections.md +15 -0
  496. package/.agent/skills/server-ops/rules/_template.md +32 -0
  497. package/.agent/skills/server-ops/rules/engineering-spec.md +450 -0
  498. package/.agent/skills/shell-script/AGENTS.md +499 -0
  499. package/.agent/skills/shell-script/SKILL.md +205 -0
  500. package/.agent/skills/shell-script/rules/_sections.md +15 -0
  501. package/.agent/skills/shell-script/rules/_template.md +32 -0
  502. package/.agent/skills/shell-script/rules/engineering-spec.md +463 -0
  503. package/.agent/skills/skill-generator/SKILL.md +147 -0
  504. package/.agent/skills/smart-router/SKILL.md +95 -0
  505. package/.agent/skills/studio/AGENTS.md +636 -0
  506. package/.agent/skills/studio/SKILL.md +178 -0
  507. package/.agent/skills/studio/data/charts.csv +26 -0
  508. package/.agent/skills/studio/data/colors.csv +97 -0
  509. package/.agent/skills/studio/data/icons.csv +101 -0
  510. package/.agent/skills/studio/data/landing.csv +31 -0
  511. package/.agent/skills/studio/data/products.csv +97 -0
  512. package/.agent/skills/studio/data/prompts.csv +24 -0
  513. package/.agent/skills/studio/data/react-performance.csv +45 -0
  514. package/.agent/skills/studio/data/stacks/flutter.csv +52 -0
  515. package/.agent/skills/studio/data/stacks/html-tailwind.csv +56 -0
  516. package/.agent/skills/studio/data/stacks/jetpack-compose.csv +53 -0
  517. package/.agent/skills/studio/data/stacks/nextjs.csv +53 -0
  518. package/.agent/skills/studio/data/stacks/nuxt-ui.csv +51 -0
  519. package/.agent/skills/studio/data/stacks/nuxtjs.csv +59 -0
  520. package/.agent/skills/studio/data/stacks/react-native.csv +52 -0
  521. package/.agent/skills/studio/data/stacks/react.csv +54 -0
  522. package/.agent/skills/studio/data/stacks/shadcn.csv +61 -0
  523. package/.agent/skills/studio/data/stacks/svelte.csv +54 -0
  524. package/.agent/skills/studio/data/stacks/swiftui.csv +51 -0
  525. package/.agent/skills/studio/data/stacks/vue.csv +50 -0
  526. package/.agent/skills/studio/data/styles.csv +59 -0
  527. package/.agent/skills/studio/data/typography.csv +58 -0
  528. package/.agent/skills/studio/data/ui-reasoning.csv +101 -0
  529. package/.agent/skills/studio/data/ux-guidelines.csv +100 -0
  530. package/.agent/skills/studio/data/web-interface.csv +31 -0
  531. package/.agent/skills/studio/rules/_sections.md +15 -0
  532. package/.agent/skills/studio/rules/_template.md +32 -0
  533. package/.agent/skills/studio/rules/engineering-spec.md +455 -0
  534. package/.agent/skills/studio/scripts/core.ts +345 -0
  535. package/.agent/skills/studio/scripts/design_system.ts +953 -0
  536. package/.agent/skills/studio/scripts/search.ts +197 -0
  537. package/.agent/skills/studio/scripts/types.ts +147 -0
  538. package/.agent/skills/studio/scripts/utils/component-specs.ts +154 -0
  539. package/.agent/skills/studio/scripts/utils/config-loader.ts +165 -0
  540. package/.agent/skills/studio/scripts/utils/css-templates.ts +169 -0
  541. package/.agent/skills/studio/scripts/utils/css-validator.ts +95 -0
  542. package/.agent/skills/studio/scripts/utils/csv-loader.ts +52 -0
  543. package/.agent/skills/studio/scripts/utils/intelligent-overrides.ts +129 -0
  544. package/.agent/skills/studio/scripts/utils/page-override-formatter.ts +143 -0
  545. package/.agent/skills/studio/scripts/utils/page-type-detector.ts +124 -0
  546. package/.agent/skills/studio/scripts/utils/search-cache.ts +165 -0
  547. package/.agent/skills/studio/scripts/utils/text-utils.ts +44 -0
  548. package/.agent/skills/system-design/AGENTS.md +597 -0
  549. package/.agent/skills/system-design/SKILL.md +153 -0
  550. package/.agent/skills/system-design/rules/_sections.md +15 -0
  551. package/.agent/skills/system-design/rules/_template.md +32 -0
  552. package/.agent/skills/system-design/rules/context-discovery.md +117 -0
  553. package/.agent/skills/system-design/rules/engineering-spec.md +437 -0
  554. package/.agent/skills/system-design/rules/examples.md +180 -0
  555. package/.agent/skills/system-design/rules/pattern-selection.md +130 -0
  556. package/.agent/skills/system-design/rules/patterns-reference.md +110 -0
  557. package/.agent/skills/system-design/rules/trade-off-analysis.md +169 -0
  558. package/.agent/skills/tailwind-kit/AGENTS.md +1135 -0
  559. package/.agent/skills/tailwind-kit/SKILL.md +171 -0
  560. package/.agent/skills/tailwind-kit/rules/_sections.md +20 -0
  561. package/.agent/skills/tailwind-kit/rules/_template.md +32 -0
  562. package/.agent/skills/tailwind-kit/rules/components.md +232 -0
  563. package/.agent/skills/tailwind-kit/rules/engineering-spec.md +435 -0
  564. package/.agent/skills/tailwind-kit/rules/responsive.md +221 -0
  565. package/.agent/skills/tailwind-kit/rules/v4-config.md +72 -0
  566. package/.agent/skills/test-architect/AGENTS.md +851 -0
  567. package/.agent/skills/test-architect/SKILL.md +176 -0
  568. package/.agent/skills/test-architect/rules/_sections.md +15 -0
  569. package/.agent/skills/test-architect/rules/_template.md +32 -0
  570. package/.agent/skills/test-architect/rules/engineering-spec.md +434 -0
  571. package/.agent/skills/test-architect/scripts/test_runner.ts +265 -0
  572. package/.agent/skills/typescript-expert/AGENTS.md +1045 -0
  573. package/.agent/skills/typescript-expert/SKILL.md +200 -0
  574. package/.agent/skills/typescript-expert/rules/_sections.md +20 -0
  575. package/.agent/skills/typescript-expert/rules/_template.md +32 -0
  576. package/.agent/skills/typescript-expert/rules/engineering-spec.md +433 -0
  577. package/.agent/skills/typescript-expert/rules/tsconfig-strict.json +92 -0
  578. package/.agent/skills/typescript-expert/rules/typescript-cheatsheet.md +407 -0
  579. package/.agent/skills/typescript-expert/rules/utility-types.ts +264 -0
  580. package/.agent/skills/typescript-expert/scripts/ts_diagnostic.ts +321 -0
  581. package/.agent/skills/vercel-deploy/AGENTS.md +490 -0
  582. package/.agent/skills/vercel-deploy/SKILL.md +175 -0
  583. package/.agent/skills/vercel-deploy/rules/_sections.md +15 -0
  584. package/.agent/skills/vercel-deploy/rules/_template.md +32 -0
  585. package/.agent/skills/vercel-deploy/rules/engineering-spec.md +463 -0
  586. package/.agent/skills/vercel-deploy/scripts/deploy.sh +310 -0
  587. package/.agent/workflows/api.md +377 -0
  588. package/.agent/workflows/autopilot.md +344 -0
  589. package/.agent/workflows/build.md +338 -0
  590. package/.agent/workflows/chronicle.md +279 -0
  591. package/.agent/workflows/cook.md +217 -0
  592. package/.agent/workflows/diagnose.md +302 -0
  593. package/.agent/workflows/fix.md +253 -0
  594. package/.agent/workflows/game.md +329 -0
  595. package/.agent/workflows/inspect.md +276 -0
  596. package/.agent/workflows/knowledge.md +212 -0
  597. package/.agent/workflows/launch.md +345 -0
  598. package/.agent/workflows/mobile.md +354 -0
  599. package/.agent/workflows/monitor.md +239 -0
  600. package/.agent/workflows/optimize.md +269 -0
  601. package/.agent/workflows/plan.md +278 -0
  602. package/.agent/workflows/stage.md +286 -0
  603. package/.agent/workflows/studio.md +276 -0
  604. package/.agent/workflows/think.md +262 -0
  605. package/.agent/workflows/validate.md +289 -0
  606. package/.agentignore +161 -0
  607. package/.gitattributes +16 -0
  608. package/CHANGELOG.md +198 -0
  609. package/LICENSE +40 -0
  610. package/README.md +173 -0
  611. package/docs/SKILL_DESIGN_GUIDE.md +561 -0
  612. package/docs/The-Complete-Guide-to-Building-Skills-for-Claude.md +1207 -0
  613. package/docs/WORKFLOW_DESIGN_GUIDE.md +325 -0
  614. package/package.json +33 -0
  615. package/tsconfig.json +28 -0
@@ -0,0 +1,428 @@
1
+ ---
2
+ title: Performance Profiler — Engineering Specification
3
+ impact: MEDIUM
4
+ tags: perf-optimizer
5
+ ---
6
+
7
+ # Performance Profiler — Engineering Specification
8
+
9
+ > Production-grade specification for performance profiling and Core Web Vitals at FAANG scale.
10
+
11
+ ---
12
+
13
+ ## 1. Overview
14
+
15
+ Performance Profiler provides structured performance analysis: Core Web Vitals targeting (LCP < 2.5s, INP < 200ms, CLS < 0.1), profiling tool selection (5 tools), 4-step profiling workflow (Baseline → Identify → Fix → Validate), bundle analysis (4 issues, 4 actions), runtime profiling (4 task patterns, 3 memory patterns), bottleneck diagnosis (4 symptom→cause mappings), and prioritized quick wins (5 ranked). The skill operates as an **Expert (decision tree)** — it produces profiling methodologies, tool recommendations, and fix strategies. It does not execute profiling tools, modify code, or run Lighthouse.
16
+
17
+ **Contract Version:** 2.0.0
18
+ **Backward Compatibility:** breaking (first hardened version)
19
+ **Breaking Changes:** None — new spec for first hardening
20
+
21
+ ---
22
+
23
+ ## 2. Problem Statement
24
+
25
+ Performance work at scale faces four quantified problems:
26
+
27
+ | Problem | Measurement | Impact |
28
+ |---------|-------------|--------|
29
+ | No baseline measurement | 55% of performance fixes lack before/after data | Unknown improvement |
30
+ | Wrong profiling tool | 40% of developers use Lighthouse for runtime issues | Misdiagnosis |
31
+ | Guessing at bottlenecks | 50% of changes target non-critical paths | Wasted effort |
32
+ | Missing Core Web Vitals | 35% of sites exceed LCP 4.0s threshold | Poor user experience, SEO penalty |
33
+
34
+ Performance Profiler eliminates these with mandatory baseline measurement, deterministic tool selection (symptom → tool), bottleneck diagnosis (symptom → cause), and fixed Core Web Vitals targets.
35
+
36
+ ---
37
+
38
+ ## 3. Design Goals
39
+
40
+ | ID | Goal | Measurable Constraint |
41
+ |----|------|-----------------------|
42
+ | G1 | Core Web Vitals targets | LCP < 2.5s, INP < 200ms, CLS < 0.1 |
43
+ | G2 | 4-step profiling workflow | Baseline → Identify → Fix → Validate |
44
+ | G3 | Tool selection | 5 tools mapped to 5 problem types |
45
+ | G4 | Bundle analysis | 4 issues with 4 fix actions |
46
+ | G5 | Runtime profiling | 4 task patterns + 3 memory patterns |
47
+ | G6 | Quick wins ranked | 5 priorities ordered by impact |
48
+
49
+ ---
50
+
51
+ ## 4. Non-Goals
52
+
53
+ | ID | Excluded | Rationale |
54
+ |----|----------|-----------|
55
+ | NG1 | Running Lighthouse | Guidance only; execution is caller's responsibility |
56
+ | NG2 | Code modification | Owned by executing agents |
57
+ | NG3 | E2E testing | Owned by `e2e-automation` skill |
58
+ | NG4 | Browser automation | Owned by Lighthouse script in `scripts/` |
59
+ | NG5 | Backend profiling implementation | Guidance in `backend-patterns.md`; execution external |
60
+ | NG6 | CDN configuration | Infrastructure concern |
61
+
62
+ ---
63
+
64
+ ## 5. System Boundaries
65
+
66
+ | Boundary | Owned | Not Owned |
67
+ |----------|-------|-----------|
68
+ | Core Web Vitals targets | Threshold definitions | Measurement execution |
69
+ | Profiling tool selection | Tool → problem mapping | Tool installation |
70
+ | Bundle analysis guidance | Issue identification + fix actions | Bundle build |
71
+ | Runtime profiling guidance | Pattern recognition | DevTools execution |
72
+ | Quick win prioritization | Ranked actions | Implementation |
73
+ | Backend profiling patterns | N+1 query detection guidance | Query execution |
74
+
75
+ **Side-effect boundary:** Performance Profiler produces methodologies, tool recommendations, and fix strategies. It does not run profiling tools, modify code, or access production systems.
76
+
77
+ ---
78
+
79
+ ## 6. Integration Model
80
+
81
+ ### 6.1 Agent Contract
82
+
83
+ #### Input Schema
84
+
85
+ ```
86
+ Request_Type: string # "core-web-vitals" | "profiling-workflow" | "tool-select" |
87
+ # "bundle-analysis" | "runtime-profiling" | "memory-profiling" |
88
+ # "bottleneck-diagnosis" | "quick-wins" | "backend-patterns" |
89
+ # "full-guide"
90
+ Context: {
91
+ symptom: string | null # "slow-load" | "slow-interaction" | "scroll-jank" |
92
+ # "memory-growth" | "large-bundle" | null
93
+ stage: string | null # "development" | "ci-cd" | "production"
94
+ framework: string | null # "react" | "next" | "vue" | "angular" | null
95
+ current_lcp: number | null # Current LCP in seconds
96
+ current_inp: number | null # Current INP in milliseconds
97
+ current_cls: number | null # Current CLS score
98
+ }
99
+ contract_version: string # "2.0.0"
100
+ ```
101
+
102
+ #### Output Schema
103
+
104
+ ```
105
+ Status: "success" | "error"
106
+ Data: {
107
+ vitals: {
108
+ lcp: { target: string, current: number | null, status: string }
109
+ inp: { target: string, current: number | null, status: string }
110
+ cls: { target: string, current: number | null, status: string }
111
+ } | null
112
+ workflow: {
113
+ steps: Array<{
114
+ order: number
115
+ phase: string # "baseline" | "identify" | "fix" | "validate"
116
+ action: string
117
+ }>
118
+ } | null
119
+ tool: {
120
+ recommended: string
121
+ problem_type: string
122
+ } | null
123
+ bundle: {
124
+ issues: Array<{ issue: string, indicator: string, action: string }>
125
+ } | null
126
+ quick_wins: Array<{
127
+ priority: number
128
+ action: string
129
+ impact: string # "high" | "medium"
130
+ }> | null
131
+ metadata: {
132
+ contract_version: string
133
+ backward_compatibility: string
134
+ }
135
+ }
136
+ Error: ErrorSchema | null
137
+ ```
138
+
139
+ #### Error Schema
140
+
141
+ ```
142
+ Code: string # From Error Taxonomy (Section 11)
143
+ Message: string
144
+ Request_Type: string
145
+ Recoverable: boolean
146
+ ```
147
+
148
+ #### Deterministic Guarantees
149
+
150
+ - Core Web Vitals targets are fixed: LCP < 2.5s, INP < 200ms, CLS < 0.1.
151
+ - Profiling workflow is fixed: 4 steps in defined order.
152
+ - Tool selection is deterministic: symptom → tool mapping.
153
+ - Bundle issues/actions are fixed: 4 issues, 4 actions.
154
+ - Quick wins are fixed: 5 priorities in ranked order.
155
+ - Same symptom = same tool recommendation.
156
+
157
+ #### What Agents May Assume
158
+
159
+ - Core Web Vitals thresholds match Google's published standards.
160
+ - Profiling tools are available in standard browser DevTools.
161
+ - Bundle analyzer is npm-installable.
162
+ - Lighthouse is available via CLI or browser.
163
+
164
+ #### What Agents Must NOT Assume
165
+
166
+ - Profiling tools are pre-installed.
167
+ - Current metrics are available (may be null).
168
+ - Framework-specific patterns always apply.
169
+ - Quick wins are sufficient (may need deeper analysis).
170
+
171
+ #### Side-Effect Boundaries
172
+
173
+ | Operation | Side Effects |
174
+ |-----------|-------------|
175
+ | Core Web Vitals | None; threshold output |
176
+ | Tool selection | None; recommendation |
177
+ | Bundle analysis | None; issue guidance |
178
+ | Runtime profiling | None; pattern guidance |
179
+ | Quick wins | None; prioritized list |
180
+ | Backend patterns | None; guidance output |
181
+
182
+ ### 6.2 Workflow Contract
183
+
184
+ #### Invocation Pattern
185
+
186
+ ```
187
+ 1. Identify performance symptom (slow load, jank, memory, bundle)
188
+ 2. Invoke tool-select for appropriate profiling tool
189
+ 3. Invoke profiling-workflow for 4-step process
190
+ 4. Run profiling tool (caller's responsibility)
191
+ 5. Invoke bottleneck-diagnosis with results
192
+ 6. Invoke quick-wins for prioritized fix actions
193
+ 7. Apply fixes (caller's responsibility)
194
+ 8. Re-invoke profiling-workflow for validation
195
+ ```
196
+
197
+ #### Execution Guarantees
198
+
199
+ - Each invocation produces a complete recommendation.
200
+ - All decisions are independent (can be invoked in any order).
201
+
202
+ #### Failure Propagation Model
203
+
204
+ | Failure Severity | Propagation | Workflow Action |
205
+ |-----------------|-------------|-----------------|
206
+ | Unknown symptom | Return error | Describe symptom more specifically |
207
+ | Unknown framework | Return error | Specify supported framework |
208
+ | Invalid request type | Return error | Use supported type |
209
+
210
+ #### Retry Boundaries
211
+
212
+ - Zero internal retries. Deterministic output.
213
+
214
+ #### Isolation Model
215
+
216
+ - Each invocation is stateless and independent.
217
+
218
+ #### Idempotency Expectations
219
+
220
+ | Operation | Idempotent | Notes |
221
+ |-----------|-----------|-------|
222
+ | Core Web Vitals | Yes | Fixed thresholds |
223
+ | Tool selection | Yes | Same symptom = same tool |
224
+ | Quick wins | Yes | Fixed ranking |
225
+ | Bundle analysis | Yes | Fixed issues/actions |
226
+
227
+ ---
228
+
229
+ ## 7. Execution Model
230
+
231
+ ### 2-Phase Lifecycle
232
+
233
+ | Phase | Action | Output |
234
+ |-------|--------|--------|
235
+ | **Classify** | Map symptom to profiling domain | Classification |
236
+ | **Guide** | Generate tool recommendation, workflow, or fix strategy | Complete output |
237
+
238
+ All phases synchronous. No async pipeline.
239
+
240
+ ---
241
+
242
+ ## 8. Deterministic Design Principles
243
+
244
+ | Principle | Enforcement |
245
+ |-----------|-------------|
246
+ | Core Web Vitals fixed | LCP < 2.5s (good), > 4.0s (poor); INP < 200ms (good), > 500ms (poor); CLS < 0.1 (good), > 0.25 (poor) |
247
+ | 4-step workflow fixed | Baseline → Identify → Fix → Validate |
248
+ | Tool selection deterministic | Page load → Lighthouse; Bundle → Analyzer; Runtime → DevTools Perf; Memory → DevTools Memory; Network → DevTools Network |
249
+ | Bundle issues fixed | Large deps → import specific; Duplicates → dedupe; Unused → tree-shake; Missing splits → code split |
250
+ | Quick wins ranked | 1: Compression, 2: Lazy images, 3: Code split, 4: Cache static, 5: Image formats |
251
+ | Long task threshold | > 50ms = UI blocking |
252
+ | Measure before fixing | Baseline mandatory; no guessing |
253
+
254
+ ---
255
+
256
+ ## 9. State & Idempotency Model
257
+
258
+ Stateless. Fully idempotent. No persistent state.
259
+
260
+ ---
261
+
262
+ ## 10. Failure Handling Strategy
263
+
264
+ | Failure Class | Behavior | Caller Recovery |
265
+ |---------------|----------|-----------------|
266
+ | Unknown symptom | Return `ERR_UNKNOWN_SYMPTOM` | Describe symptom |
267
+ | Unknown framework | Return `ERR_UNKNOWN_FRAMEWORK` | Specify framework |
268
+ | Invalid request type | Return `ERR_INVALID_REQUEST_TYPE` | Use supported type |
269
+
270
+ **Invariant:** Every failure returns a structured error. No partial guidance.
271
+
272
+ ---
273
+
274
+ ## 11. Error Taxonomy
275
+
276
+ | Code | Category | Recoverable | Description |
277
+ |------|----------|-------------|-------------|
278
+ | `ERR_INVALID_REQUEST_TYPE` | Validation | No | Request type not supported |
279
+ | `ERR_UNKNOWN_SYMPTOM` | Validation | Yes | Symptom not in known set |
280
+ | `ERR_UNKNOWN_FRAMEWORK` | Validation | Yes | Framework not recognized |
281
+
282
+ ---
283
+
284
+ ## 12. Timeout & Retry Policy
285
+
286
+ | Parameter | Default | Maximum | Rationale |
287
+ |-----------|---------|---------|-----------|
288
+ | Decision generation | N/A | N/A | Synchronous; < 50ms |
289
+ | Internal retries | Zero | Zero | Deterministic output |
290
+
291
+ ---
292
+
293
+ ## 13. Observability & Logging Schema
294
+
295
+ ### Log Entry Format
296
+
297
+ ```json
298
+ {
299
+ "trace_id": "uuid",
300
+ "skill_name": "perf-optimizer",
301
+ "contract_version": "2.0.0",
302
+ "execution_id": "uuid",
303
+ "timestamp": "ISO-8601",
304
+ "request_type": "string",
305
+ "symptom": "string|null",
306
+ "framework": "string|null",
307
+ "tool_recommended": "string|null",
308
+ "status": "success|error",
309
+ "error_code": "string|null",
310
+ "duration_ms": "number"
311
+ }
312
+ ```
313
+
314
+ ### Required Log Points
315
+
316
+ | Event | Log Level | Fields |
317
+ |-------|-----------|--------|
318
+ | Tool recommended | INFO | symptom, tool_recommended |
319
+ | Vitals assessed | INFO | current_lcp, current_inp, current_cls |
320
+ | Quick wins generated | INFO | priority_count |
321
+ | Decision failed | ERROR | error_code, message |
322
+
323
+ ### Metrics
324
+
325
+ | Metric | Type | Unit |
326
+ |--------|------|------|
327
+ | `perfoptimizer.decision.duration` | Histogram | ms |
328
+ | `perfoptimizer.symptom.distribution` | Counter | per symptom type |
329
+ | `perfoptimizer.tool.distribution` | Counter | per recommended tool |
330
+ | `perfoptimizer.framework.distribution` | Counter | per framework |
331
+
332
+ ---
333
+
334
+ ## 14. Security & Trust Model
335
+
336
+ ### Data Handling
337
+
338
+ - Performance Profiler processes no credentials, API keys, or PII.
339
+ - Current metric values (LCP, INP, CLS) are numeric only.
340
+ - No network calls, no file access, no system profiling.
341
+
342
+ ---
343
+
344
+ ## 15. Scalability Model
345
+
346
+ | Dimension | Constraint | Mitigation |
347
+ |-----------|-----------|------------|
348
+ | Throughput | CPU-bound decision tree | < 50ms; scales linearly |
349
+ | Concurrency | Stateless invocations | Unlimited parallel |
350
+ | Memory per invocation | < 1 MB | No accumulation |
351
+ | Network | Zero network calls | No external dependency |
352
+
353
+ ---
354
+
355
+ ## 16. Concurrency Model
356
+
357
+ Fully parallel. No shared state. No coordination required.
358
+
359
+ ---
360
+
361
+ ## 17. Resource Lifecycle Management
362
+
363
+ All resources scoped to invocation. No persistent handles.
364
+
365
+ ---
366
+
367
+ ## 18. Performance Constraints
368
+
369
+ | Operation | P50 Target | P99 Target | Hard Limit |
370
+ |-----------|-----------|-----------|------------|
371
+ | Tool selection | < 2 ms | < 5 ms | 20 ms |
372
+ | Vitals assessment | < 2 ms | < 5 ms | 20 ms |
373
+ | Full guide | < 10 ms | < 30 ms | 50 ms |
374
+ | Output size | ≤ 2,000 chars | ≤ 5,000 chars | 8,000 chars |
375
+
376
+ ---
377
+
378
+ ## 19. Operational Risks
379
+
380
+ | Risk | Likelihood | Impact | Mitigation |
381
+ |------|-----------|--------|------------|
382
+ | Core Web Vitals thresholds change | Low | Outdated targets | Track Google updates |
383
+ | New profiling tools emerge | Low | Missing recommendations | Annual review |
384
+ | Framework-specific patterns change | Medium | Stale guidance | Track framework releases |
385
+ | Bundle analyzer API changes | Low | Script breakage | Pin analyzer version |
386
+
387
+ ---
388
+
389
+ ## 20. Compliance with skill-design-guide.md
390
+
391
+ | Requirement | Status | Evidence |
392
+ |-------------|--------|----------|
393
+ | YAML frontmatter complete | ✅ | name, description, metadata with category, version, triggers, coordinates_with, success_metrics |
394
+ | SKILL.md < 200 lines | ✅ | Entry point under 200 lines |
395
+ | Prerequisites documented | ✅ | No external dependencies for guidance |
396
+ | When to Use section | ✅ | Situation-based routing table |
397
+ | Core content matches skill type | ✅ | Expert type: tool selection, profiling workflow, vitals targets |
398
+ | Troubleshooting section | ✅ | Anti-patterns table |
399
+ | Related section | ✅ | Cross-links to e2e-automation, /optimize |
400
+ | Content Map for multi-file | ✅ | Links to backend-patterns.md, scripts/, engineering-spec.md |
401
+ | Contract versioning | ✅ | contract_version, backward_compatibility, breaking_changes |
402
+ | Compliance matrix structured | ✅ | This table with ✅/❌ + evidence |
403
+
404
+ ---
405
+
406
+ ## 21. Production Readiness Checklist
407
+
408
+ | Category | Check | Status |
409
+ |----------|-------|--------|
410
+ | **Functionality** | Core Web Vitals (LCP, INP, CLS) with thresholds | ✅ |
411
+ | **Functionality** | 4-step profiling workflow | ✅ |
412
+ | **Functionality** | 5 profiling tools with symptom mapping | ✅ |
413
+ | **Functionality** | Bundle analysis (4 issues + 4 actions) | ✅ |
414
+ | **Functionality** | Quick wins (5 ranked by impact) | ✅ |
415
+ | **Contracts** | Input/output/error schemas in pseudo-schema format | ✅ |
416
+ | **Contracts** | Contract versioning with semver | ✅ |
417
+ | **Failure** | Error taxonomy with 3 categorized codes | ✅ |
418
+ | **Failure** | Zero internal retries | ✅ |
419
+ | **Determinism** | Fixed thresholds, fixed rankings, fixed tool mappings | ✅ |
420
+ | **Security** | No credentials, no PII, no network access | ✅ |
421
+ | **Observability** | Structured log schema with 5 mandatory fields | ✅ |
422
+ | **Observability** | 4 metrics defined | ✅ |
423
+ | **Performance** | P50/P99 targets for all operations | ✅ |
424
+ | **Compliance** | All skill-design-guide.md sections mapped with evidence | ✅ |
425
+
426
+ ---
427
+
428
+ ⚡ PikaKit v3.9.134
@@ -0,0 +1,201 @@
1
+ #!/usr/bin/env node
2
+ // @ts-nocheck
3
+ /**
4
+ * Lighthouse Performance Audit
5
+ * Version: 2.0.0
6
+ *
7
+ * Runs Lighthouse CLI and extracts Core Web Vitals + category scores.
8
+ * Requires: npm install -g lighthouse
9
+ *
10
+ * Usage:
11
+ * node lighthouse_audit.js <url>
12
+ * node lighthouse_audit.js <url> --threshold=80
13
+ * node lighthouse_audit.js <url> --mobile
14
+ * node lighthouse_audit.js --help
15
+ */
16
+
17
+ import { execFile } from 'node:child_process'
18
+ import { readFile, unlink, mkdir } from 'node:fs/promises'
19
+ import { existsSync } from 'node:fs'
20
+ import { tmpdir } from 'node:os'
21
+ import { join } from 'node:path'
22
+ import { promisify } from 'node:util'
23
+
24
+ const execFileAsync = promisify(execFile)
25
+ const VERSION = '2.0.0'
26
+
27
+ // --- CLI Argument Parsing ---
28
+ const args = process.argv.slice(2)
29
+
30
+ if (args.includes('--help') || args.length === 0) {
31
+ console.log(`
32
+ Lighthouse Audit v${VERSION}
33
+
34
+ Usage:
35
+ node lighthouse_audit.js <url> Run audit (desktop)
36
+ node lighthouse_audit.js <url> --mobile Run audit (mobile)
37
+ node lighthouse_audit.js <url> --threshold=80 Set pass/fail threshold
38
+ node lighthouse_audit.js <url> --categories=perf Audit specific categories
39
+
40
+ Options:
41
+ --mobile Emulate mobile device (default: desktop)
42
+ --threshold=N Performance score threshold (0-100). Exit 1 if below.
43
+ --categories=X Comma-separated: perf,a11y,bp,seo (default: all)
44
+ --help Show this help
45
+
46
+ Examples:
47
+ node lighthouse_audit.js https://example.com
48
+ node lighthouse_audit.js https://example.com --mobile --threshold=90
49
+ node lighthouse_audit.js http://localhost:3000 --categories=perf
50
+
51
+ Requires: npm install -g lighthouse
52
+ `)
53
+ process.exit(0)
54
+ }
55
+
56
+ const url = args.find(a => !a.startsWith('--'))
57
+ const isMobile = args.includes('--mobile')
58
+ const thresholdArg = args.find(a => a.startsWith('--threshold='))
59
+ const threshold = thresholdArg ? parseInt(thresholdArg.split('=')[1], 10) : null
60
+ const catArg = args.find(a => a.startsWith('--categories='))
61
+
62
+ const categoryMap = { perf: 'performance', a11y: 'accessibility', bp: 'best-practices', seo: 'seo' }
63
+ const categories = catArg
64
+ ? catArg.split('=')[1].split(',').map(c => categoryMap[c] || c).join(',')
65
+ : 'performance,accessibility,best-practices,seo'
66
+
67
+ if (!url) {
68
+ console.log(JSON.stringify({ error: 'No URL provided. Use --help for usage.' }))
69
+ process.exit(1)
70
+ }
71
+
72
+ // --- Main Audit Function ---
73
+ async function runLighthouse(targetUrl) {
74
+ const outputDir = join(tmpdir(), 'lighthouse_audit')
75
+ if (!existsSync(outputDir)) await mkdir(outputDir, { recursive: true })
76
+ const outputPath = join(outputDir, `lighthouse_${Date.now()}.json`)
77
+
78
+ const lhArgs = [
79
+ targetUrl,
80
+ '--output=json',
81
+ `--output-path=${outputPath}`,
82
+ '--chrome-flags=--headless --no-sandbox',
83
+ `--only-categories=${categories}`,
84
+ ]
85
+
86
+ if (!isMobile) {
87
+ lhArgs.push('--preset=desktop')
88
+ }
89
+
90
+ try {
91
+ await execFileAsync('lighthouse', lhArgs, {
92
+ timeout: 120_000,
93
+ maxBuffer: 10 * 1024 * 1024,
94
+ })
95
+ } catch (err) {
96
+ if (err.code === 'ENOENT') {
97
+ return { error: 'Lighthouse CLI not found. Install: npm install -g lighthouse' }
98
+ }
99
+ if (err.killed) {
100
+ return { error: 'Lighthouse audit timed out (120s)' }
101
+ }
102
+ // Lighthouse may exit non-zero but still produce output
103
+ if (!existsSync(outputPath)) {
104
+ return { error: `Lighthouse failed: ${err.message}` }
105
+ }
106
+ }
107
+
108
+ if (!existsSync(outputPath)) {
109
+ return { error: 'Lighthouse did not produce output' }
110
+ }
111
+
112
+ try {
113
+ const raw = await readFile(outputPath, 'utf-8')
114
+ await unlink(outputPath).catch(() => { })
115
+
116
+ const report = JSON.parse(raw)
117
+ return parseReport(report, targetUrl)
118
+ } catch (err) {
119
+ return { error: `Failed to parse report: ${err.message}` }
120
+ }
121
+ }
122
+
123
+ function parseReport(report, targetUrl) {
124
+ const cats = report.categories || {}
125
+ const audits = report.audits || {}
126
+
127
+ // Category scores (0-100)
128
+ const scores = {}
129
+ for (const [key, cat] of Object.entries(cats)) {
130
+ scores[key] = Math.round((cat.score || 0) * 100)
131
+ }
132
+
133
+ // Core Web Vitals
134
+ const cwv = {
135
+ lcp: extractMetric(audits, 'largest-contentful-paint'),
136
+ inp: extractMetric(audits, 'interaction-to-next-paint') ||
137
+ extractMetric(audits, 'total-blocking-time'), // TBT as INP proxy in lab
138
+ cls: extractMetric(audits, 'cumulative-layout-shift'),
139
+ fcp: extractMetric(audits, 'first-contentful-paint'),
140
+ ttfb: extractMetric(audits, 'server-response-time'),
141
+ si: extractMetric(audits, 'speed-index'),
142
+ }
143
+
144
+ // CWV pass/fail
145
+ const cwvStatus = {
146
+ lcp: cwv.lcp ? (cwv.lcp.value <= 2500 ? 'GOOD' : cwv.lcp.value <= 4000 ? 'NEEDS_WORK' : 'POOR') : null,
147
+ cls: cwv.cls ? (cwv.cls.value <= 0.1 ? 'GOOD' : cwv.cls.value <= 0.25 ? 'NEEDS_WORK' : 'POOR') : null,
148
+ }
149
+
150
+ // Summary
151
+ const perfScore = scores.performance ?? 0
152
+ let summary
153
+ if (perfScore >= 90) summary = '✅ Excellent performance'
154
+ else if (perfScore >= 50) summary = '⚠️ Needs improvement'
155
+ else summary = '❌ Poor performance'
156
+
157
+ // Top opportunities
158
+ const opportunities = (report.audits ? Object.values(report.audits) : [])
159
+ .filter(a => a.details?.type === 'opportunity' && a.details?.overallSavingsMs > 0)
160
+ .sort((a, b) => (b.details.overallSavingsMs || 0) - (a.details.overallSavingsMs || 0))
161
+ .slice(0, 5)
162
+ .map(a => ({
163
+ title: a.title,
164
+ savingsMs: Math.round(a.details.overallSavingsMs),
165
+ }))
166
+
167
+ return {
168
+ url: targetUrl,
169
+ device: isMobile ? 'mobile' : 'desktop',
170
+ scores,
171
+ cwv,
172
+ cwvStatus,
173
+ summary,
174
+ opportunities,
175
+ threshold: threshold ? { value: threshold, passed: perfScore >= threshold } : undefined,
176
+ }
177
+ }
178
+
179
+ function extractMetric(audits, id) {
180
+ const audit = audits[id]
181
+ if (!audit) return null
182
+ return {
183
+ value: audit.numericValue != null ? Math.round(audit.numericValue * 100) / 100 : null,
184
+ unit: audit.numericUnit || 'ms',
185
+ display: audit.displayValue || null,
186
+ score: audit.score != null ? Math.round(audit.score * 100) : null,
187
+ }
188
+ }
189
+
190
+ // --- Run ---
191
+ const result = await runLighthouse(url)
192
+ console.log(JSON.stringify(result, null, 2))
193
+
194
+ // Exit code based on threshold
195
+ if (result.error) {
196
+ process.exit(2)
197
+ } else if (threshold && result.scores?.performance < threshold) {
198
+ process.exit(1)
199
+ } else {
200
+ process.exit(0)
201
+ }