Files
home/CLAUDE.md
2025-11-25 08:41:49 +01:00

3.8 KiB

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

# 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)

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

# 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.