@ruaruababa/vibe-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/CATALOG.md +317 -0
  2. package/README.md +121 -0
  3. package/aliases.json +65 -0
  4. package/bin/vibe.js +2 -0
  5. package/bundles.json +265 -0
  6. package/catalog.json +1560 -0
  7. package/dist/antigravity-skills/bin/cli.js +438 -0
  8. package/dist/antigravity-skills/lib/skill-utils.js +158 -0
  9. package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
  10. package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
  11. package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
  12. package/dist/bin/vibe.js +2 -0
  13. package/dist/dist/src/cli/index.js +26 -0
  14. package/dist/lib/skill-utils.js +158 -0
  15. package/dist/scripts/build-catalog.js +50 -0
  16. package/dist/scripts/normalize-frontmatter.js +144 -0
  17. package/dist/scripts/validate-skills.js +56 -0
  18. package/dist/src/cli/index.js +146 -0
  19. package/dist/src/types/index.js +13 -0
  20. package/dist/src/utils/fs.js +1 -0
  21. package/package.json +43 -0
  22. package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
  23. package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
  24. package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
  25. package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
  26. package/skills/agent-orchestrator/SKILL.md +24 -0
  27. package/skills/ai-engineer/SKILL.md +171 -0
  28. package/skills/airflow-dag-patterns/SKILL.md +41 -0
  29. package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
  30. package/skills/angular-migration/SKILL.md +428 -0
  31. package/skills/anti-reversing-techniques/SKILL.md +42 -0
  32. package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
  33. package/skills/api-design-principles/SKILL.md +37 -0
  34. package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  35. package/skills/api-design-principles/assets/rest-api-template.py +182 -0
  36. package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  37. package/skills/api-design-principles/references/rest-best-practices.md +408 -0
  38. package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  39. package/skills/api-documenter/SKILL.md +184 -0
  40. package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
  41. package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
  42. package/skills/application-performance-performance-optimization/SKILL.md +154 -0
  43. package/skills/architect-review/SKILL.md +174 -0
  44. package/skills/architecture-decision-records/SKILL.md +441 -0
  45. package/skills/architecture-patterns/SKILL.md +37 -0
  46. package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
  47. package/skills/arm-cortex-expert/SKILL.md +306 -0
  48. package/skills/async-python-patterns/SKILL.md +39 -0
  49. package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
  50. package/skills/attack-tree-construction/SKILL.md +38 -0
  51. package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
  52. package/skills/auth-implementation-patterns/SKILL.md +39 -0
  53. package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
  54. package/skills/backend-architect/SKILL.md +333 -0
  55. package/skills/backend-development-feature-development/SKILL.md +180 -0
  56. package/skills/backend-security-coder/SKILL.md +156 -0
  57. package/skills/backtesting-frameworks/SKILL.md +39 -0
  58. package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
  59. package/skills/bash-defensive-patterns/SKILL.md +43 -0
  60. package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
  61. package/skills/bash-pro/SKILL.md +310 -0
  62. package/skills/bats-testing-patterns/SKILL.md +34 -0
  63. package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
  64. package/skills/bazel-build-optimization/SKILL.md +397 -0
  65. package/skills/billing-automation/SKILL.md +42 -0
  66. package/skills/billing-automation/resources/implementation-playbook.md +544 -0
  67. package/skills/binary-analysis-patterns/SKILL.md +450 -0
  68. package/skills/blockchain-developer/SKILL.md +208 -0
  69. package/skills/business-analyst/SKILL.md +182 -0
  70. package/skills/c-pro/SKILL.md +56 -0
  71. package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
  72. package/skills/c4-code/SKILL.md +244 -0
  73. package/skills/c4-component/SKILL.md +153 -0
  74. package/skills/c4-container/SKILL.md +171 -0
  75. package/skills/c4-context/SKILL.md +150 -0
  76. package/skills/changelog-automation/SKILL.md +38 -0
  77. package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
  78. package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
  79. package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
  80. package/skills/clean-markdown/SKILL.md +23 -0
  81. package/skills/cloud-architect/SKILL.md +135 -0
  82. package/skills/code-documentation-code-explain/SKILL.md +46 -0
  83. package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
  84. package/skills/code-documentation-doc-generate/SKILL.md +48 -0
  85. package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
  86. package/skills/code-refactoring-context-restore/SKILL.md +179 -0
  87. package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
  88. package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
  89. package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
  90. package/skills/code-review-ai-ai-review/SKILL.md +450 -0
  91. package/skills/code-review-excellence/SKILL.md +40 -0
  92. package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
  93. package/skills/code-reviewer/SKILL.md +178 -0
  94. package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
  95. package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
  96. package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
  97. package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
  98. package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
  99. package/skills/competitive-landscape/SKILL.md +34 -0
  100. package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
  101. package/skills/comprehensive-review-full-review/SKILL.md +146 -0
  102. package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
  103. package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
  104. package/skills/conductor-implement/SKILL.md +388 -0
  105. package/skills/conductor-manage/SKILL.md +39 -0
  106. package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
  107. package/skills/conductor-new-track/SKILL.md +433 -0
  108. package/skills/conductor-revert/SKILL.md +372 -0
  109. package/skills/conductor-setup/SKILL.md +426 -0
  110. package/skills/conductor-status/SKILL.md +338 -0
  111. package/skills/conductor-validator/SKILL.md +62 -0
  112. package/skills/content-marketer/SKILL.md +170 -0
  113. package/skills/context-driven-development/SKILL.md +400 -0
  114. package/skills/context-management-context-restore/SKILL.md +179 -0
  115. package/skills/context-management-context-save/SKILL.md +177 -0
  116. package/skills/context-manager/SKILL.md +185 -0
  117. package/skills/cost-optimization/SKILL.md +286 -0
  118. package/skills/cpp-pro/SKILL.md +59 -0
  119. package/skills/cqrs-implementation/SKILL.md +35 -0
  120. package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
  121. package/skills/csharp-pro/SKILL.md +59 -0
  122. package/skills/customer-support/SKILL.md +170 -0
  123. package/skills/data-engineer/SKILL.md +224 -0
  124. package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
  125. package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
  126. package/skills/data-quality-frameworks/SKILL.md +40 -0
  127. package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
  128. package/skills/data-scientist/SKILL.md +199 -0
  129. package/skills/data-storytelling/SKILL.md +465 -0
  130. package/skills/database-admin/SKILL.md +165 -0
  131. package/skills/database-architect/SKILL.md +268 -0
  132. package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
  133. package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
  134. package/skills/database-migration/SKILL.md +436 -0
  135. package/skills/database-migrations-migration-observability/SKILL.md +420 -0
  136. package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
  137. package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
  138. package/skills/database-optimizer/SKILL.md +167 -0
  139. package/skills/dbt-transformation-patterns/SKILL.md +34 -0
  140. package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
  141. package/skills/debugger/SKILL.md +49 -0
  142. package/skills/debugging-strategies/SKILL.md +34 -0
  143. package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
  144. package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
  145. package/skills/defi-protocol-templates/SKILL.md +466 -0
  146. package/skills/dependency-management-deps-audit/SKILL.md +44 -0
  147. package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
  148. package/skills/dependency-upgrade/SKILL.md +421 -0
  149. package/skills/deployment-engineer/SKILL.md +170 -0
  150. package/skills/deployment-pipeline-design/SKILL.md +371 -0
  151. package/skills/deployment-validation-config-validate/SKILL.md +496 -0
  152. package/skills/devops-troubleshooter/SKILL.md +161 -0
  153. package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
  154. package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
  155. package/skills/distributed-tracing/SKILL.md +450 -0
  156. package/skills/django-pro/SKILL.md +180 -0
  157. package/skills/docs-architect/SKILL.md +98 -0
  158. package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
  159. package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
  160. package/skills/dotnet-architect/SKILL.md +197 -0
  161. package/skills/dotnet-backend-patterns/SKILL.md +37 -0
  162. package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
  163. package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
  164. package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
  165. package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
  166. package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
  167. package/skills/dummy-skill/SKILL.md +5 -0
  168. package/skills/dx-optimizer/SKILL.md +83 -0
  169. package/skills/e2e-testing-patterns/SKILL.md +41 -0
  170. package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
  171. package/skills/elixir-pro/SKILL.md +59 -0
  172. package/skills/embedding-strategies/SKILL.md +491 -0
  173. package/skills/employment-contract-templates/SKILL.md +39 -0
  174. package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
  175. package/skills/error-debugging-error-analysis/SKILL.md +47 -0
  176. package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
  177. package/skills/error-debugging-error-trace/SKILL.md +43 -0
  178. package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
  179. package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
  180. package/skills/error-detective/SKILL.md +53 -0
  181. package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
  182. package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
  183. package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
  184. package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
  185. package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
  186. package/skills/error-handling-patterns/SKILL.md +35 -0
  187. package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
  188. package/skills/event-sourcing-architect/SKILL.md +58 -0
  189. package/skills/event-store-design/SKILL.md +449 -0
  190. package/skills/fastapi-pro/SKILL.md +192 -0
  191. package/skills/fastapi-templates/SKILL.md +32 -0
  192. package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
  193. package/skills/final-test/SKILL.md +5 -0
  194. package/skills/firmware-analyst/SKILL.md +320 -0
  195. package/skills/flutter-expert/SKILL.md +200 -0
  196. package/skills/framework-migration-code-migrate/SKILL.md +48 -0
  197. package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
  198. package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
  199. package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
  200. package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
  201. package/skills/frontend-developer/SKILL.md +171 -0
  202. package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
  203. package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
  204. package/skills/frontend-security-coder/SKILL.md +170 -0
  205. package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
  206. package/skills/gdpr-data-handling/SKILL.md +33 -0
  207. package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
  208. package/skills/git-advanced-workflows/SKILL.md +412 -0
  209. package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
  210. package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
  211. package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
  212. package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
  213. package/skills/github-actions-templates/SKILL.md +345 -0
  214. package/skills/gitlab-ci-patterns/SKILL.md +283 -0
  215. package/skills/gitops-workflow/SKILL.md +303 -0
  216. package/skills/gitops-workflow/references/argocd-setup.md +134 -0
  217. package/skills/gitops-workflow/references/sync-policies.md +131 -0
  218. package/skills/go-concurrency-patterns/SKILL.md +33 -0
  219. package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
  220. package/skills/godot-gdscript-patterns/SKILL.md +33 -0
  221. package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
  222. package/skills/golang-pro/SKILL.md +179 -0
  223. package/skills/grafana-dashboards/SKILL.md +381 -0
  224. package/skills/graphql-architect/SKILL.md +182 -0
  225. package/skills/haskell-pro/SKILL.md +56 -0
  226. package/skills/helm-chart-scaffolding/SKILL.md +34 -0
  227. package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
  228. package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
  229. package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
  230. package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
  231. package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
  232. package/skills/hr-pro/SKILL.md +126 -0
  233. package/skills/hybrid-cloud-architect/SKILL.md +168 -0
  234. package/skills/hybrid-cloud-networking/SKILL.md +238 -0
  235. package/skills/hybrid-search-implementation/SKILL.md +32 -0
  236. package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
  237. package/skills/incident-responder/SKILL.md +213 -0
  238. package/skills/incident-response-incident-response/SKILL.md +168 -0
  239. package/skills/incident-response-smart-fix/SKILL.md +29 -0
  240. package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
  241. package/skills/incident-runbook-templates/SKILL.md +395 -0
  242. package/skills/ios-developer/SKILL.md +219 -0
  243. package/skills/istio-traffic-management/SKILL.md +337 -0
  244. package/skills/java-pro/SKILL.md +177 -0
  245. package/skills/javascript-pro/SKILL.md +57 -0
  246. package/skills/javascript-testing-patterns/SKILL.md +35 -0
  247. package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
  248. package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
  249. package/skills/julia-pro/SKILL.md +209 -0
  250. package/skills/k8s-manifest-generator/SKILL.md +35 -0
  251. package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
  252. package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
  253. package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
  254. package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
  255. package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
  256. package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
  257. package/skills/k8s-security-policies/SKILL.md +346 -0
  258. package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
  259. package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
  260. package/skills/kpi-dashboard-design/SKILL.md +440 -0
  261. package/skills/kubernetes-architect/SKILL.md +170 -0
  262. package/skills/langchain-architecture/SKILL.md +350 -0
  263. package/skills/legacy-modernizer/SKILL.md +53 -0
  264. package/skills/legal-advisor/SKILL.md +70 -0
  265. package/skills/linkerd-patterns/SKILL.md +321 -0
  266. package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
  267. package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
  268. package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
  269. package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
  270. package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
  271. package/skills/llm-evaluation/SKILL.md +483 -0
  272. package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
  273. package/skills/malware-analyst/SKILL.md +247 -0
  274. package/skills/market-sizing-analysis/SKILL.md +425 -0
  275. package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
  276. package/skills/market-sizing-analysis/references/data-sources.md +360 -0
  277. package/skills/memory-forensics/SKILL.md +491 -0
  278. package/skills/memory-safety-patterns/SKILL.md +33 -0
  279. package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
  280. package/skills/mermaid-expert/SKILL.md +59 -0
  281. package/skills/microservices-patterns/SKILL.md +35 -0
  282. package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
  283. package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
  284. package/skills/ml-engineer/SKILL.md +168 -0
  285. package/skills/ml-pipeline-workflow/SKILL.md +257 -0
  286. package/skills/mlops-engineer/SKILL.md +219 -0
  287. package/skills/mobile-developer/SKILL.md +205 -0
  288. package/skills/mobile-security-coder/SKILL.md +184 -0
  289. package/skills/modern-javascript-patterns/SKILL.md +35 -0
  290. package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
  291. package/skills/monorepo-architect/SKILL.md +61 -0
  292. package/skills/monorepo-management/SKILL.md +35 -0
  293. package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
  294. package/skills/mtls-configuration/SKILL.md +359 -0
  295. package/skills/multi-cloud-architecture/SKILL.md +189 -0
  296. package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
  297. package/skills/network-engineer/SKILL.md +169 -0
  298. package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
  299. package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
  300. package/skills/nft-standards/SKILL.md +395 -0
  301. package/skills/node-expert/SKILL.md +23 -0
  302. package/skills/nodejs-backend-patterns/SKILL.md +35 -0
  303. package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
  304. package/skills/nx-workspace-patterns/SKILL.md +464 -0
  305. package/skills/observability-engineer/SKILL.md +237 -0
  306. package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
  307. package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
  308. package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
  309. package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
  310. package/skills/on-call-handoff-patterns/SKILL.md +453 -0
  311. package/skills/openapi-spec-generation/SKILL.md +33 -0
  312. package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
  313. package/skills/payment-integration/SKILL.md +77 -0
  314. package/skills/paypal-integration/SKILL.md +479 -0
  315. package/skills/pci-compliance/SKILL.md +478 -0
  316. package/skills/performance-engineer/SKILL.md +180 -0
  317. package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
  318. package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
  319. package/skills/php-pro/SKILL.md +63 -0
  320. package/skills/posix-shell-pro/SKILL.md +304 -0
  321. package/skills/postgresql/SKILL.md +230 -0
  322. package/skills/postmortem-writing/SKILL.md +386 -0
  323. package/skills/projection-patterns/SKILL.md +33 -0
  324. package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
  325. package/skills/prometheus-configuration/SKILL.md +404 -0
  326. package/skills/prompt-engineer/SKILL.md +272 -0
  327. package/skills/prompt-engineering-patterns/SKILL.md +213 -0
  328. package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  329. package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
  330. package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
  331. package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
  332. package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
  333. package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
  334. package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
  335. package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  336. package/skills/protocol-reverse-engineering/SKILL.md +29 -0
  337. package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
  338. package/skills/python-development-python-scaffold/SKILL.md +331 -0
  339. package/skills/python-packaging/SKILL.md +36 -0
  340. package/skills/python-packaging/resources/implementation-playbook.md +869 -0
  341. package/skills/python-performance-optimization/SKILL.md +36 -0
  342. package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
  343. package/skills/python-pro/SKILL.md +158 -0
  344. package/skills/python-testing-patterns/SKILL.md +37 -0
  345. package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
  346. package/skills/quant-analyst/SKILL.md +53 -0
  347. package/skills/rag-implementation/SKILL.md +421 -0
  348. package/skills/react-modernization/SKILL.md +34 -0
  349. package/skills/react-modernization/resources/implementation-playbook.md +512 -0
  350. package/skills/react-native-architecture/SKILL.md +33 -0
  351. package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
  352. package/skills/react-state-management/SKILL.md +441 -0
  353. package/skills/reference-builder/SKILL.md +188 -0
  354. package/skills/reverse-engineer/SKILL.md +173 -0
  355. package/skills/risk-manager/SKILL.md +61 -0
  356. package/skills/risk-metrics-calculation/SKILL.md +33 -0
  357. package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
  358. package/skills/ruby-pro/SKILL.md +56 -0
  359. package/skills/rust-async-patterns/SKILL.md +33 -0
  360. package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
  361. package/skills/rust-pro/SKILL.md +178 -0
  362. package/skills/saga-orchestration/SKILL.md +496 -0
  363. package/skills/sales-automator/SKILL.md +55 -0
  364. package/skills/sast-configuration/SKILL.md +212 -0
  365. package/skills/scala-pro/SKILL.md +82 -0
  366. package/skills/screen-reader-testing/SKILL.md +33 -0
  367. package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
  368. package/skills/search-specialist/SKILL.md +80 -0
  369. package/skills/secrets-management/SKILL.md +364 -0
  370. package/skills/security-auditor/SKILL.md +169 -0
  371. package/skills/security-compliance-compliance-check/SKILL.md +55 -0
  372. package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
  373. package/skills/security-requirement-extraction/SKILL.md +33 -0
  374. package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
  375. package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
  376. package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
  377. package/skills/security-scanning-security-hardening/SKILL.md +147 -0
  378. package/skills/security-scanning-security-sast/SKILL.md +495 -0
  379. package/skills/seo-authority-builder/SKILL.md +136 -0
  380. package/skills/seo-cannibalization-detector/SKILL.md +123 -0
  381. package/skills/seo-content-auditor/SKILL.md +83 -0
  382. package/skills/seo-content-planner/SKILL.md +108 -0
  383. package/skills/seo-content-refresher/SKILL.md +118 -0
  384. package/skills/seo-content-writer/SKILL.md +96 -0
  385. package/skills/seo-keyword-strategist/SKILL.md +95 -0
  386. package/skills/seo-meta-optimizer/SKILL.md +92 -0
  387. package/skills/seo-snippet-hunter/SKILL.md +114 -0
  388. package/skills/seo-structure-architect/SKILL.md +108 -0
  389. package/skills/service-mesh-expert/SKILL.md +58 -0
  390. package/skills/service-mesh-observability/SKILL.md +395 -0
  391. package/skills/shellcheck-configuration/SKILL.md +466 -0
  392. package/skills/similarity-search-patterns/SKILL.md +33 -0
  393. package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
  394. package/skills/slo-implementation/SKILL.md +341 -0
  395. package/skills/solidity-security/SKILL.md +34 -0
  396. package/skills/solidity-security/resources/implementation-playbook.md +524 -0
  397. package/skills/spark-optimization/SKILL.md +427 -0
  398. package/skills/sql-optimization-patterns/SKILL.md +35 -0
  399. package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
  400. package/skills/sql-pro/SKILL.md +173 -0
  401. package/skills/startup-analyst/SKILL.md +328 -0
  402. package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
  403. package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
  404. package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
  405. package/skills/startup-financial-modeling/SKILL.md +467 -0
  406. package/skills/startup-metrics-framework/SKILL.md +34 -0
  407. package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
  408. package/skills/stride-analysis-patterns/SKILL.md +33 -0
  409. package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
  410. package/skills/stripe-integration/SKILL.md +454 -0
  411. package/skills/systems-programming-rust-project/SKILL.md +440 -0
  412. package/skills/tailwind-design-system/SKILL.md +33 -0
  413. package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
  414. package/skills/tdd-orchestrator/SKILL.md +205 -0
  415. package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
  416. package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
  417. package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
  418. package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
  419. package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
  420. package/skills/team-collaboration-issue/SKILL.md +37 -0
  421. package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
  422. package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
  423. package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
  424. package/skills/team-composition-analysis/SKILL.md +413 -0
  425. package/skills/temporal-python-pro/SKILL.md +370 -0
  426. package/skills/temporal-python-testing/SKILL.md +170 -0
  427. package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
  428. package/skills/temporal-python-testing/resources/local-setup.md +553 -0
  429. package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
  430. package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
  431. package/skills/terraform-module-library/SKILL.md +261 -0
  432. package/skills/terraform-module-library/references/aws-modules.md +63 -0
  433. package/skills/terraform-specialist/SKILL.md +166 -0
  434. package/skills/test-automator/SKILL.md +224 -0
  435. package/skills/threat-mitigation-mapping/SKILL.md +33 -0
  436. package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
  437. package/skills/threat-modeling-expert/SKILL.md +60 -0
  438. package/skills/track-management/SKILL.md +38 -0
  439. package/skills/track-management/resources/implementation-playbook.md +591 -0
  440. package/skills/turborepo-caching/SKILL.md +419 -0
  441. package/skills/tutorial-engineer/SKILL.md +139 -0
  442. package/skills/typescript-advanced-types/SKILL.md +35 -0
  443. package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
  444. package/skills/typescript-pro/SKILL.md +55 -0
  445. package/skills/ui-minimal/SKILL.md +23 -0
  446. package/skills/ui-ux-designer/SKILL.md +209 -0
  447. package/skills/ui-visual-validator/SKILL.md +214 -0
  448. package/skills/unit-testing-test-generate/SKILL.md +319 -0
  449. package/skills/unity-developer/SKILL.md +230 -0
  450. package/skills/unity-ecs-patterns/SKILL.md +33 -0
  451. package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
  452. package/skills/uv-package-manager/SKILL.md +37 -0
  453. package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
  454. package/skills/vector-database-engineer/SKILL.md +60 -0
  455. package/skills/vector-index-tuning/SKILL.md +42 -0
  456. package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
  457. package/skills/wcag-audit-patterns/SKILL.md +41 -0
  458. package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
  459. package/skills/web3-testing/SKILL.md +427 -0
  460. package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
  461. package/skills/workflow-patterns/SKILL.md +38 -0
  462. package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
@@ -0,0 +1,1361 @@
1
+ # Error Tracking and Monitoring Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ ## Instructions
6
+
7
+ ### 1. Error Tracking Analysis
8
+
9
+ Analyze current error handling and tracking:
10
+
11
+ **Error Analysis Script**
12
+ ```python
13
+ import os
14
+ import re
15
+ import ast
16
+ from pathlib import Path
17
+ from collections import defaultdict
18
+
19
+ class ErrorTrackingAnalyzer:
20
+ def analyze_codebase(self, project_path):
21
+ """
22
+ Analyze error handling patterns in codebase
23
+ """
24
+ analysis = {
25
+ 'error_handling': self._analyze_error_handling(project_path),
26
+ 'logging_usage': self._analyze_logging(project_path),
27
+ 'monitoring_setup': self._check_monitoring_setup(project_path),
28
+ 'error_patterns': self._identify_error_patterns(project_path),
29
+ 'recommendations': []
30
+ }
31
+
32
+ self._generate_recommendations(analysis)
33
+ return analysis
34
+
35
+ def _analyze_error_handling(self, project_path):
36
+ """Analyze error handling patterns"""
37
+ patterns = {
38
+ 'try_catch_blocks': 0,
39
+ 'unhandled_promises': 0,
40
+ 'generic_catches': 0,
41
+ 'error_types': defaultdict(int),
42
+ 'error_reporting': []
43
+ }
44
+
45
+ for file_path in Path(project_path).rglob('*.{js,ts,py,java,go}'):
46
+ content = file_path.read_text(errors='ignore')
47
+
48
+ # JavaScript/TypeScript patterns
49
+ if file_path.suffix in ['.js', '.ts']:
50
+ patterns['try_catch_blocks'] += len(re.findall(r'try\s*{', content))
51
+ patterns['generic_catches'] += len(re.findall(r'catch\s*\([^)]*\)\s*{\s*}', content))
52
+ patterns['unhandled_promises'] += len(re.findall(r'\.then\([^)]+\)(?!\.catch)', content))
53
+
54
+ # Python patterns
55
+ elif file_path.suffix == '.py':
56
+ try:
57
+ tree = ast.parse(content)
58
+ for node in ast.walk(tree):
59
+ if isinstance(node, ast.Try):
60
+ patterns['try_catch_blocks'] += 1
61
+ for handler in node.handlers:
62
+ if handler.type is None:
63
+ patterns['generic_catches'] += 1
64
+ except:
65
+ pass
66
+
67
+ return patterns
68
+
69
+ def _analyze_logging(self, project_path):
70
+ """Analyze logging patterns"""
71
+ logging_patterns = {
72
+ 'console_logs': 0,
73
+ 'structured_logging': False,
74
+ 'log_levels_used': set(),
75
+ 'logging_frameworks': []
76
+ }
77
+
78
+ # Check for logging frameworks
79
+ package_files = ['package.json', 'requirements.txt', 'go.mod', 'pom.xml']
80
+ for pkg_file in package_files:
81
+ pkg_path = Path(project_path) / pkg_file
82
+ if pkg_path.exists():
83
+ content = pkg_path.read_text()
84
+ if 'winston' in content or 'bunyan' in content:
85
+ logging_patterns['logging_frameworks'].append('winston/bunyan')
86
+ if 'pino' in content:
87
+ logging_patterns['logging_frameworks'].append('pino')
88
+ if 'logging' in content:
89
+ logging_patterns['logging_frameworks'].append('python-logging')
90
+ if 'logrus' in content or 'zap' in content:
91
+ logging_patterns['logging_frameworks'].append('logrus/zap')
92
+
93
+ return logging_patterns
94
+ ```
95
+
96
+ ### 2. Error Tracking Service Integration
97
+
98
+ Implement integrations with popular error tracking services:
99
+
100
+ **Sentry Integration**
101
+ ```javascript
102
+ // sentry-setup.js
103
+ import * as Sentry from "@sentry/node";
104
+ import { ProfilingIntegration } from "@sentry/profiling-node";
105
+
106
+ class SentryErrorTracker {
107
+ constructor(config) {
108
+ this.config = config;
109
+ this.initialized = false;
110
+ }
111
+
112
+ initialize() {
113
+ Sentry.init({
114
+ dsn: this.config.dsn,
115
+ environment: this.config.environment,
116
+ release: this.config.release,
117
+
118
+ // Performance Monitoring
119
+ tracesSampleRate: this.config.tracesSampleRate || 0.1,
120
+ profilesSampleRate: this.config.profilesSampleRate || 0.1,
121
+
122
+ // Integrations
123
+ integrations: [
124
+ // HTTP integration
125
+ new Sentry.Integrations.Http({ tracing: true }),
126
+
127
+ // Express integration
128
+ new Sentry.Integrations.Express({
129
+ app: this.config.app,
130
+ router: true,
131
+ methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH']
132
+ }),
133
+
134
+ // Database integration
135
+ new Sentry.Integrations.Postgres(),
136
+ new Sentry.Integrations.Mysql(),
137
+ new Sentry.Integrations.Mongo(),
138
+
139
+ // Profiling
140
+ new ProfilingIntegration(),
141
+
142
+ // Custom integrations
143
+ ...this.getCustomIntegrations()
144
+ ],
145
+
146
+ // Filtering
147
+ beforeSend: (event, hint) => {
148
+ // Filter sensitive data
149
+ if (event.request?.cookies) {
150
+ delete event.request.cookies;
151
+ }
152
+
153
+ // Filter out specific errors
154
+ if (this.shouldFilterError(event, hint)) {
155
+ return null;
156
+ }
157
+
158
+ // Enhance error context
159
+ return this.enhanceErrorEvent(event, hint);
160
+ },
161
+
162
+ // Breadcrumbs
163
+ beforeBreadcrumb: (breadcrumb, hint) => {
164
+ // Filter sensitive breadcrumbs
165
+ if (breadcrumb.category === 'console' && breadcrumb.level === 'debug') {
166
+ return null;
167
+ }
168
+
169
+ return breadcrumb;
170
+ },
171
+
172
+ // Options
173
+ attachStacktrace: true,
174
+ shutdownTimeout: 5000,
175
+ maxBreadcrumbs: 100,
176
+ debug: this.config.debug || false,
177
+
178
+ // Tags
179
+ initialScope: {
180
+ tags: {
181
+ component: this.config.component,
182
+ version: this.config.version
183
+ },
184
+ user: {
185
+ id: this.config.userId,
186
+ segment: this.config.userSegment
187
+ }
188
+ }
189
+ });
190
+
191
+ this.initialized = true;
192
+ this.setupErrorHandlers();
193
+ }
194
+
195
+ setupErrorHandlers() {
196
+ // Global error handler
197
+ process.on('uncaughtException', (error) => {
198
+ console.error('Uncaught Exception:', error);
199
+ Sentry.captureException(error, {
200
+ tags: { type: 'uncaught_exception' },
201
+ level: 'fatal'
202
+ });
203
+
204
+ // Graceful shutdown
205
+ this.gracefulShutdown();
206
+ });
207
+
208
+ // Promise rejection handler
209
+ process.on('unhandledRejection', (reason, promise) => {
210
+ console.error('Unhandled Rejection:', reason);
211
+ Sentry.captureException(reason, {
212
+ tags: { type: 'unhandled_rejection' },
213
+ extra: { promise: promise.toString() }
214
+ });
215
+ });
216
+ }
217
+
218
+ enhanceErrorEvent(event, hint) {
219
+ // Add custom context
220
+ event.extra = {
221
+ ...event.extra,
222
+ memory: process.memoryUsage(),
223
+ uptime: process.uptime(),
224
+ nodeVersion: process.version
225
+ };
226
+
227
+ // Add user context
228
+ if (this.config.getUserContext) {
229
+ event.user = this.config.getUserContext();
230
+ }
231
+
232
+ // Add custom fingerprinting
233
+ if (hint.originalException) {
234
+ event.fingerprint = this.generateFingerprint(hint.originalException);
235
+ }
236
+
237
+ return event;
238
+ }
239
+
240
+ generateFingerprint(error) {
241
+ // Custom fingerprinting logic
242
+ const fingerprint = [];
243
+
244
+ // Group by error type
245
+ fingerprint.push(error.name || 'Error');
246
+
247
+ // Group by error location
248
+ if (error.stack) {
249
+ const match = error.stack.match(/at\s+(.+?)\s+\(/);
250
+ if (match) {
251
+ fingerprint.push(match[1]);
252
+ }
253
+ }
254
+
255
+ // Group by custom properties
256
+ if (error.code) {
257
+ fingerprint.push(error.code);
258
+ }
259
+
260
+ return fingerprint;
261
+ }
262
+ }
263
+
264
+ // Express middleware
265
+ export const sentryMiddleware = {
266
+ requestHandler: Sentry.Handlers.requestHandler(),
267
+ tracingHandler: Sentry.Handlers.tracingHandler(),
268
+ errorHandler: Sentry.Handlers.errorHandler({
269
+ shouldHandleError(error) {
270
+ // Capture 4xx and 5xx errors
271
+ if (error.status >= 400) {
272
+ return true;
273
+ }
274
+ return false;
275
+ }
276
+ })
277
+ };
278
+ ```
279
+
280
+ **Custom Error Tracking Service**
281
+ ```typescript
282
+ // error-tracker.ts
283
+ interface ErrorEvent {
284
+ timestamp: Date;
285
+ level: 'debug' | 'info' | 'warning' | 'error' | 'fatal';
286
+ message: string;
287
+ stack?: string;
288
+ context: {
289
+ user?: any;
290
+ request?: any;
291
+ environment: string;
292
+ release: string;
293
+ tags: Record<string, string>;
294
+ extra: Record<string, any>;
295
+ };
296
+ fingerprint: string[];
297
+ }
298
+
299
+ class ErrorTracker {
300
+ private queue: ErrorEvent[] = [];
301
+ private batchSize = 10;
302
+ private flushInterval = 5000;
303
+
304
+ constructor(private config: ErrorTrackerConfig) {
305
+ this.startBatchProcessor();
306
+ }
307
+
308
+ captureException(error: Error, context?: Partial<ErrorEvent['context']>) {
309
+ const event: ErrorEvent = {
310
+ timestamp: new Date(),
311
+ level: 'error',
312
+ message: error.message,
313
+ stack: error.stack,
314
+ context: {
315
+ environment: this.config.environment,
316
+ release: this.config.release,
317
+ tags: {},
318
+ extra: {},
319
+ ...context
320
+ },
321
+ fingerprint: this.generateFingerprint(error)
322
+ };
323
+
324
+ this.addToQueue(event);
325
+ }
326
+
327
+ captureMessage(message: string, level: ErrorEvent['level'] = 'info') {
328
+ const event: ErrorEvent = {
329
+ timestamp: new Date(),
330
+ level,
331
+ message,
332
+ context: {
333
+ environment: this.config.environment,
334
+ release: this.config.release,
335
+ tags: {},
336
+ extra: {}
337
+ },
338
+ fingerprint: [message]
339
+ };
340
+
341
+ this.addToQueue(event);
342
+ }
343
+
344
+ private addToQueue(event: ErrorEvent) {
345
+ // Apply sampling
346
+ if (Math.random() > this.config.sampleRate) {
347
+ return;
348
+ }
349
+
350
+ // Filter sensitive data
351
+ event = this.sanitizeEvent(event);
352
+
353
+ // Add to queue
354
+ this.queue.push(event);
355
+
356
+ // Flush if queue is full
357
+ if (this.queue.length >= this.batchSize) {
358
+ this.flush();
359
+ }
360
+ }
361
+
362
+ private sanitizeEvent(event: ErrorEvent): ErrorEvent {
363
+ // Remove sensitive data
364
+ const sensitiveKeys = ['password', 'token', 'secret', 'api_key'];
365
+
366
+ const sanitize = (obj: any): any => {
367
+ if (!obj || typeof obj !== 'object') return obj;
368
+
369
+ const cleaned = Array.isArray(obj) ? [] : {};
370
+
371
+ for (const [key, value] of Object.entries(obj)) {
372
+ if (sensitiveKeys.some(k => key.toLowerCase().includes(k))) {
373
+ cleaned[key] = '[REDACTED]';
374
+ } else if (typeof value === 'object') {
375
+ cleaned[key] = sanitize(value);
376
+ } else {
377
+ cleaned[key] = value;
378
+ }
379
+ }
380
+
381
+ return cleaned;
382
+ };
383
+
384
+ return {
385
+ ...event,
386
+ context: sanitize(event.context)
387
+ };
388
+ }
389
+
390
+ private async flush() {
391
+ if (this.queue.length === 0) return;
392
+
393
+ const events = this.queue.splice(0, this.batchSize);
394
+
395
+ try {
396
+ await this.sendEvents(events);
397
+ } catch (error) {
398
+ console.error('Failed to send error events:', error);
399
+ // Re-queue events
400
+ this.queue.unshift(...events);
401
+ }
402
+ }
403
+
404
+ private async sendEvents(events: ErrorEvent[]) {
405
+ const response = await fetch(this.config.endpoint, {
406
+ method: 'POST',
407
+ headers: {
408
+ 'Content-Type': 'application/json',
409
+ 'Authorization': `Bearer ${this.config.apiKey}`
410
+ },
411
+ body: JSON.stringify({ events })
412
+ });
413
+
414
+ if (!response.ok) {
415
+ throw new Error(`Error tracking API returned ${response.status}`);
416
+ }
417
+ }
418
+ }
419
+ ```
420
+
421
+ ### 3. Structured Logging Implementation
422
+
423
+ Implement comprehensive structured logging:
424
+
425
+ **Advanced Logger**
426
+ ```typescript
427
+ // structured-logger.ts
428
+ import winston from 'winston';
429
+ import { ElasticsearchTransport } from 'winston-elasticsearch';
430
+
431
+ class StructuredLogger {
432
+ private logger: winston.Logger;
433
+
434
+ constructor(config: LoggerConfig) {
435
+ this.logger = winston.createLogger({
436
+ level: config.level || 'info',
437
+ format: winston.format.combine(
438
+ winston.format.timestamp(),
439
+ winston.format.errors({ stack: true }),
440
+ winston.format.metadata(),
441
+ winston.format.json()
442
+ ),
443
+ defaultMeta: {
444
+ service: config.service,
445
+ environment: config.environment,
446
+ version: config.version
447
+ },
448
+ transports: this.createTransports(config)
449
+ });
450
+ }
451
+
452
+ private createTransports(config: LoggerConfig): winston.transport[] {
453
+ const transports: winston.transport[] = [];
454
+
455
+ // Console transport for development
456
+ if (config.environment === 'development') {
457
+ transports.push(new winston.transports.Console({
458
+ format: winston.format.combine(
459
+ winston.format.colorize(),
460
+ winston.format.simple()
461
+ )
462
+ }));
463
+ }
464
+
465
+ // File transport for all environments
466
+ transports.push(new winston.transports.File({
467
+ filename: 'logs/error.log',
468
+ level: 'error',
469
+ maxsize: 5242880, // 5MB
470
+ maxFiles: 5
471
+ }));
472
+
473
+ transports.push(new winston.transports.File({
474
+ filename: 'logs/combined.log',
475
+ maxsize: 5242880,
476
+ maxFiles: 5
477
+ });
478
+
479
+ // Elasticsearch transport for production
480
+ if (config.elasticsearch) {
481
+ transports.push(new ElasticsearchTransport({
482
+ level: 'info',
483
+ clientOpts: config.elasticsearch,
484
+ index: `logs-${config.service}`,
485
+ transformer: (logData) => {
486
+ return {
487
+ '@timestamp': logData.timestamp,
488
+ severity: logData.level,
489
+ message: logData.message,
490
+ fields: {
491
+ ...logData.metadata,
492
+ ...logData.defaultMeta
493
+ }
494
+ };
495
+ }
496
+ }));
497
+ }
498
+
499
+ return transports;
500
+ }
501
+
502
+ // Logging methods with context
503
+ error(message: string, error?: Error, context?: any) {
504
+ this.logger.error(message, {
505
+ error: {
506
+ message: error?.message,
507
+ stack: error?.stack,
508
+ name: error?.name
509
+ },
510
+ ...context
511
+ });
512
+ }
513
+
514
+ warn(message: string, context?: any) {
515
+ this.logger.warn(message, context);
516
+ }
517
+
518
+ info(message: string, context?: any) {
519
+ this.logger.info(message, context);
520
+ }
521
+
522
+ debug(message: string, context?: any) {
523
+ this.logger.debug(message, context);
524
+ }
525
+
526
+ // Performance logging
527
+ startTimer(label: string): () => void {
528
+ const start = Date.now();
529
+ return () => {
530
+ const duration = Date.now() - start;
531
+ this.info(`Timer ${label}`, { duration, label });
532
+ };
533
+ }
534
+
535
+ // Audit logging
536
+ audit(action: string, userId: string, details: any) {
537
+ this.info('Audit Event', {
538
+ type: 'audit',
539
+ action,
540
+ userId,
541
+ timestamp: new Date().toISOString(),
542
+ details
543
+ });
544
+ }
545
+ }
546
+
547
+ // Request logging middleware
548
+ export function requestLoggingMiddleware(logger: StructuredLogger) {
549
+ return (req: Request, res: Response, next: NextFunction) => {
550
+ const start = Date.now();
551
+
552
+ // Log request
553
+ logger.info('Incoming request', {
554
+ method: req.method,
555
+ url: req.url,
556
+ ip: req.ip,
557
+ userAgent: req.get('user-agent')
558
+ });
559
+
560
+ // Log response
561
+ res.on('finish', () => {
562
+ const duration = Date.now() - start;
563
+ logger.info('Request completed', {
564
+ method: req.method,
565
+ url: req.url,
566
+ status: res.statusCode,
567
+ duration,
568
+ contentLength: res.get('content-length')
569
+ });
570
+ });
571
+
572
+ next();
573
+ };
574
+ }
575
+ ```
576
+
577
+ ### 4. Error Alerting Configuration
578
+
579
+ Set up intelligent alerting:
580
+
581
+ **Alert Manager**
582
+ ```python
583
+ # alert_manager.py
584
+ from dataclasses import dataclass
585
+ from typing import List, Dict, Optional
586
+ from datetime import datetime, timedelta
587
+ import asyncio
588
+
589
+ @dataclass
590
+ class AlertRule:
591
+ name: str
592
+ condition: str
593
+ threshold: float
594
+ window: timedelta
595
+ severity: str
596
+ channels: List[str]
597
+ cooldown: timedelta = timedelta(minutes=15)
598
+
599
+ class AlertManager:
600
+ def __init__(self, config):
601
+ self.config = config
602
+ self.rules = self._load_rules()
603
+ self.alert_history = {}
604
+ self.channels = self._setup_channels()
605
+
606
+ def _load_rules(self):
607
+ """Load alert rules from configuration"""
608
+ return [
609
+ AlertRule(
610
+ name="High Error Rate",
611
+ condition="error_rate",
612
+ threshold=0.05, # 5% error rate
613
+ window=timedelta(minutes=5),
614
+ severity="critical",
615
+ channels=["slack", "pagerduty"]
616
+ ),
617
+ AlertRule(
618
+ name="Response Time Degradation",
619
+ condition="response_time_p95",
620
+ threshold=1000, # 1 second
621
+ window=timedelta(minutes=10),
622
+ severity="warning",
623
+ channels=["slack"]
624
+ ),
625
+ AlertRule(
626
+ name="Memory Usage Critical",
627
+ condition="memory_usage_percent",
628
+ threshold=90,
629
+ window=timedelta(minutes=5),
630
+ severity="critical",
631
+ channels=["slack", "pagerduty"]
632
+ ),
633
+ AlertRule(
634
+ name="Disk Space Low",
635
+ condition="disk_free_percent",
636
+ threshold=10,
637
+ window=timedelta(minutes=15),
638
+ severity="warning",
639
+ channels=["slack", "email"]
640
+ )
641
+ ]
642
+
643
+ async def evaluate_rules(self, metrics: Dict):
644
+ """Evaluate all alert rules against current metrics"""
645
+ for rule in self.rules:
646
+ if await self._should_alert(rule, metrics):
647
+ await self._send_alert(rule, metrics)
648
+
649
+ async def _should_alert(self, rule: AlertRule, metrics: Dict) -> bool:
650
+ """Check if alert should be triggered"""
651
+ # Check if metric exists
652
+ if rule.condition not in metrics:
653
+ return False
654
+
655
+ # Check threshold
656
+ value = metrics[rule.condition]
657
+ if not self._check_threshold(value, rule.threshold, rule.condition):
658
+ return False
659
+
660
+ # Check cooldown
661
+ last_alert = self.alert_history.get(rule.name)
662
+ if last_alert and datetime.now() - last_alert < rule.cooldown:
663
+ return False
664
+
665
+ return True
666
+
667
+ async def _send_alert(self, rule: AlertRule, metrics: Dict):
668
+ """Send alert through configured channels"""
669
+ alert_data = {
670
+ "rule": rule.name,
671
+ "severity": rule.severity,
672
+ "value": metrics[rule.condition],
673
+ "threshold": rule.threshold,
674
+ "timestamp": datetime.now().isoformat(),
675
+ "environment": self.config.environment,
676
+ "service": self.config.service
677
+ }
678
+
679
+ # Send to all channels
680
+ tasks = []
681
+ for channel_name in rule.channels:
682
+ if channel_name in self.channels:
683
+ channel = self.channels[channel_name]
684
+ tasks.append(channel.send(alert_data))
685
+
686
+ await asyncio.gather(*tasks)
687
+
688
+ # Update alert history
689
+ self.alert_history[rule.name] = datetime.now()
690
+
691
+ # Alert channels
692
+ class SlackAlertChannel:
693
+ def __init__(self, webhook_url):
694
+ self.webhook_url = webhook_url
695
+
696
+ async def send(self, alert_data):
697
+ """Send alert to Slack"""
698
+ color = {
699
+ "critical": "danger",
700
+ "warning": "warning",
701
+ "info": "good"
702
+ }.get(alert_data["severity"], "danger")
703
+
704
+ payload = {
705
+ "attachments": [{
706
+ "color": color,
707
+ "title": f"🚨 {alert_data['rule']}",
708
+ "fields": [
709
+ {
710
+ "title": "Severity",
711
+ "value": alert_data["severity"].upper(),
712
+ "short": True
713
+ },
714
+ {
715
+ "title": "Environment",
716
+ "value": alert_data["environment"],
717
+ "short": True
718
+ },
719
+ {
720
+ "title": "Current Value",
721
+ "value": str(alert_data["value"]),
722
+ "short": True
723
+ },
724
+ {
725
+ "title": "Threshold",
726
+ "value": str(alert_data["threshold"]),
727
+ "short": True
728
+ }
729
+ ],
730
+ "footer": alert_data["service"],
731
+ "ts": int(datetime.now().timestamp())
732
+ }]
733
+ }
734
+
735
+ # Send to Slack
736
+ async with aiohttp.ClientSession() as session:
737
+ await session.post(self.webhook_url, json=payload)
738
+ ```
739
+
740
+ ### 5. Error Grouping and Deduplication
741
+
742
+ Implement intelligent error grouping:
743
+
744
+ **Error Grouping Algorithm**
745
+ ```python
746
+ import hashlib
747
+ import re
748
+ from difflib import SequenceMatcher
749
+
750
+ class ErrorGrouper:
751
+ def __init__(self):
752
+ self.groups = {}
753
+ self.patterns = self._compile_patterns()
754
+
755
+ def _compile_patterns(self):
756
+ """Compile regex patterns for normalization"""
757
+ return {
758
+ 'numbers': re.compile(r'\b\d+\b'),
759
+ 'uuids': re.compile(r'[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}'),
760
+ 'urls': re.compile(r'https?://[^\s]+'),
761
+ 'file_paths': re.compile(r'(/[^/\s]+)+'),
762
+ 'memory_addresses': re.compile(r'0x[0-9a-fA-F]+'),
763
+ 'timestamps': re.compile(r'\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}')
764
+ }
765
+
766
+ def group_error(self, error):
767
+ """Group error with similar errors"""
768
+ fingerprint = self.generate_fingerprint(error)
769
+
770
+ # Find existing group
771
+ group = self.find_similar_group(fingerprint, error)
772
+
773
+ if group:
774
+ group['count'] += 1
775
+ group['last_seen'] = error['timestamp']
776
+ group['instances'].append(error)
777
+ else:
778
+ # Create new group
779
+ self.groups[fingerprint] = {
780
+ 'fingerprint': fingerprint,
781
+ 'first_seen': error['timestamp'],
782
+ 'last_seen': error['timestamp'],
783
+ 'count': 1,
784
+ 'instances': [error],
785
+ 'pattern': self.extract_pattern(error)
786
+ }
787
+
788
+ return fingerprint
789
+
790
+ def generate_fingerprint(self, error):
791
+ """Generate unique fingerprint for error"""
792
+ # Normalize error message
793
+ normalized = self.normalize_message(error['message'])
794
+
795
+ # Include error type and location
796
+ components = [
797
+ error.get('type', 'Unknown'),
798
+ normalized,
799
+ self.extract_location(error.get('stack', ''))
800
+ ]
801
+
802
+ # Generate hash
803
+ fingerprint = hashlib.sha256(
804
+ '|'.join(components).encode()
805
+ ).hexdigest()[:16]
806
+
807
+ return fingerprint
808
+
809
+ def normalize_message(self, message):
810
+ """Normalize error message for grouping"""
811
+ # Replace dynamic values
812
+ normalized = message
813
+ for pattern_name, pattern in self.patterns.items():
814
+ normalized = pattern.sub(f'<{pattern_name}>', normalized)
815
+
816
+ return normalized.strip()
817
+
818
+ def extract_location(self, stack):
819
+ """Extract error location from stack trace"""
820
+ if not stack:
821
+ return 'unknown'
822
+
823
+ lines = stack.split('\n')
824
+ for line in lines:
825
+ # Look for file references
826
+ if ' at ' in line:
827
+ # Extract file and line number
828
+ match = re.search(r'at\s+(.+?)\s*\((.+?):(\d+):(\d+)\)', line)
829
+ if match:
830
+ file_path = match.group(2)
831
+ # Normalize file path
832
+ file_path = re.sub(r'.*/(?=src/|lib/|app/)', '', file_path)
833
+ return f"{file_path}:{match.group(3)}"
834
+
835
+ return 'unknown'
836
+
837
+ def find_similar_group(self, fingerprint, error):
838
+ """Find similar error group using fuzzy matching"""
839
+ if fingerprint in self.groups:
840
+ return self.groups[fingerprint]
841
+
842
+ # Try fuzzy matching
843
+ normalized_message = self.normalize_message(error['message'])
844
+
845
+ for group_fp, group in self.groups.items():
846
+ similarity = SequenceMatcher(
847
+ None,
848
+ normalized_message,
849
+ group['pattern']
850
+ ).ratio()
851
+
852
+ if similarity > 0.85: # 85% similarity threshold
853
+ return group
854
+
855
+ return None
856
+ ```
857
+
858
+ ### 6. Performance Impact Tracking
859
+
860
+ Monitor performance impact of errors:
861
+
862
+ **Performance Monitor**
863
+ ```typescript
864
+ // performance-monitor.ts
865
+ interface PerformanceMetrics {
866
+ responseTime: number;
867
+ errorRate: number;
868
+ throughput: number;
869
+ apdex: number;
870
+ resourceUsage: {
871
+ cpu: number;
872
+ memory: number;
873
+ disk: number;
874
+ };
875
+ }
876
+
877
+ class PerformanceMonitor {
878
+ private metrics: Map<string, PerformanceMetrics[]> = new Map();
879
+ private intervals: Map<string, NodeJS.Timer> = new Map();
880
+
881
+ startMonitoring(service: string, interval: number = 60000) {
882
+ const timer = setInterval(() => {
883
+ this.collectMetrics(service);
884
+ }, interval);
885
+
886
+ this.intervals.set(service, timer);
887
+ }
888
+
889
+ private async collectMetrics(service: string) {
890
+ const metrics: PerformanceMetrics = {
891
+ responseTime: await this.getResponseTime(service),
892
+ errorRate: await this.getErrorRate(service),
893
+ throughput: await this.getThroughput(service),
894
+ apdex: await this.calculateApdex(service),
895
+ resourceUsage: await this.getResourceUsage()
896
+ };
897
+
898
+ // Store metrics
899
+ if (!this.metrics.has(service)) {
900
+ this.metrics.set(service, []);
901
+ }
902
+
903
+ const serviceMetrics = this.metrics.get(service)!;
904
+ serviceMetrics.push(metrics);
905
+
906
+ // Keep only last 24 hours
907
+ const dayAgo = Date.now() - 24 * 60 * 60 * 1000;
908
+ const filtered = serviceMetrics.filter(m => m.timestamp > dayAgo);
909
+ this.metrics.set(service, filtered);
910
+
911
+ // Check for anomalies
912
+ this.detectAnomalies(service, metrics);
913
+ }
914
+
915
+ private detectAnomalies(service: string, current: PerformanceMetrics) {
916
+ const history = this.metrics.get(service) || [];
917
+ if (history.length < 10) return; // Need history for comparison
918
+
919
+ // Calculate baselines
920
+ const baseline = this.calculateBaseline(history.slice(-60)); // Last hour
921
+
922
+ // Check for anomalies
923
+ const anomalies = [];
924
+
925
+ if (current.responseTime > baseline.responseTime * 2) {
926
+ anomalies.push({
927
+ type: 'response_time_spike',
928
+ severity: 'warning',
929
+ value: current.responseTime,
930
+ baseline: baseline.responseTime
931
+ });
932
+ }
933
+
934
+ if (current.errorRate > baseline.errorRate + 0.05) {
935
+ anomalies.push({
936
+ type: 'error_rate_increase',
937
+ severity: 'critical',
938
+ value: current.errorRate,
939
+ baseline: baseline.errorRate
940
+ });
941
+ }
942
+
943
+ if (anomalies.length > 0) {
944
+ this.reportAnomalies(service, anomalies);
945
+ }
946
+ }
947
+
948
+ private calculateBaseline(history: PerformanceMetrics[]) {
949
+ const sum = history.reduce((acc, m) => ({
950
+ responseTime: acc.responseTime + m.responseTime,
951
+ errorRate: acc.errorRate + m.errorRate,
952
+ throughput: acc.throughput + m.throughput,
953
+ apdex: acc.apdex + m.apdex
954
+ }), {
955
+ responseTime: 0,
956
+ errorRate: 0,
957
+ throughput: 0,
958
+ apdex: 0
959
+ });
960
+
961
+ return {
962
+ responseTime: sum.responseTime / history.length,
963
+ errorRate: sum.errorRate / history.length,
964
+ throughput: sum.throughput / history.length,
965
+ apdex: sum.apdex / history.length
966
+ };
967
+ }
968
+
969
+ async calculateApdex(service: string, threshold: number = 500) {
970
+ // Apdex = (Satisfied + Tolerating/2) / Total
971
+ const satisfied = await this.countRequests(service, 0, threshold);
972
+ const tolerating = await this.countRequests(service, threshold, threshold * 4);
973
+ const total = await this.getTotalRequests(service);
974
+
975
+ if (total === 0) return 1;
976
+
977
+ return (satisfied + tolerating / 2) / total;
978
+ }
979
+ }
980
+ ```
981
+
982
+ ### 7. Error Recovery Strategies
983
+
984
+ Implement automatic error recovery:
985
+
986
+ **Recovery Manager**
987
+ ```javascript
988
+ // recovery-manager.js
989
+ class RecoveryManager {
990
+ constructor(config) {
991
+ this.strategies = new Map();
992
+ this.retryPolicies = config.retryPolicies || {};
993
+ this.circuitBreakers = new Map();
994
+ this.registerDefaultStrategies();
995
+ }
996
+
997
+ registerStrategy(errorType, strategy) {
998
+ this.strategies.set(errorType, strategy);
999
+ }
1000
+
1001
+ registerDefaultStrategies() {
1002
+ // Network errors
1003
+ this.registerStrategy('NetworkError', async (error, context) => {
1004
+ return this.retryWithBackoff(
1005
+ context.operation,
1006
+ this.retryPolicies.network || {
1007
+ maxRetries: 3,
1008
+ baseDelay: 1000,
1009
+ maxDelay: 10000
1010
+ }
1011
+ );
1012
+ });
1013
+
1014
+ // Database errors
1015
+ this.registerStrategy('DatabaseError', async (error, context) => {
1016
+ // Try read replica if available
1017
+ if (context.operation.type === 'read' && context.readReplicas) {
1018
+ return this.tryReadReplica(context);
1019
+ }
1020
+
1021
+ // Otherwise retry with backoff
1022
+ return this.retryWithBackoff(
1023
+ context.operation,
1024
+ this.retryPolicies.database || {
1025
+ maxRetries: 2,
1026
+ baseDelay: 500,
1027
+ maxDelay: 5000
1028
+ }
1029
+ );
1030
+ });
1031
+
1032
+ // Rate limit errors
1033
+ this.registerStrategy('RateLimitError', async (error, context) => {
1034
+ const retryAfter = error.retryAfter || 60;
1035
+ await this.delay(retryAfter * 1000);
1036
+ return context.operation();
1037
+ });
1038
+
1039
+ // Circuit breaker for external services
1040
+ this.registerStrategy('ExternalServiceError', async (error, context) => {
1041
+ const breaker = this.getCircuitBreaker(context.service);
1042
+
1043
+ try {
1044
+ return await breaker.execute(context.operation);
1045
+ } catch (error) {
1046
+ // Fallback to cache or default
1047
+ if (context.fallback) {
1048
+ return context.fallback();
1049
+ }
1050
+ throw error;
1051
+ }
1052
+ });
1053
+ }
1054
+
1055
+ async recover(error, context) {
1056
+ const errorType = this.classifyError(error);
1057
+ const strategy = this.strategies.get(errorType);
1058
+
1059
+ if (!strategy) {
1060
+ // No recovery strategy, rethrow
1061
+ throw error;
1062
+ }
1063
+
1064
+ try {
1065
+ const result = await strategy(error, context);
1066
+
1067
+ // Log recovery success
1068
+ this.logRecovery(error, errorType, 'success');
1069
+
1070
+ return result;
1071
+ } catch (recoveryError) {
1072
+ // Log recovery failure
1073
+ this.logRecovery(error, errorType, 'failure', recoveryError);
1074
+
1075
+ // Throw original error
1076
+ throw error;
1077
+ }
1078
+ }
1079
+
1080
+ async retryWithBackoff(operation, policy) {
1081
+ let lastError;
1082
+ let delay = policy.baseDelay;
1083
+
1084
+ for (let attempt = 0; attempt < policy.maxRetries; attempt++) {
1085
+ try {
1086
+ return await operation();
1087
+ } catch (error) {
1088
+ lastError = error;
1089
+
1090
+ if (attempt < policy.maxRetries - 1) {
1091
+ await this.delay(delay);
1092
+ delay = Math.min(delay * 2, policy.maxDelay);
1093
+ }
1094
+ }
1095
+ }
1096
+
1097
+ throw lastError;
1098
+ }
1099
+
1100
+ getCircuitBreaker(service) {
1101
+ if (!this.circuitBreakers.has(service)) {
1102
+ this.circuitBreakers.set(service, new CircuitBreaker({
1103
+ timeout: 3000,
1104
+ errorThresholdPercentage: 50,
1105
+ resetTimeout: 30000,
1106
+ rollingCountTimeout: 10000,
1107
+ rollingCountBuckets: 10,
1108
+ volumeThreshold: 10
1109
+ }));
1110
+ }
1111
+
1112
+ return this.circuitBreakers.get(service);
1113
+ }
1114
+
1115
+ classifyError(error) {
1116
+ // Classify by error code
1117
+ if (error.code === 'ECONNREFUSED' || error.code === 'ETIMEDOUT') {
1118
+ return 'NetworkError';
1119
+ }
1120
+
1121
+ if (error.code === 'ER_LOCK_DEADLOCK' || error.code === 'SQLITE_BUSY') {
1122
+ return 'DatabaseError';
1123
+ }
1124
+
1125
+ if (error.status === 429) {
1126
+ return 'RateLimitError';
1127
+ }
1128
+
1129
+ if (error.isExternalService) {
1130
+ return 'ExternalServiceError';
1131
+ }
1132
+
1133
+ // Default
1134
+ return 'UnknownError';
1135
+ }
1136
+ }
1137
+
1138
+ // Circuit breaker implementation
1139
+ class CircuitBreaker {
1140
+ constructor(options) {
1141
+ this.options = options;
1142
+ this.state = 'CLOSED';
1143
+ this.failures = 0;
1144
+ this.successes = 0;
1145
+ this.nextAttempt = Date.now();
1146
+ }
1147
+
1148
+ async execute(operation) {
1149
+ if (this.state === 'OPEN') {
1150
+ if (Date.now() < this.nextAttempt) {
1151
+ throw new Error('Circuit breaker is OPEN');
1152
+ }
1153
+
1154
+ // Try half-open
1155
+ this.state = 'HALF_OPEN';
1156
+ }
1157
+
1158
+ try {
1159
+ const result = await Promise.race([
1160
+ operation(),
1161
+ this.timeout(this.options.timeout)
1162
+ ]);
1163
+
1164
+ this.onSuccess();
1165
+ return result;
1166
+ } catch (error) {
1167
+ this.onFailure();
1168
+ throw error;
1169
+ }
1170
+ }
1171
+
1172
+ onSuccess() {
1173
+ this.failures = 0;
1174
+
1175
+ if (this.state === 'HALF_OPEN') {
1176
+ this.successes++;
1177
+ if (this.successes >= this.options.volumeThreshold) {
1178
+ this.state = 'CLOSED';
1179
+ this.successes = 0;
1180
+ }
1181
+ }
1182
+ }
1183
+
1184
+ onFailure() {
1185
+ this.failures++;
1186
+
1187
+ if (this.state === 'HALF_OPEN') {
1188
+ this.state = 'OPEN';
1189
+ this.nextAttempt = Date.now() + this.options.resetTimeout;
1190
+ } else if (this.failures >= this.options.volumeThreshold) {
1191
+ this.state = 'OPEN';
1192
+ this.nextAttempt = Date.now() + this.options.resetTimeout;
1193
+ }
1194
+ }
1195
+ }
1196
+ ```
1197
+
1198
+ ### 8. Error Dashboard
1199
+
1200
+ Create comprehensive error dashboard:
1201
+
1202
+ **Dashboard Component**
1203
+ ```typescript
1204
+ // error-dashboard.tsx
1205
+ import React from 'react';
1206
+ import { LineChart, BarChart, PieChart } from 'recharts';
1207
+
1208
+ const ErrorDashboard: React.FC = () => {
1209
+ const [metrics, setMetrics] = useState<DashboardMetrics>();
1210
+ const [timeRange, setTimeRange] = useState('1h');
1211
+
1212
+ useEffect(() => {
1213
+ const fetchMetrics = async () => {
1214
+ const data = await getErrorMetrics(timeRange);
1215
+ setMetrics(data);
1216
+ };
1217
+
1218
+ fetchMetrics();
1219
+ const interval = setInterval(fetchMetrics, 30000); // Update every 30s
1220
+
1221
+ return () => clearInterval(interval);
1222
+ }, [timeRange]);
1223
+
1224
+ if (!metrics) return <Loading />;
1225
+
1226
+ return (
1227
+ <div className="error-dashboard">
1228
+ <Header>
1229
+ <h1>Error Tracking Dashboard</h1>
1230
+ <TimeRangeSelector
1231
+ value={timeRange}
1232
+ onChange={setTimeRange}
1233
+ options={['1h', '6h', '24h', '7d', '30d']}
1234
+ />
1235
+ </Header>
1236
+
1237
+ <MetricCards>
1238
+ <MetricCard
1239
+ title="Error Rate"
1240
+ value={`${(metrics.errorRate * 100).toFixed(2)}%`}
1241
+ trend={metrics.errorRateTrend}
1242
+ status={metrics.errorRate > 0.05 ? 'critical' : 'ok'}
1243
+ />
1244
+ <MetricCard
1245
+ title="Total Errors"
1246
+ value={metrics.totalErrors.toLocaleString()}
1247
+ trend={metrics.errorsTrend}
1248
+ />
1249
+ <MetricCard
1250
+ title="Affected Users"
1251
+ value={metrics.affectedUsers.toLocaleString()}
1252
+ trend={metrics.usersTrend}
1253
+ />
1254
+ <MetricCard
1255
+ title="MTTR"
1256
+ value={formatDuration(metrics.mttr)}
1257
+ trend={metrics.mttrTrend}
1258
+ />
1259
+ </MetricCards>
1260
+
1261
+ <ChartGrid>
1262
+ <ChartCard title="Error Trend">
1263
+ <LineChart data={metrics.errorTrend}>
1264
+ <Line
1265
+ type="monotone"
1266
+ dataKey="errors"
1267
+ stroke="#ff6b6b"
1268
+ strokeWidth={2}
1269
+ />
1270
+ <Line
1271
+ type="monotone"
1272
+ dataKey="warnings"
1273
+ stroke="#ffd93d"
1274
+ strokeWidth={2}
1275
+ />
1276
+ </LineChart>
1277
+ </ChartCard>
1278
+
1279
+ <ChartCard title="Error Distribution">
1280
+ <PieChart data={metrics.errorDistribution}>
1281
+ <Pie
1282
+ dataKey="count"
1283
+ nameKey="type"
1284
+ cx="50%"
1285
+ cy="50%"
1286
+ outerRadius={80}
1287
+ />
1288
+ </PieChart>
1289
+ </ChartCard>
1290
+
1291
+ <ChartCard title="Top Errors">
1292
+ <BarChart data={metrics.topErrors}>
1293
+ <Bar dataKey="count" fill="#ff6b6b" />
1294
+ </BarChart>
1295
+ </ChartCard>
1296
+
1297
+ <ChartCard title="Error Heatmap">
1298
+ <ErrorHeatmap data={metrics.errorHeatmap} />
1299
+ </ChartCard>
1300
+ </ChartGrid>
1301
+
1302
+ <ErrorList>
1303
+ <h2>Recent Errors</h2>
1304
+ <ErrorTable
1305
+ errors={metrics.recentErrors}
1306
+ onErrorClick={handleErrorClick}
1307
+ />
1308
+ </ErrorList>
1309
+
1310
+ <AlertsSection>
1311
+ <h2>Active Alerts</h2>
1312
+ <AlertsList alerts={metrics.activeAlerts} />
1313
+ </AlertsSection>
1314
+ </div>
1315
+ );
1316
+ };
1317
+
1318
+ // Real-time error stream
1319
+ const ErrorStream: React.FC = () => {
1320
+ const [errors, setErrors] = useState<ErrorEvent[]>([]);
1321
+
1322
+ useEffect(() => {
1323
+ const eventSource = new EventSource('/api/errors/stream');
1324
+
1325
+ eventSource.onmessage = (event) => {
1326
+ const error = JSON.parse(event.data);
1327
+ setErrors(prev => [error, ...prev].slice(0, 100));
1328
+ };
1329
+
1330
+ return () => eventSource.close();
1331
+ }, []);
1332
+
1333
+ return (
1334
+ <div className="error-stream">
1335
+ <h3>Live Error Stream</h3>
1336
+ <div className="stream-container">
1337
+ {errors.map((error, index) => (
1338
+ <ErrorStreamItem
1339
+ key={error.id}
1340
+ error={error}
1341
+ isNew={index === 0}
1342
+ />
1343
+ ))}
1344
+ </div>
1345
+ </div>
1346
+ );
1347
+ };
1348
+ ```
1349
+
1350
+ ## Output Format
1351
+
1352
+ 1. **Error Tracking Analysis**: Current error handling assessment
1353
+ 2. **Integration Configuration**: Setup for error tracking services
1354
+ 3. **Logging Implementation**: Structured logging setup
1355
+ 4. **Alert Rules**: Intelligent alerting configuration
1356
+ 5. **Error Grouping**: Deduplication and grouping logic
1357
+ 6. **Recovery Strategies**: Automatic error recovery implementation
1358
+ 7. **Dashboard Setup**: Real-time error monitoring dashboard
1359
+ 8. **Documentation**: Implementation and troubleshooting guide
1360
+
1361
+ Focus on providing comprehensive error visibility, intelligent alerting, and quick error resolution capabilities.