{"record":{"id":"95c60677ca5db2e9","repo":"upstash/context7","slug":"no-skills-selected","errorCode":null,"errorMessage":"No skills selected","messagePattern":"No skills selected","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"packages/cli/src/commands/skill.ts","lineNumber":393,"sourceCode":"          loop: false,\n          theme: {\n            style: {\n              message: (text: string, status: string) => {\n                if (status === \"done\") return pc.dim(text.split(\"\\n\")[0]);\n                return pc.bold(text);\n              },\n            },\n          },\n        });\n      } catch {\n        log.warn(\"Installation cancelled\");\n        return;\n      }\n    }\n  }\n\n  if (selectedSkills.length === 0) {\n    log.warn(\"No skills selected\");\n    return;\n  }\n\n  const targets = await promptForInstallTargets(options);\n  if (!targets) {\n    log.warn(\"Installation cancelled\");\n    return;\n  }\n\n  const targetDirs = getTargetDirs(targets);\n\n  const installSpinner = ora(\"Installing skills...\").start();\n\n  let permissionError = false;\n  const failedDirs: Set<string> = new Set();\n  const installedSkills: string[] = [];\n\n  for (const skill of selectedSkills) {","sourceCodeStart":375,"sourceCodeEnd":411,"githubUrl":"https://github.com/upstash/context7/blob/4416fb855b8f752be735e34f943b5d0762701aad/packages/cli/src/commands/skill.ts#L375-L411","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Re-run the install command and select at least one skill before confirming","Use `opencode skill search <query>` first to identify the exact skill you want","Use the --all flag if you genuinely want every skill from the repository","Nothing was installed; this is safe to ignore if you changed your mind"],"exampleFix":"// before\n$ opencode skill install org/skills\n? Select skills: (enter with none selected) -> No skills selected\n// after\n$ opencode skill install org/skills\n? Select skills: [x] desired-skill  -> proceeds with install","handlingStrategy":"validation","validationCode":"if (selectedSkills.length === 0) {\n  console.warn('Select at least one skill before confirming, or abort with Ctrl+C.');\n  return;\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Toggle at least one entry before pressing Enter in multi-select prompts","Cancel with Ctrl+C rather than confirming an empty selection","Pre-install with `skill search` to know exactly which skill to pick"],"tags":["cli","empty-selection","interactive-prompt"],"backgroundTag":"empty-selection","analyzedSha":"4416fb855b8f752be735e34f943b5d0762701aad","analyzedAt":"2026-09-16T20:28:07.148Z","contentChangedAt":"2026-09-16T20:28:07.148Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}