mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-01-23 02:35:38 +01:00
feat(claudecode): add ClaudeCode CLI plugin with autocompletion and aliases
- Introduced a new plugin for the Claude Code CLI, providing autocompletion for commands and flags. - Added useful aliases for quick access to common commands and functionalities. - Implemented helper functions for session management, project analysis, and enhanced piping capabilities. - Included a README file detailing features, installation instructions, and usage examples.
This commit is contained in:
parent
042605ee6b
commit
4830a615a2
2 changed files with 725 additions and 0 deletions
260
plugins/claudecode/README.md
Normal file
260
plugins/claudecode/README.md
Normal file
|
|
@ -0,0 +1,260 @@
|
|||
# ClaudeCode Plugin for Oh My Zsh
|
||||
|
||||
This plugin provides autocompletion and useful aliases for the [Claude Code CLI](https://claude.ai/code), making it easier to interact with Claude from the command line.
|
||||
|
||||
## Features
|
||||
|
||||
### Autocompletion
|
||||
- Complete all Claude Code CLI commands and flags
|
||||
- Smart completion for subcommands (`update`, `mcp`, `commit`, `pr`, `review`, `test`, `lint`, `docs`)
|
||||
- Model name completion (`sonnet`, `opus`, `claude-3-5-sonnet-20241022`, `claude-3-opus-20240229`, `claude-3-haiku-20240307`)
|
||||
- Output format completion (`text`, `json`, `stream-json`)
|
||||
- Directory completion for `--add-dir` flag
|
||||
- Session ID completion for `--resume` flag
|
||||
- Tool completion for `--allowedTools` and `--disallowedTools`
|
||||
- Enhanced flag completion with short forms (`-h`, `-v`, `-p`, `-c`, `-r`)
|
||||
|
||||
### Aliases
|
||||
|
||||
#### Basic Aliases
|
||||
- `cc` → `claude` (short alias for quick access)
|
||||
- `ccp` → `claude -p` (print mode)
|
||||
- `ccc` → `claude -c` (continue conversation)
|
||||
- `ccr` → `claude -r` (resume session)
|
||||
- `ccv` → `claude --verbose` (verbose mode)
|
||||
- `ccu` → `claude update` (update Claude Code)
|
||||
- `ccm` → `claude mcp` (MCP configuration)
|
||||
|
||||
#### Git Integration Aliases
|
||||
- `cccommit` → `claude commit` (AI-assisted commits)
|
||||
- `ccpr` → `claude pr` (AI-assisted pull requests)
|
||||
- `ccreview` → `claude review` (code review)
|
||||
|
||||
#### Development Aliases
|
||||
- `cctest` → `claude test` (test-related tasks)
|
||||
- `cclint` → `claude lint` (linting tasks)
|
||||
- `ccdocs` → `claude docs` (documentation tasks)
|
||||
|
||||
#### Model-Specific Aliases
|
||||
- `ccsonnet` → `claude --model sonnet` (use Sonnet model)
|
||||
- `ccopus` → `claude --model opus` (use Opus model)
|
||||
- `cchaiku` → `claude --model claude-3-haiku-20240307` (use Haiku model)
|
||||
|
||||
### Helper Functions
|
||||
|
||||
#### `claude-quick`
|
||||
Quick access to common Claude Code patterns:
|
||||
|
||||
```bash
|
||||
claude-quick explain "function definition"
|
||||
claude-quick debug "error message"
|
||||
claude-quick review "code snippet"
|
||||
claude-quick fix "bug description"
|
||||
claude-quick optimize "slow function"
|
||||
claude-quick refactor "legacy code"
|
||||
claude-quick test "new feature"
|
||||
claude-quick docs "API endpoint"
|
||||
```
|
||||
|
||||
#### `claude-pipe`
|
||||
Pipe content directly to Claude:
|
||||
|
||||
```bash
|
||||
cat file.js | claude-pipe "explain this code"
|
||||
git log --oneline | claude-pipe "summarize these commits"
|
||||
```
|
||||
|
||||
#### `claude-pipe-enhanced`
|
||||
Enhanced pipe function with format-specific preprocessing:
|
||||
|
||||
```bash
|
||||
cat app.js | claude-pipe-enhanced code "explain this function"
|
||||
tail -f error.log | claude-pipe-enhanced log "find issues"
|
||||
npm test 2>&1 | claude-pipe-enhanced error "fix failing tests"
|
||||
curl api/data | claude-pipe-enhanced json "summarize this data"
|
||||
```
|
||||
|
||||
#### `claude-git`
|
||||
Git integration functions:
|
||||
|
||||
```bash
|
||||
claude-git commit "added new feature" # Create commit with AI
|
||||
claude-git pr "bug fix description" # Create PR description
|
||||
claude-git diff HEAD~1 # Explain git diff
|
||||
claude-git log --author="john" # Summarize commits
|
||||
claude-git conflicts # Help resolve conflicts
|
||||
```
|
||||
|
||||
#### `claude-project`
|
||||
Project analysis functions:
|
||||
|
||||
```bash
|
||||
claude-project analyze # Analyze project structure
|
||||
claude-project deps # Analyze dependencies
|
||||
claude-project security # Security audit
|
||||
claude-project performance # Performance analysis
|
||||
claude-project architecture # Architecture review
|
||||
```
|
||||
|
||||
#### `claude-session`
|
||||
Session management functions:
|
||||
|
||||
```bash
|
||||
claude-session list # List available sessions
|
||||
claude-session save my_project_session # Save current session
|
||||
claude-session load abc123 # Load specific session
|
||||
claude-session clean # Clean old sessions
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
### Using Oh My Zsh
|
||||
|
||||
1. Clone this repository into your Oh My Zsh custom plugins directory:
|
||||
```bash
|
||||
git clone https://github.com/your-username/ohmyzsh-claudecode-plugin.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/claudecode
|
||||
```
|
||||
|
||||
2. Add `claudecode` to your plugins array in `~/.zshrc`:
|
||||
```bash
|
||||
plugins=(... claudecode)
|
||||
```
|
||||
|
||||
3. Restart your terminal or run:
|
||||
```bash
|
||||
source ~/.zshrc
|
||||
```
|
||||
|
||||
### Manual Installation
|
||||
|
||||
1. Download the `claudecode.plugin.zsh` file
|
||||
2. Source it in your `~/.zshrc`:
|
||||
```bash
|
||||
source /path/to/claudecode.plugin.zsh
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- [Claude Code CLI](https://claude.ai/code) must be installed and available in your PATH
|
||||
- Oh My Zsh (for plugin installation method)
|
||||
- Zsh with completion support
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### Basic Commands with Completion
|
||||
```bash
|
||||
# Start interactive session (press Tab for completion)
|
||||
claude <Tab>
|
||||
|
||||
# Print mode with flags (press Tab after --)
|
||||
claude -p --<Tab>
|
||||
|
||||
# Continue with model selection
|
||||
claude -c --model <Tab>
|
||||
|
||||
# Resume specific session
|
||||
claude -r <session-id> <Tab>
|
||||
```
|
||||
|
||||
### Using Aliases
|
||||
```bash
|
||||
# Quick print mode
|
||||
ccp "explain this function"
|
||||
|
||||
# Continue previous conversation
|
||||
ccc
|
||||
|
||||
# Verbose mode
|
||||
ccv "debug this issue"
|
||||
|
||||
# Update Claude Code
|
||||
ccu
|
||||
```
|
||||
|
||||
### Using Helper Functions
|
||||
```bash
|
||||
# Quick patterns
|
||||
claude-quick explain "async/await in JavaScript"
|
||||
claude-quick debug "TypeError: Cannot read property"
|
||||
claude-quick review "this React component"
|
||||
claude-quick fix "memory leak in my application"
|
||||
claude-quick optimize "database query performance"
|
||||
claude-quick refactor "legacy authentication code"
|
||||
claude-quick test "user registration flow"
|
||||
claude-quick docs "REST API endpoints"
|
||||
|
||||
# Pipe content
|
||||
cat error.log | claude-pipe "what's causing this error?"
|
||||
ps aux | claude-pipe "which processes are using too much memory?"
|
||||
|
||||
# Enhanced pipe with format detection
|
||||
cat app.js | claude-pipe-enhanced code "find potential bugs"
|
||||
tail -100 /var/log/nginx/error.log | claude-pipe-enhanced log "analyze errors"
|
||||
npm test 2>&1 | claude-pipe-enhanced error "fix these test failures"
|
||||
|
||||
# Git integration
|
||||
claude-git commit # AI-assisted commit
|
||||
claude-git pr "fixes authentication bug"
|
||||
claude-git diff --cached # Explain staged changes
|
||||
claude-git log --since="1 week ago" # Summarize recent work
|
||||
claude-git conflicts # Help with merge conflicts
|
||||
|
||||
# Project analysis
|
||||
claude-project analyze # Full project analysis
|
||||
claude-project deps # Dependency analysis
|
||||
claude-project security # Security audit
|
||||
claude-project performance # Performance review
|
||||
|
||||
# Session management
|
||||
claude-session list # Show available sessions
|
||||
claude-session save feature_work # Save current session
|
||||
claude-session load abc123 # Resume specific session
|
||||
```
|
||||
|
||||
## Cache Management
|
||||
|
||||
The plugin automatically caches completion data for better performance:
|
||||
|
||||
- Cache location: `$ZSH_CACHE_DIR/completions/_claude`
|
||||
- Version tracking: `$ZSH_CACHE_DIR/claudecode_version`
|
||||
- Automatic cache invalidation when Claude Code is updated
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Completion not working
|
||||
1. Ensure Claude Code CLI is installed: `which claude`
|
||||
2. Verify the plugin is loaded: `which cc` (should show the alias)
|
||||
3. Reload completions: `compinit`
|
||||
|
||||
### Cache issues
|
||||
1. Clear the cache:
|
||||
```bash
|
||||
rm -f "$ZSH_CACHE_DIR/completions/_claude"
|
||||
rm -f "$ZSH_CACHE_DIR/claudecode_version"
|
||||
```
|
||||
2. Restart your terminal
|
||||
|
||||
### Permission issues
|
||||
If you encounter permission prompts frequently, consider using:
|
||||
```bash
|
||||
claude --dangerously-skip-permissions -p "your query"
|
||||
```
|
||||
**Note**: Use with caution as this bypasses security prompts.
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Test with different Claude Code versions
|
||||
5. Submit a pull request
|
||||
|
||||
## License
|
||||
|
||||
This plugin is released under the MIT License.
|
||||
|
||||
## Related
|
||||
|
||||
- [Claude Code Documentation](https://claude.ai/code)
|
||||
- [Oh My Zsh](https://ohmyz.sh/)
|
||||
- [Zsh Completion System](http://zsh.sourceforge.net/Doc/Release/Completion-System.html)
|
||||
465
plugins/claudecode/claudecode.plugin.zsh
Normal file
465
plugins/claudecode/claudecode.plugin.zsh
Normal file
|
|
@ -0,0 +1,465 @@
|
|||
# ClaudeCode CLI plugin for Oh My Zsh
|
||||
# Provides autocompletion for the Claude Code command-line interface
|
||||
|
||||
# Check if claude command exists
|
||||
if (( ! $+commands[claude] )); then
|
||||
return
|
||||
fi
|
||||
|
||||
# Create cache directory if it doesn't exist
|
||||
[[ ! -d "$ZSH_CACHE_DIR" ]] && mkdir -p "$ZSH_CACHE_DIR"
|
||||
|
||||
# Define cache files
|
||||
_CLAUDECODE_COMPLETION_CACHE="$ZSH_CACHE_DIR/completions/_claude"
|
||||
_CLAUDECODE_VERSION_CACHE="$ZSH_CACHE_DIR/claudecode_version"
|
||||
|
||||
# Function to get claude version
|
||||
_claudecode_get_version() {
|
||||
claude --version 2>/dev/null | head -n1 || echo "unknown"
|
||||
}
|
||||
|
||||
# Function to check if cache is valid
|
||||
_claudecode_cache_valid() {
|
||||
[[ -f "$_CLAUDECODE_COMPLETION_CACHE" ]] && [[ -f "$_CLAUDECODE_VERSION_CACHE" ]] &&
|
||||
[[ "$(_claudecode_get_version)" == "$(cat "$_CLAUDECODE_VERSION_CACHE" 2>/dev/null)" ]]
|
||||
}
|
||||
|
||||
# Function to generate completion cache
|
||||
_claudecode_generate_completion() {
|
||||
local current_version="$(_claudecode_get_version)"
|
||||
|
||||
# Create completions directory if it doesn't exist
|
||||
[[ ! -d "$ZSH_CACHE_DIR/completions" ]] && mkdir -p "$ZSH_CACHE_DIR/completions"
|
||||
|
||||
# Create the completion function
|
||||
cat > "$_CLAUDECODE_COMPLETION_CACHE" << 'EOF'
|
||||
#compdef claude
|
||||
|
||||
_claude() {
|
||||
local context state line
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C \
|
||||
'(-p --print)'{-p,--print}'[Print response without interactive mode]' \
|
||||
'(-c --continue)'{-c,--continue}'[Continue most recent conversation]' \
|
||||
'(-r --resume)'{-r,--resume}'[Resume session by ID]:session-id:_claude_session_ids' \
|
||||
'--model[Set model for current session]:model:(sonnet opus claude-3-5-sonnet-20241022 claude-3-opus-20240229 claude-3-haiku-20240307)' \
|
||||
'--add-dir[Add additional working directories]:directory:_directories' \
|
||||
'--allowedTools[List of tools allowed without prompting]:tools:_claude_tools' \
|
||||
'--disallowedTools[List of tools disallowed without prompting]:tools:_claude_tools' \
|
||||
'--output-format[Specify output format for print mode]:format:(text json stream-json)' \
|
||||
'--input-format[Specify input format for print mode]:format:(text stream-json)' \
|
||||
'--verbose[Enable verbose logging]' \
|
||||
'--max-turns[Limit number of agentic turns]:number:' \
|
||||
'--permission-prompt-tool[Specify MCP tool for permission prompts]:tool:' \
|
||||
'--dangerously-skip-permissions[Skip permission prompts (use with caution)]' \
|
||||
'(-h --help)'{-h,--help}'[Show help information]' \
|
||||
'(-v --version)'{-v,--version}'[Show version information]' \
|
||||
'*::query or subcommand:_claude_commands'
|
||||
}
|
||||
|
||||
_claude_commands() {
|
||||
local -a commands
|
||||
commands=(
|
||||
'update:Update to latest version'
|
||||
'mcp:Configure Model Context Protocol servers'
|
||||
'commit:Create a commit with AI assistance'
|
||||
'pr:Create a pull request'
|
||||
'review:Review code changes'
|
||||
'test:Run and fix tests'
|
||||
'lint:Run and fix linting issues'
|
||||
'docs:Generate or update documentation'
|
||||
)
|
||||
|
||||
if (( CURRENT == 1 )); then
|
||||
_alternative \
|
||||
'commands:subcommands:compadd -a commands' \
|
||||
'queries:query string:_message "query string"'
|
||||
else
|
||||
case $words[1] in
|
||||
update)
|
||||
_message "no more arguments"
|
||||
;;
|
||||
mcp)
|
||||
_message "MCP configuration options"
|
||||
;;
|
||||
commit|pr|review|test|lint|docs)
|
||||
_message "additional options or query"
|
||||
;;
|
||||
*)
|
||||
_message "query string"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
# Helper function for session ID completion
|
||||
_claude_session_ids() {
|
||||
local -a sessions
|
||||
# Try to get session IDs from claude history (if available)
|
||||
if command -v claude >/dev/null 2>&1; then
|
||||
sessions=($(claude --list-sessions 2>/dev/null | grep -o '^[a-zA-Z0-9]\+' || echo))
|
||||
fi
|
||||
|
||||
if [[ ${#sessions[@]} -gt 0 ]]; then
|
||||
_describe 'session IDs' sessions
|
||||
else
|
||||
_message "session ID"
|
||||
fi
|
||||
}
|
||||
|
||||
# Helper function for tool completion
|
||||
_claude_tools() {
|
||||
local -a tools
|
||||
tools=(
|
||||
'Bash:Execute bash commands'
|
||||
'Write:Write or edit files'
|
||||
'Read:Read file contents'
|
||||
'Search:Search through files'
|
||||
'Git:Git operations'
|
||||
'WebSearch:Search the web'
|
||||
)
|
||||
|
||||
_describe 'tools' tools
|
||||
}
|
||||
|
||||
_claude "$@"
|
||||
EOF
|
||||
|
||||
# Save current version to cache
|
||||
echo "$current_version" > "$_CLAUDECODE_VERSION_CACHE"
|
||||
}
|
||||
|
||||
# Initialize completion
|
||||
if ! _claudecode_cache_valid; then
|
||||
_claudecode_generate_completion
|
||||
fi
|
||||
|
||||
# If the completion file doesn't exist yet, we need to autoload it and
|
||||
# bind it to `claude`. Otherwise, compinit will have already done that.
|
||||
if [[ ! -f "$_CLAUDECODE_COMPLETION_CACHE" ]]; then
|
||||
typeset -g -A _comps
|
||||
autoload -Uz _claude
|
||||
_comps[claude]=_claude
|
||||
fi
|
||||
|
||||
# Load the completion
|
||||
if [[ -f "$_CLAUDECODE_COMPLETION_CACHE" ]]; then
|
||||
source "$_CLAUDECODE_COMPLETION_CACHE"
|
||||
fi
|
||||
|
||||
# Useful aliases for ClaudeCode
|
||||
alias cc='claude'
|
||||
alias ccp='claude -p'
|
||||
alias ccc='claude -c'
|
||||
alias ccr='claude -r'
|
||||
alias ccv='claude --verbose'
|
||||
alias ccu='claude update'
|
||||
alias ccm='claude mcp'
|
||||
|
||||
# Git-related aliases
|
||||
alias cccommit='claude commit'
|
||||
alias ccpr='claude pr'
|
||||
alias ccreview='claude review'
|
||||
|
||||
# Development aliases
|
||||
alias cctest='claude test'
|
||||
alias cclint='claude lint'
|
||||
alias ccdocs='claude docs'
|
||||
|
||||
# Model-specific aliases
|
||||
alias ccsonnet='claude --model sonnet'
|
||||
alias ccopus='claude --model opus'
|
||||
alias cchaiku='claude --model claude-3-haiku-20240307'
|
||||
|
||||
# Function to quickly start claude with common patterns
|
||||
claude-quick() {
|
||||
case "$1" in
|
||||
explain)
|
||||
shift
|
||||
claude -p "Explain this: $*"
|
||||
;;
|
||||
debug)
|
||||
shift
|
||||
claude -p "Debug this code: $*"
|
||||
;;
|
||||
review)
|
||||
shift
|
||||
claude -p "Review this code: $*"
|
||||
;;
|
||||
fix)
|
||||
shift
|
||||
claude -p "Fix this issue: $*"
|
||||
;;
|
||||
optimize)
|
||||
shift
|
||||
claude -p "Optimize this code: $*"
|
||||
;;
|
||||
refactor)
|
||||
shift
|
||||
claude -p "Refactor this code: $*"
|
||||
;;
|
||||
test)
|
||||
shift
|
||||
claude -p "Write tests for: $*"
|
||||
;;
|
||||
docs)
|
||||
shift
|
||||
claude -p "Write documentation for: $*"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: claude-quick {explain|debug|review|fix|optimize|refactor|test|docs} <content>"
|
||||
echo "Examples:"
|
||||
echo " claude-quick explain 'function definition'"
|
||||
echo " claude-quick debug 'error message'"
|
||||
echo " claude-quick review 'code snippet'"
|
||||
echo " claude-quick fix 'bug description'"
|
||||
echo " claude-quick optimize 'slow function'"
|
||||
echo " claude-quick refactor 'legacy code'"
|
||||
echo " claude-quick test 'new feature'"
|
||||
echo " claude-quick docs 'API endpoint'"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to pipe content to claude
|
||||
claude-pipe() {
|
||||
if [[ -p /dev/stdin ]]; then
|
||||
# Data is being piped
|
||||
cat | claude -p "$*"
|
||||
else
|
||||
echo "Usage: command | claude-pipe 'your query'"
|
||||
echo "Example: cat file.js | claude-pipe 'explain this code'"
|
||||
fi
|
||||
}
|
||||
|
||||
# Completion for claude-quick function
|
||||
_claude_quick() {
|
||||
local -a actions
|
||||
actions=(
|
||||
'explain:Explain the given content'
|
||||
'debug:Debug the given code or error'
|
||||
'review:Review the given code'
|
||||
'fix:Fix the given issue'
|
||||
)
|
||||
|
||||
_describe 'actions' actions
|
||||
}
|
||||
|
||||
# Git integration functions
|
||||
claude-git() {
|
||||
case "$1" in
|
||||
commit)
|
||||
shift
|
||||
if [[ -n "$*" ]]; then
|
||||
claude -p "Create a commit message for these changes: $*"
|
||||
else
|
||||
claude commit
|
||||
fi
|
||||
;;
|
||||
pr)
|
||||
shift
|
||||
if [[ -n "$*" ]]; then
|
||||
claude -p "Create a pull request description for: $*"
|
||||
else
|
||||
claude pr
|
||||
fi
|
||||
;;
|
||||
diff)
|
||||
shift
|
||||
git diff "$@" | claude-pipe "explain these changes"
|
||||
;;
|
||||
log)
|
||||
shift
|
||||
git log --oneline -10 "$@" | claude-pipe "summarize these commits"
|
||||
;;
|
||||
conflicts)
|
||||
git status --porcelain | grep "^UU" | claude-pipe "help resolve these merge conflicts"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: claude-git {commit|pr|diff|log|conflicts} [options]"
|
||||
echo "Examples:"
|
||||
echo " claude-git commit 'added new feature'"
|
||||
echo " claude-git pr 'bug fix for authentication'"
|
||||
echo " claude-git diff HEAD~1"
|
||||
echo " claude-git log --author='john'"
|
||||
echo " claude-git conflicts"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Project analysis functions
|
||||
claude-project() {
|
||||
case "$1" in
|
||||
analyze)
|
||||
claude -p "Analyze this project structure and provide insights"
|
||||
;;
|
||||
deps)
|
||||
if [[ -f "package.json" ]]; then
|
||||
cat package.json | claude-pipe "analyze these dependencies and suggest improvements"
|
||||
elif [[ -f "requirements.txt" ]]; then
|
||||
cat requirements.txt | claude-pipe "analyze these Python dependencies"
|
||||
elif [[ -f "Cargo.toml" ]]; then
|
||||
cat Cargo.toml | claude-pipe "analyze these Rust dependencies"
|
||||
else
|
||||
echo "No recognized dependency file found"
|
||||
fi
|
||||
;;
|
||||
security)
|
||||
claude -p "Perform a security audit of this project"
|
||||
;;
|
||||
performance)
|
||||
claude -p "Analyze this project for performance improvements"
|
||||
;;
|
||||
architecture)
|
||||
claude -p "Review the architecture of this project and suggest improvements"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: claude-project {analyze|deps|security|performance|architecture}"
|
||||
echo "Examples:"
|
||||
echo " claude-project analyze"
|
||||
echo " claude-project deps"
|
||||
echo " claude-project security"
|
||||
echo " claude-project performance"
|
||||
echo " claude-project architecture"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Session management functions
|
||||
claude-session() {
|
||||
case "$1" in
|
||||
list)
|
||||
claude --list-sessions 2>/dev/null || echo "Session listing not available"
|
||||
;;
|
||||
save)
|
||||
shift
|
||||
local session_name="${1:-$(date +%Y%m%d_%H%M%S)}"
|
||||
echo "Saving current session as: $session_name"
|
||||
# This would need actual implementation based on Claude's session management
|
||||
;;
|
||||
load)
|
||||
shift
|
||||
if [[ -n "$1" ]]; then
|
||||
claude -r "$1"
|
||||
else
|
||||
echo "Usage: claude-session load <session-id>"
|
||||
fi
|
||||
;;
|
||||
clean)
|
||||
echo "Cleaning old sessions..."
|
||||
# This would need actual implementation
|
||||
;;
|
||||
*)
|
||||
echo "Usage: claude-session {list|save|load|clean} [options]"
|
||||
echo "Examples:"
|
||||
echo " claude-session list"
|
||||
echo " claude-session save my_project_session"
|
||||
echo " claude-session load abc123"
|
||||
echo " claude-session clean"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Enhanced pipe function with preprocessing
|
||||
claude-pipe-enhanced() {
|
||||
local format="$1"
|
||||
shift
|
||||
|
||||
if [[ -p /dev/stdin ]]; then
|
||||
case "$format" in
|
||||
code)
|
||||
cat | claude -p "Analyze this code: $*"
|
||||
;;
|
||||
log)
|
||||
cat | claude -p "Analyze this log file: $*"
|
||||
;;
|
||||
error)
|
||||
cat | claude -p "Help debug this error: $*"
|
||||
;;
|
||||
json)
|
||||
cat | claude -p "Analyze this JSON data: $*"
|
||||
;;
|
||||
*)
|
||||
cat | claude -p "$format $*"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "Usage: command | claude-pipe-enhanced {code|log|error|json|<custom>} 'your query'"
|
||||
echo "Examples:"
|
||||
echo " cat app.js | claude-pipe-enhanced code 'explain this function'"
|
||||
echo " tail -f error.log | claude-pipe-enhanced log 'find issues'"
|
||||
echo " npm test 2>&1 | claude-pipe-enhanced error 'fix failing tests'"
|
||||
echo " curl api/data | claude-pipe-enhanced json 'summarize this data'"
|
||||
fi
|
||||
}
|
||||
|
||||
# Completion for new functions
|
||||
_claude_git() {
|
||||
local -a actions
|
||||
actions=(
|
||||
'commit:Create commit message or commit with AI'
|
||||
'pr:Create pull request description'
|
||||
'diff:Explain git diff output'
|
||||
'log:Summarize git log'
|
||||
'conflicts:Help resolve merge conflicts'
|
||||
)
|
||||
_describe 'git actions' actions
|
||||
}
|
||||
|
||||
_claude_project() {
|
||||
local -a actions
|
||||
actions=(
|
||||
'analyze:Analyze project structure'
|
||||
'deps:Analyze dependencies'
|
||||
'security:Security audit'
|
||||
'performance:Performance analysis'
|
||||
'architecture:Architecture review'
|
||||
)
|
||||
_describe 'project actions' actions
|
||||
}
|
||||
|
||||
_claude_session() {
|
||||
local -a actions
|
||||
actions=(
|
||||
'list:List available sessions'
|
||||
'save:Save current session'
|
||||
'load:Load a session'
|
||||
'clean:Clean old sessions'
|
||||
)
|
||||
_describe 'session actions' actions
|
||||
}
|
||||
|
||||
_claude_pipe_enhanced() {
|
||||
local -a formats
|
||||
formats=(
|
||||
'code:Analyze as code'
|
||||
'log:Analyze as log file'
|
||||
'error:Analyze as error output'
|
||||
'json:Analyze as JSON data'
|
||||
)
|
||||
_describe 'input formats' formats
|
||||
}
|
||||
|
||||
# Update claude-quick completion
|
||||
_claude_quick() {
|
||||
local -a actions
|
||||
actions=(
|
||||
'explain:Explain the given content'
|
||||
'debug:Debug the given code or error'
|
||||
'review:Review the given code'
|
||||
'fix:Fix the given issue'
|
||||
'optimize:Optimize the given code'
|
||||
'refactor:Refactor the given code'
|
||||
'test:Write tests for the given code'
|
||||
'docs:Write documentation for the given code'
|
||||
)
|
||||
|
||||
_describe 'actions' actions
|
||||
}
|
||||
|
||||
compdef _claude_quick claude-quick
|
||||
compdef _claude_git claude-git
|
||||
compdef _claude_project claude-project
|
||||
compdef _claude_session claude-session
|
||||
compdef _claude_pipe_enhanced claude-pipe-enhanced
|
||||
Loading…
Add table
Add a link
Reference in a new issue