EveryInc/compound-engineering-plugin · warning

Skipping ${tool.name}: not implemented.

Error message

Skipping ${tool.name}: not implemented.

What it means

During convert, targets marked implemented:false (or missing from the targets registry) are skipped with this warning instead of aborting the run. The CLI converts a Claude plugin to multiple agent formats; a stub handler simply produces no conversion. Output for other implemented targets is still produced.

Source

Thrown at src/commands/convert.ts:117

      if (activeTargets.length === 0) {
        console.log("No installable AI coding tools detected. Use native plugin install for Claude Code, Copilot, Droid, oh-my-pi (omp), OpenCode, Pi, and Qwen.")
        return
      }

      console.log(`Detected ${activeTargets.length} installable tool(s):`)
      for (const tool of detected) {
        if (tool.detected && !targets[tool.name]?.implemented) {
          console.log(`  - ${tool.name} — native plugin install; skipped`)
          continue
        }
        console.log(`  ${tool.detected ? "✓" : "✗"} ${tool.name} — ${tool.reason}`)
      }

      for (const tool of activeTargets) {
        const handler = targets[tool.name]
        if (!handler || !handler.implemented) {
          console.warn(`Skipping ${tool.name}: not implemented.`)
          continue
        }
        const bundle = handler.convert(plugin, options)
        if (!bundle) {
          console.warn(`Skipping ${tool.name}: no output returned.`)
          continue
        }
        const root = resolveTargetOutputRoot({
          targetName: tool.name,
          outputRoot,
          codexHome,
          piHome,
          pluginName: plugin.manifest.name,
          hasExplicitOutput,
        })
        const writeScope =
          tool.name === "opencode" ? resolveOpenCodeWriteScope(hasExplicitOutput, undefined) : undefined
        await handler.write(root, bundle, writeScope)

View on GitHub (pinned to c9c10f8c75)

Solutions

  1. Check the target list (the tool prints ✓/✗ per target) and pick an implemented provider.
  2. Upgrade to a CLI version where the desired target is implemented.
  3. Implement the handler in src/targets/<provider>.ts and flip implemented:true if you own the repo.
  4. Remove the unimplemented target from your --to/--also arguments.

Example fix

// before
bun convert --to codex   // codex handler implemented:false -> 'Skipping codex: not implemented.'
// after
bun convert --to opencode   // implemented target produces output
Defensive patterns

Strategy: validation

Validate before calling

import { targets } from "../targets/index.js";
function isImplementedTarget(name: string): boolean {
  const h = (targets as Record<string, { implemented?: boolean }>)[name];
  return Boolean(h?.implemented);
}
// before converting: activeTargets.filter(t => isImplementedTarget(t.name))

Prevention

When it happens

Trigger: Running the convert command with a target name whose handler in src/targets/index.ts has implemented:false, or a tool.name in activeTargets that has no registry entry.

Common situations: Using --to or a detected target for a provider that is on the roadmap but not finished (a newly added provider stub); a target name matching a stub; running a checkout before a provider's implementation landed.

Related errors


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