# Cro Owner Sync

> Propagate Owner changes from the Page Registry to the Roadmap & Backlog. Triggered by Notion automation when the Owner field changes on a Page Registry entry.

- Skill: `warpdotdev/cro-owner-sync` (Agent Skill)
- Install (CLI): `npx skillmds@latest add warpdotdev/cro-owner-sync`
- Raw SKILL.md: https://api.skillmd.com/api/skills/warpdotdev/cro-owner-sync/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: warpdotdev (https://skillmd.com/u/warpdotdev)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/warpdotdev/cro-owner-sync

---


# Owner Sync

## Configuration

Read `.warp/skills/cro/references/config.md` for Notion IDs.

## Input

Notion automation passes the Page Registry entry that was changed:

```
NOTION_PAGE_ID: <page-registry-entry-id>
PAGE_PATH: /example-page
OWNER: Emilie
```

## Procedure

### Step 1: Read the updated Owner from the Page Registry

Fetch the Page Registry entry using `NOTION_PAGE_ID`:

```bash
curl -s "https://api.notion.com/v1/pages/{{NOTION_PAGE_ID}}" \
  -H "Authorization: Bearer $NOTION_INTEGRATION_TOKEN" \
  -H "Notion-Version: 2022-06-28"
```

Extract:
- `Page Path` (title field)
- `Owner` (select field — may be null if Owner was cleared)

### Step 2: Find all Roadmap entries for this page

Query the Roadmap & Backlog for all non-archived entries matching this page:

```bash
curl -s -X POST "https://api.notion.com/v1/databases/NOTION_ROADMAP_DB_ID/query" \
  -H "Authorization: Bearer $NOTION_INTEGRATION_TOKEN" \
  -H "Notion-Version: 2022-06-28" \
  -H "Content-Type: application/json" \
  -d '{"filter": {"and": [
    {"property": "Page", "select": {"equals": "{{PAGE_PATH}}"}},
    {"property": "Status", "select": {"does_not_equal": "0-archived"}}
  ]}}'
```

### Step 3: Update Owner on each entry

For each Roadmap entry, set `Owner` to match the Page Registry value:

**If Owner is set:**
```bash
curl -s -X PATCH "https://api.notion.com/v1/pages/{{ROADMAP_ENTRY_ID}}" \
  -H "Authorization: Bearer $NOTION_INTEGRATION_TOKEN" \
  -H "Notion-Version: 2022-06-28" \
  -H "Content-Type: application/json" \
  -d '{"properties": {"Owner": {"select": {"name": "{{OWNER_NAME}}"}}}}'
```

**If Owner was cleared (null):**
```bash
curl -s -X PATCH "https://api.notion.com/v1/pages/{{ROADMAP_ENTRY_ID}}" \
  -H "Authorization: Bearer $NOTION_INTEGRATION_TOKEN" \
  -H "Notion-Version: 2022-06-28" \
  -H "Content-Type: application/json" \
  -d '{"properties": {"Owner": {"select": null}}}'
```

Rate-limit updates to avoid Notion API throttling (~3 requests/second).

Print the count of updated entries to the agent session output.

## Important Notes

- This skill silently keeps Notion databases aligned.
- **Do NOT touch any field other than Owner.** This is a single-purpose sync.
- Only update non-archived entries. Archived experiments are historical records and should keep whatever Owner they had when archived.
- If the Roadmap entry already has the correct Owner, skip the update to avoid unnecessary writes.

