Files
daymade 104e431574 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>
2026-01-30 00:01:57 +08:00

152 lines
4.2 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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