Skip to content

Refactor sync to use home/ directory - #3

Merged
evansenter merged 4 commits into
mainfrom
refactor/home-directory-sync
Dec 23, 2025
Merged

Refactor sync to use home/ directory#3
evansenter merged 4 commits into
mainfrom
refactor/home-directory-sync

Conversation

@evansenter

Copy link
Copy Markdown
Owner

Summary

Simplify the sync strategy by moving all syncable dotfiles into a home/ directory.

Before: rsync with 10+ --exclude flags (brittle, grows with each new file type)
After: rsync home/ ~ (simple, self-documenting)

Changes

  • Move all syncable dotfiles into home/:
    • .aliases, .bin/, .exports, .gitconfig, .tmux.conf
    • .vim/, .vimrc, .zsh_prompt, .zshrc
  • Simplify sync_dotfiles() to single rsync command
  • Update git pull to use main branch
  • Update CLAUDE.md with new file paths

Benefits

  • To add a new dotfile, just put it in home/ - no bootstrap.sh changes needed
  • Clear separation: home/ = synced, everything else = not synced
  • Easier to understand at a glance what gets installed

Test plan

  • Run ./bootstrap.sh -f and verify all files sync to ~
  • Verify .DS_Store is not synced

🤖 Generated with Claude Code

Move all syncable dotfiles into home/ directory, simplifying bootstrap.sh
from an exclusion-based approach to a whitelist approach.

Before: rsync with 10+ --exclude flags
After: rsync home/ ~

To add new dotfiles, just put them in home/ - no script changes needed.

- Move .aliases, .bin/, .exports, .gitconfig, .tmux.conf, .vim/, .vimrc,
  .zsh_prompt, .zshrc into home/
- Simplify sync_dotfiles() to single rsync command
- Update git pull to use main branch
- Update CLAUDE.md with new file paths

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@claude

claude Bot commented Dec 23, 2025

Copy link
Copy Markdown

Pull Request Review

This is an excellent refactoring that significantly improves the maintainability of the dotfiles sync process. The move from exclusion-based to inclusion-based syncing is a much cleaner approach.

✅ Strengths

1. Architectural Improvement

  • The home/ directory pattern is a well-established dotfiles convention
  • Self-documenting structure: files in home/ = files that get synced
  • Eliminates the brittle --exclude flag maintenance burden

2. Code Quality

  • Simplified rsync command (bootstrap.sh:78-84) is much cleaner
  • Correct branch update (mastermain) in bootstrap.sh:11
  • CLAUDE.md accurately updated with new file paths
  • All file moves properly tracked by git (preserves history)

3. Completeness

  • All syncable files correctly moved to home/
  • Documentation comprehensively updated
  • Test plan covers the critical sync functionality

⚠️ Issues Found

CRITICAL: Missing .DS_Store exclusion

The old rsync had --exclude ".DS_Store" (line 79 of old bootstrap.sh), but the new version syncs everything in home/. This means if a .DS_Store file gets created in home/, it will be synced to ~.

Recommended fix:

rsync \
  --exclude ".DS_Store" \
  --archive \
  --verbose \
  --human-readable \
  --force \
  --no-perms \
  home/ ~

While the test plan confirms .DS_Store isn't currently synced, the missing exclusion creates a latent bug. macOS automatically creates .DS_Store files in directories, so one could appear in home/ at any time.

📝 Minor Observations

Documentation Accuracy

  • bootstrap.sh:76-100 range in CLAUDE.md is correct ✓
  • All file path references properly updated ✓

Backward Compatibility

  • This is a breaking change for anyone with local modifications
  • However, for a personal dotfiles repo, this is acceptable
  • Users can re-run bootstrap.sh after pulling to sync new locations

🔒 Security & Performance

  • Security: No concerns. The changes are purely organizational
  • Performance: Negligible impact. Rsync with source directory is as fast as exclusion-based approach
  • No new vulnerabilities introduced

✅ Recommendations

  1. Add .DS_Store exclusion (critical - see above)
  2. Consider adding .DS_Store to .gitignore in the home/ directory as defense-in-depth
  3. Optional: Add a migration note to README.md for users pulling this change

Summary

This is a well-executed refactoring with clear benefits. The only blocker is the missing .DS_Store exclusion, which should be added before merging. Once that's addressed, this PR will be ready to merge.

Verdict: Approve with requested changes (add .DS_Store exclusion)

evansenter and others added 3 commits December 23, 2025 13:58
- Add pull-requests: write to allow gh pr comment
- Add issues: write to claude.yml for issue interactions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Defense-in-depth: exclude .DS_Store from sync even though it's
already in .gitignore. Prevents accidental sync if macOS creates
one in home/ directory.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add submodule clone instructions (--recursive)
- Document all included configs (git, vim, tmux, btop, iTerm2)
- Add dark mode theme switching setup instructions
- Show new home/ directory structure
- Update install/update commands

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@evansenter
evansenter merged commit 5b45743 into main Dec 23, 2025
1 check failed
@evansenter
evansenter deleted the refactor/home-directory-sync branch December 23, 2025 14:04
evansenter added a commit that referenced this pull request Dec 29, 2025
Add explicit instruction that question header #N must match the summary
#N, even if non-sequential. Updated example to show #1, #3 (skipping #2)
to illustrate the pattern.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
evansenter added a commit that referenced this pull request Dec 29, 2025
…ng (#32)

* feat: Add make/cargo permissions, /rfc-response command, clarify timing

- Add 8 build tool permissions: make, cargo check/build/test/clippy/fmt/run/doc
- Create /rfc-response command for structured RFC-style issue responses
- Clarify self-review timing: "before pushing" added to autonomous decisions
- Document new permissions and command in CLAUDE.md

Closes #29

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: Ensure pr-feedback question numbers match summary numbers

Add explicit instruction that question header #N must match the summary
#N, even if non-sequential. Updated example to show #1, #3 (skipping #2)
to illustrate the pattern.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: Address PR feedback - add README docs and timing consistency

- Add /rfc-response to README command table for discoverability
- Add "before pushing" to Development Flow step 4 for consistency with line 22

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
evansenter added a commit that referenced this pull request Jan 3, 2026
- Add ~10 key features per repository with detailed descriptions
- Add upcoming features section with relevant issue links
- Update 'No Cross-Machine Coordination' friction point to reference:
  - claude-event-bus #3 (Tailscale) and #10 (SSE) as blocked work
  - gemicro #196 as the path forward via SSE push notification injection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
evansenter added a commit that referenced this pull request Jan 3, 2026
* docs: Add user guide and multi-agent research documentation

Add comprehensive documentation for AI-assisted development workflows:

- user_guide.md: Opinionated guide on effective AI development with
  workflow commands, parallel work patterns, and self-improving systems
- multi-agent-research-discussion.md: Conversation exploring agent swarm
  architectures (hierarchical, peer-to-peer, blackboard patterns)
- multi-agent-ecosystem-coordination.md: Research synthesis on multi-agent
  coordination challenges, skills vs ownership debates, and moonshots

These documents capture 14 days of intensive development experience
building a multi-agent coordination system with Claude Code.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: Expand repository features and update cross-machine coordination

- Add ~10 key features per repository with detailed descriptions
- Add upcoming features section with relevant issue links
- Update 'No Cross-Machine Coordination' friction point to reference:
  - claude-event-bus #3 (Tailscale) and #10 (SSE) as blocked work
  - gemicro #196 as the path forward via SSE push notification injection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: Correct rust-genai description to Gemini Interactions API

rust-genai is specifically for Gemini's Interactions API (3.0+),
not a multi-provider SDK. Updated description and key features accordingly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: Add value propositions for each repository

Each of the Five Repositories now has a 'Why it matters' section explaining
the unique value and purpose of each codebase in the ecosystem.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant