Release v1.30.0: Add competitors-analysis skill
- Add competitors-analysis skill for evidence-based competitor tracking - Pre-analysis checklist to ensure repositories are cloned locally - Forbidden patterns to prevent assumptions and speculation - Required patterns for source citation (file:line_number format) - Tech stack analysis guides for Node.js, Python, Rust - Bundled references: profile_template.md, analysis_checklist.md - Management script: update-competitors.sh - Update marketplace version from 1.29.0 to 1.30.0 - Update skills count from 34 to 35 - Update README.md and README.zh-CN.md (badges, skill section, use case) - Update CLAUDE.md (skill count, available skills list) - Update marketplace.json (metadata + new plugin entry) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
151
competitors-analysis/scripts/update-competitors.sh
Executable file
151
competitors-analysis/scripts/update-competitors.sh
Executable file
@@ -0,0 +1,151 @@
|
||||
#!/bin/bash
|
||||
# 竞品仓库管理脚本模板
|
||||
# 复制此文件到你的项目: scripts/update-competitors.sh
|
||||
# 用法: ./scripts/update-competitors.sh [clone|pull|status]
|
||||
|
||||
set -e
|
||||
|
||||
# ============================================================
|
||||
# 配置区域 - 根据你的产品修改
|
||||
# ============================================================
|
||||
|
||||
# 竞品仓库基础目录(按产品区分)
|
||||
COMPETITORS_BASE="${COMPETITORS_BASE:-$HOME/Workspace/competitors}"
|
||||
|
||||
# 你的产品名称(用于子目录)
|
||||
PRODUCT_NAME="your-product-name" # TODO: 修改为你的产品名
|
||||
|
||||
# 竞品目录
|
||||
COMPETITORS_DIR="$COMPETITORS_BASE/$PRODUCT_NAME"
|
||||
|
||||
# 竞品仓库列表(SSH 方式,网络问题时会自动重试)
|
||||
declare -A COMPETITORS=(
|
||||
# TODO: 添加你的竞品
|
||||
# ["competitor-name"]="git@github.com:org/repo.git"
|
||||
# 示例:
|
||||
# ["openwhispr"]="git@github.com:OpenWhispr/openwhispr.git"
|
||||
)
|
||||
|
||||
# ============================================================
|
||||
# 以下代码无需修改
|
||||
# ============================================================
|
||||
|
||||
# 颜色
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 函数:克隆仓库
|
||||
clone_repos() {
|
||||
echo -e "${GREEN}=== 克隆竞品仓库 ($PRODUCT_NAME) ===${NC}"
|
||||
mkdir -p "$COMPETITORS_DIR"
|
||||
|
||||
for name in "${!COMPETITORS[@]}"; do
|
||||
repo="${COMPETITORS[$name]}"
|
||||
target="$COMPETITORS_DIR/$name"
|
||||
|
||||
if [ -d "$target" ]; then
|
||||
echo -e "${YELLOW}[跳过] $name 已存在${NC}"
|
||||
else
|
||||
echo -e "${GREEN}[克隆] $name${NC}"
|
||||
# 网络问题自动重试
|
||||
for i in 1 2 3; do
|
||||
if git clone "$repo" "$target" 2>/dev/null; then
|
||||
break
|
||||
fi
|
||||
echo " 重试 $i/3..."
|
||||
sleep 2
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}完成!竞品仓库位于: $COMPETITORS_DIR${NC}"
|
||||
}
|
||||
|
||||
# 函数:更新仓库
|
||||
pull_repos() {
|
||||
echo -e "${GREEN}=== 更新竞品仓库 ($PRODUCT_NAME) ===${NC}"
|
||||
|
||||
for name in "${!COMPETITORS[@]}"; do
|
||||
target="$COMPETITORS_DIR/$name"
|
||||
|
||||
if [ -d "$target" ]; then
|
||||
echo -e "${GREEN}[更新] $name${NC}"
|
||||
cd "$target"
|
||||
git fetch --all 2>/dev/null || echo -e "${RED} fetch 失败${NC}"
|
||||
git pull --rebase 2>/dev/null || echo -e "${YELLOW} 可能有冲突${NC}"
|
||||
cd - > /dev/null
|
||||
else
|
||||
echo -e "${RED}[缺失] $name - 请先运行 clone${NC}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# 函数:检查状态
|
||||
check_status() {
|
||||
echo -e "${GREEN}=== 竞品仓库状态 ($PRODUCT_NAME) ===${NC}"
|
||||
echo ""
|
||||
|
||||
for name in "${!COMPETITORS[@]}"; do
|
||||
target="$COMPETITORS_DIR/$name"
|
||||
|
||||
if [ -d "$target" ]; then
|
||||
cd "$target"
|
||||
branch=$(git branch --show-current 2>/dev/null || echo "unknown")
|
||||
commit=$(git log -1 --format="%h %s" 2>/dev/null | head -c 60)
|
||||
behind=$(git rev-list --count HEAD..origin/main 2>/dev/null || echo "?")
|
||||
echo -e "${GREEN}$name${NC} ($branch)"
|
||||
echo " 最新: $commit"
|
||||
echo " 落后: $behind 个提交"
|
||||
cd - > /dev/null
|
||||
else
|
||||
echo -e "${RED}$name${NC}: 未克隆"
|
||||
fi
|
||||
echo ""
|
||||
done
|
||||
}
|
||||
|
||||
# 函数:显示帮助
|
||||
show_help() {
|
||||
echo "竞品仓库管理脚本 - $PRODUCT_NAME"
|
||||
echo ""
|
||||
echo "用法: $0 [命令]"
|
||||
echo ""
|
||||
echo "命令:"
|
||||
echo " clone 克隆所有竞品仓库到 $COMPETITORS_DIR"
|
||||
echo " pull 更新所有竞品仓库"
|
||||
echo " status 检查仓库状态(分支、最新提交、落后数)"
|
||||
echo " help 显示此帮助"
|
||||
echo ""
|
||||
echo "环境变量:"
|
||||
echo " COMPETITORS_BASE 竞品仓库基础目录 (默认: ~/Workspace/competitors)"
|
||||
echo ""
|
||||
echo "目录结构:"
|
||||
echo " $COMPETITORS_BASE/"
|
||||
echo " └── $PRODUCT_NAME/"
|
||||
echo " ├── competitor1/"
|
||||
echo " └── competitor2/"
|
||||
}
|
||||
|
||||
# 主逻辑
|
||||
case "${1:-help}" in
|
||||
clone)
|
||||
clone_repos
|
||||
;;
|
||||
pull)
|
||||
pull_repos
|
||||
;;
|
||||
status)
|
||||
check_status
|
||||
;;
|
||||
help|--help|-h)
|
||||
show_help
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}未知命令: $1${NC}"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user