humanise
CLAUDE.md1 starsChanged 5 months agoMITView on GitHub
Guidance for Claude (and contributors) working on humanise: an open-source skill that strips AI tells from writing and drafts in a specific person's voice. Cross-platform (Claude Code, Codex, Gemini, Cursor and more), shipped as a skill plus an npm CLI. If a change only helps one person's writing, it's a profile change (their fork). If it helps everyone, it's an engine change (a PR). Every engine change clears the gate in skill/evals/self-harness-loop.md: Keep edits minimal: change only the surface the…
In this repository3 other files it gives its agents.
- AGENTS.mdAGENTS.md
- docs/agents.mdAGENTS.md
- humaniseSkill
The file
We split this CLAUDE.md into the rules it gives an agent
7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
If a change only helps one person's writing, it's a profile change (their fork).
- Very specific: line 25
Every engine change clears the gate in skill/evals/self-harness-loop.md:
- Very specific: line 29
Auditable: add a skill/CHANGELOG.md entry (target, surface, evidence, eval result).
- Distinctive: line 31
Keep edits minimal: change only the surface the failure needs, preserve what already passes, no broad rewrites.
- Distinctive: line 47
No new dependencies without a strong reason (CLI = Node built-ins.
- Very specific: line 48
Don't apply the prose sweep to code, config, or quoted material (see SKILL.md, "When to apply").
- Very specific: line 50
Add a provider: a row in cli/providers.mjs (PROVIDERS and DETECT), then rebuild.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
Guidance for Claude (and contributors) working on humanise: an open-source skill that strips AI tells from writing and drafts in a specific person's voice. Cross-platform (Claude Code, Codex, Gemini, Cursor and more), shipped as a skill plus an npm CLI.
The one rule: body vs soul
- Body (engine):
skill/SKILL.md,skill/references/,skill/evals/,skill/agents/,skill/commands/,skill/scripts/. Universal and shared. Improve this. - Soul (profile):
skill/profile/holds a user's own soul, plus the voice corpus (flatsample-*.mdfiles) and fingerprint. Personal. Never commit aprofile/. Never put one person's voice into the engine. The repo shipsskill/profile.template/andskill/profile.example/only.
If a change only helps one person's writing, it's a profile change (their fork). If it helps everyone, it's an engine change (a PR).
Repo map
skill/: the source skill. This is what ships and installs.cli/: the zero-dependency Node CLI (bin/cli.js) and the provider map (providers.mjs).scripts/build.mjs: compilesskill/intodist/<provider>/.dist/is generated; never hand-edit it. Editskill/and rebuild.docs/:getting-started.md,claude-desktop.md,SETUP.md,body-and-soul.md,platforms.md,DEVELOP.md.- The detector is Python (
skill/evals/assertions/writing_checks.py), standard library only. The CLI shells to it; it is not ported to JS. - Tests and evals live in
skill/evals/assertions/:selftest.pyis the held-in battery (npm test);run_all.pyruns the fullevals.jsonsuite intobenchmark.json. (Top-leveltests/is a placeholder.) skill/config.example.yml: the per-user engine config to copy toskill/config.yml(gitignored). Sets dialect, register, channels and a custom slop overlay..claude-plugin/plugin.json: the plugin manifest. Release-critical; verify it and the per-harness skill paths before publishing.
The acceptance gate (read before changing the engine)
Every engine change clears the gate in skill/evals/self-harness-loop.md:
- Held-in green:
npm test(the Python selftest) passes. Add a fixture if you add a detector. - Held-out not regressed: the pairwise voice test (
skill/evals/indistinguishability.md) and the reserved fixtures inskill/evals/holdout-evals.jsondo not get worse. Never tune a change against the holdout file; it exists to catch tuning-to-the-battery. - Auditable: add a
skill/CHANGELOG.mdentry (target, surface, evidence, eval result).
Keep edits minimal: change only the surface the failure needs, preserve what already passes, no broad rewrites.
The gate is runnable end to end via /humanise improve (benchmark, blind voice test, mining, gated proposals); /humanise learn captures the user's real edits into skill/profile/learning/ledger.jsonl. Everything under skill/profile/learning/ is soul: the user's verbatim text, gitignored, never shipped.
Commands
npm run build compile skill/ -> dist/<provider>/
npm test held-in selftest (Python)
node cli/bin/cli.js detect <file> [dialect] [medium] run the checker on a draftConventions
- Three agent-guidance files, one rule set.
CLAUDE.md(here),AGENTS.md(Codex and others), andGEMINI.md(Gemini, Antigravity) each restate the body/soul rule, the "don't sweep code/config" rule, and how to run the checker. They drift: change a shared rule in one, change all three. Canonical checker entry point isnode cli/bin/cli.js detect(it shells towriting_checks.py);python3 skill/evals/assertions/writing_checks.py <file> <dialect> [medium]is the same checker without the CLI. - Dogfood the prose. Write the repo's own docs (README,
docs/, this file) to humanise's standard: no em dashes or slop, and specifics over fluff. Run the checker on substantial docs before committing (node cli/bin/cli.js detect <file>). A writing tool whose own README reads like AI undercuts itself. - No new dependencies without a strong reason (CLI = Node built-ins; checker = Python stdlib).
- Don't apply the prose sweep to code, config, or quoted material (see SKILL.md, "When to apply").
- Rules live in
references/and detectors inwriting_checks.py; subagents inagents/. - Add a provider: a row in
cli/providers.mjs(PROVIDERSandDETECT), then rebuild.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

