OpenClaw/clawhub-security-signals huggingface dataset:
Skill: jhillin8/quit-alcohol (version 1.0.0)

--- name: quit-alcohol description: Track sobriety with alcohol-free streaks, craving management, and recovery milestones author: clawd-team version: 1.0.0 triggers: - "quit drinking" - "sober streak" - "alcohol free" - "urge to drink" - "sobriety check" --- # Quit Alcohol Your personal sobriety companion. Track streaks, manage urges, celebrate wins. ## What it does - **Sobriety tracking**: Records your alcohol-free streak in days, weeks, and months - **Urge management**: Logs cravings, identifies triggers, suggests coping strategies - **Milestone celebrations**: Marks 24 hours, 1 week, 30 days, 90 days, and 1-year achievements - **Progress dashboard**: Visual summaries of your recovery journey - **Support reminders**: Links to local resources and recovery communities ## Usage ### Start sobriety - "Start my sobriety journey today" - Begin tracking from now - "My quit date is [date]" - Set a historical start date - "Reset my sobriety tracker" - Start fresh if relapsed ### Handle cravings - "I'm having an urge" - Log a craving and get immediate coping suggestions - "What triggered this?" - Analyze patterns in your urges - "Distraction ideas" - Get activities to redirect the urge ### Check progress - "How long have I been sober?" - View your current streak - "Show my stats" - See days/weeks/months and patterns - "Next milestone?" - What achievement is coming up ### Money saved - "How much have I saved?" - Calculate money not spent on alcohol (based on your typical spend) - "Savings goal" - Set a target and track progress toward it ### Get support - "Find meetings near me" - Locate AA/SMART Recovery/other groups - "Support resources" - Get phone numbers and crisis lines - "Tell me why I quit" - Reaffirm your reasons for sobriety ## Milestones | Duration | Achievement | |----------|-------------| | 24 hours | First steps | | 1 week | Breaking the pattern | | 30 days | One month strong | | 90 days | Three months—transformation begins | | 1 year | One year sober—you're a fighter | ## Tips - **Be honest about triggers**: Log what sets off cravings (stress, certain places, people, emotions). Patterns reveal themselves. - **Plan your escape**: Before urges hit, pre-decide your response—call a friend, go for a walk, hit the gym. - **Celebrate small wins**: Each day sober is a win. Acknowledge it. Momentum compounds. - **Connect with others**: Share your journey with people who understand. Vulnerability builds resilience. - **All data stays local on your machine**: Your recovery is private. No cloud storage, no corporate tracking—complete confidentiality. --- *Note: For medical withdrawal concerns or if you're experiencing severe withdrawal symptoms, consult a healthcare provider. Alcohol withdrawal can be dangerous and may require professional medical support.*


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: doaspx/coros-skill (version 0.1.0)

--- name: "🏃 coros" description: | COROS 高驰跑步数据获取（跑步专项）： - 自动登录 COROS 账号（支持 Token/Cookie 缓存） - 获取 Dashboard（训练状态、负荷分析、最近运动） - 获取活动列表与活动详情（含分圈、天气、训练效果） - 获取训练日程与训练目标汇总 触发词示例： - "查看高驰跑步数据" - "我的跑步记录" - "高驰运动分析" - "今天跑步了吗" - "帮我看最近一次跑步详情" - "给我做个跑步复盘" --- # COROS 高驰跑步数据获取 Skill 基于 COROS API 的跑步数据读取与展示工具，面向日常训练复盘。 ## 使用范围 - 当前环境仅使用 `coros` 这个运动 Skill。 - 运动数据相关需求统一走本 Skill（高驰/COROS 跑步数据）。 ## 功能概览 ### 1. 智能登录 - 支持 `account + p1 + p2` 登录 - 支持 Token/Cookie 缓存，减少重复登录 - 自动保存和恢复登录状态 ### 2. Dashboard 数据 - 训练状态：短期负荷(ATI)、长期负荷(CTI)、负荷比 - 最近运动记录 - 心率数据统计 - 运动类型统计 - 本周训练汇总 ### 3. 活动列表 - 完整的跑步历史记录 - 显示：日期、名称、距离、时长、配速、心率、训练负荷(TL) - 支持分页查询 ### 4. 活动详情 - 通过 `activity/detail/query` 获取单次活动完整详情 - 展示模块：计圈数据、天气、概要数据、训练效果、运动感受 - 时间字段统一按 `HH:MM:SS` 展示，便于和网页详情页对齐 - 当前默认展示“活动列表第一页第一条”的详情（通常是最近一次） ### 5. 训练日程 - 训练日程查询 - 训练目标汇总 - 支持训练日程新增/更新/删除（`training/schedule/update`） - 内置安全模式：默认仅预览，确认后可开启真实写入 ## 运行方式 ### OpenClaw 对话触发 示例（可直接复制）： - `查看我的高驰跑步数据` - `我的跑步记录` - `高驰运动分析` - `最近跑步怎么样` - `今天跑步了吗` - `看最近一次跑步详情` - `帮我复盘今天这次跑步` ### 命令行运行 ```bash python3 main.py ``` ## 配置文件 在 `config.json` 中配置账号与登录上下文： ```json { "coros": { "account": "[REDACTED_SECRET]", "p1": "$2b$10$xxx", "p2": "$2b$10$xxx" }, "cookie": "_c_WBKFRo=xxx; _nb_ioWEgULi=", "demo_mode": false } ``` 发布到 clawhub.ai 时： - 使用 `.clawhubignore` 排除 `config.json`、`api.md`、`.claude/` - 将 `config.example.json` 作为公开示例配置 - 本地仍保留 `config.json` 以保证日常运行不受影响 ## API 端点 | 功能 | API | |------|-----| | 登录 | POST /account/login | | Dashboard详情 | GET /dashboard/detail/query | | Dashboard汇总 | GET /dashboard/query | | 周期纪录 | GET /dashboard/queryCycleRecord | | 活动列表 | GET /activity/query | | 活动详情 | POST /activity/detail/query | | 训练日程 | GET /training/schedule/query | | 日程汇总 | GET /training/schedule/querysum | | 估算训练 | POST /training/program/estimate | | 计算训练 | POST /training/program/calculate | | 新增/更新/删除日程 | POST /training/schedule/update | | 训练计划列表 | GET /training/program/list |


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: qqliaoxin/comfyui-api (version 1.1.0)

# ComfyUI Skill - 智能图像生成 自动检测 URL 设置，直接输入提示词即可生成图片。 ## 自动检测 用户输入包含 URL 时自动设置连接： ``` 设置连接 https://localhost:8188 set url: https://localhost:8188 ``` ## 直接使用 设置连接后，直接发送提示词： ``` 生成一只可爱的猫 a beautiful sunset over mountains ``` ## API 端点 ### REST API (HTTPS) | 方法 | 端点 | 说明 | |------|------|------| | POST | `{server}/api/prompt` | 提交工作流 | | GET | `{server}/history/{id}` | 获取结果 | | GET | `{server}/view?filename=xxx` | 获取图像 | ### WebSocket (WSS) - URL: `wss://{server}/ws` - 发送: `{"prompt": {...}, "client_id": "xxx"}` - 接收: `executing`, `executed`, `status` ## 命令 | 命令 | 说明 | |------|------| | `set_url <url>` | 手动设置服务器地址 | | `status` | 检查服务器状态 | | `generate <提示词>` | 生成图像 | ## 中文翻译 自动将中文提示词转换为英文： - "可爱的猫" → "masterpiece, best quality, high resolution, cute cat" - "美丽的日落" → "masterpiece, best quality, high resolution, beautiful sunset" ## 示例 ```bash # 设置连接 (多种方式) 设置连接 https://localhost:8188 set_url https://localhost:8188 # 直接生成 生成一只可爱的猫 a beautiful sunset over mountains # 查看状态 status ```


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (HIGH)
Skill: longfer/design-to-code-local (version 1.0.0)

--- name: design-to-code-local description: 本地版设计稿还原工具。Implements UI from design mockups (Figma, Sketch, or image) with pixel-accurate layout, responsive behavior, and design tokens. Use when 还原设计图, implementing designs, 切图, 设计稿转代码, or converting mockups to frontend code. --- # 还原设计图（Design to Code） 将设计稿（Figma/Sketch/图片）高保真还原为前端代码，保证布局、间距、字体、颜色与交互一致。 ## 触发场景 - 用户说「还原设计图」「按设计稿实现」「切图」「设计转代码」 - 提供 Figma/Sketch 链接、设计图截图或标注 - 需要实现某个页面/组件的 UI ## 执行流程 ### 1. 解析设计稿 - **标注**：尺寸、间距（padding/margin/gap）、字号与行高、颜色（含透明度）、圆角、阴影、边框 - **层级**：组件划分、嵌套关系、可复用模块 - **状态**：默认 / hover / focus / disabled / 加载 / 空态 / 错误 - **响应式**：断点、不同宽度下的布局变化（栅格、换行、隐藏） ### 2. 设计 token 对齐 - 颜色、字号、间距尽量映射到项目已有 CSS 变量或 Tailwind 配置 - 若无现成 token，在实现时用变量命名（如 `--color-primary`），便于后续统一 ### 3. 实现优先级 1. **布局**：Flex/Grid 先搭骨架，保证对齐与间距 2. **字体排版**：字体、字号、字重、行高、颜色 3. **视觉**：背景、边框、圆角、阴影 4. **交互状态**：hover/focus/disabled 等 5. **响应式**：断点与弹性布局 6. **动效**：若有设计说明的过渡/动画再补 ### 4. 还原度自检 - [ ] 关键尺寸与设计稿一致（可容忍 1–2px 差异） - [ ] 字体与颜色与设计一致 - [ ] 主要断点下布局合理、无错位 - [ ] 可交互元素有明确状态反馈 ## 输出约定 - 使用项目现有技术栈（如 Next.js、Tailwind、SCSS、组件库） - 组件化：可复用部分拆成组件并命名清晰 - 语义化 HTML + 合理 ARIA（按钮、链接、表单） - 必要时注明：某处与设计稿差异及原因（如兼容性、可访问性） ## 常用对照 | 设计稿 | 实现方式 | |--------|----------| | 8px 栅格 | 间距用 8 的倍数（8/16/24/32） | | 字体层级 | 对应 heading/body/caption 等语义类或 design token | | 模糊/毛玻璃 | backdrop-filter + 半透明背景 | | 多行截断 | line-clamp 或 -webkit-line-clamp | | 安全区域 | padding 配合 env(safe-area-inset-*) |


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: ivangdavila/server (version 1.0.0)

--- name: Server description: Configure, deploy, and troubleshoot web servers, application servers, and containerized services. --- ## Scope This skill covers the **software layer** — what runs inside a machine. For infrastructure (provisioning VMs, SSH hardening, firewalls, backups), use the `vps` skill. ## When to Use - Configuring nginx, Caddy, or Apache - Deploying Node.js, Python, Go, or other apps - Docker and Docker Compose setups - SSL/TLS certificates with Let's Encrypt - Reverse proxy and load balancing - Process management (pm2, systemd services) - Troubleshooting port conflicts, CORS, connection errors - Self-hosting (Plex, Nextcloud, game servers) - Local development servers (Vite, webpack-dev-server) ## Common Pitfalls - **Port already in use** — Check with `lsof -i :PORT` or `ss -tlnp | grep PORT`, kill stale processes - **CORS in development** — Proxy through your dev server or configure backend headers, don't disable in production - **SSL certificate issues** — Certbot needs port 80/443 open, use `--standalone` or `--webroot` mode appropriately - **nginx config not loading** — Always run `nginx -t` before `systemctl reload nginx` - **Docker container can't reach host** — Use `host.docker.internal` (Docker Desktop) or `172.17.0.1` (Linux) - **Process dies after SSH disconnect** — Use systemd, pm2, or run inside tmux/screen - **Wrong permissions on mounted volumes** — Match container user UID with host file ownership ## Patterns by Use Case | Use Case | Recommended Stack | |----------|-------------------| | Static site | Caddy (auto-SSL, zero config) | | Node.js app | PM2 + nginx reverse proxy | | Python (Django/FastAPI) | Gunicorn + nginx | | Multiple services | Docker Compose + Traefik | | Game server | Dedicated container + port mapping | For framework-specific configs, see `configs.md`. For Docker Compose patterns, see `docker.md`. ## Debugging Checklist 1. **Is the process running?** `systemctl status` or `docker ps` 2. **Is it listening?** `ss -tlnp | grep PORT` 3. **Can you reach it locally?** `curl localhost:PORT` 4. **Firewall blocking?** Check `ufw status` or cloud security groups 5. **Reverse proxy misconfigured?** Check nginx logs: `/var/log/nginx/error.log` 6. **DNS pointing correctly?** `dig domain.com` or `nslookup`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: iiroak/ibuscl-cli (version 1.0.0)

# iBus CLI — SKILL Comando de terminal para consultar paraderos del transporte público chileno en tiempo real. ## Requisitos - Python 3.9+ - Repo: https://github.com/iiroak/iBus.CL-API ```bash bash <(curl -sSL https://raw.githubusercontent.com/iiroak/iBus.CL-API/main/install.sh) ``` O manual: `pip install .` dentro del repositorio. ## Comandos ### Consultar un paradero (todos los servicios) ```bash ibus PA1 ``` ### Filtrar por servicio específico ```bash ibus PH123 --servicio 201 ibus PH123 -s 201 ``` ### Salida JSON cruda (para pipelines y parsing) ```bash ibus PA1 --raw ibus PH123 -s 201 --raw ``` ### Alternativa sin instalar globalmente ```bash python -m ibus PA1 python -m ibus PH123 -s 201 --raw ``` ## Formato de salida legible ``` Paradero : PA1 Nombre : PARADA 6 / (M) QUINTA NORMAL Hora : 14:30 ------------------------------------------------------------ 507 │ GCBD-65 │ En menos de 2 min │ 502m │ TBFX-11 │ Entre 12 Y 16 min │ 3521m B28 → No hay buses que se dirijan al paradero ------------------------------------------------------------ ``` ## Formato JSON (`--raw`) ```json { "paradero": { "codigo": "PA1", "nombre": "PARADA 6 / (M) QUINTA NORMAL", "hora_consulta": "14:30" }, "servicios": [ { "servicio": "507", "buses": [ {"patente": "GCBD-65", "tiempo_llegada": "En menos de 2 min", "distancia": 502}, {"patente": "TBFX-11", "tiempo_llegada": "Entre 12 Y 16 min", "distancia": 3521} ], "mensaje": null }, { "servicio": "B28", "buses": [], "mensaje": "No hay buses que se dirijan al paradero" } ] } ``` ## Campos de respuesta JSON | Campo | Tipo | Descripción | |-------|------|-------------| | `paradero.codigo` | string | Código del paradero | | `paradero.nombre` | string | Ubicación/nombre del paradero | | `paradero.hora_consulta` | string | Hora de la consulta (HH:MM) | | `servicios[].servicio` | string | Código del recorrido | | `servicios[].buses[].patente` | string | Patente del bus | | `servicios[].buses[].tiempo_llegada` | string | Estimación de llegada | | `servicios[].buses[].distancia` | integer | Distancia en metros (`0` = llegando) | | `servicios[].mensaje` | string\|null | Mensaje cuando no hay buses | ## Valores de tiempo_llegada - `"Llegando"` — en el paradero - `"En menos de 2 min"` — muy cerca - `"Entre 6 Y 10 min"` — rango estimado - `"Mas de 26 min"` — lejos ## Códigos de salida | Código | Significado | |--------|-------------| | 0 | Consulta exitosa | | 1 | Error (paradero inválido, sin conexión, timeout) | ## Paradero inválido Cuando el paradero no existe, la respuesta incluye: ```json {"servicio": "Indisponible", "buses": [], "mensaje": "Paradero Invalido"} ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: ivankoriako/deepsync (version 0.1.0)

--- name: deepsync description: Use this skill when the user wants to find compatible people — romantic partners, business partners, or friends — based on deep psychological profiling. Triggers on phrases like "find my match", "find me a partner", "who am I compatible with", "DeepSync". version: 0.1.0 author: ivankoriako license: MIT --- # DeepSync 🔗 **AI-powered human compatibility matching based on psychological depth — not interests.** DeepSync analyzes who you really are — how you handle conflict, make decisions, spend energy — and finds people who complement you. - ❤️ Romantic partner - 💼 Business co-founder - 🤝 Friend or like-minded person - 🔍 Any custom search ## Status 🚧 **Coming soon.** Profile builder and matching engine in development. ## Installation ```bash clawhub install deepsync ``` ## Usage Just tell your agent: - "Find me a business partner" - "DeepSync — who am I compatible with?" Built on OpenClaw. Your data stays local. Always.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: sky-lv/skylv-agent-discovery (version 1.0.0)

--- name: "agent-discovery" slug: skylv-agent-discovery version: 1.0.0 description: "Agent发现探索助手。搜索、评估、集成公开Agent。使用场景：(1) 搜索可用Agent，(2) 评估Agent能力，(3) 集成方案设计，(4) 成本效益分析。" author: SKY-lv license: MIT-0 tags: [agent, openclaw, agent] --- # Agent Discovery — Agent发现助手 ## 功能说明 帮助发现和评估可用的Agent系统。 ## 使用方法 ### 1. 能力搜索 ``` 用户: 找一下有哪些免费的代码审查Agent？ ``` ### 2. 评估对比 ``` 用户: 比较一下Claude和GPT的Agent能力 ``` ### 3. 集成方案 ``` 用户: 如何把这个Agent集成到我们的系统？ ``` ### 4. 成本分析 ``` 用户: 使用这个Agent的成本是多少？ ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: wangxinyu123/airline-info-to-website (version 0.1.1)

--- name: airline-info-to-website description: 抓取航空公司机型座位图数据，自动分类整理图片，生成网站展示航司信息。支持 seatmaps.com 数据源，自动处理机型详情、舱位配置、座椅图片和机上设施信息。 --- # Airline Info to Website 系统化收集航空公司机型资料，自动整理归类，为网站展示提供标准化数据结构。 ## 技能包结构 | 文件 / 目录 | 说明 | |-------------|------| | `SKILL.md` | 主入口：权限配置、阶段总览、触发场景 | | `references/reference.md` | 路径与依赖、输出目录规范、各 Phase 命令、完成检查 | | `references/examples.md` | 典型用法与命令示例 | | `references/template.md` | 机型详情文档模板 | | `scripts/` | 可执行脚本（抓取、分类、去重） | ## 路径约定 - **技能根目录**：本文件所在目录（含 `scripts/`） - Python 依赖：`pip install requests beautifulsoup4` - 输出目录：默认为 `FlightData/`，可自定义 ## 权限配置 本 skill 默认全程按「危险 / 免逐条确认」执行。启动方式： ```bash claude --dangerously-skip-permissions --permission-mode bypassPermissions ``` 或配置 `~/.claude/settings.json`： ```json { "permissions": { "allow": [ "Bash", "Read(~/Desktop/**)", "Read(~/skills/**)", "Edit", "Write", "MultiEdit" ] } } ``` ## 执行阶段 | 阶段 | 名称 | 命令 | |------|------|------| | 1 | 确认范围 | 明确航司名称、机型范围、输出目录 | | 2 | 获取机型列表 | 访问 seatmaps.com 航司页面 | | 3 | 抓取机型数据 | `python scripts/scrape_seatmaps.py --airline "航司名" --output FlightData/` | | 4 | 原始归档 | 确认数据已保存到 `images/0-原始数据/` | | 5 | 语义分类 | `node scripts/classify-images.js --base-dir "FlightData/航司目录"` | | 6 | 去重 | `node scripts/dedup-images.js --base-dir "FlightData/航司目录"` | | 7 | 多版本处理 | 检查机型是否有多个类型版本 | | 8 | 文档生成 | 生成 `机型详情.md`、`README.md` | | 9 | 清理 | 删除临时文件 | ## 何时使用 以下场景优先按本 skill 执行： - 抓取某航司的全部或部分机型数据 - 获取机型的 seatmap、舱位、座椅图片 - 建立航司机型数据库用于网站展示 - 整理飞机图片并分类归档 ## 快速开始 ```bash # 1. 抓取数据 python scripts/scrape_seatmaps.py --airline "新加坡航空 Singapore Airlines SQ" --output FlightData/ # 2. 语义分类 node scripts/classify-images.js --base-dir "FlightData/新加坡航空 Singapore Airlines SQ" # 3. 去重 node scripts/dedup-images.js --base-dir "FlightData/新加坡航空 Singapore Airlines SQ" ``` 详细说明见 [references/reference.md](references/reference.md)，示例见 [references/examples.md](references/examples.md)。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: codekungfu/beauty-salons (version 0.1.0)

--- name: "Nearby Beauty Salons" description: "Find nearby beauty salons. Invoke when user asks for beauty services near me." --- # Nearby Beauty Salons 用途 - 提供用户当前位置附近的 Beauty Salons 列表 - 统一返回字段与查询行为，便于前端/接口复用 - 支持常见筛选（评分、价格等级、是否营业、关键词等） 触发条件 - 用户询问“Beauty Salons 附近 / beauty salon near me / nearby manicure / skincare” - 用户提供定位/城市并希望“找/推荐/看看附近的 Beauty Salons” 输入参数 - location: 经纬度 { lat, lng }，必填 - radius_meters: 查询半径，默认 3000 - limit: 返回数量上限，默认 20，最大 50 - filters: 可选筛选（open_now、min_rating、price_level、keywords 等） 响应字段 - 统一参见 STANDARD_RESPONSE.md - 本技能 category 固定为 "beauty-salons" 错误码 - INVALID_LOCATION: 经纬度不合法 - RADIUS_TOO_LARGE: 超过最大查询半径 - PROVIDER_UNAVAILABLE: 数据源不可用 - RATE_LIMITED: 触发速率限制 示例 - 输入: { location: { lat: 30.123, lng: 120.456 }, radius_meters: 2500, limit: 10, filters: { open_now: true } } - 输出: 标准 POI 列表（见 STANDARD_RESPONSE.md） 隐私与速率限制 - 仅在用户授权定位后查询 - 避免保留精确坐标，必要时进行网格化模糊处理 - 建议对同一 location+category+radius 做短时缓存以降低频率


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: jasonzhang2015/feishu-bot-send-image (version 1.0.0)

--- name: feishu-send-image description: | Send images directly in Feishu chat as native image messages (not file attachments). Use when: need to send a generated image, chart, screenshot, or any local image file to a Feishu user or group chat. Triggers: "发图", "send image", "发送图片", sending charts/graphs/screenshots via Feishu. Note: OpenClaw's built-in message tool (filePath/media/buffer) does NOT work for Feishu image sending — it only produces file attachments. This skill bypasses that limitation by calling Feishu Bot API directly. --- # Feishu Send Image Send local image files as native Feishu image messages via the Feishu Bot API. ## Why This Skill Exists OpenClaw's `message` tool with `filePath`, `media`, or `buffer` parameters only sends file attachments in Feishu, not inline images. This skill calls the Feishu API directly to send proper image messages. ## Quick Usage Run the script: ```bash bash scripts/feishu_send_image.sh <image_path> <receive_id> <app_id> <app_secret> [receive_id_type] ``` ### Arguments | Arg | Description | |-----|-------------| | `image_path` | Local path to image (png/jpg/gif/webp) | | `receive_id` | Feishu `open_id` (user) or `chat_id` (group) | | `app_id` | Feishu app ID from `~/.openclaw/openclaw.json` → `feishu.accounts.default.appId` | | `app_secret` | Feishu app secret from `~/.openclaw/openclaw.json` → `feishu.accounts.default.appSecret` | | `receive_id_type` | `open_id` (default) or `chat_id` | ### Example ```bash bash scripts/feishu_send_image.sh /tmp/chart.png \ ou_38470740452f6083ce189b7ddec722f8 \ cli_a92c368412f9dcb1 \ 7uM7aLqeqYqm0Fsy0IP5QhOyTBSwxlfT ``` ## Getting Credentials Read `~/.openclaw/openclaw.json` and extract: - `channels.feishu.accounts.default.appId` - `channels.feishu.accounts.default.appSecret` The receiver's `open_id` comes from inbound message metadata (`sender_id`). ## How It Works 1. **Get token** — `POST /auth/v3/tenant_access_token/internal` with appId/appSecret 2. **Upload image** — `POST /im/v1/images` with `image_type=message`, returns `image_key` 3. **Send message** — `POST /im/v1/messages` with `msg_type=image` and the `image_key` ## Output On success: `OK: image_key=<key> message_id=<id>` On failure: prints error and exits with code 1.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: mneves75/apple-mail-search (version 1.0.0)

--- name: apple-mail-search description: Fast Apple Mail search via SQLite on macOS. Search emails by subject, sender, date, attachments - results in ~50ms vs 8+ minutes with AppleScript. Use when asked to find, search, or list emails. homepage: https://github.com/steipete/clawdbot metadata: {"clawdbot":{"emoji":"📬","os":["darwin"],"requires":{"bins":["sqlite3"]}}} --- # Apple Mail Search Search Apple Mail.app emails instantly via SQLite. ~50ms vs 8+ minutes with AppleScript. ## Installation ```bash # Copy mail-search to your PATH cp mail-search /usr/local/bin/ chmod +x /usr/local/bin/mail-search ``` ## Usage ```bash mail-search subject "invoice" # Search subjects mail-search sender "@amazon.com" # Search by sender email mail-search from-name "John" # Search by sender name mail-search to "[REDACTED_SECRET]" # Search sent mail mail-search unread # List unread emails mail-search attachments # List emails with attachments mail-search attachment-type pdf # Find PDFs mail-search recent 7 # Last 7 days mail-search date-range 2025-01-01 2025-01-31 mail-search open 12345 # Open email by ID mail-search stats # Database statistics ``` ## Options ``` -n, --limit N Max results (default: 20) -j, --json Output as JSON -c, --csv Output as CSV -q, --quiet No headers --db PATH Override database path ``` ## Examples ```bash # Find bank statements from last month mail-search subject "statement" -n 50 # Get unread emails as JSON for processing mail-search unread --json | jq '.[] | .subject' # Find all PDFs from a specific sender mail-search sender "@bankofamerica.com" -n 100 | grep -i statement # Export recent emails to CSV mail-search recent 30 --csv > recent_emails.csv ``` ## Why This Exists | Method | Time for 130k emails | |--------|---------------------| | AppleScript iteration | 8+ minutes | | Spotlight/mdfind | **Broken since Big Sur** | | SQLite (this tool) | ~50ms | Apple removed the emlx Spotlight importer in macOS Big Sur. This tool queries the `Envelope Index` SQLite database directly. ## Technical Details **Database:** `~/Library/Mail/V{9,10,11}/MailData/Envelope Index` **Key tables:** - `messages` - Email metadata (dates, flags, FKs) - `subjects` - Subject lines - `addresses` - Email addresses and display names - `recipients` - TO/CC mappings - `attachments` - Attachment filenames **Limitations:** - Read-only (cannot compose/send) - Metadata only (bodies in .emlx files) - Mail.app only (not Outlook, etc.) ## Advanced: Raw SQL For custom queries, use sqlite3 directly: ```bash sqlite3 -header -column ~/Library/Mail/V10/MailData/Envelope\ Index " SELECT m.ROWID, s.subject, a.address FROM messages m JOIN subjects s ON m.subject = s.ROWID LEFT JOIN addresses a ON m.sender = a.ROWID WHERE s.subject LIKE '%your query%' ORDER BY m.date_sent DESC LIMIT 20; " ``` ## License MIT


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)