- name
- enhance-sync-pr
- description
- Enhances auto-generated spectrum-design-data PRs from spectrum-tokens-studio-data sync (branch tokens-sync/patch-spectrum2-from-main, author mrcjhicks). Diagnoses CI failures, suggests fixes, creates changesets with token-changeset-generator, updates PR title/body, and attributes the original Tokens Studio implementer. Use when fixing sync PRs, PRs from tokens-sync, enhance-sync-pr workflow gaps, or missing changesets on studio syncs.
# Enhance sync PR (Tokens Studio → spectrum-design-data)
## When this applies
* PR opened by `mrcjhicks` from `tokens-sync/patch-spectrum2-from-main` (or similar sync branch).
* Body links to `github.com/adobe/spectrum-tokens-studio-data/actions/runs/…`.
* CI red after sync (validation, snapshot, component props, wireframe, etc.).
* Changeset missing; title still `feat: updates from spectrum-tokens-studio-data` or duplicated `feat: Feat:`.
## Repo and tools
* **Monorepo root:** workspace root (`spectrum-design-data`).
* **Changeset generator:** [`tools/token-changeset-generator`](../../../tools/token-changeset-generator) — fetches source PR motivation, runs `tdiff`, infers semver bump.
* **Automation:** [`.github/workflows/enhance-sync-pr.yml`](../../../.github/workflows/enhance-sync-pr.yml) and [`.github/actions/extract-source-pr-info`](../../../.github/actions/extract-source-pr-info).
## 1. Resolve source PR
From the design-data PR body, take the **spectrum-tokens-studio-data** Actions run URL or the **Tokens Studio PR** link.
```bash
gh pr view <N> --repo adobe/spectrum-design-data --json body,title,headRefName,url
```
If only the run URL exists, resolve merged PR from that run (same logic as `extract-source-pr-info`).
Record:
* Source PR URL (e.g. `https://github.com/adobe/spectrum-tokens-studio-data/pull/297`)
* Source author (`user.login` from that PR) for attribution
```bash
gh api repos/adobe/spectrum-tokens-studio-data/pulls/<num> --jq '{title, author: .user.login, body}'
```
## 2. Diagnose CI (suggest fixes; user approves edits)
Check out the PR branch with full history (`fetch-depth: 0`) so `tdiff` can compare to `main`.
Run in order:
```bash
moon run tokens:validateDesignData
moon run tokens:verifyDesignDataSnapshot
cd packages/tokens && pnpm ava
```
Or full graph: `moon ci` (same as GitHub Actions).
### Failure map (what to suggest)
| Symptom | Likely cause | Suggestion | | |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | - |
| `checkComponentProps` lists token names | Missing or wrong `component` on entries in `color-component.json`, `layout-component.json`, or `icons.json` | Set `component` to match token name prefix (see [`packages/tokens/test/checkComponentProps.js`](../../../packages/tokens/test/checkComponentProps.js)). | | |
| Schema / `color-set` errors | `sets` missing `light`, `dark`, or **`wireframe`** | Align with [`schemas/token-types/color-set.json`](../../../packages/tokens/schemas/token-types/color-set.json). | | |
| `verifyDesignDataSnapshot` / snapshot mismatch | Validation report changed vs golden file | Paths in the snapshot are relative to `packages/tokens/`. After `moon run sdk:build`, run **`migrate snapshot` from `packages/tokens/`** so paths match `moon run tokens:verifyDesignDataSnapshot`: `cd packages/tokens && ../../sdk/target/debug/design-data migrate snapshot ./src --output ./snapshots/validation-snapshot.json --schema-path ./schemas --exceptions-path ../design-data/naming-exceptions.json`. | | |
| Token file / `$schema` / `uuid` | Invalid token shape | Fix per [`token-file.json`](../../../packages/tokens/schemas/token-file.json) and failing AVA tests. | | |
| Alias / renamed / manifest | Broken refs or manifest drift | Fix aliases; run `moon run tokens:buildManifest`. | | |
| Changeset lint on PR | Bad frontmatter | Valid `---` / `"@adobe/spectrum-tokens": patch \| minor \| major` / body. | | |
Re-run targeted tasks after each fix until green.
## 3. PR title and body
* **Title:** One conventional prefix. Strip a leading `feat:` / `Feat:` (and similar) from the **source** title, then use `feat: <clean title>` (avoid `feat: Feat: …`).
* **Body template:**
```markdown
## Token updates from Spectrum Tokens Studio Data
**Original implementer:** @<github-login>
**Source PR:** [#<n> <title>](<url>)
**Automated sync via:** [GitHub Actions run](<run-url>)
### Source description
<paste or summarize source PR body / motivation>
---
<keep existing automated footer if present>
```
Use `gh pr edit <N> --repo adobe/spectrum-design-data --title "..." --body-file body.md`.
## 4. Changeset + git attribution
Generate changeset (requires `GITHUB_TOKEN` for API rate limits):
```bash
cd tools/token-changeset-generator && pnpm install --frozen-lockfile
GITHUB_TOKEN=... node src/cli.js generate \
--tokens-studio-pr 'https://github.com/adobe/spectrum-tokens-studio-data/pull/<num>' \
--spectrum-tokens-pr 'https://github.com/adobe/spectrum-design-data/pull/<N>' \
--source-author '<login>'
```
Bump type is inferred from diff (e.g. deletions → major, additions → minor).
Commit using the **source implementer’s** git identity so changelog "Thanks @…" matches design work:
```bash
git config user.email '<email>'
git config user.name '<display name>'
git add .changeset/*.md
git commit -m "chore: add changeset for <short summary>" -m "Co-authored-by: <name> <email>"
```
If the commit author is already the implementer, `Co-authored-by` is optional but harmless.
## 5. Verify
```bash
moon run tokens:validateDesignData
moon run tokens:verifyDesignDataSnapshot
cd packages/tokens && pnpm ava
pnpm changeset-lint check .changeset/*.md
```
Push the branch; confirm CI and changeset-bot on the PR.
## Reference: prior manual PRs
Well-formed examples: merged sync PRs with `token-changeset-generator`-style changesets and enriched bodies (e.g. [#615](https://github.com/adobe/spectrum-design-data/issues/615), [#593](https://github.com/adobe/spectrum-design-data/issues/593)). Early PRs used hand-written "Design motivation" + "Token diff" in the changeset body — the generator now standardizes that shape.
View on GitHub