Imported from numen-tech/slopornot (
AGENTS.md). Install upstream withnpx skills add numen-tech/slopornot. Copyright stays with the author.
SlopOrNot: agent guide
Brief for AI coding agents (Claude Code, Codex, Cursor, Gemini CLI, Aider) editing this repo. The runtime skill itself is skills/agentic-humanizer/SKILL.md; this file is for agents working on the repo, not running the skill.
What this repo is
SlopOrNot is a plugin bundle for assistant workflows built around Slop or Not.
It ships two skills. agentic-humanizer runs a full 5-pass humanization
workflow with saved preferences and optional voice matching. It works without
Slop or Not; Slop or Not Pro only adds on-device AI detector scoring,
readability checks, Text Cleanup before and after humanization, and cleanup
stats. slop-check is a
self-contained one-shot router for the same on-device tools (text and image
detection, readability, cleanup, status) with no interview and no harness
routing files.
Layout
| Path | Role |
|---|---|
skills/agentic-humanizer/SKILL.md |
Self-contained agentic-humanizer orchestrator. Steps 1-7 (harness detect, profile commands, preferences, voice, optional Slop probe, loop, output). |
skills/agentic-humanizer/harnesses/{claude-code,codex,cursor,gemini-cli,opencode,generic}.md |
Per-harness interview protocols. Edit only the file for the harness you're targeting. |
skills/agentic-humanizer/references/patterns.md |
33-pattern rewrite vocabulary. |
skills/agentic-humanizer/references/detection-guidance.md |
English-only false-positive guard: what not to flag, and human-writing signals to preserve. Loaded on English runs alongside patterns.md. |
skills/agentic-humanizer/references/supplemental-ai-tells.md |
SlopOrNot-authored supplemental AI-tell checks inspired by Wikipedia's field guide. Language-agnostic S1 to S8 concepts, loaded on every run. |
skills/agentic-humanizer/references/multilingual.md |
Multilingual readability registry: supported languages, BCP-47 variants, readability formula per language, reading-level band mapping, code normalization (Norwegian Bokmal to nb). Single source of truth for non-English runs. |
skills/agentic-humanizer/references/profile-resolution.md |
Decision table for SKILL.md Step 3 rule 3: how a saved profile resolves against an unambiguously detected different language (language, variant, reading level, tone, length, English target_grade). Loaded only on the saved-profile-versus-detected-language path. |
skills/agentic-humanizer/references/ai-tells/<code>.md |
Per-language AI-tell catalogues (es, de, it, sv, da, no). Loaded when the resolved language is not English. no.md covers both Bokmal and Nynorsk. |
skills/agentic-humanizer/references/per-iteration-strategies.md |
The 5-iteration cookbook for Core mode and Slop or Not Pro, plus mid-flight Pro-gate fallback. |
skills/agentic-humanizer/references/voice-fingerprint.md |
Voice sample policy, fingerprint schema, extraction prompt, cache rules, and loop injection contracts. |
skills/agentic-humanizer/references/slop-{cli,mcp}-setup.md |
User-facing install guides. |
skills/agentic-humanizer/examples/sample-ai-text.md |
Smoke-test fixture (English). |
skills/agentic-humanizer/examples/sample-ai-text-de.md |
German smoke-test fixture (non-English path). |
skills/agentic-humanizer/README.md |
Dedicated Agentic Humanizer README for users and search indexing. |
skills/slop-check/SKILL.md |
Self-contained slop-check orchestrator. Steps 1-5 (identify op, resolve backend MCP/CLI/app-bundle fallback, run, format, fallback). |
skills/slop-check/references/slop-tools.md |
Full CLI + MCP tool surface for slop-check: params, flags, JSON field paths, score normalization, Pro-gating. |
skills/slop-check/references/slop-setup.md |
slop-check install, Pro unlock, app-bundle fallback, MCP/CLI registration. |
skills/slop-check/README.md |
Dedicated Slop Check README for users and search indexing. |
claude-skills/agentic-humanizer/SKILL.md |
Hand-authored Claude Desktop variant (no harness routing; built-in ask_user_input_v0 interview). Canonical source for the Desktop build. |
claude-skills/agentic-humanizer/README.md |
Hand-authored Claude Desktop install/use guide. |
claude-skills/agentic-humanizer/{references,examples}/ |
Copied verbatim from skills/agentic-humanizer/ by make -C claude-skills build. Do not hand-edit. |
claude-skills/Makefile |
Builds and zips the Claude Desktop bundle (build, zip, check, clean). |
plugins/codex/slopornot/ |
Generated Codex plugin payload. Do not edit synced skill files here by hand. |
plugins/claude/slopornot/ |
Generated Claude Code plugin payload. Do not edit synced skill files here by hand. |
.agents/plugins/marketplace.json |
Codex repo marketplace for the slopornot plugin. |
.claude-plugin/marketplace.json |
Claude Code marketplace for the slopornot plugin. |
scripts/check-{frontmatter,links}.mjs |
Lint scripts run by CI. |
scripts/sync-plugins.mjs |
Copies canonical runtime files into plugin payloads, with --check drift detection. |
scripts/check-plugin-packaging.mjs |
Validates plugin manifests, marketplaces, required files, and sync state. |
scripts/check-versions.mjs |
Verifies the six source version fields agree. CI gate. |
scripts/version-fields.mjs |
Shared source-version-field list and read/write helpers for check-versions.mjs and prepare-release.mjs. |
scripts/prepare-release.mjs |
Release-prep transform: promotes [Unreleased], bumps all version fields, regenerates payloads. |
scripts/draft-highlights.mjs |
Optional DeepSeek-drafted release-notes Highlights, injected atop the promoted CHANGELOG section during prepare. Non-blocking: no-op without DEEPSEEK_API_KEY. |
Makefile |
make dist builds both release zips: claude-skills/agentic-humanizer-claude-desktop.zip and agentic-humanizer-chatgpt.zip. |
.github/workflows/release-{prepare,publish}.yml |
Two-phase release automation: dispatch opens a release PR (with optional DeepSeek highlights); merge tags and uploads the Desktop and ChatGPT zips. |
.github/workflows/prompt-review.yml |
Advisory prompt-quality review on prompt-surface PRs. Not a required check. |
Critical rules
-
Pre-PR gate, these commands must pass:
npx markdownlint-cli2@0.18.1 "**/*.md" "#node_modules" "#WARP.md" node scripts/check-frontmatter.mjs node scripts/check-links.mjs node scripts/sync-plugins.mjs --check node scripts/check-plugin-packaging.mjs node scripts/check-versions.mjs node --test scripts/*.test.mjs make -C claude-skills checkGitHub also requires
lintandRun zizmoron every PR. Do not add PR path filters to required workflows unless the repository ruleset is updated in the same change.Releases are automated: run the "Prepare release" workflow with a version, review and merge the
release/v*PR it opens, and the publish workflow tags, creates the GitHub Release, and runsmake distto attachagentic-humanizer-claude-desktop.zipandagentic-humanizer-chatgpt.zip. The prepare workflow needs theRELEASE_APP_TOKENrepo secret (a GitHub App or fine-grained PAT with contents and pull-requests write). It also honors an optionalDEEPSEEK_API_KEYsecret: when set, prepare auto-drafts a Highlights summary atop the release notes for review; when absent, the release proceeds unchanged. -
No em-dashes in
README.md,SKILL.md,CHANGELOG.md,AGENTS.md, commits, tag annotations, or release notes. Use commas, colons, or parentheses. The user-facing surface of a humanizer can't credibly ship em-dash-laden copy. (Inherited em-dashes inskills/agentic-humanizer/references/andskills/agentic-humanizer/harnesses/predate the rule and are getting cleaned up incrementally; do not introduce new ones.) -
Change
skills/agentic-humanizer/references/patterns.mddeliberately. The 33-pattern catalogue is the rewrite vocabulary the whole skill depends on; edit it intentionally and keep the numbering and format consistent. -
Conventional Commits are required, not optional. Format:
type(scope): subject. Subject is imperative, lowercase, no trailing period. Allowed types and their changelog mapping:Type Changelog section Use for featAdded new behavior, new harness, new reference doc fixFixed bug fixes in scripts, lint rules, runtime logic perfChanged measurable speed or token wins refactorChanged restructuring without behavior change docsChanged (or omit) README,AGENTS.md,CHANGELOG,CONTRIBUTINGeditsbuild/ci(omit) workflow, lint config, release tooling test(omit) adding or fixing tests and fixtures chore(omit) housekeeping, dependency bumps revertmatches reverted type use revert: <original subject>Use
!after the type/scope or aBREAKING CHANGE:footer for breaking changes (these always land in changelog under "Changed" with a "BREAKING" prefix). Common scopes:harnesses,references,docs,ci,chore,scripts. There is no automated commit-to-changelog generator: hand-write each user-visible change intoCHANGELOG.md[Unreleased]under the mapped section, and the release script promotes that section verbatim. An entry you forget to add never appears in the next release notes. -
Doc-sync is part of the change, not a follow-up. Any PR that changes runtime behavior MUST update every affected surface in the same commit (or stack of commits). Use this matrix:
What you changed Update these in the same PR Runtime constant ( AI_THRESHOLD,MAX_ITER, grade tolerance)skills/agentic-humanizer/SKILL.md,README.md,CHANGELOG.md(Unreleased)Interview shape, question count, or order skills/agentic-humanizer/SKILL.md,README.md, everyskills/agentic-humanizer/harnesses/*.md,CHANGELOG.mdOutput format (Step 7 structure, fields, ordering) skills/agentic-humanizer/SKILL.md,README.md,CHANGELOG.mdInline-override grammar or saved-profile schema skills/agentic-humanizer/SKILL.md,README.md,CHANGELOG.mdVoice fingerprint behavior, schema, or extraction prompt skills/agentic-humanizer/SKILL.md,README.md,skills/agentic-humanizer/references/voice-fingerprint.md,skills/agentic-humanizer/references/per-iteration-strategies.md,CHANGELOG.mdNew or renamed reference doc under skills/agentic-humanizer/references/skills/agentic-humanizer/SKILL.md(links),AGENTS.md(Layout table),scripts/check-links.mjsif it hardcodes pathsSupported languages, variants, readability kinds, or band mapping in references/multilingual.mdskills/agentic-humanizer/SKILL.md(Steps 3/6/7), all 6harnesses/*.md,references/per-iteration-strategies.md,claude-skills/agentic-humanizer/SKILL.md,skills/slop-check/SKILL.md,skills/slop-check/references/slop-tools.md,README.md,CHANGELOG.mdPer-language tell file ( references/ai-tells/<code>.md) or a new fixtureAGENTS.md(Layout table),CHANGELOG.md; then runnode scripts/sync-plugins.mjsandmake -C claude-skills build(the packaging check derives its file list fromskills/, so no script edit is needed)Harness routing (added, removed, renamed harness) skills/agentic-humanizer/SKILL.mdStep 1,skills/agentic-humanizer/harnesses/<name>.md,README.md,CHANGELOG.mdLint rules, CI gates, release scripts AGENTS.md(Critical rules § 1),CONTRIBUTING.md,CHANGELOG.mdSlop CLI / MCP install steps skills/agentic-humanizer/references/slop-cli-setup.mdorskills/agentic-humanizer/references/slop-mcp-setup.md,README.md,CHANGELOG.mdAnything the Desktop fork mirrors (interview shape, output format, runtime constants, inline-override grammar, voice behavior) claude-skills/agentic-humanizer/SKILL.mdandclaude-skills/agentic-humanizer/README.md(hand-authored; port the change, keep harness routing out), thenmake -C claude-skillsIf you can't tell whether a doc is affected, grep it for the symbol you changed. Stale runtime docs mislead users and corrupt the changelog.
-
Every user-visible change appends to
CHANGELOG.md§[Unreleased]under the matching Keep-a-Changelog heading (Added,Changed,Fixed,Removed,Deprecated,Security). Internal-only changes (ci,build,test,chore) skip the changelog. The release script promotes[Unreleased]to a versioned section; missing entries can't be recovered after the tag. -
Don't add new per-iteration strategies that replace the 5-iteration schedule. New strategies must compose with it. Open an issue first.
-
Harness-specific instructions stay in
skills/agentic-humanizer/harnesses/<name>.md. Don't sprinkle "Claude Code users…" / "Codex users…" throughskills/agentic-humanizer/SKILL.md. -
Plugin payloads are generated distribution artifacts. Both skills are self-contained: edit canonical runtime files under
skills/agentic-humanizer/orskills/slop-check/, then runnode scripts/sync-plugins.mjs. Never hand-edit files underplugins/*/slopornot/skills/. Manifest-only changes may be made directly inside plugin folders.The Claude Desktop bundle is a separate generated artifact. Its
SKILL.mdandREADME.mdunderclaude-skills/agentic-humanizer/are hand-authored and intentionally diverge from canonical (no harness routing). Itsreferences/andexamples/are copied verbatim bymake -C claude-skills build; never hand-edit those copies. Runmake -C claude-skills checkbefore a PR to catch drift, andmake -C claude-skillsto rebuild the shippable zip.
Smoke test
/agentic-humanizer
<paste contents of skills/agentic-humanizer/examples/sample-ai-text.md>
Expect convergence by iteration 3 or 4 on the sample fixture. Output
structure must match skills/agentic-humanizer/SKILL.md Step 7.
With Slop or Not unavailable, expect the same five rewrite passes with n/a
score and grade values, no detector-convergence claim, and no Text Cleanup
summary.