upstash/context7 · info

No skills selected

Error message

No skills selected

What it means

Fired by installCommand as a guard after the interactive multi-select skill picker resolves: the user confirmed the dialog but checked zero skills (or cancelled such that selectedSkills stayed empty). It is a normal early-exit sentinel, not a thrown exception — the command logs a warning and returns instead of proceeding to promptForInstallTargets, so no install targets are ever requested and nothing is written to disk.

Solutions

  1. Re-run the install command and select at least one skill before confirming
  2. Use `opencode skill search <query>` first to identify the exact skill you want
  3. Use the --all flag if you genuinely want every skill from the repository
  4. Nothing was installed; this is safe to ignore if you changed your mind

Example fix

// before
$ opencode skill install org/skills
? Select skills: (enter with none selected) -> No skills selected
// after
$ opencode skill install org/skills
? Select skills: [x] desired-skill  -> proceeds with install
Defensive patterns

Strategy: validation

Validate before calling

if (selectedSkills.length === 0) {
  console.warn('Select at least one skill before confirming, or abort with Ctrl+C.');
  return;
}

Prevention

When it happens

Trigger: User submits the skill multi-select prompt with no skills checked (e.g. pressing Enter immediately on an empty selection), so selectedSkills.length === 0 after the prompt resolves.

Common situations: User presses Enter by accident without selecting; user intended to cancel but confirmed the empty prompt instead; all listed skills were deselected after seeing the blocked-skills warning.

Related errors


AI-assisted analysis of upstash/context7@4416fb855b (2026-09-16). Data as JSON: /api/errors/95c60677ca5db2e9. Report an issue: GitHub.

Appendix: source

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

          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);

  const installSpinner = ora("Installing skills...").start();

  let permissionError = false;
  const failedDirs: Set<string> = new Set();
  const installedSkills: string[] = [];

  for (const skill of selectedSkills) {

View on GitHub (pinned to 4416fb855b)