Skip to content

feat(patterns): add Claude 5.5 tell and hidden-character packs - #35

Merged
yannelli merged 2 commits into
mainfrom
feat/claude-tells-packs
Oct 8, 2026
Merged

yannelli merged 2 commits into
mainfrom
feat/claude-tells-packs

Conversation

@yannelli

@yannelli yannelli commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Behavior

Adds three aiWriting categories. claude-tells (presets default, ryan, technical, all) flags Opus 5.5 and Sonnet 5.5 phrasing such as the doc admits it, Existing bug, not a regression, on purpose, quietly, a closing Do you want me to ...?, and branch names in backticks. british-spelling (presets ryan, all) flags forms such as behaviour and labelled. hidden-characters (presets default, ryan, technical, git, all) flags zero-width, tag, and bidi characters, U+2011, U+202F, and chat citation residue.

detect packs now get ctx.raw, the span before code spans and URLs are blanked, with matching offsets. The backtick check reads it.

ai-attribution now flags the Claude-Session, Made-with: Cursor, and Agent-Logs-Url trailers. Four notes and one fixture that the new rows flag are reworded, and the docs list 47 categories.

Evidence

The rows were measured on 1.29M words of Opus 5.5 Claude Code replies against 1.13M words of npm READMEs and 87K words of commit messages from before 2023. The phrase rows fire 0.64 times per 10,000 words in the replies and 0.04 in the READMEs. Anthropic's text watermark adds no characters, so no pack can detect it.

Checks

node scripts/check.mjs, node --test test/*.test.mjs (199 pass), and node plugins/concise/test/run-tests.mjs (1,895 pass) ran with NODE_V8_COVERAGE set. node scripts/coverage.mjs reports 100% line coverage. render-patterns.mjs --check and validate-packs.mjs (50 packs, 421 patterns) pass. The new rows were also checked through the concise MCP concise_check_text tool in every scope.

No migration. A project that writes British English or asks before every test run can list british-spelling or closing-offer in excludePacks.

stripCode blanks code spans, fences, HTML comments, and URLs before
packs run, so no pack could see a backticked word. proseSpans now
keeps the original span as raw, and styleFindings passes it to
scanAiWriting as ctx.raw. Offsets match the scanned text.
Add three aiWriting categories, measured on 1.29M words of Opus 5.5
Claude Code replies against npm READMEs and pre-2023 commits:

- claude-tells: artifact verbs, status-label tails, size words, vague
  path, trailing tags, user-note asides, earns its keep, a closing
  offer (closing-offer.json), and backticked branch names
  (backtick-branches.mjs, reads ctx.raw). Presets default, ryan,
  technical, all.
- british-spelling: -our, -lled, -re, -ise, -yse forms and a few
  words. Presets ryan, all.
- hidden-characters: zero-width, tag, and bidi characters, soft and
  non-breaking hyphens, narrow no-break spaces, chat citation residue.
  Presets default, ryan, technical, git, all.

ai-attribution now flags the Claude-Session, Made-with: Cursor, and
Agent-Logs-Url trailers. Four notes and one fixture that the new rows
flag are reworded. Docs list 47 categories.
@yannelli
yannelli merged commit e0cf3a0 into main Oct 8, 2026
2 checks passed
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.

1 participant