--- 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 --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/ --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 ./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: ` (avoid `feat: Feat: …`). * **Body template:** ```markdown ## Token updates from Spectrum Tokens Studio Data **Original implementer:** @ **Source PR:** [# ](<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.