upstash/context7 · info

Installation cancelled

Error message

Installation cancelled

What it means

The catch block around the skill multi-select prompt shown when installing from a repository that has more than one skill and neither --all was passed nor only one skill existed. @inquirer checkbox prompts throw ExitPromptError on Ctrl+C/Esc; the CLI maps any throw to 'Installation cancelled' and returns without installing.

Source

Thrown at packages/cli/src/commands/skill.ts:386

        headerPad + pc.dim("Popularity".padEnd(popularityColWidth)) + pc.dim("Trust");

      try {
        selectedSkills = await checkboxWithHover({
          message: `Select skills to install:\n${headerLine}`,
          choices,
          pageSize: 15,
          loop: false,
          theme: {
            style: {
              message: (text: string, status: string) => {
                if (status === "done") return pc.dim(text.split("\n")[0]);
                return pc.bold(text);
              },
            },
          },
        });
      } catch {
        log.warn("Installation cancelled");
        return;
      }
    }
  }

  if (selectedSkills.length === 0) {
    log.warn("No skills selected");
    return;
  }

  const targets = await promptForInstallTargets(options);
  if (!targets) {
    log.warn("Installation cancelled");
    return;
  }

  const targetDirs = getTargetDirs(targets);

View on GitHub (pinned to 5284672feb)

Solutions

  1. Re-run and select skills, or use `--all` to install every skill in the repo without the prompt.
  2. Name the skill directly: `context7 skill add <repo> <skill>` bypasses the multi-select.
  3. Ensure an interactive TTY when you want the selection UI.
Defensive patterns

Strategy: try-catch

Validate before calling

if (!process.stdin.isTTY) {
  console.error("Interactive skill selection requires a TTY; pass --all or name the skill explicitly.");
  process.exit(1);
}

Type guard

function isPromptAbort(err: unknown): boolean {
  return err instanceof Error && err.name === "ExitPromptError";
}

Try / catch

try {
  selectedSkills = await checkbox<Skill>({ message: "Select skills", choices });
} catch (err) {
  if (isPromptAbort(err)) {
    log.warn("Installation cancelled");
    return;
  }
  throw err;
}

Prevention

When it happens

Trigger: Pressing Ctrl+C or Esc at the 'select skills to install' checkbox; an empty checkbox submission is handled separately ('No skills selected'), so this warning specifically means the prompt threw.

Common situations: User browses a repo's skills then bails; non-interactive shell where the checkbox prompt cannot render; accidental Esc during selection.

Related errors


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