move claude-marketplace to ai-proj-helper

This commit is contained in:
2026-03-12 21:42:30 +08:00
parent d7b6835e1d
commit 43585b8504
188 changed files with 39510 additions and 0 deletions

124
sync-skills.sh Executable file
View File

@@ -0,0 +1,124 @@
#!/bin/bash
# Sync local skills to marketplace plugins
# Usage: ./sync-skills.sh [marketplace-dir]
set -e
# Configuration
LOCAL_SKILLS_DIR="$HOME/.claude/skills"
MARKETPLACE_DIR="${1:-$(dirname "$0")}"
PLUGINS_DIR="$MARKETPLACE_DIR/plugins"
echo "🔄 Syncing skills to marketplace..."
echo "Source: $LOCAL_SKILLS_DIR"
echo "Target: $PLUGINS_DIR"
echo ""
# Check if local skills directory exists
if [ ! -d "$LOCAL_SKILLS_DIR" ]; then
echo "❌ Error: Local skills directory not found: $LOCAL_SKILLS_DIR"
exit 1
fi
# Track changes
new_count=0
updated_count=0
unchanged_count=0
# Loop through each local skill
for skill_dir in "$LOCAL_SKILLS_DIR"/*; do
# Skip non-directories and special files
if [ ! -d "$skill_dir" ] || [ "$(basename "$skill_dir")" = ".git" ]; then
continue
fi
# Skip registry.yaml if it exists as a directory
if [ "$(basename "$skill_dir")" = "registry.yaml" ]; then
continue
fi
skill_name=$(basename "$skill_dir")
plugin_name="${skill_name}-plugin"
plugin_dir="$PLUGINS_DIR/$plugin_name"
# Check if SKILL.md exists
if [ ! -f "$skill_dir/SKILL.md" ]; then
echo "⚠️ Skipping $skill_name (no SKILL.md)"
continue
fi
# Check if plugin already exists
if [ -d "$plugin_dir" ]; then
# Compare SKILL.md files
if diff -q "$skill_dir/SKILL.md" "$plugin_dir/skills/SKILL.md" > /dev/null 2>&1; then
echo "$skill_name (unchanged)"
((unchanged_count++))
else
echo "📝 $skill_name (updated)"
cp "$skill_dir/SKILL.md" "$plugin_dir/skills/"
((updated_count++))
fi
else
echo " $skill_name (new)"
# Create plugin directory structure
mkdir -p "$plugin_dir/.claude-plugin"
mkdir -p "$plugin_dir/skills"
# Copy SKILL.md
cp "$skill_dir/SKILL.md" "$plugin_dir/skills/"
# Extract description from SKILL.md frontmatter
description=$(grep "^description:" "$skill_dir/SKILL.md" | sed 's/^description: *//' | tr -d '\n\r')
if [ -z "$description" ]; then
description="Plugin for $skill_name"
fi
# Create plugin.json
cat > "$plugin_dir/.claude-plugin/plugin.json" << EOF
{
"name": "$plugin_name",
"description": "$description",
"version": "1.0.0",
"author": {
"name": "qiudl"
}
}
EOF
((new_count++))
fi
done
echo ""
echo "📊 Summary:"
echo " New: $new_count"
echo " Updated: $updated_count"
echo " Unchanged: $unchanged_count"
echo ""
# Regenerate marketplace.json if there are changes
if [ $new_count -gt 0 ] || [ $updated_count -gt 0 ]; then
echo "🔄 Regenerating marketplace.json..."
cd "$MARKETPLACE_DIR"
# Run the generate script if it exists
if [ -f "generate-marketplace.py" ]; then
python3 generate-marketplace.py
else
echo "⚠️ Warning: generate-marketplace.py not found, skipping marketplace.json regeneration"
fi
echo ""
echo "✅ Sync complete! Changes ready to commit."
echo ""
echo "Next steps:"
echo " cd $MARKETPLACE_DIR"
echo " git status"
echo " git add ."
echo " git commit -m 'Sync skills from local'"
echo " git push"
else
echo "✅ All plugins are up to date!"
fi