@theglitchking/gimme-the-lint 1.1.1 → 1.2.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.
Files changed (45) hide show
  1. package/.claude-plugin/marketplace.json +47 -0
  2. package/.claude-plugin/plugin.json +14 -40
  3. package/CHANGELOG.md +11 -0
  4. package/LICENSE +0 -0
  5. package/README.backup.md +0 -0
  6. package/README.md +0 -0
  7. package/agents/linting-agent.md +5 -0
  8. package/bin/gimme-the-lint.js +19 -4
  9. package/{.claude-plugin/commands → commands}/lint-baseline.md +4 -0
  10. package/{.claude-plugin/commands → commands}/lint-status.md +4 -0
  11. package/{.claude-plugin/commands → commands}/lint.md +4 -0
  12. package/commands/policy.md +16 -0
  13. package/commands/relink.md +6 -0
  14. package/commands/status.md +6 -0
  15. package/commands/update.md +6 -0
  16. package/githooks/install.sh +0 -0
  17. package/githooks/pre-commit +0 -0
  18. package/githooks/pre-push +0 -0
  19. package/hooks/hooks.json +15 -0
  20. package/hooks/session-start.mjs +8 -0
  21. package/install.sh +0 -0
  22. package/lib/config-manager.js +0 -0
  23. package/lib/directory-discovery.js +0 -0
  24. package/lib/drift-detector.js +0 -0
  25. package/lib/git-hooks-manager.js +0 -0
  26. package/lib/index.js +0 -0
  27. package/lib/installer.js +0 -0
  28. package/lib/manifest-manager.js +0 -0
  29. package/lib/venv-manager.js +0 -0
  30. package/package.json +6 -4
  31. package/scripts/dashboard.sh +0 -0
  32. package/scripts/eslint-baseline.sh +0 -0
  33. package/scripts/link-skills.mjs +22 -0
  34. package/scripts/ruff-baseline.sh +0 -0
  35. package/scripts/run-checks.sh +0 -0
  36. package/scripts/setup-venv.sh +0 -0
  37. package/templates/.gitleaks.template.toml +0 -0
  38. package/templates/.pre-commit-config.template.yaml +0 -0
  39. package/templates/commitlint.config.template.js +0 -0
  40. package/templates/eslint.config.template.js +0 -0
  41. package/templates/pyproject.template.toml +0 -0
  42. package/templates/requirements.linting.txt +0 -0
  43. package/uninstall.sh +0 -0
  44. package/bin/postinstall.js +0 -29
  45. package/scripts/validate-version.sh +0 -46
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "gimme-the-lint-marketplace",
3
+ "owner": {
4
+ "name": "TheGlitchKing",
5
+ "email": "theglitchking@users.noreply.github.com"
6
+ },
7
+ "metadata": {
8
+ "description": "Official marketplace for gimme-the-lint - Progressive linting with directory-chunked baselines and drift detection",
9
+ "version": "1.2.0"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "gimme-the-lint",
14
+ "description": "Progressive linting system with directory-chunked baselines, drift detection, and auto-healing for monorepo projects (Python + JS/TS)",
15
+ "version": "1.2.0",
16
+ "author": {
17
+ "name": "TheGlitchKing"
18
+ },
19
+ "homepage": "https://github.com/TheGlitchKing/gimme-the-lint",
20
+ "repository": "https://github.com/TheGlitchKing/gimme-the-lint.git",
21
+ "license": "MIT",
22
+ "keywords": [
23
+ "linting",
24
+ "progressive-linting",
25
+ "eslint",
26
+ "ruff",
27
+ "python",
28
+ "monorepo",
29
+ "git-hooks",
30
+ "drift-detection",
31
+ "claude-code"
32
+ ],
33
+ "category": "productivity",
34
+ "tags": [
35
+ "linting",
36
+ "progressive",
37
+ "baseline",
38
+ "drift"
39
+ ],
40
+ "source": {
41
+ "source": "npm",
42
+ "package": "@theglitchking/gimme-the-lint"
43
+ },
44
+ "strict": true
45
+ }
46
+ ]
47
+ }
@@ -1,48 +1,22 @@
1
1
  {
2
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",
3
+ "description": "Progressive linting system with directory-chunked baselines, drift detection, and auto-healing for monorepo projects (Python + JS/TS)",
4
+ "version": "1.2.0",
6
5
  "author": {
7
6
  "name": "TheGlitchKing",
8
- "email": "theglitchking@users.noreply.github.com",
9
- "github": "TheGlitchKing"
7
+ "email": "theglitchking@users.noreply.github.com"
10
8
  },
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
9
  "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
- }
10
+ "homepage": "https://github.com/TheGlitchKing/gimme-the-lint",
11
+ "repository": "https://github.com/TheGlitchKing/gimme-the-lint",
12
+ "keywords": [
13
+ "linting",
14
+ "progressive-linting",
15
+ "eslint",
16
+ "ruff",
17
+ "python",
18
+ "monorepo",
19
+ "git-hooks",
20
+ "drift-detection"
47
21
  ]
48
22
  }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.2] - 2026-04-11
9
+
10
+ ### Fixed
11
+ - Plugin manifest now passes `claude plugin validate`. Rewrote `.claude-plugin/plugin.json` to the minimal schema Claude Code actually accepts (dropped `displayName`, `claudeCodeVersion`, `type`, `commands`, `agents`, `hooks` — all of those were either unsupported keys or wrongly-shaped arrays that the validator rejected).
12
+ - Moved command definitions from `.claude-plugin/commands/*.md` → `commands/*.md` at the repo root (Claude Code's auto-discovery convention).
13
+ - Added YAML frontmatter (`description` field) to all three command files and to `agents/linting-agent.md`.
14
+
15
+ ### Added
16
+ - `.claude-plugin/marketplace.json` — registers gimme-the-lint as a standalone Claude Code marketplace, so users can install with `claude plugin install gimme-the-lint@gimme-the-lint-marketplace`.
17
+ - `commands/` added to npm `files` array so the plugin's slash commands actually ship in the tarball.
18
+
8
19
  ## [1.1.1] - 2026-03-19
9
20
 
10
21
  ### Fixed
package/LICENSE CHANGED
File without changes
package/README.backup.md CHANGED
File without changes
package/README.md CHANGED
File without changes
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: linting-agent
3
+ description: Runs progressive linting checks via gimme-the-lint and reports violations. Invoke when the user asks to lint, check code quality, fix lint errors, create/refresh baselines, or diagnose drift.
4
+ ---
5
+
1
6
  # Linting Agent
2
7
 
3
8
  You are a linting agent for gimme-the-lint. Your job is to run progressive linting checks and report results clearly.
@@ -213,8 +213,23 @@ program
213
213
  program.help();
214
214
  });
215
215
 
216
- program.parse(process.argv);
216
+ // Runtime-provided subcommands: update, policy, status, relink.
217
+ // Loaded dynamically because the runtime is ESM and this file is CJS.
218
+ (async () => {
219
+ try {
220
+ const { registerUpdateCommands } = await import('@theglitchking/claude-plugin-runtime');
221
+ registerUpdateCommands(program, {
222
+ packageName: '@theglitchking/gimme-the-lint',
223
+ pluginName: 'gimme-the-lint',
224
+ configFile: 'gimme-the-lint.json',
225
+ });
226
+ } catch (err) {
227
+ // Runtime not available — degrade silently; existing subcommands still work.
228
+ }
217
229
 
218
- if (!process.argv.slice(2).length) {
219
- program.help();
220
- }
230
+ program.parse(process.argv);
231
+
232
+ if (!process.argv.slice(2).length) {
233
+ program.help();
234
+ }
235
+ })();
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: Create or refresh LTTF linting baselines (captures existing violations so only NEW ones block future commits)
3
+ ---
4
+
1
5
  # /lint:baseline - Create or Refresh Baselines
2
6
 
3
7
  Create LTTF baselines for progressive linting. Baselines capture existing violations so only NEW violations block commits.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: Show the progressive linting dashboard — baseline status, drift detection, and team ownership across all tracked directories
3
+ ---
4
+
1
5
  # /lint:status - Progressive Linting Dashboard
2
6
 
3
7
  Show the current state of progressive linting across the codebase.
@@ -1,3 +1,7 @@
1
+ ---
2
+ description: Run progressive linting checks on the current project (only NEW violations above the baseline are flagged)
3
+ ---
4
+
1
5
  # /lint - Progressive Linting
2
6
 
3
7
  Run progressive linting checks on the current project. Only NEW violations are flagged — baseline violations are ignored.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Get or set the gimme-the-lint update policy (auto | nudge | off)
3
+ allowed-tools: Bash(npx:*)
4
+ argument-hint: "[auto|nudge|off]"
5
+ ---
6
+
7
+ Arguments: $ARGUMENTS
8
+
9
+ - If `$ARGUMENTS` is empty, run `npx --no @theglitchking/gimme-the-lint policy` and report the current policy and config path.
10
+ - If `$ARGUMENTS` is one of `auto`, `nudge`, `off`, run `npx --no @theglitchking/gimme-the-lint policy $ARGUMENTS` and confirm the new setting to the user.
11
+ - If `$ARGUMENTS` is anything else, tell the user the valid values are `auto`, `nudge`, `off`.
12
+
13
+ Policies:
14
+ - `auto` — auto-run `npm update @theglitchking/gimme-the-lint` at session start when a newer version is available.
15
+ - `nudge` — print a one-liner when a newer version is available (default).
16
+ - `off` — do not check for updates.
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Re-run the skill linker — refresh symlinks from node_modules into .claude/skills/
3
+ allowed-tools: Bash(npx:*)
4
+ ---
5
+
6
+ Run `npx --no @theglitchking/gimme-the-lint relink` and report the result.
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Show installed version, latest available version, current update policy, and hook registration state
3
+ allowed-tools: Bash(npx:*)
4
+ ---
5
+
6
+ Run `npx --no @theglitchking/gimme-the-lint status` and relay the output to the user verbatim.
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Update gimme-the-lint to the latest version (runs npm update + re-links skills)
3
+ allowed-tools: Bash(npx:*)
4
+ ---
5
+
6
+ Run `npx --no @theglitchking/gimme-the-lint update` and report the before/after versions to the user. If the project doesn't have a local install, fall back to `npx -y @theglitchking/gimme-the-lint update` and note that in your summary.
File without changes
File without changes
package/githooks/pre-push CHANGED
File without changes
@@ -0,0 +1,15 @@
1
+ {
2
+ "description": "gimme-the-lint update-check hook — nudges/auto-updates per policy.",
3
+ "hooks": {
4
+ "SessionStart": [
5
+ {
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/session-start.mjs\""
10
+ }
11
+ ]
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { runSessionStart } from "@theglitchking/claude-plugin-runtime";
3
+
4
+ await runSessionStart({
5
+ packageName: "@theglitchking/gimme-the-lint",
6
+ pluginName: "gimme-the-lint",
7
+ configFile: "gimme-the-lint.json",
8
+ });
package/install.sh CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
package/lib/index.js CHANGED
File without changes
package/lib/installer.js CHANGED
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theglitchking/gimme-the-lint",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "Progressive linting system with directory-chunked baselines, drift detection, and auto-healing for monorepo projects (Python + JS/TS)",
5
5
  "keywords": [
6
6
  "linting",
@@ -34,7 +34,7 @@
34
34
  "gimme-the-lint": "./bin/gimme-the-lint.js"
35
35
  },
36
36
  "scripts": {
37
- "postinstall": "node ./bin/postinstall.js",
37
+ "postinstall": "node ./scripts/link-skills.mjs",
38
38
  "setup:venv": "bash ./scripts/setup-venv.sh",
39
39
  "install:hooks": "bash ./githooks/install.sh",
40
40
  "lint:init": "node ./bin/gimme-the-lint.js init",
@@ -42,7 +42,6 @@
42
42
  "check:fix": "node ./bin/gimme-the-lint.js check --fix",
43
43
  "baseline": "node ./bin/gimme-the-lint.js baseline",
44
44
  "dashboard": "node ./bin/gimme-the-lint.js dashboard",
45
- "prepublishOnly": "bash ./scripts/validate-version.sh",
46
45
  "test": "node --test tests/*.test.js"
47
46
  },
48
47
  "files": [
@@ -50,8 +49,10 @@
50
49
  "scripts/",
51
50
  "templates/",
52
51
  "githooks/",
52
+ "hooks/",
53
53
  "lib/",
54
54
  ".claude-plugin/",
55
+ "commands/",
55
56
  "agents/",
56
57
  "docs/",
57
58
  "install.sh",
@@ -61,12 +62,13 @@
61
62
  "CHANGELOG.md"
62
63
  ],
63
64
  "engines": {
64
- "node": ">=18.0.0"
65
+ "node": ">=20.0.0"
65
66
  },
66
67
  "publishConfig": {
67
68
  "access": "public"
68
69
  },
69
70
  "dependencies": {
71
+ "@theglitchking/claude-plugin-runtime": "^0.1.0",
70
72
  "chalk": "^4.1.2",
71
73
  "commander": "^12.1.0",
72
74
  "fs-extra": "^11.2.0"
File without changes
File without changes
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+ // Postinstall — delegates to @theglitchking/claude-plugin-runtime.
3
+
4
+ import { runPostinstall } from "@theglitchking/claude-plugin-runtime";
5
+ import { dirname, resolve } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
9
+
10
+ try {
11
+ runPostinstall({
12
+ packageName: "@theglitchking/gimme-the-lint",
13
+ pluginName: "gimme-the-lint",
14
+ configFile: "gimme-the-lint.json",
15
+ skillsDir: null,
16
+ packageRoot,
17
+ hookCommand:
18
+ "node ./node_modules/@theglitchking/gimme-the-lint/hooks/session-start.mjs",
19
+ });
20
+ } catch (err) {
21
+ console.warn(`[gimme-the-lint] postinstall failed: ${err?.message || err}`);
22
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/uninstall.sh CHANGED
File without changes
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env node
2
- 'use strict';
3
-
4
- // Post-install script for gimme-the-lint
5
- // Runs after npm install to show next steps
6
- // Does NOT auto-setup venv (user should opt-in via `gimme-the-lint install`)
7
-
8
- const isGlobal = process.env.npm_config_global === 'true';
9
-
10
- console.log('');
11
- console.log(' gimme-the-lint installed successfully!');
12
- console.log('');
13
-
14
- if (isGlobal) {
15
- console.log(' Global install detected. Usage:');
16
- console.log(' cd your-project');
17
- console.log(' gimme-the-lint install Initialize configs & venv');
18
- console.log(' gimme-the-lint baseline Create linting baselines');
19
- console.log(' gimme-the-lint hooks Install git hooks');
20
- } else {
21
- console.log(' Next steps:');
22
- console.log(' npx gimme-the-lint install Initialize configs & venv');
23
- console.log(' npx gimme-the-lint baseline Create linting baselines');
24
- console.log(' npx gimme-the-lint hooks Install git hooks');
25
- }
26
-
27
- console.log('');
28
- console.log(' Documentation: https://github.com/TheGlitchKing/gimme-the-lint');
29
- console.log('');
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env bash
2
- # gimme-the-lint: Version Validation (pre-publish check)
3
- # Ensures package.json version, CHANGELOG.md, and git tag are in sync
4
-
5
- set -e
6
-
7
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
- PACKAGE_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
9
-
10
- RED='\033[0;31m'
11
- GREEN='\033[0;32m'
12
- YELLOW='\033[1;33m'
13
- NC='\033[0m'
14
-
15
- PKG_VERSION=$(node -p "require('${PACKAGE_DIR}/package.json').version")
16
-
17
- echo "Validating version: v${PKG_VERSION}"
18
-
19
- # Check CHANGELOG has entry for this version
20
- if [ -f "${PACKAGE_DIR}/CHANGELOG.md" ]; then
21
- if grep -q "## \[${PKG_VERSION}\]" "${PACKAGE_DIR}/CHANGELOG.md" || grep -q "## ${PKG_VERSION}" "${PACKAGE_DIR}/CHANGELOG.md"; then
22
- echo -e "${GREEN}✓${NC} CHANGELOG.md has entry for v${PKG_VERSION}"
23
- else
24
- echo -e "${YELLOW}⚠${NC} CHANGELOG.md missing entry for v${PKG_VERSION}"
25
- fi
26
- else
27
- echo -e "${YELLOW}⚠${NC} CHANGELOG.md not found"
28
- fi
29
-
30
- # Check README exists
31
- if [ -f "${PACKAGE_DIR}/README.md" ]; then
32
- echo -e "${GREEN}✓${NC} README.md exists"
33
- else
34
- echo -e "${RED}✗${NC} README.md missing"
35
- exit 1
36
- fi
37
-
38
- # Check LICENSE exists
39
- if [ -f "${PACKAGE_DIR}/LICENSE" ]; then
40
- echo -e "${GREEN}✓${NC} LICENSE exists"
41
- else
42
- echo -e "${RED}✗${NC} LICENSE missing"
43
- exit 1
44
- fi
45
-
46
- echo -e "${GREEN}✓${NC} Version validation passed: v${PKG_VERSION}"