@next-vibe/checker 1.0.22 → 1.0.24
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.
- package/.dist/README.md +285 -326
- package/.dist/bin/vibe-runtime.js +4736 -3978
- package/.dist/bin/vibe-runtime.js.map +38 -32
- package/README.md +285 -326
- package/check.config.ts +1 -1
- package/package.json +4 -3
- package/src/app/api/[locale]/system/check/config/create/definition.ts +294 -0
- package/src/app/api/[locale]/system/check/config/create/i18n/de/index.ts +162 -0
- package/src/app/api/[locale]/system/check/config/create/i18n/en/index.ts +156 -0
- package/src/app/api/[locale]/system/check/config/create/i18n/pl/index.ts +159 -0
- package/src/app/api/[locale]/system/check/config/create/repository.ts +281 -0
- package/src/app/api/[locale]/system/check/config/create/route.ts +21 -0
- package/src/app/api/[locale]/system/check/config/repository.ts +1 -11
- package/src/app/api/[locale]/system/check/i18n/de/index.ts +4 -0
- package/src/app/api/[locale]/system/check/i18n/en/index.ts +4 -0
- package/src/app/api/[locale]/system/check/i18n/pl/index.ts +4 -0
- package/src/app/api/[locale]/system/check/lint/definition.ts +0 -12
- package/src/app/api/[locale]/system/check/lint/repository.ts +2 -2
- package/src/app/api/[locale]/system/check/oxlint/definition.ts +0 -12
- package/src/app/api/[locale]/system/check/oxlint/repository.ts +2 -2
- package/src/app/api/[locale]/system/check/test-project/.vscode/settings.json +48 -0
- package/src/app/api/[locale]/system/check/test-project/check.config.ts +1 -1
- package/src/app/api/[locale]/system/check/test-project/package.json +1 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +1 -1
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +1 -1
- package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -1
- package/src/app/api/[locale]/system/check/typecheck/definition.ts +0 -12
- package/src/app/api/[locale]/system/check/typecheck/repository.ts +1 -1
- package/src/app/api/[locale]/system/check/vibe-check/definition.ts +0 -13
- package/src/app/api/[locale]/system/check/vibe-check/repository.ts +10 -11
- package/src/app/api/[locale]/system/generated/endpoint.ts +12 -2
- package/src/app/api/[locale]/system/generated/endpoints.ts +22 -16
- package/src/app/api/[locale]/system/generated/route-handlers.ts +10 -2
- package/src/app/api/[locale]/system/help/list/repository.ts +4 -3
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +5 -1
- package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +4 -3
package/.dist/README.md
CHANGED
|
@@ -1,283 +1,234 @@
|
|
|
1
|
-
# vibe
|
|
1
|
+
# @next-vibe/checker
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Comprehensive TypeScript code quality checker combining Oxlint, ESLint, and TypeScript
|
|
4
4
|
|
|
5
5
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
6
|
-
[](https://www.npmjs.com/package/vibe-check)
|
|
7
6
|
[](https://nodejs.org)
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
Run parallel code quality checks (Oxlint + ESLint + TypeScript) with auto-fix enabled by default. Built with Rust-powered Oxlint for maximum performance.
|
|
10
9
|
|
|
11
10
|
## Features
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
- **Parallel execution** - All checks run simultaneously
|
|
13
|
+
- **Smart caching** - Dramatically faster on subsequent runs
|
|
14
|
+
- **Auto-fix** - Automatically fixes issues (enabled by default)
|
|
15
|
+
- **100+ rules** - React, TypeScript, a11y, Next.js, Node.js
|
|
16
|
+
- **Custom plugins** - i18n validation, JSX capitalization, restricted syntax
|
|
17
|
+
- **MCP server** - Expose tools via Model Context Protocol
|
|
18
|
+
- **Fast type checking** - Uses tsgo (2-3x faster than tsc)
|
|
14
19
|
|
|
15
|
-
|
|
16
|
-
- **Zero configuration**: Works out of the box with sensible defaults
|
|
17
|
-
- **Parallel execution**: Multi-core processing for maximum performance
|
|
18
|
-
- **Auto-fix support**: Automatically fix linting and formatting issues
|
|
19
|
-
- **Comprehensive rules**: 100+ built-in rules for React, TypeScript, a11y, and more
|
|
20
|
+
## Performance
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
Times vary by project size and cache state. **tsgo is enabled by default** (2-3x faster than tsc).
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
- **Git integration**: Automatic tagging, committing, and pushing
|
|
25
|
-
- **Interactive prompts**: Guided release workflow with confirmations
|
|
26
|
-
- **npm publishing**: Built-in support for publishing to npm registry
|
|
27
|
-
- **Changelog generation**: Optional automated changelog creation
|
|
28
|
-
- **Multi-package support**: Manage monorepo releases
|
|
24
|
+
### With tsgo (default)
|
|
29
25
|
|
|
30
|
-
|
|
26
|
+
**Small project:**
|
|
27
|
+
- With cache: ~1s total (Oxlint: 0.5s, ESLint: 1.1s, TypeScript: 0.2s)
|
|
28
|
+
- Without cache: ~1s total (Oxlint: 0.5s, ESLint: 1.1s, TypeScript: 0.2s)
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
30
|
+
**Medium project:**
|
|
31
|
+
- With cache: ~3s total (Oxlint: 2.5s, ESLint: 2.8s, TypeScript: 0.6s)
|
|
32
|
+
- Without cache: ~6s total (Oxlint: 3.2s, ESLint: 4.4s, TypeScript: 5.8s)
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
**Large project:**
|
|
35
|
+
- With cache: ~10s total (Oxlint: 9.8s, ESLint: 3.7s, TypeScript: 3.8s)
|
|
36
|
+
- Without cache: ~51s total (Oxlint: 16.8s, ESLint: 23.9s, TypeScript: 51.3s)
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
- **Smart**: Auto-detects project structure and configuration
|
|
40
|
-
- **Flexible**: Customize via `check.config.ts`
|
|
41
|
-
- **Universal**: Works with any TypeScript/JavaScript project
|
|
38
|
+
### With tsc (if tsgo disabled)
|
|
42
39
|
|
|
43
|
-
|
|
40
|
+
**Small project:**
|
|
41
|
+
- With cache: ~1s total (Oxlint: 0.4s, ESLint: 1.1s, TypeScript: 1.0s)
|
|
42
|
+
- Without cache: ~2s total (Oxlint: 0.5s, ESLint: 1.4s, TypeScript: 1.5s)
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
**Medium project:**
|
|
45
|
+
- With cache: ~13s total (Oxlint: 2.8s, ESLint: 2.1s, TypeScript: 12.5s)
|
|
46
|
+
- Without cache: ~14s total (Oxlint: 3.3s, ESLint: 4.8s, TypeScript: 13.9s)
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
**Large project:**
|
|
49
|
+
- With cache: ~13s total (Oxlint: 10.8s, ESLint: 2.9s, TypeScript: 12.7s)
|
|
50
|
+
- Without cache: ~73s total (Oxlint: 16.3s, ESLint: 24.2s, TypeScript: 72.9s)
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
**Key insights:**
|
|
53
|
+
- **Caching provides 5x speedup on large projects**
|
|
54
|
+
- **tsgo is 2-3x faster than tsc for TypeScript checking**
|
|
55
|
+
- **ESLint can be disabled** if you only need Oxlint rules (saves ~3s on large projects)
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
bun add -g vibe-check
|
|
55
|
-
```
|
|
57
|
+
## Installation
|
|
56
58
|
|
|
57
|
-
###
|
|
59
|
+
### Required: Install in Your Project
|
|
58
60
|
|
|
59
61
|
```bash
|
|
60
|
-
npm install --save-dev vibe
|
|
62
|
+
npm install --save-dev @next-vibe/checker
|
|
63
|
+
# or
|
|
64
|
+
bun add -d @next-vibe/checker
|
|
61
65
|
```
|
|
62
66
|
|
|
63
|
-
|
|
67
|
+
### Optional: Install Globally
|
|
64
68
|
|
|
65
|
-
|
|
69
|
+
For the `vibe` command:
|
|
66
70
|
|
|
67
71
|
```bash
|
|
68
|
-
|
|
72
|
+
npm install -g @next-vibe/checker
|
|
73
|
+
# or
|
|
74
|
+
bun add -g @next-vibe/checker
|
|
69
75
|
```
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
Without global install, use `npx @next-vibe/checker` instead of `vibe`.
|
|
72
78
|
|
|
73
|
-
|
|
79
|
+
## Quick Start
|
|
74
80
|
|
|
75
81
|
```bash
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
This runs:
|
|
80
|
-
- ✓ **Oxlint** - Fast Rust linter (1-2s for most projects)
|
|
81
|
-
- ✓ **ESLint** - Custom rules (import sorting, React hooks, i18n)
|
|
82
|
-
- ✓ **TypeScript** - Type checking with tsgo
|
|
82
|
+
# 1. Install in your project
|
|
83
|
+
npm install --save-dev @next-vibe/checker
|
|
83
84
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
vibe check --fix
|
|
88
|
-
```
|
|
85
|
+
# 2. Create configuration (interactive)
|
|
86
|
+
vibe config-create
|
|
89
87
|
|
|
90
|
-
|
|
91
|
-
- Formatting issues
|
|
92
|
-
- Import order
|
|
93
|
-
- Common linting violations
|
|
94
|
-
|
|
95
|
-
## CLI Commands
|
|
96
|
-
|
|
97
|
-
### Code Quality
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
# Run all checks
|
|
88
|
+
# 3. Run checks
|
|
101
89
|
vibe check
|
|
102
|
-
|
|
103
|
-
# Run with auto-fix
|
|
104
|
-
vibe check --fix
|
|
105
|
-
|
|
106
|
-
# Run specific checks
|
|
107
|
-
vibe check --skip-lint # Skip linting
|
|
108
|
-
vibe check --skip-typecheck # Skip type checking
|
|
109
|
-
|
|
110
|
-
# Verbose output
|
|
111
|
-
vibe check --verbose
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Release Management
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
# Interactive release (recommended)
|
|
118
|
-
vibe release
|
|
119
|
-
|
|
120
|
-
# Automated release with version increment
|
|
121
|
-
vibe release --version-increment patch # 1.0.0 → 1.0.1
|
|
122
|
-
vibe release --version-increment minor # 1.0.0 → 1.1.0
|
|
123
|
-
vibe release --version-increment major # 1.0.0 → 2.0.0
|
|
124
|
-
|
|
125
|
-
# CI/CD mode (non-interactive)
|
|
126
|
-
vibe release --ci
|
|
127
|
-
|
|
128
|
-
# Dry run (preview changes)
|
|
129
|
-
vibe release --dry-run
|
|
130
90
|
```
|
|
131
91
|
|
|
132
|
-
|
|
92
|
+
The `config-create` command interactively sets up:
|
|
93
|
+
- `check.config.ts` - Main configuration
|
|
94
|
+
- ESLint enable/disable - Only needed for rules not in Oxlint (import sorting, React hooks)
|
|
95
|
+
- `.mcp.json` - MCP server config (optional)
|
|
96
|
+
- `.vscode/settings.json` - VSCode integration (optional)
|
|
97
|
+
- `package.json` scripts - npm run check/lint/typecheck (optional)
|
|
133
98
|
|
|
134
|
-
|
|
135
|
-
# Build the project
|
|
136
|
-
vibe builder
|
|
137
|
-
|
|
138
|
-
# Setup/update CLI
|
|
139
|
-
vibe setup install
|
|
140
|
-
vibe setup status
|
|
141
|
-
vibe setup update
|
|
142
|
-
vibe setup uninstall
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### MCP Server
|
|
99
|
+
## Commands
|
|
146
100
|
|
|
147
101
|
```bash
|
|
148
|
-
#
|
|
149
|
-
vibe
|
|
150
|
-
|
|
151
|
-
#
|
|
152
|
-
|
|
102
|
+
vibe check # Run all checks (auto-fix enabled)
|
|
103
|
+
vibe check src # Check specific paths
|
|
104
|
+
vibe check src public # Check multiple paths
|
|
105
|
+
vibe check some/path.ts # Check specific file
|
|
106
|
+
vibe check --limit=50 # Limit displayed issues
|
|
107
|
+
vibe config-create # Create/update configuration
|
|
108
|
+
vibe mcp # Start MCP server
|
|
109
|
+
vibe list # List all commands
|
|
153
110
|
```
|
|
154
111
|
|
|
155
112
|
## Configuration
|
|
156
113
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
Create `check.config.ts` in your project root:
|
|
114
|
+
The `check.config.ts` file controls all behavior:
|
|
160
115
|
|
|
161
116
|
```typescript
|
|
162
|
-
import type { CheckConfig } from "vibe
|
|
117
|
+
import type { CheckConfig } from "@next-vibe/checker/system/check/config/types";
|
|
163
118
|
|
|
164
119
|
const config: CheckConfig = {
|
|
165
|
-
|
|
120
|
+
vibeCheck: {
|
|
121
|
+
fix: true, // Auto-fix (default: true)
|
|
122
|
+
limit: 200, // Max issues to display
|
|
123
|
+
timeout: 3600, // Max execution time (seconds)
|
|
124
|
+
},
|
|
125
|
+
|
|
166
126
|
oxlint: {
|
|
167
127
|
enabled: true,
|
|
168
128
|
configPath: ".tmp/.oxlintrc.json",
|
|
169
|
-
cachePath: ".tmp/oxlint-cache",
|
|
129
|
+
cachePath: ".tmp/oxlint-cache", // Enable caching
|
|
170
130
|
},
|
|
171
131
|
|
|
172
|
-
// ESLint (custom rules)
|
|
173
132
|
eslint: {
|
|
174
133
|
enabled: true,
|
|
175
134
|
configPath: ".tmp/eslint.config.mjs",
|
|
176
|
-
cachePath: ".tmp/eslint-cache",
|
|
135
|
+
cachePath: ".tmp/eslint-cache", // Enable caching
|
|
177
136
|
},
|
|
178
137
|
|
|
179
|
-
// TypeScript type checking
|
|
180
138
|
typecheck: {
|
|
181
139
|
enabled: true,
|
|
182
|
-
|
|
183
|
-
useTsgo: true, // Use tsgo instead of tsc (faster)
|
|
184
|
-
},
|
|
185
|
-
|
|
186
|
-
// Prettier formatting
|
|
187
|
-
prettier: {
|
|
188
|
-
enabled: true,
|
|
189
|
-
configPath: ".tmp/.oxfmtrc.json",
|
|
190
|
-
},
|
|
191
|
-
|
|
192
|
-
// VSCode integration
|
|
193
|
-
vscode: {
|
|
194
|
-
enabled: true,
|
|
195
|
-
autoGenerateSettings: true,
|
|
140
|
+
useTsgo: true, // 2-3x faster than tsc
|
|
196
141
|
},
|
|
197
142
|
};
|
|
198
143
|
|
|
199
144
|
export default config;
|
|
200
145
|
```
|
|
201
146
|
|
|
202
|
-
|
|
147
|
+
See [check.config.ts](./check.config.ts) for complete example with all options.
|
|
203
148
|
|
|
204
|
-
|
|
149
|
+
## What Gets Checked
|
|
205
150
|
|
|
206
|
-
|
|
207
|
-
|
|
151
|
+
### Oxlint (Rust-powered)
|
|
152
|
+
- 100+ built-in rules for React, TypeScript, a11y
|
|
153
|
+
- Custom plugins:
|
|
154
|
+
- i18n validation (no hardcoded strings)
|
|
155
|
+
- JSX capitalization enforcement
|
|
156
|
+
- Restricted syntax (no `throw`, `unknown`, `object` types)
|
|
157
|
+
- Promise best practices
|
|
158
|
+
- Node.js patterns
|
|
159
|
+
- Unicorn modern JS rules
|
|
160
|
+
- **Uses cache** for faster subsequent runs
|
|
208
161
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
162
|
+
### ESLint (Optional)
|
|
163
|
+
- Import/export sorting
|
|
164
|
+
- React hooks validation
|
|
165
|
+
- React compiler rules
|
|
166
|
+
- **Uses cache** for faster subsequent runs
|
|
167
|
+
- **Can be disabled** if you don't need these rules (Oxlint covers most cases)
|
|
168
|
+
- Only needed for rules not yet supported by Oxlint
|
|
212
169
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
allowNonMain: false,
|
|
217
|
-
},
|
|
170
|
+
### TypeScript
|
|
171
|
+
- Full type checking with tsgo or tsc
|
|
172
|
+
- Strict type rules (optional)
|
|
218
173
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
updateDeps: true,
|
|
223
|
-
typecheck: "bun run vibe check",
|
|
224
|
-
build: true,
|
|
225
|
-
|
|
226
|
-
release: {
|
|
227
|
-
tagPrefix: "v",
|
|
228
|
-
|
|
229
|
-
git: {
|
|
230
|
-
skipPush: false,
|
|
231
|
-
skipTag: false,
|
|
232
|
-
commitMessage: "chore(release): ${version}",
|
|
233
|
-
remote: "origin",
|
|
234
|
-
},
|
|
235
|
-
|
|
236
|
-
npm: {
|
|
237
|
-
enabled: true,
|
|
238
|
-
access: "public",
|
|
239
|
-
provenance: true,
|
|
240
|
-
},
|
|
241
|
-
|
|
242
|
-
changelog: {
|
|
243
|
-
enabled: true,
|
|
244
|
-
file: "CHANGELOG.md",
|
|
245
|
-
},
|
|
246
|
-
},
|
|
247
|
-
},
|
|
248
|
-
],
|
|
249
|
-
};
|
|
174
|
+
All checks run **in parallel** for maximum speed.
|
|
175
|
+
|
|
176
|
+
## MCP Server
|
|
250
177
|
|
|
251
|
-
|
|
178
|
+
Configure in `.mcp.json` (created by `vibe config-create`):
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"mcpServers": {
|
|
183
|
+
"vibe": {
|
|
184
|
+
"command": "npx",
|
|
185
|
+
"args": ["@next-vibe/checker", "mcp"],
|
|
186
|
+
"env": {
|
|
187
|
+
"PROJECT_ROOT": "/path/to/your/project"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
252
192
|
```
|
|
253
193
|
|
|
254
|
-
|
|
194
|
+
The MCP server exposes:
|
|
195
|
+
- `check` - Run comprehensive code quality checks
|
|
255
196
|
|
|
256
|
-
|
|
197
|
+
Compatible with any MCP client.
|
|
257
198
|
|
|
258
|
-
|
|
199
|
+
## Usage in Projects
|
|
259
200
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
}
|
|
271
|
-
}
|
|
201
|
+
### With npm Scripts
|
|
202
|
+
|
|
203
|
+
If you selected package.json update during `config-create`:
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
{
|
|
207
|
+
"scripts": {
|
|
208
|
+
"check": "vibe check",
|
|
209
|
+
"lint": "vibe check",
|
|
210
|
+
"typecheck": "vibe check"
|
|
211
|
+
}
|
|
212
|
+
}
|
|
272
213
|
```
|
|
273
214
|
|
|
274
|
-
|
|
215
|
+
Then run:
|
|
216
|
+
```bash
|
|
217
|
+
npm run check
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Without Global Install
|
|
275
221
|
|
|
276
|
-
|
|
222
|
+
```bash
|
|
223
|
+
npx @next-vibe/checker check
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## CI/CD Integration
|
|
227
|
+
|
|
228
|
+
### GitHub Actions
|
|
277
229
|
|
|
278
230
|
```yaml
|
|
279
231
|
name: Code Quality
|
|
280
|
-
|
|
281
232
|
on: [push, pull_request]
|
|
282
233
|
|
|
283
234
|
jobs:
|
|
@@ -285,173 +236,181 @@ jobs:
|
|
|
285
236
|
runs-on: ubuntu-latest
|
|
286
237
|
steps:
|
|
287
238
|
- uses: actions/checkout@v4
|
|
288
|
-
- uses:
|
|
289
|
-
- run:
|
|
290
|
-
- run:
|
|
239
|
+
- uses: actions/setup-node@v4
|
|
240
|
+
- run: npm install
|
|
241
|
+
- run: npm run check
|
|
291
242
|
```
|
|
292
243
|
|
|
293
|
-
|
|
244
|
+
### GitLab CI
|
|
294
245
|
|
|
295
246
|
```yaml
|
|
296
247
|
check:
|
|
297
|
-
image:
|
|
248
|
+
image: node:18
|
|
298
249
|
script:
|
|
299
|
-
-
|
|
300
|
-
-
|
|
250
|
+
- npm install
|
|
251
|
+
- npm run check
|
|
301
252
|
```
|
|
302
253
|
|
|
303
|
-
|
|
254
|
+
## Caching
|
|
304
255
|
|
|
305
|
-
|
|
306
|
-
import { vibeCheck } from "vibe-check/system/check/vibe-check/repository";
|
|
307
|
-
import { EndpointLogger } from "vibe-check/system/unified-interface/shared/logger/endpoint";
|
|
256
|
+
The checker uses caching to speed up subsequent runs:
|
|
308
257
|
|
|
309
|
-
|
|
258
|
+
- **Oxlint cache**: `.tmp/oxlint-cache`
|
|
259
|
+
- **ESLint cache**: `.tmp/eslint-cache`
|
|
310
260
|
|
|
311
|
-
|
|
312
|
-
{
|
|
313
|
-
path: "./src",
|
|
314
|
-
fix: true,
|
|
315
|
-
skipTypecheck: false,
|
|
316
|
-
},
|
|
317
|
-
logger,
|
|
318
|
-
);
|
|
261
|
+
Cache directories are created automatically. Add `.tmp/` to your `.gitignore`.
|
|
319
262
|
|
|
320
|
-
|
|
321
|
-
console.error("Check failed:", result.data.issues);
|
|
322
|
-
process.exit(1);
|
|
323
|
-
}
|
|
324
|
-
```
|
|
263
|
+
On first run (cold cache), checks are slower. Subsequent runs are significantly faster.
|
|
325
264
|
|
|
326
|
-
##
|
|
265
|
+
## Migrating from Existing Linters
|
|
327
266
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
|
|
331
|
-
|
|
332
|
-
```json
|
|
333
|
-
{
|
|
334
|
-
"mcpServers": {
|
|
335
|
-
"vibe-check": {
|
|
336
|
-
"command": "bun",
|
|
337
|
-
"args": ["vibe", "mcp"]
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
```
|
|
267
|
+
If you have existing ESLint, Prettier, or other linter configurations, use this AI agent prompt to migrate cleanly to vibe-check. The agent will port your custom rules to **Oxlint plugins** (preferred, faster) or ESLint where necessary.
|
|
342
268
|
|
|
343
|
-
###
|
|
269
|
+
### AI Agent Migration Prompt
|
|
344
270
|
|
|
345
|
-
|
|
346
|
-
- `fix_code_issues` - Auto-fix linting and formatting issues
|
|
347
|
-
- `analyze_typescript` - Deep TypeScript analysis
|
|
348
|
-
- `get_lint_config` - View current linting configuration
|
|
271
|
+
Copy and paste this into your AI agent (Claude, Cursor, etc.):
|
|
349
272
|
|
|
350
|
-
## Performance
|
|
351
|
-
|
|
352
|
-
### Benchmark Results
|
|
353
|
-
|
|
354
|
-
Tested on a typical Next.js project (500 files, 50k LoC):
|
|
355
|
-
|
|
356
|
-
| Tool | Time | Files/sec |
|
|
357
|
-
| --------- | ------ | --------- |
|
|
358
|
-
| Oxlint | 1.2s | ~417 |
|
|
359
|
-
| ESLint | 3.5s | ~143 |
|
|
360
|
-
| TypeScript| 2.8s | ~179 |
|
|
361
|
-
| **Total** | **3.9s** | **~128** |
|
|
362
|
-
|
|
363
|
-
*Parallel execution ensures total time ≈ slowest check, not sum of all checks*
|
|
364
|
-
|
|
365
|
-
### Optimization Tips
|
|
366
|
-
|
|
367
|
-
1. **Use tsgo**: 2-3x faster than `tsc`
|
|
368
|
-
2. **Enable caching**: Reuse results across runs
|
|
369
|
-
3. **Parallel workers**: Auto-scales to CPU cores
|
|
370
|
-
4. **Incremental checks**: Only check changed files
|
|
371
|
-
|
|
372
|
-
## Troubleshooting
|
|
373
|
-
|
|
374
|
-
### Common Issues
|
|
375
|
-
|
|
376
|
-
**Q: "Config file not found"**
|
|
377
|
-
```bash
|
|
378
|
-
vibe check --create-config
|
|
379
273
|
```
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
274
|
+
I need to migrate my project to @next-vibe/checker and port all existing linting configurations.
|
|
275
|
+
|
|
276
|
+
PROJECT CONTEXT:
|
|
277
|
+
- Current linters: [list your linters: ESLint, Prettier, TSLint, etc.]
|
|
278
|
+
- Custom rules: [describe any custom rules you have]
|
|
279
|
+
- Config files: [list: .eslintrc.js, .prettierrc, etc.]
|
|
280
|
+
|
|
281
|
+
MIGRATION REQUIREMENTS:
|
|
282
|
+
|
|
283
|
+
1. INSTALL & SETUP
|
|
284
|
+
- Install: npm install --save-dev @next-vibe/checker
|
|
285
|
+
- Run: vibe config-create (interactive setup)
|
|
286
|
+
- Select all relevant options (React, Next.js, i18n, etc.)
|
|
287
|
+
|
|
288
|
+
2. PORT CUSTOM RULES TO OXLINT PLUGINS (PREFERRED)
|
|
289
|
+
- Analyze my existing custom ESLint rules
|
|
290
|
+
- Create Oxlint plugins as TypeScript files in oxlint-plugins/
|
|
291
|
+
- Follow the pattern from check.config.ts jsPlugins configuration
|
|
292
|
+
- Oxlint plugins are FASTER than ESLint - prefer this approach
|
|
293
|
+
- Only use ESLint for rules that absolutely cannot be implemented in Oxlint
|
|
294
|
+
|
|
295
|
+
3. OXLINT PLUGIN STRUCTURE
|
|
296
|
+
Each plugin should be a TypeScript file that exports rules:
|
|
297
|
+
```typescript
|
|
298
|
+
// oxlint-plugins/my-custom-rule.ts
|
|
299
|
+
export default {
|
|
300
|
+
rules: {
|
|
301
|
+
'my-rule-name': {
|
|
302
|
+
create(context) {
|
|
303
|
+
// Rule implementation
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
Register in check.config.ts:
|
|
311
|
+
```typescript
|
|
312
|
+
jsPlugins: [
|
|
313
|
+
"oxlint-plugins/my-custom-rule.ts"
|
|
314
|
+
]
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
4. UPDATE check.config.ts
|
|
318
|
+
- Port all rule configurations from old config files
|
|
319
|
+
- Map ESLint rules to equivalent Oxlint rules where possible
|
|
320
|
+
- Configure custom Oxlint plugins
|
|
321
|
+
- Only add ESLint rules that have no Oxlint equivalent
|
|
322
|
+
- Set appropriate severity levels (error/warn)
|
|
323
|
+
|
|
324
|
+
5. CLEAN UP OLD CONFIGS
|
|
325
|
+
- Remove old config files: .eslintrc.*, .prettierrc, etc.
|
|
326
|
+
- Remove old linter packages from package.json
|
|
327
|
+
- Update package.json scripts to use vibe check
|
|
328
|
+
- Remove old linter-specific ignore files
|
|
329
|
+
|
|
330
|
+
6. TEST THE MIGRATION
|
|
331
|
+
- Run: vibe check
|
|
332
|
+
- Verify all custom rules are working
|
|
333
|
+
- Test auto-fix functionality
|
|
334
|
+
- Compare results with old linter to ensure nothing is missed
|
|
335
|
+
- Run on a few test files with known issues
|
|
336
|
+
- Verify TypeScript checking works correctly
|
|
337
|
+
|
|
338
|
+
7. VERIFY CUSTOM RULES
|
|
339
|
+
- Create test files that should trigger each custom rule
|
|
340
|
+
- Confirm rules are enforced correctly
|
|
341
|
+
- Test that auto-fix works for fixable rules
|
|
342
|
+
- Document any rules that couldn't be migrated and why
|
|
343
|
+
|
|
344
|
+
8. UPDATE DOCUMENTATION
|
|
345
|
+
- Update project README with new lint commands
|
|
346
|
+
- Document any custom Oxlint plugins created
|
|
347
|
+
- Add notes about which rules are Oxlint vs ESLint
|
|
348
|
+
|
|
349
|
+
PREFERENCES:
|
|
350
|
+
- ALWAYS prefer Oxlint plugins over ESLint (much faster)
|
|
351
|
+
- Use ESLint only when absolutely necessary
|
|
352
|
+
- Maintain the same strictness level as before
|
|
353
|
+
- Preserve all custom rule logic
|
|
354
|
+
- Enable auto-fix where possible
|
|
355
|
+
|
|
356
|
+
OUTPUT REQUIREMENTS:
|
|
357
|
+
- List of all custom Oxlint plugins created
|
|
358
|
+
- Explanation of which ESLint rules couldn't be ported and why
|
|
359
|
+
- Summary of migration changes
|
|
360
|
+
- Test results showing rules work correctly
|
|
361
|
+
- Any recommendations for further optimization
|
|
362
|
+
|
|
363
|
+
Please proceed with the migration step by step, asking for clarification if needed.
|
|
392
364
|
```
|
|
393
365
|
|
|
394
|
-
|
|
395
|
-
- Ensure `globalVersion` in `release.config.ts` matches your package.json
|
|
396
|
-
- Version increments work from max(git tag, configured version)
|
|
366
|
+
### After Migration
|
|
397
367
|
|
|
398
|
-
|
|
368
|
+
1. **Verify everything works:**
|
|
369
|
+
```bash
|
|
370
|
+
vibe check
|
|
371
|
+
```
|
|
399
372
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
373
|
+
2. **Test on specific files:**
|
|
374
|
+
```bash
|
|
375
|
+
vibe check src/problematic-file.ts
|
|
376
|
+
```
|
|
403
377
|
|
|
404
|
-
|
|
378
|
+
3. **Check CI/CD:**
|
|
379
|
+
Update your CI configuration to use `npm run check`
|
|
405
380
|
|
|
406
|
-
|
|
381
|
+
4. **Commit changes:**
|
|
382
|
+
```bash
|
|
383
|
+
git add .
|
|
384
|
+
git commit -m "Migrate to @next-vibe/checker with custom Oxlint plugins"
|
|
385
|
+
```
|
|
407
386
|
|
|
408
|
-
|
|
387
|
+
### Oxlint Plugin Resources
|
|
409
388
|
|
|
410
|
-
-
|
|
411
|
-
-
|
|
412
|
-
-
|
|
413
|
-
-
|
|
389
|
+
- See `oxlint-plugins/` directory in this repository for examples
|
|
390
|
+
- Oxlint plugins are TypeScript files that export rule definitions
|
|
391
|
+
- Much faster than ESLint (Rust-powered execution)
|
|
392
|
+
- Full access to AST for powerful custom rules
|
|
414
393
|
|
|
415
|
-
|
|
394
|
+
## Contributing
|
|
395
|
+
|
|
396
|
+
This project lives on the `vibe-check` branch:
|
|
416
397
|
|
|
417
398
|
```bash
|
|
418
|
-
git clone https://github.com/
|
|
399
|
+
git clone https://github.com/techfreaque/next-vibe.git
|
|
419
400
|
cd next-vibe
|
|
420
401
|
git checkout vibe-check
|
|
421
402
|
bun install
|
|
422
403
|
bun vibe check
|
|
423
404
|
```
|
|
424
405
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
```bash
|
|
428
|
-
bun test
|
|
429
|
-
```
|
|
406
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines.
|
|
430
407
|
|
|
431
408
|
## License
|
|
432
409
|
|
|
433
|
-
GPL-3.0-only - see [LICENSE](LICENSE)
|
|
434
|
-
|
|
435
|
-
## Credits
|
|
436
|
-
|
|
437
|
-
Created by **Max Brandstätter** ([@maxbrandstatter](https://github.com/maxbrandstatter))
|
|
438
|
-
|
|
439
|
-
Built with contributions from:
|
|
440
|
-
- Claude Code
|
|
441
|
-
- Augment
|
|
442
|
-
- t3.chat
|
|
443
|
-
- Cursor
|
|
444
|
-
|
|
445
|
-
### Special Thanks
|
|
446
|
-
|
|
447
|
-
Tools that didn't make the cut (RIP):
|
|
448
|
-
- ~~ChatGPT~~ (fired)
|
|
449
|
-
- ~~Copilot~~ (fired)
|
|
450
|
-
- ~~v0.dev~~ (fired)
|
|
451
|
-
- ~~Devin~~ (fired)
|
|
452
|
-
|
|
453
|
-
---
|
|
410
|
+
GPL-3.0-only - see [LICENSE](LICENSE)
|
|
454
411
|
|
|
455
|
-
|
|
412
|
+
## Links
|
|
456
413
|
|
|
457
|
-
|
|
414
|
+
- [GitHub Repository](https://github.com/techfreaque/next-vibe/tree/vibe-check)
|
|
415
|
+
- [npm Package](https://www.npmjs.com/package/@next-vibe/checker)
|
|
416
|
+
- [Report Issues](https://github.com/techfreaque/next-vibe/issues)
|