apps/api, apps/web, packages/shared) and merging the required dependencies into the respective package.json files.
Plugins are hosted in the public ship-plugins repository and installed via the create-ship-app CLI.
Installing a plugin
Run the following command from your project root:- Download the plugin files from the ship-plugins repository.
- Copy files into your project, preserving the directory structure. Existing files are never overwritten.
- Merge dependencies declared in the plugin manifest into the appropriate workspace
package.jsonfiles. - Run post-install — executes
pnpm installandpnpm run --filter shared generateto install new dependencies and regenerate shared schemas.
Available plugins
| Plugin | Description |
|---|---|
| stripe-subscriptions | Subscription billing with Stripe Checkout, webhooks, and a pricing page |
| ai-chat | AI chat with streaming responses powered by Google Gemini |
Plugin structure
Each plugin in the ship-plugins repository follows the same convention:package.json manifest declares which npm packages should be added to which workspace. For example:
stripe@20.3.1 to apps/api/package.json.
Creating a plugin
Ship also provides a command to package your own feature as a plugin from the last git commit:- Extract new files added in the last commit.
- Detect dependency changes from modified workspace
package.jsonfiles. - Package everything into the plugin format.
- Push to a new branch on the ship-plugins repository and provide a PR link.
You need push access to the ship-plugins repository to use
create-plugin.