
Trpc Compat
Check that a tRPC change is safe for released desktop, mobile, CLI, and SDK builds...
Install
npx skills add ParadevAI/Paradev --skill trpc-compat -g -a claude-code -y- Repository
- ParadevAI/Paradev15.8k
- Category
- DevOps
- Updated
- 3d ago
- License
- See repository
- Context cost
- Mediumabout 1,593 tokens
- Runs scripts
- No, instructions only
What it does
Check that a tRPC change is safe for released desktop, mobile, CLI, and SDK builds, pick the compatible pattern, and decide when a deprecated procedure can be removed. Use when changing, renaming, or removing an existing procedure, input field, or output field in packages/trpc or packages/host-service, when reviewing such a PR, or when a deploy broke released clients.
tRPC compatibility
On 2026-09-23, #7726 changed page.list from a bare array to { items, nextCursor }. It
updated every caller on main, so typecheck and tests passed. Desktop 1.30.0, 1.30.2 still called
.map on the result, and every workspace view crashed (SEV1, 337 Sentry events, postmortem
"page.list response change crashed released desktop apps"). CI only sees main. This skill is how
you check the builds CI cannot see.
1. Find released callers
Search the release tags, not main. Run git fetch --tags first in a fresh clone.
PROC='page\.list(?!Paginated)' # the procedure path; exclude longer names that share the prefix
FLOOR=1.29.0 # MINIMUM_DESKTOP_VERSION in apps/api/src/app/api/desktop/version/route.ts
for v in $({ echo "$FLOOR"; git tag -l 'desktop-v*' | sed 's/^desktop-v//'; } | awk '!/-/' | sort -uV | sed -n "/^$FLOOR\$/,\$p"); do
git rev-parse -q --verify "refs/tags/desktop-v$v" >/dev/null || continue
git grep -q -P "$PROC" "desktop-v$v" -- apps/desktop && echo "desktop-v$v calls it"
done
- Desktop: every
desktop-v*tag at or above the floor is live. - CLI: same loop with
cli-v*tags and-- packages/cli. The CLI has no floor, so check every tag you can; old installs stay in use. - Mobile: no tags, and
MINIMUM_MOBILE_VERSIONis1.0.0. Ifapps/mobileon main calls it, orgit log -Sshows it ever did, treat it as called by a live build. - SDK:
packages/sdkcalls procedures by string (/api/trpc/<procedure>). Search main andgit log -Sthe same way. - host-service procedures: callers are desktop, CLI, and mobile, and the host can be older or
newer than the client. See
packages/host-service/AGENTS.md.
Any hit means the procedure is live. Its input and output are frozen.
2. Check usage data
The API samples 1% of calls into the PostHog event api_procedure_called. Run this in the
PostHog SQL editor or through the PostHog MCP:

