Sources for gh CLI extensions. gh-teacher/ and gh-student/ are each their own extension; once published to its own repo, an extension is installable via:
gh extension install <owner>/<repo>
See the GitHub CLI extensions docs for background on what gh extensions are and how they're built.
- gh-teacher/ — teacher-facing extension.
- gh-student/ — student-facing extension.
- shared/ —
github.com/foundation50/classroom50-cli-shared, an internal Go module holding logic both extensions share (cross-binary contract constants, GitHub-API helpers, auth scaffolding, git Tree-commit plumbing, and the terminal-feedback UI primitives — theghuispinner + TTY/color policy). It is not an extension. The two extensions depend on it via a relativereplace => ../shareddirective wired through the top-levelgo.work(dev-only);gostatically links it at build time, sogh extension installships self-contained binaries and the sharing is transparent to installation. Each extension still builds standalone with the workspace disabled (GOWORK=off).
End-user documentation — installation, walkthroughs, and per-command reference — lives in the classroom50 wiki:
| Topic | Page |
|---|---|
| Install both extensions | Installation |
Teacher walkthrough (org setup → init → classroom → roster → invite → download) |
CLI Teacher Guide |
| Student walkthrough (accept → submit) | CLI Student Guide |
Every gh teacher command and flag |
gh teacher reference |
Every gh student command and flag |
gh student reference |
| Common errors and debug flags | Troubleshooting |
The wiki is built from wiki/ in this repo and auto-published on every merge to main (publish-wiki.yaml). When you ship a new CLI feature, document it on the wiki — the per-extension READMEs in this folder are deliberately kept minimal (build/lint/test instructions only) so usage details don't drift between two places.