Skip to content

Building plugins

AuroraDocs has a developer-preview plugin API. It is useful for bundled plugins and local experimentation, but it is not yet a public remote-plugin marketplace.

Current Status

Available today:

  • local/bundled plugin manifests
  • sidebar widgets
  • slash commands
  • custom property types
  • custom database views
  • object lifecycle event hooks
  • isolated plugin storage helpers
  • permissions declared in the manifest

Not implemented as general user-facing distribution:

  • public remote plugin install from arbitrary URLs
  • signed package verification
  • marketplace discovery
  • secure third-party sandboxing strong enough for untrusted code

Treat plugins as code you trust.

Manifest

A plugin manifest describes the plugin identity, permissions, and entry point.

json
{
  "id": "com.example.timestamp",
  "name": "Timestamp",
  "version": "1.0.0",
  "description": "Insert a formatted timestamp.",
  "permissions": ["slashCommand", "storage.read", "storage.write"],
  "main": "./bundle.js"
}

Use a stable reverse-domain id. Declare only the permissions the plugin needs.

Permissions

PermissionWhat it grants
slashCommandRegister commands in the editor slash menu
propertyTypeRegister custom property types
databaseViewRegister custom database/collection views
sidebarAdd right-panel/sidebar widgets
eventsSubscribe to object create/update/delete hooks
storage.readRead plugin-owned storage
storage.writeWrite plugin-owned storage

Contribution Types

Slash Commands

Slash commands appear in the / menu. They receive the editor host context and should keep edits narrow and reversible.

js
window.__auroraPlugin__ = {
  id: 'com.example.timestamp',
  name: 'Timestamp',
  version: '1.0.0',
  permissions: ['slashCommand'],
  slashCommands: [
    {
      id: 'insert-timestamp',
      title: 'Timestamp',
      description: 'Insert the current date and time',
      command(editor) {
        editor.chain().focus().insertContent(new Date().toLocaleString()).run()
      },
    },
  ],
}

Property Types

Custom property types can render custom cells/editors while storing normal Aurora property values.

Database Views

Database views can add alternate visualizations for collections, receiving the filtered objects, properties, schema, and object-open callbacks from Aurora.

Sidebar widgets render in the right panel and are best for compact contextual tools. Keep them responsive and avoid assuming desktop-only screen width.

Events

Lifecycle hooks can respond to object creation, updates, or deletion. Event handlers should avoid long blocking work.

Storage

Plugin storage is namespaced. Use it for non-secret plugin state. Do not store provider keys, OAuth tokens, passwords, or recovery phrases in plugin storage.

Development Notes

During development, use local or bundled paths and refresh the app after bundle changes. Remote URL installation may exist in historical docs or experiments, but it is not the supported public path until signing and marketplace controls are implemented.

For the current contract, see the repository references:

  • docs/reference/plugin-api.md
  • docs/reference/plugin-authoring-guide.md

Built with AuroraDocs.