#!/bin/bash # Register claude-mnemonic plugin with Claude Code set -e PLUGINS_FILE="$HOME/.claude/plugins/installed_plugins.json" SETTINGS_FILE="$HOME/.claude/settings.json" MARKETPLACES_FILE="$HOME/.claude/plugins/known_marketplaces.json" PLUGIN_KEY="claude-mnemonic@claude-mnemonic" MARKETPLACE_NAME="claude-mnemonic" MARKETPLACE_PATH="$HOME/.claude/plugins/marketplaces/claude-mnemonic" CACHE_PATH="$HOME/.claude/plugins/cache/claude-mnemonic/claude-mnemonic/1.0.0" VERSION="1.0.0" TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%S.000Z") # Ensure plugins directory exists mkdir -p "$HOME/.claude/plugins" # Create installed_plugins.json if it doesn't exist if [ ! -f "$PLUGINS_FILE" ]; then echo '{"version": 2, "plugins": {}}' > "$PLUGINS_FILE" fi # Create settings.json if it doesn't exist if [ ! -f "$SETTINGS_FILE" ]; then echo '{}' > "$SETTINGS_FILE" fi # Create known_marketplaces.json if it doesn't exist if [ ! -f "$MARKETPLACES_FILE" ]; then echo '{}' > "$MARKETPLACES_FILE" fi # Check if jq is available if command -v jq &> /dev/null; then # Ensure cache directory exists and copy plugin files mkdir -p "$CACHE_PATH/.claude-plugin" mkdir -p "$CACHE_PATH/hooks" # Copy files from marketplace to cache cp -r "$MARKETPLACE_PATH/"* "$CACHE_PATH/" 2>/dev/null || true # Use jq for proper JSON manipulation PLUGIN_ENTRY=$(cat < "${PLUGINS_FILE}.tmp" \ && mv "${PLUGINS_FILE}.tmp" "$PLUGINS_FILE" echo "Plugin registered in installed_plugins.json" # Enable the plugin in settings.json # First ensure enabledPlugins object exists, then add our plugin jq --arg key "$PLUGIN_KEY" \ '.enabledPlugins //= {} | .enabledPlugins[$key] = true' "$SETTINGS_FILE" > "${SETTINGS_FILE}.tmp" \ && mv "${SETTINGS_FILE}.tmp" "$SETTINGS_FILE" echo "Plugin enabled in settings.json" # Register the marketplace in known_marketplaces.json MARKETPLACE_ENTRY=$(cat < "${MARKETPLACES_FILE}.tmp" \ && mv "${MARKETPLACES_FILE}.tmp" "$MARKETPLACES_FILE" echo "Marketplace registered in known_marketplaces.json" echo "Plugin registered successfully using jq" else echo "ERROR: jq is required for plugin registration" echo "Please install jq: brew install jq (macOS) or apt-get install jq (Linux)" exit 1 fi