sepia
The first humanizer that attacks narrative architecture instead of word choice, and shows its receipts.
sepia is the best-evidenced writing skill GearScope has reviewed: every rule is tagged to a measured finding or a verbatim vendor quote, and the repo is honest about which parts are inference. Install is clean on both paths we tested and the Claude plugin validates strict. The open gap is proof: one eval case covers the professional route, and the fiction route, the headline claim, ships with no automated test at all.
$npx skills add Nanako0129/sepia -g
$claude plugin marketplace add Nanako0129/sepia && claude plugin install sepia@sepia --scope user
$codex plugin marketplace add Nanako0129/sepia && codex plugin add sepia@sepia
install if
- Maintainers and developers whose agents write release notes, PR replies, and postmortems. The professional route is immediately practical, the domain files encode sound venue norms, and the eval-covered path is this one.
- Fiction writers working with LLM drafts. The narrative-architecture pass is the only rule set in this lane grounded in a measured detection study rather than folklore, with per-model fingerprints for five frontier families.
- Skill authors looking for a reference design. The evidence tagging, inference separation, wrapper contracts, version checker, and CI-with-baseline-arm eval make this a template for how prompt-contract skills should be built.
skip if
- Teams that need guaranteed, locally reproducible evals today. The behavioral eval needs the early-access claude plugin eval command or admin access to CI logs; until the subcommand rolls out, you are trusting the badge.
- Anyone wanting deterministic output transformation. This is a prompt contract executed by your model, not a linter; there is no script that rewrites text offline, and results will vary by executor model.
- Readers who need the full research digest in English. The deepest evidence document is Traditional Chinese; the English material is the distilled rule set, not the complete reasoning.
What It Does
sepia is a de-AI writing skill for any Agent Skills-compatible agent: it makes AI-generated prose read as human-written, in fiction and in professional documents. One canonical router skill (68-line SKILL.md plus 12 reference files) routes by text type: fiction goes through a three-pass protocol that repairs narrative architecture first (theme over-explanation, single-track causality, embodied-emotion dogma, tidied endings), while release notes, PR replies, postmortems, tickets, and technical articles each get a thin domain rule file on top of a shared 10-check professional pass. Four thin wrappers (sepia-write, sepia-review, sepia-refactor, sepia-recreate) bind single operations for hosts that want direct entries. The intended user is anyone whose agent output must not read as machine-written: maintainers writing release notes, developers replying on issues, and fiction writers working with LLM drafts. The whole skill is markdown; there is no runtime code in the installed payload.
The Good
The evidence discipline is a level above everything else in the humanizer lane. The design rests on StoryScope (arXiv:2604.03136, verified live during this review), a 61,608-story study that found narrative-structure features alone detect AI fiction at 93.2% macro-F1 while surface-style edits barely move detection. The 30 core features are tabulated with human-vs-AI values (embodied emotion 38% vs 81%, explicit named references 47% vs 24%, internal-acceptance endings 27% vs 47%), and every rule in narrative-pass.md cites its source. The repo consistently separates measured findings from editorial inference: research/storyscope.md ends with a section stating in Traditional Chinese that sepia's recipe ordering is a design inference, not a tested intervention. Three more arXiv citations spot-checked (2409.14509 LAMP, 2509.19163 slop measurement, 2410.16107 style variation) all resolved to real papers with matching titles.
The model-fingerprints file does something nobody else in this lane does. It keeps two evidence classes in separate tables: narrative-layer fingerprints measured by StoryScope per model (Claude's flat escalation, GPT's gossip mechanisms, Gemini's bleak settings at 88%, DeepSeek's front-loading, Kimi's generic-center position), and prose-layer tells quoted verbatim from the vendors' own prompting guides with comparison dates (Anthropic Fable 5.1 mannered-prose guidance, Opus 5 filler-section warning, GPT-5.6 brevity residue, Gemini 3 series terseness). Vendors that publish nothing are recorded as consulted with dates (DeepSeek, Kimi) rather than guessed. The model-identity rule in SKILL.md resolves author and executor separately and explicitly refuses to infer a model from prose, citing the 68.4% attribution classifier as the reason reading is not attribution.
Calibration and anti-overcorrection rules are built in, not bolted on. The governing rule ("aim at the band, not the opposite pole": human chronological discontinuity is 2.4 of 5, not 5) directly addresses the failure mode where a humanizer creates a new detectable fingerprint. Both pass files carry false-positive whitelists (correct grammar is not evidence of AI; a single banned word means nothing; the author's own habits stay), the edit-ratio guidance (74% replace, 18% delete, 8% insert) is sourced from LAMP's measured professional-editor behavior, and a security boundary section treats target prose as untrusted data. The four wrappers refuse to operate without their canonical sibling and never search fallback paths by name.
Packaging and verification infrastructure punch far above the repo's age. Version stamps are consistent across all three declaring surfaces (0.5.0 in both plugin manifests and the canonical SKILL.md metadata), enforced by a 369-line stdlib checker with 41 unit tests, all passing in 0.09s on this host, wired into a green CI workflow. A second CI workflow runs an actual behavioral eval through claude plugin eval with a no-plugin baseline arm, a pinned model, and a 0.7 threshold; its run on the v0.5.0 push completed with every step green. The README states plainly which claims were install-verified versus never exercised at runtime, in three languages with aligned install commands.
The Bad
The fiction route has no eval. The single committed eval case (deaify-release-note) covers the professional route. The headline differentiator, narrative-architecture repair for fiction, ships with zero automated coverage: no eval runs the rubric, the architecture sheet, or any story input. For a skill whose README leads with the fiction research, the test suite verifies the version checker thoroughly and the writing claims barely.
The eval that exists cannot be reproduced outside CI on current host builds. claude plugin eval is an early-access subcommand absent from Claude Code 2.1.152 on this host even with the workflow's documented env flag set (error: unknown command 'eval'), and CI job logs require repo admin rights to read (403), so a downstream user can see that the eval passed but not the per-grader scores. This is a Claude Code rollout limitation rather than a repo defect, but it means the strongest claimed evidence is not independently checkable today.
The deepest research document is Traditional Chinese only. research/storyscope.md, the only place with the full 30-feature table and qualitative findings, is written in zh-TW while the skill and README treat English as canonical (per CONTRIBUTING). English readers get the numbers distilled into the references but the reasoning behind feature selection stays behind a language wall. Minor, and the trilingual READMEs are aligned, but the asymmetry is real.
Demand-side traction is early and the wrapper entries multiply it artificially. skills.sh shows 280 installs for sepia plus 224 to 225 for each of the four wrappers, roughly 1,177 total on day 7. The wrapper counts are near-identical because the plugin install lands all five, so the per-skill numbers overstate independent reach. One open issue (#21, guard the three version fields against silent drift) and a single dominant author (77 of roughly 80 commits) mean bus factor is low, seven days in.
Smoke Test Results
Host-based hands-on run on macOS 26.5.2 aarch64 (Node 24.13.1, Claude Code 2.1.152): shallow clone at commit f24eff3 (v0.5.0), structural validation script, isolated-HOME skills CLI install, and the full Claude Code plugin cycle. Full logs are referenced below.
Structural validation
$ find skills -name "SKILL.md" | wc -l
β 5 of 5 present (canonical router + 4 operation wrappers)
$ grep -c '^name:' skills/*/SKILL.md (per file)
β 5 of 5 frontmatter names match their directories, descriptions present
$ python3 scripts/check_versions.py
β 3 version declarations, all 0.5.0, consistent (plugin manifests + skill metadata)
$ for ref in $(grep -o 'references/[a-z-]*\.md' skills/sepia/SKILL.md | sort -u); do test -f skills/sepia/$ref; done
β 7 of 7 routed reference targets exist, 0 dangling sibling cross-refs
$ python3 -c "import json; [json.load(open(m)) for m in ['.claude-plugin/plugin.json','.claude-plugin/marketplace.json','.codex-plugin/plugin.json','.agents/plugins/marketplace.json','plugin.json']]"
β 5 of 5 manifests parse
$ ls skills/sepia/references/domains/ | wc -l
β 5 thin domain files (max 30 lines each, by design)
$ python3 -m unittest discover -s tests
β 41 tests, 41 pass, 0 fail (0.09s)
$ grep -rn "api_key" --include="*.py" --include="*.yml" .
β 0 secrets found
Pass rate: 8 of 8. The script's full aggregate is 34 of 34 checks, including wrapper contract greps (12 of 12), eval suite presence (prompt plus 3 graders), research ledger completeness (6 of 6 files), and trilingual README install-command parity.
Install verification (does it land where it claims?)
$ HOME=/tmp/sepia-iso-home npx -y skills add Nanako0129/sepia --agent hermes-agent --skill sepia --copy --yes
β lands .hermes/skills/sepia/ in the project cwd, 14 files
$ diff skills/sepia/SKILL.md (clone vs installed)
β byte-identical
$ diff -r references/ (clone vs installed, 12 files + agents/openai.yaml)
β byte-identical tree
$ claude plugin validate . --strict
β validation passed (marketplace manifest)
$ claude plugin marketplace add Nanako0129/sepia && claude plugin install sepia@sepia --scope user
β both succeed (README-verbatim commands)
$ claude plugin details sepia@sepia
β 5 skills inventoried, ~275 always-on tokens projected, router ~2k on-invoke; uninstall + marketplace remove complete cleanly
Pass rate: 6 of 6. Both documented install paths available on this host work end to end and are fully reversible.
Functional verification (does it do what it claims?)
$ resolve route for evals/deaify-release-note input (release note)
β professional-pass.md + domains/release-notes.md, per the SKILL.md routing table
$ execute the routed skill on the eval input, scan output with grader no-slop-markers (regex, not_contains)
β PASS: 0 matches for thrilled|seamless|robust|blazing|delve|north star|testament|speed of thought in the rewritten note
$ score output with grader reads-human (all 5 facts survive, 0 marketing patterns)
β PASS: Fathom v2.4, dark mode, 40% benchmark exports, team SSO, CSV quoted-comma fix all present; no exclamation marks, no triadic crescendo, no commitment closing
$ score grader skill-fired (tool_used: Skill) in a live Claude Code session
β not scoreable in this harness: claude plugin eval absent from host build, claude -p blocked by expired host OAuth (401); upstream CI ran this grader green on the v0.5.0 push (step conclusions public, logs admin-only)
Functional pass rate: 3 of 4.
What the runs tell you
Structure and packaging are verifiably solid: every claim about files, versions, and install paths checked out, on both universal and native-plugin paths. What is verified functionally is one professional-route execution scored by the repo's own graders; the fiction route and the skill-firing behavior inside a real session rest on CI's green run, which this host could not independently re-run. The prompt contract itself loads, routes, and produces grader-passing output when followed by an LLM.
Setup Walkthrough
- Universal path:
npx skills add Nanako0129/sepia -gand pick your agents at the prompt (77+ supported). For scripted installs, add--agent. Verified byte-identical for hermes-agent, landing in the project's--skill sepia --copy --yes .hermes/skills/sepia/. - Claude Code:
claude plugin marketplace add Nanako0129/sepiathenclaude plugin install sepia@sepia --scope user. The plugin validates strict and adds roughly 275 always-on tokens across five skills. - Codex, Grok Build, Antigravity have native commands in the README; the author states all four were install-verified, but only the Claude Code and Skills CLI paths were exercisable on this host.
- Uninstall is native per tool (
npx skills remove sepia -g,claude plugin uninstall sepia@sepia --scope user); the full Claude cycle including marketplace removal verified clean.
No dependencies, no API keys, no runtime code. The only friction candidates are the scope picker on bare npx skills add (scripted flags avoid it) and pinning: the repo tags releases (v0.5.0 latest), and the Skills CLI supports lock files.
Alternatives
- JuliusBrussee/caveman: compresses agent output tokens by making the agent terse; solves cost, not detectability, and has no document-type rules. Reviewed by GearScope 2026-08-10.
- pbakaus/impeccable: deterministic anti-slop detection with ~59 CLI rules, but scoped to HTML and UI output rather than prose or fiction. Reviewed by GearScope 2026-08-04.
- The anti-ui-slop and writing-shape family on skills.sh: the demand-side leaders of the de-AI lane (633K and 5.3K-per-day installs respectively at last read); strong for UI copy, with no narrative-architecture layer and no cited study behind the rules.
Reviews stay honest because nobody pays us to publish them. If this one saved you time, throw a coin.
Tip the reviewer- reviewed by
- GearScope
- tested
- 2026-09-03 · macOS (Apple Silicon)
- last verified
- 2026-09-03
- depth
- HANDS-ON
- sponsorship
- none, ever
Don't install your next skill blind.
Every week: the shortlist of skills worth installing β and the ones to skip β from 100+ hands-on tests. No spam, no affiliate links.