jackwener/OpenCLI · warning · EmptyResultError
No skills found.
Error message
No skills found.
What it means
The `manus skills` command successfully reached the ListSkills API and parsed it, but after collecting both user-added and system skills the resulting rows array was empty, so it throws this EmptyResultError. The API responded fine; it simply reported zero skills. The CLI throws instead of printing an empty table so callers can distinguish 'no data' from success.
Source
Thrown at clis/manus/skills.js:56
Description: (s.description || '—').slice(0, 80),
Source: 'user',
});
}
const systemSkills = Object.prototype.hasOwnProperty.call(data, 'systemSkills')
? requireArray(data.systemSkills, 'system skills')
: (Object.prototype.hasOwnProperty.call(data, 'skills') ? requireArray(data.skills, 'system skills') : []);
for (const [index, s] of systemSkills.entries()) {
rows.push({
ID: requireString(s?.id || s?.uid, `system skill ${index + 1}`),
Name: requireString(s?.name, `system skill ${index + 1}`),
Description: (s.description || '—').slice(0, 80),
Source: 'system',
});
}
if (!rows.length) {
throw new EmptyResultError('manus skills', 'No skills found.');
}
return rows;
},
});
View on GitHub (pinned to 49907e53dc)
Solutions
- Add a skill in the Manus UI (or confirm skills exist there), then rerun `manus skills`.
- Confirm the browser profile is logged into the account that actually owns the skills.
- Retry later if Manus normally shows skills in the web UI but the CLI returns none — could be a transient backend issue.
- If empty output is expected, catch EmptyResultError in your wrapper and treat it as a normal zero-skills result.
Example fix
// wrapper handling an expected empty skill list
// before
const skills = await run('manus skills');
// after
try {
const skills = await run('manus skills');
} catch (e) {
if (e instanceof EmptyResultError) return [];
throw e;
} Defensive patterns
Strategy: try-catch
Try / catch
try {
const rows = await run('manus skills');
} catch (e) {
if (e instanceof EmptyResultError) {
console.log('Account has no skills (user or system).');
process.exitCode = 0;
} else throw e;
} Prevention
- Treat EmptyResultError as an expected zero-rows outcome for account-level listings.
- Verify in the Manus web UI that the account actually has skills before debugging the CLI.
- Check you're on the intended account's browser profile before concluding the list is empty.
When it happens
Trigger: The authenticated Manus account has no user-added skills AND the API returned empty arrays for systemSkills/skills — e.g. a brand-new account, a payload where both keys exist but are [], or the system skill list endpoint returning empty for the region/account tier.
Common situations: Newly created Manus account with no custom skills; account on a tier where system skills aren't provisioned; transient Manus backend issue returning empty lists for an established account that does have skills.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- qwen history
- 上游 hot-board 返回空列表。
- 频道 ${category} 返回空列表。
- No prices returned for train_no=${trainNo} ${fromStation.nam
- No 12306 stations match "${keyword}"
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/57dba160bcf581a3.
Report an issue: GitHub.