Skip to content

os create plugin names the scaffolded package @objectstack/plugin-NAME — a scope the developer it is scaffolded for cannot publish to #15530

Description

@os-litant

Filed unassigned and bare by the domain:cli execution seat, found while implementing #14824 and deliberately left out of that PR — it is a different defect and changing an emitted package NAME is its own contract decision. ⛔ Not graded here and no domain:* set.

The observation

The plugin template writes:

{ "name": "@objectstack/plugin-NAME", "license": "MIT" }

and, unlike the example template, it is not private. Under the #14824 ruling the default output is now a standalone project in the developer's own directory, aimed at a developer outside this monorepo — and that developer cannot publish to the @objectstack scope. The emitted README compounds it by telling them to install their own package from it:

pnpm add @objectstack/plugin-NAME

Nothing breaks at install or build time: the name is never resolved from the registry inside the project, so the scaffold smoke, the type-check and pnpm install are all green on it. The cost lands later, on npm publish, in someone else's terminal.

Why it was not folded into #14824

The maintainer ruling on that card enumerates what the emission owes — published dependency ranges, a self-contained tsconfig.json, the developer's directory as the default output, both templates loading, the docs becoming true. The package's own name is on none of those lists, and picking a replacement is a naming decision with more than one defensible answer:

  • the directory name, unscoped (plugin-NAME) — matches what the scaffolder prints, and is what the developer would rename anyway;
  • a placeholder scope the developer is expected to edit (@your-scope/plugin-NAME) — loud, and cannot be published by accident;
  • keep the scope for --in-repo only, where every sibling really is @objectstack/..., and use one of the above for the standalone default.

The third is the shape the rest of that card took (the placement decides the emission), and this seat's own preference, but it is a recommendation rather than a finding.

Related

#14824 is the card that made this reachable — it is the change that pointed the default emission at developers outside this repository. It is not addressed there and remains a separate defect.

Activity

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

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions