start-vibing 2.0.2 → 2.0.4

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 (105) hide show
  1. package/package.json +1 -1
  2. package/template/.claude/agents/01-orchestration/agent-selector.md +1 -0
  3. package/template/.claude/agents/01-orchestration/checkpoint-manager.md +2 -1
  4. package/template/.claude/agents/01-orchestration/context-manager.md +2 -1
  5. package/template/.claude/agents/01-orchestration/error-recovery.md +2 -1
  6. package/template/.claude/agents/01-orchestration/orchestrator.md +1 -1
  7. package/template/.claude/agents/01-orchestration/parallel-coordinator.md +2 -1
  8. package/template/.claude/agents/01-orchestration/task-decomposer.md +1 -1
  9. package/template/.claude/agents/01-orchestration/workflow-router.md +2 -1
  10. package/template/.claude/agents/02-typescript/bun-runtime-expert.md +2 -1
  11. package/template/.claude/agents/02-typescript/esm-resolver.md +2 -1
  12. package/template/.claude/agents/02-typescript/import-alias-enforcer.md +2 -1
  13. package/template/.claude/agents/02-typescript/ts-generics-helper.md +1 -0
  14. package/template/.claude/agents/02-typescript/ts-migration-helper.md +2 -1
  15. package/template/.claude/agents/02-typescript/ts-strict-checker.md +2 -1
  16. package/template/.claude/agents/02-typescript/ts-types-analyzer.md +2 -1
  17. package/template/.claude/agents/02-typescript/type-definition-writer.md +2 -1
  18. package/template/.claude/agents/02-typescript/zod-schema-designer.md +2 -2
  19. package/template/.claude/agents/02-typescript/zod-validator.md +2 -1
  20. package/template/.claude/agents/03-testing/playwright-assertions.md +1 -0
  21. package/template/.claude/agents/03-testing/playwright-e2e.md +2 -2
  22. package/template/.claude/agents/03-testing/playwright-fixtures.md +2 -2
  23. package/template/.claude/agents/03-testing/playwright-multi-viewport.md +2 -2
  24. package/template/.claude/agents/03-testing/playwright-page-objects.md +2 -1
  25. package/template/.claude/agents/03-testing/test-cleanup-manager.md +2 -1
  26. package/template/.claude/agents/03-testing/test-data-generator.md +2 -1
  27. package/template/.claude/agents/03-testing/tester-integration.md +1 -1
  28. package/template/.claude/agents/03-testing/tester-unit.md +1 -1
  29. package/template/.claude/agents/03-testing/vitest-config.md +2 -1
  30. package/template/.claude/agents/04-docker/container-health.md +2 -1
  31. package/template/.claude/agents/04-docker/deployment-validator.md +2 -1
  32. package/template/.claude/agents/04-docker/docker-compose-designer.md +2 -1
  33. package/template/.claude/agents/04-docker/docker-env-manager.md +2 -1
  34. package/template/.claude/agents/04-docker/docker-multi-stage.md +2 -1
  35. package/template/.claude/agents/04-docker/dockerfile-optimizer.md +2 -1
  36. package/template/.claude/agents/05-database/data-migration.md +2 -1
  37. package/template/.claude/agents/05-database/database-seeder.md +2 -1
  38. package/template/.claude/agents/05-database/mongodb-query-optimizer.md +2 -1
  39. package/template/.claude/agents/05-database/mongoose-aggregation.md +2 -1
  40. package/template/.claude/agents/05-database/mongoose-index-optimizer.md +2 -1
  41. package/template/.claude/agents/05-database/mongoose-schema-designer.md +2 -2
  42. package/template/.claude/agents/06-security/auth-session-validator.md +1 -1
  43. package/template/.claude/agents/06-security/input-sanitizer.md +2 -1
  44. package/template/.claude/agents/06-security/owasp-checker.md +1 -1
  45. package/template/.claude/agents/06-security/permission-auditor.md +2 -1
  46. package/template/.claude/agents/06-security/security-auditor.md +1 -1
  47. package/template/.claude/agents/06-security/sensitive-data-scanner.md +2 -1
  48. package/template/.claude/agents/07-documentation/api-documenter.md +2 -1
  49. package/template/.claude/agents/07-documentation/changelog-manager.md +2 -1
  50. package/template/.claude/agents/07-documentation/documenter.md +1 -1
  51. package/template/.claude/agents/07-documentation/domain-updater.md +1 -1
  52. package/template/.claude/agents/07-documentation/jsdoc-generator.md +2 -1
  53. package/template/.claude/agents/07-documentation/readme-generator.md +2 -1
  54. package/template/.claude/agents/08-git/branch-manager.md +2 -1
  55. package/template/.claude/agents/08-git/commit-manager.md +2 -2
  56. package/template/.claude/agents/08-git/pr-creator.md +2 -1
  57. package/template/.claude/agents/09-quality/code-reviewer.md +2 -1
  58. package/template/.claude/agents/09-quality/quality-checker.md +1 -1
  59. package/template/.claude/agents/10-research/best-practices-finder.md +1 -1
  60. package/template/.claude/agents/10-research/competitor-analyzer.md +1 -1
  61. package/template/.claude/agents/10-research/pattern-researcher.md +1 -1
  62. package/template/.claude/agents/10-research/research-cache-manager.md +1 -1
  63. package/template/.claude/agents/10-research/research-web.md +1 -1
  64. package/template/.claude/agents/10-research/tech-evaluator.md +1 -1
  65. package/template/.claude/agents/11-ui-ux/accessibility-auditor.md +1 -1
  66. package/template/.claude/agents/11-ui-ux/design-system-enforcer.md +2 -2
  67. package/template/.claude/agents/11-ui-ux/skeleton-generator.md +2 -2
  68. package/template/.claude/agents/11-ui-ux/ui-desktop.md +2 -2
  69. package/template/.claude/agents/11-ui-ux/ui-mobile.md +2 -2
  70. package/template/.claude/agents/11-ui-ux/ui-tablet.md +2 -2
  71. package/template/.claude/agents/12-performance/api-latency-analyzer.md +2 -1
  72. package/template/.claude/agents/12-performance/bundle-analyzer.md +2 -1
  73. package/template/.claude/agents/12-performance/memory-leak-detector.md +2 -1
  74. package/template/.claude/agents/12-performance/performance-profiler.md +2 -1
  75. package/template/.claude/agents/12-performance/query-optimizer.md +2 -2
  76. package/template/.claude/agents/12-performance/render-optimizer.md +2 -1
  77. package/template/.claude/agents/13-debugging/build-error-fixer.md +2 -1
  78. package/template/.claude/agents/13-debugging/debugger.md +2 -1
  79. package/template/.claude/agents/13-debugging/error-stack-analyzer.md +2 -1
  80. package/template/.claude/agents/13-debugging/network-debugger.md +2 -1
  81. package/template/.claude/agents/13-debugging/runtime-error-fixer.md +2 -1
  82. package/template/.claude/agents/13-debugging/type-error-resolver.md +2 -1
  83. package/template/.claude/agents/14-validation/final-validator.md +1 -1
  84. package/template/.claude/hooks/SETUP.md +85 -11
  85. package/template/.claude/hooks/run-hook.cmd +46 -0
  86. package/template/.claude/hooks/run-hook.sh +43 -0
  87. package/template/.claude/hooks/run-hook.ts +158 -0
  88. package/template/.claude/hooks/stop-validator.ts +339 -0
  89. package/template/.claude/hooks/user-prompt-submit.ts +298 -0
  90. package/template/.claude/settings.json +4 -3
  91. package/template/.claude/skills/bun-runtime/SKILL.md +430 -0
  92. package/template/.claude/skills/codebase-knowledge/domains/claude-system.md +46 -4
  93. package/template/.claude/skills/debugging-patterns/SKILL.md +484 -0
  94. package/template/.claude/skills/docker-patterns/SKILL.md +547 -0
  95. package/template/.claude/skills/git-workflow/SKILL.md +454 -0
  96. package/template/.claude/skills/mongoose-patterns/SKILL.md +512 -0
  97. package/template/.claude/skills/nextjs-app-router/SKILL.md +337 -0
  98. package/template/.claude/skills/performance-patterns/SKILL.md +549 -0
  99. package/template/.claude/skills/playwright-automation/SKILL.md +438 -0
  100. package/template/.claude/skills/react-patterns/SKILL.md +376 -0
  101. package/template/.claude/skills/shadcn-ui/SKILL.md +520 -0
  102. package/template/.claude/skills/tailwind-patterns/SKILL.md +467 -0
  103. package/template/.claude/skills/trpc-api/SKILL.md +435 -0
  104. package/template/.claude/skills/typescript-strict/SKILL.md +368 -0
  105. package/template/.claude/skills/zod-validation/SKILL.md +405 -0
@@ -0,0 +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
@@ -2,9 +2,9 @@
2
2
 
3
3
  ## Last Update
4
4
 
5
- - **Date:** 2026-01-02
6
- - **Commit:** 70ca50f
7
- - **Session:** Enhanced start-vibing CLI with auto-install Claude Code and self-update
5
+ - **Date:** 2026-01-03
6
+ - **Commit:** d429772
7
+ - **Session:** Universal hook runner with multi-runtime fallback support
8
8
 
9
9
  ## Files
10
10
 
@@ -27,8 +27,15 @@
27
27
 
28
28
  ### Hooks
29
29
 
30
+ - `.claude/hooks/run-hook.ts` - **NEW** Universal hook runner with multi-runtime fallback (python3 -> python -> bun -> npx tsx)
31
+ - `.claude/hooks/run-hook.sh` - **NEW** Shell wrapper for Unix/Linux/Mac
32
+ - `.claude/hooks/run-hook.cmd` - **NEW** Batch wrapper for Windows
30
33
  - `.claude/hooks/stop-validator.py` - Stop hook enforcement: branch protection + documentation check
34
+ - `.claude/hooks/stop-validator.ts` - **NEW** TypeScript fallback version of stop-validator
31
35
  - `.claude/hooks/user-prompt-submit.py` - Agent selection guidance before prompt processing
36
+ - `.claude/hooks/user-prompt-submit.ts` - **NEW** TypeScript fallback version of user-prompt-submit
37
+ - `.claude/hooks/check-documentation.py` - Documentation verification hook
38
+ - `.claude/hooks/SETUP.md` - Hook system documentation
32
39
 
33
40
  ### Skills (with Progressive Disclosure)
34
41
 
@@ -75,14 +82,47 @@
75
82
 
76
83
  | Hash | Date | Description |
77
84
  | ---- | ---- | ----------- |
85
+ | d429772 | 2026-01-03 | feat(agents): restructure agent system with 82 specialized sub-agents |
78
86
  | 70ca50f | 2026-01-02 | feat(start-vibing): auto-install Claude Code and self-update |
79
87
  | 5c74c95 | 2026-01-02 | feat: add specialized agents and progressive disclosure to skills |
80
88
  | b5c483b | 2026-01-02 | docs: add agents/skills comparison research with industry benchmarks |
81
89
  | 0f2c1ff | 2026-01-02 | fix: block ALL changes on main branch, not just protected files |
82
- | 1f6f35f | 2026-01-02 | feat: enhance stop hook with system config file protection |
83
90
 
84
91
  ## Problems & Solutions
85
92
 
93
+ ### 2026-01-03 - Universal Hook Runner with Multi-Runtime Fallback
94
+
95
+ **Problem:**
96
+ Stop hook was failing with `/bin/sh: 1: python: not found` error when Python was not installed on the user's system.
97
+
98
+ **Root Cause:**
99
+ Hooks were hardcoded to use `python .claude/hooks/*.py` which fails if Python is not in PATH.
100
+
101
+ **Solution:**
102
+ Created a universal hook runner (`run-hook.ts`) that:
103
+ 1. Tries multiple runtimes in priority order: python3 -> python -> bun -> npx tsx
104
+ 2. Python remains primary (user preference)
105
+ 3. TypeScript versions of hooks serve as fallback
106
+ 4. Returns safe default if no runtime available (doesn't block user)
107
+
108
+ **Files Added:**
109
+ - `.claude/hooks/run-hook.ts` - Universal runner with runtime detection
110
+ - `.claude/hooks/run-hook.sh` - Shell wrapper for Unix
111
+ - `.claude/hooks/run-hook.cmd` - Batch wrapper for Windows
112
+ - `.claude/hooks/stop-validator.ts` - TypeScript fallback
113
+ - `.claude/hooks/user-prompt-submit.ts` - TypeScript fallback
114
+
115
+ **Files Modified:**
116
+ - `.claude/settings.json` - Updated hook commands to use `bun .claude/hooks/run-hook.ts <hook-name>`
117
+ - `.claude/hooks/SETUP.md` - Updated documentation
118
+
119
+ **Prevention:**
120
+ - Always provide TypeScript fallbacks for Python hooks
121
+ - Use runtime detection instead of hardcoded interpreter paths
122
+ - Return safe defaults instead of failing
123
+
124
+ ---
125
+
86
126
  ### 2026-01-02 - start-vibing v2.0.0 with Auto-install and Self-update
87
127
 
88
128
  **Context:**
@@ -212,6 +252,8 @@ To make an agent invokable via Task tool, it needs to be registered in Claude Co
212
252
 
213
253
  ## Attention Points
214
254
 
255
+ - [2026-01-03] **Hooks use universal runner** - `bun .claude/hooks/run-hook.ts <hook-name>` tries python3 -> python -> bun -> npx tsx
256
+ - [2026-01-03] **TypeScript hook fallbacks** - All Python hooks have `.ts` versions for when Python unavailable
215
257
  - [2026-01-02] **System files protected alongside source** - CLAUDE.md, .claude/, PROJECT.md require branch protection
216
258
  - [2026-01-02] **CLAUDE.md fallback instruction** - If Task tool fails, read agent files directly from .claude/agents/
217
259
  - [2024-12-18] **Workflow is enforced by hooks** - Cannot skip steps, hooks will block