EveryInc/compound-engineering-plugin · warning

Skipping unknown target: ${extra}

Error message

Skipping unknown target: ${extra}

What it means

When converting with extra targets (--also), each parsed extra name is looked up in the targets registry. A name with no registry entry is skipped with this warning; the run continues with valid targets. This guards against typos and renamed providers without failing the whole conversion.

Source

Thrown at src/commands/convert.ts:180

      hasExplicitOutput,
      scope: resolvedScope,
    })
    const bundle = target.convert(plugin, options)
    if (!bundle) {
      throw new Error(`Target ${targetName} did not return a bundle.`)
    }

    const effectiveScope =
      targetName === "opencode" ? resolveOpenCodeWriteScope(hasExplicitOutput, resolvedScope) : resolvedScope
    await target.write(primaryOutputRoot, bundle, effectiveScope)
    console.log(`Converted ${plugin.manifest.name} to ${targetName} at ${primaryOutputRoot}`)

    const extraTargets = parseExtraTargets(args.also)
    const allTargets = [targetName, ...extraTargets]
    for (const extra of extraTargets) {
      const handler = targets[extra]
      if (!handler) {
        console.warn(`Skipping unknown target: ${extra}`)
        continue
      }
      if (!handler.implemented) {
        console.warn(`Skipping ${extra}: not implemented yet.`)
        continue
      }
      const extraBundle = handler.convert(plugin, options)
      if (!extraBundle) {
        console.warn(`Skipping ${extra}: no output returned.`)
        continue
      }
      const extraRoot = resolveTargetOutputRoot({
        targetName: extra,
        outputRoot,
        codexHome,
        piHome,
        pluginName: plugin.manifest.name,
        hasExplicitOutput,

View on GitHub (pinned to c9c10f8c75)

Solutions

  1. Check the detected-targets listing for valid names and correct the --also value.
  2. Fix the typo in the --also argument.
  3. Check README/docs for the supported --to values.
  4. Upgrade the CLI if the target exists only in a newer version.

Example fix

// before
bun convert claude --also opencodee   // typo -> 'Skipping unknown target: opencodee'
// after
bun convert claude --also opencode
Defensive patterns

Strategy: validation

Validate before calling

const KNOWN = ["claude","codex","opencode","cursor","gemini","pi"]; // see src/targets/index.ts
const extras = parseExtraTargets(args.also).filter(t => KNOWN.includes(t));
if (extras.length !== parseExtraTargets(args.also).length) {
  console.error("Unknown --also target; check supported values");
}

Type guard

function isKnownTarget(name: string): name is TargetName {
  return name in targets;
}

Prevention

When it happens

Trigger: Passing an unknown provider name to the --also flag of the convert command, e.g. --also claude,codex where 'claude' is not a key in targets.

Common situations: Typo in the --also value; using a target name from an older CLI version that was renamed; guessing provider names from docs of a different tool.

Related errors


AI-assisted analysis of EveryInc/compound-engineering-plugin@c9c10f8c75 (2026-08-31). Data as JSON: /api/errors/fe7e087c875706b6. Report an issue: GitHub.