diff --git a/plugins/claudecode/examples.zsh b/plugins/claudecode/examples.zsh new file mode 100644 index 000000000..addde65e4 --- /dev/null +++ b/plugins/claudecode/examples.zsh @@ -0,0 +1,128 @@ +#!/usr/bin/env zsh + +# ClaudeCode Plugin Usage Examples +# This file demonstrates various ways to use the ClaudeCode Oh My Zsh plugin + +echo "๐Ÿš€ ClaudeCode Plugin Usage Examples" +echo "====================================" + +# Basic usage examples +echo "๐Ÿ“ Basic Usage:" +echo " cc # Start interactive Claude session" +echo " ccp 'explain this function' # Quick print mode" +echo " ccc # Continue last conversation" +echo " ccr abc123 # Resume specific session" +echo " ccv 'debug this with verbose output' # Verbose mode" +echo "" + +# Model selection examples +echo "๐Ÿค– Model Selection:" +echo " ccsonnet 'use Sonnet model' # Use Claude Sonnet" +echo " ccopus 'use Opus model' # Use Claude Opus" +echo " cchaiku 'use Haiku model' # Use Claude Haiku" +echo " cc --model claude-3-5-sonnet-20241022 'specific model version'" +echo "" + +# Git integration examples +echo "๐Ÿ”ง Git Integration:" +echo " claude-git commit # AI-assisted commit" +echo " claude-git pr 'bug fix description' # Create PR description" +echo " claude-git diff HEAD~1 # Explain git diff" +echo " claude-git log --author='john' # Summarize commits" +echo " claude-git conflicts # Help resolve conflicts" +echo "" + +# Quick patterns examples +echo "โšก Quick Patterns:" +echo " claude-quick explain 'async/await' # Explain concepts" +echo " claude-quick debug 'error message' # Debug issues" +echo " claude-quick review 'code snippet' # Code review" +echo " claude-quick fix 'bug description' # Fix problems" +echo " claude-quick optimize 'slow query' # Optimize code" +echo " claude-quick refactor 'legacy code' # Refactor code" +echo " claude-quick test 'new feature' # Write tests" +echo " claude-quick docs 'API endpoint' # Write docs" +echo "" + +# Pipe examples +echo "๐Ÿ”„ Pipe Operations:" +echo " cat app.js | claude-pipe 'explain this code'" +echo " git log --oneline | claude-pipe 'summarize commits'" +echo " npm test 2>&1 | claude-pipe 'fix failing tests'" +echo "" + +# Enhanced pipe examples +echo "๐Ÿ”„ Enhanced Pipe Operations:" +echo " cat app.js | claude-pipe-enhanced code 'find bugs'" +echo " tail -f error.log | claude-pipe-enhanced log 'analyze errors'" +echo " npm test 2>&1 | claude-pipe-enhanced error 'fix tests'" +echo " curl api/data | claude-pipe-enhanced json 'summarize data'" +echo "" + +# Project analysis examples +echo "๐Ÿ“Š Project Analysis:" +echo " claude-project analyze # Full project analysis" +echo " claude-project deps # Dependency analysis" +echo " claude-project security # Security audit" +echo " claude-project performance # Performance review" +echo " claude-project architecture # Architecture review" +echo "" + +# Session management examples +echo "๐Ÿ’พ Session Management:" +echo " claude-session list # List sessions" +echo " claude-session save my_work # Save current session" +echo " claude-session load abc123 # Load session" +echo " claude-session clean # Clean old sessions" +echo "" + +# Advanced usage examples +echo "๐ŸŽฏ Advanced Usage:" +echo " # Combine multiple flags" +echo " cc --model sonnet --verbose --add-dir ../lib 'analyze project'" +echo "" +echo " # Use with output formatting" +echo " ccp --output-format json 'get project stats' | jq '.'" +echo "" +echo " # Chain operations" +echo " git diff --cached | claude-pipe-enhanced code 'review changes' && claude-git commit" +echo "" + +# Workflow examples +echo "๐Ÿ”„ Common Workflows:" +echo "" +echo " # Code Review Workflow:" +echo " git diff --cached | claude-pipe-enhanced code 'review these changes'" +echo " claude-git commit" +echo " claude-git pr 'description of changes'" +echo "" +echo " # Debugging Workflow:" +echo " npm test 2>&1 | claude-pipe-enhanced error 'analyze test failures'" +echo " claude-quick fix 'specific error from above'" +echo " npm test # Run tests again" +echo "" +echo " # Project Setup Workflow:" +echo " claude-project analyze" +echo " claude-project deps" +echo " claude-project security" +echo " claude-quick docs 'setup instructions'" +echo "" + +# Tips and tricks +echo "๐Ÿ’ก Tips and Tricks:" +echo "" +echo " # Use Tab completion for all commands and flags" +echo " cc -- # See all available flags" +echo " claude-quick # See all quick actions" +echo " claude-git # See all git actions" +echo "" +echo " # Combine with other tools" +echo " watch -n 5 'npm test 2>&1 | claude-pipe-enhanced error \"monitor tests\"'" +echo "" +echo " # Save frequently used queries" +echo " alias ccbug='claude-quick debug'" +echo " alias ccopt='claude-quick optimize'" +echo "" + +echo "๐Ÿ“š For more information, see the README.md file or visit:" +echo " https://docs.anthropic.com/en/docs/claude-code/" diff --git a/plugins/claudecode/test_plugin.zsh b/plugins/claudecode/test_plugin.zsh new file mode 100755 index 000000000..b1cc2b8a3 --- /dev/null +++ b/plugins/claudecode/test_plugin.zsh @@ -0,0 +1,209 @@ +#!/usr/bin/env zsh + +# Test script for ClaudeCode Oh My Zsh plugin +# This script tests the basic functionality of the plugin + +echo "๐Ÿงช Testing ClaudeCode Oh My Zsh Plugin" +echo "======================================" + +# Set up test environment +export ZSH_CACHE_DIR="/tmp/test_claudecode_cache" +mkdir -p "$ZSH_CACHE_DIR" + +# Source the plugin +echo "๐Ÿ“ฆ Loading plugin..." +source "./claudecode.plugin.zsh" + +# Test 1: Check if aliases are defined +echo "๐Ÿ” Testing aliases..." +test_aliases() { + local aliases=("cc" "ccp" "ccc" "ccr" "ccv" "ccu" "ccm" "cccommit" "ccpr" "ccreview" "cctest" "cclint" "ccdocs" "ccsonnet" "ccopus" "cchaiku") + local failed=0 + + for alias_name in "${aliases[@]}"; do + if alias "$alias_name" >/dev/null 2>&1; then + echo " โœ… Alias '$alias_name' is defined" + else + echo " โŒ Alias '$alias_name' is NOT defined" + ((failed++)) + fi + done + + return $failed +} + +# Test 2: Check if functions are defined +echo "๐Ÿ” Testing functions..." +test_functions() { + local functions=("claude-quick" "claude-pipe" "claude-git" "claude-project" "claude-session" "claude-pipe-enhanced" "_claude_quick" "_claude_git" "_claude_project" "_claude_session") + local failed=0 + + for func_name in "${functions[@]}"; do + if declare -f "$func_name" >/dev/null 2>&1; then + echo " โœ… Function '$func_name' is defined" + else + echo " โŒ Function '$func_name' is NOT defined" + ((failed++)) + fi + done + + return $failed +} + +# Test 3: Test claude-quick function +echo "๐Ÿ” Testing claude-quick function..." +test_claude_quick() { + local output + output=$(claude-quick 2>&1) + + if [[ $output == *"Usage: claude-quick"* ]]; then + echo " โœ… claude-quick shows usage when called without arguments" + return 0 + else + echo " โŒ claude-quick does not show expected usage message" + return 1 + fi +} + +# Test 4: Test claude-pipe function +echo "๐Ÿ” Testing claude-pipe function..." +test_claude_pipe() { + local output + output=$(claude-pipe 2>&1) + + if [[ $output == *"Usage: command | claude-pipe"* ]]; then + echo " โœ… claude-pipe shows usage when called without pipe" + return 0 + else + echo " โŒ claude-pipe does not show expected usage message" + return 1 + fi +} + +# Test 5: Check if completion cache functions exist +echo "๐Ÿ” Testing cache functions..." +test_cache_functions() { + local functions=("_claudecode_get_version" "_claudecode_cache_valid" "_claudecode_generate_completion") + local failed=0 + + for func_name in "${functions[@]}"; do + if declare -f "$func_name" >/dev/null 2>&1; then + echo " โœ… Cache function '$func_name' is defined" + else + echo " โŒ Cache function '$func_name' is NOT defined" + ((failed++)) + fi + done + + return $failed +} + +# Test 6: Test completion generation (mock) +echo "๐Ÿ” Testing completion generation..." +test_completion_generation() { + # Mock claude command for testing + claude() { + echo "Claude Code CLI v1.0.0" + } + + # Test version function + local version + version=$(_claudecode_get_version) + + if [[ -n "$version" ]]; then + echo " โœ… Version detection works: $version" + return 0 + else + echo " โŒ Version detection failed" + return 1 + fi +} + +# Run all tests +echo "" +echo "๐Ÿš€ Running tests..." +echo "" + +failed_tests=0 + +test_aliases +((failed_tests += $?)) + +test_functions +((failed_tests += $?)) + +test_claude_quick +((failed_tests += $?)) + +test_claude_pipe +((failed_tests += $?)) + +test_cache_functions +((failed_tests += $?)) + +test_completion_generation +((failed_tests += $?)) + +# Test 7: Test new helper functions +echo "๐Ÿ” Testing new helper functions..." +test_new_functions() { + local failed=0 + + # Test claude-git function + local output + output=$(claude-git 2>&1) + if [[ $output == *"Usage: claude-git"* ]]; then + echo " โœ… claude-git shows usage when called without arguments" + else + echo " โŒ claude-git does not show expected usage message" + ((failed++)) + fi + + # Test claude-project function + output=$(claude-project 2>&1) + if [[ $output == *"Usage: claude-project"* ]]; then + echo " โœ… claude-project shows usage when called without arguments" + else + echo " โŒ claude-project does not show expected usage message" + ((failed++)) + fi + + # Test claude-session function + output=$(claude-session 2>&1) + if [[ $output == *"Usage: claude-session"* ]]; then + echo " โœ… claude-session shows usage when called without arguments" + else + echo " โŒ claude-session does not show expected usage message" + ((failed++)) + fi + + # Test claude-pipe-enhanced function + output=$(claude-pipe-enhanced 2>&1) + if [[ $output == *"Usage: command | claude-pipe-enhanced"* ]]; then + echo " โœ… claude-pipe-enhanced shows usage when called without pipe" + else + echo " โŒ claude-pipe-enhanced does not show expected usage message" + ((failed++)) + fi + + return $failed +} + +test_new_functions +((failed_tests += $?)) + +# Summary +echo "" +echo "๐Ÿ“Š Test Summary" +echo "===============" + +if [[ $failed_tests -eq 0 ]]; then + echo "๐ŸŽ‰ All tests passed! The plugin is working correctly." + exit 0 +else + echo "โŒ $failed_tests test(s) failed. Please check the plugin implementation." + exit 1 +fi + +# Cleanup +rm -rf "$ZSH_CACHE_DIR"