Quickstart Publish your first site with Claude Code

Step 4 · Make it yours

Make your own version

Turn a starter into a site about your own subject. The fastest way is one big prompt, the way history-of-indigo was made. If you want more control, go step by step.

Time: About 1 hour

The fastest way: one big prompt

This is how history-of-indigo (opens in a new tab) was made. Its author created an empty repo and started a Claude Code session with that repo and the starter repos selected. Then they typed one message. The agent researched the subject, built the site in the same format as history-of-tampa and pushed it. The author checked the result. This is the message, exactly as typed:

working directory is history-of-indigo, we want to do a deep research and then publsih a similar format as the history of tampa in the history of indigo and publsih to a github page, this should encompas the origins of indigo dye how it prolifereated across the globe from ancient times to present times

The typos didn't matter. The message worked because it says four things: which repo to work in, which site to copy the format from, the job (research first, then build and publish), and what the site should cover.

  1. Make an empty repo for your subject

    Name it for your subject, in lowercase with hyphens, for example history-of-coffee. Make it public so GitHub Pages can publish it for free. Follow "Create a new repo" in Repos: public or private: on the app path you click to create it on GitHub, and on the VS Code path the agent creates it. Already forked the starter in Clone, fork or copy? This route needs an empty repo, so make a new one under another name, or use the step-by-step route below with your fork.

  2. Start a session with your repo and the starter

    App path

    In the repository selector, pick your-username/your-repo and add fritzhand/history-of-tampa. For a topic that spans the world, add fritzhand/history-of-indigo as a second example. See Many repos, one to work in.

    VS Code path

    Open your Projects folder in VS Code and start a new conversation. Then say:

    Say this
    Clone fritzhand/history-of-tampa and your-username/your-repo into this folder.
  3. Send one prompt

    Replace the highlighted subject with yours. Say what the site should cover, from where to where.

    One prompt: a history site
    Work only in your-username/your-repo. Treat the other repos as read-only reference. We want to do deep research and then publish a site in the same format as fritzhand/history-of-tampa in my repo, and publish it to a GitHub Page. It should cover the origins of indigo dye and how it spread across the globe, from ancient times to the present. Give a working source link for every fact and mark anything you can't verify as TBD. Don't copy the original author's photo, name or analytics tag. Commit as Your Name <your-noreply-email>. Commit and push to main.

    It's a big job, so the agent may work for a while and ask you questions along the way. Answer them. If it says it can't open websites, use the tip in Research first, then build below.

  4. Check it, then publish

    Say this
    Show me what you built in plain English, and list every source you used.

    Then turn on GitHub Pages from main and / (root).

For a minisite with a sidebar, use fritzhand/startup-india-guide as the starter in step 2, and send this instead:

One prompt: a minisite
Work only in your-username/your-repo. Treat the other repos as read-only reference. We want to do deep research and then publish a multi-page minisite in the same format as fritzhand/startup-india-guide in my repo, with the same sidebar, search and page layout, and publish it to a GitHub Page. It should cover the programs, funders, coworking spaces and events for new founders in my city. Give a working link for every entry and mark anything you can't verify as TBD. Don't copy the .github folder, the original author's photo and name, or the analytics ID. Commit as Your Name <your-noreply-email>. Commit and push to main.

That starter builds its pages into a docs folder, so publish from main and /docs.

Step by step, with more control

Do the steps in order. Read what the agent says back after each one before you send the next. The example turns the Tampa history into a history of St. Petersburg, Florida, in a repo called history-of-st-pete.

Your history doesn't have to be a city. The same steps work for a neighborhood, an industry, a company, a movement or a topic like indigo: wherever a prompt says St. Petersburg, Florida, put your subject. Researching and sourcing it is how you learn it. Building a multi-page guide instead, such as a directory, handbook or resource guide? Follow the minisite steps.

  1. Have your copy

    Already forked or copied the starter in Clone, fork or copy? Skip to step 2. If not, fork it now.

    App path

    Cloud sessions work only with repos that already exist, so this click is yours. Open https://github.com/fritzhand/history-of-tampa (opens in a new tab) and click Fork in the top-right corner. Type your-repo as the repository name, in lowercase, leave the other options as they are, and click Create fork.

    VS Code path

    Open your Projects folder in VS Code, then say:

    Say this
    Fork fritzhand/history-of-tampa into my account, with only the main branch, and name the fork your-repo. If you can't choose the fork's name, stop and tell me. Don't fork it under another name. Then clone it here.

    Forked under the wrong name? On your fork, click Settings, type the new name in Repository name and click Rename. Want your commits to count on your GitHub profile? Make a fresh copy instead. Clone, fork or copy shows how.

  2. Start a session in your repo and set the rules

    App path

    Start a new session and pick your-username/your-repo in the repository selector. Optional: add fritzhand/history-of-tampa as a read-only reference, as shown in Many repos, one to work in. Fork not in the list? Add it to the Claude GitHub App, as shown in Claude Code in the app.

    VS Code path

    Open your Projects folder in VS Code. If your repo isn't in it yet, say:

    Say this
    Clone https://github.com/your-username/your-repo into this folder.

    Then open it yourself: File → Open Folder…, choose Projects/your-repo, and start a new conversation there.

    Then send the rules as your first message:

    Say this
    Work only in your-username/your-repo. Treat the other repos as read-only reference. Commit as Your Name <your-noreply-email>. Push finished work straight to main. Only use facts you can cite with a link, and mark anything you can't verify as TBD. Write these rules into a CLAUDE.md file at the root of my repo so every session follows them. Then commit and push to main.

    Using Codex? Say AGENTS.md instead of CLAUDE.md.

  3. Clean out the original owner's things

    The starter still carries its author's analytics tag, photo, name, links and planning notes. Left in, the tag would send your visitors' data to the original author.

    Say this
    In index.html, remove the Google Analytics tag. Delete assets/jeremy.jpg and the author photo and name blocks in the byline, the About section and the credit footer. Delete the files I won't use: ybor.html, js/ybor-data.js, the assets/linkedin and assets/linkedin-ybor folders, and the LinkedIn tools in tools/. Delete the planning files ARCHIVAL_RESEARCH_PROMPT.md, ARCHIVAL_RESEARCH_PROMPT_TAMPA.md and DOWNTOWN_TAMPA_PLAN.md, and replace PROGRESS.md with a fresh one for my project. Remove any links to the deleted pages. Replace every https://fritzhand.github.io/history-of-tampa/ address with https://your-username.github.io/your-repo/ and point the Repository links to my repo. Then list what you removed, and commit and push to main.
  4. Research first, then build

    Get the facts before the agent writes a word of your site. That keeps invented numbers out.

    Say this
    Research the history of St. Petersburg, Florida, for this site. Use real sources, such as archives, libraries, universities, government records and newspapers, and give a working link for every fact, date and number. Wikipedia can point you to sources but isn't one. List images only if they're public domain or openly licensed, with a credit line. Write everything to research/notes.md and mark anything you couldn't verify as TBD. Never invent a number, date or link. Don't change the site yet.

    Ask "Show me research/notes.md" and read it. You know your subject: tell the agent to delete anything that looks wrong.

  5. Make the change

    This is the biggest edit, so ask for a plan first: add "Plan this first. Don't change anything until I say go."

    Say this
    Using only the facts in research/notes.md, rewrite js/data.js, the text in index.html and any Tampa labels in js/app.js for St. Petersburg, Florida. Keep the data file's format and the variable name tampaData so the site still works. Remove any section I have no data for instead of leaving it empty. Keep a line in the footer that says "Forked from fritzhand/history-of-tampa" with a link to it. Then show me what you changed in plain English.
  6. Check

    Say this
    Search the whole repo, ignoring capitals, for leftover words from the original: Tampa, Ybor and fritzhand. Don't rename code names such as tampaData, or file names the code loads. Keep mentions that belong in my history, such as Tampa Bay, and the "Forked from fritzhand/history-of-tampa" credit. Delete planning files that are only about Tampa, and fix every other word a visitor or reader would see, including README.md and js/app.js. Run node tools/validate-data.mjs and fix what it reports. Then summarize what changed in plain English.
  7. Commit and push to main, then publish

    Say this
    Commit and push to main.

    Now switch on your site: Turn on GitHub Pages, from main and / (root).

Step by step: a minisite with a sidebar

Use startup-india-guide when your subject needs several pages that people browse and search, not one story: a directory, a handbook, a resource guide or a program catalog. The Florida ecosystem map and this guide were both built from it. The example is a resource guide for new founders in your city.

  1. Get your copy

    Fork https://github.com/fritzhand/startup-india-guide (opens in a new tab) as in step 1 above. On the app path, click Fork on GitHub yourself. On the VS Code path, say this in your Projects folder:

    Say this
    Fork fritzhand/startup-india-guide into my account, with only the main branch, and name the fork your-repo. If you can't choose the fork's name, stop and tell me. Don't fork it under another name. Then clone it here.
  2. Delete its workflows folder

  3. Start a session and clean out the original owner's things

    Start a session in your repo and send the rules, as in step 2 above. Then say:

    Say this
    Pull the latest changes from GitHub first. In site.config.json, set siteName to "Founder Guide: My City", siteBase to https://your-username.github.io/your-repo/, pathPrefix to /your-repo/ and repo to https://github.com/your-username/your-repo, and delete analyticsId. Delete scripts/fetch-india-news.py; it feeds a daily news bot I don't need. Replace the author footer in build.mjs with my name, Your Name, and delete site/jeremy.png. Run node build.mjs until it finishes without errors, then commit and push to main.
  4. Research, then plan the pages

    Say this
    Research the programs, funders, coworking spaces and events for new founders in my city. Give a working link for every entry, write everything to research/notes.md and mark anything you couldn't verify as TBD. Never invent a name, number, date or link. Then read build.mjs, site.config.json and the data folder, and plan how to turn this site into a resource guide for new founders in my city: which pages to keep, rename or delete, and which data file each page reads. Keep the sidebar, the search and the page layout. Don't change the site until I say go.

    Read what comes back, then say "Go ahead with the plan, using only research/notes.md." This engine was written for India, so the rewrite can take a few sessions. End each one with the PROGRESS.md prompt above.

  5. Check, push and publish

    Say this
    Search the whole repo, ignoring capitals, for leftover words from the original that a visitor would see: India, scheme and fritzhand. Don't rename code names or file names the build reads. Keep the LICENSE file as it is, and fix every other word a visitor or reader would see, including README.md. Run node build.mjs until it finishes without errors, then commit and push to main.

    Then turn on GitHub Pages from main and /docs.

Other subjects that fit this starter: a handbook for your club, a catalog of the programs your school offers, a directory of local nonprofits.

If it goes wrong

The site looks broken after a change

Describe what you see and let the agent compare it with the original:

Say this
The page now describe what looks wrong. Compare my repo with fritzhand/history-of-tampa, find what broke and fix it.

Or go back one step: "Revert the last commit and push to main."

A number or source looks made up
Say this
Check every figure in js/data.js against research/notes.md. Remove anything that has no working source link, or mark it TBD. List what you changed.
The push fails with a message about "workflow"

GitHub refused a change to the .github/workflows folder. If you meant to delete that folder, do it yourself on GitHub, as in the minisite steps. Then say:

Say this
GitHub refused my push because it changes the .github/workflows folder. Pull the latest changes from GitHub, redo my unpushed work as one new commit that leaves that folder exactly as it is on GitHub, then commit and push to main.
What the agent runs for you
# Fork and clone, with only the main branch (GitHub CLI)
gh repo fork fritzhand/history-of-tampa --clone --default-branch-only --fork-name your-repo

# Find leftover words from the original
grep -rniE "tampa|ybor|fritzhand" --exclude-dir=.git .

# The starter's own data check (needs Node)
node tools/validate-data.mjs

# Save and publish
git add .
git commit -m "Rewrite the site for St. Petersburg"
git push origin main

Saved only in this browser.