@theglitchking/gimme-the-lint 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/commands/lint-baseline.md +33 -0
- package/.claude-plugin/commands/lint-status.md +26 -0
- package/.claude-plugin/commands/lint.md +40 -0
- package/.claude-plugin/plugin.json +48 -0
- package/CHANGELOG.md +24 -0
- package/LICENSE +21 -0
- package/README.md +310 -0
- package/agents/linting-agent.md +24 -0
- package/bin/gimme-the-lint.js +220 -0
- package/bin/postinstall.js +29 -0
- package/githooks/install.sh +43 -0
- package/githooks/pre-commit +49 -0
- package/githooks/pre-push +39 -0
- package/install.sh +58 -0
- package/lib/config-manager.js +98 -0
- package/lib/directory-discovery.js +120 -0
- package/lib/drift-detector.js +92 -0
- package/lib/git-hooks-manager.js +115 -0
- package/lib/index.js +19 -0
- package/lib/installer.js +110 -0
- package/lib/manifest-manager.js +58 -0
- package/lib/venv-manager.js +94 -0
- package/package.json +82 -0
- package/scripts/dashboard.sh +168 -0
- package/scripts/eslint-baseline.sh +227 -0
- package/scripts/ruff-baseline.sh +226 -0
- package/scripts/run-checks.sh +291 -0
- package/scripts/setup-venv.sh +81 -0
- package/scripts/validate-version.sh +46 -0
- package/templates/.gitleaks.template.toml +71 -0
- package/templates/.pre-commit-config.template.yaml +51 -0
- package/templates/commitlint.config.template.js +24 -0
- package/templates/eslint.config.template.js +124 -0
- package/templates/pyproject.template.toml +61 -0
- package/templates/requirements.linting.txt +11 -0
- package/uninstall.sh +54 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# /lint:baseline - Create or Refresh Baselines
|
|
2
|
+
|
|
3
|
+
Create LTTF baselines for progressive linting. Baselines capture existing violations so only NEW violations block commits.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Both frontend and backend
|
|
9
|
+
gimme-the-lint baseline
|
|
10
|
+
|
|
11
|
+
# Frontend only
|
|
12
|
+
gimme-the-lint baseline frontend
|
|
13
|
+
|
|
14
|
+
# Backend only
|
|
15
|
+
gimme-the-lint baseline backend
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## What Happens
|
|
19
|
+
|
|
20
|
+
1. **Auto-discovers** all production directories (excludes test dirs)
|
|
21
|
+
2. **Runs linter** on each directory
|
|
22
|
+
3. **Saves violations** as per-directory baseline files
|
|
23
|
+
4. **Creates manifest** with metadata (timestamp, directory list, config hash)
|
|
24
|
+
5. **Detects drift** if previous manifest exists (added/removed dirs, config changes)
|
|
25
|
+
6. **Auto-heals** by updating manifest to reflect current state
|
|
26
|
+
|
|
27
|
+
## When to Run
|
|
28
|
+
|
|
29
|
+
- After initial setup (`gimme-the-lint install`)
|
|
30
|
+
- When adding new directories to the project
|
|
31
|
+
- When changing linter configuration (eslint.config.js, pyproject.toml)
|
|
32
|
+
- Periodically to refresh stale baselines (>30 days)
|
|
33
|
+
- After merging large refactors
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# /lint:status - Progressive Linting Dashboard
|
|
2
|
+
|
|
3
|
+
Show the current state of progressive linting across the codebase.
|
|
4
|
+
|
|
5
|
+
## What It Shows
|
|
6
|
+
|
|
7
|
+
- **Frontend (ESLint)**: Baseline status, directory count, violation count, drift warnings
|
|
8
|
+
- **Backend (Ruff)**: Baseline status, directory count, violation count, drift warnings
|
|
9
|
+
- **Drift Detection**: Directory drift, config drift, time drift (>30 days)
|
|
10
|
+
- **Overall Health**: Whether baselines are active and up to date
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
Run the dashboard script:
|
|
15
|
+
```bash
|
|
16
|
+
gimme-the-lint dashboard
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Drift Types
|
|
20
|
+
|
|
21
|
+
| Drift Type | Meaning | Action |
|
|
22
|
+
|-----------|---------|--------|
|
|
23
|
+
| Directory | New directories not in baseline | Run `gimme-the-lint baseline` |
|
|
24
|
+
| Config | Linter config changed | Re-run baseline to capture new rules |
|
|
25
|
+
| Time | Baseline >30 days old | Consider refreshing baseline |
|
|
26
|
+
| Violation | Violation count changed | Check if progress is being made |
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# /lint - Progressive Linting
|
|
2
|
+
|
|
3
|
+
Run progressive linting checks on the current project. Only NEW violations are flagged — baseline violations are ignored.
|
|
4
|
+
|
|
5
|
+
## Quick Reference
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
|---------|-------------|
|
|
9
|
+
| `gimme-the-lint check` | Lint changed files only |
|
|
10
|
+
| `gimme-the-lint check --fix` | Auto-fix violations |
|
|
11
|
+
| `gimme-the-lint check --all` | Lint entire codebase |
|
|
12
|
+
| `gimme-the-lint check --frontend-only` | Frontend only |
|
|
13
|
+
| `gimme-the-lint check --backend-only` | Backend only |
|
|
14
|
+
| `gimme-the-lint check --verbose` | Detailed output |
|
|
15
|
+
|
|
16
|
+
## LLM Pre-Commit Workflow
|
|
17
|
+
|
|
18
|
+
When a commit fails due to linting violations:
|
|
19
|
+
|
|
20
|
+
1. **AUTOMATICALLY** run `gimme-the-lint check --fix` (do NOT ask user first)
|
|
21
|
+
2. Re-stage the fixed files with `git add`
|
|
22
|
+
3. Retry the commit
|
|
23
|
+
4. Only ask the user if manual fixes are needed after auto-fix fails
|
|
24
|
+
|
|
25
|
+
## How Progressive Linting Works
|
|
26
|
+
|
|
27
|
+
- **Baselines** capture existing violations at a point in time
|
|
28
|
+
- **New code** must pass all lint rules (zero new violations)
|
|
29
|
+
- **Old violations** are tracked but not blocking
|
|
30
|
+
- **Directory-chunked**: only lint directories with changes (faster)
|
|
31
|
+
- **Drift detection**: warns when project structure changes
|
|
32
|
+
|
|
33
|
+
## File Locations
|
|
34
|
+
|
|
35
|
+
| File | Purpose |
|
|
36
|
+
|------|---------|
|
|
37
|
+
| `frontend/.lttf/` | Frontend baseline data |
|
|
38
|
+
| `backend/.lttf-ruff/` | Backend baseline data |
|
|
39
|
+
| `.baseline-manifest.json` | Manifest with metadata, drift tracking |
|
|
40
|
+
| `gimme-the-lint.config.js` | Plugin configuration |
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gimme-the-lint",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"displayName": "Gimme The Lint",
|
|
5
|
+
"description": "Progressive linting with directory-chunked baselines, drift detection, and auto-healing for monorepo projects",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "TheGlitchKing",
|
|
8
|
+
"email": "theglitchking@users.noreply.github.com",
|
|
9
|
+
"github": "TheGlitchKing"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "github",
|
|
13
|
+
"owner": "TheGlitchKing",
|
|
14
|
+
"repo": "gimme-the-lint",
|
|
15
|
+
"url": "https://github.com/TheGlitchKing/gimme-the-lint"
|
|
16
|
+
},
|
|
17
|
+
"claudeCodeVersion": ">=1.0.0",
|
|
18
|
+
"type": "claude-plugin",
|
|
19
|
+
"category": "productivity",
|
|
20
|
+
"tags": ["linting", "progressive-linting", "eslint", "ruff", "python", "monorepo", "git-hooks", "drift-detection"],
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"hooks": {},
|
|
23
|
+
"commands": [
|
|
24
|
+
{
|
|
25
|
+
"name": "lint",
|
|
26
|
+
"description": "Run progressive linting checks on the current project",
|
|
27
|
+
"file": "commands/lint.md"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "lint:status",
|
|
31
|
+
"description": "Show progressive linting dashboard with drift detection",
|
|
32
|
+
"file": "commands/lint-status.md"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "lint:baseline",
|
|
36
|
+
"description": "Create or refresh linting baselines",
|
|
37
|
+
"file": "commands/lint-baseline.md"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"agents": [
|
|
41
|
+
{
|
|
42
|
+
"name": "linting-agent",
|
|
43
|
+
"description": "Background agent that runs progressive linting and reports results",
|
|
44
|
+
"type": "general-purpose",
|
|
45
|
+
"file": "../agents/linting-agent.md"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2026-02-03
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Progressive linting system for monorepo projects (Python + JS/TS)
|
|
12
|
+
- Directory-chunked auto-discovery of production directories
|
|
13
|
+
- Per-directory baselines (ESLint for frontend, Ruff for backend)
|
|
14
|
+
- Manifest-based drift detection (directory, config, time, violation drift)
|
|
15
|
+
- Auto-healing: manifests update automatically on re-baseline
|
|
16
|
+
- Python .venv auto-creation with ruff, mypy installation
|
|
17
|
+
- Git hooks (pre-commit for changed files, pre-push for full lint)
|
|
18
|
+
- GitHub Action (`action.yml`) for CI/CD integration with PR comments
|
|
19
|
+
- Workflow template for easy adoption
|
|
20
|
+
- Claude Code plugin integration with /lint, /lint:status, /lint:baseline commands
|
|
21
|
+
- CLI tool with install, check, baseline, dashboard, hooks, venv, status commands
|
|
22
|
+
- Configuration templates: ESLint v9 flat config, pyproject.toml (Ruff), gitleaks, commitlint, pre-commit
|
|
23
|
+
- Auto-fix support via `--fix` flag
|
|
24
|
+
- LLM-optimized pre-commit output (instructs Claude Code to auto-fix without asking)
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 TheGlitchKing
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
# gimme-the-lint
|
|
2
|
+
|
|
3
|
+
Progressive linting system with directory-chunked baselines, drift detection, and auto-healing for monorepo projects (Python + JS/TS).
|
|
4
|
+
|
|
5
|
+
**Only NEW violations block commits. Old violations are baselined and tracked for progressive cleanup.**
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Progressive Linting** - Baseline existing violations, only block new ones
|
|
10
|
+
- **Directory-Chunked Auto-Discovery** - Auto-detects production directories, scales without config
|
|
11
|
+
- **Manifest-Based Drift Detection** - Detects directory, config, time, and violation drift
|
|
12
|
+
- **Auto-Healing** - Manifests auto-update when re-running baselines
|
|
13
|
+
- **Python .venv Management** - Auto-creates virtual environment with ruff, mypy
|
|
14
|
+
- **Git Hooks** - Pre-commit (changed files only, ~30s) and pre-push (full lint)
|
|
15
|
+
- **GitHub Action** - CI/CD integration with PR comments
|
|
16
|
+
- **Claude Code Plugin** - /lint, /lint:status, /lint:baseline commands
|
|
17
|
+
- **LLM-Optimized** - Pre-commit output instructs Claude Code to auto-fix without asking
|
|
18
|
+
|
|
19
|
+
## Quick Start
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Install
|
|
23
|
+
npm install --save-dev @theglitchking/gimme-the-lint
|
|
24
|
+
|
|
25
|
+
# Initialize configs and Python venv
|
|
26
|
+
npx gimme-the-lint install
|
|
27
|
+
|
|
28
|
+
# Create baselines (capture existing violations)
|
|
29
|
+
npx gimme-the-lint baseline
|
|
30
|
+
|
|
31
|
+
# Install git hooks
|
|
32
|
+
npx gimme-the-lint hooks
|
|
33
|
+
|
|
34
|
+
# Check status
|
|
35
|
+
npx gimme-the-lint dashboard
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## CLI Commands
|
|
39
|
+
|
|
40
|
+
| Command | Description |
|
|
41
|
+
|---------|-------------|
|
|
42
|
+
| `gimme-the-lint install` | Initialize configs, templates, and Python venv |
|
|
43
|
+
| `gimme-the-lint check` | Run progressive linting on changed files |
|
|
44
|
+
| `gimme-the-lint check --fix` | Auto-fix violations |
|
|
45
|
+
| `gimme-the-lint check --all` | Lint entire codebase |
|
|
46
|
+
| `gimme-the-lint check --frontend-only` | Frontend only |
|
|
47
|
+
| `gimme-the-lint check --backend-only` | Backend only |
|
|
48
|
+
| `gimme-the-lint baseline` | Create/refresh baselines (frontend + backend) |
|
|
49
|
+
| `gimme-the-lint baseline frontend` | Frontend baselines only |
|
|
50
|
+
| `gimme-the-lint baseline backend` | Backend baselines only |
|
|
51
|
+
| `gimme-the-lint dashboard` | Show linting status dashboard |
|
|
52
|
+
| `gimme-the-lint hooks` | Install git hooks |
|
|
53
|
+
| `gimme-the-lint venv setup` | Setup Python virtual environment |
|
|
54
|
+
| `gimme-the-lint venv status` | Show venv status |
|
|
55
|
+
| `gimme-the-lint status` | Show overall plugin status |
|
|
56
|
+
| `gimme-the-lint uninstall` | Remove plugin from project |
|
|
57
|
+
|
|
58
|
+
## How It Works
|
|
59
|
+
|
|
60
|
+
### Progressive Linting
|
|
61
|
+
|
|
62
|
+
Traditional linting blocks all commits if any violations exist. For large codebases with thousands of existing violations, this makes adoption impossible.
|
|
63
|
+
|
|
64
|
+
**gimme-the-lint** takes a different approach:
|
|
65
|
+
|
|
66
|
+
1. **Baseline** - Capture all existing violations at a point in time
|
|
67
|
+
2. **Gate** - Only NEW violations (not in baseline) block commits
|
|
68
|
+
3. **Track** - Monitor progress as old violations are gradually fixed
|
|
69
|
+
4. **Scale** - Per-directory baselines mean only changed directories are re-checked
|
|
70
|
+
|
|
71
|
+
### Directory-Chunked Auto-Discovery
|
|
72
|
+
|
|
73
|
+
Instead of configuring which directories to lint, gimme-the-lint automatically discovers all production directories:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
frontend/src/
|
|
77
|
+
api/ <- auto-discovered
|
|
78
|
+
components/ <- auto-discovered
|
|
79
|
+
features/ <- auto-discovered
|
|
80
|
+
hooks/ <- auto-discovered
|
|
81
|
+
__tests__/ <- excluded (test directory)
|
|
82
|
+
e2e/ <- excluded (test directory)
|
|
83
|
+
|
|
84
|
+
backend/app/
|
|
85
|
+
routers/ <- auto-discovered
|
|
86
|
+
services/ <- auto-discovered
|
|
87
|
+
models/ <- auto-discovered
|
|
88
|
+
tests/ <- excluded (test directory)
|
|
89
|
+
__pycache__/ <- excluded
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
When you add a new directory, it's automatically included in the next baseline run. No config changes needed.
|
|
93
|
+
|
|
94
|
+
### Drift Detection
|
|
95
|
+
|
|
96
|
+
gimme-the-lint creates manifest files that track baseline state. On every run, it checks for 4 types of drift:
|
|
97
|
+
|
|
98
|
+
| Drift Type | What Changed | Auto-Action |
|
|
99
|
+
|-----------|-------------|-------------|
|
|
100
|
+
| **Directory** | New/removed directories | Warns, auto-heals on re-baseline |
|
|
101
|
+
| **Config** | Linter config file changed | Warns baseline may be stale |
|
|
102
|
+
| **Time** | Baseline >30 days old | Suggests refresh |
|
|
103
|
+
| **Violation** | Count changed vs baseline | Shows progress/regression |
|
|
104
|
+
|
|
105
|
+
### Manifest Format
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"created_at": "2026-02-03T00:00:00Z",
|
|
110
|
+
"tool": "eslint",
|
|
111
|
+
"version": "9.0.0",
|
|
112
|
+
"directories_baselined": ["api", "components", "features", "hooks"],
|
|
113
|
+
"total_directories": 4,
|
|
114
|
+
"total_violations": 42,
|
|
115
|
+
"config_hash": "abc123def456",
|
|
116
|
+
"test_excluded": ["__tests__", "e2e", "*.test.*"]
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## GitHub Action
|
|
121
|
+
|
|
122
|
+
Use gimme-the-lint in your CI/CD pipeline:
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
# .github/workflows/lint.yml
|
|
126
|
+
name: Lint
|
|
127
|
+
on:
|
|
128
|
+
pull_request:
|
|
129
|
+
branches: [main]
|
|
130
|
+
|
|
131
|
+
permissions:
|
|
132
|
+
contents: read
|
|
133
|
+
pull-requests: write
|
|
134
|
+
|
|
135
|
+
jobs:
|
|
136
|
+
lint:
|
|
137
|
+
runs-on: ubuntu-latest
|
|
138
|
+
steps:
|
|
139
|
+
- uses: actions/checkout@v4
|
|
140
|
+
with:
|
|
141
|
+
fetch-depth: 0
|
|
142
|
+
|
|
143
|
+
- uses: TheGlitchKing/gimme-the-lint@v1
|
|
144
|
+
with:
|
|
145
|
+
mode: progressive # or 'full'
|
|
146
|
+
frontend: true
|
|
147
|
+
backend: true
|
|
148
|
+
comment-on-pr: true # Posts results as PR comment
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Action Inputs
|
|
152
|
+
|
|
153
|
+
| Input | Default | Description |
|
|
154
|
+
|-------|---------|-------------|
|
|
155
|
+
| `mode` | `progressive` | `progressive` (changed files) or `full` (entire codebase) |
|
|
156
|
+
| `fix` | `false` | Auto-fix violations |
|
|
157
|
+
| `frontend` | `true` | Enable ESLint checks |
|
|
158
|
+
| `backend` | `true` | Enable Ruff checks |
|
|
159
|
+
| `python-version` | `3.11` | Python version for backend |
|
|
160
|
+
| `node-version` | `20` | Node.js version |
|
|
161
|
+
| `comment-on-pr` | `true` | Post results as PR comment |
|
|
162
|
+
|
|
163
|
+
### Action Outputs
|
|
164
|
+
|
|
165
|
+
| Output | Description |
|
|
166
|
+
|--------|-------------|
|
|
167
|
+
| `frontend-status` | `pass`, `fail`, or `skip` |
|
|
168
|
+
| `backend-status` | `pass`, `fail`, or `skip` |
|
|
169
|
+
| `drift-detected` | `true` if baseline drift detected |
|
|
170
|
+
| `violations-count` | Number of new violations found |
|
|
171
|
+
|
|
172
|
+
## Claude Code Integration
|
|
173
|
+
|
|
174
|
+
gimme-the-lint integrates with Claude Code as a plugin:
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
/lint Run progressive linting checks
|
|
178
|
+
/lint:status Show dashboard with drift detection
|
|
179
|
+
/lint:baseline Create or refresh baselines
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### LLM Pre-Commit Workflow
|
|
183
|
+
|
|
184
|
+
When a commit fails due to linting, the pre-commit hook outputs LLM-specific instructions:
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
For LLMs (Claude Code):
|
|
188
|
+
AUTOMATICALLY run: gimme-the-lint check --fix
|
|
189
|
+
Re-stage files and retry commit
|
|
190
|
+
ONLY ask user if manual fixes needed after auto-fix
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Project Structure
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
gimme-the-lint/
|
|
197
|
+
├── action.yml # GitHub Action (composite)
|
|
198
|
+
├── package.json # npm package
|
|
199
|
+
├── install.sh # Global install script
|
|
200
|
+
├── uninstall.sh # Uninstall script
|
|
201
|
+
├── bin/
|
|
202
|
+
│ ├── gimme-the-lint.js # CLI entry point
|
|
203
|
+
│ └── postinstall.js # Post-install message
|
|
204
|
+
├── scripts/
|
|
205
|
+
│ ├── run-checks.sh # Progressive linting
|
|
206
|
+
│ ├── dashboard.sh # Status dashboard
|
|
207
|
+
│ ├── eslint-baseline.sh # Frontend baseline creator
|
|
208
|
+
│ ├── ruff-baseline.sh # Backend baseline creator
|
|
209
|
+
│ ├── setup-venv.sh # Python venv setup
|
|
210
|
+
│ └── validate-version.sh # Pre-publish validation
|
|
211
|
+
├── lib/
|
|
212
|
+
│ ├── index.js # Module exports
|
|
213
|
+
│ ├── directory-discovery.js # Auto-discover directories
|
|
214
|
+
│ ├── manifest-manager.js # Manifest CRUD
|
|
215
|
+
│ ├── drift-detector.js # Drift detection & auto-healing
|
|
216
|
+
│ ├── venv-manager.js # Python venv management
|
|
217
|
+
│ ├── config-manager.js # Config templates
|
|
218
|
+
│ ├── git-hooks-manager.js # Git hooks install/uninstall
|
|
219
|
+
│ └── installer.js # Interactive setup
|
|
220
|
+
├── templates/
|
|
221
|
+
│ ├── eslint.config.template.js
|
|
222
|
+
│ ├── pyproject.template.toml
|
|
223
|
+
│ ├── .gitleaks.template.toml
|
|
224
|
+
│ ├── commitlint.config.template.js
|
|
225
|
+
│ ├── .pre-commit-config.template.yaml
|
|
226
|
+
│ └── requirements.linting.txt
|
|
227
|
+
├── githooks/
|
|
228
|
+
│ ├── pre-commit
|
|
229
|
+
│ ├── pre-push
|
|
230
|
+
│ └── install.sh
|
|
231
|
+
├── .claude-plugin/
|
|
232
|
+
│ ├── plugin.json
|
|
233
|
+
│ └── commands/
|
|
234
|
+
│ ├── lint.md
|
|
235
|
+
│ ├── lint-status.md
|
|
236
|
+
│ └── lint-baseline.md
|
|
237
|
+
├── agents/
|
|
238
|
+
│ └── linting-agent.md
|
|
239
|
+
└── .github/workflows/
|
|
240
|
+
└── lint.template.yml # Workflow template for consumers
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Configuration
|
|
244
|
+
|
|
245
|
+
Create `gimme-the-lint.config.js` in your project root (auto-generated by `gimme-the-lint install`):
|
|
246
|
+
|
|
247
|
+
```javascript
|
|
248
|
+
module.exports = {
|
|
249
|
+
projectType: 'monorepo', // 'monorepo', 'frontend', 'backend'
|
|
250
|
+
frontendDir: 'frontend',
|
|
251
|
+
backendDir: 'backend',
|
|
252
|
+
srcDir: 'src',
|
|
253
|
+
appDir: 'app',
|
|
254
|
+
};
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Supported Project Structures
|
|
258
|
+
|
|
259
|
+
| Structure | Frontend | Backend |
|
|
260
|
+
|-----------|----------|---------|
|
|
261
|
+
| Monorepo | `frontend/src/` | `backend/app/` |
|
|
262
|
+
| Frontend-only | `src/` | - |
|
|
263
|
+
| Backend-only | - | `app/` |
|
|
264
|
+
|
|
265
|
+
## Requirements
|
|
266
|
+
|
|
267
|
+
- **Node.js** >= 18.0.0
|
|
268
|
+
- **Python** >= 3.8 (for backend linting)
|
|
269
|
+
- **Git** (for hooks and changed file detection)
|
|
270
|
+
- **ESLint** >= 9.0.0 (frontend, peer dependency)
|
|
271
|
+
- **jq** (for manifest operations in shell scripts)
|
|
272
|
+
|
|
273
|
+
## Roadmap
|
|
274
|
+
|
|
275
|
+
### v1.1 - Enhanced Linter Support
|
|
276
|
+
- Support for additional Python linters (pylint, flake8)
|
|
277
|
+
- Support for legacy JS linters (TSLint)
|
|
278
|
+
- Custom rule presets
|
|
279
|
+
- Parallel directory processing (lint multiple dirs concurrently)
|
|
280
|
+
- Team dashboard (weekly health scorecard)
|
|
281
|
+
|
|
282
|
+
### v1.2 - Observability & Integrations
|
|
283
|
+
- Web dashboard (localhost:3000/lint-dashboard)
|
|
284
|
+
- VS Code extension integration
|
|
285
|
+
- Slack/Discord notifications for CI failures
|
|
286
|
+
- Drift history tracking (timeline of baseline changes)
|
|
287
|
+
- Automated baseline refresh (scheduled via cron)
|
|
288
|
+
|
|
289
|
+
### v2.0 - Multi-Language & Enterprise
|
|
290
|
+
- Multi-language support (Go, Rust, Java)
|
|
291
|
+
- Cloud-based baseline storage
|
|
292
|
+
- Team collaboration features
|
|
293
|
+
- AI-powered violation triage (auto-prioritize fixes)
|
|
294
|
+
- Cross-repo baseline sharing (enterprise feature)
|
|
295
|
+
|
|
296
|
+
## Marketplace
|
|
297
|
+
|
|
298
|
+
This plugin is published to the [Glitch Kingdom Marketplace](https://github.com/TheGlitchKing/glitch-kingdom-of-plugins):
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
# Via Claude marketplace
|
|
302
|
+
/plugin install TheGlitchKing/gimme-the-lint
|
|
303
|
+
|
|
304
|
+
# Via npm
|
|
305
|
+
npm install -g @theglitchking/gimme-the-lint
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## License
|
|
309
|
+
|
|
310
|
+
MIT - see [LICENSE](LICENSE)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Linting Agent
|
|
2
|
+
|
|
3
|
+
You are a linting agent for gimme-the-lint. Your job is to run progressive linting checks and report results clearly.
|
|
4
|
+
|
|
5
|
+
## Capabilities
|
|
6
|
+
|
|
7
|
+
- Run `gimme-the-lint check` to lint changed files
|
|
8
|
+
- Run `gimme-the-lint check --fix` to auto-fix violations
|
|
9
|
+
- Run `gimme-the-lint dashboard` to show linting status
|
|
10
|
+
- Run `gimme-the-lint baseline` to create/refresh baselines
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
1. Run `gimme-the-lint check` to find violations
|
|
15
|
+
2. If violations found, run `gimme-the-lint check --fix`
|
|
16
|
+
3. Report which violations were auto-fixed and which need manual attention
|
|
17
|
+
4. If drift is detected, suggest running `gimme-the-lint baseline`
|
|
18
|
+
|
|
19
|
+
## Rules
|
|
20
|
+
|
|
21
|
+
- Always try auto-fix before asking the user for manual intervention
|
|
22
|
+
- Report results concisely: pass/fail per component, violation count
|
|
23
|
+
- Mention drift detection if relevant
|
|
24
|
+
- Do not modify linter configurations without user approval
|