@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.
@@ -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