Files
ai-proj-helper/convert-skills.sh

83 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# Convert dotfiles custom skills to official Claude Code plugins
SOURCE_DIR="/Users/junhuang/coolbuy/new-ai-proj/dotfiles/claude-skills"
TARGET_DIR="/Users/junhuang/coolbuy/claude-marketplace/plugins"
echo "Converting skills to plugins..."
# Loop through each skill directory
for skill_dir in "$SOURCE_DIR"/*; do
# Skip non-directories and special files
if [ ! -d "$skill_dir" ] || [ "$(basename "$skill_dir")" = ".git" ]; then
continue
fi
skill_name=$(basename "$skill_dir")
plugin_name="${skill_name}-plugin"
plugin_dir="$TARGET_DIR/$plugin_name"
echo "Processing: $skill_name -> $plugin_name"
# Create plugin directory structure
mkdir -p "$plugin_dir/.claude-plugin"
mkdir -p "$plugin_dir/skills"
# Copy SKILL.md if exists
if [ -f "$skill_dir/SKILL.md" ]; then
cp "$skill_dir/SKILL.md" "$plugin_dir/skills/"
fi
# Copy skill.yaml if exists (for reference)
if [ -f "$skill_dir/skill.yaml" ]; then
cp "$skill_dir/skill.yaml" "$plugin_dir/.skill.yaml.original"
fi
# Copy any Python scripts or other files
find "$skill_dir" -type f \( -name "*.py" -o -name "*.sh" -o -name "*.js" -o -name "*.json" -o -name "*.md" \) -not -name "SKILL.md" -not -name "skill.yaml" -exec cp {} "$plugin_dir/" \;
# Copy subdirectories (like scripts/)
for subdir in "$skill_dir"/*; do
if [ -d "$subdir" ]; then
subdir_name=$(basename "$subdir")
cp -r "$subdir" "$plugin_dir/"
fi
done
# Read version from skill.yaml if exists, otherwise use 1.0.0
version="1.0.0"
if [ -f "$skill_dir/skill.yaml" ]; then
yaml_version=$(grep "^version:" "$skill_dir/skill.yaml" | sed 's/version: *//' | tr -d '"' | tr -d "'")
if [ ! -z "$yaml_version" ]; then
version="$yaml_version"
fi
fi
# Read description from skill.yaml
description="Plugin for $skill_name"
if [ -f "$skill_dir/skill.yaml" ]; then
yaml_desc=$(grep "^description:" "$skill_dir/skill.yaml" | sed 's/description: *//' | tr -d '"')
if [ ! -z "$yaml_desc" ]; then
description="$yaml_desc"
fi
fi
# Create plugin.json
cat > "$plugin_dir/.claude-plugin/plugin.json" << EOF
{
"name": "$plugin_name",
"description": "$description",
"version": "$version",
"author": {
"name": "qiudl"
}
}
EOF
echo " ✓ Created $plugin_name"
done
echo ""
echo "Conversion complete! Created $(ls -1 "$TARGET_DIR" | wc -l) plugins."