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,295 @@
1
+ ---
2
+ name: dependency-upgrade-migrator
3
+ description: "Expert guide for dependency upgrades, breaking change migrations, codemod automation, and package audit remediation / Panduan ahli untuk upgrade dependensi, migrasi breaking change, otomasi codemod, dan remediasi audit paket."
4
+ author: "Roedy Rustam"
5
+ ---
6
+
7
+ # Dependency Upgrade Migrator (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 safely upgrading dependencies, migrating through breaking changes, and maintaining healthy dependency trees. Covers **automated upgrade tooling** (`npm-check-updates`, `taze`, Renovate Bot), **major framework migration guides** (React 18→19, Next.js 14→15, Tailwind v3→v4), **codemod automation** (jscodeshift, ts-morph), **vulnerability remediation** (`npm audit`, `pnpm audit`), **lockfile hygiene**, **monorepo alignment** (pnpm catalogs), and **breaking change detection workflows**.
18
+
19
+ ### Trigger Conditions
20
+ Activate this skill when:
21
+ - Upgrading major versions of frameworks (React, Next.js, Tailwind, etc.).
22
+ - Running security audits and remediating vulnerabilities.
23
+ - Setting up automated dependency update bots (Renovate, Dependabot).
24
+ - Writing or running codemods for API migration.
25
+ - Cleaning up dependency trees and removing unused packages.
26
+ - Aligning dependency versions across monorepo packages.
27
+
28
+ ---
29
+
30
+ ### 1. Upgrade Strategy Matrix
31
+
32
+ | Upgrade Type | Risk Level | Strategy | Tools |
33
+ |---|---|---|---|
34
+ | **Patch** (1.0.x) | 🟢 Low | Auto-merge after tests pass | Renovate, Dependabot |
35
+ | **Minor** (1.x.0) | 🟡 Medium | Auto-merge with manual review | Renovate + test suite |
36
+ | **Major** (x.0.0) | 🔴 High | Manual review, migration guide, branch | Manual + codemods |
37
+ | **Security** (any) | 🔴 Critical | Immediate upgrade, hotfix | `npm audit fix`, manual |
38
+
39
+ ---
40
+
41
+ ### 2. Pre-Upgrade Checklist
42
+
43
+ ```markdown
44
+ - [ ] Run `pnpm audit` / `npm audit` to identify vulnerabilities
45
+ - [ ] Check changelog/migration guide for the target version
46
+ - [ ] Ensure test suite is passing on current version (baseline)
47
+ - [ ] Create a dedicated branch for the upgrade
48
+ - [ ] Check peer dependency compatibility
49
+ - [ ] Review breaking changes list
50
+ - [ ] Identify files that need codemod transformation
51
+ - [ ] Back up lockfile before changes
52
+ ```
53
+
54
+ ---
55
+
56
+ ### 3. Automated Upgrade Tooling
57
+
58
+ #### Checking for Updates
59
+ ```bash
60
+ # Using taze (recommended — supports monorepos)
61
+ npx taze major # Show available major upgrades
62
+ npx taze minor -w # Auto-write minor updates to package.json
63
+ npx taze -r # Recursive (monorepo)
64
+
65
+ # Using npm-check-updates
66
+ npx ncu # Show available updates
67
+ npx ncu -u # Auto-write updates to package.json
68
+ npx ncu --target minor # Only show minor updates
69
+ ```
70
+
71
+ #### Renovate Bot Configuration
72
+ ```json
73
+ // renovate.json
74
+ {
75
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
76
+ "extends": ["config:best-practices"],
77
+ "labels": ["dependencies"],
78
+ "schedule": ["after 10pm and before 5am every weekday"],
79
+ "packageRules": [
80
+ {
81
+ "matchUpdateTypes": ["patch"],
82
+ "automerge": true,
83
+ "automergeType": "pr"
84
+ },
85
+ {
86
+ "matchUpdateTypes": ["minor"],
87
+ "automerge": true,
88
+ "automergeType": "pr",
89
+ "requiredStatusChecks": ["ci/test", "ci/build"]
90
+ },
91
+ {
92
+ "matchUpdateTypes": ["major"],
93
+ "automerge": false,
94
+ "labels": ["major-upgrade", "manual-review"]
95
+ },
96
+ {
97
+ "matchPackageNames": ["typescript", "react", "next"],
98
+ "automerge": false,
99
+ "labels": ["core-dependency"]
100
+ }
101
+ ]
102
+ }
103
+ ```
104
+
105
+ ---
106
+
107
+ ### 4. Major Framework Migration Guides
108
+
109
+ #### React 18 → 19
110
+ ```typescript
111
+ // Key breaking changes:
112
+ // 1. forwardRef no longer needed (ref is a regular prop)
113
+ // ❌ Before (React 18)
114
+ const Input = forwardRef<HTMLInputElement, Props>((props, ref) => (
115
+ <input ref={ref} {...props} />
116
+ ));
117
+
118
+ // ✅ After (React 19)
119
+ function Input({ ref, ...props }: Props & { ref?: React.Ref<HTMLInputElement> }) {
120
+ return <input ref={ref} {...props} />;
121
+ }
122
+
123
+ // 2. useActionState replaces useFormState
124
+ // ❌ Before: import { useFormState } from 'react-dom'
125
+ // ✅ After: import { useActionState } from 'react'
126
+
127
+ // 3. use() hook for promises and context
128
+ // ✅ New: const data = use(fetchPromise);
129
+ // ✅ New: const theme = use(ThemeContext);
130
+ ```
131
+
132
+ #### Next.js 14 → 15
133
+ ```typescript
134
+ // Key changes:
135
+ // 1. params/searchParams are now async in page/layout/route
136
+ // ❌ Before: export default function Page({ params }: { params: { id: string } })
137
+ // ✅ After: export default async function Page({ params }: { params: Promise<{ id: string }> }) {
138
+ // const { id } = await params;
139
+
140
+ // 2. Caching: fetch() no longer cached by default
141
+ // ❌ Before: fetch() was cached by default
142
+ // ✅ After: fetch(url, { cache: 'force-cache' }) for explicit caching
143
+
144
+ // 3. Route handlers: GET is no longer cached by default
145
+ // Add: export const dynamic = 'force-static' if you want caching
146
+ ```
147
+
148
+ #### Tailwind CSS v3 → v4
149
+ ```css
150
+ /* Key changes: */
151
+ /* 1. Configuration moves from JS to CSS */
152
+ /* ❌ Before: tailwind.config.js with theme.extend */
153
+ /* ✅ After: @theme directive in CSS */
154
+
155
+ @import 'tailwindcss';
156
+
157
+ @theme {
158
+ --color-primary: oklch(0.6 0.2 260);
159
+ --font-sans: 'Inter', sans-serif;
160
+ --breakpoint-sm: 40rem;
161
+ }
162
+
163
+ /* 2. No more @tailwind directives */
164
+ /* ❌ Before: @tailwind base; @tailwind components; @tailwind utilities; */
165
+ /* ✅ After: @import 'tailwindcss'; */
166
+
167
+ /* 3. Renamed utilities */
168
+ /* ❌ Before: bg-opacity-50 */
169
+ /* ✅ After: bg-black/50 */
170
+ ```
171
+
172
+ ---
173
+
174
+ ### 5. Codemod Automation (jscodeshift)
175
+
176
+ ```typescript
177
+ // codemods/remove-forward-ref.ts
178
+ import type { API, FileInfo } from 'jscodeshift';
179
+
180
+ export default function removeForwardRef(fileInfo: FileInfo, api: API) {
181
+ const j = api.jscodeshift;
182
+ const root = j(fileInfo.source);
183
+
184
+ // Find all forwardRef calls and transform them
185
+ root.find(j.CallExpression, {
186
+ callee: { name: 'forwardRef' },
187
+ }).forEach((path) => {
188
+ // Extract the inner component function
189
+ const args = path.node.arguments;
190
+ if (args.length > 0 && (args[0].type === 'ArrowFunctionExpression' || args[0].type === 'FunctionExpression')) {
191
+ // Replace forwardRef(...) with the inner function
192
+ j(path).replaceWith(args[0]);
193
+ }
194
+ });
195
+
196
+ // Remove forwardRef import
197
+ root.find(j.ImportSpecifier, { imported: { name: 'forwardRef' } }).remove();
198
+
199
+ return root.toSource({ quote: 'single' });
200
+ }
201
+
202
+ // Run: npx jscodeshift -t codemods/remove-forward-ref.ts src/ --extensions=tsx,ts
203
+ ```
204
+
205
+ ---
206
+
207
+ ### 6. Vulnerability Remediation
208
+
209
+ ```bash
210
+ # Audit current state
211
+ pnpm audit # Show vulnerabilities
212
+ pnpm audit --fix # Auto-fix where possible
213
+
214
+ # For stubborn transitive dependencies
215
+ pnpm patch <package>@<version> # Create a local patch
216
+ # or
217
+ pnpm overrides # Force specific version in package.json
218
+
219
+ # package.json — Force resolution
220
+ {
221
+ "pnpm": {
222
+ "overrides": {
223
+ "vulnerable-package": ">=2.0.0"
224
+ }
225
+ }
226
+ }
227
+ ```
228
+
229
+ ---
230
+
231
+ ### 7. Dependency Cleanup
232
+
233
+ ```bash
234
+ # Find unused dependencies
235
+ npx depcheck # Detect unused deps
236
+ npx depcheck --ignores="@types/*" # Ignore type packages
237
+
238
+ # Find duplicate packages
239
+ pnpm dedupe # Deduplicate lockfile
240
+ pnpm why <package> # See why a package is installed
241
+
242
+ # Monorepo: Align versions with pnpm catalogs
243
+ # pnpm-workspace.yaml
244
+ catalog:
245
+ react: "^19.0.0"
246
+ typescript: "^5.7.0"
247
+ "@tanstack/react-query": "^5.60.0"
248
+ ```
249
+
250
+ ---
251
+
252
+ ### Common Pitfalls to Avoid
253
+
254
+ | Anti-Pattern | Problem | Correct Approach |
255
+ |---|---|---|
256
+ | Upgrading all deps at once | Hard to identify breaking changes | Upgrade one major dep at a time |
257
+ | Ignoring peer dependency warnings | Runtime errors, subtle bugs | Resolve all peer dep conflicts |
258
+ | No test suite before upgrading | Can't verify nothing broke | Ensure tests pass before AND after |
259
+ | `npm audit fix --force` blindly | Can introduce breaking changes | Review each fix manually for major bumps |
260
+ | Skipping changelogs | Missing breaking changes | Always read CHANGELOG/migration guide |
261
+ | No lockfile in version control | Non-reproducible builds | Always commit `pnpm-lock.yaml` |
262
+
263
+ ---
264
+
265
+ ### Integration with Other Skills
266
+
267
+ - `monorepo-architect` — pnpm catalogs, workspace dependency alignment
268
+ - `vibe-code-gardener` — Post-upgrade cleanup, dead code removal
269
+ - `production-ready-hardener` — Security audit phase
270
+ - `ci-cd-devops-architect` — Renovate Bot CI/CD integration
271
+ - `e2e-testing-expert` — Regression testing after major upgrades
272
+
273
+ ---
274
+
275
+ <a name="bahasa-indonesia"></a>
276
+ ## Bahasa Indonesia
277
+
278
+ ### Deskripsi
279
+ Panduan tingkat produksi untuk upgrade dependensi yang aman, migrasi melalui breaking change, dan pemeliharaan dependency tree yang sehat. Mencakup **tooling upgrade otomatis** (`taze`, Renovate Bot), **panduan migrasi framework utama** (React 18→19, Next.js 14→15, Tailwind v3→v4), **otomasi codemod** (jscodeshift, ts-morph), **remediasi kerentanan** (`pnpm audit`), **kebersihan lockfile**, dan **penyelarasan dependensi monorepo** (pnpm catalogs).
280
+
281
+ ### Kondisi Pemicu
282
+ Aktifkan skill ini ketika:
283
+ - Mengupgrade versi mayor framework (React, Next.js, Tailwind, dll).
284
+ - Menjalankan audit keamanan dan memperbaiki kerentanan.
285
+ - Menyiapkan bot update dependensi otomatis (Renovate, Dependabot).
286
+ - Menulis atau menjalankan codemod untuk migrasi API.
287
+ - Membersihkan dependency tree dan menghapus paket yang tidak digunakan.
288
+
289
+ ### Integrasi dengan Skill Lain
290
+
291
+ - `monorepo-architect` — pnpm catalogs, penyelarasan dependensi workspace
292
+ - `vibe-code-gardener` — Pembersihan pasca-upgrade, penghapusan dead code
293
+ - `production-ready-hardener` — Fase audit keamanan
294
+ - `ci-cd-devops-architect` — Integrasi Renovate Bot CI/CD
295
+ - `e2e-testing-expert` — Pengujian regresi setelah upgrade mayor
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: design-system-architect
3
3
  description: "Expert guide for designing, building, and maintaining scalable UI design systems with design tokens, headless primitives (Radix/Base UI), Tailwind v4 @theme, and WCAG 2.2 accessibility in English and Indonesian."
4
- author: "Roedy Rustam"
4
+ author: vibes-plug-swarm
5
5
  ---
6
6
 
7
7
  # Design System Architect (2026 Edition — shadcn/ui Registry)
@@ -48,17 +48,17 @@ Expert guide for building and maintaining scalable UI design systems. Covers des
48
48
  --color-text-muted: oklch(50% 0.015 250);
49
49
  --color-destructive: oklch(55% 0.22 25); /* Red */
50
50
 
51
- /* --- Typography --- */
51
+ /* --- Fluid Typography (clamp) --- */
52
52
  --font-sans: "Inter Variable", "Inter", ui-sans-serif, system-ui, sans-serif;
53
53
  --font-mono: "JetBrains Mono", "Fira Code", ui-monospace, monospace;
54
- --font-size-xs: 0.75rem;
55
- --font-size-sm: 0.875rem;
56
- --font-size-base: 1rem;
57
- --font-size-lg: 1.125rem;
58
- --font-size-xl: 1.25rem;
59
- --font-size-2xl: 1.5rem;
60
- --font-size-3xl: 1.875rem;
61
- --font-size-4xl: 2.25rem;
54
+ --font-size-xs: clamp(0.7rem, 0.17vi + 0.66rem, 0.75rem);
55
+ --font-size-sm: clamp(0.8rem, 0.17vi + 0.76rem, 0.875rem);
56
+ --font-size-base: clamp(0.9rem, 0.17vi + 0.86rem, 1rem);
57
+ --font-size-lg: clamp(1rem, 0.17vi + 0.96rem, 1.125rem);
58
+ --font-size-xl: clamp(1.1rem, 0.34vi + 1.02rem, 1.25rem);
59
+ --font-size-2xl: clamp(1.2rem, 0.69vi + 1.03rem, 1.5rem);
60
+ --font-size-3xl: clamp(1.5rem, 0.86vi + 1.29rem, 1.875rem);
61
+ --font-size-4xl: clamp(1.8rem, 1.03vi + 1.54rem, 2.25rem);
62
62
 
63
63
  /* --- Spacing & Radius --- */
64
64
  --radius-sm: 0.25rem;
@@ -139,6 +139,17 @@ Button.displayName = 'Button';
139
139
  export { Button, buttonVariants };
140
140
  ```
141
141
 
142
+ ### Component Layout (Container Queries over Media Queries)
143
+ Avoid `@media` queries for internal component styling. Use **CSS Container Queries (`@container`)** so components respond to their wrapper, not the viewport. This makes components truly reusable anywhere.
144
+ ```tsx
145
+ // Example of a container-aware component using Tailwind v4
146
+ <div className="@container">
147
+ <div className="flex flex-col @md:flex-row gap-4">
148
+ <div className="p-4 bg-surface rounded-xl">Fluid Card</div>
149
+ </div>
150
+ </div>
151
+ ```
152
+
142
153
  ### shadcn/ui Registry — Distributable Components (2026)
143
154
 
144
155
  shadcn/ui v2 introduces a **registry** system — distribute your components as a shareable library that others can `npx shadcn add` into their projects:
@@ -228,6 +239,8 @@ Definisikan semua token di CSS menggunakan direktif `@theme`. Gunakan warna OKLC
228
239
  ### Arsitektur Komponen
229
240
  Gunakan pola Headless + Styled: primitif headless (Base UI/Radix) untuk aksesibilitas, gaya melalui Tailwind + CVA (class-variance-authority) untuk varian type-safe.
230
241
 
242
+ **Container Queries (`@container`)**: DILARANG keras menggunakan `@media` query (misal `md:`, `lg:`) untuk layout di dalam sebuah komponen. Gunakan **Container Queries (`@md:`, `@lg:`)** agar komponen dapat menyesuaikan diri dengan lebar pembungkusnya, bukan lebar layar secara keseluruhan. Ini membuat komponen Anda 100% *reusable*.
243
+
231
244
  ### Registry shadcn/ui — Komponen yang Dapat Didistribusikan (2026)
232
245
  shadcn/ui v2 memperkenalkan sistem registry — distribusikan komponen Anda sebagai library yang dapat dibagikan sehingga orang lain dapat menginstalnya dengan `npx shadcn add [url] [komponen]`.
233
246
 
@@ -241,3 +254,7 @@ Base UI (dari tim MUI) adalah alternatif Radix UI untuk 2026 dengan dukungan nat
241
254
  - Navigasi keyboard berfungsi untuk semua interaksi.
242
255
  - Modal menjebak fokus dan memulihkannya saat ditutup.
243
256
  - Target sentuh ≥ 24×24px (persyaratan baru WCAG 2.2).
257
+
258
+
259
+ ## Orchestration & Integration
260
+ - Integrates with frontend orchestrators, Tailwind v4, Base UI, and shadcn/ui.
@@ -0,0 +1,251 @@
1
+ ---
2
+ name: doku-mcp-server
3
+ description: "Expert guide for DOKU Model Context Protocol (MCP) Server integration. Enables AI Agentic Commerce with tools for payment links, Virtual Accounts, QRIS, transaction status checks, and client configuration (Claude Desktop, Cursor, AGY) / Panduan ahli DOKU MCP Server untuk AI Agentic Commerce."
4
+ author: "Roedy Rustam"
5
+ ---
6
+
7
+ # DOKU MCP Server / Server Model Context Protocol 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 integrating and building Model Context Protocol (MCP) servers with DOKU Payment Gateway based on [DOKU Developers Documentation](https://developers.doku.com/). Enables AI Agents (Claude Desktop, Antigravity, Cursor, n8n, LangChain) to execute payment tasks autonomously using Agentic Commerce capabilities (generating payment links, issuing Virtual Account numbers, generating QRIS codes, querying transaction statuses).
18
+
19
+ ### Trigger Conditions
20
+ Activate this skill when the user is:
21
+ - Setting up or configuring DOKU MCP server for Claude Desktop, Antigravity (AGY), Cursor, or LLM agents.
22
+ - Implementing AI Agentic Commerce or autonomous AI-driven checkout workflows using DOKU.
23
+ - Building a custom TypeScript or Python MCP server wrapping DOKU Jokul API.
24
+ - Defining MCP tools and resources for payment generation and status verification.
25
+
26
+ ---
27
+
28
+ ### Key Capabilities & Tools
29
+
30
+ | MCP Tool Name | Description | Key Input Parameters |
31
+ |---|---|---|
32
+ | `create_checkout_payment` | Generates a DOKU Checkout URL / Payment Link for host-managed payment page | `amount`, `invoice_number`, `customer_name`, `customer_email` |
33
+ | `create_virtual_account` | Generates a specific bank Virtual Account number (BCA, Mandiri, BRI, BNI, Permata, DOKU) | `bank_code`, `amount`, `invoice_number`, `customer_name` |
34
+ | `create_qris_payment` | Generates a dynamic QRIS string/image for instant wallet payments | `amount`, `invoice_number`, `store_name` |
35
+ | `check_transaction_status` | Queries real-time transaction payment status | `invoice_number` or `transaction_id` |
36
+
37
+ ---
38
+
39
+ ### Client Configuration
40
+
41
+ #### 1. Antigravity & Gemini Configuration (`mcp.json`)
42
+
43
+ **Location:**
44
+ - **Global:** `~/.gemini/config/mcp.json` (Windows: `%USERPROFILE%\.gemini\config\mcp.json`)
45
+ - **Workspace:** `.agents/mcp.json` (in your project root)
46
+
47
+ ```json
48
+ {
49
+ "mcpServers": {
50
+ "doku-payment": {
51
+ "command": "node",
52
+ "args": ["/path/to/doku-mcp-server/dist/index.js"],
53
+ "env": {
54
+ "DOKU_CLIENT_ID": "YOUR_SANDBOX_OR_PROD_CLIENT_ID",
55
+ "DOKU_SECRET_KEY": "YOUR_SANDBOX_OR_PROD_SECRET_KEY",
56
+ "DOKU_IS_PRODUCTION": "false"
57
+ }
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ #### 2. Claude Desktop Configuration (`claude_desktop_config.json`)
64
+
65
+ **Location:**
66
+ - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
67
+ - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
68
+
69
+ ```json
70
+ {
71
+ "mcpServers": {
72
+ "doku-payment": {
73
+ "command": "node",
74
+ "args": ["/path/to/doku-mcp-server/dist/index.js"],
75
+ "env": {
76
+ "DOKU_CLIENT_ID": "YOUR_SANDBOX_OR_PROD_CLIENT_ID",
77
+ "DOKU_SECRET_KEY": "YOUR_SANDBOX_OR_PROD_SECRET_KEY",
78
+ "DOKU_IS_PRODUCTION": "false"
79
+ }
80
+ }
81
+ }
82
+ }
83
+ ```
84
+
85
+ #### 3. Environment Variables & Authentication
86
+ DOKU API authentication requires API Key credentials. When using standard HTTP header authentication:
87
+ - API Keys are configured in your environment or encoded as Base64 for the MCP `Authorization` header.
88
+ - Use Sandbox (`https://api-sandbox.doku.com`) during development and testing.
89
+
90
+ ---
91
+
92
+ ### Building a Custom TypeScript MCP Server for DOKU
93
+
94
+ ```typescript
95
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
96
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
97
+ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
98
+ import crypto from 'crypto';
99
+
100
+ const CLIENT_ID = process.env.DOKU_CLIENT_ID || '';
101
+ const SECRET_KEY = process.env.DOKU_SECRET_KEY || '';
102
+ const BASE_URL = process.env.DOKU_IS_PRODUCTION === 'true'
103
+ ? 'https://api.doku.com'
104
+ : 'https://api-sandbox.doku.com';
105
+
106
+ function generateHeaders(targetPath: string, payload: object) {
107
+ const requestId = crypto.randomUUID();
108
+ const timestamp = new Date().toISOString().replace(/\.\d{3}Z$/, 'Z');
109
+ const jsonBody = JSON.stringify(payload);
110
+ const digest = crypto.createHash('sha256').update(jsonBody, 'utf8').digest('base64');
111
+
112
+ const component = `Client-Id:${CLIENT_ID}\nRequest-Id:${requestId}\nRequest-Timestamp:${timestamp}\nRequest-Target:${targetPath}\nDigest:${digest}`;
113
+ const signature = 'HMACSHA256=' + crypto.createHmac('sha256', SECRET_KEY).update(component).digest('base64');
114
+
115
+ return {
116
+ 'Content-Type': 'application/json',
117
+ 'Client-Id': CLIENT_ID,
118
+ 'Request-Id': requestId,
119
+ 'Request-Timestamp': timestamp,
120
+ 'Request-Target': targetPath,
121
+ 'Digest': digest,
122
+ 'Signature': signature
123
+ };
124
+ }
125
+
126
+ const server = new Server(
127
+ { name: 'doku-mcp-server', version: '1.0.0' },
128
+ { capabilities: { tools: {} } }
129
+ );
130
+
131
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
132
+ tools: [
133
+ {
134
+ name: 'create_checkout_payment',
135
+ description: 'Generate a DOKU payment checkout URL for customer order',
136
+ inputSchema: {
137
+ type: 'object',
138
+ properties: {
139
+ amount: { type: 'number', description: 'Total payment amount in IDR' },
140
+ invoice_number: { type: 'string', description: 'Unique order invoice number' },
141
+ customer_name: { type: 'string', description: 'Customer full name' },
142
+ customer_email: { type: 'string', description: 'Customer email address' }
143
+ },
144
+ required: ['amount', 'invoice_number', 'customer_name', 'customer_email']
145
+ }
146
+ },
147
+ {
148
+ name: 'check_transaction_status',
149
+ description: 'Check payment status of a transaction',
150
+ inputSchema: {
151
+ type: 'object',
152
+ properties: {
153
+ invoice_number: { type: 'string', description: 'Invoice number to query' }
154
+ },
155
+ required: ['invoice_number']
156
+ }
157
+ }
158
+ ]
159
+ }));
160
+
161
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
162
+ const { name, arguments: args } = request.params;
163
+
164
+ if (name === 'create_checkout_payment') {
165
+ const targetPath = '/checkout/v1/payment';
166
+ const body = {
167
+ order: { amount: args?.amount, invoice_number: args?.invoice_number },
168
+ customer: { name: args?.customer_name, email: args?.customer_email }
169
+ };
170
+
171
+ const response = await fetch(`${BASE_URL}${targetPath}`, {
172
+ method: 'POST',
173
+ headers: generateHeaders(targetPath, body),
174
+ body: JSON.stringify(body)
175
+ });
176
+
177
+ const data = await response.json();
178
+ return {
179
+ content: [{ type: 'text', text: JSON.stringify(data, null, 2) }]
180
+ };
181
+ }
182
+
183
+ throw new Error(`Tool not found: ${name}`);
184
+ });
185
+
186
+ async function main() {
187
+ const transport = new StdioServerTransport();
188
+ await server.connect(transport);
189
+ }
190
+
191
+ main().catch(console.error);
192
+ ```
193
+
194
+ ---
195
+
196
+ ### Common Pitfalls to Avoid
197
+
198
+ | Anti-Pattern | Issue | Solution |
199
+ |---|---|---|
200
+ | Hardcoding Merchant Secrets | Security vulnerability | Always load `DOKU_CLIENT_ID` and `DOKU_SECRET_KEY` from environment variables. |
201
+ | Incomplete Tool Schema Descriptions | AI Agent misinterprets tool usage | Provide clear parameter descriptions and strict `required` fields in JSON schema. |
202
+ | Returning Raw Errors | Unfriendly LLM agent experience | Catch API errors and return structured error JSON response in MCP tool text output. |
203
+
204
+ ---
205
+
206
+ <a name="bahasa-indonesia"></a>
207
+ ## Bahasa Indonesia
208
+
209
+ ### Deskripsi
210
+ Panduan ahli untuk mengintegrasikan dan membuat server Model Context Protocol (MCP) dengan DOKU Payment Gateway berdasarkan dokumentasi resmi [DOKU Developers Documentation](https://developers.doku.com/). Memungkinkan Agen AI (Claude Desktop, Antigravity, Cursor, n8n, LangChain) menjalankan transaksi pembayaran secara otonom dalam alur Agentic Commerce (membuat link pembayaran, membuat nomor Virtual Account, membuat kode QRIS, dan memeriksa status transaksi).
211
+
212
+ ### Kondisi Pemicu
213
+ Aktifkan skill ini ketika pengguna sedang:
214
+ - Mengatur atau mengonfigurasi server DOKU MCP untuk Claude Desktop, Antigravity (AGY), Cursor, atau agen LLM.
215
+ - Mengimplementasikan alur kerja checkout otonom berbasis AI (AI Agentic Commerce) menggunakan DOKU.
216
+ - Membangun server MCP TypeScript atau Python kustom yang membungkus DOKU Jokul API.
217
+ - Mendefinisikan tool dan resource MCP untuk pembuatan dan verifikasi status pembayaran.
218
+
219
+ ### Konfigurasi Client untuk Antigravity & Gemini
220
+
221
+ **Lokasi File Konfigurasi (`mcp.json`):**
222
+ - **Global:** `~/.gemini/config/mcp.json` (Windows: `%USERPROFILE%\.gemini\config\mcp.json`)
223
+ - **Workspace:** `.agents/mcp.json` (di dalam folder proyek)
224
+
225
+ ```json
226
+ {
227
+ "mcpServers": {
228
+ "doku-payment": {
229
+ "command": "node",
230
+ "args": ["/path/to/doku-mcp-server/dist/index.js"],
231
+ "env": {
232
+ "DOKU_CLIENT_ID": "CLIENT_ID_SANDBOX_ATAU_PROD",
233
+ "DOKU_SECRET_KEY": "SECRET_KEY_SANDBOX_ATAU_PROD",
234
+ "DOKU_IS_PRODUCTION": "false"
235
+ }
236
+ }
237
+ }
238
+ }
239
+ ```
240
+
241
+ ### Integrasi dengan Skill Lain
242
+ - `mcp-server-architect` — Untuk arsitektur dan pengamanan server MCP tingkat lanjut.
243
+ - `doku-payment-gateway` — Untuk rumus signature HMAC-SHA256 dan API spesifik DOKU.
244
+ - `multi-agent-orchestration` — Untuk mengaitkan DOKU MCP Server dengan swarm agen AI otonom.
245
+
246
+ ---
247
+ ### 🚨 SNAP Integration Mandate (CRITICAL)
248
+ **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.
249
+
250
+ ### 🧪 DOKU Sandbox Simulator
251
+ **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`.