# GitHub Repository Setup — GAME 1303
> [!abstract] Goal
> Set up GitHub so Claude can write and push the course scripts and documents, Marshall can test them in Unity, and students can start their projects from a single template.
---
## Recommended structure
| Item | Purpose |
|---|---|
| **GitHub organization** for the course | Keeps course material out of a personal account. Free; GitHub Education adds extras. |
| **`game1303-template`** | The Unity starter project. Mark it as a **Template repository** (Settings → General). Students start from this. |
| **`game1303-course`** | Schedule, design-doc templates (`.md` and `.docx`), tutorials and exercises. Packages are attached to **Releases**. Source for the website and Canvas. |
> [!tip] GitHub Classroom
> Make `game1303-template` a Classroom assignment. Each student gets their own private copy in one click, and you can see everyone's commits, which is handy for checking off exercises.
---
## Step-by-step
### 1. Create the organization and repositories
- [ ] Create the GitHub organization.
- [ ] Create `game1303-template`. Choose the **Unity** `.gitignore`.
- [ ] Create `game1303-course`.
### 2. Create the Unity project (Marshall, in Unity)
Unity generates `ProjectSettings/` and the URP setup, so these should not be hand-written.
- [ ] Unity Hub → New project → **Unity 6000.5**, **Universal 2D** template.
- [ ] Put the project inside the cloned `game1303-template` folder.
- [ ] Commit and push.
### 3. Connect Claude
- [ ] Send Claude the repository names, e.g. `org-name/game1303-template` and `org-name/game1303-course`.
- [ ] Claude attaches each repository to the session with push access.
- [ ] If access is denied, the error says what to fix. Usually: claude.ai **Settings → Connectors → GitHub**, and give the Claude GitHub app access to those repositories.
### 4. Claude builds; Marshall tests
- Claude commits and pushes:
- `Packages/manifest.json` (Input System, Cinemachine, UI Toolkit, Timeline, 2D Tilemap Extras, etc.)
- the folder layout (`Assets/_Course/`, `Assets/Scenes/Exercises/`)
- the C# scripts and assembly definitions
- Markdown tutorials and templates in `game1303-course`
- [ ] Marshall pulls, opens the project in Unity, and checks that it compiles and plays.
- [ ] Report any errors back to Claude for fixes.
### 5. Export and release packages (Marshall, in Unity)
`.unitypackage` files must be exported from the Editor.
- [ ] Assets → **Export Package** for each package (`Course_Core`, `Course_2D`, `Course_3D`, `Sandbox_2D`, `Sandbox_3D`, `Kit_<Genre>`, …).
- [ ] Attach the exports to a **GitHub Release** in `game1303-course`, with a version number such as `v1.0.0`.
- [ ] Students download from Releases, so the repository stays light and every version is kept.
### 6. Publish to students
- [ ] Copy tutorials and templates into Canvas assignments.
- [ ] Publish the Obsidian notes to the course website.
- [ ] Share the template link or Classroom assignment link.
---
## Who does what
| Task | Marshall | Claude |
|---|:---:|:---:|
| Create organization and repositories | ✅ | |
| Create Unity project from the Universal 2D template | ✅ | |
| Connect GitHub access | ✅ | |
| Write the package list, folders, scripts, assembly definitions | | ✅ |
| Write tutorials, exercises and templates | | ✅ |
| Compile and play-test in Unity | ✅ | |
| Fix reported errors | | ✅ |
| Export `.unitypackage` files and create Releases | ✅ | |
| Publish to Canvas and the website | ✅ | |
---
## Notes
- Course scripts install under `Assets/_Course/` so they never collide with students' own files.
- To update a package, students re-import the same `.unitypackage`; it overwrites in place.
- Consider **Git LFS** in `game1303-template` if the sandbox art and audio grow large.