OpenClaw/clawhub-security-signals huggingface dataset:
Skill: be1human/clawphone-wechat-control (version 1.0.0)

--- name: clawphone-wechat-control description: 处理微信会话列表、进入聊天、发送消息、处理微信内弹窗与聊天页失败排查。适用于用户要求查看微信消息、回复联系人、转发、处理聊天输入框或发送失败时。执行时必须先确认当前在微信的哪个页面，再按聊天场景一步一验。 --- # ClawPhone WeChat Control ## 使用时机 - 用户要求读取或回复微信消息。 - 需要进入某个联系人聊天页。 - 聊天发送、转发、粘贴、长按菜单等操作失败。 ## 页面判断 先区分当前处于哪一类页面： - 桌面/非微信 - 微信会话列表 - 某个聊天页 - 联系人资料页 - 微信弹窗或菜单 不同页面的操作完全不同。不要在未确认页面时直接输入或发送。 ## 回复消息标准流程 1. 确认已进入目标聊天页。 2. 截图确认底部真实输入框位置。 3. 只执行“点输入框”这一步，并再次确认键盘或光标已出现。 4. 先尝试 `type_text(...)`。 5. 若 `type_text(...)` 失败或文本未进入输入框，立即切换到“剪贴板 + 长按输入框 + 点`粘贴`”兜底路径。 6. 再次确认文本已经出现在输入框内。 7. 截图确认绿色`发送`按钮真实可见。 8. 点击当前截图里的发送按钮。 9. 再次截图，确认新的右侧消息气泡已经出现。 ## 进入微信 1. 可先尝试 `launch_app("com.tencent.mm")`。 2. 立即检查前台应用是否真的变成 `com.tencent.mm`。 3. 若仍停留在桌面或其他 App，不要重复盲开；先读取当前桌面状态。 4. 桌面能识别到 `微信` 图标时，优先 `click_by_text("微信")` 进入。 5. 进入后再次确认当前页面是会话列表、聊天页还是弹窗页。 ## 关键约束 - 不要在未聚焦输入框时直接 `type_text(...)`。 - 不要把某次截图里的输入框或发送按钮坐标复用到下一次。 - 不要把 `press_enter` 当成默认发送方式；只有可见发送按钮不可用时才可兜底尝试。 - 如果误入`朋友资料`页，先返回聊天页，再重新开始发送流程。 ## 会话定位 - 会话列表优先用联系人文字进入。 - 若点击联系人失败，先截图确认是否有遮挡层、导入提示、搜索页或资料页。 - 若 `click_by_text` 无法命中会话项，但截图已能明确识别目标会话所在行，可基于当前截图临时点击该行；点完立即复核是否进入聊天页。 - 同名联系人或列表状态不明时，先截图确认，不要盲点。 ## 输入兜底 - 输入框已聚焦，不代表 `type_text(...)` 一定能命中微信输入框。 - 若 `type_text(...)` 返回失败，优先执行： 1. `set_clipboard(...)` 2. 长按当前截图里的输入框空白区域 3. 截图确认微信自定义菜单出现 4. 基于当前截图临时点击 `粘贴` - 粘贴后必须再次确认文本已进入输入框，再进行发送。 ## 菜单与弹窗 - 微信自定义菜单通常不能靠 `click_by_text` 命中。 - 长按后先截图，再基于当前弹窗临时点击。 - 一步菜单一张图，不要连续盲点。 ## 失败复盘模板 失败时按这几个问题复盘： 1. 当时在哪个页面。 2. 失败发生在“进聊天 / 聚焦输入框 / 输入文字 / 点击发送 / 发送验证”的哪一步。 3. 当时依据的是当前截图，还是误用了旧坐标/旧假设。 4. 是否做了操作后的二次确认。 5. 是否及时切换到了 `launch_app`、`click_by_text`、`type_text` 的兜底分支，而不是在同一路径上重复试错。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: yequanzheng/fdksafs3 (version 1.0.3)

--- name: githubdescription: "Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries." --- # GitHub Skill Use the `gh` CLI to interact with GitHub. Always specify `--repo owner/repo` when not in a git directory, or use URLs directly. ## Pull Requests Check CI status on a PR: ```bash gh pr checks 55 --repo owner/repo ``` List recent workflow runs: ```bash gh run list --repo owner/repo --limit 10 ``` View a run and see which steps failed: ```bash gh run view <run-id> --repo owner/repo ``` View logs for failed steps only: ```bash gh run view <run-id> --repo owner/repo --log-failed ``` ## API for Advanced Queries The `gh api` command is useful for accessing data not available through other subcommands. Get PR with specific fields: ```bash gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login' ``` ## JSON Output Most commands support `--json` for structured output. You can use `--jq` to filter: ```bash gh issue list --repo owner/repo --json number,title --jq '.[] | "\(.number): \(.title)"' ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector:  ()
Skill: jacksu/cognitive-bias-advisor (version 1.0.0)

--- name: cognitive-bias-advisor description: 认知偏差决策顾问。当用户面临重要决策、需要判断决策质量、或提到"决策""决定""选择""认知偏差""cognitive bias"等关键词时触发。通过九问框架帮助用户识别认知偏差，做出更理性的决策。 --- # 认知偏差决策顾问 ## 概述 本技能帮助用户在大胆决策前进行认知偏差自检。当用户提出待决策问题时，按顺序引导其回答九道基于经典认知偏差的诊断问题，并在最后给出综合评估。 ## 触发条件 当用户说出以下任一内容时，激活本技能： - 提到"决策""决定""选择""我要不要…" - 提到"认知偏差""决策质量""判断偏差" - 明确说"帮我决策""帮我判断""九问" ## 工作流程 ### 第一步：收集决策问题 向用户确认待决策问题，要求包含： - 决策背景（发生了什么、为什么现在需要决定） - 当前倾向的选项（如果已有倾向） - 决策的时间压力（是否紧急） 示例Prompt： > 请描述你正在考虑的决策问题，包括背景、你目前的倾向，以及这个决定有多紧急。 --- ### 第二步：逐题引导（九问） **引导规则：** - 一次只问一个问题，等用户回答后再问下一个 - 对用户的回答进行简短追问，帮助其深入思考 - 如果用户回答"不知道"或敷衍，用追问帮助其具体化 - 保持温和但严谨的语气，不评判，只追问 --- #### 问题 1 — 确认偏误（Confirmation Bias） **问：** 我是不是只在搜支持自己的证据？ **引导说明：** 请回顾你收集的信息来源。你是否主动寻找过反对这个决定的理由？还是主要在寻找"证明我是对的"的证据？ **追问方向：** - 你看过哪些反对这个观点的资料？ - 如果有人持相反意见，你觉得他们的理由是什么？ --- #### 问题 2 — 认知失调（Cognitive Dissonance） **问：** 如果这个决定一年后失败，最可能因为什么？ **引导说明：** 试着做一次"失败预演"。假设现在是2027年，这个决定彻底搞砸了。回头看，原因最可能是什么？ **追问方向：** - 这个失败场景出现的概率有多大？ - 你现在忽略的最大风险是什么？ --- #### 问题 3 — 自利性偏误（Self-Serving Bias） **问：** 如果是别人遇到这件事，我会怎么建议？ **引导说明：** 把你自己从情境中抽离出来。如果是你最好的朋友面临完全一样的处境，你会给他什么建议？这两者的差异在哪里？ **追问方向：** - 你对朋友的建议和对自己的决定有什么不同？ - 这种差异说明了什么关于你自身动机的事情？ --- #### 问题 4 — 幸存者偏误（Survivorship Bias） **问：** 我是不是只看到了成功案例？ **引导说明：** 你用来做参考的案例，是不是大多是"成功了"的故事？那些做了同样决定但失败的人，他们的故事你去了解过吗？ **追问方向：** - 你能否举出一个做了相同决定但失败的例子？ - 成功者的建议中，有哪些可能是幸存者偏差导致的误导？ --- #### 问题 5 — 聚焦错觉（Focusing Illusion） **问：** 我是不是把人生过度押注在一个变量上？ **引导说明：** 这个问题/决定，真的像你现在想的那么重要吗？你的幸福感或人生成就，有多少比例真的由这个单一变量决定？ **追问方向：** - 如果这个选项完全不可得，你的生活会继续吗？ - 有哪些同样重要但你目前没在考虑的因素？ --- #### 问题 6 — 禀赋效应（Endowment Effect） **问：** 如果今天没拥有它，我还会想得到它吗？ **引导说明：** 这个"想要"，是因为它真的有价值，还是只是因为你已经得到了（或已经投入了很多）？如果从头开始、今天第一次听说它，你还会追求它吗？ **追问方向：** - 你的"想要"有多少比例来自沉没成本？ - 如果可以一键重置、从头选择，你会选同样的选项吗？ --- #### 问题 7 — 基本归因错误（Fundamental Attribution Error） **问：** 我是不是把别人的错误过度理解成恶意？ **引导说明：** 如果这个决策涉及对他人的判断（例如：某人犯错是因为能力差 vs. 因为环境制约），你是否在用最坏的动机来解释别人的行为？ **追问方向：** - 如果同样的事情发生在你身上，你会怎么解释？ - 环境/制度/信息不足是否可能是更合理的解释？ --- #### 问题 8 — 从众效应（Bandwagon Effect） **问：** 如果没人影响我，我还会这样选择吗？ **引导说明：** 你现在的选择，有多少是真的出于你自己的判断，有多少是因为"大家都在这样做"？如果把所有社交媒体、朋友意见、行业风向全部屏蔽，你还会做同样的决定吗？ **追问方向：** - 这个选择在你的内心排序里排第几？ - 如果没有观众，你会怎么做？ --- #### 问题 9 — 长期主义（Long-termism） **问：** 这个选择，五年后我会感谢今天的自己吗？ **引导说明：** 把时间拉到五年后。那个时候的你，回头看今天这个决定，会觉得这是一件值得感谢的事，还是一个短期诱惑？ **追问方向：** - 这个决定带来的好处，有多少是短期的？ - 五年后的你，最希望今天的你做对了什么？ --- ### 第三步：综合评估 九问完成后，向用户输出一份**决策质量评估报告**，包含： 1. **偏差风险摘要** — 哪些问题回答中发现了明显的认知偏差信号 2. **建议行动** — 基于偏差分析，给出1-3条具体建议（如：延迟决定、补充反面信息、征求第三方意见） 3. **决策评分（可选）** — 让用户自己给这个决定的"理性程度"打分（1-10分） **评估报告格式示例：** ``` ## 决策质量评估报告 **决策问题：** [用户原问题] **偏差信号：** - ⚠️ 确认偏误：未发现主动搜集反面信息的迹象 - ⚠️ 禀赋效应：沉没成本可能影响判断 - ✅ 长期主义：五年视角清晰，此项较强 **建议行动：** 1. 主动寻找一个反对这个决定的高质量论据，再重新评估 2. 将决定延迟48小时，观察冲动是否消退 3. 找一个对此事完全无关的朋友，听取第三方意见 **理性程度自评：** _（请用户自行打分）_ ``` ## 注意事项 - 本技能的目的是**辅助思考**，不是代替用户做决定 - 如果用户九问中有任一道题回答"完全没想过"，建议其认真思考后再继续 - 对于时间极度紧迫的决策（<2小时），可跳过部分问题，聚焦最具风险的偏差类型 - 保持中立，不替用户做价值评判


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: khaney64/quodd (version 0.1.2)

--- name: quodd description: Fetch real-time stock quotes via Quodd API. Get current prices, daily high/low, and after-hours data for US equities. Use when the user asks for stock prices, quotes, market data, or ticker information. metadata: {"openclaw":{"emoji":"📈","requires":{"bins":["python3"],"env":["QUODD_USERNAME","QUODD_PASSWORD"]}}} --- # Quodd Stock Quotes Fetch real-time stock quotes for US equities via the Quodd API. For more information, visit: https://www.quodd.com/stock-and-etf-data ## Quick Start ```bash # Get a quote for Apple python3 /home/claw/.openclaw/workspace/skills/quodd/scripts/quote.py AAPL # Get quotes for multiple tickers python3 /home/claw/.openclaw/workspace/skills/quodd/scripts/quote.py AAPL MSFT META ``` ## Prerequisites Requires `QUODD_USERNAME` and `QUODD_PASSWORD` environment variables to be set. ## Usage ### Single Ticker ```bash python3 /home/claw/.openclaw/workspace/skills/quodd/scripts/quote.py AAPL ``` ### Multiple Tickers ```bash python3 /home/claw/.openclaw/workspace/skills/quodd/scripts/quote.py AAPL MSFT META GOOGL ``` ### JSON Output ```bash python3 /home/claw/.openclaw/workspace/skills/quodd/scripts/quote.py AAPL --format json ``` ### Force Token Refresh ```bash python3 /home/claw/.openclaw/workspace/skills/quodd/scripts/quote.py AAPL --no-cache ``` ## Output Format ### Text (Default) ``` Quodd Stock Quotes Symbol Date Time High Low Close AH Time AH Price ------------------------------------------------------------------------------- AAPL 01/29/26 14:30 185.50 180.25 182.63 17:45:30 182.80 ``` ### JSON ```json { "quotes": [ { "symbol": "AAPL", "date": "01/29/26", "time": "14:30", "high": 185.50, "low": 180.25, "close": 182.63, "after_hours_time": "17:45:30", "after_hours_price": 182.80 } ] } ``` ## Output Fields - **Symbol** - Stock ticker symbol - **Date** - Quote date - **Time** - Quote time - **High** - Day high price - **Low** - Day low price - **Close** - Last traded price - **AH Time** - After hours trade time - **AH Price** - After hours price ## Notes - Authentication tokens are cached at `~/.openclaw/credentials/quodd-token.json` for 20 hours - Use `--no-cache` if you encounter authentication errors after credential changes


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: calvin-dean/douyin-send-message (version 2.2.0)

--- name: douyin-send-message description: 在抖音网页版发送私信消息。当用户想发送抖音私信、提醒续火花、或者提到"抖音发消息"、"发抖音私信"、"douyin send message"时触发。支持独立使用或配合人物关系管理技能使用。 --- # 抖音私信发送 ## 两种使用模式 ### 模式一：独立使用（手动提供抖音昵称） 为用户直接提供抖音昵称时，直接使用： - "给 xxx 发消息" → xxx 作为搜索关键词 - "给 用户A 发消息" → 直接搜索 "用户A" ### 模式二：配合人物关系管理使用 **推荐流程：** 1. 先调用 `person-relation-manager` 查询真实抖音昵称 2. 拿到昵称后再执行发送 **自动流程：** ``` 用户："给昵称B发抖音私信" ↓ 我查询记忆（person-relation-manager）：昵称B → 抖音昵称C ↓ 调用本技能发送，关键词：抖音昵称C ``` --- ## 参数 调用时传入两个参数： - `联系人`：昵称、抖音显示名、或通过人物管理查询到的昵称 - `消息内容`：要发送的具体内容（字符串，支持 emoji） --- ## 执行步骤 ### Step 1: 打开私信列表页面 ```javascript browser(action="open", url="https://www.douyin.com/chat", profile="openclaw") browser(action="act", kind="wait", timeMs=800, targetId="<pageId>") ``` ### Step 2: 用关键词查找并点击联系人 ```javascript browser(action="act", kind="evaluate", fn="() => { var name = 'CONTACT_KEYWORD'; var items = document.querySelectorAll('[class*=\"conversationConversationItemwrapper\"]'); for(var item of items) { if(item.innerText && item.innerText.includes(name)) { item.scrollIntoView({block: 'center', behavior: 'instant'}); var rect = item.getBoundingClientRect(); var opts = {view: window, bubbles: true, cancelable: true, clientX: rect.left + rect.width/2, clientY: rect.top + rect.height/2, buttons: 1}; item.dispatchEvent(new MouseEvent('mousedown', opts)); item.dispatchEvent(new MouseEvent('mouseup', opts)); item.dispatchEvent(new MouseEvent('click', opts)); return 'OK'; } } return 'Not found'; }", targetId="<pageId>") browser(action="act", kind="wait", timeMs=500, targetId="<pageId>") ``` ### Step 3: 输入并发送 ```javascript browser(action="act", kind="evaluate", fn="() => { var msg = 'MESSAGE_CONTENT'; var inputs = document.querySelectorAll('[contenteditable=\"true\"]'); for(var input of inputs) { var rect = input.getBoundingClientRect(); if(rect.width > 0 && rect.height > 0) { input.focus(); for(var i=0; i<msg.length; i++) { document.execCommand('insertText', false, msg[i]); } return 'OK'; } } return 'No input'; }", targetId="<pageId>") browser(action="act", kind="press", key="Enter", targetId="<pageId>") ``` ### Step 4: 验证发送成功 ```javascript browser(action="act", kind="evaluate", fn="() => { var msg = 'MESSAGE_CONTENT'; return document.body.innerText.includes(msg) ? 'OK' : 'FAIL'; }", targetId="<pageId>") ``` ### Step 5: 关闭页面 ```javascript browser(action="close", targetId="<pageId>") ``` ## 关键 DOM（2026-04-07 验证） - 私信列表页面：`https://www.douyin.com/chat` - 列表项容器：`div[class*=[REDACTED_SECRET]]` - 聊天输入框：`[contenteditable="true"]` - **必须用 `document.execCommand('insertText')` 逐字输入** - **必须用完整鼠标事件：`mousedown` → `mouseup` → `click`** - **必须先 `scrollIntoView` 滚动到可视区域再点击** ## 性能 - 目标总耗时：**5-10 秒** ## 配合使用示例 **推荐：先查人物关系，再发送** ``` 我收到："给昵称B发抖音" 1. 调用 memory_recall(query="昵称B 抖音") 2. 找到：昵称B → 抖音昵称C 3. 调用本技能，关键词：抖音昵称C ``` **独立使用：直接发送** ``` 我收到："给 抖音昵称C 发消息" 直接调用本技能，关键词：抖音昵称C ``` ## 注意事项 - 发送完毕后**必须关闭页面**释放资源 - 关键词会在私信列表中搜索匹配项 - 建议先通过 `person-relation-manager` 获取准确的抖音昵称


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: bigrobinson/ros2-introspection (version 1.0.1)

--- name: ros2-introspection description: Execute core ROS 2 introspection commands to query the ROS graph (topics, nodes, services, actions, parameters). STRICTLY read-only. --- # ROS 2 Introspection (Sandboxed) ## Setup & Installation Before this skill can be used, the local environment must be configured. 1. **Source your environment:** You MUST source your ROS 2 environment first in your terminal. ```bash source /opt/ros/<distro>/setup.bash ``` 2. **Run setup:** ```bash ./scripts/setup.sh ``` ## Overview Use this skill to inspect the ROS 2 graph. It is STRICTLY read-only. You cannot use this skill to run nodes, call services, or send action goals (use `ros2-execution` for that). **SECURITY CONSTRAINT:** You must ALWAYS use the safe wrapper script located at `./scripts/safe_ros2_introspection.py`. This Python script uses `subprocess` (shell=False) to prevent command injection and validates the command against a strict allowlist. **Wrapper Path:** Resolve `./scripts/safe_ros2_introspection.py` against this SKILL.md directory. ## Allowed Commands Usage: `./scripts/safe_ros2_introspection.py <category> <subcmd> [args]` - **Topics:** - `./scripts/safe_ros2_introspection.py topic list` - `./scripts/safe_ros2_introspection.py topic info <topic>` - `./scripts/safe_ros2_introspection.py topic echo <topic>` - `./scripts/safe_ros2_introspection.py topic hz <topic>` - `./scripts/safe_ros2_introspection.py topic bw <topic>` - **Nodes:** - `./scripts/safe_ros2_introspection.py node list` - `./scripts/safe_ros2_introspection.py node info <node>` - **Services:** - `./scripts/safe_ros2_introspection.py service list` - `./scripts/safe_ros2_introspection.py service type <srv>` - `./scripts/safe_ros2_introspection.py service find <type>` - **Actions:** - `./scripts/safe_ros2_introspection.py action list` - `./scripts/safe_ros2_introspection.py action info <action>` - **Parameters:** - `./scripts/safe_ros2_introspection.py param list` - `./scripts/safe_ros2_introspection.py param get <node> <param>` - `./scripts/safe_ros2_introspection.py param dump <node>` - **Interfaces:** - `./scripts/safe_ros2_introspection.py interface show <type>` - **RQT:** - `./scripts/safe_ros2_introspection.py rqt_graph`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: krumjahn/apple-health-export-analyzer (version 1.0.8)

--- name: health-analyzer-mac-local description: Use the Health Data AI Analyzer Mac app read-only localhost API on macOS to generate a concise Apple Health daily brief and 3 practical suggestions. Only run when the user explicitly asks to analyze their imported health data. If local fetch is unavailable, ask for one exact curl response and continue from that JSON. homepage: https://clawhub.ai/ user-invocable: true metadata: openclaw: os: - darwin --- # Health Data AI Analyzer Use this skill only with the Health Data AI Analyzer Mac app. Use it for: - daily health briefs - 3 practical non-medical suggestions - simple recent step and sleep comparisons Preferred source of truth: - `http://127.0.0.1:8765/openclaw/status` - `http://127.0.0.1:8765/openclaw/daily-brief?date=YYYY-MM-DD` Rules: - Use this skill only when the user explicitly asks for a health brief, comparison, or summary from their own imported data. - Treat the local Health Data AI Analyzer API as the source of truth. - Read only the minimum localhost endpoint needed to answer the request. - Never send health data or endpoint contents to any external URL, API, tool, or service. - Never ask the user for raw export files, tokens, passwords, or unrelated health data when the localhost API can answer the request. - Do not invent missing data. - Do not give medical advice or diagnoses. - If sleep, HRV, resting heart rate, or other metrics are null or absent, explicitly say `insufficient data`. - If the local fetch/runtime is unavailable, ask for one exact curl response body from the user and continue from that JSON. Output format: Status - 1 to 2 sentence summary What changed - Main deltas versus baseline Suggestions 1. ... 2. ... 3. ... Missing data - ...

path: agents/openai.yaml
content: interface:
  display_name: "Health Data AI Analyzer"
  short_description: "Apple Health daily brief from the Mac app’s read-only localhost API on macOS"
  default_prompt: "Use $health-analyzer-mac-local for this request. Read only the minimum Health Data AI Analyzer localhost endpoint needed, keep the data local, and if local fetch is unavailable ask me for one exact curl response body and continue from that JSON."

policy:
  allow_implicit_invocation: false


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: lotfinity/camofox-browser-selkies-test (version 1.0.0)

--- name: camofox-browser-selkies-test description: Use the Selkies test browser stack for desktop-stream/browser-in-desktop checks, Selkies-specific debugging, and viewport/mobile-context experiments. Trigger this when Lotfi mentions Selkies, the test browser, the test image, browser-in-desktop behavior, or the services on `http://127.0.0.1:9378` / `http://127.0.0.1:3003`. --- Use the Selkies test browser stack. Default targets: - camofox-browser API: `http://127.0.0.1:9378` - Selkies UI: `http://127.0.0.1:3003` - Docker container: `camofox-selkies-test` - Current pushed image reference: `medtouadmin/camofox-browser:selkies-beta` Use this skill for: - Selkies stream/websocket debugging - browser-in-desktop validation - viewport/mobile-context experiments tied to the Selkies test stack - reproducing issues specific to the test image/container Hard rules: - Treat this as separate from the main camofox-browser service. - If the task is about the shared remote browser over tailnet CDP, use `browser-cdp-tailnet` instead. - If the task is about the default local service on `127.0.0.1:9377`, use `camofox-browser-main` instead.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: yuchen-lju/pollen-forecast (version 1.0.0)

--- name: pollen-forecast description: Daily pollen forecast and allergy alerts for Chinese cities. Use when user asks about pollen levels, allergy season, hay fever, flower pollen, 花粉, 过敏, or wants to set up daily pollen alerts. Supports Beijing, Shanghai, Guangzhou, and other major Chinese cities. Can create automated daily cron reports. --- # Pollen Forecast 花粉播报 Deliver daily pollen forecasts and allergy alerts for Chinese cities using web search. ## Quick Start When user asks about pollen: 1. Search for current pollen data using `web_search` 2. Format into a concise daily report 3. Optionally set up daily cron job for automated alerts ## Search Queries Use these search patterns for best results: ``` {城市}今日花粉浓度预报 {城市}未来三天花粉预测 {城市}花粉过敏季 {月份} ``` ## Report Format Structure the daily report as: ``` 🌸 {城市}花粉日报 — {日期} 📊 今日花粉等级：{等级}（{数值}） 🌲 主要花粉种类：{种类列表} 📈 未来3天趋势：{趋势} 🛡️ 出行建议：{建议} ``` ### Pollen Level Scale (China Standard) | Level | Description | Action | |-------|------------|--------| | 1级 | 低 | 一般人群无需防护 | | 2级 | 较低 | 重度过敏者注意 | | 3级 | 偏高 | 过敏者戴口罩 | | 4级 | 较高 | N95 + 护目镜 | | 5级 | 很高 | 尽量室内活动 | ### Key Pollen Calendar (Beijing) | Tree | Start | Peak | End | Allergenicity | |------|-------|------|-----|---------------| | 柏科 (Cypress) | Mar 9 | Mar 30 | Apr 25 | ⚠️ Very High | | 杨柳科 (Poplar/Willow) | Mar 9 | Mar 26 | Apr 20 | ⚠️ High | | 榆科 (Elm) | Mar 1 | Mid-Mar | Apr | Medium | | 松科 (Pine) | Mar 15 | May 11 | Jun 19 | Low | | 桦木 (Birch) | Apr | Mid-Apr | May | High | ### Protection Mnemonic: 躲戴洗备 | Char | Action | |------|--------| | 躲 | Stay indoors during peak hours (10:00-17:00) | | 戴 | Wear N95 mask + pollen-proof goggles outdoors | | 洗 | Wash face, rinse nose with saline upon return | | 备 | Keep nasal spray + antihistamines ready | ## Setting Up Daily Alerts (Cron) To create automated daily pollen alerts, use `openclaw cron add`: ```bash openclaw cron add \ --name "每日花粉播报" \ --cron "30 8 * * *" \ --tz "Asia/Shanghai" \ --exact \ --session isolated \ --wake now \ --announce \ --channel {channel} \ --to "{user_target}" \ --model "openrouter/google/gemini-2.5-flash" \ --timeout-seconds 120 \ --message "Search for today's pollen forecast for {city} and deliver a concise daily report following the pollen-forecast skill format." ``` Adjust `--cron`, `--tz`, `--channel`, `--to`, and city as needed. ## Monitoring Tools Recommend these to users: - WeChat Official Account: 花粉监测预报 - WeChat Mini Program: 花粉健康宝 - Beijing Meteorological Service daily updates


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: hendr15k/smiles-profiling (version 1.2.0)

--- name: smiles-profiling description: Comprehensive SMILES profiling through SwissTargetPrediction, PubChem, ADMETlab 3.0, ChEMBL, and PK-Smart. Use when given a single SMILES to extract predicted targets, exact identity and physicochemical baselines, known analogs and mechanisms, ADMET properties, and pharmacokinetic estimates; handles salts/counterions and degrades gracefully when any source is unavailable. --- # SMILES Profiling Turn one SMILES into a compact pharmacology profile. ## Tool stack | Tool | Use | |------|-----| | SwissTargetPrediction | Predicted protein targets with probabilities | | PubChem | Exact CID, synonyms, MW, XLogP, TPSA, HBD/HBA, rotatable bonds | | ADMETlab 3.0 | ADMET flags, drug-likeness, toxicity sections | | ChEMBL | Similarity hits, max phase, known mechanisms, target names | | PK-Smart | Human and animal PK estimates (VDss, CL, t½, fu, MRT) | ## Workflow 1. Use the user-provided SMILES as-is unless it clearly needs cleanup. 2. Normalize only obvious salts/counterions. 3. Run SwissTargetPrediction for target hypotheses. 4. Run PubChem for identity and physicochemical baseline. 5. Run ADMETlab 3.0 for ADMET flags and drug-likeness. 6. Run ChEMBL for similarity hits and mechanism context. 7. Run PK-Smart last for PK estimates. 8. Merge the outputs into one short report, preferring direct database evidence over predictions. ## Preferred scripts - `scripts/run_smiles_profile.py <SMILES>` for the full report. - `scripts/run_smiles_smoke.py --cases <tsv>` for regression/benchmark runs. ## Extraction notes - **SwissTargetPrediction**: capture the top 5 targets, probabilities, and species. - **PubChem**: capture CID, IUPAC name, synonyms, MW, XLogP, TPSA, HBD/HBA, and rotatable bonds. - **ADMETlab 3.0**: capture the section list and any obvious toxicity/drug-likeness flags. - **ChEMBL**: capture the similarity threshold, top hits, max phase, mechanism_of_action, and target name. - **PK-Smart**: capture VDss, CL, t½, fu, MRT, and animal PK when available. ## Handling edge cases - **Salts/mixtures**: strip common counterions first. - **Invalid SMILES**: fail cleanly, do not crash. - **Missing tools**: continue with the remaining sources. - **PubChem miss**: report the miss and continue. - **ChEMBL miss**: automatically fall back from 90 → 80 → 70 similarity. ## Output shape ``` SMILES: CC(=O)OC1=CC=CC=C1C(=O)O ## SwissTargetPrediction - Top target: PTGS1 (prob: 0.76) ## PubChem - CID: 2244 | Name: 2-acetyloxybenzoic acid - MW: 180.16 Da | XLogP: 1.2 | TPSA: 63.6 Å² ## ADMETlab 3.0 - MW: 180.04 Da | QED: N/A ## ChEMBL - Top hit: CHEMBL25 ASPIRIN | sim 100 | phase 4 - Mechanism: Cyclooxygenase inhibitor -> Cyclooxygenase ## PK-Smart - VDss: 0.23 L/kg | CL: 10.41 mL/min/kg - t½: 0.34 hr | fu: 0.67 ```


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