Awesome Claude Code Plugins - 赋能开发工作流的插件集合

0 阅读4分钟

Awesome Claude Code Plugins

Awesome PRs Welcome License: MIT

A curated list of production-ready plugins for Claude Code to supercharge your development workflow.

---|------| | /skill-bus:help | 显示帮助信息 | | /skill-bus:list-subs | 列出所有订阅 | | /skill-bus:add-sub | 订阅技能事件 | | /skill-bus:remove-sub | 移除订阅 | | /skill-bus:edit-insert | 编辑插入内容 | | /skill-bus:pause-subs | 暂停技能总线 | | /skill-bus:unpause-subs | 恢复技能总线 | | /skill-bus:report | 显示遥测报告 | | /skill-bus:onboard | 引导式设置 |

核心代码

性能调查编排器

# perf-orchestrator - 协调完整性能调查工作流
# 强制执行非协商的性能规则

def orchestrate_perf_investigation():
    """
    协调 /perf 工作流的全部阶段
    
    非协商规则:
    1. 顺序基准测试(永不并行)
    2. 最小持续时间:60秒(二分搜索仅30秒)
    3. 每次只改一个变量,运行间恢复
    4. 窄优先;仅经明确批准后扩大范围
    5. 验证一切;重新运行异常结果
    6. 每次实验前清理基线
    7. 资源最小化
    8. 假设/更改前检查 git 历史
    9. 行动前澄清术语
    10. 每个阶段后检查点提交 + 调查日志
    """
    
    phases = [
        "setup",           # 确认场景、成功指标和基准命令
        "baseline",        # 运行基准测试并存储结果
        "breaking-point",  # 二分搜索找到失败阈值
        "constraints",     # CPU/内存限制下的基准测试
        "hypotheses",      # 生成性能假设
        "code-paths",      # 映射代码路径
        "profiling",       # CPU/内存/性能分析
        "optimization",    # 优化与验证
        "decision",        # 决策点(放弃/继续)
        "consolidation"    # 整合结果
    ]
    
    for phase in phases:
        run_phase(phase)
        checkpoint_commit()
        update_investigation_log()

智能体 SDK 验证器

# agent-sdk-verifier-py - Python Agent SDK 应用验证器

def verify_python_agent_sdk_app(project_path: str):
    """
    验证 Python Agent SDK 应用是否正确配置
    
    验证重点:
    1. SDK 安装和配置
       - 检查 claude-agent-sdk 是否已安装
       - 验证 SDK 版本是否合理更新
       - 确认 Python 版本要求(通常 3.8+)
       - 验证虚拟环境是否已记录
    
    2. Python 环境设置
       - 检查 requirements.txt 或 pyproject.toml
       - 验证依赖项是否正确指定
       - 确保环境可复现
    
    3. SDK 使用模式
       - 验证从 claude_agent_sdk 的正确导入
       - 检查代理是否正确初始化
       - 验证代理配置遵循 SDK 模式
       - 检查代理响应的正确处理
    """
    
    checks = {
        "sdk_installed": check_package_installed("claude-agent-sdk"),
        "python_version": check_python_version(">=3.8"),
        "has_requirements": file_exists("requirements.txt") or file_exists("pyproject.toml"),
        "correct_imports": grep_pattern("from claude_agent_sdk import"),
        "agent_initialization": grep_pattern("Agent\("),
        "response_handling": grep_pattern("\.run\(|\.stream\(")
    }
    
    return generate_verification_report(checks)

前端脚手架生成器

// senior-frontend - React/Next.js 项目脚手架

const scaffoldNextJSProject = async (projectName, options) => {
  /**
   * 生成 Next.js 项目结构
   * 
   * 生成的目录结构:
   * my-app/
   * ├── app/
   * │   ├── layout.tsx        # 根布局包含字体
   * │   ├── page.tsx          # 首页
   * │   ├── globals.css       # Tailwind + CSS 变量
   * │   └── api/health/route.ts
   * ├── components/
   * │   ├── ui/               # Button, Input, Card
   * │   └── layout/           # Header, Footer, Sidebar
   * ├── hooks/                # useDebounce, useLocalStorage
   * ├── lib/                  # utils (cn), constants
   * ├── types/                # TypeScript 接口
   * └── tailwind.config.ts
   */
  
  const features = options.features || [];
  
  // 根据特性生成额外文件
  if (features.includes('auth')) {
    await generateAuthFiles(projectName);
  }
  
  if (features.includes('testing')) {
    await generateTestConfig(projectName);
  }
  
  await installDependencies(projectName, features);
  await setupTailwindConfig(projectName);
};

// React 组合组件模式
const Tabs = ({ children }) => {
  const [active, setActive] = useState(0);
  return (
    <TabsContext.Provider value={{ active, setActive }}>
      {children}
    </TabsContext.Provider>
  );
};

Tabs.List = TabList;
Tabs.Panel = TabPanel;

// 自定义 Hook - useDebounce
function useDebounce(value, delay = 500) {
  const [debouncedValue, setDebouncedValue] = useState(value);

  useEffect(() => {
    const timer = setTimeout(() => setDebouncedValue(value), delay);
    return () => clearTimeout(timer);
  }, [value, delay]);

  return debouncedValue;
}

安全提醒钩子

#!/usr/bin/env python3
"""
Security Reminder Hook for Claude Code
检查文件编辑中的安全模式并警告潜在漏洞
"""

SECURITY_PATTERNS = [
    {
        "ruleName": "github_actions_workflow",
        "path_check": lambda path: ".github/workflows/" in path 
                                   and (path.endswith(".yml") or path.endswith(".yaml")),
        "reminder": """
        你正在编辑 GitHub Actions 工作流文件。请注意以下安全风险:

        1. **命令注入**:切勿在 run: 命令中直接使用未信任的输入
        2. **使用环境变量**:使用 env: 配合正确引号
        3. **不安全模式示例**:

        4. **安全模式示例**:
           env:

           run: echo "$TITLE"
        """
    },
    {
        "ruleName": "hardcoded_secrets",
        "content_check": lambda content: any(secret in content.lower() for secret in 
                                             ["api_key", "api_key =", "secret =", "password ="]),
        "reminder": """
        检测到可能硬编码的敏感信息。请使用环境变量或密钥管理服务。
        """
    }
]

def check_security_patterns(file_path: str, content: str):
    """检查文件内容中的安全模式"""
    for pattern in SECURITY_PATTERNS:
        if pattern.get("path_check") and pattern["path_check"](file_path):
            return pattern["reminder"]
        if pattern.get("content_check") and pattern["content_check"](content):
            return pattern["reminder"]
    return None

PR 自动审查循环

// CI & Review Monitor Loop - PR 审查监控

const monitorPRReviewLoop = async (prNumber, maxIterations = 10) => {
  /**
   * PR 自动审查监控循环
   * 
   * 强制要求:
   * 1. PR 创建后等待完整 3 分钟供自动审查器分析
   * 2. 运行监控循环(不仅是单次检查)
   * 3. 合并前处理所有评论
   */
  
  // 初始等待 - 自动审查器需要时间
  await wait(180000); // 3 分钟
  
  let iterations = 0;
  let unresolvedCount = Infinity;
  
  while (iterations < maxIterations && unresolvedCount > 0) {
    // 获取所有评论
    const comments = await getPRComments(prNumber);
    
    // 检查未解决的对话线程
    unresolvedCount = comments.filter(c => !c.resolved).length;
    
    if (unresolvedCount === 0) {
      console.log(`[VERIFIED] 迭代=${iterations}, 未解决=0`);
      break;
    }
    
    // 处理每条评论
    for (const comment of comments) {
      if (!comment.resolved) {
        await addressComment(comment);
      }
    }
    
    // 等待下一轮审查
    await wait(60000); // 1 分钟
    
    iterations++;
  }
  
  // 验证输出要求
  console.log(`[VERIFIED] Phase 4: wait=180s, iterations=${iterations}, unresolved=${unresolvedCount}`);
  
  if (unresolvedCount > 0) {
    throw new Error(`达到最大迭代次数 (${maxIterations}),仍有 ${unresolvedCount} 个未解决线程`);
  }
};

// 地址所有评论 - 无例外
const addressComment = async (comment) => {
  // Critical/High: 立即修复
  // Medium: 修复(不推迟)
  // Minor/Nit: 修复(展示对质量的关注)
  // Style: 修复(保持代码库一致性)
  // Questions: 用解释回答
  // False positives: 回复解释原因,然后解决
};

7HECMmqrgMFQ9BCTiZ/HoJZvi2k9mxqNPa3R5VDRyO+rYNdgfav1ATQJXvB/A8fG