{"record":{"id":"db383028c4ea3174","repo":"EveryInc/compound-engineering-plugin","slug":"skipping-extra-no-output-returned","errorCode":null,"errorMessage":"Skipping ${extra}: no output returned.","messagePattern":"Skipping (.+?): no output returned\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/commands/convert.ts","lineNumber":189,"sourceCode":"      targetName === \"opencode\" ? resolveOpenCodeWriteScope(hasExplicitOutput, resolvedScope) : resolvedScope\n    await target.write(primaryOutputRoot, bundle, effectiveScope)\n    console.log(`Converted ${plugin.manifest.name} to ${targetName} at ${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,\n        scope: handler.defaultScope,\n      })\n      const extraScope =\n        extra === \"opencode\"\n          ? resolveOpenCodeWriteScope(hasExplicitOutput, handler.defaultScope)\n          : handler.defaultScope\n      await handler.write(extraRoot, extraBundle, extraScope)\n      console.log(`Converted ${plugin.manifest.name} to ${extra} at ${extraRoot}`)\n    }","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/EveryInc/compound-engineering-plugin/blob/c9c10f8c75412c7232cb2bd663e5fd1cea98d84e/src/commands/convert.ts#L171-L207","documentation":"Mirrors the primary-target 'no output returned' skip for --also targets: an implemented handler ran convert() but returned no bundle, so nothing is written for that extra target and the run continues. It separates 'handler exists' from 'handler produced installable output'.","triggerScenarios":"An extra target passed via --also whose handler.convert(plugin, options) returns falsy because the plugin has nothing convertible for that target.","commonSituations":"Converting a minimal plugin where some targets legitimately have nothing to emit; handlers that return null on unsupported plugin structures; testing with empty fixtures.","solutions":["Verify the plugin contains content mappable to the extra target.","Inspect the handler's convert() to understand its null-return conditions.","Drop the extra target if it is not relevant to your plugin.","Report upstream if the target should have emitted output."],"exampleFix":"// before\nplugin without agents, --also agents-only-target -> 'Skipping X: no output returned.'\n// after\nadd the content type the target consumes, then re-run\n","handlingStrategy":"validation","validationCode":"// confirm the plugin has the content type the extra target consumes\nconst stats = await stat(pluginRoot + \"/skills\").catch(() => null);\nif (!stats) console.warn(\"No skills to convert for skill-consuming targets\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Match extra targets to the plugin's actual content types.","Do not assume every implemented target emits for every plugin.","Review the writer's null-return conditions before scripting.","Log which targets were skipped when automating conversions."],"tags":["cli","convert","empty-output"],"backgroundTag":"empty-conversion-output","analyzedSha":"c9c10f8c75412c7232cb2bd663e5fd1cea98d84e","analyzedAt":"2026-08-31T15:18:07.959Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}