Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:04:17 +08:00
commit 652915e226
62 changed files with 8212 additions and 0 deletions

View File

@@ -0,0 +1,95 @@
#!/usr/bin/env bash
# Register plugin skills in ~/.claude/settings.json
# Usage: ./register-skills-in-settings.sh <plugin-name>
set -e
PLUGIN_NAME=$1
SETTINGS_FILE="$HOME/.claude/settings.json"
if [ -z "$PLUGIN_NAME" ]; then
echo "Usage: $0 <plugin-name>"
echo "Example: $0 domain-plugin-builder"
exit 1
fi
if [ ! -d "plugins/$PLUGIN_NAME" ]; then
echo "ERROR: Plugin directory plugins/$PLUGIN_NAME does not exist"
exit 1
fi
if [ ! -f "$SETTINGS_FILE" ]; then
echo "ERROR: Settings file $SETTINGS_FILE does not exist"
exit 1
fi
echo "[INFO] Registering skills for plugin: $PLUGIN_NAME"
# Get list of skills (directories in skills/)
SKILL_DIRS=$(find plugins/$PLUGIN_NAME/skills -maxdepth 1 -mindepth 1 -type d 2>/dev/null || true)
if [ -z "$SKILL_DIRS" ]; then
echo "[WARN] No skills found for plugin $PLUGIN_NAME"
exit 0
fi
echo "[INFO] Found skills:"
for SKILL_DIR in $SKILL_DIRS; do
SKILL_NAME=$(basename "$SKILL_DIR")
echo " - $SKILL_NAME"
done
# Check each skill and add if not already registered
for SKILL_DIR in $SKILL_DIRS; do
SKILL_NAME=$(basename "$SKILL_DIR")
SKILL_ENTRY="Skill($PLUGIN_NAME:$SKILL_NAME)"
# Check if this skill is already registered
if grep -q "\"$SKILL_ENTRY\"" "$SETTINGS_FILE"; then
echo "[INFO] Skill already registered: $SKILL_NAME"
continue
fi
echo "[INFO] Adding skill to settings.json: $SKILL_NAME"
# Find the last Skill() entry and add after it
# Use Python for JSON manipulation to ensure valid JSON
python3 << EOF
import json
with open('$SETTINGS_FILE', 'r') as f:
settings = json.load(f)
# Add skill to permissions.allow
if 'permissions' not in settings:
settings['permissions'] = {}
if 'allow' not in settings['permissions']:
settings['permissions']['allow'] = []
skill_entry = '$SKILL_ENTRY'
if skill_entry not in settings['permissions']['allow']:
# Find position after last Skill() entry
last_skill_index = -1
for i, entry in enumerate(settings['permissions']['allow']):
if isinstance(entry, str) and entry.startswith('Skill('):
last_skill_index = i
if last_skill_index >= 0:
# Insert after last skill
settings['permissions']['allow'].insert(last_skill_index + 1, skill_entry)
else:
# No skills yet, add at end
settings['permissions']['allow'].append(skill_entry)
with open('$SETTINGS_FILE', 'w') as f:
json.dump(settings, f, indent=2)
print(f"[SUCCESS] Added {skill_entry} to settings.json")
else:
print(f"[INFO] Skill already registered: {skill_entry}")
EOF
done
echo "[SUCCESS] Skill registration complete for plugin: $PLUGIN_NAME"