upstash/context7 · warning
No skills found in ${repo}
Error message
No skills found in ${repo} What it means
While listing a repository's skills (`context7 skill add <repo>` with no skill name), the CLI fetched data (from the registry or the GitHub fallback) successfully but the skills array is empty or missing. It warns 'No skills found in <repo>' and exits without showing a selection prompt.
Source
Thrown at packages/cli/src/commands/skill.ts:312
if ((data.error || !data.skills || data.skills.length === 0) && !data.blockedSkillsCount) {
spinner.text = `Fetching skills from GitHub...`;
const ghResult = await listSkillsFromGitHub(repo);
if (ghResult.status === "repo_not_found") {
spinner.fail(pc.red(`Repository not found: ${repo}`));
return;
}
if (ghResult.status === "ok" && ghResult.skills.length > 0) {
data = { project: repo, skills: ghResult.skills };
}
}
if (data.error && (!data.skills || data.skills.length === 0)) {
spinner.fail(pc.red(`Error: ${data.message || data.error}`));
return;
}
if (!data.skills || data.skills.length === 0) {
spinner.warn(pc.yellow(`No skills found in ${repo}`));
return;
}
const skillsWithRepo = data.skills
.map((s) => ({ ...s, project: repo }))
.sort((a, b) => (b.installCount ?? 0) - (a.installCount ?? 0));
spinner.succeed(`Found ${data.skills.length} skill(s)`);
if (data.blockedSkillsCount && data.blockedSkillsCount > 0) {
log.blank();
log.error(
`${data.blockedSkillsCount} skill(s) blocked due to prompt injection and not shown.`
);
log.warn("Review other skills from this repository carefully before installing.");
}
if (options.all || data.skills.length === 1) {View on GitHub (pinned to 5284672feb)
Solutions
- Double-check the repo argument is the exact owner/name that publishes the skills.
- Use `context7 skill search <query>` to find the correct repository name for the skills you want.
- Open the repo on GitHub and confirm it actually contains publishable skills in the expected structure.
- If the repo has skills but none are listed, some may have been blocked — try installing a specific skill by name.
Defensive patterns
Strategy: validation
Validate before calling
// Validate the repo argument shape before hitting the API
const repoRe = /^[\w.-]+\/[\w.-]+$/;
if (!repoRe.test(repo)) {
console.error("Expected a GitHub 'owner/name' repository argument.");
process.exit(1);
} Type guard
type SkillList = { skills?: unknown[] };
function hasListedSkills(data: SkillList): boolean {
return Array.isArray(data.skills) && data.skills.length > 0;
} Prevention
- Verify owner/name spelling before running add.
- Use `skill search` to discover the exact repository name first.
- Handle the empty-list case as a no-op with a helpful message (as the CLI does) rather than an error.
When it happens
Trigger: The repository publishes zero skills to the registry (or all of them were blocked by injection scanning and filtered out), or the GitHub fallback (getSkillFromGitHub) returned status ok with an empty skills list; also triggered when data.error coexists with an empty array in some paths.
Common situations: Typo in the owner/repo argument pointing at a repo that has no skills; a repo that ships skills only in a non-standard layout the resolver does not recognize; every skill in the repo was blocked by the injection scanner.
Related errors
- This skill contains potentially malicious content and cannot
- Fix permissions with:
- No skills found matching "${query}"
- No skills installed
- No matching skills found for your dependencies
AI-assisted analysis of upstash/context7@5284672feb (2026-08-18).
Data as JSON: /api/errors/cebe6f70adae8d1b.
Report an issue: GitHub.