Skip to content

Getting Started

aleksey-hoffman edited this page May 17, 2026 · 4 revisions

Getting Started

Before you start

Warning

If you plan to publish your extension in the Marketplace, make sure it meets these expectations below, otherwise it may not be accepted:

  1. Quality — Design, behavior, and usefulness should be intentional: the extension should work well, look good, and offer a clear benefit to users.
  2. Purpose — It should be meaningfully related to file management, productivity, or how people use the Sigma File Manager app itself. Extensions that are unrelated to the app’s scope are unlikely to be listed, unless it's impressive enough to become an exception to the rule.

1. Choose a Template

Start from sfm-extension-template and pick a folder under templates/.

Template Use case
templates/minimal-command One simple command and notifications
templates/context-menu-notification File context-menu actions
templates/modal-and-dialogs Commands plus dialogs or a modal
templates/progress-and-context Progress UI, current context, or settings
templates/binary-deno A managed external binary
templates/powershell-runtime Windows-only PowerShell integration
templates/advanced-shell-fallback Cross-platform shell and binary workflows

Copy the selected folder into a new repository. The copied folder becomes your extension root.

2. Update the Manifest and Starter Content

Code-based extensions usually contain:

  • package.json
  • src/
  • locales/
  • dist/

Manifest-only theme and icon theme extensions can start with just package.json and any assets referenced by the manifest.

Update these package.json fields before you build:

  • id
  • name
  • publisher
  • repository
  • license
  • categories
  • tags
  • engines
  • platforms if your extension is not cross-platform
  • permissions so they match what your code actually uses

Use your own publisher identity, usually your GitHub user or organization. Do not keep template placeholders, and do not use Sigma File Manager names, logos, badges, or wording that makes a community extension look official.

For API extensions that run code, the usual base looks like this:

{
  "$schema": "./node_modules/@sigma-file-manager/api/manifest.schema.json",
  "id": "your-name.my-extension",
  "name": "My Extension",
  "version": "1.0.0",
  "type": "module",
  "extensionType": "api",
  "main": "dist/index.js",
  "engines": {
    "sigmaFileManager": ">=2.0.0"
  },
  "scripts": {
    "build": "tsc",
    "prepare": "npm run build"
  }
}

Then replace the starter placeholders:

  1. Replace starter command IDs and context-menu IDs in package.json.
  2. Replace the same starter IDs in src/index.ts.
  3. Update activationEvents, especially onCommand:... values.
  4. Rename visible strings in locales/en.json.
  5. Remove any demo commands, menu items, dialogs, or notifications you are not shipping.

Use this ID pattern:

  • In contributes.commands, contributes.contextMenu, sigma.commands.registerCommand(), and sigma.contextMenu.registerItem(), use the short ID such as download-video.
  • In activationEvents, use the full ID such as onCommand:sigma.video-downloader.download-video.

See Manifest Reference for the full manifest shape.

3. Install Dependencies

npm install

@sigma-file-manager/api is a development dependency that provides TypeScript types and the manifest schema. The host does not run npm install for end users.

4. Build

If your extension runs code, build it before installing or publishing:

npm run build

For code-based extensions, confirm that the file referenced by main exists, usually dist/index.js.

5. Test Locally

In Sigma File Manager app:

  1. Open Extensions page.
  2. Open the top-right menu.
  3. Choose Install extension from folder.
  4. Select the folder that contains your extension package.json.

Run npm run build again before reinstalling whenever you change compiled files. Manifest-only theme and icon theme extensions do not need a build step unless they include generated assets.

Continue

← Previous: Home

Next: Manifest Reference

Clone this wiki locally