📦 cc-sticky-notify — 桌面便签通知

v1.0.2

为 Claude Code 提供 macOS 右上角黄色便签式通知:显示项目名、来源应用、消息内容,支持跨桌面跟随、折叠展开、消息去重,本地编译 Swift 应用实现无网络依赖提醒。

1· 124·0 当前·0 累计
by @bucleliu (BucleLiu)
下载技能包
最后更新
2026/4/1
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能文件、安装步骤与运行时行为均与其声明用途一致(本地 macOS 便签通知);无网络外泄或索取无关凭据,但会访问本地窗口/进程信息并在 /tmp 写入文件,安装前请知悉。
评估建议
该技能功能与描述相符,但安装前请权衡并确认以下风险: - 权限:工具使用 Apple Events / System Events(osascript),可能触发 macOS 自动化/辅助功能授权弹窗;授权后应用可查看其他应用/窗口。 - 隐私:notify.sh 会捕获前台应用名、窗口标题/位置,并将当前工作目录 basename 作为“项目”字段,可能含敏感信息。 - 本地文件:运行时状态(内容、pid、slot、sig、wid 等)写入 /tmp/cc-sticky-notify,文件名可预测;多用户系统下其他用户可读。 - 安装:Swift 应用本地编译并临时签名;无网络下载。运行 install.sh 前请自行确认代码可信。 建议:自行检查脚本(notify.sh 与 sticky-window.swift 已附带),若不确定可在测试账户或 VM 中运行 install.sh,如不想让应用读取窗口标题或控制其他应用,可拒绝自动化/辅助功能授权。...
详细分析 ▾
用途与能力
名称/描述与所含文件及说明一致:用于在 macOS 显示浮动窗口通知的 Swift 程序 + shell 封装。所需工具(swiftc、codesign,通过 Xcode CLT)适用于编译与签名提供的 Swift 应用,无额外凭据、二进制或云服务需求。
指令范围
指令聚焦安装并将 notify 脚本接入 ~/.claude/settings.json 及验证运行。运行时行为不止展示通知:notify.sh 检查进程树、通过 System Events (osascript) 获取前台应用/窗口标题及位置,并记录会话/项目信息。捕获窗口标题并写入 /tmp 与声明功能一致,但涉及隐私,用户需知情。
安装机制
无外部下载或网络安装;Swift 二进制本地编译并临时签名。相比拉取远程归档风险更低。小差异:注释提及用 python3 解析 JSON 但脚本未强制;codesign 使用临时签名并附带允许 apple-events 的权限文件——对 macOS 自动化属正常,但仍可能在运行时触发授权弹窗。
凭证需求
技能不请求任何环境变量或凭据。仅暴露一个可选环境变量 CC_STICKY_NOTIFY_CLOSE_TIMEOUT,用途合理。未索取无关密钥或配置路径。
持久化与权限
技能非强制常驻,由用户调用,不修改其他技能。引导用户向 ~/.claude/settings.json 添加钩子(通知钩子常规做法),并将运行时状态写入 /tmp 下技能专属目录。不尝试更改系统级代理设置或其他技能。
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

版本

latestv1.0.22026/3/28

cc-sticky-notify 1.0.2 --- 新功能 来源显示 通知窗口现新增“来源”字段,显示触发通知的程序名称,方便快速识别消息出处。 跨桌面跟随模式 通知可随你切换虚拟桌面。默认关闭——点击窗口左侧灰色竖条激活;激活后竖条变为琥珀色,通知窗口将自动出现在当前桌面。 折叠 / 展开 通知窗口可折叠为仅显示标题栏,节省屏幕空间;单击即可再次展开。 --- 改进 项目名称高亮 项目名称现以粗体红色显示,在多项目切换时一眼识别。 同会话更新脉冲动画更强 同一会话收到新消息时,脉冲动画更醒目,降低专注工作时错过通知的可能。 --- 缺陷修复 消息去重 连续相同消息现仅触发一次通知,消除重复提醒。 多窗口焦点修复 修复长期存在的点击通知时,若同一程序有多窗口,无法准确聚焦目标窗口的问题。 仅主屏幕显示 在多显示器环境下,通知窗口现仅在主屏出现,避免在副屏弹出,保持视觉焦点一致。

无害

安装命令

点击复制
官方npx clawhub@latest install cc-sticky-notify
镜像加速npx clawhub@latest install cc-sticky-notify --registry https://cn.longxiaskill.com

技能文档

# cc-sticky-notify 一款固定在 Mac 右上角的便笺通知系统。关键 Claude Code 事件会以黄色浮动便笺形式出现在右上角,直到手动关闭才会消失。 ## 文件结构(完全自包含) `` ~/.claude/skills/cc-sticky-notify/ ├── SKILL.md ├── install.sh ← 一次性设置:chmod + settings.json 指引 └── scripts/ ├── notify.sh ← 主通知脚本(由 hooks 直接调用) ├── sticky-window.swift ← Swift 源码(首次安装时由 install.sh 编译) └── sticky-notify.app/ ← .app 包(首次使用时自动构建) └── Contents/ ├── Info.plist └── MacOS/ └── sticky-notify-app ` 双层通知机制: 1. display notification —— 无需权限,瞬间出现在右上角 2. Swift NSWindow(.floating 层级)—— 固定便笺,手动点 ✕ 关闭 Hook 覆盖(与 popo-notify 保持一致): | Hook | 触发条件 | 便笺内容 | |------|----------|----------| | Stop | 任务完成 | ✅ Task completed + 时间/项目/会话 | | Notification/permission_prompt | 需要权限审批 | 🔐 Permission approval required | | Notification/idle_prompt | 等待用户选择 | 💬 Awaiting your input | | PostToolUse/Bash(失败时) | 命令执行失败 | ❌ Command failed, exit code | --- ## 要求 - macOS 12 Monterey 或更高版本 - Xcode Command Line Tools —— 编译 Swift 浮动窗口、代码签名及 JSON 解析必需 `bash xcode-select --install ` 所有依赖(swiftccodesign)均来自 Xcode CLT。install.sh 会检查,若 CLT 缺失则提前退出并给出指引。 --- ## 安装 当用户请求安装时,按以下步骤操作: ### 步骤 1 —— 运行 install.sh `bash bash ~/.claude/skills/cc-sticky-notify/install.sh ` 该脚本执行: 1. 检查 Xcode CLT —— 若 xcode-select -p 失败则提前退出并提示。 2. chmod +x notify.sh —— 确保脚本可执行(git clone 可能丢失 +x 权限)。 3. 构建 .app 包 —— 编译 sticky-window.swift,生成 Info.plist + 权限文件,使用 codesign 签名。若包已存在则跳过。 4. 检查 hook 配置 —— 检查 ~/.claude/settings.json 是否已有 cc-sticky-notify 条目,若无则打印所需 hook 命令。 5. 冒烟测试 —— 通过 notify.sh 发送一条测试通知。 ### 步骤 2 —— 配置 settings.json hooks 读取 ~/.claude/settings.json,在 hooks 字段的以下四个位置各追加一条 sticky-notify 条目(若已存在则跳过)。 Stop —— 追加到 Stop[0].hooks`json { "type": "command", "command": "$HOME/.claude/skills/cc-sticky-notify/scripts/notify.sh" } ` Notification/permission_prompt —— 追加: `json { "type": "command", "command": "$HOME/.claude/skills/cc-sticky-notify/scripts/notify.sh '🔐 Claude Code Permission approval required, check terminal'" } ` Notification/idle_prompt —— 追加: `json { "type": "command", "command": "$HOME/.claude/skills/cc-sticky-notify/scripts/notify.sh '💬 Claude Code Awaiting your input, check terminal'" } ` PostToolUse/Bash —— 追加(仅在失败时触发): `json { "type": "command", "command": "bash -c 'INPUT=$(cat); STATUS=$(echo \"$INPUT\" | jq -r \".tool_response.exitCode // 0\"); [ \"$STATUS\" != \"0\" ] && $HOME/.claude/skills/cc-sticky-notify/scripts/notify.sh \"❌ Claude Code Command failed, exit code: $STATUS\" || true'" } ` ### 步骤 3 —— 验证 `bash # 测试参数模式(模拟 Notification hook) $HOME/.claude/skills/cc-sticky-notify/scripts/notify.sh '✅ Installation verified' # 测试 stdin 模式(模拟 Stop hook) echo '{"session_id":"test12345678"}' | $HOME/.claude/skills/cc-sticky-notify/scripts/notify.sh ` 若右上角出现黄色便笺及系统通知,即表示安装成功。 --- ## 配置 ### CC_STICKY_NOTIFY_CLOSE_TIMEOUT —— 自动关闭超时 默认情况下,便笺1 小时(3600 秒)后自动关闭。可通过环境变量覆盖: `bash export CC_STICKY_NOTIFY_CLOSE_TIMEOUT=300 # 5 分钟后自动关闭 ` - 单位:秒(支持小数,如 30.5) - 必须大于 0;否则回退到默认 3600 秒 - 设为较大值(如 86400)可让便笺几乎全天可见 如需永久生效,写入 shell 配置(~/.zshrc~/.bashrc): `bash echo 'export CC_STICKY_NOTIFY_CLOSE_TIMEOUT=300' >> ~/.zshrc ` --- ## 故障排除 连系统通知也未出现 - 确认 ~/.claude/settings.json 中的 hooks 配置正确 - 路径应为 $HOME/.claude/skills/cc-sticky-notify/scripts/notify.sh xcrun: error: invalid active developer path 编译时报错 - Xcode Command Line Tools 路径损坏(macOS 升级或重装 Xcode 后常见) - 修复:sudo xcode-select --reset - 若仍无效,重装:xcode-select --install - 若 swiftc 无法编译,浮动窗口会被禁用,但系统通知仍可用 Permission denied 提示在 notify.sh - 脚本缺少执行权限 —— 克隆/复制时未保留权限 - 修复:chmod +x ~/.claude/skills/cc-sticky-notify/scripts/notify.sh - 修复后重新运行 install.sh(最新版启动时会自动执行 chmod +x`)

数据来源ClawHub ↗ · 中文优化:龙虾技能库