ClassDock
Automation for GitHub-based courses, from a modern Python CLI
ClassDock is a command-line tool for computer science instructors who run assignments as template repositories in a GitHub organization. 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 assignments on GitHub 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 in the organization |
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
GITHUB_ORGANIZATION="your-github-org"
ASSIGNMENT_NAME="homework-1"
TEMPLATE_REPO_URL="https://github.com/your-github-org/homework-1-template"
# 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.
Metadata
Release files for classdock 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| classdock-0.5.0.tar.gz | 154.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| classdock-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 347.9 kB
Release files / classdock-0.5.0.tar.gz
| Download URL | classdock-0.5.0.tar.gz |
|---|---|
| Size | 154.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e78a5c73919ae6e02fc7df84831a16929dc3773eac4f9fe5e70afae1f0654ffb
|
|
BLAKE2b-256 checksum How to use checksums |
eb7c9e41a9bb9161fe6095ed5d9de2957bd930f8cf839acb027976377e13e405
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / classdock-0.5.0-py3-none-any.whl
| Download URL | classdock-0.5.0-py3-none-any.whl |
|---|---|
| Size | 193.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e66bd8d6410feaa0e5f8eb31b56aec22c46cc027d87d01e8553810d894fb4680
|
|
BLAKE2b-256 checksum How to use checksums |
5a16b04dbeba076b6881f7d114d0200bac19b0bc9373fa35e342ac5a0a4e0798
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|