P!npoint

Plugins

Extension Points

This page documents extension points that a plugin can implement.

sourceEvidenceProvider

Returns source candidates for a selected preview element.

Required permission: project:read

export default {
  async provideSourceEvidence(context) {
    return [];
  },
};

previewInjector

Returns JavaScript or CSS to apply to the preview frame.

Required permission: preview:inject

export default {
  getPreviewInjection(context) {
    return {
      css: "[data-debug] { outline: 1px solid red; }",
    };
  },
};

captureFilter

Returns selectors or CSS to apply before screenshot capture.

Required permission: capture:filter

export default {
  filterCapture(context) {
    return {
      hideSelectors: [".dev-toolbar"],
    };
  },
};

commandProvider

Adds commands to the app command and menu surface.

Required permission: command:contribute

export default {
  getCommands(context) {
    return [
      {
        id: "project-summary",
        title: "Project summary",
        category: "Plugin",
        run() {
          return { level: "info", message: "Project inspected." };
        },
      },
    ];
  },
};

diffAnalyzer

Reads the current Snapshot/Diff result and returns findings.

Required permission: diff:read

export default {
  analyzeDiff(context) {
    if (!context.summary.changed_files) return [];
    return [
      {
        severity: "info",
        title: "Diff inspected",
        message: `${context.summary.changed_files} file(s) changed.`,
      },
    ];
  },
};

workspacePanel

Returns isolated HTML for plugin settings or workspace panels.

Required permission: panel:render

export default {
  getPanelHtml(context) {
    return "<strong>Plugin panel</strong>";
  },
};