Agent skill

Canvas Humanizer

by X-isdoingreat in X-isdoingreat/canvas-pilot

A skill your agent uses when a local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric, source, lock, voice, and length constraints.

AGPL-3.0Auto-check passedWriting & Content

Install Canvas Humanizer

skills CLI
$ npx skills add X-isdoingreat/canvas-pilot --skill canvas-humanizer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install X-isdoingreat/canvas-pilot canvas-humanizer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/X-isdoingreat/canvas-pilot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/canvas-humanizer .claude/skills/canvas-humanizer && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
canvas-humanizer
GitHub stars
125
Token cost
~1.8k tokens
SKILL.md length
829 words
Files
1
Skills in repo
32
Repo updated
First seen
Licence
AGPL-3.0

At a glance

A skill your agent uses when a local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric, source, lock, voice, and length constraints.

  • Works in 7 steps: preserve before rewriting → generate candidates → deterministic gates → …
  • A local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric
  • SKILL.md covers Inputs and boundaries, Deterministic helpers, Stage 1: preserve before… and Stage 2: generate candidates, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Canvas Humanizer is an agent skill from X-isdoingreat/canvas-pilot. Use when a local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric, source, lock, voice, and length constraints. Operates on local files only and returns a reviewable transformed draft plus diagnostics.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Writing & Content, covering Humanizing AI text and Quizzes and assessments. The repository describes itself as: Local-first Canvas LMS AI agent that learns each course's recurring assignment workflow and reuses it through scan - approval - execute with student review. The licence is AGPL-3.0.

When your agent uses it

  • A local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric
  • Length constraints

Example prompts

  • “/canvas-humanizer”

Requirements

  • Python 3

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. preserve before rewriting
  2. generate candidates
  3. deterministic gates
  4. independent meaning and voice gate
  5. select and reassemble
  6. write artifacts atomically
  7. caller handback

What it can do on your machine

Read from SKILL.md and the folder at commit 6b79d5b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Canvas Humanizer loads about 1.8k tokens when it runs. Until then it costs about 69 tokens; SKILL.md has 829 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~69
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from X-isdoingreat/canvas-pilot at commit 6b79d5b, republished under its AGPL-3.0 licence (© X-isdoingreat). 829 words, ~1,757 tokens.

Download SKILL.mdSave it as .claude/skills/canvas-humanizer/SKILL.md (or your agent's skills folder).
name
canvas-humanizer
description
Use when a local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric, source, lock, voice, and length constraints. Operates on local files only and returns a reviewable transformed draft plus diagnostics.

canvas-humanizer

Transform a verified local draft without changing its assignment claims, citations, quoted material, required structure, or platform state. This skill is an optional drafting stage, never a correctness guarantee or submission step.

Inputs and boundaries

Require:

  • draft_path: existing .docx or .md;
  • output_path: new file with the same extension;
  • voice_register;
  • course_id, assignment_id, and the caller's stable work_dir;
  • optional student_identity, hard_locks, and rubric anchors.

work_dir must end in course-<course_id>__assignment-<assignment_id>, as produced by src.course_artifacts.stable_work_dir. Both input and output must be inside the current assignment's private run tree. Refuse to overwrite the only source copy; keep the pre-pass draft.

This skill performs local file I/O only. Never call Canvas or another learning platform. It does not write assignment result.json; the calling course skill does that after re-running its own verification.

Write humanizer_log.json beside output_path. Diagnostic values in that file are internal pipeline outcomes, not Canvas Pilot result statuses.

Deterministic helpers

Use the existing symbols instead of reimplementing them:

python
from src.humanizer_segmentation import split_sentences, segment_paragraph
from src.humanizer_segment_extract import extract_locks
from src.humanizer_score import score_candidate, divergence

For DOCX extraction, the existing command is also available:

text
python -m src.humanizer_segment_extract --draft <draft.docx> --out-dir <state-dir> --voice <voice>

It writes _state.json with paragraph/sentence IDs and masked locks.

Stage 1: preserve before rewriting

Read the complete draft and rubric anchors. Mark metadata/title/name blocks and paragraphs shorter than ten words as passthrough unless the caller explicitly opts them in.

Extract and lock:

  • direct quotations and quoted titles;
  • dates, years, percentages, measurements, and required numbers;
  • author/source names, citations, URLs, and bibliography entries;
  • rubric-required headings and exact prompt language;
  • caller-supplied hard locks.

Resolve overlaps longest-first and mask each sentence with paragraph-local [LOCK_N] placeholders. Split into sentences before masking. Record original paragraph index and intra-paragraph sentence index; those two values are the canonical segment identity.

Stage 2: generate candidates

For each humanizable sentence, create a small candidate pool using two strategies. Batch independent native Codex subagents to reduce wall time, but keep each subtask bounded to one masked sentence and one transformation.

Strategy R: round trip

Generate up to three candidates through distinct intermediate languages. Each subtask must:

  1. translate masked English to the assigned intermediate language while preserving every [LOCK_N] byte-for-byte;
  2. translate that result back to English in the requested voice;
  3. return only the candidate sentence.

Treat this as controlled diversification, not proof of detector evasion.

Strategy P: structured paraphrase

Generate up to three candidates using different structural operations:

  • clause reorder;
  • active/passive voice flip when grammatically possible;
  • verbal/nominal form flip.

Each subtask preserves all locks and meaning, stays within the requested voice, returns one complete sentence, and returns the original unchanged when the operation is genuinely inapplicable.

Never pass the full private assignment to a candidate subagent. Give only the masked sentence, voice, exact operation, and necessary rubric anchor.

Stage 3: deterministic gates

Substitute lock text back and call score_candidate(...) for every candidate. Reject a candidate if:

  • any required lock is missing, duplicated, changed, or reordered improperly;
  • its word-count ratio falls outside the helper's length-dependent band;
  • it is identical to the original because the transformation was inapplicable;
  • it introduces an unresolved placeholder.

Record lock, word-count, and divergence measurements in the log.

Show full SKILL.md (334 more words)Show less

Stage 4: independent meaning and voice gate

For the surviving candidates of one sentence, spawn one fresh native Codex review subagent with the original, candidates, voice criteria, and only the rubric anchors needed for that sentence. Require strict JSON per candidate:

json
{
  "candidate_id": "P1",
  "meaning_preserved": true,
  "voice_register_intact": true,
  "rubric_damage": false,
  "reason": "short evidence-based explanation"
}

Reject any candidate with meaning loss, voice drift, new factual content, citation damage, or rubric damage. The reviewer is a semantic gate; it does not score stylistic preference.

Stage 5: select and reassemble

Among candidates passing every gate, choose the greatest deterministic Levenshtein divergence from the original. If none pass, retain the original and mark a fallback. Do not force a rewrite merely to change text.

Reassemble sentences by (doc_paragraph_index, intra_para_index). Preserve paragraph count/order, passthrough paragraphs, headings, and DOCX layout. For a DOCX, preserve styles, headers, tables, and non-text structure; replacing text must not flatten the document.

Measure each final paragraph against its original word count. Flag ratios outside [0.85, 1.15] for caller review. Check all locks again over the final document.

Stage 6: write artifacts atomically

Write the output to a temporary sibling and atomically replace output_path only after it opens successfully. Write humanizer_log.json with:

  • input/output paths and voice;
  • paragraph and segment counts;
  • candidate/gate counts per segment;
  • selected strategy and divergence;
  • fallback segments and reasons;
  • paragraph word-count ratios;
  • final lock, citation, and placeholder checks;
  • internal outcome and limitations.

The log must not contain private source bodies beyond the minimum sentence-level trace needed for local debugging.

Stage 7: caller handback

Return the output and log paths plus a concise summary. Explicitly state that the caller must rerun assignment-level checks for word count, citations, structure, source grounding, and rubric coverage. Do not mark an assignment ready or submitted here.

Failure behavior

  • Invalid/missing input: do not create output; write a diagnostic when possible.
  • Some segments have no safe candidate: retain originals and continue.
  • Output cannot reopen or final lock check fails: keep the original draft, remove the invalid temporary output, and report failure.
  • Never weaken locks, meaning gates, or rubric gates to obtain more rewrites.

© X-isdoingreat, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/canvas-humanizer of X-isdoingreat/canvas-pilot.

Open the folder on GitHubat commit 6b79d5b

Compare with similar skills

Canvas Humanizer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Canvas Humanizer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Canvas Humanizer this skillX-isdoingreat/canvas-pilot125—~1.8kAutomated safety check: PassAGPL-3.0
Bankr CommunitiesBankrBot/skills1.2k—~4.7kAutomated safety check: PassNone
Mizchi Blog Stylemizchi/skills360—~2.2kAutomated safety check: PassNone
Humanize EnglishAnastasiyaW/codex-claude-code-config154—~1.8kAutomated safety check: PassMIT
Jev Question Translatorlawve-ai/awesome-legal-skills847—~6.9kAutomated safety check: PassApache-2.0
HumanizerAzure-Samples/interview-coach-agent-framework17338 repos~5.8kAutomated safety check: PassMIT

Similar skills

  • Bankr Communities

    BankrBot/skills

    Bankr Space ↔ bankr.bot/agents two-way sync (BANKR-PROJECT-SYNC.md Paths B+C).

    1.2k GitHub stars~4.7k tokensUpdated today
    Writing & ContentAuto-check passed
  • Mizchi Blog Style

    mizchi/skills

    Japanese style guide and AI-tone rubric for mizchi-authored blog posts (zenn / dev.to), calibrated on 18 articles / 937 sentences / 766 paragraphs.

    360 GitHub stars~2.2k tokensUpdated 8 days ago
    Writing & ContentAuto-check passed
  • Humanize English

    AnastasiyaW/codex-claude-code-config

    Edit English drafts for clear, natural language while preserving facts, uncertainty, technical meaning, citations and genre.

    154 GitHub stars~1.8k tokensUpdated today
    Writing & ContentAuto-check passed
  • Jev Question Translator

    lawve-ai/awesome-legal-skills

    Turns a legal question, a set of draft questions, or source material such as a statute, jury instruction, rubric, contract checklist, or coding manual into a battery of narrow questions that…

    847 GitHub stars~6.9k tokensUpdated 7 days ago
    Writing & ContentAuto-check passed
  • Humanizer

    Azure-Samples/interview-coach-agent-framework

    Official

    Remove signs of AI-generated writing from text. An agent skill from Azure-Samples/interview-coach-agent-framework.

    173 GitHub starsUsed in 38 repos~5.8k tokens
    Writing & ContentAuto-check passed
  • Avoid AI Writing

    conorbronsdon/avoid-ai-writing

    Audit and rewrite content to remove AI writing patterns ("AI-isms").

    4.9k GitHub starsUsed in 3 repos~8.1k tokens
    Writing & ContentAuto-check passed

More from X-isdoingreat/canvas-pilot

All 32 skills in this repo
  • Daily Work Tweet

    X-isdoingreat/canvas-pilot

    A skill your agent uses when verified work from today or another day should become an X/Twitter post, build-in-public update, ship log, or bilingual draft.

    125 GitHub stars~1.6k tokensUpdated 2 mo ago
    Auto-check passed
  • Canvas Awkward Syntax

    X-isdoingreat/canvas-pilot

    A skill your agent uses when a short local academic draft needs role-aware syntax diversification while preserving meaning, locks, source grounding, rubric-critical openings, and document structure.

    125 GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Canvas Cron

    X-isdoingreat/canvas-pilot

    A skill your agent uses when managing Canvas Pilot schedules: install, inspect, pause, change, delete, or safely test scheduled scans and runs.

    125 GitHub stars~2.1k tokensUpdated 2 mo ago
    Auto-check: notes
  • Canvas Essay

    X-isdoingreat/canvas-pilot

    A skill your agent uses for an approved long academic-writing assignment routed by canvas-execute after the deterministic writing router selects essay.

    125 GitHub stars~2.2k tokensUpdated 2 mo ago
    Auto-check passed
  • Canvas Generic

    X-isdoingreat/canvas-pilot

    A skill your agent uses for an approved Canvas assignment that no specialized course skill can handle.

    125 GitHub stars~2.4k tokensUpdated 2 mo ago
    Auto-check passed
  • Canvas Humanizer Loop

    X-isdoingreat/canvas-pilot

    A skill your agent uses when a local draft needs repeated canvas-humanizer passes with independent meaning, structure, citation, voice, and rubric-damage checks.

    125 GitHub stars~1.7k tokensUpdated 2 mo ago
    Auto-check passed

Questions about Canvas Humanizer

What does Canvas Humanizer do?

A skill your agent uses when a local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric, source, lock, voice, and length constraints. Canvas Humanizer is an agent skill from X-isdoingreat/canvas-pilot. Use when a local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric, source, lock, voice, and length constraints.

When should I use Canvas Humanizer?

Canvas Humanizer fits situations like: A local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric; length constraints.

How do I install Canvas Humanizer in Claude Code?

Run `npx skills add X-isdoingreat/canvas-pilot --skill canvas-humanizer -a claude-code`. Or copy the skill folder (.agents/skills/canvas-humanizer in X-isdoingreat/canvas-pilot) into .claude/skills/canvas-humanizer in your project. Claude Code loads it when a task matches its description.

How do I install Canvas Humanizer in Codex?

Run `npx skills add X-isdoingreat/canvas-pilot --skill canvas-humanizer -a codex`. Or copy the skill folder (.agents/skills/canvas-humanizer in X-isdoingreat/canvas-pilot) into .agents/skills/canvas-humanizer in your project. Codex loads it when a task matches its description.

Can I use Canvas Humanizer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add X-isdoingreat/canvas-pilot --skill canvas-humanizer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/canvas-humanizer, .gemini/skills/canvas-humanizer, .github/skills/canvas-humanizer and .opencode/skills/canvas-humanizer in your project.

What does Canvas Humanizer need to run?

SKILL.md names no scripts, command-line tools or credentials: Canvas Humanizer is instructions for the agent only. Our summary lists: Python 3.

Does Canvas Humanizer access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Canvas Humanizer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Canvas Humanizer use?

Canvas Humanizer is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Canvas Humanizer use?

About 1.8k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Canvas Humanizer?

Skills that share tags, products or a category with Canvas Humanizer: Bankr Communities (BankrBot/skills, 1.2k stars), Mizchi Blog Style (mizchi/skills, 360 stars), Humanize English (AnastasiyaW/codex-claude-code-config, 154 stars) and Jev Question Translator (lawve-ai/awesome-legal-skills, 847 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Canvas Humanizer?

X-isdoingreat (a GitHub user) maintains it in X-isdoingreat/canvas-pilot, which has 125 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on July 31, 2026.

Source: X-isdoingreat/canvas-pilot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.