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.
- package/bin/cli.mjs +324 -0
- package/package.json +34 -0
- package/template/.agent/instructions/commands.md +48 -0
- package/template/.agent/instructions/patterns.md +61 -0
- package/template/.agent/instructions/structure.md +29 -0
- package/template/.agent/instructions/tech-stack.md +43 -0
- package/template/.agent/instructions/workflow.md +41 -0
- package/template/.agent/kit-sync.md +15 -0
- package/template/.agent/rules/boundary-not-placeholder.md +146 -0
- package/template/.agent/rules/completion-checklist.md +48 -0
- package/template/.agent/rules/decision-classification.md +103 -0
- package/template/.agent/rules/extensibility.md +47 -0
- package/template/.agent/rules/question-vs-command.md +81 -0
- package/template/.agent/rules/security-first.md +43 -0
- package/template/.agent/rules/specificity-standards.md +54 -0
- package/template/.agent/rules/tdd-contract-first.md +57 -0
- package/template/.agent/rules/vertical-slices.md +42 -0
- package/template/.agent/skill-library/MANIFEST.md +480 -0
- package/template/.agent/skill-library/README.md +38 -0
- package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
- package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
- package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
- package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
- package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
- package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
- package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
- package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
- package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
- package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
- package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
- package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
- package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
- package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
- package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
- package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
- package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
- package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
- package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
- package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
- package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
- package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
- package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
- package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
- package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
- package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
- package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
- package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
- package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
- package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
- package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
- package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
- package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
- package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
- package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
- package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
- package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
- package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
- package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
- package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
- package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
- package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
- package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
- package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
- package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
- package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
- package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
- package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
- package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
- package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
- package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
- package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
- package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
- package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
- package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
- package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
- package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
- package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
- package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
- package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
- package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
- package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
- package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
- package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
- package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
- package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
- package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
- package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
- package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
- package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
- package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
- package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
- package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
- package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
- package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
- package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
- package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
- package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
- package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
- package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
- package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
- package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
- package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
- package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
- package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
- package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
- package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
- package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
- package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
- package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
- package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
- package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
- package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
- package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
- package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
- package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
- package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
- package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
- package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
- package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
- package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
- package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
- package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
- package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
- package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
- package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
- package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
- package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
- package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
- package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
- package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
- package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
- package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
- package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
- package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
- package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
- package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
- package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
- package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
- package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
- package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
- package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
- package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
- package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
- package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
- package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
- package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
- package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
- package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
- package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
- package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
- package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
- package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
- package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
- package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
- package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
- package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
- package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
- package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
- package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
- package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
- package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
- package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
- package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
- package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
- package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
- package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
- package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
- package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
- package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
- package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
- package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
- package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
- package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
- package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
- package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
- package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
- package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
- package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
- package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
- package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
- package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
- package/template/.agent/skills/accessibility/SKILL.md +522 -0
- package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
- package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
- package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
- package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
- package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
- package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/template/.agent/skills/api-versioning/SKILL.md +420 -0
- package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
- package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
- package/template/.agent/skills/brainstorming/SKILL.md +236 -0
- package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
- package/template/.agent/skills/clean-code/SKILL.md +94 -0
- package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
- package/template/.agent/skills/concise-planning/SKILL.md +68 -0
- package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
- package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
- package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
- package/template/.agent/skills/design-direction/SKILL.md +45 -0
- package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
- package/template/.agent/skills/find-skills/SKILL.md +145 -0
- package/template/.agent/skills/git-advanced/SKILL.md +972 -0
- package/template/.agent/skills/git-workflow/SKILL.md +420 -0
- package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
- package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
- package/template/.agent/skills/migration-management/SKILL.md +384 -0
- package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
- package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
- package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
- package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
- package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
- package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
- package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
- package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
- package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
- package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
- package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
- package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
- package/template/.agent/skills/prd-templates/SKILL.md +88 -0
- package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
- package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
- package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
- package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
- package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
- package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
- package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
- package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
- package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
- package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
- package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
- package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
- package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
- package/template/.agent/skills/prompt-engineer/README.md +659 -0
- package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
- package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
- package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
- package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
- package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
- package/template/.agent/skills/session-continuity/SKILL.md +730 -0
- package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
- package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
- package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
- package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
- package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
- package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
- package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
- package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
- package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
- package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
- package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
- package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
- package/template/.agent/skills/skill-creator/README.md +270 -0
- package/template/.agent/skills/skill-creator/SKILL.md +590 -0
- package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
- package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
- package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
- package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
- package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/template/.agent/skills/spec-writing/SKILL.md +110 -0
- package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
- package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
- package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
- package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
- package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
- package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
- package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
- package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
- package/template/.agent/skills/technical-writer/SKILL.md +242 -0
- package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
- package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
- package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
- package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
- package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
- package/template/.agent/workflows/audit-ambiguity.md +64 -0
- package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
- package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
- package/template/.agent/workflows/bootstrap-agents.md +66 -0
- package/template/.agent/workflows/create-prd-architecture.md +119 -0
- package/template/.agent/workflows/create-prd-compile.md +138 -0
- package/template/.agent/workflows/create-prd-design-system.md +135 -0
- package/template/.agent/workflows/create-prd-security.md +113 -0
- package/template/.agent/workflows/create-prd-stack.md +91 -0
- package/template/.agent/workflows/create-prd.md +168 -0
- package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
- package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
- package/template/.agent/workflows/decompose-architecture.md +111 -0
- package/template/.agent/workflows/evolve-contract.md +98 -0
- package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
- package/template/.agent/workflows/evolve-feature-classify.md +116 -0
- package/template/.agent/workflows/evolve-feature.md +56 -0
- package/template/.agent/workflows/ideate-discover.md +144 -0
- package/template/.agent/workflows/ideate-extract.md +129 -0
- package/template/.agent/workflows/ideate-validate.md +117 -0
- package/template/.agent/workflows/ideate.md +113 -0
- package/template/.agent/workflows/implement-slice-setup.md +113 -0
- package/template/.agent/workflows/implement-slice-tdd.md +198 -0
- package/template/.agent/workflows/implement-slice.md +50 -0
- package/template/.agent/workflows/plan-phase.md +202 -0
- package/template/.agent/workflows/propagate-decision-apply.md +135 -0
- package/template/.agent/workflows/propagate-decision-scan.md +147 -0
- package/template/.agent/workflows/propagate-decision.md +56 -0
- package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
- package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
- package/template/.agent/workflows/remediate-pipeline.md +55 -0
- package/template/.agent/workflows/resolve-ambiguity.md +82 -0
- package/template/.agent/workflows/sync-kit.md +209 -0
- package/template/.agent/workflows/update-architecture-map.md +74 -0
- package/template/.agent/workflows/validate-phase.md +219 -0
- package/template/.agent/workflows/verify-infrastructure.md +207 -0
- package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
- package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
- package/template/.agent/workflows/write-architecture-spec.md +63 -0
- package/template/.agent/workflows/write-be-spec-classify.md +165 -0
- package/template/.agent/workflows/write-be-spec-write.md +98 -0
- package/template/.agent/workflows/write-be-spec.md +76 -0
- package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
- package/template/.agent/workflows/write-fe-spec-write.md +94 -0
- package/template/.agent/workflows/write-fe-spec.md +71 -0
- package/template/AGENTS.md +176 -0
- package/template/GEMINI.md +177 -0
- package/template/docs/README.md +187 -0
- package/template/docs/audits/.gitkeep +0 -0
- package/template/docs/audits/README.md +10 -0
- package/template/docs/plans/.gitkeep +0 -0
- package/template/docs/plans/README.md +21 -0
- package/template/docs/plans/be/.gitkeep +0 -0
- package/template/docs/plans/be/README.md +11 -0
- package/template/docs/plans/fe/.gitkeep +0 -0
- package/template/docs/plans/fe/README.md +11 -0
- package/template/docs/plans/ia/.gitkeep +0 -0
- package/template/docs/plans/ia/README.md +17 -0
- package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
- package/template/docs/plans/ia/deep-dives/README.md +5 -0
- package/template/docs/plans/phases/.gitkeep +0 -0
- package/template/docs/plans/phases/README.md +11 -0
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sentry
|
|
3
|
+
description: |
|
|
4
|
+
Integrate Sentry for error monitoring, performance tracing, session replay, and cron monitoring. Use when: setting up error tracking in Next.js/React/Node.js/Astro, configuring performance monitoring (tracing, spans), uploading source maps, adding error boundaries, implementing user feedback, scrubbing PII, setting up alerts, or debugging production issues.
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Sentry Error Monitoring
|
|
9
|
+
|
|
10
|
+
**Status**: Production Ready
|
|
11
|
+
**Last Updated**: 2026-02-16
|
|
12
|
+
**Package**: `@sentry/nextjs@8.x`, `@sentry/react@8.x`, `@sentry/node@8.x`, `@sentry/astro@8.x`
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Setup by Platform
|
|
17
|
+
|
|
18
|
+
### Next.js (Recommended Wizard)
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx @sentry/wizard@latest -i nextjs
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
This generates `sentry.client.config.ts`, `sentry.server.config.ts`, `sentry.edge.config.ts`, and updates `next.config.js`.
|
|
25
|
+
|
|
26
|
+
### Manual Next.js Setup
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
// sentry.client.config.ts
|
|
30
|
+
import * as Sentry from "@sentry/nextjs";
|
|
31
|
+
|
|
32
|
+
Sentry.init({
|
|
33
|
+
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
|
|
34
|
+
environment: process.env.NODE_ENV,
|
|
35
|
+
release: process.env.SENTRY_RELEASE,
|
|
36
|
+
tracesSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1.0,
|
|
37
|
+
replaysSessionSampleRate: 0.1,
|
|
38
|
+
replaysOnErrorSampleRate: 1.0,
|
|
39
|
+
integrations: [
|
|
40
|
+
Sentry.replayIntegration(),
|
|
41
|
+
Sentry.browserTracingIntegration(),
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
// sentry.server.config.ts
|
|
48
|
+
import * as Sentry from "@sentry/nextjs";
|
|
49
|
+
|
|
50
|
+
Sentry.init({
|
|
51
|
+
dsn: process.env.SENTRY_DSN,
|
|
52
|
+
environment: process.env.NODE_ENV,
|
|
53
|
+
release: process.env.SENTRY_RELEASE,
|
|
54
|
+
tracesSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1.0,
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// next.config.js
|
|
60
|
+
import { withSentryConfig } from "@sentry/nextjs";
|
|
61
|
+
|
|
62
|
+
const nextConfig = { /* ... */ };
|
|
63
|
+
|
|
64
|
+
export default withSentryConfig(nextConfig, {
|
|
65
|
+
org: "your-org",
|
|
66
|
+
project: "your-project",
|
|
67
|
+
silent: !process.env.CI, // Suppress logs outside CI
|
|
68
|
+
widenClientFileUpload: true,
|
|
69
|
+
tunnelRoute: "/monitoring", // Proxy to avoid ad-blockers
|
|
70
|
+
hideSourceMaps: true,
|
|
71
|
+
disableLogger: true,
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### React (Standalone)
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// src/instrument.ts — import BEFORE React
|
|
79
|
+
import * as Sentry from "@sentry/react";
|
|
80
|
+
|
|
81
|
+
Sentry.init({
|
|
82
|
+
dsn: "__DSN__",
|
|
83
|
+
integrations: [
|
|
84
|
+
Sentry.browserTracingIntegration(),
|
|
85
|
+
Sentry.replayIntegration(),
|
|
86
|
+
],
|
|
87
|
+
tracesSampleRate: 0.1,
|
|
88
|
+
});
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Node.js
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
// instrument.ts — import at very top of entry point
|
|
95
|
+
import * as Sentry from "@sentry/node";
|
|
96
|
+
|
|
97
|
+
Sentry.init({
|
|
98
|
+
dsn: "__DSN__",
|
|
99
|
+
tracesSampleRate: 0.1,
|
|
100
|
+
profilesSampleRate: 0.1, // Profiling (if enabled)
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Astro
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npx astro add @sentry/astro
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// astro.config.mjs
|
|
112
|
+
import sentry from "@sentry/astro";
|
|
113
|
+
|
|
114
|
+
export default defineConfig({
|
|
115
|
+
integrations: [
|
|
116
|
+
sentry({
|
|
117
|
+
dsn: "__DSN__",
|
|
118
|
+
sourceMapsUploadOptions: {
|
|
119
|
+
project: "your-project",
|
|
120
|
+
authToken: process.env.SENTRY_AUTH_TOKEN,
|
|
121
|
+
},
|
|
122
|
+
}),
|
|
123
|
+
],
|
|
124
|
+
});
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Configuration Options
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
Sentry.init({
|
|
133
|
+
dsn: "__DSN__", // Required
|
|
134
|
+
environment: "production", // Filters in dashboard
|
|
135
|
+
release: "my-app@1.2.3", // Links errors to releases
|
|
136
|
+
tracesSampleRate: 0.1, // 10% of transactions traced
|
|
137
|
+
sampleRate: 1.0, // 100% of errors captured
|
|
138
|
+
maxBreadcrumbs: 50, // Breadcrumb history depth
|
|
139
|
+
attachStacktrace: true, // Stack traces on messages too
|
|
140
|
+
normalizeDepth: 5, // Context object serialization depth
|
|
141
|
+
beforeSend(event) { // Filter/modify events before sending
|
|
142
|
+
if (event.exception?.values?.[0]?.type === "ChunkLoadError") {
|
|
143
|
+
return null; // Drop noisy errors
|
|
144
|
+
}
|
|
145
|
+
return event;
|
|
146
|
+
},
|
|
147
|
+
ignoreErrors: [
|
|
148
|
+
"ResizeObserver loop",
|
|
149
|
+
/^NetworkError/,
|
|
150
|
+
"Non-Error exception captured",
|
|
151
|
+
],
|
|
152
|
+
denyUrls: [/extensions\//i, /^chrome:\/\//i], // Ignore browser extension errors
|
|
153
|
+
});
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Error Boundaries (React)
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
import * as Sentry from "@sentry/react";
|
|
162
|
+
|
|
163
|
+
// Wrap your app or specific sections
|
|
164
|
+
function App() {
|
|
165
|
+
return (
|
|
166
|
+
<Sentry.ErrorBoundary
|
|
167
|
+
fallback={({ error, resetError }) => (
|
|
168
|
+
<div role="alert">
|
|
169
|
+
<h2>Something went wrong</h2>
|
|
170
|
+
<p>{error.message}</p>
|
|
171
|
+
<button onClick={resetError}>Try Again</button>
|
|
172
|
+
</div>
|
|
173
|
+
)}
|
|
174
|
+
onError={(error, componentStack) => {
|
|
175
|
+
// Additional error handling
|
|
176
|
+
}}
|
|
177
|
+
showDialog // Show Sentry user feedback dialog
|
|
178
|
+
>
|
|
179
|
+
<MainContent />
|
|
180
|
+
</Sentry.ErrorBoundary>
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Next.js — global-error.tsx
|
|
185
|
+
// src/app/global-error.tsx
|
|
186
|
+
"use client";
|
|
187
|
+
import * as Sentry from "@sentry/nextjs";
|
|
188
|
+
import { useEffect } from "react";
|
|
189
|
+
|
|
190
|
+
export default function GlobalError({ error, reset }: { error: Error; reset: () => void }) {
|
|
191
|
+
useEffect(() => {
|
|
192
|
+
Sentry.captureException(error);
|
|
193
|
+
}, [error]);
|
|
194
|
+
|
|
195
|
+
return (
|
|
196
|
+
<html>
|
|
197
|
+
<body>
|
|
198
|
+
<h2>Something went wrong</h2>
|
|
199
|
+
<button onClick={reset}>Try again</button>
|
|
200
|
+
</body>
|
|
201
|
+
</html>
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Performance Monitoring
|
|
209
|
+
|
|
210
|
+
### Automatic Instrumentation
|
|
211
|
+
|
|
212
|
+
Browser tracing and server tracing integrations capture:
|
|
213
|
+
- Page loads, navigations, API calls (browser)
|
|
214
|
+
- HTTP requests, database queries (server)
|
|
215
|
+
|
|
216
|
+
### Custom Spans
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
import * as Sentry from "@sentry/node"; // or @sentry/nextjs
|
|
220
|
+
|
|
221
|
+
async function processOrder(orderId: string) {
|
|
222
|
+
return Sentry.startSpan(
|
|
223
|
+
{ name: "process-order", op: "order.process", attributes: { orderId } },
|
|
224
|
+
async (span) => {
|
|
225
|
+
// Nested span
|
|
226
|
+
const items = await Sentry.startSpan(
|
|
227
|
+
{ name: "fetch-items", op: "db.query" },
|
|
228
|
+
async () => {
|
|
229
|
+
return await db.query("SELECT * FROM order_items WHERE order_id = $1", [orderId]);
|
|
230
|
+
}
|
|
231
|
+
);
|
|
232
|
+
|
|
233
|
+
await Sentry.startSpan(
|
|
234
|
+
{ name: "charge-payment", op: "payment.charge" },
|
|
235
|
+
async () => {
|
|
236
|
+
await chargePayment(orderId, items);
|
|
237
|
+
}
|
|
238
|
+
);
|
|
239
|
+
|
|
240
|
+
span.setStatus({ code: 1, message: "ok" }); // SpanStatusCode.OK
|
|
241
|
+
return { success: true };
|
|
242
|
+
}
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Source Maps
|
|
250
|
+
|
|
251
|
+
### Automatic Upload (Next.js)
|
|
252
|
+
|
|
253
|
+
Handled by `withSentryConfig` — just set `SENTRY_AUTH_TOKEN` in env.
|
|
254
|
+
|
|
255
|
+
### Manual Upload (Vite/Webpack)
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
pnpm add -D @sentry/vite-plugin
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// vite.config.ts
|
|
263
|
+
import { sentryVitePlugin } from "@sentry/vite-plugin";
|
|
264
|
+
|
|
265
|
+
export default defineConfig({
|
|
266
|
+
build: { sourcemap: true },
|
|
267
|
+
plugins: [
|
|
268
|
+
sentryVitePlugin({
|
|
269
|
+
org: "your-org",
|
|
270
|
+
project: "your-project",
|
|
271
|
+
authToken: process.env.SENTRY_AUTH_TOKEN,
|
|
272
|
+
}),
|
|
273
|
+
],
|
|
274
|
+
});
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Breadcrumbs
|
|
280
|
+
|
|
281
|
+
```typescript
|
|
282
|
+
// Automatic breadcrumbs include: console, DOM clicks, XHR/fetch, navigation
|
|
283
|
+
|
|
284
|
+
// Custom breadcrumbs
|
|
285
|
+
Sentry.addBreadcrumb({
|
|
286
|
+
category: "auth",
|
|
287
|
+
message: `User logged in: ${userId}`,
|
|
288
|
+
level: "info",
|
|
289
|
+
data: { method: "oauth", provider: "google" },
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
Sentry.addBreadcrumb({
|
|
293
|
+
category: "cart",
|
|
294
|
+
message: "Item added to cart",
|
|
295
|
+
level: "info",
|
|
296
|
+
data: { productId, quantity },
|
|
297
|
+
});
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## Context, Tags, and User
|
|
303
|
+
|
|
304
|
+
```typescript
|
|
305
|
+
// Set user context — appears on all subsequent events
|
|
306
|
+
Sentry.setUser({
|
|
307
|
+
id: user.id,
|
|
308
|
+
email: user.email, // Only if PII policy allows
|
|
309
|
+
username: user.username,
|
|
310
|
+
ip_address: "{{auto}}", // Sentry infers from request
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
// Clear on logout
|
|
314
|
+
Sentry.setUser(null);
|
|
315
|
+
|
|
316
|
+
// Tags — indexed, searchable in dashboard
|
|
317
|
+
Sentry.setTag("feature", "checkout");
|
|
318
|
+
Sentry.setTag("plan", "premium");
|
|
319
|
+
|
|
320
|
+
// Extra context — not indexed, for debugging
|
|
321
|
+
Sentry.setExtra("orderDetails", { items: 3, total: 49.99 });
|
|
322
|
+
|
|
323
|
+
// Structured context — grouped in event detail view
|
|
324
|
+
Sentry.setContext("order", {
|
|
325
|
+
id: orderId,
|
|
326
|
+
total: 49.99,
|
|
327
|
+
currency: "USD",
|
|
328
|
+
});
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Issue Grouping and Fingerprinting
|
|
334
|
+
|
|
335
|
+
```typescript
|
|
336
|
+
// Custom fingerprint — group related errors together
|
|
337
|
+
Sentry.captureException(error, {
|
|
338
|
+
fingerprint: ["payment-processing", merchantId],
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
// Group by error message pattern
|
|
342
|
+
Sentry.init({
|
|
343
|
+
beforeSend(event) {
|
|
344
|
+
if (event.message?.includes("rate limit")) {
|
|
345
|
+
event.fingerprint = ["rate-limit-error"];
|
|
346
|
+
}
|
|
347
|
+
return event;
|
|
348
|
+
},
|
|
349
|
+
});
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Session Replay
|
|
355
|
+
|
|
356
|
+
```typescript
|
|
357
|
+
import * as Sentry from "@sentry/react"; // or @sentry/nextjs
|
|
358
|
+
|
|
359
|
+
Sentry.init({
|
|
360
|
+
integrations: [
|
|
361
|
+
Sentry.replayIntegration({
|
|
362
|
+
maskAllText: true, // Mask all text for privacy
|
|
363
|
+
blockAllMedia: true, // Block images/video
|
|
364
|
+
maskAllInputs: true, // Mask form inputs
|
|
365
|
+
// Selective unmasking
|
|
366
|
+
unmask: [".sentry-unmask"],
|
|
367
|
+
}),
|
|
368
|
+
],
|
|
369
|
+
replaysSessionSampleRate: 0.1, // 10% of all sessions
|
|
370
|
+
replaysOnErrorSampleRate: 1.0, // 100% of sessions with errors
|
|
371
|
+
});
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## Cron Monitoring
|
|
377
|
+
|
|
378
|
+
```typescript
|
|
379
|
+
import * as Sentry from "@sentry/node";
|
|
380
|
+
|
|
381
|
+
// Wrap cron job
|
|
382
|
+
const checkInId = Sentry.captureCheckIn({
|
|
383
|
+
monitorSlug: "daily-cleanup",
|
|
384
|
+
status: "in_progress",
|
|
385
|
+
}, {
|
|
386
|
+
schedule: { type: "crontab", value: "0 3 * * *" }, // 3 AM daily
|
|
387
|
+
checkinMargin: 5, // Minutes before considered missed
|
|
388
|
+
maxRuntime: 30, // Minutes before considered failed
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
try {
|
|
392
|
+
await runDailyCleanup();
|
|
393
|
+
|
|
394
|
+
Sentry.captureCheckIn({
|
|
395
|
+
checkInId,
|
|
396
|
+
monitorSlug: "daily-cleanup",
|
|
397
|
+
status: "ok",
|
|
398
|
+
});
|
|
399
|
+
} catch (error) {
|
|
400
|
+
Sentry.captureCheckIn({
|
|
401
|
+
checkInId,
|
|
402
|
+
monitorSlug: "daily-cleanup",
|
|
403
|
+
status: "error",
|
|
404
|
+
});
|
|
405
|
+
throw error;
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## User Feedback
|
|
412
|
+
|
|
413
|
+
```typescript
|
|
414
|
+
import * as Sentry from "@sentry/react";
|
|
415
|
+
|
|
416
|
+
// Crash report dialog — shows after error boundary triggers
|
|
417
|
+
Sentry.init({
|
|
418
|
+
beforeSend(event) {
|
|
419
|
+
if (event.exception) {
|
|
420
|
+
Sentry.showReportDialog({ eventId: event.event_id });
|
|
421
|
+
}
|
|
422
|
+
return event;
|
|
423
|
+
},
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
// Programmatic feedback widget
|
|
427
|
+
const eventId = Sentry.lastEventId();
|
|
428
|
+
if (eventId) {
|
|
429
|
+
Sentry.showReportDialog({
|
|
430
|
+
eventId,
|
|
431
|
+
title: "Something went wrong",
|
|
432
|
+
subtitle: "Our team has been notified.",
|
|
433
|
+
subtitle2: "If you'd like to help, tell us what happened below.",
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## PII Scrubbing and Data Privacy
|
|
441
|
+
|
|
442
|
+
```typescript
|
|
443
|
+
Sentry.init({
|
|
444
|
+
beforeSend(event) {
|
|
445
|
+
// Strip PII from user context
|
|
446
|
+
if (event.user) {
|
|
447
|
+
delete event.user.email;
|
|
448
|
+
delete event.user.ip_address;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
// Scrub sensitive headers
|
|
452
|
+
if (event.request?.headers) {
|
|
453
|
+
delete event.request.headers["Authorization"];
|
|
454
|
+
delete event.request.headers["Cookie"];
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
return event;
|
|
458
|
+
},
|
|
459
|
+
|
|
460
|
+
beforeBreadcrumb(breadcrumb) {
|
|
461
|
+
// Strip URLs with tokens
|
|
462
|
+
if (breadcrumb.data?.url) {
|
|
463
|
+
const url = new URL(breadcrumb.data.url);
|
|
464
|
+
url.searchParams.delete("token");
|
|
465
|
+
url.searchParams.delete("key");
|
|
466
|
+
breadcrumb.data.url = url.toString();
|
|
467
|
+
}
|
|
468
|
+
return breadcrumb;
|
|
469
|
+
},
|
|
470
|
+
|
|
471
|
+
// Server-side: do not send PII
|
|
472
|
+
sendDefaultPii: false,
|
|
473
|
+
});
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
## Release Tracking
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
# Create release and associate commits
|
|
482
|
+
sentry-cli releases new "my-app@1.2.3"
|
|
483
|
+
sentry-cli releases set-commits "my-app@1.2.3" --auto
|
|
484
|
+
sentry-cli releases finalize "my-app@1.2.3"
|
|
485
|
+
|
|
486
|
+
# Mark deploy
|
|
487
|
+
sentry-cli releases deploys "my-app@1.2.3" new -e production
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
## Anti-Patterns
|
|
493
|
+
|
|
494
|
+
| Anti-Pattern | Why It Hurts | Correct Approach |
|
|
495
|
+
|---|---|---|
|
|
496
|
+
| `tracesSampleRate: 1.0` in production | Enormous volume, high cost | Use 0.05-0.2 in prod, 1.0 in dev |
|
|
497
|
+
| Capturing handled/expected errors | Noisy alerts, alert fatigue | Only capture unexpected errors |
|
|
498
|
+
| No `beforeSend` filtering | Browser extension junk pollutes data | Filter known noisy errors |
|
|
499
|
+
| Logging PII in context/breadcrumbs | Privacy violations, GDPR risk | Scrub PII in `beforeSend` |
|
|
500
|
+
| Same DSN for all environments | Cannot filter prod vs dev | Separate DSNs or use `environment` tag |
|
|
501
|
+
| Not setting `release` | Cannot track regressions across deploys | Always set release to deploy version |
|
|
502
|
+
| Alerting on every error | Alert fatigue, team ignores alerts | Alert on new issues, spikes, P99 degradation |
|
|
503
|
+
| Missing source maps | Minified stack traces are useless | Upload source maps in CI, hide from public |
|
|
504
|
+
| `sampleRate: 0.01` on errors | Missing real errors | Keep error sampleRate at 1.0, lower traces |
|
|
505
|
+
| Not cleaning up user context on logout | PII attributed to wrong user | Call `Sentry.setUser(null)` on sign-out |
|
|
506
|
+
|
|
507
|
+
---
|
|
508
|
+
|
|
509
|
+
**Last verified**: 2026-02-16 | **Skill version**: 1.0.0
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: datadog
|
|
3
|
+
description: |
|
|
4
|
+
Set up Datadog for APM, log management, metrics, dashboards, and alerting. Use when: configuring Datadog APM and trace collection, setting up log parsing and management, creating custom metrics, building dashboards and monitors, configuring alerting and SLOs, or integrating dd-trace libraries.
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Datadog
|
|
9
|
+
|
|
10
|
+
**Status**: Production Ready
|
|
11
|
+
**Last Updated**: 2026-02-24
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Description
|
|
16
|
+
|
|
17
|
+
Datadog is a full-stack observability platform providing APM (distributed tracing), log management, infrastructure monitoring, metrics, dashboards, and alerting. This skill covers agent configuration, dd-trace library integration, log correlation with traces, and best practices for dashboards and SLOs.
|
|
18
|
+
|
|
19
|
+
## When to Use
|
|
20
|
+
|
|
21
|
+
- Setting up Datadog APM and trace collection
|
|
22
|
+
- Configuring log management and log parsing
|
|
23
|
+
- Creating custom metrics and dashboards
|
|
24
|
+
- Building monitors and configuring alerting
|
|
25
|
+
- Defining SLOs (Service Level Objectives)
|
|
26
|
+
- Setting up infrastructure monitoring
|
|
27
|
+
- Configuring the Datadog Agent
|
|
28
|
+
- Integrating dd-trace libraries (Node.js, Python, Go, Ruby, Java)
|
|
29
|
+
- Correlating logs with traces
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Key Concepts
|
|
34
|
+
|
|
35
|
+
### Datadog Agent
|
|
36
|
+
|
|
37
|
+
The Datadog Agent runs on your hosts or as a sidecar container. It collects metrics, traces, and logs and forwards them to the Datadog backend.
|
|
38
|
+
|
|
39
|
+
### APM (Application Performance Monitoring)
|
|
40
|
+
|
|
41
|
+
dd-trace libraries auto-instrument your application to capture distributed traces, including HTTP requests, database queries, cache operations, and message queue interactions.
|
|
42
|
+
|
|
43
|
+
### Log Management
|
|
44
|
+
|
|
45
|
+
Datadog ingests, indexes, and archives logs. Logs can be enriched with trace IDs for cross-signal correlation. Pipelines parse unstructured logs into structured fields.
|
|
46
|
+
|
|
47
|
+
### Metrics
|
|
48
|
+
|
|
49
|
+
Datadog supports custom metrics (counters, gauges, histograms, distributions) alongside infrastructure metrics. Metrics power dashboards, monitors, and SLOs.
|
|
50
|
+
|
|
51
|
+
### Monitors and SLOs
|
|
52
|
+
|
|
53
|
+
Monitors alert on threshold breaches, anomalies, or missing data. SLOs track service reliability over time windows (e.g., 99.9% availability over 30 days).
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Best Practices
|
|
58
|
+
|
|
59
|
+
1. **Use unified tagging** — apply consistent tags (`service`, `env`, `version`) across traces, logs, and metrics
|
|
60
|
+
2. **Enable log-trace correlation** — inject `dd.trace_id` and `dd.span_id` into log records
|
|
61
|
+
3. **Set appropriate sampling rates** — use Datadog's Ingestion Controls to manage trace volume and costs
|
|
62
|
+
4. **Build SLOs from meaningful SLIs** — measure what users experience (latency, error rate), not internal metrics
|
|
63
|
+
5. **Use dashboards for context, monitors for alerts** — dashboards for exploration, monitors for automated detection
|
|
64
|
+
6. **Tag custom metrics meaningfully** — avoid high-cardinality tags that explode metric volume
|
|
65
|
+
7. **Archive logs for compliance** — use Datadog Log Archives to S3/GCS for long-term retention at lower cost
|
|
66
|
+
8. **Configure the Agent via environment variables** — `DD_ENV`, `DD_SERVICE`, `DD_VERSION`, `DD_AGENT_HOST`
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Common Patterns
|
|
71
|
+
|
|
72
|
+
### Node.js dd-trace Setup
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
// instrument.ts — import at very top of entry point
|
|
76
|
+
import tracer from "dd-trace";
|
|
77
|
+
|
|
78
|
+
tracer.init({
|
|
79
|
+
service: "my-service",
|
|
80
|
+
env: process.env.DD_ENV || "development",
|
|
81
|
+
version: process.env.DD_VERSION || "1.0.0",
|
|
82
|
+
logInjection: true, // Inject trace IDs into logs
|
|
83
|
+
runtimeMetrics: true,
|
|
84
|
+
profiling: true,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
export default tracer;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Python dd-trace Setup
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
from ddtrace import tracer, patch_all
|
|
94
|
+
|
|
95
|
+
patch_all() # Auto-instrument all supported libraries
|
|
96
|
+
tracer.configure(
|
|
97
|
+
hostname=os.environ.get("DD_AGENT_HOST", "localhost"),
|
|
98
|
+
port=8126,
|
|
99
|
+
)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Log-Trace Correlation (Node.js + Pino)
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
import pino from "pino";
|
|
106
|
+
import tracer from "dd-trace";
|
|
107
|
+
|
|
108
|
+
const logger = pino({
|
|
109
|
+
mixin() {
|
|
110
|
+
const span = tracer.scope().active();
|
|
111
|
+
if (!span) return {};
|
|
112
|
+
return {
|
|
113
|
+
dd: {
|
|
114
|
+
trace_id: span.context().toTraceId(),
|
|
115
|
+
span_id: span.context().toSpanId(),
|
|
116
|
+
service: "my-service",
|
|
117
|
+
env: process.env.DD_ENV,
|
|
118
|
+
version: process.env.DD_VERSION,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Custom Metrics
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
import { StatsD } from "hot-shots";
|
|
129
|
+
|
|
130
|
+
const dogstatsd = new StatsD({
|
|
131
|
+
host: process.env.DD_AGENT_HOST || "localhost",
|
|
132
|
+
port: 8125,
|
|
133
|
+
prefix: "myapp.",
|
|
134
|
+
globalTags: { env: process.env.DD_ENV, service: "my-service" },
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
// Usage
|
|
138
|
+
dogstatsd.increment("orders.placed", 1, { payment_method: "card" });
|
|
139
|
+
dogstatsd.histogram("order.processing_time_ms", 142, { status: "success" });
|
|
140
|
+
dogstatsd.gauge("queue.depth", 47);
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Datadog Agent (Docker Compose)
|
|
144
|
+
|
|
145
|
+
```yaml
|
|
146
|
+
services:
|
|
147
|
+
datadog-agent:
|
|
148
|
+
image: gcr.io/datadoghq/agent:latest
|
|
149
|
+
environment:
|
|
150
|
+
DD_API_KEY: ${DD_API_KEY}
|
|
151
|
+
DD_SITE: "datadoghq.com"
|
|
152
|
+
DD_APM_ENABLED: "true"
|
|
153
|
+
DD_LOGS_ENABLED: "true"
|
|
154
|
+
DD_APM_NON_LOCAL_TRAFFIC: "true"
|
|
155
|
+
volumes:
|
|
156
|
+
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
157
|
+
- /proc/:/host/proc/:ro
|
|
158
|
+
- /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
|
|
159
|
+
ports:
|
|
160
|
+
- "8126:8126" # APM traces
|
|
161
|
+
- "8125:8125/udp" # DogStatsD
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Anti-Patterns
|
|
167
|
+
|
|
168
|
+
| Anti-Pattern | Why It Hurts | Correct Approach |
|
|
169
|
+
|---|---|---|
|
|
170
|
+
| No unified tagging | Cannot correlate traces, logs, and metrics | Use `service`, `env`, `version` everywhere |
|
|
171
|
+
| High-cardinality custom metric tags | Metric volume explodes, costs skyrocket | Use bounded tag values (status codes, not user IDs) |
|
|
172
|
+
| Alerting on every error | Alert fatigue, team ignores alerts | Alert on error rate spikes, anomalies, SLO burns |
|
|
173
|
+
| No log-trace correlation | Cannot navigate from logs to traces | Enable `logInjection` and standardize log format |
|
|
174
|
+
| Ingesting all traces at 100% | Expensive, unnecessary for most services | Use Ingestion Controls and sampling rules |
|
|
175
|
+
| Missing `DD_VERSION` tag | Cannot track regressions across deploys | Set version from CI/CD build number |
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
**Last verified**: 2026-02-24 | **Skill version**: 1.0.0
|