Builds a Ubiquity plugin, generates manifest.json metadata from source TypeScript entrypoint contracts, formats output, and commits/pushes changes.
| Input | Required | Default | Description |
|---|---|---|---|
manifestPath |
No | ${{ github.workspace }}/manifest.json |
Path to the target manifest file. |
schemaPath |
No | ${{ github.workspace }}/src/types/plugin-input.ts |
Source schema entrypoint used for build artifacts. |
pluginEntry |
No | ${{ github.workspace }}/src/index.ts |
Plugin runtime entrypoint used during build. |
commitMessage |
No | chore: [skip ci] updated manifest.json and dist build |
Commit message for generated changes. |
nodeVersion |
No | 24.11.0 |
Node version used by the action. |
treatAsEsm |
No | false |
Replaces __dirname with import.meta.dirname in built output. |
bundleSingleFile |
No | false |
Enables single-file esbuild bundling. |
sourcemap |
No | false |
Generates source maps for build output. |
skipBotEvents |
No | true |
Sets manifest.skipBotEvents (true/false). |
excludeSupportedEvents |
No | "" |
Comma-separated listener events to remove from generated ubiquity:listeners. |
The action derives metadata from source TypeScript modules by inspecting the plugin entrypoint call:
createPlugin<TConfig, TEnv, TCommand, TSupportedEvents>(...)(preferred)createActionsPlugin<TConfig, TEnv, TCommand, TSupportedEvents>(...)(fallback)
- The entrypoint must use explicit generics.
- The options object must include a direct
settingsSchemaproperty. TCommandmust be either:null, or- a type alias declared as
StaticDecode<typeof X>orStatic<typeof X>.
TSupportedEventsmust resolve to string-literal events (direct union or traceable alias).
| Field | Source |
|---|---|
name |
package.json#name |
description |
package.json#description |
short_name |
${repository}@${ref} |
configuration |
runtime value referenced by settingsSchema |
commands |
runtime schema inferred from TCommand (or omitted when TCommand = null) |
ubiquity:listeners |
string literals resolved from TSupportedEvents, minus excludeSupportedEvents |
skipBotEvents |
action input skipBotEvents (default true) |
The manifest script fails immediately when:
- No valid entrypoint callsite is found.
- Multiple
createPlugincallsites are found. settingsSchemais missing from options.TCommandis non-null and not traceable toStaticDecode<typeof ...>/Static<typeof ...>.TSupportedEventscannot be resolved to string literals.excludeSupportedEventsincludes unknown events.
excludeSupportedEvents uses exact string matches only.
Example:
with:
excludeSupportedEvents: "issues.labeled,pull_request.opened"Run manifest generation locally against any plugin project:
node .github/scripts/update-manifest.js /absolute/path/to/plugin-projectThis command reads source under src/, updates manifest.json, and formats it with Prettier.