jackwener/OpenCLI · warning · EmptyResultError
No skills matched "${keyword}".
Error message
No skills matched "${keyword}". What it means
Thrown as an EmptyResultError when the marketplace search executed in the Trae UI returns zero matching skills. The command typed the keyword into the search input, read the rendered results, and found none.
Source
Thrown at clis/trae-solo/skill.js:142
inp.dispatchEvent(new Event('input', { bubbles: true }));
})()`);
await page.wait(0.7);
const items = await page.evaluate(`(function() {
const cards = Array.from(document.querySelectorAll('.marketplace-card-v2')).filter((c) => c.offsetParent);
return cards.map((c, i) => {
const logo = c.querySelector('.skill-logo-svg');
const name = (logo && logo.getAttribute('aria-label')) || '';
const full = (c.innerText || '').replace(/\\s+/g, ' ').trim();
let desc = full;
if (name && desc.startsWith(name)) desc = desc.slice(name.length).trim();
return { index: i + 1, name: name || full.split(' ')[0], description: desc.slice(0, 200) };
});
})()`);
const limit = Number.isInteger(kwargs.limit) && kwargs.limit > 0 ? kwargs.limit : 50;
const rows = (items || []).slice(0, limit);
if (!rows.length) {
throw new EmptyResultError('trae-solo skill-search', `No skills matched "${keyword}".`);
}
return rows.map((r) => ({ Index: r.index, Name: r.name, Description: r.description }));
},
});
// -------- skill-category --------
cli({
site: 'trae-solo',
name: 'skill-category',
access: 'read',
description: 'Filter Skills Marketplace by category. Pass --list to see categories.',
domain: 'localhost',
strategy: Strategy.UI,
browser: true,
args: [
{ name: 'name', positional: true, required: false, help: 'Category name (substring; case-insensitive). Common: All / Developer Tools / Data Analysis / UI Design / Content Creation / Productivity' },
{ name: 'list', type: 'boolean', default: false, help: 'List available categories' },
{ name: 'limit', type: 'int', required: false, default: 100 },View on GitHub (pinned to 49907e53dc)
Solutions
- Retry with a broader/shorter keyword (e.g. 'code' instead of 'code-review-helper').
- Add a wait/delay after typing so results render before items are collected.
- Verify the marketplace loads in the Trae UI manually — network/login issues will look identical.
- If results visibly exist but aren't parsed, update the result-collection selectors in skill.js after a Trae UI update.
Example fix
// before
await skillSearch({ keyword: 'zzzz-no-such-skill' })
// after
await skillSearch({ keyword: 'lint' }) Defensive patterns
Strategy: retry
Validate before calling
// ensure the marketplace search input exists and query is reasonable
const kw = keyword.trim();
if (!kw) throw new Error('empty keyword');
await page.waitForSelector('input[placeholder="Search"]', { timeout: 5000 }).catch(() => {}); Try / catch
try {
return await skillSearch({ keyword: kw });
} catch (e) {
if (e instanceof EmptyResultError && /No skills matched/.test(e.message)) {
await sleep(1500);
return await skillSearch({ keyword: kw }); // retry once for slow renders
}
throw e;
} Prevention
- Start with broad keywords, then narrow.
- Allow render time between typing the keyword and reading results.
- Verify the marketplace loads in the Trae UI (network/login).
- After Trae UI updates, verify result selectors still match.
When it happens
Trigger: Running skill-search with a keyword that matches no marketplace entries; results not yet rendered when page.evaluate collected items; the search input selector failed so the query never ran; Trae marketplace offline or region-restricted.
Common situations: Very niche or misspelled keywords; marketplace index changed and the skill was renamed/removed; slow network so results hadn't loaded; Trae UI update broke the results selector.
Related errors
- No 12306 stations match "${keyword}"
- ${label}
- No papers found for author "${authorText}". Try alternate sp
- No papers found. Try a different keyword.
- No Codex projects matched "${kwargs.project}". / No Codex pr
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/5946a7af56e5f799.
Report an issue: GitHub.