vibes-plug 2.5.0 → 2.11.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 (177) hide show
  1. package/.claude/rules/vibes-plug-core.md +32 -0
  2. package/.cursor/rules/vibes-plug-core.mdc +51 -0
  3. package/.cursorrules +42 -0
  4. package/AGENTS.md +37 -7
  5. package/BLUEPRINT.md +309 -217
  6. package/CHANGELOG.md +133 -1
  7. package/CLAUDE.md +70 -0
  8. package/LICENSE +1 -1
  9. package/README.md +641 -415
  10. package/index.js +19 -0
  11. package/package.json +44 -8
  12. package/plugin.json +24 -7
  13. package/scripts/generate_swarm_gif.py +295 -0
  14. package/scripts/install.js +201 -0
  15. package/skills/accessibility-testing-expert/SKILL.md +116 -0
  16. package/skills/ai-cost-token-optimizer/SKILL.md +82 -52
  17. package/skills/ai-evals-benchmark-expert/SKILL.md +188 -0
  18. package/skills/ai-llm-integration-expert/SKILL.md +185 -178
  19. package/skills/ai-media-generation-expert/SKILL.md +172 -0
  20. package/skills/ai-prompt-engineering-expert/SKILL.md +84 -0
  21. package/skills/angular-expert/SKILL.md +148 -0
  22. package/skills/api-design-expert/SKILL.md +6 -3
  23. package/skills/api-gateway-proxy-expert/SKILL.md +81 -0
  24. package/skills/app-analyzer-optimizer/SKILL.md +6 -3
  25. package/skills/apple-ecosystem-expert/SKILL.md +144 -141
  26. package/skills/{asisten_ramah → asisten-ramah}/SKILL.md +7 -1
  27. package/skills/astro-framework-expert/SKILL.md +200 -0
  28. package/skills/async-queue-temporal-expert/SKILL.md +210 -24
  29. package/skills/authentication-identity-expert/SKILL.md +278 -275
  30. package/skills/auto-doc-updater/SKILL.md +7 -1
  31. package/skills/autonomous-chaos-monkey/SKILL.md +63 -63
  32. package/skills/autonomous-red-teamer/SKILL.md +172 -28
  33. package/skills/autonomous-tdd-debugger/SKILL.md +70 -64
  34. package/skills/background-jobs-queue-expert/SKILL.md +235 -0
  35. package/skills/biome-linter-formatter-expert/SKILL.md +89 -0
  36. package/skills/blockchain-web3-expert/SKILL.md +115 -0
  37. package/skills/bootstrap-to-modern/SKILL.md +9 -6
  38. package/skills/brainstorming/SKILL.md +58 -50
  39. package/skills/browser-automation-expert/SKILL.md +197 -21
  40. package/skills/bun-runtime-expert/SKILL.md +7 -1
  41. package/skills/chatbot-messaging-expert/SKILL.md +114 -0
  42. package/skills/ci-cd-devops-architect/SKILL.md +45 -36
  43. package/skills/cloud-hosting-expert/SKILL.md +7 -1
  44. package/skills/coderabbit/SKILL.md +7 -1
  45. package/skills/compliance-gdpr-privacy-expert/SKILL.md +85 -0
  46. package/skills/cron-scheduler-expert/SKILL.md +303 -297
  47. package/skills/data-pipeline-etl-expert/SKILL.md +84 -0
  48. package/skills/data-telemetry-expert/SKILL.md +7 -1
  49. package/skills/data-visualization-expert/SKILL.md +154 -0
  50. package/skills/database-migration-versioning-expert/SKILL.md +90 -0
  51. package/skills/database-orm-expert/SKILL.md +13 -3
  52. package/skills/dependency-upgrade-migrator/SKILL.md +300 -294
  53. package/skills/design-system-architect/SKILL.md +278 -259
  54. package/skills/desktop-electron-expert/SKILL.md +128 -0
  55. package/skills/documentation-site-expert/SKILL.md +59 -0
  56. package/skills/doku-mcp-server/SKILL.md +7 -1
  57. package/skills/doku-payment-gateway/SKILL.md +7 -1
  58. package/skills/domain-driven-design-expert/SKILL.md +82 -0
  59. package/skills/e2e-testing-expert/SKILL.md +7 -1
  60. package/skills/ecommerce-expert/SKILL.md +87 -0
  61. package/skills/edge-serverless-db-expert/SKILL.md +98 -42
  62. package/skills/email-notification-expert/SKILL.md +367 -361
  63. package/skills/error-resilience-expert/SKILL.md +485 -479
  64. package/skills/event-driven-architect/SKILL.md +7 -1
  65. package/skills/feature-flag-analytics-expert/SKILL.md +65 -45
  66. package/skills/file-upload-media-expert/SKILL.md +436 -430
  67. package/skills/firebase-security-expert/SKILL.md +7 -1
  68. package/skills/form-validation-expert/SKILL.md +406 -400
  69. package/skills/fullstack-expert/SKILL.md +60 -1
  70. package/skills/gemini-agent-booster/SKILL.md +173 -135
  71. package/skills/geospatial-maps-expert/SKILL.md +80 -0
  72. package/skills/global-a11y-i18n-expert/SKILL.md +7 -1
  73. package/skills/glsl-shader-expert/SKILL.md +106 -100
  74. package/skills/go-programming-expert/SKILL.md +21 -15
  75. package/skills/graph-rag-knowledge-expert/SKILL.md +159 -0
  76. package/skills/graphql-apollo-expert/SKILL.md +113 -107
  77. package/skills/headless-cms-expert/SKILL.md +181 -0
  78. package/skills/hig/SKILL.md +7 -1
  79. package/skills/js-backend-expert/SKILL.md +218 -216
  80. package/skills/legacy-code-translator/SKILL.md +70 -64
  81. package/skills/local-slm-edge-ai-expert/SKILL.md +167 -0
  82. package/skills/logging-error-tracking-expert/SKILL.md +343 -337
  83. package/skills/mcp-client-orchestrator/SKILL.md +75 -69
  84. package/skills/mcp-server-architect/SKILL.md +294 -194
  85. package/skills/micro-frontend-architect/SKILL.md +111 -105
  86. package/skills/mobile-expo-expert/SKILL.md +8 -2
  87. package/skills/mobile-push-notification-expert/SKILL.md +70 -50
  88. package/skills/modern-css-native-expert/SKILL.md +189 -0
  89. package/skills/monday-design-aesthetic/SKILL.md +7 -1
  90. package/skills/monorepo-architect/SKILL.md +7 -1
  91. package/skills/mpa-orchestrator/SKILL.md +20 -1
  92. package/skills/multi-agent-orchestration/SKILL.md +254 -234
  93. package/skills/multiple-entry-points/SKILL.md +37 -1
  94. package/skills/mvc-expert/SKILL.md +7 -1
  95. package/skills/n8n-automation-expert/SKILL.md +89 -0
  96. package/skills/nextjs-app-router-expert/SKILL.md +148 -0
  97. package/skills/openapi-swagger-codegen-expert/SKILL.md +67 -0
  98. package/skills/payment-gateway-expert/SKILL.md +85 -1
  99. package/skills/pdf-document-generation-expert/SKILL.md +91 -0
  100. package/skills/performance-web-vitals/SKILL.md +7 -1
  101. package/skills/post-quantum-crypto-migrator/SKILL.md +57 -57
  102. package/skills/prd-architect/SKILL.md +7 -1
  103. package/skills/proactive-background-watcher/SKILL.md +67 -61
  104. package/skills/production-ready-hardener/SKILL.md +461 -455
  105. package/skills/project-context-mapper/SKILL.md +84 -78
  106. package/skills/pwa-offline-first-expert/SKILL.md +185 -0
  107. package/skills/python-programming-expert/SKILL.md +407 -401
  108. package/skills/rate-limit-abuse-prevention/SKILL.md +376 -370
  109. package/skills/realtime-collaboration-expert/SKILL.md +55 -1
  110. package/skills/rich-text-editor-expert/SKILL.md +177 -0
  111. package/skills/rust-programming-expert/SKILL.md +7 -1
  112. package/skills/saas-billing/SKILL.md +7 -1
  113. package/skills/saas-multi-tenant/SKILL.md +7 -1
  114. package/skills/saas-mvp-launcher/SKILL.md +20 -1
  115. package/skills/saas-transformer/SKILL.md +499 -488
  116. package/skills/scalability-clean-code/SKILL.md +7 -1
  117. package/skills/search-engine-expert/SKILL.md +89 -0
  118. package/skills/secure-fuzz-testing/SKILL.md +7 -1
  119. package/skills/self-evolving-memory-graph/SKILL.md +90 -74
  120. package/skills/self-healing-cloud-orchestrator/SKILL.md +57 -57
  121. package/skills/senior-frontend/SKILL.md +141 -161
  122. package/skills/seo/SKILL.md +41 -17
  123. package/skills/session-context-loader/SKILL.md +82 -76
  124. package/skills/session-handoff-resume/SKILL.md +7 -1
  125. package/skills/{skill_baru → skill-baru}/SKILL.md +8 -2
  126. package/skills/solidjs-expert/SKILL.md +80 -0
  127. package/skills/spa-orchestrator/SKILL.md +20 -1
  128. package/skills/sse-websocket-streaming-expert/SKILL.md +93 -0
  129. package/skills/state-management-expert/SKILL.md +7 -1
  130. package/skills/supabase-migration/SKILL.md +47 -1
  131. package/skills/supabase-security-expert/SKILL.md +7 -1
  132. package/skills/svelte-sveltekit-expert/SKILL.md +91 -0
  133. package/skills/svg-animation-motion-expert/SKILL.md +115 -0
  134. package/skills/tailwind-expert/SKILL.md +88 -136
  135. package/skills/tanstack-query-expert/SKILL.md +7 -1
  136. package/skills/tauri-expert/SKILL.md +7 -1
  137. package/skills/token-saver/SKILL.md +1 -1
  138. package/skills/typescript-expert/SKILL.md +12 -6
  139. package/skills/ui-components-expert/SKILL.md +165 -279
  140. package/skills/ui-ux-pro-max/SKILL.md +23 -3
  141. package/skills/vector-db-rag-expert/SKILL.md +175 -19
  142. package/skills/vibe-code-gardener/SKILL.md +1 -1
  143. package/skills/visual-qa-vision-agent/SKILL.md +70 -64
  144. package/skills/voice-ai-realtime-agent/SKILL.md +202 -0
  145. package/skills/vue-frontend-expert/SKILL.md +131 -125
  146. package/skills/wasm-edge-computing-expert/SKILL.md +97 -0
  147. package/skills/web-3d-graphics-expert/SKILL.md +136 -130
  148. package/skills/web-game-engine-expert/SKILL.md +101 -95
  149. package/skills/web-scraper/SKILL.md +157 -207
  150. package/skills/website-design-cloner/SKILL.md +179 -173
  151. package/skills/webxr-ar-vr-expert/SKILL.md +122 -116
  152. package/skills/wordpress-headless-expert/SKILL.md +144 -0
  153. package/skills/zero-to-prod-orchestrator/SKILL.md +52 -27
  154. package/skills/zero-trust-secret-vault/SKILL.md +87 -39
  155. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  156. package/.github/workflows/publish.yml +0 -20
  157. package/CONTRIBUTING.md +0 -199
  158. package/SECURITY.md +0 -21
  159. package/banner.png +0 -0
  160. package/skills/autonomous-swarm-director/SKILL.md +0 -69
  161. package/skills/hyper-context-synthesizer/SKILL.md +0 -55
  162. package/skills/llm-cost-arbitrage-router/SKILL.md +0 -59
  163. package/skills/senior-fullstack/SKILL.md +0 -167
  164. package/skills/senior-fullstack/references/architecture_patterns.md +0 -160
  165. package/skills/senior-fullstack/references/development_workflows.md +0 -222
  166. package/skills/senior-fullstack/references/tech_stack_guide.md +0 -190
  167. package/skills/senior-fullstack/scripts/code_quality_analyzer.py +0 -114
  168. package/skills/senior-fullstack/scripts/fullstack_scaffolder.py +0 -114
  169. package/skills/senior-fullstack/scripts/project_scaffolder.py +0 -114
  170. package/skills/seo-aeo-landing-page-writer/SKILL.md +0 -97
  171. package/skills/seo-geo/SKILL.md +0 -188
  172. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
  173. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
  174. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-310.pyc +0 -0
  175. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
  176. package/skills/ui_ux_expert/SKILL.md +0 -125
  177. package/vibes-swarm-demo.gif +0 -0
@@ -1,338 +1,344 @@
1
- ---
2
- name: logging-error-tracking-expert
3
- description: "Expert guide for structured logging (Pino, Winston), error tracking (Sentry), log aggregation (Axiom, Datadog), request correlation, and GDPR-compliant log management / Panduan ahli untuk logging terstruktur (Pino, Winston), pelacakan error (Sentry), agregasi log, korelasi request, dan manajemen log sesuai GDPR."
1
+ ---
2
+ name: logging-error-tracking-expert
3
+ description: "Expert guide for structured logging (Pino, Winston), error tracking (Sentry), log aggregation (Axiom, Datadog), request correlation, and GDPR-compliant log management / Panduan ahli untuk logging terstruktur (Pino, Winston), pelacakan error (Sentry), agregasi log, korelasi request, dan manajemen log sesuai GDPR."
4
4
  author: "Roedy Rustam"
5
- ---
6
-
7
- # Logging & Error Tracking Expert (2026 Edition)
8
-
9
- [English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
10
-
11
- ---
12
-
13
- <a name="english"></a>
14
- ## English
15
-
16
- ### Description
17
- Production-grade guide for implementing structured logging, error tracking, and application monitoring. Covers **Pino** (high-performance JSON logging), **Sentry** SDK integration (React, Node.js, Next.js), **source map upload** for production errors, **request ID correlation** across microservices, **log aggregation** (Axiom, Datadog, Logflare), **alert rules**, **GDPR-compliant log redaction** (PII masking), and **OpenTelemetry integration**.
18
-
19
- ### Trigger Conditions
20
- Activate this skill when:
21
- - Setting up structured logging for Node.js/Bun backend services.
22
- - Integrating Sentry for error tracking in React/Next.js apps.
23
- - Implementing request ID correlation across microservices.
24
- - Setting up log aggregation and search (Axiom, Datadog, Grafana Loki).
25
- - Configuring alerting rules for production errors.
26
- - Implementing GDPR-compliant log management (PII redaction).
27
- - Setting up source map uploads for production debugging.
28
-
29
- ---
30
-
31
- ### Logging Library Selection Guide
32
-
33
- | Library | Best For | Performance | Output Format |
34
- |---|---|---|---|
35
- | **Pino** | High-throughput Node.js services | ⭐⭐⭐⭐⭐ (fastest) | JSON (structured) |
36
- | **Winston** | Enterprise, multiple transports | ⭐⭐⭐ | Configurable |
37
- | **Bunyan** | Legacy projects | ⭐⭐⭐⭐ | JSON |
38
- | **console.log** | Never in production | | Unstructured |
39
-
40
- **Recommendation**: Use **Pino** for all production services (10x faster than Winston, native JSON).
41
-
42
- ---
43
-
44
- ### 1. Structured Logging with Pino
45
-
46
- ```typescript
47
- // lib/logger.ts
48
- import pino from 'pino';
49
-
50
- export const logger = pino({
51
- level: process.env.LOG_LEVEL ?? 'info',
52
- // Redact sensitive fields (GDPR/PII)
53
- redact: {
54
- paths: ['req.headers.authorization', 'req.headers.cookie', '*.password', '*.token', '*.ssn', '*.creditCard'],
55
- censor: '[REDACTED]',
56
- },
57
- // Standardized format
58
- formatters: {
59
- level: (label) => ({ level: label }),
60
- bindings: (bindings) => ({
61
- service: process.env.SERVICE_NAME ?? 'app',
62
- environment: process.env.NODE_ENV,
63
- version: process.env.APP_VERSION,
64
- pid: bindings.pid,
65
- hostname: bindings.hostname,
66
- }),
67
- },
68
- timestamp: pino.stdTimeFunctions.isoTime,
69
- });
70
-
71
- // Child logger for specific domain
72
- export const dbLogger = logger.child({ module: 'database' });
73
- export const authLogger = logger.child({ module: 'auth' });
74
- export const paymentLogger = logger.child({ module: 'payment' });
75
- ```
76
-
77
- #### Log Level Strategy
78
- ```typescript
79
- // When to use each level:
80
- logger.fatal('Application cannot start — exiting'); // Process crash
81
- logger.error({ err }, 'Payment processing failed'); // Failed operations (needs attention)
82
- logger.warn('Rate limit threshold at 80%'); // Degraded state, approaching limits
83
- logger.info({ userId, action: 'login' }, 'User logged in'); // Business events, audit trail
84
- logger.debug({ query, params }, 'Database query executed'); // Development troubleshooting
85
- logger.trace({ request }, 'Incoming request'); // Extreme detail (rarely enabled)
86
- ```
87
-
88
- ---
89
-
90
- ### 2. Request ID Correlation
91
-
92
- ```typescript
93
- // middleware/request-id.ts
94
- import { randomUUID } from 'crypto';
95
- import { AsyncLocalStorage } from 'async_hooks';
96
-
97
- // Async context for request correlation
98
- export const requestContext = new AsyncLocalStorage<{ requestId: string }>();
99
-
100
- export function requestIdMiddleware(req: Request): string {
101
- // Use incoming header or generate new ID
102
- const requestId = req.headers.get('x-request-id') ?? randomUUID();
103
-
104
- // Propagate to downstream services
105
- return requestId;
106
- }
107
-
108
- // Usage with Pino child logger
109
- export function getRequestLogger() {
110
- const ctx = requestContext.getStore();
111
- return ctx ? logger.child({ requestId: ctx.requestId }) : logger;
112
- }
113
-
114
- // In API route
115
- export async function GET(request: Request) {
116
- const requestId = requestIdMiddleware(request);
117
-
118
- return requestContext.run({ requestId }, async () => {
119
- const log = getRequestLogger();
120
- log.info('Processing request');
121
-
122
- // All downstream log calls include requestId automatically
123
- const result = await fetchData(log);
124
- return Response.json(result);
125
- });
126
- }
127
- ```
128
-
129
- ---
130
-
131
- ### 3. Sentry Integration (Next.js)
132
-
133
- ```typescript
134
- // sentry.client.config.ts
135
- import * as Sentry from '@sentry/nextjs';
136
-
137
- Sentry.init({
138
- dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
139
- environment: process.env.NODE_ENV,
140
- release: process.env.SENTRY_RELEASE,
141
-
142
- // Performance monitoring
143
- tracesSampleRate: process.env.NODE_ENV === 'production' ? 0.1 : 1.0,
144
-
145
- // Session replay for debugging
146
- replaysSessionSampleRate: 0.01, // 1% of sessions
147
- replaysOnErrorSampleRate: 1.0, // 100% of error sessions
148
-
149
- integrations: [
150
- Sentry.replayIntegration({ maskAllText: false, blockAllMedia: false }),
151
- ],
152
-
153
- // Filter noise
154
- ignoreErrors: [
155
- 'ResizeObserver loop',
156
- 'Non-Error promise rejection',
157
- /Loading chunk \d+ failed/,
158
- ],
159
-
160
- // Scrub PII before sending
161
- beforeSend(event) {
162
- if (event.user) {
163
- delete event.user.ip_address;
164
- delete event.user.email; // Or hash it
165
- }
166
- return event;
167
- },
168
- });
169
- ```
170
-
171
- ```typescript
172
- // sentry.server.config.ts
173
- import * as Sentry from '@sentry/nextjs';
174
-
175
- Sentry.init({
176
- dsn: process.env.SENTRY_DSN,
177
- tracesSampleRate: 0.1,
178
-
179
- // Capture unhandled promise rejections
180
- integrations: [
181
- Sentry.prismaIntegration(), // Auto-track Prisma queries
182
- ],
183
- });
184
- ```
185
-
186
- #### Source Map Upload (CI/CD)
187
- ```yaml
188
- # .github/workflows/deploy.yml
189
- - name: Upload Source Maps to Sentry
190
- env:
191
- SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
192
- SENTRY_ORG: your-org
193
- SENTRY_PROJECT: your-project
194
- run: |
195
- npx @sentry/cli sourcemaps upload \
196
- --release=${{ github.sha }} \
197
- .next/static
198
- ```
199
-
200
- ---
201
-
202
- ### 4. Log Aggregation Setup (Axiom)
203
-
204
- ```typescript
205
- // lib/axiom-transport.ts
206
- import { pino } from 'pino';
207
-
208
- // Pino transport for Axiom (or any HTTP log service)
209
- const transport = pino.transport({
210
- targets: [
211
- // Console output (development)
212
- { target: 'pino-pretty', level: 'debug' },
213
- // Axiom (production)
214
- {
215
- target: '@axiomhq/pino',
216
- level: 'info',
217
- options: {
218
- dataset: process.env.AXIOM_DATASET,
219
- token: process.env.AXIOM_TOKEN,
220
- },
221
- },
222
- ],
223
- });
224
-
225
- export const logger = pino(transport);
226
- ```
227
-
228
- ---
229
-
230
- ### 5. Alert Rules Configuration
231
-
232
- ```typescript
233
- // Example alert conditions to configure in your monitoring tool
234
- const ALERT_RULES = {
235
- criticalErrors: {
236
- condition: 'error count > 50 in 5 minutes',
237
- severity: 'critical',
238
- notification: ['pagerduty', 'slack'],
239
- },
240
- highErrorRate: {
241
- condition: 'error rate > 5% of total requests',
242
- severity: 'high',
243
- notification: ['slack'],
244
- },
245
- slowResponses: {
246
- condition: 'p99 response time > 3000ms for 10 minutes',
247
- severity: 'medium',
248
- notification: ['slack'],
249
- },
250
- diskSpace: {
251
- condition: 'disk usage > 85%',
252
- severity: 'warning',
253
- notification: ['email'],
254
- },
255
- };
256
- ```
257
-
258
- ---
259
-
260
- ### 6. GDPR-Compliant Log Management
261
-
262
- ```typescript
263
- // lib/pii-redactor.ts
264
-
265
- /** Fields that must be redacted in logs */
266
- const PII_PATTERNS = [
267
- /\b\d{3}-\d{2}-\d{4}\b/g, // SSN
268
- /\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/g, // Credit card
269
- /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g, // Email
270
- ];
271
-
272
- export function redactPII(text: string): string {
273
- let result = text;
274
- for (const pattern of PII_PATTERNS) {
275
- result = result.replace(pattern, '[REDACTED]');
276
- }
277
- return result;
278
- }
279
-
280
- // Log retention policy
281
- const LOG_RETENTION = {
282
- debug: '7 days',
283
- info: '30 days',
284
- warn: '90 days',
285
- error: '365 days',
286
- audit: '7 years', // Compliance requirement
287
- };
288
- ```
289
-
290
- ---
291
-
292
- ### Common Pitfalls to Avoid
293
-
294
- | Anti-Pattern | Problem | Correct Approach |
295
- |---|---|---|
296
- | `console.log` in production | Unstructured, no levels, no rotation | Use Pino with JSON output |
297
- | Logging PII (emails, passwords) | GDPR violation, security risk | Use Pino `redact` option |
298
- | No request correlation ID | Can't trace requests across services | Propagate `x-request-id` header |
299
- | Logging everything at `info` level | Log noise, storage waste | Use appropriate levels (debug/info/warn/error) |
300
- | No source maps in production errors | "Minified React error #xxx" | Upload source maps to Sentry |
301
- | No log rotation/retention policy | Disk fills up, storage costs grow | Set TTL per level, archive old logs |
302
- | Alerting on every error | Alert fatigue | Set meaningful thresholds and severity levels |
303
-
304
- ---
305
-
306
- ### Integration with Other Skills
307
-
308
- - `data-telemetry-expert` — OpenTelemetry spans + log correlation
309
- - `error-resilience-expert` Error tracking and monitoring setup
310
- - `js-backend-expert` — Server-side logging middleware (Fastify/Hono/Express)
311
- - `ci-cd-devops-architect` — Source map upload in CI/CD pipeline
312
- - `production-ready-hardener` — Pre-launch logging and monitoring audit
313
- - `zero-trust-secret-vault` — Secure logging of secret access patterns
314
-
315
- ---
316
-
317
- <a name="bahasa-indonesia"></a>
318
- ## Bahasa Indonesia
319
-
320
- ### Deskripsi
321
- Panduan tingkat produksi untuk mengimplementasikan logging terstruktur, pelacakan error, dan pemantauan aplikasi. Mencakup **Pino** (logging JSON berkinerja tinggi), integrasi SDK **Sentry** (React, Node.js, Next.js), **upload source map** untuk error produksi, **korelasi request ID** lintas microservice, **agregasi log** (Axiom, Datadog, Logflare), **aturan alerting**, **redaksi log sesuai GDPR** (masking PII), dan integrasi **OpenTelemetry**.
322
-
323
- ### Kondisi Pemicu
324
- Aktifkan skill ini ketika:
325
- - Menyiapkan logging terstruktur untuk layanan backend Node.js/Bun.
326
- - Mengintegrasikan Sentry untuk pelacakan error di aplikasi React/Next.js.
327
- - Mengimplementasikan korelasi request ID lintas microservice.
328
- - Menyiapkan agregasi dan pencarian log (Axiom, Datadog, Grafana Loki).
329
- - Mengonfigurasi aturan alerting untuk error produksi.
330
- - Mengimplementasikan manajemen log sesuai GDPR (redaksi PII).
331
-
332
- ### Integrasi dengan Skill Lain
333
-
334
- - `data-telemetry-expert` Span OpenTelemetry + korelasi log
335
- - `error-resilience-expert` Setup pelacakan error dan monitoring
336
- - `js-backend-expert` Middleware logging sisi server (Fastify/Hono/Express)
337
- - `ci-cd-devops-architect` — Upload source map dalam pipeline CI/CD
338
- - `production-ready-hardener` Audit logging dan monitoring pra-peluncuran
5
+ ---
6
+
7
+ # Logging & Error Tracking Expert (2026 Edition)
8
+
9
+ [English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
10
+
11
+ ---
12
+
13
+ <a name="english"></a>
14
+ ## English
15
+
16
+ ### Orchestration & Integration
17
+ Connects and orchestrates with relevant domain skills like `brainstorming`, `zero-to-prod-orchestrator`, and `project-context-mapper` to ensure cohesive execution.
18
+
19
+ ### Description
20
+ Production-grade guide for implementing structured logging, error tracking, and application monitoring. Covers **Pino** (high-performance JSON logging), **Sentry** SDK integration (React, Node.js, Next.js), **source map upload** for production errors, **request ID correlation** across microservices, **log aggregation** (Axiom, Datadog, Logflare), **alert rules**, **GDPR-compliant log redaction** (PII masking), and **OpenTelemetry integration**.
21
+
22
+ ### Trigger Conditions
23
+ Activate this skill when:
24
+ - Setting up structured logging for Node.js/Bun backend services.
25
+ - Integrating Sentry for error tracking in React/Next.js apps.
26
+ - Implementing request ID correlation across microservices.
27
+ - Setting up log aggregation and search (Axiom, Datadog, Grafana Loki).
28
+ - Configuring alerting rules for production errors.
29
+ - Implementing GDPR-compliant log management (PII redaction).
30
+ - Setting up source map uploads for production debugging.
31
+
32
+ ---
33
+
34
+ ### Logging Library Selection Guide
35
+
36
+ | Library | Best For | Performance | Output Format |
37
+ |---|---|---|---|
38
+ | **Pino** | High-throughput Node.js services | ⭐⭐⭐⭐⭐ (fastest) | JSON (structured) |
39
+ | **Winston** | Enterprise, multiple transports | ⭐⭐⭐ | Configurable |
40
+ | **Bunyan** | Legacy projects | ⭐⭐⭐⭐ | JSON |
41
+ | **console.log** | Never in production | ❌ | Unstructured |
42
+
43
+ **Recommendation**: Use **Pino** for all production services (10x faster than Winston, native JSON).
44
+
45
+ ---
46
+
47
+ ### 1. Structured Logging with Pino
48
+
49
+ ```typescript
50
+ // lib/logger.ts
51
+ import pino from 'pino';
52
+
53
+ export const logger = pino({
54
+ level: process.env.LOG_LEVEL ?? 'info',
55
+ // Redact sensitive fields (GDPR/PII)
56
+ redact: {
57
+ paths: ['req.headers.authorization', 'req.headers.cookie', '*.password', '*.token', '*.ssn', '*.creditCard'],
58
+ censor: '[REDACTED]',
59
+ },
60
+ // Standardized format
61
+ formatters: {
62
+ level: (label) => ({ level: label }),
63
+ bindings: (bindings) => ({
64
+ service: process.env.SERVICE_NAME ?? 'app',
65
+ environment: process.env.NODE_ENV,
66
+ version: process.env.APP_VERSION,
67
+ pid: bindings.pid,
68
+ hostname: bindings.hostname,
69
+ }),
70
+ },
71
+ timestamp: pino.stdTimeFunctions.isoTime,
72
+ });
73
+
74
+ // Child logger for specific domain
75
+ export const dbLogger = logger.child({ module: 'database' });
76
+ export const authLogger = logger.child({ module: 'auth' });
77
+ export const paymentLogger = logger.child({ module: 'payment' });
78
+ ```
79
+
80
+ #### Log Level Strategy
81
+ ```typescript
82
+ // When to use each level:
83
+ logger.fatal('Application cannot start exiting'); // Process crash
84
+ logger.error({ err }, 'Payment processing failed'); // Failed operations (needs attention)
85
+ logger.warn('Rate limit threshold at 80%'); // Degraded state, approaching limits
86
+ logger.info({ userId, action: 'login' }, 'User logged in'); // Business events, audit trail
87
+ logger.debug({ query, params }, 'Database query executed'); // Development troubleshooting
88
+ logger.trace({ request }, 'Incoming request'); // Extreme detail (rarely enabled)
89
+ ```
90
+
91
+ ---
92
+
93
+ ### 2. Request ID Correlation
94
+
95
+ ```typescript
96
+ // middleware/request-id.ts
97
+ import { randomUUID } from 'crypto';
98
+ import { AsyncLocalStorage } from 'async_hooks';
99
+
100
+ // Async context for request correlation
101
+ export const requestContext = new AsyncLocalStorage<{ requestId: string }>();
102
+
103
+ export function requestIdMiddleware(req: Request): string {
104
+ // Use incoming header or generate new ID
105
+ const requestId = req.headers.get('x-request-id') ?? randomUUID();
106
+
107
+ // Propagate to downstream services
108
+ return requestId;
109
+ }
110
+
111
+ // Usage with Pino child logger
112
+ export function getRequestLogger() {
113
+ const ctx = requestContext.getStore();
114
+ return ctx ? logger.child({ requestId: ctx.requestId }) : logger;
115
+ }
116
+
117
+ // In API route
118
+ export async function GET(request: Request) {
119
+ const requestId = requestIdMiddleware(request);
120
+
121
+ return requestContext.run({ requestId }, async () => {
122
+ const log = getRequestLogger();
123
+ log.info('Processing request');
124
+
125
+ // All downstream log calls include requestId automatically
126
+ const result = await fetchData(log);
127
+ return Response.json(result);
128
+ });
129
+ }
130
+ ```
131
+
132
+ ---
133
+
134
+ ### 3. Sentry Integration (Next.js)
135
+
136
+ ```typescript
137
+ // sentry.client.config.ts
138
+ import * as Sentry from '@sentry/nextjs';
139
+
140
+ Sentry.init({
141
+ dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
142
+ environment: process.env.NODE_ENV,
143
+ release: process.env.SENTRY_RELEASE,
144
+
145
+ // Performance monitoring
146
+ tracesSampleRate: process.env.NODE_ENV === 'production' ? 0.1 : 1.0,
147
+
148
+ // Session replay for debugging
149
+ replaysSessionSampleRate: 0.01, // 1% of sessions
150
+ replaysOnErrorSampleRate: 1.0, // 100% of error sessions
151
+
152
+ integrations: [
153
+ Sentry.replayIntegration({ maskAllText: false, blockAllMedia: false }),
154
+ ],
155
+
156
+ // Filter noise
157
+ ignoreErrors: [
158
+ 'ResizeObserver loop',
159
+ 'Non-Error promise rejection',
160
+ /Loading chunk \d+ failed/,
161
+ ],
162
+
163
+ // Scrub PII before sending
164
+ beforeSend(event) {
165
+ if (event.user) {
166
+ delete event.user.ip_address;
167
+ delete event.user.email; // Or hash it
168
+ }
169
+ return event;
170
+ },
171
+ });
172
+ ```
173
+
174
+ ```typescript
175
+ // sentry.server.config.ts
176
+ import * as Sentry from '@sentry/nextjs';
177
+
178
+ Sentry.init({
179
+ dsn: process.env.SENTRY_DSN,
180
+ tracesSampleRate: 0.1,
181
+
182
+ // Capture unhandled promise rejections
183
+ integrations: [
184
+ Sentry.prismaIntegration(), // Auto-track Prisma queries
185
+ ],
186
+ });
187
+ ```
188
+
189
+ #### Source Map Upload (CI/CD)
190
+ ```yaml
191
+ # .github/workflows/deploy.yml
192
+ - name: Upload Source Maps to Sentry
193
+ env:
194
+ SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
195
+ SENTRY_ORG: your-org
196
+ SENTRY_PROJECT: your-project
197
+ run: |
198
+ npx @sentry/cli sourcemaps upload \
199
+ --release=${{ github.sha }} \
200
+ .next/static
201
+ ```
202
+
203
+ ---
204
+
205
+ ### 4. Log Aggregation Setup (Axiom)
206
+
207
+ ```typescript
208
+ // lib/axiom-transport.ts
209
+ import { pino } from 'pino';
210
+
211
+ // Pino transport for Axiom (or any HTTP log service)
212
+ const transport = pino.transport({
213
+ targets: [
214
+ // Console output (development)
215
+ { target: 'pino-pretty', level: 'debug' },
216
+ // Axiom (production)
217
+ {
218
+ target: '@axiomhq/pino',
219
+ level: 'info',
220
+ options: {
221
+ dataset: process.env.AXIOM_DATASET,
222
+ token: process.env.AXIOM_TOKEN,
223
+ },
224
+ },
225
+ ],
226
+ });
227
+
228
+ export const logger = pino(transport);
229
+ ```
230
+
231
+ ---
232
+
233
+ ### 5. Alert Rules Configuration
234
+
235
+ ```typescript
236
+ // Example alert conditions to configure in your monitoring tool
237
+ const ALERT_RULES = {
238
+ criticalErrors: {
239
+ condition: 'error count > 50 in 5 minutes',
240
+ severity: 'critical',
241
+ notification: ['pagerduty', 'slack'],
242
+ },
243
+ highErrorRate: {
244
+ condition: 'error rate > 5% of total requests',
245
+ severity: 'high',
246
+ notification: ['slack'],
247
+ },
248
+ slowResponses: {
249
+ condition: 'p99 response time > 3000ms for 10 minutes',
250
+ severity: 'medium',
251
+ notification: ['slack'],
252
+ },
253
+ diskSpace: {
254
+ condition: 'disk usage > 85%',
255
+ severity: 'warning',
256
+ notification: ['email'],
257
+ },
258
+ };
259
+ ```
260
+
261
+ ---
262
+
263
+ ### 6. GDPR-Compliant Log Management
264
+
265
+ ```typescript
266
+ // lib/pii-redactor.ts
267
+
268
+ /** Fields that must be redacted in logs */
269
+ const PII_PATTERNS = [
270
+ /\b\d{3}-\d{2}-\d{4}\b/g, // SSN
271
+ /\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/g, // Credit card
272
+ /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g, // Email
273
+ ];
274
+
275
+ export function redactPII(text: string): string {
276
+ let result = text;
277
+ for (const pattern of PII_PATTERNS) {
278
+ result = result.replace(pattern, '[REDACTED]');
279
+ }
280
+ return result;
281
+ }
282
+
283
+ // Log retention policy
284
+ const LOG_RETENTION = {
285
+ debug: '7 days',
286
+ info: '30 days',
287
+ warn: '90 days',
288
+ error: '365 days',
289
+ audit: '7 years', // Compliance requirement
290
+ };
291
+ ```
292
+
293
+ ---
294
+
295
+ ### Common Pitfalls to Avoid
296
+
297
+ | Anti-Pattern | Problem | Correct Approach |
298
+ |---|---|---|
299
+ | `console.log` in production | Unstructured, no levels, no rotation | Use Pino with JSON output |
300
+ | Logging PII (emails, passwords) | GDPR violation, security risk | Use Pino `redact` option |
301
+ | No request correlation ID | Can't trace requests across services | Propagate `x-request-id` header |
302
+ | Logging everything at `info` level | Log noise, storage waste | Use appropriate levels (debug/info/warn/error) |
303
+ | No source maps in production errors | "Minified React error #xxx" | Upload source maps to Sentry |
304
+ | No log rotation/retention policy | Disk fills up, storage costs grow | Set TTL per level, archive old logs |
305
+ | Alerting on every error | Alert fatigue | Set meaningful thresholds and severity levels |
306
+
307
+ ---
308
+
309
+ ### Integration with Other Skills
310
+
311
+ - `data-telemetry-expert` — OpenTelemetry spans + log correlation
312
+ - `error-resilience-expert` — Error tracking and monitoring setup
313
+ - `js-backend-expert` — Server-side logging middleware (Fastify/Hono/Express)
314
+ - `ci-cd-devops-architect` — Source map upload in CI/CD pipeline
315
+ - `production-ready-hardener` — Pre-launch logging and monitoring audit
316
+ - `zero-trust-secret-vault` — Secure logging of secret access patterns
317
+
318
+ ---
319
+
320
+ <a name="bahasa-indonesia"></a>
321
+ ## Bahasa Indonesia
322
+
323
+ ### Integrasi Orkestrasi
324
+ Terhubung dan mengorkestrasi skill domain yang relevan seperti `brainstorming`, `zero-to-prod-orchestrator`, dan `project-context-mapper` untuk memastikan eksekusi yang kohesif.
325
+
326
+ ### Deskripsi
327
+ Panduan tingkat produksi untuk mengimplementasikan logging terstruktur, pelacakan error, dan pemantauan aplikasi. Mencakup **Pino** (logging JSON berkinerja tinggi), integrasi SDK **Sentry** (React, Node.js, Next.js), **upload source map** untuk error produksi, **korelasi request ID** lintas microservice, **agregasi log** (Axiom, Datadog, Logflare), **aturan alerting**, **redaksi log sesuai GDPR** (masking PII), dan integrasi **OpenTelemetry**.
328
+
329
+ ### Kondisi Pemicu
330
+ Aktifkan skill ini ketika:
331
+ - Menyiapkan logging terstruktur untuk layanan backend Node.js/Bun.
332
+ - Mengintegrasikan Sentry untuk pelacakan error di aplikasi React/Next.js.
333
+ - Mengimplementasikan korelasi request ID lintas microservice.
334
+ - Menyiapkan agregasi dan pencarian log (Axiom, Datadog, Grafana Loki).
335
+ - Mengonfigurasi aturan alerting untuk error produksi.
336
+ - Mengimplementasikan manajemen log sesuai GDPR (redaksi PII).
337
+
338
+ ### Integrasi dengan Skill Lain
339
+
340
+ - `data-telemetry-expert` — Span OpenTelemetry + korelasi log
341
+ - `error-resilience-expert` — Setup pelacakan error dan monitoring
342
+ - `js-backend-expert` — Middleware logging sisi server (Fastify/Hono/Express)
343
+ - `ci-cd-devops-architect` — Upload source map dalam pipeline CI/CD
344
+ - `production-ready-hardener` — Audit logging dan monitoring pra-peluncuran