ReadAware

Publishing a plugin

The marketplace works like Raycast's extension repository: your plugin lives in the public readaware-plugins repository and lands via pull request. Once merged, it appears in the app under Settings → Plugins → Marketplace and installs with one click.

Author in TypeScript

TypeScript is the recommended path. The repository ships a template/ with the typed API (types/plugin-api.d.ts) wired up — copy it, write src/main.ts, and build a single self-contained module:

bun build src/main.ts --outfile main.js --format esm

What ships is always the built main.js; keep src/ committed so reviewers can read the real code. Plain JavaScript is equally accepted. The official plugins in plugins/ are authored this way — use them as living examples.

Submitting

  1. Fork the repository.
  2. Copy template/ to plugins/<your-plugin-id>/, containing at least manifest.json and main.js. The folder name must equal the manifest id.
  3. Add a matching entry to registry.json, keeping the array sorted by id.
  4. Run the same checks CI will run:
    node scripts/validate.mjs
    npx tsc --noEmit
  5. Open a pull request describing what the plugin does and why it needs each permission it declares.

CI enforces registry–manifest consistency, id shape, the permission whitelist, and file existence, and type-checks every TypeScript plugin.

Updates

Same flow: bump version in both manifest.json and registry.json in one pull request. Note the app reads the registry through a CDN, so a merged update can take a little while to appear in the marketplace tab.

Review expectations

  • Declare the minimum permissions. Pull requests asking for more than the code uses will be sent back — see the permission table.
  • main.js must be readable, or accompanied by the source it was bundled from.
  • No obfuscated code, no analytics or tracking, no remote code loading.

Plugins run inside the app with the same access as the app itself. Installation is a trust decision users make per plugin, and this review is the community's first line of defense — write plugins you would be comfortable installing from a stranger.