55 lines
No EOL
2.5 KiB
Markdown
55 lines
No EOL
2.5 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Repository Overview
|
|
|
|
This is a personal utility bin directory containing command-line tools and scripts for development, git operations, and system automation. The scripts are primarily written in bash, Ruby, and Perl, with some Python utilities.
|
|
|
|
## Script Categories and Architecture
|
|
|
|
### Git Utilities
|
|
- Git workflow enhancement scripts (git-update, git-remove-merged-branches, git-ai-message, etc.)
|
|
- Follow the pattern of accepting remote/branch parameters with sensible defaults
|
|
- Include error handling with `set -e` in bash scripts
|
|
- Support dry-run modes where applicable (use `-n` flag)
|
|
|
|
### Development Tools
|
|
- Web development utilities (serve, make-bookmarklet, sri-integrity)
|
|
- Image processing tools (scale-app-icons, generate-xcode-imageset, retina-scale)
|
|
- Data processing scripts (colours.rb for color conversion, progress for piped data)
|
|
|
|
### System Scripts
|
|
- Shell enhancement utilities (hist.rb for command analysis, enable-sudo-touch-id)
|
|
- File management tools (find-unused-images, count-chars)
|
|
|
|
## Common Patterns
|
|
|
|
### Script Structure
|
|
- All executable scripts start with appropriate shebang (`#!/bin/bash`, `#!/usr/bin/env ruby`, etc.)
|
|
- Bash scripts use `set -e` for error handling
|
|
- Ruby scripts often process STDIN/command line arguments with explicit argument parsing
|
|
- Support both piped input and file arguments where relevant
|
|
|
|
### Argument Handling
|
|
- Use `"${1:-default}"` pattern for optional arguments with defaults in bash
|
|
- Ruby scripts use ARGV.shift pattern for argument processing
|
|
- Include help/usage when arguments are malformed
|
|
|
|
### Git Script Conventions
|
|
- Accept remote name as first argument (default to origin or auto-detect)
|
|
- Accept branch name as second argument (default to current branch or master/main)
|
|
- Preserve original branch state (stash/unstash, checkout back to original branch)
|
|
- Use `git rev-parse --abbrev-ref HEAD` to get current branch
|
|
|
|
### Data Processing
|
|
- Ruby scripts that process data streams use proper buffering and error handling
|
|
- Support both byte and line counting modes where applicable
|
|
- Use STDERR for progress/status output, STDOUT for data
|
|
|
|
## Development Workflow
|
|
|
|
This repository has no build system, package.json, or formal testing framework. Scripts are standalone utilities meant to be:
|
|
- Executable from anywhere in the system PATH
|
|
- Self-contained with minimal dependencies
|
|
- Robust with proper error handling |