dots/CLAUDE.md
2026-09-11 10:34:12 -05:00

53 lines
2.2 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Repository Purpose
Personal dotfiles repository for Shawn Borton's development environment. Configs for Doom Emacs, Vim, Bash, and tmux — primarily targeting Linux (Arch Linux and NixOS systems: archie, peregrine) with some historical macOS artifacts.
## File Overview
| File | Purpose |
|------|---------|
| `config.el` | Primary Doom Emacs private config (keybindings, UI, packages config) |
| `init.el` | Doom Emacs module selection |
| `packages.el` | Additional Doom Emacs package declarations |
| `.vimrc` | Vim config with vim-plug plugin manager |
| `.bash_profile` | Shell aliases, prompt, NVM setup |
| `.tmux.conf` | tmux keybindings and status bar |
## Doom Emacs Workflow
After editing `config.el`, `init.el`, or `packages.el`:
```bash
doom sync # Sync packages and modules (required after packages.el changes)
doom reload # Reload config without restarting (for config.el/init.el changes)
```
## Key Conventions
**Doom Emacs:**
- Uses Evil mode with `jk` as the escape sequence
- Leader key bindings are defined in `config.el` under `map!` blocks
- Custom packages are declared in `packages.el` using `package!` with optional `:recipe` for git sources
- Modules are toggled in `init.el` with flags like `(python +lsp +pyright +tree-sitter)`
- Fonts: JetBrains Mono (14pt) for fixed-pitch, Overpass Nerd Font (18pt) for variable-pitch
- Theme: `doom-oceanic-next`
**Vim:**
- Plugin manager: vim-plug (auto-installs to `~/.vim/autoload/plug.vim` on first run)
- Run `:PlugInstall` after adding new plugins to `.vimrc`
**tmux:**
- Prefix is `C-a` (not the default `C-b`)
- Reload config with `C-a r`
## Notable Integrations in config.el
- **Elfeed** (RSS): Connects to a self-hosted Fever API at `rss.onionpatch.cloud`; feeds are tagged and filtered with custom keybindings under the leader key
- **Pocket**: Integrated with elfeed for article saving via `pocket-reader`
- **gptel / chatgpt-shell**: LLM/ChatGPT integration packages declared in `packages.el`
- **org-roam**: Unpinned in `packages.el` for a custom version; roam2 module enabled in `init.el`
- **Dired**: Custom `h`/`l` navigation keys; Thunar integration for GUI file manager