Agent skill

Canvas Reading Annotation

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

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.

AGPL-3.0Auto-check passedEducation

Install Canvas Reading Annotation

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

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

GitHub CLI
$ gh skill install X-isdoingreat/canvas-pilot canvas-reading-annotation --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-reading-annotation .claude/skills/canvas-reading-annotation && 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-reading-annotation
GitHub stars
125
Token cost
~2.3k tokens
SKILL.md length
894 words
Files
1
Skills in repo
32
Repo updated
First seen
Licence
AGPL-3.0

At a glance

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.

  • Works in 7 steps: classify from the real homework page → enforce required sources → locate and inspect a reading PDF → …
  • An approved short academic-reading assignment routed by canvas-execute
  • SKILL.md covers Contract, Route and overlay, Artifact tree and Stage 1: classify from the…, plus 7 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

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.

When your agent uses it

  • An approved short academic-reading assignment routed by canvas-execute
  • Including in-place PDF annotation
  • Video worksheets
  • Short reflection drafts

Example prompts

  • “/canvas-reading-annotation”

Requirements

  • Python 3

Workflow steps

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

  1. classify from the real homework page
  2. enforce required sources
  3. locate and inspect a reading PDF
  4. build the draft
  5. deterministic verification
  6. fresh semantic audit
  7. finalize

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 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.

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

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). 894 words, ~2,284 tokens.

Download SKILL.mdSave it as .claude/skills/canvas-reading-annotation/SKILL.md (or your agent's skills folder).
name
canvas-reading-annotation
description
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.

canvas-reading-annotation

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.

Contract

Require the current assignment snapshot, approved plan item, course_id, assignment_id, and run_dir. Use only this work directory:

python
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.

Route and overlay

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.

Artifact tree

text
hw_page.txt
kind.txt
sources.json
sources/
attachments/
research_findings.md          # conditional
draft/
verification.log
audit/round-1.json
result.json

Stage 1: classify from the real homework page

Locate 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.

EvidenceKindAction
reading number/PDF plus pre/post questions or annotation rubricreading_annotationannotate source PDF
recorded video plus supplied/public worksheet exercisesvideo_exercisescomplete the real worksheet
numbered takeaways/reflection sentencesreflection_bulletssource-grounded short write-up
on_paper, in-class, practice summaryin_class_skipwrite skipped
long response paper or external delivery shapeunsupportedwrite 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:

  1. a spec verifier reading only hw_page.txt and attached source text;
  2. a quality inferrer reading the same inputs plus recent grader feedback;
  3. a template-fit checker deciding whether a known kind can cover the shape.

Save the main session's synthesis in research_findings.md. Subagents remain read-only; the main session owns classification.

Stage 2: enforce required sources

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:

json
{
  "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.

Stage 3: locate and inspect a reading PDF

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:

  • pre-reading questions;
  • numbered body paragraphs;
  • post-reading questions;
  • underscore answer lines grouped by y-coordinate.

Group underscore glyph rectangles; do not search for one guessed underscore string:

python
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()
    )

Stage 4: build the draft

Show full SKILL.md (392 more words)Show less
Reading annotation

Clone the original and annotate in place. Never append pages.

  • Choose the overlay-configured number of vocabulary terms. Highlight only the term and place a concise definition in a margin.
  • Add at least one content note for every numbered paragraph and anchor it to a non-vocabulary phrase.
  • Keep vocabulary highlight/definition colors in one family and content highlight/note colors in a distinct family.
  • Avoid yellow and avoid overlapping vocabulary/content rectangles.
  • Use inserted margin text, not sticky-note annotations.
  • Fill each answer line with a source-grounded answer in the configured voice. Measure rendered text width before insertion; target every line at least 85% full and average at least 92%, without exceeding the line.

Use the configured target voice faithfully. Do not mention an assistant, automation, or the drafting process in the deliverable.

Video exercises

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.

Reflection bullets

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.

Stage 5: deterministic verification

For annotated PDFs call the existing helper:

python
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:

  • page count unchanged;
  • answer-line fill;
  • margin-note density;
  • color-family consistency;
  • no vocabulary/content overlap;
  • no sticky icons.

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.

Stage 6: fresh semantic audit

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:

json
{
  "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.

Stage 7: finalize

Confirm every mandatory source path exists, the draft opens, the expected page or item count matches, and verification.log has no FAIL. Then write:

python
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,
    },
)

First-run stage mode

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

Files

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

Open the folder on GitHubat commit 6b79d5b

Compare with similar skills

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.

Canvas Reading Annotation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Canvas Reading Annotation this skillX-isdoingreat/canvas-pilot125—~2.3kAutomated safety check: PassAGPL-3.0
Document Generationbionic-gpt/bionic-gpt2.4k—~1.1kAutomated safety check: PassApache-2.0
Lecture Slides SummarizerLi-Baichuan-James/summarize-slides-skill313—~6.7kAutomated safety check: PassMIT
Ccar F Examprep Coachsarveshtalele/claude-architect-exam-guide175—~5.8kAutomated safety check: PassNone
OpenMAIC Page CloneTHU-MAIC/OpenMAIC40k—~3.5kAutomated safety check: PassMIT
PPTX Import into a Classroom StageTHU-MAIC/OpenMAIC40k—~2.5kAutomated safety check: PassMIT

Similar skills

  • 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.

    2.4k GitHub stars~1.1k tokensUpdated 3 days ago
    Documents & OfficeAuto-check passed
  • Lecture Slides Summarizer

    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.

    313 GitHub stars~6.7k tokensUpdated 5 mo ago
    EducationAuto-check passed
  • Ccar F Examprep Coach

    sarveshtalele/claude-architect-exam-guide

    A personalized study-coach skill for the Claude Certified Architect – Foundations (CCAR-F) certification.

    175 GitHub stars~5.8k tokensUpdated 28 days ago
    EducationAuto-check passed
  • OpenMAIC Page Clone

    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.

    40k GitHub stars~3.5k tokensUpdated today
    EducationAuto-check passed
  • Fills an uploaded PowerPoint into an existing classroom stage with its layout intact, then checks each page, writes narration and actions, and generates speech.

    40k GitHub stars~2.5k tokensUpdated today
    EducationAuto-check passed
  • Exam Cheatsheet

    ZeKaiNie/universal-examprep-skill

    全员通关后把 错题本+笔记本+知识点窗口+wiki 编译成考前速记小抄 cheatsheet.md(每条要点带可溯源 锚点),并在视觉产物模式或用户明确要求 PDF/打印版时按指定页数渲染成打印级 PDF:按「必背结论/公式 → 有难度例题(必要时含题面图)→ 例题解答(代入公式、保留基础过程)→ 要点解释(同类题怎么办)」 四段组织。当复习收尾、用户要「考前小抄/速记/总结/打印版」时使用。

    303 GitHub stars~1.8k tokensUpdated 12 days ago
    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 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

    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

Questions about Canvas Reading Annotation

What does Canvas Reading Annotation do?

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.

When should I use Canvas Reading Annotation?

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.

How do I install Canvas Reading Annotation in Claude Code?

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.

How do I install Canvas Reading Annotation in Codex?

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.

Can I use Canvas Reading Annotation 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-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.

What does Canvas Reading Annotation need to run?

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

Does Canvas Reading Annotation 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 Reading Annotation 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 Reading Annotation use?

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.

How many tokens does Canvas Reading Annotation use?

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.

What are the alternatives to Canvas Reading Annotation?

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.

Who maintains Canvas Reading Annotation?

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.