Local-first Canvas LMS AI agent that learns each course's recurring assignment workflow and reuses it through scan -> approval -> execute with student review.
# Add to your Claude Code skills
git clone https://github.com/X-isdoingreat/canvas-pilotLast scanned: 8/31/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-31T10:35:47.571Z",
"npmAuditRan": true,
"pipAuditRan": false,
"promptInjectionRan": true
}canvas-pilot is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by X-isdoingreat. Local-first Canvas LMS AI agent that learns each course's recurring assignment workflow and reuses it through scan -> approval -> execute with student review. It has 107 GitHub stars.
Yes. canvas-pilot passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/X-isdoingreat/canvas-pilot" and add it to your Claude Code skills directory (see the Installation section above).
canvas-pilot is primarily written in Python. It is open-source under X-isdoingreat on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh canvas-pilot against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Website: https://canvas-pilot-rho.vercel.app
Canvas Pilot is an open-source, local-first Canvas LMS AI agent for Codex and Claude Code power users. It learns each course's recurring assignment pattern, then reuses that pattern through scan -> approval -> execute workflows that produce review-ready drafts and run reports.
It is a Canvas MCP workflow layer, not just another Canvas API wrapper. Canvas MCP servers let an agent access Canvas; Canvas Pilot adds recurring course memory, assignment workflow automation, approval boundaries, verification, and student review above the access layer.
The public repo contains the generic framework. Credentials, cookies, private course identifiers, assignment inputs, drafts, and real run outputs stay local and gitignored.
Codex is the sole primary driver. The legacy Claude Code path is preserved as frozen history, but current setup, scan, drafting, submission, quiz, and cron workflows do not depend on it.
| Layer | Canvas MCP servers | Canvas Pilot |
|---|---|---|
| Canvas access | Expose Canvas API tools to an agent | Uses Canvas access as one input to a workflow |
| Repeated coursework | The agent asks and reasons again each time | The system learns the course pattern once and reuses it weekly |
| Student control | Depends on the host agent's behavior | Enforced by scan -> approval -> execute boundaries |
| Output | Tool responses, summaries, or ad hoc drafts | Drafts, result files, and a run report for review |
See Canvas Pilot vs Canvas MCP for the longer comparison.
flowchart LR
A[Canvas LMS] --> B[scan canvas]
B --> C[plan.json approval plan]
C --> D{student approves?}
D -- no --> E[stop]
D -- yes --> F[canvas-execute]
F --> G[course-specific workflow]
G --> H[result.json per assignment]
H --> I[REPORT.md closeout]
I --> J{later exact command?}
J -- no --> K[human review or manual upload]
J -- submit N / take quiz N / retake quiz N --> L[signed target-exact receipt]
L --> M[one Canvas mutation + read-back]
A typical interaction once you're fully configured:
You (in Codex, from this directory): scan canvas
Canvas Pilot:
URGENT (next 72h)
| # | course | assignment | due | proposed skill |
| 1 | Code Course A | Set 3 Problem 1 | 4/25 23:59 | code-course workflow |
| 2 | Writing Course| Tue Wk5 HW Scan | 4/27 12:30 | reading-annotation workflow |
SOON (3-7d)
| 3 | Quiz Course | Section 5 | 5/01 23:59 | quiz workflow |
Reply: "approve all" / "approve 1, 2" / "urgent only" / "cancel"
You: approve all
Canvas Pilot:
[dispatches each item sequentially, runs the per-course skill,
produces a draft under runs/<today>/<assignment>/draft/,
and writes a status to result.json]
Done. REPORT.md written at runs/<today>/REPORT.md.
Drafts mirrored to final_drafts/ for review.
You review the drafts and upload manually by default. Auto-submit only happens
through an explicitly configured cron authority. In an interactive session,
submission requires a later exact submit N, take quiz N, or retake quiz N
message, a verified local result, and a short-lived target-exact receipt.
Public-safe examples live in examples/.
The default behavior is produce verified drafts, you decide what to submit. Plan approval never grants Canvas write access. Interactive submission is a separate, exact-target action with a verification gate and Canvas read-back.
On a new machine, paste the setup prompt from the install page into a local
agent. It downloads the repo, asks which school you use Canvas through, opens
the official Canvas login, and immediately runs first-skill opportunity
analysis after authentication. After that, the routine entry point is
scan canvas.
Fresh setup prompt
1. Download or update the Canvas Pilot repo.
2. Ask which school you use Canvas through.
+-- canvas-setup
3. Resolve the school's official Canvas login URL. If the school answer
is ambiguous, ask for the Canvas URL instead of guessing.
4. Prepare local config, open the login browser, and verify authentication.
5. Immediately hand off to canvas-skill-opportunity when routes are empty.
canvas-skill-opportunity
1. Discover recurring candidates, then inspect representative real specs.
2. Judge task fit and safe Canvas feedback-policy evidence qualitatively.
3. Write a private local recommendation report.
4. Stop and ask you to choose one numbered candidate.
You choose a candidate in a later reply
+-- canvas-bootstrap
1. Verify the real spec, materials, repeatability, and checks.
2. Scaffold one public-safe course skill and local route.
3. Keep the route unready if the viability gate fails.
You: "scan canvas" after at least one route is ready
1. List pending work and write plan.json.
2. Stop for student approval.
3. canvas-execute dispatches only approved items.
4. Each item writes result.json; REPORT.md closes the run.
Three non-obvious things about this flow:
Opportunity analysis is read-only and evidence-based. It reads enough representative assignment instructions to understand the real task, plus sanitized facts about retry and feedback policy. It never starts an attempt, solves work, retains raw answers or exact grades, uploads, submits, or creates a route. The agent makes a qualitative recommendation and stops for your numbered choice.
Strong first-skill defaults include Canvas-submittable code, mostly objective quizzes, quantitative accounting/economics/statistics/math/finance, structured Word/Excel/PDF business work, and independent short answers or annotations. A main continuous prose unit around 200 words or more is a strong demoter; total word count is not the rule. A quiz with multiple attempts, feedback visible before retry, and keep-highest scoring can move forward because it has a useful post-submit correction loop.
canvas-bootstrap is single-cluster on purpose. A typical student has
3-4 trackable courses. Configuring all four in one session means a wall of
text you can't reason about. Configuring one, walking away, coming back
tomorrow for the next gives you a tangible deliverable per session and lets
you reuse what you learned from the first cluster when you do the next.
The first time you run a per-course skill, it is a co-authoring
session with you, not a one-shot. canvas-bootstrap's overlay v1 is the
skill's best guess from reading the cluster. v2 is what you actually want,
and it only exists after you've reviewed a real draft and your feedback has
been categorized. Plan for ~30 minutes per cluster for the first-run loop.
Subsequent runs of the same skill are non-interactive.
canvas-skill-opportunity and stops for your
numbered choice before route creation, homework scan, execution, or submission.The prompt dispatches canvas-setup:
canvas-setup then hands off to canvas-skill-opportunity. It discovers
recurring candidates, reads enough representative real instructions to judge
the task type, considers safe Canvas retry/feedback-policy evidence, writes a
private local recommendation, and stops. You reply with one number in a later
turn. Only then does canvas-bootstrap verify the real workflow and scaffold
your first course skill. Selection does not authorize submission.
You say scan canvas. If courses.yaml.routes has at least one entry
but not all your courses, you get the normal scan PLUS a one-line
reminder that other courses are still unconfigured. You re-trigger
canvas-bootstrap whenever you want to configure another.
Once all your courses are configured, scan canvas is the only command
you ever need:
scan canvas
-> review plan
-> "approve all" / "approve 1, 2" / "urgent only" / "cancel"
-> wait for drafts
-> read REPORT.md, eyeball final_drafts/, upload manually
-> optionally send one