logo
0
0
WeChat Login
✨ feat: 初始化 Claude Code Flourish 插件生态系统

Claude Code Flourish

一个 Claude Code 多插件开发仓库,用于管理和开发多个独立的 Claude Code 插件。

项目简介

Claude Code Flourish 是一个插件生态集合,旨在提升 Claude Code 的开发体验。通过插件系统,你可以:

  • 在特定事件发生时接收通知(如权限请求、任务完成)
  • 自动执行自定义工作流
  • 扩展 Claude Code 的原生功能
  • 集成第三方服务(Bark、钉钉、企业微信等)

现有插件

通知插件,支持在以下事件发生时发送通知到 Bark 等服务:

  • Notification: Claude Code 发送通知时
  • PermissionRequest: 需要用户确认权限时
  • Stop: Claude 完成响应时

功能特点:

  • ✅ 通知标题包含项目名称
  • ✅ 支持 Plan 模式标识
  • ✅ 仅通过环境变量配置,安全可靠
  • ✅ 可扩展架构,支持钉钉、企业微信等通知渠道

查看详细文档

快速开始

安装插件

方式一:本地安装

/plugin install <path-to-repo>/plugins/claude-notify

/reload-plugins

方式二:通过 Marketplace 安装

/plugin marketplace add https://cnb.cool/nowfun/claude-code-flourish.git

/plugin install claude-notify

/reload-plugins

配置插件

在启动 Claude Code 前设置环境变量:

# ~/.zshrc 或 ~/.bashrc
export CLAUDE_NOTIFY_TYPE=bark
export BARK_DEVICE_KEY=your_device_key_here

开发新插件

目录结构

plugins/
└── {plugin-name}/                # 每个插件独立目录
    ├── .claude-plugin/
    │   └── plugin.json           # 插件元数据
    ├── hooks/
    │   └── hooks.json            # 钩子事件配置
    ├── scripts/                  # 钩子脚本实现
    │   ├── *.js                  # 功能脚本
    │   └── lib/
    │       └── utils.js          # 公共工具函数
    └── README.md                 # 插件文档

核心配置文件

plugin.json - 插件元数据

{
  "name": "plugin-name",
  "description": "插件描述",
  "version": "1.0.0",
  "author": { "name": "作者名" },
  "homepage": "https://cnb.cool/nowfun/-/tree/main/plugins/plugin-name",
  "repository": "https://cnb.cool/nowfun/claude-code-flourish",
  "license": "MIT",
  "keywords": ["claude-code", "hooks"]
}

hooks.json - 钩子事件配置

{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/handler.js\""
          }
        ]
      }
    ],
    "PostToolUse": [],
    "UserPromptSubmit": [],
    "SessionEnd": []
  }
}

Hooks 事件速查

事件触发时机payload 关键字段
PreToolUse工具执行前tool_name, tool_input
PostToolUse工具执行后(用户确认)tool_name, tool_input, tool_result
UserPromptSubmit用户提交提示prompt
SessionEnd会话结束

matcher 规则

  • Edit|Write - 匹配 Edit 或 Write 工具
  • Bash - 匹配 Bash 工具
  • 省略 matcher - 匹配所有工具

脚本开发模板

#!/usr/bin/env node

const { readStdin } = require('./lib/utils');

async function handlePreToolUse(payload) {
    const { tool_name, tool_input } = payload;
    // 处理逻辑
}

async function main() {
    try {
        const payload = await readStdin();

        switch (payload.hook_event_name) {
            case 'PreToolUse':
                await handlePreToolUse(payload);
                break;
            case 'PostToolUse':
                await handlePostToolUse(payload);
                break;
            // ... 其他事件
        }
    } catch (error) {
        // 静默处理错误,避免干扰 Claude Code 主流程
        console.warn(`[plugin-name] Error: ${error.message}`);
    }
}

main();

开发规范

脚本开发

  • 仅使用 Node.js 内置模块,不依赖外部包
  • 静默处理错误,不能抛出未捕获的异常
  • 使用 [plugin-name] 前缀标识日志和错误

环境变量

  • CLAUDE_PLUGIN_ROOT - 插件根目录的绝对路径,用于定位脚本文件

发布流程

  1. 开发阶段:在 plugins/{plugin-name}/ 目录开发
  2. 本地测试:使用 /plugin install local-path 安装测试
  3. 代码混淆:敏感代码使用混淆工具处理
  4. 发布:推送到 Git 仓库,用户通过 marketplace 安装

贡献指南

欢迎贡献新的插件!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建你的插件目录(参考 claude-notify 的结构)
  3. 编写插件代码和文档
  4. marketplace.json 中注册你的插件
  5. 提交 Pull Request

许可证

MIT License

作者

iGang

相关链接