# CLAUDE.md This file provides guidance to Claude Code when working with code in this repository. ## Overview This is a personal home directory repository managed as a git repository with selective tracking via `.gitignore`. The repository tracks dotfiles and configuration for a Debian development environment supporting Node.js, Python, Ruby, Rust, and Go development. ## Key Architecture ### Arty Configuration `arty.yml` defines the repository structure using Arty (artifact/repository manager): - **references**: Git subrepositories to clone into specific paths - **scripts**: Installation and setup commands - Manages version managers (nvm, rbenv, pyenv, gvm) and shell configuration ### Git Selective Tracking The `.gitignore` uses an inverted pattern (ignore everything, then selectively allow): - Tracks only specific dotfiles and configuration files - Excludes logs, databases, and temporary files ## Development Environment ### Language Version Management - **Node.js**: Managed by nvm, version specified in `.nvmrc` - **Ruby**: Managed by rbenv, version in `.ruby-version` - **Python**: Managed by pyenv, version in `.python-version` - **Rust**: Via rustup (`.cargo/`, `.rustup/`) - **Go**: Via gvm (`.gvm/`) ### Shell Environment - **Shell**: Zsh with Oh-My-Zsh framework - **Theme**: Powerlevel10k (`.p10k.zsh`) - **Plugins**: zsh-autosuggestions, zsh-syntax-highlighting - **Login Configuration**: `.zlogin` mounts HiDrive storage and creates symbolic links ## Common Commands ### Environment Setup ```bash # Sync all dependencies (version managers, shell config, etc.) arty sync # Install system packages arty debian/update && arty debian/install # Install language runtimes arty node/install # Node.js via nvm arty ruby/install # Ruby via rbenv arty python/install # Python via pyenv arty rust/install # Rust via rustup # Install global packages arty npm/install # npm, pnpm, llmx arty gem/install # bundler ``` ### Arty Scripts (from arty.yml) ```bash arty debian/update # Enable non-free repos arty debian/install # System packages arty docker/install # Docker Engine arty rust/install # Rust toolchain arty node/install # Node.js (uses nvm) arty ruby/install # Ruby (uses rbenv) arty python/install # Python (uses pyenv) arty uv/install # uv Python package manager arty zed/install # Zed editor arty claude/install # Claude CLI arty mattermost/install arty joplin/install arty yq/install arty spotify/install arty npm/install # npm, pnpm, @valknarthing/llmx arty gem/install # bundler ``` ### Git Workflow ```bash # Stage all changes and check if clean g0 # alias for: git add . && git diff --quiet && git diff --cached --quiet # Reset to single commit g1 # alias for: git reset $(git commit-tree "HEAD^{tree}" -m "A new start") # Get last commit message g2 # alias for: git log --format=%B -n 1 HEAD | head -n 1 ``` ## Repository References (managed by arty) From `arty.yml`: - `bin/` - Custom scripts and executables - `.llmx/` - LLM configuration - `.nvm/` - Node Version Manager - `.gvm/` - Go Version Manager - `.rbenv/` - Ruby Version Manager (includes ruby-build plugin) - `.pyenv/` - Python Version Manager - `.oh-my-zsh/` - Oh-My-Zsh framework - `custom/themes/powerlevel10k/` - Powerlevel10k theme - `custom/plugins/zsh-autosuggestions/` - `custom/plugins/zsh-syntax-highlighting/` ## Important Notes - **Selective Git Tracking**: This repository uses an inverted `.gitignore` pattern - everything is ignored by default (`*`), then specific files are explicitly allowed. - **Arty Repository Manager**: `arty.yml` manages git subrepositories. Use `arty sync` to clone/update all dependencies. - **Docker**: Use arty to manage docker in this project. Run `arty up -d CONTAINER(s)` instead of `arty restart CONTAINER(S)`. - **SSH**: Always push with the valknarthing ssh key. Ensure the ssh agent only has one key loaded.