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.
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.
$ npx skills add X-isdoingreat/canvas-pilot --skill canvas-awkward-syntax -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install X-isdoingreat/canvas-pilot canvas-awkward-syntax --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "canvas-awkward-syntax" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-awkward-syntax into .claude/skills/canvas-awkward-syntax/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-awkward-syntax", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-awkward-syntaxType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add X-isdoingreat/canvas-pilot --skill canvas-awkward-syntax -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install X-isdoingreat/canvas-pilot canvas-awkward-syntax --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/X-isdoingreat/canvas-pilot.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/canvas-awkward-syntax .agents/skills/canvas-awkward-syntax && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "canvas-awkward-syntax" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-awkward-syntax into .agents/skills/canvas-awkward-syntax/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-awkward-syntax", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add X-isdoingreat/canvas-pilot --skill canvas-awkward-syntax -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install X-isdoingreat/canvas-pilot canvas-awkward-syntax --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/X-isdoingreat/canvas-pilot.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/canvas-awkward-syntax .cursor/skills/canvas-awkward-syntax && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "canvas-awkward-syntax" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-awkward-syntax into .cursor/skills/canvas-awkward-syntax/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-awkward-syntax", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/X-isdoingreat/canvas-pilot.git --path .agents/skills/canvas-awkward-syntax--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add X-isdoingreat/canvas-pilot --skill canvas-awkward-syntax -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install X-isdoingreat/canvas-pilot canvas-awkward-syntax --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/X-isdoingreat/canvas-pilot.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/canvas-awkward-syntax .gemini/skills/canvas-awkward-syntax && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "canvas-awkward-syntax" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-awkward-syntax into .gemini/skills/canvas-awkward-syntax/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-awkward-syntax", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install X-isdoingreat/canvas-pilot canvas-awkward-syntaxInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add X-isdoingreat/canvas-pilot --skill canvas-awkward-syntax -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/X-isdoingreat/canvas-pilot.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/canvas-awkward-syntax .github/skills/canvas-awkward-syntax && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "canvas-awkward-syntax" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-awkward-syntax into .github/skills/canvas-awkward-syntax/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-awkward-syntax", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add X-isdoingreat/canvas-pilot --skill canvas-awkward-syntax -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install X-isdoingreat/canvas-pilot canvas-awkward-syntax --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/X-isdoingreat/canvas-pilot.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/canvas-awkward-syntax .opencode/skills/canvas-awkward-syntax && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "canvas-awkward-syntax" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-awkward-syntax into .opencode/skills/canvas-awkward-syntax/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-awkward-syntax", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
canvas-awkward-syntaxA 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. 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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6b79d5b. It shows what the files ask for, not the result of running them.
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.
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.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
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.
.claude/skills/canvas-awkward-syntax/SKILL.md (or your agent's skills folder).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.
Require:
draft_path, output_path, and voice_register;course_id, assignment_id, and stable assignment work_dir;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.
Use the existing symbols:
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.
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:
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.
Build records containing seg_id, paragraph/sentence indexes, role, and
v0_text, then call assign_transformations(records).
The helper enforces:
Persist the assignment with write_assignment_report(...) before generation.
Apply exactly the operation assigned by the helper:
| Transformation | Required effect |
|---|---|
voice_flip | active↔passive without changing actor/action |
clause_reorder | move an existing subordinate clause; add no claim |
nominalize_flip | verbal↔nominal structure with same proposition |
pseudo_cleft | foreground an existing element with a cleft |
fronted_pp | move one existing prepositional phrase to the front |
fronted_when / fronted_while | foreground an existing temporal/contrast relation |
fronted_participle_post_author | insert a source-grounded participial appositive after an author |
gerund_subject | recast the existing action as a gerund subject |
right_branching_extension | retain subject/main verb early and move existing modifiers rightward |
topic_comment_chinese | limited topic-comment order in an allowed body role |
article_omission_esl | omit at most the configured articles without obscuring reference |
dual_connective_chinese | use the configured paired connective without changing logic |
extraposed_copula | use an allowed It is ... that ... frame |
fact_noun_complement | express the existing proposition through the fact that |
formulaic_verb_noun | use an allowed verb-noun collocation with same relation |
folk_wisdom_opener / discourse_pleonasm | add only a configured discourse frame, no new fact |
slang_break | short related aside only in an allowed low-risk body slot |
first_person_reflection | source-grounded first-person reflection in an allowed conclusion role |
minimal_lexical | smallest 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.
Spawn one native Codex subagent per sentence, in parallel within the current thread limit. Give each only:
Subagents do not read or write files. The main session owns validation, fallback, splicing, and all artifacts.
Reject and retry once when any check fails:
[LOCK_N] set differs or substituted lock text changes;validate_transformation(original, candidate, assigned_name)["ok"] is false;contains_banned(candidate) returns a phrase;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.
Restore locks and reassemble by canonical indexes. Preserve paragraph count, headings, citations, quotations, and non-text document structure.
Verify at document level:
contains_banned;If a document-level check fails, roll back the offending segments. If the output still cannot verify, keep the original and report failure.
Write output_path atomically. Write awkward_log.json with:
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.
© 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
Just SKILL.md in .agents/skills/canvas-awkward-syntax of X-isdoingreat/canvas-pilot.
Open the folder on GitHubat commit 6b79d5b
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Canvas Awkward Syntax this skillX-isdoingreat/canvas-pilot | 125 | — | ~2k | Automated safety check: Pass | AGPL-3.0 | |
| DeepTutor CLIHKUDS/DeepTutor | 41k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| AI Engineering Placement Quizrohitg00/ai-engineering-from-scratch | 66k | — | ~2k | Automated safety check: Pass | MIT | |
| Codebase to Coursezarazhangrui/codebase-to-course | 5.7k | — | ~4.4k | Automated safety check: Pass | None | |
| AI Engineering Phase Quizrohitg00/ai-engineering-from-scratch | 66k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Scholar EvaluationK-Dense-AI/claude-scientific-writer | 2.4k | 2 repos | ~2.9k | Automated safety check: Notes | MIT |
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.
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.
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.
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.
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.
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…
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.
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.
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.
X-isdoingreat/canvas-pilot
A skill your agent uses for an approved Canvas assignment that no specialized course skill can handle.
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.
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.
Categories
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.
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.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: Canvas Awkward Syntax is instructions for the agent only. Our summary lists: Python 3.
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.
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.
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.
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.
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.
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.