{"record":{"id":"3c2f268aa811049d","repo":"EveryInc/compound-engineering-plugin","slug":"skipping-unknown-target-extra-3c2f26","errorCode":null,"errorMessage":"Skipping unknown target: ${extra}","messagePattern":"Skipping unknown target: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/commands/install.ts","lineNumber":189,"sourceCode":"        targetName,\n        outputRoot,\n        codexHome,\n        piHome,\n        pluginName: plugin.manifest.name,\n        hasExplicitOutput,\n        scope: resolvedScope,\n      })\n      const effectiveScope =\n        targetName === \"opencode\" ? resolveOpenCodeWriteScope(hasExplicitOutput, resolvedScope) : resolvedScope\n      await target.write(primaryOutputRoot, bundle, effectiveScope)\n      console.log(`Installed ${plugin.manifest.name} to ${primaryOutputRoot}`)\n\n      const extraTargets = parseExtraTargets(args.also)\n      const allTargets = [targetName, ...extraTargets]\n      for (const extra of extraTargets) {\n        const handler = targets[extra]\n        if (!handler) {\n          console.warn(`Skipping unknown target: ${extra}`)\n          continue\n        }\n        if (!handler.implemented) {\n          console.warn(`Skipping ${extra}: not implemented yet.`)\n          continue\n        }\n        const extraBundle = handler.convert(plugin, options)\n        if (!extraBundle) {\n          console.warn(`Skipping ${extra}: no output returned.`)\n          continue\n        }\n        const extraRoot = resolveTargetOutputRoot({\n          targetName: extra,\n          outputRoot,\n          codexHome,\n          piHome,\n          pluginName: plugin.manifest.name,\n          hasExplicitOutput,","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/EveryInc/compound-engineering-plugin/blob/c9c10f8c75412c7232cb2bd663e5fd1cea98d84e/src/commands/install.ts#L171-L207","documentation":"During install, extra targets from --also that do not exist in the targets registry are skipped with this warning; install proceeds for the primary and valid extras. The message names the offending target string verbatim to make typos obvious.","triggerScenarios":"Passing an unrecognized provider name via --also to the install command; the name fails the targets[extra] lookup.","commonSituations":"Typo in --also; provider renamed between CLI versions; copying a flag list from another tool's docs; shell variable expanding to an unexpected value.","solutions":["Correct the provider name against the supported list (see README/--to docs).","Remove the invalid entry from --also.","Check the detected-targets ✓/✗ output for real names.","Upgrade the CLI if the provider ships in a newer release."],"exampleFix":"// before\nbun install claude --also codexx   // typo -> 'Skipping unknown target: codexx'\n// after\nbun install claude --also codex\n","handlingStrategy":"validation","validationCode":"const KNOWN = new Set(Object.keys(targets));\nconst bad = parseExtraTargets(args.also).filter(t => !KNOWN.has(t));\nif (bad.length) console.error(`Unknown targets: ${bad.join(\", \")}`);","typeGuard":"function isKnownTarget(name: string): name is TargetName {\n  return name in targets;\n}","tryCatchPattern":null,"preventionTips":["Validate --also names against the registry before installing.","Fix typos; the warning echoes the exact bad string.","Watch for renamed providers across CLI versions.","Prefer explicit --to over long --also lists when scripting."],"tags":["cli","install","unknown-target"],"backgroundTag":"unknown-target-name","analyzedSha":"c9c10f8c75412c7232cb2bd663e5fd1cea98d84e","analyzedAt":"2026-08-31T15:18:07.959Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}