skills/mine-humanize/SKILL.md
Use when the user says: "humanize this", "unslop this", "de-slop this", "fix AI writing", "remove AI tells", "clean up AI prose". Edits prose to remove AI writing patterns and add human voice. Analyzes first, then asks how to fix. Prose complement to mine-clean-code.
npx skillsauth add NodeJSmith/Claudefiles mine-humanizeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fix prose that reads as AI-generated. This skill edits text that already exists -- PR descriptions, commit messages, docs, research briefs, skill files, rule files. For code quality, use /mine-clean-code.
Agents default to generating text that reads as generated. The tells are structural (negative parallelisms, tricolon lists, resolution closers) and lexical (delve, tapestry, crucial). Readers develop an instinct for it and discount the text even when the content is correct.
The pattern reference is ${CLAUDE_CONFIG_DIR:-~/.claude}/references/common/writing-quality.md. Read it in full before starting any analysis.
$ARGUMENTS -- the target. Can be:
/mine-humanize design/research/brief.md/mine-humanize design/ (processes all .md files)git diff --cached --name-only | grep -E '\.(md|txt|rst)$'), then askIf $ARGUMENTS is empty and nothing is staged:
AskUserQuestion:
question: "What should I humanize?"
header: "Target"
multiSelect: false
options:
- label: "Pick a file"
description: "I'll give you a file or directory path"
- label: "Paste text"
description: "I'll paste text in the next message for you to edit"
If the user picks "Paste text", wait for their next message, then treat the pasted content as the target. Write it to a temp file (via get-skill-tmpdir mine-humanize), classify as "General prose", and proceed to Phase 2.
If the target is a directory, find prose files:
find <path> -type f \( -name '*.md' -o -name '*.txt' -o -name '*.rst' \) -not -path '*node_modules*' -not -path '*/.git/*'
If more than 10 files, ask to narrow scope.
For each file, infer the register from its path and content:
| Signal | Text type | Register |
|--------|-----------|----------|
| Path contains design/ or file named *brief*, *research* | Research brief | Analytical, evidence-grounded, can use first person |
| Commit message (piped or .gitmessage) | Commit message | Terse, imperative, no filler |
| PR description or PULL_REQUEST_TEMPLATE | PR description | Narrative but tight, outcome-focused |
| Path under skills/ or rules/ or agents/ | Instruction file | Direct, imperative, no hedging |
| Path under docs/ or named README*, CONTRIBUTING* | Documentation | Clear, scannable, concrete examples |
| Other .md files | General prose | Balanced, specific, varied rhythm |
Surface the inferred type: "Treating design/brief.md as a research brief. Editing for analytical register."
Protect regions where accuracy is mandatory or the content is structurally fixed, not prose. Edits to these regions would corrupt meaning. Common cases:
--- markers at file start)|)Analyze only the prose between protected regions.
Read each file and identify AI writing patterns from writing-quality.md. Number each finding sequentially across all files. For each:
- **Finding N** — [Pattern name] (file:line): "quoted text" → suggested fix
Group by file, then by category (AI Vocabulary, Structural, Style, Communication). For multi-file targets, emit progress: Scanning [N/total]: <filename>.
End with a summary: Found N issues across M files (X vocabulary, Y structural, Z style).
AskUserQuestion:
question: "Found {N} issues. How should I fix them?"
header: "Fix mode"
multiSelect: false
options:
- label: "Surgical edits"
description: "Minimal targeted fixes — swap words, restructure sentences, cut filler"
- label: "Full rewrite"
description: "Reconstruct from scratch preserving meaning and technical content"
- label: "Cherry-pick"
description: "I'll tell you which finding numbers to apply (e.g. 1,3,5)"
- label: "Done"
description: "Report noted, no changes needed"
If zero findings: "No AI writing patterns found." Stop.
Two-pass editing, one file at a time. For multi-file targets, emit progress: Editing [N/total]: <filename>.
Pass 1 -- Subtract. Fix the identified findings with minimal, targeted changes:
Apply pass 1 edits via the Edit tool. Preserve the author's meaning and the text type's register.
Pass 2 -- Re-read and add voice. Read the file back from disk (this forces genuine re-reading of edited content, not continuation from the same context). This pass catches:
Apply pass 2 edits. After all files are edited, show a summary:
Edited N files, M changes total.
- file1.md: X changes (vocabulary: A, structural: B, style: C)
- file2.md: Y changes (...)
One file at a time. For each file:
AskUserQuestion:
question: "Accept this rewrite of {filename}?"
header: "Accept"
multiSelect: false
options:
- label: "Accept"
description: "Apply the rewrite"
- label: "Adjust"
description: "I'll tell you what to change"
- label: "Reject"
description: "Keep the original, skip this file"
Only call Edit on Accept. Rewrite from scratch in the target register -- preserve all technical content, protected regions, and factual claims but restructure freely.
Show the finding numbers from Phase 2. Ask: "Which finding numbers should I apply? (e.g. 1,3,5)". Apply only the specified findings, report which were applied and which were skipped.
/mine-clean-code for LLM-bias patterns, deferred debt, and style hygiene in codewriting-quality.md is a reference file loaded on demand via the Domain References meta-rule. This skill fixes text after the fact.development
Use when the user says: "document how X works", "write up how this works", "durable explanation", "explain this for the docs", "document this subsystem". Writes a durable, architectural-altitude explanation that survives code churn.
development
Use when picking up a fresh session after /clear, a stop, or an unanswered AskUserQuestion. Reconstructs the prior session's intent from its transcript tail and surfaces any unresolved decision; user-invoked only — for a hand-written end-of-day handoff use /mine-good-morning instead.
development
Use when the user says: "what did we discuss", "continue where we left off", "remember when", "as I mentioned", "you suggested", "we decided", "search my conversations", "find the conversation where", "what did we work on", or uses implicit signals like past-tense references, possessives without context, or assumptive questions. Direct search over past Claude Code sessions via cass.
tools
Use when the user says: "what context do I have", "relevant history for this task", "what have we done related to this". Also usable proactively when starting work that likely has prior history. Assembles a structured context brief from past session history via cass, scoped to the current task and workspace.