Interface: PluginManifest\<TName\>
Interface: PluginManifest<TName>
Plugin manifest that declares metadata and resource requirements. Attached to plugin classes as a static property. Extends the shared PluginManifest with strict resource types.
See
packages/shared/src/schemas/manifest.tspluginManifestSchema— Zod source of truth- SharedPluginManifest — shared re-export with JSONSchema7 config
Extends
Omit<SharedPluginManifest,"resources"|"config">
Type Parameters
| Type Parameter | Default type |
|---|---|
TName extends string | string |
Properties
author?
optional author: string;Author name or organization
Inherited from
Omit.authorconfig?
optional config: {
schema: JSONSchema7;
};Configuration schema for the plugin. Uses JSONSchema7 instead of the generated ConfigSchema (which is too restrictive).
schema
schema: JSONSchema7;description
description: string;Brief description of what the plugin does
Inherited from
Omit.descriptiondevOnly?
optional devOnly: boolean;When true, this plugin is only registered when NODE_ENV === "development". In any other environment createApp skips it entirely (not constructed, no routes, resources not validated). Use for dev-only tooling that must never run in a deployed app.
Inherited from
Omit.devOnlydisplayName
displayName: string;Human-readable display name for UI and CLI
Inherited from
Omit.displayNamehidden?
optional hidden: boolean;When true, this plugin is excluded from the template plugins manifest (appkit.plugins.json) during sync.
Inherited from
Omit.hiddenkeywords?
optional keywords: string[];Keywords for plugin discovery
Inherited from
Omit.keywordslicense?
optional license: string;SPDX license identifier
Inherited from
Omit.licensename
name: TName;Plugin identifier — the single source of truth for the plugin's name
Overrides
Omit.nameonSetupMessage?
optional onSetupMessage: string;Message displayed to the user after project initialization. Use this to inform about manual setup steps (e.g. environment variables, resource provisioning).
Inherited from
Omit.onSetupMessagerepository?
optional repository: string;URL to the plugin's source repository
Inherited from
Omit.repositoryresources
resources: {
optional: Omit<ResourceRequirement, "required">[];
required: Omit<ResourceRequirement, "required">[];
};Resource requirements declaration (with strict ResourceRequirement types)
optional
optional: Omit<ResourceRequirement, "required">[];Resources that enhance functionality but are not mandatory
required
required: Omit<ResourceRequirement, "required">[];Resources that must be available for the plugin to function
scaffolding?
optional scaffolding: {
rules?: {
must?: string[];
never?: string[];
should?: string[];
};
};rules?
optional rules: {
must?: string[];
never?: string[];
should?: string[];
};rules.must?
optional must: string[];rules.never?
optional never: string[];rules.should?
optional should: string[];Inherited from
Omit.scaffoldingstability?
optional stability: "beta" | "ga";Plugin stability level. Beta plugins may have breaking API changes between minor releases but are on a path to GA. GA (general availability) plugins follow semver strictly.
Inherited from
Omit.stabilityversion?
optional version: string;Plugin version (semver format)
Inherited from
Omit.version