Skip to content

Install the antislop skill, and fix everything its audit found - #40

Merged
Tyler-R-Kendrick merged 4 commits into
mainfrom
claude/antislop-setup-fixes-6cli8f
Sep 4, 2026
Merged

Tyler-R-Kendrick merged 4 commits into
mainfrom
claude/antislop-setup-fixes-6cli8f

Conversation

@Tyler-R-Kendrick

@Tyler-R-Kendrick Tyler-R-Kendrick commented Sep 4, 2026 •

Copy link
Copy Markdown
Owner

Installs antislop as a project skill, runs its AFTER-mode audit over the repository, and fixes every finding.

Install

Vendored through the project's own installer (cli/lib/install.mjs from the antislop repo, v3.2.3) rather than by hand, so the folder layout and the pointer block match what npx antislop-ai writes and a later run replaces the block instead of adding a second one. The three SKILL.md files are byte-identical to upstream.

  • .claude/skills/antislop/, antislop-code/, antislop-copywriting/
  • The pointer block sits between the antislop:start / antislop:end markers at the end of CLAUDE.md and AGENTS.md, appended after the existing rules rather than woven into them. The two files stay byte-identical, as they already were.

The UI, accessibility, and mobile-layout skills are left out. This is a library and a CLI with no interface for those rules to govern, and installing them would load about 600 lines of rules that can never apply.

test/support/docs.ts already scopes documentation discovery away from .claude/skills/, so the vendored SKILL.md files stay out of the snippet compile and the ADR scan. Nothing in CI had to change.

Audit

anti-slop/audit-001-2026-09-04.md records the findings, the rules that do not apply here and why, the checks that came back clean, the follow-up report, and the Delivery Gate. Four findings, all fixed:

  1. R-02, Hard Gate. 199 em dashes across 44 files: the README, CONTRIBUTING, the ADR files, every doc, every package README, and the comments throughout src/, packages/*/src/, test/, and examples/.
  2. R-02, Hard Gate. 122 spaced double hyphens across 58 files, of which 4 are the npm argument separator inside a code span and stay; the other 118 are punctuation, which the copywriting skill catches as the same construction as the em dash.
  3. R-31 and antislop-code. Eleven banner comments built from runs of hyphens.
  4. antislop-copywriting. One list item opening with a bolded header that restated the sentence after it.

Each dash was replaced by what the sentence actually wanted, following R-02's own order of preference: a period where two sentences were wearing one, a colon where an explanation follows, a comma for a tight aside, parentheses for an aside that already contains commas.

Two of the rewrites are not comments and are worth a reviewer's eye:

  • packages/grounding/src/scan.ts emits its banner into generated source, so the character was reaching a consumer's repository. Its approved snapshot moves with it.
  • The model.service error in src/providers/ax.ts carried one in its example tail. Nothing asserts past the prefix, and no snapshot holds the message.

The audit also records what was scanned and found clean, so the passes are evidenced rather than assumed: no buzzwords from R-16 or the Empty AI Vocabulary list, no unsourced statistics or fabricated claims, no decorative emoji, no end markers, no vague TODOs (the repository has no TODO or FIXME at all), and none of the copywriting rhythm tells.

The loop

Four rounds.

  • Round 1 produced the four findings above and fixed them.
  • Round 2 re-scanned and found no new rule violations, only two wrapping warts the rewrites had left: an orphaned three-word line in README.md and a 92-column line in the harness README, both in files that wrap at about 78. Both rewrapped.
  • Round 3 came back clean on every check: zero em dashes, zero en dashes and the other Unicode dashes, zero punctuation double hyphens, zero decorative separators, zero inline-header list items, zero buzzwords, zero filler phrases, zero vague TODOs, zero end markers, zero step narration, zero empty labels, no emoji anywhere, no non-ASCII in any heading.
  • Round 4, a read of the whole diff before merge, caught two defects in the audit's own work. The counts in findings 1 and 2 were grep line counts presented as occurrence counts, with one file skipped as binary because a fuzz corpus embeds a NUL byte; they are now occurrence counts measured against the pre-audit tree. And one rewrite in README.md had turned an exhaustive list into a partial one by replacing a dash with "including", where TrainingEvent is a closed union of six variants; it now reads "That is capture and store failures, and the full evolution lifecycle".

Verification

npm run check passes locally: 835 tests across 53 files, coverage thresholds held, build clean. The Stryker mutate list is untouched by anything but comments.

Two checks bound the blast radius of the rewrites, both recorded in the audit:

  • Every connective the rewrites introduced was diffed against the line it replaced. Only the one including above was new.
  • Every changed .ts file was reprinted through the TypeScript printer with comments stripped and compared against the pre-audit tree. 75 files compared, 3 differ, and those 3 are the documented string changes. Nothing else in this diff touches executable code.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FSSsWU1rVMekDbVPWLrSjb

Vendors the antislop core plus the two skills this repository has a surface
for, and writes the pointer block that loads them each session.

- .claude/skills/antislop, antislop-code, antislop-copywriting, installed
  through the project's own installer so the layout and the pointer block
  match what `npx antislop-ai` writes and a later run replaces rather than
  duplicates them.
- CLAUDE.md and AGENTS.md carry the pointer between the antislop markers,
  appended after the existing rules rather than woven into them. The two
  files are kept byte-identical, as they already were.
- The UI, accessibility, and mobile-layout skills are left out: this is a
  library and a CLI with no interface for those rules to govern.
- anti-slop/audit-001-2026-09-04.md records the AFTER-mode findings, the
  rules that do not apply here and why, and the checks that came back clean.

test/support/docs.ts already scopes documentation discovery away from
.claude/skills, so the vendored SKILL.md files stay out of the snippet
compile and the ADR scan.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FSSsWU1rVMekDbVPWLrSjb
Findings 1 and 2, R-02 (Hard Gate). The em dash is forbidden in any text,
and the copywriting skill catches the spaced double hyphen written as the
same construction. 199 of the first and 104 of the second are gone from the
prose, the documentation, and the code comments, each replaced by what the
sentence actually wanted: a period where two sentences were wearing one, a
colon where an explanation follows, a comma for a tight aside, parentheses
for an aside that already contains commas. Four double hyphens remain, all
of them the npm argument separator inside a code span.

Two of the rewrites are not comments:

- packages/grounding/src/scan.ts emits its banner into generated source, so
  the character was reaching a consumer's repository. Its approved snapshot
  moves with it.
- The model.service error in src/providers/ax.ts carried one in its example
  tail. Nothing asserts past the prefix, and no snapshot holds the message.

Finding 3, R-31 and antislop-code. Eleven banner comments built from runs of
hyphens. In conformance.ts the doc comment under each one already named its
subject, so the banner goes; in ax.test.ts and scenario.ts the label carries
real structure and only the decoration goes.

Finding 4, antislop-copywriting. One list item in docs/dx-review.md opened
with a bolded header restating the sentence after it, in a list whose other
items are plain prose.

Meaning is unchanged throughout; the edits are punctuation and, where a
sentence needed re-splitting to lose its dash, clause order. npm run check
passes: 835 tests across 53 files, coverage thresholds held, build clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FSSsWU1rVMekDbVPWLrSjb
@coderabbitai

coderabbitai Bot commented Sep 4, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: 987c008d-36ac-4dd1-b96b-839496f62124


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Round 2 re-scanned the repository after the fixes and found no new rule
violations, only two wrapping warts the rewrites had left: an orphaned
three-word line in README.md and a 92-column line in the harness README,
both in files that wrap at about 78. Both rewrapped here. Parenthesis
balance was compared against the pre-audit tree file by file and is
unchanged everywhere, so no rewrite dropped a bracket.

Round 3 came back clean on every check, so the loop ends. The audit file
now carries the follow-up report and the Delivery Gate: PASS on every
applicable item, with the visual rules recorded as not applicable and the
reason stated rather than passed by default.

npm run check: 835 tests across 53 files, coverage held, build clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FSSsWU1rVMekDbVPWLrSjb
…aning

A read of the whole diff before merging caught two defects in the audit's own
work, both of the kind it exists to catch.

The counts in findings 1 and 2 were grep line counts presented as occurrence
counts, and a file carrying an embedded NUL byte (test/support/sources.ts, a
fuzz corpus) was skipped as binary. Measured properly against the pre-audit
tree: 199 em dashes across 44 files, and 122 spaced double hyphens across 58,
of which 4 are the npm argument separator and 118 are punctuation. Reporting a
number that was not measured the way it was described is the R-17 and C-5
failure the audit is supposed to flag in other people's prose.

The README sentence describing TrainingSettings.onEvent enumerated the whole
of TrainingEvent, a closed union of six variants. Replacing its dash with
"including" turned an exhaustive list into a partial one. It now reads "That
is capture and store failures, and the full evolution lifecycle", which keeps
the dash out and the enumeration closed.

Two checks backed the rest of the review, and are recorded in the audit: every
connective the rewrites introduced was diffed against the line it replaced,
and only that one "including" was new; and every changed .ts file was
reprinted through the TypeScript printer with comments stripped and compared
against the pre-audit tree. 75 files compared, 3 differ, and those 3 are the
documented string changes. Nothing else in the diff touches executable code.

npm run check: 835 tests across 53 files, coverage held, build clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FSSsWU1rVMekDbVPWLrSjb
@Tyler-R-Kendrick
Tyler-R-Kendrick merged commit 91af43f into main Sep 4, 2026
4 checks passed
@Tyler-R-Kendrick
Tyler-R-Kendrick deleted the claude/antislop-setup-fixes-6cli8f branch September 4, 2026 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants