Modern Python CLI for automating GitHub Classroom assignment management
Project description
ClassDock
Automate GitHub Classroom assignment management with a modern Python CLI
ClassDock is a command-line tool for computer science instructors who manage GitHub Classroom assignments. Instead of manually clicking through dozens of student repositories, ClassDock automates the repetitive work — discovering repos, distributing secrets, tracking roster acceptance — so you can focus on teaching.
Perfect for: Instructors managing GitHub Classroom assignments for classes of any size.
Installation
pip install classdock
Requirements: Python 3.10+ and Git
Quick Start
# 1. Set up your GitHub token (one-time)
classdock token
# 2. Create a new assignment
classdock setup
# 3. Discover all student repositories
classdock fetch
# 4. Add secrets to every student repo at once
classdock secrets add
# 5. Run the full workflow end-to-end
classdock run
Shortcut Commands
These shortcuts cover the most common operations without navigating command groups:
| Command | What it does |
|---|---|
classdock run |
Run the full assignment workflow (assignments orchestrate) |
classdock setup |
Launch the interactive assignment setup wizard |
classdock fetch |
Discover all student repositories from GitHub Classroom |
classdock status |
Show assignment dashboard (repos, roster, token status) |
classdock token |
Configure your GitHub Personal Access Token |
Command Groups
For full control, every feature is available through organized command groups:
| Group | Description |
|---|---|
classdock assignments |
Assignment lifecycle: setup wizard, orchestration, student helpers |
classdock repos |
Repository discovery |
classdock secrets |
Distribute secrets and tokens to all student repos |
classdock roster |
Student roster management with CSV import and assignment tracking |
classdock automation |
Cron scheduling for automated workflow steps |
classdock config |
GitHub token configuration and validation |
See the Full Command Reference for every subcommand and option.
Configuration
ClassDock reads an assignment.conf file from your assignment directory:
# Minimal configuration
classroom_url="https://classroom.github.com/classrooms/123/assignments/456"
github_organization="your-github-org"
assignment_name="homework-1"
# Optional: secrets to distribute to every student repo
secrets_list="API_KEY,DATABASE_URL"
# Optional: enable roster sync during orchestration
step_sync_roster=true
Run classdock setup to generate this file interactively.
Roster Management
Track which students accepted an assignment and link their GitHub repos to your class roster:
# Initialize (one-time, stores data in ~/.config/classdock/roster.db)
classdock roster init
# Import your student list from a Google Forms CSV export
classdock roster import students.csv --org=cs101-fall2025
# After fetching repos, link them to roster entries
classdock roster sync --assignment=homework-1 --org=cs101-fall2025
# See who has and hasn't accepted
classdock roster status --org=cs101-fall2025
See Roster Sync Guide for detailed setup.
Documentation
| Document | Description |
|---|---|
| Full Command Reference | Every command, subcommand, and option |
| Roster Sync Guide | Roster management and orchestrator integration |
| Error Handling | GitHub API resilience and retry patterns |
| CI/CD Workflow | Automated testing and PyPI publishing |
| Contributing Guide | Development workflow and guidelines |
| Changelog | Release history |
Contributing
Contributions are welcome. Please read the Contributing Guide before opening a pull request.
License
MIT License — see LICENSE for details.
Made with care for computer science educators.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file classdock-0.4.1.tar.gz.
File metadata
- Download URL: classdock-0.4.1.tar.gz
- Upload date:
- Size: 229.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c34d4b49a4bd15711d3b9738d17683ee6e3e0988f86fe408fa8793f42ad066fe
|
|
| MD5 |
bc6c5d5ea23a075e578d0dd4b1cddded
|
|
| BLAKE2b-256 |
dac4b32f4bb36489cf126c44d60786765b9f9557330ddfd1f1966029ade26ce2
|
File details
Details for the file classdock-0.4.1-py3-none-any.whl.
File metadata
- Download URL: classdock-0.4.1-py3-none-any.whl
- Upload date:
- Size: 283.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27416859782d878c5269b89163b19e378ab7d67fc8f3a1bb1eed989511ca66cf
|
|
| MD5 |
ee05d801d670a0cb28b17d951893c130
|
|
| BLAKE2b-256 |
50f841571d2b05a3851f544f84106e4238a8a50580251208d80e1256f9f11039
|