Working with Claude
Working with Claude
Notes on how I actually work with Claude day to day – from connecting GitHub through to building custom skills.
Git and GitHub, in plain terms
- Git: tracks changes to a folder of files (a "repository") over time – a detailed save history.
- GitHub: the website that hosts git repositories online, so people (and tools) can share and collaborate on them. Git is the tool; GitHub is where the repo lives.
- Repository ("repo"): the project folder itself, plus its entire history of changes.
- Commit: a saved snapshot of changes with a short message describing what and why – a labeled checkpoint you can always return to.
- Branch: a separate line of work split off from the main version, so changes don't touch the "real" version until ready. The default branch is usually
main; a new piece of work gets its own branch. - Push: uploading local commits to GitHub so they're visible online.
- Pull / fetch: the reverse – downloading the latest changes from GitHub.
- Pull request (PR): a request to merge one branch into another, usually
main– literally "please pull my changes in." It's also where comments, requested changes, and automated checks happen before anything lands. - Merge: combining a branch's changes into another, typically closing the PR.
- Merge conflict: when two branches changed the same lines differently and git can't decide automatically – a human (or Claude) resolves it by hand.
Connecting GitHub
Claude connects to GitHub via an authorization link, not a password – via claude.ai Settings → Connectors. Access is scoped per repository, not "all of GitHub": someone with admin rights has to explicitly grant which repos Claude can see. If Claude can't reach a repo, that's almost always a permissions issue, not a bug.
Once connected, Claude can read issues and PRs, create branches, commit, push, and open pull requests – the same actions a person would take through the GitHub website or command line. The repos available to a session are listed explicitly up front; Claude has to add a repo before it can touch it, it can't just guess at a URL.
Working in a session
Each session works inside its own fresh, isolated copy of a repo. Nothing sticks around after the session ends unless it was committed and pushed first – "did you save it?" really means "did you push it?"
Claude works on its own branch per task, never directly on main unless told to – same as a cautious human contributor. Good etiquette:
- Check what's already there (
git status) before anything that could discard unsaved work. - Small, focused commits with clear messages, not one giant "fixed everything" commit.
- Don't skip safety checks or force-push over history without asking – fix the actual problem instead.
Pull requests and review
Claude can watch a PR and react automatically to a failed check or a reviewer comment. It treats PRs differently by ownership: one it opened is its responsibility to get mergeable; one it's just watching gets bigger decisions raised as a question rather than changed unilaterally. Every comment or reply it posts on GitHub carries a small signature, so it's always clear it came from Claude.
Skills
A skill is a saved, reusable set of instructions for a task that comes up repeatedly – a review checklist, a formatting style, a repo-specific process. Trigger one with /skill-name instead of re-explaining the same thing every time. Skills can be personal, project-specific (stored in the repo so everyone gets the same playbook), or shared org-wide. Claude will surface a relevant skill on its own when a task matches, and suggest creating one if it notices the same kind of task recurring without one.
Making your own
The skill-creator skill helps build a new skill, edit an existing one, and test whether it actually works before relying on it. What matters most:
- Trigger description: the short description Claude checks a request against. Too vague and it never fires; too broad and it fires on the wrong things.
- Instructions: write them like a briefing for a smart colleague who's never seen this before – specific steps and file names, not "do the usual thing."
- Scope discipline: one job done well (e.g. "review this code for bugs"), not everything at once.
Skills can be tested and benchmarked before relying on them – worth doing, since a skill whose description is too generic will simply never trigger.
Habits that make it smoother
- Being explicit about scope keeps Claude from doing too much or too little.
- Asking Claude to explain its understanding of the code before changing it is a good sanity check.
- For anything with real consequences – pushing code, sending messages, deleting things – Claude asks for confirmation by default. Rely on that rather than pre-approving broad, hard-to-undo actions.