Skip to main content
Build a plugin with a greet executor that prints a message. This example uses plain CommonJS JavaScript so you can run it without a compilation step. Once it works, use the TypeScript executor contract to add types.

1. Prepare a workspace

Use an existing Isox workspace with Node.js 24 or 26+. If you need a new one:
Run the remaining commands from the workspace root.

2. Create the plugin package

Create this directory structure:
Add tools/isox-greeting/package.json:
The executors field tells Isox where to find the registry. Add tools/isox-greeting/executors.json:
Implementation paths are relative to the registry file. Add tools/isox-greeting/greet.cjs:
Return { success: false } or throw an error to fail the target. Isox passes options to your executor; the executor is responsible for validating them.

3. Install and configure it

Install the local package so Isox can resolve it from the workspace root:
Create apps/demo/project.json:
The executor reference combines the package name and registry entry: @example/isox-greeting:greet.

4. Run the executor

The first run logs demo: My first Isox plugin works. The second overrides the configured message and logs demo: Hello again!. Reset refreshes cached project definitions after adding or editing project.json. If you change the plugin’s package metadata, reinstall the local package too.

Where to go next

The example is private to your workspace. Before publishing, choose your own package name, remove private: true, and check the package contents with npm pack --dry-run. See layout and packaging for compiled implementations and schemas.