Skip to content
Merged
Show file tree
Hide file tree
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
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ The `.zshrc` file sources other configuration files in this order:
- Incremental, case-smart search with highlighting
- No swap/backup files
- Line numbers and always-visible status line
- Uses Catppuccin mocha (dark) theme only; light mode switching not implemented

**Dark Mode Theme Switching** (home/.bin/toggle-btop-theme)
- Automatically switches btop theme based on macOS appearance
Expand Down
2 changes: 1 addition & 1 deletion LaunchAgents/com.user.dark-notify.plist
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<true/>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/dark-notify</string>
<string>__HOMEBREW_PREFIX__/bin/dark-notify</string>
<string>-c</string>
<string>__HOME__/.bin/toggle-btop-theme</string>
</array>
Expand Down
16 changes: 14 additions & 2 deletions bootstrap.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env bash
set -euo pipefail

# ==============================================================================
# Bootstrap Script - Install Dotfiles
Expand Down Expand Up @@ -96,18 +97,28 @@ install_launch_agents() {
# Install dark-notify LaunchAgent (only if dark-notify is installed)
if command -v dark-notify >/dev/null 2>&1; then
local plist="com.user.dark-notify.plist"
local homebrew_prefix
if command -v brew >/dev/null 2>&1 && homebrew_prefix="$(brew --prefix 2>/dev/null)"; then
: # homebrew_prefix set by condition
elif [[ "$(uname -m)" == "arm64" ]]; then
homebrew_prefix="/opt/homebrew"
else
homebrew_prefix="/usr/local"
fi
local new_plist_content
new_plist_content=$(sed "s|__HOME__|$HOME|g" "LaunchAgents/$plist")
new_plist_content=$(sed -e "s|__HOME__|$HOME|g" -e "s|__HOMEBREW_PREFIX__|$homebrew_prefix|g" "LaunchAgents/$plist")
local dest_plist="$launch_agents_dir/$plist"

# Only update and reload if plist content changed
local tmp_plist
tmp_plist=$(mktemp)
trap 'rm -f "$tmp_plist"' EXIT
echo "$new_plist_content" > "$tmp_plist"

if [[ ! -f "$dest_plist" ]] || ! cmp -s "$tmp_plist" "$dest_plist"; then
echo "Installing LaunchAgent: $plist"
mv "$tmp_plist" "$dest_plist"
trap - EXIT

# Reload the agent
launchctl bootout "gui/$(id -u)/com.user.dark-notify" 2>/dev/null || true
Expand All @@ -117,6 +128,7 @@ install_launch_agents() {
"$HOME/.bin/toggle-btop-theme"
else
rm -f "$tmp_plist"
trap - EXIT
fi
else
echo "Skipping dark-notify LaunchAgent (dark-notify not installed)"
Expand Down Expand Up @@ -205,7 +217,7 @@ sync_dotfiles() {
install_launch_agents

# Reload zsh configuration
if [[ -n "$ZSH_VERSION" ]]; then
if [[ -n "${ZSH_VERSION:-}" ]]; then
source ~/.zshrc 2>/dev/null || echo "Restart your terminal or run: source ~/.zshrc"
fi
}
Expand Down
12 changes: 8 additions & 4 deletions home/.claude/commands/im-lost.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,15 @@ git status --short
# Recent commits on this branch (vs main)
git log main..HEAD --oneline 2>/dev/null || git log -3 --oneline

# Check for open PR on current branch
gh pr view --json number,title,state,statusCheckRollup,reviewDecision,comments 2>/dev/null
# Check for open PR on current branch (includes linked issue)
gh pr view --json number,title,state,statusCheckRollup,reviewDecision,comments,body 2>/dev/null

# Check active todos
# (Read from conversation context)
```

Parse the PR body for issue references (e.g., "Fixes #123", "Closes #45", or issue URLs). If found, fetch the linked issue for additional context.

### 2. Determine Workflow Position

Based on gathered state, identify the current step:
Expand All @@ -51,6 +53,7 @@ Present in this format:
**Branch:** [branch-name]
**Status:** [uncommitted changes summary or "clean"]
**PR:** [#N - title (CI status, N comments)] or "none"
**Issue:** [#N - title] or "none"

### Workflow Position

Expand All @@ -67,11 +70,11 @@ Present in this format:

### Context

[2-3 sentences summarizing recent work based on branch name, commits, and PR description]
[2-3 sentences summarizing recent work based on branch name, commits, PR description, and linked issue if any. Reference the issue number when describing what problem is being solved.]

### Suggested Next Action

[One concrete action to take, with the command to run if applicable]
[One concrete action to take, with the command to run if applicable. If working on an issue, frame the action in terms of completing that issue.]
```

### 4. Guidelines
Expand All @@ -81,3 +84,4 @@ Present in this format:
- If on main with no changes, suggest running `/status-report` to find work
- If stuck between steps, pick the earlier one
- Reference active todos if any exist in the conversation
- If working on an issue, always mention the issue number in Context and Suggested Next Action
8 changes: 7 additions & 1 deletion home/.claude/commands/pr-feedback.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,17 @@ Before presenting interactive questions, output ALL feedback items ordered by se
> Fix JSON interface to handle missing fields
**Opinion**: Agree - breaking change needs fix

#### #2. [Suggestion] `utils.ts:89` (Local)
#### #2. [Important] `bootstrap.sh:42` (Local)
> Validate input before processing
**Opinion**: Agree - defensive programming

#### #3. [Suggestion] `utils.ts:89` (Remote)
> Add error handling for missing PR
**Opinion**: Disagree - edge case, unlikely to occur
```

**Important**: Items MUST be numbered in severity order - all Critical items first, then Important, then Suggestion. The `#N` numbering follows this order.

**Source indicators**: `(Local)` = from pr-review-toolkit, `(Remote)` = from external reviewers

Numbers match the `#N` headers in the AskUserQuestion step.
Expand Down
3 changes: 3 additions & 0 deletions home/.exports
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
# Environment Variables
# ==============================================================================

# Variables expected in ~/.extra (not tracked):
# GITHUB_TOKEN - Required for Claude Code GitHub MCP server

# PATH configuration
if [ -d "$HOME/.local/bin" ]; then
export PATH="$HOME/.local/bin:$PATH"
Expand Down
1 change: 1 addition & 0 deletions home/.zshrc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path ~/.zsh/cache

# History
HISTFILE=~/.zsh_history
HISTSIZE=32768
SAVEHIST=32768
setopt APPEND_HISTORY
Expand Down
2 changes: 1 addition & 1 deletion preferences/iTerm Profile.json
Original file line number Diff line number Diff line change
Expand Up @@ -649,4 +649,4 @@
"Alpha Component" : 1,
"Green Component" : 0.37254901960784315
}
}
}
1 change: 1 addition & 0 deletions uninstall.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env bash
set -euo pipefail

# ==============================================================================
# Uninstall Script - Remove Dotfiles
Expand Down