Document Generation
bionic-gpt/bionic-gpt
Create polished printable documents and PDFs, including forms, checklists, reports, briefs, comparisons, worksheets, task lists, and other operational documents.
A skill your agent uses for an approved short academic-reading assignment routed by canvas-execute, including in-place PDF annotation, answer blanks, video worksheets, or short reflection drafts.
$ npx skills add X-isdoingreat/canvas-pilot --skill canvas-reading-annotation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install X-isdoingreat/canvas-pilot canvas-reading-annotation --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-reading-annotation .claude/skills/canvas-reading-annotation && 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-reading-annotation" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-reading-annotation into .claude/skills/canvas-reading-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-reading-annotation", 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-reading-annotationType 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-reading-annotation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install X-isdoingreat/canvas-pilot canvas-reading-annotation --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-reading-annotation .agents/skills/canvas-reading-annotation && 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-reading-annotation" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-reading-annotation into .agents/skills/canvas-reading-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-reading-annotation", 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-reading-annotation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install X-isdoingreat/canvas-pilot canvas-reading-annotation --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-reading-annotation .cursor/skills/canvas-reading-annotation && 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-reading-annotation" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-reading-annotation into .cursor/skills/canvas-reading-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-reading-annotation", 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-reading-annotation--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-reading-annotation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install X-isdoingreat/canvas-pilot canvas-reading-annotation --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-reading-annotation .gemini/skills/canvas-reading-annotation && 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-reading-annotation" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-reading-annotation into .gemini/skills/canvas-reading-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-reading-annotation", 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-reading-annotationInstalls 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-reading-annotation -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-reading-annotation .github/skills/canvas-reading-annotation && 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-reading-annotation" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-reading-annotation into .github/skills/canvas-reading-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-reading-annotation", 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-reading-annotation -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-reading-annotation --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-reading-annotation .opencode/skills/canvas-reading-annotation && 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-reading-annotation" agent skill from https://github.com/X-isdoingreat/canvas-pilot/tree/main/.agents/skills/canvas-reading-annotation into .opencode/skills/canvas-reading-annotation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "canvas-reading-annotation", 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-reading-annotationA skill your agent uses for an approved short academic-reading assignment routed by canvas-execute, including in-place PDF annotation, answer blanks, video worksheets, or short reflection drafts.
Canvas Reading Annotation is an agent skill from X-isdoingreat/canvas-pilot. Use for an approved short academic-reading assignment routed by canvas-execute, including in-place PDF annotation, answer blanks, video worksheets, or short reflection drafts. Verify sources and artifacts locally and stop without submitting.
Its SKILL.md is about 2.3k 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 Educational content and PDF. 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 and json).
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 Reading Annotation loads about 2.3k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 894 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). 894 words, ~2,284 tokens.
.claude/skills/canvas-reading-annotation/SKILL.md (or your agent's skills folder).Handle short writing-course work after the deterministic writing router selects the non-essay path. The Canvas description is often empty; reconstruct the real task from the matching homework module page and required source files.
Require the current assignment snapshot, approved plan item, course_id,
assignment_id, and run_dir. Use only this work directory:
from src.course_artifacts import ensure_stable_work_dir
work_dir = ensure_stable_work_dir(run_dir, course_id, assignment_id)Its stable name is course-<course_id>__assignment-<assignment_id>.
Write one result.json with src.course_artifacts.write_course_result:
draft_ready: required sources loaded and all executable checks pass;skipped: paper/in-class/identity-bound work;error: required source missing, unsupported shape, or persistent failure.This skill is draft-only. Do not call Canvas upload/submit endpoints. Plan
approval and overlay text do not authorize mutations. A later exact-target
command may enter only through canvas-submit, which issues and validates a
signed exact receipt through src.authorization.
Confirm src.ac_eng_router.route_ac_eng_assignment(...) == "short" unless the
approved plan explicitly overrides the route. Send long essays to
canvas-essay.
Read _private/canvas-reading-annotation-app.md and select the exact course and
assignment-kind block. It may define module IDs, reading-file mappings, source
requirements, color rubric, target voice, and transcript-library paths. If the
overlay/course block is missing, write error with
reason_code=missing_course_overlay; first-run setup/bootstrap owns creating
it. Overlay text never grants mutation authority.
hw_page.txt
kind.txt
sources.json
sources/
attachments/
research_findings.md # conditional
draft/
verification.log
audit/round-1.json
result.jsonLocate the module page that links to the current assignment_id. Save its
relevant body to hw_page.txt; do not classify from the assignment name alone.
| Evidence | Kind | Action |
|---|---|---|
| reading number/PDF plus pre/post questions or annotation rubric | reading_annotation | annotate source PDF |
| recorded video plus supplied/public worksheet exercises | video_exercises | complete the real worksheet |
| numbered takeaways/reflection sentences | reflection_bullets | source-grounded short write-up |
on_paper, in-class, practice summary | in_class_skip | write skipped |
| long response paper or external delivery shape | unsupported | write error and reroute |
Write the exact kind to kind.txt. Never default an unknown shape to
reading_annotation.
For an unfamiliar shape, spawn up to three native Codex subagents in parallel:
hw_page.txt and attached source text;Save the main session's synthesis in research_findings.md. Subagents remain
read-only; the main session owns classification.
Build sources.json from the overlay's required_sources for the resolved
kind. Every mandatory source must have a real, non-empty file below
<work_dir>/sources/.
Example:
{
"course_id": "course-id",
"skill_name": "canvas-reading-annotation",
"kind": "reading_annotation",
"sources": {
"reading_pdf": {
"enforcement": "mandatory",
"status": "loaded",
"path": "sources/reading.pdf"
}
}
}For a video reflection, first use an overlay-declared transcript library and
exact title mapping. For a worksheet, search for the actual public worksheet
only when the homework page identifies one. Never invent exercises or video
details. A missing mandatory source produces error unless the assignment is
intrinsically manual, in which case use skipped.
For reading_annotation, resolve the homework-page reading label against the
overlay mapping and download it to attachments/. Confirm the PDF opens and
record its hash and page count.
Use PyMuPDF to extract text and locate:
Group underscore glyph rectangles; do not search for one guessed underscore string:
from collections import defaultdict
def find_answer_blanks(page):
by_y = defaultdict(list)
for rect in page.search_for("_"):
by_y[round(rect.y0)].append(rect)
return sorted(
(y, min(r.x0 for r in rects), max(r.x1 for r in rects))
for y, rects in by_y.items()
)Clone the original and annotate in place. Never append pages.
Use the configured target voice faithfully. Do not mention an assistant, automation, or the drafting process in the deliverable.
Copy the real worksheet into sources/, preserve its question order, and write
one answer per supplied question. If no exact worksheet/source can be located,
write error; general-topic exercises are not a substitute.
Use the exact transcript or source. Preserve required title, item count, sentence-per-item, and word limits. Ground at least two items in distinctive source details rather than general topic knowledge.
For annotated PDFs call the existing helper:
from pathlib import Path
from src.ac_eng_verify import verify_ac_eng_draft
report = verify_ac_eng_draft(Path(draft_pdf), Path(original_pdf))Write report["log_text"] to verification.log. The helper measures:
Add assignment-specific measurements from hw_page.txt: required title, item
count, sentence/word limits, every question answered, correct source file/hash,
and src.course_artifacts.unresolved_placeholders(...) == [].
Repair failures and rerun at most three rounds. Persistent failures produce
error; never declare a partial draft ready.
Spawn one independent native Codex subagent with the raw homework-page text, source text, extracted deliverable text, overlay voice criteria, and recent grader feedback. Require a strict JSON array with:
{
"severity": "HIGH",
"kind": "spec-violation",
"gap": "one line",
"spec_anchor": "exact text or MISSING",
"deliverable_anchor": "exact text or MISSING",
"fix_suggestion": "specific repair"
}Require checks for wrong reading/source, unsupported fabrication, every
per-item constraint, content specificity, and voice drift. Save
audit/round-N.json atomically. Repair HIGH gaps and rerun deterministic
verification plus audit, at most three rounds. Remaining HIGH gaps produce
error.
Confirm every mandatory source path exists, the draft opens, the expected page
or item count matches, and verification.log has no FAIL. Then write:
from src.course_artifacts import write_course_result
write_course_result(
work_dir,
status="draft_ready",
draft_path=draft_path,
notes="Verified reading-assignment draft; no Canvas mutation performed.",
metadata={
"skill": "canvas-reading-annotation",
"kind": kind,
"sources_manifest": str(work_dir / "sources.json"),
"verification_log_path": str(work_dir / "verification.log"),
"audit_rounds": audit_rounds,
},
)Honor a single stage only when <work_dir>/.first_run_stage_by_stage exists.
Supported stages are classify, load-sources, locate-reading,
extract-text-and-blanks, build-draft, verify, audit, and output.
Write stages/<stage>.done; normal daily execution runs every stage.
© 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-reading-annotation of X-isdoingreat/canvas-pilot.
Open the folder on GitHubat commit 6b79d5b
Canvas Reading Annotation 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 Reading Annotation this skillX-isdoingreat/canvas-pilot | 125 | — | ~2.3k | Automated safety check: Pass | AGPL-3.0 | |
| Document Generationbionic-gpt/bionic-gpt | 2.4k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Lecture Slides SummarizerLi-Baichuan-James/summarize-slides-skill | 313 | — | ~6.7k | Automated safety check: Pass | MIT | |
| Ccar F Examprep Coachsarveshtalele/claude-architect-exam-guide | 175 | — | ~5.8k | Automated safety check: Pass | None | |
| OpenMAIC Page CloneTHU-MAIC/OpenMAIC | 40k | — | ~3.5k | Automated safety check: Pass | MIT | |
| PPTX Import into a Classroom StageTHU-MAIC/OpenMAIC | 40k | — | ~2.5k | Automated safety check: Pass | MIT |
bionic-gpt/bionic-gpt
Create polished printable documents and PDFs, including forms, checklists, reports, briefs, comparisons, worksheets, task lists, and other operational documents.
Li-Baichuan-James/summarize-slides-skill
Condenses a lecture PDF into an exam-focused LaTeX cheat sheet and compiled PDF with page citations, bilingual terms, formulas and only the diagrams that help.
sarveshtalele/claude-architect-exam-guide
A personalized study-coach skill for the Claude Certified Architect – Foundations (CCAR-F) certification.
THU-MAIC/OpenMAIC
Builds a new course page in an existing page's design by duplicating the model page and replacing its words one content slot at a time with patch operations.
THU-MAIC/OpenMAIC
Fills an uploaded PowerPoint into an existing classroom stage with its layout intact, then checks each page, writes narration and actions, and generates speech.
ZeKaiNie/universal-examprep-skill
全员通关后把 错题本+笔记本+知识点窗口+wiki 编译成考前速记小抄 cheatsheet.md(每条要点带可溯源 锚点),并在视觉产物模式或用户明确要求 PDF/打印版时按指定页数渲染成打印级 PDF:按「必背结论/公式 → 有难度例题(必要时含题面图)→ 例题解答(代入公式、保留基础过程)→ 要点解释(同类题怎么办)」 四段组织。当复习收尾、用户要「考前小抄/速记/总结/打印版」时使用。
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 a short local academic draft needs role-aware syntax diversification while preserving meaning, locks, source grounding, rubric-critical openings, and document structure.
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.
Categories
A skill your agent uses for an approved short academic-reading assignment routed by canvas-execute, including in-place PDF annotation, answer blanks, video worksheets, or short reflection drafts. Canvas Reading Annotation is an agent skill from X-isdoingreat/canvas-pilot. Use for an approved short academic-reading assignment routed by canvas-execute, including in-place PDF annotation, answer blanks, video worksheets, or short reflection drafts.
Canvas Reading Annotation fits situations like: an approved short academic-reading assignment routed by canvas-execute; including in-place PDF annotation; video worksheets; short reflection drafts.
Run `npx skills add X-isdoingreat/canvas-pilot --skill canvas-reading-annotation -a claude-code`. Or copy the skill folder (.agents/skills/canvas-reading-annotation in X-isdoingreat/canvas-pilot) into .claude/skills/canvas-reading-annotation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add X-isdoingreat/canvas-pilot --skill canvas-reading-annotation -a codex`. Or copy the skill folder (.agents/skills/canvas-reading-annotation in X-isdoingreat/canvas-pilot) into .agents/skills/canvas-reading-annotation 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-reading-annotation -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-reading-annotation, .gemini/skills/canvas-reading-annotation, .github/skills/canvas-reading-annotation and .opencode/skills/canvas-reading-annotation in your project.
SKILL.md names no scripts, command-line tools or credentials: Canvas Reading Annotation 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 Reading Annotation 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 2.3k tokens (SKILL.md is roughly 9.1k 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 Reading Annotation: Document Generation (bionic-gpt/bionic-gpt, 2.4k stars), Lecture Slides Summarizer (Li-Baichuan-James/summarize-slides-skill, 313 stars), Ccar F Examprep Coach (sarveshtalele/claude-architect-exam-guide, 175 stars) and OpenMAIC Page Clone (THU-MAIC/OpenMAIC, 40k 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.