# How Ned Batchelder actually uses coding agents

coverage.py

**If you take one thing:** `Be introspective`, Claude fixes its own rules. when a workflow goes wrong, his CLAUDE.md has Claude work out why and propose changes to its own instructions.

- **Agent:** Claude Code (cli) ([source, 2026-02-24](https://github.com/nedbat/dotfiles/blob/003ae2618eebc9877f69e7a01f610d43070bd92c/dot_config/shellrc/claude.sh#L1-L2))
- **Agent:** GitHub Copilot (ide) ([source, 2026-02-09](https://github.com/nedbat/dotfiles/blob/003ae2618eebc9877f69e7a01f610d43070bd92c/dot_config/vim/vimrc#L400-L413))
- **Review:** A person owns and reviews every commit, Claude or not ([source, 2026-02-26](https://hachyderm.io/@nedbat/116134732094799152))
- **Harness:** Claude Code in a terminal tab, LSP tool on, prompt suggestions off ([source, 2026-04-16](https://github.com/nedbat/dotfiles/blob/003ae2618eebc9877f69e7a01f610d43070bd92c/dot_config/shellrc/claude.sh#L4-L8))
- **Rules file:** Global CLAUDE.md importing nedbat-main.md (56 lines) from his dotfiles ([source, 2025-09-19](https://github.com/nedbat/dotfiles/blob/003ae2618eebc9877f69e7a01f610d43070bd92c/dot_config/claude/README.md#L1-L4))

## In their words

> # Don't change the title of my terminal tab, because it doesn't change back when I exit claude.
export CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1

> Plug 'github/copilot.vim'

> Every commit is owned by a person who has vouched for the quality of the commit, and every commit is reviewed by a person who has also vouched for it. Making a commit with Claude's help doesn't change that.

> # Don't suggest the next prompt.
export CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false

# https://karanbansal.in/blog/claude-code-lsp/
export ENABLE_LSP_TOOL=1

> Put this line into ~/.claude/CLAUDE.md:
```
@~/.config/claude/nedbat-main.md
```


Archetype (our label): Purist. Newest source: 2026-04-16.
Card: https://www.prehistoriq.com/stacks/nedbat/ · Data: https://github.com/prehistoriq/stacks/blob/main/data/stacks/nedbat.json
