Written Sun 1 Nov 2026 (week 44), revised Mon 2 Nov 2026 (week 45). Set up for colorsym-catalog and its site, colorsym-catalog.mathornament.workers.dev; change either address below.
The prompt
After each update, push to GitHub and paste this into Claude Code. It starts with this page's address for agents, colorsym-deploy.mathornament.workers.dev, because Claude Code cannot read the text of a spacesheep.dev link.
Once
Accept the Cloudflare invitation email, which adds you to the account that hosts the site. Without it, step 1 below stops before anything is published.
Instructions for the agent
These steps publish a GitHub repository to a Cloudflare site. The prompt that sent you here names the repository (REPO) and the site (SITE): use those two, not the examples in the form above. Do the steps in order. If a command fails, stop and show the person its error.
The values
- NAME is the first part of SITE's host name. For
https://colorsym-catalog.mathornament.workers.dev/it iscolorsym-catalog. - ACCOUNT comes from the second part of SITE's host name, through this table. If that part is not in the table, stop and ask the person.
| Second part of the host name | ACCOUNT |
|---|---|
mathornament |
e1e1985643cc8491f400c94ffc9f399a |
- DIR is the folder
NAME-deployin the person's home folder,~/NAME-deploy. For the example above it is~/colorsym-catalog-deploy.
The steps
- Log in. Run
npx --yes wrangler@4 whoami. If it says you are not logged in, runnpx --yes wrangler@4 login, ask the person to finish signing in in the browser, then runwhoamiagain. ACCOUNT must be in the list of accounts it prints; warnings above the list do not matter. If ACCOUNT is not there, stop: the person needs an invitation to that Cloudflare account. - Check for unpushed work. Run
git remote get-url originin the folder you started in (your working directory). If it fails or does not print REPO (with or without.gitat the end), that folder is not a clone of REPO: skip this step. If it prints REPO, rungit status -sbthere, and if its first line saysahead, ask the person whether to push those commits first; push only if they say yes. - Get a clean copy. If DIR does not exist, run
git clone REPO DIR. If it exists, rungit -C DIR remote get-url origin, which must print REPO (with or without.gitat the end; otherwise stop), thengit -C DIR pull --ff-only. - Write the two files shown under The two files below into DIR, with NAME and ACCOUNT filled in. If a file is already there, overwrite it with this content.
- Hide them from git. The file
DIR/.git/info/excludemust contain these three lines:wrangler.jsonc,.assetsignoreand.wrangler/. Add any that are missing. Thengit -C DIR status --porcelainmust print nothing; if it prints anything, stop and show it. - Deploy. In DIR, run
npx --yes wrangler@4 deploy. Its output must show SITE's address, printed without the trailing slash. - Check the site. Fetch SITE, then every page its index links to (the links are relative, so add each to SITE). Follow redirects: a page may first answer 307, and each must end with HTTP status 200.
- Report to the person: DIR's current commit, which is what you published (
git -C DIR log -1 --format="%h %cd"); step 6's line about asset files (Success! Uploaded … files, orNo updated asset files to uploadwhen nothing changed); and any page that failed in step 7.
Never commit or push in DIR, and never change files outside DIR. Deploy only from DIR: everything in the repository is published, exactly as it is on GitHub, and nothing else.
The two files
wrangler.jsonc:
{
"name": "NAME",
"account_id": "ACCOUNT",
"compatibility_date": "2026-08-01",
"assets": { "directory": ".", "not_found_handling": "none" },
"observability": { "enabled": true }
}
.assetsignore:
.git
.gitattributes
.gitignore
.claude
.wrangler
node_modules
wrangler.jsonc
.assetsignore