Skip to main content

Plugin development

Plugins are local, owner-reviewed extensions built against a versioned wire contract. They cannot inject arbitrary browser code; UI contributions are portable declarations rendered by Jiandu.

The canonical Plugin API v1 schemas, restricted runtime declarations, TypeScript authoring SDK, validators, harness, and examples live in plugin-contract/.

Before authoring:

  1. Read the versioned contract and capability model.
  2. Start from an included example instead of inventing wire fields.
  3. Declare the smallest required capabilities.
  4. Validate with the authoring harness.
  5. Exercise timeouts, malformed input, and unavailable dependencies.
  6. Document the operator-visible behavior and safe disable path.

The runtime is disabled by default in the household profile. A plugin package is not trusted merely because it passes schema validation; operators still need reviewable provenance and an explicit enablement decision.