stella plugin — Scanner Plugin Manifests CLI Reference

Audience: operators and plugin authors who need to inspect or verify Scanner language-analyzer plug-in manifests before deployment, including in air-gapped environments.

The root plugin command group provides offline, deterministic inspection of Scanner language-analyzer manifests. It drives the Scanner ScannerPluginLoader directly to list and verify manifests; it never fetches external resources and never activates (executes) plug-in assemblies, so it is safe to run against untrusted directories.

Source: src/Cli/StellaOps.Cli/Commands/CommandHandlers.ScannerPlugins.cs.

Commands

stella plugin list <dir>

Lists manifests that the loader accepts from <dir>.

stella plugin list plugins/scanner/analyzers \
  --trust-store src/__Tests/__Datasets/trust-store/scanner-plugins/dev

Text output is sorted by plug-in id and includes:

id | version | capabilities | payloadSha256
stellaops.scanner.plugin.elixir | 0.1.0 | elixir,erlang,hex,language-analyzer,otp | <sha256>

The capabilities column lists the manifest’s full capabilities array sorted in ordinal order (the language-analyzer marker capability is included).

Options:

The command exits 0 only when at least one manifest loads and no manifest is rejected.

With --format json the command emits a deterministic object:

{
  "success": true,
  "count": 1,
  "rejectedCount": 0,
  "plugins": [
    { "id": "stellaops.scanner.plugin.elixir", "version": "0.1.0",
      "capabilities": ["elixir", "erlang", "hex", "language-analyzer", "otp"],
      "payloadSha256": "<sha256>" }
  ],
  "rejected": []
}

Each rejected entry carries id, reasonCode, and reason.

stella plugin verify <dir>

Dry-runs manifest verification for every discovered manifest and prints the signature status for each manifest.

stella plugin verify plugins/scanner/analyzers \
  --trust-store src/__Tests/__Datasets/trust-store/scanner-plugins/dev \
  --strict

Text output is sorted by plug-in id and includes:

id | version | signatureStatus | payloadSha256 | reason
stellaops.scanner.plugin.elixir | 0.1.0 | verified | <sha256> | -

Options:

Signature status values:

verify exits non-zero when any manifest is rejected (or when no manifest loads). With --strict, unsigned manifests are rejected and the reason column carries the stable loader reason code prefixed to the message, for example signature.missing: .... Other stable loader codes surface the same way (for example signature.payload_mismatch, signature.verify.failed, schema.validation.failed).

With --format json the command emits { success, count, plugins: [ { id, version, signatureStatus, payloadSha256, reason } ] }.

Directory Shape

The command accepts either:

Discovery and output ordering use ordinal string ordering. The command does not fetch external resources and does not run plug-in code.

The root plugin group is the read-only directory-scanning subset. The stella scanner plugins command tree covers the same loader plus operator curation: