apoapostolov/humanizer/ai-writing-detector
- community
Checking that the SKILL.md file is still in the repository.
AI-writing signal scan, hosted detector spread, preservation validate. Not authorship proof.
Install
npx vskill@latest install apoapostolov/humanizer/ai-writing-detectorSKILL.md
AI writing detector
Production skill for deterministic AI-writing signals and rewrite preservation checks.
This is not humanizer. Humanizer improves writing and voice, including Chase mode that consumes these scores. This skill measures surface signals, hosted detector spread, and protected-span integrity. It still refuses to launder scores into authorship claims.
Mission
- Flag regex-detectable AI-writing patterns (vendored engine)
- Run an optional hosted spread tester (uploads only with
--upload) - Emit a sanitized report (
interpretation: signals_only) by default - Separate Tier 1A markers from Tier 1B clarity hits
- Validate rewrites did not trash code, URLs, tables, or structure
- Document calibration limits and judgment-only gaps
Hard guardrails
- Signals, not proof. Never use output alone for academic integrity, hiring,
discipline, or attribution.
- Chase is allowed.
humanizerChase mode may iterate on these scores.
Do not add typos, noise, invented facts, or fake first person to move a number. House bans still win.
- Uploads need consent. Hosted APIs send the full draft off-machine. Require
--upload and skip embargoed or NDA copy. See references/hosted-detectors.md.
- Prefer clusters and reader impact over single weak hits.
- Default CLI/JSON omits authorship-shaped engine fields
(document_classification, class_probabilities, confidence_category). Use --raw or --json-engine only when debugging the vendored engine.
When to use
| Need | Load | |
|---|---|---|
| Natural rewrite / voice | humanizer | |
| Chase hosted or local scores | humanizer Chase, then this skill | |
| STE / docs form control | simple-english | |
| Score, issue list, category map | this skill | |
| Hosted detector spread | this skill (test_detectors.py) | |
| Preserve code/URLs/structure after edit | this skill (validate) | |
| Cron / batch signal scan | this skill (--quiet, multi-file) | |
| Authorship claim | provenance — not this score |
When not to use
- User wants better prose, voice, or a rewrite →
humanizer - User wants STE/docs form control →
simple-english(+voice_lint.py) - User asks “was this written by AI?” as a verdict → refuse; offer signals +
provenance, not a classification label
- Text is a few words → report will mark
too_short; do not call it clean - Confidential draft +
--upload→ stop; use localanalyze.jsor--demo
Modes
analyze (default)
Default report fields (schema `ai-writing-detector.analyze.v1`):
interpretation: "signals_only"source,score,label,issue_count,word_count,context_modebands.tier1_markers/bands.tier1_clarity/bands.other_signalsby_type,by_severity,samples,warnings,reliabilitydisclaimer,handoff- Multi-file:
ai-writing-detector.analyze.batch.v1with `summary` totals - not top-level
document_classification/ class probabilities
Human text puts warnings first (short-input trap visible before a low score) and labels tier1 as 1A markers vs tier1-clarity as 1B.
hosted spread
--upload sends the full draft off-machine. Details: references/hosted-detectors.md.
validate
Errors: fenced code, frontmatter, blockquotes, table cells, inline code, URLs, paths, heading structure. Residual pattern growth blocks by default (--residual-policy error); warn keeps mechanical errors blocking and turns residual growth into a review warning, so a rewrite is judged on damage, not on score. Warnings: reworded headings, missing or added figures, large word drop. Neither a pass nor a warn proves meaning; check facts and claims yourself.
explain
- references/categories.md
- references/scoring-and-limits.md
- references/measurement-notes.md
- references/relationship-to-humanizer.md
- references/examples.md
- references/update-engine.md
- references/hosted-detectors.md
- references/hosted-detector-list.md
smoke / pin check / CI
GitHub Actions: .github/workflows/ai-writing-detector.yml runs smoke on changes under skills/ai-writing-detector/.
Deliver
analyze
- Sanitized report first (text,
--quiet,--summary-only, or--json) - Lead with warnings + bands + clusters, not the number alone
- Call out Tier 1B clarity separately from Tier 1A markers
- Surface
reliability.too_shortandlong_documentwhen present - Never claim human-written or AI-written from the score
- Rewrite request → humanizer (no score-chase)
validate
- ok / errors / warnings (or quiet one-liner)
- Exit 1 on errors; exit 4 on warnings if
--fail-on-warnings
Engine
Vendored from conorbronsdon/avoid-ai-writing detector (MIT): scripts/patterns.js, scripts/validate.js. Package report layer: scripts/report.js (this skill — not upstream). Long-document scoring: scripts/longdoc.js (this skill — not upstream). Pin procedure: monorepo SOURCES.md + scripts/check-engine-pin.sh + references/update-engine.md. Self-contained: no external clone required.
Requires Node.js >= 18 (package.json engines). No npm dependencies.
Documents over 10,000 words are split on paragraph boundaries into chunks of at most 4,000 words and scored by a word-weighted average of the accepted chunks, mirroring upstream self-scan.js (#382). A long draft is never reported as a clean zero. The report carries a long_document block with the chunk counts; a document with no paragraph breaks stays refused and says so.
Four findings are style-only, with zero authorship weight in the engine: em-dash, emotional-flatline, smart-punct-signature, and unnecessary-hyphenation. They appear in finding totals and in count-based gates, and they cannot move the score, label, probabilities, confidence, or AI sentence highlights. smart-punct-signature is the narrowest: plain source mode only, always low severity, no classifier corroboration. Curly punctuation, a prose em dash, and an Oxford comma together stay a style check, because an editor or a house style produces the same combination. Regenerate the measured severity bands and weights with node scripts/severity-bands.js.
Skill version: 1.2.3. Engine pin: avoid-ai-writing tip 209815c (v3.38.0 plus post-release tip; the sentence-unit regex no longer backtracks quadratically on a long tab run after a table delimiter or a thematic break, with matching unchanged, and the engine exports its CONTEXT_MODES and SOURCE_MODES lists. The deterministic "X is dead; long live Y" match stays retired to judgment, and smart-punct-signature stays a zero-weight plain-mode style check).
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/ai-writing-detector/SKILL.md
Popularity
- Repository stars
- 7
- 7-day trend score
- 10
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/apoapostolov/humanizer/ai-writing-detector)