Files
home/CLAUDE.md

112 lines
3.8 KiB
Markdown
Raw Normal View History

2025-11-25 08:37:43 +01:00
# 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.