Skip to content

Publishing ​

Publish your plugin to the Omniscio Marketplace so other Omniscio users can discover and install it.

Overview ​

The publish workflow is:

  1. Build and package your plugin
  2. Authenticate with GitHub (automatic on first publish)
  3. Upload the .amcplugin archive to the marketplace
  4. Wait for review (manual review by the marketplace team)
  5. Published -- your plugin appears in Omniscio's marketplace browser

Prerequisites ​

  • A GitHub account
  • A built and validated plugin (run npx amc-plugin validate first)

Step 1: Build and Package ​

Make sure your plugin builds cleanly and passes validation:

bash
npm run build
npx amc-plugin validate
npx amc-plugin package

Expected output:

Manifest validated
Compiling TypeScript...
Build complete

PASS: Manifest schema
PASS: SDK version declared (2.0.0)
PASS: UI entry point exists
PASS: TypeScript compilation
PASS: No banned imports

All checks PASSED

Packaged: my-plugin-1.0.0.amcplugin (0.01 MB)

TIP

If you skip the package step, the publish command runs it automatically.

What Your Listing Shows ​

There is no listing form. Everything the marketplace page shows comes from the package you upload:

On the listingSourceLimits
Name, description, author, category, license, icon, tagsmanifest.json → plugin.*see the manifest reference
Long description (Overview tab)the README.md next to manifest.json, packaged automatically by amc-plugin package (CLI 3.1 and later)markdown only, 64 KB; use absolute https:// image URLs, a repo-relative path cannot load
Screenshot galleryplugin.screenshots, a list of image URLs you hostup to 8 http(s) URLs, 2048 characters each
Support tabplugin.links with any of homepage, support, privacy, contact, repositoryeach an http(s) URL, all optional
Ratings and downloadsusers and the marketplacenothing to supply

amc-plugin preflight (and the preflight that runs inside publish) prints one Listing line: pass when the README, screenshots and support links are all present, otherwise a warning that names what is missing. It never blocks a publish, so a plugin with nothing to show can still ship.

Older CLIs drop the README

Before CLI 3.1, amc-plugin package shipped only dist/ and assets/ (or a flat plugin's entry-point folders), so a README in your repository never reached the marketplace. Upgrade with npm install -D @agent-mc/plugin-cli@^3.1.0, or publish with npx @agent-mc/plugin-cli@latest publish, then publish a new version — the listing updates when that version is approved.

Step 2: Publish ​

Run the publish command from your plugin directory:

bash
npx amc-plugin publish

First-Time Authentication ​

On first publish, the CLI opens your browser to the Omniscio Marketplace sign-in page for GitHub OAuth authentication:

Opening browser for GitHub sign-in...
If the browser doesn't open, visit: https://amc-marketplace-jls.web.app?session=A1B2C3

Waiting for sign-in...
.....
Signed in as your-github-username

After signing in, the CLI stores your token locally at ~/.amc/marketplace-token. Subsequent publishes reuse it, and when it expires the CLI renews it silently in the background using the stored refresh token — so you should only see the browser flow again if you sign out or your access is revoked.

Upload ​

After authentication, the CLI locates (or creates) the .amcplugin file and uploads it:

Uploading my-plugin-1.0.0.amcplugin (0.01 MB)...

Submitted for review (submission ID: abc123)
Run `amc-plugin status` to check progress, or use --watch to wait.

Adding a Changelog ​

Include a changelog message for the marketplace listing:

bash
npx amc-plugin publish --changelog "Added dark mode support and fixed sidebar badge count"

Watch Mode ​

Use --watch to poll for the review decision instead of checking manually:

bash
npx amc-plugin publish --watch

The CLI polls every 30 seconds for up to 3 hours:

Uploading my-plugin-1.0.0.amcplugin (0.01 MB)...

Submitted for review (submission ID: abc123)

Watching for review decision...
......
Plugin published!

If the submission is rejected, the CLI prints the reviewer's feedback and exits with a non-zero code:

Rejected: Plugin must handle errors in the onEnable lifecycle hook

Step 3: Check Status ​

Check the review status of your submissions at any time:

bash
npx amc-plugin status

Output:

Submissions for "my-plugin":

  [?] my-plugin v1.0.0 — pending (5/17/2026)

Status icons:

IconStatusMeaning
[?]pendingAwaiting review
[OK]approvedPublished to the marketplace
[X]rejectedReview failed -- see feedback

When run from a plugin directory (with a manifest.json), the status command filters to show only submissions for that plugin. Run it from any other directory to see all your submissions across all plugins.

If rejected, the feedback is shown:

Submissions for "my-plugin":

  [X] my-plugin v1.0.0 — rejected (5/17/2026)
      Feedback: Plugin must handle errors in the onEnable lifecycle hook

Re-Submitting After Changes ​

After a rejection or when publishing an update:

  1. Fix the issues or make your changes
  2. Bump the version in manifest.json (in the plugin.version field)
  3. Rebuild, validate, and publish:
bash
npm run build
npx amc-plugin validate
npx amc-plugin publish --changelog "Fixed onEnable error handling"

Each submission is tracked independently. You can see the full history with amc-plugin status.

Review Process ​

Submissions go through these states:

pending  -->  approved  (published to marketplace)
         -->  rejected  (feedback provided)

The review checks for:

  • Valid manifest schema and SDK version compatibility
  • No banned imports (electron, better-sqlite3, worker_threads, child_process — the last two in both their bare and node:-prefixed spellings)
  • Correct entry points (UI and/or backend files exist)
  • Package size within the 50 MB limit
  • Security review of plugin behavior

You will hit the banned-import rule before review, not at it

amc-plugin publish runs the same scan as part of its preflight and refuses to upload on a hit, so this is not a surprise you discover days later in a rejection. --skip-preflight bypasses it deliberately, but the rule still applies at review — and, more to the point, at runtime: marketplace plugin backends run under Node's --permission, which blocks these modules, so a plugin built on one installs and then fails every call.

WARNING

The marketplace enforces a 50 MB package size limit. The amc-plugin package command warns you if your archive exceeds this.

Authentication Management ​

Check Current Identity ​

bash
npx amc-plugin whoami

Output:

Signed in as: your-github-username (uid: abc123)

If not signed in:

Not signed in. Run `amc-plugin publish` to authenticate.

Sign Out ​

bash
npx amc-plugin logout

Output:

Signed out (was: your-github-username)

This deletes the stored token at ~/.amc/marketplace-token. The next publish command will prompt for authentication again.

Token Storage ​

The CLI stores your marketplace authentication token at:

~/.amc/marketplace-token

The token includes your GitHub username, Firebase UID, and an expiration timestamp. It is automatically refreshed when needed, and expired tokens trigger a new browser-based sign-in flow.

CLI Command Summary ​

CommandDescription
amc-plugin publishUpload plugin to the marketplace
amc-plugin publish --watchUpload and poll until approved/rejected
amc-plugin publish --changelog "..."Upload with a changelog message
amc-plugin statusCheck submission review status
amc-plugin whoamiShow authenticated GitHub username
amc-plugin logoutClear stored authentication token

Omniscio Plugin SDK