fixmyslop 0.0.0-stage → 0.3.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 CHANGED
@@ -1,3 +1,16 @@
1
- # Temporary Holding Version
1
+ # fixmyslop (npm launcher)
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ ```bash
4
+ npx fixmyslop scan # find AI slop in your UI and code
5
+ npx fixmyslop scan --open # interactive report with copy-to-agent fix prompts
6
+ npx fixmyslop init --claude # make Claude Code check its own work
7
+ ```
8
+
9
+ This package runs the [FixMySlop](https://github.com/MrSpideyNihal/FixMySlop) CLI through `uvx` or `pipx`
10
+ (or a local `pip install fixmyslop`). See the main README for everything it catches.
11
+
12
+ MCP config for Cursor / Claude Code / Windsurf:
13
+
14
+ ```json
15
+ { "mcpServers": { "fixmyslop": { "command": "npx", "args": ["-y", "fixmyslop", "mcp"] } } }
16
+ ```
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ // Thin launcher: runs the FixMySlop Python CLI of the SAME version as this npm package —
3
+ // a matching local install if there is one, otherwise via uvx or pipx.
4
+ "use strict";
5
+ const { spawnSync } = require("node:child_process");
6
+ const { version } = require("../package.json");
7
+
8
+ const args = process.argv.slice(2);
9
+ const VERSION_PROBE =
10
+ "import importlib.metadata as m, sys; print(m.version('fixmyslop'))";
11
+
12
+ function ok(cmd, probe) {
13
+ const r = spawnSync(cmd, probe, { encoding: "utf8" });
14
+ return r.status === 0 ? (r.stdout || "").trim() || "ok" : null;
15
+ }
16
+
17
+ function run(cmd, cmdArgs) {
18
+ const r = spawnSync(cmd, cmdArgs, { stdio: "inherit" });
19
+ if (r.error) return;
20
+ process.exit(r.status ?? 1);
21
+ }
22
+
23
+ let outdated = null;
24
+ for (const python of ["python3", "python", "py"]) {
25
+ const installed = ok(python, ["-c", VERSION_PROBE]);
26
+ if (installed === version) run(python, ["-m", "fixmyslop", ...args]);
27
+ if (installed && !outdated) outdated = { python, installed };
28
+ }
29
+ if (ok("uvx", ["--version"])) run("uvx", [`fixmyslop@${version}`, ...args]);
30
+ if (ok("pipx", ["--version"])) run("pipx", ["run", "--spec", `fixmyslop==${version}`, "fixmyslop", ...args]);
31
+
32
+ if (outdated) {
33
+ console.error(
34
+ `Found fixmyslop ${outdated.installed}, but this launcher runs ${version}. Upgrade with:\n` +
35
+ ` ${outdated.python} -m pip install -U "fixmyslop==${version}"\n` +
36
+ "or install uv (https://docs.astral.sh/uv/) so npx can fetch the right version automatically."
37
+ );
38
+ } else {
39
+ console.error(
40
+ "FixMySlop needs Python 3.10+ and one of these:\n" +
41
+ " uv https://docs.astral.sh/uv/ (then `npx fixmyslop` just works)\n" +
42
+ " pipx https://pipx.pypa.io/\n" +
43
+ ` or: pip install "fixmyslop==${version}"`
44
+ );
45
+ }
46
+ process.exit(127);
package/package.json CHANGED
@@ -1,6 +1,12 @@
1
1
  {
2
2
  "name": "fixmyslop",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.3.1",
4
+ "description": "The slop linter for the AI-agent era: catch AI slop in UI and code in milliseconds, then let your agent fix it.",
5
+ "bin": { "fixmyslop": "bin/fixmyslop.js" },
6
+ "files": ["bin/", "README.md"],
7
+ "engines": { "node": ">=18" },
8
+ "keywords": ["ai-slop", "linter", "tailwind", "react", "accessibility", "claude-code", "mcp", "cursor", "lovable", "v0"],
9
+ "repository": { "type": "git", "url": "git+https://github.com/MrSpideyNihal/FixMySlop.git" },
10
+ "homepage": "https://github.com/MrSpideyNihal/FixMySlop#readme",
11
+ "license": "MIT"
12
+ }