shadcn-svelte-synclisted
Install: claude install-skill redstrike/remini-labs
# shadcn-svelte sync
Sync shadcn-svelte vendor code from upstream, review the diff, and adapt Remini Labs wrappers or custom components so the codebase stays type-safe and behavior-correct. Runs infrequently (every few months). Committing is out of scope — the user handles git from there.
## Preconditions
- Working tree clean (or holds only this sync's changes). If dirty, surface it and ask the user before proceeding.
- `pnpm shadcn-svelte:sync` exists at `scripts/shadcn-svelte-sync.mts`.
- `components.json` has `aliases.ui: "$lib/components/shadcn-svelte"`.
## Step 1 — Fetch upstream and normalize formatting
Run the sync script:
```bash
pnpm shadcn-svelte:sync
```
The script discovers tracked components from `src/lib/components/shadcn-svelte/` (folder listing is the truth), runs `pnpm shadcn-svelte add <all> --overwrite -y`, and on success stamps `reminiLabs.syncedAt` (epoch ms) + `reminiLabs.syncedAtIso` (ISO 8601 UTC) in `components.json`.
If the script errors, surface stderr and stop.
Then normalize formatting on the freshly-written files so Step 2's diff surfaces real content changes only. Match the formatter to the file type per CLAUDE.md's convention (`.svelte` → prettier, `.ts` → oxfmt + oxlint — they produce different imports/quotes/semicolons for TS):
```bash
# .svelte → prettier
pnpm prettier --write 'src/lib/components/shadcn-svelte/**/*.svelte'
# .ts → oxfmt + oxlint
pnpm oxfmt --write 'src/lib/components/shadcn-svelte/**/*.ts' src/lib/hooks/is-mobile.