EveryInc/compound-engineering-plugin · error · Error
Unknown bundled plugin: ${input}
Error message
Unknown bundled plugin: ${input} What it means
When the `--plugin` argument is not a filesystem path, `resolveCleanupPluginPath` treats it as a bundled plugin name: it first tries the repo root manifest, then falls back to `plugins/<name>/.claude-plugin/plugin.json` in the repo. If neither exists it throws this error, meaning the name matches no plugin bundled with (or constituting) this package.
Source
Thrown at src/commands/cleanup.ts:680
}
const repoRoot = fileURLToPath(new URL("../..", import.meta.url))
const rootManifestPath = path.join(repoRoot, ".claude-plugin", "plugin.json")
if (await pathExists(rootManifestPath)) {
try {
const raw = await fs.readFile(rootManifestPath, "utf8")
const manifest = JSON.parse(raw) as { name?: string }
if (manifest.name === input) return repoRoot
} catch {
// Fall through to legacy multi-plugin layout.
}
}
const legacyPluginPath = path.join(repoRoot, "plugins", input)
const legacyManifestPath = path.join(legacyPluginPath, ".claude-plugin", "plugin.json")
if (await pathExists(legacyManifestPath)) return legacyPluginPath
throw new Error(`Unknown bundled plugin: ${input}`)
}
function resolveWorkspaceRoot(value: unknown): string {
if (value && String(value).trim()) {
return path.resolve(expandHome(String(value).trim()))
}
return process.cwd()
}
function resolveCopilotWorkspaceRoot(outputRoot: string): string {
return path.basename(outputRoot) === ".github" ? outputRoot : path.join(outputRoot, ".github")
}
function resolveOpenCodeWorkspaceRoot(outputRoot: string): string {
return path.basename(outputRoot) === ".opencode" ? outputRoot : path.join(outputRoot, ".opencode")
}
function hasExplicitValue(value: unknown): boolean {View on GitHub (pinned to c9c10f8c75)
Solutions
- Use the default: run cleanup with no --plugin (defaults to "compound-engineering").
- Fix the spelling of the bundled plugin name, or check which plugins exist under plugins/ in your checkout.
- If you meant a local checkout, pass an explicit path starting with ./, / or ~ instead of a bare name.
Example fix
// before bun run src/index.ts cleanup --plugin compund-engineering // Error: Unknown bundled plugin: compund-engineering // after bun run src/index.ts cleanup --plugin compound-engineering
Defensive patterns
Strategy: validation
Validate before calling
const BUNDLED = ["compound-engineering"] // plugins bundled with this CLI
if (!pluginArg.startsWith(".") && !pluginArg.startsWith("/") && !pluginArg.startsWith("~")) {
if (!BUNDLED.includes(pluginArg)) {
throw new Error(`'${pluginArg}' is not a bundled plugin. Use "compound-engineering" or a filesystem path.`)
}
} Type guard
function isBundledPluginName(name: string): boolean {
return name === "compound-engineering" // extend if more bundled plugins ship
} Try / catch
try {
await cleanup({ plugin: pluginArg })
} catch (e) {
if (e instanceof Error && e.message.startsWith("Unknown bundled plugin:")) {
console.error(`No bundled plugin named '${pluginArg}'. Omit --plugin for the default.`)
} else throw e
} Prevention
- Run cleanup without --plugin; the default (compound-engineering) is almost always what you want.
- Only pass a bare name for plugins actually bundled in your checkout (check the plugins/ directory).
- For anything else — forks, other plugins — pass an explicit path starting with ./, /, or ~.
When it happens
Trigger: Running `cleanup --plugin some-plugin` where neither `<repoRoot>/.claude-plugin/plugin.json` path resolution accepts it nor `<repoRoot>/plugins/some-plugin/.claude-plugin/plugin.json` exists — a misspelled name, or running inside an installed/copy of the CLI where the bundled `plugins/` directory isn't present.
Common situations: Typo in the plugin name; using an npm-installed CLI where repo-relative lookup paths don't exist; expecting other plugins to be bundled when only compound-engineering is; version drift where a legacy bundled plugin was removed.
Related errors
- Unknown cleanup target: ${target}. Use one of: ${cleanupTarg
- Unknown permissions mode: ${permissions}
- Unknown target: ${targetName}
- Unknown permissions mode: ${permissions}
- Unknown target: ${targetName}
AI-assisted analysis of EveryInc/compound-engineering-plugin@c9c10f8c75 (2026-08-31).
Data as JSON: /api/errors/46dbe592cab155c6.
Report an issue: GitHub.