Publish a community plugin

List your plugin with one pull request. The catalog stores only a pointer to your source, and nothing runs until someone installs it.

  1. Host your plugin publicly

    Push your plugin to a public git repository or publish it to npm. Tag releases so the entry can pin a ref. New to plugins? Start with zcc plugin new <name>.

  2. Add your entry

    Create entries/<plugin-id>.json in the marketplace repository. Fork the repository first. The button opens a pre-filled file on GitHub; propose it on a branch to start a pull request.

    Create entry on GitHub Open repository

  3. Build and open the pull request

    From a clone of the repository, regenerate the manifest and this website, then commit everything together:

    $npm ci && npm run build && npm test && git add entries marketplace.json docs

    Once it merges, your plugin appears here and in Zana's Browse view on the next catalog refresh.

Example entry

The site block is for this website only and is removed from marketplace.json.

{
  "id": "my-plugin",
  "displayName": "My plugin",
  "description": "One sentence shown on the catalog card.",
  "overview": "A longer explanation for the plugin page: what it does, what it needs (CLIs, org aliases, permissions) and any caveats.",
  "icon": {
    "lucide": "Puzzle"
  },
  "tags": [
    "developer-tools"
  ],
  "author": {
    "name": "Your name or team",
    "url": "https://github.com/your-name"
  },
  "source": {
    "git": {
      "url": "https://github.com/your-name/zcc-plugin-my-plugin.git",
      "ref": "v1.0.0"
    }
  },
  "site": {
    "category": "Developer Tools",
    "addedAt": "2026-01-31"
  }
}

Fields

FieldRequirementMeaning
idRequiredSlug (a–z, 0–9, -). Must equal the file name stem.
displayNameRequiredName on the card and plugin page.
descriptionRequiredOne sentence for the card.
author.nameRequiredTeam or person; add author.url to link it.
source.git / source.npmRequiredWhere Zana installs from: a public git repository (url, optional subdir and ref) or a published npm package (package, range).
overviewOptionalLonger text for the plugin page (max 4000 characters). Blank lines start new paragraphs.
tags, iconOptionalSearch keywords; icon.url (https) is shown on the website.
site.categoryWebsiteGroups the plugin on the website (max 40 characters). Defaults to "More plugins".
site.addedAtWebsiteYYYY-MM-DD; drives "New & notable" and the New sort.
site.badgeWebsiteShort label next to the name, e.g. "Beta" (max 24 characters).
site.screenshotsWebsiteUp to 6 https image URLs for the plugin page.
site.featuredWebsiteReserved for catalog maintainers.

Keep listings accurate and sources public. A listing is not an endorsement or a security audit. Each plugin keeps its own license.