agentsclimarketplace

Course

Skill pkuinfo/pkucli/skills/course

PKU Teaching Platform (北大教学网/Blackboard Learn) CLI tool built in Rust. Use this skill when working on the course crate, debugging course commands, adding features to the teaching platform CLI, or when the user mentions 教学网, Blackboard, course downloads, assignment submission, video downloads, or PKU teaching. Also use when dealing with HTML scraping via the scraper crate, Blackboard SSO callback, or multipart file uploads. **NOT for course schedule / 课表 / weekly timetable questions — for those use the `treehole` skill (`treehole course`), which is the canonical source and includes 辅修/双学位.** This `course` crate only deals with the Blackboard teaching platform (assignments, files, recordings, announcements).From its SKILL.md

Install
npx -y skills add pkuinfo/pkucli --skill course

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

2.7 KB, as published. Nobody here has run it

Course - 北大教学网 CLI

A CLI client for PKU's Blackboard Learn teaching platform.

Architecture

  • Crate location: crates/course/
  • Auth flow: IAAA SSO (app_id="blackboard") → Blackboard SSO endpoint callback
  • API: HTML scraping with scraper crate (no JSON API available)
  • File upload: multipart form via reqwest

Key Source Files

  • src/main.rs — Clap CLI with subcommands
  • src/commands.rs — Command implementations
  • src/api.rs — HTML scraping logic, page parsers
  • src/display.rs — Terminal output formatting
  • src/client.rs — reqwest client builders

CLI Commands

CommandAliasFunction
login / logout / statusIAAA → Blackboard auth
coursesList enrolled courses (supports --all for all semesters)
infoCourse details
contentBrowse course content tree
assignmentsList assignments with deadlines
assignmentView single assignment
browseInteractive course content browser
assignment-downloadadlDownload assignment attachments
downloadDownload course files
video-downloadvdlDownload course recordings
videosvlsList available videos
submitUpload homework files
otpTOTP 2FA management

Auto-Login for AI Agents

# Check session status
info-auth check

# Auto-login (reads credentials from OS keyring, no password needed)
course login -p

Development Notes

  • HTML parsing is the primary data extraction method — no REST API
  • Assignment list supports deadline-based sorting
  • Video download handles replay/recording URLs
  • All user-facing strings in Chinese
  • Error handling: anyhow::Result with .context("中文描述")
  • Session persisted to ~/.config/info/course/
  • Credentials resolved via info_common::credential (keyring → env → interactive)

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.