{"record":{"id":"e207864448244561","repo":"EveryInc/compound-engineering-plugin","slug":"skipping-tool-name-not-implemented-e20786","errorCode":null,"errorMessage":"Skipping ${tool.name}: not implemented.","messagePattern":"Skipping (.+?): not implemented\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/commands/install.ts","lineNumber":128,"sourceCode":"\n        if (activeTargets.length === 0) {\n        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.\")\n          return\n        }\n\n        console.log(`Detected ${activeTargets.length} installable tool(s):`)\n        for (const tool of detected) {\n          if (tool.detected && !targets[tool.name]?.implemented) {\n            console.log(`  - ${tool.name} — native plugin install; skipped`)\n            continue\n          }\n          console.log(`  ${tool.detected ? \"✓\" : \"✗\"} ${tool.name} — ${tool.reason}`)\n        }\n\n        for (const tool of activeTargets) {\n          const handler = targets[tool.name]\n          if (!handler || !handler.implemented) {\n            console.warn(`Skipping ${tool.name}: not implemented.`)\n            continue\n          }\n          const bundle = handler.convert(plugin, options)\n          if (!bundle) {\n            console.warn(`Skipping ${tool.name}: no output returned.`)\n            continue\n          }\n          const root = resolveTargetOutputRoot({\n            targetName: tool.name,\n            outputRoot,\n            codexHome,\n            piHome,\n            pluginName: plugin.manifest.name,\n            hasExplicitOutput,\n          })\n          const writeScope =\n            tool.name === \"opencode\" ? resolveOpenCodeWriteScope(hasExplicitOutput, undefined) : undefined\n          await handler.write(root, bundle, writeScope)","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/EveryInc/compound-engineering-plugin/blob/c9c10f8c75412c7232cb2bd663e5fd1cea98d84e/src/commands/install.ts#L110-L146","documentation":"During install, a target that is not implemented (implemented:false or missing handler) is skipped with this warning instead of failing the install. Install shares the convert pipeline; stubbed providers cannot produce an installable bundle. Other detected, implemented targets still install.","triggerScenarios":"Running install where an active/detected target's handler is missing or has implemented:false in the targets registry.","commonSituations":"Installing to all detected agent CLIs on a machine where one provider is still stubbed in the installed CLI version; outdated global install of the converter; probing support for a provider before its release.","solutions":["Upgrade the converter CLI to a version implementing the target.","Install only implemented targets by narrowing the target/--to selection.","Check the ✓/✗ detected-targets listing and ignore the ✗ stub.","Contribute the writer in src/targets/<provider>.ts if you need it now."],"exampleFix":"// before\nbun install --also gemini   // gemini stub -> 'Skipping gemini: not implemented.'\n// after\nbun install --to opencode    // implemented target installs\n","handlingStrategy":"validation","validationCode":"const h = (targets as Record<string, { implemented?: boolean }>)[tool.name];\nif (!h?.implemented) console.warn(`${tool.name} not installable; upgrade CLI or skip`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep the converter CLI current so target stubs get implemented.","Install only targets that appear with ✓ in the detection listing.","Check release notes for newly supported providers.","Verify handlers exist before automating multi-target installs."],"tags":["cli","install","unimplemented-target"],"backgroundTag":"unimplemented-target-skipped","analyzedSha":"c9c10f8c75412c7232cb2bd663e5fd1cea98d84e","analyzedAt":"2026-08-31T15:18:07.959Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}