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

Compare on GitHub

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.

Compare on GitHub

View on GitHubAdd to my skills

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>/
417GitHub stars
6stars in 7 days
1skill in this repository
6commits in 30 days

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

Oct 25, 2026Nov 6, 2026417

30-day change not yet available: not enough history.

Individual skills in this repository

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 tokens

Always available to the agent

SKILL.md

4,835 tokens

When the skill is activated

Reference documents

17,855 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Silence
  2. Style, chosen silently
  3. Task
  4. Style profiles
  5. Matching the user's own voice
  6. Content type and voice
  7. Critical content preservation
  8. Pattern index
  9. Deterministic detection
  10. Positive style patterns
  11. Reference

Scripts executed separately

  • hooks/sloptrim-activate.js
  • hooks/sloptrim-guard.js
  • hooks/sloptrim-lib.js
  • hooks/sloptrim-stats.js
  • hooks/sloptrim-statusline.ps1
  • hooks/sloptrim-subagent.js
  • hooks/sloptrim-tracker.js
  • record/anim.py
  • record/session_capture.py
  • scripts/benchmark_frontier.py
  • scripts/check_docs.py
  • scripts/detect.py
  • tests/conftest.py
  • tests/interp.js
  • tests/test_benchmark_frontier.py
  • tests/test_catalogue.py
  • tests/test_claims_hold.py
  • tests/test_contract_reach.py
  • tests/test_corpus.py
  • tests/test_coverage.py
  • tests/test_decisive_floors.py
  • tests/test_detect.py
  • tests/test_hooks.sh
  • tests/test_hooks_suite.py
  • tests/test_no_network.py
  • tests/test_office.py
  • tests/test_output_reach.py
  • tests/test_protected_prose.py
  • tests/test_reach.py
  • tests/test_regressions.py
  • tests/test_skill.py
  • tests/test_watermark.py
  • tests/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 bytes
  • CHANGELOG.mddoc7,602 bytes
  • CITATION.cffasset1,300 bytes
  • CONTRIBUTING.mddoc4,143 bytes
  • ETHICS.mddoc2,326 bytes
  • LICENSE.txtdoc11,347 bytes
  • NOTICEasset5,595 bytes
  • README.mddoc9,581 bytes
  • SECURITY.mddoc2,090 bytes
  • SKILL.mdcore21,029 bytes
  • SKILL.mdcore21,029 bytes
  • SKILL.mdcore21,029 bytes
  • SKILL.mdcore21,029 bytes
  • SKILL.mdcore21,029 bytes
  • SKILL.mdcore21,029 bytes
  • SKILL.mdcore21,029 bytes
  • assets/demo-dark.svgasset59,265 bytes
  • assets/demo-light.svgasset59,265 bytes
  • assets/detection-dark.svgasset2,772 bytes
  • assets/detection-light.svgasset2,772 bytes
  • assets/sloptrim-logo-dark.svgasset47,301 bytes
  • assets/sloptrim-logo.svgasset47,302 bytes
  • assets/social-preview.pngasset189,282 bytes
  • docs/research/frontier-benchmark-results.jsonasset942 bytes
  • hooks/sloptrim-activate.jsruns2,027 bytes
  • hooks/sloptrim-guard.jsruns7,222 bytes
  • hooks/sloptrim-lib.jsruns12,473 bytes
  • hooks/sloptrim-stats.jsruns3,452 bytes
  • hooks/sloptrim-statusline.ps1runs964 bytes
  • hooks/sloptrim-subagent.jsruns1,382 bytes
  • hooks/sloptrim-tracker.jsruns11,102 bytes
  • install/sloptrim-command.mddoc206 bytes
  • record/anim.pyruns17,885 bytes
  • record/draft.mddoc626 bytes
  • record/rewrite.mddoc486 bytes
  • record/session.jsonasset8,770 bytes
  • record/session_capture.pyruns6,641 bytes
  • references/patterns.mddoc50,218 bytes
  • scripts/benchmark_frontier.pyruns6,142 bytes
  • scripts/check_docs.pyruns33,756 bytes
  • scripts/detect.pyruns98,512 bytes
  • tests/conftest.pyruns49 bytes
  • tests/interp.jsruns1,967 bytes
  • tests/test_benchmark_frontier.pyruns3,451 bytes
  • tests/test_catalogue.pyruns5,307 bytes
  • tests/test_claims_hold.pyruns4,025 bytes
  • tests/test_contract_reach.pyruns1,827 bytes
  • tests/test_corpus.pyruns201 bytes
  • tests/test_coverage.pyruns8,246 bytes
  • tests/test_decisive_floors.pyruns2,554 bytes
  • tests/test_detect.pyruns34,713 bytes
  • tests/test_hooks.shruns18,689 bytes
  • tests/test_hooks_suite.pyruns1,877 bytes
  • tests/test_no_network.pyruns2,488 bytes
  • tests/test_office.pyruns7,307 bytes
  • tests/test_output_reach.pyruns7,553 bytes
  • tests/test_protected_prose.pyruns4,309 bytes
  • tests/test_reach.pyruns2,898 bytes
  • tests/test_regressions.pyruns7,255 bytes
  • tests/test_skill.pyruns6,288 bytes
  • tests/test_watermark.pyruns6,614 bytes
  • tests/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 GitHub

Skills 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 shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • assets/demo-dark.svg:2 Analysis incomplete: physical or joined line exceeds character limit
  • assets/demo-dark.svg:1 Analysis incomplete: physical or joined line exceeds character limit
  • assets/demo-light.svg:2 Analysis incomplete: physical or joined line exceeds character limit
  • assets/demo-light.svg:1 Analysis incomplete: physical or joined line exceeds character limit
  • assets/sloptrim-logo-dark.svg:4 Analysis incomplete: physical or joined line exceeds character limit
  • assets/sloptrim-logo-dark.svg:2 Analysis incomplete: physical or joined line exceeds character limit
  • assets/sloptrim-logo-dark.svg:3 Analysis incomplete: physical or joined line exceeds character limit
  • assets/sloptrim-logo.svg:4 Analysis incomplete: physical or joined line exceeds character limit
  • assets/sloptrim-logo.svg:2 Analysis incomplete: physical or joined line exceeds character limit
  • assets/sloptrim-logo.svg:3 Analysis incomplete: physical or joined line exceeds character limit
Show all 153 signals by file

.claude-plugin/marketplace.json

  • Network accessline 3
    "owner": {     "name": "Seyed Ehsan Hadi",     "url": "https://github.com/seyedehsanhadi"
  • Network accessline 4
    "name": "Seyed Ehsan Hadi",     "url": "https://github.com/seyedehsanhadi"   },
  • Network accessline 5
    "url": "https://github.com/seyedehsanhadi"

.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

  • Network accessline 2
    Apache License                            Version 2.0, January 2004                         http://www.apache.org/licenses/
  • Network accessline 4
    http://www.apache.org/licenses/
  • Network accessline 196
    http://www.apache.org/licenses/LICENSE-2.0

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
    [![test](https://github.com/seyedehsanhadi/sloptrim/actions/workflows/test.yml/badge.svg)](https://github.com/seyedehsanhadi/sloptrim/actions/workflows/test.yml)
  • Network accessline 16
    [![Version](https://img.shields.io/badge/version-0.9.6-blue)](CHANGELOG.md)
  • Network accessline 17
    [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE.txt)
  • Network accessline 18
    [![Dependencies](https://img.shields.io/badge/dependencies-none-blue)](scripts/detect.py)
  • Network accessline 19
    [![Tests](https://img.shields.io/badge/tests-283-blue)](tests/)
  • Network accessline 20
    [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](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

  • Network accessline 1
    {   "dataset_source": "https://github.com/jenna-russell/human_detectors",
  • Network accessline 2
    "dataset_source": "https://github.com/jenna-russell/human_detectors",

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

  • Executable scriptline 1
    Executable file
  • Network accessline 325
    o = ['<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 %d %.0f" width="%d" '

record/session_capture.py

  • Executable scriptline 1
    Executable file
  • Network accessline 37
    W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
  • Access to secretsline 77
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]
  • Access to secretsline 233
    [Credential-related source omitted]

scripts/detect.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 694
    _INWORD_ZERO_WIDTH = re.compile(r"(?<=[A-Za-z])[<U+200B><U+200C><U+200D><U+2060><U+FEFF>]+(?=[A-Za-z])")
  • Network accessline 2202
    w = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"

tests/conftest.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 3
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Network accessline 17
    def epub(path, body, decl='xmlns="http://www.w3.org/1999/xhtml"'):
  • Possible obfuscationline 59
    past_the_window = "word " * 200000 + "<U+200B><U+200B><U+200B>"

tests/test_contract_reach.py

  • Executable scriptline 1
    Executable file

tests/test_corpus.py

  • Executable scriptline 1
    Executable file

tests/test_coverage.py

  • Executable scriptline 1
    Executable file
  • Network accessline 36
    W = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
  • Access to secretsline 55
    [Credential-related source omitted]
  • Access to secretsline 91
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Network accessline 63
    for sample in ("import urllib.request", "const r = await fetch(url)",
  • Network accessline 64
    "Invoke-WebRequest -Uri $u", "curl -sSL https://example.com",

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 140
    [Credential-related source omitted]

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"),

tests/validation_corpus.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 128
    smug = detect(human[:40] + "<U+200B>" + human[40:])["_metrics"]

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
Signal confidence: 127 facts

and 77 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorNativePath .cursor/rules/sloptrim.mdc.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.