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

  1. Double-check the repo argument is the exact owner/name that publishes the skills.
  2. Use `context7 skill search <query>` to find the correct repository name for the skills you want.
  3. Open the repo on GitHub and confirm it actually contains publishable skills in the expected structure.
  4. 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

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


AI-assisted analysis of upstash/context7@5284672feb (2026-08-18). Data as JSON: /api/errors/cebe6f70adae8d1b. Report an issue: GitHub.