start-vibing 2.0.11 → 2.0.12

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 (130) hide show
  1. package/README.md +177 -177
  2. package/package.json +42 -42
  3. package/template/.claude/CLAUDE.md +174 -174
  4. package/template/.claude/agents/01-orchestration/agent-selector.md +130 -130
  5. package/template/.claude/agents/01-orchestration/checkpoint-manager.md +142 -142
  6. package/template/.claude/agents/01-orchestration/context-manager.md +138 -138
  7. package/template/.claude/agents/01-orchestration/error-recovery.md +182 -182
  8. package/template/.claude/agents/01-orchestration/orchestrator.md +114 -114
  9. package/template/.claude/agents/01-orchestration/parallel-coordinator.md +141 -141
  10. package/template/.claude/agents/01-orchestration/task-decomposer.md +121 -121
  11. package/template/.claude/agents/01-orchestration/workflow-router.md +114 -114
  12. package/template/.claude/agents/02-typescript/bun-runtime-expert.md +197 -197
  13. package/template/.claude/agents/02-typescript/esm-resolver.md +193 -193
  14. package/template/.claude/agents/02-typescript/import-alias-enforcer.md +158 -158
  15. package/template/.claude/agents/02-typescript/ts-generics-helper.md +183 -183
  16. package/template/.claude/agents/02-typescript/ts-migration-helper.md +238 -238
  17. package/template/.claude/agents/02-typescript/ts-strict-checker.md +180 -180
  18. package/template/.claude/agents/02-typescript/ts-types-analyzer.md +199 -199
  19. package/template/.claude/agents/02-typescript/type-definition-writer.md +187 -187
  20. package/template/.claude/agents/02-typescript/zod-schema-designer.md +212 -212
  21. package/template/.claude/agents/02-typescript/zod-validator.md +158 -158
  22. package/template/.claude/agents/03-testing/playwright-assertions.md +265 -265
  23. package/template/.claude/agents/03-testing/playwright-e2e.md +247 -247
  24. package/template/.claude/agents/03-testing/playwright-fixtures.md +234 -234
  25. package/template/.claude/agents/03-testing/playwright-multi-viewport.md +256 -256
  26. package/template/.claude/agents/03-testing/playwright-page-objects.md +247 -247
  27. package/template/.claude/agents/03-testing/test-cleanup-manager.md +248 -248
  28. package/template/.claude/agents/03-testing/test-data-generator.md +254 -254
  29. package/template/.claude/agents/03-testing/tester-integration.md +278 -278
  30. package/template/.claude/agents/03-testing/tester-unit.md +207 -207
  31. package/template/.claude/agents/03-testing/vitest-config.md +287 -287
  32. package/template/.claude/agents/04-docker/container-health.md +255 -255
  33. package/template/.claude/agents/04-docker/deployment-validator.md +225 -225
  34. package/template/.claude/agents/04-docker/docker-compose-designer.md +281 -281
  35. package/template/.claude/agents/04-docker/docker-env-manager.md +235 -235
  36. package/template/.claude/agents/04-docker/docker-multi-stage.md +241 -241
  37. package/template/.claude/agents/04-docker/dockerfile-optimizer.md +208 -208
  38. package/template/.claude/agents/05-database/database-seeder.md +273 -273
  39. package/template/.claude/agents/05-database/mongodb-query-optimizer.md +230 -230
  40. package/template/.claude/agents/05-database/mongoose-aggregation.md +306 -306
  41. package/template/.claude/agents/05-database/mongoose-index-optimizer.md +182 -182
  42. package/template/.claude/agents/05-database/mongoose-schema-designer.md +267 -267
  43. package/template/.claude/agents/06-security/auth-session-validator.md +68 -68
  44. package/template/.claude/agents/06-security/input-sanitizer.md +80 -80
  45. package/template/.claude/agents/06-security/owasp-checker.md +97 -97
  46. package/template/.claude/agents/06-security/permission-auditor.md +100 -100
  47. package/template/.claude/agents/06-security/security-auditor.md +84 -84
  48. package/template/.claude/agents/06-security/sensitive-data-scanner.md +83 -83
  49. package/template/.claude/agents/07-documentation/api-documenter.md +136 -136
  50. package/template/.claude/agents/07-documentation/changelog-manager.md +105 -105
  51. package/template/.claude/agents/07-documentation/documenter.md +76 -76
  52. package/template/.claude/agents/07-documentation/domain-updater.md +81 -81
  53. package/template/.claude/agents/07-documentation/jsdoc-generator.md +114 -114
  54. package/template/.claude/agents/07-documentation/readme-generator.md +135 -135
  55. package/template/.claude/agents/08-git/branch-manager.md +58 -58
  56. package/template/.claude/agents/08-git/commit-manager.md +63 -63
  57. package/template/.claude/agents/08-git/pr-creator.md +76 -76
  58. package/template/.claude/agents/09-quality/code-reviewer.md +71 -71
  59. package/template/.claude/agents/09-quality/quality-checker.md +67 -67
  60. package/template/.claude/agents/10-research/best-practices-finder.md +89 -89
  61. package/template/.claude/agents/10-research/competitor-analyzer.md +106 -106
  62. package/template/.claude/agents/10-research/pattern-researcher.md +93 -93
  63. package/template/.claude/agents/10-research/research-cache-manager.md +76 -76
  64. package/template/.claude/agents/10-research/research-web.md +98 -98
  65. package/template/.claude/agents/10-research/tech-evaluator.md +101 -101
  66. package/template/.claude/agents/11-ui-ux/accessibility-auditor.md +136 -136
  67. package/template/.claude/agents/11-ui-ux/design-system-enforcer.md +125 -125
  68. package/template/.claude/agents/11-ui-ux/skeleton-generator.md +118 -118
  69. package/template/.claude/agents/11-ui-ux/ui-desktop.md +132 -132
  70. package/template/.claude/agents/11-ui-ux/ui-mobile.md +98 -98
  71. package/template/.claude/agents/11-ui-ux/ui-tablet.md +110 -110
  72. package/template/.claude/agents/12-performance/api-latency-analyzer.md +156 -156
  73. package/template/.claude/agents/12-performance/bundle-analyzer.md +113 -113
  74. package/template/.claude/agents/12-performance/memory-leak-detector.md +137 -137
  75. package/template/.claude/agents/12-performance/performance-profiler.md +115 -115
  76. package/template/.claude/agents/12-performance/query-optimizer.md +124 -124
  77. package/template/.claude/agents/12-performance/render-optimizer.md +154 -154
  78. package/template/.claude/agents/13-debugging/build-error-fixer.md +207 -207
  79. package/template/.claude/agents/13-debugging/debugger.md +149 -149
  80. package/template/.claude/agents/13-debugging/error-stack-analyzer.md +141 -141
  81. package/template/.claude/agents/13-debugging/network-debugger.md +208 -208
  82. package/template/.claude/agents/13-debugging/runtime-error-fixer.md +181 -181
  83. package/template/.claude/agents/13-debugging/type-error-resolver.md +185 -185
  84. package/template/.claude/agents/14-validation/final-validator.md +93 -93
  85. package/template/.claude/agents/_backup/analyzer.md +134 -134
  86. package/template/.claude/agents/_backup/code-reviewer.md +279 -279
  87. package/template/.claude/agents/_backup/commit-manager.md +219 -219
  88. package/template/.claude/agents/_backup/debugger.md +280 -280
  89. package/template/.claude/agents/_backup/documenter.md +237 -237
  90. package/template/.claude/agents/_backup/domain-updater.md +197 -197
  91. package/template/.claude/agents/_backup/final-validator.md +169 -169
  92. package/template/.claude/agents/_backup/orchestrator.md +149 -149
  93. package/template/.claude/agents/_backup/performance.md +232 -232
  94. package/template/.claude/agents/_backup/quality-checker.md +240 -240
  95. package/template/.claude/agents/_backup/research.md +315 -315
  96. package/template/.claude/agents/_backup/security-auditor.md +192 -192
  97. package/template/.claude/agents/_backup/tester.md +566 -566
  98. package/template/.claude/agents/_backup/ui-ux-reviewer.md +247 -247
  99. package/template/.claude/config/README.md +30 -30
  100. package/template/.claude/config/mcp-config.json +344 -344
  101. package/template/.claude/config/project-config.json +53 -53
  102. package/template/.claude/config/quality-gates.json +46 -46
  103. package/template/.claude/config/security-rules.json +45 -45
  104. package/template/.claude/config/testing-config.json +164 -164
  105. package/template/.claude/hooks/SETUP.md +126 -126
  106. package/template/.claude/hooks/run-hook.ts +176 -176
  107. package/template/.claude/hooks/stop-validator.ts +852 -824
  108. package/template/.claude/hooks/user-prompt-submit.ts +886 -886
  109. package/template/.claude/scripts/mcp-quick-install.ts +151 -151
  110. package/template/.claude/scripts/setup-mcps.ts +651 -651
  111. package/template/.claude/settings.json +275 -275
  112. package/template/.claude/skills/bun-runtime/SKILL.md +430 -430
  113. package/template/.claude/skills/codebase-knowledge/domains/claude-system.md +431 -431
  114. package/template/.claude/skills/codebase-knowledge/domains/mcp-integration.md +295 -295
  115. package/template/.claude/skills/debugging-patterns/SKILL.md +485 -485
  116. package/template/.claude/skills/docker-patterns/SKILL.md +555 -555
  117. package/template/.claude/skills/git-workflow/SKILL.md +454 -454
  118. package/template/.claude/skills/mongoose-patterns/SKILL.md +499 -499
  119. package/template/.claude/skills/nextjs-app-router/SKILL.md +327 -327
  120. package/template/.claude/skills/performance-patterns/SKILL.md +547 -547
  121. package/template/.claude/skills/playwright-automation/SKILL.md +438 -438
  122. package/template/.claude/skills/react-patterns/SKILL.md +389 -389
  123. package/template/.claude/skills/research-cache/SKILL.md +222 -222
  124. package/template/.claude/skills/shadcn-ui/SKILL.md +511 -511
  125. package/template/.claude/skills/tailwind-patterns/SKILL.md +465 -465
  126. package/template/.claude/skills/test-coverage/SKILL.md +467 -467
  127. package/template/.claude/skills/trpc-api/SKILL.md +434 -434
  128. package/template/.claude/skills/typescript-strict/SKILL.md +367 -367
  129. package/template/.claude/skills/zod-validation/SKILL.md +403 -403
  130. package/template/CLAUDE.md +117 -117
@@ -1,430 +1,430 @@
1
- ---
2
- name: bun-runtime
3
- description: Bun runtime patterns and best practices. Package management, bundling, testing, scripts. Use when working with Bun as the JavaScript runtime.
4
- allowed-tools: Read, Write, Edit, Bash, Grep, Glob
5
- ---
6
-
7
- # Bun Runtime - Fast JavaScript Runtime
8
-
9
- ## Purpose
10
-
11
- Expert guidance for Bun:
12
-
13
- - **Package Management** - Fast installation
14
- - **Bundling** - Built-in bundler
15
- - **Testing** - Vitest-compatible runner
16
- - **Scripts** - Task runner
17
- - **APIs** - Bun-specific features
18
-
19
- ---
20
-
21
- ## Package Management
22
-
23
- ### Install Dependencies
24
-
25
- ```bash
26
- # Install all dependencies
27
- bun install
28
-
29
- # Add dependency
30
- bun add zod mongoose
31
-
32
- # Add dev dependency
33
- bun add -D typescript @types/node
34
-
35
- # Add exact version
36
- bun add react@18.2.0
37
-
38
- # Add from GitHub
39
- bun add github:user/repo
40
-
41
- # Remove dependency
42
- bun remove lodash
43
-
44
- # Update dependencies
45
- bun update
46
-
47
- # Update specific package
48
- bun update react
49
- ```
50
-
51
- ### bunfig.toml
52
-
53
- ```toml
54
- # bunfig.toml
55
- [install]
56
- # Disable postinstall scripts for security
57
- ignorescripts = true
58
-
59
- # Registry configuration
60
- registry = "https://registry.npmjs.org"
61
-
62
- # Install settings
63
- frozen-lockfile = true
64
-
65
- [run]
66
- # Shell for scripts
67
- shell = "bash"
68
- ```
69
-
70
- ---
71
-
72
- ## Script Commands
73
-
74
- ### package.json Scripts
75
-
76
- ```json
77
- {
78
- "scripts": {
79
- "dev": "bun run --hot src/index.ts",
80
- "start": "bun run src/index.ts",
81
- "build": "bun build src/index.ts --outdir dist",
82
- "typecheck": "bunx tsc --noEmit",
83
- "lint": "bunx eslint . --ext .ts,.tsx",
84
- "lint:fix": "bunx eslint . --ext .ts,.tsx --fix",
85
- "test": "bun test",
86
- "test:watch": "bun test --watch",
87
- "test:coverage": "bun test --coverage"
88
- }
89
- }
90
- ```
91
-
92
- ### Running Scripts
93
-
94
- ```bash
95
- # Run script
96
- bun run dev
97
- bun run build
98
-
99
- # Shorthand (without "run")
100
- bun dev
101
- bun build
102
-
103
- # Run TypeScript directly
104
- bun run src/index.ts
105
-
106
- # Hot reload
107
- bun run --hot src/index.ts
108
-
109
- # Watch mode
110
- bun run --watch src/index.ts
111
- ```
112
-
113
- ---
114
-
115
- ## Bundling
116
-
117
- ### Basic Bundle
118
-
119
- ```bash
120
- # Bundle for browser
121
- bun build ./src/index.ts --outdir ./dist
122
-
123
- # Minify
124
- bun build ./src/index.ts --outdir ./dist --minify
125
-
126
- # Source maps
127
- bun build ./src/index.ts --outdir ./dist --sourcemap
128
-
129
- # Target
130
- bun build ./src/index.ts --outdir ./dist --target=browser
131
- bun build ./src/index.ts --outdir ./dist --target=node
132
- bun build ./src/index.ts --outdir ./dist --target=bun
133
- ```
134
-
135
- ### Build API
136
-
137
- ```typescript
138
- // build.ts
139
- const result = await Bun.build({
140
- entrypoints: ['./src/index.ts'],
141
- outdir: './dist',
142
- target: 'browser',
143
- minify: true,
144
- sourcemap: 'external',
145
- splitting: true,
146
- format: 'esm',
147
- define: {
148
- 'process.env.NODE_ENV': '"production"',
149
- },
150
- external: ['react', 'react-dom'],
151
- });
152
-
153
- if (!result.success) {
154
- console.error('Build failed:');
155
- for (const log of result.logs) {
156
- console.error(log);
157
- }
158
- process.exit(1);
159
- }
160
- ```
161
-
162
- ---
163
-
164
- ## Testing (Vitest-compatible)
165
-
166
- ### Test Configuration
167
-
168
- ```typescript
169
- // bunfig.toml
170
- [test];
171
- preload = ['./tests/setup.ts'];
172
- coverage = true;
173
- ```
174
-
175
- ### Test File
176
-
177
- ```typescript
178
- // tests/example.test.ts
179
- import { describe, test, expect, beforeEach, afterEach } from 'bun:test';
180
-
181
- describe('Feature', () => {
182
- beforeEach(() => {
183
- // Setup
184
- });
185
-
186
- afterEach(() => {
187
- // Cleanup
188
- });
189
-
190
- test('should work correctly', () => {
191
- const result = 1 + 1;
192
- expect(result).toBe(2);
193
- });
194
-
195
- test('async operations', async () => {
196
- const data = await fetchData();
197
- expect(data).toBeDefined();
198
- });
199
- });
200
- ```
201
-
202
- ### Mocking
203
-
204
- ```typescript
205
- import { mock, spyOn } from 'bun:test';
206
-
207
- // Mock function
208
- const mockFn = mock((x: number) => x * 2);
209
- mockFn(5);
210
- expect(mockFn).toHaveBeenCalledWith(5);
211
- expect(mockFn).toHaveReturnedWith(10);
212
-
213
- // Spy on existing function
214
- const spy = spyOn(console, 'log');
215
- console.log('test');
216
- expect(spy).toHaveBeenCalledWith('test');
217
- ```
218
-
219
- ---
220
-
221
- ## Bun APIs
222
-
223
- ### File System
224
-
225
- ```typescript
226
- // Read file
227
- const text = await Bun.file('path/to/file.txt').text();
228
- const json = await Bun.file('path/to/file.json').json();
229
- const buffer = await Bun.file('path/to/file.bin').arrayBuffer();
230
-
231
- // Write file
232
- await Bun.write('output.txt', 'Hello, World!');
233
- await Bun.write('output.json', JSON.stringify({ hello: 'world' }));
234
-
235
- // File info
236
- const file = Bun.file('file.txt');
237
- console.log(file.size);
238
- console.log(file.type);
239
- ```
240
-
241
- ### HTTP Server
242
-
243
- ```typescript
244
- // Simple server
245
- Bun.serve({
246
- port: 3000,
247
- fetch(request) {
248
- const url = new URL(request.url);
249
-
250
- if (url.pathname === '/api/hello') {
251
- return Response.json({ message: 'Hello!' });
252
- }
253
-
254
- return new Response('Not Found', { status: 404 });
255
- },
256
- });
257
-
258
- // With WebSocket
259
- Bun.serve({
260
- port: 3000,
261
- fetch(request, server) {
262
- if (server.upgrade(request)) {
263
- return;
264
- }
265
- return new Response('Upgrade failed', { status: 500 });
266
- },
267
- websocket: {
268
- open(ws) {
269
- console.log('Client connected');
270
- },
271
- message(ws, message) {
272
- ws.send(`Echo: ${message}`);
273
- },
274
- close(ws) {
275
- console.log('Client disconnected');
276
- },
277
- },
278
- });
279
- ```
280
-
281
- ### Subprocess
282
-
283
- ```typescript
284
- // Run command
285
- const result = Bun.spawn(['echo', 'Hello']);
286
- await result.exited;
287
-
288
- // Capture output
289
- const proc = Bun.spawn(['git', 'status'], {
290
- stdout: 'pipe',
291
- });
292
- const output = await new Response(proc.stdout).text();
293
-
294
- // With stdin
295
- const proc = Bun.spawn(['cat'], {
296
- stdin: 'pipe',
297
- stdout: 'pipe',
298
- });
299
- proc.stdin.write('Hello from stdin!');
300
- proc.stdin.end();
301
- ```
302
-
303
- ### Password Hashing
304
-
305
- ```typescript
306
- // Hash password
307
- const hash = await Bun.password.hash('my-password', {
308
- algorithm: 'bcrypt',
309
- cost: 10,
310
- });
311
-
312
- // Verify password
313
- const isValid = await Bun.password.verify('my-password', hash);
314
- ```
315
-
316
- ### Environment Variables
317
-
318
- ```typescript
319
- // Access env vars
320
- const apiKey = Bun.env['API_KEY'];
321
- const nodeEnv = Bun.env['NODE_ENV'] ?? 'development';
322
-
323
- // Set env vars
324
- Bun.env['CUSTOM_VAR'] = 'value';
325
- ```
326
-
327
- ---
328
-
329
- ## Performance Tips
330
-
331
- ### Use Native APIs
332
-
333
- ```typescript
334
- // Prefer Bun APIs over Node.js equivalents
335
-
336
- // File reading
337
- // Node.js way (slower)
338
- import { readFile } from 'fs/promises';
339
- const content = await readFile('file.txt', 'utf-8');
340
-
341
- // Bun way (faster)
342
- const content = await Bun.file('file.txt').text();
343
- ```
344
-
345
- ### Import Optimization
346
-
347
- ```typescript
348
- // Use namespace imports for tree-shaking
349
- import * as z from 'zod';
350
-
351
- // Avoid dynamic imports in hot paths
352
- // Bad:
353
- async function validate(data: unknown) {
354
- const { z } = await import('zod');
355
- return z.object({}).parse(data);
356
- }
357
-
358
- // Good:
359
- import { z } from 'zod';
360
- function validate(data: unknown) {
361
- return z.object({}).parse(data);
362
- }
363
- ```
364
-
365
- ### Bundle for Production
366
-
367
- ```bash
368
- # Compile to single executable
369
- bun build --compile ./src/index.ts --outfile myapp
370
-
371
- # Run compiled binary
372
- ./myapp
373
- ```
374
-
375
- ---
376
-
377
- ## Docker Integration
378
-
379
- ```dockerfile
380
- # Use Bun official image
381
- FROM oven/bun:1-alpine AS base
382
-
383
- # Install dependencies
384
- FROM base AS deps
385
- WORKDIR /app
386
- COPY package.json bun.lockb ./
387
- RUN bun install --frozen-lockfile
388
-
389
- # Build
390
- FROM base AS builder
391
- WORKDIR /app
392
- COPY --from=deps /app/node_modules ./node_modules
393
- COPY . .
394
- RUN bun run build
395
-
396
- # Runtime
397
- FROM base AS runner
398
- WORKDIR /app
399
- COPY --from=builder /app/dist ./dist
400
- COPY --from=builder /app/package.json ./
401
-
402
- EXPOSE 3000
403
- CMD ["bun", "run", "dist/index.js"]
404
- ```
405
-
406
- ---
407
-
408
- ## Agent Integration
409
-
410
- This skill is used by:
411
-
412
- - **bun-runtime-expert** agent
413
- - **quality-checker** for running tests
414
- - **build-error-fixer** for build issues
415
- - **dockerfile-optimizer** for Docker builds
416
-
417
- ---
418
-
419
- ## FORBIDDEN
420
-
421
- 1. **`npm` commands** - Use `bun` instead
422
- 2. **Node.js fs when Bun.file works** - Use native APIs
423
- 3. **Ignoring lockfile** - Always use `--frozen-lockfile` in CI
424
- 4. **Skipping typecheck** - Run `bunx tsc --noEmit`
425
-
426
- ---
427
-
428
- ## Version
429
-
430
- - **v1.0.0** - Initial implementation based on Bun 1.x patterns
1
+ ---
2
+ name: bun-runtime
3
+ description: Bun runtime patterns and best practices. Package management, bundling, testing, scripts. Use when working with Bun as the JavaScript runtime.
4
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
5
+ ---
6
+
7
+ # Bun Runtime - Fast JavaScript Runtime
8
+
9
+ ## Purpose
10
+
11
+ Expert guidance for Bun:
12
+
13
+ - **Package Management** - Fast installation
14
+ - **Bundling** - Built-in bundler
15
+ - **Testing** - Vitest-compatible runner
16
+ - **Scripts** - Task runner
17
+ - **APIs** - Bun-specific features
18
+
19
+ ---
20
+
21
+ ## Package Management
22
+
23
+ ### Install Dependencies
24
+
25
+ ```bash
26
+ # Install all dependencies
27
+ bun install
28
+
29
+ # Add dependency
30
+ bun add zod mongoose
31
+
32
+ # Add dev dependency
33
+ bun add -D typescript @types/node
34
+
35
+ # Add exact version
36
+ bun add react@18.2.0
37
+
38
+ # Add from GitHub
39
+ bun add github:user/repo
40
+
41
+ # Remove dependency
42
+ bun remove lodash
43
+
44
+ # Update dependencies
45
+ bun update
46
+
47
+ # Update specific package
48
+ bun update react
49
+ ```
50
+
51
+ ### bunfig.toml
52
+
53
+ ```toml
54
+ # bunfig.toml
55
+ [install]
56
+ # Disable postinstall scripts for security
57
+ ignorescripts = true
58
+
59
+ # Registry configuration
60
+ registry = "https://registry.npmjs.org"
61
+
62
+ # Install settings
63
+ frozen-lockfile = true
64
+
65
+ [run]
66
+ # Shell for scripts
67
+ shell = "bash"
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Script Commands
73
+
74
+ ### package.json Scripts
75
+
76
+ ```json
77
+ {
78
+ "scripts": {
79
+ "dev": "bun run --hot src/index.ts",
80
+ "start": "bun run src/index.ts",
81
+ "build": "bun build src/index.ts --outdir dist",
82
+ "typecheck": "bunx tsc --noEmit",
83
+ "lint": "bunx eslint . --ext .ts,.tsx",
84
+ "lint:fix": "bunx eslint . --ext .ts,.tsx --fix",
85
+ "test": "bun test",
86
+ "test:watch": "bun test --watch",
87
+ "test:coverage": "bun test --coverage"
88
+ }
89
+ }
90
+ ```
91
+
92
+ ### Running Scripts
93
+
94
+ ```bash
95
+ # Run script
96
+ bun run dev
97
+ bun run build
98
+
99
+ # Shorthand (without "run")
100
+ bun dev
101
+ bun build
102
+
103
+ # Run TypeScript directly
104
+ bun run src/index.ts
105
+
106
+ # Hot reload
107
+ bun run --hot src/index.ts
108
+
109
+ # Watch mode
110
+ bun run --watch src/index.ts
111
+ ```
112
+
113
+ ---
114
+
115
+ ## Bundling
116
+
117
+ ### Basic Bundle
118
+
119
+ ```bash
120
+ # Bundle for browser
121
+ bun build ./src/index.ts --outdir ./dist
122
+
123
+ # Minify
124
+ bun build ./src/index.ts --outdir ./dist --minify
125
+
126
+ # Source maps
127
+ bun build ./src/index.ts --outdir ./dist --sourcemap
128
+
129
+ # Target
130
+ bun build ./src/index.ts --outdir ./dist --target=browser
131
+ bun build ./src/index.ts --outdir ./dist --target=node
132
+ bun build ./src/index.ts --outdir ./dist --target=bun
133
+ ```
134
+
135
+ ### Build API
136
+
137
+ ```typescript
138
+ // build.ts
139
+ const result = await Bun.build({
140
+ entrypoints: ['./src/index.ts'],
141
+ outdir: './dist',
142
+ target: 'browser',
143
+ minify: true,
144
+ sourcemap: 'external',
145
+ splitting: true,
146
+ format: 'esm',
147
+ define: {
148
+ 'process.env.NODE_ENV': '"production"',
149
+ },
150
+ external: ['react', 'react-dom'],
151
+ });
152
+
153
+ if (!result.success) {
154
+ console.error('Build failed:');
155
+ for (const log of result.logs) {
156
+ console.error(log);
157
+ }
158
+ process.exit(1);
159
+ }
160
+ ```
161
+
162
+ ---
163
+
164
+ ## Testing (Vitest-compatible)
165
+
166
+ ### Test Configuration
167
+
168
+ ```typescript
169
+ // bunfig.toml
170
+ [test];
171
+ preload = ['./tests/setup.ts'];
172
+ coverage = true;
173
+ ```
174
+
175
+ ### Test File
176
+
177
+ ```typescript
178
+ // tests/example.test.ts
179
+ import { describe, test, expect, beforeEach, afterEach } from 'bun:test';
180
+
181
+ describe('Feature', () => {
182
+ beforeEach(() => {
183
+ // Setup
184
+ });
185
+
186
+ afterEach(() => {
187
+ // Cleanup
188
+ });
189
+
190
+ test('should work correctly', () => {
191
+ const result = 1 + 1;
192
+ expect(result).toBe(2);
193
+ });
194
+
195
+ test('async operations', async () => {
196
+ const data = await fetchData();
197
+ expect(data).toBeDefined();
198
+ });
199
+ });
200
+ ```
201
+
202
+ ### Mocking
203
+
204
+ ```typescript
205
+ import { mock, spyOn } from 'bun:test';
206
+
207
+ // Mock function
208
+ const mockFn = mock((x: number) => x * 2);
209
+ mockFn(5);
210
+ expect(mockFn).toHaveBeenCalledWith(5);
211
+ expect(mockFn).toHaveReturnedWith(10);
212
+
213
+ // Spy on existing function
214
+ const spy = spyOn(console, 'log');
215
+ console.log('test');
216
+ expect(spy).toHaveBeenCalledWith('test');
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Bun APIs
222
+
223
+ ### File System
224
+
225
+ ```typescript
226
+ // Read file
227
+ const text = await Bun.file('path/to/file.txt').text();
228
+ const json = await Bun.file('path/to/file.json').json();
229
+ const buffer = await Bun.file('path/to/file.bin').arrayBuffer();
230
+
231
+ // Write file
232
+ await Bun.write('output.txt', 'Hello, World!');
233
+ await Bun.write('output.json', JSON.stringify({ hello: 'world' }));
234
+
235
+ // File info
236
+ const file = Bun.file('file.txt');
237
+ console.log(file.size);
238
+ console.log(file.type);
239
+ ```
240
+
241
+ ### HTTP Server
242
+
243
+ ```typescript
244
+ // Simple server
245
+ Bun.serve({
246
+ port: 3000,
247
+ fetch(request) {
248
+ const url = new URL(request.url);
249
+
250
+ if (url.pathname === '/api/hello') {
251
+ return Response.json({ message: 'Hello!' });
252
+ }
253
+
254
+ return new Response('Not Found', { status: 404 });
255
+ },
256
+ });
257
+
258
+ // With WebSocket
259
+ Bun.serve({
260
+ port: 3000,
261
+ fetch(request, server) {
262
+ if (server.upgrade(request)) {
263
+ return;
264
+ }
265
+ return new Response('Upgrade failed', { status: 500 });
266
+ },
267
+ websocket: {
268
+ open(ws) {
269
+ console.log('Client connected');
270
+ },
271
+ message(ws, message) {
272
+ ws.send(`Echo: ${message}`);
273
+ },
274
+ close(ws) {
275
+ console.log('Client disconnected');
276
+ },
277
+ },
278
+ });
279
+ ```
280
+
281
+ ### Subprocess
282
+
283
+ ```typescript
284
+ // Run command
285
+ const result = Bun.spawn(['echo', 'Hello']);
286
+ await result.exited;
287
+
288
+ // Capture output
289
+ const proc = Bun.spawn(['git', 'status'], {
290
+ stdout: 'pipe',
291
+ });
292
+ const output = await new Response(proc.stdout).text();
293
+
294
+ // With stdin
295
+ const proc = Bun.spawn(['cat'], {
296
+ stdin: 'pipe',
297
+ stdout: 'pipe',
298
+ });
299
+ proc.stdin.write('Hello from stdin!');
300
+ proc.stdin.end();
301
+ ```
302
+
303
+ ### Password Hashing
304
+
305
+ ```typescript
306
+ // Hash password
307
+ const hash = await Bun.password.hash('my-password', {
308
+ algorithm: 'bcrypt',
309
+ cost: 10,
310
+ });
311
+
312
+ // Verify password
313
+ const isValid = await Bun.password.verify('my-password', hash);
314
+ ```
315
+
316
+ ### Environment Variables
317
+
318
+ ```typescript
319
+ // Access env vars
320
+ const apiKey = Bun.env['API_KEY'];
321
+ const nodeEnv = Bun.env['NODE_ENV'] ?? 'development';
322
+
323
+ // Set env vars
324
+ Bun.env['CUSTOM_VAR'] = 'value';
325
+ ```
326
+
327
+ ---
328
+
329
+ ## Performance Tips
330
+
331
+ ### Use Native APIs
332
+
333
+ ```typescript
334
+ // Prefer Bun APIs over Node.js equivalents
335
+
336
+ // File reading
337
+ // Node.js way (slower)
338
+ import { readFile } from 'fs/promises';
339
+ const content = await readFile('file.txt', 'utf-8');
340
+
341
+ // Bun way (faster)
342
+ const content = await Bun.file('file.txt').text();
343
+ ```
344
+
345
+ ### Import Optimization
346
+
347
+ ```typescript
348
+ // Use namespace imports for tree-shaking
349
+ import * as z from 'zod';
350
+
351
+ // Avoid dynamic imports in hot paths
352
+ // Bad:
353
+ async function validate(data: unknown) {
354
+ const { z } = await import('zod');
355
+ return z.object({}).parse(data);
356
+ }
357
+
358
+ // Good:
359
+ import { z } from 'zod';
360
+ function validate(data: unknown) {
361
+ return z.object({}).parse(data);
362
+ }
363
+ ```
364
+
365
+ ### Bundle for Production
366
+
367
+ ```bash
368
+ # Compile to single executable
369
+ bun build --compile ./src/index.ts --outfile myapp
370
+
371
+ # Run compiled binary
372
+ ./myapp
373
+ ```
374
+
375
+ ---
376
+
377
+ ## Docker Integration
378
+
379
+ ```dockerfile
380
+ # Use Bun official image
381
+ FROM oven/bun:1-alpine AS base
382
+
383
+ # Install dependencies
384
+ FROM base AS deps
385
+ WORKDIR /app
386
+ COPY package.json bun.lockb ./
387
+ RUN bun install --frozen-lockfile
388
+
389
+ # Build
390
+ FROM base AS builder
391
+ WORKDIR /app
392
+ COPY --from=deps /app/node_modules ./node_modules
393
+ COPY . .
394
+ RUN bun run build
395
+
396
+ # Runtime
397
+ FROM base AS runner
398
+ WORKDIR /app
399
+ COPY --from=builder /app/dist ./dist
400
+ COPY --from=builder /app/package.json ./
401
+
402
+ EXPOSE 3000
403
+ CMD ["bun", "run", "dist/index.js"]
404
+ ```
405
+
406
+ ---
407
+
408
+ ## Agent Integration
409
+
410
+ This skill is used by:
411
+
412
+ - **bun-runtime-expert** agent
413
+ - **quality-checker** for running tests
414
+ - **build-error-fixer** for build issues
415
+ - **dockerfile-optimizer** for Docker builds
416
+
417
+ ---
418
+
419
+ ## FORBIDDEN
420
+
421
+ 1. **`npm` commands** - Use `bun` instead
422
+ 2. **Node.js fs when Bun.file works** - Use native APIs
423
+ 3. **Ignoring lockfile** - Always use `--frozen-lockfile` in CI
424
+ 4. **Skipping typecheck** - Run `bunx tsc --noEmit`
425
+
426
+ ---
427
+
428
+ ## Version
429
+
430
+ - **v1.0.0** - Initial implementation based on Bun 1.x patterns