112 lines
3.8 KiB
Markdown
112 lines
3.8 KiB
Markdown
|
|
# 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.
|