Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 0 additions & 55 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,58 +59,3 @@ sudo ./install.sh --uninstall
- Comparison of mirror lists is set-based (sorted), not order-based
- Quad9 (9.9.9.9) is blocked by archive.today — do not use as example nameserver
- Script requires GNU Bash features (`mapfile`, `set -euo pipefail`)

<!-- headroom:learn:start -->
## Headroom Learned Patterns

*Auto-generated by `headroom learn` on 2026-04-07 — do not edit manually*

### Pre-commit Hooks

*~2,000 tokens/session saved*

- A global pre-commit config at `/Users/andrewrich/.config/pre-commit/config.yaml` runs on every commit, including `shellcheck` (with `--severity=warning`) on shell scripts and YAML linting on GitHub Actions workflows.
- Always run `shellcheck --severity=warning <script>` and validate YAML files before attempting `git commit` to avoid repeated failed commit attempts.

### PR Merge Workflow

*~1,500 tokens/session saved*

- Merging PRs via `gh pr merge` requires a local merge-lock authorization first: run `~/.claude/hooks/merge-lock.sh authorize <PR#> "<title>"` before calling `gh pr merge`.
- Do not attempt `gh pr merge` without user approval and the lock in place; the hook will block it with an error.

### Shell Script Validation

*~1,200 tokens/session saved*

- Always run `bash -n <script>` (syntax check) and `shellcheck --severity=warning <script>` before committing any shell script changes.
- Fix all `shellcheck` warnings (not just errors) — unused variables, quoting issues, etc. — before committing.

### Git Workflow

*~500 tokens/session saved*

- Branch naming: `claude/feature-<description>-<YYYYMMDD>` and `claude/release-<version>-<YYYYMMDD>`.
- Releases follow a branch-based flow: create `claude/release-X.Y.Z-<date>` branch, bump version in `install.sh`, push PR, merge, then tag `vX.Y.Z` on `main`.
- GitHub Actions `release.yml` workflow handles the release after the tag is pushed.

### Wikipedia API

*~400 tokens/session saved*

- Direct `WebFetch` to `en.wikipedia.org` returns 403. Use the MediaWiki API: `curl 'https://en.wikipedia.org/w/api.php?action=parse&page=<PageName>&prop=text&format=json'`.

### macOS DNS Resolver

*~400 tokens/session saved*

- DNS resolver overrides go under `/etc/resolver/` as per-domain files.
- To flush DNS cache on macOS (including macOS 26+): `sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder`. Both commands are required and still valid as of macOS 26.

### Security Policy

*~300 tokens/session saved*

- Do NOT include `curl | bash` or equivalent "run directly without cloning" installation patterns in README or documentation — the user explicitly rejects this as a security anti-pattern.

<!-- headroom:learn:end -->
Loading