vibes-plug 1.0.0 → 2.5.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 (123) hide show
  1. package/.github/workflows/publish.yml +20 -0
  2. package/AGENTS.md +66 -0
  3. package/BLUEPRINT.md +152 -60
  4. package/CHANGELOG.md +50 -0
  5. package/README.md +346 -194
  6. package/package.json +25 -25
  7. package/plugin.json +1 -1
  8. package/skills/ai-cost-token-optimizer/SKILL.md +52 -0
  9. package/skills/ai-llm-integration-expert/SKILL.md +180 -162
  10. package/skills/api-design-expert/SKILL.md +314 -310
  11. package/skills/app-analyzer-optimizer/SKILL.md +193 -189
  12. package/skills/apple-ecosystem-expert/SKILL.md +142 -0
  13. package/skills/async-queue-temporal-expert/SKILL.md +54 -0
  14. package/skills/authentication-identity-expert/SKILL.md +251 -20
  15. package/skills/auto-doc-updater/SKILL.md +214 -204
  16. package/skills/autonomous-chaos-monkey/SKILL.md +63 -0
  17. package/skills/autonomous-red-teamer/SKILL.md +59 -0
  18. package/skills/autonomous-swarm-director/SKILL.md +69 -0
  19. package/skills/autonomous-tdd-debugger/SKILL.md +65 -0
  20. package/skills/bootstrap-to-modern/SKILL.md +90 -86
  21. package/skills/brainstorming/SKILL.md +373 -353
  22. package/skills/browser-automation-expert/SKILL.md +46 -0
  23. package/skills/ci-cd-devops-architect/SKILL.md +72 -45
  24. package/skills/cloud-hosting-expert/SKILL.md +244 -244
  25. package/skills/coderabbit/SKILL.md +192 -192
  26. package/skills/cron-scheduler-expert/SKILL.md +298 -0
  27. package/skills/data-telemetry-expert/SKILL.md +213 -213
  28. package/skills/database-orm-expert/SKILL.md +294 -294
  29. package/skills/dependency-upgrade-migrator/SKILL.md +295 -0
  30. package/skills/design-system-architect/SKILL.md +27 -10
  31. package/skills/doku-mcp-server/SKILL.md +251 -0
  32. package/skills/doku-payment-gateway/SKILL.md +227 -0
  33. package/skills/e2e-testing-expert/SKILL.md +315 -315
  34. package/skills/edge-serverless-db-expert/SKILL.md +43 -0
  35. package/skills/email-notification-expert/SKILL.md +362 -0
  36. package/skills/error-resilience-expert/SKILL.md +480 -0
  37. package/skills/event-driven-architect/SKILL.md +81 -81
  38. package/skills/feature-flag-analytics-expert/SKILL.md +46 -0
  39. package/skills/file-upload-media-expert/SKILL.md +431 -0
  40. package/skills/form-validation-expert/SKILL.md +401 -0
  41. package/skills/fullstack-expert/SKILL.md +202 -202
  42. package/skills/fullstack-expert/references/api_design_guide.md +466 -466
  43. package/skills/fullstack-expert/references/multi_language_backend.md +528 -528
  44. package/skills/fullstack-expert/scripts/api_contract_validator.py +253 -253
  45. package/skills/fullstack-expert/scripts/architecture_analyzer.py +326 -326
  46. package/skills/gemini-agent-booster/SKILL.md +135 -135
  47. package/skills/global-a11y-i18n-expert/SKILL.md +81 -81
  48. package/skills/glsl-shader-expert/SKILL.md +101 -0
  49. package/skills/go-programming-expert/SKILL.md +295 -295
  50. package/skills/graphql-apollo-expert/SKILL.md +108 -0
  51. package/skills/hig/SKILL.md +188 -188
  52. package/skills/hyper-context-synthesizer/SKILL.md +55 -0
  53. package/skills/js-backend-expert/SKILL.md +34 -9
  54. package/skills/legacy-code-translator/SKILL.md +65 -0
  55. package/skills/llm-cost-arbitrage-router/SKILL.md +59 -0
  56. package/skills/logging-error-tracking-expert/SKILL.md +338 -0
  57. package/skills/mcp-client-orchestrator/SKILL.md +70 -0
  58. package/skills/mcp-server-architect/SKILL.md +194 -194
  59. package/skills/micro-frontend-architect/SKILL.md +106 -0
  60. package/skills/mobile-expo-expert/SKILL.md +186 -186
  61. package/skills/mobile-push-notification-expert/SKILL.md +51 -0
  62. package/skills/monday-design-aesthetic/SKILL.md +67 -67
  63. package/skills/monorepo-architect/SKILL.md +227 -227
  64. package/skills/mpa-orchestrator/SKILL.md +101 -101
  65. package/skills/multi-agent-orchestration/SKILL.md +234 -234
  66. package/skills/multiple-entry-points/SKILL.md +55 -55
  67. package/skills/mvc-expert/SKILL.md +231 -231
  68. package/skills/payment-gateway-expert/SKILL.md +45 -45
  69. package/skills/performance-web-vitals/SKILL.md +332 -332
  70. package/skills/post-quantum-crypto-migrator/SKILL.md +57 -0
  71. package/skills/prd-architect/SKILL.md +201 -191
  72. package/skills/proactive-background-watcher/SKILL.md +62 -0
  73. package/skills/production-ready-hardener/PRODUCTION_READINESS_REPORT.md +67 -0
  74. package/skills/production-ready-hardener/SKILL.md +173 -186
  75. package/skills/production-ready-hardener/references/production_checklist.md +161 -161
  76. package/skills/production-ready-hardener/scripts/production_readiness_scanner.py +881 -875
  77. package/skills/project-context-mapper/SKILL.md +79 -0
  78. package/skills/python-programming-expert/SKILL.md +263 -132
  79. package/skills/rate-limit-abuse-prevention/SKILL.md +371 -0
  80. package/skills/realtime-collaboration-expert/SKILL.md +45 -45
  81. package/skills/rust-programming-expert/SKILL.md +235 -235
  82. package/skills/saas-billing/SKILL.md +377 -377
  83. package/skills/saas-multi-tenant/SKILL.md +251 -237
  84. package/skills/saas-mvp-launcher/SKILL.md +10 -0
  85. package/skills/saas-transformer/SKILL.md +187 -144
  86. package/skills/saas-transformer/references/billing_integration_guide.md +401 -401
  87. package/skills/saas-transformer/references/feature_gating_patterns.md +137 -137
  88. package/skills/saas-transformer/references/saas_transformation_checklist.md +121 -121
  89. package/skills/saas-transformer/scripts/saas_transformation_scanner.py +39 -29
  90. package/skills/scalability-clean-code/SKILL.md +229 -229
  91. package/skills/self-evolving-memory-graph/SKILL.md +75 -0
  92. package/skills/self-healing-cloud-orchestrator/SKILL.md +57 -0
  93. package/skills/senior-frontend/SKILL.md +161 -161
  94. package/skills/senior-fullstack/SKILL.md +167 -167
  95. package/skills/seo/SKILL.md +235 -225
  96. package/skills/seo-geo/SKILL.md +188 -188
  97. package/skills/session-context-loader/SKILL.md +77 -0
  98. package/skills/session-handoff-resume/SKILL.md +158 -158
  99. package/skills/skill_baru/SKILL.md +172 -147
  100. package/skills/spa-orchestrator/SKILL.md +288 -288
  101. package/skills/state-management-expert/SKILL.md +272 -272
  102. package/skills/supabase-security-expert/SKILL.md +243 -243
  103. package/skills/tailwind-expert/SKILL.md +188 -188
  104. package/skills/tanstack-query-expert/SKILL.md +199 -199
  105. package/skills/token-saver/SKILL.md +119 -111
  106. package/skills/typescript-expert/SKILL.md +324 -279
  107. package/skills/ui-components-expert/SKILL.md +263 -46
  108. package/skills/ui-ux-pro-max/SKILL.md +202 -201
  109. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
  110. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-310.pyc +0 -0
  111. package/skills/ui_ux_expert/SKILL.md +17 -6
  112. package/skills/vector-db-rag-expert/SKILL.md +52 -0
  113. package/skills/vibe-code-gardener/SKILL.md +181 -173
  114. package/skills/visual-qa-vision-agent/SKILL.md +65 -0
  115. package/skills/vue-frontend-expert/SKILL.md +126 -0
  116. package/skills/web-3d-graphics-expert/SKILL.md +131 -0
  117. package/skills/web-game-engine-expert/SKILL.md +96 -0
  118. package/skills/web-scraper/SKILL.md +207 -205
  119. package/skills/website-design-cloner/SKILL.md +174 -0
  120. package/skills/webxr-ar-vr-expert/SKILL.md +117 -0
  121. package/skills/zero-to-prod-orchestrator/SKILL.md +206 -180
  122. package/skills/zero-trust-secret-vault/SKILL.md +40 -0
  123. package/vibes-swarm-demo.gif +0 -0
@@ -0,0 +1,227 @@
1
+ ---
2
+ name: doku-payment-gateway
3
+ description: "Expert guide for integrating DOKU Payment Gateway (Jokul API v2). Covers HMAC-SHA256 header signature calculation, Checkout & Direct APIs (VA, QRIS, E-Wallet, Credit Card), webhook notification verification, and sandbox/production setup / Panduan ahli integrasi DOKU Payment Gateway."
4
+ author: "Roedy Rustam"
5
+ ---
6
+
7
+ # DOKU Payment Gateway Integration / Integrasi Payment Gateway DOKU
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 implementing DOKU Payment Gateway (Jokul API v2) integrations based on official [DOKU Developers Documentation](https://developers.doku.com/). Covers authentication headers, SHA-256 Digest generation, HMAC-SHA256 request signature construction, Webhook notification verification, Checkout Payment Links, Direct Payments (Virtual Account, QRIS, E-Wallet, Credit Card), error handling, and sandbox/production deployment.
18
+
19
+ ### Trigger Conditions
20
+ Activate this skill when the user is:
21
+ - Building or refactoring DOKU Payment Gateway integration in Node.js, TypeScript, Python, Go, PHP, or Java.
22
+ - Implementing HMAC-SHA256 signature calculations or notification signature verification for DOKU API.
23
+ - Setting up DOKU Virtual Account (BCA, Mandiri, BRI, BNI, Permata, DOKU VA), QRIS, E-Wallet (OVO, ShopeePay, DANA, LinkAja), or Credit Card APIs.
24
+ - Debugging DOKU API authorization errors (e.g., `Authorization Failed`, invalid signature, incorrect timestamp format).
25
+
26
+ ---
27
+
28
+ ### Core Architecture & Credentials
29
+
30
+ #### Environment Gateways
31
+ | Environment | Base URL | Dashboard Portal |
32
+ |---|---|---|
33
+ | **Sandbox** | `https://api-sandbox.doku.com` | `https://sandbox.doku.com` |
34
+ | **Production** | `https://api.doku.com` | `https://dashboard.doku.com` |
35
+
36
+ #### Mandatory Headers
37
+ Every request sent to DOKU API requires the following headers:
38
+ - `Client-Id`: Merchant Client ID from DOKU Back Office.
39
+ - `Request-Id`: Unique random string generated for each request (e.g., UUID v4).
40
+ - `Request-Timestamp`: UTC ISO8601 timestamp string (e.g., `2026-08-07T13:00:00Z`).
41
+ - `Request-Target`: Target API endpoint path (e.g., `/checkout/v1/payment` or `/doku-virtual-account/v2/payment-code`).
42
+ - `Digest`: Base64 encoded SHA-256 hash of the JSON payload string (Omitted for `GET` requests).
43
+ - `Signature`: Format `HMACSHA256=<base64-signature>`.
44
+
45
+ ---
46
+
47
+ ### Signature Calculation Formula
48
+
49
+ #### 1. Digest Calculation (POST / PUT / PATCH)
50
+ ```text
51
+ Raw Body -> SHA-256 Hash -> Base64 Encode -> Digest String
52
+ ```
53
+
54
+ #### 2. Signature Component String
55
+ The components MUST be concatenated with newline `\n` without extra whitespace:
56
+ ```text
57
+ Client-Id:<CLIENT_ID>\nRequest-Id:<REQUEST_ID>\nRequest-Timestamp:<TIMESTAMP>\nRequest-Target:<TARGET_PATH>\nDigest:<DIGEST_STRING>
58
+ ```
59
+ *Note: For GET requests, omit `\nDigest:<DIGEST_STRING>`.*
60
+
61
+ #### 3. HMAC-SHA256 Signing
62
+ ```text
63
+ Raw String + Secret Key -> HMAC-SHA256 Hash -> Base64 Encode -> Prepend "HMACSHA256="
64
+ ```
65
+
66
+ ---
67
+
68
+ ### TypeScript / Node.js Implementation Example
69
+
70
+ ```typescript
71
+ import crypto from 'crypto';
72
+
73
+ interface DokuConfig {
74
+ clientId: string;
75
+ secretKey: string;
76
+ isProduction: boolean;
77
+ }
78
+
79
+ export class DokuService {
80
+ private clientId: string;
81
+ private secretKey: string;
82
+ private baseUrl: string;
83
+
84
+ constructor(config: DokuConfig) {
85
+ this.clientId = config.clientId;
86
+ this.secretKey = config.secretKey;
87
+ this.baseUrl = config.isProduction
88
+ ? 'https://api.doku.com'
89
+ : 'https://api-sandbox.doku.com';
90
+ }
91
+
92
+ private generateDigest(body: object): string {
93
+ const jsonBody = JSON.stringify(body);
94
+ return crypto.createHash('sha256').update(jsonBody, 'utf8').digest('base64');
95
+ }
96
+
97
+ private generateSignature(
98
+ requestId: string,
99
+ timestamp: string,
100
+ targetPath: string,
101
+ digest?: string
102
+ ): string {
103
+ let rawComponent = `Client-Id:${this.clientId}\nRequest-Id:${requestId}\nRequest-Timestamp:${timestamp}\nRequest-Target:${targetPath}`;
104
+
105
+ if (digest) {
106
+ rawComponent += `\nDigest:${digest}`;
107
+ }
108
+
109
+ const hmac = crypto.createHmac('sha256', this.secretKey);
110
+ hmac.update(rawComponent);
111
+ const base64Hmac = hmac.digest('base64');
112
+
113
+ return `HMACSHA256=${base64Hmac}`;
114
+ }
115
+
116
+ public async createCheckoutPayment(payload: {
117
+ order: { amount: number; invoice_number: string };
118
+ payment: { payment_due_date?: number };
119
+ customer: { name: string; email: string };
120
+ }) {
121
+ const targetPath = '/checkout/v1/payment';
122
+ const requestId = crypto.randomUUID();
123
+ const timestamp = new Date().toISOString().replace(/\.\d{3}Z$/, 'Z');
124
+ const digest = this.generateDigest(payload);
125
+ const signature = this.generateSignature(requestId, timestamp, targetPath, digest);
126
+
127
+ const response = await fetch(`${this.baseUrl}${targetPath}`, {
128
+ method: 'POST',
129
+ headers: {
130
+ 'Content-Type': 'application/json',
131
+ 'Client-Id': this.clientId,
132
+ 'Request-Id': requestId,
133
+ 'Request-Timestamp': timestamp,
134
+ 'Request-Target': targetPath,
135
+ 'Digest': digest,
136
+ 'Signature': signature,
137
+ },
138
+ body: JSON.stringify(payload),
139
+ });
140
+
141
+ return await response.json();
142
+ }
143
+ }
144
+ ```
145
+
146
+ ---
147
+
148
+ ### Webhook / Notification Signature Verification
149
+
150
+ When DOKU sends a payment status notification to your webhook URL, you MUST verify its signature before processing.
151
+
152
+ ```typescript
153
+ import crypto from 'crypto';
154
+ import { Request, Response } from 'express';
155
+
156
+ export function verifyDokuWebhook(req: Request, secretKey: string): boolean {
157
+ const clientId = req.headers['client-id'] as string;
158
+ const requestId = req.headers['request-id'] as string;
159
+ const timestamp = req.headers['request-timestamp'] as string;
160
+ const targetPath = req.originalUrl || req.url;
161
+ const receivedSignature = req.headers['signature'] as string;
162
+
163
+ const rawBody = JSON.stringify(req.body);
164
+ const digest = crypto.createHash('sha256').update(rawBody, 'utf8').digest('base64');
165
+
166
+ const component = `Client-Id:${clientId}\nRequest-Id:${requestId}\nRequest-Timestamp:${timestamp}\nRequest-Target:${targetPath}\nDigest:${digest}`;
167
+
168
+ const calculatedHmac = crypto
169
+ .createHmac('sha256', secretKey)
170
+ .update(component)
171
+ .digest('base64');
172
+
173
+ const expectedSignature = `HMACSHA256=${calculatedHmac}`;
174
+
175
+ return crypto.timingSafeEqual(
176
+ Buffer.from(receivedSignature),
177
+ Buffer.from(expectedSignature)
178
+ );
179
+ }
180
+ ```
181
+
182
+
183
+ ---
184
+
185
+ ### Common Pitfalls to Avoid
186
+
187
+ | Anti-Pattern | Issue | Solution |
188
+ |---|---|---|
189
+ | Extra trailing newline in component string | Signature validation fails (`Authorization Failed`) | Do not add `\n` at the end of the raw component string. |
190
+ | Non-UTC ISO8601 timestamp | Timestamp mismatch error | Always format timestamp with UTC Z timezone (e.g. `2026-08-07T13:00:00Z`). |
191
+ | Including Digest on `GET` requests | Signature mismatch | Omit `Digest` line completely when calculating signature for `GET` endpoints. |
192
+ | Unsorted JSON body in digest calculation | Body hash mismatch | Pass exact raw stringified JSON body used in HTTP POST. |
193
+ | Missing Idempotency Check | Duplicate processing on webhooks | Save `invoice_number` / `transaction_id` status in DB before executing state changes. |
194
+
195
+ ---
196
+
197
+ <a name="bahasa-indonesia"></a>
198
+ ## Bahasa Indonesia
199
+
200
+ ### Deskripsi
201
+ Panduan ahli untuk mengintegrasikan DOKU Payment Gateway (Jokul API v2) sesuai standar dokumentasi resmi [DOKU Developers Portal](https://developers.doku.com/). Mencakup header autentikasi, pembuatan Digest SHA-256, pembuatan Signature HMAC-SHA256, verifikasi Webhook/Notifikasi, Checkout Payment Link, Direct Payment (Virtual Account, QRIS, E-Wallet, Kartu Kredit), penanganan error, dan migrasi Sandbox ke Production.
202
+
203
+ ### Kondisi Pemicu
204
+ Aktifkan skill ini ketika pengguna sedang:
205
+ - Membangun atau merefaktor integrasi DOKU Payment Gateway di Node.js, TypeScript, Python, Go, PHP, atau Java.
206
+ - Mengimplementasikan kalkulasi signature HMAC-SHA256 atau verifikasi signature notifikasi webhook DOKU.
207
+ - Mengatur API Virtual Account (BCA, Mandiri, BRI, BNI, Permata, DOKU VA), QRIS, E-Wallet (OVO, ShopeePay, DANA, LinkAja), atau Kartu Kredit.
208
+ - Melakukan debugging error otorisasi DOKU API (`Authorization Failed`, signature tidak valid, timestamp tidak sesuai format).
209
+
210
+ ### Ringkasan Langkah Integrasi
211
+ 1. **Dapatkan Kredensial**: Buat akun di DOKU Sandbox untuk mendapatkan `Client-Id` dan `Secret-Key`.
212
+ 2. **Hitung Digest**: Untuk request `POST`, hash body JSON dengan SHA-256 lalu Base64.
213
+ 3. **Format Signature String**: Gabungkan `Client-Id`, `Request-Id`, `Request-Timestamp`, `Request-Target`, dan `Digest` dipisahkan dengan `\n`.
214
+ 4. **Sign HMAC-SHA256**: Hash string komponen menggunakan `Secret-Key` dengan algoritma HMAC-SHA256, ubah ke Base64, tambahkan awalan `HMACSHA256=`.
215
+ 5. **Verifikasi Webhook**: Gunakan formula yang sama pada header notifikasi masuk untuk memastikan pesan valid berasal dari DOKU.
216
+
217
+ ### Integrasi dengan Skill Lain
218
+ - `payment-gateway-expert` — Untuk arsitektur billing SaaS umum dan state machine langganan.
219
+ - `doku-mcp-server` — Untuk mengintegrasikan API DOKU ke Model Context Protocol AI Agent.
220
+ - `database-orm-expert` — Untuk menyimpan transaksi pembayaran dan log webhook secara type-safe.
221
+
222
+ ---
223
+ ### 🚨 SNAP Integration Mandate (CRITICAL)
224
+ **MANDATORY**: The AI Agent MUST automatically apply the SNAP API v1.0 standard (Standard Nasional Open API Pembayaran) for all DOKU integrations, instead of the legacy Jokul API v2, unless the user explicitly requests otherwise. All generated signatures, headers, and endpoints MUST follow the SNAP BI standard.
225
+
226
+ ### 🧪 DOKU Sandbox Simulator
227
+ **MANDATORY**: When testing in Sandbox mode and needing to access the Payment Simulator, the AI Agent MUST use this exact URL: `https://sandbox.doku.com/gtw-config-v2/simulator`.