From 341a07bbd544f05a792561e1f5f8cef325f1fd09 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 06:58:54 +0000 Subject: [PATCH 1/3] [site] Review pass on the two vibe pages, and a tidy header nav vibe.md becomes "How I Work", which is what it describes, drops the self-linking "Back to CV" and the stale "Last updated", and loses the agent-instruction items. vibe-coding.md gets the current title and employer in the bio, the native installer, the current docs URL, a line acknowledging Karpathy's sense of the term, and softer claims. Both pages cross-link, reconcile "disposable code" with "no LLM-looking code", carry a description, use the default layout, and follow the house style (no colons or em dashes in prose). _config.yml sets header_pages to the two pages, so the CV's long job title no longer appears as a nav link. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- _config.yml | 5 ++ vibe-coding.md | 113 +++++++++++++++--------------- vibe.md | 185 ++++++++++++++++++++----------------------------- 3 files changed, 138 insertions(+), 165 deletions(-) diff --git a/_config.yml b/_config.yml index 277d216..90a951a 100644 --- a/_config.yml +++ b/_config.yml @@ -2,6 +2,11 @@ title: Craig T. Russell, PhD theme: minima markdown: kramdown +# Header nav: only these pages (index.md keeps its long job title for the page and the PDF) +header_pages: + - vibe.md + - vibe-coding.md + # Minima settings minima: skin: auto # Automatically switches between light and dark mode diff --git a/vibe-coding.md b/vibe-coding.md index 8e8851d..6ec7c8a 100644 --- a/vibe-coding.md +++ b/vibe-coding.md @@ -1,68 +1,71 @@ --- -layout: page title: Vibe Coding for Scientists +layout: default permalink: /vibe-coding/ +description: A practical guide to coding with Claude Code as a research scientist; setup, CLAUDE.md, workflows for ML, data analysis, and pipelines, and the pitfalls. --- -You're a scientist, not a software engineer — but you write a lot of code. Data pipelines, analysis scripts, ML experiments, plotting, glue code between tools that were never meant to talk to each other. Most of it is means to an end: you care about the *result*, not the code itself. +# Vibe Coding for Scientists -**Vibe coding** is the practice of using AI to write code by describing what you want in natural language, iterating conversationally, and staying in the driver's seat on the science while the AI handles implementation details. Think of it as pair programming with a colleague who types fast, knows every API, and never gets annoyed when you change your mind. +You're a scientist, not a software engineer, but you write a lot of code. Data pipelines, analysis scripts, glue between tools that were never meant to talk to each other. Most of it is a means to an end; you care about the result, not the code. -I've been using [Claude Code](https://docs.anthropic.com/en/docs/claude-code) — Anthropic's CLI coding agent — as my primary vibe coding tool. This page is a practical guide to getting started, shaped by my experience building ML pipelines, bioimage analysis tools, and foundation models. +Vibe coding, in the sense I mean here, is using an AI to write code by describing what you want in plain language, iterating conversationally, and staying in the driver's seat on the science while the AI handles implementation. Karpathy's original sense was closer to "forget the code exists"; for science I mean something more careful, and the pitfalls below say why. Think of it as pair programming with a colleague who types fast and never minds when you change your mind. -## Why This Matters for Scientists +I've been using [Claude Code](https://code.claude.com/docs), Anthropic's CLI coding agent, as my main tool for this. This page is a practical guide to getting started, shaped by building ML pipelines, bioimage analysis tools, and foundation models with it. How I run a repository more generally is on [How I Work](/vibe/). -Most scientists I've worked with (myself included) fall into a gap: we know enough to code, but not enough to be *fast*. We lose hours to: +## Why this matters for scientists -- Debugging environment issues and dependency conflicts -- Remembering the right pandas/numpy/scipy incantation -- Writing boilerplate (argparse, logging, config files, plotting) -- Translating a method from a paper into working code -- Refactoring a Jupyter notebook into something reproducible +Most scientists I've worked with, myself included, know enough to code but not enough to be fast. We lose hours to -These are exactly the tasks where AI assistants excel. The science — experimental design, hypothesis formation, interpreting results, knowing what to compute and why — that's still entirely you. Vibe coding lets you spend more time on the parts that require your domain expertise. +- debugging environment issues and dependency conflicts, +- remembering the right pandas, numpy, or scipy incantation, +- writing boilerplate (argparse, logging, config files, plotting), +- translating a method from a paper into working code, and +- refactoring a Jupyter notebook into something reproducible. -## Getting Started with Claude Code +These are exactly the tasks an AI assistant is good at. The science, which is to say the experimental design and knowing what to compute and why, is still entirely you. Vibe coding lets you spend more of your time there. + +## Getting started with Claude Code ### Install ```bash -# Install Claude Code CLI -npm install -g @anthropic-ai/claude-code +# Native installer (or: brew install claude-code, or npm install -g @anthropic-ai/claude-code) +curl -fsSL https://claude.ai/install.sh | bash # Start a session in your project directory cd my-research-project/ claude ``` -### Basic Patterns +### Basic patterns -Once you're in a session, you just talk: +Once you're in a session, you just talk. - *"Read the CSV in data/results.csv and plot a violin plot of column 'expression' grouped by 'treatment'"* -- *"This script is too slow — profile it and suggest optimisations"* +- *"This script is too slow; profile it and suggest optimisations"* - *"Write a Snakemake rule that runs this analysis for each sample in the manifest"* - *"Refactor this notebook into a CLI script with proper argument parsing"* -Claude reads your files, understands your project structure, writes code, runs it, and iterates based on errors or your feedback. You stay in the loop at every step — approving changes, correcting course, adding constraints. +Claude reads your files, understands your project structure, writes code, runs it, and iterates on the errors or your feedback. You stay in the loop at every step, approving changes, correcting course, and adding constraints. -### The Conversational Loop +### The conversational loop -The power is in the iteration. A typical flow looks like: +The power is in the iteration. A typical flow runs -1. **Describe** what you want at a high level -2. **Review** the proposed code — does it match your scientific intent? -3. **Run** it — Claude can execute code and see the output -4. **Refine** — "actually, use log scale on the y-axis" or "filter out controls first" -5. **Commit** when you're happy +1. **Describe** what you want at a high level. +2. **Review** the proposed code. Does it match your scientific intent? +3. **Run** it. Claude can execute code and see the output. +4. **Refine** with "actually, use log scale on the y-axis" or "filter out controls first". +5. **Commit** when you're happy. -This is faster than writing code from scratch *and* faster than searching Stack Overflow, because the AI has full context of your project. +This is faster than writing from scratch and faster than searching Stack Overflow, because the AI has the full context of your project. -## The CLAUDE.md File: Teaching Claude Your Project +## Teaching Claude your project with CLAUDE.md -The single most impactful thing you can do is add a `CLAUDE.md` file to your repo root. This is a plain Markdown file that Claude reads at the start of every session. Think of it as onboarding notes for a new lab member. +The single most useful thing you can do is add a `CLAUDE.md` file to your repository root. It is a plain Markdown file that Claude reads at the start of every session. Think of it as onboarding notes for a new lab member. -A good scientific `CLAUDE.md` includes: +A good scientific `CLAUDE.md` looks something like this. ```markdown # CLAUDE.md @@ -91,62 +94,60 @@ The main analysis pipeline is in `src/pipeline.py`. - Don't modify anything in `src/legacy/` — it's kept for reproducibility ``` -This context makes Claude dramatically more useful. Instead of generic Python, it writes code that fits *your* project. +With that context Claude writes code that fits your project instead of generic Python. -## Workflows That Work +## Workflows that work -### Prototyping ML Experiments +### Prototyping ML experiments -This is where I get the most value. Instead of writing training loops from scratch: +This is where I get the most value. Instead of writing a training loop from scratch, I ask for it. *"Set up a PyTorch Lightning module for a VAE with a ResNet18 encoder. The input is 3-channel 224x224 cell images. Use the same latent dim as the config. Add wandb logging for reconstruction loss and KL divergence."* -Claude writes it, you review the architecture, tweak the loss weighting, and you're training in minutes instead of an hour. +Claude writes it, you review the architecture and tweak the loss weighting, and you're training in minutes rather than an hour. -### Data Analysis and Exploration +### Data analysis and exploration -For the kind of exploratory analysis that fills a scientist's day: +For the exploratory analysis that fills a scientist's day, the same applies. *"Load the AnnData object in data/processed/adata.h5ad. Show me the top 20 differentially expressed genes between clusters 3 and 7, and make a volcano plot."* -You get the plot, stare at it, and follow up: *"Interesting — now run GO enrichment on the upregulated genes and show me the top biological process terms."* +You get the plot, stare at it, and follow up. *"Interesting; now run GO enrichment on the upregulated genes and show me the top biological process terms."* -### Debugging Legacy Code +### Debugging legacy code -Every lab has *that* script — the one a former postdoc wrote, nobody fully understands, but it still runs the key analysis. Claude can read it, explain what it does, and help you carefully refactor it: +Every lab has that script, the one a former postdoc wrote, nobody fully understands, and the key analysis still depends on. Claude can read it, explain it, and help you refactor it carefully. *"Read src/legacy/process_images.py. Explain what it does step by step, then refactor it to use pathlib instead of os.path and add type hints. Don't change the logic."* -### Writing Reproducible Pipelines +### Reproducible pipelines -Moving from notebooks to proper pipelines: +Moving from a notebook to a proper pipeline is a one-line ask. *"Convert this Jupyter notebook into a Snakemake workflow. Each section header should be a separate rule. Keep the same parameters but read them from a config.yaml."* -## Tips and Pitfalls - -**Verify numerical code.** AI is excellent at writing syntactically correct code that does the wrong maths. Always sanity-check statistical tests, loss functions, and data transformations against known results or toy examples. +## Tips and pitfalls -**Don't trust unfamiliar libraries blindly.** Claude occasionally suggests functions that don't exist or have different signatures than expected. If it uses an API you haven't seen before, check the docs. +**Verify numerical code.** AI is excellent at writing syntactically correct code that does the wrong maths. Sanity-check statistical tests, loss functions, and data transformations against known results or toy examples. -**Keep the science in your head.** The AI doesn't know your biological system, your experimental design, or why that specific normalisation step matters. Provide that context explicitly — don't assume it will infer scientific intent from code alone. +**Don't trust unfamiliar libraries blindly.** Claude occasionally suggests functions that don't exist or have different signatures than expected. If it uses an API you haven't seen, check the docs. -**Commit often.** Vibe coding moves fast. Commit working states frequently so you can roll back when an iteration goes sideways. +**Keep the science in your head.** The AI doesn't know your biological system, your experimental design, or why that normalisation step matters. Say so explicitly; it won't infer scientific intent from code alone. -**Start small.** Don't ask Claude to write your entire pipeline in one go. Break it into components: data loading, preprocessing, model, training, evaluation. Review each piece before moving on. +**Commit often.** Vibe coding moves fast. Commit working states so you can roll back when an iteration goes sideways. -**Use headless mode for batch jobs.** Claude Code supports non-interactive usage (`claude -p "your prompt"`) which is useful for running standardised analysis steps or code generation as part of CI. +**Start small.** Don't ask for the whole pipeline in one go. Data loading, preprocessing, model, training, evaluation, one at a time, reviewed before moving on. -## My Take +**Use headless mode for batch jobs.** Claude Code runs non-interactively with `claude -p "your prompt"`, which suits standardised analysis steps or code generation in CI. -Vibe coding isn't a replacement for understanding your code. It's a force multiplier. The scientists who will get the most out of it are the ones who already think clearly about their problems — the AI just removes the friction between "I know what I want to compute" and "I have working code that computes it." +## My take -The biggest mindset shift: treat code as *disposable infrastructure* for your scientific questions, not as a precious artefact. If Claude can regenerate a plotting script in 30 seconds, you don't need to spend 20 minutes making it perfect. Spend that time thinking about what the plot is telling you. +Vibe coding isn't a replacement for understanding your code. The scientists who get the most from it are the ones who already think clearly about their problems; the AI removes the friction between "I know what I want to compute" and "I have working code that computes it". -For scientists building ML models specifically, vibe coding is transformative. The gap between reading a paper and having a working implementation of the method used to be days. Now it's hours, sometimes minutes — if you can clearly articulate what you want. +The biggest shift is treating code as disposable infrastructure for your scientific questions rather than a precious artefact. If Claude can regenerate a plotting script in 30 seconds, you don't need to spend 20 minutes making it perfect. Spend that time thinking about what the plot is telling you. Disposable doesn't mean sloppy, and [How I Work](/vibe/) says where I draw that line. -That's the key skill: **clear articulation of scientific intent.** Turns out, the same thing that makes you good at writing papers makes you good at vibe coding. +For scientists building ML models, in my experience the gap between reading a paper and having a working implementation of the method has gone from days to hours, if you can articulate what you want. That articulation is the key skill, and the thing that makes you good at writing papers makes you good at this. --- -*I'm Craig Russell, an ML Scientist working on virtual cell foundation models at [Recursion](https://www.recursion.com/). I use Claude Code daily for ML research, pipeline development, and open-source tool building. Find me on [GitHub](https://github.com/ctr26) or [LinkedIn](https://linkedin.com/in/ctr26).* +*I'm Craig Russell, a Senior Machine Learning Scientist at Valence Labs, [Recursion](https://www.recursion.com/), working on generative and agentic models for biology. I use Claude Code daily for ML research, pipelines, and open-source tools. Find me on [GitHub](https://github.com/ctr26) or [LinkedIn](https://linkedin.com/in/ctr26).* diff --git a/vibe.md b/vibe.md index 2e5bc9b..365e9c5 100644 --- a/vibe.md +++ b/vibe.md @@ -1,150 +1,117 @@ --- -title: Vibe Coding +title: How I Work layout: default permalink: /vibe/ +description: How Craig Russell writes code and runs a repository; commits, worktrees, typing, and what collaborators can expect. --- -# Vibe Coding +# How I Work -I'm an ML scientist who codes. Here's how I work. +I'm an ML scientist who codes. This page is the working style I bring to a repository, and what you can expect if we share one. For the practical side of coding with an AI assistant, see [Vibe Coding for Scientists](/vibe-coding/). -**Quick Navigation:** [Fundamentals](#fundamentals) • [Advanced](#advanced) • [Anti-Patterns](#anti-patterns) • [Working With Me](#working-with-me) +[Fundamentals](#fundamentals) • [Advanced](#advanced) • [Anti-patterns](#anti-patterns) • [Working with me](#working-with-me) --- -## Fundamentals (Start Here) {#fundamentals} +## Fundamentals {#fundamentals} -Core practices that shape everything else. +The practices that shape everything else. -### Commit Discipline -- One commit does one thing -- First line describes what changed, body explains why -- Read your own commits from last month — can you understand them? +### Commits +- One commit does one thing. +- The first line says what changed, and the body says why. +- Read your own commits from last month; if you can't follow them, nobody else can. -### Code Readability -- Write code that doesn't announce itself as AI-generated -- Keep indentation shallow (≤4 levels) -- Extract functions when nesting gets deep +### Readable code +- Write code that doesn't announce itself as AI-generated. +- Keep indentation shallow (four levels at most), and extract a function when nesting gets deep. -### File Organization -- Resist creating new files unless necessary -- Flat structures beat deeply nested ones -- Each file has one clear job +### Files +- Resist creating new files unless you have to; new files are expensive. +- Flat structures beat deeply nested ones, and each file has one clear job. -### Standards Over Invention -- Follow existing style guides (Google Python, PEP 8) -- Use conventional commit/branch formats -- Don't make up your own conventions +### Standards over invention +- Follow the style guide that exists (Google Python, PEP 8). +- Use conventional commit and branch formats rather than inventing your own. -### Git Basics -- Small, focused commits are easier to review and revert -- Never bundle unrelated changes -- Commit messages are for future you and your team +### Git +- Small, focused commits are easier to review and to revert. +- Never bundle unrelated changes; commit messages are for future you and your team. --- -## Advanced Patterns {#advanced} +## Advanced {#advanced} -Sophisticated workflows for experienced developers. +### Worktrees +- I don't `git checkout` between branches; every branch gets its own worktree. +- Several features move in parallel without conflicts, and one workspace means one concern. -### Worktree Mastery -- Never `git checkout` — isolate every branch in its own worktree -- Work on multiple features in parallel without conflicts -- Clean mental model: one workspace = one concern +### Agents +- Independent work runs in the background by default, so the main session stays free for steering rather than waiting. +- Planning and execution are separate jobs, whether the worker is a person or an agent. -### Agent-Driven Workflows -- Default to background/async for independent work -- Thinker/Worker separation: planning vs execution -- Main session stays free for steering, not waiting +### Typed everything +- Pydantic schemas for configs, validated at runtime. +- Type hints everywhere, so tools catch errors before the code runs. +- Invalid states shouldn't be representable. -### Typed Everything -- Pydantic schemas for configs with runtime validation -- Type hints everywhere — let tools catch errors before runtime -- Invalid states shouldn't be representable +### Minimal diffs +- Extract shared abstractions to cut duplication. +- Prefer additive changes to rewrites. +- Delete dead code completely; no commented-out safety blankets. -### Minimal Diff Philosophy -- Extract shared abstractions to reduce code duplication -- Additive changes over rewrites when possible -- Delete dead code completely — no commented-out safety blankets - -### Privacy & Security -- Never reference private repos in public spaces -- Review what goes in commits (no secrets, no `.env` files) -- Treat branch names and repo references as potentially sensitive - -### Atomic Actions -- Each tool call, file edit, agent spawn is self-contained -- Reversible operations mean safer experimentation -- One logical change per action +### Privacy and security +- Never reference private repositories in public spaces. +- Review what goes into a commit (no secrets, no `.env` files). +- Treat branch names and repository references as potentially sensitive. --- -## Anti-Patterns I Avoid {#anti-patterns} - -What I consciously reject or unlearn. - -### 1. LLM-Looking Code -Code that screams "generated by AI" — overly verbose, unnecessary abstractions for one-time use, generic variable names. - -**Example:** Creating a `DataProcessor` base class when you only have one processor. - -### 2. File Clutter -New files are expensive. Prefer extending existing modules over spawning new ones. +## Anti-patterns I avoid {#anti-patterns} -**Example:** Resist the urge to split every function into its own file. +### LLM-looking code +Code that is overly verbose, with abstractions nobody needs and generic variable names. Creating a `DataProcessor` base class when there is one processor. -### 3. Blocking Workflows -Never wait when you can parallelize. Never block the main session when you can background. +### File clutter +Splitting every function into its own file. Extend the module that exists. -**Example:** Running sequential git operations instead of using worktrees for parallel branches. +### Blocking workflows +Running git operations one after another when worktrees would let them run side by side. Never wait when you can parallelise. -### 4. Messy Git History -Bundling unrelated changes, vague commit messages, bypassing hooks, force-pushing to main. +### Messy git history +Bundling unrelated changes, vague messages, bypassed hooks, force-pushes to main. One commit that says "fix tests, update docs, add feature". -**Example:** One commit with "fix tests, update docs, add feature". - -### 5. Private Repo Leakage -Referencing private repos in public/org issues, PRs, or commits. - -**Example:** Mentioning private work in public discussions or linking to internal repositories. +### Private repository leakage +Mentioning private work in public issues, PRs, or commits, or linking to internal repositories. --- -## Working With Me {#working-with-me} - -Quick reference for collaborators. +## Working with me {#working-with-me} -### What I Value -- Atomic commits and clean git history -- Conventional formats for everything (commits, branches, comments) -- Type safety and validation over runtime errors -- Minimal diffs and focused PRs -- Documentation that lives with the code +### What I value +- Atomic commits and a clean history. +- Conventional formats for commits, branches, and review comments. +- Type safety and validation over runtime errors. +- Minimal diffs and focused PRs. +- Documentation that lives with the code. -### How I Work -- Worktrees for everything — expect multiple workspaces per repo -- Background agents for parallel tasks — main session stays responsive -- Python-first with Pydantic, Hydra, uv, ruff tooling -- Google Python Style Guide unless repo has its own conventions -- PRs only when CI passes — no "fix in review" cycles +### How I work +- Worktrees for everything, so expect several workspaces per repository. +- Background agents for parallel tasks; the main session stays responsive. +- Python first, with Pydantic, Hydra, uv, and ruff. +- Google Python Style Guide unless the repository has its own conventions. +- PRs go up when CI passes; no "fix in review" cycles. -### Communication Style -- Conventional comments in code reviews -- Draft PRs for WIP, ready PRs for merge-ready code -- Direct feedback preferred over indirect suggestions -- Context in commit messages — explain the "why" +### Communication +- Conventional comments in code review. +- Draft PRs for work in progress, ready PRs for merge-ready code. +- Direct feedback over indirect suggestions. +- Context in commit messages; explain the why. ### Expectations -- Don't reference private repos on public/org repositories -- Follow repo conventions if they exist, fall back to standards if not -- Ask before force-pushing or destructive git operations -- Keep file clutter minimal — prefer extending over creating - -### Working Async -- I default to backgrounding independent work -- Prefer parallelizing over sequential blocking -- Main conversations stay free for steering and questions - ---- +- Don't reference private repositories on public or organisation repositories. +- Follow the repository's conventions if it has them, and standards if not. +- Ask before force-pushing or any destructive git operation. +- Keep file clutter minimal; prefer extending to creating. -*Last updated: March 2026 • [Back to CV](./)* +One caveat, since the other page says code can be disposable. Disposable does not mean sloppy. A plotting script you will regenerate tomorrow still gets a clear name and a clean commit; it just doesn't get an afternoon of polish. From ff144fd7956d8c0cca6aa0732b4c143768f6e4b6 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 07:04:17 +0000 Subject: [PATCH 2/3] [cv] Put the job title in the page now the nav no longer shows it With header_pages set, the Minima nav stopped showing index.md's title, which the screen relied on for the job title and the print CSS used as the subtitle. A raw

at the top of index.md carries it in both kramdown and pandoc; the print CSS hides the nav outright and styles the paragraph as the subtitle, and cv-print.css hides it because pandoc already prints the title as the document subtitle. Both print routes stay at 2 A4 pages. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- assets/main.scss | 9 +++++---- cv-print.css | 2 ++ index.md | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/assets/main.scss b/assets/main.scss index f38c527..e35c1b6 100644 --- a/assets/main.scss +++ b/assets/main.scss @@ -4,6 +4,9 @@ @import "minima"; +/* The CV's job title, a paragraph marked

at the top of index.md */ +.jobtitle { font-size: 1.125em; color: #555; margin-bottom: 0.5em; } + /* Print: a compact A4 CV when the page is printed or saved as PDF from the browser */ @page { size: A4; margin: 10mm 13mm; } @@ -16,10 +19,8 @@ .site-header { border: 0; min-height: 0; margin-bottom: 2mm; } .site-title { float: none; display: block; font-size: 17pt; font-weight: 700; line-height: 1.2; color: #111; letter-spacing: 0; } - .site-nav { float: none; position: static; border: 0; background: none; line-height: 1.3; } - .site-nav label, .site-nav .nav-trigger { display: none; } - .site-nav .trigger { display: block; } - .site-nav .page-link { display: block; font-size: 10.5pt; color: #444; margin: 0; } + .site-nav { display: none; } + .jobtitle { font-size: 10.5pt; color: #444; margin: 0 0 1.5mm; } .site-footer { display: none; } .page-content { padding: 0; } diff --git a/cv-print.css b/cv-print.css index e8a9c58..8d9a0d3 100644 --- a/cv-print.css +++ b/cv-print.css @@ -18,3 +18,5 @@ h1.title { font-size: 17pt; margin: 0 0 1mm; text-align: left; } p.subtitle { font-size: 10.5pt; color: #444; margin: 0; text-align: left; } /* Keep a role heading (the paragraph before its bullets) on the same page as them. */ p:has(+ ul) { break-after: avoid; } +/* pandoc already prints the job title as the document subtitle */ +.jobtitle { display: none; } diff --git a/index.md b/index.md index 4fd5c81..1cd96e5 100644 --- a/index.md +++ b/index.md @@ -3,6 +3,8 @@ title: Senior Machine Learning Scientist, generative and agentic models for biol layout: default --- +

Senior Machine Learning Scientist, generative and agentic models for biology

+ London, UK • [linkedin.com/in/ctr26](https://linkedin.com/in/ctr26) • [github.com/ctr26](https://github.com/ctr26) • [Google Scholar](https://scholar.google.com/citations?user=XVt7BYQAAAAJ&hl=en) Generative and agentic models for biology • LLM post-training • out-of-distribution modelling • virtual cells From ca690c8b40f192ef2c5e1336d9ebc09877dff7b2 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 07:05:35 +0000 Subject: [PATCH 3/3] [site] Two accuracy fixes from review on the vibe pages Worktrees isolate working trees, not merges, and Claude Code reads files as it needs them rather than holding the whole repository. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JFVYogXC9MgS2EuFBvrZog --- vibe-coding.md | 2 +- vibe.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vibe-coding.md b/vibe-coding.md index 6ec7c8a..6d03b3a 100644 --- a/vibe-coding.md +++ b/vibe-coding.md @@ -59,7 +59,7 @@ The power is in the iteration. A typical flow runs 4. **Refine** with "actually, use log scale on the y-axis" or "filter out controls first". 5. **Commit** when you're happy. -This is faster than writing from scratch and faster than searching Stack Overflow, because the AI has the full context of your project. +This is faster than writing from scratch and faster than searching Stack Overflow, because the AI reads the parts of your project it needs as it goes. ## Teaching Claude your project with CLAUDE.md diff --git a/vibe.md b/vibe.md index 365e9c5..e5520a9 100644 --- a/vibe.md +++ b/vibe.md @@ -44,7 +44,7 @@ The practices that shape everything else. ### Worktrees - I don't `git checkout` between branches; every branch gets its own worktree. -- Several features move in parallel without conflicts, and one workspace means one concern. +- Several features move in parallel without stepping on each other's working tree (merge conflicts are still yours to resolve), and one workspace means one concern. ### Agents - Independent work runs in the background by default, so the main session stays free for steering rather than waiting.