
Humanize Beagle
- 70 installs
- 74 repo stars
- Updated July 21, 2026
- existential-birds/beagle
Helps with ai & agent building tasks.
About
humanize-beagle is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- humanize-beagle
- AI & Agent Building
- AI-coding skill
Humanize Beagle by the numbers
- 70 all-time installs (skills.sh)
- Ranked #5,700 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/existential-birds/beagle --skill humanize-beagleAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 70 |
|---|---|
| repo stars | ★ 74 |
| Last updated | July 21, 2026 |
| Repository | existential-birds/beagle ↗ |
What it does
Helps with ai & agent building tasks.
Files
Humanize
Apply fixes from a previous review-ai-writing run with automatic safe/risky classification. Builds on the writing principles in docs-style.
Usage
Invoke the humanize-beagle skill with optional flags: humanize-beagle [--dry-run] [--all] [--category <name>].
Flags:
--dry-run- Show what would be fixed without changing files--all- Fix entire codebase (runs review with --all first)--category <name>- Only fix specific category:content|vocabulary|formatting|communication|filler|code_docs
Instructions
Hard gates
Advance past destructive or evidence-bound steps only when each PASS is true (commands and artifacts—not “I checked mentally”):
1. G1 — Safe to edit files — PASS: git status --porcelain is empty, or git stash push -u -m "beagle-docs: pre-humanize backup" exits 0. 2. G2 — Review input is real JSON with expected shape — PASS: .beagle/ai-writing-review.json exists and the file parses as JSON with a git_head key and a findings value that is an array (possibly empty). Use the jq -e command in step 3, or the same checks with json.load in Python. If this fails, stop with a parse/validation error—do not apply fixes. 3. G3 — References before rewrites — PASS: For each finding you will edit, the references/*.md files required by step 4 for that category/type are read in this session before you change text. 4. G4 — Per-file validation — PASS: Every modified file passes the step 8 check for its type; otherwise run git checkout -- "$file" for that file and do not list it as OK in the summary. 5. G5 — Delete review file only on full success — PASS: Run rm .beagle/ai-writing-review.json only when G4 holds for all files you are keeping unchanged from validation failures (aligns with step 10).
1. Parse Arguments
Extract flags from $ARGUMENTS:
--dry-run- Preview mode only--all- Full codebase scan--category <name>- Filter to specific category
2. Pre-flight Safety Checks
# Check for uncommitted changes
git status --porcelainIf working directory is dirty, warn:
Warning: You have uncommitted changes. Creating a git stash before proceeding.
Run `git stash pop` to restore if needed.Create stash if dirty:
git stash push -u -m "beagle-docs: pre-humanize backup"G1 PASS: Either the working tree was already clean, or the stash command exited 0.
3. Load Review Results
Check for existing review file:
cat .beagle/ai-writing-review.json 2>/dev/nullIf file missing:
- If
--allflag: Invoke the [review-ai-writing](../review-ai-writing/SKILL.md) skill with--allfirst - Otherwise: Fail with: "No review results found. Invoke the review-ai-writing skill first."
If file exists, validate JSON and freshness (G2):
# Required shape: parseable JSON with git_head and findings array (may be empty)
jq -e 'has("git_head") and ((.findings // []) | type == "array")' .beagle/ai-writing-review.json >/dev/null 2>&1 \
|| { echo "Invalid or incompatible ai-writing-review.json"; exit 1; }
# Get stored git HEAD from JSON
stored_head=$(jq -r '.git_head' .beagle/ai-writing-review.json)
current_head=$(git rev-parse HEAD)
if [ "$stored_head" != "$current_head" ]; then
echo "Warning: Review was run at commit $stored_head, but HEAD is now $current_head"
fiIf stale, prompt: "Review results are stale. Re-run review? (y/n)"
4. Load Reference Material
Read the appropriate reference files based on the findings being fixed:
- Read
references/vocabulary-swaps.mdwhen applyingai_vocabulary_highorai_vocabulary_lowfixes - Read
references/fix-strategies.mdfor strategy details and before/after examples for any category - Read
references/developer-voice.mdfor tone/register guidance when rewriting prose
Only load what you need — if fixing only vocabulary, skip the voice guide.
5. Filter Findings
If --category is set, filter findings to that category only.
Partition remaining findings by fix_safety:
Safe Fixes (auto-apply):
chat_leak- Delete conversational artifactscutoff_disclaimer- Delete knowledge cutoff referencesfiller_phrase- Delete filler phrasesheading_restatement- Delete restating first sentenceemoji_decoration- Remove emoji from technical textboldface_overuse- Remove excessive bold formattingai_vocabulary_high- Swap high-signal AI wordsnarrating_obvious- Delete obvious code commentssynthetic_opener- Delete "In today's..." openerssycophantic_tone- Delete or neutralize praisevague_authority- Delete unattributed claimsexcessive_hedging- Remove qualifiersgeneric_conclusion- Delete summary paddingcopula_avoidance- Use "is/are" naturallyrhetorical_device- Delete rhetorical questionsem_dash_overuse- Replace formulaic em dashes with commas, parentheses, or colonsthematic_break- Remove horizontal rules before headingstitle_case_heading- Convert AI title-case headings to sentence casecurly_quotes- Normalize curly quotes/apostrophes to straightnegative_parallelism- Delete "Not just X, but also Y" filler constructionschallenges_and_prospects- Delete "Despite its... faces challenges..." formulaic wrappers
Needs Review Fixes (require confirmation):
promotional_language- Rewrite with specificsformulaic_structure- Restructure sectionssynonym_cycling- Pick consistent termcommit_inflation- Rewrite commit scopetautological_docstring- Rewrite or delete docstringexhaustive_enumeration- Trim parameter docsthis_noun_verbs- Rewrite docstring voiceai_vocabulary_low- Reduce cluster densityapologetic_error- Rewrite error messagerule_of_three- Simplify three-item lists used as filler comprehensivenessinline_header_list- Restructure boldfaced inline-header vertical listsunnecessary_table- Convert small tables to proseregression_to_mean- Restore specific facts replaced by vague praise
6. Apply Safe Fixes
If --dry-run:
## Safe Fixes (would apply automatically)
| # | File | Line | Type | Action |
|---|------|------|------|--------|
| 1 | README.md | 3 | synthetic_opener | Delete "In today's rapidly evolving..." |
| 2 | src/auth.py | 15 | narrating_obvious | Delete "# Check if user exists" |
| 3 | README.md | 42 | ai_vocabulary_high | Replace "utilize" with "use" |
...Otherwise, apply fixes grouped by file to minimize file I/O:
1. Sort findings by file, then by line number (descending, to avoid offset drift) 2. For each file, apply all safe fixes in reverse line order 3. For git artifacts (git:commit:*, git:pr:*), skip — these can't be auto-fixed. Report them for manual attention.
7. Handle Needs Review Fixes
If --dry-run, list them:
## Needs Review Fixes (would prompt interactively)
| # | File | Line | Type | Original | Suggested |
|---|------|------|------|----------|-----------|
| 4 | README.md | 8 | promotional_language | "powerful, enterprise-grade solution" | "authentication library" |
...Otherwise, for each fix, prompt interactively:
[README.md:8] Promotional language: "powerful, enterprise-grade solution"
Suggested: "authentication library"
(y)es / (n)o / (e)dit / (s)kip all:Track user choices:
y- Apply this fix as suggestedn- Skip this fixe- User provides custom replacements- Skip all remaining interactive fixes
8. Validate Results
For each modified markdown file, verify basic validity:
# Check for broken markdown (unclosed code blocks, broken links)
# Simple check: matching ``` pairs
grep -c '```' "$file" | awk '{print ($1 % 2 == 0) ? "OK" : "WARNING: odd number of code fences"}'For modified source files, check syntax is still valid:
Python:
python3 -c "import ast; ast.parse(open('$file').read())"TypeScript/JavaScript:
npx -y acorn --ecma2020 "$file" > /dev/null 2>&1If validation fails for any file, revert that file:
git checkout -- "$file"
echo "Reverted $file due to validation failure"9. Report Results
## Humanize Summary
### Applied Fixes
- [x] README.md:3 - Deleted synthetic opener
- [x] README.md:42 - Replaced "utilize" with "use"
- [x] src/auth.py:15 - Deleted obvious comment
### Interactive Fixes
- [x] README.md:8 - Rewrote promotional language (user approved)
- [ ] docs/guide.md:22 - Skipped by user
### Skipped (Git Artifacts)
- [ ] git:commit:abc1234 - Chat leak in commit message (amend manually)
### Validation
- README.md: OK
- src/auth.py: OK
### Diff Summarygit diff --stat10. Cleanup
On successful completion (all validations pass):
rm .beagle/ai-writing-review.jsonIf any validation fails, keep the file and report:
Review file preserved at .beagle/ai-writing-review.json
Fix issues and re-run, or restore with: git stash popCore Principles
1. Delete first, rewrite second. Most AI patterns are padding. Removing them improves the text. 2. Use simple words. Replace "utilize" with "use", "facilitate" with "help", "implement" with "add". 3. Keep sentences short. Break compound sentences. One idea per sentence. 4. Preserve meaning. Never change what the text says, only how it says it. 5. Match the register. Commit messages are terse. READMEs are conversational. API docs are precise. Read references/developer-voice.md for the full register guide. 6. Don't overcorrect. A slightly formal sentence is fine. Only fix patterns that read as obviously AI-generated. 7. Understand regression to the mean. LLMs produce the most statistically likely output. Specific, unusual facts get replaced with generic, positive descriptions. When humanizing, restore specificity — replace vague praise with concrete details. 8. Score density, not individual words. AI vocabulary words co-occur. One or two may be coincidental; a cluster of 3+ is a strong AI tell.
Example
Invoke the humanize-beagle skill with flags:
--dry-run— preview all fixes without applying--category vocabulary— fix only vocabulary issues--all— full codebase scan and fix--category filler --dry-run— preview filler fixes only
Rules
- Always load reference material before applying fixes (step 4); satisfy G3 per finding
- Never modify files without a clean working tree or a successful stash (G1)
- Apply safe fixes in reverse line order to avoid offset drift
- Never auto-fix git artifacts (commits, PRs) — report them for manual action
- Validate every modified file before considering it done (G4)
- Revert files that fail validation
- Do not present the step 9 summary as “complete” until step 8 validation has passed for every file you are keeping
- Remove
.beagle/ai-writing-review.jsononly after full success (G5); if validation failed partway, keep the file and follow step 10
Developer Voice Guidelines
Good developer writing is:
- Conversational but precise. Write like you'd explain it to a colleague, but get the details right.
- Direct. State opinions. "Use X" not "You might consider using X".
- Terse where appropriate. Commit messages and code comments should be short. Don't pad them.
- Specific. Replace vague claims with concrete details, numbers, or examples.
- Consistent. Pick one term and stick with it. Don't cycle synonyms.
Register Guide
Match tone and length to the artifact type.
| Artifact | Tone | Length | Example |
|---|---|---|---|
| Commit message | Terse, imperative | 50-72 chars | fix: prevent nil panic in auth middleware |
| Code comment | Brief, explains why | 1-2 lines | // retry once — transient DNS failures are common in k8s |
| Docstring | Precise, adds value | What the name doesn't tell you | """Raises ConnectionError after 3 retries.""" |
| PR description | Structured, factual | Context + what changed + how to test | Bullet points, not paragraphs |
| README | Conversational, scannable | As short as possible | Start with what it does, then how to use it |
| Error message | Actionable, specific | What happened + what to do | Config file not found at ~/.app/config.yml. Run 'app init' to create one. |
Fix Strategies by Category
Strategies for each finding type, organized by category. Each entry includes the fix approach, risk level, and before/after examples.
Table of Contents
- Content Patterns
- Vocabulary Patterns
- Formatting Patterns
- Communication Patterns
- Filler Patterns
- Code Docs Patterns
---
Content Patterns
| Type | Strategy | Risk |
|---|---|---|
| Promotional language | Replace superlatives with specifics | Needs review |
| Vague authority | Delete the claim or add a citation | Safe |
| Formulaic structure | Remove the intro/conclusion wrapper | Needs review |
| Synthetic openers | Delete the opener, start with the point | Safe |
| Negative parallelism | Delete the filler construction, keep the point | Safe |
| Rule of three | Simplify to what matters, drop padding items | Needs review |
| Challenges-and-prospects | Delete the formulaic "Despite..." wrapper | Safe |
Regression to the Mean
LLMs produce the most statistically likely output. Specific, unusual facts get replaced with generic, positive descriptions. When humanizing, restore specificity — replace vague praise with concrete details.
Before:
In today's rapidly evolving software landscape, authentication is a crucial
component that plays a pivotal role in securing modern applications.After:
This guide covers authentication setup for the API.Negative Parallelism
LLMs produce "Not just X, but also Y" and "Not X, but Y" constructions that add words without adding meaning. Delete the construction, keep the point.
Before:
This is not just a logging library, but also a comprehensive observability
framework that empowers developers to gain valuable insights.After:
This is a logging library with structured output and trace correlation.Rule of Three
LLMs overuse three-item lists ("adjective, adjective, adjective") to make superficial analyses appear comprehensive. Keep only items that carry specific meaning.
Before:
The event features keynote sessions, panel discussions, and networking opportunities.After (keep only what's specific):
The event includes keynote sessions and breakout workshops.Challenges-and-Prospects Formula
Rigid formula: "Despite its [positive words], [subject] faces challenges..." ending with vague positive assessment. Delete the wrapper, state the actual limitation with specifics.
Before:
Despite its robust architecture, the system faces challenges typical of
distributed environments. Despite these challenges, with its strategic
design and ongoing improvements, the platform continues to thrive.After:
Known limitations: network partitions can cause stale reads for up to 30s.
See the consistency model docs for details.---
Vocabulary Patterns
| Type | Strategy | Risk |
|---|---|---|
| High-signal AI words | Direct word swap | Safe |
| Low-signal clusters | Reduce density, keep 1-2 | Needs review |
| Copula avoidance | Use "is/are" naturally | Safe |
| Rhetorical devices | Delete the question, state the fact | Safe |
| Synonym cycling | Pick one term, use it consistently | Needs review |
| Commit inflation | Rewrite to match actual change scope | Needs review |
Copula Avoidance
LLMs substitute simple "is/are" with elaborate alternatives like "serves as", "stands as", "boasts", "features", "offers". Use the simple form.
Before:
feat: Leverage robust caching paradigm to facilitate seamless data retrievalAfter:
feat: add response caching for faster readsSee references/vocabulary-swaps.md for the complete word swap table.
---
Formatting Patterns
| Type | Strategy | Risk |
|---|---|---|
| Boldface overuse | Remove bold from non-key terms | Safe |
| Emoji decoration | Remove emoji from technical content | Safe |
| Heading restatement | Delete the restating sentence | Safe |
| Title case headings | Convert to sentence case | Safe |
| Em dash overuse | Replace with commas, parentheses, or colons | Safe |
| Thematic breaks | Remove horizontal rules before headings | Safe |
| Curly quotes | Normalize to straight quotes/apostrophes | Safe |
| Inline-header lists | Restructure or convert to prose | Needs review |
| Unnecessary tables | Convert small tables to prose | Needs review |
Boldface overuse — Before:
## Error Handling
**Error handling** is a **critical** aspect of building **reliable** applications.
The `handleError` function **catches** and **processes** all **runtime errors**.After:
## Error Handling
The `handleError` function catches runtime errors and logs them with context.Em dash overuse — Before:
The parser — which handles all input formats — validates each field — including nested objects — before returning.After:
The parser validates each field (including nested objects) before returning. It handles all input formats.Title case — Before:
## Strategic Negotiations And Global PartnershipsAfter:
## Strategic negotiations and global partnerships---
Communication Patterns
| Type | Strategy | Risk |
|---|---|---|
| Chat leaks | Delete entirely | Safe |
| Cutoff disclaimers | Delete entirely | Safe |
| Sycophantic tone | Delete or neutralize | Safe |
| Apologetic errors | Rewrite as direct error message | Needs review |
Before:
# Great implementation! This elegantly handles the edge case.
# As of my last update, this API endpoint supports JSON.After:
# Handles the re-entrant edge case from issue #42.
# This endpoint accepts JSON.---
Filler Patterns
| Type | Strategy | Risk |
|---|---|---|
| Filler phrases | Delete the phrase | Safe |
| Excessive hedging | Remove qualifiers, state directly | Safe |
| Generic conclusions | Delete the conclusion paragraph | Safe |
Before:
It's worth noting that the configuration file might potentially need to be
updated. Going forward, this could possibly affect performance.After:
Update the configuration file. This affects performance.---
Code Docs Patterns
| Type | Strategy | Risk |
|---|---|---|
| Tautological docstrings | Delete or add real information | Needs review |
| Narrating obvious code | Delete the comment | Safe |
| "This noun verbs" | Rewrite in active/direct voice | Safe |
| Exhaustive enumeration | Keep only non-obvious params | Needs review |
Before:
def get_user(user_id: int) -> User:
"""Get a user.
This method retrieves a user from the database by their ID.
Args:
user_id: The ID of the user to get.
Returns:
User: The user object.
Raises:
ValueError: If the user ID is invalid.
"""
return db.query(User).get(user_id)After:
def get_user(user_id: int) -> User:
"""Raises UserNotFound if ID doesn't exist in the database."""
return db.query(User).get(user_id)Vocabulary Swap Reference
Direct word replacements for high-signal and medium-signal AI vocabulary. Score density, not individual words — a cluster of 3+ AI words in proximity is one of the strongest AI tells.
High-Signal Words
These words spiked in frequency after 2022 and co-occur in AI-generated text.
| AI Word | Replacement |
|---|---|
| utilize | use |
| leverage (as "use") | use |
| delve | look at, explore, examine |
| facilitate | help, enable, let |
| endeavor | try, work, effort |
| harnessing | using |
| paradigm | approach, model, pattern |
| whilst | while |
| furthermore | also, and |
| moreover | also, and |
| robust (non-technical) | reliable, solid, strong |
| seamless | smooth, easy |
| cutting-edge | modern, latest, new |
| pivotal | important, key |
| elevate | improve |
| empower | let, enable |
| revolutionize | change, improve |
| unleash | release, enable |
| synergy | (delete — rarely means anything) |
| embark | start, begin |
| meticulous/meticulously | careful, thorough |
| intricate/intricacies | complex, details |
| tapestry | (delete or rewrite — never means anything useful) |
| testament | proof, sign, evidence |
| garner | get, earn, attract |
| interplay | interaction, relationship |
| landscape | (delete or use specific noun) |
Medium-Signal Words
Less distinctive individually, but meaningful in clusters.
| AI Word | Replacement |
|---|---|
| bolstered | supported, strengthened |
| fostering | building, encouraging |
| showcasing | showing |
| underscore | show, highlight |
| enhance | improve |
| crucial | important |
| vibrant | (delete or use specific adjective) |
| nestled | located, in |
| groundbreaking | new, first |
| renowned | well-known, popular |
Era Context
AI vocabulary shifts across model generations. Words co-occur: where one appears, others cluster nearby.
- 2023-mid 2024 (GPT-4 era): delve, tapestry, meticulous, intricate, garner, interplay, testament, vibrant
- Mid 2024-mid 2025 (GPT-4o era): bolstered, fostering, showcasing, align with, underscore, enhance
- Mid 2025+ (GPT-5 era): showcasing, highlighting, emphasizing, enhance (plus notability/attribution words)
What NOT to Flag
Do NOT treat these as AI indicators (high false-positive rate):
- Perfect grammar alone (many humans write well)
- Formal or academic prose (correlation is with specific words, not formality)
- Transition words alone (only a few specific transitions are AI-overused)
- Mixed casual/formal registers (common in technical fields)