Moved 3 scripts that are no longer recommended for installation: - install-claude-customizations.sh (replaced by interactive installer) - export-claude-customizations.sh (export utility, not needed for install) - sync-agents.sh (sync utility, not needed for install) Users should use interactive-install-claude.sh or MASTER-PROMPT.md instead. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
213 lines
6.4 KiB
Bash
Executable File
213 lines
6.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
################################################################################
|
|
# Claude Code Customizations Exporter
|
|
# This script packages all customizations for transfer to another machine
|
|
################################################################################
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# Configuration
|
|
CLAUDE_DIR="$HOME/.claude"
|
|
EXPORT_DIR="$HOME/claude-customizations-export"
|
|
EXPORT_FILE="$HOME/claude-customizations-$(date +%Y%m%d_%H%M%S).tar.gz"
|
|
|
|
log_info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
log_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
# Create export directory
|
|
log_info "Creating export directory..."
|
|
rm -rf "$EXPORT_DIR"
|
|
mkdir -p "$EXPORT_DIR"
|
|
|
|
# Export agents
|
|
log_info "Exporting custom agents..."
|
|
mkdir -p "$EXPORT_DIR/agents"
|
|
cp -r "$CLAUDE_DIR/agents/"* "$EXPORT_DIR/agents/" 2>/dev/null || true
|
|
|
|
# Export plugins configuration
|
|
log_info "Exporting plugins configuration..."
|
|
mkdir -p "$EXPORT_DIR/plugins"
|
|
cp -r "$CLAUDE_DIR/plugins/cache/"* "$EXPORT_DIR/plugins/" 2>/dev/null || true
|
|
cp "$CLAUDE_DIR/plugins/installed_plugins.json" "$EXPORT_DIR/plugins/" 2>/dev/null || true
|
|
cp "$CLAUDE_DIR/plugins/known_marketplaces.json" "$EXPORT_DIR/plugins/" 2>/dev/null || true
|
|
|
|
# Export settings (without sensitive data)
|
|
log_info "Exporting settings..."
|
|
mkdir -p "$EXPORT_DIR/config"
|
|
|
|
# Export settings.local.json (permissions)
|
|
cp "$CLAUDE_DIR/settings.local.json" "$EXPORT_DIR/config/" 2>/dev/null || true
|
|
|
|
# Create settings template (without actual API token)
|
|
cat > "$EXPORT_DIR/config/settings-template.json" << EOF
|
|
{
|
|
"env": {
|
|
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_TOKEN_HERE",
|
|
"ANTHROPIC_BASE_URL": "https://api.anthropic.com",
|
|
"API_TIMEOUT_MS": "3000000",
|
|
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
|
|
},
|
|
"enabledPlugins": {
|
|
"glm-plan-bug@zai-coding-plugins": true,
|
|
"glm-plan-usage@zai-coding-plugins": true
|
|
}
|
|
}
|
|
EOF
|
|
|
|
# Export hooks if present
|
|
log_info "Exporting hooks..."
|
|
if [ -d "$CLAUDE_DIR/hooks" ] && [ "$(ls -A $CLAUDE_DIR/hooks)" ]; then
|
|
mkdir -p "$EXPORT_DIR/hooks"
|
|
cp -r "$CLAUDE_DIR/hooks/"* "$EXPORT_DIR/hooks/"
|
|
fi
|
|
|
|
# Create README
|
|
log_info "Creating documentation..."
|
|
cat > "$EXPORT_DIR/README.md" << 'EOF'
|
|
# Claude Code Customizations Package
|
|
|
|
This package contains all customizations for Claude Code including custom agents, MCP tools configuration, and plugins.
|
|
|
|
## Contents
|
|
|
|
- `agents/` - Custom agent definitions organized by category
|
|
- `plugins/` - Plugin configurations
|
|
- `config/` - Settings files
|
|
- `hooks/` - Custom hooks (if any)
|
|
|
|
## Installation
|
|
|
|
### Quick Install
|
|
|
|
Run the automated installer:
|
|
|
|
```bash
|
|
bash install-claude-customizations.sh
|
|
```
|
|
|
|
### Manual Install
|
|
|
|
1. **Copy agents:**
|
|
```bash
|
|
cp -r agents/* ~/.claude/agents/
|
|
```
|
|
|
|
2. **Copy plugins:**
|
|
```bash
|
|
cp -r plugins/* ~/.claude/plugins/
|
|
```
|
|
|
|
3. **Configure settings:**
|
|
```bash
|
|
cp config/settings.local.json ~/.claude/
|
|
# Edit ~/.claude/settings.json and add your API token
|
|
```
|
|
|
|
4. **Install MCP tools:**
|
|
```bash
|
|
npm install -g @z_ai/mcp-server @z_ai/coding-helper
|
|
```
|
|
|
|
5. **Restart Claude Code**
|
|
|
|
## Agent Categories
|
|
|
|
- **Engineering** - AI engineer, backend architect, frontend developer, DevOps, mobile app builder
|
|
- **Marketing** - TikTok strategist, growth hacker, content creator
|
|
- **Product** - Sprint prioritizer, feedback synthesizer, trend researcher
|
|
- **Studio Operations** - Studio producer, project shipper, analytics, finance
|
|
- **Project Management** - Experiment tracker, studio coach
|
|
- **Testing** - Test writer/fixer, API tester, performance benchmarker
|
|
- **Design** - UI designer, UX researcher, brand guardian, whimsy injector
|
|
- **Bonus** - Joker, studio coach
|
|
|
|
## MCP Tools Included
|
|
|
|
- **zai-mcp-server** - Vision analysis (images, videos, UI screenshots, error diagnosis)
|
|
- **web-search-prime** - Enhanced web search with domain filtering
|
|
- **web-reader** - Fetch URLs and convert to markdown
|
|
- **zread** - GitHub repository reader
|
|
|
|
## Skills
|
|
|
|
- `glm-plan-bug:case-feedback` - Submit bug/issue feedback
|
|
- `glm-plan-usage:usage-query` - Query account usage statistics
|
|
|
|
## Customization
|
|
|
|
Edit agent `.md` files in `~/.claude/agents/` to customize agent behavior.
|
|
|
|
## Support
|
|
|
|
For issues or questions, refer to the original source machine or Claude Code documentation.
|
|
EOF
|
|
|
|
# Create manifest
|
|
log_info "Creating package manifest..."
|
|
cat > "$EXPORT_DIR/MANIFEST.json" << EOF
|
|
{
|
|
"package": "claude-code-customizations",
|
|
"version": "1.0.0",
|
|
"exported_at": "$(date -u +%Y-%m-%dT%H:%M:%S.000Z)",
|
|
"contents": {
|
|
"agents": "$(ls -1 "$EXPORT_DIR/agents" | wc -l) categories",
|
|
"plugins": "$(ls -1 "$EXPORT_DIR/plugins" 2>/dev/null | wc -l) items",
|
|
"config_files": "$(ls -1 "$EXPORT_DIR/config" | wc -l) files"
|
|
},
|
|
"mcp_tools": [
|
|
"zai-mcp-server (vision)",
|
|
"web-search-prime",
|
|
"web-reader",
|
|
"zread"
|
|
],
|
|
"skills": [
|
|
"glm-plan-bug:case-feedback",
|
|
"glm-plan-usage:usage-query"
|
|
]
|
|
}
|
|
EOF
|
|
|
|
# Create tarball
|
|
log_info "Creating compressed archive..."
|
|
tar -czf "$EXPORT_FILE" -C "$HOME" "$(basename "$EXPORT_DIR")"
|
|
|
|
# Get file size
|
|
FILE_SIZE=$(du -h "$EXPORT_FILE" | cut -f1)
|
|
|
|
log_success "═══════════════════════════════════════════════════════════"
|
|
log_success "Export completed successfully!"
|
|
log_success "═══════════════════════════════════════════════════════════"
|
|
echo ""
|
|
log_info "Export location: $EXPORT_FILE"
|
|
log_info "Package size: $FILE_SIZE"
|
|
log_info "Unpacked directory: $EXPORT_DIR"
|
|
echo ""
|
|
log_info "To transfer to another machine:"
|
|
echo " 1. Copy the archive: scp $EXPORT_FILE user@target:~/"
|
|
echo " 2. Extract: tar -xzf $(basename "$EXPORT_FILE")"
|
|
echo " 3. Run: cd $(basename "$EXPORT_DIR") && bash install-claude-customizations.sh"
|
|
echo ""
|
|
|
|
# Ask if user wants to keep unpacked directory
|
|
read -p "Keep unpacked export directory? (y/N): " keep_unpacked
|
|
if [[ ! "$keep_unpacked" =~ ^[Yy]$ ]]; then
|
|
rm -rf "$EXPORT_DIR"
|
|
log_info "Unpacked directory removed"
|
|
fi
|