---
title: PM Stickers
---

# PM Stickers

## What it is

**PM Stickers** are decorative emoji-style stickers that users place on board item cards -- with
free positioning, rotation, and z-ordering on the card surface.

Users pick from 8 built-in sticker images (thumbsup, heart, star, check, clock, warning, celebrate,
rocket) and place them on any board item. Each sticker has a position, rotation, and z-order.
Stickers are soft-deleted and follow their parent item's lifecycle -- a soft-deleted item hides its
stickers too.

## Where to find it

Stickers live on the board card itself. A picker on an item card lets you choose one of the eight
images, and the stickers you place render over the card surface at the position, rotation, and
stacking order you gave them -- so a card can carry several at once, overlapping.

## How it behaves

Adding a sticker is idempotent (duplicate add for the same item + image is a no-op). Removing an
already-deleted sticker succeeds silently. Position is clamped to [-200, 200] and rotation to
[-360, 360] in pixel-space storage.

Add, update and remove all require an editor role (owner, admin or member -- not viewer) on the
board the ITEM actually belongs to. The `boardId` a caller sends is cross-checked against the item's
own board and a mismatch is refused, so naming a board you own cannot reach another board's item;
the board persisted on the row is always the resolved one.

There are no dedicated settings; the feature requires Mission Control to be enabled.

## For agents

Defined in `src/shared/ipc-channels/pm-item-stickers.ts`:

- `pm:item-stickers:list` -- fetch stickers for an item
- `pm:item-stickers:add` -- place a new sticker
- `pm:item-stickers:update` -- change position/rotation
- `pm:item-stickers:remove` -- soft-delete a sticker
- `pm:item-stickers:changed` -- push notification on any mutation

Every handler is gated with `requirePmEnabled()`. Add uses request dedup keyed on `{itemId,
image}` to prevent concurrent duplicate adds.

**UI components**

- `StickerPicker.tsx` -- picker for selecting a sticker image
- `CardStickerOverlay.tsx` -- renders positioned stickers over a card
- `StickerLayer.tsx` -- z-ordered rendering layer
- `sticker-glyphs.ts` -- maps sticker image keys to visual glyphs/emoji

**Settings**

No dedicated settings. Requires `missionControlEnabled`.

## Related

These stickers decorate items that belong to boards, so [mission-control.md](mission-control.md) --
the parent page -- is the one to read if you have not already. The sibling that puts a visible
count of its own on an item is [pm-voting.md](pm-voting.md), and if you are after the visual
treatment of a board as a whole, [pm-data-density.md](pm-data-density.md) covers how much of an
item a card shows at once. The full behavioural contract is recorded in
[pm-stickers-contract.md](../../.claude/memory/contracts/pm-stickers-contract.md), and every other
page in this library is listed in [INDEX.md](INDEX.md).
