Skip to content

treerobin06/canvas-cli-skill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

canvas-cli-skill

一句话哲学:Canvas 网页能干的事,AI 都能更快帮你干。

English README →

一个面向 AI agent 的 Canvas LMS atomic CLI。任何 AI 都能用——Claude Code / Codex / Cursor / Gemini CLI / Aider …,只要它能跑 bash 就行。

默认配 SJTU Canvas(oc.sjtu.edu.cn),但任何 Canvas 实例(UMich / Harvard / Berkeley / 国内外用 Instructure Canvas 的高校)只要改 base_url 都能用。

License: MIT


🚀 5 秒安装:复制下面整段给你的 AI 助手

用 Claude Code / Codex / Cursor / Gemini CLI 都行——把整段(含开头到 --- end ---)粘给它即可。

请帮我安装 canvas-cli-skill:
1. git clone https://github.com/treerobin06/canvas-cli-skill ~/canvas-cli-skill
2. 把 README 和 docs/get-token.zh.md 读一遍,告诉我怎么去 Canvas 申请 token(按那 4 步截图教程)
3. 等我把 token 给你之后,你写到 ~/canvas-cli-skill/config.json 并 chmod 600
   - SJTU 学生 base_url 用 https://oc.sjtu.edu.cn(默认值就是)
   - 其他学校把 base_url 换成自己学校的 Canvas 域名
4. 跑 bash ~/canvas-cli-skill/tests/smoke.sh,告诉我是否通过
5. 通过后把 SKILL.md 当作"决策地图"——以后我说"看作业"/"提交zip"/"看公告"等,
   你按 SKILL.md 的子命令表选合适的 canvas-cli.sh 子命令即可
--- end ---

按这段提示,AI 5 分钟内能让你在自然语言里使用 Canvas("这周要交什么?" / "把 hw3 交了")。


它能干什么

你说 它做
"这周要交什么作业" list-upcoming --days 7 跨课程合并
"我有几门课没交的" list-todo 服务器侧筛选
"下载机器学习理论 HW4 的附件" find-coursefind-assignmentdownload-attachments
"把 zip 交了" submit <cid> <aid> <zip>(三步上传协议秒级提交)
"我交了吗 / 几号交的 / 第几次 attempt" submission-status
"老师改了 ddl 没" list-announcements 跨 9 门课聚合
"总评估算" list-grades 跨课程 + 单课明细
"课程 syllabus 里写了什么" show-syllabus <cid>

完整子命令表见 SKILL.md

为什么要用这个?

场景 Canvas 网页 canvas-cli-skill
"这周要交什么" 进 9 门课,每门点开作业页面,自己合并 一行 list-upcoming
"下 HW4 + 提交 zip + 验证" 点 7 次 + 上传 + 等加载 三行命令
"找 'midterm project' 是哪门课的" 翻 9 门课的作业列表 find-assignment "midterm"
"总评" 进 9 门课各看一次"评分"页 一行 list-grades
"把这一学期所有作业 ddl 同步到 macOS 日历" 不可能 list-calendar --json + 转 ICS

LLM 拿到原始 JSON 之后还能:跨课程聚合、按 ddl 排序、识别 high-signal 公告(如 "ddl 改" / "考试新增")、生成 todo 清单等。

安装(手动版)

git clone https://github.com/treerobin06/canvas-cli-skill
cd canvas-cli-skill

# 1. 拿 Canvas API token,4 步截图教程:
#    docs/get-token.zh.md
#    or:  docs/get-token.en.md

# 2. 配 token + base_url
cp config.example.json config.json
# 编辑 config.json,把 token 字段填上
chmod 600 config.json

# 3. 验证
bash scripts/canvas-cli.sh whoami
bash tests/smoke.sh

依赖:bash / curl / python3(macOS / Linux 自带)。零外部 pip 包。

怎么获取 token(4 步截图教程)

完整图文:docs/get-token.zh.md / docs/get-token.en.md

简单版:

  1. https://oc.sjtu.edu.cn/profile/settings(其他学校换域名)
  2. 找到 "已批准的集成" / "Approved Integrations" 段
  3. 点 "+ 创建新访问许可证" / "+ New Access Token"
  4. 用途随便填(如 canvas-cli),过期留空,点生成令牌
  5. 复制弹出的 token 字符串

Skill 安装位置(针对各 AI agent)

Agent 装到这里就能 auto-discover
Claude Code ~/.claude/skills/canvas-cli-skill/ 或者作为 plugin
Codex CLI ~/.codex/skills/canvas-cli-skill/
Cursor / Gemini CLI 看各自的 skill / extension 加载方式;通用做法是 git clone 后给 AI 路径

不用 skill 系统也行——直接把 scripts/canvas-cli.sh 加到 $PATH 当普通 CLI 用。

设计哲学

两层分离

  • 本仓库(atomic IO 层):每个子命令 = 一个 Canvas API endpoint,不带任何用户偏好
  • 上层编排(personal layer):你自己定义"作业要怎么做" / "命名约定" / "提交前要不要 review"——那应该是另一个 skill / 一段 prompt

我自己有一个私人的 canvas-todo-agent 编排层(饱和式完成 / 不打断 / AutoDL 触发等),那是个人偏好不开源。本仓库就是底下那个干净的 atomic IO 层,给所有人用。

致谢

  • 基于 Canvas LMS REST API
  • 灵感部分来自 openclaw-sjtu 的 Canvas 部分(但本仓库 atomic 粒度更细 + 默认 --json 友好 + 含 find-course / find-assignment 模糊搜)

License

MIT — see LICENSE.

Tree (Bowen Jiang) 维护。Issues 和 PR 欢迎。

About

Atomic CLI for Canvas LMS REST API — built for AI agents (Claude Code / Codex / Cursor / Gemini CLI). Bilingual docs (中/EN). Defaults to SJTU but works with any Canvas instance.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages