React Native Best Practices
vercel-labs/openreview
A prioritized rule set for React Native and Expo apps covering list performance, animation, navigation, UI patterns, state, rendering, monorepos and configuration.
主流APP搜索。当用户想要在拼多多、美团、高德地图、抖音、快手、小红书、哔哩哔哩、知乎、百度、OPPO音乐、OPPO软件商店等APP中搜索时激活。覆盖电商购物、生活服务、短视频内容、知识搜索、音乐搜索、应用商店搜索等场景。
$ npx skills add OPPO-Mente-Lab/X-OmniClaw --skill app-search -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OPPO-Mente-Lab/X-OmniClaw app-search --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/OPPO-Mente-Lab/X-OmniClaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/app/src/main/assets/skills/app-search .claude/skills/app-search && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "app-search" agent skill from https://github.com/OPPO-Mente-Lab/X-OmniClaw/tree/main/app/src/main/assets/skills/app-search into .claude/skills/app-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-search", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/OPPO-Mente-Lab/X-OmniClaw/tree/main/app/src/main/assets/skills/app-searchType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add OPPO-Mente-Lab/X-OmniClaw --skill app-search -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OPPO-Mente-Lab/X-OmniClaw app-search --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OPPO-Mente-Lab/X-OmniClaw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/app/src/main/assets/skills/app-search .agents/skills/app-search && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "app-search" agent skill from https://github.com/OPPO-Mente-Lab/X-OmniClaw/tree/main/app/src/main/assets/skills/app-search into .agents/skills/app-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-search", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OPPO-Mente-Lab/X-OmniClaw --skill app-search -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OPPO-Mente-Lab/X-OmniClaw app-search --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OPPO-Mente-Lab/X-OmniClaw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/app/src/main/assets/skills/app-search .cursor/skills/app-search && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "app-search" agent skill from https://github.com/OPPO-Mente-Lab/X-OmniClaw/tree/main/app/src/main/assets/skills/app-search into .cursor/skills/app-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-search", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/OPPO-Mente-Lab/X-OmniClaw.git --path app/src/main/assets/skills/app-search--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add OPPO-Mente-Lab/X-OmniClaw --skill app-search -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OPPO-Mente-Lab/X-OmniClaw app-search --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OPPO-Mente-Lab/X-OmniClaw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/app/src/main/assets/skills/app-search .gemini/skills/app-search && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "app-search" agent skill from https://github.com/OPPO-Mente-Lab/X-OmniClaw/tree/main/app/src/main/assets/skills/app-search into .gemini/skills/app-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-search", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install OPPO-Mente-Lab/X-OmniClaw app-searchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add OPPO-Mente-Lab/X-OmniClaw --skill app-search -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OPPO-Mente-Lab/X-OmniClaw.git skills-src && mkdir -p .github/skills && cp -r skills-src/app/src/main/assets/skills/app-search .github/skills/app-search && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "app-search" agent skill from https://github.com/OPPO-Mente-Lab/X-OmniClaw/tree/main/app/src/main/assets/skills/app-search into .github/skills/app-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-search", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OPPO-Mente-Lab/X-OmniClaw --skill app-search -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OPPO-Mente-Lab/X-OmniClaw app-search --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OPPO-Mente-Lab/X-OmniClaw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/app/src/main/assets/skills/app-search .opencode/skills/app-search && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "app-search" agent skill from https://github.com/OPPO-Mente-Lab/X-OmniClaw/tree/main/app/src/main/assets/skills/app-search into .opencode/skills/app-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "app-search", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
app-search主流APP搜索。当用户想要在拼多多、美团、高德地图、抖音、快手、小红书、哔哩哔哩、知乎、百度、OPPO音乐、OPPO软件商店等APP中搜索时激活。覆盖电商购物、生活服务、短视频内容、知识搜索、音乐搜索、应用商店搜索等场景。
App Search is an agent skill from OPPO-Mente-Lab/X-OmniClaw. 主流APP搜索。当用户想要在拼多多、美团、高德地图、抖音、快手、小红书、哔哩哔哩、知乎、百度、OPPO音乐、OPPO软件商店等APP中搜索时激活。覆盖电商购物、生活服务、短视频内容、知识搜索、音乐搜索、应用商店搜索等场景。
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Mobile. The repository describes itself as: An edge-native Multimodal Android Agent that integrates multimodal perception, memory and action. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8614c93. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are kotlin).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
m.baidu.combaidu.commobile.yangkeduo.comzhihu.comsearch.bilibili.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
App Search loads about 4.1k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 656 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from OPPO-Mente-Lab/X-OmniClaw at commit 8614c93, republished under its Apache-2.0 licence (© OPPO-Mente-Lab). 656 words, ~4,077 tokens.
.claude/skills/app-search/SKILL.md (or your agent's skills folder).通过各主流 APP 的 Deep Link 直达搜索页面,浏览结果并为用户提供有价值的总结。
Use this skill when user asks about:
✅ 拼多多搜索 - "拼多多搜一下纸巾"、"拼多多有什么便宜的耳机"
✅ 美团搜索 - "美团上搜搜附近火锅店"、"帮我在美团找酒店" ✅ 高德地图 - "高德上搜一下加油站"、"帮我找附近停车场"
✅ 抖音搜索 - "抖音搜一下健身教程"、"在抖音看看旅行攻略" ✅ 快手搜索 - "快手搜一下美食做法"、"快手上找一下钓鱼视频" ✅ 小红书搜索 - "小红书搜一下穿搭"、"帮我在小红书找护肤攻略" ✅ 哔哩哔哩搜索 - "B站搜一下编程教程"、"在B站看看数码评测"
✅ 知乎搜索 - "知乎上搜一下如何学Python"、"帮我在知乎找一下理财建议" ✅ 百度搜索 - "百度搜一下天气预报"、"帮我百度一下这个问题"
✅ OPPO音乐搜索 - "OPPO音乐搜周杰伦"、"帮我在OPPO音乐搜一下晴天"
✅ OPPO软件商店搜索 - "OPPO软件商店搜红果短剧"、"帮我在软件商店找抖音"
跳转 APP 搜索页只能且必须调用 device(action="open", uri="..."):
| 操作 | ✅ 必须使用 | ❌ 绝对禁止 |
|---|---|---|
| 跳转目标 APP 搜索页 | device(action="open", uri="<deep_link>") | start_activity(uri=...) / start_activity(package=..., activity=...) / start_activity(component=...) |
为什么禁用
start_activity:第三方 APP(小红书/抖音/拼多多/B 站/快手/知乎等)的 activity 几乎全部不允许从其他进程显式启动。无论你尝试MainActivity/IndexSearchV2Activity/.search.SearchActivity等何种 component 或 package+activity 组合,返回值 100% 都是Unable to find explicit activity class,会浪费 10+ 轮迭代仍无法成功。正确路径:路由表里的 deep link(
xhsdiscover://、snssdk1128://、pinduoduo://等)会经由ACTION_VIEWIntent 被系统自动路由到对应 APP,这正是device(action="open", uri=...)内部的工作;你完全不需要也不应该指定 activity 名。think → action 一致性:如果你在
<think>里写过"使用device(action="open")",function call 时务必真的调用device,不要切换到start_activity——这是弱模型最常见的失败模式。读到本段时再次自检:本轮要调用的工具名是不是device?
🚫 禁令:调用
device(action="open", ...)时只传action和uri两个参数,严禁传package_name。系统根据 URI scheme 自动解析目标 APP,手动指定package_name会导致 ActivityNotFound。⚡ 唯一例外 — 百度APP:
baiduboxapp://scheme 实测无法触发搜索,必须使用 HTTPS 链接并指定package_name。✅
device(action="open", uri="imeituan://www.meituan.com/search?q=火锅")❌device(action="open", package_name="com.meituan.android.fe", uri="imeituan://www.meituan.com/search?q=火锅")✅device(action="open", uri="https://m.baidu.com/s?word=天气预报", package_name="com.baidu.searchbox")← 百度例外 ❌device(action="open", uri="baiduboxapp://search?keyword=天气预报")← 实测不可用
1. 解析用户意图,识别目标 APP 和搜索关键词
2. 根据 APP 路由表构造对应的 Deep Link(必须从路由表原样复制模板,只替换 {keyword})
3. 通过 device(action="open", uri="...") 跳转目标 APP 搜索页(禁传 package_name)
4. 等待 APP 加载搜索结果:device(action="act", kind="wait", timeMs=1000)
5. 拉取页面 UI 树:device(action="snapshot")
6. 从 snapshot 返回的 text 节点中提取结果中的具体信息
7. 基于提取到的具体信息回答用户(200字以内,必须包含真实数字和细节)| APP | Deep Link 模板 | Scheme |
|---|---|---|
| 拼多多 | pinduoduo://com.xunmeng.pinduoduo/search_result.html?search_key={keyword} | pinduoduo |
| APP | Deep Link 模板 | Scheme |
|---|---|---|
| 美团(全局搜索) | imeituan://www.meituan.com/search?q={keyword} | imeituan |
| 美团(酒店搜索) | imeituan://www.meituan.com/hotel/search?q={keyword} | imeituan |
| 高德地图 | androidamap://poi?keywords={keyword} | androidamap |
⚠️ 美团特别注意:scheme 是
imeituan(带i前缀),不是。路径是meituan/search?q=,不是。错误写法/web/?keyword=meituan://www.meituan.com/web/?keyword=xxx会导致 ActivityNotFound。
| APP | Deep Link 模板 | Scheme |
|---|---|---|
| 抖音 | snssdk1128://search?keyword={keyword} | snssdk1128 |
| 快手 | kwai://search?keyword={keyword} | kwai |
| 小红书 | xhsdiscover://search/result?keyword={keyword} | xhsdiscover |
| 哔哩哔哩 | bilibili://search?keyword={keyword} | bilibili |
⚠️ 小红书特别注意:scheme 是
xhsdiscover,不是、xhslink、xhs。路径是xiaohongshu/search/result(不是),参数名是/searchkeyword。正确写法xhsdiscover://search/result?keyword=xxx。常见错误:scheme 写成会导致 ActivityNotFound。xhslink://search?keyword=xxx
| APP | Deep Link 模板 | Scheme |
|---|---|---|
| 知乎 | zhihu://search?q={keyword} | zhihu |
| 百度APP | https://m.baidu.com/s?word={keyword}(需指定包名 com.baidu.searchbox) | https |
⚠️ 百度APP特别注意:
baiduboxapp://search?keyword=xxxDeep Link 实测不可用(会停留在桌面,不触发搜索)。必须使用 HTTPS 链接https://m.baidu.com/s?word=xxx并显式指定包名com.baidu.searchbox,即device(action="open", uri="https://m.baidu.com/s?word=xxx", package_name="com.baidu.searchbox")。百度是唯一需要传package_name的例外。
| APP | Deep Link 模板 | Scheme | 包名 |
|---|---|---|---|
| OPPO音乐 | allmusic://search/keyword/{keyword} | allmusic | com.heytap.music |
⚠️ OPPO音乐特别注意:路径格式是
/search/keyword/{关键词},关键词直接拼接在路径中。正确写法:allmusic://search/keyword/周杰伦晴天。
| APP | Deep Link 模板 | Scheme | 包名 |
|---|---|---|---|
| OPPO软件商店 | market://search?q={keyword} | market | com.heytap.market(Android 10+)/ com.oppo.market(Android 9及以下) |
⚠️ OPPO软件商店特别注意:严禁传
package_name,系统会自动根据market://scheme 路由到已安装的应用商店。正确写法:market://search?q=红果短剧。
关键词用 + 连接多个搜索词。
| APP | 用户意图 | 搜索关键词 | Deep Link |
|---|---|---|---|
| 拼多多 | 拼多多搜纸巾 | 纸巾 | pinduoduo://com.xunmeng.pinduoduo/search_result.html?search_key=纸巾 |
| 美团 | 美团搜火锅 | 火锅 | imeituan://www.meituan.com/search?q=火锅 |
| 高德 | 高德搜加油站 | 加油站 | androidamap://poi?keywords=加油站 |
| 抖音 | 抖音搜健身教程 | 健身教程 | snssdk1128://search?keyword=健身教程 |
| 快手 | 快手搜美食做法 | 美食做法 | kwai://search?keyword=美食做法 |
| 小红书 | 小红书搜穿搭 | 穿搭 | xhsdiscover://search/result?keyword=穿搭 |
| B站 | B站搜编程教程 | 编程教程 | bilibili://search?keyword=编程教程 |
| 知乎 | 知乎搜理财建议 | 理财建议 | zhihu://search?q=理财建议 |
| 百度 | 百度搜天气预报 | 天气预报 | https://m.baidu.com/s?word=天气预报(需指定 package_name="com.baidu.searchbox") |
| OPPO音乐 | OPPO音乐搜周杰伦晴天 | 周杰伦晴天 | allmusic://search/keyword/周杰伦晴天 |
| OPPO软件商店 | OPPO软件商店搜红果短剧 | 红果短剧 | market://search?q=红果短剧 |
Tool: device (DeviceTool — 统一设备控制工具)
⚠️ 重要: 不要使用 shell am start 命令跳转 Deep Link(会因 SecurityException 权限拒绝),必须使用 device(action="open", uri="...") 通过 X-OmniClaw 应用上下文发起 ACTION_VIEW Intent。
// 根据用户意图识别 APP 和关键词
val app = "douyin" // 从用户查询中识别目标APP
val keyword = "健身+教程"
// APP → Deep Link 映射
val deepLink = when (app) {
// 电商类
"pdd", "拼多多" ->
"pinduoduo://com.xunmeng.pinduoduo/search_result.html?search_key=$keyword"
// 生活服务类
"meituan", "美团" ->
"imeituan://www.meituan.com/search?q=$keyword"
"meituan_hotel", "美团酒店" ->
"imeituan://www.meituan.com/hotel/search?q=$keyword"
"amap", "高德", "高德地图" ->
"androidamap://poi?keywords=$keyword"
// 短视频/内容类
"douyin", "抖音" ->
"snssdk1128://search?keyword=$keyword"
"kuaishou", "快手" ->
"kwai://search?keyword=$keyword"
"xiaohongshu", "小红书" ->
"xhsdiscover://search/result?keyword=$keyword"
"bilibili", "B站", "哔哩哔哩" ->
"bilibili://search?keyword=$keyword"
// 知识/搜索类
"zhihu", "知乎" ->
"zhihu://search?q=$keyword"
// ⚠️ 百度是例外:baiduboxapp:// scheme 实测不可用,必须用 HTTPS + 指定包名
"baidu", "百度" ->
"https://m.baidu.com/s?word=$keyword" // 需额外传 package_name="com.baidu.searchbox"
// 音乐类
"oppomusic", "OPPO音乐", "oppo音乐" ->
"allmusic://search/keyword/$keyword"
// 应用商店类
"oppostore", "OPPO软件商店", "oppo软件商店", "软件商店" ->
"market://search?q=$keyword"
else -> throw IllegalArgumentException("不支持的 APP: $app")
}
// 百度需要额外指定包名,其他 APP 严禁传 package_name
if (app in listOf("baidu", "百度")) {
device(action = "open", uri = deepLink, package_name = "com.baidu.searchbox")
} else {
device(action = "open", uri = deepLink)
}device(action = "act", kind = "wait", timeMs = 1000)
device(action = "snapshot")你必须仔细阅读每一份 snapshot 返回的 text 节点,根据不同 APP 类型提取对应信息:
⛔ 严禁笼统回复。以下是禁止出现的回复方式:
❌ "搜索结果展示了多个相关内容,你可以看看"
❌ "你可以在当前页面继续上下滑动查看更多"
❌ "点击感兴趣的内容查看详情"
❌ "包含不同类型和价位,可以根据你的喜好选择"✅ 必须包含具体数字和细节,回复格式根据 APP 类型调整:
电商类回复模板:
为您在{APP名}搜索了"{搜索词}",挑选了几款值得关注的:
1. {完整商品名} - ¥{价格},{店铺名},{销量/评价}
2. {完整商品名} - ¥{价格},{店铺名},{销量/评价}
3. {完整商品名} - ¥{价格},{店铺名},{销量/评价}
价格区间¥{最低}-¥{最高}。{1-2句具体购物建议}。需要我点开某款看详情吗?生活服务类回复模板:
为您在{APP名}搜索了"{搜索词}",推荐几家:
1. {店名} - {评分}分,人均¥{价格},距{距离},{标签}
2. {店名} - {评分}分,人均¥{价格},距{距离},{标签}
3. {店名} - {评分}分,人均¥{价格},距{距离},{标签}
{1-2句推荐理由}。需要我查看某家的详情或帮你导航吗?内容类回复模板:
为您在{APP名}搜索了"{搜索词}",推荐几个:
1. 「{标题}」- @{作者},{播放量/点赞},{简要描述}
2. 「{标题}」- @{作者},{播放量/点赞},{简要描述}
3. 「{标题}」- @{作者},{播放量/点赞},{简要描述}
{1-2句推荐理由}。需要我打开某个看看吗?音乐类回复模板:
为您在{APP名}搜索了"{搜索词}",找到以下结果:
1. 「{歌曲名}」- {歌手},专辑《{专辑名}》,{发行年份}
2. 「{歌曲名}」- {歌手},专辑《{专辑名}》,{发行年份}
3. 「{歌曲名}」- {歌手},专辑《{专辑名}》,{发行年份}
{1-2句歌曲介绍或推荐理由}。需要我播放哪首吗?应用商店类回复模板:
为您在{APP名}搜索了"{搜索词}",找到以下应用:
1. 「{应用名}」- {开发者},{评分}分,{下载量},{应用大小}
2. 「{应用名}」- {开发者},{评分}分,{下载量},{应用大小}
3. 「{应用名}」- {开发者},{评分}分,{下载量},{应用大小}
{1-2句应用介绍或推荐理由}。需要我帮你下载哪个吗?用户: "拼多多搜一下纸巾"
val keyword = "纸巾"
device(action = "open", uri = "pinduoduo://com.xunmeng.pinduoduo/search_result.html?search_key=$keyword")
device(action = "act", kind = "wait", timeMs = 1000)
device(action = "snapshot")回复示例:
为您在拼多多搜索了"纸巾",挑选了几款值得关注的:
1. 植护原木抽纸40包整箱 - ¥16.9,植护旗舰店,已拼100万+件,百亿补贴
2. 洁柔抽纸Face系列3层120抽30包 - ¥39.9,洁柔官方旗舰店,已拼50万+件
3. 维达超韧抽纸24包 - ¥29.9,维达官方旗舰店,已拼80万+件,包邮
价格区间¥16.9-¥39.9。植护性价比最高适合囤货,洁柔Face系列手感更好,维达超韧兼顾品质和价格。需要我点开某款看详情吗?用户: "抖音搜一下健身教程"
val keyword = "健身教程"
device(action = "open", uri = "snssdk1128://search?keyword=$keyword")
device(action = "act", kind = "wait", timeMs = 1000)
device(action = "snapshot")回复示例:
为您在抖音搜索了"健身教程",推荐几个热门视频:
1. 「新手全身燃脂30分钟跟练」- @帕梅拉PamelaReif,320万播放,适合零基础
2. 「男生增肌必练的5个动作」- @刘畊宏,180万播放,哑铃居家训练
3. 「每天15分钟马甲线养成计划」- @周六野Zoey,250万播放,28天打卡挑战
这几位都是健身领域头部博主,内容专业。帕梅拉适合跟练燃脂,刘畊宏侧重力量,周六野适合女生塑形。需要我打开某个视频吗?用户: "美团搜搜附近火锅店"
val keyword = "火锅"
device(action = "open", uri = "imeituan://www.meituan.com/search?q=$keyword")
device(action = "act", kind = "wait", timeMs = 1000)
device(action = "snapshot")回复示例:
为您在美团搜索了"火锅",推荐几家:
1. 海底捞火锅(万象城店) - 4.8分,人均¥128,距1.2km,必吃榜上榜
2. 巴奴毛肚火锅(CBD店) - 4.7分,人均¥145,距0.8km,招牌毛肚
3. 楠火锅(太古里店) - 4.6分,人均¥95,距2.1km,排队王性价比高
海底捞服务好适合聚餐,巴奴毛肚出名口味正宗,楠火锅性价比最高。需要我查看某家的详情或团购券吗?用户: "小红书搜一下防晒霜推荐"
val keyword = "防晒霜+推荐"
device(action = "open", uri = "xhsdiscover://search/result?keyword=$keyword")
device(action = "act", kind = "wait", timeMs = 1000)
device(action = "snapshot")回复示例:
为您在小红书搜索了"防晒霜推荐",精选几篇高赞攻略:
1. 「2026防晒红黑榜!测了30款终于找到真命」- @成分党阿梨,5.2万赞,干货测评帖
2. 「油皮亲妈防晒!上脸不搓泥不闷痘」- @皮肤科林医生,3.8万赞,医生推荐
3. 「通勤防晒天花板,平价替代安耐晒」- @一只梨花,2.1万赞,¥59平价款实测
高赞笔记普遍推荐资生堂蓝胖子和薇诺娜清透防晒,油皮偏爱理肤泉大哥大。需要我打开某篇笔记看看具体产品清单吗?用户: "OPPO音乐搜一下周杰伦晴天"
val keyword = "周杰伦晴天"
device(action = "open", uri = "allmusic://search/keyword/$keyword")
device(action = "act", kind = "wait", timeMs = 1000)
device(action = "snapshot")回复示例:
为您在OPPO音乐搜索了"周杰伦晴天",找到以下结果:
1. 「晴天」- 周杰伦,专辑《叶惠美》,2003年发行,经典华语流行
2. 「晴天 (Live版)」- 周杰伦,2019演唱会录音,现场气氛超燃
3. 「晴天 (钢琴版)」- 纯音乐翻奏,适合学习/放松时听
原版《晴天》是周杰伦最经典的情歌之一,方文山作词。需要我播放哪首吗?用户: "OPPO软件商店搜一下红果短剧"
val keyword = "红果短剧"
device(action = "open", uri = "market://search?q=$keyword")
device(action = "act", kind = "wait", timeMs = 1000)
device(action = "snapshot")回复示例:
为您在OPPO软件商店搜索了"红果短剧",找到以下应用:
1. 「红果短剧」- 北京红果视界科技有限公司,4.8分,1亿+下载,68MB,官方认证
2. 「红果免费短剧」- 红果科技,4.5分,5000万+下载,55MB,海量短剧免费看
3. 「红果剧场」- 红果传媒,4.3分,1000万+下载,42MB,精选热门短剧
第一个是官方正版应用,下载量最高且评分最好。需要我帮你下载吗?从用户查询中识别目标 APP:
| 用户关键词 | 识别为 |
|---|---|
| 拼多多、PDD、拼多 | 拼多多 |
| 美团、美团外卖 | 美团 |
| 美团酒店 | 美团(酒店搜索) |
| 高德、高德地图、导航搜 | 高德地图 |
| 抖音、TikTok | 抖音 |
| 快手 | 快手 |
| 小红书、红书 | 小红书 |
| B站、哔哩哔哩、bilibili | 哔哩哔哩 |
| 知乎 | 知乎 |
| 百度、百度一下 | 百度APP |
| OPPO音乐、oppo音乐 | OPPO音乐 |
| OPPO软件商店、oppo软件商店、软件商店、应用商店 | OPPO软件商店 |
从用户查询中提取搜索关键词时:
// 品牌 + 时间 + 品类 组合(电商/旅行场景)
val brand = "罗技"
val year = "2026"
val category = "机械键盘"
val keyword = "$brand+$year+$category"
// 地点 + 品类 组合(生活服务/地图场景)
val location = "三亚"
val type = "酒店"
val keyword = "$location+$type"
// 直接关键词(内容/知识场景)
val keyword = "健身教程"时间词映射:
| 用户表述 | 转换为 |
|---|---|
| 今年 | 2026 |
| 新款/最新 | 2026+新款 |
| 去年 | 2025 |
美团场景路由:
| 用户意图 | 路由 |
|---|---|
| 搜索餐饮/娱乐/通用 | 美团全局搜索 |
| 明确提到酒店/住宿 | 美团酒店搜索 |
device(action="open", uri="...") 跳转,不要用 shell am start(会报 SecurityException)。严禁传 package_name 参数——系统会根据 URI scheme 自动解析目标 APP,手动指定 package_name 会导致 ActivityNotFound。唯一例外是百度APP:因其 baiduboxapp:// scheme 实测不可用,必须使用 HTTPS 链接 + package_name="com.baidu.searchbox"{keyword} 部分。常见错误:美团 scheme 写成 meituan://(正确的是 imeituan://)、路径写成 /web/?keyword=(正确的是 /search?q=)wait 的 timeMs// device(action="open", uri="...") 会返回 ActivityNotFoundException 错误
// 向用户说明需要安装对应 APP
// 部分 APP 可降级到网页版:
// 注意:百度主链接已经是 HTTPS,不受此 fallback 影响
val webFallback = mapOf(
"拼多多" to "https://mobile.yangkeduo.com/search_result.html?search_key=$keyword",
"知乎" to "https://www.zhihu.com/search?type=content&q=$keyword",
"哔哩哔哩" to "https://search.bilibili.com/all?keyword=$keyword",
"百度" to "https://www.baidu.com/s?wd=$keyword"
)
device(action = "open", uri = webFallback[app] ?: "https://www.baidu.com/s?wd=$keyword")// 尝试简化关键词,去掉年份、限定词
val simplifiedKeyword = "机械键盘" // 去掉品牌等限定词
// 用简化关键词重新搜索device(action = "act", kind = "wait", timeMs = 1000)
device(action = "snapshot")
// 如果仍未加载,提示用户检查网络// ❌ 错误示例(scheme 少了 i 前缀,路径也不对)
device(action = "open", uri = "meituan://www.meituan.com/web/?keyword=$keyword")
// ✅ 正确写法
device(action = "open", uri = "imeituan://www.meituan.com/search?q=$keyword")// ❌ baiduboxapp:// scheme 实测无法触发搜索(停留在桌面)
device(action = "open", uri = "baiduboxapp://search?keyword=$keyword")
// ❌ utils 路径同样不可用
device(action = "open", uri = "baiduboxapp://utils/search?keyword=$keyword")
// ✅ 正确写法:使用 HTTPS 链接 + 显式指定包名
device(action = "open", uri = "https://m.baidu.com/s?word=$keyword", package_name = "com.baidu.searchbox")| APP | 查询类型 | 示例 | 搜索关键词 |
|---|---|---|---|
| 拼多多 | 低价搜索 | "拼多多搜便宜耳机" | 耳机 |
| 美团 | 美食搜索 | "美团搜火锅" | 火锅 |
| 美团 | 酒店搜索 | "美团搜酒店" | 酒店 |
| 高德 | POI搜索 | "高德搜加油站" | 加油站 |
| 抖音 | 视频搜索 | "抖音搜健身" | 健身 |
| 快手 | 视频搜索 | "快手搜美食做法" | 美食做法 |
| 小红书 | 笔记搜索 | "小红书搜穿搭" | 穿搭 |
| B站 | 视频搜索 | "B站搜编程教程" | 编程教程 |
| 知乎 | 问答搜索 | "知乎搜如何学Python" | 如何学Python |
| 百度 | 通用搜索 | "百度搜天气预报" | 天气预报 |
| OPPO音乐 | 音乐搜索 | "OPPO音乐搜周杰伦晴天" | 周杰伦晴天 |
| OPPO软件商店 | 应用搜索 | "软件商店搜红果短剧" | 红果短剧 |
© OPPO-Mente-Lab, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in app/src/main/assets/skills/app-search of OPPO-Mente-Lab/X-OmniClaw.
Open the folder on GitHubat commit 8614c93
App Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| App Search this skillOPPO-Mente-Lab/X-OmniClaw | 265 | — | ~4.1k | Automated safety check: Pass | Apache-2.0 | |
| React Native Best Practicesvercel-labs/openreview | 1.7k | 17 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Swiftui Protwostraws/SwiftUI-Agent-Skill | 5.2k | 2 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Kortix Brandkortix-ai/suna | 20k | — | ~4k | Automated safety check: Pass | Custom licence | |
| Ip As LogoKartikLabhshetwar/better-shot | 2.4k | 1 repos | ~4.3k | Automated safety check: Pass | MIT | |
| Compose Multiplatform Patternsmonta-app/ocpp-emulator | 180 | 5 repos | ~2k | Automated safety check: Pass | Apache-2.0 |
vercel-labs/openreview
A prioritized rule set for React Native and Expo apps covering list performance, animation, navigation, UI patterns, state, rendering, monorepos and configuration.
twostraws/SwiftUI-Agent-Skill
Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance.
kortix-ai/suna
Load FIRST for anything that carries the Kortix look or voice: product or mobile UI, copy of any kind, decks, social, images, email, CLI output, anything with the logo, and reviews of these.
KartikLabhshetwar/better-shot
Generate extremely simple, cute, personified square character images with rounded heavy forms, two purposeful character colors, one solid background color, and a dominant lower-corner composition.
monta-app/ocpp-emulator
Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.
adamlyttleapps/claude-skill-aso-appstore-screenshots
Generate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro.
OPPO-Mente-Lab/X-OmniClaw
Feishu multi-dimensional table (Bitable) operations. An agent skill from OPPO-Mente-Lab/X-OmniClaw.
OPPO-Mente-Lab/X-OmniClaw
Feishu chat operations. An agent skill from OPPO-Mente-Lab/X-OmniClaw.
OPPO-Mente-Lab/X-OmniClaw
Feishu task management operations. An agent skill from OPPO-Mente-Lab/X-OmniClaw.
OPPO-Mente-Lab/X-OmniClaw
Feishu urgent notification tool. An agent skill from OPPO-Mente-Lab/X-OmniClaw.
OPPO-Mente-Lab/X-OmniClaw
CapCut (剪映) one-tap video creation on Android. An agent skill from OPPO-Mente-Lab/X-OmniClaw.
OPPO-Mente-Lab/X-OmniClaw
将剪切板中的 App 跳转链接制作成一个可复用的快捷指令 Skill,下次用户说出 Skill 名称即可一键直达对应 App 页面。
Categories
主流APP搜索。当用户想要在拼多多、美团、高德地图、抖音、快手、小红书、哔哩哔哩、知乎、百度、OPPO音乐、OPPO软件商店等APP中搜索时激活。覆盖电商购物、生活服务、短视频内容、知识搜索、音乐搜索、应用商店搜索等场景。. App Search is an agent skill from OPPO-Mente-Lab/X-OmniClaw.
App Search fits situations like: mobile work in your project.
Run `npx skills add OPPO-Mente-Lab/X-OmniClaw --skill app-search -a claude-code`. Or copy the skill folder (app/src/main/assets/skills/app-search in OPPO-Mente-Lab/X-OmniClaw) into .claude/skills/app-search in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OPPO-Mente-Lab/X-OmniClaw --skill app-search -a codex`. Or copy the skill folder (app/src/main/assets/skills/app-search in OPPO-Mente-Lab/X-OmniClaw) into .agents/skills/app-search in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OPPO-Mente-Lab/X-OmniClaw --skill app-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/app-search, .gemini/skills/app-search, .github/skills/app-search and .opencode/skills/app-search in your project.
SKILL.md names no scripts, command-line tools or credentials: App Search is instructions for the agent only.
SKILL.md names 5 domains. In commands or code: m.baidu.com, baidu.com, mobile.yangkeduo.com, zhihu.com and search.bilibili.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
App Search is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with App Search: React Native Best Practices (vercel-labs/openreview, 1.7k stars), Swiftui Pro (twostraws/SwiftUI-Agent-Skill, 5.2k stars), Kortix Brand (kortix-ai/suna, 20k stars) and Ip As Logo (KartikLabhshetwar/better-shot, 2.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OPPO-Mente-Lab (a GitHub organization) maintains it in OPPO-Mente-Lab/X-OmniClaw, which has 265 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on May 22, 2026.
Source: OPPO-Mente-Lab/X-OmniClaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.