Files
my-vault/.claude/commands/install-claudesidian-command.md
T
2025-10-06 17:11:44 -04:00

143 lines
3.6 KiB
Markdown

---
allowed-tools: [Read, Write, Bash]
description: Install claudesidian shell command to launch Claude Code from anywhere
argument-hint: (optional shell: bash/zsh/fish)
---
# Install Claudesidian Command
Creates a shell alias/function that allows you to run `claudesidian` from
anywhere to open your vault in Claude Code.
## Task
Install a shell command that:
1. Changes to your claudesidian vault directory
2. Launches Claude Code
3. Works from any directory in your terminal
Similar to having a quick launcher for your vault.
## Process
### 1. **Detect Current Setup**
- Check which shell the user is using (bash/zsh/fish)
- Find the current working directory (vault path)
- Determine the appropriate config file
### 2. **Create the Command**
The command will be an alias that:
- Changes to the vault directory: `cd /path/to/your/vault`
- Tries to resume existing session: `claude --resume 2>/dev/null`
- Falls back to new session if no existing one: `|| claude`
- All in one command:
`(cd /path/to/vault && (claude --resume 2>/dev/null || claude))`
This automatically enters resume mode if there's an existing session, or starts
a new one if not.
### 3. **Install to Shell Config**
Add the alias to the appropriate config file:
- **Bash**: `~/.bashrc` or `~/.bash_profile`
- **Zsh**: `~/.zshrc`
- **Fish**: `~/.config/fish/config.fish`
### 4. **Verify Installation**
- Show the added line
- Remind user to reload their shell or source the config
- Provide test command
## Shell Detection
```bash
# Detect current shell
if [ -n "$ZSH_VERSION" ]; then
SHELL_TYPE="zsh"
CONFIG_FILE="$HOME/.zshrc"
elif [ -n "$BASH_VERSION" ]; then
SHELL_TYPE="bash"
# Prefer .bashrc on Linux, .bash_profile on macOS
if [ -f "$HOME/.bashrc" ]; then
CONFIG_FILE="$HOME/.bashrc"
else
CONFIG_FILE="$HOME/.bash_profile"
fi
elif [ -n "$FISH_VERSION" ]; then
SHELL_TYPE="fish"
CONFIG_FILE="$HOME/.config/fish/config.fish"
fi
```
## Installation Steps
1. **Get vault path**: Use `pwd` to get current directory
2. **Check if already installed**: Search config file for existing
`claudesidian` alias
3. **Add alias**: Append to config file if not present
4. **Show success message**: With instructions to reload shell
## Example Output
```
🔧 Installing claudesidian command...
📁 Vault path: /home/user/my-vault
🐚 Shell detected: zsh
📝 Config file: /home/user/.zshrc
✅ Installed! Added to /home/user/.zshrc:
alias claudesidian='(cd /home/user/my-vault && (claude --resume 2>/dev/null || claude))'
🔄 To activate, run:
source ~/.zshrc
Or start a new terminal session.
✨ Test it: Type 'claudesidian' from any directory!
```
## Important Notes
- The command uses a subshell `()` so it returns to your original directory
after
- Automatically tries to resume existing sessions, falls back to new session
- If alias already exists, ask user if they want to replace it
- Always show what will be added before modifying config files
- Create backup of config file before modifying
## Usage Examples
Install for current shell:
```
/install-claudesidian-command
```
Install for specific shell:
```
/install-claudesidian-command zsh
/install-claudesidian-command bash
```
## How It Works
The alias uses a clever pattern:
```bash
alias claudesidian='(cd /path/to/vault && (claude --resume 2>/dev/null || claude))'
```
1. `(cd /path/to/vault && ...)` - Subshell that changes directory temporarily
2. `claude --resume 2>/dev/null` - Tries to resume existing session, suppresses
error
3. `|| claude` - If resume fails (no session), starts new session
4. After Claude exits, returns to original directory automatically