4.8 KiB
4.8 KiB
Automation
Claudish in scripts, pipelines, and CI/CD.
Single-shot mode makes Claudish perfect for automation. Here's how to use it effectively.
Basic Script Usage
#!/bin/bash
set -e
# Ensure model is set
export CLAUDISH_MODEL='minimax/minimax-m2'
# Run task
claudish "add error handling to src/api.ts"
Passing Dynamic Prompts
#!/bin/bash
FILE=$1
claudish --model x-ai/grok-code-fast-1 "add JSDoc comments to $FILE"
Usage:
./add-docs.sh src/utils.ts
Processing Multiple Files
#!/bin/bash
for file in src/*.ts; do
echo "Processing $file..."
claudish --model minimax/minimax-m2 "add type annotations to $file"
done
Piping Input
Code review a diff:
git diff HEAD~1 | claudish --stdin --model openai/gpt-5.1-codex "review these changes"
Explain a file:
cat src/complex.ts | claudish --stdin --model x-ai/grok-code-fast-1 "explain this code"
Convert code:
cat legacy.js | claudish --stdin --model minimax/minimax-m2 "convert to TypeScript" > modern.ts
JSON Output
For structured data:
claudish --json --model minimax/minimax-m2 "list 5 TypeScript utility functions" | jq '.content'
Exit Codes
Claudish returns standard exit codes:
0- Success1- Error
Use in conditionals:
if claudish --model minimax/minimax-m2 "run tests"; then
echo "Tests passed"
git push
else
echo "Tests failed"
exit 1
fi
CI/CD Integration
GitHub Actions
name: Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Review PR
env:
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
run: |
npx claudish@latest --model openai/gpt-5.1-codex \
"Review the code changes in this PR. Focus on bugs, security issues, and performance."
GitLab CI
code_review:
image: node:20
script:
- npx claudish@latest --model x-ai/grok-code-fast-1 "analyze code quality"
variables:
OPENROUTER_API_KEY: $OPENROUTER_API_KEY
Batch Processing
Process many files efficiently:
#!/bin/bash
# Process all TypeScript files in parallel (4 at a time)
find src -name "*.ts" | xargs -P 4 -I {} bash -c '
claudish --model minimax/minimax-m2 "add missing types to {}" || echo "Failed: {}"
'
Commit Message Generator
#!/bin/bash
# Generate commit message from staged changes
git diff --staged | claudish --stdin --model x-ai/grok-code-fast-1 \
"Write a concise commit message for these changes. Follow conventional commits format."
Pre-commit Hook
.git/hooks/pre-commit:
#!/bin/bash
# Quick code review before commit
STAGED=$(git diff --staged --name-only | grep -E '\.(ts|js|tsx|jsx)$')
if [ -n "$STAGED" ]; then
echo "Running AI review on staged files..."
git diff --staged | claudish --stdin --model minimax/minimax-m2 \
"Review for obvious bugs or issues. Be brief. Say 'LGTM' if no issues." \
|| echo "Review failed, continuing anyway"
fi
Make it executable:
chmod +x .git/hooks/pre-commit
Error Handling
#!/bin/bash
set -e
# Retry logic
MAX_ATTEMPTS=3
ATTEMPT=1
while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do
if claudish --model x-ai/grok-code-fast-1 "your task"; then
echo "Success"
exit 0
fi
echo "Attempt $ATTEMPT failed, retrying..."
ATTEMPT=$((ATTEMPT + 1))
sleep 2
done
echo "All attempts failed"
exit 1
Logging Output
Capture everything:
claudish --model x-ai/grok-code-fast-1 "task" 2>&1 | tee output.log
Just the model output:
claudish --quiet --model minimax/minimax-m2 "task" > output.txt
Performance Tips
Use appropriate models:
- Quick tasks → MiniMax M2 (cheapest)
- Important tasks → Grok or Codex
Parallelize when possible: Multiple Claudish instances can run simultaneously. Each gets its own proxy port.
Cache where sensible: If running the same prompt repeatedly, consider caching results.
Set defaults:
export CLAUDISH_MODEL='minimax/minimax-m2'
Avoid specifying --model every time.
Security in Automation
Never hardcode API keys:
# Bad
claudish --model x-ai/grok "task" # Key must be in env
# Good
export OPENROUTER_API_KEY=$(vault read secret/openrouter)
claudish --model x-ai/grok "task"
Use secrets management:
- GitHub: Repository secrets
- GitLab: CI/CD variables
- Local:
.envfiles (gitignored)
Next
- Single-Shot Mode - Detailed reference
- Environment Variables - Configuration options