Ship your site from Claude Code
An LLM wrote your site, and the files are on your laptop. This guide gets them onto GitHub and sets up a routine where you ask Claude Code for changes, and they go live when you say so. It's the first half of the trip. The second half, hosting on your own domain, is An LLM built you a website. Now what?
How it works
- You ask Claude Code for a change. Claude edits the files on a branch named
dev, checks for broken links, and commits. - You push
dev. GitHub Actions checks the site again. - When you're happy, you move
mainto matchdevand push. - GitHub Actions deploys
main. The site is live in about a minute.
The tip of main is always what's live, so main equals
production. You do the pushing, not Claude: nothing leaves your laptop, and nothing
reaches production, until you decide.
Hand it to Claude Code
The plan is open source in
athinktank/skunkyard,
under claude-code-workflow/, written for an LLM to follow. Open a
terminal in your site's folder, start Claude Code with claude, and
paste this:
Read https://github.com/athinktank/skunkyard/tree/main/claude-code-workflow
and set up this folder with that workflow: a GitHub repository,
a dev branch for work, and main as production.
Then set up the deploy with
https://github.com/athinktank/skunkyard/tree/main/aws-static-site
My domain is example.com. My site's files are in site/.
Give me every command that pushes to GitHub or needs AWS credentials,
and wait for me to run it.
The steps
These are the steps Claude walks you through. You need git, the GitHub CLI, Claude Code, and Python 3, which macOS and most Linux systems include.
1. Sign in to GitHub
gh auth login
2. Put the folder on GitHub
If the folder isn't a git repository yet, Claude runs git init and
makes the first commit. Then you create the repository and push:
gh repo create OWNER/REPO --private --source . --push
3. Make the dev branch
git checkout -b dev
git push -u origin dev
4. Add the rules and the check
Claude copies three files from the plan:
CLAUDE.md: rules Claude Code reads at the start of every session. Work ondev, never deploy from the laptop, let the user push, and run the link check before each commit.check_links.py: finds broken links and images insite/..github/workflows/ci.yml: runs the link check on every push todev.
5. Set up the deploy
Follow the hosting guide. Its deploy
workflow runs on every push to main.
6. Ship
From then on, every release is one line:
git checkout main && git merge --ff-only dev && git push && git checkout dev
--ff-only moves main forward to dev without a
merge commit, and refuses if the two have split. That keeps main
identical to what you tested on dev.
Tips from using it
- Run commands with
! - In Claude Code, type
! git pushto run a command yourself. The output lands in the conversation, so Claude sees the result and the next step follows from it. sudodoesn't work through!- It can't ask for your password there. Run it in a regular terminal.
- Keep your AWS sign-in short-lived
- Deploys never need your AWS credentials, only the one-time setup does. Keys that expire mean Claude can't run AWS commands on its own later.
- Check the email on public commits
- Git stamps each commit with your email address. For a public repository,
use GitHub's no-reply address:
git config user.email "ID+USERNAME@users.noreply.github.com".
What it costs
GitHub is free for this, including the Actions checks: unlimited minutes on a public repository and 2,000 a month on a private one. A check takes under a minute. Claude Code needs a paid Claude plan or API credits; see Anthropic's pricing. Hosting costs are in the hosting guide.