A pnpm monorepo for developing and publishing Nuxt modules and plugins under
the @dphonys/* scope. Packages are scaffolded from templates, versioned
independently with pnpm Release intents, and published through npm trusted
publishing.
dph-nuxt-stuff/
├── packages/ # Publishable Nuxt modules and plugins
├── templates/ # Template sources consumed by the Scaffolder
├── scaffolder/ # CLI (interactive or flag-driven) that generates new packages
├── release/
│ ├── publishing-contract/ # Enforces the Publication boundary in every check
│ └── release-preparation/ # Executable spec of pnpm independent releases
├── docs/ # Release and bootstrap runbooks
└── .github/workflows/ # CI, publish, semantic PR checks
Node comes from .nvmrc and pnpm is pinned via packageManager:
nvm use
pnpm installpnpm run build # Build all packages (turbo)
pnpm run test # Run every package's tests
pnpm run check # Full canonical gate: contract, types, format, lint, tests, build, publint
pnpm run fix # Auto-fix lint and formatting
pnpm run knip # Detect unused files, exports, and dependenciesGenerate a new package interactively from a template:
pnpm scaffoldScripts and agents scaffold without prompts by passing flags up front:
pnpm scaffold --template nuxt-module --name nuxt-image-tools --description "Image tools"--description is optional. Passing any scaffold flag opts into the
non-interactive mode, which is all-or-nothing: missing required flags and
invalid input exit non-zero instead of falling back to a prompt.
Generated packages start with private: true and a seeded 0.0.1 version.
They stay out of publication until a maintainer deliberately admits them by
removing private: true after the Starter behavior and documentation are
replaced — see docs/first-release-bootstrap.md.
Every consumer-visible change carries a pnpm Release intent:
pnpm changeMaintainers prepare a reviewed Release commit from all pending intents and,
once it reaches main, manually dispatch the publish.yml workflow. The
workflow reruns the canonical gate and publishes missing package versions with
npm trusted publishing and provenance — no tokens involved. The complete
procedure lives in docs/release-preparation.md.
- Conventional Commits enforced by
commitlint + Husky (
feat(scope): subject). - Only non-private direct children of
packages/*may be published, and they must satisfy the package-local contract checked bypnpm publishing-contractas the first step ofpnpm check. - Shared terminology for the project's concepts is defined in CONTEXT.md.