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 |
| 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.1
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.1.tar.gz | 154.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| classdock-0.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 347.8 kB
Release files / classdock-0.5.1.tar.gz
| Download URL | classdock-0.5.1.tar.gz |
|---|---|
| Size | 154.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c79ff5d8dd6704370849ce749f675a68a20985a63670170fd4e22aee46118854
|
|
BLAKE2b-256 checksum How to use checksums |
2de05cef86da50e22a0f0b700bbb62be11e6b1aa5c1e52284188c8a50648aefe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / classdock-0.5.1-py3-none-any.whl
| Download URL | classdock-0.5.1-py3-none-any.whl |
|---|---|
| Size | 193.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
26ffa51ba55ca163bc345be8538570780dade81b64a7e41f7571b997a2b33ee5
|
|
BLAKE2b-256 checksum How to use checksums |
f3ad8fa0808becbe3726d45d9aebc8d5da5ebed579d1f316c68ee7b5d4151547
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency log