ccf/humanize
v0.3.1MIT
Audits a draft layer by layer (vocabulary, punctuation, sentence shape, openers, closers, grammar, narrative, per-model habits) against 13 studies, then rewrites what it flags in the author's voice.
Changelog
All notable changes to this project are documented here. The format follows Keep a Changelog, and the project uses Semantic Versioning.
Unreleased
Changed
- README prose passed through humanize itself (audit-then-rewrite); tables, commands, and the file tree unchanged.
- Credits section removed from the README; StoryScope attribution stays in
data/README.md, fixture provenance intests/fixtures/PROVENANCE.md.LICENSErenamed toLICENSE.md.
0.3.1 - 2026-09-14
Added
.gitattributesforcing LF on every clone, and a test that no tracked text file carries a CR: the Claude Desktop skill loader rejects CRLF frontmatter, and "Add from repository" is a Git clone subject to the host'score.autocrlf.
Changed
- README: the Claude Desktop row now leads with the repository route (macOS and Windows) and
says to restart the app after installing or updating a plugin — the
/menu can listhumanize:humanizebefore it is invocable. The skill zip is the alternative for claude.ai without the Desktop app. - Acceptance record: phase-2 outcomes (Codex and Hermes installs from
main, the 0.2.0 → 0.3.0 plugin upgrade, Desktop on both platforms) recorded indocs/acceptance/v0.3/README.md.
0.3.0 - 2026-09-14
Added
- Agent Plugins 1.0 manifest (
plugin.json) and Codex manifest (.codex-plugin/plugin.json), so the plugin installs into Codex, Cursor, and Hermes with their own tooling. tests/test_portability.py: spec-only frontmatter, no harness-specific content underskills/, runtime references named, guard-clean scripts, manifests and CHANGELOG in version lockstep, zip packager contract, study count matchesSOURCES.md.tools/package_skill_zip.py: builds the claude.ai skill upload from the plugin.tools/smoke_harnesses.sh: local acceptance matrix with scanner-evidence PASS rule; transcripts underdocs/acceptance/v0.3/.- README install table for Claude Code, Codex CLI, Cursor, Hermes Agent, Claude Desktop.
Changed
- Repository layout: the plugin now lives at the root (
skills/humanize/); the marketplacesourceis./. SKILL.mdis harness-agnostic: relativescripts/surface_scan.pypath, plain-words options, document extraction described generically;argument-hintremoved (a hard error outside Claude Code). The/plugininstall lines moved to the README.- Public copy describes humanize as grounded in the thirteen studies in
references/SOURCES.mdand covering every layer of a text; StoryScope is named where it is the source of a number. pyproject.tomlversion now tracks the plugin version.
Migration
- Existing Claude Code installs:
claude plugin marketplace update humanize && claude plugin update humanize@humanize.
0.2.0 - 2026-09-14
Added
- Repetition block: verbatim phrase and whole-sentence repeat detection, capped at a 60-token phrase length.
- Grammar block: participial-tail and container-noun detection; nominalization hits.
- Disclaimer-opener detection and sentence-tail keys in the scan output.
- Four new
--textsummary lines; five new surface tells. - Principle 8: register and proficiency are not tells.
references/SOURCES.md, the citation registry for non-StoryScope numbers.- Report fixtures with sensitivity, specificity, direction, and pinned fairness gates.
SKILL.mdline-budget test.
Changed
SKILL.md: register gate, passive guard, and convergence check.- Provenance invariant now allows cited non-StoryScope numbers on
Scan:,Rule of thumb:, andVintage:lines. - Apostrophe normalization changes
words,wordlist.rate, and every per-1k rate on text containing look-alike apostrophe glyphs (they now tokenize as one word).
Fixed
- Apostrophe look-alike glyphs between letters.
0.1.2 - 2026-09-14
Added
- Word, PDF, PowerPoint, ODT, and RTF inputs: the skill now delegates text
extraction to Anthropic's
docx/pdfskills (document-skillsplugin) and audits the extracted Markdown; README documents the optional install.
Fixed
surface_scan.pyreports "not a text file — extract it first" instead of aUnicodeDecodeErrortraceback when given a binary document.
0.1.1 - 2026-09-13
Changed
/humanizeis now the skill itself: the argument handling ([path | text],--audit-only,--fiction | --prose) moved intoSKILL.mdand the separatecommands/humanize.mdwas removed. The two had registered as duplicate skills both namedhumanize.- Marketplace entry is
strict: trueand no longer duplicates component lists;plugin.jsonis authoritative.
Fixed
- Plugin failed to load after install with "conflicting manifests: both plugin.json and marketplace entry specify components" (#2).
count_not_butdouble-counted a spelled-out "is not about X; it is about Y" and, after the first fix, dropped a genuine not-but that abutted a following "is not about" construction. Deduplication is now by the sharednottoken.
0.1.0 - 2026-09-13
Initial release (#1).
Added
humanizeskill with a drafting mode (checks Claude's own prose against the tell lists) and a six-step audit mode (classify, scan, audit table of at most ten tells with quoted evidence and base rates, infer voice, rewrite, verify).- Reference docs:
principles.md;surface-tells.md(17 vocabulary, punctuation, structure, and discourse tells);style-tells.md(20 StoryScope style features) andnarrative-tells.md(57 fiction features), each with human-vs-AI base rates computed from StoryScope's released data;model-fingerprints.md(Claude, GPT, Gemini, DeepSeek, Kimi tendencies). surface_scan.py: standard-library-only Python 3.9+ scanner reporting sentence and paragraph length statistics, punctuation rates and raw counts, tricolon / not-X-but-Y / rhetorical-question / parallel-opener counts, AI wordlist, hedge, and intensifier rates, summary-closer detection, dialogue ratio; strips Markdown before measuring; JSON or--textsummary output.data/storyscope_feature_gaps.csv(human-vs-AI gap for all 304 StoryScope features), the StoryScope taxonomy, andtools/gen_tell_scaffold.pyto regenerate reference-doc scaffolds from them.- Paired AI/human fixtures with directional tests and a manual audit checklist
(
tests/fixtures/expected_tells.md). - Tooling: uv-managed dev dependencies, ruff, pre-commit hooks, GitHub Actions
CI (pre-commit, pytest on Python 3.9 and 3.13,
claude plugin validate --strict), and a Bugbot review guide.