This is Getting Started with Agents, and today we’re doing three things—they’re all related, I promise. First we’ll get GitHub set up so we can save our work and never lose it, and push it to a repository. Then we’ll build a personal link-in-bio site where you can collect the projects you’ve made in this course. And last, I’ll show you how to make it public with GitHub Pages. Since we’re already pushing to GitHub, Pages is a good home for it—we’ll touch on Cloudflare Pages too. Let’s get started.

I’ll open Warp—my preferred terminal. If you’re on Ghostty or the built-in Mac Terminal, that’s fine. I’m in my home directory, so I cd developer where I keep my projects, then mkdir solomon-bio and cd solomon-bio. Nothing in here yet.

We’re going to use Claude, so I run claude --dangerously-skip-permissions.

We haven’t really talked about dangerously-skip-permissions. It means Claude won’t stop to ask before it makes changes. I’ve found it doesn’t try to go outside your folder—if it does, you’ll notice, because it’ll start poking at things like Apple Photos or Apple Music. Usually that’s because I wasn’t specific enough, so I deny it and give a clearer instruction. Honestly I rarely have issues.

There’s also a newer Auto mode that tries to prevent dangerous actions. It uses more tokens, so I personally don’t run it. The one thing to flag—we haven’t built anything database-backed yet. Once we do, you’ll want a line in CLAUDE.md (or AGENTS.md for Codex) telling the agent to never drop a table or a database, and to talk to you first if it thinks it needs to. That’s not something Git can roll back. We don’t have a database today, so we’re fine.

First, Git. You’ve probably heard of GitHub—it’s a place to store code. If your code is public, you can make it available to everyone, and that’s where this site is going to live. You don’t need to know a ton. There are a few important commands we’ll cover in the middle of this. On my account you can see repositories for my personal site, the to-do tutorial we did and some other bits. We’re going to get you set up the same way.

If you’re new, there’s a sign-up button—create a GitHub account, it’s free. And if you make a repository public, hosting it on Pages is free too.

You can use the GitHub desktop app, but working with agents it’s just easier if they can drive the CLI. So I ask Claude straight up—what do I need to get GitHub set up on this computer? It walks through it. You need the GitHub CLI. You need a git identity—your email and an SSH key. You need Homebrew, which we installed in an earlier episode, and you install the CLI through Homebrew.

The nice thing about working with agents—if you get stuck, you just ask the agent what to do. I’m confident Claude will get you set up. From here I’ll assume you have GitHub installed and working.

Now the project. I have a personal site with fifteen years of articles and projects on it, but I also own another domain and I want a simple link-in-bio page—my name, a sentence or two about what I do, links to a couple of projects we’ve built and links to social media. That’s the whole thing.

My personal site is minimal and I love IBM Plex—both Plex Sans and Plex Mono are favorites—so I’m thinking I’ll lean on Plex Mono here. Monochrome to match, responsive, works on mobile, maybe something fun in the background. I’ll point Claude at my personal site so it has a visual reference, and I have a logo from that site too. I go into plan mode and describe all of it, then let it brainstorm and ask me questions.

One of my favorite things with these models is the little ASCII wireframe mockups it draws while planning. It walks me through layout options and I make calls as we go—left rail, top-aligned column, not a two-column split, left-aligned, terminal feel. Project style is a title with a one-line description. Just keep it minimal.

For social I go with Twitter, LinkedIn and GitHub, placeholders for now.

A quick aside on the options. If you’re building a full blog like my personal site, that’s built on Astro—a really fast static site generator, great when you have a lot of content. For a single-page link-in-bio like this, I’d just do one HTML file, so that’s what we pick.

Same with hosting. I host a lot on Cloudflare and I’d recommend it, but it takes more configuration. If you’ve made it this far you could work with the agent to figure Cloudflare out, but for this we’ll use GitHub Pages, which is free for public repos and already where our code lives.

Let’s talk about Git—version control. Everything Claude writes is really just documents, code that tells the computer to do things. When those documents change, it’s useful to track the changes, and you can think of Git as a ledger of how things change over time.

To save, we tell the agent to commit. Before agents you’d write a message describing the change yourself. Now the agent looks at the work and writes the commit message for you—and if you did a lot without saving, it can even split it into a few logical commits. Commit is your save point—imagine a video game right before the hard boss, you save so a death sends you back there, not to the start.

Push is the other one. Your commits live on your computer. If something happens to it, you’re out of luck—unless you’ve pushed to GitHub, an online repository. Then you can pull it down on another machine and it’s safe. So commit saves locally, push backs it up. There’s also a rewind or undo, but I’ve found it often just reverts to the last commit rather than truly undoing everything—so committing is what matters.

Claude has built a full site—two files. The other git command worth knowing is git init, which turns a folder into a git repository. Usually you do that once code exists. I could’ve just said commit and the agent would’ve realized it needed to init first, but I run it and it reports the repo is initialized on main with both files untracked, and asks if I want the initial commit. I say commit—that’s the agent saving our work, which we’ll do after every meaningful change.

Claude offers to create the solomon-bio repo on GitHub itself. The only thing it needs from me is public or private. We want public here so GitHub Pages stays free, and it’s just a few links—nothing proprietary.

I have Claude open the project in Chrome DevTools. It works—light and dark mode both. The blurb says something about an engineer working at the intersection of biology and software, which isn’t me at all but is kind of funny. I like the simple typography.

A few changes. Everything’s the same size because it’s going for a terminal feel—monospace, chevrons, all lowercase. I want to loosen that up. Make it read a little more like markdown, with some variation in size.

I ask for some emphasis on my name, and to remove the horizontal rule below it. Switch from all-lowercase to sentence case. Fix the blurb to something real—product design lead and founder—and keep the label “elsewhere,” which is what I used on my old site.

Then I have it drop the right-side chevrons on Projects and Elsewhere and left-align them. I try all caps on just the headers, which I like better than everywhere. And I ask it to make the links flush rather than indented. Small stuff, but it adds up—I commit here to save the progress.

Now the fun part. I ask Claude to add projects from the parent developer folder—the to-do app, the flow field and the particle smiley. We’re going to host those alongside this site. As I say it out loud I realize this is more than a one-liner, so we should plan it. I want the projects copied into this repo and published with the site, probably shown in an iframe but hosted in the same place.

We’ll also need a way back. My plan—copy the selected projects into the repo and add a back button to the top-left corner of each so you can return to the site. When I test it locally, the bio link opens the raw parent directory instead of the project’s index page, and back takes me to that directory listing rather than home.

This is a good thing to see. Everything we’re doing is just files and folders with code in them on this computer, and we’re sending them up to GitHub. That’s part of why I want you comfortable in the terminal—it pulls you closer to that. Before I started programming I thought code was magic. It’s not. It’s words in documents on a computer, and the cloud is just a really big computer in a warehouse somewhere.

Once the server’s running again, the flow field loads with its swirls, and back takes me home. The particle smiley needs its header handled a little differently—Claude actually took a screenshot, noticed it and flagged it for us, which is great. Good job, Claude. Every project now links in and the back button works as expected, so I commit.

A tip—sometimes the agent thinks a screenshot went stale while I’m poking at the browser and decides it did something wrong. When that happens I just copy the working URL back over to it.

I have Claude go grab the links from my personal site and drop them in under Elsewhere—it likes the asterisk bullets, a nice touch. Agents are good at this—going out and doing things on the computer on your behalf. Twitter is X now, which looks a little funny, so I leave it as Twitter and move it down, and remove the email.

Then the copy under my name. I paste in the real line and have it handle the line breaks—product design at Salesloft on one line, co-founded Sideprize on the next. It even bumps the max width to keep the wrap clean without me pointing it out. Claude, you’re on fire with the design decisions today.

Time to make this real. I commit, then ask Claude to create a public repository on GitHub. Public matters—Pages is free on public repos, and paid otherwise. Because I connected the GitHub CLI, the agent can create the repo itself. It works, and solomon-bio shows up in my account.

Since it’s public-facing, I ask for a very short README and let Claude suggest what goes in it—just some markdown. Then I show you where GitHub Pages lives. In the repo, go to Settings, then Pages, and deploy from a branch. We don’t have any other branches yet—we haven’t needed them since it’s just us. On solo projects I don’t really branch, but the moment you’re working with other people you will. That’s a topic for a future video. For now, deploy from main.

Last thing—let’s make it a little artistic, like the art projects from earlier episodes. I ask Claude for a subtle ASCII-style Easter egg in IBM Plex Mono, something with a bit of motion or interactivity that doesn’t overpower the page. It offers options—a cursor trail, a name scramble, an ambient flow field. I go with the ambient flow field, monochrome, tucked into the bottom-right, and I tell it placement should adapt to the width of the browser. The idea is that someone reads the bio and then notices this quiet thing moving in the corner. That’s the feel.

Through the CLI, Claude can enable Pages too. Worth knowing—every push to main republishes the site, usually within thirty seconds to a couple of minutes, so pushing to main is publishing. In Settings under Pages you’ll also find the custom domain field. I own samsolomon.com and I’ll point it here—you buy a domain from Namecheap or another registrar and point it at GitHub.

And that’s it—simpler than I expected. You’ve got your name, a blurb, working links to the projects we built with their back buttons, the flow field and the exploding smiley, and your social links. That’s your link-in-bio site, deployed to GitHub Pages. Thanks for watching.