vibes-plug 1.0.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 (183) 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 +96 -0
  5. package/BLUEPRINT.md +309 -125
  6. package/CHANGELOG.md +183 -1
  7. package/CLAUDE.md +70 -0
  8. package/LICENSE +1 -1
  9. package/README.md +641 -263
  10. package/index.js +19 -0
  11. package/package.json +61 -25
  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 -0
  17. package/skills/ai-evals-benchmark-expert/SKILL.md +188 -0
  18. package/skills/ai-llm-integration-expert/SKILL.md +147 -122
  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 +316 -309
  23. package/skills/api-gateway-proxy-expert/SKILL.md +81 -0
  24. package/skills/app-analyzer-optimizer/SKILL.md +195 -188
  25. package/skills/apple-ecosystem-expert/SKILL.md +145 -0
  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 +240 -0
  29. package/skills/authentication-identity-expert/SKILL.md +279 -45
  30. package/skills/auto-doc-updater/SKILL.md +219 -203
  31. package/skills/autonomous-chaos-monkey/SKILL.md +63 -0
  32. package/skills/autonomous-red-teamer/SKILL.md +203 -0
  33. package/skills/autonomous-tdd-debugger/SKILL.md +71 -0
  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 +93 -86
  38. package/skills/brainstorming/SKILL.md +381 -353
  39. package/skills/browser-automation-expert/SKILL.md +222 -0
  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 +81 -45
  43. package/skills/cloud-hosting-expert/SKILL.md +249 -243
  44. package/skills/coderabbit/SKILL.md +197 -191
  45. package/skills/compliance-gdpr-privacy-expert/SKILL.md +85 -0
  46. package/skills/cron-scheduler-expert/SKILL.md +304 -0
  47. package/skills/data-pipeline-etl-expert/SKILL.md +84 -0
  48. package/skills/data-telemetry-expert/SKILL.md +218 -212
  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 +303 -293
  52. package/skills/dependency-upgrade-migrator/SKILL.md +301 -0
  53. package/skills/design-system-architect/SKILL.md +278 -242
  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 +257 -0
  57. package/skills/doku-payment-gateway/SKILL.md +233 -0
  58. package/skills/domain-driven-design-expert/SKILL.md +82 -0
  59. package/skills/e2e-testing-expert/SKILL.md +320 -314
  60. package/skills/ecommerce-expert/SKILL.md +87 -0
  61. package/skills/edge-serverless-db-expert/SKILL.md +99 -0
  62. package/skills/email-notification-expert/SKILL.md +368 -0
  63. package/skills/error-resilience-expert/SKILL.md +486 -0
  64. package/skills/event-driven-architect/SKILL.md +86 -80
  65. package/skills/feature-flag-analytics-expert/SKILL.md +66 -0
  66. package/skills/file-upload-media-expert/SKILL.md +437 -0
  67. package/skills/firebase-security-expert/SKILL.md +7 -1
  68. package/skills/form-validation-expert/SKILL.md +407 -0
  69. package/skills/fullstack-expert/SKILL.md +260 -201
  70. package/skills/fullstack-expert/references/api_design_guide.md +466 -466
  71. package/skills/fullstack-expert/references/multi_language_backend.md +528 -528
  72. package/skills/fullstack-expert/scripts/api_contract_validator.py +253 -253
  73. package/skills/fullstack-expert/scripts/architecture_analyzer.py +326 -326
  74. package/skills/gemini-agent-booster/SKILL.md +142 -104
  75. package/skills/geospatial-maps-expert/SKILL.md +80 -0
  76. package/skills/global-a11y-i18n-expert/SKILL.md +86 -80
  77. package/skills/glsl-shader-expert/SKILL.md +107 -0
  78. package/skills/go-programming-expert/SKILL.md +300 -294
  79. package/skills/graph-rag-knowledge-expert/SKILL.md +159 -0
  80. package/skills/graphql-apollo-expert/SKILL.md +114 -0
  81. package/skills/headless-cms-expert/SKILL.md +181 -0
  82. package/skills/hig/SKILL.md +193 -187
  83. package/skills/js-backend-expert/SKILL.md +218 -191
  84. package/skills/legacy-code-translator/SKILL.md +71 -0
  85. package/skills/local-slm-edge-ai-expert/SKILL.md +167 -0
  86. package/skills/logging-error-tracking-expert/SKILL.md +344 -0
  87. package/skills/mcp-client-orchestrator/SKILL.md +76 -0
  88. package/skills/mcp-server-architect/SKILL.md +226 -126
  89. package/skills/micro-frontend-architect/SKILL.md +112 -0
  90. package/skills/mobile-expo-expert/SKILL.md +191 -185
  91. package/skills/mobile-push-notification-expert/SKILL.md +71 -0
  92. package/skills/modern-css-native-expert/SKILL.md +189 -0
  93. package/skills/monday-design-aesthetic/SKILL.md +72 -66
  94. package/skills/monorepo-architect/SKILL.md +232 -226
  95. package/skills/mpa-orchestrator/SKILL.md +120 -101
  96. package/skills/multi-agent-orchestration/SKILL.md +173 -153
  97. package/skills/multiple-entry-points/SKILL.md +91 -55
  98. package/skills/mvc-expert/SKILL.md +237 -231
  99. package/skills/n8n-automation-expert/SKILL.md +89 -0
  100. package/skills/nextjs-app-router-expert/SKILL.md +148 -0
  101. package/skills/openapi-swagger-codegen-expert/SKILL.md +67 -0
  102. package/skills/payment-gateway-expert/SKILL.md +129 -45
  103. package/skills/pdf-document-generation-expert/SKILL.md +91 -0
  104. package/skills/performance-web-vitals/SKILL.md +337 -331
  105. package/skills/post-quantum-crypto-migrator/SKILL.md +57 -0
  106. package/skills/prd-architect/SKILL.md +206 -190
  107. package/skills/proactive-background-watcher/SKILL.md +68 -0
  108. package/skills/production-ready-hardener/PRODUCTION_READINESS_REPORT.md +67 -0
  109. package/skills/production-ready-hardener/SKILL.md +461 -468
  110. package/skills/production-ready-hardener/references/production_checklist.md +161 -161
  111. package/skills/production-ready-hardener/scripts/production_readiness_scanner.py +881 -875
  112. package/skills/project-context-mapper/SKILL.md +85 -0
  113. package/skills/pwa-offline-first-expert/SKILL.md +185 -0
  114. package/skills/python-programming-expert/SKILL.md +407 -270
  115. package/skills/rate-limit-abuse-prevention/SKILL.md +377 -0
  116. package/skills/realtime-collaboration-expert/SKILL.md +99 -45
  117. package/skills/rich-text-editor-expert/SKILL.md +177 -0
  118. package/skills/rust-programming-expert/SKILL.md +240 -234
  119. package/skills/saas-billing/SKILL.md +382 -376
  120. package/skills/saas-multi-tenant/SKILL.md +256 -236
  121. package/skills/saas-mvp-launcher/SKILL.md +30 -1
  122. package/skills/saas-transformer/SKILL.md +499 -445
  123. package/skills/saas-transformer/references/billing_integration_guide.md +401 -401
  124. package/skills/saas-transformer/references/feature_gating_patterns.md +137 -137
  125. package/skills/saas-transformer/references/saas_transformation_checklist.md +121 -121
  126. package/skills/saas-transformer/scripts/saas_transformation_scanner.py +39 -29
  127. package/skills/scalability-clean-code/SKILL.md +234 -228
  128. package/skills/search-engine-expert/SKILL.md +89 -0
  129. package/skills/secure-fuzz-testing/SKILL.md +7 -1
  130. package/skills/self-evolving-memory-graph/SKILL.md +91 -0
  131. package/skills/self-healing-cloud-orchestrator/SKILL.md +57 -0
  132. package/skills/senior-frontend/SKILL.md +85 -105
  133. package/skills/seo/SKILL.md +258 -224
  134. package/skills/session-context-loader/SKILL.md +83 -0
  135. package/skills/session-handoff-resume/SKILL.md +163 -157
  136. package/skills/{skill_baru → skill-baru}/SKILL.md +177 -146
  137. package/skills/solidjs-expert/SKILL.md +80 -0
  138. package/skills/spa-orchestrator/SKILL.md +306 -287
  139. package/skills/sse-websocket-streaming-expert/SKILL.md +93 -0
  140. package/skills/state-management-expert/SKILL.md +277 -271
  141. package/skills/supabase-migration/SKILL.md +47 -1
  142. package/skills/supabase-security-expert/SKILL.md +248 -242
  143. package/skills/svelte-sveltekit-expert/SKILL.md +91 -0
  144. package/skills/svg-animation-motion-expert/SKILL.md +115 -0
  145. package/skills/tailwind-expert/SKILL.md +139 -187
  146. package/skills/tanstack-query-expert/SKILL.md +204 -198
  147. package/skills/tauri-expert/SKILL.md +7 -1
  148. package/skills/token-saver/SKILL.md +118 -110
  149. package/skills/typescript-expert/SKILL.md +329 -278
  150. package/skills/ui-components-expert/SKILL.md +166 -63
  151. package/skills/ui-ux-pro-max/SKILL.md +221 -200
  152. package/skills/vector-db-rag-expert/SKILL.md +208 -0
  153. package/skills/vibe-code-gardener/SKILL.md +180 -172
  154. package/skills/visual-qa-vision-agent/SKILL.md +71 -0
  155. package/skills/voice-ai-realtime-agent/SKILL.md +202 -0
  156. package/skills/vue-frontend-expert/SKILL.md +132 -0
  157. package/skills/wasm-edge-computing-expert/SKILL.md +97 -0
  158. package/skills/web-3d-graphics-expert/SKILL.md +137 -0
  159. package/skills/web-game-engine-expert/SKILL.md +102 -0
  160. package/skills/web-scraper/SKILL.md +98 -146
  161. package/skills/website-design-cloner/SKILL.md +180 -0
  162. package/skills/webxr-ar-vr-expert/SKILL.md +123 -0
  163. package/skills/wordpress-headless-expert/SKILL.md +144 -0
  164. package/skills/zero-to-prod-orchestrator/SKILL.md +231 -180
  165. package/skills/zero-trust-secret-vault/SKILL.md +88 -0
  166. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  167. package/CONTRIBUTING.md +0 -199
  168. package/SECURITY.md +0 -21
  169. package/banner.png +0 -0
  170. package/skills/senior-fullstack/SKILL.md +0 -167
  171. package/skills/senior-fullstack/references/architecture_patterns.md +0 -160
  172. package/skills/senior-fullstack/references/development_workflows.md +0 -222
  173. package/skills/senior-fullstack/references/tech_stack_guide.md +0 -190
  174. package/skills/senior-fullstack/scripts/code_quality_analyzer.py +0 -114
  175. package/skills/senior-fullstack/scripts/fullstack_scaffolder.py +0 -114
  176. package/skills/senior-fullstack/scripts/project_scaffolder.py +0 -114
  177. package/skills/seo-aeo-landing-page-writer/SKILL.md +0 -97
  178. package/skills/seo-geo/SKILL.md +0 -188
  179. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
  180. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
  181. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-310.pyc +0 -0
  182. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
  183. package/skills/ui_ux_expert/SKILL.md +0 -114
@@ -1,213 +1,219 @@
1
- ---
2
- name: data-telemetry-expert
3
- description: "Expert guide for observability, analytics, telemetry, and data pipelines (OpenTelemetry, PostHog, Mixpanel) / Panduan ahli untuk observabilitas, telemetri, dan analitik."
1
+ ---
2
+ name: data-telemetry-expert
3
+ description: "Expert guide for observability, analytics, telemetry, and data pipelines (OpenTelemetry, PostHog, Mixpanel) / Panduan ahli untuk observabilitas, telemetri, dan analitik."
4
4
  author: "Roedy Rustam"
5
- ---
6
-
7
- # Data & Telemetry Expert (OpenTelemetry 1.x / ClickHouse Edition)
8
-
9
- [English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
10
-
11
- ---
12
-
13
- <a name="english"></a>
14
- ## English
15
-
16
- ### Description
17
- Expert guide for production observability, product analytics, and data pipelines. Covers **OpenTelemetry 1.x** (stable, vendor-neutral traces/metrics/logs), **PostHog** (open-source product analytics), **ClickHouse** (OLAP analytics database), Grafana stack, and AI agent observability patterns.
18
-
19
- ### Trigger Conditions
20
- - Adding distributed tracing to a microservice or Next.js application.
21
- - Setting up structured logging and metrics collection.
22
- - Implementing product analytics (funnel analysis, feature flags, session replay).
23
- - Building a high-performance analytics pipeline with ClickHouse.
24
- - Monitoring AI agent runs, LLM token costs, and response quality.
25
-
26
- ### OpenTelemetry 1.x — Vendor-Neutral Observability
27
-
28
- OpenTelemetry (OTel) is the CNCF standard for generating traces, metrics, and logs from any application.
29
-
30
- #### Three Pillars of OTel
31
-
32
- | Signal | What It Captures | Example |
33
- |---|---|---|
34
- | **Traces** | Request flow across services | `GET /api/users` → DB query → cache |
35
- | **Metrics** | Numeric measurements over time | `http_requests_total`, `db_query_duration` |
36
- | **Logs** | Structured event records | `{"level":"error","msg":"DB timeout"}` |
37
-
38
- #### Next.js 15 + OTel Instrumentation
39
- ```typescript
40
- // instrumentation.ts (Next.js built-in OTel support)
41
- export async function register() {
42
- if (process.env.NEXT_RUNTIME === 'nodejs') {
43
- const { NodeSDK } = await import('@opentelemetry/sdk-node');
44
- const { OTLPTraceExporter } = await import('@opentelemetry/exporter-trace-otlp-http');
45
- const { OTLPMetricExporter } = await import('@opentelemetry/exporter-metrics-otlp-http');
46
- const { PeriodicExportingMetricReader } = await import('@opentelemetry/sdk-metrics');
47
- const { Resource } = await import('@opentelemetry/resources');
48
- const { SEMRESATTRS_SERVICE_NAME } = await import('@opentelemetry/semantic-conventions');
49
-
50
- const sdk = new NodeSDK({
51
- resource: new Resource({
52
- [SEMRESATTRS_SERVICE_NAME]: 'my-saas-app',
53
- }),
54
- traceExporter: new OTLPTraceExporter({
55
- url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
56
- }),
57
- metricReader: new PeriodicExportingMetricReader({
58
- exporter: new OTLPMetricExporter(),
59
- exportIntervalMillis: 30_000,
60
- }),
61
- });
62
-
63
- sdk.start();
64
- }
65
- }
66
- ```
67
-
68
- #### Custom Spans for Business Logic
69
- ```typescript
70
- import { trace, SpanStatusCode } from '@opentelemetry/api';
71
-
72
- const tracer = trace.getTracer('my-service', '1.0.0');
73
-
74
- async function processOrder(orderId: string) {
75
- return tracer.startActiveSpan('processOrder', async (span) => {
76
- span.setAttribute('order.id', orderId);
77
- span.setAttribute('order.source', 'api');
78
-
79
- try {
80
- const order = await db.order.findUnique({ where: { id: orderId } });
81
- span.setAttribute('order.amount', order.amount);
82
-
83
- const result = await chargeCustomer(order);
84
- span.setStatus({ code: SpanStatusCode.OK });
85
- return result;
86
- } catch (error) {
87
- span.recordException(error as Error);
88
- span.setStatus({ code: SpanStatusCode.ERROR, message: String(error) });
89
- throw error;
90
- } finally {
91
- span.end();
92
- }
93
- });
94
- }
95
- ```
96
-
97
- ### ClickHouse — High-Performance Analytics Database
98
- ClickHouse is the 2026 standard for analytical workloads — ingests billions of events and queries them in milliseconds:
99
-
100
- ```sql
101
- -- Create an events table optimized for time-series analytics
102
- CREATE TABLE events (
103
- event_id UUID DEFAULT generateUUIDv4(),
104
- workspace_id String,
105
- user_id String,
106
- event_name LowCardinality(String),
107
- properties JSON,
108
- timestamp DateTime64(3, 'UTC'),
109
- date Date DEFAULT toDate(timestamp)
110
- )
111
- ENGINE = MergeTree()
112
- PARTITION BY toYYYYMM(date)
113
- ORDER BY (workspace_id, event_name, timestamp)
114
- TTL date + INTERVAL 1 YEAR;
115
-
116
- -- Query: Funnel analysis — users who signed up then upgraded
117
- SELECT
118
- countIf(event_name = 'signup') AS signups,
119
- countIf(event_name = 'plan_upgraded') AS upgrades,
120
- round(countIf(event_name = 'plan_upgraded') / countIf(event_name = 'signup') * 100, 2) AS conversion_rate
121
- FROM events
122
- WHERE workspace_id = 'ws_abc'
123
- AND timestamp >= now() - INTERVAL 30 DAY;
124
- ```
125
-
126
- ```typescript
127
- // Node.js ClickHouse client
128
- import { createClient } from '@clickhouse/client';
129
-
130
- const client = createClient({ url: process.env.CLICKHOUSE_URL });
131
-
132
- await client.insert({
133
- table: 'events',
134
- values: [{
135
- workspace_id: 'ws_abc',
136
- user_id: 'user_123',
137
- event_name: 'page_view',
138
- properties: { path: '/dashboard', referrer: 'google.com' },
139
- timestamp: new Date().toISOString(),
140
- }],
141
- format: 'JSONEachRow',
142
- });
143
- ```
144
-
145
- ### PostHog — Open-Source Product Analytics
146
- ```typescript
147
- // Next.js + PostHog (client-side)
148
- import posthog from 'posthog-js';
149
-
150
- posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
151
- api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST ?? 'https://app.posthog.com',
152
- capture_pageview: false, // Manual with App Router
153
- });
154
-
155
- // Track custom events
156
- posthog.capture('feature_used', {
157
- feature: 'ai_assistant',
158
- plan: user.plan,
159
- workspace_id: workspace.id,
160
- });
161
-
162
- // Feature flags
163
- if (posthog.isFeatureEnabled('new-dashboard')) {
164
- return <NewDashboard />;
165
- }
166
- ```
167
-
168
- ### AI Agent Observability
169
- Track LLM costs, latency, and quality for production AI applications:
170
- ```typescript
171
- // Custom OTel attributes for LLM calls
172
- span.setAttribute('llm.model', 'claude-4-sonnet');
173
- span.setAttribute('llm.input_tokens', response.usage.input_tokens);
174
- span.setAttribute('llm.output_tokens', response.usage.output_tokens);
175
- span.setAttribute('llm.cost_usd', calculateCost(response.usage));
176
- span.setAttribute('llm.latency_ms', Date.now() - startTime);
177
- span.setAttribute('llm.cached', response.usage.cache_read_input_tokens > 0);
178
- ```
179
-
180
- Backend tracing tools for LLM: **LangSmith** (LangChain/LangGraph), **OpenAI Tracing** (Agents SDK), **Langfuse** (open-source, any LLM).
181
-
182
- ---
183
-
184
- <a name="bahasa-indonesia"></a>
185
- ## Bahasa Indonesia
186
-
187
- ### Deskripsi
188
- Panduan ahli untuk observabilitas produksi, analitik produk, dan pipeline data. Mencakup **OpenTelemetry 1.x** (stabil, vendor-neutral traces/metrics/logs), **PostHog** (analitik produk open-source), **ClickHouse** (database analitik OLAP), dan pola observabilitas agen AI.
189
-
190
- ### Kondisi Pemicu
191
- - Menambahkan distributed tracing ke microservice atau aplikasi Next.js.
192
- - Menyiapkan structured logging dan pengumpulan metrik.
193
- - Mengimplementasikan analitik produk (analisis funnel, feature flags, session replay).
194
- - Membangun pipeline analitik berkinerja tinggi dengan ClickHouse.
195
- - Memantau run agen AI, biaya token LLM, dan kualitas respons.
196
-
197
- ### OpenTelemetry 1.x Observabilitas Vendor-Neutral
198
-
199
- Tiga pilar OTel:
200
- - **Traces**: Aliran permintaan antar layanan.
201
- - **Metrics**: Pengukuran numerik dari waktu ke waktu.
202
- - **Logs**: Catatan peristiwa terstruktur.
203
-
204
- Integrasikan dengan Next.js 15 melalui file `instrumentation.ts` bawaan — OTel SDK otomatis mendistribusikan trace ke backend pilihan (Grafana Tempo, Jaeger, Honeycomb, Datadog, dll.).
205
-
206
- ### ClickHouse Database Analitik Berkinerja Tinggi
207
- ClickHouse adalah standar 2026 untuk workload analitik — menyerap miliaran event dan melakukan query dalam milidetik. Gunakan engine `MergeTree` dengan partisi per bulan dan pengurutan berdasarkan kolom yang sering di-filter.
208
-
209
- ### PostHog — Analitik Produk Open-Source
210
- PostHog menyediakan analisis funnel, feature flags, session replay, dan A/B testing dalam satu platform yang dapat di-self-host. Integrasikan dengan Next.js App Router menggunakan `posthog-js`.
211
-
212
- ### Observabilitas Agen AI
213
- Lacak biaya LLM, latensi, dan kualitas untuk aplikasi AI produksi menggunakan custom OTel attributes. Gunakan LangSmith, OpenAI Tracing, atau Langfuse (open-source) sebagai backend tracing LLM.
5
+ ---
6
+
7
+ # Data & Telemetry Expert (OpenTelemetry 1.x / ClickHouse 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
+ Expert guide for production observability, product analytics, and data pipelines. Covers **OpenTelemetry 1.x** (stable, vendor-neutral traces/metrics/logs), **PostHog** (open-source product analytics), **ClickHouse** (OLAP analytics database), Grafana stack, and AI agent observability patterns.
21
+
22
+ ### Trigger Conditions
23
+ - Adding distributed tracing to a microservice or Next.js application.
24
+ - Setting up structured logging and metrics collection.
25
+ - Implementing product analytics (funnel analysis, feature flags, session replay).
26
+ - Building a high-performance analytics pipeline with ClickHouse.
27
+ - Monitoring AI agent runs, LLM token costs, and response quality.
28
+
29
+ ### OpenTelemetry 1.x — Vendor-Neutral Observability
30
+
31
+ OpenTelemetry (OTel) is the CNCF standard for generating traces, metrics, and logs from any application.
32
+
33
+ #### Three Pillars of OTel
34
+
35
+ | Signal | What It Captures | Example |
36
+ |---|---|---|
37
+ | **Traces** | Request flow across services | `GET /api/users` → DB query → cache |
38
+ | **Metrics** | Numeric measurements over time | `http_requests_total`, `db_query_duration` |
39
+ | **Logs** | Structured event records | `{"level":"error","msg":"DB timeout"}` |
40
+
41
+ #### Next.js 15 + OTel Instrumentation
42
+ ```typescript
43
+ // instrumentation.ts (Next.js built-in OTel support)
44
+ export async function register() {
45
+ if (process.env.NEXT_RUNTIME === 'nodejs') {
46
+ const { NodeSDK } = await import('@opentelemetry/sdk-node');
47
+ const { OTLPTraceExporter } = await import('@opentelemetry/exporter-trace-otlp-http');
48
+ const { OTLPMetricExporter } = await import('@opentelemetry/exporter-metrics-otlp-http');
49
+ const { PeriodicExportingMetricReader } = await import('@opentelemetry/sdk-metrics');
50
+ const { Resource } = await import('@opentelemetry/resources');
51
+ const { SEMRESATTRS_SERVICE_NAME } = await import('@opentelemetry/semantic-conventions');
52
+
53
+ const sdk = new NodeSDK({
54
+ resource: new Resource({
55
+ [SEMRESATTRS_SERVICE_NAME]: 'my-saas-app',
56
+ }),
57
+ traceExporter: new OTLPTraceExporter({
58
+ url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
59
+ }),
60
+ metricReader: new PeriodicExportingMetricReader({
61
+ exporter: new OTLPMetricExporter(),
62
+ exportIntervalMillis: 30_000,
63
+ }),
64
+ });
65
+
66
+ sdk.start();
67
+ }
68
+ }
69
+ ```
70
+
71
+ #### Custom Spans for Business Logic
72
+ ```typescript
73
+ import { trace, SpanStatusCode } from '@opentelemetry/api';
74
+
75
+ const tracer = trace.getTracer('my-service', '1.0.0');
76
+
77
+ async function processOrder(orderId: string) {
78
+ return tracer.startActiveSpan('processOrder', async (span) => {
79
+ span.setAttribute('order.id', orderId);
80
+ span.setAttribute('order.source', 'api');
81
+
82
+ try {
83
+ const order = await db.order.findUnique({ where: { id: orderId } });
84
+ span.setAttribute('order.amount', order.amount);
85
+
86
+ const result = await chargeCustomer(order);
87
+ span.setStatus({ code: SpanStatusCode.OK });
88
+ return result;
89
+ } catch (error) {
90
+ span.recordException(error as Error);
91
+ span.setStatus({ code: SpanStatusCode.ERROR, message: String(error) });
92
+ throw error;
93
+ } finally {
94
+ span.end();
95
+ }
96
+ });
97
+ }
98
+ ```
99
+
100
+ ### ClickHouse — High-Performance Analytics Database
101
+ ClickHouse is the 2026 standard for analytical workloads — ingests billions of events and queries them in milliseconds:
102
+
103
+ ```sql
104
+ -- Create an events table optimized for time-series analytics
105
+ CREATE TABLE events (
106
+ event_id UUID DEFAULT generateUUIDv4(),
107
+ workspace_id String,
108
+ user_id String,
109
+ event_name LowCardinality(String),
110
+ properties JSON,
111
+ timestamp DateTime64(3, 'UTC'),
112
+ date Date DEFAULT toDate(timestamp)
113
+ )
114
+ ENGINE = MergeTree()
115
+ PARTITION BY toYYYYMM(date)
116
+ ORDER BY (workspace_id, event_name, timestamp)
117
+ TTL date + INTERVAL 1 YEAR;
118
+
119
+ -- Query: Funnel analysis — users who signed up then upgraded
120
+ SELECT
121
+ countIf(event_name = 'signup') AS signups,
122
+ countIf(event_name = 'plan_upgraded') AS upgrades,
123
+ round(countIf(event_name = 'plan_upgraded') / countIf(event_name = 'signup') * 100, 2) AS conversion_rate
124
+ FROM events
125
+ WHERE workspace_id = 'ws_abc'
126
+ AND timestamp >= now() - INTERVAL 30 DAY;
127
+ ```
128
+
129
+ ```typescript
130
+ // Node.js ClickHouse client
131
+ import { createClient } from '@clickhouse/client';
132
+
133
+ const client = createClient({ url: process.env.CLICKHOUSE_URL });
134
+
135
+ await client.insert({
136
+ table: 'events',
137
+ values: [{
138
+ workspace_id: 'ws_abc',
139
+ user_id: 'user_123',
140
+ event_name: 'page_view',
141
+ properties: { path: '/dashboard', referrer: 'google.com' },
142
+ timestamp: new Date().toISOString(),
143
+ }],
144
+ format: 'JSONEachRow',
145
+ });
146
+ ```
147
+
148
+ ### PostHog Open-Source Product Analytics
149
+ ```typescript
150
+ // Next.js + PostHog (client-side)
151
+ import posthog from 'posthog-js';
152
+
153
+ posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
154
+ api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST ?? 'https://app.posthog.com',
155
+ capture_pageview: false, // Manual with App Router
156
+ });
157
+
158
+ // Track custom events
159
+ posthog.capture('feature_used', {
160
+ feature: 'ai_assistant',
161
+ plan: user.plan,
162
+ workspace_id: workspace.id,
163
+ });
164
+
165
+ // Feature flags
166
+ if (posthog.isFeatureEnabled('new-dashboard')) {
167
+ return <NewDashboard />;
168
+ }
169
+ ```
170
+
171
+ ### AI Agent Observability
172
+ Track LLM costs, latency, and quality for production AI applications:
173
+ ```typescript
174
+ // Custom OTel attributes for LLM calls
175
+ span.setAttribute('llm.model', 'claude-4-sonnet');
176
+ span.setAttribute('llm.input_tokens', response.usage.input_tokens);
177
+ span.setAttribute('llm.output_tokens', response.usage.output_tokens);
178
+ span.setAttribute('llm.cost_usd', calculateCost(response.usage));
179
+ span.setAttribute('llm.latency_ms', Date.now() - startTime);
180
+ span.setAttribute('llm.cached', response.usage.cache_read_input_tokens > 0);
181
+ ```
182
+
183
+ Backend tracing tools for LLM: **LangSmith** (LangChain/LangGraph), **OpenAI Tracing** (Agents SDK), **Langfuse** (open-source, any LLM).
184
+
185
+ ---
186
+
187
+ <a name="bahasa-indonesia"></a>
188
+ ## Bahasa Indonesia
189
+
190
+ ### Integrasi Orkestrasi
191
+ Terhubung dan mengorkestrasi skill domain yang relevan seperti `brainstorming`, `zero-to-prod-orchestrator`, dan `project-context-mapper` untuk memastikan eksekusi yang kohesif.
192
+
193
+ ### Deskripsi
194
+ Panduan ahli untuk observabilitas produksi, analitik produk, dan pipeline data. Mencakup **OpenTelemetry 1.x** (stabil, vendor-neutral traces/metrics/logs), **PostHog** (analitik produk open-source), **ClickHouse** (database analitik OLAP), dan pola observabilitas agen AI.
195
+
196
+ ### Kondisi Pemicu
197
+ - Menambahkan distributed tracing ke microservice atau aplikasi Next.js.
198
+ - Menyiapkan structured logging dan pengumpulan metrik.
199
+ - Mengimplementasikan analitik produk (analisis funnel, feature flags, session replay).
200
+ - Membangun pipeline analitik berkinerja tinggi dengan ClickHouse.
201
+ - Memantau run agen AI, biaya token LLM, dan kualitas respons.
202
+
203
+ ### OpenTelemetry 1.x — Observabilitas Vendor-Neutral
204
+
205
+ Tiga pilar OTel:
206
+ - **Traces**: Aliran permintaan antar layanan.
207
+ - **Metrics**: Pengukuran numerik dari waktu ke waktu.
208
+ - **Logs**: Catatan peristiwa terstruktur.
209
+
210
+ Integrasikan dengan Next.js 15 melalui file `instrumentation.ts` bawaan OTel SDK otomatis mendistribusikan trace ke backend pilihan (Grafana Tempo, Jaeger, Honeycomb, Datadog, dll.).
211
+
212
+ ### ClickHouse Database Analitik Berkinerja Tinggi
213
+ ClickHouse adalah standar 2026 untuk workload analitik menyerap miliaran event dan melakukan query dalam milidetik. Gunakan engine `MergeTree` dengan partisi per bulan dan pengurutan berdasarkan kolom yang sering di-filter.
214
+
215
+ ### PostHog — Analitik Produk Open-Source
216
+ PostHog menyediakan analisis funnel, feature flags, session replay, dan A/B testing dalam satu platform yang dapat di-self-host. Integrasikan dengan Next.js App Router menggunakan `posthog-js`.
217
+
218
+ ### Observabilitas Agen AI
219
+ Lacak biaya LLM, latensi, dan kualitas untuk aplikasi AI produksi menggunakan custom OTel attributes. Gunakan LangSmith, OpenAI Tracing, atau Langfuse (open-source) sebagai backend tracing LLM.
@@ -0,0 +1,154 @@
1
+ ---
2
+ name: data-visualization-expert
3
+ description: "Expert guide for data visualization, charts, and dashboards using D3.js, Recharts, Chart.js, Nivo, and Tremor / Panduan ahli visualisasi data, chart, dan dashboard menggunakan D3.js, Recharts, Chart.js, Nivo, dan Tremor."
4
+ author: "Roedy Rustam"
5
+ ---
6
+
7
+ # Data Visualization 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
+ - **`senior-frontend`**: React component architecture for chart components.
18
+ - **`data-telemetry-expert`**: Analytics data pipelines feeding visualizations.
19
+ - **`state-management-expert`**: Managing chart state, filters, and drill-down navigation.
20
+ - **`performance-web-vitals`**: Optimizing chart rendering performance with large datasets.
21
+ - **`sse-websocket-streaming-expert`**: Real-time data feeds for live dashboards.
22
+
23
+ ### Description
24
+ Expert guide for building production-quality data visualizations and analytics dashboards. Covers D3.js v7 (low-level SVG/Canvas), Recharts (React-native charts), Chart.js 4 (lightweight canvas), Nivo (D3-powered React components), Tremor (dashboard components), and Apache ECharts. Includes responsive charts, real-time updates, accessibility, large dataset optimization, and dashboard layout patterns.
25
+
26
+ ### Trigger Conditions
27
+ - Building analytics dashboards or admin panels with charts.
28
+ - Creating data visualizations (line, bar, pie, scatter, heatmap, treemap).
29
+ - Implementing real-time updating charts or live data feeds.
30
+ - Choosing a charting library for React, Vue, or vanilla JS.
31
+ - Optimizing chart performance with large datasets (10K+ data points).
32
+
33
+ ---
34
+
35
+ ### Library Selection Guide
36
+
37
+ | Library | Framework | Rendering | Customization | Learning Curve | Best For |
38
+ |---------|-----------|-----------|---------------|----------------|----------|
39
+ | D3.js v7 | Agnostic | SVG/Canvas | ★★★★★ | High | Custom visualizations |
40
+ | Recharts | React | SVG | ★★★★ | Low | Standard React charts |
41
+ | Nivo | React | SVG/Canvas | ★★★★★ | Medium | Beautiful, animated charts |
42
+ | Tremor | React | SVG (Recharts) | ★★★ | Very Low | Dashboards, KPI cards |
43
+ | Chart.js 4 | Agnostic | Canvas | ★★★ | Low | Lightweight, simple charts |
44
+ | ECharts | Agnostic | Canvas/SVG | ★★★★★ | Medium | Complex, interactive, large data |
45
+
46
+ **Recommendation:** Use **Tremor** for rapid dashboard prototyping. Use **Recharts** for standard React charts. Use **D3.js** only for highly custom visualizations.
47
+
48
+ ### Core Patterns
49
+
50
+ #### 1. Recharts (React Standard)
51
+
52
+ ```tsx
53
+ import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts';
54
+
55
+ function RevenueChart({ data }: { data: { date: string; revenue: number }[] }) {
56
+ return (
57
+ <ResponsiveContainer width="100%" height={400}>
58
+ <LineChart data={data}>
59
+ <CartesianGrid strokeDasharray="3 3" stroke="#374151" />
60
+ <XAxis dataKey="date" stroke="#9CA3AF" />
61
+ <YAxis stroke="#9CA3AF" tickFormatter={(v) => `$${(v / 1000).toFixed(0)}K`} />
62
+ <Tooltip
63
+ contentStyle={{ backgroundColor: '#1F2937', border: 'none', borderRadius: 8 }}
64
+ formatter={(value: number) => [`$${value.toLocaleString()}`, 'Revenue']}
65
+ />
66
+ <Line type="monotone" dataKey="revenue" stroke="#8B5CF6" strokeWidth={2} dot={false} />
67
+ </LineChart>
68
+ </ResponsiveContainer>
69
+ );
70
+ }
71
+ ```
72
+
73
+ #### 2. Tremor Dashboard Components
74
+
75
+ ```tsx
76
+ import { Card, Metric, Text, AreaChart, BarList, Grid } from '@tremor/react';
77
+
78
+ function AnalyticsDashboard({ metrics, chartData, topPages }) {
79
+ return (
80
+ <Grid numItemsMd={2} numItemsLg={3} className="gap-6">
81
+ <Card>
82
+ <Text>Total Revenue</Text>
83
+ <Metric>$845,230</Metric>
84
+ </Card>
85
+ <Card>
86
+ <Text>Revenue Over Time</Text>
87
+ <AreaChart
88
+ data={chartData}
89
+ index="month"
90
+ categories={['Revenue', 'Expenses']}
91
+ colors={['violet', 'rose']}
92
+ valueFormatter={(v) => `$${(v / 1000).toFixed(0)}K`}
93
+ />
94
+ </Card>
95
+ <Card>
96
+ <Text>Top Pages</Text>
97
+ <BarList data={topPages} className="mt-4" />
98
+ </Card>
99
+ </Grid>
100
+ );
101
+ }
102
+ ```
103
+
104
+ #### 3. Real-Time Chart Updates
105
+
106
+ ```tsx
107
+ import { useEffect, useState } from 'react';
108
+
109
+ function LiveMetricsChart() {
110
+ const [data, setData] = useState<{ time: string; value: number }[]>([]);
111
+
112
+ useEffect(() => {
113
+ const es = new EventSource('/api/metrics/stream');
114
+ es.onmessage = (event) => {
115
+ const point = JSON.parse(event.data);
116
+ setData((prev) => [...prev.slice(-60), point]); // Keep last 60 points
117
+ };
118
+ return () => es.close();
119
+ }, []);
120
+
121
+ return <LineChart data={data} /* ... */ />;
122
+ }
123
+ ```
124
+
125
+ #### 4. Large Dataset Optimization
126
+ - Use **Canvas** rendering (ECharts, Chart.js) for >5K data points.
127
+ - Implement **data aggregation** on the server (downsample to 500-1000 points for display).
128
+ - Use **windowed rendering** — only render visible data points.
129
+ - Apply **debounced zoom/pan** to prevent excessive re-renders.
130
+
131
+ ### Dashboard Layout Patterns
132
+ - **KPI Row → Charts → Tables**: Top metrics cards, then charts, then detail tables.
133
+ - **Filter Sidebar**: Global date range, category, and dimension filters.
134
+ - **Drill-down**: Click chart segment → navigate to detail view.
135
+ - **Export**: CSV/PNG/PDF export for all charts.
136
+
137
+ ---
138
+
139
+ <a name="bahasa-indonesia"></a>
140
+ ## Bahasa Indonesia
141
+
142
+ ### Integrasi Orkestrasi
143
+ - **`senior-frontend`**: Arsitektur komponen React untuk komponen chart.
144
+ - **`data-telemetry-expert`**: Pipeline data analitik yang mengisi visualisasi.
145
+ - **`state-management-expert`**: Mengelola state chart, filter, dan navigasi drill-down.
146
+
147
+ ### Deskripsi
148
+ Panduan ahli untuk membangun visualisasi data dan dashboard analitik berkualitas produksi. Mencakup D3.js v7, Recharts, Chart.js 4, Nivo, Tremor, dan Apache ECharts. Termasuk chart responsif, update real-time, aksesibilitas, optimasi dataset besar, dan pola layout dashboard.
149
+
150
+ ### Kondisi Pemicu
151
+ - Membangun dashboard analitik atau panel admin dengan chart.
152
+ - Membuat visualisasi data (line, bar, pie, scatter, heatmap, treemap).
153
+ - Mengimplementasikan chart yang update real-time atau feed data langsung.
154
+ - Memilih library charting untuk React, Vue, atau vanilla JS.