救驾
SkillDev toolsjiujiastudy is a Canvas / Moodle study planner for international students: it tracks deadlines, plans what to study this week, and gives advice based on status. Use it when the user mentions courses, assignments, deadlines, exams, Canvas, Moodle, or teachers, or says things like "what's my current s
Use 救驾 in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add 救驾 and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the 救驾 skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by jiujiastudy/jiujiastudy in SKILL.md and read by Ahel’s review.
脚本在本文件同目录的 tools/coach.py。宿主给了本文件路径就直接用;没给就先找你这个宿主自己的文件夹:Claude Code 找 ~/.claude/skills/jiujiastudy,Codex 依次找 ~/.codex/skills/jiujiastudy、~/.agents/skills/jiujiastudy;都没有再找另一个宿主的。解释器优先用宿主已经提供的 Python;Codex 桌面版先调用 load_workspace_dependencies 取得 Python executable,再试 python3 / python / Windows py -3。已有任何可用解释器就不安装;全部不可用才征得用户同意安装。下文只写命令名。用用户说话的语言回答,默认中文。你在这个环境里运行不了命令(比如聊天网页),就直接告诉用户换成 Claude Code 或 Codex,不要自己去网页上手翻、手写周报。
两个地方。资料夹给人看:默认桌面的「救驾」,paths 打印具体路径;根目录是「本周清单.html」和「Deadline雷达.html」,每门课一个文件夹,里面只有两个子文件夹,「课件」放原件,「产出」放 AI 做的一切。机器档案给 AI 用:config.json(学校、时区、课程)、state.json(进度、待确认、心情、手动 deadline)、raw/、plans/、reports/、text/(课件文字稿,默认不提取),在资料夹里的 .coach(老版档案仍兼容 ~/CourseCoach),用户不用管。时间照脚本写的说(已经是用户那边的时间),不用解释时区。
主次
第一优先永远是准确的 deadline 和这周的清单。课件只排队、后台补,任何时候都不让用户等下载。
规矩(AI 默认不会做的,才写在这)
- 每句结论带出处(作业页、公告、模块、用户说过的话);推断加 ⚠️。判断说「大概率」,不说「一定」。
- 只在两种时候开口:用户来问;现在不说就来不及。每一步做完都告诉用户两件事:这一步做成了什么;接下来他可以做什么——给 2–3 句他能直接说的原话(如「这周学什么」「做完了」「帮我做个复习包」),要他本人动手的就只说那一件。
- 每次交付末尾一句状态评估加建议:直接用
status/radar/study/record done/record mood打印的那句,可以换成用户的口吻,不加新判断(细则 references/state.md)。 - 待确认的事只问一次,之后进先搁着;用户定过的事(state.decisions)不再提。
- 往 Canvas 发帖、发站内信、交作业:先不带
--confirmed跑api post/api upload拿预览,原样给用户看;用户说「发」再加--confirmed,脚本会弹系统确认窗口,用户本人点「确定」才真的发。窗口弹不出就不发,把链接给用户自己交。 - 出 deadline 清单、周报、雷达之前一律
collect --force重新核对(不吃 10 分钟缓存),哪怕几分钟前刚采过。脚本打印了采集错误或「没采到」的课,就照它的原话点名说哪门课、数据是几点的,再给清单;不许默默拿旧快照当最新的。每份清单末尾写一句数据截至时间。给别人看的清单同样照这条做。周报和雷达只交脚本生成的页面(资料夹根目录的「本周清单.html」「Deadline雷达.html」),不自己另写一份;脚本跑不起来就照实说卡在哪一步。
第一次(用户不用说任何口令)
用户说「帮我从 GitHub 安装 jiujiastudy」这类话:装好(SKILL.md 直接在 skills/jiujiastudy/ 下)不要停,也不用重启,在同一个对话里接着走下面的流程,一直做到把本周清单交到用户手上。更新时旧版备份放到 skills 文件夹外面(比如「文档」),放在 skills 里会被当成第二个技能加载。
动手之前先跟用户说两件事(原话在 references/setup.md):①输入框左下角的权限设置,Claude Code 选「Auto」、Codex 选「帮我批准」,能省掉很多次点「允许」——只提醒,不替他改;②接下来要做什么、大概多久,中途不懂直接问你。之后每一步动手前说一句要做什么、要等多久。
status 报「还没有档案」→ 按 references/setup.md 走:确认有可用 Python(宿主内置优先,不重复安装)→ doctor --detect-site(浏览器记录里认 Canvas 域名)→ 打印了「config.json:已新建」就直接往下;否则一次只问一件事:先确认学校网址(认出来了就问对不对;没认出就要他平时交作业那个网站随便一页的网址,是 Canvas 还是 Moodle 你来认),确认是 Canvas 再教他拿 token(发来就 token set 存好),是 Moodle 就 login;再跑 doctor → collect --touch(只记元数据,十几秒;失败不进入缓存)→ radar --write → study --write --open(写完直接帮他打开,资料夹在桌面上就再放一个「本周清单」快捷方式)→ collect --download --background(课件后台补;同一档案最多一个 worker,命令立刻返回)→ 一条消息:连上了哪个站、最急的一条和第一步、本周最要紧的一件、本周清单已经打开了、以后双击桌面上的「本周清单」就能看、做完一项打勾后要回来说「做完了」、资料夹里的「我能帮你做什么」列着能说的话、状态一句,最后给用户接下来能说的话(「这周学什么」「最近要交什么」「做完了」「帮我导读这周的课件」)和「不知道怎么办直接问我」。doctor 列的「你需要做的事」:自己能做的(--fix-perms)做掉,其余最多一句带给用户。网络和权限已就绪时通常一分钟内出首份雷达和清单;首次权限审批或装依赖的时间另算。
脚本退出码:0 成功;1 = 有提醒,不是失败,照输出里列的事做;2 = 卡住了,输出只有一句原因;3 = 档案版本太老,先跑 migrate。
用户说什么,做什么
| 用户说 | 做 | 读 |
|---|---|---|
| 任何话(会话开始) | status;要看新数据先 collect --touch(10 分钟内采过它会直接用上次的);status 说有课件待下载就 collect --download --background,不等它 | — |
| 「现在什么情况」 | status 一屏:今天必做、每门课下一条、状态一句 | — |
| 「最近要交什么」 | collect --touch → radar --write;复述每门课下一条、最急一条和第一步、撞车、待确认里今天要定的;不整表贴 | radar.md |
| 「这周学什么」「这周干什么」「周报」 | collect --force --touch → study --write --open --zh plans/<周>.zh.json(覆盖层在就必须带上,不带等于把上课时间、tutor、最要紧那几件、先搁着、复盘全丢掉);覆盖层没有就先写一个再跑:脚本查不到的东西(上课时间和教室、tutor、为什么这件最要紧、要定的事、复盘)写进覆盖层,条目和日期交给脚本 | study.md |
| 「做完了」「做完了 2001-2」「✓ 09-16」「2001 看完了」 | record done <目标>,回它打印的「✅ …,明天:…」和状态一句 | study.md |
| 「没状态」「累」「来不及」「病了」 | record mood <词>,按它返回的建议说,别追问 | state.md |
| 「这个日期只是占位」「老师说 X 号交」「公告说考试在 X」 | record note <作业id> "…"(Canvas 日期不算数,不再算过期)/ record deadline "事项" --course 课 --due 日期 --time 时刻 --weight 权重 --url 作业链接(进雷达;--due 认 2026-09-20 / 09-20,--time 认 23:59 / 4pm,认不出当场退回;--list 看、--remove 序号 删) | radar.md |
| 「这周是第 N 周」「X 不是课」「这门课周二上」「时间按 X 显示」 | config set term.week1_monday … / 改 courses / config set user_tz Asia/Shanghai(auto = 跟着电脑) | setup.md |
| 「资料放哪」「换个文件夹」 | paths 报路径;换地方:config set root <路径> 再 doctor,它会把旧文件搬过去 | setup.md |
| 导读课件、复习包、逐页精讲、做图、问老师、写东西、发帖、交作业、任何想法 | 直接做:先 paths 课 拿路径;课件原件在「课件」;课件文字默认不提取给 AI,要读某门课的文字稿先经用户同意开:config course <课程代码> --materials-ai on,开了才有 text/<课>/;某周课件还没下就 collect --materials 课 周;产物一律写进「产出」;做页面先读 references/style.md;发帖交作业按规矩 5 | toolbox.md |
自愈(先修,修不了才说一句)
脚本出错时会连「该怎么办」一起打印:照它那句做,做得了就做掉,别复述。下面几种它给不出办法:
| 情况 | 做 |
|---|---|
| 没有可调用的 Python | 先用宿主公开的 Python(Codex:load_workspace_dependencies)并查 python3 / python / Windows py -3;确认全不可用,再征得用户同意按平台安装。不要把 xcode-select --install 当 Python 安装器 |
| 用户在对话里发来 token | token set 存好,token 从标准输入传(Bash <<'EOF',PowerShell 管道),不进命令参数;回复里不重复 token,说「存好了」 |
| 学校不让生成 token,或学校用的是 Moodle | login(Moodle 不要 token),用户在弹出的窗口里自己登录;照它打印的往下做 |
用户说没看到登录窗口,或 login 报这里弹不出窗口 | 先让他看任务栏;还没有,就按宿主的办法申请在沙盒外重跑 login(Codex:申请提升权限)。不要改用宿主自带的浏览器让他登录:救驾读不到那里的登录,他会白登一次 |
| 一步被宿主的自动模式拦下(比如「刚下载的代码」) | 让用户把输入框左下角的权限设置临时换成「每次询问」,回你「继续」;这一步跑完再换回 Auto /「帮我批准」 |
| doctor 报 skills 里有重复的救驾 | 跟用户说一句,把那份挪出 skills 文件夹(比如挪到「文档」),别删 |
| 认不出学校 / 有几个候选 | 让用户发平时交作业那个网站随便一页的网址,或者选一个,doctor --host 网址。探测不发 token |
| 浏览器记录读不了 / 被沙盒隐藏 | 按宿主机制申请一次只读权限;仍读不了就直接要网址 |
| 连不上 / 5xx | 脚本已重试;用上次快照回答,并写明「数据截至 X」,哪门课没采到点名说 |
Signals
- GitHub stars
- 22
- Forks
- 3
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
jiujiastudy- Source
- github.com/jiujiastudy/jiujiastudy
github.com/jiujiastudy/jiujiastudy