Skip to main content
A wooden fingerpost among gum trees pointing several ways beside a trail map, in a three-ink risograph print

Onboarding

The whole course setup as a terse checklist: accounts, tools, your API key, and the course skills plugin, each linking to the full how-to

Everything you need working before the first class, as a checklist. There’s no crit in week 1, but the first crit runs in week 2 with a marked deliverable due at its cutoff, so steps 1–6 need to be working by then; step 7 can wait for the mid-semester break, and step 8 is optional. Where a step has a fuller page it links there — follow those if you hit a snag, and come back here for the fast path.

The early steps you do by hand, because installers and web sign-ups can’t be automated. Once Claude Code is running and the course plugin is installed, the course skills can finish and check the rest for you. If you get properly stuck, post on Ed; the teaching team is watching it from the start of week 1.

1. Create your GitHub account

Sign up — the free tier is fine. Every submission goes through GitHub. Account details and policy: software and platforms.

2. Install the tools

Start with two you install by hand, in this order:

Then one command installs the rest:

mise use -g node@24 pnpm gh jq

That -g makes these your defaults everywhere, which is what you want for tools that aren’t tied to a project (gh, jq) and for a working Node when you’re just experimenting. Inside a repo, its configuration takes precedence: mise reads the nearest mise.toml first, and every course template ships one pinning the versions that week was tested against. Running mise install in a fresh clone installs exactly those versions. Do the same in your own projects.

Already have a runtime manager you like? Keep it, as long as it supplies the Node and pnpm versions each template names — going off piste covers where that leaves you.

The last four have their own installers:

3. Configure and connect

Log in to GitHub from the terminal — this opens a browser:

gh auth login

Choose GitHub.com, then HTTPS, then “Login with a web browser”. The token this creates carries four permissions — repo, read:org, gist and workflow — and there’s nothing useful to trim: the first three are the gh CLI’s hard floor (gh auth refresh --remove-scopes refuses to drop them) and the fourth is what lets you push changes to your repo’s .github/workflows/checks.yml. gh auth status shows what you’re carrying at any time.

The course org is what bounds that token. A token can never do more than you can, and inside comp4020-agentic-coding-studio you can work on your own repo and nothing else: members can’t create repositories, fork private ones, delete anything, or even see a repo they haven’t been added to.

Get your API key from Canvas and wire it into Claude Code, following your LLM access — that page is the single source for the key steps: where the key comes from, the exact settings to add, why the key must never touch a repo, and troubleshooting. Then check it works (VPN connected — campus wifi doesn’t count):

claude --print "say hi"

4. Install the course skills plugin

claude plugin marketplace add comp4020-agentic-coding-studio/core
claude plugin install comp4020@comp4020

The skills change through the semester and the plugin does not update itself, so come back to keeping it current every few weeks — it is two commands and a restart.

5. Let the plugin finish the setup

Everything so far has been typed at your shell. Now start Claude Code itself, which is where the skills live:

claude

Inside that session you can hand the rest to the agent. Ask in plain English, or run the skills directly:

Run /comp4020:help for the full menu.

Prefer to do it all by hand? Go right ahead — the skills only automate the same steps documented on this page and on your LLM access, and check nothing’s been missed.

6. Meet your first repo

You never create course repos yourself: each deliverable’s repo is generated for you from the course starter template and placed in the course GitHub org, named for the deliverable and your handle, private until you ship it public at your cutoff. The assessment page covers that lifecycle; two things on your side make it work:

7. Later: Fly.io, for the full-stack half

None of this is needed for the static half of the course, so leave it until the mid-semester break — but have it working by the week 7 crit, where your tutor opens your app’s URL at the door. It’s a five-minute job, and there’s no account to create:

  1. Install the CLI: mise use -g flyctl
  2. When your first full-stack repo is created (at the start of week 7, ahead of the week 8 crit), you’ll get an Ed message with a token; paste its block inside the repo
  3. From inside the repo, deploy the untouched starter: flyctl deploy --remote-only --ha=false -a <your-repo-name>, then open https://<your-repo-name>.fly.dev/. The Ed message includes that command with the name filled in — all lowercase, whatever capitals your GitHub username has. A live starter is the check-in

Don’t sign up for a Fly.io account or add a payment method for the course: every app is in the course-managed organisation, and the course covers billing.

For the token, deployment while the repo is private and the app’s resource limits, see your hosting access.

8. Optional: your budget in the status line

Your weekly API budget, live at the bottom of every Claude Code session, green through amber to red as you approach the cap:

comp4020 $41.20/$100 (41%)

It’s a second, separate plugin, so you only run it if you want it:

claude plugin install comp4020-statusline@comp4020

Installing it doesn’t switch the status line on by itself. Run its bundled skill by asking it to “install the status line”; it writes the settings without changing an existing status line. Ask the same skill to diagnose a blank or stuck status line. It needs jq (step 2) and a Unix shell, so macOS, Linux or WSL.

The number is cached and refreshed in the background, so it lags your real spend by up to a minute. Ask Claude “how much budget do I have left?” whenever you want the authoritative figure. Off the VPN it shows the last figure it managed to fetch, and budget: ? means it hasn’t reached the proxy yet.

Footnotes

  1. Piping a URL straight into your shell runs whatever that server sends, with your privileges, sight unseen. It’s a reasonable thing to do for a publisher you’ve decided to trust and a bad habit everywhere else — so don’t let this page teach you the reflex. To check first, curl -fsSL https://mise.run/zsh -o mise-install.sh, read it, then sh mise-install.sh — the same two-step works for any install script on this page. Or skip the script entirely: mise is in Homebrew (brew install mise) and most distro archives, in which case follow mise’s install docs to add the shell activation line yourself. ↩ ↩2

  2. Ubuntu still ships gh 2.45, which is too old to flip a repo public non-interactively. Without a current version, you discover the problem when you ship at a crit cutoff, the worst possible moment to debug your package manager. mise’s build is current, and /comp4020:doctor checks for exactly this. ↩