From pku-cli
CLI tool for reserving, querying, and canceling academic discussion rooms at PKU's bdkj.pku.edu.cn. Supports IAAA SSO login, participant groups, and commands for rooms, history, students, and bookings in Er Jiao, Si Jiao, Di Xue buildings.
npx claudepluginhub pkuinfo/pkucli --plugin pku-cliThis skill uses the workspace's default tool permissions.
A CLI client for PKU's academic discussion room reservation system at bdkj.pku.edu.cn.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
A CLI client for PKU's academic discussion room reservation system at bdkj.pku.edu.cn.
crates/bdkj/app_id="bdkj") → /login/oauth 回调种 JWTUser/SESSION/rememberMe cookies/room/classRoom, /classRoom/seachStudent, /classRoom/historyTime) + HTML form 步骤 (/classRoom/applyStep, /classRoom/handle/submit) + GET 取消 (/classRoom/cancelApply/<id>)scraper 解析 div#results > div.rowsrc/main.rs — tokio::main,调用 pku_bdkj::run()src/lib.rs — Clap CLI 定义 + dispatchsrc/client.rs — reqwest client 构造src/login.rs — IAAA 登录 + JWTUser cookie 提取src/api.rs — 教室/时段/学生/提交/取消/列出的核心 APIsrc/commands.rs — 各子命令实现src/display.rs — 终端渲染(colored)src/groups.rs — 参与人分组持久化(~/.config/info/bdkj/groups.json)| Command | 用途 |
|---|---|
login -p | IAAA 密码登录(keyring → env → interactive) |
status / logout | 会话管理 |
rooms <building> | 列出教学楼下所有教室(二教/四教/地学) |
history <room_id> | 查询教室已被预约时段 |
student <serial> <name> | 查询学生信息 |
list / ls | 列出当前用户的预约记录 |
reserve --room-id ... --begin ... --end ... --reason ... -g <group> | 提交一次预约(用分组) |
reserve ... -p 学号:姓名 -p ... | 提交一次预约(手动列参与人) |
cancel <apply_id> | 取消一次预约 |
group list / show <name> / set <name> -p ... / remove <name> | 管理参与人分组 |
--group 与 --participant 互斥;两者必须至少指定一个。申请人自己也必须包含在参与人列表中。
info-auth check
bdkj login -p # 读 keyring,不需要密码
bdkj group set lab -p 2200011523:张三 -p 2200011524:李四
bdkj reserve --room-id 924131235851276288 \
--begin "2026-04-20 14:00:00" --end "2026-04-20 16:00:00" \
--reason "课题组讨论" -g lab
anyhow::Result + .context("中文描述")~/.config/info/bdkj/;groups 在同目录下 groups.jsonsubmit_apply 的成功判据是重定向后 URL path 为 /classRoom,而不是扫 layer.msg(页面模板里有无关的 layer.msg 调用会误命中)api.rs)