nocobase-app-installer
Install and run NocoBase 3 with app-installer
This Skill installs NocoBase that is already built — nothing on the machine is developed, only run. @nocobase/app-installer puts each release under releases/<version>_<build time>/app and runs it under pm2; config.yml, app.env, storage/, backups/ and logs/ sit beside the releases and survive every upgrade. It installs from --archive, a deployment archive built in an application project. This Skill decides when to use it and how to act on what it reports; --help is the reference for every flag.
Run it
Run the installer on the machine where the Agent works, with the registry named and --json. For SSH deployment this is the local machine, not the server:
npx --yes --registry="${NOCOBASE_REGISTRY:-https://registry.npmjs.org}" @nocobase/app-installer@beta <command> … --json
Use @beta for the published installer; do not fall back to an untagged invocation or @latest. Preserve an explicit version required for an existing installation or requested by the user, and use the snapshot tag when testing an unreleased local registry.
NocoBase 3 publishes to the public npm registry. NOCOBASE_REGISTRY is set only when someone points the shell at another registry, such as an unreleased snapshot; the installer records the registry in installer.json and suggests commands from it. The --yes before the package is npx's own: it downloads the installer without asking. The installer's --yes, after the command, is a separate answer that only the user gives.
Use the published beta channel unless the user specifies an exact version. An unreleased snapshot registry tags its packages latest; use that tag only when testing such a registry. Check --help before deploying to confirm the selected version supports deploy and --ssh.
--json prints one document on stdout and progress on stderr, in the same envelope as pnpm nocobase … --json. Read the document, not the exit code alone: ok, status (success, success-noop or failure), result, and on failure error.code, error.message, error.suggestions and error.details. Each suggestion has a message and, where there is one, a run of { command, args }: an executable and its arguments, run as given without a shell. app-installer 0.1.0-beta.1 and earlier, which a suggested command pinned to that version still runs, print status error and run as one shell line that runs as printed, so tell success from failure by ok.