cfsa-antigravity 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 (378) hide show
  1. package/bin/cli.mjs +324 -0
  2. package/package.json +34 -0
  3. package/template/.agent/instructions/commands.md +48 -0
  4. package/template/.agent/instructions/patterns.md +61 -0
  5. package/template/.agent/instructions/structure.md +29 -0
  6. package/template/.agent/instructions/tech-stack.md +43 -0
  7. package/template/.agent/instructions/workflow.md +41 -0
  8. package/template/.agent/kit-sync.md +15 -0
  9. package/template/.agent/rules/boundary-not-placeholder.md +146 -0
  10. package/template/.agent/rules/completion-checklist.md +48 -0
  11. package/template/.agent/rules/decision-classification.md +103 -0
  12. package/template/.agent/rules/extensibility.md +47 -0
  13. package/template/.agent/rules/question-vs-command.md +81 -0
  14. package/template/.agent/rules/security-first.md +43 -0
  15. package/template/.agent/rules/specificity-standards.md +54 -0
  16. package/template/.agent/rules/tdd-contract-first.md +57 -0
  17. package/template/.agent/rules/vertical-slices.md +42 -0
  18. package/template/.agent/skill-library/MANIFEST.md +480 -0
  19. package/template/.agent/skill-library/README.md +38 -0
  20. package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
  21. package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
  22. package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
  23. package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
  24. package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
  25. package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
  26. package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
  27. package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
  28. package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
  29. package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
  30. package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
  31. package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
  32. package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
  33. package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
  34. package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
  35. package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
  36. package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
  37. package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
  38. package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
  39. package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
  40. package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
  41. package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
  42. package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
  43. package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
  44. package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
  45. package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
  46. package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
  47. package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
  48. package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
  49. package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
  50. package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
  51. package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
  52. package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
  53. package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
  54. package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
  55. package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
  56. package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
  57. package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
  58. package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
  59. package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
  60. package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
  61. package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
  62. package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
  63. package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
  64. package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
  65. package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
  66. package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
  67. package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
  68. package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
  69. package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
  70. package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
  71. package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
  72. package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
  73. package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
  74. package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
  75. package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
  76. package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
  77. package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
  78. package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
  79. package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
  80. package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
  81. package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
  82. package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
  83. package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
  84. package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
  85. package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
  86. package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
  87. package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
  88. package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
  89. package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
  90. package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
  91. package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
  92. package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
  93. package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
  94. package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
  95. package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
  96. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
  97. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
  98. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
  99. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
  100. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
  101. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
  102. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
  103. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
  104. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
  105. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
  106. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
  107. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
  108. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
  109. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
  110. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
  111. package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
  112. package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
  113. package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
  114. package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
  115. package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
  116. package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
  117. package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
  118. package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
  119. package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
  120. package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
  121. package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
  122. package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
  123. package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
  124. package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
  125. package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
  126. package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
  127. package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
  128. package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
  129. package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
  130. package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
  131. package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
  132. package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
  133. package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
  134. package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
  135. package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
  136. package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
  137. package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
  138. package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
  139. package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
  140. package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
  141. package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
  142. package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
  143. package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
  144. package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
  145. package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
  146. package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
  147. package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
  148. package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
  149. package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
  150. package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
  151. package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
  152. package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
  153. package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
  154. package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
  155. package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
  156. package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
  157. package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
  158. package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
  159. package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
  160. package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
  161. package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
  162. package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
  163. package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
  164. package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
  165. package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
  166. package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
  167. package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
  168. package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
  169. package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
  170. package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
  171. package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
  172. package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
  173. package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
  174. package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
  175. package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
  176. package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
  177. package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
  178. package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
  179. package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
  180. package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
  181. package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
  182. package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
  183. package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
  184. package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
  185. package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
  186. package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
  187. package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
  188. package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
  189. package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
  190. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
  191. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
  192. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
  193. package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
  194. package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
  195. package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
  196. package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
  197. package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
  198. package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
  199. package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
  200. package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
  201. package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
  202. package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
  203. package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
  204. package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
  205. package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
  206. package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
  207. package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
  208. package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
  209. package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
  210. package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
  211. package/template/.agent/skills/accessibility/SKILL.md +522 -0
  212. package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
  213. package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
  214. package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
  215. package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
  216. package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
  217. package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  218. package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
  219. package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  220. package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
  221. package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  222. package/template/.agent/skills/api-versioning/SKILL.md +420 -0
  223. package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
  224. package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
  225. package/template/.agent/skills/brainstorming/SKILL.md +236 -0
  226. package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
  227. package/template/.agent/skills/clean-code/SKILL.md +94 -0
  228. package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
  229. package/template/.agent/skills/concise-planning/SKILL.md +68 -0
  230. package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
  231. package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
  232. package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
  233. package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
  234. package/template/.agent/skills/design-direction/SKILL.md +45 -0
  235. package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
  236. package/template/.agent/skills/find-skills/SKILL.md +145 -0
  237. package/template/.agent/skills/git-advanced/SKILL.md +972 -0
  238. package/template/.agent/skills/git-workflow/SKILL.md +420 -0
  239. package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
  240. package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
  241. package/template/.agent/skills/migration-management/SKILL.md +384 -0
  242. package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
  243. package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
  244. package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
  245. package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
  246. package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
  247. package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
  248. package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
  249. package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
  250. package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
  251. package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
  252. package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
  253. package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
  254. package/template/.agent/skills/prd-templates/SKILL.md +88 -0
  255. package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
  256. package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
  257. package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
  258. package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
  259. package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
  260. package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
  261. package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
  262. package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
  263. package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
  264. package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
  265. package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
  266. package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
  267. package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
  268. package/template/.agent/skills/prompt-engineer/README.md +659 -0
  269. package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
  270. package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
  271. package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
  272. package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
  273. package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
  274. package/template/.agent/skills/session-continuity/SKILL.md +730 -0
  275. package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
  276. package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
  277. package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
  278. package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
  279. package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
  280. package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
  281. package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
  282. package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
  283. package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
  284. package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
  285. package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
  286. package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
  287. package/template/.agent/skills/skill-creator/README.md +270 -0
  288. package/template/.agent/skills/skill-creator/SKILL.md +590 -0
  289. package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
  290. package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
  291. package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
  292. package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
  293. package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
  294. package/template/.agent/skills/spec-writing/SKILL.md +110 -0
  295. package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
  296. package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
  297. package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  298. package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
  299. package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
  300. package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
  301. package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
  302. package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
  303. package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
  304. package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
  305. package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
  306. package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
  307. package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
  308. package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
  309. package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
  310. package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
  311. package/template/.agent/skills/technical-writer/SKILL.md +242 -0
  312. package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
  313. package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
  314. package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
  315. package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
  316. package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
  317. package/template/.agent/workflows/audit-ambiguity.md +64 -0
  318. package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
  319. package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
  320. package/template/.agent/workflows/bootstrap-agents.md +66 -0
  321. package/template/.agent/workflows/create-prd-architecture.md +119 -0
  322. package/template/.agent/workflows/create-prd-compile.md +138 -0
  323. package/template/.agent/workflows/create-prd-design-system.md +135 -0
  324. package/template/.agent/workflows/create-prd-security.md +113 -0
  325. package/template/.agent/workflows/create-prd-stack.md +91 -0
  326. package/template/.agent/workflows/create-prd.md +168 -0
  327. package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
  328. package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
  329. package/template/.agent/workflows/decompose-architecture.md +111 -0
  330. package/template/.agent/workflows/evolve-contract.md +98 -0
  331. package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
  332. package/template/.agent/workflows/evolve-feature-classify.md +116 -0
  333. package/template/.agent/workflows/evolve-feature.md +56 -0
  334. package/template/.agent/workflows/ideate-discover.md +144 -0
  335. package/template/.agent/workflows/ideate-extract.md +129 -0
  336. package/template/.agent/workflows/ideate-validate.md +117 -0
  337. package/template/.agent/workflows/ideate.md +113 -0
  338. package/template/.agent/workflows/implement-slice-setup.md +113 -0
  339. package/template/.agent/workflows/implement-slice-tdd.md +198 -0
  340. package/template/.agent/workflows/implement-slice.md +50 -0
  341. package/template/.agent/workflows/plan-phase.md +202 -0
  342. package/template/.agent/workflows/propagate-decision-apply.md +135 -0
  343. package/template/.agent/workflows/propagate-decision-scan.md +147 -0
  344. package/template/.agent/workflows/propagate-decision.md +56 -0
  345. package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
  346. package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
  347. package/template/.agent/workflows/remediate-pipeline.md +55 -0
  348. package/template/.agent/workflows/resolve-ambiguity.md +82 -0
  349. package/template/.agent/workflows/sync-kit.md +209 -0
  350. package/template/.agent/workflows/update-architecture-map.md +74 -0
  351. package/template/.agent/workflows/validate-phase.md +219 -0
  352. package/template/.agent/workflows/verify-infrastructure.md +207 -0
  353. package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
  354. package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
  355. package/template/.agent/workflows/write-architecture-spec.md +63 -0
  356. package/template/.agent/workflows/write-be-spec-classify.md +165 -0
  357. package/template/.agent/workflows/write-be-spec-write.md +98 -0
  358. package/template/.agent/workflows/write-be-spec.md +76 -0
  359. package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
  360. package/template/.agent/workflows/write-fe-spec-write.md +94 -0
  361. package/template/.agent/workflows/write-fe-spec.md +71 -0
  362. package/template/AGENTS.md +176 -0
  363. package/template/GEMINI.md +177 -0
  364. package/template/docs/README.md +187 -0
  365. package/template/docs/audits/.gitkeep +0 -0
  366. package/template/docs/audits/README.md +10 -0
  367. package/template/docs/plans/.gitkeep +0 -0
  368. package/template/docs/plans/README.md +21 -0
  369. package/template/docs/plans/be/.gitkeep +0 -0
  370. package/template/docs/plans/be/README.md +11 -0
  371. package/template/docs/plans/fe/.gitkeep +0 -0
  372. package/template/docs/plans/fe/README.md +11 -0
  373. package/template/docs/plans/ia/.gitkeep +0 -0
  374. package/template/docs/plans/ia/README.md +17 -0
  375. package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
  376. package/template/docs/plans/ia/deep-dives/README.md +5 -0
  377. package/template/docs/plans/phases/.gitkeep +0 -0
  378. package/template/docs/plans/phases/README.md +11 -0
@@ -0,0 +1,246 @@
1
+ ---
2
+ name: prometheus-grafana
3
+ description: |
4
+ Set up Prometheus for metrics collection and Grafana for visualization. Use when: defining Prometheus metric types (counter, gauge, histogram, summary), writing PromQL queries, configuring scrape targets, setting up alerting rules and Alertmanager, creating Grafana dashboards, configuring data sources, or implementing recording rules and federation.
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # Prometheus & Grafana
9
+
10
+ **Status**: Production Ready
11
+ **Last Updated**: 2026-02-24
12
+
13
+ ---
14
+
15
+ ## Description
16
+
17
+ Prometheus is a pull-based metrics collection and alerting system. Grafana is a visualization platform that queries Prometheus (and other data sources) to build dashboards. Together they form the most widely deployed open-source monitoring stack.
18
+
19
+ ## When to Use
20
+
21
+ - Defining Prometheus metric types (counter, gauge, histogram, summary)
22
+ - Writing PromQL queries for dashboards and alerts
23
+ - Configuring Prometheus scrape targets
24
+ - Setting up alerting rules and Alertmanager
25
+ - Creating Grafana dashboards and panels
26
+ - Configuring Grafana data sources
27
+ - Implementing visualization best practices
28
+ - Creating recording rules for query performance
29
+ - Setting up Prometheus federation or remote write
30
+
31
+ ---
32
+
33
+ ## Key Concepts
34
+
35
+ ### Prometheus Metric Types
36
+
37
+ | Type | Purpose | Example |
38
+ |------|---------|---------|
39
+ | **Counter** | Monotonically increasing value | Total HTTP requests, errors |
40
+ | **Gauge** | Value that can go up or down | Current temperature, queue depth |
41
+ | **Histogram** | Distribution of values in configurable buckets | Request latency, response size |
42
+ | **Summary** | Distribution with pre-calculated quantiles | Request latency at p50, p90, p99 |
43
+
44
+ ### PromQL
45
+
46
+ PromQL is Prometheus's query language for selecting, aggregating, and transforming time-series data.
47
+
48
+ ### Scrape Model
49
+
50
+ Prometheus **pulls** metrics from targets at configured intervals. Targets expose metrics at an HTTP endpoint (typically `/metrics`) in Prometheus text format.
51
+
52
+ ### Alertmanager
53
+
54
+ Alertmanager receives alerts from Prometheus, deduplicates, groups, routes, and delivers notifications via email, Slack, PagerDuty, etc.
55
+
56
+ ---
57
+
58
+ ## Best Practices
59
+
60
+ 1. **Use histograms over summaries** — histograms are aggregatable across instances, summaries are not
61
+ 2. **Choose meaningful bucket boundaries** — align with SLO thresholds (e.g., 50ms, 100ms, 250ms, 500ms, 1s, 5s)
62
+ 3. **Use recording rules for expensive queries** — pre-compute frequently used aggregations
63
+ 4. **Label carefully** — avoid high-cardinality labels (user IDs, request IDs)
64
+ 5. **Set up alerting on symptoms, not causes** — alert on error rate and latency, investigate causes in dashboards
65
+ 6. **Use Grafana variables** — make dashboards reusable across services and environments
66
+ 7. **Set scrape intervals appropriately** — 15s default; lower for critical services, higher for batch jobs
67
+ 8. **Use federation or remote write for multi-cluster** — avoid single-Prometheus bottlenecks
68
+
69
+ ---
70
+
71
+ ## Common Patterns
72
+
73
+ ### Prometheus Configuration
74
+
75
+ ```yaml
76
+ # prometheus.yml
77
+ global:
78
+ scrape_interval: 15s
79
+ evaluation_interval: 15s
80
+
81
+ rule_files:
82
+ - "rules/*.yml"
83
+
84
+ alerting:
85
+ alertmanagers:
86
+ - static_configs:
87
+ - targets: ["alertmanager:9093"]
88
+
89
+ scrape_configs:
90
+ - job_name: "my-service"
91
+ static_configs:
92
+ - targets: ["app:3000"]
93
+ metrics_path: /metrics
94
+ scrape_interval: 10s
95
+ ```
96
+
97
+ ### Alerting Rules
98
+
99
+ ```yaml
100
+ # rules/alerts.yml
101
+ groups:
102
+ - name: my-service
103
+ rules:
104
+ - alert: HighErrorRate
105
+ expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05
106
+ for: 5m
107
+ labels:
108
+ severity: critical
109
+ annotations:
110
+ summary: "High error rate on {{ $labels.instance }}"
111
+ description: "Error rate is {{ $value | humanizePercentage }} over the last 5 minutes."
112
+
113
+ - alert: HighLatency
114
+ expr: histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m])) > 1.0
115
+ for: 5m
116
+ labels:
117
+ severity: warning
118
+ annotations:
119
+ summary: "P99 latency above 1s on {{ $labels.instance }}"
120
+ ```
121
+
122
+ ### Recording Rules
123
+
124
+ ```yaml
125
+ # rules/recording.yml
126
+ groups:
127
+ - name: my-service-recording
128
+ rules:
129
+ - record: job:http_requests:rate5m
130
+ expr: rate(http_requests_total[5m])
131
+
132
+ - record: job:http_request_duration:p99_5m
133
+ expr: histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
134
+ ```
135
+
136
+ ### Node.js Prometheus Client
137
+
138
+ ```typescript
139
+ import { Registry, Counter, Histogram, collectDefaultMetrics } from "prom-client";
140
+
141
+ const register = new Registry();
142
+ collectDefaultMetrics({ register });
143
+
144
+ const httpRequestsTotal = new Counter({
145
+ name: "http_requests_total",
146
+ help: "Total HTTP requests",
147
+ labelNames: ["method", "route", "status"],
148
+ registers: [register],
149
+ });
150
+
151
+ const httpRequestDuration = new Histogram({
152
+ name: "http_request_duration_seconds",
153
+ help: "HTTP request duration in seconds",
154
+ labelNames: ["method", "route"],
155
+ buckets: [0.01, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10],
156
+ registers: [register],
157
+ });
158
+
159
+ // Expose /metrics endpoint
160
+ app.get("/metrics", async (req, res) => {
161
+ res.set("Content-Type", register.contentType);
162
+ res.end(await register.metrics());
163
+ });
164
+ ```
165
+
166
+ ### PromQL Query Examples
167
+
168
+ ```promql
169
+ # Request rate per second
170
+ rate(http_requests_total[5m])
171
+
172
+ # Error rate percentage
173
+ rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) * 100
174
+
175
+ # P99 latency
176
+ histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
177
+
178
+ # Aggregate across instances
179
+ sum by (route) (rate(http_requests_total[5m]))
180
+
181
+ # Top 5 endpoints by request rate
182
+ topk(5, sum by (route) (rate(http_requests_total[5m])))
183
+ ```
184
+
185
+ ### Grafana Dashboard JSON (Panel)
186
+
187
+ ```json
188
+ {
189
+ "title": "Request Rate",
190
+ "type": "timeseries",
191
+ "targets": [
192
+ {
193
+ "expr": "sum by (route) (rate(http_requests_total{env=\"$env\"}[5m]))",
194
+ "legendFormat": "{{ route }}"
195
+ }
196
+ ]
197
+ }
198
+ ```
199
+
200
+ ### Docker Compose Setup
201
+
202
+ ```yaml
203
+ services:
204
+ prometheus:
205
+ image: prom/prometheus:latest
206
+ volumes:
207
+ - ./prometheus.yml:/etc/prometheus/prometheus.yml
208
+ - ./rules:/etc/prometheus/rules
209
+ ports:
210
+ - "9090:9090"
211
+
212
+ grafana:
213
+ image: grafana/grafana:latest
214
+ environment:
215
+ GF_SECURITY_ADMIN_PASSWORD: "admin"
216
+ ports:
217
+ - "3001:3000"
218
+ volumes:
219
+ - grafana-data:/var/lib/grafana
220
+
221
+ alertmanager:
222
+ image: prom/alertmanager:latest
223
+ ports:
224
+ - "9093:9093"
225
+
226
+ volumes:
227
+ grafana-data:
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Anti-Patterns
233
+
234
+ | Anti-Pattern | Why It Hurts | Correct Approach |
235
+ |---|---|---|
236
+ | High-cardinality labels | Metric cardinality explosion, OOM on Prometheus | Use bounded label values (HTTP status, service name) |
237
+ | Using summaries when aggregation is needed | Cannot aggregate quantiles across instances | Use histograms — they are aggregatable |
238
+ | No recording rules for dashboard queries | Slow dashboard loads, high Prometheus CPU | Pre-compute common aggregations with recording rules |
239
+ | Alerting on single data points | Flapping alerts, false positives | Use `for` duration (e.g., `for: 5m`) |
240
+ | Unbounded scrape targets | Prometheus overloaded | Use service discovery with relabeling to filter targets |
241
+ | No retention policy | Disk fills up | Set `--storage.tsdb.retention.time` (15d–90d typical) |
242
+ | Grafana dashboards without variables | One dashboard per environment/service | Use template variables for `env`, `service`, `instance` |
243
+
244
+ ---
245
+
246
+ **Last verified**: 2026-02-24 | **Skill version**: 1.0.0
@@ -0,0 +1,158 @@
1
+ ---
2
+ name: python-observability
3
+ description: |
4
+ Set up observability for Python applications with structlog, OpenTelemetry Python SDK, and Prometheus client. Use when: configuring structlog for structured logging, auto-instrumenting Flask/FastAPI/Django, creating custom spans and metrics in Python, or managing correlation IDs in async contexts.
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # Python Observability
9
+
10
+ **Status**: Production Ready
11
+ **Last Updated**: 2026-02-24
12
+
13
+ ---
14
+
15
+ ## Description
16
+
17
+ Python observability covers structured logging with structlog, distributed tracing and metrics with the OpenTelemetry Python SDK, and metrics exposition with the Prometheus client. This skill addresses auto-instrumentation for popular frameworks and best practices for async context management.
18
+
19
+ ## When to Use
20
+
21
+ - Setting up structlog for structured JSON logging
22
+ - Configuring the OpenTelemetry Python SDK
23
+ - Auto-instrumenting Flask, FastAPI, or Django
24
+ - Creating custom spans and metrics in Python
25
+ - Integrating the Prometheus client for Python
26
+ - Configuring Python logging best practices
27
+ - Managing correlation IDs in async (asyncio) contexts
28
+
29
+ ---
30
+
31
+ ## Key Concepts
32
+
33
+ ### structlog
34
+
35
+ structlog provides structured, composable logging for Python. It wraps the standard library `logging` module and outputs JSON by default in production.
36
+
37
+ ### OpenTelemetry Python SDK
38
+
39
+ The `opentelemetry-sdk` package provides tracing, metrics, and logging for Python applications. Auto-instrumentation packages exist for Flask, FastAPI, Django, SQLAlchemy, requests, and more.
40
+
41
+ ### Prometheus Client
42
+
43
+ The `prometheus_client` library exposes metrics in Prometheus format via an HTTP endpoint. It supports counters, gauges, histograms, and summaries.
44
+
45
+ ### Async Context
46
+
47
+ Python's `contextvars` module provides context propagation across async boundaries, which OpenTelemetry uses to maintain trace context in asyncio-based applications.
48
+
49
+ ---
50
+
51
+ ## Best Practices
52
+
53
+ 1. **Use structlog for all logging** — structured JSON output, composable processors, stdlib integration
54
+ 2. **Auto-instrument before manual instrumentation** — install the relevant `opentelemetry-instrumentation-*` packages first
55
+ 3. **Configure via environment variables** — use `OTEL_SERVICE_NAME`, `OTEL_EXPORTER_OTLP_ENDPOINT`, etc.
56
+ 4. **Use `contextvars` for correlation IDs** — thread-safe and asyncio-compatible
57
+ 5. **Expose Prometheus metrics at `/metrics`** — use the built-in HTTP server or framework integration
58
+ 6. **Redact PII in log processors** — add a structlog processor that strips sensitive fields
59
+ 7. **Set appropriate log levels** — `INFO` in production, `DEBUG` in development
60
+ 8. **Use batch span processors** — batch export reduces overhead in production
61
+
62
+ ---
63
+
64
+ ## Common Patterns
65
+
66
+ ### structlog Setup
67
+
68
+ ```python
69
+ import structlog
70
+
71
+ structlog.configure(
72
+ processors=[
73
+ structlog.contextvars.merge_contextvars,
74
+ structlog.processors.add_log_level,
75
+ structlog.processors.TimeStamper(fmt="iso"),
76
+ structlog.processors.StackInfoRenderer(),
77
+ structlog.processors.format_exc_info,
78
+ structlog.processors.JSONRenderer(),
79
+ ],
80
+ wrapper_class=structlog.make_filtering_bound_logger(logging.INFO),
81
+ context_class=dict,
82
+ logger_factory=structlog.PrintLoggerFactory(),
83
+ cache_logger_on_first_use=True,
84
+ )
85
+
86
+ logger = structlog.get_logger()
87
+ logger.info("order_placed", order_id="abc-123", total=49.99)
88
+ ```
89
+
90
+ ### OpenTelemetry Auto-Instrumentation (FastAPI)
91
+
92
+ ```bash
93
+ pip install opentelemetry-sdk opentelemetry-exporter-otlp \
94
+ opentelemetry-instrumentation-fastapi \
95
+ opentelemetry-instrumentation-httpx
96
+ ```
97
+
98
+ ```python
99
+ from opentelemetry import trace
100
+ from opentelemetry.sdk.trace import TracerProvider
101
+ from opentelemetry.sdk.trace.export import BatchSpanProcessor
102
+ from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
103
+ from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
104
+
105
+ provider = TracerProvider()
106
+ provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
107
+ trace.set_tracer_provider(provider)
108
+
109
+ app = FastAPI()
110
+ FastAPIInstrumentor.instrument_app(app)
111
+ ```
112
+
113
+ ### Custom Span
114
+
115
+ ```python
116
+ from opentelemetry import trace
117
+
118
+ tracer = trace.get_tracer("my-service")
119
+
120
+ async def process_order(order_id: str):
121
+ with tracer.start_as_current_span("process-order") as span:
122
+ span.set_attribute("order.id", order_id)
123
+ result = await do_work(order_id)
124
+ return result
125
+ ```
126
+
127
+ ### Prometheus Metrics
128
+
129
+ ```python
130
+ from prometheus_client import Counter, Histogram, start_http_server
131
+
132
+ REQUEST_COUNT = Counter("http_requests_total", "Total HTTP requests", ["method", "endpoint"])
133
+ REQUEST_LATENCY = Histogram("http_request_duration_seconds", "HTTP request latency", ["method", "endpoint"])
134
+
135
+ start_http_server(9090) # Expose /metrics on port 9090
136
+
137
+ # Usage
138
+ REQUEST_COUNT.labels(method="GET", endpoint="/api/users").inc()
139
+ with REQUEST_LATENCY.labels(method="GET", endpoint="/api/users").time():
140
+ handle_request()
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Anti-Patterns
146
+
147
+ | Anti-Pattern | Why It Hurts | Correct Approach |
148
+ |---|---|---|
149
+ | Using `print()` for logging | No structure, no levels, no redaction | Use structlog or standard logging |
150
+ | Manual instrumentation before auto | Duplicated effort, inconsistent coverage | Install auto-instrumentation packages first |
151
+ | Hardcoded OTLP endpoints | Inflexible across environments | Use `OTEL_EXPORTER_OTLP_ENDPOINT` env var |
152
+ | Ignoring `contextvars` in async code | Lost trace context across await boundaries | Use `contextvars`-aware context propagation |
153
+ | No batch processing for spans | High overhead per-span export | Use `BatchSpanProcessor` |
154
+ | Logging full request bodies | PII exposure, excessive volume | Log only essential fields |
155
+
156
+ ---
157
+
158
+ **Last verified**: 2026-02-24 | **Skill version**: 1.0.0