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,140 @@
1
+ ---
2
+ name: distributed-tracing
3
+ description: |
4
+ Implement distributed tracing across microservices with Jaeger, Zipkin, and W3C TraceContext. Use when: setting up trace propagation, configuring Jaeger or Zipkin, understanding span relationships, choosing sampling strategies, or correlating traces with logs and metrics.
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # Distributed Tracing
9
+
10
+ **Status**: Production Ready
11
+ **Last Updated**: 2026-02-24
12
+
13
+ ---
14
+
15
+ ## Description
16
+
17
+ Distributed tracing tracks requests as they flow through multiple services, providing end-to-end visibility into latency, errors, and dependencies. It is essential for debugging and performance optimization in microservice architectures.
18
+
19
+ ## When to Use
20
+
21
+ - Setting up trace propagation (W3C TraceContext, B3)
22
+ - Configuring Jaeger for trace collection and visualization
23
+ - Configuring Zipkin for trace collection and visualization
24
+ - Understanding span relationships (parent/child, follows-from)
25
+ - Choosing between head-based and tail-based sampling
26
+ - Planning trace storage and retention policies
27
+ - Correlating traces with logs and metrics
28
+
29
+ ---
30
+
31
+ ## Key Concepts
32
+
33
+ ### Trace Propagation Formats
34
+
35
+ | Format | Standard | Use Case |
36
+ |--------|----------|----------|
37
+ | **W3C TraceContext** | W3C Recommendation | Default for OpenTelemetry, broadly supported |
38
+ | **B3** | Zipkin | Legacy Zipkin ecosystems, broad language support |
39
+ | **Jaeger** | Jaeger-specific | Jaeger-native environments (being deprecated in favor of W3C) |
40
+
41
+ ### Span Relationships
42
+
43
+ | Relationship | Meaning |
44
+ |---|---|
45
+ | **ChildOf** | The parent span depends on the child span's result |
46
+ | **FollowsFrom** | The parent span does not depend on the child (fire-and-forget) |
47
+
48
+ ### Sampling Strategies
49
+
50
+ | Strategy | Description | Trade-off |
51
+ |----------|-------------|-----------|
52
+ | **Head-based** | Decision made at trace start | Simple, but may miss interesting traces |
53
+ | **Tail-based** | Decision made after trace completes | Captures errors/slow traces, but requires buffering |
54
+ | **Adaptive** | Adjusts rate based on traffic volume | Balances cost and coverage |
55
+
56
+ ---
57
+
58
+ ## Best Practices
59
+
60
+ 1. **Use W3C TraceContext** — it is the industry standard and supported by all major tracing backends
61
+ 2. **Propagate context through all transport layers** — HTTP headers, message queue metadata, gRPC metadata
62
+ 3. **Set span names to describe the operation** — `POST /api/orders` not `handler`
63
+ 4. **Record errors on spans** — set span status to ERROR and call `recordException`
64
+ 5. **Use tail-based sampling for production** — capture all error and high-latency traces while sampling normal traffic
65
+ 6. **Correlate traces with logs** — inject `trace_id` and `span_id` into log records for cross-signal navigation
66
+ 7. **Set retention policies** — keep error traces longer than normal traces to support incident investigation
67
+ 8. **Monitor trace pipeline health** — alert on dropped spans, exporter failures, and collector queue depth
68
+
69
+ ---
70
+
71
+ ## Common Patterns
72
+
73
+ ### Jaeger Setup (Docker Compose)
74
+
75
+ ```yaml
76
+ services:
77
+ jaeger:
78
+ image: jaegertracing/all-in-one:latest
79
+ ports:
80
+ - "16686:16686" # Jaeger UI
81
+ - "4317:4317" # OTLP gRPC
82
+ - "4318:4318" # OTLP HTTP
83
+ environment:
84
+ COLLECTOR_OTLP_ENABLED: "true"
85
+ ```
86
+
87
+ ### Zipkin Setup (Docker Compose)
88
+
89
+ ```yaml
90
+ services:
91
+ zipkin:
92
+ image: openzipkin/zipkin:latest
93
+ ports:
94
+ - "9411:9411" # Zipkin UI + API
95
+ ```
96
+
97
+ ### W3C TraceContext Header
98
+
99
+ ```
100
+ traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
101
+ ```
102
+
103
+ Format: `version-traceId-spanId-traceFlags`
104
+
105
+ ### Correlating Traces with Logs
106
+
107
+ ```typescript
108
+ import { trace, context } from "@opentelemetry/api";
109
+
110
+ function getTraceContext() {
111
+ const span = trace.getActiveSpan();
112
+ if (!span) return {};
113
+ const ctx = span.spanContext();
114
+ return {
115
+ trace_id: ctx.traceId,
116
+ span_id: ctx.spanId,
117
+ trace_flags: ctx.traceFlags,
118
+ };
119
+ }
120
+
121
+ // Inject into structured logs
122
+ logger.info({ ...getTraceContext(), message: "Order processed", orderId });
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Anti-Patterns
128
+
129
+ | Anti-Pattern | Why It Hurts | Correct Approach |
130
+ |---|---|---|
131
+ | Not propagating context across async boundaries | Broken traces, orphan spans | Use context-aware async utilities |
132
+ | Sampling at 100% in production | Storage costs explode, performance impact | Use 5–20% head-based or tail-based sampling |
133
+ | Generic span names | Cannot filter or search effectively | Use descriptive, route-based span names |
134
+ | Ignoring span status on errors | Errors invisible in trace UI | Always set ERROR status and record exception |
135
+ | No trace-log correlation | Cannot jump from trace to logs | Inject trace_id into all structured logs |
136
+ | Unbounded trace retention | Storage grows without limit | Set retention policies (7–30 days typical) |
137
+
138
+ ---
139
+
140
+ **Last verified**: 2026-02-24 | **Skill version**: 1.0.0
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: logging-best-practices
3
+ description: |
4
+ Implement structured logging with JSON output, log levels, correlation IDs, and log aggregation. Use when: setting up Pino or Winston, configuring log levels (trace/debug/info/warn/error/fatal), adding request tracing, implementing sensitive data redaction, or integrating with ELK or Loki.
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # Logging Best Practices
9
+
10
+ **Status**: Production Ready
11
+ **Last Updated**: 2026-02-24
12
+
13
+ ---
14
+
15
+ ## Description
16
+
17
+ Production-grade logging requires structured output, consistent log levels, request correlation, and PII redaction. This skill covers best practices for Node.js logging with Pino and Winston, log aggregation with ELK and Loki, and performance-conscious logging patterns.
18
+
19
+ ## When to Use
20
+
21
+ - Setting up JSON structured logging
22
+ - Choosing and configuring log levels (trace/debug/info/warn/error/fatal)
23
+ - Adding correlation IDs and request tracing
24
+ - Configuring Pino for high-performance logging
25
+ - Configuring Winston for flexible logging
26
+ - Integrating with log aggregation (ELK stack, Grafana Loki)
27
+ - Implementing sensitive data redaction
28
+ - Optimizing async logging and log sampling for performance
29
+
30
+ ---
31
+
32
+ ## Key Concepts
33
+
34
+ ### Log Levels
35
+
36
+ | Level | When to Use |
37
+ |-------|-------------|
38
+ | **trace** | Extremely detailed diagnostic info (function entry/exit) |
39
+ | **debug** | Diagnostic info useful during development |
40
+ | **info** | Normal operational events (request completed, job finished) |
41
+ | **warn** | Unexpected but recoverable situations (deprecation, retry) |
42
+ | **error** | Failures that need attention (unhandled exception, external service down) |
43
+ | **fatal** | Process cannot continue (missing critical config, OOM) |
44
+
45
+ ### Structured Logging
46
+
47
+ Always log as structured JSON objects, never string-interpolated messages:
48
+
49
+ ```typescript
50
+ // Good — structured, searchable, parseable
51
+ logger.info({ orderId, userId, total: 49.99 }, "Order placed");
52
+
53
+ // Bad — string interpolation, not searchable
54
+ logger.info(`Order ${orderId} placed by user ${userId} for $49.99`);
55
+ ```
56
+
57
+ ### Correlation IDs
58
+
59
+ Every request should carry a unique correlation ID (often called `requestId` or `traceId`) that appears in all log entries for that request. This enables tracing a single request across all log lines.
60
+
61
+ ---
62
+
63
+ ## Best Practices
64
+
65
+ 1. **Use structured JSON output** — every log entry is a JSON object with consistent fields
66
+ 2. **Set log level via environment variable** — `LOG_LEVEL=info` in production, `LOG_LEVEL=debug` in development
67
+ 3. **Include correlation IDs** — generate a UUID per request and inject it into every log entry
68
+ 4. **Redact sensitive data** — never log passwords, tokens, PII, or full credit card numbers
69
+ 5. **Log at the right level** — `info` for business events, `error` for failures, `debug` for diagnostics
70
+ 6. **Use child loggers** — create child loggers with request-scoped context to avoid passing IDs everywhere
71
+ 7. **Avoid logging in hot loops** — log sampling or rate-limiting prevents performance degradation
72
+ 8. **Set up log rotation** — prevent disk exhaustion with size or time-based rotation
73
+
74
+ ---
75
+
76
+ ## Common Patterns
77
+
78
+ ### Pino Setup
79
+
80
+ ```typescript
81
+ import pino from "pino";
82
+
83
+ const logger = pino({
84
+ level: process.env.LOG_LEVEL || "info",
85
+ formatters: {
86
+ level(label) {
87
+ return { level: label };
88
+ },
89
+ },
90
+ redact: {
91
+ paths: ["req.headers.authorization", "req.headers.cookie", "body.password"],
92
+ censor: "[REDACTED]",
93
+ },
94
+ transport:
95
+ process.env.NODE_ENV !== "production"
96
+ ? { target: "pino-pretty", options: { colorize: true } }
97
+ : undefined,
98
+ });
99
+
100
+ export default logger;
101
+ ```
102
+
103
+ ### Winston Setup
104
+
105
+ ```typescript
106
+ import winston from "winston";
107
+
108
+ const logger = winston.createLogger({
109
+ level: process.env.LOG_LEVEL || "info",
110
+ format: winston.format.combine(
111
+ winston.format.timestamp(),
112
+ winston.format.errors({ stack: true }),
113
+ winston.format.json()
114
+ ),
115
+ defaultMeta: { service: "my-service" },
116
+ transports: [new winston.transports.Console()],
117
+ });
118
+
119
+ export default logger;
120
+ ```
121
+
122
+ ### Request Correlation Middleware
123
+
124
+ ```typescript
125
+ import { randomUUID } from "node:crypto";
126
+
127
+ function correlationMiddleware(req, res, next) {
128
+ const requestId = req.headers["x-request-id"] || randomUUID();
129
+ req.log = logger.child({ requestId });
130
+ res.setHeader("x-request-id", requestId);
131
+ next();
132
+ }
133
+ ```
134
+
135
+ ### Sensitive Data Redaction
136
+
137
+ ```typescript
138
+ const redactPaths = [
139
+ "password",
140
+ "token",
141
+ "authorization",
142
+ "cookie",
143
+ "ssn",
144
+ "creditCard",
145
+ "*.password",
146
+ "*.token",
147
+ ];
148
+
149
+ const logger = pino({ redact: { paths: redactPaths, censor: "[REDACTED]" } });
150
+ ```
151
+
152
+ ---
153
+
154
+ ## Anti-Patterns
155
+
156
+ | Anti-Pattern | Why It Hurts | Correct Approach |
157
+ |---|---|---|
158
+ | `console.log` in production | No structure, no levels, no redaction | Use a structured logger (Pino, Winston) |
159
+ | Logging full request/response bodies | PII leaks, huge log volume | Log only essential fields, redact sensitive data |
160
+ | String-interpolated messages | Not searchable, not parseable | Use structured key-value pairs |
161
+ | No correlation IDs | Cannot trace a request across log lines | Generate and propagate requestId |
162
+ | `debug` level in production | Enormous log volume, cost explosion | Use `info` in production, configure via env var |
163
+ | Synchronous file writes | Blocks event loop, degrades performance | Use async transports or stdout piping |
164
+ | No log rotation | Disk fills up, service crashes | Use logrotate or size-based rotation |
165
+
166
+ ---
167
+
168
+ **Last verified**: 2026-02-24 | **Skill version**: 1.0.0
@@ -0,0 +1,164 @@
1
+ ---
2
+ name: opentelemetry
3
+ description: |
4
+ Set up OpenTelemetry for distributed tracing, metrics, and structured logging with trace correlation. Use when: configuring OpenTelemetry SDK for Node.js/Python/Go/Rust, setting up OTLP exporters, integrating with Jaeger or Zipkin, implementing auto or manual instrumentation, context propagation, or choosing sampling strategies.
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # OpenTelemetry
9
+
10
+ **Status**: Production Ready
11
+ **Last Updated**: 2026-02-24
12
+
13
+ ---
14
+
15
+ ## Description
16
+
17
+ OpenTelemetry (OTel) is the vendor-neutral observability framework for generating, collecting, and exporting telemetry data — traces, metrics, and logs. It provides a single set of APIs, SDKs, and tooling across languages.
18
+
19
+ ## When to Use
20
+
21
+ - Setting up distributed tracing with spans and traces
22
+ - Collecting application metrics (counters, histograms, gauges)
23
+ - Implementing structured logging with trace correlation
24
+ - Configuring the OTel SDK for Node.js, Python, Go, or Rust
25
+ - Setting up exporters (OTLP, Jaeger, Zipkin)
26
+ - Deciding between auto and manual instrumentation
27
+ - Implementing context propagation across service boundaries
28
+ - Choosing head-based vs tail-based sampling strategies
29
+
30
+ ---
31
+
32
+ ## Key Concepts
33
+
34
+ ### Signals
35
+
36
+ | Signal | Purpose | Examples |
37
+ |--------|---------|----------|
38
+ | **Traces** | Request flow across services | HTTP requests, database queries, RPC calls |
39
+ | **Metrics** | Quantitative measurements over time | Request count, latency histogram, CPU gauge |
40
+ | **Logs** | Discrete event records with trace context | Structured JSON logs correlated to spans |
41
+
42
+ ### Core Components
43
+
44
+ - **API** — Stable, vendor-neutral interface for instrumentation
45
+ - **SDK** — Configurable implementation of the API (sampling, export, processing)
46
+ - **Exporters** — Send telemetry to backends (OTLP, Jaeger, Zipkin, Prometheus)
47
+ - **Collector** — Vendor-agnostic proxy for receiving, processing, and exporting telemetry
48
+ - **Instrumentation Libraries** — Auto-instrument common frameworks and libraries
49
+
50
+ ### Context Propagation
51
+
52
+ - W3C TraceContext (default, recommended)
53
+ - B3 (Zipkin compatibility)
54
+ - Baggage for cross-service key-value pairs
55
+
56
+ ### Sampling Strategies
57
+
58
+ | Strategy | When to Use |
59
+ |----------|-------------|
60
+ | **AlwaysOn** | Development, low-traffic services |
61
+ | **AlwaysOff** | Disable tracing entirely |
62
+ | **TraceIdRatioBased** | Production — sample a percentage of traces |
63
+ | **ParentBased** | Respect upstream sampling decisions |
64
+ | **Tail-based (Collector)** | Sample based on completed trace attributes (errors, latency) |
65
+
66
+ ---
67
+
68
+ ## Best Practices
69
+
70
+ 1. **Start with auto-instrumentation** — instrument frameworks and libraries automatically, add manual spans only where needed
71
+ 2. **Use OTLP as the export protocol** — it is the native OTel protocol and supports all three signals
72
+ 3. **Propagate context** — ensure W3C TraceContext headers flow across all service boundaries
73
+ 4. **Set meaningful span names** — use `HTTP GET /api/users` not `span-1`
74
+ 5. **Add semantic attributes** — follow OpenTelemetry semantic conventions for consistent metadata
75
+ 6. **Sample wisely in production** — 5–20% trace sampling is typical; keep error sampling at 100%
76
+ 7. **Use the Collector** — deploy the OTel Collector as a sidecar or gateway to decouple instrumentation from export
77
+ 8. **Correlate logs with traces** — inject `trace_id` and `span_id` into structured log records
78
+
79
+ ---
80
+
81
+ ## Common Patterns
82
+
83
+ ### Node.js SDK Setup
84
+
85
+ ```typescript
86
+ import { NodeSDK } from "@opentelemetry/sdk-node";
87
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
88
+ import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
89
+ import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
90
+ import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
91
+
92
+ const sdk = new NodeSDK({
93
+ serviceName: "my-service",
94
+ traceExporter: new OTLPTraceExporter({ url: "http://localhost:4318/v1/traces" }),
95
+ metricReader: new PeriodicExportingMetricReader({
96
+ exporter: new OTLPMetricExporter({ url: "http://localhost:4318/v1/metrics" }),
97
+ }),
98
+ instrumentations: [getNodeAutoInstrumentations()],
99
+ });
100
+
101
+ sdk.start();
102
+ ```
103
+
104
+ ### Custom Span
105
+
106
+ ```typescript
107
+ import { trace } from "@opentelemetry/api";
108
+
109
+ const tracer = trace.getTracer("my-service");
110
+
111
+ async function processOrder(orderId: string) {
112
+ return tracer.startActiveSpan("process-order", async (span) => {
113
+ span.setAttribute("order.id", orderId);
114
+ try {
115
+ const result = await doWork(orderId);
116
+ span.setStatus({ code: 1 }); // OK
117
+ return result;
118
+ } catch (error) {
119
+ span.setStatus({ code: 2, message: String(error) }); // ERROR
120
+ span.recordException(error as Error);
121
+ throw error;
122
+ } finally {
123
+ span.end();
124
+ }
125
+ });
126
+ }
127
+ ```
128
+
129
+ ### Custom Metrics
130
+
131
+ ```typescript
132
+ import { metrics } from "@opentelemetry/api";
133
+
134
+ const meter = metrics.getMeter("my-service");
135
+
136
+ const requestCounter = meter.createCounter("http.requests.total", {
137
+ description: "Total HTTP requests",
138
+ });
139
+
140
+ const latencyHistogram = meter.createHistogram("http.request.duration_ms", {
141
+ description: "HTTP request latency in milliseconds",
142
+ });
143
+
144
+ // Usage
145
+ requestCounter.add(1, { method: "GET", route: "/api/users" });
146
+ latencyHistogram.record(42, { method: "GET", route: "/api/users" });
147
+ ```
148
+
149
+ ---
150
+
151
+ ## Anti-Patterns
152
+
153
+ | Anti-Pattern | Why It Hurts | Correct Approach |
154
+ |---|---|---|
155
+ | No sampling in production | Enormous data volume, high cost | Use ratio-based or tail-based sampling |
156
+ | Ignoring context propagation | Broken traces across services | Ensure W3C headers propagate everywhere |
157
+ | Too many custom spans | Noisy traces, performance overhead | Instrument meaningful operations only |
158
+ | Hardcoded exporter URLs | Inflexible deployments | Use environment variables (`OTEL_EXPORTER_OTLP_ENDPOINT`) |
159
+ | Skipping semantic conventions | Inconsistent attribute names | Follow OTel semantic conventions |
160
+ | Not ending spans | Memory leaks, orphan spans | Always call `span.end()` in a `finally` block |
161
+
162
+ ---
163
+
164
+ **Last verified**: 2026-02-24 | **Skill version**: 1.0.0