oo Find Skills
Use this skill when the user wants to discover, compare, recommend, or install
existing published skills from the OOMOL or oo skill catalog through
oo skills search and oo skills install.
Read references/oo-cli-contract.md when you
need exact oo skills search or oo skills install command forms, JSON
expectations, output-shape rules, or failure-handling details.
Workflow
1. Normalize the request into a search sentence and keywords
Convert the user request into:
- one short internal intent statement
- one concise English sentence for the search text
1 to 3 required keywords or short phrases for the --keywords filter
Rules:
- The sentence must always be in English, regardless of the user's language.
- Keywords are required on every search. Always provide
1 to 3 keywords and
never run a search without --keywords.
- Keywords may use the user's original language. Keep product names, brand
names, and proper nouns exactly as the user wrote them and do not translate
them. For example, keep
滴答清单 as 滴答清单; do not turn it into
TickTick.
- The backend tokenizes
--keywords, so original-language and product-name
keywords reach the catalog entry the user actually wants. The free-text
sentence alone runs an untokenized semantic search that can map a localized
product onto a different global product.
- The sentence should describe only the user's need itself.
- Prefer a short sentence built from task + capability + domain or constraint.
- Do not add meta words such as
skill, skills, search, or install
unless the user's actual need depends on those words.
- Avoid filler words.
- Do not exceed
3 keywords.
Examples:
- Sentence:
translate scanned images from Japanese to English
Keywords: Japanese, image translation
- Sentence:
create a task in the dida365 to-do app
Keywords: 滴答清单, dida365
- Sentence:
generate a QR code from text
Keywords: QR code
- Sentence:
convert speech to text
Keywords: transcription
- Sentence:
write Markdown more effectively
Keywords: Markdown, writing
Use the sentence as the main search text and always pass the 1 to 3
keywords through --keywords.
2. Search for candidate skills
Always run the keyword-refined form:
oo skills search "<english sentence>" --keywords "<comma-separated keywords>" --json
Then:
- Rank only from the returned JSON array.
- Prefer semantic matches between the original user goal and the returned
description, skillDisplayName, or name.
- Keep one primary skill.
- Keep one fallback skill only if it is genuinely plausible.
If the returned array is empty, tell the user there is no matching skill
available right now and stop. Do not present a menu.
3. Filter installable results
- Treat a search item as installable only when it includes both
packageName
and name.
- If the JSON array is non-empty but no installable items exist, stop and tell
the user that no installable skill could be derived from the search results.
Do not present a menu.
4. Rank the installable results
- Rank the installable JSON items using only the fields in the response.
- Pick one primary skill and, only if credible, one fallback skill.
5. Report or ask the user to choose
- If the user asked to find, compare, recommend, or check whether a skill exists,
report the primary skill and any credible fallback, briefly explain why they
match, and ask whether the user wants to install one. Do not install yet.
- If the user explicitly asked to install, add, set up, or choose and install a
matching skill, ask the user to choose between the available install actions.
- If the user later names or selects one of the reported installable skills,
treat that as confirmation for that exact install action.
Interaction rules:
- If a credible fallback exists, offer these actions:
- Install the primary skill as
primarySkillName (primaryPackageName)
- Install the fallback skill as
fallbackSkillName (fallbackPackageName)
- Install both
- Install neither
- If no credible fallback exists, offer only these actions:
- Install the primary skill as
primarySkillName (primaryPackageName)
- Install neither
- First, try to use the
<!-- agentic:var skillSelectionPromptTool --> tool with one short multiple-choice
question that includes only the actions that are actually available.
- If the
<!-- agentic:var skillSelectionPromptTool --> tool is unavailable in the current mode or the
tool call fails, fall back to plain text.
- If the
<!-- agentic:var skillSelectionPromptTool --> UI returns None of the above, treat that as
the same outcome as Install neither.
- Prefer asking the user with a short multiple-choice prompt in chat.
- If the host provides a short-question UI, you may use it. Otherwise ask in
plain text.
- If the UI returns
None of the above, treat that as the same outcome as
Install neither.
- In either UI or text form, the label for every install action must include
the concrete
skillName (packageName) text.
Fallback text format:
1. Install <skillName> (<packageName>)
2. Install <skillName2> (<packageName2>)
3. Install both
4. Install neither
Reply with: 1, 2, 3, or 4
If no credible fallback exists, use:
1. Install <skillName> (<packageName>)
2. Install neither
Reply with: 1 or 2
If the user reply is not one of the explicit numbers that correspond to the
currently available options, do not install anything. Ask the user to reply
with one of the displayed numbers.
6. Install after confirmation
- After the user chooses an install action, install only the selected skill or
skills with
oo skills install.
- If the user chooses
Install neither, declines installation, or the UI returns
None of the above, do not install anything. Reply with exactly one short
acknowledgement in the user's language that no skill was installed, then stop.
Do not continue with extra result explanation, matched-result recap, ranking
recap, package names, skill names, descriptions, or repeated summaries.
- Batch by package:
- If both selected skills come from the same package, install them with one
command and multiple
-s flags.
- If they come from different packages, run one install command per package.
If
Install both requires multiple oo skills install commands across
different packages and a later command fails after an earlier one succeeded,
report the partial completion accurately: say which package/skill
installation(s) succeeded, say which command failed, say that no rollback was
attempted, and then stop.
Install examples:
oo skills install "<packageName>" -s "<skillName>"
- Two skills from the same package:
oo skills install "<packageName>" -s "<skillName1>" -s "<skillName2>"
- Two skills from different packages:
oo skills install "<packageName1>" -s "<skillName1>"
oo skills install "<packageName2>" -s "<skillName2>"
- Use each search result's
name field as the -s value. Use
skillDisplayName only for display text.
- Never invent package names, skill names, versions, or extra metadata.
- If
oo skills search or oo skills install fails for any reason other
than the explicit HTTP 402 billing case, stop immediately and report the
exact command failure. Do not invent recommendations, do not claim an
install succeeded, and do not continue silently.
- If the command output shows HTTP
402 or OOMOL_INSUFFICIENT_CREDIT,
stop immediately, tell the user their current account has insufficient
credit or is overdue, and direct them to
https://console.oomol.com/billing before retrying.
- If a command fails with a message saying the self-hosted connector only
supports connector commands, or with JSON error code
not_authenticated
in self-hosted connector mode, an OOMOL account is required. Ask the user
to run oo auth login, then stop.
Behavior Notes
oo skills search --json returns at most 5 results because that is the CLI
behavior for this command; do not try to enforce or emulate a different
limit in the skill text.
- Use
skillDisplayName when present, otherwise fall back to name.
- Prefer the closest semantic match for the primary skill.
- Break ranking ties deterministically by preferring the result whose
description or display text more directly matches the same user request.
- Prefer non-duplicate results over near-duplicates.
- If the semantic match is still tied, prefer the result with clearer install
identifiers (
packageName plus name) and richer explanatory text.
- You may compare response text fields against the original user request, but
you must not use external metadata or guessed fields to break ties.
- Treat a fallback as credible only when it is the next-best result that still
plausibly solves the same user request, not merely a loosely related or
duplicate-looking match.
- Do not install anything before the user explicitly chooses one of the four
options.
1---2name: oo-find-skills3description: oo Find Skills4---56# oo Find Skills78Use this skill when the user wants to discover, compare, recommend, or install9existing published skills from the OOMOL or `oo` skill catalog through10`oo skills search` and `oo skills install`.1112Read [references/oo-cli-contract.md](references/oo-cli-contract.md) when you13need exact `oo skills search` or `oo skills install` command forms, JSON14expectations, output-shape rules, or failure-handling details.1516## Workflow1718### 1. Normalize the request into a search sentence and keywords1920Convert the user request into:2122- one short internal intent statement23- one concise English sentence for the search text24- `1` to `3` required keywords or short phrases for the `--keywords` filter2526Rules:2728- The sentence must always be in English, regardless of the user's language.29- Keywords are required on every search. Always provide `1` to `3` keywords and30 never run a search without `--keywords`.31- Keywords may use the user's original language. Keep product names, brand32 names, and proper nouns exactly as the user wrote them and do not translate33 them. For example, keep `滴答清单` as `滴答清单`; do not turn it into34 `TickTick`.35- The backend tokenizes `--keywords`, so original-language and product-name36 keywords reach the catalog entry the user actually wants. The free-text37 sentence alone runs an untokenized semantic search that can map a localized38 product onto a different global product.39- The sentence should describe only the user's need itself.40- Prefer a short sentence built from task + capability + domain or constraint.41- Do not add meta words such as `skill`, `skills`, `search`, or `install`42 unless the user's actual need depends on those words.43- Avoid filler words.44- Do not exceed `3` keywords.4546Examples:4748- Sentence: `translate scanned images from Japanese to English`49 Keywords: `Japanese`, `image translation`50- Sentence: `create a task in the dida365 to-do app`51 Keywords: `滴答清单`, `dida365`52- Sentence: `generate a QR code from text`53 Keywords: `QR code`54- Sentence: `convert speech to text`55 Keywords: `transcription`56- Sentence: `write Markdown more effectively`57 Keywords: `Markdown`, `writing`5859Use the sentence as the main search text and always pass the `1` to `3`60keywords through `--keywords`.6162### 2. Search for candidate skills6364Always run the keyword-refined form:6566```bash67oo skills search "<english sentence>" --keywords "<comma-separated keywords>" --json68```6970Then:7172- Rank only from the returned JSON array.73- Prefer semantic matches between the original user goal and the returned74 `description`, `skillDisplayName`, or `name`.75- Keep one primary skill.76- Keep one fallback skill only if it is genuinely plausible.7778If the returned array is empty, tell the user there is no matching skill79available right now and stop. Do not present a menu.8081### 3. Filter installable results8283- Treat a search item as installable only when it includes both `packageName`84 and `name`.85- If the JSON array is non-empty but no installable items exist, stop and tell86 the user that no installable skill could be derived from the search results.87 Do not present a menu.8889### 4. Rank the installable results9091- Rank the installable JSON items using only the fields in the response.92- Pick one primary skill and, only if credible, one fallback skill.9394### 5. Report or ask the user to choose9596- If the user asked to find, compare, recommend, or check whether a skill exists,97 report the primary skill and any credible fallback, briefly explain why they98 match, and ask whether the user wants to install one. Do not install yet.99- If the user explicitly asked to install, add, set up, or choose and install a100 matching skill, ask the user to choose between the available install actions.101- If the user later names or selects one of the reported installable skills,102 treat that as confirmation for that exact install action.103104Interaction rules:105106- If a credible fallback exists, offer these actions:107 1. Install the primary skill as `primarySkillName (primaryPackageName)`108 2. Install the fallback skill as `fallbackSkillName (fallbackPackageName)`109 3. Install both110 4. Install neither111- If no credible fallback exists, offer only these actions:112 1. Install the primary skill as `primarySkillName (primaryPackageName)`113 2. Install neither114<!-- agentic:if skillSelectionPromptTool -->115- First, try to use the `<!-- agentic:var skillSelectionPromptTool -->` tool with one short multiple-choice116 question that includes only the actions that are actually available.117- If the `<!-- agentic:var skillSelectionPromptTool -->` tool is unavailable in the current mode or the118 tool call fails, fall back to plain text.119- If the `<!-- agentic:var skillSelectionPromptTool -->` UI returns `None of the above`, treat that as120 the same outcome as `Install neither`.121<!-- agentic:endif -->122<!-- agentic:if agent=openclaw -->123- Prefer asking the user with a short multiple-choice prompt in chat.124- If the host provides a short-question UI, you may use it. Otherwise ask in125 plain text.126- If the UI returns `None of the above`, treat that as the same outcome as127 `Install neither`.128<!-- agentic:endif -->129- In either UI or text form, the label for every install action must include130 the concrete `skillName (packageName)` text.131132Fallback text format:133134```text1351. Install <skillName> (<packageName>)1362. Install <skillName2> (<packageName2>)1373. Install both1384. Install neither139140Reply with: 1, 2, 3, or 4141```142143If no credible fallback exists, use:144145```text1461. Install <skillName> (<packageName>)1472. Install neither148149Reply with: 1 or 2150```151152If the user reply is not one of the explicit numbers that correspond to the153currently available options, do not install anything. Ask the user to reply154with one of the displayed numbers.155156### 6. Install after confirmation157158- After the user chooses an install action, install only the selected skill or159 skills with `oo skills install`.160- If the user chooses `Install neither`, declines installation, or the UI returns161 `None of the above`, do not install anything. Reply with exactly one short162 acknowledgement in the user's language that no skill was installed, then stop.163 Do not continue with extra result explanation, matched-result recap, ranking164 recap, package names, skill names, descriptions, or repeated summaries.165- Batch by package:166 - If both selected skills come from the same package, install them with one167 command and multiple `-s` flags.168 - If they come from different packages, run one install command per package.169 If `Install both` requires multiple `oo skills install` commands across170 different packages and a later command fails after an earlier one succeeded,171 report the partial completion accurately: say which package/skill172 installation(s) succeeded, say which command failed, say that no rollback was173 attempted, and then stop.174175Install examples:176177- Single skill install:178179```bash180oo skills install "<packageName>" -s "<skillName>"181```182183- Two skills from the same package:184185```bash186oo skills install "<packageName>" -s "<skillName1>" -s "<skillName2>"187```188189- Two skills from different packages:190191```bash192oo skills install "<packageName1>" -s "<skillName1>"193oo skills install "<packageName2>" -s "<skillName2>"194```19519611. Use each search result's `name` field as the `-s` value. Use197 `skillDisplayName` only for display text.19812. Never invent package names, skill names, versions, or extra metadata.19913. If `oo skills search` or `oo skills install` fails for any reason other200 than the explicit HTTP `402` billing case, stop immediately and report the201 exact command failure. Do not invent recommendations, do not claim an202 install succeeded, and do not continue silently.20314. If the command output shows HTTP `402` or `OOMOL_INSUFFICIENT_CREDIT`,204 stop immediately, tell the user their current account has insufficient205 credit or is overdue, and direct them to206 `https://console.oomol.com/billing` before retrying.20715. If a command fails with a message saying the self-hosted connector only208 supports connector commands, or with JSON error code `not_authenticated`209 in self-hosted connector mode, an OOMOL account is required. Ask the user210 to run `oo auth login`, then stop.211212## Behavior Notes213214- `oo skills search --json` returns at most `5` results because that is the CLI215 behavior for this command; do not try to enforce or emulate a different216 limit in the skill text.217- Use `skillDisplayName` when present, otherwise fall back to `name`.218- Prefer the closest semantic match for the primary skill.219- Break ranking ties deterministically by preferring the result whose220 `description` or display text more directly matches the same user request.221- Prefer non-duplicate results over near-duplicates.222- If the semantic match is still tied, prefer the result with clearer install223 identifiers (`packageName` plus `name`) and richer explanatory text.224- You may compare response text fields against the original user request, but225 you must not use external metadata or guessed fields to break ties.226- Treat a fallback as credible only when it is the next-best result that still227 plausibly solves the same user request, not merely a loosely related or228 duplicate-looking match.229- Do not install anything before the user explicitly chooses one of the four230 options.