Agent skill

Canvas Awkward Syntax

by X-isdoingreat in 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.

AGPL-3.0Auto-check passedEducation

Install Canvas Awkward Syntax

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

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

GitHub CLI
$ gh skill install X-isdoingreat/canvas-pilot canvas-awkward-syntax --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-awkward-syntax .claude/skills/canvas-awkward-syntax && 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-awkward-syntax
GitHub stars
125
Token cost
~2k tokens
SKILL.md length
851 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 short local academic draft needs role-aware syntax diversification while preserving meaning, locks, source grounding, rubric-critical openings, and document structure.

  • Works in 7 steps: segment, lock, and infer roles → assign transformations deterministically → transformation semantics → …
  • A short local academic draft needs role-aware syntax diversification while preserving meaning
  • SKILL.md covers Inputs and boundaries, Required helpers, Stage 1: segment, lock, and… and Stage 2: assign…, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Canvas Awkward Syntax is an agent skill from X-isdoingreat/canvas-pilot. Use when a short local academic draft needs role-aware syntax diversification while preserving meaning, locks, source grounding, rubric-critical openings, and document structure. Produce a reviewable local variant and never submit.

Its SKILL.md is about 2k 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 Education, covering 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 short local academic draft needs role-aware syntax diversification while preserving meaning
  • Source grounding
  • Rubric-critical openings
  • Document structure

Example prompts

  • “/canvas-awkward-syntax”

Requirements

  • Python 3

Workflow steps

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

  1. segment, lock, and infer roles
  2. assign transformations deterministically
  3. transformation semantics
  4. bounded native subagents
  5. validate each rewrite
  6. splice and document verification
  7. artifacts and 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).

    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 Awkward Syntax loads about 2k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 851 words of instructions outside code blocks.

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

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). 851 words, ~1,956 tokens.

Download SKILL.mdSave it as .claude/skills/canvas-awkward-syntax/SKILL.md (or your agent's skills folder).
name
canvas-awkward-syntax
description
Use when a short local academic draft needs role-aware syntax diversification while preserving meaning, locks, source grounding, rubric-critical openings, and document structure. Produce a reviewable local variant and never submit.

canvas-awkward-syntax

Create one direct structural rewrite per eligible sentence. This is a bounded humanizing pass for short drafts, not permission to degrade rubric-critical language or fabricate content.

Inputs and boundaries

Require:

  • draft_path, output_path, and voice_register;
  • course_id, assignment_id, and stable assignment work_dir;
  • assignment spec/rubric anchors and optional hard locks;
  • optional role overrides for ambiguous sentences.

Require work_dir to end in course-<course_id>__assignment-<assignment_id>. Keep the original and write awkward_log.json beside the output. Validate the path against src.course_artifacts.stable_work_dir before writing.

This skill reads and writes local files only. It never calls Canvas or another learning platform, never writes assignment result.json, and never declares a submission ready.

Required helpers

Use the existing symbols:

python
from src.humanizer_segmentation import split_sentences
from src.humanizer_segment_extract import extract_locks
from src.awkward_transformation_assigner import (
    ROLE_ALLOWLIST,
    assign_transformations,
    contains_banned,
    validate_transformation,
    write_assignment_report,
)

Do not duplicate the role allowlist or balancing solver in prose code.

Stage 1: segment, lock, and infer roles

Split before masking. Preserve (doc_paragraph_index, intra_para_index) as the canonical segment identity. Treat short metadata/title/name paragraphs as passthrough.

Lock quotations, citations, source names, dates, years, numbers, percentages, required headings, URLs, bibliography entries, and caller-supplied spans.

Infer roles from position and local evidence:

  • first paragraph: opener, thesis, setup;
  • body: topic sentence, quote lead-in/follow-up, elaboration, anecdote, closing;
  • last paragraph: thesis restatement, structural reflection, closing.

When inference is ambiguous, prefer the safer gate-sensitive role or honor a caller-provided role map. Never infer an anecdote/source relationship that the text does not support.

Stage 2: assign transformations deterministically

Build records containing seg_id, paragraph/sentence indexes, role, and v0_text, then call assign_transformations(records).

The helper enforces:

  • role-specific allowlists;
  • per-paragraph repetition caps;
  • document-wide opener-category caps;
  • short-sentence fallback;
  • controlled body register breaks and a conclusion first-person shift only in allowed roles;
  • deterministic relaxation when a strict assignment is infeasible.

Persist the assignment with write_assignment_report(...) before generation.

Stage 3: transformation semantics

Apply exactly the operation assigned by the helper:

TransformationRequired effect
voice_flipactive↔passive without changing actor/action
clause_reordermove an existing subordinate clause; add no claim
nominalize_flipverbal↔nominal structure with same proposition
pseudo_cleftforeground an existing element with a cleft
fronted_ppmove one existing prepositional phrase to the front
fronted_when / fronted_whileforeground an existing temporal/contrast relation
fronted_participle_post_authorinsert a source-grounded participial appositive after an author
gerund_subjectrecast the existing action as a gerund subject
right_branching_extensionretain subject/main verb early and move existing modifiers rightward
topic_comment_chineselimited topic-comment order in an allowed body role
article_omission_eslomit at most the configured articles without obscuring reference
dual_connective_chineseuse the configured paired connective without changing logic
extraposed_copulause an allowed It is ... that ... frame
fact_noun_complementexpress the existing proposition through the fact that
formulaic_verb_nounuse an allowed verb-noun collocation with same relation
folk_wisdom_opener / discourse_pleonasmadd only a configured discourse frame, no new fact
slang_breakshort related aside only in an allowed low-risk body slot
first_person_reflectionsource-grounded first-person reflection in an allowed conclusion role
minimal_lexicalsmallest safe fallback change

Do not apply a transformation whose required semantic relation is absent. In that case return the original and mark inapplicable.

Avoid em dashes and semicolons when the configured voice bans them. A transformation-specific validator must check the required structure rather than trusting the generated label.

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

Stage 4: bounded native subagents

Spawn one native Codex subagent per sentence, in parallel within the current thread limit. Give each only:

  • masked sentence and locks;
  • assigned transformation and exact semantics above;
  • role, voice, and essential rubric/source anchor;
  • punctuation and banned-phrase constraints;
  • instruction to return one sentence and no explanation.

Subagents do not read or write files. The main session owns validation, fallback, splicing, and all artifacts.

Stage 5: validate each rewrite

Reject and retry once when any check fails:

  • required [LOCK_N] set differs or substituted lock text changes;
  • sentence count is not exactly one;
  • validate_transformation(original, candidate, assigned_name)["ok"] is false;
  • meaning, source relationship, tense/causality, or rubric requirement changes;
  • word count falls outside the configured band;
  • unresolved placeholder appears;
  • contains_banned(candidate) returns a phrase;
  • punctuation violates the configured ban.

Use one fresh native Codex semantic reviewer for ambiguous meaning/voice cases. After one failed retry, restore the original sentence. Never relax lock, meaning, source, or rubric gates.

Stage 6: splice and document verification

Restore locks and reassemble by canonical indexes. Preserve paragraph count, headings, citations, quotations, and non-text document structure.

Verify at document level:

  • every lock and source anchor remains exactly once where expected;
  • non-target/pass-through text is unchanged;
  • no segment split/merge and no paragraph reorder;
  • assignment word-count bounds still pass;
  • every accepted rewrite passes contains_banned;
  • DOCX/PDF/Markdown output opens and contains no unresolved placeholder.

If a document-level check fails, roll back the offending segments. If the output still cannot verify, keep the original and report failure.

Stage 7: artifacts and handback

Write output_path atomically. Write awkward_log.json with:

  • stable assignment IDs and input/output paths;
  • role and assigned transformation per segment;
  • relaxation level from the deterministic solver;
  • accepted/retried/fallback outcome and validator evidence;
  • lock, word-count, banned-phrase, and document checks;
  • transformation/category distribution;
  • remaining human-review risks.

Return output/log paths to the caller. The calling course skill must rerun its full spec/rubric/source verification before it can write draft_ready.

Failure behavior

  • Missing spec/rubric anchors for a rubric-sensitive draft: stop.
  • Transformation inapplicable or unsafe: restore that original segment.
  • Excessive fallbacks or document check failure: return the untouched original as safest artifact and say why.
  • Do not optimize against one external detector result; correctness and rubric preservation outrank syntax divergence.

© 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-awkward-syntax of X-isdoingreat/canvas-pilot.

Open the folder on GitHubat commit 6b79d5b

Compare with similar skills

Canvas Awkward Syntax 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 Awkward Syntax compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Canvas Awkward Syntax this skillX-isdoingreat/canvas-pilot125—~2kAutomated safety check: PassAGPL-3.0
DeepTutor CLIHKUDS/DeepTutor41k—~2.8kAutomated safety check: PassApache-2.0
AI Engineering Placement Quizrohitg00/ai-engineering-from-scratch66k—~2kAutomated safety check: PassMIT
Codebase to Coursezarazhangrui/codebase-to-course5.7k—~4.4kAutomated safety check: PassNone
AI Engineering Phase Quizrohitg00/ai-engineering-from-scratch66k—~2.1kAutomated safety check: PassMIT
Scholar EvaluationK-Dense-AI/claude-scientific-writer2.4k2 repos~2.9kAutomated safety check: NotesMIT

Similar skills

  • DeepTutor CLI

    HKUDS/DeepTutor

    Teaches the agent to set up and run DeepTutor from the command line: chat and capabilities, knowledge bases, partners, memory, sessions, notebooks and the server or Web app.

    41k GitHub stars~2.8k tokensUpdated 2 days ago
    EducationAuto-check passed
  • AI Engineering Placement Quiz

    rohitg00/ai-engineering-from-scratch

    Runs a 10-question quiz across five areas to place a learner in the AI Engineering from Scratch curriculum, so they skip what they already know.

    66k GitHub stars~2k tokensUpdated today
    EducationAuto-check passed
  • Codebase to Course

    zarazhangrui/codebase-to-course

    Turns a codebase into an interactive single-page HTML course for non-technical learners, with scroll modules, animated diagrams, quizzes and plain-English code translations.

    5.7k GitHub stars~4.4k tokensUpdated 6 mo ago
    EducationAuto-check passed
  • AI Engineering Phase Quiz

    rohitg00/ai-engineering-from-scratch

    Quizzes you on a completed phase of the AI Engineering from Scratch course, taking a phase number or name and mapping it to that phase's directory.

    66k GitHub stars~2.1k tokensUpdated today
    EducationAuto-check passed
  • Scholar Evaluation

    K-Dense-AI/claude-scientific-writer

    Provide qualitative-first, evidence-traceable developmental review of scholarly works and audit low-stakes research-assessment rubrics with optional local quality controls.

    2.4k GitHub starsUsed in 2 repos~2.9k tokens
    EducationAuto-check: notes
  • Evaluation

    guanyang/open-agent-hub

    This skill should be used when building agent evaluation systems: deterministic checks, regression suites, multi-dimensional rubrics, quality gates, production monitoring, baseline comparison, and…

    977 GitHub starsUsed in 2 repos~4.2k tokens
    EducationAuto-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 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

    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.

    125 GitHub stars~1.8k 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

Categories

Questions about Canvas Awkward Syntax

What does Canvas Awkward Syntax do?

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. Canvas Awkward Syntax is an agent skill from X-isdoingreat/canvas-pilot. Use when a short local academic draft needs role-aware syntax diversification while preserving meaning, locks, source grounding, rubric-critical openings, and document structure.

When should I use Canvas Awkward Syntax?

Canvas Awkward Syntax fits situations like: A short local academic draft needs role-aware syntax diversification while preserving meaning; source grounding; rubric-critical openings; document structure.

How do I install Canvas Awkward Syntax in Claude Code?

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

How do I install Canvas Awkward Syntax in Codex?

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

Can I use Canvas Awkward Syntax 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-awkward-syntax -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-awkward-syntax, .gemini/skills/canvas-awkward-syntax, .github/skills/canvas-awkward-syntax and .opencode/skills/canvas-awkward-syntax in your project.

What does Canvas Awkward Syntax need to run?

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

Does Canvas Awkward Syntax 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 Awkward Syntax 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 Awkward Syntax use?

Canvas Awkward Syntax 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 Awkward Syntax use?

About 2k tokens (SKILL.md is roughly 7.8k 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 Awkward Syntax?

Skills that share tags, products or a category with Canvas Awkward Syntax: DeepTutor CLI (HKUDS/DeepTutor, 41k stars), AI Engineering Placement Quiz (rohitg00/ai-engineering-from-scratch, 66k stars), Codebase to Course (zarazhangrui/codebase-to-course, 5.7k stars) and AI Engineering Phase Quiz (rohitg00/ai-engineering-from-scratch, 66k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Canvas Awkward Syntax?

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.