Claude Code, Skill
jiujiastudy
救驾(jiujiastudy)是留学生的 Canvas / Moodle 学习手帐:盯 deadline、排本周该学什么、按状态给建议。用户提到课程、作业、deadline、考试、Canvas、Moodle、老师,或说「现在什么情况」「最近要交什么」「这周学什么」「做完了」「没状态 / 累 / 来不及」「交之前检查」「想问老师」「做学习页」「一直在拖 / 开不了头」时使用;第一次用时自己完成设置,只向用户要学校网址(Canvas 另要 token)。
Compatibility: Not stated.
Grade C
One Medium finding. Read the report before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
NETWORK_HOST_FROM_INPUT
Why this grade
- NETWORK_HOST_FROM_INPUT Medium
A file takes a URL or endpoint as input and has no fixed host list.
tools/canvas_api.py, line 73
def fetch(self, url, accept="application/json"):
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
tools/cc_confirm.py, line 44
p = subprocess.run(["osascript", "-e", script], capture_output=True, text=True, timeout=secs + 15)
tools/cc_confirm.py, line 59
p = subprocess.run(["zenity", "--question", f"--title={title}", f"--text={text}", "--ok-label=确认发送",
tools/cc_detect.py, line 206
shutil.rmtree(tmp, ignore_errors=True)
Show more
tools/cc_doctor.py, line 88
os.remove(test)
tools/cc_doctor.py, line 227
os.remove(os.path.join(home, "site.json"))
tools/cc_doctor.py, line 288
subprocess.run(["attrib", "+h", home], capture_output=True, timeout=20)
tools/cc_downloads.py, line 286
proc = subprocess.Popen(cmd, **kw)
tools/cc_downloads.py, line 292
os.remove(log)
tools/cc_downloads.py, line 332
os.remove(path)
tools/cc_downloads.py, line 345
os.remove(path)
tools/cc_external.py, line 425
subprocess.Popen(cmd, **kw)
tools/cc_external.py, line 430
os.remove(log)
tools/cc_install.py, line 18
r = subprocess.run(base + extra + [pkg], capture_output=True, text=True, timeout=600)
tools/cc_install.py, line 141
shutil.rmtree(d)
tools/cc_paths.py, line 72
subprocess.Popen(["open" if sys.platform == "darwin" else "xdg-open", path], stdin=subprocess.DEVNULL,
tools/cc_session.py, line 451
subprocess.Popen(cmd, **kw)
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Serious
accepts a host from input, with no fixed list in this file.
NETWORK_HOST_FROM_INPUT
tools/canvas_api.py, line 73
def fetch(self, url, accept="application/json"):
tools/canvas_api.py, line 120
headers, body = self.fetch(url)
tools/canvas_api.py, line 142
_, body = self.fetch(meta["url"], accept="*/*")
Show more
tools/cc_collect.py, line 257
return mdl_collect.fetch(ctx, api, courses, date, quick, run, errors)
tools/cc_collect.py, line 315
f = fetch(ctx, api, courses, date, quick, get, run, errors)
tools/cc_downloads.py, line 447
_, body = ctx.api.fetch(meta["url"], accept="*/*")
tools/cc_external.py, line 699
body = page.evaluate("async u => { const r = await fetch(u, {credentials: '
tools/cc_external.py, line 752
_, body = api.fetch(api.host + path)
tools/cc_host.py, line 64
canvas_api.Canvas(host, None, timeout=15, retries=0).fetch(host + "/api/v1/users/self")
tools/cc_outline.py, line 133
with urllib.request.urlopen(req, timeout=timeout) as r: # noqa: S310 网址由用户或 AI 给,只读
Secrets
Note
reads an environment variable.
SECRETS_ENV_READ
tools/cc_token.py, line 32
t = t or os.environ.get("CANVAS_TOKEN")
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit c0724c5f3518. can delete files. accepts a host from input, with no fixed list in this file. reads an environment variable.
Date and source
Date checked:
github.com
Commit graded: c0724c5f3518fa2552e125249e07d93c40292083
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.