{
  "markdown": "# cc-meme\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/Claude%20Code-Hook-blue?style=flat-square&logo=anthropic&logoColor=white\" alt=\"Claude Code Hook\">\n  <img src=\"https://img.shields.io/badge/Node.js-18+-339933?style=flat-square&logo=node.js&logoColor=white\" alt=\"Node.js\">\n  <img src=\"https://img.shields.io/badge/npm-package-CB3837?style=flat-square&logo=npm&logoColor=white\" alt=\"npm\">\n  <img src=\"https://img.shields.io/github/license/wuyouMaster/cc-meme?style=flat-square\" alt=\"License\">\n</p>\n\n<p align=\"center\">\n  为 <a href=\"https://docs.anthropic.com/en/docs/claude-code\">Claude Code</a> 添加趣味浮动动画覆盖层\n</p>\n\n<p align=\"center\">\n  中文 | <a href=\"./README_EN.md\">English</a>\n</p>\n\n---\n\n## ✨ 简介\n\ncc-meme 是 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 的 Hook 插件，通过在 Claude Code 执行过程中显示浮动动画覆盖层，让编码过程更有趣。\n\n它监听 Claude Code 的各类事件（会话开始、工具调用、错误等），并通过命名管道 (FIFO) 与 [meme-overlay](https://github.com/wuyouMaster/opencode-overlay) 桌面应用通信，实时显示当前任务进度。\n\n> ⚠️ **前置依赖**: 本插件需要 [meme-overlay](https://github.com/wuyouMaster/opencode-overlay) 桌面应用配合使用。\n\n---\n\n## ✨ 功能特性\n\n- **事件驱动** — 监听 Claude Code 8 种 Hook 事件\n- **FIFO 通信** — 通过 POSIX 命名管道与 overlay 进程通信，Hook 调用轻量无阻塞\n- **自动管理** — 自动启动/重启 overlay 进程，会话结束自动清理\n- **自定义动画** — 通过配置文件为不同事件分配不同动画和文本\n- **零延迟** — Hook 以异步命令运行，不影响 Claude Code 响应速度\n\n### 支持的 Hook 事件\n\n| Hook 事件 | 触发时机 | 默认文本 |\n|----------|---------|---------|\n| `SessionStart` | 会话启动/恢复 | \"Starting...\" |\n| `UserPromptSubmit` | 用户提交 prompt | prompt 前 60 字符 |\n| `PreToolUse` | 工具调用前 | 工具名称 |\n| `PostToolUse` | 工具调用后 | 工具名称 |\n| `PostToolUseFailure` | 工具调用失败 | 工具名称 |\n| `Stop` | Claude 完成回复 | \"Done\" |\n| `StopFailure` | 回复异常终止 | \"Error\" |\n| `Notification` | 通知（等待输入/权限） | \"Waiting for input...\" / \"Permission needed\" |\n\n---\n\n## 🚀 使用\n\n### 1. 安装 meme-overlay\n\n请参考 [meme-overlay](https://github.com/wuyouMaster/opencode-overlay) 仓库完成桌面应用的安装和动画配置。\n\n### 2. 修改配置\n\n**使用 Claude Code 插件系统（推荐）：**\n\n```bash\nvim ~/.claude/settings.json\n# 增加如下配置\n{\n    \"extraKnownMarketplaces\": {\n        \"cc-meme\": {\n            \"source\": {\n                \"source\": \"git\",\n                \"url\": \"https://github.com/wuyouMaster/cc-meme.git\"\n            }\n        }\n    },\n    \"enabledPlugins\": {\n        \"cc-meme@cc-meme\": true\n    }\n}\n```\n启动claude code， 启动之后输入/plugin 即可进入如下页面, 选择cc-meme， 回车即可见到cc-meme  plugin, 选择安装之后退出重启claude code即可\n![marketplaces](./cc-marketplacs.png)\n\n\n插件会自动注册 `hooks/hooks.json` 中定义的所有 Hook 事件，无需手动编辑 `settings.json`。\n\n---\n\n### 前置条件\n\n| 依赖 | 版本 | 说明 |\n|------|------|------|\n| [Node.js](https://nodejs.org/) | 18+ | 运行 Hook 脚本 |\n| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | 1.0.33+ | AI 编码助手 |\n| [meme-overlay](https://github.com/wuyouMaster/opencode-overlay) | 0.1+ | 浮动动画桌面应用 |\n\n\n## ⚙️ 配置\n\n### 配置文件\n\n配置文件位于 `~/.config/meme-overlay/config.json`：\n\n```json\n{\n  \"cc\": {\n    \"hook_assignments\": {\n      \"cc.session.start\": {\n        \"animation\": \"thinking\",\n        \"custom_text\": \"Starting...\"\n      },\n      \"cc.tool.before\": {\n        \"animation\": \"coding\",\n        \"custom_text\": null\n      },\n      \"cc.tool.after\": {\n        \"animation\": \"coding\",\n        \"custom_text\": \"Done\"\n      },\n      \"cc.stop\": {\n        \"animation\": \"success\",\n        \"custom_text\": \"Done\"\n      }\n    }\n  }\n}\n```\n\n### 环境变量\n\n| 变量 | 说明 | 示例 |\n|------|------|------|\n| `OVERLAY_BIN` | 自定义 overlay 可执行文件路径 | `/usr/local/bin/meme-overlay` |\n\n---\n\n## 🛠️ 开发\n\n```bash\n# 安装依赖\nnpm install\n\n# 构建\nnpm run build\n\n# 直接运行（调试）\nnode dist/cc-meme.js\n```\n\n### 项目结构\n\n```\ncc-meme/\n├── .claude-plugin/\n│   └── plugin.json     # Claude Code 插件清单\n├── hooks/\n│   └── hooks.json      # Hook 事件配置\n├── bin/                # 编译输出（构建后生成）\n│   └── cc-meme.js\n├── cc-meme.ts          # Hook 入口脚本源码\n├── package.json\n└── tsconfig.json\n```\n\n### 工作原理\n\n```\nClaude Code 事件\n      │\n      ▼\n  cc-meme.ts (每次事件启动新进程)\n      │\n      │  FIFO 命名管道 (O_RDWR | O_NONBLOCK)\n      ▼\n  meme-overlay 持久进程\n      │\n      ▼\n  透明浮动动画窗口\n```\n\n由于 Claude Code 的 Hook 是每次事件触发时启动一个**短生命周期进程**（与 OpenCode 的长驻插件不同），所以使用 POSIX FIFO 命名管道进行 IPC：overlay 进程持有管道的读端，每次 Hook 调用以非阻塞模式打开管道写入命令。\n\n---\n\n## 🔧 故障排除\n\n| 问题 | 排查步骤 |\n|------|---------|\n| overlay 未显示 | 确认 `~/.config/meme-overlay/bin/meme-overlay` 存在且可执行 |\n| Hook 未触发 | 检查 `~/.claude/settings.json` 中 hooks 配置是否正确 |\n| 管道错误 | 删除 `~/.config/meme-overlay/overlay.pipe` 后重启 |\n| 动画不显示 | 检查 `~/.config/meme-overlay/animations/` 中是否有动画文件 |\n\n---\n\n## 📄 许可证\n\n[MIT](LICENSE)\n",
  "bytes": 4372,
  "sha": "09d6040219b855f41686dccbb1aadd62e422ff0a8d21fceb18cab99fe67c967a",
  "repo_slug": "wuyoumaster/cc-meme",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_wuyoumaster_cc_meme_cc_meme_17179d79/readme"
}