Sand Point Studios

SPS Contributor Guide

Everything you need to be productive at Sand Point Studios

What this is

You have been added to the Sand Point Studios contributor program. This page walks you through everything from creating your accounts to making your first commit. It is the canonical "where do I start" link — bookmark it.

Read top-to-bottom on your first pass. Once you are set up, you'll mostly need First day of work, Working with Claude, and Troubleshooting.

Who does what: steps marked SPS admin are done by Teagan before you start. Everything else is done by you. If something marked "SPS admin" hasn't happened yet, that's the right reason to email help@sandpointstudios.ltd.

1. Account setup

You'll create or accept four accounts: an SPS email, a Google account tied to it, a GitHub account, and an Anthropic Team seat. Plan on 30–45 minutes for the full set.

1.1 Your SPS email

SPS admin Teagan provisions your mailbox at FirstName.LastName@sandpointstudios.ltd and sends the temporary password to your personal email.

  1. Open the email from Teagan. It contains your new SPS address and a temporary password.
  2. Go to https://mail.sandpointstudios.ltd/SOGo/ and sign in.
  3. Confirm you can see the inbox and the welcome email.
  4. Change your password immediately: gear icon (top-right) → PreferencesPassword. Use a strong unique password and save it in a password manager.

Keep this tab open — you will need it for verification codes in the next two phases.

1.2 A Google account on your SPS email

You need a Google account tied to your SPS address so you can sign in to your code workspace via Google.

  1. Open https://accounts.google.com/signup in a new tab.
  2. Fill in your first and last name.
  3. Critical: on the username step, click "Use my current email address instead" below the Gmail field. Do not create a new Gmail address.
  4. Enter your SPS email (e.g., FirstName.LastName@sandpointstudios.ltd) and continue.
  5. Google sends a verification code to your SPS inbox — go to your SOGo tab, get the code, paste it in.
  6. Finish setup: date of birth, optional recovery phone, agree to terms.
If Google rejects your SPS email at signup

This is rare but can happen with newer domains. Don't try workarounds. Email help@sandpointstudios.ltd with the exact error and we'll handle it.

1.3 A GitHub account on your SPS email

GitHub is where all the project code lives. You'll be added as a collaborator to the repos you'll work on.

  1. Open https://github.com/signup.
  2. Use your SPS email when prompted.
  3. Pick a username — firstname-lastname or firstname-sps works. Pick something professional you wouldn't mind people seeing.
  4. Verify your email via the link GitHub sends to your SOGo inbox.
  5. Enable two-factor authentication immediately: profile photo → SettingsPassword and authenticationEnable two-factor authentication. Use an authenticator app.
  6. Save your recovery codes in your password manager. If you lose your 2FA device and these codes, account recovery is hard and not guaranteed.
  7. Send your GitHub username to help@sandpointstudios.ltd. Teagan adds you as a collaborator on the relevant repos. Watch your inbox for an invitation and click Accept invitation.

1.4 Accept your Anthropic Team seat

Your Claude Code access runs through Sand Point Studios' Anthropic Team plan, not a personal Claude account.

  1. Look in your SPS inbox for an email from Anthropic with a Team plan invitation.
  2. Click Accept invitation.
  3. If you don't already have an Anthropic account on your SPS email, click Create account on the page that opens. Use your SPS email — the invite is bound to that address.
  4. Once you're signed in, you'll see a confirmation that the seat is active.
  5. Email help@sandpointstudios.ltd when this is done so we can confirm the seat shows as active in the admin panel.

2. Claude Code on your laptop

You will use Claude Code in two places: on your personal laptop (for the initial sign-in) and inside your SPS workspace (for actual project work). The laptop install only exists to bootstrap your workspace credentials — once your workspace is signed in, you'll do all real work there.

2.1 Install Claude Code

Claude Code runs on macOS, Windows, and Linux. Install through Anthropic's CLI:

npm install -g @anthropic-ai/claude-code

If you don't have Node.js installed, get it from nodejs.org first (LTS release is fine).

2.2 Sign in to Claude Code

Open a terminal and run:

claude auth login --claudeai

A browser tab opens. Sign in with the Anthropic account on your SPS email — same account you used to accept the Team seat in step 1.4. After the success page, return to the terminal.

Verify it worked:

claude auth status

You should see loggedIn: true and subscriptionType: team. If it says anything else, see Troubleshooting.

Wrong account is the #1 mistake. If you sign in with a personal Claude account by accident, auth status will show subscriptionType: pro or max instead of team. Run claude auth logout and start the login over.

3. Your code-server workspace

Each SPS contributor has a dedicated browser-based VS Code workspace running on the company server. It comes with the entire SPS toolchain pre-installed and Claude Code wired up. You access it from any browser — your laptop, an iPad, anywhere — and your work is persisted on the server.

3.1 Sign in to your workspace

SPS admin Teagan sends you your specific URL once your accounts are ready.

  1. Open the URL Teagan sent you. It looks like https://code-yourname.sandpointstudios.ltd.
  2. Cloudflare prompts you to sign in with Google. Use the Google account you created in step 1.2 (the one tied to your SPS email).
  3. You will land in a VS Code interface running in your browser. This is your workspace.

3.2 Bootstrap Claude Code in your workspace

Your workspace doesn't have Claude Code credentials yet — you have to drop in the credentials from your laptop. This is a one-time step.

  1. On your laptop, find your Claude Code credentials file:
    • macOS / Linux: ~/.claude/.credentials.json
    • Windows: %USERPROFILE%\.claude\.credentials.json (typically C:\Users\YOU\.claude\.credentials.json)
  2. In your code-server browser tab, open the file explorer (the icon in the upper-left sidebar). Navigate to /tmp if you can browse there, or simply drag the file directly into the file tree at the root of your home folder.
  3. Open a terminal in your workspace: Terminal menu → New Terminal (or Ctrl + `).
  4. Move the file into place and lock its permissions:
    mkdir -p ~/.claude
    mv ~/.credentials.json ~/.claude/.credentials.json
    chmod 600 ~/.claude/.credentials.json
  5. Verify you're signed in:
    claude auth status
    You should see loggedIn: true and subscriptionType: team. If yes, you're done. If not, see Troubleshooting.
  6. Email help@sandpointstudios.ltd with the output of claude auth status so we can confirm everything is wired up.
Why drag-and-drop, not email or copy-paste? Your .credentials.json contains a refresh token that an attacker could use to impersonate your Claude account. Dragging the file directly into your workspace keeps it inside the encrypted Cloudflare Access session — it never touches email, chat, or anyone else's machine.
Where exactly to drop the file in code-server

The file tree on the left side of code-server shows your home directory (/home/coder/). You can drag the .credentials.json file from your laptop's Finder/Explorer window directly onto that file tree — it uploads on drop. The terminal commands above then move it from ~/ (where it landed) into ~/.claude/ (where Claude Code looks for it).

If drag-and-drop doesn't work in your browser, an alternative is to open a new file in code-server, paste the JSON content into it, and save it to the right path manually.

3.3 Confirm your workspace is ready

After Teagan confirms the credential bootstrap, you should be able to:


4. Your first day of work

This section covers the day-to-day workflow: pick a project, make a change, get it reviewed, get it deployed.

4.1 Find your project

SPS projects live under /workspace/ in your code-server container. Open a terminal and look around:

ls /workspace/

Each project has its own CLAUDE.md at the top. Read it before doing anything — it tells you the project's stack, conventions, and where things live.

4.2 Branch — never commit directly to main

The main branch is protected. All changes go through a pull request (PR). Branch naming convention:

git checkout -b feature/yourname/short-description

Examples: feature/lewis/fix-payment-rounding, feature/bert/blade-config-ui.

Auto-rebase happens for you. When you start a Claude Code session in a clean working tree, your branch is automatically rebased onto the latest origin/main. You shouldn't see merge conflicts caused by being out of date — but if Claude tells you the rebase needs your attention, stop and ask before forcing through.

4.3 Commit with conventional-commit prefixes

Commit messages start with one of:

PrefixWhen
feat:New user-visible capability
fix:Bug fix
refactor:Code reorganization without behavior change
docs:Documentation only
chore:Dependency bumps, tooling, non-product changes
test:Adding or fixing tests

Example: fix: round invoice totals to 2 decimals before display

Claude Code can write the commit message for you — ask "draft a commit message for these changes" and it will summarize the diff. Read the draft before you accept it; commit messages are read-only history.

4.4 Push and open a pull request

git push -u origin feature/yourname/short-description
gh pr create --fill

gh pr create --fill opens a PR using your branch name and last commit as the title and body. Edit on GitHub if you need to add detail.

Every PR needs at least one reviewer who is not the author before it can merge to main. Tag the relevant person, or ask in help@ if you don't know who owns the area.

4.5 Verify the deploy

Most SPS projects auto-deploy on merge to main. A successful git push is not the same as a successful deploy. The remote build can fail, env vars can be wrong, the live endpoint can hang.

After your PR merges:

  1. Watch the deploy run on GitHub Actions (the Actions tab, or gh run watch).
  2. Wait for the green check.
  3. Hit the live endpoint in a browser. Confirm your change is actually visible.
If the deploy fails: don't push another commit on top hoping it fixes itself. Read the failed action's logs. If the cause isn't obvious, ping help@ with the run URL.

Working with Claude — what actually works

Claude is a teammate, not an autocomplete. The more context you give, the better the work. The fewer hops between you and a working system, the less time you burn.

Be specific about the goal, not the implementation

Instead of "write a for loop that iterates through the array and..." — say what problem you're solving and what the output should look like. Claude picks the idiomatic implementation better than you can dictate it line by line.

Weak: "Write a for loop that checks each item in users and if active is true, add to a new list called out, then return it."

Strong: "Give me the list of active users from users."

Show, don't tell — point at the file

When debugging, paste the actual error and the file path. When asking for a change, point at the file. Claude in your workspace can read your repo directly — "look at src/payments/charge.ts" is faster than re-describing the code.

Let it explore before it edits

For changes spanning more than one file, ask Claude to read the surrounding code first. A 30-second exploration avoids a 10-minute wrong rewrite. Phrases that work: "read the relevant files first", "plan before changing anything", "use the Explore agent to map this."

Use the personas we've built

Your workspace comes with Scribe (docs / memory / decisions-log specialist) and Scout (read-only codebase exploration) installed. Type /agents in the Claude Code panel to see them. Delegate when the task fits — Scribe for any documentation change, Scout for mapping unfamiliar code. They're faster and more disciplined than asking the main agent to do it.

Scope is your friend

One focused task per turn gives better results than a five-item wishlist. If you must ask for several things, say so explicitly and let Claude plan the order.

Use the team's weekly limit wisely

Each Team seat has a weekly usage cap. Normal work won't hit it, but a few habits keep you well clear:


Reporting bugs and suggestions

Every SPS product has three ways to give feedback:

  1. In-app bug reporter (when working in a product that has one): use the in-app flow. It captures the page state and user context automatically.
  2. Email the monitored aliases:
    • bug@<product-domain> — bug reports (e.g., bug@wyrdlyre.app, bug@onecutshop.app)
    • enhancements@<product-domain> — feature requests
    • help@sandpointstudios.ltd — general questions, onboarding support, anything you're unsure where to send
  3. Ask Claude in your workspace to log the bug for you. "Log this bug against Wyrdlyre: the audio dropout happens whenever the player crosses minute 14."

All three feed into the same ticketing system (No Wake Zone). For straightforward, low-risk bugs, an automated fix-bot will attempt a patch on a draft PR — humans review before anything merges to production.


Troubleshooting

"claude auth status says I'm not logged in"

On your laptop: run claude auth login --claudeai again. Make sure you sign in with your SPS email's Anthropic account, not a personal one.

In your workspace: the credential file probably didn't make it into the right place. Re-check that:

ls -la ~/.claude/.credentials.json

If the file is missing or 0 bytes, redo step 3.2. If it's there and non-empty but auth still fails, email help@ with the output of:

claude auth status
ls -la ~/.claude/.credentials.json
"auth status shows subscriptionType: pro or max, not team"

You signed in with a personal Anthropic account, not your SPS Team seat. Run claude auth logout, then claude auth login --claudeai again, and use your SPS email this time.

"My branch won't push — it says it's behind"

Your local branch and the remote diverged. Don't force-push. Run:

git fetch origin
git rebase origin/main

If you hit conflicts, ask Claude to walk you through them or email help@ — force-pushing without understanding the conflict can wipe out someone else's work.

"My PR has been sitting unreviewed for a day"

Tag the relevant reviewer in a comment, or ping help@ with the PR link. Don't merge unreviewed work to main, even if you have permission to.

"I lost my GitHub 2FA device"

Use one of your recovery codes (saved during account setup). If you lost those too, email help@ immediately. GitHub account recovery is hard and not guaranteed — the sooner we know, the better.

"The deploy succeeded but the live site shows the old version"

Likely either the CDN is caching, or the deploy didn't actually finish (just reported success early). Hard-refresh the page first (Ctrl/Cmd + Shift + R). If that doesn't fix it, check the GitHub Action's deploy step logs and ping help@ with the run URL.

"I see a workspace error I don't recognize"

Capture: the error message, what you were doing right before, and the URL/file path. Send to help@. Don't restart your workspace yet — it can mask the underlying problem.


Get help

Email help@sandpointstudios.ltd. The mailbox has an AI triage layer that drafts responses Teagan reviews before they go out — so you'll get a reply that's either directly from Teagan or with her sign-off. During onboarding, expect faster turnaround on setup blockers than on general questions.

For anything urgent (you can't access your workspace, you think you exposed a credential, you accidentally pushed something sensitive), email help@ with URGENT in the subject line.