Model or dataset
Nanako0129/sepia avatar
Nanako0129/sepia

sepia: a de-AI writing skill that repairs narrative architecture, not word choice

De-AI writing skill for any Agent Skills-compatible agent (77+ via the Skills CLI), with native plugins for Claude Code, Codex, Grok Build, and Antigravity. Narrative-architecture repair for fiction, venue-matched rules for professional prose. Based on StoryScope (arXiv:2604.03136).

2,917 stars191 forksPythonMIT

At a glance

What is it?
sepia is an Agent Skill for de-AI writing that treats the tells surviving surface editing as structural. It ships one canonical SKILL.md, native plugin packaging for Claude Code, Codex, Grok Build and Antigravity, and cites StoryScope (arXiv:2604.03136) as its evidence base.
Who is it for?
Adopt sepia if you write fiction or professional documents with an Agent Skills-compatible agent and you have already tried surface-level humanizers without success, because its diagnosis rubric targets structural tells rather than word choice.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 7 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The problem sepia targets: tells that survive surface rewriting

Most humanizers edit vocabulary and syntax. sepia's README argues that is the wrong layer. It cites StoryScope (Russell et al., 2026, arXiv:2604.03136), a study of 61,608 stories covering human writing and five frontier LLMs, in which a classifier using narrative-structure features alone reached 93.2% macro-F1 at detecting AI fiction. In the same study's LAMP-edited condition, human editors rewrote the surface style and detection only fell from 95.5% to 93.9%.

The tells that survived are architectural, according to the README: themes explained by the narrator, single-track causally tidy plots, emotions rendered only as bodily sensation, no real-world references, no reader, linear time, endings resolved by protagonist growth and acceptance. sepia is built for writers who have already run a surface pass and still get flagged, and for teams producing release notes, PR replies, postmortems, tickets and technical articles where the failure mode is different: filler, hedging, chatbot leftovers, register that ignores the venue.

It is an Agent Skill, not a standalone application. The README describes it as portable to any agent that speaks the Agent Skills standard, with the Skills CLI installing it across 77+ agents, plus native plugin packaging for Claude Code, Codex, Grok Build and Antigravity. If you do not work inside one of those hosts, this is not the tool for you.

Three passes, one canonical skill file

The fiction protocol runs in three passes. Pass 1 repairs narrative architecture: stop explaining the theme, loosen the causal chain, back-load revelations, mix emotion modes, keep character networks sparse, name real things. Pass 2 handles discourse flow: de-template the paragraph-question sequence, fix the mid-story sag, vary rhythm and positions. Pass 3 is the classic surface layer of clichés, syntax templates, vocabulary and register.

On top of that sits a 30-feature diagnosis rubric and per-model fingerprints in two layers. Narrative tells come from StoryScope for Claude, GPT, Gemini, DeepSeek and Kimi. Sentence-level tells are taken from the vendors' own prompting guides (the README names Claude Fable 5.1 and Mythos 5.1, Fable 5 and Mythos 5, Opus 5, Opus 4.8; GPT-5.6, GPT-6 Astra; Gemini 3 series), applied when the writing or executing model is known. Vendors that publish no such guidance are recorded as consulted, not guessed. That distinction matters: it means the fingerprint table has visible holes rather than invented entries.

Professional prose gets thin per-domain rule files over one shared checklist. Release notes put user impact first and require artifacts per claim. PR and issue replies answer first, cite file:line, and avoid reflex praise. Postmortems are blameless toward people and merciless toward mechanisms, with timestamps, dead ends and owned action items. Tickets use the title as outcome with testable acceptance criteria. Technical articles open at the problem and carry one real dead end and one committed opinion. The governing principle stated throughout is to calibrate to the human distribution rather than invert the AI one, selecting 3 to 5 moves per story and leaving slack.

Installing sepia and running a first review

The README points at the Skills CLI, which it says supports 77+ agents, and states that the complete plugin package is what you install: the operation wrappers depend on their sibling canonical skill, and standalone wrapper installation is unsupported. The repository also documents what was verified on each platform under its Install section, which is the place to check before you commit.

Once the skill is loaded, the four operations plus the Hemingway entry are exposed as slash commands in Claude Code, Grok Build and Antigravity, and as dollar-prefixed commands in Codex. A first real use is a diagnosis, not a rewrite, because review reports findings without editing your text:

bash
/sepia-review

In Codex the same entry is invoked with a dollar sign:

bash
$sepia-review

The general router remains available as `/sepia` in Claude Code, Grok Build and Antigravity, and `$sepia` in Codex. When you are ready to change the text rather than read a report, refactor makes minimal in-place edits while recreate rewrites from the source facts and intent. The distinction is deliberate: recreate is for when the architecture itself is the problem, and refactor is for when it is not.

If you want the built-in Hemingway voice applied, the direct entry is `/sepia-hemingway` (or `$sepia-hemingway` in Codex), which writes or refactors fiction with that profile. On fiction, a review only reports when your text's recorded findings fit the Hemingway profile; it loads nothing otherwise.

The calibration principle and its built-in failure mode

The most useful line in the README is also the constraint: calibrate to the human distribution, don't invert the AI one. Humans sit at moderate values. A story with every rule applied is a new fingerprint, and a new fingerprint is still a fingerprint. sepia's answer is to select 3 to 5 moves per story and leave slack rather than applying the full rubric.

That makes the skill's output dependent on judgment calls the skill itself does not fully specify. The README does not document a rollback path when a refactor overshoots, and it does not describe a way to measure whether the selected moves landed inside the human distribution. You get a diagnosis rubric and a set of moves; you do not get a score. Writers who want a deterministic pass or fail will find this unsatisfying.

The voice-skills interface carries a similar caveat, stated plainly in the README: it is grounded in one blind review experiment on a strict-minimalism specimen, described as a worked example, not measured evidence. The contract is that sepia's architecture decisions come first, the voice's moves are applied selectively at 3 to 5 signature moves per piece, formula endings are deliberately broken sometimes, and direct conflicts come back to you. Review reports the voice's known costs instead of fixing them away, while uniformity findings keep full strength. That is a reasonable design, but the evidence behind it is one specimen, and the README says so.

Where sepia is the wrong tool

sepia is not a general-purpose text editor or a detector. If your goal is to classify existing text as AI-written, the StoryScope classifier is the research artifact, not this skill. sepia writes and revises; it does not audit at scale.

It is also a poor fit for prose where the venue demands a fixed register that sepia would treat as a tell. Legal filings, regulated disclosures and brand-mandated copy have conventions that look stamped out precisely because they are stamped out. The README's own principle, calibrating to the human distribution, assumes a human distribution worth calibrating to; where the distribution is defined by a style guide rather than by writers, the three-pass protocol has little to work with.

Finally, the packaging constraint is real. Operation wrappers depend on their sibling canonical skill, and standalone wrapper installation is unsupported. If your workflow requires dropping a single file into an agent without the complete plugin package, or if your agent is not among those the Skills CLI supports, sepia does not have an installation path for you. The README does not describe a fallback.

How sepia differs from surface-level humanizers

The obvious alternative is a conventional humanizer: a prompt or tool that swaps vocabulary, breaks up sentence templates and removes clichés. That is sepia's pass 3, and sepia runs it too. The difference is what happens before it.

A surface humanizer has no model of narrative architecture. It cannot tell you that your theme is being explained by the narrator, that your causal chain is too tidy, or that your emotions only appear as bodily sensation, because those are properties of the story rather than the sentence. sepia's pass 1 operates at that level, and the StoryScope result it cites is the argument for why that level matters: LAMP-edited text, where human editors rewrote the surface style, still detected at 93.9% against a 95.5% baseline. Surface work moved the number by 1.6 points.

The second difference is domain routing. A generic humanizer applies one set of rules everywhere. sepia keeps a shared checklist and adds thin per-domain files on top, so a postmortem and a release note are judged by different criteria. That is a modest architectural choice with a large practical effect: it stops the tool from rewriting a postmortem into something that reads like a blog post.

The third difference is scope of evidence. sepia records which vendors publish sentence-level guidance and which do not, marking the latter as consulted rather than guessed. A humanizer prompt typically has no such provenance.

Maintenance, licence and the cost of upgrading

sepia is MIT licensed, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are retained. That is the standard permissive arrangement; the LICENSE file in the repository is the authoritative text, and this is not legal advice.

The repository was last pushed on 2026-09-08, and it is not archived. Three releases landed in the four days before that push: v0.7.0 on 2026-09-04, v0.8.0 on 2026-09-05 and v0.9.0 on 2026-09-08. That cadence suggests active iteration, though the README does not document a deprecation policy or a compatibility guarantee between skill versions.

Upgrade cost is mostly the cost of re-reading rules. The README states there is one canonical SKILL.md with no per-platform forks, so a version bump should not mean reconciling divergent instructions across hosts. The per-model fingerprint tables are the part most likely to age: they are tied to named model versions (Claude Fable 5.1 and Mythos 5.1, GPT-5.6, Gemini 3 series, among others), and a new model generation makes those entries stale until the maintainer updates them. The README's practice of recording unpublishing vendors as consulted rather than guessed is the honest handling of that problem, but it also means coverage is uneven by design.

Editorial conclusion

Adopt sepia if you write fiction or professional documents with an Agent Skills-compatible agent and you have already tried surface-level humanizers without success, because its diagnosis rubric targets structural tells rather than word choice. Skip it if you need a standalone binary, a hosted service, or a tool that works without an agent host: the operation wrappers depend on their sibling canonical skill and standalone wrapper installation is unsupported, so install the complete plugin package. Before committing, check the Install section for what the repository states was verified on your platform, read the voice-skills interface if you plan to stack a style skill on top, and confirm your agent is among those the Skills CLI supports.

Frequently asked questions

What does sepia mean in this project?

The name refers to the writing skill, not to the color or the tone. The README describes sepia as a de-AI writing skill distributed as a portable Agent Skill, with one canonical SKILL.md and four operations: write, review, refactor and recreate.

How do I use sepia with Claude Code or Codex?

Install the complete plugin package rather than a standalone wrapper, since the operation wrappers depend on their sibling canonical skill. Claude Code exposes entries such as /sepia-review and /sepia-refactor, while Codex uses the dollar-prefixed forms like $sepia-review.

Does sepia work as a Photoshop filter or a photo tone?

No. sepia is a writing skill for Agent Skills-compatible agents, not an image tool, and the README describes no image processing of any kind.

Official sources

  1. Issues
  2. License: MIT
  3. Nanako0129/sepia on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/nanako0129-sepia.svg)](https://hysenlabs.com/projects/nanako0129-sepia)