aislop 0.8.0 → 0.8.1
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/README.md +105 -225
- package/dist/cli.js +1 -1
- package/dist/index.js +2 -2
- package/dist/{json-BJGLCIK-.js → json-7EtVVIhd.js} +1 -1
- package/dist/mcp.js +1 -1
- package/dist/{version-B9ZchFMv.js → version-B7_FRirI.js} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,107 +9,36 @@
|
|
|
9
9
|
[](https://opensource.org/licenses/MIT)
|
|
10
10
|
[](https://nodejs.org)
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
### The killer feature: the per-edit hook
|
|
15
|
-
|
|
16
|
-
Install once into your coding agent:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
npx aislop hook install --claude # also: --cursor, --codex, --gemini, --windsurf, --cline, --kilo, --antigravity, --copilot
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
After every `Edit` / `Write` your agent makes, `aislop` runs and feeds the diagnostics back into the agent's next turn as structured `additionalContext` (envelope: `aislop.hook.v1` — score, counts, findings, regression flag, suggested next steps). **The agent sees the score regression on the same turn it wrote the code, before you prompt again.** No more PR-time surprises; the slop never leaves the keystroke that produced it.
|
|
23
|
-
|
|
24
|
-
CI is the second gate: `aislop ci` exits non-zero when score drops below your threshold, so the same standard is enforced on every PR.
|
|
25
|
-
|
|
26
|
-
Every check is deterministic. Regex patterns, AST analysis, and standard tooling (Biome, oxlint, knip, ruff). Same code in, same score out. No API calls, no LLMs, no network dependency (except optional dependency audits). The name refers to what it *catches*.
|
|
27
|
-
|
|
28
|
-
## See it in action
|
|
29
|
-
|
|
30
|
-
### Scan
|
|
31
|
-
|
|
32
|
-

|
|
33
|
-
|
|
34
|
-
### Fix
|
|
35
|
-
|
|
36
|
-

|
|
12
|
+
Catches the slop AI agents leave behind: dead code, oversized functions and files, unused imports, `as any` casts, swallowed errors, hallucinated imports, todo stubs, narrative comments. Scores 0–100. Deterministic (regex + AST, no LLMs). 8+ languages.
|
|
37
13
|
|
|
38
14
|
## Quick start
|
|
39
15
|
|
|
40
16
|
```bash
|
|
41
|
-
# scan your project
|
|
42
17
|
npx aislop scan
|
|
43
|
-
|
|
44
|
-
# auto-fix what can be fixed safely
|
|
45
|
-
npx aislop fix
|
|
46
|
-
|
|
47
|
-
# CI mode (JSON output + quality gate)
|
|
48
|
-
npx aislop ci
|
|
49
|
-
|
|
50
|
-
# wire aislop into your agent so it runs on every edit
|
|
51
|
-
npx aislop hook install --claude
|
|
52
18
|
```
|
|
53
19
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
```text
|
|
57
|
-
[ok] Formatting: done (0 issues, 426ms)
|
|
58
|
-
[ok] Linting: done (0 issues, 396ms)
|
|
59
|
-
[!] Code Quality: done (2 warnings, 812ms)
|
|
60
|
-
[!] AI Slop: done (4 warnings, 455ms)
|
|
61
|
-
[ok] Security: done (0 issues, 1.3s)
|
|
62
|
-
aislop 0.8.0 · the quality gate for agentic coding
|
|
63
|
-
|
|
64
|
-
scan · my-app · typescript · 142 files
|
|
20
|
+
No install needed. Works on any project. Get your score in seconds.
|
|
65
21
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
> AI Slop
|
|
72
|
-
[WARN] [auto] Narrative comment block (2)
|
|
73
|
-
src/lib/auth.ts:86
|
|
74
|
-
[WARN] 'as any' bypasses type safety
|
|
75
|
-
src/api/normalize.ts:47
|
|
76
|
-
|
|
77
|
-
87 / 100 Healthy 0 errors · 6 warnings · 4 fixable
|
|
78
|
-
142 files · 5 engines · 1.9s
|
|
79
|
-
|
|
80
|
-
→ Run npx aislop fix to auto-fix 4 issues
|
|
81
|
-
→ Run npx aislop fix --claude to hand off the rest to an agent
|
|
22
|
+
```bash
|
|
23
|
+
npx aislop fix # auto-fix issues
|
|
24
|
+
npx aislop fix -f # aggressive fixes (deps, unused files)
|
|
25
|
+
npx aislop ci # CI mode (JSON + gate)
|
|
26
|
+
npx aislop hook install --claude # per-edit hook
|
|
82
27
|
```
|
|
83
28
|
|
|
84
|
-
|
|
29
|
+
**Public badge**: Show your score on your README
|
|
85
30
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
`aislop` gives you one view and one score. Fully deterministic, no AI in the loop.
|
|
91
|
-
|
|
92
|
-
- **One score, one gate**: a 0-100 number you can enforce in CI with `aislop ci`. Weighted so sloppy patterns (dead code, `as any`, swallowed errors) hit harder than style noise.
|
|
93
|
-
- **Auto-fix first, agent second**: `aislop fix` clears what's mechanically safe (formatters, unused imports, trivial comments, dead patterns). For the rest, one flag hands off to Claude Code, Codex, Cursor, Gemini, Windsurf, Amp, Aider, Goose, and 7 more, with full diagnostic context pre-filled.
|
|
94
|
-
- **Wire it into your agent**: `aislop hook install` plugs aislop into Claude Code, Cursor, Gemini CLI (runtime), plus Codex, Windsurf, Cline, Kilo Code, Antigravity, and Copilot (rules-only). The agent gets score + findings on the turn it wrote the code, not after.
|
|
95
|
-
- **Deterministic**: regex, AST, and standard tooling. No LLMs, no API keys, no network dependency. Same repo in, same score out.
|
|
96
|
-
- **Zero-config start**: `npx aislop scan` works on any repo. Add `.aislop/config.yml` when you want to tune thresholds or enable the architecture engine.
|
|
97
|
-
- **Works across stacks**: TypeScript, JavaScript, Python, Go, Rust, Ruby, PHP, Expo / React Native.
|
|
31
|
+
```markdown
|
|
32
|
+
[](https://scanaislop.com)
|
|
33
|
+
```
|
|
98
34
|
|
|
99
|
-
|
|
35
|
+
Run `npx aislop badge` to auto-generate. Free at [scanaislop.com](https://scanaislop.com).
|
|
100
36
|
|
|
101
|
-
|
|
37
|
+
## See it in action
|
|
102
38
|
|
|
103
|
-
|
|
104
|
-
|---|---|---|
|
|
105
|
-
| **Formatting** | Code style consistency | Biome, ruff, gofmt, cargo fmt, rubocop, php-cs-fixer |
|
|
106
|
-
| **Linting** | Language-specific issues | oxlint, ruff, golangci-lint, clippy, expo-doctor |
|
|
107
|
-
| **Code Quality** | Complexity and dead code | Function/file size limits, deep nesting, unused files/deps (knip), AST-based unused-declaration removal |
|
|
108
|
-
| **AI Slop** | AI-authored code patterns | Narrative comments, trivial comments, dead patterns, unused imports, `as any`, `console.log` leftovers, TODO stubs, generic names |
|
|
109
|
-
| **Security** | Vulnerabilities and risky code | eval, innerHTML, SQL/shell injection, dependency audits (npm/pip/cargo/govulncheck) |
|
|
110
|
-
| **Architecture** | Structural rules (opt-in) | Custom import bans, layering rules, required patterns |
|
|
39
|
+
### Scan
|
|
111
40
|
|
|
112
|
-
|
|
41
|
+

|
|
113
42
|
|
|
114
43
|
---
|
|
115
44
|
|
|
@@ -138,111 +67,89 @@ Also available as [`@scanaislop/aislop`](docs/installation.md) on GitHub Package
|
|
|
138
67
|
|
|
139
68
|
## Usage
|
|
140
69
|
|
|
141
|
-
### Scan
|
|
70
|
+
### Scan
|
|
142
71
|
|
|
143
72
|
```bash
|
|
144
|
-
aislop scan
|
|
145
|
-
aislop scan ./src
|
|
146
|
-
aislop scan --changes
|
|
147
|
-
aislop scan --staged
|
|
148
|
-
aislop scan --json
|
|
73
|
+
npx aislop scan # current directory
|
|
74
|
+
npx aislop scan ./src # specific directory
|
|
75
|
+
npx aislop scan --changes # changed files from HEAD
|
|
76
|
+
npx aislop scan --staged # staged files only
|
|
77
|
+
npx aislop scan --json # JSON output
|
|
149
78
|
```
|
|
150
79
|
|
|
151
|
-
**Exclude files
|
|
80
|
+
**Exclude files**: `node_modules`, `.git`, `dist`, `build`, `coverage` excluded by default. Add more in `.aislop/config.yml`:
|
|
152
81
|
|
|
153
82
|
```yaml
|
|
154
83
|
exclude:
|
|
155
|
-
- "**/*.test.ts"
|
|
84
|
+
- "**/*.test.ts"
|
|
156
85
|
- src/generated
|
|
157
|
-
- legacy
|
|
158
86
|
```
|
|
159
87
|
|
|
160
|
-
Or
|
|
88
|
+
Or via CLI: `npx aislop scan --exclude "**/*.test.ts,dist"`
|
|
161
89
|
|
|
162
|
-
|
|
163
|
-
aislop scan --exclude "**/*.test.ts"
|
|
164
|
-
aislop scan --exclude node_modules,dist,logs
|
|
165
|
-
aislop scan --exclude "src/generated" --exclude "**/*.spec.*"
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
CLI flags beat config; config beats defaults.
|
|
169
|
-
|
|
170
|
-
**Extend a shared config.** A project config can extend a parent and override specific keys. Useful for org-wide baselines: ship one strict config, let each repo soften or tighten as needed.
|
|
90
|
+
**Extend config**: Project config can extend a parent:
|
|
171
91
|
|
|
172
92
|
```yaml
|
|
173
93
|
# .aislop/config.yml
|
|
174
|
-
extends: ../../.aislop/base.yml
|
|
175
|
-
|
|
94
|
+
extends: ../../.aislop/base.yml
|
|
176
95
|
ci:
|
|
177
|
-
failBelow: 80
|
|
96
|
+
failBelow: 80 # override specific keys
|
|
178
97
|
```
|
|
179
98
|
|
|
180
|
-
|
|
99
|
+
### Fix
|
|
181
100
|
|
|
182
|
-
|
|
101
|
+
Auto-fix what's mechanical (formatters, unused imports, dead code). For issues that need context, hand off to your agent with full diagnostic info.
|
|
183
102
|
|
|
184
103
|
```bash
|
|
185
|
-
aislop fix # safe auto-fixes
|
|
186
|
-
aislop fix -f # aggressive:
|
|
104
|
+
npx aislop fix # safe auto-fixes
|
|
105
|
+
npx aislop fix -f # aggressive: deps, unused files
|
|
187
106
|
```
|
|
188
107
|
|
|
189
|
-
### Hand off to
|
|
108
|
+
### Hand off to agent
|
|
190
109
|
|
|
191
|
-
When auto-fix can't solve it,
|
|
110
|
+
When auto-fix can't solve it, pass the remaining issues to your coding agent with full context:
|
|
192
111
|
|
|
193
112
|
```bash
|
|
194
|
-
aislop fix --claude # Claude Code
|
|
195
|
-
aislop fix --
|
|
196
|
-
aislop fix --
|
|
197
|
-
aislop fix --
|
|
198
|
-
|
|
199
|
-
aislop fix --
|
|
200
|
-
aislop fix --aider # Aider
|
|
201
|
-
aislop fix --goose # Goose
|
|
202
|
-
aislop fix --opencode # OpenCode
|
|
203
|
-
aislop fix --warp # Warp
|
|
204
|
-
aislop fix --kimi # Kimi Code CLI
|
|
205
|
-
aislop fix --antigravity # Antigravity
|
|
206
|
-
aislop fix --deep-agents # Deep Agents
|
|
207
|
-
aislop fix --vscode # VS Code Copilot (copies prompt to clipboard)
|
|
208
|
-
aislop fix --prompt # print the prompt (agent-agnostic)
|
|
113
|
+
npx aislop fix --claude # Claude Code
|
|
114
|
+
npx aislop fix --cursor # Cursor (copies to clipboard)
|
|
115
|
+
npx aislop fix --gemini # Gemini CLI
|
|
116
|
+
npx aislop fix --codex # Codex CLI
|
|
117
|
+
# Also: --windsurf, --amp, --aider, --goose, --opencode, --warp, --kimi, --antigravity, --deep-agents, --vscode
|
|
118
|
+
npx aislop fix --prompt # print prompt (agent-agnostic)
|
|
209
119
|
```
|
|
210
120
|
|
|
211
|
-
### Install
|
|
121
|
+
### Install hook
|
|
212
122
|
|
|
213
|
-
|
|
123
|
+
Runs after every agent edit. Feedback flows back immediately.
|
|
214
124
|
|
|
215
125
|
```bash
|
|
216
|
-
aislop hook install --claude # Claude Code
|
|
217
|
-
aislop hook install --cursor # Cursor
|
|
218
|
-
aislop hook install --gemini # Gemini CLI
|
|
219
|
-
aislop hook install #
|
|
220
|
-
aislop hook install claude cursor #
|
|
221
|
-
aislop hook install --agent claude,cursor # comma-list if you prefer one flag
|
|
126
|
+
npx aislop hook install --claude # Claude Code
|
|
127
|
+
npx aislop hook install --cursor # Cursor
|
|
128
|
+
npx aislop hook install --gemini # Gemini CLI
|
|
129
|
+
npx aislop hook install # all supported agents
|
|
130
|
+
npx aislop hook install claude cursor # specific agents
|
|
222
131
|
```
|
|
223
132
|
|
|
224
|
-
Runtime adapters (scan + feedback
|
|
225
|
-
|
|
226
|
-
Rules-only installers (agent reads rules on every turn): `codex`, `windsurf`, `cline`, `kilocode`, `antigravity`, `copilot`.
|
|
133
|
+
**Runtime adapters** (scan + feedback): `claude`, `cursor`, `gemini`.
|
|
134
|
+
**Rules-only** (agent reads rules): `codex`, `windsurf`, `cline`, `kilocode`, `antigravity`, `copilot`.
|
|
227
135
|
|
|
228
|
-
|
|
136
|
+
**Quality-gate mode**: Blocks if score regresses below baseline.
|
|
229
137
|
|
|
230
138
|
```bash
|
|
231
|
-
aislop hook install --claude --quality-gate
|
|
232
|
-
aislop hook baseline # re-capture baseline
|
|
233
|
-
aislop hook status # list installed
|
|
234
|
-
aislop hook uninstall --claude # remove
|
|
235
|
-
aislop hook uninstall # remove every aislop entry, sentinel-verified
|
|
139
|
+
npx aislop hook install --claude --quality-gate
|
|
140
|
+
npx aislop hook baseline # re-capture baseline
|
|
141
|
+
npx aislop hook status # list installed
|
|
142
|
+
npx aislop hook uninstall --claude # remove
|
|
236
143
|
```
|
|
237
144
|
|
|
238
|
-
|
|
145
|
+
Docs: [`/docs/hooks`](https://scanaislop.com/docs/hooks)
|
|
239
146
|
|
|
240
|
-
###
|
|
147
|
+
### MCP server
|
|
241
148
|
|
|
242
|
-
aislop
|
|
149
|
+
Expose aislop as MCP tools for Claude Desktop, Cursor, Codex:
|
|
243
150
|
|
|
244
151
|
```jsonc
|
|
245
|
-
// ~/.cursor/mcp.json
|
|
152
|
+
// ~/.cursor/mcp.json or Claude Desktop config
|
|
246
153
|
{
|
|
247
154
|
"mcpServers": {
|
|
248
155
|
"aislop": {
|
|
@@ -253,51 +160,30 @@ aislop ships an MCP (Model Context Protocol) server so any agent that speaks MCP
|
|
|
253
160
|
}
|
|
254
161
|
```
|
|
255
162
|
|
|
256
|
-
Tools
|
|
257
|
-
- `aislop_scan({ path? })` — score + counts + top findings
|
|
258
|
-
- `aislop_fix({ path?, force? })` — apply mechanical fixes; returns before/after delta
|
|
259
|
-
- `aislop_why({ rule_id })` — engine + docs link for a rule
|
|
260
|
-
- `aislop_baseline({ path? })` — read the per-edit-hook baseline (score, lastScanAt, fileCount)
|
|
261
|
-
|
|
262
|
-
Same engines as the CLI; calling these from inside an agent session lets the model self-check before claiming work is done.
|
|
263
|
-
|
|
264
|
-
### Use in CI pipelines
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
aislop ci # JSON output, exits 1 if score < threshold
|
|
268
|
-
```
|
|
163
|
+
**Tools**: `aislop_scan`, `aislop_fix`, `aislop_why`, `aislop_baseline`
|
|
269
164
|
|
|
270
|
-
###
|
|
165
|
+
### CI
|
|
271
166
|
|
|
272
167
|
```bash
|
|
273
|
-
#
|
|
274
|
-
aislop scan --staged
|
|
275
|
-
|
|
276
|
-
# during local cleanup
|
|
277
|
-
aislop fix
|
|
278
|
-
|
|
279
|
-
# full project check
|
|
280
|
-
aislop scan
|
|
168
|
+
npx aislop ci # JSON output, exits 1 if score < threshold
|
|
281
169
|
```
|
|
282
170
|
|
|
283
171
|
### Other commands
|
|
284
172
|
|
|
285
173
|
```bash
|
|
286
|
-
aislop init # create .aislop/config.yml
|
|
287
|
-
aislop
|
|
288
|
-
aislop
|
|
289
|
-
aislop
|
|
290
|
-
aislop hook install # wire aislop into your coding agent
|
|
291
|
-
aislop # interactive menu
|
|
174
|
+
npx aislop init # create .aislop/config.yml
|
|
175
|
+
npx aislop rules # list rules
|
|
176
|
+
npx aislop badge # print badge URL
|
|
177
|
+
npx aislop # interactive menu
|
|
292
178
|
```
|
|
293
179
|
|
|
294
|
-
|
|
180
|
+
Docs: [commands](docs/commands.md)
|
|
295
181
|
|
|
296
182
|
---
|
|
297
183
|
|
|
298
|
-
##
|
|
184
|
+
## CI integration
|
|
299
185
|
|
|
300
|
-
### Pre-commit
|
|
186
|
+
### Pre-commit
|
|
301
187
|
|
|
302
188
|
```bash
|
|
303
189
|
npx aislop scan --staged
|
|
@@ -305,9 +191,7 @@ npx aislop scan --staged
|
|
|
305
191
|
|
|
306
192
|
### GitHub Actions
|
|
307
193
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
Manual form:
|
|
194
|
+
Run `npx aislop init` and accept the workflow prompt, or add manually:
|
|
311
195
|
|
|
312
196
|
```yaml
|
|
313
197
|
- uses: actions/checkout@v4
|
|
@@ -317,90 +201,86 @@ Manual form:
|
|
|
317
201
|
- run: npx aislop@latest ci .
|
|
318
202
|
```
|
|
319
203
|
|
|
320
|
-
|
|
204
|
+
**Composite action**:
|
|
321
205
|
|
|
322
206
|
```yaml
|
|
323
207
|
- uses: actions/checkout@v4
|
|
324
|
-
- uses: scanaislop/aislop@v0.
|
|
208
|
+
- uses: scanaislop/aislop@v0.8
|
|
325
209
|
```
|
|
326
210
|
|
|
327
211
|
### Quality gate
|
|
328
212
|
|
|
329
|
-
Set
|
|
213
|
+
Set minimum score in `.aislop/config.yml`:
|
|
330
214
|
|
|
331
215
|
```yaml
|
|
332
216
|
ci:
|
|
333
217
|
failBelow: 70
|
|
334
218
|
```
|
|
335
219
|
|
|
336
|
-
`aislop ci` exits
|
|
220
|
+
`aislop ci` exits 1 when score < threshold. Docs: [CI/CD](docs/ci.md)
|
|
337
221
|
|
|
338
222
|
---
|
|
339
223
|
|
|
340
|
-
##
|
|
224
|
+
## For teams
|
|
341
225
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
| Telemetry | [docs/telemetry.md](docs/telemetry.md) |
|
|
226
|
+
[scanaislop](https://scanaislop.com) is the hosted platform for teams:
|
|
227
|
+
|
|
228
|
+
- PR gates with score thresholds
|
|
229
|
+
- Standards hierarchy (org → team → project)
|
|
230
|
+
- Dashboards and agent attribution
|
|
231
|
+
- Visual rules manager
|
|
232
|
+
|
|
233
|
+
Same engines, same scores. CLI is MIT-licensed. [Learn more →](https://scanaislop.com)
|
|
351
234
|
|
|
352
235
|
---
|
|
353
236
|
|
|
354
|
-
##
|
|
237
|
+
## Why aislop
|
|
355
238
|
|
|
356
|
-
|
|
239
|
+
AI coding tools generate code that compiles and passes tests but ships with patterns no engineer would write. `aislop` gives you one score, one gate, and auto-fixes what it can.
|
|
357
240
|
|
|
358
|
-
- **
|
|
359
|
-
- **
|
|
360
|
-
- **
|
|
361
|
-
- **
|
|
362
|
-
- **Same engines, same rule IDs, same score**. The CLI remains the source of truth.
|
|
241
|
+
- **One score**: 0-100, enforced in CI. Weighted so sloppy patterns hit harder than style noise.
|
|
242
|
+
- **Auto-fix first**: Clears formatters, unused imports, dead code mechanically. Hands off the rest to your agent with full context.
|
|
243
|
+
- **Deterministic**: Regex + AST + standard tooling. No LLMs, no API calls. Same code in, same score out.
|
|
244
|
+
- **Zero-config start**: `npx aislop scan` works on any repo. Add `.aislop/config.yml` to tune.
|
|
363
245
|
|
|
364
|
-
|
|
246
|
+
## What it catches
|
|
365
247
|
|
|
366
|
-
|
|
248
|
+
Six deterministic engines run in parallel:
|
|
367
249
|
|
|
368
|
-
|
|
250
|
+
| Engine | What it checks | How |
|
|
251
|
+
|---|---|---|
|
|
252
|
+
| **Formatting** | Code style consistency | Biome, ruff, gofmt, cargo fmt, rubocop, php-cs-fixer |
|
|
253
|
+
| **Linting** | Language-specific issues | oxlint, ruff, golangci-lint, clippy, expo-doctor |
|
|
254
|
+
| **Code Quality** | Complexity and dead code | Function/file size limits, deep nesting, unused files/deps (knip), AST-based unused-declaration removal |
|
|
255
|
+
| **AI Slop** | AI-authored code patterns | Narrative comments, trivial comments, dead patterns, unused imports, `as any`, `console.log` leftovers, TODO stubs, generic names |
|
|
256
|
+
| **Security** | Vulnerabilities and risky code | eval, innerHTML, SQL/shell injection, dependency audits (npm/pip/cargo/govulncheck) |
|
|
257
|
+
| **Architecture** | Structural rules (opt-in) | Custom import bans, layering rules, required patterns |
|
|
369
258
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
259
|
+
See the full [rules reference](docs/rules.md).
|
|
260
|
+
|
|
261
|
+
---
|
|
373
262
|
|
|
374
|
-
|
|
263
|
+
## Docs
|
|
375
264
|
|
|
376
|
-
|
|
265
|
+
[Installation](docs/installation.md) · [Commands](docs/commands.md) · [Rules](docs/rules.md) · [Config](docs/configuration.md) · [Scoring](docs/scoring.md) · [CI/CD](docs/ci.md) · [Telemetry](docs/telemetry.md)
|
|
377
266
|
|
|
378
267
|
## Contributing
|
|
379
268
|
|
|
380
|
-
See [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
269
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md). AI assistants: [AGENTS.md](AGENTS.md).
|
|
381
270
|
|
|
382
271
|
## Acknowledgments
|
|
383
272
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
- [Biome](https://biomejs.dev/) for formatting and linting JS/TS
|
|
387
|
-
- [oxlint](https://oxc.rs/) for fast JS/TS linting
|
|
388
|
-
- [knip](https://knip.dev/) for unused files, exports, and dependencies
|
|
389
|
-
- [ruff](https://docs.astral.sh/ruff/) for Python linting and formatting
|
|
390
|
-
- [golangci-lint](https://golangci-lint.run/) for Go linting
|
|
391
|
-
- [expo-doctor](https://docs.expo.dev/) for Expo/React Native project health
|
|
273
|
+
Built on: [Biome](https://biomejs.dev/), [oxlint](https://oxc.rs/), [knip](https://knip.dev/), [ruff](https://docs.astral.sh/ruff/), [golangci-lint](https://golangci-lint.run/), [expo-doctor](https://docs.expo.dev/)
|
|
392
274
|
|
|
393
275
|
## Contributors
|
|
394
276
|
|
|
395
|
-
Thanks to everyone who has shipped code, ideas, docs, or bug reports.
|
|
396
|
-
|
|
397
277
|
<!-- CONTRIBUTORS-START -->
|
|
398
278
|
- [@heavykenny](https://github.com/heavykenny)
|
|
399
279
|
- [@myke-awoniran](https://github.com/myke-awoniran)
|
|
400
280
|
- [@yashrajoria](https://github.com/yashrajoria)
|
|
401
281
|
<!-- CONTRIBUTORS-END -->
|
|
402
282
|
|
|
403
|
-
|
|
283
|
+
Auto-updated by `.github/workflows/contributors.yml`. [Link commit email](https://github.com/settings/emails) or add to [`.github/contributors-overrides.json`](.github/contributors-overrides.json).
|
|
404
284
|
|
|
405
285
|
## License
|
|
406
286
|
|
package/dist/cli.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as ENGINE_INFO, r as getEngineLabel, t as APP_VERSION } from "./version-
|
|
1
|
+
import { n as ENGINE_INFO, r as getEngineLabel, t as APP_VERSION } from "./version-B7_FRirI.js";
|
|
2
2
|
import { n as runSubprocess, t as isToolInstalled } from "./subprocess-CQUJDGgn.js";
|
|
3
3
|
import { r as runGenericLinter, t as fixRubyLint } from "./generic-BrcWMW7E.js";
|
|
4
4
|
import { n as runExpoDoctor } from "./expo-doctor-Bz0LZhQ6.js";
|
|
@@ -6361,7 +6361,7 @@ const scanCommand = async (directory, config, options) => {
|
|
|
6361
6361
|
});
|
|
6362
6362
|
}
|
|
6363
6363
|
if (options.json) {
|
|
6364
|
-
const { buildJsonOutput } = await import("./json-
|
|
6364
|
+
const { buildJsonOutput } = await import("./json-7EtVVIhd.js");
|
|
6365
6365
|
const jsonOut = buildJsonOutput(results, scoreResult, projectInfo.sourceFileCount, elapsedMs);
|
|
6366
6366
|
console.log(JSON.stringify(jsonOut, null, 2));
|
|
6367
6367
|
return { exitCode };
|
package/dist/mcp.js
CHANGED
|
@@ -29,7 +29,7 @@ const getEngineLabel = (engine) => ENGINE_INFO[engine].label;
|
|
|
29
29
|
|
|
30
30
|
//#endregion
|
|
31
31
|
//#region src/version.ts
|
|
32
|
-
const APP_VERSION = "0.8.
|
|
32
|
+
const APP_VERSION = "0.8.1";
|
|
33
33
|
|
|
34
34
|
//#endregion
|
|
35
35
|
export { ENGINE_INFO as n, getEngineLabel as r, APP_VERSION as t };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aislop",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "The engineering standards layer and quality gate for AI-written code. Define your standard once. Every agent — Claude Code, Cursor, Codex — is held to it automatically, on every edit and every PR. Catches the slop they leave behind, enforces the rules your team sets. 8+ languages. Deterministic.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|