by yanstd888
A fast linter and style checker to detect AI-generated phrasing, eliminate corporate fluff, and enforce clear, natural, human-like writing across markdown and documentation.
# Add to your Claude Code skills
git clone https://github.com/yanstd888/humanizer-lintGuides for using ai agents skills like humanizer-lint.
See how humanizer-lint compares with popular alternatives.
humanizer-lint is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by yanstd888. A fast linter and style checker to detect AI-generated phrasing, eliminate corporate fluff, and enforce clear, natural, human-like writing across markdown and documentation. It has 52 GitHub stars.
humanizer-lint's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/yanstd888/humanizer-lint" and add it to your Claude Code skills directory (see the Installation section above). humanizer-lint ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
humanizer-lint is primarily written in JavaScript. It is open-source under yanstd888 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh humanizer-lint against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Audit prose locally, revise only measured problems, and verify the final text before delivery.
node <skill_dir>/scripts/analyze.mjs --stdin --json for deterministic local analysis.en, id, es, ms, fr, de, pt, zh), with Indonesian morphology diagnostics. Tier 2 is experimental universal sentence-rhythm segmentation across 100+ languages via Intl.Segmenter; lexical and MATTR thresholds are uncalibrated.suggestedReplacement, splitSuggestion, and fixInstruction without rewriting clean prose.node <skill_dir>/scripts/fingerprint.mjs; samples never leave the machine.Inside an agent workflow, execute only:
node <skill_dir>/scripts/analyze.mjs --stdin --json
node <skill_dir>/scripts/fingerprint.mjs --dir <samples_dir> --out <skill_dir>/profiles/custom-voice.json
Do not call network tools or upload the user's text. npx humanizer-lint is for manual CLI or CI use outside this agent workflow.
For explicit routing, add --domain auto|prose|copywriting|code|ui; use --no-domain-lint to disable domain checks. Without a filename, auto is prose-first; choose a domain explicitly for stdin. Ignore directives in JavaScript/TypeScript with backticks are disabled conservatively and reported in ignoreWarning.
Preserve executable logic, identifiers, commands, structured payloads, legal clauses, quotations and factual numbers. Revise flagged prose, copy, comments, or UI/accessibility markup only when the change is appropriate and does not alter functionality or meaning.
node <skill_dir>/scripts/analyze.mjs --stdin --json.SKIP; short inputs can still fail lexical or domain checks.sourceScope: match is an exact match; sentence-range and document-excerpt are context, not text to replace mechanically. Preserve unflagged content.CV, paragraph CV, adjacent sentence delta ($\Delta_{adj}$), sentence-length ranges, MATTR, and compression ratio identify flat or repetitive patterns. They are not mechanical writing targets. Never manufacture a 3-word sentence followed by a 35-word sentence merely to raise a number; the result must still sound coherent.
Formal, legal, academic, and regulated documents often use lower sentence variance, nominalized terms, or prescribed wording. If further changes would distort meaning or required register, stop editing, return the faithful text, and briefly explain why the statistical diagnostic was overridden. Never invent facts or examples to change a score. When a consistent author voice matters, use a custom --profile rather than forcing casual cadence.
Place at least three human writing samples in one local folder. A combined total of 500 words or more is recommended. Files must be .txt or .md.
node <skill_dir>/scripts/fingerprint.mjs \
--dir <samples_dir> \
--out <skill_dir>/profiles/custom-voice.json
Then analyze with:
node <skill_dir>/scripts/analyze.mjs \
--stdin \
--profile <skill_dir>/profiles/custom-voice.json \
--json
Fingerprinting and analysis run locally with zero network uploads.
Before
Tidak dapat dipungkiri bahwa pengimplementasian sistem ini dilakukan untuk meningkatkan efisiensi proses.
After — meaning preserved
Sistem ini diterapkan untuk meningkatkan efisiensi proses.
Before
Dalam rangka memastikan stabilitas, pelaksanaan pemeriksaan dilakukan oleh tim sebelum deployment.
After — meaning preserved
Tim melakukan pemeriksaan sebelum deployment untuk memastikan stabilitas.
Mixed Indonesian–English technical prose is supported. Keep necessary terms such as deployment, latency, cache, middleware, and pull request; Indonesian stopwords and sentence structure determine routing when they dominate the text.
Use --delivery-gate for a human-readable four-block report or --json for the same structured data:
rhythmAndStylometry — document CV, paragraph CV, adjacent delta, range, and clause symmetry.lexicalAndMorphology — active rule pack, repeated n-grams, stock phrases, nominalization, and passive bloat.domainHygiene — copy/CTA, code comments, and filename-aware UI/accessibility/responsive checks.finalVerdict — score, PASS/FAIL/SKIP, and prioritized one-pass fixes.Detect repetitive stock phrasing, uniform sentence rhythm, structural clichés, and voice-profile drift with 8 language-specific lexical and morphological packs plus universal Intl.Segmenter rhythm diagnostics for 100+ languages without sending text to an external service.
What it does | Try in your browser | Install | Quick start | CLI reference | Detectors | Agent skill | FAQ
Summary
en, id, es, ms, fr, de, pt, zh) plus universal Intl.Segmenter sentence-rhythm analysis for 100+ languages.node <skill_dir>/scripts/fingerprint.mjs and passes the listed skills.sh security audits with zero network text uploads.npx skills add yanstd888/humanizer-lint
Use the command above to install the agent skill. For one-off local linting, run the published humanizer-lint CLI below.
8-language summary: EN — local prose linter. ID — perbaiki prosa dan periksa ritme. ES — corrector de ritmo. MS — semak ayat. FR — analyseur stylométrique. DE — KI-Floskeln entfernen. PT — corretor de estilo. ZH — 句式节奏分析.
Run npm run benchmark to reproduce the 20 synthetic fixtures (16 multilingual and 4 domain checks) and exploratory source corpus on the local machine.
The benchmark runs synthetic multilingual and domain fixtures. Its fixture pass rate and runtime do not measure real-world accuracy or authorship. The source corpus is small and non-random; assumed-clean labels are not independently adjudicated.
Use the official demo: humanizer.aiclub.ai.id.
humanizer-lint.pages.dev remains available as a mirror.
Open a deterministic sample view directly:
| Language | AI Sample (FAIL) | Human Sample (PASS) |
|---|---|---|
| EN | open | open |
| ID | open | open |
| ES | open | open |
| MS | open | open |
| FR | open | open |
| DE | open | open |
| PT | open | open |
| ZH | open | open |
Use ?lang=en, ?lang=id, ?lang=es, ?lang=ms, ?lang=fr, ?lang=de, ?lang=pt, or ?lang=zh to set the playground chrome only for that visit; it does not overwrite a saved browser preference.
It works locally with zero runtime dependencies. Instead of rewriting text through another language model, it reports paragraph- and sentence-level violations with specific correction instructions. Use it to lint LLM-generated documentation, remove robotic AI phrasing from Markdown, check burstiness and lexical diversity, or add a deterministic prose gate to an agent workflow.
It can serve as a CLI text humanizer guardrail, automated writing style linter, or CI/CD documentation linter. The bundled rules flag overused AI clichés such as delve and tapestry without rewriting the source.
| Tier | Languages | Checks |
|---|---|---|
| Tier 1 — rule packs | en, id, es, ms, fr, de, pt, zh |
Universal stylometric metrics plus lexical, definitional-opening, and structural-cliché packs; Indonesian keeps its morphology rules. |
| Tier 2 — universal | universal or another ISO 639-1 code such as tr, ja, or ar |
Experimental rhythm diagnostics through native Intl.Segmenter; lexical and MATTR thresholds are uncalibrated. |
Use this local AI text humanizer and prose linter for copywriting, blog posts, SEO articles, technical documentation, Markdown proofreading, academic prose, and natural translation polishing. Tier 1 packs flag native anti-slop phrases in English, Indonesian, Spanish, Malay, French, German, Portuguese, and Mandarin; Tier 2 applies deterministic stylometry to 100+ languages.
For a closed-loop agent workflow, install npx skills add yanstd888/humanizer-lint, draft without changing facts, run humanizer-lint --lang auto, revise only flagged prose, and re-run before returning the text. It works with Claude Code, Cursor, Windsurf, Cline, Codex, and Gemini CLI without a runtime dependency or network text upload.
humanizer-lint analyzes prose after removing or neutralizing common non-prose Markdown structures. It then combines lexical rules, sentence-length statistics, structural checks, Indonesian morphology checks, and an optional voice profile into a score from 0 to 100.
The project includes:
It does not estimate perplexity, classify who wrote the text, rewrite prose automatically, scan directories, or provide SARIF output.
Given this input:
In today's fast-paced world, teams delve into a robust landscape. Moreover, this pivotal approach fosters seamless collaboration across every project. In conclusion, the solution unlocks valuable insights for everyone.
Run the analyzer:
humanizer-lint --file draft.md --lang en
The current CLI reports FAIL with lexical findings. The input has only three sentences, so the statistical rhythm gate is skipped even though rhythm metrics are displayed:
Status: FAIL
Score: 70
Language: en
Rule pack: en
The score and diagnostics depend on the rules and profile in use.
A failed analysis exits with code 1. A passing fixture returns:
Status: PASS
Score: 100
Language: en
and exits with code 0.
SKILL.md Humanizers vs. humanizer-lint (Closed-Loop CLI)A static writing prompt can ask a model to vary prose, but it cannot verify the finished draft. humanizer-lint takes the smaller, deterministic approach: inspect the exact text after drafting, make only flagged revisions, then check again locally.
| Capability | Static SKILL.md humanizer prompt |
humanizer-lint closed-loop CLI |
|---|---|---|
| Checks the completed draft | No | Yes, exact input is measured |
| Measures sentence rhythm | Prompt guidance only | CV, adjacent delta, short/long distribution |
| Measures vocabulary repetition | Prompt guidance only | Adaptive MATTR and repetition checks |
| Flags config |