---
title: MC Templates (save a board as a reusable template)
---

# MC Templates (Mission Control project templates)

## What it is

Save a board's full structure as a reusable template and deploy it into new boards. Part of Mission Control Phase 5E.

### What it does

Right-click a board in the left nav and select **"Save as template"** to open a dialog (name, description, shared/private visibility, include-items toggle). Templates are stored on the backend and browsable via a **Template Category Picker** (opened from the "T" button in the left nav header).

## Where to find it

In Mission Control: **right-click a board in the left nav → Save as template**. Deploying one goes through the **Template Category Picker**, opened from the board-creation surface.

## How it behaves

### Template picker

A two-level modal: first a grid of project category tiles (Boards, Dashboards, Documents, Spreadsheets, Forms) plus a "My Saved Templates" tile, then clicking a category drills into its templates. A back arrow returns to the category grid. Each template carries a `projectCategory` field tying it to a category (defaults to `'boards'`). Categories are defined in `src/shared/types/pm-template-categories.ts`. Documents, Spreadsheets, and Forms each have built-in templates that deploy as their respective entity types (not boards).

### Deploy preview

**Board/dashboard templates:** Shows the template's groups, columns, views, and automations. Each automation has a toggle and a **cost badge** (`$`) on actions that invoke AI or spawn sessions (detected by `isCostBearingAction`). Users can disable cost-bearing automations before deployment.

**Document/spreadsheet/form templates:** Uses `EntityTemplateDeployPreview` — a simpler preview showing the template name, description, and a workspace selector. Deploys by creating the entity with the template's preset content/config via the session bridge.

### Template editor

Lets owners update name, description, icon, visibility, and the template's structure (rename/remove groups, columns, views, automations). Changes autosave with an 800ms debounce.

### Portability

Column and group references inside automations are replaced with stable `templateKey`s (`col_1`, `grp_1`) on save and remapped back to real IDs on deploy (direct dictionary lookup via a caller-supplied key-to-ID map).

## For agents

### Key files

- `src/shared/types/pm-template-categories.ts` (category definitions)
- `src/shared/pm-built-in-template-catalog.ts` (built-in templates for all entity types)
- `src/main/services/pm/templates/pm-template-portability.ts` (portability engine)
- `src/main/services/cli/cli-server-pm-template-routes.ts` (7 CLI routes)
- `src/plugins/mission-control/web/features/templates/` (category picker, deploy preview, entity deploy preview, save dialog, editor)

### Contract

- [pm-board-templates-contract.md](../../.claude/memory/contracts/pm-board-templates-contract.md)

## Related

### See also

- [mission-control.md](mission-control.md) (parent page)
- [INDEX.md](INDEX.md)

