@theglitchking/gimme-the-lint 1.1.2 → 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.
@@ -6,13 +6,13 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Official marketplace for gimme-the-lint - Progressive linting with directory-chunked baselines and drift detection",
9
- "version": "1.1.2"
9
+ "version": "1.2.0"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "gimme-the-lint",
14
14
  "description": "Progressive linting system with directory-chunked baselines, drift detection, and auto-healing for monorepo projects (Python + JS/TS)",
15
- "version": "1.1.2",
15
+ "version": "1.2.0",
16
16
  "author": {
17
17
  "name": "TheGlitchKing"
18
18
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gimme-the-lint",
3
3
  "description": "Progressive linting system with directory-chunked baselines, drift detection, and auto-healing for monorepo projects (Python + JS/TS)",
4
- "version": "1.1.2",
4
+ "version": "1.2.0",
5
5
  "author": {
6
6
  "name": "TheGlitchKing",
7
7
  "email": "theglitchking@users.noreply.github.com"
@@ -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
+ })();
@@ -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.
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theglitchking/gimme-the-lint",
3
- "version": "1.1.2",
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,6 +49,7 @@
50
49
  "scripts/",
51
50
  "templates/",
52
51
  "githooks/",
52
+ "hooks/",
53
53
  "lib/",
54
54
  ".claude-plugin/",
55
55
  "commands/",
@@ -62,12 +62,13 @@
62
62
  "CHANGELOG.md"
63
63
  ],
64
64
  "engines": {
65
- "node": ">=18.0.0"
65
+ "node": ">=20.0.0"
66
66
  },
67
67
  "publishConfig": {
68
68
  "access": "public"
69
69
  },
70
70
  "dependencies": {
71
+ "@theglitchking/claude-plugin-runtime": "^0.1.0",
71
72
  "chalk": "^4.1.2",
72
73
  "commander": "^12.1.0",
73
74
  "fs-extra": "^11.2.0"
@@ -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
+ }
@@ -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}"