text-human — universal AI artifact humanizer

Caution

AI pair-programming sessions leave fingerprints. Fake issue references (BUG-001, ISSUE-42), unicode long dashes, curly quotes, comment blocks like // Added by AI, metronomic prose cadence, and inflated vocabulary (leverage, delve, seamless) accumulate silently across commits, docs, and articles.

Tip

One command, any content. Pass a commit hash, a file, a folder, or paste the text inline. The skill detects which domain it is dealing with, picks a matching flow, and runs a two-pass model: strip validated AI tells first, then a gated injection of human style fit for that domain.

Quick reference

FieldValue
Command/brewtools:text-human
Arguments[path|commit|folder|text] [custom instructions]
Modelsonnet (haiku for simple blocks in mixed flow)
Contextsession
ToolsRead, Write, Edit, Grep, Glob, Bash, Task, AskUserQuestion

When to use

SituationCommand
After an AI-assisted commit — clean all touched files/brewtools:text-human 3be67487
Before code review — strip obvious AI markers so reviewers focus on logic/brewtools:text-human src/main/java/services/
JavaDoc / API docs — remove trivial param restates, keep contracts/brewtools:text-human clean the javadoc in PaymentApi.java
README / guide — fix metronomic prose, trim scaffolding phrases/brewtools:text-human docs/getting-started.md
Reddit or Slack reply — add register-fit casual voice/brewtools:text-human review this reddit reply: <text>
Published blog post or essay — add burstiness and real stance/brewtools:text-human humanize this blog post: <text>
Folder-wide unicode and marker pass — strip only, no inject/brewtools:text-human src/ only strip AI artifacts, no inject
Custom rule on top of defaults/brewtools:text-human 3be67487 also drop all @author tags

Examples

# Code flow -- strip AI tells, normalize unicode, inject OFF
/brewtools:text-human src/main/java/com/example/OrderService.java

# JavaDoc clean-only sub-profile
/brewtools:text-human clean the javadoc in PaymentApi.java

# Commit -- mixed flow routes each changed file to its domain
/brewtools:text-human 3be67487

# Reddit reply -- casual injection, sparse emoji, lowercase
/brewtools:text-human review this reddit reply: <text>

# Blog post -- burstiness + real stance
/brewtools:text-human humanize this blog post: <text>

# Folder -- mixed flow, parallel blocks
/brewtools:text-human src/main/java/services/

# Custom prompt overrides defaults (scope + rule)
/brewtools:text-human src/ only strip AI artifacts, no inject
/brewtools:text-human 3be67487 also drop all @author tags

No arguments? The skill asks: commit hash, file path, folder, or paste text.

Flow

  1. Phase 0 — Greedy flow detection

    Before any processing the skill parses the argument, picks exactly ONE flow from context, and announces it: Flow: <name> — <one-line why>. Detection priority: explicit intent keywords (RU+EN) first, then path/extension, then content sniff. Only that flow file and the pattern sections it needs are loaded (lazy — not everything at once).

  2. Argument parsing

    The first token is parsed as scope when it resolves to an existing path or a 7+ hex git hash; the rest becomes a custom prompt. Otherwise the whole input is a custom prompt (inline text to humanize or intent description). No args triggers AskUserQuestion as fallback. The custom prompt both selects/overrides the flow and adds custom rules at highest priority.

  3. PASS 1 — Strip

    Validated AI tells are removed per the tiered pattern catalog. HIGH-tier universals (chat scaffolding, self-attribution comments, unicode normalization, prompt residue) act on single hits. MED density-signals act only when several co-occur in a cluster. Behavior-changing items — hallucinated refs, fabricated tickets, try/except-everywhere — are surfaced for review, never auto-edited.

  4. PASS 2 — Inject (gated)

    Human style is applied for the detected domain. HARD-OFF for code and API/formal docs. For docs, commits, social, and articles the injection is tuned by domain: burstiness weight, contraction frequency, stance, emoji policy. Global guard: never injects typos, errors, or fabricated references in any flow.

  5. Parallel execution (mixed flow)

    Commit or folder scope uses the mixed flow dispatcher: files split into blocks by complexity, classified as haiku (simple config/data/text) or sonnet (source with logic, tests, complex SQL). All Task calls fire in one message for true parallelism. Each sub-agent receives its block, the flow rules, and any custom instructions prepended at highest priority.

  6. Humanization Report

    Results merge into a unified report: detected flow, scope, files/blocks processed, haiku/sonnet split, per-file strip and inject counts, a surfaced-for-review section listing behavior-changing items, and totals. Files are edited in place — use git to revert.

Internals

5 flows

FlowDomainInject stageNotes
codesource files, comments, docstrings, JavaDoc/JSDoc/KDocOFFformal contract — strip only
docsREADME, guides, PR/commit, changelogsON, restrainedterse for PR/commit
socialreddit, forum, slack, discord, chatON, casualburstiness high, fragments OK
articleformal essay, published blog, long-formON, fullburstiness + real stance
mixedcommit / folder dispatcherper-file routingroutes each file to its flow

PASS 1 — What gets stripped

CategoryExampleTier
Chat scaffolding”Certainly!”, “I hope this helps”, “Here’s the rewritten…”HIGH
AI self-attribution// AI-generated, // Claude suggestion, bot/co-author trailersHIGH
Prompt residue# Remember to paste..., // Replace with your... placeholder narrationHIGH
Unicode normalizationem-dash, smart quotes, arrows in code/textHIGH
Promotional openers”In today’s fast-paced world”, “plays a significant role”HIGH/MED
Trivial comment/docstring// Loop through users, @param userId The user IDMED density
Excess-vocab clusterdelve, leverage, seamless, landscape (co-occurring set)MED cluster only

PASS 1 — What gets surfaced (never auto-edited)

Hallucinated package/method/URL refs, fabricated tickets, try/except-everywhere, empty catch-all, placeholder TODO logic, duplicated abstraction layers, happy-path-only tests, CI gaming. These change meaning — they are reported, not changed.

PASS 1 — What gets kept

WHY comments, public API docs, real project tickets (JIRA-456, GH-123), @throws with conditions, structural SQL/YAML banners, complex algorithm explanations, BDD comments.

PASS 2 — Injection weight matrix

Signalredditchatdocscommit/PRarticlecode/API
BurstinesshighhighmedlowhighOFF
ContractionshighhighOKlowhighFORBIDDEN
Stancehighmednonegrounded-whyhighFORBIDDEN
Emojirareincidentalnononono
Inject stageONONONON terseONOFF

Block sizing (mixed flow)

FilesLinesBlocksAgents
1-2<2001direct
3-5<5003parallel
6-10500-15005parallel
11-201500-30007parallel
21+3000+10parallel

Position: removes AI surface artifacts and fits register — does NOT claim to detect authorship. MED/weak detectors hit 61% FP on non-native English; HIGH universals are mechanical artifacts with near-zero human false positives.

Text Optimize

Trim token waste from prompts and docs. Complements text-human for pre-commit cleanup.

🔗

GitHub source

Source: SKILL.md, flows/ (code, docs, social, article, mixed), ai-patterns.md, human-patterns.md.

🚀

Brewtools overview

All brewtools skills — text, secrets, deploy, SSH, provider switching.

Updating plugins

Use /brewtools:plugin-update to check and update the brewcode plugin suite in one command. See the FAQ for details.