Skip to content

cli: drop the never-loaded @oclif/plugin-help and @oclif/plugin-plugins from oclif.plugins, and correct every published text that says os plugins works #21285

Description

@objectstack-fleet

Filing-gate class: ③ maintainer-directed task.
Body last written 2026-10-02T01:43Z: the spec TSDoc sentence was split out to the spec-lane card #21286; this card does not touch packages/spec.
Routing: the maintainer direct-dispatch channel (session_018gA1pE6eJtwHhqx72G8U9X) routes this card to domain:cli and area:devpath; triage grades the priority.
Acting reader: the maintainer direct-dispatch session (Seat: domain:devx#3), which dispatches one os-dev.
Dedup: I listed 558 objectstack issues and PRs over REST (open, plus the most recently updated closed) and grepped titles and bodies for oclif.plugins, os plugins install, plugin-plugins and plugin-help. The only hits are today's version bump (#21125 / PR #21212) and the Dependabot PRs it replaced (#21031, #21035). None removes the entries.

Maintainer ruling (verbatim)

同意:oclif.plugins: 里面那两个插件只装在 devDependencies,所以从来没加载过,os help 和 os plugins 都不是可用命令。我建议删掉这两条配置。

Given in session session_018gA1pE6eJtwHhqx72G8U9X on 2026-10-02, in reply to the seat's recommendation after #21212 landed.

Measured (at origin/main c7396f1a9)

  • packages/cli/package.json → oclif.plugins lists @oclif/plugin-help and @oclif/plugin-plugins. Both packages appear only in devDependencies (^7.0.2, ^7.0.3).
  • oclif's core-plugin loader matches oclif.plugins names only against dependencies, so neither plugin ever loads:
  • Text that names this configuration or the commands it was meant to supply:
    • content/docs/plugins/index.mdx:400-408;
    • packages/cli/README.md ### os plugins (oclif) (about line 206) and ## oclif Plugin System (about lines 216-277);
    • packages/cli/bin/run.js:84-94;
    • packages/cli/src/commands/doctor.ts:2377-2380 and doctor-deprecation-hint-commands.test.ts:15;
    • packages/cli/test/plugin-commands.test.ts:22-23;
    • docs/qa/platform-checklist/areas/cli.json:658;
    • packages/spec/src/kernel/cli-extension.zod.ts:17-18, plus its generated page content/docs/references/kernel/cli-extension.mdx:21 (carried by spec(kernel): the cli-extension.zod.ts TSDoc tells plugin authors to os plugins install, a command os has never registered #21286, not this card).

What to do

  1. Remove the plugins array from oclif in packages/cli/package.json. Change no other oclif key.
  2. The two devDependencies exist only to back that array.
  3. Behaviour acceptance: nothing an operator sees changes, because the plugins never loaded.
    • Show os --help and the full command list byte-identical before and after.
    • Take a positive control first: show that the reading would catch a real difference.
  4. Fix the published text this change makes false or touches. Each site gets a conclusion in the PR body: changed; already true (with evidence); or out of scope (with the reason). No site is skipped silently.
    • content/docs/plugins/index.mdx callout. Its stated reason ("lists @oclif/plugin-plugins under oclif.plugins, but the package sits in devDependencies") becomes false. Restate the fact as it will be: @objectstack/cli ships no plugin manager, os plugins … and os help are not commands, and os --help is the help entry. Keep the build-your-own-distribution route only if it is still true.
    • packages/cli/README.md: ### os plugins (oclif) and ## oclif Plugin System describe os plugins install/uninstall/update as available, which is false. Correct them.
    • packages/cli/bin/run.js:84-94: its reasoning names the devDependencies placement. Restate it to the new fact.
    • doctor.ts:2377-2380 and doctor-deprecation-hint-commands.test.ts:15 say "neither bundled plugin … supplies one". After this change there is no bundled plugin. Restate.
    • test/plugin-commands.test.ts:22-23 asserts both entries are present. Rewrite it to pin the new truth (no oclif.plugins, no plugin manager). ⛔ Do not just delete the guard.
    • docs/qa/platform-checklist/areas/cli.json:658: the evidence text names the array's contents.
    • ⛔ Not this card: packages/spec/src/kernel/cli-extension.zod.ts:17-18 and its generated page content/docs/references/kernel/cli-extension.mdx:21 ("or users install it via os plugins install <pkg>"). That sentence sits on the spec contract surface, which is spec-lane work. It is carried by spec(kernel): the cli-extension.zod.ts TSDoc tells plugin authors to os plugins install, a command os has never registered #21286. Leave both files untouched.
  5. Changeset: a patch for @objectstack/cli (its published manifest's oclif field and its README). Not skip-changeset.

Out of scope (a separate maintainer question)

With no plugin manager and no listed plugins, the CLI-extension protocol in cli-extension.zod.ts (OclifPluginConfig) describes a capability no os user can reach today, short of building their own os distribution. Whether to deliver it (a plugin manager as a real dependency) or retire the protocol (ADR-0049 enforce-or-remove) goes to the maintainer separately. ⛔ This card corrects false sentences only. It changes no schema or export.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdependenciesPull requests that update a dependency filedomain:cli

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions