brewtools/skills/text-human/SKILL.md
Removes AI artifacts, cleans comments, simplifies documentation in code. Use when - humanizing code, removing AI comments, cleaning docs, fixing unicode, making code human-readable. Trigger keywords - humanize, human, ai artifacts, ai comments, clean comments, simplify docs, unicode fix, remove generated, make readable.
npx skillsauth add kochetkov-ma/claude-brewcode brewtools:text-humanInstall 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.
Detect and remove AI-generated artifacts from code and documentation. Process commits, files, or folders with parallel sub-agents.
| Language | Reference | Load When |
|----------|-----------|-----------|
| Java/Kotlin | @reference/java.md | *.java, *.kt, *.groovy, Spring, Maven/Gradle |
| TypeScript/JS/React | @reference/typescript.md | *.ts, *.tsx, *.js, *.jsx, Node.js, React |
| Python | @reference/python.md | *.py, Django, FastAPI, Flask |
Multi-language projects: Load ALL relevant references.
First token = scope (required):
| Input | Action | |-------|--------| | None | Use AskUserQuestion: "What to humanize?" Options: "Commit hash (git diff)" / "File path" / "Folder path" | | Commit hash (7+ hex) | Process all text files from commit | | File path | Process single file | | Folder path | Process all files in folder | | "entire project" | Use AskUserQuestion: "Too broad — specify scope." Options: "Specific folder" / "File pattern (e.g. src/**/*.java)" |
Everything after first token = custom prompt (optional). Free-form text, no quotes needed. Overrides or extends default humanization rules for this run. Passed to every sub-agent prompt.
scope (first token) and customPrompt (rest)customPrompt is present, prepend it to every sub-agent Task prompt as:
CUSTOM INSTRUCTIONS (highest priority, override defaults):
<customPrompt>
Orchestrator -> Detect Language -> Load Reference -> Analyze -> Classify -> Split (3-10 blocks) -> Parallel Task agents -> Aggregate
Process all text files from commit. No extension filtering: git diff --name-only <hash>^..<hash>
| Include | Exclude |
|---------|---------|
| Source code (*.java, *.kt, *.py, *.ts, *.js, etc.) | Binary files (*.class, *.pyc, *.exe) |
| Config (*.xml, *.yaml, *.yml, *.json, *.toml) | Images (*.png, *.jpg, *.gif, *.ico) |
| Docs (*.md, *.txt, *.rst) | Archives (*.zip, *.tar, *.gz) |
| Build files (pom.xml, package.json, pyproject.toml) | Generated (target/, build/, dist/, node_modules/) |
| SQL (*.sql, *.ddl) | Lock files, IDE files |
find <path> -type f \( -name "*.java" -o -name "*.py" -o -name "*.ts" -o -name "*.js" -o -name "*.md" \) | grep -v -E "(target/|node_modules/|\.git/|build/|dist/|__pycache__/)"
| Files | Lines | Blocks | |-------|-------|--------| | 1-2 | <200 | 1 (direct) | | 3-5 | <500 | 3 | | 6-10 | 500-1500 | 5 | | 11-20 | 1500-3000 | 7 | | 21+ | 3000+ | 10 |
Single file: process directly without Task delegation.
| Type | Patterns |
|------|----------|
| Config | *.properties, *.yaml, *.yml, *.toml, *.ini |
| Data | *.json, *.csv |
| Text | *.txt, *.md |
| Simple SQL | Single CREATE/ALTER, no CTEs/subqueries |
| Small files | <50 lines, no logic |
| Type | Patterns | |------|----------| | Source with logic | Business logic, algorithms | | Tests | Test files for any framework | | Complex SQL | CTEs, window functions, JOINs, subqueries | | Config classes | Framework configuration |
Note: See language-specific references for detailed classification rules.
Group files by type, complexity (avoid mixed haiku/sonnet), line count balance. Keep related files together (same package/directory).
Data files block: YAML, JSON, CSV with comments → haiku for unicode fixes
Launch all Task calls in single message for true parallelism.
Task(subagent_type="developer", model="haiku", prompt="> **Context:** BT_PLUGIN_ROOT is available in your context (injected by pre-task.mjs hook).\n\n[CUSTOM_INSTRUCTIONS_IF_ANY]\nBlock 1: [files] [rules] Return JSON")
Task(subagent_type="developer", model="sonnet", prompt="> **Context:** BT_PLUGIN_ROOT is available in your context (injected by pre-task.mjs hook).\n\n[CUSTOM_INSTRUCTIONS_IF_ANY]\nBlock 2: [files] [rules] Return JSON")
If custom prompt was provided, prepend to EVERY sub-agent prompt (after the Context line):
> **Context:** BT_PLUGIN_ROOT is available in your context (injected by pre-task.mjs hook).
CUSTOM INSTRUCTIONS (highest priority, override defaults):
<user's custom prompt text>
---
<output_format> { "files_processed": N, "changes": [{"file": "path", "removed_comments": N, "fixed_unicode": N, "simplified_docs": N}] } </output_format>
Collect JSON results from all agents → merge statistics → generate unified report.
<humanization_rules>
| Pattern | Action |
|---------|--------|
| // Added by AI, // Claude suggestion, // AI-generated, // Generated by | Delete |
| # Added by AI, # Claude suggestion | Delete |
| /* Suggested by */ | Delete block |
| AI-invented issue numbers (BUG-001, FIX-123, ISSUE-1) | Delete |
| Unicode long dash (U+2014) | Replace → -- |
| Unicode arrows (→, ←, ⇒) | Replace → ->, <-, => |
| Unicode bullets (•, ◦) | Replace → - or * |
| Unicode quotes (" " ' ') | Replace → " or ' |
Keep project-specific ticket patterns (INTELDEV-XXXXX, JIRA-XXXXX, GH-XXX). Remove generic AI-invented patterns (BUG-001, FIX-123, ISSUE-42).
| Remove | Keep |
|--------|------|
| Private/internal function docs | Public API documentation |
| Test file documentation | Complex algorithm explanation |
| Obvious classes/functions (name = purpose) | Non-obvious behavior/side effects |
| Trivial parameter docs (restates name) | @throws/Raises with conditions |
| Trivial return docs (restates function) | External API contracts |
Key Rule: Never convert block docs to inline comments. Delete unnecessary docs entirely; for useful descriptions with trivial params, strip params and keep description.
Keep WHY, remove WHAT.
| Remove | Keep |
|--------|------|
| // Initialize the list | // Retry 3x due to flaky external API |
| // Loop through items | // Uses UTC to match database timezone |
| // Check if null | // Thread-safe: synchronized on class lock |
| Stale // TODO: refactor this | // HACK: workaround for <issue-link> |
| Issue | Fix |
|-------|-----|
| /* single line */ | // single line or # single line |
| 3+ blank lines | Max 2 |
| Trailing whitespace | Remove |
| Mixed tabs/spaces | Spaces |
</humanization_rules>
| Type | Rules | |------|-------| | Source code | Full doc cleanup per language reference | | Test files | Remove all docs, keep test descriptions | | SQL/XML | Preserve structural comments | | Markdown | Remove AI disclosures, fix unicode | | YAML/Properties | Fix unicode, keep config explanations | | JSON/CSV | Check for comments with unicode, usually skip |
Check for unicode in comments. Section comments are valuable.
| Action | Example |
|--------|---------|
| FIX | # Lane 90001→10001 → # Lane 90001->10001 |
| KEEP | # ===== VAN loads for test ===== |
| SKIP | Pure data without comments |
Structural comments are valuable. Analyze neighboring files first.
| Action | Example |
|--------|---------|
| KEEP | Section headers -- ============ TABLES ============ |
| KEEP | Block separators <!-- ===== Mappers ===== --> |
| KEEP | Column/field documentation |
| REMOVE | Exact duplicates, AI markers |
Custom prompt overrides or extends default rules. Use for:
## Humanization Report
### Execution Summary
| Metric | Value |
|--------|-------|
| Total files | N |
| Blocks | M |
| Haiku/Sonnet | X/Y |
### Block Results
[Per-block tables with file metrics]
### Totals
| Metric | Count |
|--------|-------|
| Files processed | N |
| Comments removed | X |
| Docs simplified | Y |
| Unicode fixed | Z |
| Error | Action | |-------|--------| | Agent timeout | Continue with other blocks | | File read error | Skip, note in report | | Binary file | Skip, note in report | | No changes | Report "No humanization required" |
/text-human 3be67487 # Commit - all files
/text-human src/main/java/MyService.java # Single file
/text-human src/main/java/services/ # Folder
/text-human 3be67487 don't touch docs on public records # Commit + custom prompt
/text-human src/ only remove AI artifacts and fix unicode # Path + custom prompt
/text-human 3be67487 also remove all @author tags # Commit + extra rule
devops
Publish content to brewpage.app — text, markdown, any file, or multi-file site. Asks namespace and password, returns public URL. Triggers: publish, share link, upload to brewpage, host page, brewpage, publish site, upload site, upload directory, deploy site, сделай публичную ссылку, опубликуй.
tools
Toggles terse-output mode for Claude Code - injects brief directives into main conversation (SessionStart) and sub-agent prompts (PreToolUse:Task) to cut preamble and filler. Profiles: light, medium, aggressive. Scope: global or project (project overrides). Triggers: think-short, be terse, think shorter, reduce tokens mode, level 1/2/3.
devops
Publish content to brewpage.app — text, markdown, JSON, file, or multi-file site. Asks namespace and password, returns public URL. Triggers: publish, share link, upload to brewpage, host page, brewpage, publish site, upload site, upload directory, deploy site, сделай публичную ссылку, опубликуй.
tools
Disables or enables individual plugin skills by writing skillOverrides to ~/.claude/settings.json (survives plugin updates). Modes: off, user-invocable-only, name-only. Triggers: disable skill, enable skill, toggle skill, hide skill, skill-toggle.