## Manifest Reference

### Required Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique identifier (lowercase, hyphens allowed) |
| `name` | string | Display name |
| `version` | string | Semantic version (e.g., "1.0.0") |
| `main` | string | Entry point file |
| `capabilities` | string[] | Required capabilities (see below) |

### Optional Fields

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | Short description |
| `author` | object | `{ name, email?, url? }` |
| `activationEvents` | string[] | When to activate (default: `["onStartup"]`) |
| `httpDomains` | string[] | Allowed HTTP domains (requires `http` capability) |
| `execPatterns` | string[] | Allowed shell commands (requires `exec` capability) |
| `envVars` | object[] | Environment variables for configuration |
| `contributes` | object | Static contributions (panels, keybindings, themes) |

### Environment Variables

Plugins can request environment variables for user configuration:

```json
{
  "envVars": [
    {
      "name": "API_KEY",
      "description": "Your API key for the service",
      "type": "secret",
      "required": true
    },
    {
      "name": "DEBUG_MODE",
      "description": "Enable debug logging",
      "type": "string",
      "default": "false",
      "required": false
    }
  ]
}
```

Types:
- `string` - Regular text input
- `secret` - Masked input (for API keys, tokens)
