@mrclrchtr/supi-flow 0.6.1 → 0.10.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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: supi-flow-archive
3
- description: Verify implementation against the plan, update living documentation, run slop detection, and close out the change.
3
+ description: Verify implementation against the plan, update living documentation, and close out the change.
4
4
  ---
5
5
 
6
6
  # Archive and document
@@ -52,21 +52,7 @@ Update docs only where the change actually affects them.
52
52
  3. Update them with grounded, specific language.
53
53
  4. Reference actual file paths, commands, settings, or behavior when helpful.
54
54
 
55
- ## Step 4: Run slop detection
56
-
57
- Load `/skill:supi-flow-slop-detect` and scan every edited documentation file.
58
-
59
- Quality checks:
60
-
61
- - no tier-1 slop words in edited docs
62
- - claims are grounded in specifics
63
- - wording is direct, not formulaic
64
- - AI-sycophantic filler is removed
65
- - the slop score is acceptable
66
-
67
- If the scan fails, fix the docs and re-scan.
68
-
69
- ## Step 5: Verify doc accuracy
55
+ ## Step 4: Verify doc accuracy
70
56
 
71
57
  Do the docs match the actual code and workflow?
72
58
 
@@ -77,18 +63,29 @@ Do the docs match the actual code and workflow?
77
63
 
78
64
  Do not assume documentation is correct just because it sounds right.
79
65
 
80
- ## Step 6: Close out
66
+ ## Step 5: Close out
81
67
 
82
68
  - Call `supi_flow_close { ticket_id: "<ID>", verification_results: "..." }` with the full verification evidence.
83
- This will set status=done, tags=flow:done, store verification results in archive.md, and auto-commit .tndm/ changes.
69
+ This will set status=done, tags=flow:done, and store verification results in archive.md.
84
70
  - There is no ticket-less closeout.
85
71
 
86
- ## Step 7: Verify commit
87
-
88
- Check that the `.tndm/` changes were committed. If `supi_flow_close` did not commit (e.g. no changes to commit), commit any remaining doc changes manually:
89
-
90
- ```sh
91
- git commit -m "docs: archive TNDM-XXXXXX"
72
+ ## Step 6: Commit or finish
73
+
74
+ ```instructions
75
+ run("git status")
76
+ if only_changed(".tndm/"):
77
+ commit(".tndm/", "chore(tndm): close <ticket_id>")
78
+ say("The ticket is closed. All changes are committed.")
79
+ else:
80
+ ask_user("Commit all changes now, including .tndm/, or finish and commit manually?")
81
+ if user_chose_commit_now:
82
+ if skill_exists_matching("commit"):
83
+ use_skill_matching("commit")
84
+ else:
85
+ git_add_all()
86
+ git_commit()
87
+ else:
88
+ say("The ticket is closed. Remember to commit your changes when ready.")
92
89
  ```
93
90
 
94
91
  ## Red flags
@@ -49,10 +49,10 @@ Use enough detail that an agent can execute without guessing, but do not force h
49
49
 
50
50
  ```markdown
51
51
  - [ ] **Task 1**: Create the CLI helper module
52
- - File: `src/cli.ts`
52
+ - File: `extensions/cli.ts`
53
53
  - Verification: `pnpm exec tsc --noEmit`
54
54
  - [ ] **Task 2**: Register the tools
55
- - File: `src/tools/tndm-cli.ts`
55
+ - File: `extensions/tools/tndm-cli.ts`
56
56
  - Verification: `pnpm exec vitest run`
57
57
  ```
58
58
 
@@ -1,393 +0,0 @@
1
- ---
2
- name: supi-flow-slop-detect
3
- description: Detect and fix AI-generated prose markers ("slop") in documentation. Use this whenever the user wants to check, review, or improve docs for AI-sounding language — slop detection, prose quality, writing review, AI text cleanup, documentation polish. Automatically loaded during /supi-flow-archive when updating docs.
4
- ---
5
-
6
- # Slop Detection
7
-
8
- Scan documentation for AI-prose markers and fix them. Use during the archive phase after doc edits.
9
-
10
- ## Scan workflow
11
-
12
- 1. Read the edited documentation files
13
- 2. Classify each file by profile: skill, technical, or prose
14
- 3. Scan for vocabulary markers (Tiers 1-4) and structural patterns (below)
15
- 4. For each hit: substitute with specific, grounded language
16
- 5. Re-read the fixed text — does it still say the same thing with better words?
17
- 6. Re-scan to confirm score dropped below threshold
18
-
19
- **Principles:**
20
- - Preserve meaning — change how it's said, not what's said
21
- - Match context — skill docs and technical docs need different thresholds than narrative prose
22
- - Be specific — replace abstract adjectives with concrete claims (version numbers, file paths, measurements)
23
- - Prefer active voice — "it validates input" not "input is validated"
24
- - Keep useful technical shorthand when it improves clarity
25
- - Never change code — only edit prose/docstrings/comments
26
-
27
- ## Document profiles
28
-
29
- The scanner should not treat every Markdown file the same.
30
-
31
- - **skill** — `**/skills/**/SKILL.md`; instructional, operational, list-heavy
32
- - **technical** — READMEs, architecture docs, setup docs, reference material
33
- - **prose** — narrative or essay-like documents
34
-
35
- Profiles mostly affect structural scoring:
36
-
37
- - **skill:** allow compact workflow notation, higher bullet density, and occasional clarifying em dashes
38
- - **technical:** allow architecture and data-flow notation, but keep tighter structure checks
39
- - **prose:** use the strictest structural thresholds
40
-
41
- Vocabulary, hype, and sycophantic phrasing stay strict across all profiles.
42
-
43
- ## Vocabulary markers
44
-
45
- ### Tier 1: High-confidence markers (score 3 each)
46
-
47
- | AI Word | Context | Replace with |
48
- |---------|---------|-------------|
49
- | delve | "delve into" | explore, examine, look at |
50
- | tapestry | "rich tapestry" | mix, combination, variety |
51
- | realm | "in the realm of" | in, within, regarding |
52
- | embark | "embark on a journey" | start, begin |
53
- | beacon | "a beacon of" | example, model |
54
- | spearheaded | formal attribution | led, started |
55
- | leverage | business jargon | use, apply |
56
- | robust | quality signal | solid, strong, reliable |
57
- | seamless | integration claim | smooth, easy, simple |
58
- | pivotal | importance marker | key, important |
59
- | multifaceted | complexity signal | complex, varied |
60
- | comprehensive | scope claim | thorough, complete |
61
- | nuanced | sophistication signal | subtle, detailed |
62
- | meticulous | care signal | careful, detailed |
63
- | intricate | complexity marker | detailed, complex |
64
- | showcasing | display verb | showing, displaying |
65
- | streamline | optimization verb | simplify, improve |
66
- | facilitate | enablement verb | enable, help, allow |
67
- | utilize | formal "use" | use |
68
-
69
- ### Tier 2: Context-dependent markers (score 2 each)
70
-
71
- | Category | Words |
72
- |----------|-------|
73
- | Transition overuse | moreover, furthermore, indeed, notably, subsequently |
74
- | Intensity clustering | significantly, substantially, fundamentally, profoundly |
75
- | Hedging stacks | potentially, typically, often, might, perhaps |
76
- | Action inflation | revolutionize, transform, unlock, unleash, elevate |
77
- | Empty emphasis | crucial, vital, essential, paramount |
78
-
79
- ### Tier 3: Phrase patterns (score 2-4)
80
-
81
- | Phrase | Score | Replacement |
82
- |--------|-------|-------------|
83
- | "In today's fast-paced world" | 4 | Delete — start with the point |
84
- | "It's worth noting that" | 3 | Delete — just state the thing |
85
- | "At its core" | 2 | "Fundamentally" or delete |
86
- | "Cannot be overstated" | 3 | "is important because [reason]" |
87
- | "Navigate the complexities" | 4 | "handle", "work through" |
88
- | "Unlock the potential" | 4 | "enable", "make possible" |
89
- | "A testament to" | 3 | "shows", "demonstrates" |
90
- | "Treasure trove of" | 3 | "collection", "set" |
91
- | "Game changer" | 3 | Delete — be specific |
92
- | "Ever-evolving landscape" | 4 | Delete — be specific |
93
- | "Look no further" | 4 | Delete — state the answer |
94
- | "Hustle and bustle" | 3 | Delete — filler |
95
-
96
- ### Tier 4: Sycophantic markers (score 2 each)
97
-
98
- Especially relevant in conversational or instructional content.
99
-
100
- | Phrase | Issue |
101
- |--------|-------|
102
- | "I'd be happy to" | Servile opener |
103
- | "Great question!" | Empty validation |
104
- | "Absolutely!" | Over-agreement |
105
- | "That's a wonderful point" | Flattery |
106
- | "I'm glad you asked" | Filler |
107
- | "You're absolutely right" | Sycophancy |
108
-
109
- These phrases add no information and signal generated content.
110
-
111
- ## Structural patterns
112
-
113
- ### Em dash density
114
-
115
- Em dashes are a weak signal by themselves. What matters is repetitive, decorative use.
116
-
117
- Baseline guidance:
118
-
119
- | Density | Signal |
120
- |---------|--------|
121
- | 0-2 | Normal |
122
- | 3-5 | Elevated — review |
123
- | 6+ | Strong AI signal in most docs |
124
-
125
- Profile adjustments:
126
- - **skill:** higher tolerance for compact instructional labels
127
- - **technical/prose:** stricter review once density gets high
128
-
129
- ```bash
130
- # Count em dashes in a file
131
- grep -o '—' file.md | wc -l
132
- ```
133
-
134
- _Also detected by `scripts/slop-scan-structural.ts` with profile-aware thresholds._
135
-
136
- ### Tricolon detection
137
-
138
- AI loves groups of three adjectives with alliteration or similar sounds:
139
- - "fast, efficient, and reliable" → pick the most accurate one
140
- - "clear, concise, and compelling" → "clear and concise"
141
- - "robust, reliable, and resilient" → "reliable"
142
-
143
- Pattern: `adjective, adjective, and adjective` with similar sounds. Flag when >1 per 500 words.
144
-
145
- ### Sentence length clustering
146
-
147
- AI clusters sentences in the 15-25 word range. Human writing varies from 3-word fragments to 40+ word complex sentences. AI avoids both extremes.
148
-
149
- Check: if >70% of sentences fall in 15-25 word range → strong AI signal. Vary rhythm by adding short punchy sentences and occasional long ones.
150
-
151
- ### Paragraph symmetry
152
-
153
- AI produces "blocky" text with uniform paragraph lengths. If most paragraphs cluster around the same word count (e.g., 40-60 words each) → flag. Break symmetry: vary paragraph length, use single-sentence paragraphs for emphasis.
154
-
155
- _Detected by `scripts/slop-scan-structural.ts` as `paragraphUniformity` score (threshold: > 0.7)._
156
-
157
- ### Bullet-to-prose ratio
158
-
159
- | Ratio | Signal |
160
- |-------|--------|
161
- | 0-30% | Normal |
162
- | 30-50% | Elevated |
163
- | 50-70% | High in technical/prose docs |
164
- | 70%+ | Very high AI signal in most docs |
165
-
166
- Profile adjustments:
167
- - **skill:** allow a higher bullet ratio for checklists, procedures, and operator guidance
168
- - **technical:** medium threshold
169
- - **prose:** lowest threshold
170
-
171
- Emoji-led bullets (e.g., `✅`, `❌`, `🔴`) in technical documentation are still a strong AI tell.
172
-
173
- ### Intro-body-conclusion structure
174
-
175
- AI defaults to: intro paragraph + three body sections + conclusion that restates intro. Check for:
176
- 1. Opening paragraph that restates the question
177
- 2. Three distinct middle sections
178
- 3. Closing paragraph that summarizes without adding new information
179
-
180
- If detected: cut the intro and conclusion. Start at the first paragraph with actual content.
181
-
182
- _Detected by `scripts/slop-scan-structural.ts` as `introBodyConclusion`._
183
-
184
- ### Participial phrase tail-loading
185
-
186
- AI appends present participial (-ing) phrases to sentence ends at 2-5x the human rate.
187
-
188
- Pattern: `[Main clause], [present participle] [detail].`
189
-
190
- Examples (all AI signals):
191
- - "The framework processes requests, **enabling** developers to scale."
192
- - "The policy was implemented, **marking** a shift in approach."
193
- - "She published findings, **contributing** to the body of research."
194
-
195
- Fix: split into two sentences or restructure. 3+ in a paragraph → rewrite.
196
-
197
- ### "From X to Y" range construction
198
-
199
- AI uses this template to express scope at much higher rates:
200
- - "From beginners to experts"
201
- - "From simple scripts to complex applications"
202
-
203
- Flag when >1 per 500 words. Replace with direct statement: "works for all skill levels."
204
-
205
- _Detected by `scripts/slop-scan-structural.ts`._
206
-
207
- ### Correlative conjunction overuse
208
-
209
- AI over-relies on correlative pairs in close proximity:
210
-
211
- | Pattern | Example |
212
- |---------|---------|
213
- | "not only...but also" | "not only improves X, but also Y" |
214
- | "whether...or" | "whether you're a beginner or expert" |
215
- | "not just...but" | "not just a tool, but a platform" |
216
-
217
- 2+ correlative pairs in the same paragraph → flag.
218
-
219
- ### Colon addiction and semicolon avoidance
220
-
221
- AI uses colons to introduce explanations at 3-5x the human rate. Meanwhile, AI rarely uses semicolons. The ratio of em dashes to semicolons is skewed compared to human writing.
222
-
223
- Check: if em dashes > 5 and semicolons = 0 → strong AI signal.
224
-
225
- ### Arrow connectors
226
-
227
- Arrow notation is context-sensitive.
228
-
229
- **Allowed when used as compact technical notation:**
230
- - workflow chains: `brainstorm → plan → apply`
231
- - architecture or boundary descriptions: `CLI → tool → service`
232
- - single-step technical transitions: `request → response`, `parser → AST`, `draft → published`
233
- - data-flow or state-flow summaries
234
- - diagrams, breadcrumbs, and type signatures
235
-
236
- **Flag when used as vague prose shorthand:**
237
- - "this change -> improves productivity"
238
- - "the tool → makes things easier"
239
-
240
- Rule of thumb: keep arrows when they connect short technical phrases. Replace them when they stand in for normal sentence prose.
241
-
242
- ```bash
243
- # Detect arrows in prose (exclude code blocks)
244
- awk '/^```/{c=!c}!c' file.md | rg -o '\s->\s|→' | wc -l
245
- ```
246
-
247
- _Also detected by `scripts/slop-scan-structural.ts`, which separates technical chains from prose shorthand._
248
-
249
- ### Plus-sign conjunction
250
-
251
- AI uses `+` as a conjunction ("X + Y") in prose instead of "and" or "with". Fine in code, math, and labels.
252
-
253
- - "hooks + skills" (slop) → "hooks and skills" (human)
254
- - "1 + 1 = 2" (fine, math)
255
-
256
- Flag when >1 prose plus-sign appears outside code blocks.
257
-
258
- _Also detected by `scripts/slop-scan-structural.ts` (included in structural score)._
259
-
260
- ### Conclusion mirroring
261
-
262
- AI introductions and conclusions are near-paraphrases of each other. If the first and last paragraphs express the same idea using different words → cut the conclusion. Human writing ends with specifics, callbacks, questions, or simply stops.
263
-
264
- ### Perfect grammar signals
265
-
266
- | Pattern | Human Range | AI Signal |
267
- |---------|-------------|-----------|
268
- | Contractions (don't, can't, it's) | Common | Rare/absent |
269
- | Oxford commas | Variable | Always present |
270
- | Typos | Occasional | None |
271
- | Sentence fragments | Present | Rare |
272
- | Starting sentences with "And" or "But" | Common | Rare |
273
- | Register shifts (formal ↔ casual) | Present | Uniform |
274
-
275
- Too-perfect grammar with no contractions, no fragments, uniform register → suspicious.
276
-
277
- ## Density scoring
278
-
279
- ```
280
- vocab_score = (tier1_count × 3 + tier2_count × 2 + tier4_count × 2 + phrase_count × avg_phrase_score) / word_count × 100
281
-
282
- structural_score:
283
- +2 if em_dash_density exceeds the profile threshold
284
- +2 if sentence_cluster_ratio > 0.7
285
- +2 if bullet_ratio exceeds the profile threshold
286
- +2 if paragraph_uniformity > 0.7
287
- +1 if emoji_bullets present
288
- +2 if participial_tail_count > 3 per 500 words
289
- +2 if intro-body-conclusion structure detected (except relaxed skill profile)
290
- +1 if correlative_pairs > 2
291
- +1 if prose_arrow_connectors > 0
292
- +1 if plus_conjunctions exceed the profile threshold
293
- +1 if em_dashes exceed the profile threshold AND semicolons = 0
294
- +1 if conclusion_mirroring detected
295
-
296
- final_score = vocab_score + structural_score (cap at 10)
297
- ```
298
-
299
- | Score | Rating | Action |
300
- |-------|--------|--------|
301
- | 0-1.0 | Clean | No action needed |
302
- | 1.0-2.5 | Light | Spot remediation — fix individual markers |
303
- | 2.5-5.0 | Moderate | Section rewrite recommended |
304
- | 5.0+ | Heavy | Full document review — do not commit |
305
-
306
- Target: score < 1.5 before committing documentation.
307
-
308
- ## Automated scripts
309
-
310
- Cross-platform Node.js/TypeScript scripts in `scripts/` automate the detection. They run anywhere pi runs (macOS, Linux, Windows).
311
-
312
- ### Prerequisites
313
-
314
- The scripts use `pnpm exec jiti` (already available in the SuPi workspace).
315
-
316
- ```bash
317
- # From repo root
318
- pnpm exec jiti packages/supi-flow/skills/supi-flow-slop-detect/scripts/slop-scan.ts <file>
319
-
320
- # Or from anywhere via relative path
321
- pnpm exec jiti path/to/scripts/slop-scan.ts <file>
322
- ```
323
-
324
- ### Available scripts
325
-
326
- #### `slop-scan.ts` — Combined scanner
327
-
328
- Runs vocabulary + structural detection, computes final density score (capped at 10).
329
-
330
- ```bash
331
- # Human-readable summary
332
- pnpm exec jiti scripts/slop-scan.ts README.md
333
-
334
- # Machine-readable JSON (for agent post-processing)
335
- pnpm exec jiti scripts/slop-scan.ts README.md --json-only
336
-
337
- # Multiple files
338
- pnpm exec jiti scripts/slop-scan.ts docs/*.md --json-only
339
- ```
340
-
341
- Output fields consumed by the agent:
342
-
343
- ```json
344
- {
345
- "file": "README.md",
346
- "profile": "technical",
347
- "adjustments": ["technical-doc thresholds", "workflow arrow chains relaxed"],
348
- "wordCount": 1612,
349
- "vocabScore": 11.10,
350
- "structuralScore": 7,
351
- "finalScore": 10.00,
352
- "rating": "heavy",
353
- "recommendation": "Full document review — do not commit without fixing.",
354
- "vocab": { "hits": [...] },
355
- "structural": { "flags": [...], "metrics": {...} }
356
- }
357
- ```
358
-
359
- #### `slop-scan-vocab.ts` — Vocabulary-only scan
360
-
361
- Scans for Tier 1-4 vocabulary markers (AI-prose vocabulary, phrases, and sycophantic language).
362
-
363
- ```bash
364
- pnpm exec jiti scripts/slop-scan-vocab.ts README.md
365
- ```
366
-
367
- #### `slop-scan-structural.ts` — Structural-only scan
368
-
369
- Analyzes structural patterns with profile-aware thresholds: em dash density, bullet ratios, sentence clustering, participial tails, arrow usage, correlative pairs, plus-sign conjunctions, five-paragraph essay structure, conclusion mirroring, and more.
370
-
371
- ```bash
372
- pnpm exec jiti scripts/slop-scan-structural.ts README.md
373
- ```
374
-
375
- ### Script location
376
-
377
- ```
378
- skills/supi-flow-slop-detect/
379
- ├── SKILL.md
380
- ├── references/
381
- │ └── vocabulary.json # Single source of truth for vocabulary markers
382
- └── scripts/
383
- ├── slop-helpers.ts # Shared detection utilities
384
- ├── slop-scan-vocab.ts # Vocabulary marker detection (reads vocabulary.json)
385
- ├── slop-scan-structural.ts # Structural pattern detection
386
- └── slop-scan.ts # Combined scanner + density scoring
387
- ```
388
-
389
- ### Tips
390
-
391
- - **For agents**: Pipe `--json-only` output into `jq` or parse directly from the tool call.
392
- - **For manual use**: Omit `--json-only` for the human-readable summary with score bar and metrics table.
393
- - The SKILL.md itself scores high because it documents all slop patterns in its tables. Normal docs should score < 1.5.
@@ -1,161 +0,0 @@
1
- {
2
- "tier1": [
3
- {
4
- "term": "delve",
5
- "score": 3,
6
- "context": "\"delve into\"",
7
- "replacement": "explore, examine, look at"
8
- },
9
- {
10
- "term": "tapestry",
11
- "score": 3,
12
- "context": "\"rich tapestry\"",
13
- "replacement": "mix, combination, variety"
14
- },
15
- {
16
- "term": "realm",
17
- "score": 3,
18
- "context": "\"in the realm of\"",
19
- "replacement": "in, within, regarding"
20
- },
21
- {
22
- "term": "embark",
23
- "score": 3,
24
- "context": "\"embark on a journey\"",
25
- "replacement": "start, begin"
26
- },
27
- { "term": "beacon", "score": 3, "context": "\"a beacon of\"", "replacement": "example, model" },
28
- {
29
- "term": "spearheaded",
30
- "score": 3,
31
- "context": "formal attribution",
32
- "replacement": "led, started"
33
- },
34
- { "term": "leverage", "score": 3, "context": "business jargon", "replacement": "use, apply" },
35
- {
36
- "term": "robust",
37
- "score": 3,
38
- "context": "quality signal",
39
- "replacement": "solid, strong, reliable"
40
- },
41
- {
42
- "term": "seamless",
43
- "score": 3,
44
- "context": "integration claim",
45
- "replacement": "smooth, easy, simple"
46
- },
47
- {
48
- "term": "pivotal",
49
- "score": 3,
50
- "context": "importance marker",
51
- "replacement": "key, important"
52
- },
53
- {
54
- "term": "multifaceted",
55
- "score": 3,
56
- "context": "complexity signal",
57
- "replacement": "complex, varied"
58
- },
59
- {
60
- "term": "comprehensive",
61
- "score": 3,
62
- "context": "scope claim",
63
- "replacement": "thorough, complete"
64
- },
65
- {
66
- "term": "nuanced",
67
- "score": 3,
68
- "context": "sophistication signal",
69
- "replacement": "subtle, detailed"
70
- },
71
- {
72
- "term": "meticulous",
73
- "score": 3,
74
- "context": "care signal",
75
- "replacement": "careful, detailed"
76
- },
77
- {
78
- "term": "intricate",
79
- "score": 3,
80
- "context": "complexity marker",
81
- "replacement": "detailed, complex"
82
- },
83
- {
84
- "term": "showcasing",
85
- "score": 3,
86
- "context": "display verb",
87
- "replacement": "showing, displaying"
88
- },
89
- {
90
- "term": "streamline",
91
- "score": 3,
92
- "context": "optimization verb",
93
- "replacement": "simplify, improve"
94
- },
95
- {
96
- "term": "facilitate",
97
- "score": 3,
98
- "context": "enablement verb",
99
- "replacement": "enable, help, allow"
100
- },
101
- { "term": "utilize", "score": 3, "context": "formal \"use\"", "replacement": "use" }
102
- ],
103
- "tier2": [
104
- { "term": "moreover", "score": 2, "category": "Transition overuse" },
105
- { "term": "furthermore", "score": 2, "category": "Transition overuse" },
106
- { "term": "indeed", "score": 2, "category": "Transition overuse" },
107
- { "term": "notably", "score": 2, "category": "Transition overuse" },
108
- { "term": "subsequently", "score": 2, "category": "Transition overuse" },
109
- { "term": "significantly", "score": 2, "category": "Intensity clustering" },
110
- { "term": "substantially", "score": 2, "category": "Intensity clustering" },
111
- { "term": "fundamentally", "score": 2, "category": "Intensity clustering" },
112
- { "term": "profoundly", "score": 2, "category": "Intensity clustering" },
113
- { "term": "potentially", "score": 2, "category": "Hedging stacks" },
114
- { "term": "typically", "score": 2, "category": "Hedging stacks" },
115
- { "term": "might", "score": 2, "category": "Hedging stacks" },
116
- { "term": "perhaps", "score": 2, "category": "Hedging stacks" },
117
- { "term": "revolutionize", "score": 2, "category": "Action inflation" },
118
- { "term": "transform", "score": 2, "category": "Action inflation" },
119
- { "term": "unlock", "score": 2, "category": "Action inflation" },
120
- { "term": "unleash", "score": 2, "category": "Action inflation" },
121
- { "term": "elevate", "score": 2, "category": "Action inflation" },
122
- { "term": "crucial", "score": 2, "category": "Empty emphasis" },
123
- { "term": "vital", "score": 2, "category": "Empty emphasis" },
124
- { "term": "essential", "score": 2, "category": "Empty emphasis" },
125
- { "term": "paramount", "score": 2, "category": "Empty emphasis" }
126
- ],
127
- "tier3": [
128
- {
129
- "term": "in today's fast-paced world",
130
- "score": 4,
131
- "replacement": "Delete — start with the point"
132
- },
133
- {
134
- "term": "it's worth noting that",
135
- "score": 3,
136
- "replacement": "Delete — just state the thing"
137
- },
138
- { "term": "at its core", "score": 2, "replacement": "\"Fundamentally\" or delete" },
139
- {
140
- "term": "cannot be overstated",
141
- "score": 3,
142
- "replacement": "\"is important because [reason]\""
143
- },
144
- { "term": "navigate the complexities", "score": 4, "replacement": "handle, work through" },
145
- { "term": "unlock the potential", "score": 4, "replacement": "enable, make possible" },
146
- { "term": "a testament to", "score": 3, "replacement": "shows, demonstrates" },
147
- { "term": "treasure trove of", "score": 3, "replacement": "collection, set" },
148
- { "term": "game changer", "score": 3, "replacement": "Delete — be specific" },
149
- { "term": "ever-evolving landscape", "score": 4, "replacement": "Delete — be specific" },
150
- { "term": "look no further", "score": 4, "replacement": "Delete — state the answer" },
151
- { "term": "hustle and bustle", "score": 3, "replacement": "Delete — filler" }
152
- ],
153
- "tier4": [
154
- { "term": "I'd be happy to", "score": 2, "issue": "Servile opener" },
155
- { "term": "Great question!", "score": 2, "issue": "Empty validation" },
156
- { "term": "Absolutely!", "score": 2, "issue": "Over-agreement" },
157
- { "term": "That's a wonderful point", "score": 2, "issue": "Flattery" },
158
- { "term": "I'm glad you asked", "score": 2, "issue": "Filler" },
159
- { "term": "You're absolutely right", "score": 2, "issue": "Sycophancy" }
160
- ]
161
- }