# 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[​](#see "Direct link to See")

* `packages/shared/src/schemas/manifest.ts` `pluginManifestSchema` — Zod source of truth
* SharedPluginManifest — shared re-export with JSONSchema7 config

## Extends[​](#extends "Direct link to Extends")

* `Omit`<`SharedPluginManifest`, `"resources"` | `"config"`>

## Type Parameters[​](#type-parameters "Direct link to Type Parameters")

| Type Parameter             | Default type |
| -------------------------- | ------------ |
| `TName` *extends* `string` | `string`     |

## Properties[​](#properties "Direct link to Properties")

### author?[​](#author "Direct link to author?")

```ts
optional author: string;

```

Author name or organization

#### Inherited from[​](#inherited-from "Direct link to Inherited from")

```ts
Omit.author

```

***

### config?[​](#config "Direct link to config?")

```ts
optional config: {
  schema: JSONSchema7;
};

```

Configuration schema for the plugin. Uses JSONSchema7 instead of the generated ConfigSchema (which is too restrictive).

#### schema[​](#schema "Direct link to schema")

```ts
schema: JSONSchema7;

```

***

### description[​](#description "Direct link to description")

```ts
description: string;

```

Brief description of what the plugin does

#### Inherited from[​](#inherited-from-1 "Direct link to Inherited from")

```ts
Omit.description

```

***

### displayName[​](#displayname "Direct link to displayName")

```ts
displayName: string;

```

Human-readable display name for UI and CLI

#### Inherited from[​](#inherited-from-2 "Direct link to Inherited from")

```ts
Omit.displayName

```

***

### hidden?[​](#hidden "Direct link to hidden?")

```ts
optional hidden: boolean;

```

When true, this plugin is excluded from the template plugins manifest (appkit.plugins.json) during sync.

#### Inherited from[​](#inherited-from-3 "Direct link to Inherited from")

```ts
Omit.hidden

```

***

### keywords?[​](#keywords "Direct link to keywords?")

```ts
optional keywords: string[];

```

Keywords for plugin discovery

#### Inherited from[​](#inherited-from-4 "Direct link to Inherited from")

```ts
Omit.keywords

```

***

### license?[​](#license "Direct link to license?")

```ts
optional license: string;

```

SPDX license identifier

#### Inherited from[​](#inherited-from-5 "Direct link to Inherited from")

```ts
Omit.license

```

***

### name[​](#name "Direct link to name")

```ts
name: TName;

```

Plugin identifier — the single source of truth for the plugin's name

#### Overrides[​](#overrides "Direct link to Overrides")

```ts
Omit.name

```

***

### onSetupMessage?[​](#onsetupmessage "Direct link to onSetupMessage?")

```ts
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[​](#inherited-from-6 "Direct link to Inherited from")

```ts
Omit.onSetupMessage

```

***

### repository?[​](#repository "Direct link to repository?")

```ts
optional repository: string;

```

URL to the plugin's source repository

#### Inherited from[​](#inherited-from-7 "Direct link to Inherited from")

```ts
Omit.repository

```

***

### resources[​](#resources "Direct link to resources")

```ts
resources: {
  optional: Omit<ResourceRequirement, "required">[];
  required: Omit<ResourceRequirement, "required">[];
};

```

Resource requirements declaration (with strict ResourceRequirement types)

#### optional[​](#optional "Direct link to optional")

```ts
optional: Omit<ResourceRequirement, "required">[];

```

Resources that enhance functionality but are not mandatory

#### required[​](#required "Direct link to required")

```ts
required: Omit<ResourceRequirement, "required">[];

```

Resources that must be available for the plugin to function

***

### scaffolding?[​](#scaffolding "Direct link to scaffolding?")

```ts
optional scaffolding: {
  rules?: {
     must?: string[];
     never?: string[];
     should?: string[];
  };
};

```

#### rules?[​](#rules "Direct link to rules?")

```ts
optional rules: {
  must?: string[];
  never?: string[];
  should?: string[];
};

```

##### rules.must?[​](#rulesmust "Direct link to rules.must?")

```ts
optional must: string[];

```

##### rules.never?[​](#rulesnever "Direct link to rules.never?")

```ts
optional never: string[];

```

##### rules.should?[​](#rulesshould "Direct link to rules.should?")

```ts
optional should: string[];

```

#### Inherited from[​](#inherited-from-8 "Direct link to Inherited from")

```ts
Omit.scaffolding

```

***

### stability?[​](#stability "Direct link to stability?")

```ts
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[​](#inherited-from-9 "Direct link to Inherited from")

```ts
Omit.stability

```

***

### version?[​](#version "Direct link to version?")

```ts
optional version: string;

```

Plugin version (semver format)

#### Inherited from[​](#inherited-from-10 "Direct link to Inherited from")

```ts
Omit.version

```
