Not in the top 1,000 by GitHub stars
seyedehsanhadi/sloptrim
A local detector for AI-writing patterns. Scores every prose file your agent saves. Python standard library only, no network, no model.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
9b3e2efe6ab6 → 9b3e2efe6ab6
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 9b3e2efe6ab6
No earlier version was observed for comparison.
Verified commit 9b3e2efe6ab64d9b60c214ad1213b2b30bbddb27
git clone --filter=blob:none --no-checkout https://github.com/seyedehsanhadi/sloptrim.git .hotskills/seyedehsanhadi-sloptrim && git -C .hotskills/seyedehsanhadi-sloptrim checkout --detach 9b3e2efe6ab64d9b60c214ad1213b2b30bbddb27
# Copy each selected skill directory from .hotskills/seyedehsanhadi-sloptrim into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/seyedehsanhadi/sloptrim.git .hotskills/seyedehsanhadi-sloptrim && git -C .hotskills/seyedehsanhadi-sloptrim checkout --detach 9b3e2efe6ab64d9b60c214ad1213b2b30bbddb27
# Copy each selected skill directory from .hotskills/seyedehsanhadi-sloptrim into .cursor/skills/<skill-name>/Heat
6.6- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- sloptrim
/
How it works
sloptrim
When your agent uses it
Use when the user wants to humanize text, trim slop, de-AI or de-slop writing, remove AI tells, fix robotic or ChatGPT-sounding prose, or make writing sound human and natural. Also run before delivering a CV, cover letter, email, report, or essay to be sent. Removes 71 documented AI-writing patterns with a local detector, preserves numbers, names and citations, and rebuilds toward a human voice rather than a flat husk. Mode-aware, so it never fabricates voice on factual content.
What it loads into context
Frontmatter
177 tokensAlways available to the agent
SKILL.md
4,835 tokensWhen the skill is activated
Reference documents
17,855 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Silence
- Style, chosen silently
- Task
- Style profiles
- Matching the user's own voice
- Content type and voice
- Critical content preservation
- Pattern index
- Deterministic detection
- Positive style patterns
- Reference
Scripts executed separately
hooks/sloptrim-activate.jshooks/sloptrim-guard.jshooks/sloptrim-lib.jshooks/sloptrim-stats.jshooks/sloptrim-statusline.ps1hooks/sloptrim-subagent.jshooks/sloptrim-tracker.jsrecord/anim.pyrecord/session_capture.pyscripts/benchmark_frontier.pyscripts/check_docs.pyscripts/detect.pytests/conftest.pytests/interp.jstests/test_benchmark_frontier.pytests/test_catalogue.pytests/test_claims_hold.pytests/test_contract_reach.pytests/test_corpus.pytests/test_coverage.pytests/test_decisive_floors.pytests/test_detect.pytests/test_hooks.shtests/test_hooks_suite.pytests/test_no_network.pytests/test_office.pytests/test_output_reach.pytests/test_protected_prose.pytests/test_reach.pytests/test_regressions.pytests/test_skill.pytests/test_watermark.pytests/validation_corpus.py
Files
.claude-plugin/marketplace.jsonasset1,060 bytes.claude-plugin/plugin.jsonasset2,166 bytes.cursor/rules/sloptrim.mdcasset3,333 bytes.gitattributesasset45 bytes.github/workflows/test.ymlasset1,374 bytes.gitignoreasset303 bytesCHANGELOG.mddoc7,602 bytesCITATION.cffasset1,300 bytesCONTRIBUTING.mddoc4,143 bytesETHICS.mddoc2,326 bytesLICENSE.txtdoc11,347 bytesNOTICEasset5,595 bytesREADME.mddoc9,581 bytesSECURITY.mddoc2,090 bytesSKILL.mdcore21,029 bytesSKILL.mdcore21,029 bytesSKILL.mdcore21,029 bytesSKILL.mdcore21,029 bytesSKILL.mdcore21,029 bytesSKILL.mdcore21,029 bytesSKILL.mdcore21,029 bytesassets/demo-dark.svgasset59,265 bytesassets/demo-light.svgasset59,265 bytesassets/detection-dark.svgasset2,772 bytesassets/detection-light.svgasset2,772 bytesassets/sloptrim-logo-dark.svgasset47,301 bytesassets/sloptrim-logo.svgasset47,302 bytesassets/social-preview.pngasset189,282 bytesdocs/research/frontier-benchmark-results.jsonasset942 byteshooks/sloptrim-activate.jsruns2,027 byteshooks/sloptrim-guard.jsruns7,222 byteshooks/sloptrim-lib.jsruns12,473 byteshooks/sloptrim-stats.jsruns3,452 byteshooks/sloptrim-statusline.ps1runs964 byteshooks/sloptrim-subagent.jsruns1,382 byteshooks/sloptrim-tracker.jsruns11,102 bytesinstall/sloptrim-command.mddoc206 bytesrecord/anim.pyruns17,885 bytesrecord/draft.mddoc626 bytesrecord/rewrite.mddoc486 bytesrecord/session.jsonasset8,770 bytesrecord/session_capture.pyruns6,641 bytesreferences/patterns.mddoc50,218 bytesscripts/benchmark_frontier.pyruns6,142 bytesscripts/check_docs.pyruns33,756 bytesscripts/detect.pyruns98,512 bytestests/conftest.pyruns49 bytestests/interp.jsruns1,967 bytestests/test_benchmark_frontier.pyruns3,451 bytestests/test_catalogue.pyruns5,307 bytestests/test_claims_hold.pyruns4,025 bytestests/test_contract_reach.pyruns1,827 bytestests/test_corpus.pyruns201 bytestests/test_coverage.pyruns8,246 bytestests/test_decisive_floors.pyruns2,554 bytestests/test_detect.pyruns34,713 bytestests/test_hooks.shruns18,689 bytestests/test_hooks_suite.pyruns1,877 bytestests/test_no_network.pyruns2,488 bytestests/test_office.pyruns7,307 bytestests/test_output_reach.pyruns7,553 bytestests/test_protected_prose.pyruns4,309 bytestests/test_reach.pyruns2,898 bytestests/test_regressions.pyruns7,255 bytestests/test_skill.pyruns6,288 bytestests/test_watermark.pyruns6,614 bytestests/validation_corpus.pyruns6,487 bytes
Read SKILL.md
# Sloptrim
Trims AI slop from text. Works a catalogue of 71 patterns: 62 machine-checked by `scripts/detect.py`, 9 requiring semantic judgment during the rewrite. Of the 62, 50 can move the score; the rest are reported as writing advice and count for nothing. Mode-aware so it does not invent voice on factual content. Preserves facts. Rebuilds the cleaned text toward a selectable human-voice **style profile** so it does not read as a sterile de-AI'd husk.
## Silence
This skill never talks about itself. It hands back the cleaned text and nothing else.
**Never emit:** any announcement that sloptrim ran, style/mode lines, scores or reports, drafts, self-audit notes, facts-preserved lines, change lists, preambles, closing offers.
**Emit only:**
- Text given inline: the final text. Nothing before it, nothing after it.
- A file path given: rewrite the file in place, then one line - the path. Nothing else.
- Fired as a pre-delivery pass on something you were already writing (CV, cover letter, email, report, essay): just deliver the clean text. Do not mention that a pass happened.View the complete source on GitHubSkills included
- sloptrim
Repository facts
- License
- Apache-2.0
- Created
- Aug 13, 2026
- Last pushed
- Oct 22, 2026
- Forks
- 30
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 5, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 16 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedassets/demo-dark.svg:2Analysis incomplete: physical or joined line exceeds character limitassets/demo-dark.svg:1Analysis incomplete: physical or joined line exceeds character limitassets/demo-light.svg:2Analysis incomplete: physical or joined line exceeds character limitassets/demo-light.svg:1Analysis incomplete: physical or joined line exceeds character limitassets/sloptrim-logo-dark.svg:4Analysis incomplete: physical or joined line exceeds character limitassets/sloptrim-logo-dark.svg:2Analysis incomplete: physical or joined line exceeds character limitassets/sloptrim-logo-dark.svg:3Analysis incomplete: physical or joined line exceeds character limitassets/sloptrim-logo.svg:4Analysis incomplete: physical or joined line exceeds character limitassets/sloptrim-logo.svg:2Analysis incomplete: physical or joined line exceeds character limitassets/sloptrim-logo.svg:3Analysis incomplete: physical or joined line exceeds character limit
- 1 broad permissionin 1 file: SKILL.md:1
- 1 dangerous shell commandin 1 file: tests/test_detect.py:477
- 89 network referencesin 26 files: README.md:15 tests/test_detect.py:133 CHANGELOG.md:3 and 23 more
- 18 obfuscation signalsin 6 files: tests/test_watermark.py:36 tests/test_detect.py:455 references/patterns.md:614 and 3 more
- No instruction overrides
- 33 executable scriptsin 33 files: hooks/sloptrim-activate.js:1 hooks/sloptrim-guard.js:1 hooks/sloptrim-lib.js:1 and 30 more
- 11 references to secretsin 7 files: scripts/check_docs.py:21 tests/test_coverage.py:55 tests/test_regressions.py:26 and 4 more
- No requests to vote in Hot
Show all 153 signals by file
.claude-plugin/marketplace.json
.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "Seyed Ehsan Hadi", "url": "https://github.com/seyedehsanhadi" - Network accessline 6
"name": "Seyed Ehsan Hadi", "url": "https://github.com/seyedehsanhadi" }, - Network accessline 7
"url": "https://github.com/seyedehsanhadi" - Network accessline 8
}, "homepage": "https://github.com/seyedehsanhadi/sloptrim", "license": "Apache-2.0", - Network accessline 9
"homepage": "https://github.com/seyedehsanhadi/sloptrim",
.gitignore
- Access to secretsline 20
[Credential-related source omitted]
CHANGELOG.md
- Network accessline 3
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - Network accessline 125
[0.9.6]: https://github.com/seyedehsanhadi/sloptrim/releases/tag/v0.9.6 - Network accessline 126
[0.9.5]: https://github.com/seyedehsanhadi/sloptrim/releases/tag/v0.9.5 - Network accessline 127
[0.9.4]: https://github.com/seyedehsanhadi/sloptrim/releases/tag/v0.9.4 - Network accessline 128
[0.9.3]: https://github.com/seyedehsanhadi/sloptrim/releases/tag/v0.9.3 - Network accessline 129
[0.9.2]: https://github.com/seyedehsanhadi/sloptrim/releases/tag/v0.9.2 - Network accessline 130
[0.9.1]: https://github.com/seyedehsanhadi/sloptrim/releases/tag/v0.9.1 - Network accessline 131
[0.9.0]: https://github.com/seyedehsanhadi/sloptrim/releases/tag/v0.9.0
CITATION.cff
- Network accessline 6
- family-names: Hadi given-names: Seyed Ehsan repository-code: "https://github.com/seyedehsanhadi/sloptrim" - Network accessline 7
given-names: Seyed Ehsan repository-code: "https://github.com/seyedehsanhadi/sloptrim" license: Apache-2.0 - Network accessline 8
repository-code: "https://github.com/seyedehsanhadi/sloptrim"
LICENSE.txt
NOTICE
- Network accessline 14
Archivo, version 2.001, subset to the glyphs the wordmark uses Copyright 2020 The Archivo Project Authors (https://github.com/Omnibus-Type/Archivo) - Network accessline 15
Copyright 2020 The Archivo Project Authors (https://github.com/Omnibus-Type/Archivo) - Network accessline 17
http://scripts.sil.org/OFL - Network accessline 34
Copyright 2020 The Archivo Project Authors (https://github.com/Omnibus-Type/Archivo) - Network accessline 36
This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - Network accessline 38
http://scripts.sil.org/OFL
README.md
- Network accessline 15
[](https://github.com/seyedehsanhadi/sloptrim/actions/workflows/test.yml) - Network accessline 16
[](CHANGELOG.md) - Network accessline 17
[](LICENSE.txt) - Network accessline 18
[](scripts/detect.py) - Network accessline 19
[](tests/) - Network accessline 20
[](scripts/detect.py) - Network accessline 45
Install the sloptrim plugin from https://github.com/seyedehsanhadi/sloptrim - Network accessline 61
git clone https://github.com/seyedehsanhadi/sloptrim.git ~/.claude/skills/sloptrim - Network accessline 111
Sloptrim's public matched benchmark uses five separate 30-human/30-machine arms from the [Human Detectors](https://github.com/jenna-russell/human_detectors) - Network accessline 112
from the [Human Detectors](https://github.com/jenna-russell/human_detectors) - Network accessline 135
git clone https://github.com/jenna-russell/human_detectors.git - Network accessline 170
[Privacyassay](https://privacyassay.com) measures what a website can read from your - Network accessline 171
browser and scores how much of it your browser hides. Same idea applied to a different surface: run the check locally, upload nothing, report what the evidence supports and no more. Source at [seyedehsanhadi/privacyassay](https://github.com - Network accessline 173
no more. Source at [seyedehsanhadi/privacyassay](https://github.com/seyedehsanhadi/privacyassay).
SECURITY.md
- Network accessline 5
Report privately through [GitHub's advisory form](https://github.com/seyedehsanhadi/sloptrim/security/advisories/new). Please do not open a public issue for a vulnerability.
SKILL.md
- Broad permissionsline 1
Read, Write, Edit, Grep, Glob, Bash
assets/demo-dark.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 583" width="800" height="583" role="img" aria-label="A recorded session. The contract arrives at session start, again on the prompt, and again inside a subagent. A saved file scores 4
assets/demo-light.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 583" width="800" height="583" role="img" aria-label="A recorded session. The contract arrives at session start, again on the prompt, and again inside a subagent. A saved file scores 4
assets/detection-dark.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 756 330" width="756" height="330" role="img" aria-label="Public matched benchmark ROC-AUC. GPT-4o 0.943, Claude 3.5 Sonnet 0.842, o1-pro 0.877, paraphrased GPT-4o 0.832, humanized o1-pro
assets/detection-light.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 756 330" width="756" height="330" role="img" aria-label="Public matched benchmark ROC-AUC. GPT-4o 0.943, Claude 3.5 Sonnet 0.842, o1-pro 0.877, paraphrased GPT-4o 0.832, humanized o1-pro
assets/sloptrim-logo-dark.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 358 90" width="358" height="90" role="img" aria-label="sloptrim">
assets/sloptrim-logo.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 358 90" width="358" height="90" role="img" aria-label="sloptrim">
docs/research/frontier-benchmark-results.json
hooks/sloptrim-activate.js
- Executable scriptline 1
#!/usr/bin/env node
hooks/sloptrim-guard.js
- Executable scriptline 1
#!/usr/bin/env node
hooks/sloptrim-lib.js
- Executable scriptline 1
Executable file
hooks/sloptrim-stats.js
- Executable scriptline 1
#!/usr/bin/env node
hooks/sloptrim-statusline.ps1
- Executable scriptline 1
Executable file
hooks/sloptrim-subagent.js
- Executable scriptline 1
#!/usr/bin/env node
hooks/sloptrim-tracker.js
- Executable scriptline 1
#!/usr/bin/env node
record/anim.py
record/session_capture.py
references/patterns.md
- Possible obfuscationline 614
**Before:** The re<U+200B>port is ready. The invisible character inside the word came from a paste. - Network accessline 648
**Before:** See the full guide at https://example.com/guide?utm_source=chatgpt.com for details. - Network accessline 650
**After:** See the full guide at https://example.com/guide for details.
scripts/benchmark_frontier.py
- Executable scriptline 1
Executable file
scripts/check_docs.py
scripts/detect.py
tests/conftest.py
tests/interp.js
- Executable scriptline 1
Executable file
tests/test_benchmark_frontier.py
- Executable scriptline 1
Executable file
tests/test_catalogue.py
- Executable scriptline 1
Executable file
tests/test_claims_hold.py
tests/test_contract_reach.py
- Executable scriptline 1
Executable file
tests/test_corpus.py
- Executable scriptline 1
Executable file
tests/test_coverage.py
tests/test_decisive_floors.py
- Executable scriptline 1
Executable file - Network accessline 48
for text in ( "Great question! " + HUMAN, HUMAN + " See https://example.com/p?utm_source=chatgpt.com for detail.", - Network accessline 49
"Great question! " + HUMAN, HUMAN + " See https://example.com/p?utm_source=chatgpt.com for detail.", ): - Network accessline 50
HUMAN + " See https://example.com/p?utm_source=chatgpt.com for detail.", - Network accessline 56
metrics = detector().scan( "Please see the report [Your Name] here: " "https://example.com?utm_source=chatgpt.com citeturn0search0" - Network accessline 57
"Please see the report [Your Name] here: " "https://example.com?utm_source=chatgpt.com citeturn0search0" )["_metrics"] - Network accessline 58
"https://example.com?utm_source=chatgpt.com citeturn0search0"
tests/test_detect.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 133
PLACEHOLDER_SAMPLE = "Reach out to [Your Name] at [INSERT EMAIL] before the demo." REF_MARKUP_SAMPLE = "Revenue rose oai_citation last year and citeturn0search2 confirms it." UTM_SAMPLE = "Full writeup at https://example.com/post?utm_source - Network accessline 134
REF_MARKUP_SAMPLE = "Revenue rose oai_citation last year and citeturn0search2 confirms it." UTM_SAMPLE = "Full writeup at https://example.com/post?utm_source=chatgpt.com today." UTM_TRAILING_PERIOD = "Read the rest at https://x.com/a?utm_so - Network accessline 135
UTM_SAMPLE = "Full writeup at https://example.com/post?utm_source=chatgpt.com today." - Network accessline 136
UTM_TRAILING_PERIOD = "Read the rest at https://x.com/a?utm_source=chatgpt.com." - Network accessline 137
UTM_DIFF_DOMAIN = "Visit https://x.com/a?utm_source=chatgpt.com.au for the AU site." - Possible obfuscationline 455
family = "\U0001f468<U+200D>\U0001f469<U+200D>\U0001f467<U+200D>\U0001f466" - Possible obfuscationline 466
if run_clean("Clean prose.<U+200B>\U000e0041") != "Clean prose.": - Dangerous shell operationline 477
rm = run_detect(REF_MARKUP_SAMPLE) - Network accessline 598
leaky = ("Please see the report [Your Name] here: " "https://example.com?utm_source=chatgpt.com citeturn0search0") - Network accessline 599
"https://example.com?utm_source=chatgpt.com citeturn0search0") - Network accessline 665
if "63_placeholder_text" in run_detect( "Use [RAID](https://github.com/liamdugan/raid), licensed [MIT][1]."): - Network accessline 666
"Use [RAID](https://github.com/liamdugan/raid), licensed [MIT][1]."):
tests/test_hooks.sh
- Executable scriptline 1
#!/usr/bin/env bash
tests/test_hooks_suite.py
- Executable scriptline 1
Executable file
tests/test_no_network.py
tests/test_office.py
- Executable scriptline 1
Executable file - Network accessline 20
W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" - Network accessline 21
A = "http://schemas.openxmlformats.org/drawingml/2006/main" - Network accessline 22
P = "http://schemas.openxmlformats.org/spreadsheetml/2006/main" - Network accessline 93
z.writestr( "chapter.xhtml", '<?xml version="1.0"?><html xmlns="http://www.w3.org/1999/xhtml">' - Network accessline 94
"chapter.xhtml", '<?xml version="1.0"?><html xmlns="http://www.w3.org/1999/xhtml">' "<body>%s</body></html>" % body, - Network accessline 95
'<?xml version="1.0"?><html xmlns="http://www.w3.org/1999/xhtml">'
tests/test_output_reach.py
- Executable scriptline 1
Executable file - Access to secretsline 33
[Credential-related source omitted] - Network accessline 119
assert '1_ai_vocabulary' in detect.scan(r'\$10. ' + SLOP,syntax='latex') assert '1_ai_vocabulary' in detect.scan(r'$$x\\$$ ' + SLOP,syntax='latex') assert '1_ai_vocabulary' in detect.scan(r'\href{https://example.org}{'+SLOP+'}',synt - Network accessline 121
assert '1_ai_vocabulary' in detect.scan(r'\href{https://example.org}{'+SLOP+'}',syntax='latex') - Network accessline 128
def test_docx_marked_code_is_excluded_without_mutating_the_document(tmp_path, properties): p=tmp_path/'code.docx' xml=('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">' - Network accessline 129
p=tmp_path/'code.docx' xml=('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">' '<w:body><w:p>'+properties+'<w:t>'+escape(SLOP)+' a\u200bb</w:t></w:r></w:p>' - Network accessline 130
xml=('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">' - Network accessline 142
def test_docx_monospace_manuscript_is_still_readable(tmp_path): p=tmp_path/'manuscript.docx' xml=('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">' - Network accessline 143
p=tmp_path/'manuscript.docx' xml=('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">' '<w:body><w:p><w:r><w:rPr><w:rFonts w:ascii="Courier New"/></w:rPr>' - Network accessline 144
xml=('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
tests/test_protected_prose.py
- Executable scriptline 1
Executable file
tests/test_reach.py
- Executable scriptline 1
Executable file
tests/test_regressions.py
tests/test_skill.py
- Executable scriptline 1
#!/usr/bin/env python3
tests/test_watermark.py
- Executable scriptline 1
Executable file - Possible obfuscationline 36
("zero-width space in English", "The pump<U+200B>moves 40 litres."), - Possible obfuscationline 37
("zero-width non-joiner between Latin letters", "The pum<U+200C>p moves."), - Possible obfuscationline 38
("zero-width joiner between Latin letters", "The pum<U+200D>p moves."), - Possible obfuscationline 39
("word joiner", "The pump<U+2060>moves 40 litres."), - Possible obfuscationline 40
("byte-order mark mid-text", "The pump<U+FEFF>moves 40 litres."), - Possible obfuscationline 41
("left-to-right mark with no RTL", "The pump<U+200E>moves 40 litres."), - Possible obfuscationline 44
("variation selector with no glyph base", "Report ready<U+FE00> for review."), - Possible obfuscationline 49
("interlinear annotation", "The pump<U+FFF9>moves<U+FFFA>40<U+FFFB> litres."), - Possible obfuscationline 58
("emoji joined family", "We shipped \U0001f468<U+200D>\U0001f469<U+200D>\U0001f467 today."), - Possible obfuscationline 62
("Devanagari joiner", "क्<U+200D>ष in Hindi."), - Possible obfuscationline 64
("Thai zero-width word breaks", "สวัสดี<U+200B>ครับ"), - Possible obfuscationline 69
("soft hyphen inside a word", "Do<U+00AD>nau<U+00AD>dampf<U+00AD>schiff"),
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 3 facts
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionrecord/anim.py:325High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionrecord/session_capture.py:37High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/detect.py:2202High confidence
Hidden characters: 5 facts
- Joiner U+200C outside an emoji or a script that needs it, in codescripts/detect.py:694High confidence
- Joiner U+200D outside an emoji or a script that needs it, in codetests/test_detect.py:455High confidence
- Joiner U+200C outside an emoji or a script that needs it, in codetests/test_watermark.py:37High confidence
- Joiner U+200D outside an emoji or a script that needs it, in codetests/test_watermark.py:38High confidence
- Joiner U+200D outside an emoji or a script that needs it, in codetests/test_watermark.py:58High confidence
Signal confidence: 127 facts
- Network access in prose of documentationCHANGELOG.md:3Low confidence
- Network access in prose of documentationCHANGELOG.md:125Low confidence
- Network access in prose of documentationCHANGELOG.md:126Low confidence
- Network access in prose of documentationCHANGELOG.md:127Low confidence
- Network access in prose of documentationCHANGELOG.md:128Low confidence
- Network access in prose of documentationCHANGELOG.md:129Low confidence
- Network access in prose of documentationCHANGELOG.md:130Low confidence
- Network access in prose of documentationCHANGELOG.md:131Low confidence
- Network access in prose of documentationLICENSE.txt:2Low confidence
- Network access in prose of documentationLICENSE.txt:4Low confidence
- Network access in prose of documentationLICENSE.txt:196Low confidence
- Network access in prose of documentationREADME.md:15Low confidence
- Network access in prose of documentationREADME.md:16Low confidence
- Network access in prose of documentationREADME.md:17Low confidence
- Network access in prose of documentationREADME.md:18Low confidence
- Network access in prose of documentationREADME.md:19Low confidence
- Network access in prose of documentationREADME.md:20Low confidence
- Network access in code of documentationREADME.md:45Low confidence
- Network access in code of documentationREADME.md:61Low confidence
- Network access in prose of documentationREADME.md:111Low confidence
- Network access in prose of documentationREADME.md:112Low confidence
- Network access in code of documentationREADME.md:135Low confidence
- Network access in prose of documentationREADME.md:170Low confidence
- Network access in prose of documentationREADME.md:171Low confidence
- Network access in prose of documentationREADME.md:173Low confidence
- Network access in prose of documentationSECURITY.md:5Low confidence
- Broad permissions in the frontmatter of the SKILL.mdSKILL.md:1High confidence
- Executable script in code of a file that runshooks/sloptrim-activate.js:1High confidence
- Executable script in code of a file that runshooks/sloptrim-guard.js:1High confidence
- Executable script in a comment of a file that runshooks/sloptrim-lib.js:1Low confidence
- Executable script in code of a file that runshooks/sloptrim-stats.js:1High confidence
- Executable script in a comment of a file that runshooks/sloptrim-statusline.ps1:1Low confidence
- Executable script in code of a file that runshooks/sloptrim-subagent.js:1High confidence
- Executable script in code of a file that runshooks/sloptrim-tracker.js:1High confidence
- Executable script in prose of a file that runsrecord/anim.py:1Low confidence
- Network access in code of a file that runsrecord/anim.py:325High confidence
- Executable script in prose of a file that runsrecord/session_capture.py:1Low confidence
- Network access in code of a file that runsrecord/session_capture.py:37High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuerecord/session_capture.py:77Low confidence
- Possible obfuscation in prose of documentationreferences/patterns.md:614Low confidence
- Network access in prose of documentationreferences/patterns.md:648Low confidence
- Network access in prose of documentationreferences/patterns.md:650Low confidence
- Executable script in prose of a file that runsscripts/benchmark_frontier.py:1Low confidence
- Executable script in prose of a file that runsscripts/check_docs.py:1Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/check_docs.py:21Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/check_docs.py:178Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/check_docs.py:233Low confidence
- Executable script in code of a file that runsscripts/detect.py:1High confidence
- Possible obfuscation in code of a file that runsscripts/detect.py:694High confidence
- Network access in code of a file that runsscripts/detect.py:2202High confidence
and 77 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Native | Path .cursor/rules/sloptrim.mdc | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.