From claude-skills
Review text against Wikipedia's "Signs of AI Writing" guidelines using an iterative loop-until-clean
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-skills:ai-writing-humanizerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Review text against Wikipedia's "Signs of AI Writing" guidelines using an iterative loop-until-clean
README.mdconfig/config.schema.jsonconfig/default.config.jsonexamples/before-after-samples.mdexamples/edge-cases.mdexamples/example-workflow.mdpatterns/patterns.jsonpatterns/patterns.mdpatterns/technical-terms-allowlist.jsonprompts/analysis-prompt.mdprompts/suggestion-prompt.mdprompts/verification-prompt.mdReview text against Wikipedia's "Signs of AI Writing" guidelines using an iterative loop-until-clean approach. Analyze text for AI writing patterns, propose changes, apply them, and re-analyze until no patterns remain or maximum iterations reached.
Before starting, ensure:
patterns/patterns.jsonprompts/ directoryThe skill supports extensive configuration via config/default.config.json:
| Mode | Description |
|---|---|
interactive | Review each change before applying |
batch | Auto-apply changes above confidence threshold |
report-only | Analyze without making changes |
| Priority | Auto-fix Default | Examples |
|---|---|---|
critical | Yes | Chatbot artifacts |
high | Yes | Buzzwords, inflated symbolism |
medium | No (requires approval) | Em dash overuse, transitions |
low | No (requires approval) | Hedge words, formatting |
Add project-specific patterns by creating a custom patterns file and setting custom_patterns_file
in config.
The patterns/technical-terms-allowlist.json file contains established technical terminology that
should not be flagged when used in proper context (e.g., "Kubernetes ecosystem", "financial
leverage").
function humanize_text(input_text, max_iterations=5):
iteration = 0
current_text = input_text
all_changes = []
while iteration < max_iterations:
iteration++
# Step 1: Analyze current text
issues = analyze_for_ai_patterns(current_text)
# Step 2: Check if clean
if issues.length == 0:
return {
status: "clean",
text: current_text,
iterations: iteration,
changes_made: all_changes
}
# Step 3: Generate suggestions for each issue
suggestions = generate_suggestions(issues, current_text)
# Step 4: Get approval (interactive) or auto-apply (batch)
approved_changes = get_approval(suggestions, mode)
# Step 5: Apply changes
current_text = apply_changes(current_text, approved_changes)
all_changes.append(approved_changes)
# Step 6: Log iteration
log_iteration(iteration, issues, approved_changes)
# Max iterations reached
remaining_issues = analyze_for_ai_patterns(current_text)
return {
status: "max_iterations_reached",
text: current_text,
iterations: iteration,
changes_made: all_changes,
remaining_issues: remaining_issues
}
Accept text from one of these sources:
Determine mode and settings:
{
"mode": "interactive|batch|report-only",
"max_iterations": 5,
"auto_fix_priority": ["critical", "high"],
"require_approval_for": ["medium", "low"],
"strict_mode": false,
"categories_to_check": ["all"],
"output_format": "markdown"
}
{
"original_text": "...",
"current_text": "...",
"iteration": 0,
"changes_log": [],
"word_count": 0
}
Load patterns from patterns/patterns.json. Organize by priority:
Use the prompt template from prompts/analysis-prompt.md. For each category:
Simple pattern matching (buzzwords, filler phrases)
Regex pattern matching (negative parallelism, participle endings)
Frequency-based detection (transitions, em dashes, hedge words)
Structural analysis (rule of three, formatting)
Output format:
{
"issues": [
{
"id": 1,
"category": "Chatbot Artifacts",
"priority": "critical",
"pattern_matched": "I hope this helps",
"location": "paragraph 1, sentence 5",
"context": "...all the necessary information. I hope this helps with your project.",
"suggested_action": "delete",
"suggested_replacement": null
},
{
"id": 2,
"category": "Buzzwords",
"priority": "high",
"pattern_matched": "leverage",
"location": "paragraph 2, sentence 3",
"context": "The system can leverage advanced algorithms to...",
"suggested_action": "replace",
"suggested_replacement": "use"
}
],
"summary": {
"total_issues": 15,
"critical": 1,
"high": 9,
"medium": 3,
"low": 2,
"word_count": 450
}
}
Format issues for display:
## Analysis Results - Iteration 1
Found 15 AI writing patterns:
### Critical Priority (1 issue)
- **Chatbot Artifact** (paragraph 1, sentence 5): "I hope this helps"
→ Suggested action: Delete
### High Priority (9 issues)
- **Buzzword** (paragraph 2, sentence 3): "leverage"
→ Suggested replacement: "use"
- **Inflated Symbolism** (paragraph 3, sentence 1): "stands as a testament"
→ Suggested replacement: "demonstrates"
...
Use template from prompts/suggestion-prompt.md.
For each issue:
Analyze context
Apply category-specific strategy
Generate replacement options
Validate replacement
{
"replacements": [
{
"issue_id": 1,
"original": "I hope this helps",
"replacement": null,
"action": "delete",
"confidence": "high",
"explanation": "Chatbot artifact with no informational value"
},
{
"issue_id": 2,
"original": "leverage",
"replacement": "use",
"action": "replace",
"confidence": "high",
"explanation": "Buzzword with simple direct alternative"
},
{
"issue_id": 3,
"original": "It's not just a tool, but a comprehensive solution",
"replacement": "The tool is a comprehensive solution",
"action": "rephrase",
"confidence": "medium",
"explanation": "Removed negative parallelism while preserving meaning"
}
]
}
For each issue (grouped by paragraph):
### Paragraph 2, Sentence 3
**Current**: "The system can leverage advanced algorithms to process data."
**Issue**: Buzzword - "leverage"
**Suggested change**: Replace with "use"
**Result**: "The system can use advanced algorithms to process data."
Options:
[A] Accept this change
[E] Edit the replacement
[S] Skip this change
[Q] Quit interactive mode (apply remaining automatically)
Automatically apply changes based on:
Apply changes in order (from end to beginning to preserve positions):
{
"iteration": 1,
"changes": [
{
"location": "paragraph 1, sentence 5",
"category": "Chatbot Artifacts",
"original": "I hope this helps",
"replacement": null,
"action": "delete"
},
{
"location": "paragraph 2, sentence 3",
"category": "Buzzwords",
"original": "leverage",
"replacement": "use",
"action": "replace"
}
]
}
iteration++
Using the same analysis process as Phase 2, scan the modified text for:
Remaining original issues
New issues introduced
Missed issues
if (issues.length == 0) {
# SUCCESS: Text is clean
proceed to Phase 6
}
if (iteration >= max_iterations) {
# MAX ITERATIONS: Stop with remaining issues
proceed to Phase 6
}
if (no progress made) {
# STALLED: Same issues remain
proceed to Phase 6
}
# Otherwise, continue loop
goto Phase 3 (Suggestion Generation)
Use prompt from prompts/verification-prompt.md:
# AI Writing Humanizer Report
## Summary
- **Status**: Clean / Issues Remaining
- **Iterations**: 3
- **Total changes**: 15
- **Word count**: 450 words
## Statistics
- Critical issues fixed: 1
- High priority issues fixed: 9
- Medium priority issues fixed: 3
- Low priority issues fixed: 2
## Changes by Category
### Chatbot Artifacts (1)
- Removed "I hope this helps"
### Buzzwords (6)
- "leverage" → "use"
- "utilize" → "use"
- "cutting-edge" → "modern"
- "ecosystem" → "system"
- "facilitate" → "help"
- "delve into" → "examine"
### Inflated Symbolism (3)
- "stands as a testament" → "demonstrates"
- "plays a vital role" → "is important for"
- "watershed moment" → "turning point"
### Participle Endings (2)
- Removed ", highlighting its importance"
- Removed ", ensuring quality"
### Filler Phrases (1)
- Removed "In today's ever-evolving world"
### Editorializing (2)
- Removed "It's important to note that"
- Removed "Worth mentioning is that"
## Before and After
### Before (excerpt)
"In today's ever-evolving world, the platform stands as a testament to innovation. It's not just
a tool, but a revolutionary ecosystem that leverages cutting-edge technology, ensuring seamless
integration. I hope this helps!"
### After
"The platform demonstrates innovation. The revolutionary system uses modern technology and
integrates smoothly."
## Verification Results
✓ All critical patterns removed
✓ All high-priority patterns addressed
✓ Grammar is correct
✓ Meaning preserved
✓ Natural tone achieved
## Remaining Issues
None - text is clean.
## Recommendations
Text is ready for publication. No further iterations needed.
For documents >5000 words:
Adjust auto-apply based on confidence:
Allow users to add custom patterns:
{
"pattern": "synergize",
"type": "word",
"category": "Buzzwords",
"priority": "high",
"replacements": ["combine", "work together"]
}
Process multiple files sequentially or in parallel:
Interactive Mode:
Batch Mode:
Report-Only Mode:
{
"auto_fix_priority": ["critical", "high"],
"require_approval_for": ["medium", "low"]
}
{
"categories_to_check": [
"chatbot-artifacts",
"buzzwords",
"inflated-symbolism"
],
"categories_to_skip": ["hedge-words", "formatting-patterns"]
}
Normal: Follow standard thresholds
Strict: Lower thresholds, flag more aggressively
{
"strict_mode": true,
"strict_thresholds": {
"em_dash": 1,
"transitions": 1,
"hedge_words": 2
}
}
If pattern matching fails:
If replacement introduces grammar errors:
If same issues remain after iteration:
Before finalizing:
Track these metrics:
This skill works well with:
1.0.0 (2025-12-16)
npx claudepluginhub cajias/claude-skills --plugin cc-plugin-authoringGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.