slopless 0.2.3 → 0.2.5

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,190 +1,163 @@
1
1
  # slopless
2
2
 
3
- Install:
3
+ Slopless is a deterministic Markdown checker for AI and human slop in writing.
4
4
 
5
- ```bash
6
- npm install -D slopless
7
- ```
5
+ It reports patterns that make prose padded, vague, generic, formulaic, or mechanically careless. It does not call an LLM. Output is always textlint JSON.
8
6
 
9
- Run:
7
+ ## Install
10
8
 
11
9
  ```bash
12
- npx slopless
10
+ npm install -D slopless
13
11
  ```
14
12
 
15
- Run on a specific path:
13
+ ## Run
16
14
 
17
15
  ```bash
18
16
  npx slopless "docs/**/*.md"
17
+ npx slopless draft.md > slopless.json
18
+ cat draft.md | npx slopless --stdin --stdin-filename draft.md
19
19
  ```
20
20
 
21
- Save JSON:
22
-
23
- ```bash
24
- npx slopless "docs/**/*.md" > slopless.json
25
- ```
26
-
27
- ## Npm Script
28
-
29
- Add this to `package.json`:
21
+ Add an npm script:
30
22
 
31
23
  ```json
32
24
  {
33
25
  "scripts": {
34
- "lint:prose": "slopless"
26
+ "lint:prose": "slopless \"docs/**/*.md\""
35
27
  }
36
28
  }
37
29
  ```
38
30
 
39
- Run:
40
-
41
31
  ```bash
42
32
  npm run lint:prose
43
33
  ```
44
34
 
45
- ## What Slopless Is
46
-
47
- Slopless is a deterministic prose checker for Markdown.
48
-
49
- It reports concrete writing patterns that often make generated or careless prose feel padded, vague, generic, or formulaic.
50
-
51
- It is built for local scripts, CI checks, review pipelines, and tools that need structured prose findings without calling an LLM.
35
+ Slopless requires a file path, glob, or stdin input. A bare `npx slopless` exits with code `2`.
52
36
 
53
- ## What Slopless Is Not
37
+ ## Behavior
54
38
 
55
- Slopless does not rewrite text.
56
-
57
- Slopless does not check facts.
58
-
59
- Slopless does not judge taste.
60
-
61
- Slopless does not replace editing.
62
-
63
- It reports rule findings. A person or another tool decides what to do with them.
64
-
65
- ## Defaults
66
-
67
- - Checks `**/*.md` when no path is passed.
68
- - Emits JSON only.
69
39
  - Requires Node.js 20 or newer.
70
40
  - Requires no `.textlintrc.json`.
71
41
  - Requires no separate `textlint` install.
42
+ - Supports inline `textlint-disable` comments for rule ignores.
43
+ - Emits textlint JSON only.
44
+ - Rejects `--format` and `-f`.
45
+ - Exits `0` for no findings, `1` for prose findings, and `2` for command failure.
72
46
 
73
- ## Exit Codes
74
-
75
- - `0`: no findings
76
- - `1`: prose findings were reported
77
- - `2`: command failure before linting
78
-
79
- ## Output
80
-
81
- Output is always textlint JSON.
82
-
83
- Each result contains the checked file path and its messages. Each message includes the rule ID, line, column, message text, and range data when textlint can provide it.
84
-
85
- Rule IDs use this shape:
86
-
87
- ```text
88
- slopless/<rule-name>
89
- ```
90
-
91
- Example:
47
+ Each JSON message includes the rule ID, line, column, message, and range data when textlint provides it. Rule IDs use `slopless/<rule-name>` in wrapped textlint output, such as `slopless/semantic-thinness`.
92
48
 
93
- ```text
94
- slopless/semantic-thinness
95
- slopless/llm-openers
96
- slopless/hedge-stacking
97
- ```
49
+ ## Ignore Rules
98
50
 
99
- ## CI Use
51
+ Ignore one rule for a block:
100
52
 
101
- Run Slopless in CI:
53
+ ```markdown
54
+ <!-- textlint-disable slopless/semantic-thinness -->
102
55
 
103
- ```bash
104
- npm ci
105
- npm run lint:prose
106
- ```
107
-
108
- Save findings as an artifact:
56
+ Something shifted in the room.
109
57
 
110
- ```bash
111
- npx slopless "docs/**/*.md" > slopless.json
58
+ <!-- textlint-enable slopless/semantic-thinness -->
112
59
  ```
113
60
 
114
- The command exits `1` when findings exist, so CI fails by default on reported prose issues.
61
+ Ignore several rules:
115
62
 
116
- ## Stdin
63
+ ```markdown
64
+ <!-- textlint-disable slopless/semantic-thinness, slopless/llm-openers -->
117
65
 
118
- Check text from stdin:
66
+ The important thing is that something shifted in the room.
119
67
 
120
- ```bash
121
- cat draft.md | npx slopless --stdin --stdin-filename draft.md
68
+ <!-- textlint-enable slopless/semantic-thinness, slopless/llm-openers -->
122
69
  ```
123
70
 
124
- `--stdin-filename` should end in `.md` so textlint parses the input as Markdown.
71
+ Ignore all Slopless findings in a block:
125
72
 
126
- ## Supported Options
73
+ ```markdown
74
+ <!-- textlint-disable -->
127
75
 
128
- Slopless forwards normal textlint file and execution options.
76
+ Something shifted in the room.
129
77
 
130
- Useful examples:
131
-
132
- ```bash
133
- npx slopless "docs/**/*.md" --quiet
134
- npx slopless --stdin --stdin-filename draft.md
135
- npx slopless --no-color
78
+ <!-- textlint-enable -->
136
79
  ```
137
80
 
138
- Unsupported:
139
-
140
- ```bash
141
- npx slopless --format stylish
142
- npx slopless -f json
143
- ```
144
-
145
- `--format` and `-f` are rejected because Slopless always emits JSON.
146
-
147
- ## What It Checks
148
-
149
- Slopless checks for:
150
-
151
- - stock AI-style phrasing
152
- - empty or generic prose patterns
153
- - rhetorical filler
154
- - weak lead-ins and closers
155
- - hedge stacking
156
- - prohibited or overused vocabulary
157
- - cliches and corporate phrasing
158
- - fake precision signals
159
- - readability and sentence metrics
160
- - Markdown style signals
161
-
162
- ## Why It Exists
163
-
164
- Generated prose often repeats the same rhetorical moves: vague contrast, empty emotional payoff, overconfident summaries, generic transitions, and formulaic conclusions.
165
-
166
- General grammar tools are not aimed at those patterns. LLM review can catch them, but it is slower, non-deterministic, and harder to use as a stable CI gate.
167
-
168
- Slopless keeps that layer deterministic. It gives projects a repeatable JSON report of known prose issues.
169
-
170
- ## Advanced Textlint Use
171
-
172
- The package also exports a textlint preset for users who already run textlint directly.
173
-
174
- `.textlintrc.json`:
81
+ Markdown comments must sit on their own lines, with blank lines around the ignored text.
82
+
83
+ ## Rules
84
+
85
+ Metrics:
86
+
87
+ - `avg-sentence-length`: average sentence length above 24 words.
88
+ - `paragraph-length`: paragraphs over 6 sentences.
89
+ - `word-repetition`: one non-trivial word repeated over 5 times.
90
+ - `flesch-kincaid`: Flesch Reading Ease below 61.
91
+ - `gunning-fog` and `coleman-liau`: grade scores above 12.
92
+
93
+ Orthography:
94
+
95
+ - `colon-dramatic`: short reveals after a colon, such as `And then: everything changed.`
96
+ - `em-dashes`: closed em dashes.
97
+ - `exclamation-density`: more than 1 exclamation mark per paragraph.
98
+ - `fake-timestamps`: clock specificity, such as `5:47 PM`.
99
+ - `sentence-case`: title-case headings.
100
+ - `smart-quotes`: curly quotes.
101
+
102
+ Phrases and words:
103
+
104
+ - `cliches`: stock phrases, such as `at the end of the day`.
105
+ - `corporate-speak`: business filler, such as `move the needle`.
106
+ - `hedge-stacking`: stacked hedges, such as `might perhaps`.
107
+ - `humble-bragger`: credential lead-ins, such as `in my experience`.
108
+ - `jargon-faker`: borrowed tech metaphors, such as `debug your morning`.
109
+ - `llm-disclaimer`: assistant disclaimers, such as `as an AI language model`.
110
+ - `llm-vocabulary`: common AI diction, such as `delve`.
111
+ - `prohibited-phrases` and `prohibited-words`: package-owned banned lists.
112
+ - `recommended-terms` and `required-terms`: configured missing terms.
113
+ - `simplicity`: complex words with simple replacements, such as `utilize`.
114
+ - `skunked-terms`: contested broad-use terms.
115
+ - `uncomparables`: impossible modifiers, such as `very unique`.
116
+
117
+ Semantic thinness:
118
+
119
+ - `semantic-thinness`: low-information templates, such as `Something shifted in the room.`
120
+
121
+ Syntactic patterns:
122
+
123
+ - `affirmation-closers`: empty certainty endings, such as `and that is the key`.
124
+ - `authority-padding`: soft authority padding, such as `research shows`.
125
+ - `blame-reframe`: blame-to-insight reframes, such as `the problem is not X, it is Y`.
126
+ - `boilerplate-conclusion`: generic endings, such as `in conclusion`.
127
+ - `boilerplate-framing`: generic setup, such as `when it comes to`.
128
+ - `contrastive-aphorism`: slogan contrasts, such as `not faster, but smarter`.
129
+ - `demonstrative-emphasis`: vague `this is what` emphasis.
130
+ - `empty-emphasis`: unsupported importance claims, such as `this matters`.
131
+ - `false-question`: rhetorical questions, such as `isn't that what we all want?`
132
+ - `fragment-stacking`: clipped cadence, such as `Too broad. Too vague. Too late.`
133
+ - `generic-signposting`: generic transitions, such as `it is important to note`.
134
+ - `lesson-framing`: lesson extraction, such as `the lesson is`.
135
+ - `llm-openers`: generic openers, such as `the important thing is`.
136
+ - `negation-reframe`: `not X. It is Y.` constructions.
137
+ - `observer-guidance`: reader-instruction frames, such as `notice how`.
138
+ - `response-wrapper`: chat wrappers, such as `here is a revised version`.
139
+ - `softening-language`: vague softeners, such as `in many ways`.
140
+ - `summative-closer`: summary payoff lines, such as `that is what makes it work`.
141
+ - `triple-repeat`: repeated sentence openers, such as `It is X. It is Y. It is Z.`
142
+ - `universalizing-claims`: broad claims, such as `everyone knows`.
143
+
144
+ ## Direct Textlint Use
145
+
146
+ Most users should run `npx slopless "docs/**/*.md"`.
147
+
148
+ The package also exports a textlint preset:
175
149
 
176
150
  ```json
177
151
  {
152
+ "filters": {
153
+ "comments": true
154
+ },
178
155
  "rules": {
179
156
  "preset-slopless": true
180
157
  }
181
158
  }
182
159
  ```
183
160
 
184
- Direct textlint use:
185
-
186
161
  ```bash
187
162
  npx textlint "docs/**/*.md"
188
163
  ```
189
-
190
- Most users should use `npx slopless` instead.
package/dist/cli.js CHANGED
@@ -2,30 +2,47 @@
2
2
  import { dirname, resolve } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { cli } from "textlint/lib/src/cli.js";
5
- const DEFAULT_TARGET = "**/*.md";
6
5
  const FORMAT_FLAGS = new Set(["--format", "-f"]);
7
6
  const HELP_FLAGS = new Set(["--help", "-h"]);
7
+ const STDIN_FLAGS = new Set(["--stdin"]);
8
8
  const VERSION_FLAGS = new Set(["--version", "-v"]);
9
- const VERSION = "0.2.3";
10
- const HELP_TEXT = `Slopless checks Markdown prose for deterministic slop signals and writes JSON.
9
+ const CONFIG_FLAGS = new Set(["--config", "-c"]);
10
+ const VALUE_OPTIONS = new Set([
11
+ "--cache-location",
12
+ "--config",
13
+ "--ignore-path",
14
+ "--output-file",
15
+ "--plugin",
16
+ "--preset",
17
+ "--rule",
18
+ "--rules-base-directory",
19
+ "--rulesdir",
20
+ "--stdin-filename",
21
+ "-c",
22
+ "-o"
23
+ ]);
24
+ const VERSION = "0.2.5";
25
+ const HELP_TEXT = `Slopless checks Markdown prose for deterministic AI and human slop signals.
26
+
27
+ It reports concrete patterns that make writing padded, vague, generic,
28
+ formulaic, or mechanically careless. Output is always textlint JSON.
11
29
 
12
30
  Install:
13
31
  npm install -D slopless
14
32
 
15
33
  Run:
16
- npx slopless
17
34
  npx slopless "docs/**/*.md"
18
35
  npx slopless draft.md > slopless.json
19
36
 
20
37
  Package script:
21
38
  {
22
39
  "scripts": {
23
- "lint:prose": "slopless"
40
+ "lint:prose": "slopless \\"docs/**/*.md\\""
24
41
  }
25
42
  }
26
43
 
27
44
  Default behavior:
28
- - If no file path is passed, Slopless checks **/*.md.
45
+ - A file path, glob, or stdin input is required.
29
46
  - Output is always JSON.
30
47
  - Exit 0 means no findings.
31
48
  - Exit 1 means Slopless found prose issues.
@@ -35,9 +52,9 @@ Default behavior:
35
52
 
36
53
  What it is for:
37
54
  Slopless is for deterministic prose checks in CI, local scripts, and review
38
- pipelines. It catches repeated AI-style phrasing, empty claims, rhetorical
39
- filler, weak lead-ins and closers, hedge stacking, readability problems, and
40
- Markdown style signals.
55
+ pipelines. It catches AI-style phrasing, empty claims, rhetorical filler,
56
+ weak lead-ins and closers, hedge stacking, readability problems, and Markdown
57
+ style signals.
41
58
 
42
59
  What it is not for:
43
60
  Slopless does not rewrite text, check facts, judge taste, or replace human
@@ -49,6 +66,13 @@ Useful forms:
49
66
  npx slopless "docs/**/*.md" > slopless.json
50
67
  npx slopless "docs/**/*.md" --quiet
51
68
 
69
+ Ignore one rule:
70
+ <!-- textlint-disable slopless/semantic-thinness -->
71
+
72
+ Something shifted in the room.
73
+
74
+ <!-- textlint-enable slopless/semantic-thinness -->
75
+
52
76
  Unsupported:
53
77
  --format and -f are rejected. JSON is the only output format.
54
78
  `;
@@ -61,11 +85,38 @@ function hasFlag(args, flags) {
61
85
  return args.some((arg) => flags.has(arg));
62
86
  }
63
87
  function hasFileTarget(args) {
64
- return args.some((arg) => !arg.startsWith("-"));
88
+ for (let index = 0; index < args.length; index += 1) {
89
+ const arg = args[index];
90
+ if (arg === undefined) {
91
+ continue;
92
+ }
93
+ if (VALUE_OPTIONS.has(arg)) {
94
+ index += 1;
95
+ continue;
96
+ }
97
+ if (arg.startsWith("--") && arg.includes("=")) {
98
+ continue;
99
+ }
100
+ if (arg.startsWith("-")) {
101
+ continue;
102
+ }
103
+ return true;
104
+ }
105
+ return false;
106
+ }
107
+ function packageRoot() {
108
+ return dirname(dirname(fileURLToPath(import.meta.url)));
65
109
  }
66
110
  function packageNodeModules() {
67
- const packageRoot = dirname(dirname(fileURLToPath(import.meta.url)));
68
- return resolve(packageRoot, "..");
111
+ return resolve(packageRoot(), "..");
112
+ }
113
+ async function readStdin() {
114
+ let text = "";
115
+ const stream = process.stdin.setEncoding("utf8");
116
+ for await (const chunk of stream) {
117
+ text += chunk;
118
+ }
119
+ return text;
69
120
  }
70
121
  async function main() {
71
122
  const userArgs = process.argv.slice(2);
@@ -81,9 +132,16 @@ async function main() {
81
132
  process.stderr.write("slopless always writes JSON output. Remove --format / -f.\n");
82
133
  return 2;
83
134
  }
135
+ if (!hasFileTarget(userArgs) && !hasFlag(userArgs, STDIN_FLAGS)) {
136
+ process.stderr.write("slopless requires a file path, glob, or --stdin input. Run slopless --help.\n");
137
+ return 2;
138
+ }
84
139
  const args = [
85
140
  "node",
86
141
  "slopless",
142
+ ...(hasFlag(userArgs, CONFIG_FLAGS)
143
+ ? []
144
+ : ["--config", resolve(packageRoot(), "slopless.textlintrc.json")]),
87
145
  "--preset",
88
146
  "slopless",
89
147
  "--rules-base-directory",
@@ -92,8 +150,8 @@ async function main() {
92
150
  "json",
93
151
  ...userArgs
94
152
  ];
95
- if (!hasFileTarget(userArgs)) {
96
- args.push(DEFAULT_TARGET);
153
+ if (hasFlag(userArgs, STDIN_FLAGS)) {
154
+ return cli.execute(args, await readStdin());
97
155
  }
98
156
  return cli.execute(args);
99
157
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slopless",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "description": "Deterministic textlint rules for detecting slop in prose.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -28,7 +28,8 @@
28
28
  },
29
29
  "files": [
30
30
  "dist",
31
- "README.md"
31
+ "README.md",
32
+ "slopless.textlintrc.json"
32
33
  ],
33
34
  "bin": {
34
35
  "slopless": "dist/cli.js"
@@ -89,6 +90,7 @@
89
90
  "@textlint/types": "15.6.1",
90
91
  "sentence-splitter": "5.0.1",
91
92
  "textlint": "15.6.1",
93
+ "textlint-filter-rule-comments": "^1.3.0",
92
94
  "textlint-rule-helper": "2.5.0",
93
95
  "textlint-util-to-string": "3.3.4"
94
96
  },
@@ -0,0 +1,5 @@
1
+ {
2
+ "filters": {
3
+ "comments": true
4
+ }
5
+ }